![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/formeditor/latest/absol/ |
Upload File : |
/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 48); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return $; }); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); var ACore = new absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"]({ creator: Object.assign({}, absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance.creator) }); var _ = ACore._; var $ = ACore.$; /* harmony default export */ __webpack_exports__["c"] = (ACore); /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "e", function() { return /* binding */ isDomNode; }); __webpack_require__.d(__webpack_exports__, "f", function() { return /* binding */ traceOutBoundingClientRect; }); __webpack_require__.d(__webpack_exports__, "d", function() { return /* binding */ getScreenSize; }); __webpack_require__.d(__webpack_exports__, "g", function() { return /* binding */ waitImageLoaded; }); __webpack_require__.d(__webpack_exports__, "c", function() { return /* binding */ depthClone; }); __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ copyStyleRule; }); // UNUSED EXPORTS: FeatureClass, activeFullScreen, deactiveFullScreen, isFullScreen, fontFaceIsLoaded, waitIFrameLoaded, imageToCanvas, getScrollSize, depthCloneWithStyle, getConstructDescriptor // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/JSPath.js var JSPath = __webpack_require__(20); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3); // CONCATENATED MODULE: ./node_modules/absol/src/String/getFunctionName.js /** * * @param {Function} func */ function getFunctionName(func) { var ret = func.toString(); ret = ret.substr('function '.length); ret = ret.substr(0, ret.indexOf('(')); return ret; } // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/ElementNS.js var ElementNS = __webpack_require__(19); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElement.js var AElement = __webpack_require__(6); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/ResizeSystem.js var ResizeSystem = __webpack_require__(9); // EXTERNAL MODULE: ./node_modules/absol/src/JSX/attribute.js var attribute = __webpack_require__(14); // CONCATENATED MODULE: ./node_modules/absol/src/HTML5/Dom.js /*** * @typedef {{"accept-charset":string, "http-equiv": string, accept : string, accesskey : string, action : string, align : string, allow : string, alt : string, async : string, autocapitalize : string, autocomplete : string, autofocus : string, autoplay : string, background : string, bgcolor : string, border : string, buffered : string, capture : string, challenge : string, charset : string, checked : string, cite : string, class : string, code : string, codebase : string, color : string, cols : string, colspan : string, content : string, contenteditable : string, contextmenu : string, controls : string, coords : string, crossorigin : string, csp : string, data : string, "data-*" : string, datetime : string, decoding : string, default : string, defer : string, dir : string, dirname : string, disabled : string, download : string, draggable : string, dropzone : string, enctype : string, enterkeyhint : string, for : string, form : string, formaction : string, formenctype : string, formmethod : string, formnovalidate : string, formtarget : string, headers : string, height : string, hidden : string, high : string, href : string, hreflang : string, icon : string, id : string, importance : string, integrity : string, intrinsicsize : string, inputmode : string, ismap : string, itemprop : string, keytype : string, kind : string, label : string, lang : string, language : string, loading : string, list : string, loop : string, low : string, manifest : string, max : string, maxlength : string, minlength : string, media : string, method : string, min : string, multiple : string, muted : string, name : string, novalidate : string, open : string, optimum : string, pattern : string, ping : string, placeholder : string, poster : string, preload : string, radiogroup : string, readonly : string, referrerpolicy : string, rel : string, required : string, reversed : string, rows : string, rowspan : string, sandbox : string, scope : string, scoped : string, selected : string, shape : string, size : string, sizes : string, slot : string, span : string, spellcheck : string, src : string, srcdoc : string, srclang : string, srcset : string, start : string, step : string, style : string, summary : string, tabindex : string, target : string, title : string, translate : string, type : string, usemap : string, value : string, width : string, wrap : string, }} AElementAttributeDescriptor */ /** * @typedef {{"arabic-form":string,"baseline-shift": string, "accent-height": string, "alignment-baseline": string, "cap-height": string, "clip-path": string, "clip-rule": string, "color-dinterpolation": string, "color-interpolation-filters": string, "color-profile": string, "color-rendering": string, "dominant-baseline": string, "enable-background": string, "fill-opacity": string, "fill-rule": string, "flood-color": string, "flood-opacity": string, "font-family": string, "font-size": string, "font-size-adjust": string, "font-stretch": string, "font-style": string, "font-variant": string, "font-weight": string, "glyph-name": string, "glyph-orientation-horizontal": string, "glyph-orientation-vertical": string, "horiz-adv-x": string, "horiz-origin-x": string, "image-rendering": string, "letter-spacing": string, "lighting-color": string, "marker-end": string, "marker-mid": string, "marker-start": string, "overline-position": string, "overline-thickness": string, "panose-1": string, "paint-order": string, "pointer-events": string, "rendering-intent": string, "shape-rendering": string, "stop-color": string, "stop-opacity": string, "strikethrough-position": string, "strikethrough-thickness": string, "stroke-dasharray": string, "stroke-dashoffset": string, "stroke-linecap": string, "stroke-linejoin": string, "stroke-miterlimit": string, "stroke-opacity": string, "stroke-width": string, "text-anchor": string, "text-decoration": string, "text-rendering": string, "transform-origin": string, "underline-position": string, "underline-thickness": string, "unicode-bidi": string, "unicode-range": string, "units-per-em": string, "v-alphabetic": string, "v-hanging": string, "v-ideographic": string, "v-mathematical": string, "vector-effect": string, "vert-adv-y": string, "vert-origin-x": string, "vert-origin-y": string, "word-spacing": string, "writing-mode": string, "x-height": string, "xlink:actuate": string, "xlink:arcrole": string, "xlink:href": string, "xlink:role": string, "xlink:show": string, "xlink:title": string, "xlink:type": string, "xml:base": string, "xml:lang": string, "xml:space": string, accumulate:string, additive:string, allowReorder:string, alphabetic:string, amplitude:string, ascent:string, attributeName:string, attributeType:string, autoReverse:string, azimuth:string, baseFrequency:string, baseProfile:string, bbox:string, begin:string, bias:string, by:string, calcMode:string, class:string, clip:string, clipPathUnits:string, color:string, contentScriptType:string, contentStyleType:string, cursor:string, cx:string, cy:string, d:string, decelerate:string, descent:string, diffuseConstant:string, direction:string, display:string, divisor:string, dur:string, dx:string, dy:string, edgeMode:string, elevation:string, end:string, exponent:string, externalResourcesRequired:string, fill:NamedColor|Color|string, filter:string, filterRes:string, filterUnits:string, format:string, from:string, fr:string, fx:string, fy:string, g1:string, g2:string, glyphRef:string, gradientTransform:string, gradientUnits:string, hanging:string, height:string, href:string, hreflang:string, id:string, ideographic:string, in:string, in2:string, intercept:string, k:string, k1:string, k2:string, k3:string, k4:string, kernelMatrix:string, kernelUnitLength:string, kerning:string, keyPoints:string, keySplines:string, keyTimes:string, lang:string, lengthAdjust:string, limitingConeAngle:string, local:string, markerHeight:string, markerUnits:string, markerWidth:string, mask:string, maskContentUnits:string, maskUnits:string, mathematical:string, max:string, media:string, method:string, min:string, mode:string, name:string, numOctaves:string, offset:string, opacity:string, operator:string, order:string, orient:string, orientation:string, origin:string, overflow:string, path:string, pathLength:string, patternContentUnits:string, patternTransform:string, patternUnits:string, ping:string, points:string, pointsAtX:string, pointsAtY:string, pointsAtZ:string, preserveAlpha:string, preserveAspectRatio:string, primitiveUnits:string, r:string, radius:string, referrerPolicy:string, refX:string, refY:string, rel:string, repeatCount:string, repeatDur:string, requiredExtensions:string, requiredFeatures:string, restart:string, result:string, rotate:string, rx:string, ry:string, scale:string, seed:string, slope:string, spacing:string, specularConstant:string, specularExponent:string, speed:string, spreadMethod:string, startOffset:string, stdDeviation:string, stemh:string, stemv:string, stitchTiles:string, string:string, stroke:string, style:string, surfaceScale:string, systemLanguage:string, tabindex:string, tableValues:string, target:string, targetX:string, targetY:string, textLength:string, to:string, transform:string, type:string, u1:string, u2:string, unicode:string, values:string, version:string, viewBox:string, viewTarget:string, visibility:string, width:string, widths:string, x:string, x1:string, x2:string, xChannelSelector:string, y:string, y1:string, y2:string, yChannelSelector:string, z:string, zoomAndPan:string, }} AElementNSAttributeDescriptor */ /*** * @typedef {{abort:event:function((UiEvent|Event)):void,afterprint:event:function(Event):void,animationend:event:function(AnimationEvent):void,animationiteration:event:function(AnimationEvent):void,animationstart:event:function(AnimationEvent):void,beforeprint:event:function(Event):void,beforeunload:event:function((UiEvent|Event)):void,blur:event:function(FocusEvent):void,canplay:event:function(Event):void,canplaythrough:event:function(Event):void,change:event:function(Event):void,click:event:function(MouseEvent):void,contextmenu:event:function(MouseEvent):void,copy:event:function(ClipboardEvent):void,cut:event:function(ClipboardEvent):void,dblclick:event:function(MouseEvent):void,drag:event:function(DragEvent):void,dragend:event:function(DragEvent):void,dragenter:event:function(DragEvent):void,dragleave:event:function(DragEvent):void,dragover:event:function(DragEvent):void,dragstart:event:function(DragEvent):void,drop:event:function(DragEvent):void,durationchange:event:function(Event):void,ended:event:function(Event):void,error:event:function((ProgressEvent|UiEvent|Event)):void,focus:event:function(FocusEvent):void,focusin:event:function(FocusEvent):void,focusout:event:function(FocusEvent):void,fullscreenchange:event:function(Event):void,fullscreenerror:event:function(Event):void,hashchange:event:function(HashChangeEvent):void,input:event:function((InputEvent|Event)):void,invalid:event:function(Event):void,keydown:event:function(KeyboardEvent):void,keypress:event:function(KeyboardEvent):void,keyup:event:function(KeyboardEvent):void,load:event:function((UiEvent|Event)):void,loadeddata:event:function(Event):void,loadedmetadata:event:function(Event):void,loadstart:event:function(ProgressEvent):void,message:event:function(Event):void,mousedown:event:function(MouseEvent):void,mouseenter:event:function(MouseEvent):void,mouseleave:event:function(MouseEvent):void,mousemove:event:function(MouseEvent):void,mouseover:event:function(MouseEvent):void,mouseout:event:function(MouseEvent):void,mouseup:event:function(MouseEvent):void,mousewheel:event:function(WheelEvent):void,offline:event:function(Event):void,online:event:function(Event):void,open:event:function(Event):void,pagehide:event:function(PageTransitionEvent):void,pageshow:event:function(PageTransitionEvent):void,paste:event:function(ClipboardEvent):void,pause:event:function(Event):void,play:event:function(Event):void,playing:event:function(Event):void,popstate:event:function(PopStateEvent):void,progress:event:function(Event):void,ratechange:event:function(Event):void,resize:event:function((UiEvent|Event)):void,reset:event:function(Event):void,scroll:event:function((UiEvent|Event)):void,search:event:function(Event):void,seeked:event:function(Event):void,seeking:event:function(Event):void,select:event:function((UiEvent|Event)):void,show:event:function(Event):void,stalled:event:function(Event):void,storage:event:function(StorageEvent):void,submit:event:function(Event):void,suspend:event:function(Event):void,timeupdate:event:function(Event):void,toggle:event:function(Event):void,touchcancel:event:function(TouchEvent):void,touchend:event:function(TouchEvent):void,touchmove:event:function(TouchEvent):void,touchstart:event:function(TouchEvent):void,transitionend:event:function(TransitionEvent):void,unload:event:function((UiEvent|Event)):void,volumechange:event:function(Event):void,waiting:event:function(Event):void,wheel:event:function(WheelEvent):void}} AElementEventDescriptor */ /*** * @typedef AbsolConstructDescriptor * @property {string | function |null} tag * @property {CSSStyleDeclaration} style * @property {Array | string} extendEvent * @property {Array | string} class * @property {AElementAttributeDescriptor|AElementNSAttributeDescriptor} attr * @property {string|AElement | AElementNS | AbsolConstructDescriptor | string[] |AElement[] | AElementNS[] | AbsolConstructDescriptor[]} child * @property {string} text to create a TextNode, not Element * @property {AElement} elt * @property {AElementEventDescriptor|{}} on * @property {Object} props * */ /**** * * @returns {AElement} */ var attachhookCreator = function () { var res = Dom.ShareInstance._({ tag: 'img', class: 'absol-attachhook', extendEvent: ['attached'], style: { display: 'none' }, attr: { src: '' }, on: { error: function (event) { if (!this._attached && this.isDescendantOf(document.body)) { this._attached = true; this.emit('attached', event, this); } } } }); res._attached = false; Object.defineProperty(res, 'attached', { get: function () { return this._attached; } }); res.resetState = function () { this._attached = false; this.src = ''; }; return res; }; var svgCreator = function () { var temp = document.createElement('div'); temp.innerHTML = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>'; var element = temp.childNodes[0]; var prototypes = Object.getOwnPropertyDescriptors(AElement["a" /* default */].prototype); Object.defineProperties(element, prototypes); AElement["a" /* default */].call(element); return element; }; /*** * * @param {*=} option * @constructor */ function Dom(option) { this.defaultTag = 'div'; option = option || {}; this.creator = option.creator || {}; Object.defineProperties(this.creator, { svg: { set: function () { //do nothing }, get: function () { return svgCreator; } }, attachhook: { set: function () { //do nothing }, get: function () { return attachhookCreator; } } }); this['$ '.trim()] = this.$.bind(this); this['_ '.trim()] = this._.bind(this); this['$' + '$'] = this.$$.bind(this); this.buildDom = this._; } Dom.prototype.fromCode = function (code) { code = code.trim().replace(/>\s+</gm, '><'); var temTag = 'div'; if (code.startsWith('<td') || (code.startsWith('<th') && !code.startsWith('<thead'))) temTag = 'tr'; else if (code.startsWith('<tr')) temTag = 'tbody'; else if (code.startsWith('<thead') || code.startsWith('<tbody')) temTag = 'table'; var tempDiv = document.createElement(temTag); tempDiv.innerHTML = code; var element = tempDiv.childNodes[0]; var prototypes = Object.getOwnPropertyDescriptors(AElement["a" /* default */].prototype); Object.defineProperties(element, prototypes); AElement["a" /* default */].call(element); return element; }; /** * DFS * @param {string | AElement} query * @param {AElement} root * @param {function} onFound - return true to stop find * @returns {AElement | AElementNS} */ Dom.prototype.$ = function (query, root, onFound) { var res; if (Dom.isDomNode(query)) res = query; else res = this.select(query, root, onFound); if (res) this.attach(res); return res; }; /*** * * @type {function(string, AElement, Function): AElement} */ Dom.prototype.selectAttacth = Dom.prototype.$; /** * DFS * @param {string} query * @param {AElement} root * @param {function} onFound - return true to stop find */ Dom.prototype.select = function (query, root, onFound) { root = root || document.documentElement; var matcher = JSPath["a" /* default */].compileJSPath(query); return matcher.findFirst(root, onFound); }; var FeatureClass = { AElementNS: { constructor: ElementNS["a" /* default */], prototypeKeys: Object.keys(ElementNS["a" /* default */].prototype) }, AElement: { constructor: AElement["a" /* default */], prototypeKeys: Object.keys(AElement["a" /* default */].prototype) } }; /** * * @param {AElement | AElementNS } element */ Dom.prototype.attach = function (element) { if (element.attr) return; var feature = (element.getBBox && element.tagName !== 'svg') ? FeatureClass.AElementNS : FeatureClass.AElement; var elementConstructor = feature.constructor; var proto = elementConstructor.prototype; var prototypeKeys = feature.prototypeKeys; var n = prototypeKeys.length; var key; for (var i = 0; i < n; ++i) { key = prototypeKeys[i]; element[key] = proto[key]; } Object.assign(element, elementConstructor.prototype) elementConstructor.call(element); }; Dom.prototype.makeNewElement = function (tagName) { return document.createElement(tagName); }; Dom.prototype.makeNewTextNode = function (data) { return document.createTextNode(data); }; /** * * @param {AbsolConstructDescriptor | string | {} } option * @returns {AElementNS| AElement | Text} */ Dom.prototype._ = function (option, isInherited) { var res; var creator; if (Dom.isDomNode(option)) { res = option; option = {}; /** fix reinit component */ isInherited = true; } else { if (option.charAt) { option = option.trim(); if (option[0] == '<') { res = this.fromCode(option); option = {}; } else { var queryObj = JSPath["a" /* default */].parseQuery(option); option = {}; option.tag = queryObj.tagName || this.defaultTag; if (queryObj.classList && queryObj.classList.length > 0) option.class = queryObj.classList; if (queryObj.id) option.id = queryObj.id; if (queryObj.attributes) option.attr = queryObj.attributes; } } } if (option.text || option.text === '') {//is textNode return this.makeNewTextNode(option.text); } option.tag = option.tag || this.defaultTag; creator = option.tag.prototype ? option.tag : this.creator[option.tag]; if (option.tag.prototype) option.tag = option.tag.tag; if (option.elt) { res = option.elt; } else { if (!res) { if (creator) { if (creator.render) { res = creator.render(option.data); } else { res = creator(option.data); } } else { res = this.makeNewElement(option.tag); Object.assign(res, option.data); } } } this.attach(res); if (creator) { res._azar_extendTags = res._azar_extendTags || {}; res._azar_extendTags[option.tag] = creator; creator.property && Object.defineProperties(res, creator.property); creator.prototype && OOP["a" /* default */].extends(res, creator.prototype); creator.attribute && res.defineAttributes(creator.attribute); if (creator.render) { if (creator.eventHandler) { res.eventHandler = res.eventHandler || {}; var eventHandler = OOP["a" /* default */].bindFunctions(res, creator.eventHandler || creator.prototype.eventHandler); for (var eventHandlerKey in eventHandler) { if (res.eventHandler[eventHandlerKey]) { throw new Error("Same name of eventHandler[" + eventHandlerKey + "]"); } else { res.eventHandler[eventHandlerKey] = eventHandler[eventHandlerKey]; } } } creator.call(res); } } option.extendEvent && res.defineEvent(option.extendEvent); option.attr && res.attr(option.attr); option.on && res.on(option.on); option.once && res.once(option.once); option.class && res.addClass(option.class); option.style && res.addStyle(option.style); option.id && res.attr('id', option.id); if (!isInherited) res.init(option.props); if (option.child) { option.child = option.child instanceof Array ? option.child : [option.child]; for (var i = 0; i < option.child.length; ++i) { res.addChild(this._(option.child[i], false, true)); } } return res; }; /*** * * @type {function(Object, boolean): AElement} */ Dom.prototype.create = Dom.prototype._; /*** * * @param query * @param root * @returns {Array<AElement|AElementNS>} */ Dom.prototype.$$ = function (query, root) { var thisD = this; var res = []; this.selectAttacth(query, root, function (elt) { thisD.attach(elt); res.push(elt); }); return res; }; Dom.prototype.install = function (arg0, arg1) { var _this = this; if (arguments.length == 1) { if (arg0.creator && arg0.create && arg0.select) { // is a dom core var creator = arg0.creator; Object.keys(creator).forEach(function (key) { if (key.startsWith('_') || key.startsWith('$')) return; var func = creator[key]; if (typeof (func) == 'function') if (_this.creator[key] != func) _this.creator[key] = func; }); } else if (typeof (arg0) == 'function') { var name = arg0.tag || getFunctionName(arg0) || arg0.name; if (name) { this.creator[name.toLowerCase()] = arg0; } else { console.error('No ident name of creator function', arg0); } } else if (arg0 instanceof Array) { arg0.forEach(function (func) { var name = func.tag || getFunctionName(func) || func.name; if (name) { _this.creator[name.toLowerCase()] = func; } }); } else if (typeof arg0 == 'object') { Object.keys(arg0).forEach(function (key) { if (key.startsWith('_') || key.startsWith('$')) return; var func = arg0[key]; if (typeof (func) == 'function') if (_this.creator[key] != func) _this.creator[key] = func; }); } else { console.error('Unknown data', arg0); } } else if (arguments.length == 2) { if (arg0 instanceof Array) { if (arg1.creator) arg1 = arg1.creator; arg0.forEach(function (key) { var func = arg1[key]; if (typeof (func) == 'function') if (_this.creator[key] != func) _this.creator[key] = func; }); } else if (arg0 instanceof RegExp) { if (arg1.creator) arg1 = arg1.creator; Object.keys(arg1).forEach(function (key) { if (key.match(arg0)) { var func = arg1[key]; if (typeof (func) == 'function') if (_this.creator[key] != func) _this.creator[key] = func; } }); } else if (typeof (arg0) == 'string' && arg0.length > 0) { if (typeof (arg1) == 'function') { this.creator[arg0] = arg1; } else { console.error('arg1 is not a function'); } } } else { console.error('Invalid param'); } return this; }; /*** * * @param {String | null} tagName */ Dom.prototype.require = function (tagName) { return this.creator[tagName] || null; }; /** * * @param {*} o * @returns {Boolean} */ function isDomNode(o) { return ( typeof Node === "object" ? o instanceof Node : o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string" ); } Dom.isDomNode = isDomNode; /** * @param {AElement|Node|HTMLElement} element */ function activeFullScreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.webkitRequestFullscreen) { element.webkitRequestFullscreen(AElement["a" /* default */].ALLOW_KEYBOARD_INPUT); } else if (element.msRequestFullscreen) { element.msRequestFullscreen(); } } Dom.activeFullScreen = activeFullScreen; function deactiveFullScreen() { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } } Dom.deactiveFullScreen = deactiveFullScreen; function isFullScreen() { var fullScreenElement = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement; return !!fullScreenElement; } Dom.isFullScreen = isFullScreen; /** * @param {AElement|Node|HTMLElement} current * @returns {ClientRect} */ function traceOutBoundingClientRect(current) { var screenSize = Dom.getScreenSize(); var left = 0; var right = screenSize.width; var top = 0; var bottom = screenSize.height; while (current) { var ox = AElement["a" /* default */].prototype.getComputedStyleValue.call(current, 'overflow-x') !== "visible"; var oy = AElement["a" /* default */].prototype.getComputedStyleValue.call(current, 'overflow-y') !== "visible"; var isHtml = current.tagName.toLowerCase() === 'html'; if (ox || oy || isHtml) { var bound = current.getBoundingClientRect(); if (ox || isHtml) { left = Math.max(left, bound.left); right = Math.min(right, bound.right); } if (oy || isHtml) { top = Math.max(top, bound.top); bottom = Math.min(bottom, bound.bottom); } } if (isHtml) break; current = current.parentElement; } return { left: left, right: right, top: top, bottom: bottom, width: right - left, height: bottom - top }; } Dom.traceOutBoundingClientRect = traceOutBoundingClientRect; /*** * * @param {string} fontFace * @param {number} timeout * @returns {Promise<boolean>} */ function fontFaceIsLoaded(fontFace, timeout) { timeout = timeout || 0; var element = this.ShareInstance._({ tag: 'span', style: { visibility: 'hidden', position: 'fixed', top: '-9999px', left: '-9999px', 'font-size': '256px' }, props: { innerHTML: "Test string long long long" } }); element.addTo(document.body); return element.afterAttached().then(function () { var lastOffsetWidth = element.getBoundingClientRect().width; element.addStyle('font-family', fontFace); return new Promise(function (resolve, reject) { function check(remainTime) { if (remainTime < 0) { resolve(false); element.selfRemove(); } else requestAnimationFrame(function () { var currentOffsetWidth = element.getBoundingClientRect().width; if (currentOffsetWidth != lastOffsetWidth) { resolve(true); element.selfRemove(); } else check(remainTime - 10); }); } check(timeout); }); }); } Dom.fontFaceIsLoaded = fontFaceIsLoaded; /*** * * @returns {{width: number, WIDTH: number, HEIGHT: number, height: number}} */ function getScreenSize() { var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; return { WIDTH: width, HEIGHT: height, width: width, height: height }; } Dom.getScreenSize = getScreenSize; /*** * * @param {HTMLImageElement} img * @param {number=} timeout * @returns {Promise<void>} */ function waitImageLoaded(img, timeout) { var isLoaded = true; if (!img.complete) { isLoaded = false; } if (img.naturalWidth === 0) { isLoaded = false; } if (isLoaded) return Promise.resolve(); return new Promise(function (rs) { if (img.addEventListener) { img.addEventListener('load', rs, false); } else { img.attachEvent('onload', rs, false); } setTimeout(rs, timeout || 5000); }); // No other way of checking: assume it’s ok. } Dom.waitImageLoaded = waitImageLoaded; /*** * * @param {HTMLIFrameElement| Worker} iframe * @returns {Promise} */ function waitIFrameLoaded(iframe) { return new Promise(function (rs, rj) { if (document.all) { iframe.onreadystatechange = function () { if (iframe.readyState === "complete" || iframe.readyState === "loaded") rs(); }; } else { iframe.onload = rs; } setTimeout(rs, 5000) }); } Dom.waitIFrameLoaded = waitIFrameLoaded; /*** * * @param {Image} element * @returns {Promise<HTMLCanvasElement>} */ function imageToCanvas(element) { if (typeof element == 'string') { element = Dom.ShareInstance.$(element); } if (element.tagName.toLowerCase() === 'img') { var preRender = Dom.ShareInstance._('div'); preRender.addStyle({ position: 'fixed', top: '0', left: '0', zIndex: '-10000', opacity: '0' }).addTo(document.body); var canvas = document.createElement("canvas"); preRender.addChild(canvas); return Dom.waitImageLoaded(element).then(function () { canvas.width = element.width; canvas.height = element.height; var context = canvas.getContext("2d"); context.drawImage(element, 0, 0); preRender.selfRemove(); return canvas; }); } else { throw new Error("AElement must be image"); } } Dom.imageToCanvas = imageToCanvas; Dom.ShareInstance = new Dom(); Dom.scrollWidthPromise; Dom.documentReady = new Promise(function (resolve) { if (document.body) { resolve(); } else { window.addEventListener("load", resolve); } }); function getScrollSize() { if (!Dom.scrollWidthPromise) Dom.scrollWidthPromise = new Promise(function (resolve) { function prerender() { var parent = Dom.ShareInstance._({ style: { 'z-index': '-100', opacity: '0', width: '100px', height: '100px', overflow: 'scroll', top: '0', left: '0', 'box-sizing': 'content-box', position: 'fixed' } }) .addTo(document.body); var child = Dom.ShareInstance._({ style: { width: '100%', height: '100%' } }).addTo(parent); requestAnimationFrame(function () { var parentBound = parent.getBoundingClientRect(); var childBound = child.getBoundingClientRect(); resolve({ width: parentBound.width - childBound.width, height: parentBound.height - childBound.height }); parent.selfRemove(); }); } Dom.documentReady.then(prerender); }); return Dom.scrollWidthPromise; } Dom.getScrollSize = getScrollSize; /*** * * @param {(AElement|AElementNS|Node)} originElt * @param {function(originElt: (AElement|AElementNS|Node), originElt: (AElement|AElementNS|Node)):void } afterCloneCb * @return {AElement|AElementNS|Node} */ function depthClone(originElt, afterCloneCb) { /*** * * @type {AElement|AElementNS|Node} */ var newElt = originElt.cloneNode();//no deep if (originElt.childNodes) { /*** * * @type {(AElement|AElementNS)[]} */ var children = Array.prototype.map.call(originElt.childNodes, function (child) { return depthClone(child, afterCloneCb) }); for (var i = 0; i < children.length; ++i) { newElt.appendChild(children[i]); } } return (afterCloneCb && afterCloneCb(originElt, newElt)) || newElt; } /*** * * @param originElt * @returns {AElement|HTMLElement|Node} */ function depthCloneWithStyle(originElt, afterCloneCb) { return depthClone(originElt, function (originElt, newElt) { if (!originElt.getAttribute && !originElt.getAttributeNS) return; copyStyleRule(originElt, newElt); afterCloneCb && afterCloneCb(originElt, newElt); }); } Dom.depthClone = depthClone; Dom.depthCloneWithStyle = depthCloneWithStyle; /*** * * @param {AElement|HTMLElement|Node}sourceElt * @param {AElement|HTMLElement|Node} destElt * @returns {AElement|HTMLElement|Node} */ function copyStyleRule(sourceElt, destElt) { if (!sourceElt.getAttribute && !sourceElt.getAttributeNS) return destElt;//is text node if (!destElt.getAttribute && !destElt.getAttributeNS) return destElt;//is text node, nothing to copy var cssRules = AElement["a" /* default */].prototype.getCSSRules.call(sourceElt); var cssKey = cssRules.reduce(function (ac, rule) { for (var i = 0; i < rule.style.length; ++i) { ac[rule.style[i]] = true; } return ac; }, {}); for (var key in cssKey) { destElt.style[key] = AElement["a" /* default */].prototype.getComputedStyleValue.call(sourceElt, key); } return destElt; } Dom.copyStyleRule = copyStyleRule; /*** * get absol construct descriptor for HTML element only * @param {AElement | Text} elt * @returns {AbsolConstructDescriptor} */ function getConstructDescriptor(elt) { var obj = {}; obj.tag = elt.tagName.toLowerCase(); var classAttr = elt.getAttribute('class'); var classList; if (classAttr) classList = Object(attribute["parseClassAttr"])(classAttr); if (classList && classList.length > 0) obj.class = classList; var styleAttr = elt.getAttribute('style'); var style; if (styleAttr) style = Object(attribute["parseStyleAttr"])(styleAttr); var attributes = elt.attributes; var attNode; var attrName; var attrValue; var attr = {}; var on = {}; var props = {}; var eventMatch, eventName; var propMatch, propName; for (var i = 0; i < attributes.length; ++i) { attNode = attributes[i]; attrName = attNode.nodeName; attrValue = attNode.nodeValue; if (attrName == 'style' || attrName == 'class') continue; eventMatch = attrName.match(/^on(.+)/) if (eventMatch) { eventName = eventMatch[1]; on[eventName] = new Function('event', 'sender', attrValue); continue; } propMatch = attrName.match(/^prop-(.+)/); if (propMatch) { propName = propMatch[1]; props[propName] = attrValue; continue; } attr[attrName] = attrValue; } var key; for (key in style) { //style is not empty obj.style = style; break; } for (key in attr) { obj.attr = attr; break; } for (key in on) { obj.on = on; break; } for (key in props) { obj.props = props; break; } return obj; } Dom.getConstructDescriptor = getConstructDescriptor; Dom.addToResizeSystem = function (element) { ResizeSystem["a" /* default */].add(element); }; Dom.updateResizeSystem = function () { ResizeSystem["a" /* default */].update(); } Dom.updateSizeUp = function (fromElt) { ResizeSystem["a" /* default */].updateUp(fromElt); }; /* harmony default export */ var HTML5_Dom = __webpack_exports__["b"] = (Dom); /***/ }), /* 2 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* unused harmony export eventProperties */ /* unused harmony export touchProperties */ /* unused harmony export isMouseRight */ /* unused harmony export isMouseLeft */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return hitElement; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return copyEvent; }); /* unused harmony export copyTouch */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return findChangedTouchByIdent; }); /* unused harmony export findTouchByIdent */ function EventEmitter() { if (!this._azar_extendEvents) { Object.defineProperty(this, '_azar_extendEvents', { enumerable: false, value: this._azar_extendEvents || { supported: {}, prioritize: {}, nonprioritize: {} } }); Object.defineProperty(this, '__azar_force', { value: !(typeof Node === "object" ? this instanceof Node : this && typeof this === "object" && typeof this.nodeType === "number" && typeof this.nodeName === "string"), enumerable: false }); } } EventEmitter.prototype.defineEvent = function (name) { if (name instanceof Array) { for (var i = 0; i < name.length; ++i) this._azar_extendEvents.supported[name[i]] = true; } else this._azar_extendEvents.supported[name] = true; return this; }; EventEmitter.prototype.isSupportedEvent = function (name) { return this.__azar_force || !!this._azar_extendEvents.supported[name]; }; EventEmitter.prototype.emit = function (eventName, data) { this.fire.apply(this, arguments); }; EventEmitter.prototype.fire = function (eventName, data) { var others = Array.prototype.slice.call(arguments, 1); if (this.isSupportedEvent(eventName)) { var listenerList; var i; if (this._azar_extendEvents.prioritize[eventName]) { listenerList = this._azar_extendEvents.prioritize[eventName].slice(); for (i = 0; i < listenerList.length; ++i) { try { listenerList[i].wrappedCallback.apply(this, others); } catch (e) { console.error(e); } } } if (this._azar_extendEvents.nonprioritize[eventName]) { listenerList = this._azar_extendEvents.nonprioritize[eventName].slice(); for (i = 0; i < listenerList.length; ++i) { try { listenerList[i].wrappedCallback.apply(this, others); } catch (e) { console.error(e); } } } } else { if (this.dispatchEvent) { var event = new Event(eventName); data && Object.assign(event, data); this.dispatchEvent(event); } else throw new Error("Not support event " + eventName); } return this; }; EventEmitter.prototype.eventEmittorOnWithTime = function (isOnce, arg0, arg1, arg2) { if (typeof arg0 == 'object') { for (var key in arg0) { this.eventEmittorOnWithTime(isOnce, key, arg0[key]); } return this; } else { if (typeof arg1 == 'object') { return this.eventEmittorOnWithTime(isOnce, arg0, arg1.callback, arg1.cap); } else { var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || []; var eventIndex = -1; for (var i = 0; i < eventArr.length; ++i) { if (eventArr[i].wrappedCallback == arg1) { eventIndex = i; break; } } if (eventIndex < 0) { var event = { isOnce: isOnce, eventName: arg0, callback: arg1, cap: !!arg2 }; //wrappedCallback will be call if (isOnce) { event.wrappedCallback = function () { event.callback.apply(this, arguments); this.off(event.eventName, event.wrappedCallback, event.cap); }; } else { event.wrappedCallback = event.callback; } if (!this.isSupportedEvent(arg0)) { if (this.addEventListener) { this.addEventListener(arg0, event.wrappedCallback, !!arg2); } else { this.attachEvent('on' + arg0, arg1, !!arg2); } } eventArr.push(event); this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = eventArr; } else { console.warn("dupplicate event"); } } return this; } }; EventEmitter.prototype.on = function (arg0, arg1, arg2) { this.eventEmittorOnWithTime(false, arg0, arg1, arg2); return this; }; EventEmitter.prototype.once = function (arg0, arg1, arg2) { this.eventEmittorOnWithTime(true, arg0, arg1, arg2); return this; }; EventEmitter.prototype.off = function (arg0, arg1, arg2) { if (typeof arg0 == 'object') { for (var key in arg0) { this.off(key, arg0[key]); } return this; } else { if (typeof arg1 == 'object') { return this.off(arg0, arg1.callback, arg1.cap); } else { var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || []; var newEventArray = []; for (var i = 0; i < eventArr.length; ++i) { var event = eventArr[i]; if (event.wrappedCallback == arg1) { //Dont add to newEventArray if (this.isSupportedEvent(arg0)) { } else { if (this.removeEventListener) { this.removeEventListener(event.eventName, event.wrappedCallback, !!event.cap); } else { this.detachEvent('on' + event.eventName, event.wrappedCallback, !!event.cap); } } } else { newEventArray.push(event); } } this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = newEventArray; return this; } } }; var eventProperties = ["altKey", "bubbles", "button", "buttons", "cancelBubble", "cancelable", "clientX", "clientY", "composed", "ctrlKey", "currentTarget", "defaultPrevented", "deltaMode", "deltaX", "deltaY", "deltaZ", "detail", "eventPhase", "explicitOriginalTarget", "isTrusted", "layerX", "layerY", "metaKey", "movementX", "movementY", "mozInputSource", "mozPressure", "offsetX", "offsetY", "originalTarget", "pageX", "pageY", "rangeOffset", "rangeParent", "region", "relatedTarget", "returnValue", "screenX", "screenY", "shiftKey", "srcElement", "target", "timeStamp", "type", "deltaMode", "deltaX", "deltaY", "deltaZ", 'preventDefault']; var touchProperties = ['clientX', 'clientY', 'force', 'identifier', 'pageX', 'pageY', 'rotationAngle', 'screenX', 'screenY', 'target']; function isMouseRight(event) { var isRightMB = false; if ("which" in event) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera isRightMB = event.which == 3; else if ("button" in event) // IE, Opera isRightMB = event.button == 2; return isRightMB; } function isMouseLeft(event) { var isLeftMB = false; if ("which" in event) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera isLeftMB = event.which == 1; else if ("button" in event) // IE, Opera isLeftMB = event.button == 1; return isLeftMB; } function hitElement(element, event) { var current = event.target; while (current) { if (current == element) return true; current = current.parentElement; } return false; } function copyEvent(event, props) { var result = {}; var key, value; //copy native property for (var i = 0; i < eventProperties.length; ++i) { key = eventProperties[i]; value = event[key]; if (value !== undefined) { if (typeof value == "function") { result[key] = event[key].bind(event); } else { result[key] = event[key]; } } } Object.assign(result, event); if (props) Object.assign(result, props) if (event.changedTouches) { result.changedTouches = Array.prototype.map.call(event.changedTouches, function (touch) { return copyTouch(touch); }); } if (event.touches) { result.touches = Array.prototype.map.call(event.touches, function (touch) { return copyTouch(touch); }); } return result; } function copyTouch(touch, props) { var result = {}; var key, value; //copy native property for (var i = 0; i < touchProperties.length; ++i) { key = touchProperties[i]; value = touch[key]; if (value !== undefined) { if (typeof value == "function") { result[key] = touch[key].bind(touch); } else { result[key] = touch[key]; } } } Object.assign(result, touch); if (props) Object.assign(result, props); return result; } /*** * * @param {TouchEvent} event * @return {Touch | null} */ function findChangedTouchByIdent(event, identifier) { if (event.changedTouches) { for (var i = 0; i < event.changedTouches.length; ++i) { if (event.changedTouches[i].identifier === identifier) { return event.changedTouches[i]; } } } return null; } /*** * * @param event * @param identifier * @return {Touch|null} */ function findTouchByIdent(event, identifier) { if (event.touches) { for (var i = 0; i < event.touches.length; ++i) { if (event.touches[i].identifier === identifier) { return event.touches[i]; } } } return null; } EventEmitter.isMouseRight = isMouseRight; EventEmitter.isMouseLeft = isMouseLeft; EventEmitter.hitElement = hitElement; EventEmitter.copyEvent = copyEvent; EventEmitter.eventProperties = eventProperties; /* harmony default export */ __webpack_exports__["b"] = (EventEmitter); /***/ }), /* 3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var OOP = {}; /** * @param {Object} object * @param {String} key * @param {Function} method */ OOP.overrideMethod = function (object, key, method) { if (object[key] === undefined) object[key] = method; else { var _superMethod = object[key]; object[key] = (function (_superMethod, method) { return function () { var _super = this.super; this.super = _superMethod; var result = method.apply(this, arguments); this.super = _super; return result; }; })(_superMethod, method); } }; OOP.extends = function (object, prototype) { // do not use setter, getter for (var key in prototype) { if (key !== 'constructor' && key !== '__proto__') { if ((typeof prototype[key] == 'function')) { OOP.overrideMethod(object, key, prototype[key]); } else if (prototype[key] !== undefined && prototype[key] !== null) { object[key] = prototype[key];//just copy } } } }; OOP.inherit = function (child, parent) { // do not use setter, getter Object.keys(parent).forEach(function (key) { if (key !== 'constructor' && (typeof parent[key] == 'function')) { var superMethod = parent[key]; var currentMethod = child[key]; if (!currentMethod) child[key] = superMethod; else { child[key] = function () { var _super = this.super; this.super = superMethod; var result = currentMethod.apply(this, arguments); this.super = _super; return result; }; } } }); }; OOP.drillProperty = function (topObject, botObject, keyTop, keyBot) { if (typeof (keyTop) == 'string') { keyBot = keyBot || keyTop; Object.defineProperty(topObject, keyTop, { set: function (value) { botObject[keyBot] = value; }, get: function () { return botObject[keyBot]; } }); } else { if (keyTop instanceof Array) { for (var i = 0; i < keyTop.length; ++i) { OOP.drillProperty(topObject, botObject, keyTop[i], keyTop[i]); } } else { for (var key in keyTop) { OOP.drillProperty(topObject, botObject, key, keyTop[key]); } } } }; OOP.bindFunctions = function (_this, handlers) { var res = {}; for (var key in handlers) { res[key] = handlers[key].bind(_this); } return res; }; OOP.inheritCreator = function (parent, child) { var i; if (child.property) { if (parent.property) { for (i in parent.property) { if (!child.property[i]) child.property[i] = parent.property[i]; } } } for (i in parent.prototype) { if (!child.prototype[i]) { child.prototype[i] = parent.prototype[i]; } else { child.prototype[i] = (function (superFunction, childFunction) { return function () { var _super = this.super; this.super = superFunction; var result = childFunction.apply(this, arguments); this.super = _super; return result; }; })(parent.prototype[i], child.prototype[i]); } } }; /*** * * @param {Function} constructor */ OOP.mixClass = function (constructor) { var descriptors = {}; for (var i = 1; i < arguments.length; ++i) { Object.assign(descriptors, Object.getOwnPropertyDescriptors(arguments[i].prototype)); } Object.defineProperties(constructor.prototype, descriptors); constructor.prototype.constructor = constructor; }; /* harmony default export */ __webpack_exports__["a"] = (OOP); /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ // css base code, injected by the css-loader module.exports = function (useSourceMap) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = cssWithMappingToString(item, useSourceMap); if (item[2]) { return '@media ' + item[2] + '{' + content + '}'; } else { return content; } }).join(''); }; // import a list of modules into the list list.i = function (modules, mediaQuery) { if (typeof modules === 'string') { modules = [[null, modules, '']]; } var alreadyImportedModules = {}; for (var i = 0; i < this.length; i++) { var id = this[i][0]; if (id != null) { alreadyImportedModules[id] = true; } } for (i = 0; i < modules.length; i++) { var item = modules[i]; // skip already imported module // this implementation is not 100% perfect for weird media query combinations // when a module is imported multiple times with different media queries. // I hope this will never occur (Hey this way we have smaller bundles) if (item[0] == null || !alreadyImportedModules[item[0]]) { if (mediaQuery && !item[2]) { item[2] = mediaQuery; } else if (mediaQuery) { item[2] = '(' + item[2] + ') and (' + mediaQuery + ')'; } list.push(item); } } }; return list; }; function cssWithMappingToString(item, useSourceMap) { var content = item[1] || ''; var cssMapping = item[3]; if (!cssMapping) { return content; } if (useSourceMap && typeof btoa === 'function') { var sourceMapping = toComment(cssMapping); var sourceURLs = cssMapping.sources.map(function (source) { return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'; }); return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); } return [content].join('\n'); } // Adapted from convert-source-map (MIT) function toComment(sourceMap) { // eslint-disable-next-line no-undef var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; return '/*# ' + data + ' */'; } /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ var stylesInDom = {}; var memoize = function (fn) { var memo; return function () { if (typeof memo === "undefined") memo = fn.apply(this, arguments); return memo; }; }; var isOldIE = memoize(function () { // Test for IE <= 9 as proposed by Browserhacks // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // Tests for existence of standard globals is to allow style-loader // to operate correctly into non-standard environments // @see https://github.com/webpack-contrib/style-loader/issues/177 return window && document && document.all && !window.atob; }); var getTarget = function (target, parent) { if (parent){ return parent.querySelector(target); } return document.querySelector(target); }; var getElement = (function (fn) { var memo = {}; return function(target, parent) { // If passing function in options, then use it for resolve "head" element. // Useful for Shadow Root style i.e // { // insertInto: function () { return document.querySelector("#foo").shadowRoot } // } if (typeof target === 'function') { return target(); } if (typeof memo[target] === "undefined") { var styleTarget = getTarget.call(this, target, parent); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch(e) { styleTarget = null; } } memo[target] = styleTarget; } return memo[target] }; })(); var singleton = null; var singletonCounter = 0; var stylesInsertedAtTop = []; var fixUrls = __webpack_require__(58); module.exports = function(list, options) { if (typeof DEBUG !== "undefined" && DEBUG) { if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); } options = options || {}; options.attrs = typeof options.attrs === "object" ? options.attrs : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> // tags it will allow on a page if (!options.singleton && typeof options.singleton !== "boolean") options.singleton = isOldIE(); // By default, add <style> tags to the <head> element if (!options.insertInto) options.insertInto = "head"; // By default, add <style> tags to the bottom of the target if (!options.insertAt) options.insertAt = "bottom"; var styles = listToStyles(list, options); addStylesToDom(styles, options); return function update (newList) { var mayRemove = []; for (var i = 0; i < styles.length; i++) { var item = styles[i]; var domStyle = stylesInDom[item.id]; domStyle.refs--; mayRemove.push(domStyle); } if(newList) { var newStyles = listToStyles(newList, options); addStylesToDom(newStyles, options); } for (var i = 0; i < mayRemove.length; i++) { var domStyle = mayRemove[i]; if(domStyle.refs === 0) { for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j](); delete stylesInDom[domStyle.id]; } } }; }; function addStylesToDom (styles, options) { for (var i = 0; i < styles.length; i++) { var item = styles[i]; var domStyle = stylesInDom[item.id]; if(domStyle) { domStyle.refs++; for(var j = 0; j < domStyle.parts.length; j++) { domStyle.parts[j](item.parts[j]); } for(; j < item.parts.length; j++) { domStyle.parts.push(addStyle(item.parts[j], options)); } } else { var parts = []; for(var j = 0; j < item.parts.length; j++) { parts.push(addStyle(item.parts[j], options)); } stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts}; } } } function listToStyles (list, options) { var styles = []; var newStyles = {}; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var css = item[1]; var media = item[2]; var sourceMap = item[3]; var part = {css: css, media: media, sourceMap: sourceMap}; if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]}); else newStyles[id].parts.push(part); } return styles; } function insertStyleElement (options, style) { var target = getElement(options.insertInto) if (!target) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid."); } var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1]; if (options.insertAt === "top") { if (!lastStyleElementInsertedAtTop) { target.insertBefore(style, target.firstChild); } else if (lastStyleElementInsertedAtTop.nextSibling) { target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling); } else { target.appendChild(style); } stylesInsertedAtTop.push(style); } else if (options.insertAt === "bottom") { target.appendChild(style); } else if (typeof options.insertAt === "object" && options.insertAt.before) { var nextSibling = getElement(options.insertAt.before, target); target.insertBefore(style, nextSibling); } else { throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n"); } } function removeStyleElement (style) { if (style.parentNode === null) return false; style.parentNode.removeChild(style); var idx = stylesInsertedAtTop.indexOf(style); if(idx >= 0) { stylesInsertedAtTop.splice(idx, 1); } } function createStyleElement (options) { var style = document.createElement("style"); if(options.attrs.type === undefined) { options.attrs.type = "text/css"; } if(options.attrs.nonce === undefined) { var nonce = getNonce(); if (nonce) { options.attrs.nonce = nonce; } } addAttrs(style, options.attrs); insertStyleElement(options, style); return style; } function createLinkElement (options) { var link = document.createElement("link"); if(options.attrs.type === undefined) { options.attrs.type = "text/css"; } options.attrs.rel = "stylesheet"; addAttrs(link, options.attrs); insertStyleElement(options, link); return link; } function addAttrs (el, attrs) { Object.keys(attrs).forEach(function (key) { el.setAttribute(key, attrs[key]); }); } function getNonce() { if (false) {} return __webpack_require__.nc; } function addStyle (obj, options) { var style, update, remove, result; // If a transform function was defined, run it on the css if (options.transform && obj.css) { result = typeof options.transform === 'function' ? options.transform(obj.css) : options.transform.default(obj.css); if (result) { // If transform returns a value, use that instead of the original css. // This allows running runtime transformations on the css. obj.css = result; } else { // If the transform function returns a falsy value, don't add this css. // This allows conditional loading of css return function() { // noop }; } } if (options.singleton) { var styleIndex = singletonCounter++; style = singleton || (singleton = createStyleElement(options)); update = applyToSingletonTag.bind(null, style, styleIndex, false); remove = applyToSingletonTag.bind(null, style, styleIndex, true); } else if ( obj.sourceMap && typeof URL === "function" && typeof URL.createObjectURL === "function" && typeof URL.revokeObjectURL === "function" && typeof Blob === "function" && typeof btoa === "function" ) { style = createLinkElement(options); update = updateLink.bind(null, style, options); remove = function () { removeStyleElement(style); if(style.href) URL.revokeObjectURL(style.href); }; } else { style = createStyleElement(options); update = applyToTag.bind(null, style); remove = function () { removeStyleElement(style); }; } update(obj); return function updateStyle (newObj) { if (newObj) { if ( newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap ) { return; } update(obj = newObj); } else { remove(); } }; } var replaceText = (function () { var textStore = []; return function (index, replacement) { textStore[index] = replacement; return textStore.filter(Boolean).join('\n'); }; })(); function applyToSingletonTag (style, index, remove, obj) { var css = remove ? "" : obj.css; if (style.styleSheet) { style.styleSheet.cssText = replaceText(index, css); } else { var cssNode = document.createTextNode(css); var childNodes = style.childNodes; if (childNodes[index]) style.removeChild(childNodes[index]); if (childNodes.length) { style.insertBefore(cssNode, childNodes[index]); } else { style.appendChild(cssNode); } } } function applyToTag (style, obj) { var css = obj.css; var media = obj.media; if(media) { style.setAttribute("media", media) } if(style.styleSheet) { style.styleSheet.cssText = css; } else { while(style.firstChild) { style.removeChild(style.firstChild); } style.appendChild(document.createTextNode(css)); } } function updateLink (link, options, obj) { var css = obj.css; var sourceMap = obj.sourceMap; /* If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled and there is no publicPath defined then lets turn convertToAbsoluteUrls on by default. Otherwise default to the convertToAbsoluteUrls option directly */ var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap; if (options.convertToAbsoluteUrls || autoFixUrls) { css = fixUrls(css); } if (sourceMap) { // http://stackoverflow.com/a/26603875 css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */"; } var blob = new Blob([css], { type: "text/css" }); var oldSrc = link.href; link.href = URL.createObjectURL(blob); if(oldSrc) URL.revokeObjectURL(oldSrc); } /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _EventEmitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var _Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); /* harmony import */ var _OOP__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3); /*** * @augments Node * @augments ChildNode * @augments ParentNode * @augments Element * @augments HTMLElement * @augments EventEmitter * @augments ElementCSSInlineStyle * @constructor */ function AElement() { _EventEmitter__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].call(this); this._azar_extendAttributes = this._azar_extendAttributes || {}; this._azar_extendTags = {}; this.eventHandler = {}; } _OOP__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].mixClass(AElement, _EventEmitter__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"]); AElement.prototype.init = function (props) { Object.assign(this, props || {}); }; AElement.prototype.eventHandler = {}; /*** * run super-class method */ AElement.prototype.super = function () {/* nope */ }; /** * @typedef {Object} AttributeDefiner * @property {Function} set * @property {Function} get * @property {Function} remove * * @param {String} key * @param {AttributeDefiner} def */ AElement.prototype.defineAttribute = function (key, def) { this._azar_extendAttributes[key] = def; }; AElement.prototype.defineAttributes = function (defs) { for (var key in defs) { this.defineAttribute(key, defs[key]); } }; AElement.prototype.attr = function () { if (arguments.length == 1) { if (typeof (arguments[0]) == 'string') { if (this._azar_extendAttributes[arguments[0]]) { return this._azar_extendAttributes[arguments[0]].get.call(this); } else return this.getAttribute(arguments[0]); } else { for (var key in arguments[0]) { this.attr(key, arguments[0][key]); } } } else { if (arguments.length == 2) { if (arguments[1] === null || arguments[1] === undefined) { if (this._azar_extendAttributes[arguments[0]]) { this._azar_extendAttributes[arguments[0]].remove.call(this, arguments[1]); } else this.removeAttribute(arguments[0]); } else { if (this._azar_extendAttributes[arguments[0]]) { this._azar_extendAttributes[arguments[0]].set.call(this, arguments[1]); } else { this.setAttribute(arguments[0], arguments[1]); } } } } return this; }; /*** * add style * @param {CSSStyleDeclaration|string|{}} arg0 * @param {string} arg1 * @returns {AElement} */ /** * add style * @param {CSSStyleDeclaration|string|{}} arg0 * @returns {AElement} */ AElement.prototype.addStyle = function (arg0, arg1) { if (typeof arg0 == 'string') if (arg0.indexOf('-') >= 0) { this.style.setProperty(arg0, arg1); } else { this.style[arg0] = arg1; } else { for (var key in arg0) this.addStyle(key, arg0[key]); } return this; }; /*** * * @param {string|string[]|CSSStyleDeclaration} arg0 * @returns {AElement} */ AElement.prototype.removeStyle = function (arg0) { var key; if (arg0.charAt) { if (arg0.indexOf('-') >= 0) { this.style.removeProperty(arg0); } else { this.style[arg0] = null; delete this.style[arg0]; } } else { if (arg0.map && arg0.forEach) { for (var i = 0; i < arg0.length; ++i) this.removeStyle(arg0[i]); } else { for (key in arg0) this.removeStyle(key); } } return this; }; AElement.prototype.addChild = function (child) { if (child.indexOf && child.map && child.forEach) { for (var i = 0; i < child.length; ++i) this.appendChild(child[i]); } else this.appendChild(child); return this; }; AElement.prototype.addTo = function (parent) { if (parent && parent.appendChild) { if (parent.addChild) parent.addChild(this); else parent.appendChild(this); } else throw Error("Can not append to " + parent + "!"); return this; }; AElement.prototype.selfRemove = function () { if (this.parentElement) this.parentElement.removeChild(this); return this; }; AElement.prototype.selfReplace = function (newNode) { if (this.parentElement) this.parentElement.replaceChild(newNode, this); return this; }; AElement.prototype.clearChild = function () { while (this.firstChild) { this.removeChild(this.firstChild); } return this; }; /** * * @param {string|Array} className * @returns {Boolean} */ AElement.prototype.containsClass = function (className) { if (className.forEach && className.map) { for (var i = 0; i < className.length; ++i) if (!this.classList.containsClass(className[i])) return false; return true; } else return this.classList.contains(className); }; /** * * @param {string|Array} className * @returns {AElement} */ AElement.prototype.addClass = function (className) { if (className && className.forEach && className.map) { for (var i = 0; i < className.length; ++i) this.classList.add(className[i]); } else this.classList.add(className); return this; }; /** * * @param {string|Array} className * @returns {AElement} */ AElement.prototype.removeClass = function (className) { if (className && className.forEach && className.map) { for (var i = 0; i < className.length; ++i) this.classList.remove(className[i]); } else this.classList.remove(className); return this; }; AElement.prototype.getComputedStyleValue = function (key) { return window.getComputedStyle(this).getPropertyValue(key); }; AElement.prototype.getFontSize = function () { return parseFloat(this.getComputedStyleValue('font-size').replace('px', '')); }; AElement.prototype.findChildAfter = function (obj) { var r = 0; for (var i = 0; i < this.childNodes.length; ++i) { if (obj == this.childNodes[i]) { r = i + 1; break; } } if (this.childNodes[r]) return this.childNodes[r]; return undefined; }; AElement.prototype.findChildBefore = function (obj) { var r = 0; for (var i = 0; i < this.childNodes.length; ++i) { if (obj == this.childNodes[i]) { r = i - 1; break; } } if (this.childNodes[r]) return this.childNodes[r]; return undefined; }; AElement.prototype.addChildBefore = function (newItem, bf) { this.insertBefore(newItem, bf); return this; }; AElement.prototype.addChildAfter = function (newItem, at) { var bf = this.findChildAfter(at); if (bf) return this.addChildBefore(newItem, bf); return this.addChild(newItem); }; /** * @returns {DOMRect} */ AElement.prototype.getBoundingRecursiveRect = function (depth) { if (depth === undefined) depth = 10000; var current, next; var oo = 1000000; var ac = { left: oo, right: -oo, top: oo, bottom: -oo, width: 0, height: 0 }; var stacks = [{ e: this, d: 0 }]; while (stacks.length > 0) { current = stacks.pop(); if (current.e.getBoundingClientRect) { var cRect = current.e.getBoundingClientRect(); if (!cRect || !(cRect.width || cRect.height || cRect.left || cRect.right)) continue; ac.left = Math.min(ac.left, cRect.left); ac.top = Math.min(ac.top, cRect.top); ac.bottom = Math.max(ac.bottom, cRect.bottom); ac.right = Math.max(ac.right, cRect.right); ac.height = ac.bottom - ac.top; ac.width = ac.right - ac.left; var childNodes = current.e.childNodes; if (childNodes && childNodes.length > 0 && current.d < depth) { for (var i = 0; i < childNodes.length; ++i) { next = { e: childNodes[i], d: current.d + 1 }; stacks.push(next); } } } } return ac; }; /*** * * @param parent * @returns {boolean} */ AElement.prototype.isDescendantOf = function (parent) { var child = this; while (child) { if (child === parent) return true; child = child.parentNode; } return false; }; /*************************** **********************/ AElement.prototype.getCSSRules = function () { var sheets = document.styleSheets; var ret = []; this.matches = this.matches || this.webkitMatchesSelector || this.mozMatchesSelector || this.msMatchesSelector || this.oMatchesSelector; for (var i in sheets) { if (sheets[i].href) continue;//because can not access, you must clone link node instead var rules = sheets[i].rules || sheets[i].cssRules; for (var r in rules) { if (this.matches(rules[r].selectorText)) { ret.push(rules[r]); } } } return ret; }; /*** * @returns {Promise} */ /*** * WARNING: this function may be unsafe */ AElement.prototype.afterDisplayed = function (requestTimesOut) { if (!requestTimesOut) requestTimesOut = 24 * 3600 * 33; // var tracer = new Error(); var current = this; return new Promise(function (resolve, reject) { function trace() { if (requestTimesOut < 0) { // reject(tracer); // if (absol.BUILD && absol.BUILD.version == "DEBUG") // console.warn("Element not displayed", trace); } else { requestTimesOut--; var bound = current.getBoundingClientRect(); if (bound.width > 0 || bound.height > 0) { resolve(); } else { setTimeout(trace, 33); return; } } } trace(); }); }; !(function () { var origin = AElement.prototype.on; if (_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].isSafari && !_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].isMobile) { AElement.prototype.on = function () { if (!this.isSupportedEvent('mouseleave') && arguments[0] == 'mouseleave') { this.defineEvent('mouseleave'); var mouseLeaveEventHandler = function (event) { var bound = this.getBoundingClientRect(); var ok = false; ok |= event.clientX < bound.left + 1; ok |= event.clientX >= bound.right - 1; ok |= event.clientY < bound.top + 1; ok |= event.clientY >= bound.bottom - 1; if (ok) this.emit('mouseleave', event); }; this.addEventListener('mouseleave', mouseLeaveEventHandler, true); } origin.apply(this, arguments); return this; }; } if (_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].isFirefox) { AElement.prototype.on = function () { if (!this.isSupportedEvent('wheel') && arguments[0] == 'wheel') { this.defineEvent('wheel'); var wheelEventHandler = function (oldEvent) { //clone event to avoid some lib fix it var event = oldEvent.absolEvent; if (!event) { event = Object.assign({}, oldEvent); for (var i = 0; i < AElement.eventProperties.length; ++i) { var key = AElement.eventProperties[i]; if (typeof (event[key]) == 'function') { event[key] = event[key].bind(oldEvent); } } event.preventDefault = function () { oldEvent.preventDefault(); }; if (!event.mozFixWheelScale) { event.mozDeltaY = oldEvent.deltaY; event.mozFixWheelScale = true; Object.defineProperty(event, 'deltaY', { get: function () { return this.mozDeltaY * 100 / 3; } }); } oldEvent.absolEvent = event; } this.emit('wheel', event); }; this.addEventListener('wheel', wheelEventHandler); } origin.apply(this, arguments); return this; }; } }()); AElement.eventProperties = ["altKey", "bubbles", "button", "buttons", "cancelBubble", "cancelable", "clientX", "clientY", "composed", "ctrlKey", "currentTarget", "defaultPrevented", "deltaMode", "deltaX", "deltaY", "deltaZ", "detail", "eventPhase", "explicitOriginalTarget", "isTrusted", "layerX", "layerY", "metaKey", "movementX", "movementY", "mozInputSource", "mozPressure", "offsetX", "offsetY", "originalTarget", "pageX", "pageY", "rangeOffset", "rangeParent", "region", "relatedTarget", "returnValue", "screenX", "screenY", "shiftKey", "srcElement", "target", "timeStamp", "type", "deltaMode", "deltaX", "deltaY", "deltaZ"]; /* harmony default export */ __webpack_exports__["a"] = (AElement); /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _BrowserRules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41); /* harmony import */ var _BrowserRules__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_BrowserRules__WEBPACK_IMPORTED_MODULE_0__); /** * * @param {BrowserRules} rulesheet */ function BrowserDetector(rulesheet) { this.au = global.navigator ? (navigator.userAgent || '') : ''; this.rulesheet = rulesheet; this.os = this.detectByRules(this.rulesheet.os); this.device = this.detectByRules(this.rulesheet.device); this.engine = this.detectByRules(this.rulesheet.engine); this.browser = this.detectByRules(this.rulesheet.browser); this.isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; this.isCococ = navigator.userAgent.toLowerCase().indexOf('coc_coc_browser') >= 1; this.isSafari = !this.isCococ && navigator.userAgent.toLowerCase().indexOf('safari') > -1 && navigator.userAgent.toLowerCase().indexOf('win') < 0 && navigator.userAgent.toLowerCase().indexOf('android') < 0; this.isMobile = navigator.userAgent.indexOf('KFFOWI') > -1 || navigator.userAgent.toLowerCase().indexOf('mobile') > -1; this.hasTouch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch || navigator.maxTouchPoints > 0 || window.navigator.msMaxTouchPoints > 0; this.isTouchDevice = this.isMobile && this.hasTouch; this.supportPassiveEvent = (function () { var supportsPassiveOption = false; try { var opts = Object.defineProperty({}, 'passive', { get: function () { supportsPassiveOption = true; } }); window.addEventListener('test', null, opts); window.removeEventListener('test', null, opts); } catch (e) { } return supportsPassiveOption; })(); } BrowserDetector.prototype.detectByRules = function (rules) { var result = {}; for (var i = 0; i < rules.length; ++i) { var os = rules[i]; var type = os[0]; var rgx = os[1]; if (typeof (rgx) == 'function') { rgx = rgx(this.au.toLowerCase()); } if (Object.prototype.toString.call(rgx).indexOf('RegExp')) { var matched = this.au.toLowerCase().match(rgx); if (matched) { result.type = type; if (matched[1]) { result.version = matched[1]; } break; } } else if (typeof (rgx) == 'string') { if (this.au.toLowerCase().indexOf(rgx) >= 0) { result.type = type; } } } return result; }; /* harmony default export */ __webpack_exports__["a"] = (new BrowserDetector(_BrowserRules__WEBPACK_IMPORTED_MODULE_0___default.a)); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13))) /***/ }), /* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* unused harmony export svgToRasterImageUrl */ /* unused harmony export svgToExportedString */ /* harmony import */ var _Dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); /* harmony import */ var _ElementNS__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19); /* harmony import */ var _Element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10); var sattachhookCreator = function () { var res = Svg.ShareInstance._('<image class="absol-attachhook" style="display:none" href=""/>'); res.defineEvent('attached'); res.on('error', function (event) { if (!this._attached && this.isDescendantOf(document.body)) { this._attached = true; this.emit('attached', event, this); } }); res._attached = false; Object.defineProperty(res, 'attached', { get: function () { return this._attached; } }); res.resetState = function () { this._attached = false; this.src = ''; }; return res; }; /*** * @extends Dom * @param option * @constructor */ function Svg(option) { _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].call(this, option); this.defaultTag = 'g'; this.svgNS = "http://www.w3.org/2000/svg"; Object.defineProperties(this.creator, { sattachhook: { set: function () { //do nothing }, get: function () { return sattachhookCreator; } } }); delete this.buidDom; this.buildSvg = this.create.bind(this); } Object.defineProperties(Svg.prototype, Object.getOwnPropertyDescriptors(_Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].prototype)); Svg.prototype.fromCode = function (code) { code = code.trim(); var receptacle = document.createElement('div'); var element; var prototypes; if (code.startsWith('<svg')) { receptacle.innerHTML = code; element = receptacle.childNodes[0]; prototypes = Object.getOwnPropertyDescriptors(_Element__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].prototype); Object.defineProperties(element, prototypes); _Element__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].call(element); } else { var svgfragment = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg">' + code + '</svg>'; receptacle.innerHTML = '' + svgfragment; element = receptacle.childNodes[0].childNodes[0]; prototypes = Object.getOwnPropertyDescriptors(_ElementNS__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].prototype); Object.defineProperties(element, prototypes); _ElementNS__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].call(element); } return element; }; Svg.prototype.makeNewElement = function (tagName) { return document.createElementNS(this.svgNS, tagName); }; Svg.ShareInstance = new Svg(); Svg.svgToCanvas = function (element) { if (typeof element == 'string') { element = _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance.$(element); } if (element && element.tagName == 'svg') { var cssTexts = {}; var depthClone = function (originElt) { var newElt = originElt.cloneNode();//no deep if (!originElt.getAttributeNS) return newElt;//is text node var cssRules = _Element__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].prototype.getCSSRules.call(originElt); var cssKey = cssRules.reduce(function (ac, rule) { for (var i = 0; i < rule.style.length; ++i) { ac[rule.style[i]] = true; } return ac; }, {}); for (var key in cssKey) { newElt.style[key] = _Element__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].prototype.getComputedStyleValue.call(originElt, key); } var children = Array.prototype.map.call(originElt.childNodes, depthClone); for (var i = 0; i < children.length; ++i) { newElt.appendChild(children[i]); } return newElt; }; var cloneElement = depthClone(element); var renderSpace = _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance._({ style: { // opacity:0, zIndex: -1000, position: 'fixed', top: 0, bottom: 0 } }).addTo(document.body); renderSpace.addChild(cloneElement); var svgCode = renderSpace.innerHTML; renderSpace.clearChild(); var mBlob = new Blob([svgCode], { type: "image/svg+xml;charset=utf-8" }); var src = (URL || webkitURL).createObjectURL(mBlob); var image = _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance._('img'); image.attr('src', src) .addTo(renderSpace); var canvas = document.createElement("canvas"); renderSpace.addChild(canvas); return _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].waitImageLoaded(image).then(function () { canvas.width = image.width; canvas.height = image.height; var context = canvas.getContext("2d"); context.drawImage(image, 0, 0); renderSpace.selfRemove(); return canvas; }); } else { throw new Error('Element must be svg'); } }; function svgToRasterImageUrl(element) { return Svg.svgToCanvas(element).then(function (canvas) { return canvas.toDataURL(); }); } Svg.svgToRasterImageUrl = svgToRasterImageUrl; function svgToExportedString(element) { if (typeof element == 'string') { element = _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance.$(element); } if (element && element.tagName == 'svg') { var depthClone = function (originElt) { var newElt = originElt.cloneNode();//no deep if (!originElt.getAttributeNS) return newElt;//is text node var cssRules = _Element__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].prototype.getCSSRules.call(originElt); var cssKey = cssRules.reduce(function (ac, rule) { for (var i = 0; i < rule.style.length; ++i) { ac[rule.style[i]] = true; } return ac; }, {}); for (var key in cssKey) { newElt.style[key] = _Element__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].prototype.getComputedStyleValue.call(originElt, key); } var children = Array.prototype.map.call(originElt.childNodes, depthClone); for (var i = 0; i < children.length; ++i) { newElt.appendChild(children[i]); } return newElt; }; var cloneElement = depthClone(element); var renderSpace = _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance._({ style: { // opacity:0, zIndex: -1000, position: 'fixed', top: 0, bottom: 0 } }).addTo(document.body); renderSpace.addChild(cloneElement); var svgCode = renderSpace.innerHTML; renderSpace.selfRemove(); return svgCode; } else { throw new Error('Element must be svg'); } }; Svg.svgToExportedString = svgToExportedString; function svgToSvgUrl(element) { var svg = svgToExportedString(element); svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n' + svg; var blob = new Blob([svg], { type: 'image/svg+xml' }); var url = URL.createObjectURL(blob); return url; } Svg.svgToSvgUrl = svgToSvgUrl; _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].printElement = function (option) { var _ = _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance._; var $ = _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance.$; option = option || {}; if (typeof option == 'string') { option = { elt: _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].ShareInstance.$(option) }; } else if (typeof option.elt == 'string') { option.elt = $(option.elt); } else if (_Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].isDomNode(option)) { option = { elt: option }; } if (_Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].isDomNode(option.elt)) { function afterCloneCb(originElt, newElt) { if (!newElt.tagName) return; var tagName = newElt.tagName.toLowerCase(); if (newElt.getBBox && tagName!== 'svg') return; var url, img; var needCopyStyle = option.computeStyle; if (!newElt.tagName) console.log(newElt.nodeType, newElt) if (tagName === 'canvas' || tagName === 'svg') { if (tagName === "canvas") { url = originElt.toDataURL(); } else { url = svgToSvgUrl(originElt); } img = _({ tag: 'img', props: { src: url } }); $(newElt).selfReplace(img); newElt = img; needCopyStyle = true; } else if (tagName === 'script') { newElt.remove(); } else if (tagName === 'img') { newElt.setAttribute('src', originElt.src); } if (needCopyStyle) { Object(_Dom__WEBPACK_IMPORTED_MODULE_0__[/* copyStyleRule */ "a"])(originElt, newElt); } return newElt; } var newElt = Object(_Dom__WEBPACK_IMPORTED_MODULE_0__[/* depthClone */ "c"])(option.elt, afterCloneCb); var renderSpace = _({ style: { position: 'fixed', top: '0', left: '0', right: '0', bottom: '0', overflow: 'auto', zIndex: '10', opacity: '0', visibility: 'hidden' } }); $('link', document.head, function (elt) { renderSpace.addChild(elt.cloneNode(false)); }); if (!option.computeStyle) { $('style', document.head, function (elt) { if (elt == _Dom__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].$printStyle) return; renderSpace.addChild(elt.cloneNode(true)); }); } renderSpace.addChild(newElt); var eltCode = renderSpace.innerHTML; renderSpace.clearChild(); option.title = option.title || ($('title', document.head) || { innerHTML: 'absol.js' }).innerHTML; var htmlCode = ['<ht' + 'ml>', ' <h' + 'ead><title>' + option.title + '</title><meta charset="UTF-8">', '<style>', option.overideStyle ? 'html, body{width:initial !important; height:initial !important; overflow: initial !important; overflow-x: initial !important;overflow-y: initial !important; }' : '', '@media print {',//still not work ' body{', ' -webkit-print-color-adjust: exact;', ' color-adjust: exact;', ' } ', ' div, tr, td, table{', ' }', ' }', 'div, table, tr, td{', ' page-break-inside: initial;', ' page-break-before: avoid;', ' page-break-after: avoid;', '}', option.extendCss || '', '</style>', '</he' + 'ad>', '<bod' + 'y>', eltCode, '<scr' + 'ipt>' + (option.extendScript || '') + '</scri' + 'pt>',//browser parse script tag fail '<scr' + 'ipt>setTimeout(function(){ window.print();},1000);</scri' + 'pt>',//browser parse script tag fail '</bod' + 'y>', '</ht' + 'ml>'].join('\n'); var blob = new Blob([htmlCode], { type: 'text/html; charset=UTF-8' }); renderSpace.addTo(document.body); var iframe = _('iframe').attr('src', URL.createObjectURL(blob)).addStyle({ width: '100%', height: '100%' }).addTo(renderSpace); return new Promise(function (rs, rj) { function waitLoad() { if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.body) { if (typeof option.onLoad == 'function') option.onLoad(); iframe.contentWindow.focus(); setTimeout(function () { function waitFocusBack() { if (!document.hasFocus || document.hasFocus()) { renderSpace.remove(); if (typeof option.onFinish == 'function') option.onFinish(); rs(); } else { setTimeout(waitFocusBack, 300) } } waitFocusBack(); }, 4000); } else setTimeout(waitLoad, 1000) } waitLoad(); }); } else { throw new Error('Invalid param!'); } }; /* harmony default export */ __webpack_exports__["a"] = (Svg); /***/ }), /* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _AElementNS__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17); /** * * @constructor */ function ResizeSystem() { this.elts = []; this.cache = []; this.cacheOf = null; this.lastResizeTime = 0; window.addEventListener('resize', this.update.bind(this)); this['goDown'+'AndCache'] = this.goDownAndCache.bind(this); this['notify'+'ToElt'] = this.notifyToElt.bind(this); } /*** * * @param {AElement | AElementNS} elt */ ResizeSystem.prototype.goDownAndCache = function (elt){ if (this.notifyToElt(elt)) this.cache.push(elt); if (elt.childNodes) { Array.prototype.forEach.call(elt.childNodes, this.goDownAndCache); } }; ResizeSystem.prototype.notifyToElt = function (elt){ if (typeof elt.requestUpdateSize == 'function') { elt.requestUpdateSize(); return true; } else if (typeof elt.updateSize == 'function') { elt.updateSize(); return true; } else if (typeof elt.onresize == 'function') { elt.onresize(); return true; } }; ResizeSystem.prototype.update = function () { var now = new Date().getTime(); if (now - 100 > this.lastResizeTime) { this.removeTrash(); this.cache = undefined; } this.lastResizeTime = now; if (this.cacheOf !== null){ this.cache = undefined; this.cacheOf = null; } if (this.cache === undefined) { this.cache = []; this.elts.forEach(this.goDownAndCache); } else { this.cache.forEach(this.notifyToElt); } } ResizeSystem.prototype.removeTrash = function () { this.elts = this.elts.filter(function (element) { return _AElement__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].prototype.isDescendantOf.call(element, document.body); }); }; /*** * * @param {AElement| AElementNS | Node} fromElt * @returns {boolean} */ ResizeSystem.prototype.updateUp = function (fromElt) { while (fromElt) { if (typeof fromElt.requestUpdateSize == 'function') { fromElt.requestUpdateSize(); return true; } else if (typeof fromElt.updateSize == 'function') { fromElt.updateSize(); return true; } else if (typeof fromElt.onresize == 'function') { fromElt.onresize(); return true; } fromElt = fromElt.parentElement; } }; /*** * * @param {AElement| AElementNS | Node} fromElt * @returns {boolean} */ ResizeSystem.prototype.updateDown = function (fromElt) { var now = new Date().getTime(); if (now - 100 > this.lastResizeTime) { this.cache = undefined; } this.lastResizeTime = now; if (this.cacheOf !== fromElt){ this.cache = undefined; this.cacheOf = fromElt; } if (this.cache === undefined) { this.cache = []; this.goDownAndCache(fromElt); } else { this.cache.forEach(this.notifyToElt); } }; /*** * * @param {AElement| AElementNS | Node} elt * @return {boolean} */ ResizeSystem.prototype.add = function (elt) { for (var i = 0; i < this.elts.length; ++i) if (_AElement__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].prototype.isDescendantOf.call(elt, this.elts[i])) { return false; } this.elts = this.elts.filter(function (e) { return !_AElement__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].prototype.isDescendantOf.call(e, elt); }); this.elts.push(elt); return true; }; /* harmony default export */ __webpack_exports__["a"] = (new ResizeSystem()); /***/ }), /* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony default export */ __webpack_exports__["a"] = (_AElement__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]); /***/ }), /* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return noop; }); function noop(){}; /***/ }), /* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; function TemplateString(props) { this.parts = props.parts; } TemplateString.prototype.toJSCode = function () { return this.parts.map(function (e) { if (e.type == TemplateString.TYPE_EXPRESSION) { return '(' + e.data + ')'; } else { return JSON.stringify(e.data); } }).join('+'); }; TemplateString.__partRegex = /(\{\{(([^\}]|(\}[^\}]))*)\}\})|(([^\{]|(\{[^\{]))+)/g; /** * @param {String} text */ TemplateString.__matchExpression = function (text) { if (text[0] == '{' && text[1] == '{' && text[text.length - 1] == '}' && text[text.length - 2] == '}') { return [text, text.substr(2, text.length - 4).trim()]; } else { return false; } }; TemplateString.TYPE_STRING = 0; TemplateString.TYPE_EXPRESSION = 1; TemplateString.parse = function (text) { text = text+''; var matchedParts = text.match(this.__partRegex); if (matchedParts) { var parts = matchedParts.map(function (e) { var matchedExp = this.__matchExpression(e); if (matchedExp) { return { type: this.TYPE_EXPRESSION, data: matchedExp[1] }; } else { return { type: this.TYPE_STRING, data: e }; } }.bind(this)); return new TemplateString({ parts: parts }); } else { return undefined; } }; /* harmony default export */ __webpack_exports__["a"] = (TemplateString); /***/ }), /* 13 */ /***/ (function(module, exports) { var g; // This works in non-strict mode g = (function() { return this; })(); try { // This works if eval is allowed (see CSP) g = g || new Function("return this")(); } catch (e) { // This works if the window reference is available if (typeof window === "object") g = window; } // g can still be undefined, but nothing to do about it... // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { ...} module.exports = g; /***/ }), /* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseStyleAttr", function() { return parseStyleAttr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseClassAttr", function() { return parseClassAttr; }); /** * * @param {String} text * @returns {Object} */ function parseStyleAttr(text) { return text.split(';').map(function (line) { var parts = line.split(':'); if (parts.length < 2) return null; var key = parts.shift().trim(); var value = parts.join(':').trim(); if (key.length == 0 || value.length == 0) return null; return [key, value]; }).filter(function (it) { return it != null }).reduce(function (ac, cr) { ac[cr[0]] = cr[1]; return ac; }, {}); } /** * * @param {String} text * @returns {Array<String>} */ function parseClassAttr(text) { return text.trim().split(/\s+/); } /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global, Buffer, setImmediate) {var require;var require;/*! JSZip v3.6.0 - A JavaScript class for generating and reading zip files <http://stuartk.com/jszip> (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com> Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/master/LICENSE */ !function(e){if(true)module.exports=e();else {}}(function(){return function s(a,o,u){function h(r,e){if(!o[r]){if(!a[r]){var t="function"==typeof require&&require;if(!e&&t)return require(r,!0);if(f)return f(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return h(t||e)},i,i.exports,s,a,o,u)}return o[r].exports}for(var f="function"==typeof require&&require,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(e,t,r){"use strict";var c=e("./utils"),l=e("./support"),p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.encode=function(e){for(var t,r,n,i,s,a,o,u=[],h=0,f=e.length,l=f,d="string"!==c.getTypeOf(e);h<e.length;)l=f-h,n=d?(t=e[h++],r=h<f?e[h++]:0,h<f?e[h++]:0):(t=e.charCodeAt(h++),r=h<f?e.charCodeAt(h++):0,h<f?e.charCodeAt(h++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<l?(15&r)<<2|n>>6:64,o=2<l?63&n:64,u.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return u.join("")},r.decode=function(e){var t,r,n,i,s,a,o=0,u=0;if("data:"===e.substr(0,"data:".length))throw new Error("Invalid base64 input, it looks like a data url.");var h,f=3*(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error("Invalid base64 input, bad content length.");for(h=l.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),h[u++]=t,64!==s&&(h[u++]=r),64!==a&&(h[u++]=n);return h}},{"./support":30,"./utils":32}],2:[function(e,t,r){"use strict";var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(e){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){"use strict";var n=e("./utils"),a=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s<i;s++)e=e>>>8^n[255&(e^t[s])];return-1^e}(0|t,e,e.length):function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s<i;s++)e=e>>>8^n[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){"use strict";var n;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function u(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",s.inherits(u,a),u.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},u.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new u("Deflate",e)},r.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){"use strict";function I(e,t){var r,n="";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function i(e,t,r,n,i,s){var a,o,u=e.file,h=e.compression,f=s!==B.utf8encode,l=O.transformTo("string",s(u.name)),d=O.transformTo("string",B.utf8encode(u.name)),c=u.comment,p=O.transformTo("string",s(c)),m=O.transformTo("string",B.utf8encode(c)),_=d.length!==u.name.length,g=m.length!==c.length,v="",b="",w="",y=u.dir,k=u.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),f||!_&&!g||(S|=2048);var z,E=0,C=0;y&&(E|=16),"UNIX"===i?(C=798,E|=((z=u.unixPermissions)||(z=y?16893:33204),(65535&z)<<16)):(C=20,E|=63&(u.dosPermissions||0)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v+="up"+I((b=I(1,1)+I(T(l),4)+d).length,2)+b),g&&(v+="uc"+I((w=I(1,1)+I(T(p),4)+m).length,2)+w);var A="";return A+="\n\0",A+=I(S,2),A+=h.magic,A+=I(a,2),A+=I(o,2),A+=I(x.crc32,4),A+=I(x.compressedSize,4),A+=I(x.uncompressedSize,4),A+=I(l.length,2),A+=I(v.length,2),{fileRecord:R.LOCAL_FILE_HEADER+A+l+v,dirRecord:R.CENTRAL_FILE_HEADER+I(C,2)+A+I(p.length,2)+"\0\0\0\0"+I(E,4)+I(n,4)+l+v+p}}var O=e("../utils"),s=e("../stream/GenericWorker"),B=e("../utf8"),T=e("../crc32"),R=e("../signature");function n(e,t,r,n){s.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}O.inherits(n,s),n.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,s.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},n.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},n.prototype.closedSource=function(e){this.accumulate=!1;var t,r=this.streamFiles&&!e.file.dir,n=i(e,r,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),r)this.push({data:(t=e,R.DATA_DESCRIPTOR+I(t.crc32,4)+I(t.compressedSize,4)+I(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},n.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r,n,i,s,a,o,u=this.bytesWritten-e,h=(r=this.dirRecords.length,n=u,i=e,s=this.zipComment,a=this.encodeFileName,o=O.transformTo("string",a(s)),R.CENTRAL_DIRECTORY_END+"\0\0\0\0"+I(r,2)+I(r,2)+I(n,4)+I(i,4)+I(o.length,2)+o);this.push({data:h,meta:{percent:100}})},n.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},n.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on("error",function(e){t.error(e)}),this},n.prototype.resume=function(){return!!s.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},n.prototype.error=function(e){var t=this._sources;if(!s.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},n.prototype.lock=function(){s.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=n},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(e,t,r){"use strict";var h=e("../compressions"),n=e("./ZipFileWorker");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),u=0;try{e.forEach(function(e,t){u++;var r=function(e,t){var r=e||t,n=h[r];if(!n)throw new Error(r+" is not a valid compression method !");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo("file",{name:e,dir:i,date:s,comment:t.comment||"",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=u}catch(e){o.error(e)}return o}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,r){"use strict";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files={},this.comment=null,this.root="",this.clone=function(){var e=new n;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e("./object")).loadAsync=e("./load"),n.support=e("./support"),n.defaults=e("./defaults"),n.version="3.5.0",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e("./external"),t.exports=n},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,r){"use strict";var n=e("./utils"),i=e("./external"),o=e("./utf8"),u=e("./zipEntries"),s=e("./stream/Crc32Probe"),h=e("./nodejsUtils");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new s);r.on("error",function(e){t(e)}).on("end",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error("Corrupted zip : CRC32 mismatch")):e()}).resume()})}t.exports=function(e,s){var a=this;return s=n.extend(s||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),h.isNode&&h.isStream(e)?i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):n.prepareContent("the loaded zip file",e,!0,s.optimizedBinaryString,s.base64).then(function(e){var t=new u(s);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(s.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n];a.file(i.fileNameStr,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:s.createFolders})}return t.zipComment.length&&(a.comment=t.zipComment),a})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../stream/GenericWorker");function s(e,t){i.call(this,"Nodejs stream input adapter for "+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on("data",function(e){t.push({data:e,meta:{percent:0}})}).on("error",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on("end",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{"../stream/GenericWorker":28,"../utils":32}],13:[function(e,t,r){"use strict";var i=e("readable-stream").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on("data",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on("error",function(e){n.emit("error",e)}).on("end",function(){n.push(null)})}e("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{"../utils":32,"readable-stream":16}],14:[function(e,t,r){"use strict";t.exports={isNode:"undefined"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if("number"==typeof e)throw new Error('The "data" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&"function"==typeof e.on&&"function"==typeof e.pause&&"function"==typeof e.resume}}},{}],15:[function(e,t,r){"use strict";function s(e,t,r){var n,i=f.getTypeOf(t),s=f.extend(r||{},d);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),"string"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=h(e)),s.createFolders&&(n=function(e){"/"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf("/");return 0<t?e.substring(0,t):""}(e))&&g.call(this,n,!0);var a,o="string"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!o),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t="",s.compression="STORE",i="string"),a=t instanceof c||t instanceof l?t:m.isNode&&m.isStream(t)?new _(e,t):f.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var u=new p(e,a,s);this.files[e]=u}function h(e){return"/"!==e.slice(-1)&&(e+="/"),e}var i=e("./utf8"),f=e("./utils"),l=e("./stream/GenericWorker"),a=e("./stream/StreamHelper"),d=e("./defaults"),c=e("./compressedObject"),p=e("./zipObject"),o=e("./generate"),m=e("./nodejsUtils"),_=e("./nodejs/NodejsStreamInputAdapter"),g=function(e,t){return t=void 0!==t?t:d.createFolders,e=h(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function u(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,r,n;for(t in this.files)this.files.hasOwnProperty(t)&&(n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n))},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(u(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(u(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=g.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||("/"!==r.slice(-1)&&(r+="/"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(e){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(e){var t,r={};try{if((r=f.extend(e||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),"binarystring"===r.type&&(r.type="string"),!r.type)throw new Error("No output type specified.");f.checkSupport(r.type),"darwin"!==r.platform&&"freebsd"!==r.platform&&"linux"!==r.platform&&"sunos"!==r.platform||(r.platform="UNIX"),"win32"===r.platform&&(r.platform="DOS");var n=r.comment||this.comment||"";t=o.generateWorker(this,r,n)}catch(e){(t=new l("error")).error(e)}return new a(t,r.type||"string",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type="nodebuffer"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(e,t,r){t.exports=e("stream")},{stream:void 0}],17:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],18:[function(e,t,r){"use strict";var n=e("../utils");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(e){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,r){"use strict";var n=e("./Uint8ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){"use strict";var n=e("./ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),u=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new u(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){"use strict";function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.end()}),e.on("error",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e="Worker "+this.name;return this.previous?this.previous+" -> "+e:e}},t.exports=n},{}],29:[function(e,t,r){"use strict";var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),f=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function u(e,t,r){var n=t;switch(t){case"blob":case"arraybuffer":n="uint8array";break;case"base64":n="string"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s("error"),this._worker.error(e)}}u.prototype={accumulate:function(e){return o=this,u=e,new a.Promise(function(t,r){var n=[],i=o._internalType,s=o._outputType,a=o._mimeType;o.on("data",function(e,t){n.push(e),u&&u(t)}).on("error",function(e){n=[],r(e)}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return f.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case"string":return t.join("");case"array":return Array.prototype.concat.apply([],t);case"uint8array":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case"nodebuffer":return Buffer.concat(t);default:throw new Error("concat : unsupported type '"+e+"'")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()});var o,u},on:function(e,t){var r=this;return"data"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new o(this,{objectMode:"nodebuffer"!==this._outputType},e)}},t.exports=u},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(e,t,r){"use strict";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,r.nodebuffer="undefined"!=typeof Buffer,r.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:"application/zip"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob("application/zip").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e("readable-stream").Readable}catch(e){r.nodestream=!1}},{"readable-stream":16}],31:[function(e,t,s){"use strict";for(var o=e("./utils"),u=e("./support"),r=e("./nodejsUtils"),n=e("./stream/GenericWorker"),h=new Array(256),i=0;i<256;i++)h[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;function a(){n.call(this,"utf-8 decode"),this.leftOver=null}function f(){n.call(this,"utf-8 encode")}h[254]=h[254]=1,s.utf8encode=function(e){return u.nodebuffer?r.newBufferFrom(e,"utf-8"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=u.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return u.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=h[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(u.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(u.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(u.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}(t),i=t;n!==t.length&&(u.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(f,n),f.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=f},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,o){"use strict";var u=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),n=e("set-immediate-shim"),f=e("./external");function i(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}o.newBlob=function(t,r){o.checkSupport("blob");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error("Bug : can't construct the Blob.")}}};var s={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)"array"===t||"nodebuffer"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join("")},stringifyByChar:function(e){for(var t="",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return u.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return u.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function a(e){var t=65536,r=o.getTypeOf(e),n=!0;if("uint8array"===r?n=s.applyCanBeUsed.uint8array:"nodebuffer"===r&&(n=s.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return s.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return s.stringifyByChar(e)}function d(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}o.applyFromCharCode=a;var c={};c.string={string:i,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:a,array:i,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return a(new Uint8Array(e))},array:function(e){return d(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:i,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:a,array:function(e){return d(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:i,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:a,array:function(e){return d(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return d(e,new Uint8Array(e.length))},nodebuffer:i},o.transformTo=function(e,t){if(t=t||"",!e)return t;o.checkSupport(e);var r=o.getTypeOf(t);return c[r][e](t)},o.getTypeOf=function(e){return"string"==typeof e?"string":"[object Array]"===Object.prototype.toString.call(e)?"array":u.nodebuffer&&r.isBuffer(e)?"nodebuffer":u.uint8array&&e instanceof Uint8Array?"uint8array":u.arraybuffer&&e instanceof ArrayBuffer?"arraybuffer":void 0},o.checkSupport=function(e){if(!u[e.toLowerCase()])throw new Error(e+" is not supported by this platform")},o.MAX_VALUE_16BITS=65535,o.MAX_VALUE_32BITS=-1,o.pretty=function(e){var t,r,n="";for(r=0;r<(e||"").length;r++)n+="\\x"+((t=e.charCodeAt(r))<16?"0":"")+t.toString(16).toUpperCase();return n},o.delay=function(e,t,r){n(function(){e.apply(r||null,t||[])})},o.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},o.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])arguments[e].hasOwnProperty(t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},o.prepareContent=function(n,e,i,s,a){return f.Promise.resolve(e).then(function(n){return u.blob&&(n instanceof Blob||-1!==["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(n)))&&"undefined"!=typeof FileReader?new f.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t,r=o.getTypeOf(e);return r?("arraybuffer"===r?e=o.transformTo("uint8array",e):"string"===r&&(a?e=h.decode(e):i&&!0!==s&&(e=l(t=e,u.uint8array?new Uint8Array(t.length):new Array(t.length)))),e):f.Promise.reject(new Error("Can't read the data of '"+n+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"set-immediate-shim":54}],33:[function(e,t,r){"use strict";var n=e("./reader/readerFor"),i=e("./utils"),s=e("./signature"),a=e("./zipEntry"),o=(e("./utf8"),e("./support"));function u(e){this.files=[],this.loadOptions=e}u.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+i.pretty(t)+", expected "+i.pretty(e)+")")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?"uint8array":"array",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error("Corrupted zip: missing "+Math.abs(n)+" bytes.")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=u},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utf8":31,"./utils":32,"./zipEntry":34}],34:[function(e,t,r){"use strict";var n=e("./reader/readerFor"),s=e("./utils"),i=e("./compressedObject"),a=e("./crc32"),o=e("./utf8"),u=e("./compressions"),h=e("./support");function f(e,t){this.options=e,this.loadOptions=t}f.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(null===(t=function(e){for(var t in u)if(u.hasOwnProperty(t)&&u[t].magic===e)return u[t];return null}(this.compressionMethod)))throw new Error("Corrupted zip : compression "+s.pretty(this.compressionMethod)+" unknown (inner file : "+s.transformTo("string",this.fileName)+")");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=h.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=f},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(e,t,r){"use strict";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e("./stream/StreamHelper"),i=e("./stream/DataWorker"),a=e("./utf8"),o=e("./compressedObject"),u=e("./stream/GenericWorker");n.prototype={internalStream:function(e){var t=null,r="string";try{if(!e)throw new Error("No output type specified.");var n="string"===(r=e.toLowerCase())||"text"===r;"binarystring"!==r&&"text"!==r||(r="string"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new u("error")).error(e)}return new s(t,r,"")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||"nodebuffer").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof u?this._data:new i(this._data)}};for(var h=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],f=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},l=0;l<h.length;l++)n.prototype[h[l]]=f;t.exports=n},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(e,f,t){(function(t){"use strict";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(h),a=t.document.createTextNode("");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r="document"in t&&"onreadystatechange"in t.document.createElement("script")?function(){var e=t.document.createElement("script");e.onreadystatechange=function(){h(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(h,0)};else{var o=new t.MessageChannel;o.port1.onmessage=h,r=function(){o.port2.postMessage(0)}}var u=[];function h(){var e,t;n=!0;for(var r=u.length;r;){for(t=u,u=[],e=-1;++e<r;)t[e]();r=u.length}n=!1}f.exports=function(e){1!==u.push(e)||n||r()}}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],37:[function(e,t,r){"use strict";var i=e("immediate");function h(){}var f={},s=["REJECTED"],a=["FULFILLED"],n=["PENDING"];function o(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=n,this.queue=[],this.outcome=void 0,e!==h&&c(this,e)}function u(e,t,r){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function l(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return f.reject(t,e)}e===t?f.reject(t,new TypeError("Cannot resolve promise with itself")):f.resolve(t,e)})}function d(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function c(t,e){var r=!1;function n(e){r||(r=!0,f.reject(t,e))}function i(e){r||(r=!0,f.resolve(t,e))}var s=p(function(){e(i,n)});"error"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status="success"}catch(e){r.status="error",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if("function"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if("function"!=typeof e&&this.state===a||"function"!=typeof t&&this.state===s)return this;var r=new this.constructor(h);return this.state!==n?l(r,this.state===a?e:t,this.outcome):this.queue.push(new u(r,e,t)),r},u.prototype.callFulfilled=function(e){f.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){l(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){f.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){l(this.promise,this.onRejected,e)},f.resolve=function(e,t){var r=p(d,t);if("error"===r.status)return f.reject(e,r.value);var n=r.value;if(n)c(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},f.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){return e instanceof this?e:f.resolve(new this(h),e)},o.reject=function(e){var t=new this(h);return f.reject(t,e)},o.all=function(e){var r=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,i=!1;if(!n)return this.resolve([]);for(var s=new Array(n),a=0,t=-1,o=new this(h);++t<n;)u(e[t],t);return o;function u(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,f.resolve(o,s))},function(e){i||(i=!0,f.reject(o,e))})}},o.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var n,i=-1,s=new this(h);++i<t;)n=e[i],this.resolve(n).then(function(e){r||(r=!0,f.resolve(s,e))},function(e){r||(r=!0,f.reject(s,e))});return s}},{immediate:36}],38:[function(e,t,r){"use strict";var n={};(0,e("./lib/utils/common").assign)(n,e("./lib/deflate"),e("./lib/inflate"),e("./lib/zlib/constants")),t.exports=n},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(e,t,r){"use strict";var a=e("./zlib/deflate"),o=e("./utils/common"),u=e("./utils/strings"),i=e("./zlib/messages"),s=e("./zlib/zstream"),h=Object.prototype.toString,f=0,l=-1,d=0,c=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:l,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:d,to:""},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==f)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n="string"==typeof t.dictionary?u.string2buf(t.dictionary):"[object ArrayBuffer]"===h.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==f)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,"string"==typeof e?i.input=u.string2buf(e):"[object ArrayBuffer]"===h.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==f)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||("string"===this.options.to?this.onData(u.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===f):2!==n||(this.onEnd(f),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(e,t,r){"use strict";var d=e("./zlib/inflate"),c=e("./utils/common"),p=e("./utils/strings"),m=e("./zlib/constants"),n=e("./zlib/messages"),i=e("./zlib/zstream"),s=e("./zlib/gzheader"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=c.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=d.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,d.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,u=this.strm,h=this.options.chunkSize,f=this.options.dictionary,l=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,"string"==typeof e?u.input=p.binstring2buf(e):"[object ArrayBuffer]"===_.call(e)?u.input=new Uint8Array(e):u.input=e,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new c.Buf8(h),u.next_out=0,u.avail_out=h),(r=d.inflate(u,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&f&&(o="string"==typeof f?p.string2buf(f):"[object ArrayBuffer]"===_.call(f)?new Uint8Array(f):f,r=d.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===l&&(r=m.Z_OK,l=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);u.next_out&&(0!==u.avail_out&&r!==m.Z_STREAM_END&&(0!==u.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||("string"===this.options.to?(i=p.utf8border(u.output,u.next_out),s=u.next_out-i,a=p.buf2string(u.output,i),u.next_out=s,u.avail_out=h-s,s&&c.arraySet(u.output,u.output,i,s,0),this.onData(a)):this.onData(c.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(l=!0)}while((0<u.avail_in||0===u.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=d.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(u.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=c.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){"use strict";var u=e("./common"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var h=new u.Buf8(256),n=0;n<256;n++)h[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function f(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,u.shrinkBuf(e,t));for(var r="",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}h[254]=h[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new u.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return f(e,e.length)},r.binstring2buf=function(e){for(var t=new u.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=h[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return f(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){"use strict";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){"use strict";var u,d=e("../utils/common"),h=e("./trees"),c=e("./adler32"),p=e("./crc32"),n=e("./messages"),f=0,l=0,m=-2,i=2,_=8,s=286,a=30,o=19,g=2*s+1,v=15,b=3,w=258,y=w+b+1,k=42,x=113;function S(e,t){return e.msg=n[t],t}function z(e){return(e<<1)-(4<e?9:0)}function E(e){for(var t=e.length;0<=--t;)e[t]=0}function C(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(d.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function A(e,t){h._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,C(e.strm)}function I(e,t){e.pending_buf[e.pending++]=t}function O(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function B(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-y?e.strstart-(e.w_size-y):0,h=e.window,f=e.w_mask,l=e.prev,d=e.strstart+w,c=h[s+a-1],p=h[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(h[(r=t)+a]===p&&h[r+a-1]===c&&h[r]===h[s]&&h[++r]===h[s+1]){s+=2,r++;do{}while(h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&s<d);if(n=w-(d-s),s=d-w,a<n){if(e.match_start=t,o<=(a=n))break;c=h[s+a-1],p=h[s+a]}}}while((t=l[t&f])>u&&0!=--i);return a<=e.lookahead?a:e.lookahead}function T(e){var t,r,n,i,s,a,o,u,h,f,l=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=l+(l-y)){for(d.arraySet(e.window,e.window,l,l,0),e.match_start-=l,e.strstart-=l,e.block_start-=l,t=r=e.hash_size;n=e.head[--t],e.head[t]=l<=n?n-l:0,--r;);for(t=r=l;n=e.prev[--t],e.prev[t]=l<=n?n-l:0,--r;);i+=l}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,u=e.strstart+e.lookahead,f=void 0,(h=i)<(f=a.avail_in)&&(f=h),r=0===f?0:(a.avail_in-=f,d.arraySet(o,a.input,a.next_in,f,u),1===a.state.wrap?a.adler=c(a.adler,o,f,u):2===a.state.wrap&&(a.adler=p(a.adler,o,f,u)),a.next_in+=f,a.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=b)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+b-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<b)););}while(e.lookahead<y&&0!==e.strm.avail_in)}function R(e,t){for(var r,n;;){if(e.lookahead<y){if(T(e),e.lookahead<y&&t===f)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=b&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-y&&(e.match_length=B(e,r)),e.match_length>=b)if(n=h._tr_tally(e,e.strstart-e.match_start,e.match_length-b),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=b){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<b-1?e.strstart:b-1,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}function D(e,t){for(var r,n,i;;){if(e.lookahead<y){if(T(e),e.lookahead<y&&t===f)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=b&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=b-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-y&&(e.match_length=B(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===b&&4096<e.strstart-e.match_start)&&(e.match_length=b-1)),e.prev_length>=b&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-b,n=h._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-b),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=b-1,e.strstart++,n&&(A(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((n=h._tr_tally(e,0,e.window[e.strstart-1]))&&A(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=h._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<b-1?e.strstart:b-1,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}function F(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function N(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new d.Buf16(2*g),this.dyn_dtree=new d.Buf16(2*(2*a+1)),this.bl_tree=new d.Buf16(2*(2*o+1)),E(this.dyn_ltree),E(this.dyn_dtree),E(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new d.Buf16(v+1),this.heap=new d.Buf16(2*s+1),E(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new d.Buf16(2*s+1),E(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function U(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?k:x,e.adler=2===t.wrap?0:1,t.last_flush=f,h._tr_init(t),l):S(e,m)}function P(e){var t,r=U(e);return r===l&&((t=e.state).window_size=2*t.w_size,E(t.head),t.max_lazy_match=u[t.level].max_lazy,t.good_match=u[t.level].good_length,t.nice_match=u[t.level].nice_length,t.max_chain_length=u[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=b-1,t.match_available=0,t.ins_h=0),r}function L(e,t,r,n,i,s){if(!e)return m;var a=1;if(-1===t&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||9<i||r!==_||n<8||15<n||t<0||9<t||s<0||4<s)return S(e,m);8===n&&(n=9);var o=new N;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+b-1)/b),o.window=new d.Buf8(2*o.w_size),o.head=new d.Buf16(o.hash_size),o.prev=new d.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new d.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,P(e)}u=[new F(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(T(e),0===e.lookahead&&t===f)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,A(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-y&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(A(e,!1),e.strm.avail_out),1)}),new F(4,4,8,4,R),new F(4,5,16,8,R),new F(4,6,32,32,R),new F(4,4,16,16,D),new F(8,16,32,32,D),new F(8,16,128,128,D),new F(8,32,128,256,D),new F(32,128,258,1024,D),new F(32,258,258,4096,D)],r.deflateInit=function(e,t){return L(e,t,_,15,8,0)},r.deflateInit2=L,r.deflateReset=P,r.deflateResetKeep=U,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,l):m},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?S(e,m):m;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&4!==t)return S(e,0===e.avail_out?-5:m);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===k)if(2===n.wrap)e.adler=0,I(n,31),I(n,139),I(n,8),n.gzhead?(I(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),I(n,255&n.gzhead.time),I(n,n.gzhead.time>>8&255),I(n,n.gzhead.time>>16&255),I(n,n.gzhead.time>>24&255),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(I(n,255&n.gzhead.extra.length),I(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(I(n,0),I(n,0),I(n,0),I(n,0),I(n,0),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,3),n.status=x);else{var a=_+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=x,O(n,a),0!==n.strstart&&(O(n,e.adler>>>16),O(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending!==n.pending_buf_size));)I(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,I(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,I(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&C(e),n.pending+2<=n.pending_buf_size&&(I(n,255&e.adler),I(n,e.adler>>8&255),e.adler=0,n.status=x)):n.status=x),0!==n.pending){if(C(e),0===e.avail_out)return n.last_flush=-1,l}else if(0===e.avail_in&&z(t)<=z(r)&&4!==t)return S(e,-5);if(666===n.status&&0!==e.avail_in)return S(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==f&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(T(e),0===e.lookahead)){if(t===f)return 1;break}if(e.match_length=0,r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=w){if(T(e),e.lookahead<=w&&t===f)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=b&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+w;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=w-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=b?(r=h._tr_tally(e,1,e.match_length-b),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):u[n.level].func(n,t);if(3!==o&&4!==o||(n.status=666),1===o||3===o)return 0===e.avail_out&&(n.last_flush=-1),l;if(2===o&&(1===t?h._tr_align(n):5!==t&&(h._tr_stored_block(n,0,0,!1),3===t&&(E(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),C(e),0===e.avail_out))return n.last_flush=-1,l}return 4!==t?l:n.wrap<=0?1:(2===n.wrap?(I(n,255&e.adler),I(n,e.adler>>8&255),I(n,e.adler>>16&255),I(n,e.adler>>24&255),I(n,255&e.total_in),I(n,e.total_in>>8&255),I(n,e.total_in>>16&255),I(n,e.total_in>>24&255)):(O(n,e.adler>>>16),O(n,65535&e.adler)),C(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?l:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==k&&69!==t&&73!==t&&91!==t&&103!==t&&t!==x&&666!==t?S(e,m):(e.state=null,t===x?S(e,-3):l):m},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,u,h,f=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==k||r.lookahead)return m;for(1===s&&(e.adler=c(e.adler,t,f,0)),r.wrap=0,f>=r.w_size&&(0===s&&(E(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new d.Buf8(r.w_size),d.arraySet(h,t,f-r.w_size,r.w_size,0),t=h,f=r.w_size),a=e.avail_in,o=e.next_in,u=e.input,e.avail_in=f,e.next_in=0,e.input=t,T(r);r.lookahead>=b;){for(n=r.strstart,i=r.lookahead-(b-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+b-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=b-1,T(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=b-1,r.match_available=0,e.next_in=o,e.input=u,e.avail_in=a,r.wrap=s,l},r.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(e,t,r){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){"use strict";t.exports=function(e,t){var r,n,i,s,a,o,u,h,f,l,d,c,p,m,_,g,v,b,w,y,k,x,S,z,E;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,E=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),u=r.dmax,h=r.wsize,f=r.whave,l=r.wnext,d=r.window,c=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,v=(1<<r.distbits)-1;e:do{p<15&&(c+=z[n++]<<p,p+=8,c+=z[n++]<<p,p+=8),b=m[c&g];t:for(;;){if(c>>>=w=b>>>24,p-=w,0==(w=b>>>16&255))E[s++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=m[(65535&b)+(c&(1<<w)-1)];continue t}if(32&w){r.mode=12;break e}e.msg="invalid literal/length code",r.mode=30;break e}y=65535&b,(w&=15)&&(p<w&&(c+=z[n++]<<p,p+=8),y+=c&(1<<w)-1,c>>>=w,p-=w),p<15&&(c+=z[n++]<<p,p+=8,c+=z[n++]<<p,p+=8),b=_[c&v];r:for(;;){if(c>>>=w=b>>>24,p-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=_[(65535&b)+(c&(1<<w)-1)];continue r}e.msg="invalid distance code",r.mode=30;break e}if(k=65535&b,p<(w&=15)&&(c+=z[n++]<<p,(p+=8)<w&&(c+=z[n++]<<p,p+=8)),u<(k+=c&(1<<w)-1)){e.msg="invalid distance too far back",r.mode=30;break e}if(c>>>=w,p-=w,(w=s-a)<k){if(f<(w=k-w)&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(S=d,(x=0)===l){if(x+=h-w,w<y){for(y-=w;E[s++]=d[x++],--w;);x=s-k,S=E}}else if(l<w){if(x+=h+l-w,(w-=l)<y){for(y-=w;E[s++]=d[x++],--w;);if(x=0,l<y){for(y-=w=l;E[s++]=d[x++],--w;);x=s-k,S=E}}}else if(x+=l-w,w<y){for(y-=w;E[s++]=d[x++],--w;);x=s-k,S=E}for(;2<y;)E[s++]=S[x++],E[s++]=S[x++],E[s++]=S[x++],y-=3;y&&(E[s++]=S[x++],1<y&&(E[s++]=S[x++]))}else{for(x=s-k;E[s++]=E[x++],E[s++]=E[x++],E[s++]=E[x++],2<(y-=3););y&&(E[s++]=E[x++],1<y&&(E[s++]=E[x++]))}break}}break}}while(n<i&&s<o);n-=y=p>>3,c&=(1<<(p-=y<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=c,r.bits=p}},{}],49:[function(e,t,r){"use strict";var I=e("../utils/common"),O=e("./adler32"),B=e("./crc32"),T=e("./inffast"),R=e("./inftrees"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function u(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function h(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=u(e,t))!==N&&(e.state=null),r):U}var f,l,d=!0;function j(e){if(d){var t;for(f=new I.Buf32(512),l=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(R(D,e.lens,0,288,f,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;R(F,e.lens,0,32,l,0,e.work,{bits:5}),d=!1}e.lencode=f,e.lenbits=9,e.distcode=l,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=u,r.inflateResetKeep=a,r.inflateInit=function(e){return h(e,15)},r.inflateInit2=h,r.inflate=function(e,t){var r,n,i,s,a,o,u,h,f,l,d,c,p,m,_,g,v,b,w,y,k,x,S,z,E=0,C=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,u=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,h=r.hold,f=r.bits,l=o,d=u,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(2&r.wrap&&35615===h){C[r.check=0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0),f=h=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",r.mode=30;break}if(f-=4,k=8+(15&(h>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&h?10:12,f=h=0;break;case 2:for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(r.flags=h,8!=(255&r.flags)){e.msg="unknown compression method",r.mode=30;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=30;break}r.head&&(r.head.text=h>>8&1),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=3;case 3:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.head&&(r.head.time=h),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,C[2]=h>>>16&255,C[3]=h>>>24&255,r.check=B(r.check,C,4,0)),f=h=0,r.mode=4;case 4:for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.head&&(r.head.xflags=255&h,r.head.os=h>>8),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=5;case 5:if(1024&r.flags){for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.length=h,r.head&&(r.head.extra_len=h),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,c,k)),512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,r.length-=c),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(c=0;k=n[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(c=0;k=n[s+c++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(h!==(65535&r.check)){e.msg="header crc mismatch",r.mode=30;break}f=h=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}e.adler=r.check=L(h),f=h=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){h>>>=7&f,f-=7&f,r.mode=27;break}for(;f<3;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}switch(r.last=1&h,f-=1,3&(h>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;h>>>=2,f-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}h>>>=2,f-=2;break;case 14:for(h>>>=7&f,f-=7&f;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if((65535&h)!=(h>>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&h,f=h=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(c=r.length){if(o<c&&(c=o),u<c&&(c=u),0===c)break e;I.arraySet(i,n,s,c,a),o-=c,s+=c,u-=c,a+=c,r.length-=c;break}r.mode=12;break;case 17:for(;f<14;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(r.nlen=257+(31&h),h>>>=5,f-=5,r.ndist=1+(31&h),h>>>=5,f-=5,r.ncode=4+(15&h),h>>>=4,f-=4,286<r.nlen||30<r.ndist){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;f<3;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.lens[A[r.have++]]=7&h,h>>>=3,f-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=R(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(E=r.lencode[h&(1<<r.lenbits)-1])>>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(v<16)h>>>=_,f-=_,r.lens[r.have++]=v;else{if(16===v){for(z=_+2;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(h>>>=_,f-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&h),h>>>=2,f-=2}else if(17===v){for(z=_+3;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}f-=_,k=0,c=3+(7&(h>>>=_)),h>>>=3,f-=3}else{for(z=_+7;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}f-=_,k=0,c=11+(127&(h>>>=_)),h>>>=7,f-=7}if(r.have+c>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=R(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=R(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=u){e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,T(e,d),a=e.next_out,i=e.output,u=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,h=r.hold,f=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(E=r.lencode[h&(1<<r.lenbits)-1])>>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(g&&0==(240&g)){for(b=_,w=g,y=v;g=(E=r.lencode[y+((h&(1<<b+w)-1)>>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}h>>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,r.length=v,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.length+=h&(1<<r.extra)-1,h>>>=r.extra,f-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(E=r.distcode[h&(1<<r.distbits)-1])>>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(0==(240&g)){for(b=_,w=g,y=v;g=(E=r.distcode[y+((h&(1<<b+w)-1)>>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}h>>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=v,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.offset+=h&(1<<r.extra)-1,h>>>=r.extra,f-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===u)break e;if(c=d-u,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=i,p=a-r.offset,c=r.length;for(u<c&&(c=u),u-=c,r.length-=c;i[a++]=m[p++],--c;);0===r.length&&(r.mode=21);break;case 26:if(0===u)break e;i[a++]=r.length,u--,r.mode=21;break;case 27:if(r.wrap){for(;f<32;){if(0===o)break e;o--,h|=n[s++]<<f,f+=8}if(d-=u,e.total_out+=d,r.total+=d,d&&(e.adler=r.check=r.flags?B(r.check,i,d,a-d):O(r.check,i,d,a-d)),d=u,(r.flags?h:L(h))!==r.check){e.msg="incorrect data check",r.mode=30;break}f=h=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(h!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=30;break}f=h=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,(r.wsize||d!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,d-e.avail_out)?(r.mode=31,-4):(l-=e.avail_in,d-=e.avail_out,e.total_in+=l,e.total_out+=d,r.total+=d,r.wrap&&d&&(e.adler=r.check=r.flags?B(r.check,i,d,e.next_out-d):O(r.check,i,d,e.next_out-d)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==l&&0===d||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(e,t,r){"use strict";var D=e("../utils/common"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var u,h,f,l,d,c,p,m,_,g=o.bits,v=0,b=0,w=0,y=0,k=0,x=0,S=0,z=0,E=0,C=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),T=null,R=0;for(v=0;v<=15;v++)O[v]=0;for(b=0;b<n;b++)O[t[r+b]]++;for(k=g,y=15;1<=y&&0===O[y];y--);if(y<k&&(k=y),0===y)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(w=1;w<y&&0===O[w];w++);for(k<w&&(k=w),v=z=1;v<=15;v++)if(z<<=1,(z-=O[v])<0)return-1;if(0<z&&(0===e||1!==y))return-1;for(B[1]=0,v=1;v<15;v++)B[v+1]=B[v]+O[v];for(b=0;b<n;b++)0!==t[r+b]&&(a[B[t[r+b]]++]=b);if(c=0===e?(A=T=a,19):1===e?(A=F,I-=257,T=N,R-=257,256):(A=U,T=P,-1),v=w,d=s,S=b=C=0,f=-1,l=(E=1<<(x=k))-1,1===e&&852<E||2===e&&592<E)return 1;for(;;){for(p=v-S,_=a[b]<c?(m=0,a[b]):a[b]>c?(m=T[R+a[b]],A[I+a[b]]):(m=96,0),u=1<<v-S,w=h=1<<x;i[d+(C>>S)+(h-=u)]=p<<24|m<<16|_|0,0!==h;);for(u=1<<v-1;C&u;)u>>=1;if(0!==u?(C&=u-1,C+=u):C=0,b++,0==--O[v]){if(v===y)break;v=t[r+a[b]]}if(k<v&&(C&l)!==f){for(0===S&&(S=k),d+=w,z=1<<(x=v-S);x+S<y&&!((z-=O[x+S])<=0);)x++,z<<=1;if(E+=1<<x,1===e&&852<E||2===e&&592<E)return 1;i[f=C&l]=k<<24|x<<16|d-s|0}}return 0!==C&&(i[d+C]=v-S<<24|64<<16|0),o.bits=k,0}},{"../utils/common":41}],51:[function(e,t,r){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(e,t,r){"use strict";var o=e("../utils/common");function n(e){for(var t=e.length;0<=--t;)e[t]=0}var _=15,i=16,u=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],h=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],f=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=new Array(576);n(l);var d=new Array(60);n(d);var c=new Array(512);n(c);var p=new Array(256);n(p);var m=new Array(29);n(m);var g,v,b,w=new Array(30);function y(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function s(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function k(e){return e<256?c[e]:c[256+(e>>>7)]}function x(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function S(e,t,r){e.bi_valid>i-r?(e.bi_buf|=t<<e.bi_valid&65535,x(e,e.bi_buf),e.bi_buf=t>>i-e.bi_valid,e.bi_valid+=r-i):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function z(e,t,r){S(e,r[2*t],r[2*t+1])}function E(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function C(e,t,r){var n,i,s=new Array(_+1),a=0;for(n=1;n<=_;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=E(s[o]++,o))}}function A(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function I(e){8<e.bi_valid?x(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function O(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function B(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&O(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!O(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function T(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?z(e,i,t):(z(e,(s=p[i])+256+1,t),0!==(a=u[s])&&S(e,i-=m[s],a),z(e,s=k(--n),r),0!==(a=h[s])&&S(e,n-=w[s],a)),o<e.last_lit;);z(e,256,t)}function R(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,u=t.stat_desc.elems,h=-1;for(e.heap_len=0,e.heap_max=573,r=0;r<u;r++)0!==s[2*r]?(e.heap[++e.heap_len]=h=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=h<2?++h:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=h,r=e.heap_len>>1;1<=r;r--)B(e,s,r);for(i=u;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,B(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,u=t.dyn_tree,h=t.max_code,f=t.stat_desc.static_tree,l=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=_;s++)e.bl_count[s]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)p<(s=u[2*u[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),u[2*n+1]=s,h<n||(e.bl_count[s]++,a=0,c<=n&&(a=d[n-c]),o=u[2*n],e.opt_len+=o*(s+a),l&&(e.static_len+=o*(f[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)h<(i=e.heap[--r])||(u[2*i+1]!==s&&(e.opt_len+=(s-u[2*i+1])*u[2*i],u[2*i+1]=s),n--)}}(e,t),C(s,h,e.bl_count)}function D(e,t,r){var n,i,s=-1,a=t[1],o=0,u=7,h=4;for(0===a&&(u=138,h=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<u&&i===a||(o<h?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[32]++):o<=10?e.bl_tree[34]++:e.bl_tree[36]++,s=i,h=(o=0)===a?(u=138,3):i===a?(u=6,3):(u=7,4))}function F(e,t,r){var n,i,s=-1,a=t[1],o=0,u=7,h=4;for(0===a&&(u=138,h=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<u&&i===a)){if(o<h)for(;z(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(z(e,i,e.bl_tree),o--),z(e,16,e.bl_tree),S(e,o-3,2)):o<=10?(z(e,17,e.bl_tree),S(e,o-3,3)):(z(e,18,e.bl_tree),S(e,o-11,7));s=i,h=(o=0)===a?(u=138,3):i===a?(u=6,3):(u=7,4)}}n(w);var N=!1;function U(e,t,r,n){var i,s,a;S(e,0+(n?1:0),3),s=t,a=r,I(i=e),x(i,a),x(i,~a),o.arraySet(i.pending_buf,i.window,s,a,i.pending),i.pending+=a}r._tr_init=function(e){N||(function(){var e,t,r,n,i,s=new Array(_+1);for(n=r=0;n<28;n++)for(m[n]=r,e=0;e<1<<u[n];e++)p[r++]=n;for(p[r-1]=n,n=i=0;n<16;n++)for(w[n]=i,e=0;e<1<<h[n];e++)c[i++]=n;for(i>>=7;n<30;n++)for(w[n]=i<<7,e=0;e<1<<h[n]-7;e++)c[256+i++]=n;for(t=0;t<=_;t++)s[t]=0;for(e=0;e<=143;)l[2*e+1]=8,e++,s[8]++;for(;e<=255;)l[2*e+1]=9,e++,s[9]++;for(;e<=279;)l[2*e+1]=7,e++,s[7]++;for(;e<=287;)l[2*e+1]=8,e++,s[8]++;for(C(l,287,s),e=0;e<30;e++)d[2*e+1]=5,d[2*e]=E(e,5);g=new y(l,u,257,286,_),v=new y(d,h,0,30,_),b=new y(new Array(0),a,0,19,7)}(),N=!0),e.l_desc=new s(e.dyn_ltree,g),e.d_desc=new s(e.dyn_dtree,v),e.bl_desc=new s(e.bl_tree,b),e.bi_buf=0,e.bi_valid=0,A(e)},r._tr_stored_block=U,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),R(e,e.l_desc),R(e,e.d_desc),a=function(e){var t;for(D(e,e.dyn_ltree,e.l_desc.max_code),D(e,e.dyn_dtree,e.d_desc.max_code),R(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*f[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?U(e,t,r,n):4===e.strategy||s===i?(S(e,2+(n?1:0),3),T(e,l,d)):(S(e,4+(n?1:0),3),function(e,t,r,n){var i;for(S(e,t-257,5),S(e,r-1,5),S(e,n-4,4),i=0;i<n;i++)S(e,e.bl_tree[2*f[i]+1],3);F(e,e.dyn_ltree,t-1),F(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),T(e,e.dyn_ltree,e.dyn_dtree)),A(e),n&&I(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*k(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){var t;S(e,2,3),z(e,256,l),16===(t=e).bi_valid?(x(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}},{"../utils/common":41}],53:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){"use strict";t.exports="function"==typeof setImmediate?setImmediate:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}},{}]},{},[10])(10)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13), __webpack_require__(23).Buffer, __webpack_require__(29).setImmediate)) /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(236); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 17 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _OOP__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3); /*** * @augments AElement * @augments SVGGraphicsElement * @constructor */ function AElementNS() { _AElement__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].call(this); } _AElement__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].prototype.afterAttached = function () { if (this.isDescendantOf(document.body)) return Promise.resolve(); var attachHookElt = this.$attachhook || this.querySelector('.absol-attachhook'); if (!attachHookElt) { var constructor; if (this.tagName.toLowerCase() === 'svg' || this.getBBox) { attachHookElt = document.createElementNS('http://www.w3.org/2000/svg', 'image'); attachHookElt.setAttributeNS(null, 'href',''); constructor = AElementNS; } else { attachHookElt = document.createElement('img'); attachHookElt.src = ''; constructor = AElementNS; } attachHookElt.classList.add('absol-attachhook'); Object.assign(attachHookElt, constructor.prototype); constructor.call(attachHookElt); attachHookElt.defineEvent('attached'); this.$attachhook = attachHookElt; this.$attachhook.on('error', function (event) { if (this.isDescendantOf(document.body)) this.emit('attached', event, this); }); this.appendChild(attachHookElt); } return new Promise(function (rs) { attachHookElt.once('attached', rs); }); }; _OOP__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].mixClass(AElementNS, _AElement__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]); AElementNS.prototype.attr = function () { if (arguments.length == 1) { if (typeof (arguments[0]) == 'string') { if (this._azar_extendAttributes[arguments[0]]) { return this._azar_extendAttributes[arguments[0]].get.call(this); } else return this.getAttributeNS(null, arguments[0]); } else { for (var key in arguments[0]) { this.attr(key, arguments[0][key]); } } } else { if (arguments.length == 2) { if (arguments[1] === null || arguments[1] === undefined) { if (this._azar_extendAttributes[arguments[0]]) { this._azar_extendAttributes[arguments[0]].remove.call(this, arguments[1]); } else this.removeAttributeNS(null, arguments[0]); } else { if (this._azar_extendAttributes[arguments[0]]) { this._azar_extendAttributes[arguments[0]].set.call(this, arguments[1]); } else { this.setAttributeNS(null, arguments[0], arguments[1]); } } } } return this; }; /* harmony default export */ __webpack_exports__["a"] = (AElementNS); /***/ }), /* 18 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var _HTML5_OOP__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3); /*** * @extends EventEmitter * @constructor */ function FlagManager() { _HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"].call(this); this.flag = {}; this.readSetting(); } _HTML5_OOP__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].mixClass(FlagManager, _HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__[/* default */ "b"]); FlagManager.prototype.STORE_KEY = "ABSOL_FLAG" FlagManager.prototype.readSetting = function () { var flagText = localStorage.getItem(this.STORE_KEY) || '{}'; var newFlag = {}; try { newFlag = JSON.parse(flagText); } catch (err) { } this.applyFlag(newFlag); }; FlagManager.prototype.applyFlag = function (newFlag, save) { var changed = []; Object.keys(Object.assign({}, this.flag, newFlag)).forEach(function (key) { if (key in window) { if (key in newFlag) { if (window[key] !== newFlag[key]) { window[key] = newFlag[key]; changed.push(key); } } else { changed.push(key); delete window[key]; } } else { if (key in newFlag) { if (window[key] !== newFlag[key]) { window[key] = newFlag[key]; changed.push(key); } } } }); this.flag = newFlag; if (save) this.saveSetting(); if (changed.length > 0) { this.emit('change', { type: 'change', target: this, keys: changed }) } }; FlagManager.prototype.saveSetting = function () { localStorage.setItem(this.STORE_KEY, JSON.stringify(this.flag)); }; /*** * * @param {string} key * @param {boolean=} value */ FlagManager.prototype.add = function (key, value) { if (!key || (typeof (key) != 'string')) return; if (key in this.flag) return; if (typeof (value) != "boolean") { value = !!window[key]; } this.flag[key] = value; window[key] = value; this.saveSetting(); this.emit('change', { type: 'change', target: this, keys: [key] }); }; FlagManager.prototype.set = function (key, value) { if (!key || (typeof (key) != 'string')) return; if (typeof (value) != "boolean") { value = !!window[key]; } var changed = false; this.flag[key] = value; if (window[key] !== value) { changed = true; } this.saveSetting(); if (changed) { this.emit('change', { type: 'change', target: this, keys: [key] }); } }; FlagManager.prototype.remove = function (key) { if (key in this.flag) { delete window[key]; delete this.flag[key]; this.emit('change', { type: 'change', target: this, keys: [key] }); } }; /* harmony default export */ __webpack_exports__["a"] = (new FlagManager()); /***/ }), /* 19 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _AElementNS__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); /* harmony default export */ __webpack_exports__["a"] = (_AElementNS__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]); /***/ }), /* 20 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; function JSPath(props) { this.path = props.path; } /** * * @param {Element} element * @returns {Boolean} */ JSPath.prototype.match = function (element, query) { if (query.id) { if (!element.getAttribute || element.getAttribute('id') != query.id) return false; } if (query.tagName) { var matchTag = false; if (element._azar_extendTags && element._azar_extendTags[query.tagName]) matchTag = true; matchTag = matchTag || ((element.tagName || '').toUpperCase() == query.tagName.toUpperCase()); if (!matchTag) return false; } if (query.classList) for (var i = 0; i < query.classList.length; ++i) { if (!element.classList || !element.classList.contains(query.classList[i])) return false; } if (query.attributes) { for (var key in query.attributes) { var value; if (element.attr) { value = element.attr(key); if (value != query.attributes[key]) return false; } else if (element.getAttribute) { value = element.getAttribute(key); if (value != query.attributes[key]) return false; } } } return true; }; /** * Warning : still fail in some testcase */ JSPath.prototype.findFirst = function (root, onFound) { var queue = [{ e: root, i: 0 }]; var current; while (queue.length > 0) { current = queue.shift(); var isMathed = false; var currentElt = current.e; var currentI = current.i; if (this.match(currentElt, this.path[currentI])) { if (this.path[currentI].childCombinate) { var trackI = currentI; var trackElement = currentElt; var isTrackMatch = true; while (isTrackMatch && trackI > 0 && this.path[trackI].childCombinate) { if (!trackElement.parentNode || !this.match(trackElement.parentNode, this.path[trackI - 1])) { isTrackMatch = false; } else { trackElement = trackElement.parentNode; trackI--; } } if (isTrackMatch) isMathed = true; } else { isMathed = true; } } if (isMathed && currentI + 1 == this.path.length) { if (!onFound || (onFound && onFound(currentElt))) return currentElt; } if (currentElt.childNodes) { var l = currentElt.childNodes.length; for (var i = 0; i < l; ++i) { if (currentElt.childNodes[i].tagName) queue.push({ e: currentElt.childNodes[i], i: currentI + (isMathed && currentI + 1 < this.path.length ? 1 : 0) }); } } } return undefined; }; JSPath.prototype.findAll = function (root, onFound) { var res = []; var queue = [{ e: root, i: 0 }]; var current; while (queue.length > 0) { current = queue.shift(); var isMathed = false; var currentElt = current.e; var currentI = current.i; if (this.match(currentElt, this.path[currentI])) { if (this.path[currentI].childCombinate) { var trackI = currentI; var trackElement = currentElt; var isTrackMatch = true; while (isTrackMatch && trackI > 0 && this.path[trackI].childCombinate) { if (!trackElement.parentNode || !this.match(trackElement.parentNode, this.path[trackI - 1])) { isTrackMatch = false; } else { trackElement = trackElement.parentNode; trackI--; } } if (isTrackMatch) isMathed = true; } else { isMathed = true; } } if (isMathed && currentI + 1 == this.path.length) { if (!onFound || (onFound && onFound(currentElt))) res.push(currentElt); } if (currentElt.childNodes) { var l = currentElt.childNodes.length; for (var i = 0; i < l; ++i) { if (currentElt.childNodes[i].tagName) queue.push({ e: currentElt.childNodes[i], i: currentI + (isMathed && currentI + 1 < this.path.length ? 1 : 0) }); } } } return res; }; var identRegex = /[a-zA-Z0-9\-_]+/; var stringRegex = /"(([^"\\]*|(\\.))*)"/; var classRegex = new RegExp('\\.' + identRegex.source); var idRegex = new RegExp('#' + identRegex.source); var booleanRegex = /true|false/; var valueRegex = new RegExp(stringRegex.source + '|' + booleanRegex.source); var attributeRegex = new RegExp('\\[\\s*(' + identRegex.source + ')\\s*(=\\s*(' + valueRegex.source + '))\\]'); var queryRegex = new RegExp([ '(', identRegex.source, '|', attributeRegex.source, '|', classRegex.source, '|', idRegex.source, ')+' ].join('')); JSPath.__tagRegex = new RegExp(queryRegex.source + '|\\>', 'g'); JSPath.__tagNameRegex = new RegExp('^' + identRegex.source, 'i'); JSPath.__classRegex = new RegExp(classRegex.source, 'g'); JSPath.__idRegex = new RegExp(idRegex.source, 'i'); JSPath.__attrRegex = new RegExp(attributeRegex.source, 'g'); JSPath.parseQuery = function (s) { var tag = {}; s = s.replace(JSPath.__attrRegex, function (full, name, assign, jsonTextValue) { tag.attributes = tag.attributes || {}; if (assign) { tag.attributes[name] = JSON.parse(jsonTextValue); } else tag.attributes[name] = true; return ''; }); var classList = s.match(this.__classRegex); var idList = s.match(this.__idRegex); var tagList = s.match(this.__tagNameRegex); if (idList && idList.length > 0) { tag.id = idList[0].substring(1); } if (tagList && tagList.length > 0) { tag.tagName = tagList[0].trim(); } if (classList && classList.length > 0) { tag.classList = classList.map(function (s) { return s.substring(1) }); } return tag; }; /** * @param {String} text * @returns {JSPath} */ JSPath.compileJSPath = function (text) { var tagTexts = text.match(this.__tagRegex) || ['']; var path = []; var childCombinate = false; for (var i = 0; i < tagTexts.length; ++i) { var s = tagTexts[i]; if (s == '>') { childCombinate = true; } else { var tag = this.parseQuery(s); tag.childCombinate = childCombinate; path.push(tag); childCombinate = false; } } return new JSPath({ path: path }); }; /* harmony default export */ __webpack_exports__["a"] = (JSPath); /***/ }), /* 21 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); var _ = _ACore__WEBPACK_IMPORTED_MODULE_0__[/* default */ "c"]._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_0__[/* default */ "c"].$; var originSetTimeout = setTimeout; var originClearTimeout = clearTimeout; var originSetInterval = setInterval; var originClearInterval = clearInterval; var pendingTimeout = 0; var pendingInterval = 0; var timeoutDict = {}; var intervalDict = {}; function DebugTask() { var res = _({ class: 'absol-debug-task', child: [ { child: [{ tag: 'span', class: 'absol-debug-task-name', child: { text: 'settimeout ' } }, { tag: 'span', class: ['absol-debug-task-value', 'settimeout'], child: { text: '0' } }] }, { child: [{ tag: 'span', class: 'absol-debug-task-name', child: { text: 'setintervel ' } }, { tag: 'span', class: ['absol-debug-task-value', 'setinterval'], child: { text: '0' } }, ] }, { child: [{ tag: 'span', class: 'absol-debug-task-name', child: { text: 'Work ' } }, { tag: 'span', class: ['absol-debug-task-value', 'work'], child: { text: '0%' } }, ] } ] }); res._timeout = 0; res._interval = 0; res._work = 0; res.$setTimeOutValue = $('.absol-debug-task-value.settimeout', res); res.$setIntervalValue = $('.absol-debug-task-value.setinterval', res); res.$setWorkValue = $('.absol-debug-task-value.work', res); return res; } DebugTask.property = {}; DebugTask.property.timeout = { set: function (value) { this._timeout = value; this.$setTimeOutValue.innerHTML = value + ''; }, get: function () { return this._timeout; } }; DebugTask.property.interval = { set: function (value) { this._interval = value; this.$setIntervalValue.innerHTML = value + ''; }, get: function () { return this._interval; } }; DebugTask.property.work = { set: function (value) { this._work = value; value = (value * 100).toFixed(1); this.$setWorkValue.innerHTML = value + '%'; }, get: function () { return this._work; } }; DebugTask.start = function () { if (DebugTask.started) return; if (!DebugTask.$view) { DebugTask.$view = _('debugtask'); } var times = []; originSetInterval(function(){ var now = performance.now(); while (times.length > 0 && times[0].end < now - 2000) { times.shift(); } if (times.length == 0) DebugTask.$view.work = 0; },3000); global.setTimeout = function () { var args = Array.prototype.map.call(arguments, function (x) { return x; }); var originCallback = arguments[0]; if (typeof originCallback == 'undefined') return; if (typeof originCallback == 'string') { originCallback = new Function(originCallback); } args[0] = function () { var ret; try { var now = performance.now(); while (times.length > 0 && times[0].end < now - 1000) { times.shift(); } ret = originCallback.apply(null, arguments); var now1 = performance.now(); var long = now1 - now; times.push({ long:long, start:now, end:now1 }); var sTime = 0; for (var i = 0; i< times.length; ++i ){ sTime+= times[i].long; } DebugTask.$view.work = sTime/(Math.max(now1 - times[0].start, 1000)); } catch (e) { console.error(e); } if (timeoutDict[timeoutId]) { pendingTimeout--; delete timeoutDict[timeoutId]; DebugTask.$view.timeout = pendingTimeout; } return ret; } var timeoutId = originSetTimeout.apply(global, args) pendingTimeout++; timeoutDict[timeoutId] = true; DebugTask.$view.timeout = pendingTimeout; return timeoutId; } global.clearTimeout = function (timeoutId) { if (timeoutDict[timeoutId]) { pendingTimeout--; delete timeoutDict[timeoutId]; DebugTask.$view.timeout = pendingTimeout; } return originClearTimeout.apply(global, arguments); }; global.setInterval = function () { var args = Array.prototype.map.call(arguments, function (x) { return x; }); var originCallback = arguments[0]; if (typeof originCallback == 'undefined') return; if (typeof originCallback == 'string') { originCallback = new Function(originCallback); } args[0] = function () { var ret; try { var now = performance.now(); while (times.length > 0 && times[0].end < now - 1000) { times.shift(); } ret = originCallback.apply(null, arguments); var now1 = performance.now(); var long = now1 - now; times.push({ long:long, start:now, end:now1 }); var sTime = 0; for (var i = 0; i< times.length; ++i ){ sTime+= times[i].long; } DebugTask.$view.work = sTime/(Math.max(now1 - times[0].start, 1000)); } catch (e) { console.error(e); } return ret; } var intervalId = originSetInterval.apply(global, args) pendingInterval++; intervalDict[intervalId] = true; DebugTask.$view.interval = pendingInterval; return intervalId; } global.clearInterval = function (intervalId) { var args = Array.prototype.map.call(arguments, function (x) { return x; }); if (intervalDict[intervalId]) { pendingInterval--; delete intervalDict[intervalId]; DebugTask.$view.interval = pendingInterval; } return originClearInterval.apply(global, args); }; absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__[/* default */ "b"].documentReady.then(function () { DebugTask.$view.addTo(document.body); }); }; _ACore__WEBPACK_IMPORTED_MODULE_0__[/* default */ "c"].install('debugtask', DebugTask); /* harmony default export */ __webpack_exports__["a"] = (DebugTask); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13))) /***/ }), /* 22 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXTERNAL MODULE: ./node_modules/absol/src/JSMaker/TemplateString.js var TemplateString = __webpack_require__(12); // CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/templates/document.tpl /* harmony default export */ var templates_document = ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<w:document\r\n xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"\r\n xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\"\r\n xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\r\n xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\"\r\n xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"\r\n xmlns:ns6=\"http://schemas.openxmlformats.org/schemaLibrary/2006/main\"\r\n xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"\r\n xmlns:ns8=\"http://schemas.openxmlformats.org/drawingml/2006/chartDrawing\"\r\n xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\"\r\n xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"\r\n xmlns:ns11=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\"\r\n xmlns:dsp=\"http://schemas.microsoft.com/office/drawing/2008/diagram\"\r\n xmlns:ns13=\"urn:schemas-microsoft-com:office:excel\"\r\n xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n xmlns:v=\"urn:schemas-microsoft-com:vml\"\r\n xmlns:w10=\"urn:schemas-microsoft-com:office:word\"\r\n xmlns:ns17=\"urn:schemas-microsoft-com:office:powerpoint\"\r\n xmlns:odx=\"http://opendope.org/xpaths\"\r\n xmlns:odc=\"http://opendope.org/conditions\"\r\n xmlns:odq=\"http://opendope.org/questions\"\r\n xmlns:odi=\"http://opendope.org/components\"\r\n xmlns:odgm=\"http://opendope.org/SmartArt/DataHierarchy\"\r\n xmlns:ns24=\"http://schemas.openxmlformats.org/officeDocument/2006/bibliography\"\r\n xmlns:ns25=\"http://schemas.openxmlformats.org/drawingml/2006/compatibility\"\r\n xmlns:ns26=\"http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas\">\r\n <w:body>\r\n <w:altChunk r:id=\"htmlChunk\" />\r\n <w:sectPr>\r\n <w:pgSz w:w=\"{{ pageSetting.width }}\" w:h=\"{{ pageSetting.height }}\" w:orient=\"{{ pageSetting.orient }}\" />\r\n <w:pgMar w:top=\"{{ pageSetting.margins.top }}\"\r\n w:right=\"{{ pageSetting.margins.right }}\"\r\n w:bottom=\"{{ pageSetting.margins.bottom }}\"\r\n w:left=\"{{ pageSetting.margins.left }}\"\r\n w:header=\"{{ pageSetting.margins.header }}\"\r\n w:footer=\"{{ pageSetting.margins.footer }}\"\r\n w:gutter=\"{{ pageSetting.margins.gutter }}\"/>\r\n </w:sectPr>\r\n </w:body>\r\n</w:document>\r\n"); // CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/templates/mht_document.tpl /* harmony default export */ var mht_document = ("MIME-Version: 1.0\r\nContent-Type: multipart/related;\r\n type=\"text/html\";\r\n boundary=\"----=mhtDocumentPart\"\r\n\r\n\r\n------=mhtDocumentPart\r\nContent-Type: text/html;\r\n charset=\"utf-8\"\r\nContent-Transfer-Encoding: quoted-printable\r\nContent-Location: file:///C:/fake/document.html\r\n\r\n{{ htmlSource }}\r\n\r\n{{ contentParts }}\r\n\r\n------=mhtDocumentPart--\r\n"); // CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/templates/mht_part.tpl /* harmony default export */ var mht_part = ("------=mhtDocumentPart\r\nContent-Type: {{ contentType }}\r\nContent-Transfer-Encoding: {{ contentEncoding }}\r\nContent-Location: {{ contentLocation }}\r\n\r\n{{ encodedContent }}\r\n"); // CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/DocxTpl.js /* harmony default export */ var DocxTpl = __webpack_exports__["a"] = ({ document: new Function('pageSetting', 'return ' + TemplateString["a" /* default */].parse(templates_document).toJSCode()), mht_document: new Function('htmlSource', 'contentParts', 'return ' + TemplateString["a" /* default */].parse(mht_document).toJSCode()), mht_part: new Function('contentType', 'contentEncoding', 'contentLocation', 'encodedContent', 'return ' + TemplateString["a" /* default */].parse(mht_part).toJSCode()) }); /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh <http://feross.org> * @license MIT */ /* eslint-disable no-proto */ var base64 = __webpack_require__(51) var ieee754 = __webpack_require__(52) var isArray = __webpack_require__(53) exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer exports.INSPECT_MAX_BYTES = 50 /** * If `Buffer.TYPED_ARRAY_SUPPORT`: * === true Use Uint8Array implementation (fastest) * === false Use Object implementation (most compatible, even IE6) * * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, * Opera 11.6+, iOS 4.2+. * * Due to various browser bugs, sometimes the Object implementation will be used even * when the browser supports typed arrays. * * Note: * * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. * * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. * * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of * incorrect length in some situations. * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they * get the Object implementation, which is slower but behaves correctly. */ Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport() /* * Export kMaxLength after typed array support is determined. */ exports.kMaxLength = kMaxLength() function typedArraySupport () { try { var arr = new Uint8Array(1) arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} return arr.foo() === 42 && // typed array instances can be augmented typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` } catch (e) { return false } } function kMaxLength () { return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff } function createBuffer (that, length) { if (kMaxLength() < length) { throw new RangeError('Invalid typed array length') } if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance that = new Uint8Array(length) that.__proto__ = Buffer.prototype } else { // Fallback: Return an object instance of the Buffer class if (that === null) { that = new Buffer(length) } that.length = length } return that } /** * The Buffer constructor returns instances of `Uint8Array` that have their * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of * `Uint8Array`, so the returned instances will have all the node `Buffer` methods * and the `Uint8Array` methods. Square bracket notation works as expected -- it * returns a single octet. * * The `Uint8Array` prototype remains unmodified. */ function Buffer (arg, encodingOrOffset, length) { if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { return new Buffer(arg, encodingOrOffset, length) } // Common case. if (typeof arg === 'number') { if (typeof encodingOrOffset === 'string') { throw new Error( 'If encoding is specified then the first argument must be a string' ) } return allocUnsafe(this, arg) } return from(this, arg, encodingOrOffset, length) } Buffer.poolSize = 8192 // not used by this implementation // TODO: Legacy, not needed anymore. Remove in next major version. Buffer._augment = function (arr) { arr.__proto__ = Buffer.prototype return arr } function from (that, value, encodingOrOffset, length) { if (typeof value === 'number') { throw new TypeError('"value" argument must not be a number') } if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { return fromArrayBuffer(that, value, encodingOrOffset, length) } if (typeof value === 'string') { return fromString(that, value, encodingOrOffset) } return fromObject(that, value) } /** * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError * if value is a number. * Buffer.from(str[, encoding]) * Buffer.from(array) * Buffer.from(buffer) * Buffer.from(arrayBuffer[, byteOffset[, length]]) **/ Buffer.from = function (value, encodingOrOffset, length) { return from(null, value, encodingOrOffset, length) } if (Buffer.TYPED_ARRAY_SUPPORT) { Buffer.prototype.__proto__ = Uint8Array.prototype Buffer.__proto__ = Uint8Array if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) { // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 Object.defineProperty(Buffer, Symbol.species, { value: null, configurable: true }) } } function assertSize (size) { if (typeof size !== 'number') { throw new TypeError('"size" argument must be a number') } else if (size < 0) { throw new RangeError('"size" argument must not be negative') } } function alloc (that, size, fill, encoding) { assertSize(size) if (size <= 0) { return createBuffer(that, size) } if (fill !== undefined) { // Only pay attention to encoding if it's a string. This // prevents accidentally sending in a number that would // be interpretted as a start offset. return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill) } return createBuffer(that, size) } /** * Creates a new filled Buffer instance. * alloc(size[, fill[, encoding]]) **/ Buffer.alloc = function (size, fill, encoding) { return alloc(null, size, fill, encoding) } function allocUnsafe (that, size) { assertSize(size) that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) if (!Buffer.TYPED_ARRAY_SUPPORT) { for (var i = 0; i < size; ++i) { that[i] = 0 } } return that } /** * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. * */ Buffer.allocUnsafe = function (size) { return allocUnsafe(null, size) } /** * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. */ Buffer.allocUnsafeSlow = function (size) { return allocUnsafe(null, size) } function fromString (that, string, encoding) { if (typeof encoding !== 'string' || encoding === '') { encoding = 'utf8' } if (!Buffer.isEncoding(encoding)) { throw new TypeError('"encoding" must be a valid string encoding') } var length = byteLength(string, encoding) | 0 that = createBuffer(that, length) var actual = that.write(string, encoding) if (actual !== length) { // Writing a hex string, for example, that contains invalid characters will // cause everything after the first invalid character to be ignored. (e.g. // 'abxxcd' will be treated as 'ab') that = that.slice(0, actual) } return that } function fromArrayLike (that, array) { var length = array.length < 0 ? 0 : checked(array.length) | 0 that = createBuffer(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } function fromArrayBuffer (that, array, byteOffset, length) { array.byteLength // this throws if `array` is not a valid ArrayBuffer if (byteOffset < 0 || array.byteLength < byteOffset) { throw new RangeError('\'offset\' is out of bounds') } if (array.byteLength < byteOffset + (length || 0)) { throw new RangeError('\'length\' is out of bounds') } if (byteOffset === undefined && length === undefined) { array = new Uint8Array(array) } else if (length === undefined) { array = new Uint8Array(array, byteOffset) } else { array = new Uint8Array(array, byteOffset, length) } if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance that = array that.__proto__ = Buffer.prototype } else { // Fallback: Return an object instance of the Buffer class that = fromArrayLike(that, array) } return that } function fromObject (that, obj) { if (Buffer.isBuffer(obj)) { var len = checked(obj.length) | 0 that = createBuffer(that, len) if (that.length === 0) { return that } obj.copy(that, 0, 0, len) return that } if (obj) { if ((typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer) || 'length' in obj) { if (typeof obj.length !== 'number' || isnan(obj.length)) { return createBuffer(that, 0) } return fromArrayLike(that, obj) } if (obj.type === 'Buffer' && isArray(obj.data)) { return fromArrayLike(that, obj.data) } } throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') } function checked (length) { // Note: cannot use `length < kMaxLength()` here because that fails when // length is NaN (which is otherwise coerced to zero.) if (length >= kMaxLength()) { throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes') } return length | 0 } function SlowBuffer (length) { if (+length != length) { // eslint-disable-line eqeqeq length = 0 } return Buffer.alloc(+length) } Buffer.isBuffer = function isBuffer (b) { return !!(b != null && b._isBuffer) } Buffer.compare = function compare (a, b) { if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { throw new TypeError('Arguments must be Buffers') } if (a === b) return 0 var x = a.length var y = b.length for (var i = 0, len = Math.min(x, y); i < len; ++i) { if (a[i] !== b[i]) { x = a[i] y = b[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } Buffer.isEncoding = function isEncoding (encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'latin1': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true default: return false } } Buffer.concat = function concat (list, length) { if (!isArray(list)) { throw new TypeError('"list" argument must be an Array of Buffers') } if (list.length === 0) { return Buffer.alloc(0) } var i if (length === undefined) { length = 0 for (i = 0; i < list.length; ++i) { length += list[i].length } } var buffer = Buffer.allocUnsafe(length) var pos = 0 for (i = 0; i < list.length; ++i) { var buf = list[i] if (!Buffer.isBuffer(buf)) { throw new TypeError('"list" argument must be an Array of Buffers') } buf.copy(buffer, pos) pos += buf.length } return buffer } function byteLength (string, encoding) { if (Buffer.isBuffer(string)) { return string.length } if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { return string.byteLength } if (typeof string !== 'string') { string = '' + string } var len = string.length if (len === 0) return 0 // Use a for loop to avoid recursion var loweredCase = false for (;;) { switch (encoding) { case 'ascii': case 'latin1': case 'binary': return len case 'utf8': case 'utf-8': case undefined: return utf8ToBytes(string).length case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return len * 2 case 'hex': return len >>> 1 case 'base64': return base64ToBytes(string).length default: if (loweredCase) return utf8ToBytes(string).length // assume utf8 encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.byteLength = byteLength function slowToString (encoding, start, end) { var loweredCase = false // No need to verify that "this.length <= MAX_UINT32" since it's a read-only // property of a typed array. // This behaves neither like String nor Uint8Array in that we set start/end // to their upper/lower bounds if the value passed is out of range. // undefined is handled specially as per ECMA-262 6th Edition, // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. if (start === undefined || start < 0) { start = 0 } // Return early if start > this.length. Done here to prevent potential uint32 // coercion fail below. if (start > this.length) { return '' } if (end === undefined || end > this.length) { end = this.length } if (end <= 0) { return '' } // Force coersion to uint32. This will also coerce falsey/NaN values to 0. end >>>= 0 start >>>= 0 if (end <= start) { return '' } if (!encoding) encoding = 'utf8' while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end) case 'utf8': case 'utf-8': return utf8Slice(this, start, end) case 'ascii': return asciiSlice(this, start, end) case 'latin1': case 'binary': return latin1Slice(this, start, end) case 'base64': return base64Slice(this, start, end) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = (encoding + '').toLowerCase() loweredCase = true } } } // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect // Buffer instances. Buffer.prototype._isBuffer = true function swap (b, n, m) { var i = b[n] b[n] = b[m] b[m] = i } Buffer.prototype.swap16 = function swap16 () { var len = this.length if (len % 2 !== 0) { throw new RangeError('Buffer size must be a multiple of 16-bits') } for (var i = 0; i < len; i += 2) { swap(this, i, i + 1) } return this } Buffer.prototype.swap32 = function swap32 () { var len = this.length if (len % 4 !== 0) { throw new RangeError('Buffer size must be a multiple of 32-bits') } for (var i = 0; i < len; i += 4) { swap(this, i, i + 3) swap(this, i + 1, i + 2) } return this } Buffer.prototype.swap64 = function swap64 () { var len = this.length if (len % 8 !== 0) { throw new RangeError('Buffer size must be a multiple of 64-bits') } for (var i = 0; i < len; i += 8) { swap(this, i, i + 7) swap(this, i + 1, i + 6) swap(this, i + 2, i + 5) swap(this, i + 3, i + 4) } return this } Buffer.prototype.toString = function toString () { var length = this.length | 0 if (length === 0) return '' if (arguments.length === 0) return utf8Slice(this, 0, length) return slowToString.apply(this, arguments) } Buffer.prototype.equals = function equals (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return true return Buffer.compare(this, b) === 0 } Buffer.prototype.inspect = function inspect () { var str = '' var max = exports.INSPECT_MAX_BYTES if (this.length > 0) { str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') if (this.length > max) str += ' ... ' } return '<Buffer ' + str + '>' } Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { if (!Buffer.isBuffer(target)) { throw new TypeError('Argument must be a Buffer') } if (start === undefined) { start = 0 } if (end === undefined) { end = target ? target.length : 0 } if (thisStart === undefined) { thisStart = 0 } if (thisEnd === undefined) { thisEnd = this.length } if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { throw new RangeError('out of range index') } if (thisStart >= thisEnd && start >= end) { return 0 } if (thisStart >= thisEnd) { return -1 } if (start >= end) { return 1 } start >>>= 0 end >>>= 0 thisStart >>>= 0 thisEnd >>>= 0 if (this === target) return 0 var x = thisEnd - thisStart var y = end - start var len = Math.min(x, y) var thisCopy = this.slice(thisStart, thisEnd) var targetCopy = target.slice(start, end) for (var i = 0; i < len; ++i) { if (thisCopy[i] !== targetCopy[i]) { x = thisCopy[i] y = targetCopy[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, // OR the last index of `val` in `buffer` at offset <= `byteOffset`. // // Arguments: // - buffer - a Buffer to search // - val - a string, Buffer, or number // - byteOffset - an index into `buffer`; will be clamped to an int32 // - encoding - an optional encoding, relevant is val is a string // - dir - true for indexOf, false for lastIndexOf function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { // Empty buffer means no match if (buffer.length === 0) return -1 // Normalize byteOffset if (typeof byteOffset === 'string') { encoding = byteOffset byteOffset = 0 } else if (byteOffset > 0x7fffffff) { byteOffset = 0x7fffffff } else if (byteOffset < -0x80000000) { byteOffset = -0x80000000 } byteOffset = +byteOffset // Coerce to Number. if (isNaN(byteOffset)) { // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer byteOffset = dir ? 0 : (buffer.length - 1) } // Normalize byteOffset: negative offsets start from the end of the buffer if (byteOffset < 0) byteOffset = buffer.length + byteOffset if (byteOffset >= buffer.length) { if (dir) return -1 else byteOffset = buffer.length - 1 } else if (byteOffset < 0) { if (dir) byteOffset = 0 else return -1 } // Normalize val if (typeof val === 'string') { val = Buffer.from(val, encoding) } // Finally, search either indexOf (if dir is true) or lastIndexOf if (Buffer.isBuffer(val)) { // Special case: looking for empty string/buffer always fails if (val.length === 0) { return -1 } return arrayIndexOf(buffer, val, byteOffset, encoding, dir) } else if (typeof val === 'number') { val = val & 0xFF // Search for a byte value [0-255] if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') { if (dir) { return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) } else { return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) } } return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) } throw new TypeError('val must be string, number or Buffer') } function arrayIndexOf (arr, val, byteOffset, encoding, dir) { var indexSize = 1 var arrLength = arr.length var valLength = val.length if (encoding !== undefined) { encoding = String(encoding).toLowerCase() if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { if (arr.length < 2 || val.length < 2) { return -1 } indexSize = 2 arrLength /= 2 valLength /= 2 byteOffset /= 2 } } function read (buf, i) { if (indexSize === 1) { return buf[i] } else { return buf.readUInt16BE(i * indexSize) } } var i if (dir) { var foundIndex = -1 for (i = byteOffset; i < arrLength; i++) { if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { if (foundIndex === -1) foundIndex = i if (i - foundIndex + 1 === valLength) return foundIndex * indexSize } else { if (foundIndex !== -1) i -= i - foundIndex foundIndex = -1 } } } else { if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength for (i = byteOffset; i >= 0; i--) { var found = true for (var j = 0; j < valLength; j++) { if (read(arr, i + j) !== read(val, j)) { found = false break } } if (found) return i } } return -1 } Buffer.prototype.includes = function includes (val, byteOffset, encoding) { return this.indexOf(val, byteOffset, encoding) !== -1 } Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, true) } Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, false) } function hexWrite (buf, string, offset, length) { offset = Number(offset) || 0 var remaining = buf.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } // must be an even number of digits var strLen = string.length if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') if (length > strLen / 2) { length = strLen / 2 } for (var i = 0; i < length; ++i) { var parsed = parseInt(string.substr(i * 2, 2), 16) if (isNaN(parsed)) return i buf[offset + i] = parsed } return i } function utf8Write (buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) } function asciiWrite (buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length) } function latin1Write (buf, string, offset, length) { return asciiWrite(buf, string, offset, length) } function base64Write (buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length) } function ucs2Write (buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) } Buffer.prototype.write = function write (string, offset, length, encoding) { // Buffer#write(string) if (offset === undefined) { encoding = 'utf8' length = this.length offset = 0 // Buffer#write(string, encoding) } else if (length === undefined && typeof offset === 'string') { encoding = offset length = this.length offset = 0 // Buffer#write(string, offset[, length][, encoding]) } else if (isFinite(offset)) { offset = offset | 0 if (isFinite(length)) { length = length | 0 if (encoding === undefined) encoding = 'utf8' } else { encoding = length length = undefined } // legacy write(string, encoding, offset, length) - remove in v0.13 } else { throw new Error( 'Buffer.write(string, encoding, offset[, length]) is no longer supported' ) } var remaining = this.length - offset if (length === undefined || length > remaining) length = remaining if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { throw new RangeError('Attempt to write outside buffer bounds') } if (!encoding) encoding = 'utf8' var loweredCase = false for (;;) { switch (encoding) { case 'hex': return hexWrite(this, string, offset, length) case 'utf8': case 'utf-8': return utf8Write(this, string, offset, length) case 'ascii': return asciiWrite(this, string, offset, length) case 'latin1': case 'binary': return latin1Write(this, string, offset, length) case 'base64': // Warning: maxLength not taken into account in base64Write return base64Write(this, string, offset, length) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return ucs2Write(this, string, offset, length) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.prototype.toJSON = function toJSON () { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) } } function base64Slice (buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf) } else { return base64.fromByteArray(buf.slice(start, end)) } } function utf8Slice (buf, start, end) { end = Math.min(buf.length, end) var res = [] var i = start while (i < end) { var firstByte = buf[i] var codePoint = null var bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1 if (i + bytesPerSequence <= end) { var secondByte, thirdByte, fourthByte, tempCodePoint switch (bytesPerSequence) { case 1: if (firstByte < 0x80) { codePoint = firstByte } break case 2: secondByte = buf[i + 1] if ((secondByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) if (tempCodePoint > 0x7F) { codePoint = tempCodePoint } } break case 3: secondByte = buf[i + 1] thirdByte = buf[i + 2] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint } } break case 4: secondByte = buf[i + 1] thirdByte = buf[i + 2] fourthByte = buf[i + 3] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { codePoint = tempCodePoint } } } } if (codePoint === null) { // we did not generate a valid codePoint so insert a // replacement char (U+FFFD) and advance only 1 byte codePoint = 0xFFFD bytesPerSequence = 1 } else if (codePoint > 0xFFFF) { // encode to utf16 (surrogate pair dance) codePoint -= 0x10000 res.push(codePoint >>> 10 & 0x3FF | 0xD800) codePoint = 0xDC00 | codePoint & 0x3FF } res.push(codePoint) i += bytesPerSequence } return decodeCodePointsArray(res) } // Based on http://stackoverflow.com/a/22747272/680742, the browser with // the lowest limit is Chrome, with 0x10000 args. // We go 1 magnitude less, for safety var MAX_ARGUMENTS_LENGTH = 0x1000 function decodeCodePointsArray (codePoints) { var len = codePoints.length if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints) // avoid extra slice() } // Decode in chunks to avoid "call stack size exceeded". var res = '' var i = 0 while (i < len) { res += String.fromCharCode.apply( String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) ) } return res } function asciiSlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i] & 0x7F) } return ret } function latin1Slice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i]) } return ret } function hexSlice (buf, start, end) { var len = buf.length if (!start || start < 0) start = 0 if (!end || end < 0 || end > len) end = len var out = '' for (var i = start; i < end; ++i) { out += toHex(buf[i]) } return out } function utf16leSlice (buf, start, end) { var bytes = buf.slice(start, end) var res = '' for (var i = 0; i < bytes.length; i += 2) { res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) } return res } Buffer.prototype.slice = function slice (start, end) { var len = this.length start = ~~start end = end === undefined ? len : ~~end if (start < 0) { start += len if (start < 0) start = 0 } else if (start > len) { start = len } if (end < 0) { end += len if (end < 0) end = 0 } else if (end > len) { end = len } if (end < start) end = start var newBuf if (Buffer.TYPED_ARRAY_SUPPORT) { newBuf = this.subarray(start, end) newBuf.__proto__ = Buffer.prototype } else { var sliceLen = end - start newBuf = new Buffer(sliceLen, undefined) for (var i = 0; i < sliceLen; ++i) { newBuf[i] = this[i + start] } } return newBuf } /* * Need to make sure that buffer isn't trying to write out of bounds. */ function checkOffset (offset, ext, length) { if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') } Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } return val } Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { checkOffset(offset, byteLength, this.length) } var val = this[offset + --byteLength] var mul = 1 while (byteLength > 0 && (mul *= 0x100)) { val += this[offset + --byteLength] * mul } return val } Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) return this[offset] } Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return this[offset] | (this[offset + 1] << 8) } Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return (this[offset] << 8) | this[offset + 1] } Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ((this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16)) + (this[offset + 3] * 0x1000000) } Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] * 0x1000000) + ((this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3]) } Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var i = byteLength var mul = 1 var val = this[offset + --i] while (i > 0 && (mul *= 0x100)) { val += this[offset + --i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) if (!(this[offset] & 0x80)) return (this[offset]) return ((0xff - this[offset] + 1) * -1) } Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset] | (this[offset + 1] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset + 1] | (this[offset] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24) } Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | (this[offset + 3]) } Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, true, 23, 4) } Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, false, 23, 4) } Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, true, 52, 8) } Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, false, 52, 8) } function checkInt (buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') if (offset + ext > buf.length) throw new RangeError('Index out of range') } Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } var mul = 1 var i = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } var i = byteLength - 1 var mul = 1 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) this[offset] = (value & 0xff) return offset + 1 } function objectWriteUInt16 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> (littleEndian ? i : 1 - i) * 8 } } Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } function objectWriteUInt32 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffffffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff } } Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset + 3] = (value >>> 24) this[offset + 2] = (value >>> 16) this[offset + 1] = (value >>> 8) this[offset] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = 0 var mul = 1 var sub = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = byteLength - 1 var mul = 1 var sub = 0 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) if (value < 0) value = 0xff + value + 1 this[offset] = (value & 0xff) return offset + 1 } Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) this[offset + 2] = (value >>> 16) this[offset + 3] = (value >>> 24) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (value < 0) value = 0xffffffff + value + 1 if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } function checkIEEE754 (buf, value, offset, ext, max, min) { if (offset + ext > buf.length) throw new RangeError('Index out of range') if (offset < 0) throw new RangeError('Index out of range') } function writeFloat (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) } ieee754.write(buf, value, offset, littleEndian, 23, 4) return offset + 4 } Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert) } Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert) } function writeDouble (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) } ieee754.write(buf, value, offset, littleEndian, 52, 8) return offset + 8 } Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert) } Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert) } // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) Buffer.prototype.copy = function copy (target, targetStart, start, end) { if (!start) start = 0 if (!end && end !== 0) end = this.length if (targetStart >= target.length) targetStart = target.length if (!targetStart) targetStart = 0 if (end > 0 && end < start) end = start // Copy 0 bytes; we're done if (end === start) return 0 if (target.length === 0 || this.length === 0) return 0 // Fatal error conditions if (targetStart < 0) { throw new RangeError('targetStart out of bounds') } if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') if (end < 0) throw new RangeError('sourceEnd out of bounds') // Are we oob? if (end > this.length) end = this.length if (target.length - targetStart < end - start) { end = target.length - targetStart + start } var len = end - start var i if (this === target && start < targetStart && targetStart < end) { // descending copy from end for (i = len - 1; i >= 0; --i) { target[i + targetStart] = this[i + start] } } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { // ascending copy from start for (i = 0; i < len; ++i) { target[i + targetStart] = this[i + start] } } else { Uint8Array.prototype.set.call( target, this.subarray(start, start + len), targetStart ) } return len } // Usage: // buffer.fill(number[, offset[, end]]) // buffer.fill(buffer[, offset[, end]]) // buffer.fill(string[, offset[, end]][, encoding]) Buffer.prototype.fill = function fill (val, start, end, encoding) { // Handle string cases: if (typeof val === 'string') { if (typeof start === 'string') { encoding = start start = 0 end = this.length } else if (typeof end === 'string') { encoding = end end = this.length } if (val.length === 1) { var code = val.charCodeAt(0) if (code < 256) { val = code } } if (encoding !== undefined && typeof encoding !== 'string') { throw new TypeError('encoding must be a string') } if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { throw new TypeError('Unknown encoding: ' + encoding) } } else if (typeof val === 'number') { val = val & 255 } // Invalid ranges are not set to a default, so can range check early. if (start < 0 || this.length < start || this.length < end) { throw new RangeError('Out of range index') } if (end <= start) { return this } start = start >>> 0 end = end === undefined ? this.length : end >>> 0 if (!val) val = 0 var i if (typeof val === 'number') { for (i = start; i < end; ++i) { this[i] = val } } else { var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString()) var len = bytes.length for (i = 0; i < end - start; ++i) { this[i + start] = bytes[i % len] } } return this } // HELPER FUNCTIONS // ================ var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g function base64clean (str) { // Node strips out invalid characters like \n and \t from the string, base64-js does not str = stringtrim(str).replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not while (str.length % 4 !== 0) { str = str + '=' } return str } function stringtrim (str) { if (str.trim) return str.trim() return str.replace(/^\s+|\s+$/g, '') } function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) } function utf8ToBytes (string, units) { units = units || Infinity var codePoint var length = string.length var leadSurrogate = null var bytes = [] for (var i = 0; i < length; ++i) { codePoint = string.charCodeAt(i) // is surrogate component if (codePoint > 0xD7FF && codePoint < 0xE000) { // last char was a lead if (!leadSurrogate) { // no lead yet if (codePoint > 0xDBFF) { // unexpected trail if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } else if (i + 1 === length) { // unpaired lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } // valid lead leadSurrogate = codePoint continue } // 2 leads in a row if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = codePoint continue } // valid surrogate pair codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 } else if (leadSurrogate) { // valid bmp char, but last char was a lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } leadSurrogate = null // encode utf8 if (codePoint < 0x80) { if ((units -= 1) < 0) break bytes.push(codePoint) } else if (codePoint < 0x800) { if ((units -= 2) < 0) break bytes.push( codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break bytes.push( codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x110000) { if ((units -= 4) < 0) break bytes.push( codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else { throw new Error('Invalid code point') } } return bytes } function asciiToBytes (str) { var byteArray = [] for (var i = 0; i < str.length; ++i) { // Node's code seems to be doing this and not & 0x7F.. byteArray.push(str.charCodeAt(i) & 0xFF) } return byteArray } function utf16leToBytes (str, units) { var c, hi, lo var byteArray = [] for (var i = 0; i < str.length; ++i) { if ((units -= 2) < 0) break c = str.charCodeAt(i) hi = c >> 8 lo = c % 256 byteArray.push(lo) byteArray.push(hi) } return byteArray } function base64ToBytes (str) { return base64.toByteArray(base64clean(str)) } function blitBuffer (src, dst, offset, length) { for (var i = 0; i < length; ++i) { if ((i + offset >= dst.length) || (i >= src.length)) break dst[i + offset] = src[i] } return i } function isnan (val) { return val !== val // eslint-disable-line no-self-compare } /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13))) /***/ }), /* 24 */ /***/ (function(module, exports) { module.exports.id = 'ace/mode/javascript_worker'; module.exports.src = "\"no use strict\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=\"insert\"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;return $pointsInOrder(point,deltaStart,moveIfEqual)?{row:point.row,column:point.column}:$pointsInOrder(deltaEnd,point,!moveIfEqual)?{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)}:{row:deltaStart.row,column:deltaStart.column}}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/</g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){\"use strict\";acequire(\"../range\").Range;var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/javascript/jshint\",[\"require\",\"exports\",\"module\"],function(acequire,exports,module){module.exports=function outer(modules,cache,entry){function newRequire(name,jumped){if(!cache[name]){if(!modules[name]){var currentRequire=\"function\"==typeof acequire&&acequire;if(!jumped&¤tRequire)return currentRequire(name,!0);if(previousRequire)return previousRequire(name,!0);var err=Error(\"Cannot find module '\"+name+\"'\");throw err.code=\"MODULE_NOT_FOUND\",err}var m=cache[name]={exports:{}};modules[name][0].call(m.exports,function(x){var id=modules[name][1][x];return newRequire(id?id:x)},m,m.exports,outer,modules,cache,entry)}return cache[name].exports}for(var previousRequire=\"function\"==typeof acequire&&acequire,i=0;entry.length>i;i++)newRequire(entry[i]);return newRequire(entry[0])}({\"/node_modules/browserify/node_modules/events/events.js\":[function(_dereq_,module){function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(arg){return\"function\"==typeof arg}function isNumber(arg){return\"number\"==typeof arg}function isObject(arg){return\"object\"==typeof arg&&null!==arg}function isUndefined(arg){return void 0===arg}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||0>n||isNaN(n))throw TypeError(\"n must be a positive number\");return this._maxListeners=n,this},EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(this._events||(this._events={}),\"error\"===type&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length)){if(er=arguments[1],er instanceof Error)throw er;throw TypeError('Uncaught, unspecified \"error\" event.')}if(handler=this._events[type],isUndefined(handler))return!1;if(isFunction(handler))switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:for(len=arguments.length,args=Array(len-1),i=1;len>i;i++)args[i-1]=arguments[i];handler.apply(this,args)}else if(isObject(handler)){for(len=arguments.length,args=Array(len-1),i=1;len>i;i++)args[i-1]=arguments[i];for(listeners=handler.slice(),len=listeners.length,i=0;len>i;i++)listeners[i].apply(this,args)}return!0},EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError(\"listener must be a function\");if(this._events||(this._events={}),this._events.newListener&&this.emit(\"newListener\",type,isFunction(listener.listener)?listener.listener:listener),this._events[type]?isObject(this._events[type])?this._events[type].push(listener):this._events[type]=[this._events[type],listener]:this._events[type]=listener,isObject(this._events[type])&&!this._events[type].warned){var m;m=isUndefined(this._maxListeners)?EventEmitter.defaultMaxListeners:this._maxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),\"function\"==typeof console.trace&&console.trace())}return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){function g(){this.removeListener(type,g),fired||(fired=!0,listener.apply(this,arguments))}if(!isFunction(listener))throw TypeError(\"listener must be a function\");var fired=!1;return g.listener=listener,this.on(type,g),this},EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[type])return this;if(list=this._events[type],length=list.length,position=-1,list===listener||isFunction(list.listener)&&list.listener===listener)delete this._events[type],this._events.removeListener&&this.emit(\"removeListener\",type,listener);else if(isObject(list)){for(i=length;i-->0;)if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}if(0>position)return this;1===list.length?(list.length=0,delete this._events[type]):list.splice(position,1),this._events.removeListener&&this.emit(\"removeListener\",type,listener)}return this},EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[type]&&delete this._events[type],this;if(0===arguments.length){for(key in this._events)\"removeListener\"!==key&&this.removeAllListeners(key);return this.removeAllListeners(\"removeListener\"),this._events={},this\n}if(listeners=this._events[type],isFunction(listeners))this.removeListener(type,listeners);else for(;listeners.length;)this.removeListener(type,listeners[listeners.length-1]);return delete this._events[type],this},EventEmitter.prototype.listeners=function(type){var ret;return ret=this._events&&this._events[type]?isFunction(this._events[type])?[this._events[type]]:this._events[type].slice():[]},EventEmitter.listenerCount=function(emitter,type){var ret;return ret=emitter._events&&emitter._events[type]?isFunction(emitter._events[type])?1:emitter._events[type].length:0}},{}],\"/node_modules/jshint/data/ascii-identifier-data.js\":[function(_dereq_,module){for(var identifierStartTable=[],i=0;128>i;i++)identifierStartTable[i]=36===i||i>=65&&90>=i||95===i||i>=97&&122>=i;for(var identifierPartTable=[],i=0;128>i;i++)identifierPartTable[i]=identifierStartTable[i]||i>=48&&57>=i;module.exports={asciiIdentifierStartTable:identifierStartTable,asciiIdentifierPartTable:identifierPartTable}},{}],\"/node_modules/jshint/lodash.js\":[function(_dereq_,module,exports){(function(global){(function(){function baseFindIndex(array,predicate,fromRight){for(var length=array.length,index=fromRight?length:-1;fromRight?index--:length>++index;)if(predicate(array[index],index,array))return index;return-1}function baseIndexOf(array,value,fromIndex){if(value!==value)return indexOfNaN(array,fromIndex);for(var index=fromIndex-1,length=array.length;length>++index;)if(array[index]===value)return index;return-1}function baseIsFunction(value){return\"function\"==typeof value||!1}function baseToString(value){return\"string\"==typeof value?value:null==value?\"\":value+\"\"}function indexOfNaN(array,fromIndex,fromRight){for(var length=array.length,index=fromIndex+(fromRight?0:-1);fromRight?index--:length>++index;){var other=array[index];if(other!==other)return index}return-1}function isObjectLike(value){return!!value&&\"object\"==typeof value}function lodash(){}function arrayCopy(source,array){var index=-1,length=source.length;for(array||(array=Array(length));length>++index;)array[index]=source[index];return array}function arrayEach(array,iteratee){for(var index=-1,length=array.length;length>++index&&iteratee(array[index],index,array)!==!1;);return array}function arrayFilter(array,predicate){for(var index=-1,length=array.length,resIndex=-1,result=[];length>++index;){var value=array[index];predicate(value,index,array)&&(result[++resIndex]=value)}return result}function arrayMap(array,iteratee){for(var index=-1,length=array.length,result=Array(length);length>++index;)result[index]=iteratee(array[index],index,array);return result}function arrayMax(array){for(var index=-1,length=array.length,result=NEGATIVE_INFINITY;length>++index;){var value=array[index];value>result&&(result=value)}return result}function arraySome(array,predicate){for(var index=-1,length=array.length;length>++index;)if(predicate(array[index],index,array))return!0;return!1}function assignWith(object,source,customizer){var props=keys(source);push.apply(props,getSymbols(source));for(var index=-1,length=props.length;length>++index;){var key=props[index],value=object[key],result=customizer(value,source[key],key,object,source);(result===result?result===value:value!==value)&&(value!==undefined||key in object)||(object[key]=result)}return object}function baseCopy(source,props,object){object||(object={});for(var index=-1,length=props.length;length>++index;){var key=props[index];object[key]=source[key]}return object}function baseCallback(func,thisArg,argCount){var type=typeof func;return\"function\"==type?thisArg===undefined?func:bindCallback(func,thisArg,argCount):null==func?identity:\"object\"==type?baseMatches(func):thisArg===undefined?property(func):baseMatchesProperty(func,thisArg)}function baseClone(value,isDeep,customizer,key,object,stackA,stackB){var result;if(customizer&&(result=object?customizer(value,key,object):customizer(value)),result!==undefined)return result;if(!isObject(value))return value;var isArr=isArray(value);if(isArr){if(result=initCloneArray(value),!isDeep)return arrayCopy(value,result)}else{var tag=objToString.call(value),isFunc=tag==funcTag;if(tag!=objectTag&&tag!=argsTag&&(!isFunc||object))return cloneableTags[tag]?initCloneByTag(value,tag,isDeep):object?value:{};if(result=initCloneObject(isFunc?{}:value),!isDeep)return baseAssign(result,value)}stackA||(stackA=[]),stackB||(stackB=[]);for(var length=stackA.length;length--;)if(stackA[length]==value)return stackB[length];return stackA.push(value),stackB.push(result),(isArr?arrayEach:baseForOwn)(value,function(subValue,key){result[key]=baseClone(subValue,isDeep,customizer,key,value,stackA,stackB)}),result}function baseFilter(collection,predicate){var result=[];return baseEach(collection,function(value,index,collection){predicate(value,index,collection)&&result.push(value)}),result}function baseForIn(object,iteratee){return baseFor(object,iteratee,keysIn)}function baseForOwn(object,iteratee){return baseFor(object,iteratee,keys)}function baseGet(object,path,pathKey){if(null!=object){pathKey!==undefined&&pathKey in toObject(object)&&(path=[pathKey]);for(var index=-1,length=path.length;null!=object&&length>++index;)var result=object=object[path[index]];return result}}function baseIsEqual(value,other,customizer,isLoose,stackA,stackB){if(value===other)return 0!==value||1/value==1/other;var valType=typeof value,othType=typeof other;return\"function\"!=valType&&\"object\"!=valType&&\"function\"!=othType&&\"object\"!=othType||null==value||null==other?value!==value&&other!==other:baseIsEqualDeep(value,other,baseIsEqual,customizer,isLoose,stackA,stackB)}function baseIsEqualDeep(object,other,equalFunc,customizer,isLoose,stackA,stackB){var objIsArr=isArray(object),othIsArr=isArray(other),objTag=arrayTag,othTag=arrayTag;objIsArr||(objTag=objToString.call(object),objTag==argsTag?objTag=objectTag:objTag!=objectTag&&(objIsArr=isTypedArray(object))),othIsArr||(othTag=objToString.call(other),othTag==argsTag?othTag=objectTag:othTag!=objectTag&&(othIsArr=isTypedArray(other)));var objIsObj=objTag==objectTag,othIsObj=othTag==objectTag,isSameTag=objTag==othTag;if(isSameTag&&!objIsArr&&!objIsObj)return equalByTag(object,other,objTag);if(!isLoose){var valWrapped=objIsObj&&hasOwnProperty.call(object,\"__wrapped__\"),othWrapped=othIsObj&&hasOwnProperty.call(other,\"__wrapped__\");if(valWrapped||othWrapped)return equalFunc(valWrapped?object.value():object,othWrapped?other.value():other,customizer,isLoose,stackA,stackB)}if(!isSameTag)return!1;stackA||(stackA=[]),stackB||(stackB=[]);for(var length=stackA.length;length--;)if(stackA[length]==object)return stackB[length]==other;stackA.push(object),stackB.push(other);var result=(objIsArr?equalArrays:equalObjects)(object,other,equalFunc,customizer,isLoose,stackA,stackB);return stackA.pop(),stackB.pop(),result}function baseIsMatch(object,props,values,strictCompareFlags,customizer){for(var index=-1,length=props.length,noCustomizer=!customizer;length>++index;)if(noCustomizer&&strictCompareFlags[index]?values[index]!==object[props[index]]:!(props[index]in object))return!1;for(index=-1;length>++index;){var key=props[index],objValue=object[key],srcValue=values[index];if(noCustomizer&&strictCompareFlags[index])var result=objValue!==undefined||key in object;else result=customizer?customizer(objValue,srcValue,key):undefined,result===undefined&&(result=baseIsEqual(srcValue,objValue,customizer,!0));if(!result)return!1}return!0}function baseMatches(source){var props=keys(source),length=props.length;if(!length)return constant(!0);if(1==length){var key=props[0],value=source[key];if(isStrictComparable(value))return function(object){return null==object?!1:object[key]===value&&(value!==undefined||key in toObject(object))}}for(var values=Array(length),strictCompareFlags=Array(length);length--;)value=source[props[length]],values[length]=value,strictCompareFlags[length]=isStrictComparable(value);return function(object){return null!=object&&baseIsMatch(toObject(object),props,values,strictCompareFlags)}}function baseMatchesProperty(path,value){var isArr=isArray(path),isCommon=isKey(path)&&isStrictComparable(value),pathKey=path+\"\";return path=toPath(path),function(object){if(null==object)return!1;var key=pathKey;if(object=toObject(object),!(!isArr&&isCommon||key in object)){if(object=1==path.length?object:baseGet(object,baseSlice(path,0,-1)),null==object)return!1;key=last(path),object=toObject(object)}return object[key]===value?value!==undefined||key in object:baseIsEqual(value,object[key],null,!0)}}function baseMerge(object,source,customizer,stackA,stackB){if(!isObject(object))return object;var isSrcArr=isLength(source.length)&&(isArray(source)||isTypedArray(source));if(!isSrcArr){var props=keys(source);push.apply(props,getSymbols(source))}return arrayEach(props||source,function(srcValue,key){if(props&&(key=srcValue,srcValue=source[key]),isObjectLike(srcValue))stackA||(stackA=[]),stackB||(stackB=[]),baseMergeDeep(object,source,key,baseMerge,customizer,stackA,stackB);else{var value=object[key],result=customizer?customizer(value,srcValue,key,object,source):undefined,isCommon=result===undefined;isCommon&&(result=srcValue),!isSrcArr&&result===undefined||!isCommon&&(result===result?result===value:value!==value)||(object[key]=result)}}),object}function baseMergeDeep(object,source,key,mergeFunc,customizer,stackA,stackB){for(var length=stackA.length,srcValue=source[key];length--;)if(stackA[length]==srcValue)return object[key]=stackB[length],undefined;var value=object[key],result=customizer?customizer(value,srcValue,key,object,source):undefined,isCommon=result===undefined;isCommon&&(result=srcValue,isLength(srcValue.length)&&(isArray(srcValue)||isTypedArray(srcValue))?result=isArray(value)?value:getLength(value)?arrayCopy(value):[]:isPlainObject(srcValue)||isArguments(srcValue)?result=isArguments(value)?toPlainObject(value):isPlainObject(value)?value:{}:isCommon=!1),stackA.push(srcValue),stackB.push(result),isCommon?object[key]=mergeFunc(result,srcValue,customizer,stackA,stackB):(result===result?result!==value:value===value)&&(object[key]=result)}function baseProperty(key){return function(object){return null==object?undefined:object[key]}}function basePropertyDeep(path){var pathKey=path+\"\";return path=toPath(path),function(object){return baseGet(object,path,pathKey)}}function baseSlice(array,start,end){var index=-1,length=array.length;start=null==start?0:+start||0,0>start&&(start=-start>length?0:length+start),end=end===undefined||end>length?length:+end||0,0>end&&(end+=length),length=start>end?0:end-start>>>0,start>>>=0;for(var result=Array(length);length>++index;)result[index]=array[index+start];return result}function baseSome(collection,predicate){var result;return baseEach(collection,function(value,index,collection){return result=predicate(value,index,collection),!result}),!!result}function baseValues(object,props){for(var index=-1,length=props.length,result=Array(length);length>++index;)result[index]=object[props[index]];return result}function binaryIndex(array,value,retHighest){var low=0,high=array?array.length:low;if(\"number\"==typeof value&&value===value&&HALF_MAX_ARRAY_LENGTH>=high){for(;high>low;){var mid=low+high>>>1,computed=array[mid];(retHighest?value>=computed:value>computed)?low=mid+1:high=mid}return high}return binaryIndexBy(array,value,identity,retHighest)}function binaryIndexBy(array,value,iteratee,retHighest){value=iteratee(value);for(var low=0,high=array?array.length:0,valIsNaN=value!==value,valIsUndef=value===undefined;high>low;){var mid=floor((low+high)/2),computed=iteratee(array[mid]),isReflexive=computed===computed;if(valIsNaN)var setLow=isReflexive||retHighest;else setLow=valIsUndef?isReflexive&&(retHighest||computed!==undefined):retHighest?value>=computed:value>computed;setLow?low=mid+1:high=mid}return nativeMin(high,MAX_ARRAY_INDEX)}function bindCallback(func,thisArg,argCount){if(\"function\"!=typeof func)return identity;if(thisArg===undefined)return func;switch(argCount){case 1:return function(value){return func.call(thisArg,value)};case 3:return function(value,index,collection){return func.call(thisArg,value,index,collection)};case 4:return function(accumulator,value,index,collection){return func.call(thisArg,accumulator,value,index,collection)};case 5:return function(value,other,key,object,source){return func.call(thisArg,value,other,key,object,source)}}return function(){return func.apply(thisArg,arguments)}}function bufferClone(buffer){return bufferSlice.call(buffer,0)}function createAssigner(assigner){return restParam(function(object,sources){var index=-1,length=null==object?0:sources.length,customizer=length>2&&sources[length-2],guard=length>2&&sources[2],thisArg=length>1&&sources[length-1];for(\"function\"==typeof customizer?(customizer=bindCallback(customizer,thisArg,5),length-=2):(customizer=\"function\"==typeof thisArg?thisArg:null,length-=customizer?1:0),guard&&isIterateeCall(sources[0],sources[1],guard)&&(customizer=3>length?null:customizer,length=1);length>++index;){var source=sources[index];source&&assigner(object,source,customizer)}return object})}function createBaseEach(eachFunc,fromRight){return function(collection,iteratee){var length=collection?getLength(collection):0;if(!isLength(length))return eachFunc(collection,iteratee);for(var index=fromRight?length:-1,iterable=toObject(collection);(fromRight?index--:length>++index)&&iteratee(iterable[index],index,iterable)!==!1;);return collection}}function createBaseFor(fromRight){return function(object,iteratee,keysFunc){for(var iterable=toObject(object),props=keysFunc(object),length=props.length,index=fromRight?length:-1;fromRight?index--:length>++index;){var key=props[index];if(iteratee(iterable[key],key,iterable)===!1)break}return object}}function createFindIndex(fromRight){return function(array,predicate,thisArg){return array&&array.length?(predicate=getCallback(predicate,thisArg,3),baseFindIndex(array,predicate,fromRight)):-1}}function createForEach(arrayFunc,eachFunc){return function(collection,iteratee,thisArg){return\"function\"==typeof iteratee&&thisArg===undefined&&isArray(collection)?arrayFunc(collection,iteratee):eachFunc(collection,bindCallback(iteratee,thisArg,3))}}function equalArrays(array,other,equalFunc,customizer,isLoose,stackA,stackB){var index=-1,arrLength=array.length,othLength=other.length,result=!0;if(arrLength!=othLength&&!(isLoose&&othLength>arrLength))return!1;for(;result&&arrLength>++index;){var arrValue=array[index],othValue=other[index];if(result=undefined,customizer&&(result=isLoose?customizer(othValue,arrValue,index):customizer(arrValue,othValue,index)),result===undefined)if(isLoose)for(var othIndex=othLength;othIndex--&&(othValue=other[othIndex],!(result=arrValue&&arrValue===othValue||equalFunc(arrValue,othValue,customizer,isLoose,stackA,stackB))););else result=arrValue&&arrValue===othValue||equalFunc(arrValue,othValue,customizer,isLoose,stackA,stackB)}return!!result}function equalByTag(object,other,tag){switch(tag){case boolTag:case dateTag:return+object==+other;case errorTag:return object.name==other.name&&object.message==other.message;case numberTag:return object!=+object?other!=+other:0==object?1/object==1/other:object==+other;case regexpTag:case stringTag:return object==other+\"\"}return!1}function equalObjects(object,other,equalFunc,customizer,isLoose,stackA,stackB){var objProps=keys(object),objLength=objProps.length,othProps=keys(other),othLength=othProps.length;if(objLength!=othLength&&!isLoose)return!1;for(var skipCtor=isLoose,index=-1;objLength>++index;){var key=objProps[index],result=isLoose?key in other:hasOwnProperty.call(other,key);if(result){var objValue=object[key],othValue=other[key];result=undefined,customizer&&(result=isLoose?customizer(othValue,objValue,key):customizer(objValue,othValue,key)),result===undefined&&(result=objValue&&objValue===othValue||equalFunc(objValue,othValue,customizer,isLoose,stackA,stackB))}if(!result)return!1;skipCtor||(skipCtor=\"constructor\"==key)}if(!skipCtor){var objCtor=object.constructor,othCtor=other.constructor;if(objCtor!=othCtor&&\"constructor\"in object&&\"constructor\"in other&&!(\"function\"==typeof objCtor&&objCtor instanceof objCtor&&\"function\"==typeof othCtor&&othCtor instanceof othCtor))return!1}return!0}function getCallback(func,thisArg,argCount){var result=lodash.callback||callback;return result=result===callback?baseCallback:result,argCount?result(func,thisArg,argCount):result}function getIndexOf(collection,target,fromIndex){var result=lodash.indexOf||indexOf;return result=result===indexOf?baseIndexOf:result,collection?result(collection,target,fromIndex):result}function initCloneArray(array){var length=array.length,result=new array.constructor(length);return length&&\"string\"==typeof array[0]&&hasOwnProperty.call(array,\"index\")&&(result.index=array.index,result.input=array.input),result}function initCloneObject(object){var Ctor=object.constructor;return\"function\"==typeof Ctor&&Ctor instanceof Ctor||(Ctor=Object),new Ctor}function initCloneByTag(object,tag,isDeep){var Ctor=object.constructor;switch(tag){case arrayBufferTag:return bufferClone(object);case boolTag:case dateTag:return new Ctor(+object);case float32Tag:case float64Tag:case int8Tag:case int16Tag:case int32Tag:case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:var buffer=object.buffer;return new Ctor(isDeep?bufferClone(buffer):buffer,object.byteOffset,object.length);case numberTag:case stringTag:return new Ctor(object);case regexpTag:var result=new Ctor(object.source,reFlags.exec(object));result.lastIndex=object.lastIndex}return result}function isIndex(value,length){return value=+value,length=null==length?MAX_SAFE_INTEGER:length,value>-1&&0==value%1&&length>value}function isIterateeCall(value,index,object){if(!isObject(object))return!1;var type=typeof index;if(\"number\"==type)var length=getLength(object),prereq=isLength(length)&&isIndex(index,length);else prereq=\"string\"==type&&index in object;if(prereq){var other=object[index];return value===value?value===other:other!==other}return!1}function isKey(value,object){var type=typeof value;if(\"string\"==type&&reIsPlainProp.test(value)||\"number\"==type)return!0;if(isArray(value))return!1;var result=!reIsDeepProp.test(value);return result||null!=object&&value in toObject(object)}function isLength(value){return\"number\"==typeof value&&value>-1&&0==value%1&&MAX_SAFE_INTEGER>=value}function isStrictComparable(value){return value===value&&(0===value?1/value>0:!isObject(value))}function shimIsPlainObject(value){var Ctor;if(lodash.support,!isObjectLike(value)||objToString.call(value)!=objectTag||!hasOwnProperty.call(value,\"constructor\")&&(Ctor=value.constructor,\"function\"==typeof Ctor&&!(Ctor instanceof Ctor)))return!1;var result;return baseForIn(value,function(subValue,key){result=key}),result===undefined||hasOwnProperty.call(value,result)}function shimKeys(object){for(var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length,support=lodash.support,allowIndexes=length&&isLength(length)&&(isArray(object)||support.nonEnumArgs&&isArguments(object)),index=-1,result=[];propsLength>++index;){var key=props[index];(allowIndexes&&isIndex(key,length)||hasOwnProperty.call(object,key))&&result.push(key)}return result}function toObject(value){return isObject(value)?value:Object(value)}function toPath(value){if(isArray(value))return value;var result=[];return baseToString(value).replace(rePropName,function(match,number,quote,string){result.push(quote?string.replace(reEscapeChar,\"$1\"):number||match)}),result}function indexOf(array,value,fromIndex){var length=array?array.length:0;if(!length)return-1;if(\"number\"==typeof fromIndex)fromIndex=0>fromIndex?nativeMax(length+fromIndex,0):fromIndex;else if(fromIndex){var index=binaryIndex(array,value),other=array[index];return(value===value?value===other:other!==other)?index:-1}return baseIndexOf(array,value,fromIndex||0)}function last(array){var length=array?array.length:0;return length?array[length-1]:undefined}function slice(array,start,end){var length=array?array.length:0;return length?(end&&\"number\"!=typeof end&&isIterateeCall(array,start,end)&&(start=0,end=length),baseSlice(array,start,end)):[]}function unzip(array){for(var index=-1,length=(array&&array.length&&arrayMax(arrayMap(array,getLength)))>>>0,result=Array(length);length>++index;)result[index]=arrayMap(array,baseProperty(index));return result}function includes(collection,target,fromIndex,guard){var length=collection?getLength(collection):0;return isLength(length)||(collection=values(collection),length=collection.length),length?(fromIndex=\"number\"!=typeof fromIndex||guard&&isIterateeCall(target,fromIndex,guard)?0:0>fromIndex?nativeMax(length+fromIndex,0):fromIndex||0,\"string\"==typeof collection||!isArray(collection)&&isString(collection)?length>fromIndex&&collection.indexOf(target,fromIndex)>-1:getIndexOf(collection,target,fromIndex)>-1):!1}function reject(collection,predicate,thisArg){var func=isArray(collection)?arrayFilter:baseFilter;return predicate=getCallback(predicate,thisArg,3),func(collection,function(value,index,collection){return!predicate(value,index,collection)})}function some(collection,predicate,thisArg){var func=isArray(collection)?arraySome:baseSome;return thisArg&&isIterateeCall(collection,predicate,thisArg)&&(predicate=null),(\"function\"!=typeof predicate||thisArg!==undefined)&&(predicate=getCallback(predicate,thisArg,3)),func(collection,predicate)}function restParam(func,start){if(\"function\"!=typeof func)throw new TypeError(FUNC_ERROR_TEXT);return start=nativeMax(start===undefined?func.length-1:+start||0,0),function(){for(var args=arguments,index=-1,length=nativeMax(args.length-start,0),rest=Array(length);length>++index;)rest[index]=args[start+index];switch(start){case 0:return func.call(this,rest);case 1:return func.call(this,args[0],rest);case 2:return func.call(this,args[0],args[1],rest)}var otherArgs=Array(start+1);for(index=-1;start>++index;)otherArgs[index]=args[index];return otherArgs[start]=rest,func.apply(this,otherArgs)}}function clone(value,isDeep,customizer,thisArg){return isDeep&&\"boolean\"!=typeof isDeep&&isIterateeCall(value,isDeep,customizer)?isDeep=!1:\"function\"==typeof isDeep&&(thisArg=customizer,customizer=isDeep,isDeep=!1),customizer=\"function\"==typeof customizer&&bindCallback(customizer,thisArg,1),baseClone(value,isDeep,customizer)}function isArguments(value){var length=isObjectLike(value)?value.length:undefined;return isLength(length)&&objToString.call(value)==argsTag}function isEmpty(value){if(null==value)return!0;var length=getLength(value);return isLength(length)&&(isArray(value)||isString(value)||isArguments(value)||isObjectLike(value)&&isFunction(value.splice))?!length:!keys(value).length}function isObject(value){var type=typeof value;return\"function\"==type||!!value&&\"object\"==type}function isNative(value){return null==value?!1:objToString.call(value)==funcTag?reIsNative.test(fnToString.call(value)):isObjectLike(value)&&reIsHostCtor.test(value)}function isNumber(value){return\"number\"==typeof value||isObjectLike(value)&&objToString.call(value)==numberTag}function isString(value){return\"string\"==typeof value||isObjectLike(value)&&objToString.call(value)==stringTag}function isTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objToString.call(value)]}function toPlainObject(value){return baseCopy(value,keysIn(value))}function has(object,path){if(null==object)return!1;var result=hasOwnProperty.call(object,path);return result||isKey(path)||(path=toPath(path),object=1==path.length?object:baseGet(object,baseSlice(path,0,-1)),path=last(path),result=null!=object&&hasOwnProperty.call(object,path)),result}function keysIn(object){if(null==object)return[];isObject(object)||(object=Object(object));var length=object.length;length=length&&isLength(length)&&(isArray(object)||support.nonEnumArgs&&isArguments(object))&&length||0;for(var Ctor=object.constructor,index=-1,isProto=\"function\"==typeof Ctor&&Ctor.prototype===object,result=Array(length),skipIndexes=length>0;length>++index;)result[index]=index+\"\";for(var key in object)skipIndexes&&isIndex(key,length)||\"constructor\"==key&&(isProto||!hasOwnProperty.call(object,key))||result.push(key);return result}function values(object){return baseValues(object,keys(object))}function escapeRegExp(string){return string=baseToString(string),string&&reHasRegExpChars.test(string)?string.replace(reRegExpChars,\"\\\\$&\"):string}function callback(func,thisArg,guard){return guard&&isIterateeCall(func,thisArg,guard)&&(thisArg=null),baseCallback(func,thisArg)}function constant(value){return function(){return value}}function identity(value){return value}function property(path){return isKey(path)?baseProperty(path):basePropertyDeep(path)}var undefined,VERSION=\"3.7.0\",FUNC_ERROR_TEXT=\"Expected a function\",argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",funcTag=\"[object Function]\",mapTag=\"[object Map]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",setTag=\"[object Set]\",stringTag=\"[object String]\",weakMapTag=\"[object WeakMap]\",arrayBufferTag=\"[object ArrayBuffer]\",float32Tag=\"[object Float32Array]\",float64Tag=\"[object Float64Array]\",int8Tag=\"[object Int8Array]\",int16Tag=\"[object Int16Array]\",int32Tag=\"[object Int32Array]\",uint8Tag=\"[object Uint8Array]\",uint8ClampedTag=\"[object Uint8ClampedArray]\",uint16Tag=\"[object Uint16Array]\",uint32Tag=\"[object Uint32Array]\",reIsDeepProp=/\\.|\\[(?:[^[\\]]+|([\"'])(?:(?!\\1)[^\\n\\\\]|\\\\.)*?)\\1\\]/,reIsPlainProp=/^\\w*$/,rePropName=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g,reRegExpChars=/[.*+?^${}()|[\\]\\/\\\\]/g,reHasRegExpChars=RegExp(reRegExpChars.source),reEscapeChar=/\\\\(\\\\)?/g,reFlags=/\\w*$/,reIsHostCtor=/^\\[object .+?Constructor\\]$/,typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[stringTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=!0,cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[mapTag]=cloneableTags[setTag]=cloneableTags[weakMapTag]=!1;var objectTypes={\"function\":!0,object:!0},freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType&&exports,freeModule=objectTypes[typeof module]&&module&&!module.nodeType&&module,freeGlobal=freeExports&&freeModule&&\"object\"==typeof global&&global&&global.Object&&global,freeSelf=objectTypes[typeof self]&&self&&self.Object&&self,freeWindow=objectTypes[typeof window]&&window&&window.Object&&window,moduleExports=freeModule&&freeModule.exports===freeExports&&freeExports,root=freeGlobal||freeWindow!==(this&&this.window)&&freeWindow||freeSelf||this,arrayProto=Array.prototype,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+escapeRegExp(objToString).replace(/toString|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),ArrayBuffer=isNative(ArrayBuffer=root.ArrayBuffer)&&ArrayBuffer,bufferSlice=isNative(bufferSlice=ArrayBuffer&&new ArrayBuffer(0).slice)&&bufferSlice,floor=Math.floor,getOwnPropertySymbols=isNative(getOwnPropertySymbols=Object.getOwnPropertySymbols)&&getOwnPropertySymbols,getPrototypeOf=isNative(getPrototypeOf=Object.getPrototypeOf)&&getPrototypeOf,push=arrayProto.push,preventExtensions=isNative(Object.preventExtensions=Object.preventExtensions)&&preventExtensions,propertyIsEnumerable=objectProto.propertyIsEnumerable,Uint8Array=isNative(Uint8Array=root.Uint8Array)&&Uint8Array,Float64Array=function(){try{var func=isNative(func=root.Float64Array)&&func,result=new func(new ArrayBuffer(10),0,1)&&func}catch(e){}return result}(),nativeAssign=function(){var object={1:0},func=preventExtensions&&isNative(func=Object.assign)&&func;try{func(preventExtensions(object),\"xo\")}catch(e){}return!object[1]&&func}(),nativeIsArray=isNative(nativeIsArray=Array.isArray)&&nativeIsArray,nativeKeys=isNative(nativeKeys=Object.keys)&&nativeKeys,nativeMax=Math.max,nativeMin=Math.min,NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,MAX_ARRAY_LENGTH=Math.pow(2,32)-1,MAX_ARRAY_INDEX=MAX_ARRAY_LENGTH-1,HALF_MAX_ARRAY_LENGTH=MAX_ARRAY_LENGTH>>>1,FLOAT64_BYTES_PER_ELEMENT=Float64Array?Float64Array.BYTES_PER_ELEMENT:0,MAX_SAFE_INTEGER=Math.pow(2,53)-1,support=lodash.support={};(function(x){var Ctor=function(){this.x=x},props=[];Ctor.prototype={valueOf:x,y:x};for(var key in new Ctor)props.push(key);support.funcDecomp=/\\bthis\\b/.test(function(){return this}),support.funcNames=\"string\"==typeof Function.name;try{support.nonEnumArgs=!propertyIsEnumerable.call(arguments,1)}catch(e){support.nonEnumArgs=!0}})(1,0);var baseAssign=nativeAssign||function(object,source){return null==source?object:baseCopy(source,getSymbols(source),baseCopy(source,keys(source),object))},baseEach=createBaseEach(baseForOwn),baseFor=createBaseFor();bufferSlice||(bufferClone=ArrayBuffer&&Uint8Array?function(buffer){var byteLength=buffer.byteLength,floatLength=Float64Array?floor(byteLength/FLOAT64_BYTES_PER_ELEMENT):0,offset=floatLength*FLOAT64_BYTES_PER_ELEMENT,result=new ArrayBuffer(byteLength);if(floatLength){var view=new Float64Array(result,0,floatLength);view.set(new Float64Array(buffer,0,floatLength))}return byteLength!=offset&&(view=new Uint8Array(result,offset),view.set(new Uint8Array(buffer,offset))),result}:constant(null));var getLength=baseProperty(\"length\"),getSymbols=getOwnPropertySymbols?function(object){return getOwnPropertySymbols(toObject(object))}:constant([]),findLastIndex=createFindIndex(!0),zip=restParam(unzip),forEach=createForEach(arrayEach,baseEach),isArray=nativeIsArray||function(value){return isObjectLike(value)&&isLength(value.length)&&objToString.call(value)==arrayTag},isFunction=baseIsFunction(/x/)||Uint8Array&&!baseIsFunction(Uint8Array)?function(value){return objToString.call(value)==funcTag}:baseIsFunction,isPlainObject=getPrototypeOf?function(value){if(!value||objToString.call(value)!=objectTag)return!1;var valueOf=value.valueOf,objProto=isNative(valueOf)&&(objProto=getPrototypeOf(valueOf))&&getPrototypeOf(objProto);return objProto?value==objProto||getPrototypeOf(value)==objProto:shimIsPlainObject(value)}:shimIsPlainObject,assign=createAssigner(function(object,source,customizer){return customizer?assignWith(object,source,customizer):baseAssign(object,source)}),keys=nativeKeys?function(object){if(object)var Ctor=object.constructor,length=object.length;return\"function\"==typeof Ctor&&Ctor.prototype===object||\"function\"!=typeof object&&isLength(length)?shimKeys(object):isObject(object)?nativeKeys(object):[]}:shimKeys,merge=createAssigner(baseMerge);lodash.assign=assign,lodash.callback=callback,lodash.constant=constant,lodash.forEach=forEach,lodash.keys=keys,lodash.keysIn=keysIn,lodash.merge=merge,lodash.property=property,lodash.reject=reject,lodash.restParam=restParam,lodash.slice=slice,lodash.toPlainObject=toPlainObject,lodash.unzip=unzip,lodash.values=values,lodash.zip=zip,lodash.each=forEach,lodash.extend=assign,lodash.iteratee=callback,lodash.clone=clone,lodash.escapeRegExp=escapeRegExp,lodash.findLastIndex=findLastIndex,lodash.has=has,lodash.identity=identity,lodash.includes=includes,lodash.indexOf=indexOf,lodash.isArguments=isArguments,lodash.isArray=isArray,lodash.isEmpty=isEmpty,lodash.isFunction=isFunction,lodash.isNative=isNative,lodash.isNumber=isNumber,lodash.isObject=isObject,lodash.isPlainObject=isPlainObject,lodash.isString=isString,lodash.isTypedArray=isTypedArray,lodash.last=last,lodash.some=some,lodash.any=some,lodash.contains=includes,lodash.include=includes,lodash.VERSION=VERSION,freeExports&&freeModule?moduleExports?(freeModule.exports=lodash)._=lodash:freeExports._=lodash:root._=lodash\n}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],\"/node_modules/jshint/src/jshint.js\":[function(_dereq_,module,exports){var _=_dereq_(\"../lodash\"),events=_dereq_(\"events\"),vars=_dereq_(\"./vars.js\"),messages=_dereq_(\"./messages.js\"),Lexer=_dereq_(\"./lex.js\").Lexer,reg=_dereq_(\"./reg.js\"),state=_dereq_(\"./state.js\").state,style=_dereq_(\"./style.js\"),options=_dereq_(\"./options.js\"),scopeManager=_dereq_(\"./scope-manager.js\"),JSHINT=function(){\"use strict\";function checkOption(name,t){return name=name.trim(),/^[+-]W\\d{3}$/g.test(name)?!0:-1!==options.validNames.indexOf(name)||\"jslint\"===t.type||_.has(options.removed,name)?!0:(error(\"E001\",t,name),!1)}function isString(obj){return\"[object String]\"===Object.prototype.toString.call(obj)}function isIdentifier(tkn,value){return tkn?tkn.identifier&&tkn.value===value?!0:!1:!1}function isReserved(token){if(!token.reserved)return!1;var meta=token.meta;if(meta&&meta.isFutureReservedWord&&state.inES5()){if(!meta.es5)return!1;if(meta.strictOnly&&!state.option.strict&&!state.isStrict())return!1;if(token.isProperty)return!1}return!0}function supplant(str,data){return str.replace(/\\{([^{}]*)\\}/g,function(a,b){var r=data[b];return\"string\"==typeof r||\"number\"==typeof r?r:a})}function combine(dest,src){Object.keys(src).forEach(function(name){_.has(JSHINT.blacklist,name)||(dest[name]=src[name])})}function processenforceall(){if(state.option.enforceall){for(var enforceopt in options.bool.enforcing)void 0!==state.option[enforceopt]||options.noenforceall[enforceopt]||(state.option[enforceopt]=!0);for(var relaxopt in options.bool.relaxing)void 0===state.option[relaxopt]&&(state.option[relaxopt]=!1)}}function assume(){processenforceall(),state.option.esversion||state.option.moz||(state.option.esversion=state.option.es3?3:state.option.esnext?6:5),state.inES5()&&combine(predefined,vars.ecmaIdentifiers[5]),state.inES6()&&combine(predefined,vars.ecmaIdentifiers[6]),state.option.module&&(state.option.strict===!0&&(state.option.strict=\"global\"),state.inES6()||warning(\"W134\",state.tokens.next,\"module\",6)),state.option.couch&&combine(predefined,vars.couch),state.option.qunit&&combine(predefined,vars.qunit),state.option.rhino&&combine(predefined,vars.rhino),state.option.shelljs&&(combine(predefined,vars.shelljs),combine(predefined,vars.node)),state.option.typed&&combine(predefined,vars.typed),state.option.phantom&&(combine(predefined,vars.phantom),state.option.strict===!0&&(state.option.strict=\"global\")),state.option.prototypejs&&combine(predefined,vars.prototypejs),state.option.node&&(combine(predefined,vars.node),combine(predefined,vars.typed),state.option.strict===!0&&(state.option.strict=\"global\")),state.option.devel&&combine(predefined,vars.devel),state.option.dojo&&combine(predefined,vars.dojo),state.option.browser&&(combine(predefined,vars.browser),combine(predefined,vars.typed)),state.option.browserify&&(combine(predefined,vars.browser),combine(predefined,vars.typed),combine(predefined,vars.browserify),state.option.strict===!0&&(state.option.strict=\"global\")),state.option.nonstandard&&combine(predefined,vars.nonstandard),state.option.jasmine&&combine(predefined,vars.jasmine),state.option.jquery&&combine(predefined,vars.jquery),state.option.mootools&&combine(predefined,vars.mootools),state.option.worker&&combine(predefined,vars.worker),state.option.wsh&&combine(predefined,vars.wsh),state.option.globalstrict&&state.option.strict!==!1&&(state.option.strict=\"global\"),state.option.yui&&combine(predefined,vars.yui),state.option.mocha&&combine(predefined,vars.mocha)}function quit(code,line,chr){var percentage=Math.floor(100*(line/state.lines.length)),message=messages.errors[code].desc;throw{name:\"JSHintError\",line:line,character:chr,message:message+\" (\"+percentage+\"% scanned).\",raw:message,code:code}}function removeIgnoredMessages(){var ignored=state.ignoredLines;_.isEmpty(ignored)||(JSHINT.errors=_.reject(JSHINT.errors,function(err){return ignored[err.line]}))}function warning(code,t,a,b,c,d){var ch,l,w,msg;if(/^W\\d{3}$/.test(code)){if(state.ignored[code])return;msg=messages.warnings[code]}else/E\\d{3}/.test(code)?msg=messages.errors[code]:/I\\d{3}/.test(code)&&(msg=messages.info[code]);return t=t||state.tokens.next||{},\"(end)\"===t.id&&(t=state.tokens.curr),l=t.line||0,ch=t.from||0,w={id:\"(error)\",raw:msg.desc,code:msg.code,evidence:state.lines[l-1]||\"\",line:l,character:ch,scope:JSHINT.scope,a:a,b:b,c:c,d:d},w.reason=supplant(msg.desc,w),JSHINT.errors.push(w),removeIgnoredMessages(),JSHINT.errors.length>=state.option.maxerr&&quit(\"E043\",l,ch),w}function warningAt(m,l,ch,a,b,c,d){return warning(m,{line:l,from:ch},a,b,c,d)}function error(m,t,a,b,c,d){warning(m,t,a,b,c,d)}function errorAt(m,l,ch,a,b,c,d){return error(m,{line:l,from:ch},a,b,c,d)}function addInternalSrc(elem,src){var i;return i={id:\"(internal)\",elem:elem,value:src},JSHINT.internals.push(i),i}function doOption(){var nt=state.tokens.next,body=nt.body.match(/(-\\s+)?[^\\s,:]+(?:\\s*:\\s*(-\\s+)?[^\\s,]+)?/g)||[],predef={};if(\"globals\"===nt.type){body.forEach(function(g,idx){g=g.split(\":\");var key=(g[0]||\"\").trim(),val=(g[1]||\"\").trim();if(\"-\"===key||!key.length){if(idx>0&&idx===body.length-1)return;return error(\"E002\",nt),void 0}\"-\"===key.charAt(0)?(key=key.slice(1),val=!1,JSHINT.blacklist[key]=key,delete predefined[key]):predef[key]=\"true\"===val}),combine(predefined,predef);for(var key in predef)_.has(predef,key)&&(declared[key]=nt)}\"exported\"===nt.type&&body.forEach(function(e,idx){if(!e.length){if(idx>0&&idx===body.length-1)return;return error(\"E002\",nt),void 0}state.funct[\"(scope)\"].addExported(e)}),\"members\"===nt.type&&(membersOnly=membersOnly||{},body.forEach(function(m){var ch1=m.charAt(0),ch2=m.charAt(m.length-1);ch1!==ch2||'\"'!==ch1&&\"'\"!==ch1||(m=m.substr(1,m.length-2).replace('\\\\\"','\"')),membersOnly[m]=!1}));var numvals=[\"maxstatements\",\"maxparams\",\"maxdepth\",\"maxcomplexity\",\"maxerr\",\"maxlen\",\"indent\"];(\"jshint\"===nt.type||\"jslint\"===nt.type)&&(body.forEach(function(g){g=g.split(\":\");var key=(g[0]||\"\").trim(),val=(g[1]||\"\").trim();if(checkOption(key,nt))if(numvals.indexOf(key)>=0)if(\"false\"!==val){if(val=+val,\"number\"!=typeof val||!isFinite(val)||0>=val||Math.floor(val)!==val)return error(\"E032\",nt,g[1].trim()),void 0;state.option[key]=val}else state.option[key]=\"indent\"===key?4:!1;else{if(\"validthis\"===key)return state.funct[\"(global)\"]?void error(\"E009\"):\"true\"!==val&&\"false\"!==val?void error(\"E002\",nt):(state.option.validthis=\"true\"===val,void 0);if(\"quotmark\"!==key)if(\"shadow\"!==key)if(\"unused\"!==key)if(\"latedef\"!==key)if(\"ignore\"!==key)if(\"strict\"!==key){\"module\"===key&&(hasParsedCode(state.funct)||error(\"E055\",state.tokens.next,\"module\"));var esversions={es3:3,es5:5,esnext:6};if(!_.has(esversions,key)){if(\"esversion\"===key){switch(val){case\"5\":state.inES5(!0)&&warning(\"I003\");case\"3\":case\"6\":state.option.moz=!1,state.option.esversion=+val;break;case\"2015\":state.option.moz=!1,state.option.esversion=6;break;default:error(\"E002\",nt)}return hasParsedCode(state.funct)||error(\"E055\",state.tokens.next,\"esversion\"),void 0}var match=/^([+-])(W\\d{3})$/g.exec(key);if(match)return state.ignored[match[2]]=\"-\"===match[1],void 0;var tn;return\"true\"===val||\"false\"===val?(\"jslint\"===nt.type?(tn=options.renamed[key]||key,state.option[tn]=\"true\"===val,void 0!==options.inverted[tn]&&(state.option[tn]=!state.option[tn])):state.option[key]=\"true\"===val,\"newcap\"===key&&(state.option[\"(explicitNewcap)\"]=!0),void 0):(error(\"E002\",nt),void 0)}switch(val){case\"true\":state.option.moz=!1,state.option.esversion=esversions[key];break;case\"false\":state.option.moz||(state.option.esversion=5);break;default:error(\"E002\",nt)}}else switch(val){case\"true\":state.option.strict=!0;break;case\"false\":state.option.strict=!1;break;case\"func\":case\"global\":case\"implied\":state.option.strict=val;break;default:error(\"E002\",nt)}else switch(val){case\"line\":state.ignoredLines[nt.line]=!0,removeIgnoredMessages();break;default:error(\"E002\",nt)}else switch(val){case\"true\":state.option.latedef=!0;break;case\"false\":state.option.latedef=!1;break;case\"nofunc\":state.option.latedef=\"nofunc\";break;default:error(\"E002\",nt)}else switch(val){case\"true\":state.option.unused=!0;break;case\"false\":state.option.unused=!1;break;case\"vars\":case\"strict\":state.option.unused=val;break;default:error(\"E002\",nt)}else switch(val){case\"true\":state.option.shadow=!0;break;case\"outer\":state.option.shadow=\"outer\";break;case\"false\":case\"inner\":state.option.shadow=\"inner\";break;default:error(\"E002\",nt)}else switch(val){case\"true\":case\"false\":state.option.quotmark=\"true\"===val;break;case\"double\":case\"single\":state.option.quotmark=val;break;default:error(\"E002\",nt)}}}),assume())}function peek(p){var t,i=p||0,j=lookahead.length;if(j>i)return lookahead[i];for(;i>=j;)t=lookahead[j],t||(t=lookahead[j]=lex.token()),j+=1;return t||\"(end)\"!==state.tokens.next.id?t:state.tokens.next}function peekIgnoreEOL(){var t,i=0;do t=peek(i++);while(\"(endline)\"===t.id);return t}function advance(id,t){switch(state.tokens.curr.id){case\"(number)\":\".\"===state.tokens.next.id&&warning(\"W005\",state.tokens.curr);break;case\"-\":(\"-\"===state.tokens.next.id||\"--\"===state.tokens.next.id)&&warning(\"W006\");break;case\"+\":(\"+\"===state.tokens.next.id||\"++\"===state.tokens.next.id)&&warning(\"W007\")}for(id&&state.tokens.next.id!==id&&(t?\"(end)\"===state.tokens.next.id?error(\"E019\",t,t.id):error(\"E020\",state.tokens.next,id,t.id,t.line,state.tokens.next.value):(\"(identifier)\"!==state.tokens.next.type||state.tokens.next.value!==id)&&warning(\"W116\",state.tokens.next,id,state.tokens.next.value)),state.tokens.prev=state.tokens.curr,state.tokens.curr=state.tokens.next;;){if(state.tokens.next=lookahead.shift()||lex.token(),state.tokens.next||quit(\"E041\",state.tokens.curr.line),\"(end)\"===state.tokens.next.id||\"(error)\"===state.tokens.next.id)return;if(state.tokens.next.check&&state.tokens.next.check(),state.tokens.next.isSpecial)\"falls through\"===state.tokens.next.type?state.tokens.curr.caseFallsThrough=!0:doOption();else if(\"(endline)\"!==state.tokens.next.id)break}}function isInfix(token){return token.infix||!token.identifier&&!token.template&&!!token.led}function isEndOfExpr(){var curr=state.tokens.curr,next=state.tokens.next;return\";\"===next.id||\"}\"===next.id||\":\"===next.id?!0:isInfix(next)===isInfix(curr)||\"yield\"===curr.id&&state.inMoz()?curr.line!==startLine(next):!1}function isBeginOfExpr(prev){return!prev.left&&\"unary\"!==prev.arity}function expression(rbp,initial){var left,isArray=!1,isObject=!1,isLetExpr=!1;state.nameStack.push(),initial||\"let\"!==state.tokens.next.value||\"(\"!==peek(0).value||(state.inMoz()||warning(\"W118\",state.tokens.next,\"let expressions\"),isLetExpr=!0,state.funct[\"(scope)\"].stack(),advance(\"let\"),advance(\"(\"),state.tokens.prev.fud(),advance(\")\")),\"(end)\"===state.tokens.next.id&&error(\"E006\",state.tokens.curr);var isDangerous=state.option.asi&&state.tokens.prev.line!==startLine(state.tokens.curr)&&_.contains([\"]\",\")\"],state.tokens.prev.id)&&_.contains([\"[\",\"(\"],state.tokens.curr.id);if(isDangerous&&warning(\"W014\",state.tokens.curr,state.tokens.curr.id),advance(),initial&&(state.funct[\"(verb)\"]=state.tokens.curr.value,state.tokens.curr.beginsStmt=!0),initial===!0&&state.tokens.curr.fud)left=state.tokens.curr.fud();else for(state.tokens.curr.nud?left=state.tokens.curr.nud():error(\"E030\",state.tokens.curr,state.tokens.curr.id);(state.tokens.next.lbp>rbp||\"(template)\"===state.tokens.next.type)&&!isEndOfExpr();)isArray=\"Array\"===state.tokens.curr.value,isObject=\"Object\"===state.tokens.curr.value,left&&(left.value||left.first&&left.first.value)&&(\"new\"!==left.value||left.first&&left.first.value&&\".\"===left.first.value)&&(isArray=!1,left.value!==state.tokens.curr.value&&(isObject=!1)),advance(),isArray&&\"(\"===state.tokens.curr.id&&\")\"===state.tokens.next.id&&warning(\"W009\",state.tokens.curr),isObject&&\"(\"===state.tokens.curr.id&&\")\"===state.tokens.next.id&&warning(\"W010\",state.tokens.curr),left&&state.tokens.curr.led?left=state.tokens.curr.led(left):error(\"E033\",state.tokens.curr,state.tokens.curr.id);return isLetExpr&&state.funct[\"(scope)\"].unstack(),state.nameStack.pop(),left}function startLine(token){return token.startLine||token.line}function nobreaknonadjacent(left,right){left=left||state.tokens.curr,right=right||state.tokens.next,state.option.laxbreak||left.line===startLine(right)||warning(\"W014\",right,right.value)}function nolinebreak(t){t=t||state.tokens.curr,t.line!==startLine(state.tokens.next)&&warning(\"E022\",t,t.value)}function nobreakcomma(left,right){left.line!==startLine(right)&&(state.option.laxcomma||(comma.first&&(warning(\"I001\"),comma.first=!1),warning(\"W014\",left,right.value)))}function comma(opts){if(opts=opts||{},opts.peek?nobreakcomma(state.tokens.prev,state.tokens.curr):(nobreakcomma(state.tokens.curr,state.tokens.next),advance(\",\")),state.tokens.next.identifier&&(!opts.property||!state.inES5()))switch(state.tokens.next.value){case\"break\":case\"case\":case\"catch\":case\"continue\":case\"default\":case\"do\":case\"else\":case\"finally\":case\"for\":case\"if\":case\"in\":case\"instanceof\":case\"return\":case\"switch\":case\"throw\":case\"try\":case\"var\":case\"let\":case\"while\":case\"with\":return error(\"E024\",state.tokens.next,state.tokens.next.value),!1}if(\"(punctuator)\"===state.tokens.next.type)switch(state.tokens.next.value){case\"}\":case\"]\":case\",\":if(opts.allowTrailing)return!0;case\")\":return error(\"E024\",state.tokens.next,state.tokens.next.value),!1}return!0}function symbol(s,p){var x=state.syntax[s];return x&&\"object\"==typeof x||(state.syntax[s]=x={id:s,lbp:p,value:s}),x}function delim(s){var x=symbol(s,0);return x.delim=!0,x}function stmt(s,f){var x=delim(s);return x.identifier=x.reserved=!0,x.fud=f,x}function blockstmt(s,f){var x=stmt(s,f);return x.block=!0,x}function reserveName(x){var c=x.id.charAt(0);return(c>=\"a\"&&\"z\">=c||c>=\"A\"&&\"Z\">=c)&&(x.identifier=x.reserved=!0),x}function prefix(s,f){var x=symbol(s,150);return reserveName(x),x.nud=\"function\"==typeof f?f:function(){return this.arity=\"unary\",this.right=expression(150),(\"++\"===this.id||\"--\"===this.id)&&(state.option.plusplus?warning(\"W016\",this,this.id):!this.right||this.right.identifier&&!isReserved(this.right)||\".\"===this.right.id||\"[\"===this.right.id||warning(\"W017\",this),this.right&&this.right.isMetaProperty?error(\"E031\",this):this.right&&this.right.identifier&&state.funct[\"(scope)\"].block.modify(this.right.value,this)),this},x}function type(s,f){var x=delim(s);return x.type=s,x.nud=f,x}function reserve(name,func){var x=type(name,func);return x.identifier=!0,x.reserved=!0,x}function FutureReservedWord(name,meta){var x=type(name,meta&&meta.nud||function(){return this});return meta=meta||{},meta.isFutureReservedWord=!0,x.value=name,x.identifier=!0,x.reserved=!0,x.meta=meta,x}function reservevar(s,v){return reserve(s,function(){return\"function\"==typeof v&&v(this),this})}function infix(s,f,p,w){var x=symbol(s,p);return reserveName(x),x.infix=!0,x.led=function(left){return w||nobreaknonadjacent(state.tokens.prev,state.tokens.curr),\"in\"!==s&&\"instanceof\"!==s||\"!\"!==left.id||warning(\"W018\",left,\"!\"),\"function\"==typeof f?f(left,this):(this.left=left,this.right=expression(p),this)},x}function application(s){var x=symbol(s,42);return x.led=function(left){return nobreaknonadjacent(state.tokens.prev,state.tokens.curr),this.left=left,this.right=doFunction({type:\"arrow\",loneArg:left}),this},x}function relation(s,f){var x=symbol(s,100);return x.led=function(left){nobreaknonadjacent(state.tokens.prev,state.tokens.curr),this.left=left;var right=this.right=expression(100);return isIdentifier(left,\"NaN\")||isIdentifier(right,\"NaN\")?warning(\"W019\",this):f&&f.apply(this,[left,right]),left&&right||quit(\"E041\",state.tokens.curr.line),\"!\"===left.id&&warning(\"W018\",left,\"!\"),\"!\"===right.id&&warning(\"W018\",right,\"!\"),this},x}function isPoorRelation(node){return node&&(\"(number)\"===node.type&&0===+node.value||\"(string)\"===node.type&&\"\"===node.value||\"null\"===node.type&&!state.option.eqnull||\"true\"===node.type||\"false\"===node.type||\"undefined\"===node.type)}function isTypoTypeof(left,right,state){var values;return state.option.notypeof?!1:left&&right?(values=state.inES6()?typeofValues.es6:typeofValues.es3,\"(identifier)\"===right.type&&\"typeof\"===right.value&&\"(string)\"===left.type?!_.contains(values,left.value):!1):!1}function isGlobalEval(left,state){var isGlobal=!1;return\"this\"===left.type&&null===state.funct[\"(context)\"]?isGlobal=!0:\"(identifier)\"===left.type&&(state.option.node&&\"global\"===left.value?isGlobal=!0:!state.option.browser||\"window\"!==left.value&&\"document\"!==left.value||(isGlobal=!0)),isGlobal}function findNativePrototype(left){function walkPrototype(obj){return\"object\"==typeof obj?\"prototype\"===obj.right?obj:walkPrototype(obj.left):void 0}function walkNative(obj){for(;!obj.identifier&&\"object\"==typeof obj.left;)obj=obj.left;return obj.identifier&&natives.indexOf(obj.value)>=0?obj.value:void 0}var natives=[\"Array\",\"ArrayBuffer\",\"Boolean\",\"Collator\",\"DataView\",\"Date\",\"DateTimeFormat\",\"Error\",\"EvalError\",\"Float32Array\",\"Float64Array\",\"Function\",\"Infinity\",\"Intl\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Iterator\",\"Number\",\"NumberFormat\",\"Object\",\"RangeError\",\"ReferenceError\",\"RegExp\",\"StopIteration\",\"String\",\"SyntaxError\",\"TypeError\",\"Uint16Array\",\"Uint32Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"URIError\"],prototype=walkPrototype(left);return prototype?walkNative(prototype):void 0}function checkLeftSideAssign(left,assignToken,options){var allowDestructuring=options&&options.allowDestructuring;if(assignToken=assignToken||left,state.option.freeze){var nativeObject=findNativePrototype(left);nativeObject&&warning(\"W121\",left,nativeObject)}return left.identifier&&!left.isMetaProperty&&state.funct[\"(scope)\"].block.reassign(left.value,left),\".\"===left.id?((!left.left||\"arguments\"===left.left.value&&!state.isStrict())&&warning(\"E031\",assignToken),state.nameStack.set(state.tokens.prev),!0):\"{\"===left.id||\"[\"===left.id?(allowDestructuring&&state.tokens.curr.left.destructAssign?state.tokens.curr.left.destructAssign.forEach(function(t){t.id&&state.funct[\"(scope)\"].block.modify(t.id,t.token)}):\"{\"!==left.id&&left.left?\"arguments\"!==left.left.value||state.isStrict()||warning(\"E031\",assignToken):warning(\"E031\",assignToken),\"[\"===left.id&&state.nameStack.set(left.right),!0):left.isMetaProperty?(error(\"E031\",assignToken),!0):left.identifier&&!isReserved(left)?(\"exception\"===state.funct[\"(scope)\"].labeltype(left.value)&&warning(\"W022\",left),state.nameStack.set(left),!0):(left===state.syntax[\"function\"]&&warning(\"W023\",state.tokens.curr),!1)}function assignop(s,f,p){var x=infix(s,\"function\"==typeof f?f:function(left,that){return that.left=left,left&&checkLeftSideAssign(left,that,{allowDestructuring:!0})?(that.right=expression(10),that):(error(\"E031\",that),void 0)},p);return x.exps=!0,x.assign=!0,x}function bitwise(s,f,p){var x=symbol(s,p);return reserveName(x),x.led=\"function\"==typeof f?f:function(left){return state.option.bitwise&&warning(\"W016\",this,this.id),this.left=left,this.right=expression(p),this},x}function bitwiseassignop(s){return assignop(s,function(left,that){return state.option.bitwise&&warning(\"W016\",that,that.id),left&&checkLeftSideAssign(left,that)?(that.right=expression(10),that):(error(\"E031\",that),void 0)},20)}function suffix(s){var x=symbol(s,150);return x.led=function(left){return state.option.plusplus?warning(\"W016\",this,this.id):left.identifier&&!isReserved(left)||\".\"===left.id||\"[\"===left.id||warning(\"W017\",this),left.isMetaProperty?error(\"E031\",this):left&&left.identifier&&state.funct[\"(scope)\"].block.modify(left.value,left),this.left=left,this},x}function optionalidentifier(fnparam,prop,preserve){if(state.tokens.next.identifier){preserve||advance();var curr=state.tokens.curr,val=state.tokens.curr.value;return isReserved(curr)?prop&&state.inES5()?val:fnparam&&\"undefined\"===val?val:(warning(\"W024\",state.tokens.curr,state.tokens.curr.id),val):val}}function identifier(fnparam,prop){var i=optionalidentifier(fnparam,prop,!1);if(i)return i;if(\"...\"===state.tokens.next.value){if(state.inES6(!0)||warning(\"W119\",state.tokens.next,\"spread/rest operator\",\"6\"),advance(),checkPunctuator(state.tokens.next,\"...\"))for(warning(\"E024\",state.tokens.next,\"...\");checkPunctuator(state.tokens.next,\"...\");)advance();return state.tokens.next.identifier?identifier(fnparam,prop):(warning(\"E024\",state.tokens.curr,\"...\"),void 0)}error(\"E030\",state.tokens.next,state.tokens.next.value),\";\"!==state.tokens.next.id&&advance()}function reachable(controlToken){var t,i=0;if(\";\"===state.tokens.next.id&&!controlToken.inBracelessBlock)for(;;){do t=peek(i),i+=1;while(\"(end)\"!==t.id&&\"(comment)\"===t.id);if(t.reach)return;if(\"(endline)\"!==t.id){if(\"function\"===t.id){state.option.latedef===!0&&warning(\"W026\",t);break}warning(\"W027\",t,t.value,controlToken.value);break}}}function parseFinalSemicolon(){if(\";\"!==state.tokens.next.id){if(state.tokens.next.isUnclosed)return advance();var sameLine=startLine(state.tokens.next)===state.tokens.curr.line&&\"(end)\"!==state.tokens.next.id,blockEnd=checkPunctuator(state.tokens.next,\"}\");sameLine&&!blockEnd?errorAt(\"E058\",state.tokens.curr.line,state.tokens.curr.character):state.option.asi||(blockEnd&&!state.option.lastsemic||!sameLine)&&warningAt(\"W033\",state.tokens.curr.line,state.tokens.curr.character)}else advance(\";\")}function statement(){var r,i=indent,t=state.tokens.next,hasOwnScope=!1;if(\";\"===t.id)return advance(\";\"),void 0;var res=isReserved(t);if(res&&t.meta&&t.meta.isFutureReservedWord&&\":\"===peek().id&&(warning(\"W024\",t,t.id),res=!1),t.identifier&&!res&&\":\"===peek().id&&(advance(),advance(\":\"),hasOwnScope=!0,state.funct[\"(scope)\"].stack(),state.funct[\"(scope)\"].block.addBreakLabel(t.value,{token:state.tokens.curr}),state.tokens.next.labelled||\"{\"===state.tokens.next.value||warning(\"W028\",state.tokens.next,t.value,state.tokens.next.value),state.tokens.next.label=t.value,t=state.tokens.next),\"{\"===t.id){var iscase=\"case\"===state.funct[\"(verb)\"]&&\":\"===state.tokens.curr.value;return block(!0,!0,!1,!1,iscase),void 0}return r=expression(0,!0),!r||r.identifier&&\"function\"===r.value||\"(punctuator)\"===r.type&&r.left&&r.left.identifier&&\"function\"===r.left.value||state.isStrict()||\"global\"!==state.option.strict||warning(\"E007\"),t.block||(state.option.expr||r&&r.exps?state.option.nonew&&r&&r.left&&\"(\"===r.id&&\"new\"===r.left.id&&warning(\"W031\",t):warning(\"W030\",state.tokens.curr),parseFinalSemicolon()),indent=i,hasOwnScope&&state.funct[\"(scope)\"].unstack(),r}function statements(){for(var p,a=[];!state.tokens.next.reach&&\"(end)\"!==state.tokens.next.id;)\";\"===state.tokens.next.id?(p=peek(),(!p||\"(\"!==p.id&&\"[\"!==p.id)&&warning(\"W032\"),advance(\";\")):a.push(statement());return a}function directives(){for(var i,p,pn;\"(string)\"===state.tokens.next.id;){if(p=peek(0),\"(endline)\"===p.id){i=1;do pn=peek(i++);while(\"(endline)\"===pn.id);if(\";\"===pn.id)p=pn;else{if(\"[\"===pn.value||\".\"===pn.value)break;state.option.asi&&\"(\"!==pn.value||warning(\"W033\",state.tokens.next)}}else{if(\".\"===p.id||\"[\"===p.id)break;\";\"!==p.id&&warning(\"W033\",p)}advance();var directive=state.tokens.curr.value;(state.directive[directive]||\"use strict\"===directive&&\"implied\"===state.option.strict)&&warning(\"W034\",state.tokens.curr,directive),state.directive[directive]=!0,\";\"===p.id&&advance(\";\")}state.isStrict()&&(state.option[\"(explicitNewcap)\"]||(state.option.newcap=!0),state.option.undef=!0)}function block(ordinary,stmt,isfunc,isfatarrow,iscase){var a,m,t,line,d,b=inblock,old_indent=indent;inblock=ordinary,t=state.tokens.next;var metrics=state.funct[\"(metrics)\"];if(metrics.nestedBlockDepth+=1,metrics.verifyMaxNestedBlockDepthPerFunction(),\"{\"===state.tokens.next.id){if(advance(\"{\"),state.funct[\"(scope)\"].stack(),line=state.tokens.curr.line,\"}\"!==state.tokens.next.id){for(indent+=state.option.indent;!ordinary&&state.tokens.next.from>indent;)indent+=state.option.indent;if(isfunc){m={};for(d in state.directive)_.has(state.directive,d)&&(m[d]=state.directive[d]);directives(),state.option.strict&&state.funct[\"(context)\"][\"(global)\"]&&(m[\"use strict\"]||state.isStrict()||warning(\"E007\"))}a=statements(),metrics.statementCount+=a.length,indent-=state.option.indent}advance(\"}\",t),isfunc&&(state.funct[\"(scope)\"].validateParams(),m&&(state.directive=m)),state.funct[\"(scope)\"].unstack(),indent=old_indent}else if(ordinary)state.funct[\"(noblockscopedvar)\"]=\"for\"!==state.tokens.next.id,state.funct[\"(scope)\"].stack(),(!stmt||state.option.curly)&&warning(\"W116\",state.tokens.next,\"{\",state.tokens.next.value),state.tokens.next.inBracelessBlock=!0,indent+=state.option.indent,a=[statement()],indent-=state.option.indent,state.funct[\"(scope)\"].unstack(),delete state.funct[\"(noblockscopedvar)\"];else if(isfunc){if(state.funct[\"(scope)\"].stack(),m={},!stmt||isfatarrow||state.inMoz()||error(\"W118\",state.tokens.curr,\"function closure expressions\"),!stmt)for(d in state.directive)_.has(state.directive,d)&&(m[d]=state.directive[d]);expression(10),state.option.strict&&state.funct[\"(context)\"][\"(global)\"]&&(m[\"use strict\"]||state.isStrict()||warning(\"E007\")),state.funct[\"(scope)\"].unstack()}else error(\"E021\",state.tokens.next,\"{\",state.tokens.next.value);switch(state.funct[\"(verb)\"]){case\"break\":case\"continue\":case\"return\":case\"throw\":if(iscase)break;default:state.funct[\"(verb)\"]=null}return inblock=b,!ordinary||!state.option.noempty||a&&0!==a.length||warning(\"W035\",state.tokens.prev),metrics.nestedBlockDepth-=1,a}function countMember(m){membersOnly&&\"boolean\"!=typeof membersOnly[m]&&warning(\"W036\",state.tokens.curr,m),\"number\"==typeof member[m]?member[m]+=1:member[m]=1}function comprehensiveArrayExpression(){var res={};res.exps=!0,state.funct[\"(comparray)\"].stack();var reversed=!1;return\"for\"!==state.tokens.next.value&&(reversed=!0,state.inMoz()||warning(\"W116\",state.tokens.next,\"for\",state.tokens.next.value),state.funct[\"(comparray)\"].setState(\"use\"),res.right=expression(10)),advance(\"for\"),\"each\"===state.tokens.next.value&&(advance(\"each\"),state.inMoz()||warning(\"W118\",state.tokens.curr,\"for each\")),advance(\"(\"),state.funct[\"(comparray)\"].setState(\"define\"),res.left=expression(130),_.contains([\"in\",\"of\"],state.tokens.next.value)?advance():error(\"E045\",state.tokens.curr),state.funct[\"(comparray)\"].setState(\"generate\"),expression(10),advance(\")\"),\"if\"===state.tokens.next.value&&(advance(\"if\"),advance(\"(\"),state.funct[\"(comparray)\"].setState(\"filter\"),res.filter=expression(10),advance(\")\")),reversed||(state.funct[\"(comparray)\"].setState(\"use\"),res.right=expression(10)),advance(\"]\"),state.funct[\"(comparray)\"].unstack(),res}function isMethod(){return state.funct[\"(statement)\"]&&\"class\"===state.funct[\"(statement)\"].type||state.funct[\"(context)\"]&&\"class\"===state.funct[\"(context)\"][\"(verb)\"]}function isPropertyName(token){return token.identifier||\"(string)\"===token.id||\"(number)\"===token.id}function propertyName(preserveOrToken){var id,preserve=!0;return\"object\"==typeof preserveOrToken?id=preserveOrToken:(preserve=preserveOrToken,id=optionalidentifier(!1,!0,preserve)),id?\"object\"==typeof id&&(\"(string)\"===id.id||\"(identifier)\"===id.id?id=id.value:\"(number)\"===id.id&&(id=\"\"+id.value)):\"(string)\"===state.tokens.next.id?(id=state.tokens.next.value,preserve||advance()):\"(number)\"===state.tokens.next.id&&(id=\"\"+state.tokens.next.value,preserve||advance()),\"hasOwnProperty\"===id&&warning(\"W001\"),id}function functionparams(options){function addParam(addParamArgs){state.funct[\"(scope)\"].addParam.apply(state.funct[\"(scope)\"],addParamArgs)}var next,ident,t,paramsIds=[],tokens=[],pastDefault=!1,pastRest=!1,arity=0,loneArg=options&&options.loneArg;if(loneArg&&loneArg.identifier===!0)return state.funct[\"(scope)\"].addParam(loneArg.value,loneArg),{arity:1,params:[loneArg.value]};if(next=state.tokens.next,options&&options.parsedOpening||advance(\"(\"),\")\"===state.tokens.next.id)return advance(\")\"),void 0;for(;;){arity++;var currentParams=[];if(_.contains([\"{\",\"[\"],state.tokens.next.id)){tokens=destructuringPattern();for(t in tokens)t=tokens[t],t.id&&(paramsIds.push(t.id),currentParams.push([t.id,t.token]))}else if(checkPunctuator(state.tokens.next,\"...\")&&(pastRest=!0),ident=identifier(!0))paramsIds.push(ident),currentParams.push([ident,state.tokens.curr]);else for(;!checkPunctuators(state.tokens.next,[\",\",\")\"]);)advance();if(pastDefault&&\"=\"!==state.tokens.next.id&&error(\"W138\",state.tokens.current),\"=\"===state.tokens.next.id&&(state.inES6()||warning(\"W119\",state.tokens.next,\"default parameters\",\"6\"),advance(\"=\"),pastDefault=!0,expression(10)),currentParams.forEach(addParam),\",\"!==state.tokens.next.id)return advance(\")\",next),{arity:arity,params:paramsIds};pastRest&&warning(\"W131\",state.tokens.next),comma()}}function functor(name,token,overwrites){var funct={\"(name)\":name,\"(breakage)\":0,\"(loopage)\":0,\"(tokens)\":{},\"(properties)\":{},\"(catch)\":!1,\"(global)\":!1,\"(line)\":null,\"(character)\":null,\"(metrics)\":null,\"(statement)\":null,\"(context)\":null,\"(scope)\":null,\"(comparray)\":null,\"(generator)\":null,\"(arrow)\":null,\"(params)\":null};return token&&_.extend(funct,{\"(line)\":token.line,\"(character)\":token.character,\"(metrics)\":createMetrics(token)}),_.extend(funct,overwrites),funct[\"(context)\"]&&(funct[\"(scope)\"]=funct[\"(context)\"][\"(scope)\"],funct[\"(comparray)\"]=funct[\"(context)\"][\"(comparray)\"]),funct}function isFunctor(token){return\"(scope)\"in token}function hasParsedCode(funct){return funct[\"(global)\"]&&!funct[\"(verb)\"]}function doTemplateLiteral(left){function end(){if(state.tokens.curr.template&&state.tokens.curr.tail&&state.tokens.curr.context===ctx)return!0;var complete=state.tokens.next.template&&state.tokens.next.tail&&state.tokens.next.context===ctx;return complete&&advance(),complete||state.tokens.next.isUnclosed}var ctx=this.context,noSubst=this.noSubst,depth=this.depth;if(!noSubst)for(;!end();)!state.tokens.next.template||state.tokens.next.depth>depth?expression(0):advance();return{id:\"(template)\",type:\"(template)\",tag:left}}function doFunction(options){var f,token,name,statement,classExprBinding,isGenerator,isArrow,ignoreLoopFunc,oldOption=state.option,oldIgnored=state.ignored;options&&(name=options.name,statement=options.statement,classExprBinding=options.classExprBinding,isGenerator=\"generator\"===options.type,isArrow=\"arrow\"===options.type,ignoreLoopFunc=options.ignoreLoopFunc),state.option=Object.create(state.option),state.ignored=Object.create(state.ignored),state.funct=functor(name||state.nameStack.infer(),state.tokens.next,{\"(statement)\":statement,\"(context)\":state.funct,\"(arrow)\":isArrow,\"(generator)\":isGenerator}),f=state.funct,token=state.tokens.curr,token.funct=state.funct,functions.push(state.funct),state.funct[\"(scope)\"].stack(\"functionouter\");var internallyAccessibleName=name||classExprBinding;internallyAccessibleName&&state.funct[\"(scope)\"].block.add(internallyAccessibleName,classExprBinding?\"class\":\"function\",state.tokens.curr,!1),state.funct[\"(scope)\"].stack(\"functionparams\");var paramsInfo=functionparams(options);return paramsInfo?(state.funct[\"(params)\"]=paramsInfo.params,state.funct[\"(metrics)\"].arity=paramsInfo.arity,state.funct[\"(metrics)\"].verifyMaxParametersPerFunction()):state.funct[\"(metrics)\"].arity=0,isArrow&&(state.inES6(!0)||warning(\"W119\",state.tokens.curr,\"arrow function syntax (=>)\",\"6\"),options.loneArg||advance(\"=>\")),block(!1,!0,!0,isArrow),!state.option.noyield&&isGenerator&&\"yielded\"!==state.funct[\"(generator)\"]&&warning(\"W124\",state.tokens.curr),state.funct[\"(metrics)\"].verifyMaxStatementsPerFunction(),state.funct[\"(metrics)\"].verifyMaxComplexityPerFunction(),state.funct[\"(unusedOption)\"]=state.option.unused,state.option=oldOption,state.ignored=oldIgnored,state.funct[\"(last)\"]=state.tokens.curr.line,state.funct[\"(lastcharacter)\"]=state.tokens.curr.character,state.funct[\"(scope)\"].unstack(),state.funct[\"(scope)\"].unstack(),state.funct=state.funct[\"(context)\"],ignoreLoopFunc||state.option.loopfunc||!state.funct[\"(loopage)\"]||f[\"(isCapturing)\"]&&warning(\"W083\",token),f}function createMetrics(functionStartToken){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,arity:0,verifyMaxStatementsPerFunction:function(){state.option.maxstatements&&this.statementCount>state.option.maxstatements&&warning(\"W071\",functionStartToken,this.statementCount)\n},verifyMaxParametersPerFunction:function(){_.isNumber(state.option.maxparams)&&this.arity>state.option.maxparams&&warning(\"W072\",functionStartToken,this.arity)},verifyMaxNestedBlockDepthPerFunction:function(){state.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===state.option.maxdepth+1&&warning(\"W073\",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var max=state.option.maxcomplexity,cc=this.ComplexityCount;max&&cc>max&&warning(\"W074\",functionStartToken,cc)}}}function increaseComplexityCount(){state.funct[\"(metrics)\"].ComplexityCount+=1}function checkCondAssignment(expr){var id,paren;switch(expr&&(id=expr.id,paren=expr.paren,\",\"===id&&(expr=expr.exprs[expr.exprs.length-1])&&(id=expr.id,paren=paren||expr.paren)),id){case\"=\":case\"+=\":case\"-=\":case\"*=\":case\"%=\":case\"&=\":case\"|=\":case\"^=\":case\"/=\":paren||state.option.boss||warning(\"W084\")}}function checkProperties(props){if(state.inES5())for(var name in props)props[name]&&props[name].setterToken&&!props[name].getterToken&&warning(\"W078\",props[name].setterToken)}function metaProperty(name,c){if(checkPunctuator(state.tokens.next,\".\")){var left=state.tokens.curr.id;advance(\".\");var id=identifier();return state.tokens.curr.isMetaProperty=!0,name!==id?error(\"E057\",state.tokens.prev,left,id):c(),state.tokens.curr}}function destructuringPattern(options){var isAssignment=options&&options.assignment;return state.inES6()||warning(\"W104\",state.tokens.curr,isAssignment?\"destructuring assignment\":\"destructuring binding\",\"6\"),destructuringPatternRecursive(options)}function destructuringPatternRecursive(options){var ids,identifiers=[],openingParsed=options&&options.openingParsed,isAssignment=options&&options.assignment,recursiveOptions=isAssignment?{assignment:isAssignment}:null,firstToken=openingParsed?state.tokens.curr:state.tokens.next,nextInnerDE=function(){var ident;if(checkPunctuators(state.tokens.next,[\"[\",\"{\"])){ids=destructuringPatternRecursive(recursiveOptions);for(var id in ids)id=ids[id],identifiers.push({id:id.id,token:id.token})}else if(checkPunctuator(state.tokens.next,\",\"))identifiers.push({id:null,token:state.tokens.curr});else{if(!checkPunctuator(state.tokens.next,\"(\")){var is_rest=checkPunctuator(state.tokens.next,\"...\");if(isAssignment){var identifierToken=is_rest?peek(0):state.tokens.next;identifierToken.identifier||warning(\"E030\",identifierToken,identifierToken.value);var assignTarget=expression(155);assignTarget&&(checkLeftSideAssign(assignTarget),assignTarget.identifier&&(ident=assignTarget.value))}else ident=identifier();return ident&&identifiers.push({id:ident,token:state.tokens.curr}),is_rest}advance(\"(\"),nextInnerDE(),advance(\")\")}return!1},assignmentProperty=function(){var id;checkPunctuator(state.tokens.next,\"[\")?(advance(\"[\"),expression(10),advance(\"]\"),advance(\":\"),nextInnerDE()):\"(string)\"===state.tokens.next.id||\"(number)\"===state.tokens.next.id?(advance(),advance(\":\"),nextInnerDE()):(id=identifier(),checkPunctuator(state.tokens.next,\":\")?(advance(\":\"),nextInnerDE()):id&&(isAssignment&&checkLeftSideAssign(state.tokens.curr),identifiers.push({id:id,token:state.tokens.curr})))};if(checkPunctuator(firstToken,\"[\")){openingParsed||advance(\"[\"),checkPunctuator(state.tokens.next,\"]\")&&warning(\"W137\",state.tokens.curr);for(var element_after_rest=!1;!checkPunctuator(state.tokens.next,\"]\");)nextInnerDE()&&!element_after_rest&&checkPunctuator(state.tokens.next,\",\")&&(warning(\"W130\",state.tokens.next),element_after_rest=!0),checkPunctuator(state.tokens.next,\"=\")&&(checkPunctuator(state.tokens.prev,\"...\")?advance(\"]\"):advance(\"=\"),\"undefined\"===state.tokens.next.id&&warning(\"W080\",state.tokens.prev,state.tokens.prev.value),expression(10)),checkPunctuator(state.tokens.next,\"]\")||advance(\",\");advance(\"]\")}else if(checkPunctuator(firstToken,\"{\")){for(openingParsed||advance(\"{\"),checkPunctuator(state.tokens.next,\"}\")&&warning(\"W137\",state.tokens.curr);!checkPunctuator(state.tokens.next,\"}\")&&(assignmentProperty(),checkPunctuator(state.tokens.next,\"=\")&&(advance(\"=\"),\"undefined\"===state.tokens.next.id&&warning(\"W080\",state.tokens.prev,state.tokens.prev.value),expression(10)),checkPunctuator(state.tokens.next,\"}\")||(advance(\",\"),!checkPunctuator(state.tokens.next,\"}\"))););advance(\"}\")}return identifiers}function destructuringPatternMatch(tokens,value){var first=value.first;first&&_.zip(tokens,Array.isArray(first)?first:[first]).forEach(function(val){var token=val[0],value=val[1];token&&value?token.first=value:token&&token.first&&!value&&warning(\"W080\",token.first,token.first.value)})}function blockVariableStatement(type,statement,context){var tokens,lone,value,letblock,prefix=context&&context.prefix,inexport=context&&context.inexport,isLet=\"let\"===type,isConst=\"const\"===type;for(state.inES6()||warning(\"W104\",state.tokens.curr,type,\"6\"),isLet&&\"(\"===state.tokens.next.value?(state.inMoz()||warning(\"W118\",state.tokens.next,\"let block\"),advance(\"(\"),state.funct[\"(scope)\"].stack(),letblock=!0):state.funct[\"(noblockscopedvar)\"]&&error(\"E048\",state.tokens.curr,isConst?\"Const\":\"Let\"),statement.first=[];;){var names=[];_.contains([\"{\",\"[\"],state.tokens.next.value)?(tokens=destructuringPattern(),lone=!1):(tokens=[{id:identifier(),token:state.tokens.curr}],lone=!0),!prefix&&isConst&&\"=\"!==state.tokens.next.id&&warning(\"E012\",state.tokens.curr,state.tokens.curr.value);for(var t in tokens)tokens.hasOwnProperty(t)&&(t=tokens[t],state.funct[\"(scope)\"].block.isGlobal()&&predefined[t.id]===!1&&warning(\"W079\",t.token,t.id),t.id&&!state.funct[\"(noblockscopedvar)\"]&&(state.funct[\"(scope)\"].addlabel(t.id,{type:type,token:t.token}),names.push(t.token),lone&&inexport&&state.funct[\"(scope)\"].setExported(t.token.value,t.token)));if(\"=\"===state.tokens.next.id&&(advance(\"=\"),prefix||\"undefined\"!==state.tokens.next.id||warning(\"W080\",state.tokens.prev,state.tokens.prev.value),!prefix&&\"=\"===peek(0).id&&state.tokens.next.identifier&&warning(\"W120\",state.tokens.next,state.tokens.next.value),value=expression(prefix?120:10),lone?tokens[0].first=value:destructuringPatternMatch(names,value)),statement.first=statement.first.concat(names),\",\"!==state.tokens.next.id)break;comma()}return letblock&&(advance(\")\"),block(!0,!0),statement.block=!0,state.funct[\"(scope)\"].unstack()),statement}function classdef(isStatement){return state.inES6()||warning(\"W104\",state.tokens.curr,\"class\",\"6\"),isStatement?(this.name=identifier(),state.funct[\"(scope)\"].addlabel(this.name,{type:\"class\",token:state.tokens.curr})):state.tokens.next.identifier&&\"extends\"!==state.tokens.next.value?(this.name=identifier(),this.namedExpr=!0):this.name=state.nameStack.infer(),classtail(this),this}function classtail(c){var wasInClassBody=state.inClassBody;\"extends\"===state.tokens.next.value&&(advance(\"extends\"),c.heritage=expression(10)),state.inClassBody=!0,advance(\"{\"),c.body=classbody(c),advance(\"}\"),state.inClassBody=wasInClassBody}function classbody(c){for(var name,isStatic,isGenerator,getset,computed,props=Object.create(null),staticProps=Object.create(null),i=0;\"}\"!==state.tokens.next.id;++i)if(name=state.tokens.next,isStatic=!1,isGenerator=!1,getset=null,\";\"!==name.id){if(\"*\"===name.id&&(isGenerator=!0,advance(\"*\"),name=state.tokens.next),\"[\"===name.id)name=computedPropertyName(),computed=!0;else{if(!isPropertyName(name)){warning(\"W052\",state.tokens.next,state.tokens.next.value||state.tokens.next.type),advance();continue}advance(),computed=!1,name.identifier&&\"static\"===name.value&&(checkPunctuator(state.tokens.next,\"*\")&&(isGenerator=!0,advance(\"*\")),(isPropertyName(state.tokens.next)||\"[\"===state.tokens.next.id)&&(computed=\"[\"===state.tokens.next.id,isStatic=!0,name=state.tokens.next,\"[\"===state.tokens.next.id?name=computedPropertyName():advance())),!name.identifier||\"get\"!==name.value&&\"set\"!==name.value||(isPropertyName(state.tokens.next)||\"[\"===state.tokens.next.id)&&(computed=\"[\"===state.tokens.next.id,getset=name,name=state.tokens.next,\"[\"===state.tokens.next.id?name=computedPropertyName():advance())}if(!checkPunctuator(state.tokens.next,\"(\")){for(error(\"E054\",state.tokens.next,state.tokens.next.value);\"}\"!==state.tokens.next.id&&!checkPunctuator(state.tokens.next,\"(\");)advance();\"(\"!==state.tokens.next.value&&doFunction({statement:c})}if(computed||(getset?saveAccessor(getset.value,isStatic?staticProps:props,name.value,name,!0,isStatic):(\"constructor\"===name.value?state.nameStack.set(c):state.nameStack.set(name),saveProperty(isStatic?staticProps:props,name.value,name,!0,isStatic))),getset&&\"constructor\"===name.value){var propDesc=\"get\"===getset.value?\"class getter method\":\"class setter method\";error(\"E049\",name,propDesc,\"constructor\")}else\"prototype\"===name.value&&error(\"E049\",name,\"class method\",\"prototype\");propertyName(name),doFunction({statement:c,type:isGenerator?\"generator\":null,classExprBinding:c.namedExpr?c.name:null})}else warning(\"W032\"),advance(\";\");checkProperties(props)}function saveProperty(props,name,tkn,isClass,isStatic){var msg=[\"key\",\"class method\",\"static class method\"];msg=msg[(isClass||!1)+(isStatic||!1)],tkn.identifier&&(name=tkn.value),props[name]&&\"__proto__\"!==name?warning(\"W075\",state.tokens.next,msg,name):props[name]=Object.create(null),props[name].basic=!0,props[name].basictkn=tkn}function saveAccessor(accessorType,props,name,tkn,isClass,isStatic){var flagName=\"get\"===accessorType?\"getterToken\":\"setterToken\",msg=\"\";isClass?(isStatic&&(msg+=\"static \"),msg+=accessorType+\"ter method\"):msg=\"key\",state.tokens.curr.accessorType=accessorType,state.nameStack.set(tkn),props[name]?(props[name].basic||props[name][flagName])&&\"__proto__\"!==name&&warning(\"W075\",state.tokens.next,msg,name):props[name]=Object.create(null),props[name][flagName]=tkn}function computedPropertyName(){advance(\"[\"),state.inES6()||warning(\"W119\",state.tokens.curr,\"computed property names\",\"6\");var value=expression(10);return advance(\"]\"),value}function checkPunctuators(token,values){return\"(punctuator)\"===token.type?_.contains(values,token.value):!1}function checkPunctuator(token,value){return\"(punctuator)\"===token.type&&token.value===value}function destructuringAssignOrJsonValue(){var block=lookupBlockType();block.notJson?(!state.inES6()&&block.isDestAssign&&warning(\"W104\",state.tokens.curr,\"destructuring assignment\",\"6\"),statements()):(state.option.laxbreak=!0,state.jsonMode=!0,jsonValue())}function jsonValue(){function jsonObject(){var o={},t=state.tokens.next;if(advance(\"{\"),\"}\"!==state.tokens.next.id)for(;;){if(\"(end)\"===state.tokens.next.id)error(\"E026\",state.tokens.next,t.line);else{if(\"}\"===state.tokens.next.id){warning(\"W094\",state.tokens.curr);break}\",\"===state.tokens.next.id?error(\"E028\",state.tokens.next):\"(string)\"!==state.tokens.next.id&&warning(\"W095\",state.tokens.next,state.tokens.next.value)}if(o[state.tokens.next.value]===!0?warning(\"W075\",state.tokens.next,\"key\",state.tokens.next.value):\"__proto__\"===state.tokens.next.value&&!state.option.proto||\"__iterator__\"===state.tokens.next.value&&!state.option.iterator?warning(\"W096\",state.tokens.next,state.tokens.next.value):o[state.tokens.next.value]=!0,advance(),advance(\":\"),jsonValue(),\",\"!==state.tokens.next.id)break;advance(\",\")}advance(\"}\")}function jsonArray(){var t=state.tokens.next;if(advance(\"[\"),\"]\"!==state.tokens.next.id)for(;;){if(\"(end)\"===state.tokens.next.id)error(\"E027\",state.tokens.next,t.line);else{if(\"]\"===state.tokens.next.id){warning(\"W094\",state.tokens.curr);break}\",\"===state.tokens.next.id&&error(\"E028\",state.tokens.next)}if(jsonValue(),\",\"!==state.tokens.next.id)break;advance(\",\")}advance(\"]\")}switch(state.tokens.next.id){case\"{\":jsonObject();break;case\"[\":jsonArray();break;case\"true\":case\"false\":case\"null\":case\"(number)\":case\"(string)\":advance();break;case\"-\":advance(\"-\"),advance(\"(number)\");break;default:error(\"E003\",state.tokens.next)}}var api,declared,functions,inblock,indent,lookahead,lex,member,membersOnly,predefined,stack,urls,bang={\"<\":!0,\"<=\":!0,\"==\":!0,\"===\":!0,\"!==\":!0,\"!=\":!0,\">\":!0,\">=\":!0,\"+\":!0,\"-\":!0,\"*\":!0,\"/\":!0,\"%\":!0},functionicity=[\"closure\",\"exception\",\"global\",\"label\",\"outer\",\"unused\",\"var\"],extraModules=[],emitter=new events.EventEmitter,typeofValues={};typeofValues.legacy=[\"xml\",\"unknown\"],typeofValues.es3=[\"undefined\",\"boolean\",\"number\",\"string\",\"function\",\"object\"],typeofValues.es3=typeofValues.es3.concat(typeofValues.legacy),typeofValues.es6=typeofValues.es3.concat(\"symbol\"),type(\"(number)\",function(){return this}),type(\"(string)\",function(){return this}),state.syntax[\"(identifier)\"]={type:\"(identifier)\",lbp:0,identifier:!0,nud:function(){var v=this.value;return\"=>\"===state.tokens.next.id?this:(state.funct[\"(comparray)\"].check(v)||state.funct[\"(scope)\"].block.use(v,state.tokens.curr),this)},led:function(){error(\"E033\",state.tokens.next,state.tokens.next.value)}};var baseTemplateSyntax={lbp:0,identifier:!1,template:!0};state.syntax[\"(template)\"]=_.extend({type:\"(template)\",nud:doTemplateLiteral,led:doTemplateLiteral,noSubst:!1},baseTemplateSyntax),state.syntax[\"(template middle)\"]=_.extend({type:\"(template middle)\",middle:!0,noSubst:!1},baseTemplateSyntax),state.syntax[\"(template tail)\"]=_.extend({type:\"(template tail)\",tail:!0,noSubst:!1},baseTemplateSyntax),state.syntax[\"(no subst template)\"]=_.extend({type:\"(template)\",nud:doTemplateLiteral,led:doTemplateLiteral,noSubst:!0,tail:!0},baseTemplateSyntax),type(\"(regexp)\",function(){return this}),delim(\"(endline)\"),delim(\"(begin)\"),delim(\"(end)\").reach=!0,delim(\"(error)\").reach=!0,delim(\"}\").reach=!0,delim(\")\"),delim(\"]\"),delim('\"').reach=!0,delim(\"'\").reach=!0,delim(\";\"),delim(\":\").reach=!0,delim(\"#\"),reserve(\"else\"),reserve(\"case\").reach=!0,reserve(\"catch\"),reserve(\"default\").reach=!0,reserve(\"finally\"),reservevar(\"arguments\",function(x){state.isStrict()&&state.funct[\"(global)\"]&&warning(\"E008\",x)}),reservevar(\"eval\"),reservevar(\"false\"),reservevar(\"Infinity\"),reservevar(\"null\"),reservevar(\"this\",function(x){state.isStrict()&&!isMethod()&&!state.option.validthis&&(state.funct[\"(statement)\"]&&state.funct[\"(name)\"].charAt(0)>\"Z\"||state.funct[\"(global)\"])&&warning(\"W040\",x)}),reservevar(\"true\"),reservevar(\"undefined\"),assignop(\"=\",\"assign\",20),assignop(\"+=\",\"assignadd\",20),assignop(\"-=\",\"assignsub\",20),assignop(\"*=\",\"assignmult\",20),assignop(\"/=\",\"assigndiv\",20).nud=function(){error(\"E014\")},assignop(\"%=\",\"assignmod\",20),bitwiseassignop(\"&=\"),bitwiseassignop(\"|=\"),bitwiseassignop(\"^=\"),bitwiseassignop(\"<<=\"),bitwiseassignop(\">>=\"),bitwiseassignop(\">>>=\"),infix(\",\",function(left,that){var expr;if(that.exprs=[left],state.option.nocomma&&warning(\"W127\"),!comma({peek:!0}))return that;for(;;){if(!(expr=expression(10)))break;if(that.exprs.push(expr),\",\"!==state.tokens.next.value||!comma())break}return that},10,!0),infix(\"?\",function(left,that){return increaseComplexityCount(),that.left=left,that.right=expression(10),advance(\":\"),that[\"else\"]=expression(10),that},30);var orPrecendence=40;infix(\"||\",function(left,that){return increaseComplexityCount(),that.left=left,that.right=expression(orPrecendence),that},orPrecendence),infix(\"&&\",\"and\",50),bitwise(\"|\",\"bitor\",70),bitwise(\"^\",\"bitxor\",80),bitwise(\"&\",\"bitand\",90),relation(\"==\",function(left,right){var eqnull=state.option.eqnull&&(\"null\"===(left&&left.value)||\"null\"===(right&&right.value));switch(!0){case!eqnull&&state.option.eqeqeq:this.from=this.character,warning(\"W116\",this,\"===\",\"==\");break;case isPoorRelation(left):warning(\"W041\",this,\"===\",left.value);break;case isPoorRelation(right):warning(\"W041\",this,\"===\",right.value);break;case isTypoTypeof(right,left,state):warning(\"W122\",this,right.value);break;case isTypoTypeof(left,right,state):warning(\"W122\",this,left.value)}return this}),relation(\"===\",function(left,right){return isTypoTypeof(right,left,state)?warning(\"W122\",this,right.value):isTypoTypeof(left,right,state)&&warning(\"W122\",this,left.value),this}),relation(\"!=\",function(left,right){var eqnull=state.option.eqnull&&(\"null\"===(left&&left.value)||\"null\"===(right&&right.value));return!eqnull&&state.option.eqeqeq?(this.from=this.character,warning(\"W116\",this,\"!==\",\"!=\")):isPoorRelation(left)?warning(\"W041\",this,\"!==\",left.value):isPoorRelation(right)?warning(\"W041\",this,\"!==\",right.value):isTypoTypeof(right,left,state)?warning(\"W122\",this,right.value):isTypoTypeof(left,right,state)&&warning(\"W122\",this,left.value),this}),relation(\"!==\",function(left,right){return isTypoTypeof(right,left,state)?warning(\"W122\",this,right.value):isTypoTypeof(left,right,state)&&warning(\"W122\",this,left.value),this}),relation(\"<\"),relation(\">\"),relation(\"<=\"),relation(\">=\"),bitwise(\"<<\",\"shiftleft\",120),bitwise(\">>\",\"shiftright\",120),bitwise(\">>>\",\"shiftrightunsigned\",120),infix(\"in\",\"in\",120),infix(\"instanceof\",\"instanceof\",120),infix(\"+\",function(left,that){var right;return that.left=left,that.right=right=expression(130),left&&right&&\"(string)\"===left.id&&\"(string)\"===right.id?(left.value+=right.value,left.character=right.character,!state.option.scripturl&®.javascriptURL.test(left.value)&&warning(\"W050\",left),left):that},130),prefix(\"+\",\"num\"),prefix(\"+++\",function(){return warning(\"W007\"),this.arity=\"unary\",this.right=expression(150),this}),infix(\"+++\",function(left){return warning(\"W007\"),this.left=left,this.right=expression(130),this},130),infix(\"-\",\"sub\",130),prefix(\"-\",\"neg\"),prefix(\"---\",function(){return warning(\"W006\"),this.arity=\"unary\",this.right=expression(150),this}),infix(\"---\",function(left){return warning(\"W006\"),this.left=left,this.right=expression(130),this},130),infix(\"*\",\"mult\",140),infix(\"/\",\"div\",140),infix(\"%\",\"mod\",140),suffix(\"++\"),prefix(\"++\",\"preinc\"),state.syntax[\"++\"].exps=!0,suffix(\"--\"),prefix(\"--\",\"predec\"),state.syntax[\"--\"].exps=!0,prefix(\"delete\",function(){var p=expression(10);return p?(\".\"!==p.id&&\"[\"!==p.id&&warning(\"W051\"),this.first=p,p.identifier&&!state.isStrict()&&(p.forgiveUndef=!0),this):this}).exps=!0,prefix(\"~\",function(){return state.option.bitwise&&warning(\"W016\",this,\"~\"),this.arity=\"unary\",this.right=expression(150),this}),prefix(\"...\",function(){return state.inES6(!0)||warning(\"W119\",this,\"spread/rest operator\",\"6\"),state.tokens.next.identifier||\"(string)\"===state.tokens.next.type||checkPunctuators(state.tokens.next,[\"[\",\"(\"])||error(\"E030\",state.tokens.next,state.tokens.next.value),expression(150),this}),prefix(\"!\",function(){return this.arity=\"unary\",this.right=expression(150),this.right||quit(\"E041\",this.line||0),bang[this.right.id]===!0&&warning(\"W018\",this,\"!\"),this}),prefix(\"typeof\",function(){var p=expression(150);return this.first=this.right=p,p||quit(\"E041\",this.line||0,this.character||0),p.identifier&&(p.forgiveUndef=!0),this}),prefix(\"new\",function(){var mp=metaProperty(\"target\",function(){state.inES6(!0)||warning(\"W119\",state.tokens.prev,\"new.target\",\"6\");for(var inFunction,c=state.funct;c&&(inFunction=!c[\"(global)\"],c[\"(arrow)\"]);)c=c[\"(context)\"];inFunction||warning(\"W136\",state.tokens.prev,\"new.target\")});if(mp)return mp;var i,c=expression(155);if(c&&\"function\"!==c.id)if(c.identifier)switch(c[\"new\"]=!0,c.value){case\"Number\":case\"String\":case\"Boolean\":case\"Math\":case\"JSON\":warning(\"W053\",state.tokens.prev,c.value);break;case\"Symbol\":state.inES6()&&warning(\"W053\",state.tokens.prev,c.value);break;case\"Function\":state.option.evil||warning(\"W054\");break;case\"Date\":case\"RegExp\":case\"this\":break;default:\"function\"!==c.id&&(i=c.value.substr(0,1),state.option.newcap&&(\"A\">i||i>\"Z\")&&!state.funct[\"(scope)\"].isPredefined(c.value)&&warning(\"W055\",state.tokens.curr))}else\".\"!==c.id&&\"[\"!==c.id&&\"(\"!==c.id&&warning(\"W056\",state.tokens.curr);else state.option.supernew||warning(\"W057\",this);return\"(\"===state.tokens.next.id||state.option.supernew||warning(\"W058\",state.tokens.curr,state.tokens.curr.value),this.first=this.right=c,this}),state.syntax[\"new\"].exps=!0,prefix(\"void\").exps=!0,infix(\".\",function(left,that){var m=identifier(!1,!0);return\"string\"==typeof m&&countMember(m),that.left=left,that.right=m,m&&\"hasOwnProperty\"===m&&\"=\"===state.tokens.next.value&&warning(\"W001\"),!left||\"arguments\"!==left.value||\"callee\"!==m&&\"caller\"!==m?state.option.evil||!left||\"document\"!==left.value||\"write\"!==m&&\"writeln\"!==m||warning(\"W060\",left):state.option.noarg?warning(\"W059\",left,m):state.isStrict()&&error(\"E008\"),state.option.evil||\"eval\"!==m&&\"execScript\"!==m||isGlobalEval(left,state)&&warning(\"W061\"),that},160,!0),infix(\"(\",function(left,that){state.option.immed&&left&&!left.immed&&\"function\"===left.id&&warning(\"W062\");var n=0,p=[];if(left&&\"(identifier)\"===left.type&&left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1===\"Array Number String Boolean Date Object Error Symbol\".indexOf(left.value)&&(\"Math\"===left.value?warning(\"W063\",left):state.option.newcap&&warning(\"W064\",left)),\")\"!==state.tokens.next.id)for(;p[p.length]=expression(10),n+=1,\",\"===state.tokens.next.id;)comma();return advance(\")\"),\"object\"==typeof left&&(state.inES5()||\"parseInt\"!==left.value||1!==n||warning(\"W065\",state.tokens.curr),state.option.evil||(\"eval\"===left.value||\"Function\"===left.value||\"execScript\"===left.value?(warning(\"W061\",left),p[0]&&\"(string)\"===[0].id&&addInternalSrc(left,p[0].value)):!p[0]||\"(string)\"!==p[0].id||\"setTimeout\"!==left.value&&\"setInterval\"!==left.value?!p[0]||\"(string)\"!==p[0].id||\".\"!==left.value||\"window\"!==left.left.value||\"setTimeout\"!==left.right&&\"setInterval\"!==left.right||(warning(\"W066\",left),addInternalSrc(left,p[0].value)):(warning(\"W066\",left),addInternalSrc(left,p[0].value))),left.identifier||\".\"===left.id||\"[\"===left.id||\"=>\"===left.id||\"(\"===left.id||\"&&\"===left.id||\"||\"===left.id||\"?\"===left.id||state.inES6()&&left[\"(name)\"]||warning(\"W067\",that)),that.left=left,that},155,!0).exps=!0,prefix(\"(\",function(){var pn1,ret,triggerFnExpr,first,last,pn=state.tokens.next,i=-1,parens=1,opening=state.tokens.curr,preceeding=state.tokens.prev,isNecessary=!state.option.singleGroups;do\"(\"===pn.value?parens+=1:\")\"===pn.value&&(parens-=1),i+=1,pn1=pn,pn=peek(i);while((0!==parens||\")\"!==pn1.value)&&\";\"!==pn.value&&\"(end)\"!==pn.type);if(\"function\"===state.tokens.next.id&&(triggerFnExpr=state.tokens.next.immed=!0),\"=>\"===pn.value)return doFunction({type:\"arrow\",parsedOpening:!0});var exprs=[];if(\")\"!==state.tokens.next.id)for(;exprs.push(expression(10)),\",\"===state.tokens.next.id;)state.option.nocomma&&warning(\"W127\"),comma();return advance(\")\",this),state.option.immed&&exprs[0]&&\"function\"===exprs[0].id&&\"(\"!==state.tokens.next.id&&\".\"!==state.tokens.next.id&&\"[\"!==state.tokens.next.id&&warning(\"W068\",this),exprs.length?(exprs.length>1?(ret=Object.create(state.syntax[\",\"]),ret.exprs=exprs,first=exprs[0],last=exprs[exprs.length-1],isNecessary||(isNecessary=preceeding.assign||preceeding.delim)):(ret=first=last=exprs[0],isNecessary||(isNecessary=opening.beginsStmt&&(\"{\"===ret.id||triggerFnExpr||isFunctor(ret))||triggerFnExpr&&(!isEndOfExpr()||\"}\"!==state.tokens.prev.id)||isFunctor(ret)&&!isEndOfExpr()||\"{\"===ret.id&&\"=>\"===preceeding.id||\"(number)\"===ret.type&&checkPunctuator(pn,\".\")&&/^\\d+$/.test(ret.value))),ret&&(!isNecessary&&(first.left||first.right||ret.exprs)&&(isNecessary=!isBeginOfExpr(preceeding)&&first.lbp<=preceeding.lbp||!isEndOfExpr()&&last.lbp<state.tokens.next.lbp),isNecessary||warning(\"W126\",opening),ret.paren=!0),ret):void 0}),application(\"=>\"),infix(\"[\",function(left,that){var s,e=expression(10);return e&&\"(string)\"===e.type&&(state.option.evil||\"eval\"!==e.value&&\"execScript\"!==e.value||isGlobalEval(left,state)&&warning(\"W061\"),countMember(e.value),!state.option.sub&®.identifier.test(e.value)&&(s=state.syntax[e.value],s&&isReserved(s)||warning(\"W069\",state.tokens.prev,e.value))),advance(\"]\",that),e&&\"hasOwnProperty\"===e.value&&\"=\"===state.tokens.next.value&&warning(\"W001\"),that.left=left,that.right=e,that},160,!0),prefix(\"[\",function(){var blocktype=lookupBlockType();if(blocktype.isCompArray)return state.option.esnext||state.inMoz()||warning(\"W118\",state.tokens.curr,\"array comprehension\"),comprehensiveArrayExpression();if(blocktype.isDestAssign)return this.destructAssign=destructuringPattern({openingParsed:!0,assignment:!0}),this;var b=state.tokens.curr.line!==startLine(state.tokens.next);for(this.first=[],b&&(indent+=state.option.indent,state.tokens.next.from===indent+state.option.indent&&(indent+=state.option.indent));\"(end)\"!==state.tokens.next.id;){for(;\",\"===state.tokens.next.id;){if(!state.option.elision){if(state.inES5()){warning(\"W128\");do advance(\",\");while(\",\"===state.tokens.next.id);continue}warning(\"W070\")}advance(\",\")}if(\"]\"===state.tokens.next.id)break;if(this.first.push(expression(10)),\",\"!==state.tokens.next.id)break;if(comma({allowTrailing:!0}),\"]\"===state.tokens.next.id&&!state.inES5()){warning(\"W070\",state.tokens.curr);break}}return b&&(indent-=state.option.indent),advance(\"]\",this),this}),function(x){x.nud=function(){var b,f,i,p,t,nextVal,isGeneratorMethod=!1,props=Object.create(null);b=state.tokens.curr.line!==startLine(state.tokens.next),b&&(indent+=state.option.indent,state.tokens.next.from===indent+state.option.indent&&(indent+=state.option.indent));var blocktype=lookupBlockType();if(blocktype.isDestAssign)return this.destructAssign=destructuringPattern({openingParsed:!0,assignment:!0}),this;for(;\"}\"!==state.tokens.next.id;){if(nextVal=state.tokens.next.value,!state.tokens.next.identifier||\",\"!==peekIgnoreEOL().id&&\"}\"!==peekIgnoreEOL().id)if(\":\"===peek().id||\"get\"!==nextVal&&\"set\"!==nextVal){if(\"*\"===state.tokens.next.value&&\"(punctuator)\"===state.tokens.next.type?(state.inES6()||warning(\"W104\",state.tokens.next,\"generator functions\",\"6\"),advance(\"*\"),isGeneratorMethod=!0):isGeneratorMethod=!1,\"[\"===state.tokens.next.id)i=computedPropertyName(),state.nameStack.set(i);else if(state.nameStack.set(state.tokens.next),i=propertyName(),saveProperty(props,i,state.tokens.next),\"string\"!=typeof i)break;\"(\"===state.tokens.next.value?(state.inES6()||warning(\"W104\",state.tokens.curr,\"concise methods\",\"6\"),doFunction({type:isGeneratorMethod?\"generator\":null})):(advance(\":\"),expression(10))}else advance(nextVal),state.inES5()||error(\"E034\"),i=propertyName(),i||state.inES6()||error(\"E035\"),i&&saveAccessor(nextVal,props,i,state.tokens.curr),t=state.tokens.next,f=doFunction(),p=f[\"(params)\"],\"get\"===nextVal&&i&&p?warning(\"W076\",t,p[0],i):\"set\"!==nextVal||!i||p&&1===p.length||warning(\"W077\",t,i);else state.inES6()||warning(\"W104\",state.tokens.next,\"object short notation\",\"6\"),i=propertyName(!0),saveProperty(props,i,state.tokens.next),expression(10);if(countMember(i),\",\"!==state.tokens.next.id)break;comma({allowTrailing:!0,property:!0}),\",\"===state.tokens.next.id?warning(\"W070\",state.tokens.curr):\"}\"!==state.tokens.next.id||state.inES5()||warning(\"W070\",state.tokens.curr)}return b&&(indent-=state.option.indent),advance(\"}\",this),checkProperties(props),this},x.fud=function(){error(\"E036\",state.tokens.curr)}}(delim(\"{\"));var conststatement=stmt(\"const\",function(context){return blockVariableStatement(\"const\",this,context)});conststatement.exps=!0;var letstatement=stmt(\"let\",function(context){return blockVariableStatement(\"let\",this,context)});letstatement.exps=!0;var varstatement=stmt(\"var\",function(context){var tokens,lone,value,prefix=context&&context.prefix,inexport=context&&context.inexport,implied=context&&context.implied,report=!(context&&context.ignore);for(this.first=[];;){var names=[];_.contains([\"{\",\"[\"],state.tokens.next.value)?(tokens=destructuringPattern(),lone=!1):(tokens=[{id:identifier(),token:state.tokens.curr}],lone=!0),prefix&&implied||!report||!state.option.varstmt||warning(\"W132\",this),this.first=this.first.concat(names);for(var t in tokens)tokens.hasOwnProperty(t)&&(t=tokens[t],!implied&&state.funct[\"(global)\"]&&(predefined[t.id]===!1?warning(\"W079\",t.token,t.id):state.option.futurehostile===!1&&(!state.inES5()&&vars.ecmaIdentifiers[5][t.id]===!1||!state.inES6()&&vars.ecmaIdentifiers[6][t.id]===!1)&&warning(\"W129\",t.token,t.id)),t.id&&(\"for\"===implied?(state.funct[\"(scope)\"].has(t.id)||report&&warning(\"W088\",t.token,t.id),state.funct[\"(scope)\"].block.use(t.id,t.token)):(state.funct[\"(scope)\"].addlabel(t.id,{type:\"var\",token:t.token}),lone&&inexport&&state.funct[\"(scope)\"].setExported(t.id,t.token)),names.push(t.token)));if(\"=\"===state.tokens.next.id&&(state.nameStack.set(state.tokens.curr),advance(\"=\"),prefix||!report||state.funct[\"(loopage)\"]||\"undefined\"!==state.tokens.next.id||warning(\"W080\",state.tokens.prev,state.tokens.prev.value),\"=\"===peek(0).id&&state.tokens.next.identifier&&(!prefix&&report&&!state.funct[\"(params)\"]||-1===state.funct[\"(params)\"].indexOf(state.tokens.next.value))&&warning(\"W120\",state.tokens.next,state.tokens.next.value),value=expression(prefix?120:10),lone?tokens[0].first=value:destructuringPatternMatch(names,value)),\",\"!==state.tokens.next.id)break;comma()}return this});varstatement.exps=!0,blockstmt(\"class\",function(){return classdef.call(this,!0)}),blockstmt(\"function\",function(context){var inexport=context&&context.inexport,generator=!1;\"*\"===state.tokens.next.value&&(advance(\"*\"),state.inES6({strict:!0})?generator=!0:warning(\"W119\",state.tokens.curr,\"function*\",\"6\")),inblock&&warning(\"W082\",state.tokens.curr);var i=optionalidentifier();return state.funct[\"(scope)\"].addlabel(i,{type:\"function\",token:state.tokens.curr}),void 0===i?warning(\"W025\"):inexport&&state.funct[\"(scope)\"].setExported(i,state.tokens.prev),doFunction({name:i,statement:this,type:generator?\"generator\":null,ignoreLoopFunc:inblock}),\"(\"===state.tokens.next.id&&state.tokens.next.line===state.tokens.curr.line&&error(\"E039\"),this}),prefix(\"function\",function(){var generator=!1;\"*\"===state.tokens.next.value&&(state.inES6()||warning(\"W119\",state.tokens.curr,\"function*\",\"6\"),advance(\"*\"),generator=!0);var i=optionalidentifier();return doFunction({name:i,type:generator?\"generator\":null}),this}),blockstmt(\"if\",function(){var t=state.tokens.next;increaseComplexityCount(),state.condition=!0,advance(\"(\");var expr=expression(0);checkCondAssignment(expr);var forinifcheck=null;state.option.forin&&state.forinifcheckneeded&&(state.forinifcheckneeded=!1,forinifcheck=state.forinifchecks[state.forinifchecks.length-1],forinifcheck.type=\"(punctuator)\"===expr.type&&\"!\"===expr.value?\"(negative)\":\"(positive)\"),advance(\")\",t),state.condition=!1;var s=block(!0,!0);return forinifcheck&&\"(negative)\"===forinifcheck.type&&s&&s[0]&&\"(identifier)\"===s[0].type&&\"continue\"===s[0].value&&(forinifcheck.type=\"(negative-with-continue)\"),\"else\"===state.tokens.next.id&&(advance(\"else\"),\"if\"===state.tokens.next.id||\"switch\"===state.tokens.next.id?statement():block(!0,!0)),this}),blockstmt(\"try\",function(){function doCatch(){if(advance(\"catch\"),advance(\"(\"),state.funct[\"(scope)\"].stack(\"catchparams\"),checkPunctuators(state.tokens.next,[\"[\",\"{\"])){var tokens=destructuringPattern();_.each(tokens,function(token){token.id&&state.funct[\"(scope)\"].addParam(token.id,token,\"exception\")})}else\"(identifier)\"!==state.tokens.next.type?warning(\"E030\",state.tokens.next,state.tokens.next.value):state.funct[\"(scope)\"].addParam(identifier(),state.tokens.curr,\"exception\");\"if\"===state.tokens.next.value&&(state.inMoz()||warning(\"W118\",state.tokens.curr,\"catch filter\"),advance(\"if\"),expression(0)),advance(\")\"),block(!1),state.funct[\"(scope)\"].unstack()}var b;for(block(!0);\"catch\"===state.tokens.next.id;)increaseComplexityCount(),b&&!state.inMoz()&&warning(\"W118\",state.tokens.next,\"multiple catch blocks\"),doCatch(),b=!0;return\"finally\"===state.tokens.next.id?(advance(\"finally\"),block(!0),void 0):(b||error(\"E021\",state.tokens.next,\"catch\",state.tokens.next.value),this)}),blockstmt(\"while\",function(){var t=state.tokens.next;return state.funct[\"(breakage)\"]+=1,state.funct[\"(loopage)\"]+=1,increaseComplexityCount(),advance(\"(\"),checkCondAssignment(expression(0)),advance(\")\",t),block(!0,!0),state.funct[\"(breakage)\"]-=1,state.funct[\"(loopage)\"]-=1,this}).labelled=!0,blockstmt(\"with\",function(){var t=state.tokens.next;return state.isStrict()?error(\"E010\",state.tokens.curr):state.option.withstmt||warning(\"W085\",state.tokens.curr),advance(\"(\"),expression(0),advance(\")\",t),block(!0,!0),this}),blockstmt(\"switch\",function(){var t=state.tokens.next,g=!1,noindent=!1;\nfor(state.funct[\"(breakage)\"]+=1,advance(\"(\"),checkCondAssignment(expression(0)),advance(\")\",t),t=state.tokens.next,advance(\"{\"),state.tokens.next.from===indent&&(noindent=!0),noindent||(indent+=state.option.indent),this.cases=[];;)switch(state.tokens.next.id){case\"case\":switch(state.funct[\"(verb)\"]){case\"yield\":case\"break\":case\"case\":case\"continue\":case\"return\":case\"switch\":case\"throw\":break;default:state.tokens.curr.caseFallsThrough||warning(\"W086\",state.tokens.curr,\"case\")}advance(\"case\"),this.cases.push(expression(0)),increaseComplexityCount(),g=!0,advance(\":\"),state.funct[\"(verb)\"]=\"case\";break;case\"default\":switch(state.funct[\"(verb)\"]){case\"yield\":case\"break\":case\"continue\":case\"return\":case\"throw\":break;default:this.cases.length&&(state.tokens.curr.caseFallsThrough||warning(\"W086\",state.tokens.curr,\"default\"))}advance(\"default\"),g=!0,advance(\":\");break;case\"}\":return noindent||(indent-=state.option.indent),advance(\"}\",t),state.funct[\"(breakage)\"]-=1,state.funct[\"(verb)\"]=void 0,void 0;case\"(end)\":return error(\"E023\",state.tokens.next,\"}\"),void 0;default:if(indent+=state.option.indent,g)switch(state.tokens.curr.id){case\",\":return error(\"E040\"),void 0;case\":\":g=!1,statements();break;default:return error(\"E025\",state.tokens.curr),void 0}else{if(\":\"!==state.tokens.curr.id)return error(\"E021\",state.tokens.next,\"case\",state.tokens.next.value),void 0;advance(\":\"),error(\"E024\",state.tokens.curr,\":\"),statements()}indent-=state.option.indent}return this}).labelled=!0,stmt(\"debugger\",function(){return state.option.debug||warning(\"W087\",this),this}).exps=!0,function(){var x=stmt(\"do\",function(){state.funct[\"(breakage)\"]+=1,state.funct[\"(loopage)\"]+=1,increaseComplexityCount(),this.first=block(!0,!0),advance(\"while\");var t=state.tokens.next;return advance(\"(\"),checkCondAssignment(expression(0)),advance(\")\",t),state.funct[\"(breakage)\"]-=1,state.funct[\"(loopage)\"]-=1,this});x.labelled=!0,x.exps=!0}(),blockstmt(\"for\",function(){var s,t=state.tokens.next,letscope=!1,foreachtok=null;\"each\"===t.value&&(foreachtok=t,advance(\"each\"),state.inMoz()||warning(\"W118\",state.tokens.curr,\"for each\")),increaseComplexityCount(),advance(\"(\");var nextop,comma,initializer,i=0,inof=[\"in\",\"of\"],level=0;checkPunctuators(state.tokens.next,[\"{\",\"[\"])&&++level;do{if(nextop=peek(i),++i,checkPunctuators(nextop,[\"{\",\"[\"])?++level:checkPunctuators(nextop,[\"}\",\"]\"])&&--level,0>level)break;0===level&&(!comma&&checkPunctuator(nextop,\",\")?comma=nextop:!initializer&&checkPunctuator(nextop,\"=\")&&(initializer=nextop))}while(level>0||!_.contains(inof,nextop.value)&&\";\"!==nextop.value&&\"(end)\"!==nextop.type);if(_.contains(inof,nextop.value)){state.inES6()||\"of\"!==nextop.value||warning(\"W104\",nextop,\"for of\",\"6\");var ok=!(initializer||comma);if(initializer&&error(\"W133\",comma,nextop.value,\"initializer is forbidden\"),comma&&error(\"W133\",comma,nextop.value,\"more than one ForBinding\"),\"var\"===state.tokens.next.id?(advance(\"var\"),state.tokens.curr.fud({prefix:!0})):\"let\"===state.tokens.next.id||\"const\"===state.tokens.next.id?(advance(state.tokens.next.id),letscope=!0,state.funct[\"(scope)\"].stack(),state.tokens.curr.fud({prefix:!0})):Object.create(varstatement).fud({prefix:!0,implied:\"for\",ignore:!ok}),advance(nextop.value),expression(20),advance(\")\",t),\"in\"===nextop.value&&state.option.forin&&(state.forinifcheckneeded=!0,void 0===state.forinifchecks&&(state.forinifchecks=[]),state.forinifchecks.push({type:\"(none)\"})),state.funct[\"(breakage)\"]+=1,state.funct[\"(loopage)\"]+=1,s=block(!0,!0),\"in\"===nextop.value&&state.option.forin){if(state.forinifchecks&&state.forinifchecks.length>0){var check=state.forinifchecks.pop();(s&&s.length>0&&(\"object\"!=typeof s[0]||\"if\"!==s[0].value)||\"(positive)\"===check.type&&s.length>1||\"(negative)\"===check.type)&&warning(\"W089\",this)}state.forinifcheckneeded=!1}state.funct[\"(breakage)\"]-=1,state.funct[\"(loopage)\"]-=1}else{if(foreachtok&&error(\"E045\",foreachtok),\";\"!==state.tokens.next.id)if(\"var\"===state.tokens.next.id)advance(\"var\"),state.tokens.curr.fud();else if(\"let\"===state.tokens.next.id)advance(\"let\"),letscope=!0,state.funct[\"(scope)\"].stack(),state.tokens.curr.fud();else for(;expression(0,\"for\"),\",\"===state.tokens.next.id;)comma();if(nolinebreak(state.tokens.curr),advance(\";\"),state.funct[\"(loopage)\"]+=1,\";\"!==state.tokens.next.id&&checkCondAssignment(expression(0)),nolinebreak(state.tokens.curr),advance(\";\"),\";\"===state.tokens.next.id&&error(\"E021\",state.tokens.next,\")\",\";\"),\")\"!==state.tokens.next.id)for(;expression(0,\"for\"),\",\"===state.tokens.next.id;)comma();advance(\")\",t),state.funct[\"(breakage)\"]+=1,block(!0,!0),state.funct[\"(breakage)\"]-=1,state.funct[\"(loopage)\"]-=1}return letscope&&state.funct[\"(scope)\"].unstack(),this}).labelled=!0,stmt(\"break\",function(){var v=state.tokens.next.value;return state.option.asi||nolinebreak(this),\";\"===state.tokens.next.id||state.tokens.next.reach||state.tokens.curr.line!==startLine(state.tokens.next)?0===state.funct[\"(breakage)\"]&&warning(\"W052\",state.tokens.next,this.value):(state.funct[\"(scope)\"].funct.hasBreakLabel(v)||warning(\"W090\",state.tokens.next,v),this.first=state.tokens.next,advance()),reachable(this),this}).exps=!0,stmt(\"continue\",function(){var v=state.tokens.next.value;return 0===state.funct[\"(breakage)\"]&&warning(\"W052\",state.tokens.next,this.value),state.funct[\"(loopage)\"]||warning(\"W052\",state.tokens.next,this.value),state.option.asi||nolinebreak(this),\";\"===state.tokens.next.id||state.tokens.next.reach||state.tokens.curr.line===startLine(state.tokens.next)&&(state.funct[\"(scope)\"].funct.hasBreakLabel(v)||warning(\"W090\",state.tokens.next,v),this.first=state.tokens.next,advance()),reachable(this),this}).exps=!0,stmt(\"return\",function(){return this.line===startLine(state.tokens.next)?\";\"===state.tokens.next.id||state.tokens.next.reach||(this.first=expression(0),!this.first||\"(punctuator)\"!==this.first.type||\"=\"!==this.first.value||this.first.paren||state.option.boss||warningAt(\"W093\",this.first.line,this.first.character)):\"(punctuator)\"===state.tokens.next.type&&[\"[\",\"{\",\"+\",\"-\"].indexOf(state.tokens.next.value)>-1&&nolinebreak(this),reachable(this),this}).exps=!0,function(x){x.exps=!0,x.lbp=25}(prefix(\"yield\",function(){var prev=state.tokens.prev;state.inES6(!0)&&!state.funct[\"(generator)\"]?\"(catch)\"===state.funct[\"(name)\"]&&state.funct[\"(context)\"][\"(generator)\"]||error(\"E046\",state.tokens.curr,\"yield\"):state.inES6()||warning(\"W104\",state.tokens.curr,\"yield\",\"6\"),state.funct[\"(generator)\"]=\"yielded\";var delegatingYield=!1;return\"*\"===state.tokens.next.value&&(delegatingYield=!0,advance(\"*\")),this.line!==startLine(state.tokens.next)&&state.inMoz()?state.option.asi||nolinebreak(this):((delegatingYield||\";\"!==state.tokens.next.id&&!state.option.asi&&!state.tokens.next.reach&&state.tokens.next.nud)&&(nobreaknonadjacent(state.tokens.curr,state.tokens.next),this.first=expression(10),\"(punctuator)\"!==this.first.type||\"=\"!==this.first.value||this.first.paren||state.option.boss||warningAt(\"W093\",this.first.line,this.first.character)),state.inMoz()&&\")\"!==state.tokens.next.id&&(prev.lbp>30||!prev.assign&&!isEndOfExpr()||\"yield\"===prev.id)&&error(\"E050\",this)),this})),stmt(\"throw\",function(){return nolinebreak(this),this.first=expression(20),reachable(this),this}).exps=!0,stmt(\"import\",function(){if(state.inES6()||warning(\"W119\",state.tokens.curr,\"import\",\"6\"),\"(string)\"===state.tokens.next.type)return advance(\"(string)\"),this;if(state.tokens.next.identifier){if(this.name=identifier(),state.funct[\"(scope)\"].addlabel(this.name,{type:\"const\",token:state.tokens.curr}),\",\"!==state.tokens.next.value)return advance(\"from\"),advance(\"(string)\"),this;advance(\",\")}if(\"*\"===state.tokens.next.id)advance(\"*\"),advance(\"as\"),state.tokens.next.identifier&&(this.name=identifier(),state.funct[\"(scope)\"].addlabel(this.name,{type:\"const\",token:state.tokens.curr}));else for(advance(\"{\");;){if(\"}\"===state.tokens.next.value){advance(\"}\");break}var importName;if(\"default\"===state.tokens.next.type?(importName=\"default\",advance(\"default\")):importName=identifier(),\"as\"===state.tokens.next.value&&(advance(\"as\"),importName=identifier()),state.funct[\"(scope)\"].addlabel(importName,{type:\"const\",token:state.tokens.curr}),\",\"!==state.tokens.next.value){if(\"}\"===state.tokens.next.value){advance(\"}\");break}error(\"E024\",state.tokens.next,state.tokens.next.value);break}advance(\",\")}return advance(\"from\"),advance(\"(string)\"),this}).exps=!0,stmt(\"export\",function(){var token,identifier,ok=!0;if(state.inES6()||(warning(\"W119\",state.tokens.curr,\"export\",\"6\"),ok=!1),state.funct[\"(scope)\"].block.isGlobal()||(error(\"E053\",state.tokens.curr),ok=!1),\"*\"===state.tokens.next.value)return advance(\"*\"),advance(\"from\"),advance(\"(string)\"),this;if(\"default\"===state.tokens.next.type){state.nameStack.set(state.tokens.next),advance(\"default\");var exportType=state.tokens.next.id;return(\"function\"===exportType||\"class\"===exportType)&&(this.block=!0),token=peek(),expression(10),identifier=token.value,this.block&&(state.funct[\"(scope)\"].addlabel(identifier,{type:exportType,token:token}),state.funct[\"(scope)\"].setExported(identifier,token)),this}if(\"{\"===state.tokens.next.value){advance(\"{\");for(var exportedTokens=[];;){if(state.tokens.next.identifier||error(\"E030\",state.tokens.next,state.tokens.next.value),advance(),exportedTokens.push(state.tokens.curr),\"as\"===state.tokens.next.value&&(advance(\"as\"),state.tokens.next.identifier||error(\"E030\",state.tokens.next,state.tokens.next.value),advance()),\",\"!==state.tokens.next.value){if(\"}\"===state.tokens.next.value){advance(\"}\");break}error(\"E024\",state.tokens.next,state.tokens.next.value);break}advance(\",\")}return\"from\"===state.tokens.next.value?(advance(\"from\"),advance(\"(string)\")):ok&&exportedTokens.forEach(function(token){state.funct[\"(scope)\"].setExported(token.value,token)}),this}if(\"var\"===state.tokens.next.id)advance(\"var\"),state.tokens.curr.fud({inexport:!0});else if(\"let\"===state.tokens.next.id)advance(\"let\"),state.tokens.curr.fud({inexport:!0});else if(\"const\"===state.tokens.next.id)advance(\"const\"),state.tokens.curr.fud({inexport:!0});else if(\"function\"===state.tokens.next.id)this.block=!0,advance(\"function\"),state.syntax[\"function\"].fud({inexport:!0});else if(\"class\"===state.tokens.next.id){this.block=!0,advance(\"class\");var classNameToken=state.tokens.next;state.syntax[\"class\"].fud(),state.funct[\"(scope)\"].setExported(classNameToken.value,classNameToken)}else error(\"E024\",state.tokens.next,state.tokens.next.value);return this}).exps=!0,FutureReservedWord(\"abstract\"),FutureReservedWord(\"boolean\"),FutureReservedWord(\"byte\"),FutureReservedWord(\"char\"),FutureReservedWord(\"class\",{es5:!0,nud:classdef}),FutureReservedWord(\"double\"),FutureReservedWord(\"enum\",{es5:!0}),FutureReservedWord(\"export\",{es5:!0}),FutureReservedWord(\"extends\",{es5:!0}),FutureReservedWord(\"final\"),FutureReservedWord(\"float\"),FutureReservedWord(\"goto\"),FutureReservedWord(\"implements\",{es5:!0,strictOnly:!0}),FutureReservedWord(\"import\",{es5:!0}),FutureReservedWord(\"int\"),FutureReservedWord(\"interface\",{es5:!0,strictOnly:!0}),FutureReservedWord(\"long\"),FutureReservedWord(\"native\"),FutureReservedWord(\"package\",{es5:!0,strictOnly:!0}),FutureReservedWord(\"private\",{es5:!0,strictOnly:!0}),FutureReservedWord(\"protected\",{es5:!0,strictOnly:!0}),FutureReservedWord(\"public\",{es5:!0,strictOnly:!0}),FutureReservedWord(\"short\"),FutureReservedWord(\"static\",{es5:!0,strictOnly:!0}),FutureReservedWord(\"super\",{es5:!0}),FutureReservedWord(\"synchronized\"),FutureReservedWord(\"transient\"),FutureReservedWord(\"volatile\");var lookupBlockType=function(){var pn,pn1,prev,i=-1,bracketStack=0,ret={};checkPunctuators(state.tokens.curr,[\"[\",\"{\"])&&(bracketStack+=1);do{if(prev=-1===i?state.tokens.curr:pn,pn=-1===i?state.tokens.next:peek(i),pn1=peek(i+1),i+=1,checkPunctuators(pn,[\"[\",\"{\"])?bracketStack+=1:checkPunctuators(pn,[\"]\",\"}\"])&&(bracketStack-=1),1===bracketStack&&pn.identifier&&\"for\"===pn.value&&!checkPunctuator(prev,\".\")){ret.isCompArray=!0,ret.notJson=!0;break}if(0===bracketStack&&checkPunctuators(pn,[\"}\",\"]\"])){if(\"=\"===pn1.value){ret.isDestAssign=!0,ret.notJson=!0;break}if(\".\"===pn1.value){ret.notJson=!0;break}}checkPunctuator(pn,\";\")&&(ret.isBlock=!0,ret.notJson=!0)}while(bracketStack>0&&\"(end)\"!==pn.id);return ret},arrayComprehension=function(){function declare(v){var l=_current.variables.filter(function(elt){return elt.value===v?(elt.undef=!1,v):void 0}).length;return 0!==l}function use(v){var l=_current.variables.filter(function(elt){return elt.value!==v||elt.undef?void 0:(elt.unused===!0&&(elt.unused=!1),v)}).length;return 0===l}var _current,CompArray=function(){this.mode=\"use\",this.variables=[]},_carrays=[];return{stack:function(){_current=new CompArray,_carrays.push(_current)},unstack:function(){_current.variables.filter(function(v){v.unused&&warning(\"W098\",v.token,v.raw_text||v.value),v.undef&&state.funct[\"(scope)\"].block.use(v.value,v.token)}),_carrays.splice(-1,1),_current=_carrays[_carrays.length-1]},setState:function(s){_.contains([\"use\",\"define\",\"generate\",\"filter\"],s)&&(_current.mode=s)},check:function(v){return _current?_current&&\"use\"===_current.mode?(use(v)&&_current.variables.push({funct:state.funct,token:state.tokens.curr,value:v,undef:!0,unused:!1}),!0):_current&&\"define\"===_current.mode?(declare(v)||_current.variables.push({funct:state.funct,token:state.tokens.curr,value:v,undef:!1,unused:!0}),!0):_current&&\"generate\"===_current.mode?(state.funct[\"(scope)\"].block.use(v,state.tokens.curr),!0):_current&&\"filter\"===_current.mode?(use(v)&&state.funct[\"(scope)\"].block.use(v,state.tokens.curr),!0):!1:void 0}}},escapeRegex=function(str){return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")},itself=function(s,o,g){function each(obj,cb){obj&&(Array.isArray(obj)||\"object\"!=typeof obj||(obj=Object.keys(obj)),obj.forEach(cb))}var i,k,x,reIgnoreStr,reIgnore,optionKeys,newOptionObj={},newIgnoredObj={};o=_.clone(o),state.reset(),o&&o.scope?JSHINT.scope=o.scope:(JSHINT.errors=[],JSHINT.undefs=[],JSHINT.internals=[],JSHINT.blacklist={},JSHINT.scope=\"(main)\"),predefined=Object.create(null),combine(predefined,vars.ecmaIdentifiers[3]),combine(predefined,vars.reservedVars),combine(predefined,g||{}),declared=Object.create(null);var exported=Object.create(null);if(o)for(each(o.predef||null,function(item){var slice,prop;\"-\"===item[0]?(slice=item.slice(1),JSHINT.blacklist[slice]=slice,delete predefined[slice]):(prop=Object.getOwnPropertyDescriptor(o.predef,item),predefined[item]=prop?prop.value:!1)}),each(o.exported||null,function(item){exported[item]=!0}),delete o.predef,delete o.exported,optionKeys=Object.keys(o),x=0;optionKeys.length>x;x++)if(/^-W\\d{3}$/g.test(optionKeys[x]))newIgnoredObj[optionKeys[x].slice(1)]=!0;else{var optionKey=optionKeys[x];newOptionObj[optionKey]=o[optionKey],(\"esversion\"===optionKey&&5===o[optionKey]||\"es5\"===optionKey&&o[optionKey])&&warning(\"I003\"),\"newcap\"===optionKeys[x]&&o[optionKey]===!1&&(newOptionObj[\"(explicitNewcap)\"]=!0)}state.option=newOptionObj,state.ignored=newIgnoredObj,state.option.indent=state.option.indent||4,state.option.maxerr=state.option.maxerr||50,indent=1;var scopeManagerInst=scopeManager(state,predefined,exported,declared);if(scopeManagerInst.on(\"warning\",function(ev){warning.apply(null,[ev.code,ev.token].concat(ev.data))}),scopeManagerInst.on(\"error\",function(ev){error.apply(null,[ev.code,ev.token].concat(ev.data))}),state.funct=functor(\"(global)\",null,{\"(global)\":!0,\"(scope)\":scopeManagerInst,\"(comparray)\":arrayComprehension(),\"(metrics)\":createMetrics(state.tokens.next)}),functions=[state.funct],urls=[],stack=null,member={},membersOnly=null,inblock=!1,lookahead=[],!isString(s)&&!Array.isArray(s))return errorAt(\"E004\",0),!1;api={get isJSON(){return state.jsonMode},getOption:function(name){return state.option[name]||null},getCache:function(name){return state.cache[name]},setCache:function(name,value){state.cache[name]=value},warn:function(code,data){warningAt.apply(null,[code,data.line,data.char].concat(data.data))},on:function(names,listener){names.split(\" \").forEach(function(name){emitter.on(name,listener)}.bind(this))}},emitter.removeAllListeners(),(extraModules||[]).forEach(function(func){func(api)}),state.tokens.prev=state.tokens.curr=state.tokens.next=state.syntax[\"(begin)\"],o&&o.ignoreDelimiters&&(Array.isArray(o.ignoreDelimiters)||(o.ignoreDelimiters=[o.ignoreDelimiters]),o.ignoreDelimiters.forEach(function(delimiterPair){delimiterPair.start&&delimiterPair.end&&(reIgnoreStr=escapeRegex(delimiterPair.start)+\"[\\\\s\\\\S]*?\"+escapeRegex(delimiterPair.end),reIgnore=RegExp(reIgnoreStr,\"ig\"),s=s.replace(reIgnore,function(match){return match.replace(/./g,\" \")}))})),lex=new Lexer(s),lex.on(\"warning\",function(ev){warningAt.apply(null,[ev.code,ev.line,ev.character].concat(ev.data))}),lex.on(\"error\",function(ev){errorAt.apply(null,[ev.code,ev.line,ev.character].concat(ev.data))}),lex.on(\"fatal\",function(ev){quit(\"E041\",ev.line,ev.from)}),lex.on(\"Identifier\",function(ev){emitter.emit(\"Identifier\",ev)}),lex.on(\"String\",function(ev){emitter.emit(\"String\",ev)}),lex.on(\"Number\",function(ev){emitter.emit(\"Number\",ev)}),lex.start();for(var name in o)_.has(o,name)&&checkOption(name,state.tokens.curr);assume(),combine(predefined,g||{}),comma.first=!0;try{switch(advance(),state.tokens.next.id){case\"{\":case\"[\":destructuringAssignOrJsonValue();break;default:directives(),state.directive[\"use strict\"]&&\"global\"!==state.option.strict&&warning(\"W097\",state.tokens.prev),statements()}\"(end)\"!==state.tokens.next.id&&quit(\"E041\",state.tokens.curr.line),state.funct[\"(scope)\"].unstack()}catch(err){if(!err||\"JSHintError\"!==err.name)throw err;var nt=state.tokens.next||{};JSHINT.errors.push({scope:\"(main)\",raw:err.raw,code:err.code,reason:err.message,line:err.line||nt.line,character:err.character||nt.from},null)}if(\"(main)\"===JSHINT.scope)for(o=o||{},i=0;JSHINT.internals.length>i;i+=1)k=JSHINT.internals[i],o.scope=k.elem,itself(k.value,o,g);return 0===JSHINT.errors.length};return itself.addModule=function(func){extraModules.push(func)},itself.addModule(style.register),itself.data=function(){var fu,f,i,j,n,globals,data={functions:[],options:state.option};itself.errors.length&&(data.errors=itself.errors),state.jsonMode&&(data.json=!0);var impliedGlobals=state.funct[\"(scope)\"].getImpliedGlobals();for(impliedGlobals.length>0&&(data.implieds=impliedGlobals),urls.length>0&&(data.urls=urls),globals=state.funct[\"(scope)\"].getUsedOrDefinedGlobals(),globals.length>0&&(data.globals=globals),i=1;functions.length>i;i+=1){for(f=functions[i],fu={},j=0;functionicity.length>j;j+=1)fu[functionicity[j]]=[];for(j=0;functionicity.length>j;j+=1)0===fu[functionicity[j]].length&&delete fu[functionicity[j]];fu.name=f[\"(name)\"],fu.param=f[\"(params)\"],fu.line=f[\"(line)\"],fu.character=f[\"(character)\"],fu.last=f[\"(last)\"],fu.lastcharacter=f[\"(lastcharacter)\"],fu.metrics={complexity:f[\"(metrics)\"].ComplexityCount,parameters:f[\"(metrics)\"].arity,statements:f[\"(metrics)\"].statementCount},data.functions.push(fu)}var unuseds=state.funct[\"(scope)\"].getUnuseds();unuseds.length>0&&(data.unused=unuseds);for(n in member)if(\"number\"==typeof member[n]){data.member=member;break}return data},itself.jshint=itself,itself}();\"object\"==typeof exports&&exports&&(exports.JSHINT=JSHINT)},{\"../lodash\":\"/node_modules/jshint/lodash.js\",\"./lex.js\":\"/node_modules/jshint/src/lex.js\",\"./messages.js\":\"/node_modules/jshint/src/messages.js\",\"./options.js\":\"/node_modules/jshint/src/options.js\",\"./reg.js\":\"/node_modules/jshint/src/reg.js\",\"./scope-manager.js\":\"/node_modules/jshint/src/scope-manager.js\",\"./state.js\":\"/node_modules/jshint/src/state.js\",\"./style.js\":\"/node_modules/jshint/src/style.js\",\"./vars.js\":\"/node_modules/jshint/src/vars.js\",events:\"/node_modules/browserify/node_modules/events/events.js\"}],\"/node_modules/jshint/src/lex.js\":[function(_dereq_,module,exports){\"use strict\";function asyncTrigger(){var _checks=[];return{push:function(fn){_checks.push(fn)},check:function(){for(var check=0;_checks.length>check;++check)_checks[check]();_checks.splice(0,_checks.length)}}}function Lexer(source){var lines=source;\"string\"==typeof lines&&(lines=lines.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\").split(\"\\n\")),lines[0]&&\"#!\"===lines[0].substr(0,2)&&(-1!==lines[0].indexOf(\"node\")&&(state.option.node=!0),lines[0]=\"\"),this.emitter=new events.EventEmitter,this.source=source,this.setLines(lines),this.prereg=!0,this.line=0,this.char=1,this.from=1,this.input=\"\",this.inComment=!1,this.context=[],this.templateStarts=[];for(var i=0;state.option.indent>i;i+=1)state.tab+=\" \";this.ignoreLinterErrors=!1}var _=_dereq_(\"../lodash\"),events=_dereq_(\"events\"),reg=_dereq_(\"./reg.js\"),state=_dereq_(\"./state.js\").state,unicodeData=_dereq_(\"../data/ascii-identifier-data.js\"),asciiIdentifierStartTable=unicodeData.asciiIdentifierStartTable,asciiIdentifierPartTable=unicodeData.asciiIdentifierPartTable,Token={Identifier:1,Punctuator:2,NumericLiteral:3,StringLiteral:4,Comment:5,Keyword:6,NullLiteral:7,BooleanLiteral:8,RegExp:9,TemplateHead:10,TemplateMiddle:11,TemplateTail:12,NoSubstTemplate:13},Context={Block:1,Template:2};Lexer.prototype={_lines:[],inContext:function(ctxType){return this.context.length>0&&this.context[this.context.length-1].type===ctxType},pushContext:function(ctxType){this.context.push({type:ctxType})},popContext:function(){return this.context.pop()},isContext:function(context){return this.context.length>0&&this.context[this.context.length-1]===context},currentContext:function(){return this.context.length>0&&this.context[this.context.length-1]},getLines:function(){return this._lines=state.lines,this._lines},setLines:function(val){this._lines=val,state.lines=this._lines},peek:function(i){return this.input.charAt(i||0)},skip:function(i){i=i||1,this.char+=i,this.input=this.input.slice(i)},on:function(names,listener){names.split(\" \").forEach(function(name){this.emitter.on(name,listener)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(type,args,checks,fn){checks.push(function(){fn()&&this.trigger(type,args)}.bind(this))},scanPunctuator:function(){var ch2,ch3,ch4,ch1=this.peek();switch(ch1){case\".\":if(/^[0-9]$/.test(this.peek(1)))return null;if(\".\"===this.peek(1)&&\".\"===this.peek(2))return{type:Token.Punctuator,value:\"...\"};case\"(\":case\")\":case\";\":case\",\":case\"[\":case\"]\":case\":\":case\"~\":case\"?\":return{type:Token.Punctuator,value:ch1};case\"{\":return this.pushContext(Context.Block),{type:Token.Punctuator,value:ch1};case\"}\":return this.inContext(Context.Block)&&this.popContext(),{type:Token.Punctuator,value:ch1};case\"#\":return{type:Token.Punctuator,value:ch1};case\"\":return null}return ch2=this.peek(1),ch3=this.peek(2),ch4=this.peek(3),\">\"===ch1&&\">\"===ch2&&\">\"===ch3&&\"=\"===ch4?{type:Token.Punctuator,value:\">>>=\"}:\"=\"===ch1&&\"=\"===ch2&&\"=\"===ch3?{type:Token.Punctuator,value:\"===\"}:\"!\"===ch1&&\"=\"===ch2&&\"=\"===ch3?{type:Token.Punctuator,value:\"!==\"}:\">\"===ch1&&\">\"===ch2&&\">\"===ch3?{type:Token.Punctuator,value:\">>>\"}:\"<\"===ch1&&\"<\"===ch2&&\"=\"===ch3?{type:Token.Punctuator,value:\"<<=\"}:\">\"===ch1&&\">\"===ch2&&\"=\"===ch3?{type:Token.Punctuator,value:\">>=\"}:\"=\"===ch1&&\">\"===ch2?{type:Token.Punctuator,value:ch1+ch2}:ch1===ch2&&\"+-<>&|\".indexOf(ch1)>=0?{type:Token.Punctuator,value:ch1+ch2}:\"<>=!+-*%&|^\".indexOf(ch1)>=0?\"=\"===ch2?{type:Token.Punctuator,value:ch1+ch2}:{type:Token.Punctuator,value:ch1}:\"/\"===ch1?\"=\"===ch2?{type:Token.Punctuator,value:\"/=\"}:{type:Token.Punctuator,value:\"/\"}:null},scanComments:function(){function commentToken(label,body,opt){var special=[\"jshint\",\"jslint\",\"members\",\"member\",\"globals\",\"global\",\"exported\"],isSpecial=!1,value=label+body,commentType=\"plain\";return opt=opt||{},opt.isMultiline&&(value+=\"*/\"),body=body.replace(/\\n/g,\" \"),\"/*\"===label&®.fallsThrough.test(body)&&(isSpecial=!0,commentType=\"falls through\"),special.forEach(function(str){if(!isSpecial&&(\"//\"!==label||\"jshint\"===str)&&(\" \"===body.charAt(str.length)&&body.substr(0,str.length)===str&&(isSpecial=!0,label+=str,body=body.substr(str.length)),isSpecial||\" \"!==body.charAt(0)||\" \"!==body.charAt(str.length+1)||body.substr(1,str.length)!==str||(isSpecial=!0,label=label+\" \"+str,body=body.substr(str.length+1)),isSpecial))switch(str){case\"member\":commentType=\"members\";break;case\"global\":commentType=\"globals\";break;default:var options=body.split(\":\").map(function(v){return v.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")});if(2===options.length)switch(options[0]){case\"ignore\":switch(options[1]){case\"start\":self.ignoringLinterErrors=!0,isSpecial=!1;break;case\"end\":self.ignoringLinterErrors=!1,isSpecial=!1}}commentType=str}}),{type:Token.Comment,commentType:commentType,value:value,body:body,isSpecial:isSpecial,isMultiline:opt.isMultiline||!1,isMalformed:opt.isMalformed||!1}}var ch1=this.peek(),ch2=this.peek(1),rest=this.input.substr(2),startLine=this.line,startChar=this.char,self=this;if(\"*\"===ch1&&\"/\"===ch2)return this.trigger(\"error\",{code:\"E018\",line:startLine,character:startChar}),this.skip(2),null;if(\"/\"!==ch1||\"*\"!==ch2&&\"/\"!==ch2)return null;if(\"/\"===ch2)return this.skip(this.input.length),commentToken(\"//\",rest);var body=\"\";if(\"*\"===ch2){for(this.inComment=!0,this.skip(2);\"*\"!==this.peek()||\"/\"!==this.peek(1);)if(\"\"===this.peek()){if(body+=\"\\n\",!this.nextLine())return this.trigger(\"error\",{code:\"E017\",line:startLine,character:startChar}),this.inComment=!1,commentToken(\"/*\",body,{isMultiline:!0,isMalformed:!0})}else body+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,commentToken(\"/*\",body,{isMultiline:!0})}},scanKeyword:function(){var result=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),keywords=[\"if\",\"in\",\"do\",\"var\",\"for\",\"new\",\"try\",\"let\",\"this\",\"else\",\"case\",\"void\",\"with\",\"enum\",\"while\",\"break\",\"catch\",\"throw\",\"const\",\"yield\",\"class\",\"super\",\"return\",\"typeof\",\"delete\",\"switch\",\"export\",\"import\",\"default\",\"finally\",\"extends\",\"function\",\"continue\",\"debugger\",\"instanceof\"];return result&&keywords.indexOf(result[0])>=0?{type:Token.Keyword,value:result[0]}:null},scanIdentifier:function(){function isNonAsciiIdentifierStart(code){return code>256}function isNonAsciiIdentifierPart(code){return code>256}function isHexDigit(str){return/^[0-9a-fA-F]$/.test(str)}function removeEscapeSequences(id){return id.replace(/\\\\u([0-9a-fA-F]{4})/g,function(m0,codepoint){return String.fromCharCode(parseInt(codepoint,16))})}var type,char,id=\"\",index=0,readUnicodeEscapeSequence=function(){if(index+=1,\"u\"!==this.peek(index))return null;var code,ch1=this.peek(index+1),ch2=this.peek(index+2),ch3=this.peek(index+3),ch4=this.peek(index+4);return isHexDigit(ch1)&&isHexDigit(ch2)&&isHexDigit(ch3)&&isHexDigit(ch4)?(code=parseInt(ch1+ch2+ch3+ch4,16),asciiIdentifierPartTable[code]||isNonAsciiIdentifierPart(code)?(index+=5,\"\\\\u\"+ch1+ch2+ch3+ch4):null):null}.bind(this),getIdentifierStart=function(){var chr=this.peek(index),code=chr.charCodeAt(0);return 92===code?readUnicodeEscapeSequence():128>code?asciiIdentifierStartTable[code]?(index+=1,chr):null:isNonAsciiIdentifierStart(code)?(index+=1,chr):null}.bind(this),getIdentifierPart=function(){var chr=this.peek(index),code=chr.charCodeAt(0);return 92===code?readUnicodeEscapeSequence():128>code?asciiIdentifierPartTable[code]?(index+=1,chr):null:isNonAsciiIdentifierPart(code)?(index+=1,chr):null}.bind(this);if(char=getIdentifierStart(),null===char)return null;for(id=char;char=getIdentifierPart(),null!==char;)id+=char;switch(id){case\"true\":case\"false\":type=Token.BooleanLiteral;break;case\"null\":type=Token.NullLiteral;break;default:type=Token.Identifier}return{type:type,value:removeEscapeSequences(id),text:id,tokenLength:id.length}},scanNumericLiteral:function(){function isDecimalDigit(str){return/^[0-9]$/.test(str)}function isOctalDigit(str){return/^[0-7]$/.test(str)}function isBinaryDigit(str){return/^[01]$/.test(str)}function isHexDigit(str){return/^[0-9a-fA-F]$/.test(str)}function isIdentifierStart(ch){return\"$\"===ch||\"_\"===ch||\"\\\\\"===ch||ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch}var bad,index=0,value=\"\",length=this.input.length,char=this.peek(index),isAllowedDigit=isDecimalDigit,base=10,isLegacy=!1;if(\".\"!==char&&!isDecimalDigit(char))return null;if(\".\"!==char){for(value=this.peek(index),index+=1,char=this.peek(index),\"0\"===value&&((\"x\"===char||\"X\"===char)&&(isAllowedDigit=isHexDigit,base=16,index+=1,value+=char),(\"o\"===char||\"O\"===char)&&(isAllowedDigit=isOctalDigit,base=8,state.inES6(!0)||this.trigger(\"warning\",{code:\"W119\",line:this.line,character:this.char,data:[\"Octal integer literal\",\"6\"]}),index+=1,value+=char),(\"b\"===char||\"B\"===char)&&(isAllowedDigit=isBinaryDigit,base=2,state.inES6(!0)||this.trigger(\"warning\",{code:\"W119\",line:this.line,character:this.char,data:[\"Binary integer literal\",\"6\"]}),index+=1,value+=char),isOctalDigit(char)&&(isAllowedDigit=isOctalDigit,base=8,isLegacy=!0,bad=!1,index+=1,value+=char),!isOctalDigit(char)&&isDecimalDigit(char)&&(index+=1,value+=char));length>index;){if(char=this.peek(index),isLegacy&&isDecimalDigit(char))bad=!0;else if(!isAllowedDigit(char))break;value+=char,index+=1}if(isAllowedDigit!==isDecimalDigit)return!isLegacy&&2>=value.length?{type:Token.NumericLiteral,value:value,isMalformed:!0}:length>index&&(char=this.peek(index),isIdentifierStart(char))?null:{type:Token.NumericLiteral,value:value,base:base,isLegacy:isLegacy,isMalformed:!1}}if(\".\"===char)for(value+=char,index+=1;length>index&&(char=this.peek(index),isDecimalDigit(char));)value+=char,index+=1;if(\"e\"===char||\"E\"===char){if(value+=char,index+=1,char=this.peek(index),(\"+\"===char||\"-\"===char)&&(value+=this.peek(index),index+=1),char=this.peek(index),!isDecimalDigit(char))return null;for(value+=char,index+=1;length>index&&(char=this.peek(index),isDecimalDigit(char));)value+=char,index+=1}return length>index&&(char=this.peek(index),isIdentifierStart(char))?null:{type:Token.NumericLiteral,value:value,base:base,isMalformed:!isFinite(value)}},scanEscapeSequence:function(checks){var allowNewLine=!1,jump=1;this.skip();var char=this.peek();switch(char){case\"'\":this.triggerAsync(\"warning\",{code:\"W114\",line:this.line,character:this.char,data:[\"\\\\'\"]},checks,function(){return state.jsonMode});break;case\"b\":char=\"\\\\b\";break;case\"f\":char=\"\\\\f\";break;case\"n\":char=\"\\\\n\";break;case\"r\":char=\"\\\\r\";break;case\"t\":char=\"\\\\t\";break;case\"0\":char=\"\\\\0\";var n=parseInt(this.peek(1),10);this.triggerAsync(\"warning\",{code:\"W115\",line:this.line,character:this.char},checks,function(){return n>=0&&7>=n&&state.isStrict()});break;case\"u\":var hexCode=this.input.substr(1,4),code=parseInt(hexCode,16);isNaN(code)&&this.trigger(\"warning\",{code:\"W052\",line:this.line,character:this.char,data:[\"u\"+hexCode]}),char=String.fromCharCode(code),jump=5;break;case\"v\":this.triggerAsync(\"warning\",{code:\"W114\",line:this.line,character:this.char,data:[\"\\\\v\"]},checks,function(){return state.jsonMode}),char=\"\u000b\";break;case\"x\":var x=parseInt(this.input.substr(1,2),16);this.triggerAsync(\"warning\",{code:\"W114\",line:this.line,character:this.char,data:[\"\\\\x-\"]},checks,function(){return state.jsonMode}),char=String.fromCharCode(x),jump=3;break;case\"\\\\\":char=\"\\\\\\\\\";break;case'\"':char='\\\\\"';break;case\"/\":break;case\"\":allowNewLine=!0,char=\"\"}return{\"char\":char,jump:jump,allowNewLine:allowNewLine}},scanTemplateLiteral:function(checks){var tokenType,ch,value=\"\",startLine=this.line,startChar=this.char,depth=this.templateStarts.length;if(!state.inES6(!0))return null;if(\"`\"===this.peek())tokenType=Token.TemplateHead,this.templateStarts.push({line:this.line,\"char\":this.char}),depth=this.templateStarts.length,this.skip(1),this.pushContext(Context.Template);else{if(!this.inContext(Context.Template)||\"}\"!==this.peek())return null;tokenType=Token.TemplateMiddle}for(;\"`\"!==this.peek();){for(;\"\"===(ch=this.peek());)if(value+=\"\\n\",!this.nextLine()){var startPos=this.templateStarts.pop();return this.trigger(\"error\",{code:\"E052\",line:startPos.line,character:startPos.char}),{type:tokenType,value:value,startLine:startLine,startChar:startChar,isUnclosed:!0,depth:depth,context:this.popContext()}}if(\"$\"===ch&&\"{\"===this.peek(1))return value+=\"${\",this.skip(2),{type:tokenType,value:value,startLine:startLine,startChar:startChar,isUnclosed:!1,depth:depth,context:this.currentContext()};\nif(\"\\\\\"===ch){var escape=this.scanEscapeSequence(checks);value+=escape.char,this.skip(escape.jump)}else\"`\"!==ch&&(value+=ch,this.skip(1))}return tokenType=tokenType===Token.TemplateHead?Token.NoSubstTemplate:Token.TemplateTail,this.skip(1),this.templateStarts.pop(),{type:tokenType,value:value,startLine:startLine,startChar:startChar,isUnclosed:!1,depth:depth,context:this.popContext()}},scanStringLiteral:function(checks){var quote=this.peek();if('\"'!==quote&&\"'\"!==quote)return null;this.triggerAsync(\"warning\",{code:\"W108\",line:this.line,character:this.char},checks,function(){return state.jsonMode&&'\"'!==quote});var value=\"\",startLine=this.line,startChar=this.char,allowNewLine=!1;for(this.skip();this.peek()!==quote;)if(\"\"===this.peek()){if(allowNewLine?(allowNewLine=!1,this.triggerAsync(\"warning\",{code:\"W043\",line:this.line,character:this.char},checks,function(){return!state.option.multistr}),this.triggerAsync(\"warning\",{code:\"W042\",line:this.line,character:this.char},checks,function(){return state.jsonMode&&state.option.multistr})):this.trigger(\"warning\",{code:\"W112\",line:this.line,character:this.char}),!this.nextLine())return this.trigger(\"error\",{code:\"E029\",line:startLine,character:startChar}),{type:Token.StringLiteral,value:value,startLine:startLine,startChar:startChar,isUnclosed:!0,quote:quote}}else{allowNewLine=!1;var char=this.peek(),jump=1;if(\" \">char&&this.trigger(\"warning\",{code:\"W113\",line:this.line,character:this.char,data:[\"<non-printable>\"]}),\"\\\\\"===char){var parsed=this.scanEscapeSequence(checks);char=parsed.char,jump=parsed.jump,allowNewLine=parsed.allowNewLine}value+=char,this.skip(jump)}return this.skip(),{type:Token.StringLiteral,value:value,startLine:startLine,startChar:startChar,isUnclosed:!1,quote:quote}},scanRegExp:function(){var terminated,index=0,length=this.input.length,char=this.peek(),value=char,body=\"\",flags=[],malformed=!1,isCharSet=!1,scanUnexpectedChars=function(){\" \">char&&(malformed=!0,this.trigger(\"warning\",{code:\"W048\",line:this.line,character:this.char})),\"<\"===char&&(malformed=!0,this.trigger(\"warning\",{code:\"W049\",line:this.line,character:this.char,data:[char]}))}.bind(this);if(!this.prereg||\"/\"!==char)return null;for(index+=1,terminated=!1;length>index;)if(char=this.peek(index),value+=char,body+=char,isCharSet)\"]\"===char&&(\"\\\\\"!==this.peek(index-1)||\"\\\\\"===this.peek(index-2))&&(isCharSet=!1),\"\\\\\"===char&&(index+=1,char=this.peek(index),body+=char,value+=char,scanUnexpectedChars()),index+=1;else{if(\"\\\\\"===char){if(index+=1,char=this.peek(index),body+=char,value+=char,scanUnexpectedChars(),\"/\"===char){index+=1;continue}if(\"[\"===char){index+=1;continue}}if(\"[\"!==char){if(\"/\"===char){body=body.substr(0,body.length-1),terminated=!0,index+=1;break}index+=1}else isCharSet=!0,index+=1}if(!terminated)return this.trigger(\"error\",{code:\"E015\",line:this.line,character:this.from}),void this.trigger(\"fatal\",{line:this.line,from:this.from});for(;length>index&&(char=this.peek(index),/[gim]/.test(char));)flags.push(char),value+=char,index+=1;try{RegExp(body,flags.join(\"\"))}catch(err){malformed=!0,this.trigger(\"error\",{code:\"E016\",line:this.line,character:this.char,data:[err.message]})}return{type:Token.RegExp,value:value,flags:flags,isMalformed:malformed}},scanNonBreakingSpaces:function(){return state.option.nonbsp?this.input.search(/(\\u00A0)/):-1},scanUnsafeChars:function(){return this.input.search(reg.unsafeChars)},next:function(checks){this.from=this.char;var start;if(/\\s/.test(this.peek()))for(start=this.char;/\\s/.test(this.peek());)this.from+=1,this.skip();var match=this.scanComments()||this.scanStringLiteral(checks)||this.scanTemplateLiteral(checks);return match?match:(match=this.scanRegExp()||this.scanPunctuator()||this.scanKeyword()||this.scanIdentifier()||this.scanNumericLiteral(),match?(this.skip(match.tokenLength||match.value.length),match):null)},nextLine:function(){var char;if(this.line>=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var inputTrimmed=this.input.trim(),startsWith=function(){return _.some(arguments,function(prefix){return 0===inputTrimmed.indexOf(prefix)})},endsWith=function(){return _.some(arguments,function(suffix){return-1!==inputTrimmed.indexOf(suffix,inputTrimmed.length-suffix.length)})};if(this.ignoringLinterErrors===!0&&(startsWith(\"/*\",\"//\")||this.inComment&&endsWith(\"*/\")||(this.input=\"\")),char=this.scanNonBreakingSpaces(),char>=0&&this.trigger(\"warning\",{code:\"W125\",line:this.line,character:char+1}),this.input=this.input.replace(/\\t/g,state.tab),char=this.scanUnsafeChars(),char>=0&&this.trigger(\"warning\",{code:\"W100\",line:this.line,character:char}),!this.ignoringLinterErrors&&state.option.maxlen&&state.option.maxlen<this.input.length){var inComment=this.inComment||startsWith.call(inputTrimmed,\"//\")||startsWith.call(inputTrimmed,\"/*\"),shouldTriggerError=!inComment||!reg.maxlenException.test(inputTrimmed);shouldTriggerError&&this.trigger(\"warning\",{code:\"W101\",line:this.line,character:this.input.length})}return!0},start:function(){this.nextLine()},token:function(){function isReserved(token,isProperty){if(!token.reserved)return!1;var meta=token.meta;if(meta&&meta.isFutureReservedWord&&state.inES5()){if(!meta.es5)return!1;if(meta.strictOnly&&!state.option.strict&&!state.isStrict())return!1;if(isProperty)return!1}return!0}for(var token,checks=asyncTrigger(),create=function(type,value,isProperty,token){var obj;if(\"(endline)\"!==type&&\"(end)\"!==type&&(this.prereg=!1),\"(punctuator)\"===type){switch(value){case\".\":case\")\":case\"~\":case\"#\":case\"]\":case\"++\":case\"--\":this.prereg=!1;break;default:this.prereg=!0}obj=Object.create(state.syntax[value]||state.syntax[\"(error)\"])}return\"(identifier)\"===type&&((\"return\"===value||\"case\"===value||\"typeof\"===value)&&(this.prereg=!0),_.has(state.syntax,value)&&(obj=Object.create(state.syntax[value]||state.syntax[\"(error)\"]),isReserved(obj,isProperty&&\"(identifier)\"===type)||(obj=null))),obj||(obj=Object.create(state.syntax[type])),obj.identifier=\"(identifier)\"===type,obj.type=obj.type||type,obj.value=value,obj.line=this.line,obj.character=this.char,obj.from=this.from,obj.identifier&&token&&(obj.raw_text=token.text||token.value),token&&token.startLine&&token.startLine!==this.line&&(obj.startLine=token.startLine),token&&token.context&&(obj.context=token.context),token&&token.depth&&(obj.depth=token.depth),token&&token.isUnclosed&&(obj.isUnclosed=token.isUnclosed),isProperty&&obj.identifier&&(obj.isProperty=isProperty),obj.check=checks.check,obj}.bind(this);;){if(!this.input.length)return this.nextLine()?create(\"(endline)\",\"\"):this.exhausted?null:(this.exhausted=!0,create(\"(end)\",\"\"));if(token=this.next(checks))switch(token.type){case Token.StringLiteral:return this.triggerAsync(\"String\",{line:this.line,\"char\":this.char,from:this.from,startLine:token.startLine,startChar:token.startChar,value:token.value,quote:token.quote},checks,function(){return!0}),create(\"(string)\",token.value,null,token);case Token.TemplateHead:return this.trigger(\"TemplateHead\",{line:this.line,\"char\":this.char,from:this.from,startLine:token.startLine,startChar:token.startChar,value:token.value}),create(\"(template)\",token.value,null,token);case Token.TemplateMiddle:return this.trigger(\"TemplateMiddle\",{line:this.line,\"char\":this.char,from:this.from,startLine:token.startLine,startChar:token.startChar,value:token.value}),create(\"(template middle)\",token.value,null,token);case Token.TemplateTail:return this.trigger(\"TemplateTail\",{line:this.line,\"char\":this.char,from:this.from,startLine:token.startLine,startChar:token.startChar,value:token.value}),create(\"(template tail)\",token.value,null,token);case Token.NoSubstTemplate:return this.trigger(\"NoSubstTemplate\",{line:this.line,\"char\":this.char,from:this.from,startLine:token.startLine,startChar:token.startChar,value:token.value}),create(\"(no subst template)\",token.value,null,token);case Token.Identifier:this.triggerAsync(\"Identifier\",{line:this.line,\"char\":this.char,from:this.form,name:token.value,raw_name:token.text,isProperty:\".\"===state.tokens.curr.id},checks,function(){return!0});case Token.Keyword:case Token.NullLiteral:case Token.BooleanLiteral:return create(\"(identifier)\",token.value,\".\"===state.tokens.curr.id,token);case Token.NumericLiteral:return token.isMalformed&&this.trigger(\"warning\",{code:\"W045\",line:this.line,character:this.char,data:[token.value]}),this.triggerAsync(\"warning\",{code:\"W114\",line:this.line,character:this.char,data:[\"0x-\"]},checks,function(){return 16===token.base&&state.jsonMode}),this.triggerAsync(\"warning\",{code:\"W115\",line:this.line,character:this.char},checks,function(){return state.isStrict()&&8===token.base&&token.isLegacy}),this.trigger(\"Number\",{line:this.line,\"char\":this.char,from:this.from,value:token.value,base:token.base,isMalformed:token.malformed}),create(\"(number)\",token.value);case Token.RegExp:return create(\"(regexp)\",token.value);case Token.Comment:if(state.tokens.curr.comment=!0,token.isSpecial)return{id:\"(comment)\",value:token.value,body:token.body,type:token.commentType,isSpecial:token.isSpecial,line:this.line,character:this.char,from:this.from};break;case\"\":break;default:return create(\"(punctuator)\",token.value)}else this.input.length&&(this.trigger(\"error\",{code:\"E024\",line:this.line,character:this.char,data:[this.peek()]}),this.input=\"\")}}},exports.Lexer=Lexer,exports.Context=Context},{\"../data/ascii-identifier-data.js\":\"/node_modules/jshint/data/ascii-identifier-data.js\",\"../lodash\":\"/node_modules/jshint/lodash.js\",\"./reg.js\":\"/node_modules/jshint/src/reg.js\",\"./state.js\":\"/node_modules/jshint/src/state.js\",events:\"/node_modules/browserify/node_modules/events/events.js\"}],\"/node_modules/jshint/src/messages.js\":[function(_dereq_,module,exports){\"use strict\";var _=_dereq_(\"../lodash\"),errors={E001:\"Bad option: '{a}'.\",E002:\"Bad option value.\",E003:\"Expected a JSON value.\",E004:\"Input is neither a string nor an array of strings.\",E005:\"Input is empty.\",E006:\"Unexpected early end of program.\",E007:'Missing \"use strict\" statement.',E008:\"Strict violation.\",E009:\"Option 'validthis' can't be used in a global scope.\",E010:\"'with' is not allowed in strict mode.\",E011:\"'{a}' has already been declared.\",E012:\"const '{a}' is initialized to 'undefined'.\",E013:\"Attempting to override '{a}' which is a constant.\",E014:\"A regular expression literal can be confused with '/='.\",E015:\"Unclosed regular expression.\",E016:\"Invalid regular expression.\",E017:\"Unclosed comment.\",E018:\"Unbegun comment.\",E019:\"Unmatched '{a}'.\",E020:\"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.\",E021:\"Expected '{a}' and instead saw '{b}'.\",E022:\"Line breaking error '{a}'.\",E023:\"Missing '{a}'.\",E024:\"Unexpected '{a}'.\",E025:\"Missing ':' on a case clause.\",E026:\"Missing '}' to match '{' from line {a}.\",E027:\"Missing ']' to match '[' from line {a}.\",E028:\"Illegal comma.\",E029:\"Unclosed string.\",E030:\"Expected an identifier and instead saw '{a}'.\",E031:\"Bad assignment.\",E032:\"Expected a small integer or 'false' and instead saw '{a}'.\",E033:\"Expected an operator and instead saw '{a}'.\",E034:\"get/set are ES5 features.\",E035:\"Missing property name.\",E036:\"Expected to see a statement and instead saw a block.\",E037:null,E038:null,E039:\"Function declarations are not invocable. Wrap the whole function invocation in parens.\",E040:\"Each value should have its own case label.\",E041:\"Unrecoverable syntax error.\",E042:\"Stopping.\",E043:\"Too many errors.\",E044:null,E045:\"Invalid for each loop.\",E046:\"A yield statement shall be within a generator function (with syntax: `function*`)\",E047:null,E048:\"{a} declaration not directly within block.\",E049:\"A {a} cannot be named '{b}'.\",E050:\"Mozilla acequires the yield expression to be parenthesized here.\",E051:null,E052:\"Unclosed template literal.\",E053:\"Export declaration must be in global scope.\",E054:\"Class properties must be methods. Expected '(' but instead saw '{a}'.\",E055:\"The '{a}' option cannot be set after any executable code.\",E056:\"'{a}' was used before it was declared, which is illegal for '{b}' variables.\",E057:\"Invalid meta property: '{a}.{b}'.\",E058:\"Missing semicolon.\"},warnings={W001:\"'hasOwnProperty' is a really bad name.\",W002:\"Value of '{a}' may be overwritten in IE 8 and earlier.\",W003:\"'{a}' was used before it was defined.\",W004:\"'{a}' is already defined.\",W005:\"A dot following a number can be confused with a decimal point.\",W006:\"Confusing minuses.\",W007:\"Confusing plusses.\",W008:\"A leading decimal point can be confused with a dot: '{a}'.\",W009:\"The array literal notation [] is preferable.\",W010:\"The object literal notation {} is preferable.\",W011:null,W012:null,W013:null,W014:\"Bad line breaking before '{a}'.\",W015:null,W016:\"Unexpected use of '{a}'.\",W017:\"Bad operand.\",W018:\"Confusing use of '{a}'.\",W019:\"Use the isNaN function to compare with NaN.\",W020:\"Read only.\",W021:\"Reassignment of '{a}', which is is a {b}. Use 'var' or 'let' to declare bindings that may change.\",W022:\"Do not assign to the exception parameter.\",W023:\"Expected an identifier in an assignment and instead saw a function invocation.\",W024:\"Expected an identifier and instead saw '{a}' (a reserved word).\",W025:\"Missing name in function declaration.\",W026:\"Inner functions should be listed at the top of the outer function.\",W027:\"Unreachable '{a}' after '{b}'.\",W028:\"Label '{a}' on {b} statement.\",W030:\"Expected an assignment or function call and instead saw an expression.\",W031:\"Do not use 'new' for side effects.\",W032:\"Unnecessary semicolon.\",W033:\"Missing semicolon.\",W034:'Unnecessary directive \"{a}\".',W035:\"Empty block.\",W036:\"Unexpected /*member '{a}'.\",W037:\"'{a}' is a statement label.\",W038:\"'{a}' used out of scope.\",W039:\"'{a}' is not allowed.\",W040:\"Possible strict violation.\",W041:\"Use '{a}' to compare with '{b}'.\",W042:\"Avoid EOL escaping.\",W043:\"Bad escaping of EOL. Use option multistr if needed.\",W044:\"Bad or unnecessary escaping.\",W045:\"Bad number '{a}'.\",W046:\"Don't use extra leading zeros '{a}'.\",W047:\"A trailing decimal point can be confused with a dot: '{a}'.\",W048:\"Unexpected control character in regular expression.\",W049:\"Unexpected escaped character '{a}' in regular expression.\",W050:\"JavaScript URL.\",W051:\"Variables should not be deleted.\",W052:\"Unexpected '{a}'.\",W053:\"Do not use {a} as a constructor.\",W054:\"The Function constructor is a form of eval.\",W055:\"A constructor name should start with an uppercase letter.\",W056:\"Bad constructor.\",W057:\"Weird construction. Is 'new' necessary?\",W058:\"Missing '()' invoking a constructor.\",W059:\"Avoid arguments.{a}.\",W060:\"document.write can be a form of eval.\",W061:\"eval can be harmful.\",W062:\"Wrap an immediate function invocation in parens to assist the reader in understanding that the expression is the result of a function, and not the function itself.\",W063:\"Math is not a function.\",W064:\"Missing 'new' prefix when invoking a constructor.\",W065:\"Missing radix parameter.\",W066:\"Implied eval. Consider passing a function instead of a string.\",W067:\"Bad invocation.\",W068:\"Wrapping non-IIFE function literals in parens is unnecessary.\",W069:\"['{a}'] is better written in dot notation.\",W070:\"Extra comma. (it breaks older versions of IE)\",W071:\"This function has too many statements. ({a})\",W072:\"This function has too many parameters. ({a})\",W073:\"Blocks are nested too deeply. ({a})\",W074:\"This function's cyclomatic complexity is too high. ({a})\",W075:\"Duplicate {a} '{b}'.\",W076:\"Unexpected parameter '{a}' in get {b} function.\",W077:\"Expected a single parameter in set {a} function.\",W078:\"Setter is defined without getter.\",W079:\"Redefinition of '{a}'.\",W080:\"It's not necessary to initialize '{a}' to 'undefined'.\",W081:null,W082:\"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.\",W083:\"Don't make functions within a loop.\",W084:\"Assignment in conditional expression\",W085:\"Don't use 'with'.\",W086:\"Expected a 'break' statement before '{a}'.\",W087:\"Forgotten 'debugger' statement?\",W088:\"Creating global 'for' variable. Should be 'for (var {a} ...'.\",W089:\"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.\",W090:\"'{a}' is not a statement label.\",W091:null,W093:\"Did you mean to return a conditional instead of an assignment?\",W094:\"Unexpected comma.\",W095:\"Expected a string and instead saw {a}.\",W096:\"The '{a}' key may produce unexpected results.\",W097:'Use the function form of \"use strict\".',W098:\"'{a}' is defined but never used.\",W099:null,W100:\"This character may get silently deleted by one or more browsers.\",W101:\"Line is too long.\",W102:null,W103:\"The '{a}' property is deprecated.\",W104:\"'{a}' is available in ES{b} (use 'esversion: {b}') or Mozilla JS extensions (use moz).\",W105:\"Unexpected {a} in '{b}'.\",W106:\"Identifier '{a}' is not in camel case.\",W107:\"Script URL.\",W108:\"Strings must use doublequote.\",W109:\"Strings must use singlequote.\",W110:\"Mixed double and single quotes.\",W112:\"Unclosed string.\",W113:\"Control character in string: {a}.\",W114:\"Avoid {a}.\",W115:\"Octal literals are not allowed in strict mode.\",W116:\"Expected '{a}' and instead saw '{b}'.\",W117:\"'{a}' is not defined.\",W118:\"'{a}' is only available in Mozilla JavaScript extensions (use moz option).\",W119:\"'{a}' is only available in ES{b} (use 'esversion: {b}').\",W120:\"You might be leaking a variable ({a}) here.\",W121:\"Extending prototype of native object: '{a}'.\",W122:\"Invalid typeof value '{a}'\",W123:\"'{a}' is already defined in outer scope.\",W124:\"A generator function shall contain a yield statement.\",W125:\"This line contains non-breaking spaces: http://jshint.com/doc/options/#nonbsp\",W126:\"Unnecessary grouping operator.\",W127:\"Unexpected use of a comma operator.\",W128:\"Empty array elements acequire elision=true.\",W129:\"'{a}' is defined in a future version of JavaScript. Use a different variable name to avoid migration issues.\",W130:\"Invalid element after rest element.\",W131:\"Invalid parameter after rest parameter.\",W132:\"`var` declarations are forbidden. Use `let` or `const` instead.\",W133:\"Invalid for-{a} loop left-hand-side: {b}.\",W134:\"The '{a}' option is only available when linting ECMAScript {b} code.\",W135:\"{a} may not be supported by non-browser environments.\",W136:\"'{a}' must be in function scope.\",W137:\"Empty destructuring.\",W138:\"Regular parameters should not come after default parameters.\"},info={I001:\"Comma warnings can be turned off with 'laxcomma'.\",I002:null,I003:\"ES5 option is now set per default\"};exports.errors={},exports.warnings={},exports.info={},_.each(errors,function(desc,code){exports.errors[code]={code:code,desc:desc}}),_.each(warnings,function(desc,code){exports.warnings[code]={code:code,desc:desc}}),_.each(info,function(desc,code){exports.info[code]={code:code,desc:desc}})},{\"../lodash\":\"/node_modules/jshint/lodash.js\"}],\"/node_modules/jshint/src/name-stack.js\":[function(_dereq_,module){\"use strict\";function NameStack(){this._stack=[]}Object.defineProperty(NameStack.prototype,\"length\",{get:function(){return this._stack.length}}),NameStack.prototype.push=function(){this._stack.push(null)},NameStack.prototype.pop=function(){this._stack.pop()},NameStack.prototype.set=function(token){this._stack[this.length-1]=token},NameStack.prototype.infer=function(){var type,nameToken=this._stack[this.length-1],prefix=\"\";return nameToken&&\"class\"!==nameToken.type||(nameToken=this._stack[this.length-2]),nameToken?(type=nameToken.type,\"(string)\"!==type&&\"(number)\"!==type&&\"(identifier)\"!==type&&\"default\"!==type?\"(expression)\":(nameToken.accessorType&&(prefix=nameToken.accessorType+\" \"),prefix+nameToken.value)):\"(empty)\"},module.exports=NameStack},{}],\"/node_modules/jshint/src/options.js\":[function(_dereq_,module,exports){\"use strict\";exports.bool={enforcing:{bitwise:!0,freeze:!0,camelcase:!0,curly:!0,eqeqeq:!0,futurehostile:!0,notypeof:!0,es3:!0,es5:!0,forin:!0,funcscope:!0,immed:!0,iterator:!0,newcap:!0,noarg:!0,nocomma:!0,noempty:!0,nonbsp:!0,nonew:!0,undef:!0,singleGroups:!1,varstmt:!1,enforceall:!1},relaxing:{asi:!0,multistr:!0,debug:!0,boss:!0,evil:!0,globalstrict:!0,plusplus:!0,proto:!0,scripturl:!0,sub:!0,supernew:!0,laxbreak:!0,laxcomma:!0,validthis:!0,withstmt:!0,moz:!0,noyield:!0,eqnull:!0,lastsemic:!0,loopfunc:!0,expr:!0,esnext:!0,elision:!0},environments:{mootools:!0,couch:!0,jasmine:!0,jquery:!0,node:!0,qunit:!0,rhino:!0,shelljs:!0,prototypejs:!0,yui:!0,mocha:!0,module:!0,wsh:!0,worker:!0,nonstandard:!0,browser:!0,browserify:!0,devel:!0,dojo:!0,typed:!0,phantom:!0},obsolete:{onecase:!0,regexp:!0,regexdash:!0}},exports.val={maxlen:!1,indent:!1,maxerr:!1,predef:!1,globals:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1,shadow:!1,strict:!0,unused:!0,latedef:!1,ignore:!1,ignoreDelimiters:!1,esversion:5},exports.inverted={bitwise:!0,forin:!0,newcap:!0,plusplus:!0,regexp:!0,undef:!0,eqeqeq:!0,strict:!0},exports.validNames=Object.keys(exports.val).concat(Object.keys(exports.bool.relaxing)).concat(Object.keys(exports.bool.enforcing)).concat(Object.keys(exports.bool.obsolete)).concat(Object.keys(exports.bool.environments)),exports.renamed={eqeq:\"eqeqeq\",windows:\"wsh\",sloppy:\"strict\"},exports.removed={nomen:!0,onevar:!0,passfail:!0,white:!0,gcl:!0,smarttabs:!0,trailing:!0},exports.noenforceall={varstmt:!0,strict:!0}},{}],\"/node_modules/jshint/src/reg.js\":[function(_dereq_,module,exports){\"use strict\";exports.unsafeString=/@cc|<\\/?|script|\\]\\s*\\]|<\\s*!|</i,exports.unsafeChars=/[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/,exports.needEsc=/[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/,exports.needEscGlobal=/[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,exports.starSlash=/\\*\\//,exports.identifier=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,exports.javascriptURL=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\\s*:/i,exports.fallsThrough=/^\\s*falls?\\sthrough\\s*$/,exports.maxlenException=/^(?:(?:\\/\\/|\\/\\*|\\*) ?)?[^ ]+$/},{}],\"/node_modules/jshint/src/scope-manager.js\":[function(_dereq_,module){\"use strict\";var _=_dereq_(\"../lodash\"),events=_dereq_(\"events\"),marker={},scopeManager=function(state,predefined,exported,declared){function _newScope(type){_current={\"(labels)\":Object.create(null),\"(usages)\":Object.create(null),\"(breakLabels)\":Object.create(null),\"(parent)\":_current,\"(type)\":type,\"(params)\":\"functionparams\"===type||\"catchparams\"===type?[]:null},_scopeStack.push(_current)}function warning(code,token){emitter.emit(\"warning\",{code:code,token:token,data:_.slice(arguments,2)})}function error(code,token){emitter.emit(\"warning\",{code:code,token:token,data:_.slice(arguments,2)})}function _setupUsages(labelName){_current[\"(usages)\"][labelName]||(_current[\"(usages)\"][labelName]={\"(modified)\":[],\"(reassigned)\":[],\"(tokens)\":[]})}function _checkForUnused(){if(\"functionparams\"===_current[\"(type)\"])return _checkParams(),void 0;var curentLabels=_current[\"(labels)\"];for(var labelName in curentLabels)curentLabels[labelName]&&\"exception\"!==curentLabels[labelName][\"(type)\"]&&curentLabels[labelName][\"(unused)\"]&&_warnUnused(labelName,curentLabels[labelName][\"(token)\"],\"var\")}function _checkParams(){var params=_current[\"(params)\"];if(params)for(var unused_opt,param=params.pop();param;){var label=_current[\"(labels)\"][param];if(unused_opt=_getUnusedOption(state.funct[\"(unusedOption)\"]),\"undefined\"===param)return;if(label[\"(unused)\"])_warnUnused(param,label[\"(token)\"],\"param\",state.funct[\"(unusedOption)\"]);else if(\"last-param\"===unused_opt)return;param=params.pop()}}function _getLabel(labelName){for(var i=_scopeStack.length-1;i>=0;--i){var scopeLabels=_scopeStack[i][\"(labels)\"];if(scopeLabels[labelName])return scopeLabels}}function usedSoFarInCurrentFunction(labelName){for(var i=_scopeStack.length-1;i>=0;i--){var current=_scopeStack[i];if(current[\"(usages)\"][labelName])return current[\"(usages)\"][labelName];if(current===_currentFunctBody)break}return!1}function _checkOuterShadow(labelName,token){if(\"outer\"===state.option.shadow)for(var isGlobal=\"global\"===_currentFunctBody[\"(type)\"],isNewFunction=\"functionparams\"===_current[\"(type)\"],outsideCurrentFunction=!isGlobal,i=0;_scopeStack.length>i;i++){var stackItem=_scopeStack[i];isNewFunction||_scopeStack[i+1]!==_currentFunctBody||(outsideCurrentFunction=!1),outsideCurrentFunction&&stackItem[\"(labels)\"][labelName]&&warning(\"W123\",token,labelName),stackItem[\"(breakLabels)\"][labelName]&&warning(\"W123\",token,labelName)}}function _latedefWarning(type,labelName,token){state.option.latedef&&(state.option.latedef===!0&&\"function\"===type||\"function\"!==type)&&warning(\"W003\",token,labelName)}var _current,_scopeStack=[];_newScope(\"global\"),_current[\"(predefined)\"]=predefined;var _currentFunctBody=_current,usedPredefinedAndGlobals=Object.create(null),impliedGlobals=Object.create(null),unuseds=[],emitter=new events.EventEmitter,_getUnusedOption=function(unused_opt){return void 0===unused_opt&&(unused_opt=state.option.unused),unused_opt===!0&&(unused_opt=\"last-param\"),unused_opt},_warnUnused=function(name,tkn,type,unused_opt){var line=tkn.line,chr=tkn.from,raw_name=tkn.raw_text||name;unused_opt=_getUnusedOption(unused_opt);var warnable_types={vars:[\"var\"],\"last-param\":[\"var\",\"param\"],strict:[\"var\",\"param\",\"last-param\"]};unused_opt&&warnable_types[unused_opt]&&-1!==warnable_types[unused_opt].indexOf(type)&&warning(\"W098\",{line:line,from:chr},raw_name),(unused_opt||\"var\"===type)&&unuseds.push({name:name,line:line,character:chr})},scopeManagerInst={on:function(names,listener){names.split(\" \").forEach(function(name){emitter.on(name,listener)})},isPredefined:function(labelName){return!this.has(labelName)&&_.has(_scopeStack[0][\"(predefined)\"],labelName)},stack:function(type){var previousScope=_current;_newScope(type),type||\"functionparams\"!==previousScope[\"(type)\"]||(_current[\"(isFuncBody)\"]=!0,_current[\"(context)\"]=_currentFunctBody,_currentFunctBody=_current)},unstack:function(){var i,j,subScope=_scopeStack.length>1?_scopeStack[_scopeStack.length-2]:null,isUnstackingFunctionBody=_current===_currentFunctBody,isUnstackingFunctionParams=\"functionparams\"===_current[\"(type)\"],isUnstackingFunctionOuter=\"functionouter\"===_current[\"(type)\"],currentUsages=_current[\"(usages)\"],currentLabels=_current[\"(labels)\"],usedLabelNameList=Object.keys(currentUsages);for(currentUsages.__proto__&&-1===usedLabelNameList.indexOf(\"__proto__\")&&usedLabelNameList.push(\"__proto__\"),i=0;usedLabelNameList.length>i;i++){var usedLabelName=usedLabelNameList[i],usage=currentUsages[usedLabelName],usedLabel=currentLabels[usedLabelName];if(usedLabel){var usedLabelType=usedLabel[\"(type)\"];if(usedLabel[\"(useOutsideOfScope)\"]&&!state.option.funcscope){var usedTokens=usage[\"(tokens)\"];if(usedTokens)for(j=0;usedTokens.length>j;j++)usedLabel[\"(function)\"]===usedTokens[j][\"(function)\"]&&error(\"W038\",usedTokens[j],usedLabelName)}if(_current[\"(labels)\"][usedLabelName][\"(unused)\"]=!1,\"const\"===usedLabelType&&usage[\"(modified)\"])for(j=0;usage[\"(modified)\"].length>j;j++)error(\"E013\",usage[\"(modified)\"][j],usedLabelName);if((\"function\"===usedLabelType||\"class\"===usedLabelType)&&usage[\"(reassigned)\"])for(j=0;usage[\"(reassigned)\"].length>j;j++)error(\"W021\",usage[\"(reassigned)\"][j],usedLabelName,usedLabelType)}else if(isUnstackingFunctionOuter&&(state.funct[\"(isCapturing)\"]=!0),subScope)if(subScope[\"(usages)\"][usedLabelName]){var subScopeUsage=subScope[\"(usages)\"][usedLabelName];subScopeUsage[\"(modified)\"]=subScopeUsage[\"(modified)\"].concat(usage[\"(modified)\"]),subScopeUsage[\"(tokens)\"]=subScopeUsage[\"(tokens)\"].concat(usage[\"(tokens)\"]),subScopeUsage[\"(reassigned)\"]=subScopeUsage[\"(reassigned)\"].concat(usage[\"(reassigned)\"]),subScopeUsage[\"(onlyUsedSubFunction)\"]=!1}else subScope[\"(usages)\"][usedLabelName]=usage,isUnstackingFunctionBody&&(subScope[\"(usages)\"][usedLabelName][\"(onlyUsedSubFunction)\"]=!0);else if(\"boolean\"==typeof _current[\"(predefined)\"][usedLabelName]){if(delete declared[usedLabelName],usedPredefinedAndGlobals[usedLabelName]=marker,_current[\"(predefined)\"][usedLabelName]===!1&&usage[\"(reassigned)\"])for(j=0;usage[\"(reassigned)\"].length>j;j++)warning(\"W020\",usage[\"(reassigned)\"][j])}else if(usage[\"(tokens)\"])for(j=0;usage[\"(tokens)\"].length>j;j++){var undefinedToken=usage[\"(tokens)\"][j];undefinedToken.forgiveUndef||(state.option.undef&&!undefinedToken.ignoreUndef&&warning(\"W117\",undefinedToken,usedLabelName),impliedGlobals[usedLabelName]?impliedGlobals[usedLabelName].line.push(undefinedToken.line):impliedGlobals[usedLabelName]={name:usedLabelName,line:[undefinedToken.line]})}}if(subScope||Object.keys(declared).forEach(function(labelNotUsed){_warnUnused(labelNotUsed,declared[labelNotUsed],\"var\")}),subScope&&!isUnstackingFunctionBody&&!isUnstackingFunctionParams&&!isUnstackingFunctionOuter){var labelNames=Object.keys(currentLabels);for(i=0;labelNames.length>i;i++){var defLabelName=labelNames[i];currentLabels[defLabelName][\"(blockscoped)\"]||\"exception\"===currentLabels[defLabelName][\"(type)\"]||this.funct.has(defLabelName,{excludeCurrent:!0})||(subScope[\"(labels)\"][defLabelName]=currentLabels[defLabelName],\"global\"!==_currentFunctBody[\"(type)\"]&&(subScope[\"(labels)\"][defLabelName][\"(useOutsideOfScope)\"]=!0),delete currentLabels[defLabelName])}}_checkForUnused(),_scopeStack.pop(),isUnstackingFunctionBody&&(_currentFunctBody=_scopeStack[_.findLastIndex(_scopeStack,function(scope){return scope[\"(isFuncBody)\"]||\"global\"===scope[\"(type)\"]})]),_current=subScope},addParam:function(labelName,token,type){if(type=type||\"param\",\"exception\"===type){var previouslyDefinedLabelType=this.funct.labeltype(labelName);previouslyDefinedLabelType&&\"exception\"!==previouslyDefinedLabelType&&(state.option.node||warning(\"W002\",state.tokens.next,labelName))}if(_.has(_current[\"(labels)\"],labelName)?_current[\"(labels)\"][labelName].duplicated=!0:(_checkOuterShadow(labelName,token,type),_current[\"(labels)\"][labelName]={\"(type)\":type,\"(token)\":token,\"(unused)\":!0},_current[\"(params)\"].push(labelName)),_.has(_current[\"(usages)\"],labelName)){var usage=_current[\"(usages)\"][labelName];usage[\"(onlyUsedSubFunction)\"]?_latedefWarning(type,labelName,token):warning(\"E056\",token,labelName,type)}},validateParams:function(){if(\"global\"!==_currentFunctBody[\"(type)\"]){var isStrict=state.isStrict(),currentFunctParamScope=_currentFunctBody[\"(parent)\"];currentFunctParamScope[\"(params)\"]&¤tFunctParamScope[\"(params)\"].forEach(function(labelName){var label=currentFunctParamScope[\"(labels)\"][labelName];label&&label.duplicated&&(isStrict?warning(\"E011\",label[\"(token)\"],labelName):state.option.shadow!==!0&&warning(\"W004\",label[\"(token)\"],labelName))})}},getUsedOrDefinedGlobals:function(){var list=Object.keys(usedPredefinedAndGlobals);return usedPredefinedAndGlobals.__proto__===marker&&-1===list.indexOf(\"__proto__\")&&list.push(\"__proto__\"),list},getImpliedGlobals:function(){var values=_.values(impliedGlobals),hasProto=!1;return impliedGlobals.__proto__&&(hasProto=values.some(function(value){return\"__proto__\"===value.name}),hasProto||values.push(impliedGlobals.__proto__)),values},getUnuseds:function(){return unuseds},has:function(labelName){return Boolean(_getLabel(labelName))},labeltype:function(labelName){var scopeLabels=_getLabel(labelName);return scopeLabels?scopeLabels[labelName][\"(type)\"]:null},addExported:function(labelName){var globalLabels=_scopeStack[0][\"(labels)\"];if(_.has(declared,labelName))delete declared[labelName];else if(_.has(globalLabels,labelName))globalLabels[labelName][\"(unused)\"]=!1;else{for(var i=1;_scopeStack.length>i;i++){var scope=_scopeStack[i];if(scope[\"(type)\"])break;if(_.has(scope[\"(labels)\"],labelName)&&!scope[\"(labels)\"][labelName][\"(blockscoped)\"])return scope[\"(labels)\"][labelName][\"(unused)\"]=!1,void 0}exported[labelName]=!0}},setExported:function(labelName,token){this.block.use(labelName,token)\n},addlabel:function(labelName,opts){var type=opts.type,token=opts.token,isblockscoped=\"let\"===type||\"const\"===type||\"class\"===type,isexported=\"global\"===(isblockscoped?_current:_currentFunctBody)[\"(type)\"]&&_.has(exported,labelName);if(_checkOuterShadow(labelName,token,type),isblockscoped){var declaredInCurrentScope=_current[\"(labels)\"][labelName];if(declaredInCurrentScope||_current!==_currentFunctBody||\"global\"===_current[\"(type)\"]||(declaredInCurrentScope=!!_currentFunctBody[\"(parent)\"][\"(labels)\"][labelName]),!declaredInCurrentScope&&_current[\"(usages)\"][labelName]){var usage=_current[\"(usages)\"][labelName];usage[\"(onlyUsedSubFunction)\"]?_latedefWarning(type,labelName,token):warning(\"E056\",token,labelName,type)}declaredInCurrentScope?warning(\"E011\",token,labelName):\"outer\"===state.option.shadow&&scopeManagerInst.funct.has(labelName)&&warning(\"W004\",token,labelName),scopeManagerInst.block.add(labelName,type,token,!isexported)}else{var declaredInCurrentFunctionScope=scopeManagerInst.funct.has(labelName);!declaredInCurrentFunctionScope&&usedSoFarInCurrentFunction(labelName)&&_latedefWarning(type,labelName,token),scopeManagerInst.funct.has(labelName,{onlyBlockscoped:!0})?warning(\"E011\",token,labelName):state.option.shadow!==!0&&declaredInCurrentFunctionScope&&\"__proto__\"!==labelName&&\"global\"!==_currentFunctBody[\"(type)\"]&&warning(\"W004\",token,labelName),scopeManagerInst.funct.add(labelName,type,token,!isexported),\"global\"===_currentFunctBody[\"(type)\"]&&(usedPredefinedAndGlobals[labelName]=marker)}},funct:{labeltype:function(labelName,options){for(var onlyBlockscoped=options&&options.onlyBlockscoped,excludeParams=options&&options.excludeParams,currentScopeIndex=_scopeStack.length-(options&&options.excludeCurrent?2:1),i=currentScopeIndex;i>=0;i--){var current=_scopeStack[i];if(current[\"(labels)\"][labelName]&&(!onlyBlockscoped||current[\"(labels)\"][labelName][\"(blockscoped)\"]))return current[\"(labels)\"][labelName][\"(type)\"];var scopeCheck=excludeParams?_scopeStack[i-1]:current;if(scopeCheck&&\"functionparams\"===scopeCheck[\"(type)\"])return null}return null},hasBreakLabel:function(labelName){for(var i=_scopeStack.length-1;i>=0;i--){var current=_scopeStack[i];if(current[\"(breakLabels)\"][labelName])return!0;if(\"functionparams\"===current[\"(type)\"])return!1}return!1},has:function(labelName,options){return Boolean(this.labeltype(labelName,options))},add:function(labelName,type,tok,unused){_current[\"(labels)\"][labelName]={\"(type)\":type,\"(token)\":tok,\"(blockscoped)\":!1,\"(function)\":_currentFunctBody,\"(unused)\":unused}}},block:{isGlobal:function(){return\"global\"===_current[\"(type)\"]},use:function(labelName,token){var paramScope=_currentFunctBody[\"(parent)\"];paramScope&¶mScope[\"(labels)\"][labelName]&&\"param\"===paramScope[\"(labels)\"][labelName][\"(type)\"]&&(scopeManagerInst.funct.has(labelName,{excludeParams:!0,onlyBlockscoped:!0})||(paramScope[\"(labels)\"][labelName][\"(unused)\"]=!1)),token&&(state.ignored.W117||state.option.undef===!1)&&(token.ignoreUndef=!0),_setupUsages(labelName),token&&(token[\"(function)\"]=_currentFunctBody,_current[\"(usages)\"][labelName][\"(tokens)\"].push(token))},reassign:function(labelName,token){this.modify(labelName,token),_current[\"(usages)\"][labelName][\"(reassigned)\"].push(token)},modify:function(labelName,token){_setupUsages(labelName),_current[\"(usages)\"][labelName][\"(modified)\"].push(token)},add:function(labelName,type,tok,unused){_current[\"(labels)\"][labelName]={\"(type)\":type,\"(token)\":tok,\"(blockscoped)\":!0,\"(unused)\":unused}},addBreakLabel:function(labelName,opts){var token=opts.token;scopeManagerInst.funct.hasBreakLabel(labelName)?warning(\"E011\",token,labelName):\"outer\"===state.option.shadow&&(scopeManagerInst.funct.has(labelName)?warning(\"W004\",token,labelName):_checkOuterShadow(labelName,token)),_current[\"(breakLabels)\"][labelName]=token}}};return scopeManagerInst};module.exports=scopeManager},{\"../lodash\":\"/node_modules/jshint/lodash.js\",events:\"/node_modules/browserify/node_modules/events/events.js\"}],\"/node_modules/jshint/src/state.js\":[function(_dereq_,module,exports){\"use strict\";var NameStack=_dereq_(\"./name-stack.js\"),state={syntax:{},isStrict:function(){return this.directive[\"use strict\"]||this.inClassBody||this.option.module||\"implied\"===this.option.strict},inMoz:function(){return this.option.moz},inES6:function(){return this.option.moz||this.option.esversion>=6},inES5:function(strict){return strict?!(this.option.esversion&&5!==this.option.esversion||this.option.moz):!this.option.esversion||this.option.esversion>=5||this.option.moz},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.funct=null,this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab=\"\",this.cache={},this.ignoredLines={},this.forinifcheckneeded=!1,this.nameStack=new NameStack,this.inClassBody=!1}};exports.state=state},{\"./name-stack.js\":\"/node_modules/jshint/src/name-stack.js\"}],\"/node_modules/jshint/src/style.js\":[function(_dereq_,module,exports){\"use strict\";exports.register=function(linter){linter.on(\"Identifier\",function(data){linter.getOption(\"proto\")||\"__proto__\"===data.name&&linter.warn(\"W103\",{line:data.line,\"char\":data.char,data:[data.name,\"6\"]})}),linter.on(\"Identifier\",function(data){linter.getOption(\"iterator\")||\"__iterator__\"===data.name&&linter.warn(\"W103\",{line:data.line,\"char\":data.char,data:[data.name]})}),linter.on(\"Identifier\",function(data){linter.getOption(\"camelcase\")&&data.name.replace(/^_+|_+$/g,\"\").indexOf(\"_\")>-1&&!data.name.match(/^[A-Z0-9_]*$/)&&linter.warn(\"W106\",{line:data.line,\"char\":data.from,data:[data.name]})}),linter.on(\"String\",function(data){var code,quotmark=linter.getOption(\"quotmark\");quotmark&&(\"single\"===quotmark&&\"'\"!==data.quote&&(code=\"W109\"),\"double\"===quotmark&&'\"'!==data.quote&&(code=\"W108\"),quotmark===!0&&(linter.getCache(\"quotmark\")||linter.setCache(\"quotmark\",data.quote),linter.getCache(\"quotmark\")!==data.quote&&(code=\"W110\")),code&&linter.warn(code,{line:data.line,\"char\":data.char}))}),linter.on(\"Number\",function(data){\".\"===data.value.charAt(0)&&linter.warn(\"W008\",{line:data.line,\"char\":data.char,data:[data.value]}),\".\"===data.value.substr(data.value.length-1)&&linter.warn(\"W047\",{line:data.line,\"char\":data.char,data:[data.value]}),/^00+/.test(data.value)&&linter.warn(\"W046\",{line:data.line,\"char\":data.char,data:[data.value]})}),linter.on(\"String\",function(data){var re=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\\s*:/i;linter.getOption(\"scripturl\")||re.test(data.value)&&linter.warn(\"W107\",{line:data.line,\"char\":data.char})})}},{}],\"/node_modules/jshint/src/vars.js\":[function(_dereq_,module,exports){\"use strict\";exports.reservedVars={arguments:!1,NaN:!1},exports.ecmaIdentifiers={3:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},5:{JSON:!1},6:{Map:!1,Promise:!1,Proxy:!1,Reflect:!1,Set:!1,Symbol:!1,WeakMap:!1,WeakSet:!1}},exports.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CSS:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,Comment:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,Document:!1,document:!1,DocumentFragment:!1,Element:!1,ElementTimeControl:!1,Event:!1,event:!1,fetch:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,Notification:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,performance:!1,print:!1,Range:!1,requestAnimationFrame:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,Text:!1,TextDecoder:!1,TextEncoder:!1,TimeEvent:!1,top:!1,URL:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,window:!1,Window:!1,Worker:!1,XDomainRequest:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},exports.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},exports.worker={importScripts:!0,postMessage:!0,self:!0,FileReaderSync:!0},exports.nonstandard={escape:!1,unescape:!1},exports.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},exports.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,acequire:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},exports.browserify={__filename:!1,__dirname:!1,global:!1,module:!1,acequire:!1,Buffer:!0,exports:!0,process:!0},exports.phantom={phantom:!0,acequire:!0,WebPage:!0,console:!0,exports:!0},exports.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,\"throws\":!1},exports.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},exports.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},exports.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},exports.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},exports.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},exports.jquery={$:!1,jQuery:!1},exports.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},exports.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},exports.yui={YUI:!1,Y:!1,YUI_config:!1},exports.mocha={mocha:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,context:!1,xcontext:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1,suiteSetup:!1,suiteTeardown:!1},exports.jasmine={jasmine:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1,beforeAll:!1,afterAll:!1,fail:!1,fdescribe:!1,fit:!1,pending:!1}},{}]},{},[\"/node_modules/jshint/src/jshint.js\"])}),ace.define(\"ace/mode/javascript_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/javascript/jshint\"],function(acequire,exports,module){\"use strict\";function startRegex(arr){return RegExp(\"^(\"+arr.join(\"|\")+\")\")}var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,lint=acequire(\"./javascript/jshint\").JSHINT,disabledWarningsRe=startRegex([\"Bad for in variable '(.+)'.\",'Missing \"use strict\"']),errorsRe=startRegex([\"Unexpected\",\"Expected \",\"Confusing (plus|minus)\",\"\\\\{a\\\\} unterminated regular expression\",\"Unclosed \",\"Unmatched \",\"Unbegun comment\",\"Bad invocation\",\"Missing space after\",\"Missing operator at\"]),infoRe=startRegex([\"Expected an assignment\",\"Bad escapement of EOL\",\"Unexpected comma\",\"Unexpected space\",\"Missing radix parameter.\",\"A leading decimal point can\",\"\\\\['{a}'\\\\] is better written in dot notation.\",\"'{a}' used out of scope\"]),JavaScriptWorker=exports.JavaScriptWorker=function(sender){Mirror.call(this,sender),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(options){this.options=options||{esnext:!0,moz:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(newOptions){oop.mixin(this.options,newOptions),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval(\"throw 0;\"+str)}catch(e){if(0===e)return!0}return!1},this.onUpdate=function(){var value=this.doc.getValue();if(value=value.replace(/^#!.*\\n/,\"\\n\"),!value)return this.sender.emit(\"annotate\",[]);var errors=[],maxErrorLevel=this.isValidJS(value)?\"warning\":\"error\";lint(value,this.options,this.options.globals);for(var results=lint.errors,errorAdded=!1,i=0;results.length>i;i++){var error=results[i];if(error){var raw=error.raw,type=\"warning\";if(\"Missing semicolon.\"==raw){var str=error.evidence.substr(error.character);str=str.charAt(str.search(/\\S/)),\"error\"==maxErrorLevel&&str&&/[\\w\\d{(['\"]/.test(str)?(error.reason='Missing \";\" before statement',type=\"error\"):type=\"info\"}else{if(disabledWarningsRe.test(raw))continue;infoRe.test(raw)?type=\"info\":errorsRe.test(raw)?(errorAdded=!0,type=maxErrorLevel):\"'{a}' is not defined.\"==raw?type=\"warning\":\"'{a}' is defined but never used.\"==raw&&(type=\"info\")}errors.push({row:error.line-1,column:error.character-1,text:error.reason,type:type,raw:raw})}}this.sender.emit(\"annotate\",errors)}}.call(JavaScriptWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }), /* 25 */ /***/ (function(module, exports) { module.exports.id = 'ace/mode/css_worker'; module.exports.src = "\"no use strict\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/</g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=\"insert\"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;return $pointsInOrder(point,deltaStart,moveIfEqual)?{row:point.row,column:point.column}:$pointsInOrder(deltaEnd,point,!moveIfEqual)?{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)}:{row:deltaStart.row,column:deltaStart.column}}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){\"use strict\";acequire(\"../range\").Range;var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/css/csslint\",[\"require\",\"exports\",\"module\"],function(acequire,exports,module){function objectToString(o){return Object.prototype.toString.call(o)}function clone(parent,circular,depth,prototype){function _clone(parent,depth){if(null===parent)return null;if(0==depth)return parent;var child;if(\"object\"!=typeof parent)return parent;if(util.isArray(parent))child=[];else if(util.isRegExp(parent))child=RegExp(parent.source,util.getRegExpFlags(parent)),parent.lastIndex&&(child.lastIndex=parent.lastIndex);else if(util.isDate(parent))child=new Date(parent.getTime());else{if(useBuffer&&Buffer.isBuffer(parent))return child=new Buffer(parent.length),parent.copy(child),child;child=prototype===void 0?Object.create(Object.getPrototypeOf(parent)):Object.create(prototype)}if(circular){var index=allParents.indexOf(parent);if(-1!=index)return allChildren[index];allParents.push(parent),allChildren.push(child)}for(var i in parent)child[i]=_clone(parent[i],depth-1);return child}var allParents=[],allChildren=[],useBuffer=\"undefined\"!=typeof Buffer;return circular===void 0&&(circular=!0),depth===void 0&&(depth=1/0),_clone(parent,depth)}function Reporter(lines,ruleset){this.messages=[],this.stats=[],this.lines=lines,this.ruleset=ruleset}var parserlib={};(function(){function EventTarget(){this._listeners={}}function StringReader(text){this._input=text.replace(/\\n\\r?/g,\"\\n\"),this._line=1,this._col=1,this._cursor=0}function SyntaxError(message,line,col){this.col=col,this.line=line,this.message=message}function SyntaxUnit(text,line,col,type){this.col=col,this.line=line,this.text=text,this.type=type}function TokenStreamBase(input,tokenData){this._reader=input?new StringReader(\"\"+input):null,this._token=null,this._tokenData=tokenData,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}EventTarget.prototype={constructor:EventTarget,addListener:function(type,listener){this._listeners[type]||(this._listeners[type]=[]),this._listeners[type].push(listener)},fire:function(event){if(\"string\"==typeof event&&(event={type:event}),event.target!==void 0&&(event.target=this),event.type===void 0)throw Error(\"Event object missing 'type' property.\");if(this._listeners[event.type])for(var listeners=this._listeners[event.type].concat(),i=0,len=listeners.length;len>i;i++)listeners[i].call(this,event)},removeListener:function(type,listener){if(this._listeners[type])for(var listeners=this._listeners[type],i=0,len=listeners.length;len>i;i++)if(listeners[i]===listener){listeners.splice(i,1);break}}},StringReader.prototype={constructor:StringReader,getCol:function(){return this._col},getLine:function(){return this._line},eof:function(){return this._cursor==this._input.length},peek:function(count){var c=null;return count=count===void 0?1:count,this._cursor<this._input.length&&(c=this._input.charAt(this._cursor+count-1)),c},read:function(){var c=null;return this._cursor<this._input.length&&(\"\\n\"==this._input.charAt(this._cursor)?(this._line++,this._col=1):this._col++,c=this._input.charAt(this._cursor++)),c},mark:function(){this._bookmark={cursor:this._cursor,line:this._line,col:this._col}},reset:function(){this._bookmark&&(this._cursor=this._bookmark.cursor,this._line=this._bookmark.line,this._col=this._bookmark.col,delete this._bookmark)},readTo:function(pattern){for(var c,buffer=\"\";buffer.length<pattern.length||buffer.lastIndexOf(pattern)!=buffer.length-pattern.length;){if(c=this.read(),!c)throw Error('Expected \"'+pattern+'\" at line '+this._line+\", col \"+this._col+\".\");buffer+=c}return buffer},readWhile:function(filter){for(var buffer=\"\",c=this.read();null!==c&&filter(c);)buffer+=c,c=this.read();return buffer},readMatch:function(matcher){var source=this._input.substring(this._cursor),value=null;return\"string\"==typeof matcher?0===source.indexOf(matcher)&&(value=this.readCount(matcher.length)):matcher instanceof RegExp&&matcher.test(source)&&(value=this.readCount(RegExp.lastMatch.length)),value},readCount:function(count){for(var buffer=\"\";count--;)buffer+=this.read();return buffer}},SyntaxError.prototype=Error(),SyntaxUnit.fromToken=function(token){return new SyntaxUnit(token.value,token.startLine,token.startCol)},SyntaxUnit.prototype={constructor:SyntaxUnit,valueOf:function(){return this.text},toString:function(){return this.text}},TokenStreamBase.createTokenData=function(tokens){var nameMap=[],typeMap={},tokenData=tokens.concat([]),i=0,len=tokenData.length+1;for(tokenData.UNKNOWN=-1,tokenData.unshift({name:\"EOF\"});len>i;i++)nameMap.push(tokenData[i].name),tokenData[tokenData[i].name]=i,tokenData[i].text&&(typeMap[tokenData[i].text]=i);return tokenData.name=function(tt){return nameMap[tt]},tokenData.type=function(c){return typeMap[c]},tokenData},TokenStreamBase.prototype={constructor:TokenStreamBase,match:function(tokenTypes,channel){tokenTypes instanceof Array||(tokenTypes=[tokenTypes]);\nfor(var tt=this.get(channel),i=0,len=tokenTypes.length;len>i;)if(tt==tokenTypes[i++])return!0;return this.unget(),!1},mustMatch:function(tokenTypes){var token;if(tokenTypes instanceof Array||(tokenTypes=[tokenTypes]),!this.match.apply(this,arguments))throw token=this.LT(1),new SyntaxError(\"Expected \"+this._tokenData[tokenTypes[0]].name+\" at line \"+token.startLine+\", col \"+token.startCol+\".\",token.startLine,token.startCol)},advance:function(tokenTypes,channel){for(;0!==this.LA(0)&&!this.match(tokenTypes,channel);)this.get();return this.LA(0)},get:function(channel){var token,info,tokenInfo=this._tokenData,i=(this._reader,0);if(tokenInfo.length,this._lt.length&&this._ltIndex>=0&&this._ltIndex<this._lt.length){for(i++,this._token=this._lt[this._ltIndex++],info=tokenInfo[this._token.type];void 0!==info.channel&&channel!==info.channel&&this._ltIndex<this._lt.length;)this._token=this._lt[this._ltIndex++],info=tokenInfo[this._token.type],i++;if((void 0===info.channel||channel===info.channel)&&this._ltIndex<=this._lt.length)return this._ltIndexCache.push(i),this._token.type}return token=this._getToken(),token.type>-1&&!tokenInfo[token.type].hide&&(token.channel=tokenInfo[token.type].channel,this._token=token,this._lt.push(token),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),info=tokenInfo[token.type],info&&(info.hide||void 0!==info.channel&&channel!==info.channel)?this.get(channel):token.type},LA:function(index){var tt,total=index;if(index>0){if(index>5)throw Error(\"Too much lookahead.\");for(;total;)tt=this.get(),total--;for(;index>total;)this.unget(),total++}else if(0>index){if(!this._lt[this._ltIndex+index])throw Error(\"Too much lookbehind.\");tt=this._lt[this._ltIndex+index].type}else tt=this._token.type;return tt},LT:function(index){return this.LA(index),this._lt[this._ltIndex+index-1]},peek:function(){return this.LA(1)},token:function(){return this._token},tokenName:function(tokenType){return 0>tokenType||tokenType>this._tokenData.length?\"UNKNOWN_TOKEN\":this._tokenData[tokenType].name},tokenType:function(tokenName){return this._tokenData[tokenName]||-1},unget:function(){if(!this._ltIndexCache.length)throw Error(\"Too much lookahead.\");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:StringReader,SyntaxError:SyntaxError,SyntaxUnit:SyntaxUnit,EventTarget:EventTarget,TokenStreamBase:TokenStreamBase}})(),function(){function Combinator(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.COMBINATOR_TYPE),this.type=\"unknown\",/^\\s+$/.test(text)?this.type=\"descendant\":\">\"==text?this.type=\"child\":\"+\"==text?this.type=\"adjacent-sibling\":\"~\"==text&&(this.type=\"sibling\")}function MediaFeature(name,value){SyntaxUnit.call(this,\"(\"+name+(null!==value?\":\"+value:\"\")+\")\",name.startLine,name.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=name,this.value=value}function MediaQuery(modifier,mediaType,features,line,col){SyntaxUnit.call(this,(modifier?modifier+\" \":\"\")+(mediaType?mediaType:\"\")+(mediaType&&features.length>0?\" and \":\"\")+features.join(\" and \"),line,col,Parser.MEDIA_QUERY_TYPE),this.modifier=modifier,this.mediaType=mediaType,this.features=features}function Parser(options){EventTarget.call(this),this.options=options||{},this._tokenStream=null}function PropertyName(text,hack,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_NAME_TYPE),this.hack=hack}function PropertyValue(parts,line,col){SyntaxUnit.call(this,parts.join(\" \"),line,col,Parser.PROPERTY_VALUE_TYPE),this.parts=parts}function PropertyValueIterator(value){this._i=0,this._parts=value.parts,this._marks=[],this.value=value}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type=\"unknown\";var temp;if(/^([+\\-]?[\\d\\.]+)([a-z]+)$/i.test(text))switch(this.type=\"dimension\",this.value=+RegExp.$1,this.units=RegExp.$2,this.units.toLowerCase()){case\"em\":case\"rem\":case\"ex\":case\"px\":case\"cm\":case\"mm\":case\"in\":case\"pt\":case\"pc\":case\"ch\":case\"vh\":case\"vw\":case\"vmax\":case\"vmin\":this.type=\"length\";break;case\"deg\":case\"rad\":case\"grad\":this.type=\"angle\";break;case\"ms\":case\"s\":this.type=\"time\";break;case\"hz\":case\"khz\":this.type=\"frequency\";break;case\"dpi\":case\"dpcm\":this.type=\"resolution\"}else/^([+\\-]?[\\d\\.]+)%$/i.test(text)?(this.type=\"percentage\",this.value=+RegExp.$1):/^([+\\-]?\\d+)$/i.test(text)?(this.type=\"integer\",this.value=+RegExp.$1):/^([+\\-]?[\\d\\.]+)$/i.test(text)?(this.type=\"number\",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type=\"color\",temp=RegExp.$1,3==temp.length?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i.test(text)?(this.type=\"color\",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\\(\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*\\)/i.test(text)?(this.type=\"color\",this.red=255*+RegExp.$1/100,this.green=255*+RegExp.$2/100,this.blue=255*+RegExp.$3/100):/^rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d\\.]+)\\s*\\)/i.test(text)?(this.type=\"color\",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\\(\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*([\\d\\.]+)\\s*\\)/i.test(text)?(this.type=\"color\",this.red=255*+RegExp.$1/100,this.green=255*+RegExp.$2/100,this.blue=255*+RegExp.$3/100,this.alpha=+RegExp.$4):/^hsl\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*\\)/i.test(text)?(this.type=\"color\",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*([\\d\\.]+)\\s*\\)/i.test(text)?(this.type=\"color\",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\\([\"']?([^\\)\"']+)[\"']?\\)/i.test(text)?(this.type=\"uri\",this.uri=RegExp.$1):/^([^\\(]+)\\(/i.test(text)?(this.type=\"function\",this.name=RegExp.$1,this.value=text):/^[\"'][^\"']*[\"']/.test(text)?(this.type=\"string\",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type=\"color\",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\\,\\/]$/.test(text)?(this.type=\"operator\",this.value=text):/^[a-z\\-_\\u0080-\\uFFFF][a-z0-9\\-_\\u0080-\\uFFFF]*$/i.test(text)&&(this.type=\"identifier\",this.value=text)}function Selector(parts,line,col){SyntaxUnit.call(this,parts.join(\" \"),line,col,Parser.SELECTOR_TYPE),this.parts=parts,this.specificity=Specificity.calculate(this)}function SelectorPart(elementName,modifiers,text,line,col){SyntaxUnit.call(this,text,line,col,Parser.SELECTOR_PART_TYPE),this.elementName=elementName,this.modifiers=modifiers}function SelectorSubPart(text,type,line,col){SyntaxUnit.call(this,text,line,col,Parser.SELECTOR_SUB_PART_TYPE),this.type=type,this.args=[]}function Specificity(a,b,c,d){this.a=a,this.b=b,this.c=c,this.d=d}function isHexDigit(c){return null!==c&&h.test(c)}function isDigit(c){return null!==c&&/\\d/.test(c)}function isWhitespace(c){return null!==c&&/\\s/.test(c)}function isNewLine(c){return null!==c&&nl.test(c)}function isNameStart(c){return null!==c&&/[a-z_\\u0080-\\uFFFF\\\\]/i.test(c)}function isNameChar(c){return null!==c&&(isNameStart(c)||/[0-9\\-\\\\]/.test(c))}function isIdentStart(c){return null!==c&&(isNameStart(c)||/\\-\\\\/.test(c))}function mix(receiver,supplier){for(var prop in supplier)supplier.hasOwnProperty(prop)&&(receiver[prop]=supplier[prop]);return receiver}function TokenStream(input){TokenStreamBase.call(this,input,Tokens)}function ValidationError(message,line,col){this.col=col,this.line=line,this.message=message}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:\"#f0f8ff\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",aquamarine:\"#7fffd4\",azure:\"#f0ffff\",beige:\"#f5f5dc\",bisque:\"#ffe4c4\",black:\"#000000\",blanchedalmond:\"#ffebcd\",blue:\"#0000ff\",blueviolet:\"#8a2be2\",brown:\"#a52a2a\",burlywood:\"#deb887\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",cornflowerblue:\"#6495ed\",cornsilk:\"#fff8dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkgray:\"#a9a9a9\",darkgrey:\"#a9a9a9\",darkgreen:\"#006400\",darkkhaki:\"#bdb76b\",darkmagenta:\"#8b008b\",darkolivegreen:\"#556b2f\",darkorange:\"#ff8c00\",darkorchid:\"#9932cc\",darkred:\"#8b0000\",darksalmon:\"#e9967a\",darkseagreen:\"#8fbc8f\",darkslateblue:\"#483d8b\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",darkturquoise:\"#00ced1\",darkviolet:\"#9400d3\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1e90ff\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",forestgreen:\"#228b22\",fuchsia:\"#ff00ff\",gainsboro:\"#dcdcdc\",ghostwhite:\"#f8f8ff\",gold:\"#ffd700\",goldenrod:\"#daa520\",gray:\"#808080\",grey:\"#808080\",green:\"#008000\",greenyellow:\"#adff2f\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",ivory:\"#fffff0\",khaki:\"#f0e68c\",lavender:\"#e6e6fa\",lavenderblush:\"#fff0f5\",lawngreen:\"#7cfc00\",lemonchiffon:\"#fffacd\",lightblue:\"#add8e6\",lightcoral:\"#f08080\",lightcyan:\"#e0ffff\",lightgoldenrodyellow:\"#fafad2\",lightgray:\"#d3d3d3\",lightgrey:\"#d3d3d3\",lightgreen:\"#90ee90\",lightpink:\"#ffb6c1\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",lightskyblue:\"#87cefa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",lightsteelblue:\"#b0c4de\",lightyellow:\"#ffffe0\",lime:\"#00ff00\",limegreen:\"#32cd32\",linen:\"#faf0e6\",magenta:\"#ff00ff\",maroon:\"#800000\",mediumaquamarine:\"#66cdaa\",mediumblue:\"#0000cd\",mediumorchid:\"#ba55d3\",mediumpurple:\"#9370d8\",mediumseagreen:\"#3cb371\",mediumslateblue:\"#7b68ee\",mediumspringgreen:\"#00fa9a\",mediumturquoise:\"#48d1cc\",mediumvioletred:\"#c71585\",midnightblue:\"#191970\",mintcream:\"#f5fffa\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",navajowhite:\"#ffdead\",navy:\"#000080\",oldlace:\"#fdf5e6\",olive:\"#808000\",olivedrab:\"#6b8e23\",orange:\"#ffa500\",orangered:\"#ff4500\",orchid:\"#da70d6\",palegoldenrod:\"#eee8aa\",palegreen:\"#98fb98\",paleturquoise:\"#afeeee\",palevioletred:\"#d87093\",papayawhip:\"#ffefd5\",peachpuff:\"#ffdab9\",peru:\"#cd853f\",pink:\"#ffc0cb\",plum:\"#dda0dd\",powderblue:\"#b0e0e6\",purple:\"#800080\",red:\"#ff0000\",rosybrown:\"#bc8f8f\",royalblue:\"#4169e1\",saddlebrown:\"#8b4513\",salmon:\"#fa8072\",sandybrown:\"#f4a460\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",sienna:\"#a0522d\",silver:\"#c0c0c0\",skyblue:\"#87ceeb\",slateblue:\"#6a5acd\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#fffafa\",springgreen:\"#00ff7f\",steelblue:\"#4682b4\",tan:\"#d2b48c\",teal:\"#008080\",thistle:\"#d8bfd8\",tomato:\"#ff6347\",turquoise:\"#40e0d0\",violet:\"#ee82ee\",wheat:\"#f5deb3\",white:\"#ffffff\",whitesmoke:\"#f5f5f5\",yellow:\"#ffff00\",yellowgreen:\"#9acd32\",activeBorder:\"Active window border.\",activecaption:\"Active window caption.\",appworkspace:\"Background color of multiple document interface.\",background:\"Desktop background.\",buttonface:\"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.\",buttonhighlight:\"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.\",buttonshadow:\"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.\",buttontext:\"Text on push buttons.\",captiontext:\"Text in caption, size box, and scrollbar arrow box.\",graytext:\"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.\",greytext:\"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.\",highlight:\"Item(s) selected in a control.\",highlighttext:\"Text of item(s) selected in a control.\",inactiveborder:\"Inactive window border.\",inactivecaption:\"Inactive window caption.\",inactivecaptiontext:\"Color of text in an inactive caption.\",infobackground:\"Background color for tooltip controls.\",infotext:\"Text color for tooltip controls.\",menu:\"Menu background.\",menutext:\"Text in menus.\",scrollbar:\"Scroll bar gray area.\",threeddarkshadow:\"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",threedface:\"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",threedhighlight:\"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",threedlightshadow:\"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",threedshadow:\"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",window:\"Window background.\",windowframe:\"Window frame.\",windowtext:\"Text in windows.\"};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var prop,proto=new EventTarget,additions={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var count,token,tt,tokenStream=this._tokenStream;for(this.fire(\"startstylesheet\"),this._charset(),this._skipCruft();tokenStream.peek()==Tokens.IMPORT_SYM;)this._import(),this._skipCruft();for(;tokenStream.peek()==Tokens.NAMESPACE_SYM;)this._namespace(),this._skipCruft();for(tt=tokenStream.peek();tt>Tokens.EOF;){try{switch(tt){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:if(tokenStream.get(),this.options.strict)throw new SyntaxError(\"Unknown @ rule.\",tokenStream.LT(0).startLine,tokenStream.LT(0).startCol);for(this.fire({type:\"error\",error:null,message:\"Unknown @ rule: \"+tokenStream.LT(0).value+\".\",line:tokenStream.LT(0).startLine,col:tokenStream.LT(0).startCol}),count=0;tokenStream.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE;)count++;for(;count;)tokenStream.advance([Tokens.RBRACE]),count--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(tt){case Tokens.CHARSET_SYM:throw token=tokenStream.LT(1),this._charset(!1),new SyntaxError(\"@charset not allowed here.\",token.startLine,token.startCol);case Tokens.IMPORT_SYM:throw token=tokenStream.LT(1),this._import(!1),new SyntaxError(\"@import not allowed here.\",token.startLine,token.startCol);case Tokens.NAMESPACE_SYM:throw token=tokenStream.LT(1),this._namespace(!1),new SyntaxError(\"@namespace not allowed here.\",token.startLine,token.startCol);default:tokenStream.get(),this._unexpectedToken(tokenStream.token())}}}catch(ex){if(!(ex instanceof SyntaxError)||this.options.strict)throw ex;this.fire({type:\"error\",error:ex,message:ex.message,line:ex.line,col:ex.col})}tt=tokenStream.peek()}tt!=Tokens.EOF&&this._unexpectedToken(tokenStream.token()),this.fire(\"endstylesheet\")},_charset:function(emit){var charset,token,line,col,tokenStream=this._tokenStream;tokenStream.match(Tokens.CHARSET_SYM)&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),tokenStream.mustMatch(Tokens.STRING),token=tokenStream.token(),charset=token.value,this._readWhitespace(),tokenStream.mustMatch(Tokens.SEMICOLON),emit!==!1&&this.fire({type:\"charset\",charset:charset,line:line,col:col}))},_import:function(emit){var uri,importToken,tokenStream=this._tokenStream,mediaList=[];tokenStream.mustMatch(Tokens.IMPORT_SYM),importToken=tokenStream.token(),this._readWhitespace(),tokenStream.mustMatch([Tokens.STRING,Tokens.URI]),uri=tokenStream.token().value.replace(/^(?:url\\()?[\"']?([^\"']+?)[\"']?\\)?$/,\"$1\"),this._readWhitespace(),mediaList=this._media_query_list(),tokenStream.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),emit!==!1&&this.fire({type:\"import\",uri:uri,media:mediaList,line:importToken.startLine,col:importToken.startCol})},_namespace:function(emit){var line,col,prefix,uri,tokenStream=this._tokenStream;tokenStream.mustMatch(Tokens.NAMESPACE_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),tokenStream.match(Tokens.IDENT)&&(prefix=tokenStream.token().value,this._readWhitespace()),tokenStream.mustMatch([Tokens.STRING,Tokens.URI]),uri=tokenStream.token().value.replace(/(?:url\\()?[\"']([^\"']+)[\"']\\)?/,\"$1\"),this._readWhitespace(),tokenStream.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),emit!==!1&&this.fire({type:\"namespace\",prefix:prefix,uri:uri,line:line,col:col})},_media:function(){var line,col,mediaList,tokenStream=this._tokenStream;for(tokenStream.mustMatch(Tokens.MEDIA_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),mediaList=this._media_query_list(),tokenStream.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:\"startmedia\",media:mediaList,line:line,col:col});;)if(tokenStream.peek()==Tokens.PAGE_SYM)this._page();else if(tokenStream.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(tokenStream.peek()==Tokens.VIEWPORT_SYM)this._viewport();else if(!this._ruleset())break;tokenStream.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:\"endmedia\",media:mediaList,line:line,col:col})},_media_query_list:function(){var tokenStream=this._tokenStream,mediaList=[];for(this._readWhitespace(),(tokenStream.peek()==Tokens.IDENT||tokenStream.peek()==Tokens.LPAREN)&&mediaList.push(this._media_query());tokenStream.match(Tokens.COMMA);)this._readWhitespace(),mediaList.push(this._media_query());return mediaList},_media_query:function(){var tokenStream=this._tokenStream,type=null,ident=null,token=null,expressions=[];if(tokenStream.match(Tokens.IDENT)&&(ident=tokenStream.token().value.toLowerCase(),\"only\"!=ident&&\"not\"!=ident?(tokenStream.unget(),ident=null):token=tokenStream.token()),this._readWhitespace(),tokenStream.peek()==Tokens.IDENT?(type=this._media_type(),null===token&&(token=tokenStream.token())):tokenStream.peek()==Tokens.LPAREN&&(null===token&&(token=tokenStream.LT(1)),expressions.push(this._media_expression())),null===type&&0===expressions.length)return null;for(this._readWhitespace();tokenStream.match(Tokens.IDENT);)\"and\"!=tokenStream.token().value.toLowerCase()&&this._unexpectedToken(tokenStream.token()),this._readWhitespace(),expressions.push(this._media_expression());return new MediaQuery(ident,type,expressions,token.startLine,token.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var token,tokenStream=this._tokenStream,feature=null,expression=null;return tokenStream.mustMatch(Tokens.LPAREN),this._readWhitespace(),feature=this._media_feature(),this._readWhitespace(),tokenStream.match(Tokens.COLON)&&(this._readWhitespace(),token=tokenStream.LT(1),expression=this._expression()),tokenStream.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(feature,expression?new SyntaxUnit(expression,token.startLine,token.startCol):null)},_media_feature:function(){var tokenStream=this._tokenStream;return tokenStream.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(tokenStream.token())},_page:function(){var line,col,tokenStream=this._tokenStream,identifier=null,pseudoPage=null;tokenStream.mustMatch(Tokens.PAGE_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),tokenStream.match(Tokens.IDENT)&&(identifier=tokenStream.token().value,\"auto\"===identifier.toLowerCase()&&this._unexpectedToken(tokenStream.token())),tokenStream.peek()==Tokens.COLON&&(pseudoPage=this._pseudo_page()),this._readWhitespace(),this.fire({type:\"startpage\",id:identifier,pseudo:pseudoPage,line:line,col:col}),this._readDeclarations(!0,!0),this.fire({type:\"endpage\",id:identifier,pseudo:pseudoPage,line:line,col:col})},_margin:function(){var line,col,tokenStream=this._tokenStream,marginSym=this._margin_sym();return marginSym?(line=tokenStream.token().startLine,col=tokenStream.token().startCol,this.fire({type:\"startpagemargin\",margin:marginSym,line:line,col:col}),this._readDeclarations(!0),this.fire({type:\"endpagemargin\",margin:marginSym,line:line,col:col}),!0):!1},_margin_sym:function(){var tokenStream=this._tokenStream;return tokenStream.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(tokenStream.token()):null},_pseudo_page:function(){var tokenStream=this._tokenStream;return tokenStream.mustMatch(Tokens.COLON),tokenStream.mustMatch(Tokens.IDENT),tokenStream.token().value},_font_face:function(){var line,col,tokenStream=this._tokenStream;tokenStream.mustMatch(Tokens.FONT_FACE_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),this.fire({type:\"startfontface\",line:line,col:col}),this._readDeclarations(!0),this.fire({type:\"endfontface\",line:line,col:col})},_viewport:function(){var line,col,tokenStream=this._tokenStream;tokenStream.mustMatch(Tokens.VIEWPORT_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),this.fire({type:\"startviewport\",line:line,col:col}),this._readDeclarations(!0),this.fire({type:\"endviewport\",line:line,col:col})},_operator:function(inFunction){var tokenStream=this._tokenStream,token=null;return(tokenStream.match([Tokens.SLASH,Tokens.COMMA])||inFunction&&tokenStream.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))&&(token=tokenStream.token(),this._readWhitespace()),token?PropertyValuePart.fromToken(token):null},_combinator:function(){var token,tokenStream=this._tokenStream,value=null;return tokenStream.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(token=tokenStream.token(),value=new Combinator(token.value,token.startLine,token.startCol),this._readWhitespace()),value},_unary_operator:function(){var tokenStream=this._tokenStream;return tokenStream.match([Tokens.MINUS,Tokens.PLUS])?tokenStream.token().value:null},_property:function(){var tokenValue,token,line,col,tokenStream=this._tokenStream,value=null,hack=null;return tokenStream.peek()==Tokens.STAR&&this.options.starHack&&(tokenStream.get(),token=tokenStream.token(),hack=token.value,line=token.startLine,col=token.startCol),tokenStream.match(Tokens.IDENT)&&(token=tokenStream.token(),tokenValue=token.value,\"_\"==tokenValue.charAt(0)&&this.options.underscoreHack&&(hack=\"_\",tokenValue=tokenValue.substring(1)),value=new PropertyName(tokenValue,hack,line||token.startLine,col||token.startCol),this._readWhitespace()),value},_ruleset:function(){var tt,selectors,tokenStream=this._tokenStream;try{selectors=this._selectors_group()}catch(ex){if(!(ex instanceof SyntaxError)||this.options.strict)throw ex;if(this.fire({type:\"error\",error:ex,message:ex.message,line:ex.line,col:ex.col}),tt=tokenStream.advance([Tokens.RBRACE]),tt!=Tokens.RBRACE)throw ex;return!0}return selectors&&(this.fire({type:\"startrule\",selectors:selectors,line:selectors[0].line,col:selectors[0].col}),this._readDeclarations(!0),this.fire({type:\"endrule\",selectors:selectors,line:selectors[0].line,col:selectors[0].col})),selectors},_selectors_group:function(){var selector,tokenStream=this._tokenStream,selectors=[];if(selector=this._selector(),null!==selector)for(selectors.push(selector);tokenStream.match(Tokens.COMMA);)this._readWhitespace(),selector=this._selector(),null!==selector?selectors.push(selector):this._unexpectedToken(tokenStream.LT(1));return selectors.length?selectors:null},_selector:function(){var tokenStream=this._tokenStream,selector=[],nextSelector=null,combinator=null,ws=null;if(nextSelector=this._simple_selector_sequence(),null===nextSelector)return null;for(selector.push(nextSelector);;)if(combinator=this._combinator(),null!==combinator)selector.push(combinator),nextSelector=this._simple_selector_sequence(),null===nextSelector?this._unexpectedToken(tokenStream.LT(1)):selector.push(nextSelector);else{if(!this._readWhitespace())break;ws=new Combinator(tokenStream.token().value,tokenStream.token().startLine,tokenStream.token().startCol),combinator=this._combinator(),nextSelector=this._simple_selector_sequence(),null===nextSelector?null!==combinator&&this._unexpectedToken(tokenStream.LT(1)):(null!==combinator?selector.push(combinator):selector.push(ws),selector.push(nextSelector))}return new Selector(selector,selector[0].line,selector[0].col)},_simple_selector_sequence:function(){var line,col,tokenStream=this._tokenStream,elementName=null,modifiers=[],selectorText=\"\",components=[function(){return tokenStream.match(Tokens.HASH)?new SelectorSubPart(tokenStream.token().value,\"id\",tokenStream.token().startLine,tokenStream.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],i=0,len=components.length,component=null;for(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol,elementName=this._type_selector(),elementName||(elementName=this._universal()),null!==elementName&&(selectorText+=elementName);;){if(tokenStream.peek()===Tokens.S)break;for(;len>i&&null===component;)component=components[i++].call(this);if(null===component){if(\"\"===selectorText)return null;break}i=0,modifiers.push(component),selectorText+=\"\"+component,component=null}return\"\"!==selectorText?new SelectorPart(elementName,modifiers,selectorText,line,col):null},_type_selector:function(){var tokenStream=this._tokenStream,ns=this._namespace_prefix(),elementName=this._element_name();return elementName?(ns&&(elementName.text=ns+elementName.text,elementName.col-=ns.length),elementName):(ns&&(tokenStream.unget(),ns.length>1&&tokenStream.unget()),null)},_class:function(){var token,tokenStream=this._tokenStream;return tokenStream.match(Tokens.DOT)?(tokenStream.mustMatch(Tokens.IDENT),token=tokenStream.token(),new SelectorSubPart(\".\"+token.value,\"class\",token.startLine,token.startCol-1)):null},_element_name:function(){var token,tokenStream=this._tokenStream;return tokenStream.match(Tokens.IDENT)?(token=tokenStream.token(),new SelectorSubPart(token.value,\"elementName\",token.startLine,token.startCol)):null},_namespace_prefix:function(){var tokenStream=this._tokenStream,value=\"\";return(tokenStream.LA(1)===Tokens.PIPE||tokenStream.LA(2)===Tokens.PIPE)&&(tokenStream.match([Tokens.IDENT,Tokens.STAR])&&(value+=tokenStream.token().value),tokenStream.mustMatch(Tokens.PIPE),value+=\"|\"),value.length?value:null},_universal:function(){var ns,tokenStream=this._tokenStream,value=\"\";return ns=this._namespace_prefix(),ns&&(value+=ns),tokenStream.match(Tokens.STAR)&&(value+=\"*\"),value.length?value:null},_attrib:function(){var ns,token,tokenStream=this._tokenStream,value=null;return tokenStream.match(Tokens.LBRACKET)?(token=tokenStream.token(),value=token.value,value+=this._readWhitespace(),ns=this._namespace_prefix(),ns&&(value+=ns),tokenStream.mustMatch(Tokens.IDENT),value+=tokenStream.token().value,value+=this._readWhitespace(),tokenStream.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(value+=tokenStream.token().value,value+=this._readWhitespace(),tokenStream.mustMatch([Tokens.IDENT,Tokens.STRING]),value+=tokenStream.token().value,value+=this._readWhitespace()),tokenStream.mustMatch(Tokens.RBRACKET),new SelectorSubPart(value+\"]\",\"attribute\",token.startLine,token.startCol)):null},_pseudo:function(){var line,col,tokenStream=this._tokenStream,pseudo=null,colons=\":\";return tokenStream.match(Tokens.COLON)&&(tokenStream.match(Tokens.COLON)&&(colons+=\":\"),tokenStream.match(Tokens.IDENT)?(pseudo=tokenStream.token().value,line=tokenStream.token().startLine,col=tokenStream.token().startCol-colons.length):tokenStream.peek()==Tokens.FUNCTION&&(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol-colons.length,pseudo=this._functional_pseudo()),pseudo&&(pseudo=new SelectorSubPart(colons+pseudo,\"pseudo\",line,col))),pseudo},_functional_pseudo:function(){var tokenStream=this._tokenStream,value=null;return tokenStream.match(Tokens.FUNCTION)&&(value=tokenStream.token().value,value+=this._readWhitespace(),value+=this._expression(),tokenStream.mustMatch(Tokens.RPAREN),value+=\")\"),value},_expression:function(){for(var tokenStream=this._tokenStream,value=\"\";tokenStream.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]);)value+=tokenStream.token().value,value+=this._readWhitespace();return value.length?value:null},_negation:function(){var line,col,arg,tokenStream=this._tokenStream,value=\"\",subpart=null;return tokenStream.match(Tokens.NOT)&&(value=tokenStream.token().value,line=tokenStream.token().startLine,col=tokenStream.token().startCol,value+=this._readWhitespace(),arg=this._negation_arg(),value+=arg,value+=this._readWhitespace(),tokenStream.match(Tokens.RPAREN),value+=tokenStream.token().value,subpart=new SelectorSubPart(value,\"not\",line,col),subpart.args.push(arg)),subpart},_negation_arg:function(){var line,col,part,tokenStream=this._tokenStream,args=[this._type_selector,this._universal,function(){return tokenStream.match(Tokens.HASH)?new SelectorSubPart(tokenStream.token().value,\"id\",tokenStream.token().startLine,tokenStream.token().startCol):null},this._class,this._attrib,this._pseudo],arg=null,i=0,len=args.length;for(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol;len>i&&null===arg;)arg=args[i].call(this),i++;return null===arg&&this._unexpectedToken(tokenStream.LT(1)),part=\"elementName\"==arg.type?new SelectorPart(arg,[],\"\"+arg,line,col):new SelectorPart(null,[arg],\"\"+arg,line,col)},_declaration:function(){var tokenStream=this._tokenStream,property=null,expr=null,prio=null,invalid=null,propertyName=\"\";if(property=this._property(),null!==property){tokenStream.mustMatch(Tokens.COLON),this._readWhitespace(),expr=this._expr(),expr&&0!==expr.length||this._unexpectedToken(tokenStream.LT(1)),prio=this._prio(),propertyName=\"\"+property,(this.options.starHack&&\"*\"==property.hack||this.options.underscoreHack&&\"_\"==property.hack)&&(propertyName=property.text);try{this._validateProperty(propertyName,expr)}catch(ex){invalid=ex}return this.fire({type:\"property\",property:property,value:expr,important:prio,line:property.line,col:property.col,invalid:invalid}),!0}return!1},_prio:function(){var tokenStream=this._tokenStream,result=tokenStream.match(Tokens.IMPORTANT_SYM);return this._readWhitespace(),result},_expr:function(inFunction){var values=(this._tokenStream,[]),value=null,operator=null;if(value=this._term(inFunction),null!==value)for(values.push(value);;){if(operator=this._operator(inFunction),operator&&values.push(operator),value=this._term(inFunction),null===value)break;\nvalues.push(value)}return values.length>0?new PropertyValue(values,values[0].line,values[0].col):null},_term:function(inFunction){var token,line,col,tokenStream=this._tokenStream,unary=null,value=null,endChar=null;return unary=this._unary_operator(),null!==unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol),tokenStream.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(value=this._ie_function(),null===unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol)):inFunction&&tokenStream.match([Tokens.LPAREN,Tokens.LBRACE,Tokens.LBRACKET])?(token=tokenStream.token(),endChar=token.endChar,value=token.value+this._expr(inFunction).text,null===unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol),tokenStream.mustMatch(Tokens.type(endChar)),value+=endChar,this._readWhitespace()):tokenStream.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(value=tokenStream.token().value,null===unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol),this._readWhitespace()):(token=this._hexcolor(),null===token?(null===unary&&(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol),null===value&&(value=tokenStream.LA(3)==Tokens.EQUALS&&this.options.ieFilters?this._ie_function():this._function())):(value=token.value,null===unary&&(line=token.startLine,col=token.startCol))),null!==value?new PropertyValuePart(null!==unary?unary+value:value,line,col):null},_function:function(){var lt,tokenStream=this._tokenStream,functionText=null,expr=null;if(tokenStream.match(Tokens.FUNCTION)){if(functionText=tokenStream.token().value,this._readWhitespace(),expr=this._expr(!0),functionText+=expr,this.options.ieFilters&&tokenStream.peek()==Tokens.EQUALS)do for(this._readWhitespace()&&(functionText+=tokenStream.token().value),tokenStream.LA(0)==Tokens.COMMA&&(functionText+=tokenStream.token().value),tokenStream.match(Tokens.IDENT),functionText+=tokenStream.token().value,tokenStream.match(Tokens.EQUALS),functionText+=tokenStream.token().value,lt=tokenStream.peek();lt!=Tokens.COMMA&<!=Tokens.S&<!=Tokens.RPAREN;)tokenStream.get(),functionText+=tokenStream.token().value,lt=tokenStream.peek();while(tokenStream.match([Tokens.COMMA,Tokens.S]));tokenStream.match(Tokens.RPAREN),functionText+=\")\",this._readWhitespace()}return functionText},_ie_function:function(){var lt,tokenStream=this._tokenStream,functionText=null;if(tokenStream.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){functionText=tokenStream.token().value;do for(this._readWhitespace()&&(functionText+=tokenStream.token().value),tokenStream.LA(0)==Tokens.COMMA&&(functionText+=tokenStream.token().value),tokenStream.match(Tokens.IDENT),functionText+=tokenStream.token().value,tokenStream.match(Tokens.EQUALS),functionText+=tokenStream.token().value,lt=tokenStream.peek();lt!=Tokens.COMMA&<!=Tokens.S&<!=Tokens.RPAREN;)tokenStream.get(),functionText+=tokenStream.token().value,lt=tokenStream.peek();while(tokenStream.match([Tokens.COMMA,Tokens.S]));tokenStream.match(Tokens.RPAREN),functionText+=\")\",this._readWhitespace()}return functionText},_hexcolor:function(){var color,tokenStream=this._tokenStream,token=null;if(tokenStream.match(Tokens.HASH)){if(token=tokenStream.token(),color=token.value,!/#[a-f0-9]{3,6}/i.test(color))throw new SyntaxError(\"Expected a hex color but found '\"+color+\"' at line \"+token.startLine+\", col \"+token.startCol+\".\",token.startLine,token.startCol);this._readWhitespace()}return token},_keyframes:function(){var token,tt,name,tokenStream=this._tokenStream,prefix=\"\";for(tokenStream.mustMatch(Tokens.KEYFRAMES_SYM),token=tokenStream.token(),/^@\\-([^\\-]+)\\-/.test(token.value)&&(prefix=RegExp.$1),this._readWhitespace(),name=this._keyframe_name(),this._readWhitespace(),tokenStream.mustMatch(Tokens.LBRACE),this.fire({type:\"startkeyframes\",name:name,prefix:prefix,line:token.startLine,col:token.startCol}),this._readWhitespace(),tt=tokenStream.peek();tt==Tokens.IDENT||tt==Tokens.PERCENTAGE;)this._keyframe_rule(),this._readWhitespace(),tt=tokenStream.peek();this.fire({type:\"endkeyframes\",name:name,prefix:prefix,line:token.startLine,col:token.startCol}),this._readWhitespace(),tokenStream.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var tokenStream=this._tokenStream;return tokenStream.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(tokenStream.token())},_keyframe_rule:function(){var keyList=(this._tokenStream,this._key_list());this.fire({type:\"startkeyframerule\",keys:keyList,line:keyList[0].line,col:keyList[0].col}),this._readDeclarations(!0),this.fire({type:\"endkeyframerule\",keys:keyList,line:keyList[0].line,col:keyList[0].col})},_key_list:function(){var tokenStream=this._tokenStream,keyList=[];for(keyList.push(this._key()),this._readWhitespace();tokenStream.match(Tokens.COMMA);)this._readWhitespace(),keyList.push(this._key()),this._readWhitespace();return keyList},_key:function(){var token,tokenStream=this._tokenStream;if(tokenStream.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(tokenStream.token());if(tokenStream.match(Tokens.IDENT)){if(token=tokenStream.token(),/from|to/i.test(token.value))return SyntaxUnit.fromToken(token);tokenStream.unget()}this._unexpectedToken(tokenStream.LT(1))},_skipCruft:function(){for(;this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]););},_readDeclarations:function(checkStart,readMargins){var tt,tokenStream=this._tokenStream;this._readWhitespace(),checkStart&&tokenStream.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(tokenStream.match(Tokens.SEMICOLON)||readMargins&&this._margin());else{if(!this._declaration())break;if(!tokenStream.match(Tokens.SEMICOLON))break}this._readWhitespace()}tokenStream.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(ex){if(!(ex instanceof SyntaxError)||this.options.strict)throw ex;if(this.fire({type:\"error\",error:ex,message:ex.message,line:ex.line,col:ex.col}),tt=tokenStream.advance([Tokens.SEMICOLON,Tokens.RBRACE]),tt==Tokens.SEMICOLON)this._readDeclarations(!1,readMargins);else if(tt!=Tokens.RBRACE)throw ex}},_readWhitespace:function(){for(var tokenStream=this._tokenStream,ws=\"\";tokenStream.match(Tokens.S);)ws+=tokenStream.token().value;return ws},_unexpectedToken:function(token){throw new SyntaxError(\"Unexpected token '\"+token.value+\"' at line \"+token.startLine+\", col \"+token.startCol+\".\",token.startLine,token.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(property,value){Validation.validate(property,value)},parse:function(input){this._tokenStream=new TokenStream(input,Tokens),this._stylesheet()},parseStyleSheet:function(input){return this.parse(input)},parseMediaQuery:function(input){this._tokenStream=new TokenStream(input,Tokens);var result=this._media_query();return this._verifyEnd(),result},parsePropertyValue:function(input){this._tokenStream=new TokenStream(input,Tokens),this._readWhitespace();var result=this._expr();return this._readWhitespace(),this._verifyEnd(),result},parseRule:function(input){this._tokenStream=new TokenStream(input,Tokens),this._readWhitespace();var result=this._ruleset();return this._readWhitespace(),this._verifyEnd(),result},parseSelector:function(input){this._tokenStream=new TokenStream(input,Tokens),this._readWhitespace();var result=this._selector();return this._readWhitespace(),this._verifyEnd(),result},parseStyleAttribute:function(input){input+=\"}\",this._tokenStream=new TokenStream(input,Tokens),this._readDeclarations()}};for(prop in additions)additions.hasOwnProperty(prop)&&(proto[prop]=additions[prop]);return proto}();var Properties={\"align-items\":\"flex-start | flex-end | center | baseline | stretch\",\"align-content\":\"flex-start | flex-end | center | space-between | space-around | stretch\",\"align-self\":\"auto | flex-start | flex-end | center | baseline | stretch\",\"-webkit-align-items\":\"flex-start | flex-end | center | baseline | stretch\",\"-webkit-align-content\":\"flex-start | flex-end | center | space-between | space-around | stretch\",\"-webkit-align-self\":\"auto | flex-start | flex-end | center | baseline | stretch\",\"alignment-adjust\":\"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>\",\"alignment-baseline\":\"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",animation:1,\"animation-delay\":{multi:\"<time>\",comma:!0},\"animation-direction\":{multi:\"normal | reverse | alternate | alternate-reverse\",comma:!0},\"animation-duration\":{multi:\"<time>\",comma:!0},\"animation-fill-mode\":{multi:\"none | forwards | backwards | both\",comma:!0},\"animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"animation-name\":{multi:\"none | <ident>\",comma:!0},\"animation-play-state\":{multi:\"running | paused\",comma:!0},\"animation-timing-function\":1,\"-moz-animation-delay\":{multi:\"<time>\",comma:!0},\"-moz-animation-direction\":{multi:\"normal | reverse | alternate | alternate-reverse\",comma:!0},\"-moz-animation-duration\":{multi:\"<time>\",comma:!0},\"-moz-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-moz-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-moz-animation-play-state\":{multi:\"running | paused\",comma:!0},\"-ms-animation-delay\":{multi:\"<time>\",comma:!0},\"-ms-animation-direction\":{multi:\"normal | reverse | alternate | alternate-reverse\",comma:!0},\"-ms-animation-duration\":{multi:\"<time>\",comma:!0},\"-ms-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-ms-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-ms-animation-play-state\":{multi:\"running | paused\",comma:!0},\"-webkit-animation-delay\":{multi:\"<time>\",comma:!0},\"-webkit-animation-direction\":{multi:\"normal | reverse | alternate | alternate-reverse\",comma:!0},\"-webkit-animation-duration\":{multi:\"<time>\",comma:!0},\"-webkit-animation-fill-mode\":{multi:\"none | forwards | backwards | both\",comma:!0},\"-webkit-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-webkit-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-webkit-animation-play-state\":{multi:\"running | paused\",comma:!0},\"-o-animation-delay\":{multi:\"<time>\",comma:!0},\"-o-animation-direction\":{multi:\"normal | reverse | alternate | alternate-reverse\",comma:!0},\"-o-animation-duration\":{multi:\"<time>\",comma:!0},\"-o-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-o-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-o-animation-play-state\":{multi:\"running | paused\",comma:!0},appearance:\"icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit\",azimuth:function(expression){var part,simple=\"<angle> | leftwards | rightwards | inherit\",direction=\"left-side | far-left | left | center-left | center | center-right | right | far-right | right-side\",behind=!1,valid=!1;if(ValidationTypes.isAny(expression,simple)||(ValidationTypes.isAny(expression,\"behind\")&&(behind=!0,valid=!0),ValidationTypes.isAny(expression,direction)&&(valid=!0,behind||ValidationTypes.isAny(expression,\"behind\"))),expression.hasNext())throw part=expression.next(),valid?new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col):new ValidationError(\"Expected (<'azimuth'>) but found '\"+part+\"'.\",part.line,part.col)},\"backface-visibility\":\"visible | hidden\",background:1,\"background-attachment\":{multi:\"<attachment>\",comma:!0},\"background-clip\":{multi:\"<box>\",comma:!0},\"background-color\":\"<color> | inherit\",\"background-image\":{multi:\"<bg-image>\",comma:!0},\"background-origin\":{multi:\"<box>\",comma:!0},\"background-position\":{multi:\"<bg-position>\",comma:!0},\"background-repeat\":{multi:\"<repeat-style>\"},\"background-size\":{multi:\"<bg-size>\",comma:!0},\"baseline-shift\":\"baseline | sub | super | <percentage> | <length>\",behavior:1,binding:1,bleed:\"<length>\",\"bookmark-label\":\"<content> | <attr> | <string>\",\"bookmark-level\":\"none | <integer>\",\"bookmark-state\":\"open | closed\",\"bookmark-target\":\"none | <uri> | <attr>\",border:\"<border-width> || <border-style> || <color>\",\"border-bottom\":\"<border-width> || <border-style> || <color>\",\"border-bottom-color\":\"<color> | inherit\",\"border-bottom-left-radius\":\"<x-one-radius>\",\"border-bottom-right-radius\":\"<x-one-radius>\",\"border-bottom-style\":\"<border-style>\",\"border-bottom-width\":\"<border-width>\",\"border-collapse\":\"collapse | separate | inherit\",\"border-color\":{multi:\"<color> | inherit\",max:4},\"border-image\":1,\"border-image-outset\":{multi:\"<length> | <number>\",max:4},\"border-image-repeat\":{multi:\"stretch | repeat | round\",max:2},\"border-image-slice\":function(expression){var part,valid=!1,numeric=\"<number> | <percentage>\",fill=!1,count=0,max=4;for(ValidationTypes.isAny(expression,\"fill\")&&(fill=!0,valid=!0);expression.hasNext()&&max>count&&(valid=ValidationTypes.isAny(expression,numeric));)count++;if(fill?valid=!0:ValidationTypes.isAny(expression,\"fill\"),expression.hasNext())throw part=expression.next(),valid?new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col):new ValidationError(\"Expected ([<number> | <percentage>]{1,4} && fill?) but found '\"+part+\"'.\",part.line,part.col)},\"border-image-source\":\"<image> | none\",\"border-image-width\":{multi:\"<length> | <percentage> | <number> | auto\",max:4},\"border-left\":\"<border-width> || <border-style> || <color>\",\"border-left-color\":\"<color> | inherit\",\"border-left-style\":\"<border-style>\",\"border-left-width\":\"<border-width>\",\"border-radius\":function(expression){for(var part,valid=!1,simple=\"<length> | <percentage> | inherit\",slash=!1,count=0,max=8;expression.hasNext()&&max>count;){if(valid=ValidationTypes.isAny(expression,simple),!valid){if(!(\"/\"==expression.peek()&&count>0)||slash)break;slash=!0,max=count+5,expression.next()}count++}if(expression.hasNext())throw part=expression.next(),valid?new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col):new ValidationError(\"Expected (<'border-radius'>) but found '\"+part+\"'.\",part.line,part.col)},\"border-right\":\"<border-width> || <border-style> || <color>\",\"border-right-color\":\"<color> | inherit\",\"border-right-style\":\"<border-style>\",\"border-right-width\":\"<border-width>\",\"border-spacing\":{multi:\"<length> | inherit\",max:2},\"border-style\":{multi:\"<border-style>\",max:4},\"border-top\":\"<border-width> || <border-style> || <color>\",\"border-top-color\":\"<color> | inherit\",\"border-top-left-radius\":\"<x-one-radius>\",\"border-top-right-radius\":\"<x-one-radius>\",\"border-top-style\":\"<border-style>\",\"border-top-width\":\"<border-width>\",\"border-width\":{multi:\"<border-width>\",max:4},bottom:\"<margin-width> | inherit\",\"-moz-box-align\":\"start | end | center | baseline | stretch\",\"-moz-box-decoration-break\":\"slice |clone\",\"-moz-box-direction\":\"normal | reverse | inherit\",\"-moz-box-flex\":\"<number>\",\"-moz-box-flex-group\":\"<integer>\",\"-moz-box-lines\":\"single | multiple\",\"-moz-box-ordinal-group\":\"<integer>\",\"-moz-box-orient\":\"horizontal | vertical | inline-axis | block-axis | inherit\",\"-moz-box-pack\":\"start | end | center | justify\",\"-webkit-box-align\":\"start | end | center | baseline | stretch\",\"-webkit-box-decoration-break\":\"slice |clone\",\"-webkit-box-direction\":\"normal | reverse | inherit\",\"-webkit-box-flex\":\"<number>\",\"-webkit-box-flex-group\":\"<integer>\",\"-webkit-box-lines\":\"single | multiple\",\"-webkit-box-ordinal-group\":\"<integer>\",\"-webkit-box-orient\":\"horizontal | vertical | inline-axis | block-axis | inherit\",\"-webkit-box-pack\":\"start | end | center | justify\",\"box-shadow\":function(expression){var part;if(ValidationTypes.isAny(expression,\"none\")){if(expression.hasNext())throw part=expression.next(),new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col)}else Validation.multiProperty(\"<shadow>\",expression,!0,1/0)},\"box-sizing\":\"content-box | border-box | inherit\",\"break-after\":\"auto | always | avoid | left | right | page | column | avoid-page | avoid-column\",\"break-before\":\"auto | always | avoid | left | right | page | column | avoid-page | avoid-column\",\"break-inside\":\"auto | avoid | avoid-page | avoid-column\",\"caption-side\":\"top | bottom | inherit\",clear:\"none | right | left | both | inherit\",clip:1,color:\"<color> | inherit\",\"color-profile\":1,\"column-count\":\"<integer> | auto\",\"column-fill\":\"auto | balance\",\"column-gap\":\"<length> | normal\",\"column-rule\":\"<border-width> || <border-style> || <color>\",\"column-rule-color\":\"<color>\",\"column-rule-style\":\"<border-style>\",\"column-rule-width\":\"<border-width>\",\"column-span\":\"none | all\",\"column-width\":\"<length> | auto\",columns:1,content:1,\"counter-increment\":1,\"counter-reset\":1,crop:\"<shape> | auto\",cue:\"cue-after | cue-before | inherit\",\"cue-after\":1,\"cue-before\":1,cursor:1,direction:\"ltr | rtl | inherit\",display:\"inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | grid | inline-grid | none | inherit | -moz-box | -moz-inline-block | -moz-inline-box | -moz-inline-grid | -moz-inline-stack | -moz-inline-table | -moz-grid | -moz-grid-group | -moz-grid-line | -moz-groupbox | -moz-deck | -moz-popup | -moz-stack | -moz-marker | -webkit-box | -webkit-inline-box | -ms-flexbox | -ms-inline-flexbox | flex | -webkit-flex | inline-flex | -webkit-inline-flex\",\"dominant-baseline\":1,\"drop-initial-after-adjust\":\"central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>\",\"drop-initial-after-align\":\"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",\"drop-initial-before-adjust\":\"before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>\",\"drop-initial-before-align\":\"caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",\"drop-initial-size\":\"auto | line | <length> | <percentage>\",\"drop-initial-value\":\"initial | <integer>\",elevation:\"<angle> | below | level | above | higher | lower | inherit\",\"empty-cells\":\"show | hide | inherit\",filter:1,fit:\"fill | hidden | meet | slice\",\"fit-position\":1,flex:\"<flex>\",\"flex-basis\":\"<width>\",\"flex-direction\":\"row | row-reverse | column | column-reverse\",\"flex-flow\":\"<flex-direction> || <flex-wrap>\",\"flex-grow\":\"<number>\",\"flex-shrink\":\"<number>\",\"flex-wrap\":\"nowrap | wrap | wrap-reverse\",\"-webkit-flex\":\"<flex>\",\"-webkit-flex-basis\":\"<width>\",\"-webkit-flex-direction\":\"row | row-reverse | column | column-reverse\",\"-webkit-flex-flow\":\"<flex-direction> || <flex-wrap>\",\"-webkit-flex-grow\":\"<number>\",\"-webkit-flex-shrink\":\"<number>\",\"-webkit-flex-wrap\":\"nowrap | wrap | wrap-reverse\",\"-ms-flex\":\"<flex>\",\"-ms-flex-align\":\"start | end | center | stretch | baseline\",\"-ms-flex-direction\":\"row | row-reverse | column | column-reverse | inherit\",\"-ms-flex-order\":\"<number>\",\"-ms-flex-pack\":\"start | end | center | justify\",\"-ms-flex-wrap\":\"nowrap | wrap | wrap-reverse\",\"float\":\"left | right | none | inherit\",\"float-offset\":1,font:1,\"font-family\":1,\"font-size\":\"<absolute-size> | <relative-size> | <length> | <percentage> | inherit\",\"font-size-adjust\":\"<number> | none | inherit\",\"font-stretch\":\"normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit\",\"font-style\":\"normal | italic | oblique | inherit\",\"font-variant\":\"normal | small-caps | inherit\",\"font-weight\":\"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit\",\"grid-cell-stacking\":\"columns | rows | layer\",\"grid-column\":1,\"grid-columns\":1,\"grid-column-align\":\"start | end | center | stretch\",\"grid-column-sizing\":1,\"grid-column-span\":\"<integer>\",\"grid-flow\":\"none | rows | columns\",\"grid-layer\":\"<integer>\",\"grid-row\":1,\"grid-rows\":1,\"grid-row-align\":\"start | end | center | stretch\",\"grid-row-span\":\"<integer>\",\"grid-row-sizing\":1,\"hanging-punctuation\":1,height:\"<margin-width> | <content-sizing> | inherit\",\"hyphenate-after\":\"<integer> | auto\",\"hyphenate-before\":\"<integer> | auto\",\"hyphenate-character\":\"<string> | auto\",\"hyphenate-lines\":\"no-limit | <integer>\",\"hyphenate-resource\":1,hyphens:\"none | manual | auto\",icon:1,\"image-orientation\":\"angle | auto\",\"image-rendering\":1,\"image-resolution\":1,\"inline-box-align\":\"initial | last | <integer>\",\"justify-content\":\"flex-start | flex-end | center | space-between | space-around\",\"-webkit-justify-content\":\"flex-start | flex-end | center | space-between | space-around\",left:\"<margin-width> | inherit\",\"letter-spacing\":\"<length> | normal | inherit\",\"line-height\":\"<number> | <length> | <percentage> | normal | inherit\",\"line-break\":\"auto | loose | normal | strict\",\"line-stacking\":1,\"line-stacking-ruby\":\"exclude-ruby | include-ruby\",\"line-stacking-shift\":\"consider-shifts | disregard-shifts\",\"line-stacking-strategy\":\"inline-line-height | block-line-height | max-height | grid-height\",\"list-style\":1,\"list-style-image\":\"<uri> | none | inherit\",\"list-style-position\":\"inside | outside | inherit\",\"list-style-type\":\"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit\",margin:{multi:\"<margin-width> | inherit\",max:4},\"margin-bottom\":\"<margin-width> | inherit\",\"margin-left\":\"<margin-width> | inherit\",\"margin-right\":\"<margin-width> | inherit\",\"margin-top\":\"<margin-width> | inherit\",mark:1,\"mark-after\":1,\"mark-before\":1,marks:1,\"marquee-direction\":1,\"marquee-play-count\":1,\"marquee-speed\":1,\"marquee-style\":1,\"max-height\":\"<length> | <percentage> | <content-sizing> | none | inherit\",\"max-width\":\"<length> | <percentage> | <content-sizing> | none | inherit\",\"min-height\":\"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit\",\"min-width\":\"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit\",\"move-to\":1,\"nav-down\":1,\"nav-index\":1,\"nav-left\":1,\"nav-right\":1,\"nav-up\":1,opacity:\"<number> | inherit\",order:\"<integer>\",\"-webkit-order\":\"<integer>\",orphans:\"<integer> | inherit\",outline:1,\"outline-color\":\"<color> | invert | inherit\",\"outline-offset\":1,\"outline-style\":\"<border-style> | inherit\",\"outline-width\":\"<border-width> | inherit\",overflow:\"visible | hidden | scroll | auto | inherit\",\"overflow-style\":1,\"overflow-wrap\":\"normal | break-word\",\"overflow-x\":1,\"overflow-y\":1,padding:{multi:\"<padding-width> | inherit\",max:4},\"padding-bottom\":\"<padding-width> | inherit\",\"padding-left\":\"<padding-width> | inherit\",\"padding-right\":\"<padding-width> | inherit\",\"padding-top\":\"<padding-width> | inherit\",page:1,\"page-break-after\":\"auto | always | avoid | left | right | inherit\",\"page-break-before\":\"auto | always | avoid | left | right | inherit\",\"page-break-inside\":\"auto | avoid | inherit\",\"page-policy\":1,pause:1,\"pause-after\":1,\"pause-before\":1,perspective:1,\"perspective-origin\":1,phonemes:1,pitch:1,\"pitch-range\":1,\"play-during\":1,\"pointer-events\":\"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit\",position:\"static | relative | absolute | fixed | inherit\",\"presentation-level\":1,\"punctuation-trim\":1,quotes:1,\"rendering-intent\":1,resize:1,rest:1,\"rest-after\":1,\"rest-before\":1,richness:1,right:\"<margin-width> | inherit\",rotation:1,\"rotation-point\":1,\"ruby-align\":1,\"ruby-overhang\":1,\"ruby-position\":1,\"ruby-span\":1,size:1,speak:\"normal | none | spell-out | inherit\",\"speak-header\":\"once | always | inherit\",\"speak-numeral\":\"digits | continuous | inherit\",\"speak-punctuation\":\"code | none | inherit\",\"speech-rate\":1,src:1,stress:1,\"string-set\":1,\"table-layout\":\"auto | fixed | inherit\",\"tab-size\":\"<integer> | <length>\",target:1,\"target-name\":1,\"target-new\":1,\"target-position\":1,\"text-align\":\"left | right | center | justify | inherit\",\"text-align-last\":1,\"text-decoration\":1,\"text-emphasis\":1,\"text-height\":1,\"text-indent\":\"<length> | <percentage> | inherit\",\"text-justify\":\"auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida\",\"text-outline\":1,\"text-overflow\":1,\"text-rendering\":\"auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit\",\"text-shadow\":1,\"text-transform\":\"capitalize | uppercase | lowercase | none | inherit\",\"text-wrap\":\"normal | none | avoid\",top:\"<margin-width> | inherit\",\"-ms-touch-action\":\"auto | none | pan-x | pan-y\",\"touch-action\":\"auto | none | pan-x | pan-y\",transform:1,\"transform-origin\":1,\"transform-style\":1,transition:1,\"transition-delay\":1,\"transition-duration\":1,\"transition-property\":1,\"transition-timing-function\":1,\"unicode-bidi\":\"normal | embed | isolate | bidi-override | isolate-override | plaintext | inherit\",\"user-modify\":\"read-only | read-write | write-only | inherit\",\"user-select\":\"none | text | toggle | element | elements | all | inherit\",\"vertical-align\":\"auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>\",visibility:\"visible | hidden | collapse | inherit\",\"voice-balance\":1,\"voice-duration\":1,\"voice-family\":1,\"voice-pitch\":1,\"voice-pitch-range\":1,\"voice-rate\":1,\"voice-stress\":1,\"voice-volume\":1,volume:1,\"white-space\":\"normal | pre | nowrap | pre-wrap | pre-line | inherit | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap\",\"white-space-collapse\":1,widows:\"<integer> | inherit\",width:\"<length> | <percentage> | <content-sizing> | auto | inherit\",\"word-break\":\"normal | keep-all | break-all\",\"word-spacing\":\"<length> | normal | inherit\",\"word-wrap\":\"normal | break-word\",\"writing-mode\":\"horizontal-tb | vertical-rl | vertical-lr | lr-tb | rl-tb | tb-rl | bt-rl | tb-lr | bt-lr | lr-bt | rl-bt | lr | rl | tb | inherit\",\"z-index\":\"<integer> | auto | inherit\",zoom:\"<number> | <percentage> | normal\"};PropertyName.prototype=new SyntaxUnit,PropertyName.prototype.constructor=PropertyName,PropertyName.prototype.toString=function(){return(this.hack?this.hack:\"\")+this.text},PropertyValue.prototype=new SyntaxUnit,PropertyValue.prototype.constructor=PropertyValue,PropertyValueIterator.prototype.count=function(){return this._parts.length},PropertyValueIterator.prototype.isFirst=function(){return 0===this._i},PropertyValueIterator.prototype.hasNext=function(){return this._i<this._parts.length},PropertyValueIterator.prototype.mark=function(){this._marks.push(this._i)},PropertyValueIterator.prototype.peek=function(count){return this.hasNext()?this._parts[this._i+(count||0)]:null},PropertyValueIterator.prototype.next=function(){return this.hasNext()?this._parts[this._i++]:null},PropertyValueIterator.prototype.previous=function(){return this._i>0?this._parts[--this._i]:null},PropertyValueIterator.prototype.restore=function(){this._marks.length&&(this._i=this._marks.pop())},PropertyValuePart.prototype=new SyntaxUnit,PropertyValuePart.prototype.constructor=PropertyValuePart,PropertyValuePart.fromToken=function(token){return new PropertyValuePart(token.value,token.startLine,token.startCol)};var Pseudos={\":first-letter\":1,\":first-line\":1,\":before\":1,\":after\":1};Pseudos.ELEMENT=1,Pseudos.CLASS=2,Pseudos.isElement=function(pseudo){return 0===pseudo.indexOf(\"::\")||Pseudos[pseudo.toLowerCase()]==Pseudos.ELEMENT},Selector.prototype=new SyntaxUnit,Selector.prototype.constructor=Selector,SelectorPart.prototype=new SyntaxUnit,SelectorPart.prototype.constructor=SelectorPart,SelectorSubPart.prototype=new SyntaxUnit,SelectorSubPart.prototype.constructor=SelectorSubPart,Specificity.prototype={constructor:Specificity,compare:function(other){var i,len,comps=[\"a\",\"b\",\"c\",\"d\"];for(i=0,len=comps.length;len>i;i++){if(this[comps[i]]<other[comps[i]])return-1;if(this[comps[i]]>other[comps[i]])return 1}return 0},valueOf:function(){return 1e3*this.a+100*this.b+10*this.c+this.d},toString:function(){return this.a+\",\"+this.b+\",\"+this.c+\",\"+this.d}},Specificity.calculate=function(selector){function updateValues(part){var i,j,len,num,modifier,elementName=part.elementName?part.elementName.text:\"\";for(elementName&&\"*\"!=elementName.charAt(elementName.length-1)&&d++,i=0,len=part.modifiers.length;len>i;i++)switch(modifier=part.modifiers[i],modifier.type){case\"class\":case\"attribute\":c++;break;case\"id\":b++;break;case\"pseudo\":Pseudos.isElement(modifier.text)?d++:c++;break;case\"not\":for(j=0,num=modifier.args.length;num>j;j++)updateValues(modifier.args[j])}}var i,len,part,b=0,c=0,d=0;for(i=0,len=selector.parts.length;len>i;i++)part=selector.parts[i],part instanceof SelectorPart&&updateValues(part);return new Specificity(0,b,c,d)};var h=/^[0-9a-fA-F]$/,nonascii=/^[\\u0080-\\uFFFF]$/,nl=/\\n|\\r\\n|\\r|\\f/;TokenStream.prototype=mix(new TokenStreamBase,{_getToken:function(){var c,reader=this._reader,token=null,startLine=reader.getLine(),startCol=reader.getCol();for(c=reader.read();c;){switch(c){case\"/\":token=\"*\"==reader.peek()?this.commentToken(c,startLine,startCol):this.charToken(c,startLine,startCol);break;case\"|\":case\"~\":case\"^\":case\"$\":case\"*\":token=\"=\"==reader.peek()?this.comparisonToken(c,startLine,startCol):this.charToken(c,startLine,startCol);break;case'\"':case\"'\":token=this.stringToken(c,startLine,startCol);break;case\"#\":token=isNameChar(reader.peek())?this.hashToken(c,startLine,startCol):this.charToken(c,startLine,startCol);break;case\".\":token=isDigit(reader.peek())?this.numberToken(c,startLine,startCol):this.charToken(c,startLine,startCol);break;case\"-\":token=\"-\"==reader.peek()?this.htmlCommentEndToken(c,startLine,startCol):isNameStart(reader.peek())?this.identOrFunctionToken(c,startLine,startCol):this.charToken(c,startLine,startCol);break;case\"!\":token=this.importantToken(c,startLine,startCol);break;case\"@\":token=this.atRuleToken(c,startLine,startCol);break;case\":\":token=this.notToken(c,startLine,startCol);break;case\"<\":token=this.htmlCommentStartToken(c,startLine,startCol);break;case\"U\":case\"u\":if(\"+\"==reader.peek()){token=this.unicodeRangeToken(c,startLine,startCol);break}default:token=isDigit(c)?this.numberToken(c,startLine,startCol):isWhitespace(c)?this.whitespaceToken(c,startLine,startCol):isIdentStart(c)?this.identOrFunctionToken(c,startLine,startCol):this.charToken(c,startLine,startCol)}break}return token||null!==c||(token=this.createToken(Tokens.EOF,null,startLine,startCol)),token},createToken:function(tt,value,startLine,startCol,options){var reader=this._reader;return options=options||{},{value:value,type:tt,channel:options.channel,endChar:options.endChar,hide:options.hide||!1,startLine:startLine,startCol:startCol,endLine:reader.getLine(),endCol:reader.getCol()}},atRuleToken:function(first,startLine,startCol){var ident,rule=first,reader=this._reader,tt=Tokens.CHAR;return reader.mark(),ident=this.readName(),rule=first+ident,tt=Tokens.type(rule.toLowerCase()),(tt==Tokens.CHAR||tt==Tokens.UNKNOWN)&&(rule.length>1?tt=Tokens.UNKNOWN_SYM:(tt=Tokens.CHAR,rule=first,reader.reset())),this.createToken(tt,rule,startLine,startCol)},charToken:function(c,startLine,startCol){var tt=Tokens.type(c),opts={};return-1==tt?tt=Tokens.CHAR:opts.endChar=Tokens[tt].endChar,this.createToken(tt,c,startLine,startCol,opts)},commentToken:function(first,startLine,startCol){var comment=(this._reader,this.readComment(first));return this.createToken(Tokens.COMMENT,comment,startLine,startCol)},comparisonToken:function(c,startLine,startCol){var reader=this._reader,comparison=c+reader.read(),tt=Tokens.type(comparison)||Tokens.CHAR;return this.createToken(tt,comparison,startLine,startCol)\n},hashToken:function(first,startLine,startCol){var name=(this._reader,this.readName(first));return this.createToken(Tokens.HASH,name,startLine,startCol)},htmlCommentStartToken:function(first,startLine,startCol){var reader=this._reader,text=first;return reader.mark(),text+=reader.readCount(3),\"<!--\"==text?this.createToken(Tokens.CDO,text,startLine,startCol):(reader.reset(),this.charToken(first,startLine,startCol))},htmlCommentEndToken:function(first,startLine,startCol){var reader=this._reader,text=first;return reader.mark(),text+=reader.readCount(2),\"-->\"==text?this.createToken(Tokens.CDC,text,startLine,startCol):(reader.reset(),this.charToken(first,startLine,startCol))},identOrFunctionToken:function(first,startLine,startCol){var reader=this._reader,ident=this.readName(first),tt=Tokens.IDENT;return\"(\"==reader.peek()?(ident+=reader.read(),\"url(\"==ident.toLowerCase()?(tt=Tokens.URI,ident=this.readURI(ident),\"url(\"==ident.toLowerCase()&&(tt=Tokens.FUNCTION)):tt=Tokens.FUNCTION):\":\"==reader.peek()&&\"progid\"==ident.toLowerCase()&&(ident+=reader.readTo(\"(\"),tt=Tokens.IE_FUNCTION),this.createToken(tt,ident,startLine,startCol)},importantToken:function(first,startLine,startCol){var temp,c,reader=this._reader,important=first,tt=Tokens.CHAR;for(reader.mark(),c=reader.read();c;){if(\"/\"==c){if(\"*\"!=reader.peek())break;if(temp=this.readComment(c),\"\"===temp)break}else{if(!isWhitespace(c)){if(/i/i.test(c)){temp=reader.readCount(8),/mportant/i.test(temp)&&(important+=c+temp,tt=Tokens.IMPORTANT_SYM);break}break}important+=c+this.readWhitespace()}c=reader.read()}return tt==Tokens.CHAR?(reader.reset(),this.charToken(first,startLine,startCol)):this.createToken(tt,important,startLine,startCol)},notToken:function(first,startLine,startCol){var reader=this._reader,text=first;return reader.mark(),text+=reader.readCount(4),\":not(\"==text.toLowerCase()?this.createToken(Tokens.NOT,text,startLine,startCol):(reader.reset(),this.charToken(first,startLine,startCol))},numberToken:function(first,startLine,startCol){var ident,reader=this._reader,value=this.readNumber(first),tt=Tokens.NUMBER,c=reader.peek();return isIdentStart(c)?(ident=this.readName(reader.read()),value+=ident,tt=/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vmax$|^vmin$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(ident)?Tokens.LENGTH:/^deg|^rad$|^grad$/i.test(ident)?Tokens.ANGLE:/^ms$|^s$/i.test(ident)?Tokens.TIME:/^hz$|^khz$/i.test(ident)?Tokens.FREQ:/^dpi$|^dpcm$/i.test(ident)?Tokens.RESOLUTION:Tokens.DIMENSION):\"%\"==c&&(value+=reader.read(),tt=Tokens.PERCENTAGE),this.createToken(tt,value,startLine,startCol)},stringToken:function(first,startLine,startCol){for(var delim=first,string=first,reader=this._reader,prev=first,tt=Tokens.STRING,c=reader.read();c&&(string+=c,c!=delim||\"\\\\\"==prev);){if(isNewLine(reader.peek())&&\"\\\\\"!=c){tt=Tokens.INVALID;break}prev=c,c=reader.read()}return null===c&&(tt=Tokens.INVALID),this.createToken(tt,string,startLine,startCol)},unicodeRangeToken:function(first,startLine,startCol){var temp,reader=this._reader,value=first,tt=Tokens.CHAR;return\"+\"==reader.peek()&&(reader.mark(),value+=reader.read(),value+=this.readUnicodeRangePart(!0),2==value.length?reader.reset():(tt=Tokens.UNICODE_RANGE,-1==value.indexOf(\"?\")&&\"-\"==reader.peek()&&(reader.mark(),temp=reader.read(),temp+=this.readUnicodeRangePart(!1),1==temp.length?reader.reset():value+=temp))),this.createToken(tt,value,startLine,startCol)},whitespaceToken:function(first,startLine,startCol){var value=(this._reader,first+this.readWhitespace());return this.createToken(Tokens.S,value,startLine,startCol)},readUnicodeRangePart:function(allowQuestionMark){for(var reader=this._reader,part=\"\",c=reader.peek();isHexDigit(c)&&6>part.length;)reader.read(),part+=c,c=reader.peek();if(allowQuestionMark)for(;\"?\"==c&&6>part.length;)reader.read(),part+=c,c=reader.peek();return part},readWhitespace:function(){for(var reader=this._reader,whitespace=\"\",c=reader.peek();isWhitespace(c);)reader.read(),whitespace+=c,c=reader.peek();return whitespace},readNumber:function(first){for(var reader=this._reader,number=first,hasDot=\".\"==first,c=reader.peek();c;){if(isDigit(c))number+=reader.read();else{if(\".\"!=c)break;if(hasDot)break;hasDot=!0,number+=reader.read()}c=reader.peek()}return number},readString:function(){for(var reader=this._reader,delim=reader.read(),string=delim,prev=delim,c=reader.peek();c&&(c=reader.read(),string+=c,c!=delim||\"\\\\\"==prev);){if(isNewLine(reader.peek())&&\"\\\\\"!=c){string=\"\";break}prev=c,c=reader.peek()}return null===c&&(string=\"\"),string},readURI:function(first){var reader=this._reader,uri=first,inner=\"\",c=reader.peek();for(reader.mark();c&&isWhitespace(c);)reader.read(),c=reader.peek();for(inner=\"'\"==c||'\"'==c?this.readString():this.readURL(),c=reader.peek();c&&isWhitespace(c);)reader.read(),c=reader.peek();return\"\"===inner||\")\"!=c?(uri=first,reader.reset()):uri+=inner+reader.read(),uri},readURL:function(){for(var reader=this._reader,url=\"\",c=reader.peek();/^[!#$%&\\\\*-~]$/.test(c);)url+=reader.read(),c=reader.peek();return url},readName:function(first){for(var reader=this._reader,ident=first||\"\",c=reader.peek();;)if(\"\\\\\"==c)ident+=this.readEscape(reader.read()),c=reader.peek();else{if(!c||!isNameChar(c))break;ident+=reader.read(),c=reader.peek()}return ident},readEscape:function(first){var reader=this._reader,cssEscape=first||\"\",i=0,c=reader.peek();if(isHexDigit(c))do cssEscape+=reader.read(),c=reader.peek();while(c&&isHexDigit(c)&&6>++i);return 3==cssEscape.length&&/\\s/.test(c)||7==cssEscape.length||1==cssEscape.length?reader.read():c=\"\",cssEscape+c},readComment:function(first){var reader=this._reader,comment=first||\"\",c=reader.read();if(\"*\"==c){for(;c;){if(comment+=c,comment.length>2&&\"*\"==c&&\"/\"==reader.peek()){comment+=reader.read();break}c=reader.read()}return comment}return\"\"}});var Tokens=[{name:\"CDO\"},{name:\"CDC\"},{name:\"S\",whitespace:!0},{name:\"COMMENT\",comment:!0,hide:!0,channel:\"comment\"},{name:\"INCLUDES\",text:\"~=\"},{name:\"DASHMATCH\",text:\"|=\"},{name:\"PREFIXMATCH\",text:\"^=\"},{name:\"SUFFIXMATCH\",text:\"$=\"},{name:\"SUBSTRINGMATCH\",text:\"*=\"},{name:\"STRING\"},{name:\"IDENT\"},{name:\"HASH\"},{name:\"IMPORT_SYM\",text:\"@import\"},{name:\"PAGE_SYM\",text:\"@page\"},{name:\"MEDIA_SYM\",text:\"@media\"},{name:\"FONT_FACE_SYM\",text:\"@font-face\"},{name:\"CHARSET_SYM\",text:\"@charset\"},{name:\"NAMESPACE_SYM\",text:\"@namespace\"},{name:\"VIEWPORT_SYM\",text:[\"@viewport\",\"@-ms-viewport\"]},{name:\"UNKNOWN_SYM\"},{name:\"KEYFRAMES_SYM\",text:[\"@keyframes\",\"@-webkit-keyframes\",\"@-moz-keyframes\",\"@-o-keyframes\"]},{name:\"IMPORTANT_SYM\"},{name:\"LENGTH\"},{name:\"ANGLE\"},{name:\"TIME\"},{name:\"FREQ\"},{name:\"DIMENSION\"},{name:\"PERCENTAGE\"},{name:\"NUMBER\"},{name:\"URI\"},{name:\"FUNCTION\"},{name:\"UNICODE_RANGE\"},{name:\"INVALID\"},{name:\"PLUS\",text:\"+\"},{name:\"GREATER\",text:\">\"},{name:\"COMMA\",text:\",\"},{name:\"TILDE\",text:\"~\"},{name:\"NOT\"},{name:\"TOPLEFTCORNER_SYM\",text:\"@top-left-corner\"},{name:\"TOPLEFT_SYM\",text:\"@top-left\"},{name:\"TOPCENTER_SYM\",text:\"@top-center\"},{name:\"TOPRIGHT_SYM\",text:\"@top-right\"},{name:\"TOPRIGHTCORNER_SYM\",text:\"@top-right-corner\"},{name:\"BOTTOMLEFTCORNER_SYM\",text:\"@bottom-left-corner\"},{name:\"BOTTOMLEFT_SYM\",text:\"@bottom-left\"},{name:\"BOTTOMCENTER_SYM\",text:\"@bottom-center\"},{name:\"BOTTOMRIGHT_SYM\",text:\"@bottom-right\"},{name:\"BOTTOMRIGHTCORNER_SYM\",text:\"@bottom-right-corner\"},{name:\"LEFTTOP_SYM\",text:\"@left-top\"},{name:\"LEFTMIDDLE_SYM\",text:\"@left-middle\"},{name:\"LEFTBOTTOM_SYM\",text:\"@left-bottom\"},{name:\"RIGHTTOP_SYM\",text:\"@right-top\"},{name:\"RIGHTMIDDLE_SYM\",text:\"@right-middle\"},{name:\"RIGHTBOTTOM_SYM\",text:\"@right-bottom\"},{name:\"RESOLUTION\",state:\"media\"},{name:\"IE_FUNCTION\"},{name:\"CHAR\"},{name:\"PIPE\",text:\"|\"},{name:\"SLASH\",text:\"/\"},{name:\"MINUS\",text:\"-\"},{name:\"STAR\",text:\"*\"},{name:\"LBRACE\",endChar:\"}\",text:\"{\"},{name:\"RBRACE\",text:\"}\"},{name:\"LBRACKET\",endChar:\"]\",text:\"[\"},{name:\"RBRACKET\",text:\"]\"},{name:\"EQUALS\",text:\"=\"},{name:\"COLON\",text:\":\"},{name:\"SEMICOLON\",text:\";\"},{name:\"LPAREN\",endChar:\")\",text:\"(\"},{name:\"RPAREN\",text:\")\"},{name:\"DOT\",text:\".\"}];(function(){var nameMap=[],typeMap={};Tokens.UNKNOWN=-1,Tokens.unshift({name:\"EOF\"});for(var i=0,len=Tokens.length;len>i;i++)if(nameMap.push(Tokens[i].name),Tokens[Tokens[i].name]=i,Tokens[i].text)if(Tokens[i].text instanceof Array)for(var j=0;Tokens[i].text.length>j;j++)typeMap[Tokens[i].text[j]]=i;else typeMap[Tokens[i].text]=i;Tokens.name=function(tt){return nameMap[tt]},Tokens.type=function(c){return typeMap[c]||-1}})();var Validation={validate:function(property,value){var name=(\"\"+property).toLowerCase(),expression=(value.parts,new PropertyValueIterator(value)),spec=Properties[name];if(spec)\"number\"!=typeof spec&&(\"string\"==typeof spec?spec.indexOf(\"||\")>-1?this.groupProperty(spec,expression):this.singleProperty(spec,expression,1):spec.multi?this.multiProperty(spec.multi,expression,spec.comma,spec.max||1/0):\"function\"==typeof spec&&spec(expression));else if(0!==name.indexOf(\"-\"))throw new ValidationError(\"Unknown property '\"+property+\"'.\",property.line,property.col)},singleProperty:function(types,expression,max){for(var part,result=!1,value=expression.value,count=0;expression.hasNext()&&max>count&&(result=ValidationTypes.isAny(expression,types));)count++;if(!result)throw expression.hasNext()&&!expression.isFirst()?(part=expression.peek(),new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col)):new ValidationError(\"Expected (\"+types+\") but found '\"+value+\"'.\",value.line,value.col);if(expression.hasNext())throw part=expression.next(),new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col)},multiProperty:function(types,expression,comma,max){for(var part,result=!1,value=expression.value,count=0;expression.hasNext()&&!result&&max>count&&ValidationTypes.isAny(expression,types);)if(count++,expression.hasNext()){if(comma){if(\",\"!=expression.peek())break;part=expression.next()}}else result=!0;if(!result)throw expression.hasNext()&&!expression.isFirst()?(part=expression.peek(),new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col)):(part=expression.previous(),comma&&\",\"==part?new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col):new ValidationError(\"Expected (\"+types+\") but found '\"+value+\"'.\",value.line,value.col));if(expression.hasNext())throw part=expression.next(),new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col)},groupProperty:function(types,expression){for(var name,part,result=!1,value=expression.value,typeCount=types.split(\"||\").length,groups={count:0},partial=!1;expression.hasNext()&&!result&&(name=ValidationTypes.isAnyOfGroup(expression,types))&&!groups[name];)groups[name]=1,groups.count++,partial=!0,groups.count!=typeCount&&expression.hasNext()||(result=!0);if(!result)throw partial&&expression.hasNext()?(part=expression.peek(),new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col)):new ValidationError(\"Expected (\"+types+\") but found '\"+value+\"'.\",value.line,value.col);if(expression.hasNext())throw part=expression.next(),new ValidationError(\"Expected end of value but found '\"+part+\"'.\",part.line,part.col)}};ValidationError.prototype=Error();var ValidationTypes={isLiteral:function(part,literals){var i,len,text=(\"\"+part.text).toLowerCase(),args=literals.split(\" | \"),found=!1;for(i=0,len=args.length;len>i&&!found;i++)text==args[i].toLowerCase()&&(found=!0);return found},isSimple:function(type){return!!this.simple[type]},isComplex:function(type){return!!this.complex[type]},isAny:function(expression,types){var i,len,args=types.split(\" | \"),found=!1;for(i=0,len=args.length;len>i&&!found&&expression.hasNext();i++)found=this.isType(expression,args[i]);return found},isAnyOfGroup:function(expression,types){var i,len,args=types.split(\" || \"),found=!1;for(i=0,len=args.length;len>i&&!found;i++)found=this.isType(expression,args[i]);return found?args[i-1]:!1},isType:function(expression,type){var part=expression.peek(),result=!1;return\"<\"!=type.charAt(0)?(result=this.isLiteral(part,type),result&&expression.next()):this.simple[type]?(result=this.simple[type](part),result&&expression.next()):result=this.complex[type](expression),result},simple:{\"<absolute-size>\":function(part){return ValidationTypes.isLiteral(part,\"xx-small | x-small | small | medium | large | x-large | xx-large\")},\"<attachment>\":function(part){return ValidationTypes.isLiteral(part,\"scroll | fixed | local\")},\"<attr>\":function(part){return\"function\"==part.type&&\"attr\"==part.name},\"<bg-image>\":function(part){return this[\"<image>\"](part)||this[\"<gradient>\"](part)||\"none\"==part},\"<gradient>\":function(part){return\"function\"==part.type&&/^(?:\\-(?:ms|moz|o|webkit)\\-)?(?:repeating\\-)?(?:radial\\-|linear\\-)?gradient/i.test(part)},\"<box>\":function(part){return ValidationTypes.isLiteral(part,\"padding-box | border-box | content-box\")},\"<content>\":function(part){return\"function\"==part.type&&\"content\"==part.name},\"<relative-size>\":function(part){return ValidationTypes.isLiteral(part,\"smaller | larger\")},\"<ident>\":function(part){return\"identifier\"==part.type},\"<length>\":function(part){return\"function\"==part.type&&/^(?:\\-(?:ms|moz|o|webkit)\\-)?calc/i.test(part)?!0:\"length\"==part.type||\"number\"==part.type||\"integer\"==part.type||\"0\"==part},\"<color>\":function(part){return\"color\"==part.type||\"transparent\"==part},\"<number>\":function(part){return\"number\"==part.type||this[\"<integer>\"](part)},\"<integer>\":function(part){return\"integer\"==part.type},\"<line>\":function(part){return\"integer\"==part.type},\"<angle>\":function(part){return\"angle\"==part.type},\"<uri>\":function(part){return\"uri\"==part.type},\"<image>\":function(part){return this[\"<uri>\"](part)},\"<percentage>\":function(part){return\"percentage\"==part.type||\"0\"==part},\"<border-width>\":function(part){return this[\"<length>\"](part)||ValidationTypes.isLiteral(part,\"thin | medium | thick\")},\"<border-style>\":function(part){return ValidationTypes.isLiteral(part,\"none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset\")},\"<content-sizing>\":function(part){return ValidationTypes.isLiteral(part,\"fill-available | -moz-available | -webkit-fill-available | max-content | -moz-max-content | -webkit-max-content | min-content | -moz-min-content | -webkit-min-content | fit-content | -moz-fit-content | -webkit-fit-content\")},\"<margin-width>\":function(part){return this[\"<length>\"](part)||this[\"<percentage>\"](part)||ValidationTypes.isLiteral(part,\"auto\")},\"<padding-width>\":function(part){return this[\"<length>\"](part)||this[\"<percentage>\"](part)},\"<shape>\":function(part){return\"function\"==part.type&&(\"rect\"==part.name||\"inset-rect\"==part.name)},\"<time>\":function(part){return\"time\"==part.type},\"<flex-grow>\":function(part){return this[\"<number>\"](part)},\"<flex-shrink>\":function(part){return this[\"<number>\"](part)},\"<width>\":function(part){return this[\"<margin-width>\"](part)},\"<flex-basis>\":function(part){return this[\"<width>\"](part)},\"<flex-direction>\":function(part){return ValidationTypes.isLiteral(part,\"row | row-reverse | column | column-reverse\")},\"<flex-wrap>\":function(part){return ValidationTypes.isLiteral(part,\"nowrap | wrap | wrap-reverse\")}},complex:{\"<bg-position>\":function(expression){for(var result=!1,numeric=\"<percentage> | <length>\",xDir=\"left | right\",yDir=\"top | bottom\",count=0;expression.peek(count)&&\",\"!=expression.peek(count);)count++;return 3>count?ValidationTypes.isAny(expression,xDir+\" | center | \"+numeric)?(result=!0,ValidationTypes.isAny(expression,yDir+\" | center | \"+numeric)):ValidationTypes.isAny(expression,yDir)&&(result=!0,ValidationTypes.isAny(expression,xDir+\" | center\")):ValidationTypes.isAny(expression,xDir)?ValidationTypes.isAny(expression,yDir)?(result=!0,ValidationTypes.isAny(expression,numeric)):ValidationTypes.isAny(expression,numeric)&&(ValidationTypes.isAny(expression,yDir)?(result=!0,ValidationTypes.isAny(expression,numeric)):ValidationTypes.isAny(expression,\"center\")&&(result=!0)):ValidationTypes.isAny(expression,yDir)?ValidationTypes.isAny(expression,xDir)?(result=!0,ValidationTypes.isAny(expression,numeric)):ValidationTypes.isAny(expression,numeric)&&(ValidationTypes.isAny(expression,xDir)?(result=!0,ValidationTypes.isAny(expression,numeric)):ValidationTypes.isAny(expression,\"center\")&&(result=!0)):ValidationTypes.isAny(expression,\"center\")&&ValidationTypes.isAny(expression,xDir+\" | \"+yDir)&&(result=!0,ValidationTypes.isAny(expression,numeric)),result},\"<bg-size>\":function(expression){var result=!1,numeric=\"<percentage> | <length> | auto\";return ValidationTypes.isAny(expression,\"cover | contain\")?result=!0:ValidationTypes.isAny(expression,numeric)&&(result=!0,ValidationTypes.isAny(expression,numeric)),result},\"<repeat-style>\":function(expression){var part,result=!1,values=\"repeat | space | round | no-repeat\";return expression.hasNext()&&(part=expression.next(),ValidationTypes.isLiteral(part,\"repeat-x | repeat-y\")?result=!0:ValidationTypes.isLiteral(part,values)&&(result=!0,expression.hasNext()&&ValidationTypes.isLiteral(expression.peek(),values)&&expression.next())),result},\"<shadow>\":function(expression){var result=!1,count=0,inset=!1,color=!1;if(expression.hasNext()){for(ValidationTypes.isAny(expression,\"inset\")&&(inset=!0),ValidationTypes.isAny(expression,\"<color>\")&&(color=!0);ValidationTypes.isAny(expression,\"<length>\")&&4>count;)count++;expression.hasNext()&&(color||ValidationTypes.isAny(expression,\"<color>\"),inset||ValidationTypes.isAny(expression,\"inset\")),result=count>=2&&4>=count}return result},\"<x-one-radius>\":function(expression){var result=!1,simple=\"<length> | <percentage> | inherit\";return ValidationTypes.isAny(expression,simple)&&(result=!0,ValidationTypes.isAny(expression,simple)),result},\"<flex>\":function(expression){var part,result=!1;if(ValidationTypes.isAny(expression,\"none | inherit\")?result=!0:ValidationTypes.isType(expression,\"<flex-grow>\")?expression.peek()?ValidationTypes.isType(expression,\"<flex-shrink>\")?result=expression.peek()?ValidationTypes.isType(expression,\"<flex-basis>\"):!0:ValidationTypes.isType(expression,\"<flex-basis>\")&&(result=null===expression.peek()):result=!0:ValidationTypes.isType(expression,\"<flex-basis>\")&&(result=!0),!result)throw part=expression.peek(),new ValidationError(\"Expected (none | [ <flex-grow> <flex-shrink>? || <flex-basis> ]) but found '\"+expression.value.text+\"'.\",part.line,part.col);return result}}};parserlib.css={Colors:Colors,Combinator:Combinator,Parser:Parser,PropertyName:PropertyName,PropertyValue:PropertyValue,PropertyValuePart:PropertyValuePart,MediaFeature:MediaFeature,MediaQuery:MediaQuery,Selector:Selector,SelectorPart:SelectorPart,SelectorSubPart:SelectorSubPart,Specificity:Specificity,TokenStream:TokenStream,Tokens:Tokens,ValidationError:ValidationError}}(),function(){for(var prop in parserlib)exports[prop]=parserlib[prop]}();var util={isArray:function(ar){return Array.isArray(ar)||\"object\"==typeof ar&&\"[object Array]\"===objectToString(ar)},isDate:function(d){return\"object\"==typeof d&&\"[object Date]\"===objectToString(d)},isRegExp:function(re){return\"object\"==typeof re&&\"[object RegExp]\"===objectToString(re)},getRegExpFlags:function(re){var flags=\"\";return re.global&&(flags+=\"g\"),re.ignoreCase&&(flags+=\"i\"),re.multiline&&(flags+=\"m\"),flags}};\"object\"==typeof module&&(module.exports=clone),clone.clonePrototype=function(parent){if(null===parent)return null;var c=function(){};return c.prototype=parent,new c};var CSSLint=function(){function applyEmbeddedRuleset(text,ruleset){var valueMap,embedded=text&&text.match(embeddedRuleset),rules=embedded&&embedded[1];return rules&&(valueMap={\"true\":2,\"\":1,\"false\":0,2:2,1:1,0:0},rules.toLowerCase().split(\",\").forEach(function(rule){var pair=rule.split(\":\"),property=pair[0]||\"\",value=pair[1]||\"\";ruleset[property.trim()]=valueMap[value.trim()]})),ruleset}var rules=[],formatters=[],embeddedRuleset=/\\/\\*csslint([^\\*]*)\\*\\//,api=new parserlib.util.EventTarget;return api.version=\"@VERSION@\",api.addRule=function(rule){rules.push(rule),rules[rule.id]=rule},api.clearRules=function(){rules=[]},api.getRules=function(){return[].concat(rules).sort(function(a,b){return a.id>b.id?1:0})},api.getRuleset=function(){for(var ruleset={},i=0,len=rules.length;len>i;)ruleset[rules[i++].id]=1;return ruleset},api.addFormatter=function(formatter){formatters[formatter.id]=formatter},api.getFormatter=function(formatId){return formatters[formatId]},api.format=function(results,filename,formatId,options){var formatter=this.getFormatter(formatId),result=null;return formatter&&(result=formatter.startFormat(),result+=formatter.formatResults(results,filename,options||{}),result+=formatter.endFormat()),result},api.hasFormat=function(formatId){return formatters.hasOwnProperty(formatId)},api.verify=function(text,ruleset){var reporter,lines,report,i=0,parser=new parserlib.css.Parser({starHack:!0,ieFilters:!0,underscoreHack:!0,strict:!1});lines=text.replace(/\\n\\r?/g,\"$split$\").split(\"$split$\"),ruleset||(ruleset=this.getRuleset()),embeddedRuleset.test(text)&&(ruleset=clone(ruleset),ruleset=applyEmbeddedRuleset(text,ruleset)),reporter=new Reporter(lines,ruleset),ruleset.errors=2;for(i in ruleset)ruleset.hasOwnProperty(i)&&ruleset[i]&&rules[i]&&rules[i].init(parser,reporter);try{parser.parse(text)}catch(ex){reporter.error(\"Fatal error, cannot continue: \"+ex.message,ex.line,ex.col,{})}return report={messages:reporter.messages,stats:reporter.stats,ruleset:reporter.ruleset},report.messages.sort(function(a,b){return a.rollup&&!b.rollup?1:!a.rollup&&b.rollup?-1:a.line-b.line}),report},api}();Reporter.prototype={constructor:Reporter,error:function(message,line,col,rule){this.messages.push({type:\"error\",line:line,col:col,message:message,evidence:this.lines[line-1],rule:rule||{}})},warn:function(message,line,col,rule){this.report(message,line,col,rule)},report:function(message,line,col,rule){this.messages.push({type:2===this.ruleset[rule.id]?\"error\":\"warning\",line:line,col:col,message:message,evidence:this.lines[line-1],rule:rule})},info:function(message,line,col,rule){this.messages.push({type:\"info\",line:line,col:col,message:message,evidence:this.lines[line-1],rule:rule})},rollupError:function(message,rule){this.messages.push({type:\"error\",rollup:!0,message:message,rule:rule})},rollupWarn:function(message,rule){this.messages.push({type:\"warning\",rollup:!0,message:message,rule:rule})},stat:function(name,value){this.stats[name]=value}},CSSLint._Reporter=Reporter,CSSLint.Util={mix:function(receiver,supplier){var prop;for(prop in supplier)supplier.hasOwnProperty(prop)&&(receiver[prop]=supplier[prop]);return prop},indexOf:function(values,value){if(values.indexOf)return values.indexOf(value);for(var i=0,len=values.length;len>i;i++)if(values[i]===value)return i;return-1},forEach:function(values,func){if(values.forEach)return values.forEach(func);for(var i=0,len=values.length;len>i;i++)func(values[i],i,values)}},CSSLint.addRule({id:\"adjoining-classes\",name:\"Disallow adjoining classes\",desc:\"Don't use adjoining classes.\",browsers:\"IE6\",init:function(parser,reporter){var rule=this;parser.addListener(\"startrule\",function(event){var selector,part,modifier,classCount,i,j,k,selectors=event.selectors;for(i=0;selectors.length>i;i++)for(selector=selectors[i],j=0;selector.parts.length>j;j++)if(part=selector.parts[j],part.type===parser.SELECTOR_PART_TYPE)for(classCount=0,k=0;part.modifiers.length>k;k++)modifier=part.modifiers[k],\"class\"===modifier.type&&classCount++,classCount>1&&reporter.report(\"Don't use adjoining classes.\",part.line,part.col,rule)})}}),CSSLint.addRule({id:\"box-model\",name:\"Beware of broken box size\",desc:\"Don't use width or height when using padding or border.\",browsers:\"All\",init:function(parser,reporter){function startRule(){properties={},boxSizing=!1}function endRule(){var prop,value;if(!boxSizing){if(properties.height)for(prop in heightProperties)heightProperties.hasOwnProperty(prop)&&properties[prop]&&(value=properties[prop].value,(\"padding\"!==prop||2!==value.parts.length||0!==value.parts[0].value)&&reporter.report(\"Using height with \"+prop+\" can sometimes make elements larger than you expect.\",properties[prop].line,properties[prop].col,rule));if(properties.width)for(prop in widthProperties)widthProperties.hasOwnProperty(prop)&&properties[prop]&&(value=properties[prop].value,(\"padding\"!==prop||2!==value.parts.length||0!==value.parts[1].value)&&reporter.report(\"Using width with \"+prop+\" can sometimes make elements larger than you expect.\",properties[prop].line,properties[prop].col,rule))}}var properties,rule=this,widthProperties={border:1,\"border-left\":1,\"border-right\":1,padding:1,\"padding-left\":1,\"padding-right\":1},heightProperties={border:1,\"border-bottom\":1,\"border-top\":1,padding:1,\"padding-bottom\":1,\"padding-top\":1},boxSizing=!1;parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"startpage\",startRule),parser.addListener(\"startpagemargin\",startRule),parser.addListener(\"startkeyframerule\",startRule),parser.addListener(\"property\",function(event){var name=event.property.text.toLowerCase();heightProperties[name]||widthProperties[name]?/^0\\S*$/.test(event.value)||\"border\"===name&&\"none\"==\"\"+event.value||(properties[name]={line:event.property.line,col:event.property.col,value:event.value}):/^(width|height)/i.test(name)&&/^(length|percentage)/.test(event.value.parts[0].type)?properties[name]=1:\"box-sizing\"===name&&(boxSizing=!0)}),parser.addListener(\"endrule\",endRule),parser.addListener(\"endfontface\",endRule),parser.addListener(\"endpage\",endRule),parser.addListener(\"endpagemargin\",endRule),parser.addListener(\"endkeyframerule\",endRule)}}),CSSLint.addRule({id:\"box-sizing\",name:\"Disallow use of box-sizing\",desc:\"The box-sizing properties isn't supported in IE6 and IE7.\",browsers:\"IE6, IE7\",tags:[\"Compatibility\"],init:function(parser,reporter){var rule=this;parser.addListener(\"property\",function(event){var name=event.property.text.toLowerCase();\"box-sizing\"===name&&reporter.report(\"The box-sizing property isn't supported in IE6 and IE7.\",event.line,event.col,rule)})}}),CSSLint.addRule({id:\"bulletproof-font-face\",name:\"Use the bulletproof @font-face syntax\",desc:\"Use the bulletproof @font-face syntax to avoid 404's in old IE (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax).\",browsers:\"All\",init:function(parser,reporter){var line,col,rule=this,fontFaceRule=!1,firstSrc=!0,ruleFailed=!1;parser.addListener(\"startfontface\",function(){fontFaceRule=!0}),parser.addListener(\"property\",function(event){if(fontFaceRule){var propertyName=(\"\"+event.property).toLowerCase(),value=\"\"+event.value;if(line=event.line,col=event.col,\"src\"===propertyName){var regex=/^\\s?url\\(['\"].+\\.eot\\?.*['\"]\\)\\s*format\\(['\"]embedded-opentype['\"]\\).*$/i;!value.match(regex)&&firstSrc?(ruleFailed=!0,firstSrc=!1):value.match(regex)&&!firstSrc&&(ruleFailed=!1)}}}),parser.addListener(\"endfontface\",function(){fontFaceRule=!1,ruleFailed&&reporter.report(\"@font-face declaration doesn't follow the fontspring bulletproof syntax.\",line,col,rule)})}}),CSSLint.addRule({id:\"compatible-vendor-prefixes\",name:\"Require compatible vendor prefixes\",desc:\"Include all compatible vendor prefixes to reach a wider range of users.\",browsers:\"All\",init:function(parser,reporter){var compatiblePrefixes,properties,prop,variations,prefixed,i,len,rule=this,inKeyFrame=!1,arrayPush=Array.prototype.push,applyTo=[];compatiblePrefixes={animation:\"webkit moz\",\"animation-delay\":\"webkit moz\",\"animation-direction\":\"webkit moz\",\"animation-duration\":\"webkit moz\",\"animation-fill-mode\":\"webkit moz\",\"animation-iteration-count\":\"webkit moz\",\"animation-name\":\"webkit moz\",\"animation-play-state\":\"webkit moz\",\"animation-timing-function\":\"webkit moz\",appearance:\"webkit moz\",\"border-end\":\"webkit moz\",\"border-end-color\":\"webkit moz\",\"border-end-style\":\"webkit moz\",\"border-end-width\":\"webkit moz\",\"border-image\":\"webkit moz o\",\"border-radius\":\"webkit\",\"border-start\":\"webkit moz\",\"border-start-color\":\"webkit moz\",\"border-start-style\":\"webkit moz\",\"border-start-width\":\"webkit moz\",\"box-align\":\"webkit moz ms\",\"box-direction\":\"webkit moz ms\",\"box-flex\":\"webkit moz ms\",\"box-lines\":\"webkit ms\",\"box-ordinal-group\":\"webkit moz ms\",\"box-orient\":\"webkit moz ms\",\"box-pack\":\"webkit moz ms\",\"box-sizing\":\"webkit moz\",\"box-shadow\":\"webkit moz\",\"column-count\":\"webkit moz ms\",\"column-gap\":\"webkit moz ms\",\"column-rule\":\"webkit moz ms\",\"column-rule-color\":\"webkit moz ms\",\"column-rule-style\":\"webkit moz ms\",\"column-rule-width\":\"webkit moz ms\",\"column-width\":\"webkit moz ms\",hyphens:\"epub moz\",\"line-break\":\"webkit ms\",\"margin-end\":\"webkit moz\",\"margin-start\":\"webkit moz\",\"marquee-speed\":\"webkit wap\",\"marquee-style\":\"webkit wap\",\"padding-end\":\"webkit moz\",\"padding-start\":\"webkit moz\",\"tab-size\":\"moz o\",\"text-size-adjust\":\"webkit ms\",transform:\"webkit moz ms o\",\"transform-origin\":\"webkit moz ms o\",transition:\"webkit moz o\",\"transition-delay\":\"webkit moz o\",\"transition-duration\":\"webkit moz o\",\"transition-property\":\"webkit moz o\",\"transition-timing-function\":\"webkit moz o\",\"user-modify\":\"webkit moz\",\"user-select\":\"webkit moz ms\",\"word-break\":\"epub ms\",\"writing-mode\":\"epub ms\"};for(prop in compatiblePrefixes)if(compatiblePrefixes.hasOwnProperty(prop)){for(variations=[],prefixed=compatiblePrefixes[prop].split(\" \"),i=0,len=prefixed.length;len>i;i++)variations.push(\"-\"+prefixed[i]+\"-\"+prop);compatiblePrefixes[prop]=variations,arrayPush.apply(applyTo,variations)}parser.addListener(\"startrule\",function(){properties=[]}),parser.addListener(\"startkeyframes\",function(event){inKeyFrame=event.prefix||!0}),parser.addListener(\"endkeyframes\",function(){inKeyFrame=!1}),parser.addListener(\"property\",function(event){var name=event.property;CSSLint.Util.indexOf(applyTo,name.text)>-1&&(inKeyFrame&&\"string\"==typeof inKeyFrame&&0===name.text.indexOf(\"-\"+inKeyFrame+\"-\")||properties.push(name))}),parser.addListener(\"endrule\",function(){if(properties.length){var i,len,name,prop,variations,value,full,actual,item,propertiesSpecified,propertyGroups={};for(i=0,len=properties.length;len>i;i++){name=properties[i];for(prop in compatiblePrefixes)compatiblePrefixes.hasOwnProperty(prop)&&(variations=compatiblePrefixes[prop],CSSLint.Util.indexOf(variations,name.text)>-1&&(propertyGroups[prop]||(propertyGroups[prop]={full:variations.slice(0),actual:[],actualNodes:[]}),-1===CSSLint.Util.indexOf(propertyGroups[prop].actual,name.text)&&(propertyGroups[prop].actual.push(name.text),propertyGroups[prop].actualNodes.push(name))))}for(prop in propertyGroups)if(propertyGroups.hasOwnProperty(prop)&&(value=propertyGroups[prop],full=value.full,actual=value.actual,full.length>actual.length))for(i=0,len=full.length;len>i;i++)item=full[i],-1===CSSLint.Util.indexOf(actual,item)&&(propertiesSpecified=1===actual.length?actual[0]:2===actual.length?actual.join(\" and \"):actual.join(\", \"),reporter.report(\"The property \"+item+\" is compatible with \"+propertiesSpecified+\" and should be included as well.\",value.actualNodes[0].line,value.actualNodes[0].col,rule))}})}}),CSSLint.addRule({id:\"display-property-grouping\",name:\"Require properties appropriate for display\",desc:\"Certain properties shouldn't be used with certain display property values.\",browsers:\"All\",init:function(parser,reporter){function reportProperty(name,display,msg){properties[name]&&(\"string\"!=typeof propertiesToCheck[name]||properties[name].value.toLowerCase()!==propertiesToCheck[name])&&reporter.report(msg||name+\" can't be used with display: \"+display+\".\",properties[name].line,properties[name].col,rule)}function startRule(){properties={}}function endRule(){var display=properties.display?properties.display.value:null;if(display)switch(display){case\"inline\":reportProperty(\"height\",display),reportProperty(\"width\",display),reportProperty(\"margin\",display),reportProperty(\"margin-top\",display),reportProperty(\"margin-bottom\",display),reportProperty(\"float\",display,\"display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).\");break;case\"block\":reportProperty(\"vertical-align\",display);\nbreak;case\"inline-block\":reportProperty(\"float\",display);break;default:0===display.indexOf(\"table-\")&&(reportProperty(\"margin\",display),reportProperty(\"margin-left\",display),reportProperty(\"margin-right\",display),reportProperty(\"margin-top\",display),reportProperty(\"margin-bottom\",display),reportProperty(\"float\",display))}}var properties,rule=this,propertiesToCheck={display:1,\"float\":\"none\",height:1,width:1,margin:1,\"margin-left\":1,\"margin-right\":1,\"margin-bottom\":1,\"margin-top\":1,padding:1,\"padding-left\":1,\"padding-right\":1,\"padding-bottom\":1,\"padding-top\":1,\"vertical-align\":1};parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"startkeyframerule\",startRule),parser.addListener(\"startpagemargin\",startRule),parser.addListener(\"startpage\",startRule),parser.addListener(\"property\",function(event){var name=event.property.text.toLowerCase();propertiesToCheck[name]&&(properties[name]={value:event.value.text,line:event.property.line,col:event.property.col})}),parser.addListener(\"endrule\",endRule),parser.addListener(\"endfontface\",endRule),parser.addListener(\"endkeyframerule\",endRule),parser.addListener(\"endpagemargin\",endRule),parser.addListener(\"endpage\",endRule)}}),CSSLint.addRule({id:\"duplicate-background-images\",name:\"Disallow duplicate background images\",desc:\"Every background-image should be unique. Use a common class for e.g. sprites.\",browsers:\"All\",init:function(parser,reporter){var rule=this,stack={};parser.addListener(\"property\",function(event){var i,len,name=event.property.text,value=event.value;if(name.match(/background/i))for(i=0,len=value.parts.length;len>i;i++)\"uri\"===value.parts[i].type&&(stack[value.parts[i].uri]===void 0?stack[value.parts[i].uri]=event:reporter.report(\"Background image '\"+value.parts[i].uri+\"' was used multiple times, first declared at line \"+stack[value.parts[i].uri].line+\", col \"+stack[value.parts[i].uri].col+\".\",event.line,event.col,rule))})}}),CSSLint.addRule({id:\"duplicate-properties\",name:\"Disallow duplicate properties\",desc:\"Duplicate properties must appear one after the other.\",browsers:\"All\",init:function(parser,reporter){function startRule(){properties={}}var properties,lastProperty,rule=this;parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"startpage\",startRule),parser.addListener(\"startpagemargin\",startRule),parser.addListener(\"startkeyframerule\",startRule),parser.addListener(\"property\",function(event){var property=event.property,name=property.text.toLowerCase();!properties[name]||lastProperty===name&&properties[name]!==event.value.text||reporter.report(\"Duplicate property '\"+event.property+\"' found.\",event.line,event.col,rule),properties[name]=event.value.text,lastProperty=name})}}),CSSLint.addRule({id:\"empty-rules\",name:\"Disallow empty rules\",desc:\"Rules without any properties specified should be removed.\",browsers:\"All\",init:function(parser,reporter){var rule=this,count=0;parser.addListener(\"startrule\",function(){count=0}),parser.addListener(\"property\",function(){count++}),parser.addListener(\"endrule\",function(event){var selectors=event.selectors;0===count&&reporter.report(\"Rule is empty.\",selectors[0].line,selectors[0].col,rule)})}}),CSSLint.addRule({id:\"errors\",name:\"Parsing Errors\",desc:\"This rule looks for recoverable syntax errors.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"error\",function(event){reporter.error(event.message,event.line,event.col,rule)})}}),CSSLint.addRule({id:\"fallback-colors\",name:\"Require fallback colors\",desc:\"For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.\",browsers:\"IE6,IE7,IE8\",init:function(parser,reporter){function startRule(){properties={},lastProperty=null}var lastProperty,properties,rule=this,propertiesToCheck={color:1,background:1,\"border-color\":1,\"border-top-color\":1,\"border-right-color\":1,\"border-bottom-color\":1,\"border-left-color\":1,border:1,\"border-top\":1,\"border-right\":1,\"border-bottom\":1,\"border-left\":1,\"background-color\":1};parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"startpage\",startRule),parser.addListener(\"startpagemargin\",startRule),parser.addListener(\"startkeyframerule\",startRule),parser.addListener(\"property\",function(event){var property=event.property,name=property.text.toLowerCase(),parts=event.value.parts,i=0,colorType=\"\",len=parts.length;if(propertiesToCheck[name])for(;len>i;)\"color\"===parts[i].type&&(\"alpha\"in parts[i]||\"hue\"in parts[i]?(/([^\\)]+)\\(/.test(parts[i])&&(colorType=RegExp.$1.toUpperCase()),lastProperty&&lastProperty.property.text.toLowerCase()===name&&\"compat\"===lastProperty.colorType||reporter.report(\"Fallback \"+name+\" (hex or RGB) should precede \"+colorType+\" \"+name+\".\",event.line,event.col,rule)):event.colorType=\"compat\"),i++;lastProperty=event})}}),CSSLint.addRule({id:\"floats\",name:\"Disallow too many floats\",desc:\"This rule tests if the float property is used too many times\",browsers:\"All\",init:function(parser,reporter){var rule=this,count=0;parser.addListener(\"property\",function(event){\"float\"===event.property.text.toLowerCase()&&\"none\"!==event.value.text.toLowerCase()&&count++}),parser.addListener(\"endstylesheet\",function(){reporter.stat(\"floats\",count),count>=10&&reporter.rollupWarn(\"Too many floats (\"+count+\"), you're probably using them for layout. Consider using a grid system instead.\",rule)})}}),CSSLint.addRule({id:\"font-faces\",name:\"Don't use too many web fonts\",desc:\"Too many different web fonts in the same stylesheet.\",browsers:\"All\",init:function(parser,reporter){var rule=this,count=0;parser.addListener(\"startfontface\",function(){count++}),parser.addListener(\"endstylesheet\",function(){count>5&&reporter.rollupWarn(\"Too many @font-face declarations (\"+count+\").\",rule)})}}),CSSLint.addRule({id:\"font-sizes\",name:\"Disallow too many font sizes\",desc:\"Checks the number of font-size declarations.\",browsers:\"All\",init:function(parser,reporter){var rule=this,count=0;parser.addListener(\"property\",function(event){\"font-size\"==\"\"+event.property&&count++}),parser.addListener(\"endstylesheet\",function(){reporter.stat(\"font-sizes\",count),count>=10&&reporter.rollupWarn(\"Too many font-size declarations (\"+count+\"), abstraction needed.\",rule)})}}),CSSLint.addRule({id:\"gradients\",name:\"Require all gradient definitions\",desc:\"When using a vendor-prefixed gradient, make sure to use them all.\",browsers:\"All\",init:function(parser,reporter){var gradients,rule=this;parser.addListener(\"startrule\",function(){gradients={moz:0,webkit:0,oldWebkit:0,o:0}}),parser.addListener(\"property\",function(event){/\\-(moz|o|webkit)(?:\\-(?:linear|radial))\\-gradient/i.test(event.value)?gradients[RegExp.$1]=1:/\\-webkit\\-gradient/i.test(event.value)&&(gradients.oldWebkit=1)}),parser.addListener(\"endrule\",function(event){var missing=[];gradients.moz||missing.push(\"Firefox 3.6+\"),gradients.webkit||missing.push(\"Webkit (Safari 5+, Chrome)\"),gradients.oldWebkit||missing.push(\"Old Webkit (Safari 4+, Chrome)\"),gradients.o||missing.push(\"Opera 11.1+\"),missing.length&&4>missing.length&&reporter.report(\"Missing vendor-prefixed CSS gradients for \"+missing.join(\", \")+\".\",event.selectors[0].line,event.selectors[0].col,rule)})}}),CSSLint.addRule({id:\"ids\",name:\"Disallow IDs in selectors\",desc:\"Selectors should not contain IDs.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"startrule\",function(event){var selector,part,modifier,idCount,i,j,k,selectors=event.selectors;for(i=0;selectors.length>i;i++){for(selector=selectors[i],idCount=0,j=0;selector.parts.length>j;j++)if(part=selector.parts[j],part.type===parser.SELECTOR_PART_TYPE)for(k=0;part.modifiers.length>k;k++)modifier=part.modifiers[k],\"id\"===modifier.type&&idCount++;1===idCount?reporter.report(\"Don't use IDs in selectors.\",selector.line,selector.col,rule):idCount>1&&reporter.report(idCount+\" IDs in the selector, really?\",selector.line,selector.col,rule)}})}}),CSSLint.addRule({id:\"import\",name:\"Disallow @import\",desc:\"Don't use @import, use <link> instead.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"import\",function(event){reporter.report(\"@import prevents parallel downloads, use <link> instead.\",event.line,event.col,rule)})}}),CSSLint.addRule({id:\"important\",name:\"Disallow !important\",desc:\"Be careful when using !important declaration\",browsers:\"All\",init:function(parser,reporter){var rule=this,count=0;parser.addListener(\"property\",function(event){event.important===!0&&(count++,reporter.report(\"Use of !important\",event.line,event.col,rule))}),parser.addListener(\"endstylesheet\",function(){reporter.stat(\"important\",count),count>=10&&reporter.rollupWarn(\"Too many !important declarations (\"+count+\"), try to use less than 10 to avoid specificity issues.\",rule)})}}),CSSLint.addRule({id:\"known-properties\",name:\"Require use of known properties\",desc:\"Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"property\",function(event){event.invalid&&reporter.report(event.invalid.message,event.line,event.col,rule)})}}),CSSLint.addRule({id:\"order-alphabetical\",name:\"Alphabetical order\",desc:\"Assure properties are in alphabetical order\",browsers:\"All\",init:function(parser,reporter){var properties,rule=this,startRule=function(){properties=[]};parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"startpage\",startRule),parser.addListener(\"startpagemargin\",startRule),parser.addListener(\"startkeyframerule\",startRule),parser.addListener(\"property\",function(event){var name=event.property.text,lowerCasePrefixLessName=name.toLowerCase().replace(/^-.*?-/,\"\");properties.push(lowerCasePrefixLessName)}),parser.addListener(\"endrule\",function(event){var currentProperties=properties.join(\",\"),expectedProperties=properties.sort().join(\",\");currentProperties!==expectedProperties&&reporter.report(\"Rule doesn't have all its properties in alphabetical ordered.\",event.line,event.col,rule)})}}),CSSLint.addRule({id:\"outline-none\",name:\"Disallow outline: none\",desc:\"Use of outline: none or outline: 0 should be limited to :focus rules.\",browsers:\"All\",tags:[\"Accessibility\"],init:function(parser,reporter){function startRule(event){lastRule=event.selectors?{line:event.line,col:event.col,selectors:event.selectors,propCount:0,outline:!1}:null}function endRule(){lastRule&&lastRule.outline&&(-1===(\"\"+lastRule.selectors).toLowerCase().indexOf(\":focus\")?reporter.report(\"Outlines should only be modified using :focus.\",lastRule.line,lastRule.col,rule):1===lastRule.propCount&&reporter.report(\"Outlines shouldn't be hidden unless other visual changes are made.\",lastRule.line,lastRule.col,rule))}var lastRule,rule=this;parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"startpage\",startRule),parser.addListener(\"startpagemargin\",startRule),parser.addListener(\"startkeyframerule\",startRule),parser.addListener(\"property\",function(event){var name=event.property.text.toLowerCase(),value=event.value;lastRule&&(lastRule.propCount++,\"outline\"!==name||\"none\"!=\"\"+value&&\"0\"!=\"\"+value||(lastRule.outline=!0))}),parser.addListener(\"endrule\",endRule),parser.addListener(\"endfontface\",endRule),parser.addListener(\"endpage\",endRule),parser.addListener(\"endpagemargin\",endRule),parser.addListener(\"endkeyframerule\",endRule)}}),CSSLint.addRule({id:\"overqualified-elements\",name:\"Disallow overqualified elements\",desc:\"Don't use classes or IDs with elements (a.foo or a#foo).\",browsers:\"All\",init:function(parser,reporter){var rule=this,classes={};parser.addListener(\"startrule\",function(event){var selector,part,modifier,i,j,k,selectors=event.selectors;for(i=0;selectors.length>i;i++)for(selector=selectors[i],j=0;selector.parts.length>j;j++)if(part=selector.parts[j],part.type===parser.SELECTOR_PART_TYPE)for(k=0;part.modifiers.length>k;k++)modifier=part.modifiers[k],part.elementName&&\"id\"===modifier.type?reporter.report(\"Element (\"+part+\") is overqualified, just use \"+modifier+\" without element name.\",part.line,part.col,rule):\"class\"===modifier.type&&(classes[modifier]||(classes[modifier]=[]),classes[modifier].push({modifier:modifier,part:part}))}),parser.addListener(\"endstylesheet\",function(){var prop;for(prop in classes)classes.hasOwnProperty(prop)&&1===classes[prop].length&&classes[prop][0].part.elementName&&reporter.report(\"Element (\"+classes[prop][0].part+\") is overqualified, just use \"+classes[prop][0].modifier+\" without element name.\",classes[prop][0].part.line,classes[prop][0].part.col,rule)})}}),CSSLint.addRule({id:\"qualified-headings\",name:\"Disallow qualified headings\",desc:\"Headings should not be qualified (namespaced).\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"startrule\",function(event){var selector,part,i,j,selectors=event.selectors;for(i=0;selectors.length>i;i++)for(selector=selectors[i],j=0;selector.parts.length>j;j++)part=selector.parts[j],part.type===parser.SELECTOR_PART_TYPE&&part.elementName&&/h[1-6]/.test(\"\"+part.elementName)&&j>0&&reporter.report(\"Heading (\"+part.elementName+\") should not be qualified.\",part.line,part.col,rule)})}}),CSSLint.addRule({id:\"regex-selectors\",name:\"Disallow selectors that look like regexs\",desc:\"Selectors that look like regular expressions are slow and should be avoided.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"startrule\",function(event){var selector,part,modifier,i,j,k,selectors=event.selectors;for(i=0;selectors.length>i;i++)for(selector=selectors[i],j=0;selector.parts.length>j;j++)if(part=selector.parts[j],part.type===parser.SELECTOR_PART_TYPE)for(k=0;part.modifiers.length>k;k++)modifier=part.modifiers[k],\"attribute\"===modifier.type&&/([\\~\\|\\^\\$\\*]=)/.test(modifier)&&reporter.report(\"Attribute selectors with \"+RegExp.$1+\" are slow!\",modifier.line,modifier.col,rule)})}}),CSSLint.addRule({id:\"rules-count\",name:\"Rules Count\",desc:\"Track how many rules there are.\",browsers:\"All\",init:function(parser,reporter){var count=0;parser.addListener(\"startrule\",function(){count++}),parser.addListener(\"endstylesheet\",function(){reporter.stat(\"rule-count\",count)})}}),CSSLint.addRule({id:\"selector-max-approaching\",name:\"Warn when approaching the 4095 selector limit for IE\",desc:\"Will warn when selector count is >= 3800 selectors.\",browsers:\"IE\",init:function(parser,reporter){var rule=this,count=0;parser.addListener(\"startrule\",function(event){count+=event.selectors.length}),parser.addListener(\"endstylesheet\",function(){count>=3800&&reporter.report(\"You have \"+count+\" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.\",0,0,rule)})}}),CSSLint.addRule({id:\"selector-max\",name:\"Error when past the 4095 selector limit for IE\",desc:\"Will error when selector count is > 4095.\",browsers:\"IE\",init:function(parser,reporter){var rule=this,count=0;parser.addListener(\"startrule\",function(event){count+=event.selectors.length}),parser.addListener(\"endstylesheet\",function(){count>4095&&reporter.report(\"You have \"+count+\" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.\",0,0,rule)})}}),CSSLint.addRule({id:\"selector-newline\",name:\"Disallow new-line characters in selectors\",desc:\"New-line characters in selectors are usually a forgotten comma and not a descendant combinator.\",browsers:\"All\",init:function(parser,reporter){function startRule(event){var i,len,selector,p,n,pLen,part,part2,type,currentLine,nextLine,selectors=event.selectors;for(i=0,len=selectors.length;len>i;i++)for(selector=selectors[i],p=0,pLen=selector.parts.length;pLen>p;p++)for(n=p+1;pLen>n;n++)part=selector.parts[p],part2=selector.parts[n],type=part.type,currentLine=part.line,nextLine=part2.line,\"descendant\"===type&&nextLine>currentLine&&reporter.report(\"newline character found in selector (forgot a comma?)\",currentLine,selectors[i].parts[0].col,rule)}var rule=this;parser.addListener(\"startrule\",startRule)}}),CSSLint.addRule({id:\"shorthand\",name:\"Require shorthand properties\",desc:\"Use shorthand properties where possible.\",browsers:\"All\",init:function(parser,reporter){function startRule(){properties={}}function endRule(event){var prop,i,len,total;for(prop in mapping)if(mapping.hasOwnProperty(prop)){for(total=0,i=0,len=mapping[prop].length;len>i;i++)total+=properties[mapping[prop][i]]?1:0;total===mapping[prop].length&&reporter.report(\"The properties \"+mapping[prop].join(\", \")+\" can be replaced by \"+prop+\".\",event.line,event.col,rule)}}var prop,i,len,properties,rule=this,propertiesToCheck={},mapping={margin:[\"margin-top\",\"margin-bottom\",\"margin-left\",\"margin-right\"],padding:[\"padding-top\",\"padding-bottom\",\"padding-left\",\"padding-right\"]};for(prop in mapping)if(mapping.hasOwnProperty(prop))for(i=0,len=mapping[prop].length;len>i;i++)propertiesToCheck[mapping[prop][i]]=prop;parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"property\",function(event){var name=(\"\"+event.property).toLowerCase();propertiesToCheck[name]&&(properties[name]=1)}),parser.addListener(\"endrule\",endRule),parser.addListener(\"endfontface\",endRule)}}),CSSLint.addRule({id:\"star-property-hack\",name:\"Disallow properties with a star prefix\",desc:\"Checks for the star property hack (targets IE6/7)\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"property\",function(event){var property=event.property;\"*\"===property.hack&&reporter.report(\"Property with star prefix found.\",event.property.line,event.property.col,rule)})}}),CSSLint.addRule({id:\"text-indent\",name:\"Disallow negative text-indent\",desc:\"Checks for text indent less than -99px\",browsers:\"All\",init:function(parser,reporter){function startRule(){textIndent=!1,direction=\"inherit\"}function endRule(){textIndent&&\"ltr\"!==direction&&reporter.report(\"Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.\",textIndent.line,textIndent.col,rule)}var textIndent,direction,rule=this;parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"property\",function(event){var name=(\"\"+event.property).toLowerCase(),value=event.value;\"text-indent\"===name&&-99>value.parts[0].value?textIndent=event.property:\"direction\"===name&&\"ltr\"==\"\"+value&&(direction=\"ltr\")}),parser.addListener(\"endrule\",endRule),parser.addListener(\"endfontface\",endRule)}}),CSSLint.addRule({id:\"underscore-property-hack\",name:\"Disallow properties with an underscore prefix\",desc:\"Checks for the underscore property hack (targets IE6)\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"property\",function(event){var property=event.property;\"_\"===property.hack&&reporter.report(\"Property with underscore prefix found.\",event.property.line,event.property.col,rule)})}}),CSSLint.addRule({id:\"unique-headings\",name:\"Headings should only be defined once\",desc:\"Headings should be defined only once.\",browsers:\"All\",init:function(parser,reporter){var rule=this,headings={h1:0,h2:0,h3:0,h4:0,h5:0,h6:0};parser.addListener(\"startrule\",function(event){var selector,part,pseudo,i,j,selectors=event.selectors;for(i=0;selectors.length>i;i++)if(selector=selectors[i],part=selector.parts[selector.parts.length-1],part.elementName&&/(h[1-6])/i.test(\"\"+part.elementName)){for(j=0;part.modifiers.length>j;j++)if(\"pseudo\"===part.modifiers[j].type){pseudo=!0;break}pseudo||(headings[RegExp.$1]++,headings[RegExp.$1]>1&&reporter.report(\"Heading (\"+part.elementName+\") has already been defined.\",part.line,part.col,rule))}}),parser.addListener(\"endstylesheet\",function(){var prop,messages=[];for(prop in headings)headings.hasOwnProperty(prop)&&headings[prop]>1&&messages.push(headings[prop]+\" \"+prop+\"s\");messages.length&&reporter.rollupWarn(\"You have \"+messages.join(\", \")+\" defined in this stylesheet.\",rule)})}}),CSSLint.addRule({id:\"universal-selector\",name:\"Disallow universal selector\",desc:\"The universal selector (*) is known to be slow.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"startrule\",function(event){var selector,part,i,selectors=event.selectors;for(i=0;selectors.length>i;i++)selector=selectors[i],part=selector.parts[selector.parts.length-1],\"*\"===part.elementName&&reporter.report(rule.desc,part.line,part.col,rule)})}}),CSSLint.addRule({id:\"unqualified-attributes\",name:\"Disallow unqualified attribute selectors\",desc:\"Unqualified attribute selectors are known to be slow.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"startrule\",function(event){var selector,part,modifier,i,k,selectors=event.selectors;for(i=0;selectors.length>i;i++)if(selector=selectors[i],part=selector.parts[selector.parts.length-1],part.type===parser.SELECTOR_PART_TYPE)for(k=0;part.modifiers.length>k;k++)modifier=part.modifiers[k],\"attribute\"!==modifier.type||part.elementName&&\"*\"!==part.elementName||reporter.report(rule.desc,part.line,part.col,rule)})}}),CSSLint.addRule({id:\"vendor-prefix\",name:\"Require standard property with vendor prefix\",desc:\"When using a vendor-prefixed property, make sure to include the standard one.\",browsers:\"All\",init:function(parser,reporter){function startRule(){properties={},num=1}function endRule(){var prop,i,len,needed,actual,needsStandard=[];for(prop in properties)propertiesToCheck[prop]&&needsStandard.push({actual:prop,needed:propertiesToCheck[prop]});for(i=0,len=needsStandard.length;len>i;i++)needed=needsStandard[i].needed,actual=needsStandard[i].actual,properties[needed]?properties[needed][0].pos<properties[actual][0].pos&&reporter.report(\"Standard property '\"+needed+\"' should come after vendor-prefixed property '\"+actual+\"'.\",properties[actual][0].name.line,properties[actual][0].name.col,rule):reporter.report(\"Missing standard property '\"+needed+\"' to go along with '\"+actual+\"'.\",properties[actual][0].name.line,properties[actual][0].name.col,rule)}var properties,num,rule=this,propertiesToCheck={\"-webkit-border-radius\":\"border-radius\",\"-webkit-border-top-left-radius\":\"border-top-left-radius\",\"-webkit-border-top-right-radius\":\"border-top-right-radius\",\"-webkit-border-bottom-left-radius\":\"border-bottom-left-radius\",\"-webkit-border-bottom-right-radius\":\"border-bottom-right-radius\",\"-o-border-radius\":\"border-radius\",\"-o-border-top-left-radius\":\"border-top-left-radius\",\"-o-border-top-right-radius\":\"border-top-right-radius\",\"-o-border-bottom-left-radius\":\"border-bottom-left-radius\",\"-o-border-bottom-right-radius\":\"border-bottom-right-radius\",\"-moz-border-radius\":\"border-radius\",\"-moz-border-radius-topleft\":\"border-top-left-radius\",\"-moz-border-radius-topright\":\"border-top-right-radius\",\"-moz-border-radius-bottomleft\":\"border-bottom-left-radius\",\"-moz-border-radius-bottomright\":\"border-bottom-right-radius\",\"-moz-column-count\":\"column-count\",\"-webkit-column-count\":\"column-count\",\"-moz-column-gap\":\"column-gap\",\"-webkit-column-gap\":\"column-gap\",\"-moz-column-rule\":\"column-rule\",\"-webkit-column-rule\":\"column-rule\",\"-moz-column-rule-style\":\"column-rule-style\",\"-webkit-column-rule-style\":\"column-rule-style\",\"-moz-column-rule-color\":\"column-rule-color\",\"-webkit-column-rule-color\":\"column-rule-color\",\"-moz-column-rule-width\":\"column-rule-width\",\"-webkit-column-rule-width\":\"column-rule-width\",\"-moz-column-width\":\"column-width\",\"-webkit-column-width\":\"column-width\",\"-webkit-column-span\":\"column-span\",\"-webkit-columns\":\"columns\",\"-moz-box-shadow\":\"box-shadow\",\"-webkit-box-shadow\":\"box-shadow\",\"-moz-transform\":\"transform\",\"-webkit-transform\":\"transform\",\"-o-transform\":\"transform\",\"-ms-transform\":\"transform\",\"-moz-transform-origin\":\"transform-origin\",\"-webkit-transform-origin\":\"transform-origin\",\"-o-transform-origin\":\"transform-origin\",\"-ms-transform-origin\":\"transform-origin\",\"-moz-box-sizing\":\"box-sizing\",\"-webkit-box-sizing\":\"box-sizing\"};parser.addListener(\"startrule\",startRule),parser.addListener(\"startfontface\",startRule),parser.addListener(\"startpage\",startRule),parser.addListener(\"startpagemargin\",startRule),parser.addListener(\"startkeyframerule\",startRule),parser.addListener(\"property\",function(event){var name=event.property.text.toLowerCase();properties[name]||(properties[name]=[]),properties[name].push({name:event.property,value:event.value,pos:num++})}),parser.addListener(\"endrule\",endRule),parser.addListener(\"endfontface\",endRule),parser.addListener(\"endpage\",endRule),parser.addListener(\"endpagemargin\",endRule),parser.addListener(\"endkeyframerule\",endRule)}}),CSSLint.addRule({id:\"zero-units\",name:\"Disallow units for 0 values\",desc:\"You don't need to specify units when a value is 0.\",browsers:\"All\",init:function(parser,reporter){var rule=this;parser.addListener(\"property\",function(event){for(var parts=event.value.parts,i=0,len=parts.length;len>i;)!parts[i].units&&\"percentage\"!==parts[i].type||0!==parts[i].value||\"time\"===parts[i].type||reporter.report(\"Values of 0 shouldn't have units specified.\",parts[i].line,parts[i].col,rule),i++})}}),function(){var xmlEscape=function(str){return str&&str.constructor===String?str.replace(/[\\\"&><]/g,function(match){switch(match){case'\"':return\""\";case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\"}}):\"\"};CSSLint.addFormatter({id:\"checkstyle-xml\",name:\"Checkstyle XML format\",startFormat:function(){return'<?xml version=\"1.0\" encoding=\"utf-8\"?><checkstyle>'},endFormat:function(){return\"</checkstyle>\"},readError:function(filename,message){return'<file name=\"'+xmlEscape(filename)+'\"><error line=\"0\" column=\"0\" severty=\"error\" message=\"'+xmlEscape(message)+'\"></error></file>'},formatResults:function(results,filename){var messages=results.messages,output=[],generateSource=function(rule){return rule&&\"name\"in rule?\"net.csslint.\"+rule.name.replace(/\\s/g,\"\"):\"\"};return messages.length>0&&(output.push('<file name=\"'+filename+'\">'),CSSLint.Util.forEach(messages,function(message){message.rollup||output.push('<error line=\"'+message.line+'\" column=\"'+message.col+'\" severity=\"'+message.type+'\"'+' message=\"'+xmlEscape(message.message)+'\" source=\"'+generateSource(message.rule)+'\"/>')}),output.push(\"</file>\")),output.join(\"\")}})}(),CSSLint.addFormatter({id:\"compact\",name:\"Compact, 'porcelain' format\",startFormat:function(){return\"\"},endFormat:function(){return\"\"},formatResults:function(results,filename,options){var messages=results.messages,output=\"\";options=options||{};var capitalize=function(str){return str.charAt(0).toUpperCase()+str.slice(1)};return 0===messages.length?options.quiet?\"\":filename+\": Lint Free!\":(CSSLint.Util.forEach(messages,function(message){output+=message.rollup?filename+\": \"+capitalize(message.type)+\" - \"+message.message+\"\\n\":filename+\": \"+\"line \"+message.line+\", col \"+message.col+\", \"+capitalize(message.type)+\" - \"+message.message+\" (\"+message.rule.id+\")\\n\"}),output)}}),CSSLint.addFormatter({id:\"csslint-xml\",name:\"CSSLint XML format\",startFormat:function(){return'<?xml version=\"1.0\" encoding=\"utf-8\"?><csslint>'},endFormat:function(){return\"</csslint>\"},formatResults:function(results,filename){var messages=results.messages,output=[],escapeSpecialCharacters=function(str){return str&&str.constructor===String?str.replace(/\\\"/g,\"'\").replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\"):\"\"};return messages.length>0&&(output.push('<file name=\"'+filename+'\">'),CSSLint.Util.forEach(messages,function(message){message.rollup?output.push('<issue severity=\"'+message.type+'\" reason=\"'+escapeSpecialCharacters(message.message)+'\" evidence=\"'+escapeSpecialCharacters(message.evidence)+'\"/>'):output.push('<issue line=\"'+message.line+'\" char=\"'+message.col+'\" severity=\"'+message.type+'\"'+' reason=\"'+escapeSpecialCharacters(message.message)+'\" evidence=\"'+escapeSpecialCharacters(message.evidence)+'\"/>')}),output.push(\"</file>\")),output.join(\"\")}}),CSSLint.addFormatter({id:\"junit-xml\",name:\"JUNIT XML format\",startFormat:function(){return'<?xml version=\"1.0\" encoding=\"utf-8\"?><testsuites>'},endFormat:function(){return\"</testsuites>\"},formatResults:function(results,filename){var messages=results.messages,output=[],tests={error:0,failure:0},generateSource=function(rule){return rule&&\"name\"in rule?\"net.csslint.\"+rule.name.replace(/\\s/g,\"\"):\"\"},escapeSpecialCharacters=function(str){return str&&str.constructor===String?str.replace(/\\\"/g,\"'\").replace(/</g,\"<\").replace(/>/g,\">\"):\"\"};return messages.length>0&&(messages.forEach(function(message){var type=\"warning\"===message.type?\"error\":message.type;message.rollup||(output.push('<testcase time=\"0\" name=\"'+generateSource(message.rule)+'\">'),output.push(\"<\"+type+' message=\"'+escapeSpecialCharacters(message.message)+'\"><![CDATA['+message.line+\":\"+message.col+\":\"+escapeSpecialCharacters(message.evidence)+\"]]></\"+type+\">\"),output.push(\"</testcase>\"),tests[type]+=1)}),output.unshift('<testsuite time=\"0\" tests=\"'+messages.length+'\" skipped=\"0\" errors=\"'+tests.error+'\" failures=\"'+tests.failure+'\" package=\"net.csslint\" name=\"'+filename+'\">'),output.push(\"</testsuite>\")),output.join(\"\")}}),CSSLint.addFormatter({id:\"lint-xml\",name:\"Lint XML format\",startFormat:function(){return'<?xml version=\"1.0\" encoding=\"utf-8\"?><lint>'},endFormat:function(){return\"</lint>\"},formatResults:function(results,filename){var messages=results.messages,output=[],escapeSpecialCharacters=function(str){return str&&str.constructor===String?str.replace(/\\\"/g,\"'\").replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\"):\"\"};return messages.length>0&&(output.push('<file name=\"'+filename+'\">'),CSSLint.Util.forEach(messages,function(message){message.rollup?output.push('<issue severity=\"'+message.type+'\" reason=\"'+escapeSpecialCharacters(message.message)+'\" evidence=\"'+escapeSpecialCharacters(message.evidence)+'\"/>'):output.push('<issue line=\"'+message.line+'\" char=\"'+message.col+'\" severity=\"'+message.type+'\"'+' reason=\"'+escapeSpecialCharacters(message.message)+'\" evidence=\"'+escapeSpecialCharacters(message.evidence)+'\"/>')}),output.push(\"</file>\")),output.join(\"\")}}),CSSLint.addFormatter({id:\"text\",name:\"Plain Text\",startFormat:function(){return\"\"},endFormat:function(){return\"\"},formatResults:function(results,filename,options){var messages=results.messages,output=\"\";if(options=options||{},0===messages.length)return options.quiet?\"\":\"\\n\\ncsslint: No errors in \"+filename+\".\";output=\"\\n\\ncsslint: There \",output+=1===messages.length?\"is 1 problem\":\"are \"+messages.length+\" problems\",output+=\" in \"+filename+\".\";var pos=filename.lastIndexOf(\"/\"),shortFilename=filename;return-1===pos&&(pos=filename.lastIndexOf(\"\\\\\")),pos>-1&&(shortFilename=filename.substring(pos+1)),CSSLint.Util.forEach(messages,function(message,i){output=output+\"\\n\\n\"+shortFilename,message.rollup?(output+=\"\\n\"+(i+1)+\": \"+message.type,output+=\"\\n\"+message.message):(output+=\"\\n\"+(i+1)+\": \"+message.type+\" at line \"+message.line+\", col \"+message.col,output+=\"\\n\"+message.message,output+=\"\\n\"+message.evidence)}),output}}),module.exports.CSSLint=CSSLint}),ace.define(\"ace/mode/css_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/worker/mirror\",\"ace/mode/css/csslint\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),lang=acequire(\"../lib/lang\"),Mirror=acequire(\"../worker/mirror\").Mirror,CSSLint=acequire(\"./css/csslint\").CSSLint,Worker=exports.Worker=function(sender){Mirror.call(this,sender),this.setTimeout(400),this.ruleset=null,this.setDisabledRules(\"ids|order-alphabetical\"),this.setInfoRules(\"adjoining-classes|qualified-headings|zero-units|gradients|import|outline-none|vendor-prefix\")};oop.inherits(Worker,Mirror),function(){this.setInfoRules=function(ruleNames){\"string\"==typeof ruleNames&&(ruleNames=ruleNames.split(\"|\")),this.infoRules=lang.arrayToMap(ruleNames),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.setDisabledRules=function(ruleNames){if(ruleNames){\"string\"==typeof ruleNames&&(ruleNames=ruleNames.split(\"|\"));\nvar all={};CSSLint.getRules().forEach(function(x){all[x.id]=!0}),ruleNames.forEach(function(x){delete all[x]}),this.ruleset=all}else this.ruleset=null;this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.onUpdate=function(){var value=this.doc.getValue();if(!value)return this.sender.emit(\"annotate\",[]);var infoRules=this.infoRules,result=CSSLint.verify(value,this.ruleset);this.sender.emit(\"annotate\",result.messages.map(function(msg){return{row:msg.line-1,column:msg.col-1,text:msg.message,type:infoRules[msg.rule.id]?\"info\":msg.type,rule:msg.rule.name}}))}}.call(Worker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }), /* 26 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(103); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 27 */ /***/ (function(module, exports) { module.exports.id = 'ace/mode/html_worker'; module.exports.src = "\"no use strict\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/</g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=\"insert\"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;return $pointsInOrder(point,deltaStart,moveIfEqual)?{row:point.row,column:point.column}:$pointsInOrder(deltaEnd,point,!moveIfEqual)?{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)}:{row:deltaStart.row,column:deltaStart.column}}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){\"use strict\";acequire(\"../range\").Range;var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/html/saxparser\",[\"require\",\"exports\",\"module\"],function(acequire,exports,module){module.exports=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=\"function\"==typeof acequire&&acequire;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw Error(\"Cannot find module '\"+o+\"'\")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}for(var i=\"function\"==typeof acequire&&acequire,o=0;r.length>o;o++)s(r[o]);return s}({1:[function(_dereq_,module,exports){function isScopeMarker(node){return\"http://www.w3.org/1999/xhtml\"===node.namespaceURI?\"applet\"===node.localName||\"caption\"===node.localName||\"marquee\"===node.localName||\"object\"===node.localName||\"table\"===node.localName||\"td\"===node.localName||\"th\"===node.localName:\"http://www.w3.org/1998/Math/MathML\"===node.namespaceURI?\"mi\"===node.localName||\"mo\"===node.localName||\"mn\"===node.localName||\"ms\"===node.localName||\"mtext\"===node.localName||\"annotation-xml\"===node.localName:\"http://www.w3.org/2000/svg\"===node.namespaceURI?\"foreignObject\"===node.localName||\"desc\"===node.localName||\"title\"===node.localName:void 0}function isListItemScopeMarker(node){return isScopeMarker(node)||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"ol\"===node.localName||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"ul\"===node.localName}function isTableScopeMarker(node){return\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"table\"===node.localName||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"html\"===node.localName}function isTableBodyScopeMarker(node){return\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"tbody\"===node.localName||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"tfoot\"===node.localName||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"thead\"===node.localName||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"html\"===node.localName}function isTableRowScopeMarker(node){return\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"tr\"===node.localName||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"html\"===node.localName}function isButtonScopeMarker(node){return isScopeMarker(node)||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"button\"===node.localName}function isSelectScopeMarker(node){return!(\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"optgroup\"===node.localName||\"http://www.w3.org/1999/xhtml\"===node.namespaceURI&&\"option\"===node.localName)}function ElementStack(){this.elements=[],this.rootNode=null,this.headElement=null,this.bodyElement=null}ElementStack.prototype._inScope=function(localName,isMarker){for(var i=this.elements.length-1;i>=0;i--){var node=this.elements[i];if(node.localName===localName)return!0;if(isMarker(node))return!1}},ElementStack.prototype.push=function(item){this.elements.push(item)},ElementStack.prototype.pushHtmlElement=function(item){this.rootNode=item.node,this.push(item)},ElementStack.prototype.pushHeadElement=function(item){this.headElement=item.node,this.push(item)},ElementStack.prototype.pushBodyElement=function(item){this.bodyElement=item.node,this.push(item)},ElementStack.prototype.pop=function(){return this.elements.pop()},ElementStack.prototype.remove=function(item){this.elements.splice(this.elements.indexOf(item),1)},ElementStack.prototype.popUntilPopped=function(localName){var element;do element=this.pop();while(element.localName!=localName)},ElementStack.prototype.popUntilTableScopeMarker=function(){for(;!isTableScopeMarker(this.top);)this.pop()},ElementStack.prototype.popUntilTableBodyScopeMarker=function(){for(;!isTableBodyScopeMarker(this.top);)this.pop()},ElementStack.prototype.popUntilTableRowScopeMarker=function(){for(;!isTableRowScopeMarker(this.top);)this.pop()},ElementStack.prototype.item=function(index){return this.elements[index]},ElementStack.prototype.contains=function(element){return-1!==this.elements.indexOf(element)},ElementStack.prototype.inScope=function(localName){return this._inScope(localName,isScopeMarker)},ElementStack.prototype.inListItemScope=function(localName){return this._inScope(localName,isListItemScopeMarker)},ElementStack.prototype.inTableScope=function(localName){return this._inScope(localName,isTableScopeMarker)},ElementStack.prototype.inButtonScope=function(localName){return this._inScope(localName,isButtonScopeMarker)},ElementStack.prototype.inSelectScope=function(localName){return this._inScope(localName,isSelectScopeMarker)},ElementStack.prototype.hasNumberedHeaderElementInScope=function(){for(var i=this.elements.length-1;i>=0;i--){var node=this.elements[i];if(node.isNumberedHeader())return!0;if(isScopeMarker(node))return!1}},ElementStack.prototype.furthestBlockForFormattingElement=function(element){for(var furthestBlock=null,i=this.elements.length-1;i>=0;i--){var node=this.elements[i];\nif(node.node===element)break;node.isSpecial()&&(furthestBlock=node)}return furthestBlock},ElementStack.prototype.findIndex=function(localName){for(var i=this.elements.length-1;i>=0;i--)if(this.elements[i].localName==localName)return i;return-1},ElementStack.prototype.remove_openElements_until=function(callback){for(var element,finished=!1;!finished;)element=this.elements.pop(),finished=callback(element);return element},Object.defineProperty(ElementStack.prototype,\"top\",{get:function(){return this.elements[this.elements.length-1]}}),Object.defineProperty(ElementStack.prototype,\"length\",{get:function(){return this.elements.length}}),exports.ElementStack=ElementStack},{}],2:[function(_dereq_,module,exports){function isAlphaNumeric(c){return c>=\"0\"&&\"9\">=c||c>=\"a\"&&\"z\">=c||c>=\"A\"&&\"Z\">=c}function isHexDigit(c){return c>=\"0\"&&\"9\">=c||c>=\"a\"&&\"f\">=c||c>=\"A\"&&\"F\">=c}function isDecimalDigit(c){return c>=\"0\"&&\"9\">=c}var entities=_dereq_(\"html5-entities\"),InputStream=_dereq_(\"./InputStream\").InputStream,namedEntityPrefixes={};Object.keys(entities).forEach(function(entityKey){for(var i=0;entityKey.length>i;i++)namedEntityPrefixes[entityKey.substring(0,i+1)]=!0});var EntityParser={};EntityParser.consumeEntity=function(buffer,tokenizer,additionalAllowedCharacter){var decodedCharacter=\"\",consumedCharacters=\"\",ch=buffer.char();if(ch===InputStream.EOF)return!1;if(consumedCharacters+=ch,\"\t\"==ch||\"\\n\"==ch||\"\u000b\"==ch||\" \"==ch||\"<\"==ch||\"&\"==ch)return buffer.unget(consumedCharacters),!1;if(additionalAllowedCharacter===ch)return buffer.unget(consumedCharacters),!1;if(\"#\"==ch){if(ch=buffer.shift(1),ch===InputStream.EOF)return tokenizer._parseError(\"expected-numeric-entity-but-got-eof\"),buffer.unget(consumedCharacters),!1;consumedCharacters+=ch;var radix=10,isDigit=isDecimalDigit;if(\"x\"==ch||\"X\"==ch){if(radix=16,isDigit=isHexDigit,ch=buffer.shift(1),ch===InputStream.EOF)return tokenizer._parseError(\"expected-numeric-entity-but-got-eof\"),buffer.unget(consumedCharacters),!1;consumedCharacters+=ch}if(isDigit(ch)){for(var code=\"\";ch!==InputStream.EOF&&isDigit(ch);)code+=ch,ch=buffer.char();code=parseInt(code,radix);var replacement=this.replaceEntityNumbers(code);if(replacement&&(tokenizer._parseError(\"invalid-numeric-entity-replaced\"),code=replacement),code>65535&&1114111>=code){code-=65536;var first=((1047552&code)>>10)+55296,second=(1023&code)+56320;decodedCharacter=String.fromCharCode(first,second)}else decodedCharacter=String.fromCharCode(code);return\";\"!==ch&&(tokenizer._parseError(\"numeric-entity-without-semicolon\"),buffer.unget(ch)),decodedCharacter}return buffer.unget(consumedCharacters),tokenizer._parseError(\"expected-numeric-entity\"),!1}if(ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch){for(var mostRecentMatch=\"\";namedEntityPrefixes[consumedCharacters]&&(entities[consumedCharacters]&&(mostRecentMatch=consumedCharacters),\";\"!=ch)&&(ch=buffer.char(),ch!==InputStream.EOF);)consumedCharacters+=ch;return mostRecentMatch?(decodedCharacter=entities[mostRecentMatch],\";\"===ch||!additionalAllowedCharacter||!isAlphaNumeric(ch)&&\"=\"!==ch?(consumedCharacters.length>mostRecentMatch.length&&buffer.unget(consumedCharacters.substring(mostRecentMatch.length)),\";\"!==ch&&tokenizer._parseError(\"named-entity-without-semicolon\"),decodedCharacter):(buffer.unget(consumedCharacters),!1)):(tokenizer._parseError(\"expected-named-entity\"),buffer.unget(consumedCharacters),!1)}},EntityParser.replaceEntityNumbers=function(c){switch(c){case 0:return 65533;case 19:return 16;case 128:return 8364;case 129:return 129;case 130:return 8218;case 131:return 402;case 132:return 8222;case 133:return 8230;case 134:return 8224;case 135:return 8225;case 136:return 710;case 137:return 8240;case 138:return 352;case 139:return 8249;case 140:return 338;case 141:return 141;case 142:return 381;case 143:return 143;case 144:return 144;case 145:return 8216;case 146:return 8217;case 147:return 8220;case 148:return 8221;case 149:return 8226;case 150:return 8211;case 151:return 8212;case 152:return 732;case 153:return 8482;case 154:return 353;case 155:return 8250;case 156:return 339;case 157:return 157;case 158:return 382;case 159:return 376;default:if(c>=55296&&57343>=c||c>1114111)return 65533;if(c>=1&&8>=c||c>=14&&31>=c||c>=127&&159>=c||c>=64976&&65007>=c||11==c||65534==c||131070==c||3145726==c||196607==c||262142==c||262143==c||327678==c||327679==c||393214==c||393215==c||458750==c||458751==c||524286==c||524287==c||589822==c||589823==c||655358==c||655359==c||720894==c||720895==c||786430==c||786431==c||851966==c||851967==c||917502==c||917503==c||983038==c||983039==c||1048574==c||1048575==c||1114110==c||1114111==c)return c}},exports.EntityParser=EntityParser},{\"./InputStream\":3,\"html5-entities\":12}],3:[function(_dereq_,module,exports){function InputStream(){this.data=\"\",this.start=0,this.committed=0,this.eof=!1,this.lastLocation={line:0,column:0}}InputStream.EOF=-1,InputStream.DRAIN=-2,InputStream.prototype={slice:function(){if(this.start>=this.data.length){if(!this.eof)throw InputStream.DRAIN;return InputStream.EOF}return this.data.slice(this.start,this.data.length)},\"char\":function(){if(!this.eof&&this.start>=this.data.length-1)throw InputStream.DRAIN;if(this.start>=this.data.length)return InputStream.EOF;var ch=this.data[this.start++];return\"\\r\"===ch&&(ch=\"\\n\"),ch},advance:function(amount){if(this.start+=amount,this.start>=this.data.length){if(!this.eof)throw InputStream.DRAIN;return InputStream.EOF}this.committed>this.data.length/2&&(this.lastLocation=this.location(),this.data=this.data.slice(this.committed),this.start=this.start-this.committed,this.committed=0)},matchWhile:function(re){if(this.eof&&this.start>=this.data.length)return\"\";var r=RegExp(\"^\"+re+\"+\"),m=r.exec(this.slice());if(m){if(!this.eof&&m[0].length==this.data.length-this.start)throw InputStream.DRAIN;return this.advance(m[0].length),m[0]}return\"\"},matchUntil:function(re){var m,s;if(s=this.slice(),s===InputStream.EOF)return\"\";if(m=RegExp(re+(this.eof?\"|$\":\"\")).exec(s)){var t=this.data.slice(this.start,this.start+m.index);return this.advance(m.index),t.replace(/\\r/g,\"\\n\").replace(/\\n{2,}/g,\"\\n\")}throw InputStream.DRAIN},append:function(data){this.data+=data},shift:function(n){if(!this.eof&&this.start+n>=this.data.length)throw InputStream.DRAIN;if(this.eof&&this.start>=this.data.length)return InputStream.EOF;var d=\"\"+this.data.slice(this.start,this.start+n);return this.advance(Math.min(n,this.data.length-this.start)),d},peek:function(n){if(!this.eof&&this.start+n>=this.data.length)throw InputStream.DRAIN;return this.eof&&this.start>=this.data.length?InputStream.EOF:\"\"+this.data.slice(this.start,Math.min(this.start+n,this.data.length))},length:function(){return this.data.length-this.start-1},unget:function(d){d!==InputStream.EOF&&(this.start-=d.length)},undo:function(){this.start=this.committed},commit:function(){this.committed=this.start},location:function(){var lastLine=this.lastLocation.line,lastColumn=this.lastLocation.column,read=this.data.slice(0,this.committed),newlines=read.match(/\\n/g),line=newlines?lastLine+newlines.length:lastLine,column=newlines?read.length-read.lastIndexOf(\"\\n\")-1:lastColumn+read.length;return{line:line,column:column}}},exports.InputStream=InputStream},{}],4:[function(_dereq_,module,exports){function StackItem(namespaceURI,localName,attributes,node){this.localName=localName,this.namespaceURI=namespaceURI,this.attributes=attributes,this.node=node}function getAttribute(item,name){for(var i=0;item.attributes.length>i;i++)if(item.attributes[i].nodeName==name)return item.attributes[i].nodeValue;return null}var SpecialElements={\"http://www.w3.org/1999/xhtml\":[\"address\",\"applet\",\"area\",\"article\",\"aside\",\"base\",\"basefont\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"caption\",\"center\",\"col\",\"colgroup\",\"dd\",\"details\",\"dir\",\"div\",\"dl\",\"dt\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"frame\",\"frameset\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"iframe\",\"img\",\"input\",\"isindex\",\"li\",\"link\",\"listing\",\"main\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"nav\",\"noembed\",\"noframes\",\"noscript\",\"object\",\"ol\",\"p\",\"param\",\"plaintext\",\"pre\",\"script\",\"section\",\"select\",\"source\",\"style\",\"summary\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"title\",\"tr\",\"track\",\"ul\",\"wbr\",\"xmp\"],\"http://www.w3.org/1998/Math/MathML\":[\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\",\"annotation-xml\"],\"http://www.w3.org/2000/svg\":[\"foreignObject\",\"desc\",\"title\"]};StackItem.prototype.isSpecial=function(){return this.namespaceURI in SpecialElements&&SpecialElements[this.namespaceURI].indexOf(this.localName)>-1},StackItem.prototype.isFosterParenting=function(){return\"http://www.w3.org/1999/xhtml\"===this.namespaceURI?\"table\"===this.localName||\"tbody\"===this.localName||\"tfoot\"===this.localName||\"thead\"===this.localName||\"tr\"===this.localName:!1},StackItem.prototype.isNumberedHeader=function(){return\"http://www.w3.org/1999/xhtml\"===this.namespaceURI?\"h1\"===this.localName||\"h2\"===this.localName||\"h3\"===this.localName||\"h4\"===this.localName||\"h5\"===this.localName||\"h6\"===this.localName:!1},StackItem.prototype.isForeign=function(){return\"http://www.w3.org/1999/xhtml\"!=this.namespaceURI},StackItem.prototype.isHtmlIntegrationPoint=function(){if(\"http://www.w3.org/1998/Math/MathML\"===this.namespaceURI){if(\"annotation-xml\"!==this.localName)return!1;var encoding=getAttribute(this,\"encoding\");return encoding?(encoding=encoding.toLowerCase(),\"text/html\"===encoding||\"application/xhtml+xml\"===encoding):!1}return\"http://www.w3.org/2000/svg\"===this.namespaceURI?\"foreignObject\"===this.localName||\"desc\"===this.localName||\"title\"===this.localName:!1},StackItem.prototype.isMathMLTextIntegrationPoint=function(){return\"http://www.w3.org/1998/Math/MathML\"===this.namespaceURI?\"mi\"===this.localName||\"mo\"===this.localName||\"mn\"===this.localName||\"ms\"===this.localName||\"mtext\"===this.localName:!1},exports.StackItem=StackItem},{}],5:[function(_dereq_,module,exports){function isWhitespace(c){return\" \"===c||\"\\n\"===c||\"\t\"===c||\"\\r\"===c||\"\\f\"===c}function isAlpha(c){return c>=\"A\"&&\"Z\">=c||c>=\"a\"&&\"z\">=c}function Tokenizer(tokenHandler){this._tokenHandler=tokenHandler,this._state=Tokenizer.DATA,this._inputStream=new InputStream,this._currentToken=null,this._temporaryBuffer=\"\",this._additionalAllowedCharacter=\"\"}var InputStream=_dereq_(\"./InputStream\").InputStream,EntityParser=_dereq_(\"./EntityParser\").EntityParser;Tokenizer.prototype._parseError=function(code,args){this._tokenHandler.parseError(code,args)},Tokenizer.prototype._emitToken=function(token){if(\"StartTag\"===token.type)for(var i=1;token.data.length>i;i++)token.data[i].nodeName||token.data.splice(i--,1);else\"EndTag\"===token.type&&(token.selfClosing&&this._parseError(\"self-closing-flag-on-end-tag\"),0!==token.data.length&&this._parseError(\"attributes-in-end-tag\"));this._tokenHandler.processToken(token),\"StartTag\"===token.type&&token.selfClosing&&!this._tokenHandler.isSelfClosingFlagAcknowledged()&&this._parseError(\"non-void-element-with-trailing-solidus\",{name:token.name})},Tokenizer.prototype._emitCurrentToken=function(){this._state=Tokenizer.DATA,this._emitToken(this._currentToken)},Tokenizer.prototype._currentAttribute=function(){return this._currentToken.data[this._currentToken.data.length-1]},Tokenizer.prototype.setState=function(state){this._state=state},Tokenizer.prototype.tokenize=function(source){function data_state(buffer){var data=buffer.char();if(data===InputStream.EOF)return tokenizer._emitToken({type:\"EOF\",data:null}),!1;if(\"&\"===data)tokenizer.setState(character_reference_in_data_state);else if(\"<\"===data)tokenizer.setState(tag_open_state);else if(\"\\0\"===data)tokenizer._emitToken({type:\"Characters\",data:data}),buffer.commit();else{var chars=buffer.matchUntil(\"&|<|\\0\");tokenizer._emitToken({type:\"Characters\",data:data+chars}),buffer.commit()}return!0}function character_reference_in_data_state(buffer){var character=EntityParser.consumeEntity(buffer,tokenizer);return tokenizer.setState(data_state),tokenizer._emitToken({type:\"Characters\",data:character||\"&\"}),!0}function rcdata_state(buffer){var data=buffer.char();if(data===InputStream.EOF)return tokenizer._emitToken({type:\"EOF\",data:null}),!1;if(\"&\"===data)tokenizer.setState(character_reference_in_rcdata_state);else if(\"<\"===data)tokenizer.setState(rcdata_less_than_sign_state);else if(\"\\0\"===data)tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),buffer.commit();else{var chars=buffer.matchUntil(\"&|<|\\0\");tokenizer._emitToken({type:\"Characters\",data:data+chars}),buffer.commit()}return!0}function character_reference_in_rcdata_state(buffer){var character=EntityParser.consumeEntity(buffer,tokenizer);return tokenizer.setState(rcdata_state),tokenizer._emitToken({type:\"Characters\",data:character||\"&\"}),!0}function rawtext_state(buffer){var data=buffer.char();if(data===InputStream.EOF)return tokenizer._emitToken({type:\"EOF\",data:null}),!1;if(\"<\"===data)tokenizer.setState(rawtext_less_than_sign_state);else if(\"\\0\"===data)tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),buffer.commit();else{var chars=buffer.matchUntil(\"<|\\0\");tokenizer._emitToken({type:\"Characters\",data:data+chars})}return!0}function plaintext_state(buffer){var data=buffer.char();if(data===InputStream.EOF)return tokenizer._emitToken({type:\"EOF\",data:null}),!1;if(\"\\0\"===data)tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),buffer.commit();else{var chars=buffer.matchUntil(\"\\0\");tokenizer._emitToken({type:\"Characters\",data:data+chars})}return!0}function script_data_state(buffer){var data=buffer.char();if(data===InputStream.EOF)return tokenizer._emitToken({type:\"EOF\",data:null}),!1;if(\"<\"===data)tokenizer.setState(script_data_less_than_sign_state);else if(\"\\0\"===data)tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),buffer.commit();else{var chars=buffer.matchUntil(\"<|\\0\");tokenizer._emitToken({type:\"Characters\",data:data+chars})}return!0}function rcdata_less_than_sign_state(buffer){var data=buffer.char();return\"/\"===data?(this._temporaryBuffer=\"\",tokenizer.setState(rcdata_end_tag_open_state)):(tokenizer._emitToken({type:\"Characters\",data:\"<\"}),buffer.unget(data),tokenizer.setState(rcdata_state)),!0}function rcdata_end_tag_open_state(buffer){var data=buffer.char();return isAlpha(data)?(this._temporaryBuffer+=data,tokenizer.setState(rcdata_end_tag_name_state)):(tokenizer._emitToken({type:\"Characters\",data:\"</\"}),buffer.unget(data),tokenizer.setState(rcdata_state)),!0}function rcdata_end_tag_name_state(buffer){var appropriate=tokenizer._currentToken&&tokenizer._currentToken.name===this._temporaryBuffer.toLowerCase(),data=buffer.char();return isWhitespace(data)&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:this._temporaryBuffer,data:[],selfClosing:!1},tokenizer.setState(before_attribute_name_state)):\"/\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:this._temporaryBuffer,data:[],selfClosing:!1},tokenizer.setState(self_closing_tag_state)):\">\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:this._temporaryBuffer,data:[],selfClosing:!1},tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):isAlpha(data)?(this._temporaryBuffer+=data,buffer.commit()):(tokenizer._emitToken({type:\"Characters\",data:\"</\"+this._temporaryBuffer}),buffer.unget(data),tokenizer.setState(rcdata_state)),!0}function rawtext_less_than_sign_state(buffer){var data=buffer.char();return\"/\"===data?(this._temporaryBuffer=\"\",tokenizer.setState(rawtext_end_tag_open_state)):(tokenizer._emitToken({type:\"Characters\",data:\"<\"}),buffer.unget(data),tokenizer.setState(rawtext_state)),!0}function rawtext_end_tag_open_state(buffer){var data=buffer.char();return isAlpha(data)?(this._temporaryBuffer+=data,tokenizer.setState(rawtext_end_tag_name_state)):(tokenizer._emitToken({type:\"Characters\",data:\"</\"}),buffer.unget(data),tokenizer.setState(rawtext_state)),!0}function rawtext_end_tag_name_state(buffer){var appropriate=tokenizer._currentToken&&tokenizer._currentToken.name===this._temporaryBuffer.toLowerCase(),data=buffer.char();return isWhitespace(data)&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:this._temporaryBuffer,data:[],selfClosing:!1},tokenizer.setState(before_attribute_name_state)):\"/\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:this._temporaryBuffer,data:[],selfClosing:!1},tokenizer.setState(self_closing_tag_state)):\">\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:this._temporaryBuffer,data:[],selfClosing:!1},tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):isAlpha(data)?(this._temporaryBuffer+=data,buffer.commit()):(tokenizer._emitToken({type:\"Characters\",data:\"</\"+this._temporaryBuffer}),buffer.unget(data),tokenizer.setState(rawtext_state)),!0}function script_data_less_than_sign_state(buffer){var data=buffer.char();return\"/\"===data?(this._temporaryBuffer=\"\",tokenizer.setState(script_data_end_tag_open_state)):\"!\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"<!\"}),tokenizer.setState(script_data_escape_start_state)):(tokenizer._emitToken({type:\"Characters\",data:\"<\"}),buffer.unget(data),tokenizer.setState(script_data_state)),!0}function script_data_end_tag_open_state(buffer){var data=buffer.char();return isAlpha(data)?(this._temporaryBuffer+=data,tokenizer.setState(script_data_end_tag_name_state)):(tokenizer._emitToken({type:\"Characters\",data:\"</\"}),buffer.unget(data),tokenizer.setState(script_data_state)),!0}function script_data_end_tag_name_state(buffer){var appropriate=tokenizer._currentToken&&tokenizer._currentToken.name===this._temporaryBuffer.toLowerCase(),data=buffer.char();return isWhitespace(data)&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:\"script\",data:[],selfClosing:!1},tokenizer.setState(before_attribute_name_state)):\"/\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:\"script\",data:[],selfClosing:!1},tokenizer.setState(self_closing_tag_state)):\">\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:\"script\",data:[],selfClosing:!1},tokenizer._emitCurrentToken()):isAlpha(data)?(this._temporaryBuffer+=data,buffer.commit()):(tokenizer._emitToken({type:\"Characters\",data:\"</\"+this._temporaryBuffer}),buffer.unget(data),tokenizer.setState(script_data_state)),!0}function script_data_escape_start_state(buffer){var data=buffer.char();return\"-\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"-\"}),tokenizer.setState(script_data_escape_start_dash_state)):(buffer.unget(data),tokenizer.setState(script_data_state)),!0}function script_data_escape_start_dash_state(buffer){var data=buffer.char();return\"-\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"-\"}),tokenizer.setState(script_data_escaped_dash_dash_state)):(buffer.unget(data),tokenizer.setState(script_data_state)),!0}function script_data_escaped_state(buffer){var data=buffer.char();if(data===InputStream.EOF)buffer.unget(data),tokenizer.setState(data_state);else if(\"-\"===data)tokenizer._emitToken({type:\"Characters\",data:\"-\"}),tokenizer.setState(script_data_escaped_dash_state);else if(\"<\"===data)tokenizer.setState(script_data_escaped_less_then_sign_state);else if(\"\\0\"===data)tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),buffer.commit();else{var chars=buffer.matchUntil(\"<|-|\\0\");tokenizer._emitToken({type:\"Characters\",data:data+chars})}return!0}function script_data_escaped_dash_state(buffer){var data=buffer.char();return data===InputStream.EOF?(buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"-\"}),tokenizer.setState(script_data_escaped_dash_dash_state)):\"<\"===data?tokenizer.setState(script_data_escaped_less_then_sign_state):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),tokenizer.setState(script_data_escaped_state)):(tokenizer._emitToken({type:\"Characters\",data:data}),tokenizer.setState(script_data_escaped_state)),!0}function script_data_escaped_dash_dash_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-script\"),buffer.unget(data),tokenizer.setState(data_state)):\"<\"===data?tokenizer.setState(script_data_escaped_less_then_sign_state):\">\"===data?(tokenizer._emitToken({type:\"Characters\",data:\">\"}),tokenizer.setState(script_data_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),tokenizer.setState(script_data_escaped_state)):(tokenizer._emitToken({type:\"Characters\",data:data}),tokenizer.setState(script_data_escaped_state)),!0}function script_data_escaped_less_then_sign_state(buffer){var data=buffer.char();return\"/\"===data?(this._temporaryBuffer=\"\",tokenizer.setState(script_data_escaped_end_tag_open_state)):isAlpha(data)?(tokenizer._emitToken({type:\"Characters\",data:\"<\"+data}),this._temporaryBuffer=data,tokenizer.setState(script_data_double_escape_start_state)):(tokenizer._emitToken({type:\"Characters\",data:\"<\"}),buffer.unget(data),tokenizer.setState(script_data_escaped_state)),!0}function script_data_escaped_end_tag_open_state(buffer){var data=buffer.char();return isAlpha(data)?(this._temporaryBuffer=data,tokenizer.setState(script_data_escaped_end_tag_name_state)):(tokenizer._emitToken({type:\"Characters\",data:\"</\"}),buffer.unget(data),tokenizer.setState(script_data_escaped_state)),!0}function script_data_escaped_end_tag_name_state(buffer){var appropriate=tokenizer._currentToken&&tokenizer._currentToken.name===this._temporaryBuffer.toLowerCase(),data=buffer.char();return isWhitespace(data)&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:\"script\",data:[],selfClosing:!1},tokenizer.setState(before_attribute_name_state)):\"/\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:\"script\",data:[],selfClosing:!1},tokenizer.setState(self_closing_tag_state)):\">\"===data&&appropriate?(tokenizer._currentToken={type:\"EndTag\",name:\"script\",data:[],selfClosing:!1},tokenizer.setState(data_state),tokenizer._emitCurrentToken()):isAlpha(data)?(this._temporaryBuffer+=data,buffer.commit()):(tokenizer._emitToken({type:\"Characters\",data:\"</\"+this._temporaryBuffer}),buffer.unget(data),tokenizer.setState(script_data_escaped_state)),!0}function script_data_double_escape_start_state(buffer){var data=buffer.char();return isWhitespace(data)||\"/\"===data||\">\"===data?(tokenizer._emitToken({type:\"Characters\",data:data}),\"script\"===this._temporaryBuffer.toLowerCase()?tokenizer.setState(script_data_double_escaped_state):tokenizer.setState(script_data_escaped_state)):isAlpha(data)?(tokenizer._emitToken({type:\"Characters\",data:data}),this._temporaryBuffer+=data,buffer.commit()):(buffer.unget(data),tokenizer.setState(script_data_escaped_state)),!0}function script_data_double_escaped_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-script\"),buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"-\"}),tokenizer.setState(script_data_double_escaped_dash_state)):\"<\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"<\"}),tokenizer.setState(script_data_double_escaped_less_than_sign_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),buffer.commit()):(tokenizer._emitToken({type:\"Characters\",data:data}),buffer.commit()),!0}function script_data_double_escaped_dash_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-script\"),buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"-\"}),tokenizer.setState(script_data_double_escaped_dash_dash_state)):\"<\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"<\"}),tokenizer.setState(script_data_double_escaped_less_than_sign_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),tokenizer.setState(script_data_double_escaped_state)):(tokenizer._emitToken({type:\"Characters\",data:data}),tokenizer.setState(script_data_double_escaped_state)),!0}function script_data_double_escaped_dash_dash_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-script\"),buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"-\"}),buffer.commit()):\"<\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"<\"}),tokenizer.setState(script_data_double_escaped_less_than_sign_state)):\">\"===data?(tokenizer._emitToken({type:\"Characters\",data:\">\"}),tokenizer.setState(script_data_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._emitToken({type:\"Characters\",data:\"�\"}),tokenizer.setState(script_data_double_escaped_state)):(tokenizer._emitToken({type:\"Characters\",data:data}),tokenizer.setState(script_data_double_escaped_state)),!0}function script_data_double_escaped_less_than_sign_state(buffer){var data=buffer.char();return\"/\"===data?(tokenizer._emitToken({type:\"Characters\",data:\"/\"}),this._temporaryBuffer=\"\",tokenizer.setState(script_data_double_escape_end_state)):(buffer.unget(data),tokenizer.setState(script_data_double_escaped_state)),!0}function script_data_double_escape_end_state(buffer){var data=buffer.char();return isWhitespace(data)||\"/\"===data||\">\"===data?(tokenizer._emitToken({type:\"Characters\",data:data}),\"script\"===this._temporaryBuffer.toLowerCase()?tokenizer.setState(script_data_escaped_state):tokenizer.setState(script_data_double_escaped_state)):isAlpha(data)?(tokenizer._emitToken({type:\"Characters\",data:data}),this._temporaryBuffer+=data,buffer.commit()):(buffer.unget(data),tokenizer.setState(script_data_double_escaped_state)),!0}function tag_open_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"bare-less-than-sign-at-eof\"),tokenizer._emitToken({type:\"Characters\",data:\"<\"}),buffer.unget(data),tokenizer.setState(data_state)):isAlpha(data)?(tokenizer._currentToken={type:\"StartTag\",name:data.toLowerCase(),data:[]},tokenizer.setState(tag_name_state)):\"!\"===data?tokenizer.setState(markup_declaration_open_state):\"/\"===data?tokenizer.setState(close_tag_open_state):\">\"===data?(tokenizer._parseError(\"expected-tag-name-but-got-right-bracket\"),tokenizer._emitToken({type:\"Characters\",data:\"<>\"}),tokenizer.setState(data_state)):\"?\"===data?(tokenizer._parseError(\"expected-tag-name-but-got-question-mark\"),buffer.unget(data),tokenizer.setState(bogus_comment_state)):(tokenizer._parseError(\"expected-tag-name\"),tokenizer._emitToken({type:\"Characters\",data:\"<\"}),buffer.unget(data),tokenizer.setState(data_state)),!0}function close_tag_open_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"expected-closing-tag-but-got-eof\"),tokenizer._emitToken({type:\"Characters\",data:\"</\"}),buffer.unget(data),tokenizer.setState(data_state)):isAlpha(data)?(tokenizer._currentToken={type:\"EndTag\",name:data.toLowerCase(),data:[]},tokenizer.setState(tag_name_state)):\">\"===data?(tokenizer._parseError(\"expected-closing-tag-but-got-right-bracket\"),tokenizer.setState(data_state)):(tokenizer._parseError(\"expected-closing-tag-but-got-char\",{data:data}),buffer.unget(data),tokenizer.setState(bogus_comment_state)),!0}function tag_name_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-tag-name\"),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)?tokenizer.setState(before_attribute_name_state):isAlpha(data)?tokenizer._currentToken.name+=data.toLowerCase():\">\"===data?tokenizer._emitCurrentToken():\"/\"===data?tokenizer.setState(self_closing_tag_state):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.name+=\"�\"):tokenizer._currentToken.name+=data,buffer.commit(),!0}function before_attribute_name_state(buffer){var data=buffer.char();if(data===InputStream.EOF)tokenizer._parseError(\"expected-attribute-name-but-got-eof\"),buffer.unget(data),tokenizer.setState(data_state);else{if(isWhitespace(data))return!0;isAlpha(data)?(tokenizer._currentToken.data.push({nodeName:data.toLowerCase(),nodeValue:\"\"}),tokenizer.setState(attribute_name_state)):\">\"===data?tokenizer._emitCurrentToken():\"/\"===data?tokenizer.setState(self_closing_tag_state):\"'\"===data||'\"'===data||\"=\"===data||\"<\"===data?(tokenizer._parseError(\"invalid-character-in-attribute-name\"),tokenizer._currentToken.data.push({nodeName:data,nodeValue:\"\"}),tokenizer.setState(attribute_name_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.data.push({nodeName:\"�\",nodeValue:\"\"})):(tokenizer._currentToken.data.push({nodeName:data,nodeValue:\"\"}),tokenizer.setState(attribute_name_state))}return!0}function attribute_name_state(buffer){var data=buffer.char(),leavingThisState=!0,shouldEmit=!1;if(data===InputStream.EOF?(tokenizer._parseError(\"eof-in-attribute-name\"),buffer.unget(data),tokenizer.setState(data_state),shouldEmit=!0):\"=\"===data?tokenizer.setState(before_attribute_value_state):isAlpha(data)?(tokenizer._currentAttribute().nodeName+=data.toLowerCase(),leavingThisState=!1):\">\"===data?shouldEmit=!0:isWhitespace(data)?tokenizer.setState(after_attribute_name_state):\"/\"===data?tokenizer.setState(self_closing_tag_state):\"'\"===data||'\"'===data?(tokenizer._parseError(\"invalid-character-in-attribute-name\"),tokenizer._currentAttribute().nodeName+=data,leavingThisState=!1):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentAttribute().nodeName+=\"�\"):(tokenizer._currentAttribute().nodeName+=data,leavingThisState=!1),leavingThisState){for(var attributes=tokenizer._currentToken.data,currentAttribute=attributes[attributes.length-1],i=attributes.length-2;i>=0;i--)if(currentAttribute.nodeName===attributes[i].nodeName){tokenizer._parseError(\"duplicate-attribute\",{name:currentAttribute.nodeName}),currentAttribute.nodeName=null;break}shouldEmit&&tokenizer._emitCurrentToken()}else buffer.commit();return!0}function after_attribute_name_state(buffer){var data=buffer.char();if(data===InputStream.EOF)tokenizer._parseError(\"expected-end-of-tag-but-got-eof\"),buffer.unget(data),tokenizer.setState(data_state);else{if(isWhitespace(data))return!0;\"=\"===data?tokenizer.setState(before_attribute_value_state):\">\"===data?tokenizer._emitCurrentToken():isAlpha(data)?(tokenizer._currentToken.data.push({nodeName:data,nodeValue:\"\"}),tokenizer.setState(attribute_name_state)):\"/\"===data?tokenizer.setState(self_closing_tag_state):\"'\"===data||'\"'===data||\"<\"===data?(tokenizer._parseError(\"invalid-character-after-attribute-name\"),tokenizer._currentToken.data.push({nodeName:data,nodeValue:\"\"}),tokenizer.setState(attribute_name_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.data.push({nodeName:\"�\",nodeValue:\"\"})):(tokenizer._currentToken.data.push({nodeName:data,nodeValue:\"\"}),tokenizer.setState(attribute_name_state))}return!0}function before_attribute_value_state(buffer){var data=buffer.char();if(data===InputStream.EOF)tokenizer._parseError(\"expected-attribute-value-but-got-eof\"),buffer.unget(data),tokenizer.setState(data_state);else{if(isWhitespace(data))return!0;'\"'===data?tokenizer.setState(attribute_value_double_quoted_state):\"&\"===data?(tokenizer.setState(attribute_value_unquoted_state),buffer.unget(data)):\"'\"===data?tokenizer.setState(attribute_value_single_quoted_state):\">\"===data?(tokenizer._parseError(\"expected-attribute-value-but-got-right-bracket\"),tokenizer._emitCurrentToken()):\"=\"===data||\"<\"===data||\"`\"===data?(tokenizer._parseError(\"unexpected-character-in-unquoted-attribute-value\"),tokenizer._currentAttribute().nodeValue+=data,tokenizer.setState(attribute_value_unquoted_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentAttribute().nodeValue+=\"�\"):(tokenizer._currentAttribute().nodeValue+=data,tokenizer.setState(attribute_value_unquoted_state))}return!0\n}function attribute_value_double_quoted_state(buffer){var data=buffer.char();if(data===InputStream.EOF)tokenizer._parseError(\"eof-in-attribute-value-double-quote\"),buffer.unget(data),tokenizer.setState(data_state);else if('\"'===data)tokenizer.setState(after_attribute_value_state);else if(\"&\"===data)this._additionalAllowedCharacter='\"',tokenizer.setState(character_reference_in_attribute_value_state);else if(\"\\0\"===data)tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentAttribute().nodeValue+=\"�\";else{var s=buffer.matchUntil('[\\0\"&]');data+=s,tokenizer._currentAttribute().nodeValue+=data}return!0}function attribute_value_single_quoted_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-attribute-value-single-quote\"),buffer.unget(data),tokenizer.setState(data_state)):\"'\"===data?tokenizer.setState(after_attribute_value_state):\"&\"===data?(this._additionalAllowedCharacter=\"'\",tokenizer.setState(character_reference_in_attribute_value_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentAttribute().nodeValue+=\"�\"):tokenizer._currentAttribute().nodeValue+=data+buffer.matchUntil(\"\\0|['&]\"),!0}function attribute_value_unquoted_state(buffer){var data=buffer.char();if(data===InputStream.EOF)tokenizer._parseError(\"eof-after-attribute-value\"),buffer.unget(data),tokenizer.setState(data_state);else if(isWhitespace(data))tokenizer.setState(before_attribute_name_state);else if(\"&\"===data)this._additionalAllowedCharacter=\">\",tokenizer.setState(character_reference_in_attribute_value_state);else if(\">\"===data)tokenizer._emitCurrentToken();else if('\"'===data||\"'\"===data||\"=\"===data||\"`\"===data||\"<\"===data)tokenizer._parseError(\"unexpected-character-in-unquoted-attribute-value\"),tokenizer._currentAttribute().nodeValue+=data,buffer.commit();else if(\"\\0\"===data)tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentAttribute().nodeValue+=\"�\";else{var o=buffer.matchUntil(\"\\0|[\t\\n\u000b\\f \\r&<>\\\"'=`]\");o===InputStream.EOF&&(tokenizer._parseError(\"eof-in-attribute-value-no-quotes\"),tokenizer._emitCurrentToken()),buffer.commit(),tokenizer._currentAttribute().nodeValue+=data+o}return!0}function character_reference_in_attribute_value_state(buffer){var character=EntityParser.consumeEntity(buffer,tokenizer,this._additionalAllowedCharacter);return this._currentAttribute().nodeValue+=character||\"&\",'\"'===this._additionalAllowedCharacter?tokenizer.setState(attribute_value_double_quoted_state):\"'\"===this._additionalAllowedCharacter?tokenizer.setState(attribute_value_single_quoted_state):\">\"===this._additionalAllowedCharacter&&tokenizer.setState(attribute_value_unquoted_state),!0}function after_attribute_value_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-after-attribute-value\"),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)?tokenizer.setState(before_attribute_name_state):\">\"===data?(tokenizer.setState(data_state),tokenizer._emitCurrentToken()):\"/\"===data?tokenizer.setState(self_closing_tag_state):(tokenizer._parseError(\"unexpected-character-after-attribute-value\"),buffer.unget(data),tokenizer.setState(before_attribute_name_state)),!0}function self_closing_tag_state(buffer){var c=buffer.char();return c===InputStream.EOF?(tokenizer._parseError(\"unexpected-eof-after-solidus-in-tag\"),buffer.unget(c),tokenizer.setState(data_state)):\">\"===c?(tokenizer._currentToken.selfClosing=!0,tokenizer.setState(data_state),tokenizer._emitCurrentToken()):(tokenizer._parseError(\"unexpected-character-after-solidus-in-tag\"),buffer.unget(c),tokenizer.setState(before_attribute_name_state)),!0}function bogus_comment_state(buffer){var data=buffer.matchUntil(\">\");return data=data.replace(/\\u0000/g,\"�\"),buffer.char(),tokenizer._emitToken({type:\"Comment\",data:data}),tokenizer.setState(data_state),!0}function markup_declaration_open_state(buffer){var chars=buffer.shift(2);if(\"--\"===chars)tokenizer._currentToken={type:\"Comment\",data:\"\"},tokenizer.setState(comment_start_state);else{var newchars=buffer.shift(5);if(newchars===InputStream.EOF||chars===InputStream.EOF)return tokenizer._parseError(\"expected-dashes-or-doctype\"),tokenizer.setState(bogus_comment_state),buffer.unget(chars),!0;chars+=newchars,\"DOCTYPE\"===chars.toUpperCase()?(tokenizer._currentToken={type:\"Doctype\",name:\"\",publicId:null,systemId:null,forceQuirks:!1},tokenizer.setState(doctype_state)):tokenizer._tokenHandler.isCdataSectionAllowed()&&\"[CDATA[\"===chars?tokenizer.setState(cdata_section_state):(tokenizer._parseError(\"expected-dashes-or-doctype\"),buffer.unget(chars),tokenizer.setState(bogus_comment_state))}return!0}function cdata_section_state(buffer){var data=buffer.matchUntil(\"]]>\");return buffer.shift(3),data&&tokenizer._emitToken({type:\"Characters\",data:data}),tokenizer.setState(data_state),!0}function comment_start_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-comment\"),tokenizer._emitToken(tokenizer._currentToken),buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?tokenizer.setState(comment_start_dash_state):\">\"===data?(tokenizer._parseError(\"incorrect-comment\"),tokenizer._emitToken(tokenizer._currentToken),tokenizer.setState(data_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.data+=\"�\"):(tokenizer._currentToken.data+=data,tokenizer.setState(comment_state)),!0}function comment_start_dash_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-comment\"),tokenizer._emitToken(tokenizer._currentToken),buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?tokenizer.setState(comment_end_state):\">\"===data?(tokenizer._parseError(\"incorrect-comment\"),tokenizer._emitToken(tokenizer._currentToken),tokenizer.setState(data_state)):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.data+=\"�\"):(tokenizer._currentToken.data+=\"-\"+data,tokenizer.setState(comment_state)),!0}function comment_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-comment\"),tokenizer._emitToken(tokenizer._currentToken),buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?tokenizer.setState(comment_end_dash_state):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.data+=\"�\"):(tokenizer._currentToken.data+=data,buffer.commit()),!0}function comment_end_dash_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-comment-end-dash\"),tokenizer._emitToken(tokenizer._currentToken),buffer.unget(data),tokenizer.setState(data_state)):\"-\"===data?tokenizer.setState(comment_end_state):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.data+=\"-�\",tokenizer.setState(comment_state)):(tokenizer._currentToken.data+=\"-\"+data+buffer.matchUntil(\"\\0|-\"),buffer.char()),!0}function comment_end_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-comment-double-dash\"),tokenizer._emitToken(tokenizer._currentToken),buffer.unget(data),tokenizer.setState(data_state)):\">\"===data?(tokenizer._emitToken(tokenizer._currentToken),tokenizer.setState(data_state)):\"!\"===data?(tokenizer._parseError(\"unexpected-bang-after-double-dash-in-comment\"),tokenizer.setState(comment_end_bang_state)):\"-\"===data?(tokenizer._parseError(\"unexpected-dash-after-double-dash-in-comment\"),tokenizer._currentToken.data+=data):\"\\0\"===data?(tokenizer._parseError(\"invalid-codepoint\"),tokenizer._currentToken.data+=\"--�\",tokenizer.setState(comment_state)):(tokenizer._parseError(\"unexpected-char-in-comment\"),tokenizer._currentToken.data+=\"--\"+data,tokenizer.setState(comment_state)),!0}function comment_end_bang_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-comment-end-bang-state\"),tokenizer._emitToken(tokenizer._currentToken),buffer.unget(data),tokenizer.setState(data_state)):\">\"===data?(tokenizer._emitToken(tokenizer._currentToken),tokenizer.setState(data_state)):\"-\"===data?(tokenizer._currentToken.data+=\"--!\",tokenizer.setState(comment_end_dash_state)):(tokenizer._currentToken.data+=\"--!\"+data,tokenizer.setState(comment_state)),!0}function doctype_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"expected-doctype-name-but-got-eof\"),tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):isWhitespace(data)?tokenizer.setState(before_doctype_name_state):(tokenizer._parseError(\"need-space-after-doctype\"),buffer.unget(data),tokenizer.setState(before_doctype_name_state)),!0}function before_doctype_name_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"expected-doctype-name-but-got-eof\"),tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):isWhitespace(data)||(\">\"===data?(tokenizer._parseError(\"expected-doctype-name-but-got-right-bracket\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(data_state),tokenizer._emitCurrentToken()):(isAlpha(data)&&(data=data.toLowerCase()),tokenizer._currentToken.name=data,tokenizer.setState(doctype_name_state))),!0}function doctype_name_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer._parseError(\"eof-in-doctype-name\"),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):isWhitespace(data)?tokenizer.setState(after_doctype_name_state):\">\"===data?(tokenizer.setState(data_state),tokenizer._emitCurrentToken()):(isAlpha(data)&&(data=data.toLowerCase()),tokenizer._currentToken.name+=data,buffer.commit()),!0}function after_doctype_name_state(buffer){var data=buffer.char();if(data===InputStream.EOF)tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer._parseError(\"eof-in-doctype\"),tokenizer.setState(data_state),tokenizer._emitCurrentToken();else if(isWhitespace(data));else if(\">\"===data)tokenizer.setState(data_state),tokenizer._emitCurrentToken();else{if([\"p\",\"P\"].indexOf(data)>-1){var expected=[[\"u\",\"U\"],[\"b\",\"B\"],[\"l\",\"L\"],[\"i\",\"I\"],[\"c\",\"C\"]],matched=expected.every(function(expected){return data=buffer.char(),expected.indexOf(data)>-1});if(matched)return tokenizer.setState(after_doctype_public_keyword_state),!0}else if([\"s\",\"S\"].indexOf(data)>-1){var expected=[[\"y\",\"Y\"],[\"s\",\"S\"],[\"t\",\"T\"],[\"e\",\"E\"],[\"m\",\"M\"]],matched=expected.every(function(expected){return data=buffer.char(),expected.indexOf(data)>-1});if(matched)return tokenizer.setState(after_doctype_system_keyword_state),!0}buffer.unget(data),tokenizer._currentToken.forceQuirks=!0,data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),buffer.unget(data),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):(tokenizer._parseError(\"expected-space-or-right-bracket-in-doctype\",{data:data}),tokenizer.setState(bogus_doctype_state))}return!0}function after_doctype_public_keyword_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):isWhitespace(data)?tokenizer.setState(before_doctype_public_identifier_state):\"'\"===data||'\"'===data?(tokenizer._parseError(\"unexpected-char-in-doctype\"),buffer.unget(data),tokenizer.setState(before_doctype_public_identifier_state)):(buffer.unget(data),tokenizer.setState(before_doctype_public_identifier_state)),!0}function before_doctype_public_identifier_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):isWhitespace(data)||('\"'===data?(tokenizer._currentToken.publicId=\"\",tokenizer.setState(doctype_public_identifier_double_quoted_state)):\"'\"===data?(tokenizer._currentToken.publicId=\"\",tokenizer.setState(doctype_public_identifier_single_quoted_state)):\">\"===data?(tokenizer._parseError(\"unexpected-end-of-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(data_state),tokenizer._emitCurrentToken()):(tokenizer._parseError(\"unexpected-char-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(bogus_doctype_state))),!0}function doctype_public_identifier_double_quoted_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):'\"'===data?tokenizer.setState(after_doctype_public_identifier_state):\">\"===data?(tokenizer._parseError(\"unexpected-end-of-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(data_state),tokenizer._emitCurrentToken()):tokenizer._currentToken.publicId+=data,!0}function doctype_public_identifier_single_quoted_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,buffer.unget(data),tokenizer.setState(data_state),tokenizer._emitCurrentToken()):\"'\"===data?tokenizer.setState(after_doctype_public_identifier_state):\">\"===data?(tokenizer._parseError(\"unexpected-end-of-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(data_state),tokenizer._emitCurrentToken()):tokenizer._currentToken.publicId+=data,!0}function after_doctype_public_identifier_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)?tokenizer.setState(between_doctype_public_and_system_identifiers_state):\">\"===data?(tokenizer.setState(data_state),tokenizer._emitCurrentToken()):'\"'===data?(tokenizer._parseError(\"unexpected-char-in-doctype\"),tokenizer._currentToken.systemId=\"\",tokenizer.setState(doctype_system_identifier_double_quoted_state)):\"'\"===data?(tokenizer._parseError(\"unexpected-char-in-doctype\"),tokenizer._currentToken.systemId=\"\",tokenizer.setState(doctype_system_identifier_single_quoted_state)):(tokenizer._parseError(\"unexpected-char-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(bogus_doctype_state)),!0}function between_doctype_public_and_system_identifiers_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)||(\">\"===data?(tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):'\"'===data?(tokenizer._currentToken.systemId=\"\",tokenizer.setState(doctype_system_identifier_double_quoted_state)):\"'\"===data?(tokenizer._currentToken.systemId=\"\",tokenizer.setState(doctype_system_identifier_single_quoted_state)):(tokenizer._parseError(\"unexpected-char-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(bogus_doctype_state))),!0}function after_doctype_system_keyword_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)?tokenizer.setState(before_doctype_system_identifier_state):\"'\"===data||'\"'===data?(tokenizer._parseError(\"unexpected-char-in-doctype\"),buffer.unget(data),tokenizer.setState(before_doctype_system_identifier_state)):(buffer.unget(data),tokenizer.setState(before_doctype_system_identifier_state)),!0}function before_doctype_system_identifier_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)||('\"'===data?(tokenizer._currentToken.systemId=\"\",tokenizer.setState(doctype_system_identifier_double_quoted_state)):\"'\"===data?(tokenizer._currentToken.systemId=\"\",tokenizer.setState(doctype_system_identifier_single_quoted_state)):\">\"===data?(tokenizer._parseError(\"unexpected-end-of-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):(tokenizer._parseError(\"unexpected-char-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer.setState(bogus_doctype_state))),!0}function doctype_system_identifier_double_quoted_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),buffer.unget(data),tokenizer.setState(data_state)):'\"'===data?tokenizer.setState(after_doctype_system_identifier_state):\">\"===data?(tokenizer._parseError(\"unexpected-end-of-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):tokenizer._currentToken.systemId+=data,!0}function doctype_system_identifier_single_quoted_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),buffer.unget(data),tokenizer.setState(data_state)):\"'\"===data?tokenizer.setState(after_doctype_system_identifier_state):\">\"===data?(tokenizer._parseError(\"unexpected-end-of-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):tokenizer._currentToken.systemId+=data,!0}function after_doctype_system_identifier_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(\"eof-in-doctype\"),tokenizer._currentToken.forceQuirks=!0,tokenizer._emitCurrentToken(),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)||(\">\"===data?(tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):(tokenizer._parseError(\"unexpected-char-in-doctype\"),tokenizer.setState(bogus_doctype_state))),!0}function bogus_doctype_state(buffer){var data=buffer.char();return data===InputStream.EOF?(buffer.unget(data),tokenizer._emitCurrentToken(),tokenizer.setState(data_state)):\">\"===data&&(tokenizer._emitCurrentToken(),tokenizer.setState(data_state)),!0}Tokenizer.DATA=data_state,Tokenizer.RCDATA=rcdata_state,Tokenizer.RAWTEXT=rawtext_state,Tokenizer.SCRIPT_DATA=script_data_state,Tokenizer.PLAINTEXT=plaintext_state,this._state=Tokenizer.DATA,this._inputStream.append(source),this._tokenHandler.startTokenization(this),this._inputStream.eof=!0;for(var tokenizer=this;this._state.call(this,this._inputStream););},Object.defineProperty(Tokenizer.prototype,\"lineNumber\",{get:function(){return this._inputStream.location().line}}),Object.defineProperty(Tokenizer.prototype,\"columnNumber\",{get:function(){return this._inputStream.location().column}}),exports.Tokenizer=Tokenizer},{\"./EntityParser\":2,\"./InputStream\":3}],6:[function(_dereq_,module,exports){function isWhitespace(ch){return\" \"===ch||\"\\n\"===ch||\"\t\"===ch||\"\\r\"===ch||\"\\f\"===ch}function isWhitespaceOrReplacementCharacter(ch){return isWhitespace(ch)||\"�\"===ch}function isAllWhitespace(characters){for(var i=0;characters.length>i;i++){var ch=characters[i];if(!isWhitespace(ch))return!1}return!0}function isAllWhitespaceOrReplacementCharacters(characters){for(var i=0;characters.length>i;i++){var ch=characters[i];if(!isWhitespaceOrReplacementCharacter(ch))return!1}return!0}function getAttribute(node,name){for(var i=0;node.attributes.length>i;i++){var attribute=node.attributes[i];if(attribute.nodeName===name)return attribute}return null}function CharacterBuffer(characters){this.characters=characters,this.current=0,this.end=this.characters.length}function TreeBuilder(){this.tokenizer=null,this.errorHandler=null,this.scriptingEnabled=!1,this.document=null,this.head=null,this.form=null,this.openElements=new ElementStack,this.activeFormattingElements=[],this.insertionMode=null,this.insertionModeName=\"\",this.originalInsertionMode=\"\",this.inQuirksMode=!1,this.compatMode=\"no quirks\",this.framesetOk=!0,this.redirectAttachToFosterParent=!1,this.selfClosingFlagAcknowledged=!1,this.context=\"\",this.pendingTableCharacters=[],this.shouldSkipLeadingNewline=!1;var tree=this,modes=this.insertionModes={};modes.base={end_tag_handlers:{\"-default\":\"endTagOther\"},start_tag_handlers:{\"-default\":\"startTagOther\"},processEOF:function(){tree.generateImpliedEndTags(),tree.openElements.length>2?tree.parseError(\"expected-closing-tag-but-got-eof\"):2==tree.openElements.length&&\"body\"!=tree.openElements.item(1).localName?tree.parseError(\"expected-closing-tag-but-got-eof\"):tree.context&&tree.openElements.length>1},processComment:function(data){tree.insertComment(data,tree.currentStackItem().node)},processDoctype:function(){tree.parseError(\"unexpected-doctype\")},processStartTag:function(name,attributes,selfClosing){if(this[this.start_tag_handlers[name]])this[this.start_tag_handlers[name]](name,attributes,selfClosing);else{if(!this[this.start_tag_handlers[\"-default\"]])throw Error(\"No handler found for \"+name);this[this.start_tag_handlers[\"-default\"]](name,attributes,selfClosing)}},processEndTag:function(name){if(this[this.end_tag_handlers[name]])this[this.end_tag_handlers[name]](name);else{if(!this[this.end_tag_handlers[\"-default\"]])throw Error(\"No handler found for \"+name);this[this.end_tag_handlers[\"-default\"]](name)}},startTagHtml:function(name,attributes){modes.inBody.startTagHtml(name,attributes)}},modes.initial=Object.create(modes.base),modes.initial.processEOF=function(){tree.parseError(\"expected-doctype-but-got-eof\"),this.anythingElse(),tree.insertionMode.processEOF()},modes.initial.processComment=function(data){tree.insertComment(data,tree.document)},modes.initial.processDoctype=function(name,publicId,systemId,forceQuirks){function publicIdStartsWith(string){return 0===publicId.toLowerCase().indexOf(string)}tree.insertDoctype(name||\"\",publicId||\"\",systemId||\"\"),forceQuirks||\"html\"!=name||null!=publicId&&([\"+//silmaril//dtd html pro v0r11 19970101//\",\"-//advasoft ltd//dtd html 3.0 aswedit + extensions//\",\"-//as//dtd html 3.0 aswedit + extensions//\",\"-//ietf//dtd html 2.0 level 1//\",\"-//ietf//dtd html 2.0 level 2//\",\"-//ietf//dtd html 2.0 strict level 1//\",\"-//ietf//dtd html 2.0 strict level 2//\",\"-//ietf//dtd html 2.0 strict//\",\"-//ietf//dtd html 2.0//\",\"-//ietf//dtd html 2.1e//\",\"-//ietf//dtd html 3.0//\",\"-//ietf//dtd html 3.0//\",\"-//ietf//dtd html 3.2 final//\",\"-//ietf//dtd html 3.2//\",\"-//ietf//dtd html 3//\",\"-//ietf//dtd html level 0//\",\"-//ietf//dtd html level 0//\",\"-//ietf//dtd html level 1//\",\"-//ietf//dtd html level 1//\",\"-//ietf//dtd html level 2//\",\"-//ietf//dtd html level 2//\",\"-//ietf//dtd html level 3//\",\"-//ietf//dtd html level 3//\",\"-//ietf//dtd html strict level 0//\",\"-//ietf//dtd html strict level 0//\",\"-//ietf//dtd html strict level 1//\",\"-//ietf//dtd html strict level 1//\",\"-//ietf//dtd html strict level 2//\",\"-//ietf//dtd html strict level 2//\",\"-//ietf//dtd html strict level 3//\",\"-//ietf//dtd html strict level 3//\",\"-//ietf//dtd html strict//\",\"-//ietf//dtd html strict//\",\"-//ietf//dtd html strict//\",\"-//ietf//dtd html//\",\"-//ietf//dtd html//\",\"-//ietf//dtd html//\",\"-//metrius//dtd metrius presentational//\",\"-//microsoft//dtd internet explorer 2.0 html strict//\",\"-//microsoft//dtd internet explorer 2.0 html//\",\"-//microsoft//dtd internet explorer 2.0 tables//\",\"-//microsoft//dtd internet explorer 3.0 html strict//\",\"-//microsoft//dtd internet explorer 3.0 html//\",\"-//microsoft//dtd internet explorer 3.0 tables//\",\"-//netscape comm. corp.//dtd html//\",\"-//netscape comm. corp.//dtd strict html//\",\"-//o'reilly and associates//dtd html 2.0//\",\"-//o'reilly and associates//dtd html extended 1.0//\",\"-//spyglass//dtd html 2.0 extended//\",\"-//sq//dtd html 2.0 hotmetal + extensions//\",\"-//sun microsystems corp.//dtd hotjava html//\",\"-//sun microsystems corp.//dtd hotjava strict html//\",\"-//w3c//dtd html 3 1995-03-24//\",\"-//w3c//dtd html 3.2 draft//\",\"-//w3c//dtd html 3.2 final//\",\"-//w3c//dtd html 3.2//\",\"-//w3c//dtd html 3.2s draft//\",\"-//w3c//dtd html 4.0 frameset//\",\"-//w3c//dtd html 4.0 transitional//\",\"-//w3c//dtd html experimental 19960712//\",\"-//w3c//dtd html experimental 970421//\",\"-//w3c//dtd w3 html//\",\"-//w3o//dtd w3 html 3.0//\",\"-//webtechs//dtd mozilla html 2.0//\",\"-//webtechs//dtd mozilla html//\",\"html\"].some(publicIdStartsWith)||[\"-//w3o//dtd w3 html strict 3.0//en//\",\"-/w3c/dtd html 4.0 transitional/en\",\"html\"].indexOf(publicId.toLowerCase())>-1||null==systemId&&[\"-//w3c//dtd html 4.01 transitional//\",\"-//w3c//dtd html 4.01 frameset//\"].some(publicIdStartsWith))||null!=systemId&&\"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\"==systemId.toLowerCase()?(tree.compatMode=\"quirks\",tree.parseError(\"quirky-doctype\")):null!=publicId&&([\"-//w3c//dtd xhtml 1.0 transitional//\",\"-//w3c//dtd xhtml 1.0 frameset//\"].some(publicIdStartsWith)||null!=systemId&&[\"-//w3c//dtd html 4.01 transitional//\",\"-//w3c//dtd html 4.01 frameset//\"].indexOf(publicId.toLowerCase())>-1)?(tree.compatMode=\"limited quirks\",tree.parseError(\"almost-standards-doctype\")):\"-//W3C//DTD HTML 4.0//EN\"==publicId&&(null==systemId||\"http://www.w3.org/TR/REC-html40/strict.dtd\"==systemId)||\"-//W3C//DTD HTML 4.01//EN\"==publicId&&(null==systemId||\"http://www.w3.org/TR/html4/strict.dtd\"==systemId)||\"-//W3C//DTD XHTML 1.0 Strict//EN\"==publicId&&\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"==systemId||\"-//W3C//DTD XHTML 1.1//EN\"==publicId&&\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"==systemId||(null!=systemId&&\"about:legacy-compat\"!=systemId||null!=publicId)&&tree.parseError(\"unknown-doctype\"),tree.setInsertionMode(\"beforeHTML\")},modes.initial.processCharacters=function(buffer){buffer.skipLeadingWhitespace(),buffer.length&&(tree.parseError(\"expected-doctype-but-got-chars\"),this.anythingElse(),tree.insertionMode.processCharacters(buffer))},modes.initial.processStartTag=function(name,attributes,selfClosing){tree.parseError(\"expected-doctype-but-got-start-tag\",{name:name}),this.anythingElse(),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.initial.processEndTag=function(name){tree.parseError(\"expected-doctype-but-got-end-tag\",{name:name}),this.anythingElse(),tree.insertionMode.processEndTag(name)},modes.initial.anythingElse=function(){tree.compatMode=\"quirks\",tree.setInsertionMode(\"beforeHTML\")},modes.beforeHTML=Object.create(modes.base),modes.beforeHTML.start_tag_handlers={html:\"startTagHtml\",\"-default\":\"startTagOther\"},modes.beforeHTML.processEOF=function(){this.anythingElse(),tree.insertionMode.processEOF()},modes.beforeHTML.processComment=function(data){tree.insertComment(data,tree.document)},modes.beforeHTML.processCharacters=function(buffer){buffer.skipLeadingWhitespace(),buffer.length&&(this.anythingElse(),tree.insertionMode.processCharacters(buffer))},modes.beforeHTML.startTagHtml=function(name,attributes){tree.insertHtmlElement(attributes),tree.setInsertionMode(\"beforeHead\")},modes.beforeHTML.startTagOther=function(name,attributes,selfClosing){this.anythingElse(),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.beforeHTML.processEndTag=function(name){this.anythingElse(),tree.insertionMode.processEndTag(name)},modes.beforeHTML.anythingElse=function(){tree.insertHtmlElement(),tree.setInsertionMode(\"beforeHead\")},modes.afterAfterBody=Object.create(modes.base),modes.afterAfterBody.start_tag_handlers={html:\"startTagHtml\",\"-default\":\"startTagOther\"},modes.afterAfterBody.processComment=function(data){tree.insertComment(data,tree.document)},modes.afterAfterBody.processDoctype=function(data){modes.inBody.processDoctype(data)},modes.afterAfterBody.startTagHtml=function(data,attributes){modes.inBody.startTagHtml(data,attributes)},modes.afterAfterBody.startTagOther=function(name,attributes,selfClosing){tree.parseError(\"unexpected-start-tag\",{name:name}),tree.setInsertionMode(\"inBody\"),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.afterAfterBody.endTagOther=function(name){tree.parseError(\"unexpected-end-tag\",{name:name}),tree.setInsertionMode(\"inBody\"),tree.insertionMode.processEndTag(name)},modes.afterAfterBody.processCharacters=function(data){return isAllWhitespace(data.characters)?(modes.inBody.processCharacters(data),void 0):(tree.parseError(\"unexpected-char-after-body\"),tree.setInsertionMode(\"inBody\"),tree.insertionMode.processCharacters(data))},modes.afterBody=Object.create(modes.base),modes.afterBody.end_tag_handlers={html:\"endTagHtml\",\"-default\":\"endTagOther\"},modes.afterBody.processComment=function(data){tree.insertComment(data,tree.openElements.rootNode)},modes.afterBody.processCharacters=function(data){return isAllWhitespace(data.characters)?(modes.inBody.processCharacters(data),void 0):(tree.parseError(\"unexpected-char-after-body\"),tree.setInsertionMode(\"inBody\"),tree.insertionMode.processCharacters(data))},modes.afterBody.processStartTag=function(name,attributes,selfClosing){tree.parseError(\"unexpected-start-tag-after-body\",{name:name}),tree.setInsertionMode(\"inBody\"),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.afterBody.endTagHtml=function(){tree.context?tree.parseError(\"end-html-in-innerhtml\"):tree.setInsertionMode(\"afterAfterBody\")},modes.afterBody.endTagOther=function(name){tree.parseError(\"unexpected-end-tag-after-body\",{name:name}),tree.setInsertionMode(\"inBody\"),tree.insertionMode.processEndTag(name)},modes.afterFrameset=Object.create(modes.base),modes.afterFrameset.start_tag_handlers={html:\"startTagHtml\",noframes:\"startTagNoframes\",\"-default\":\"startTagOther\"},modes.afterFrameset.end_tag_handlers={html:\"endTagHtml\",\"-default\":\"endTagOther\"},modes.afterFrameset.processCharacters=function(buffer){for(var characters=buffer.takeRemaining(),whitespace=\"\",i=0;characters.length>i;i++){var ch=characters[i];isWhitespace(ch)&&(whitespace+=ch)}whitespace&&tree.insertText(whitespace),whitespace.length<characters.length&&tree.parseError(\"expected-eof-but-got-char\")},modes.afterFrameset.startTagNoframes=function(name,attributes){modes.inHead.processStartTag(name,attributes)},modes.afterFrameset.startTagOther=function(name){tree.parseError(\"unexpected-start-tag-after-frameset\",{name:name})},modes.afterFrameset.endTagHtml=function(){tree.setInsertionMode(\"afterAfterFrameset\")},modes.afterFrameset.endTagOther=function(name){tree.parseError(\"unexpected-end-tag-after-frameset\",{name:name})},modes.beforeHead=Object.create(modes.base),modes.beforeHead.start_tag_handlers={html:\"startTagHtml\",head:\"startTagHead\",\"-default\":\"startTagOther\"},modes.beforeHead.end_tag_handlers={html:\"endTagImplyHead\",head:\"endTagImplyHead\",body:\"endTagImplyHead\",br:\"endTagImplyHead\",\"-default\":\"endTagOther\"},modes.beforeHead.processEOF=function(){this.startTagHead(\"head\",[]),tree.insertionMode.processEOF()},modes.beforeHead.processCharacters=function(buffer){buffer.skipLeadingWhitespace(),buffer.length&&(this.startTagHead(\"head\",[]),tree.insertionMode.processCharacters(buffer))},modes.beforeHead.startTagHead=function(name,attributes){tree.insertHeadElement(attributes),tree.setInsertionMode(\"inHead\")},modes.beforeHead.startTagOther=function(name,attributes,selfClosing){this.startTagHead(\"head\",[]),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.beforeHead.endTagImplyHead=function(name){this.startTagHead(\"head\",[]),tree.insertionMode.processEndTag(name)},modes.beforeHead.endTagOther=function(name){tree.parseError(\"end-tag-after-implied-root\",{name:name})},modes.inHead=Object.create(modes.base),modes.inHead.start_tag_handlers={html:\"startTagHtml\",head:\"startTagHead\",title:\"startTagTitle\",script:\"startTagScript\",style:\"startTagNoFramesStyle\",noscript:\"startTagNoScript\",noframes:\"startTagNoFramesStyle\",base:\"startTagBaseBasefontBgsoundLink\",basefont:\"startTagBaseBasefontBgsoundLink\",bgsound:\"startTagBaseBasefontBgsoundLink\",link:\"startTagBaseBasefontBgsoundLink\",meta:\"startTagMeta\",\"-default\":\"startTagOther\"},modes.inHead.end_tag_handlers={head:\"endTagHead\",html:\"endTagHtmlBodyBr\",body:\"endTagHtmlBodyBr\",br:\"endTagHtmlBodyBr\",\"-default\":\"endTagOther\"},modes.inHead.processEOF=function(){var name=tree.currentStackItem().localName;\n-1!=[\"title\",\"style\",\"script\"].indexOf(name)&&(tree.parseError(\"expected-named-closing-tag-but-got-eof\",{name:name}),tree.popElement()),this.anythingElse(),tree.insertionMode.processEOF()},modes.inHead.processCharacters=function(buffer){var leadingWhitespace=buffer.takeLeadingWhitespace();leadingWhitespace&&tree.insertText(leadingWhitespace),buffer.length&&(this.anythingElse(),tree.insertionMode.processCharacters(buffer))},modes.inHead.startTagHtml=function(name,attributes){modes.inBody.processStartTag(name,attributes)},modes.inHead.startTagHead=function(){tree.parseError(\"two-heads-are-not-better-than-one\")},modes.inHead.startTagTitle=function(name,attributes){tree.processGenericRCDATAStartTag(name,attributes)},modes.inHead.startTagNoScript=function(name,attributes){return tree.scriptingEnabled?tree.processGenericRawTextStartTag(name,attributes):(tree.insertElement(name,attributes),tree.setInsertionMode(\"inHeadNoscript\"),void 0)},modes.inHead.startTagNoFramesStyle=function(name,attributes){tree.processGenericRawTextStartTag(name,attributes)},modes.inHead.startTagScript=function(name,attributes){tree.insertElement(name,attributes),tree.tokenizer.setState(Tokenizer.SCRIPT_DATA),tree.originalInsertionMode=tree.insertionModeName,tree.setInsertionMode(\"text\")},modes.inHead.startTagBaseBasefontBgsoundLink=function(name,attributes){tree.insertSelfClosingElement(name,attributes)},modes.inHead.startTagMeta=function(name,attributes){tree.insertSelfClosingElement(name,attributes)},modes.inHead.startTagOther=function(name,attributes,selfClosing){this.anythingElse(),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.inHead.endTagHead=function(){\"head\"==tree.openElements.item(tree.openElements.length-1).localName?tree.openElements.pop():tree.parseError(\"unexpected-end-tag\",{name:\"head\"}),tree.setInsertionMode(\"afterHead\")},modes.inHead.endTagHtmlBodyBr=function(name){this.anythingElse(),tree.insertionMode.processEndTag(name)},modes.inHead.endTagOther=function(name){tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inHead.anythingElse=function(){this.endTagHead(\"head\")},modes.afterHead=Object.create(modes.base),modes.afterHead.start_tag_handlers={html:\"startTagHtml\",head:\"startTagHead\",body:\"startTagBody\",frameset:\"startTagFrameset\",base:\"startTagFromHead\",link:\"startTagFromHead\",meta:\"startTagFromHead\",script:\"startTagFromHead\",style:\"startTagFromHead\",title:\"startTagFromHead\",\"-default\":\"startTagOther\"},modes.afterHead.end_tag_handlers={body:\"endTagBodyHtmlBr\",html:\"endTagBodyHtmlBr\",br:\"endTagBodyHtmlBr\",\"-default\":\"endTagOther\"},modes.afterHead.processEOF=function(){this.anythingElse(),tree.insertionMode.processEOF()},modes.afterHead.processCharacters=function(buffer){var leadingWhitespace=buffer.takeLeadingWhitespace();leadingWhitespace&&tree.insertText(leadingWhitespace),buffer.length&&(this.anythingElse(),tree.insertionMode.processCharacters(buffer))},modes.afterHead.startTagHtml=function(name,attributes){modes.inBody.processStartTag(name,attributes)},modes.afterHead.startTagBody=function(name,attributes){tree.framesetOk=!1,tree.insertBodyElement(attributes),tree.setInsertionMode(\"inBody\")},modes.afterHead.startTagFrameset=function(name,attributes){tree.insertElement(name,attributes),tree.setInsertionMode(\"inFrameset\")},modes.afterHead.startTagFromHead=function(name,attributes,selfClosing){tree.parseError(\"unexpected-start-tag-out-of-my-head\",{name:name}),tree.openElements.push(tree.head),modes.inHead.processStartTag(name,attributes,selfClosing),tree.openElements.remove(tree.head)},modes.afterHead.startTagHead=function(name){tree.parseError(\"unexpected-start-tag\",{name:name})},modes.afterHead.startTagOther=function(name,attributes,selfClosing){this.anythingElse(),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.afterHead.endTagBodyHtmlBr=function(name){this.anythingElse(),tree.insertionMode.processEndTag(name)},modes.afterHead.endTagOther=function(name){tree.parseError(\"unexpected-end-tag\",{name:name})},modes.afterHead.anythingElse=function(){tree.insertBodyElement([]),tree.setInsertionMode(\"inBody\"),tree.framesetOk=!0},modes.inBody=Object.create(modes.base),modes.inBody.start_tag_handlers={html:\"startTagHtml\",head:\"startTagMisplaced\",base:\"startTagProcessInHead\",basefont:\"startTagProcessInHead\",bgsound:\"startTagProcessInHead\",link:\"startTagProcessInHead\",meta:\"startTagProcessInHead\",noframes:\"startTagProcessInHead\",script:\"startTagProcessInHead\",style:\"startTagProcessInHead\",title:\"startTagProcessInHead\",body:\"startTagBody\",form:\"startTagForm\",plaintext:\"startTagPlaintext\",a:\"startTagA\",button:\"startTagButton\",xmp:\"startTagXmp\",table:\"startTagTable\",hr:\"startTagHr\",image:\"startTagImage\",input:\"startTagInput\",textarea:\"startTagTextarea\",select:\"startTagSelect\",isindex:\"startTagIsindex\",applet:\"startTagAppletMarqueeObject\",marquee:\"startTagAppletMarqueeObject\",object:\"startTagAppletMarqueeObject\",li:\"startTagListItem\",dd:\"startTagListItem\",dt:\"startTagListItem\",address:\"startTagCloseP\",article:\"startTagCloseP\",aside:\"startTagCloseP\",blockquote:\"startTagCloseP\",center:\"startTagCloseP\",details:\"startTagCloseP\",dir:\"startTagCloseP\",div:\"startTagCloseP\",dl:\"startTagCloseP\",fieldset:\"startTagCloseP\",figcaption:\"startTagCloseP\",figure:\"startTagCloseP\",footer:\"startTagCloseP\",header:\"startTagCloseP\",hgroup:\"startTagCloseP\",main:\"startTagCloseP\",menu:\"startTagCloseP\",nav:\"startTagCloseP\",ol:\"startTagCloseP\",p:\"startTagCloseP\",section:\"startTagCloseP\",summary:\"startTagCloseP\",ul:\"startTagCloseP\",listing:\"startTagPreListing\",pre:\"startTagPreListing\",b:\"startTagFormatting\",big:\"startTagFormatting\",code:\"startTagFormatting\",em:\"startTagFormatting\",font:\"startTagFormatting\",i:\"startTagFormatting\",s:\"startTagFormatting\",small:\"startTagFormatting\",strike:\"startTagFormatting\",strong:\"startTagFormatting\",tt:\"startTagFormatting\",u:\"startTagFormatting\",nobr:\"startTagNobr\",area:\"startTagVoidFormatting\",br:\"startTagVoidFormatting\",embed:\"startTagVoidFormatting\",img:\"startTagVoidFormatting\",keygen:\"startTagVoidFormatting\",wbr:\"startTagVoidFormatting\",param:\"startTagParamSourceTrack\",source:\"startTagParamSourceTrack\",track:\"startTagParamSourceTrack\",iframe:\"startTagIFrame\",noembed:\"startTagRawText\",noscript:\"startTagRawText\",h1:\"startTagHeading\",h2:\"startTagHeading\",h3:\"startTagHeading\",h4:\"startTagHeading\",h5:\"startTagHeading\",h6:\"startTagHeading\",caption:\"startTagMisplaced\",col:\"startTagMisplaced\",colgroup:\"startTagMisplaced\",frame:\"startTagMisplaced\",frameset:\"startTagFrameset\",tbody:\"startTagMisplaced\",td:\"startTagMisplaced\",tfoot:\"startTagMisplaced\",th:\"startTagMisplaced\",thead:\"startTagMisplaced\",tr:\"startTagMisplaced\",option:\"startTagOptionOptgroup\",optgroup:\"startTagOptionOptgroup\",math:\"startTagMath\",svg:\"startTagSVG\",rt:\"startTagRpRt\",rp:\"startTagRpRt\",\"-default\":\"startTagOther\"},modes.inBody.end_tag_handlers={p:\"endTagP\",body:\"endTagBody\",html:\"endTagHtml\",address:\"endTagBlock\",article:\"endTagBlock\",aside:\"endTagBlock\",blockquote:\"endTagBlock\",button:\"endTagBlock\",center:\"endTagBlock\",details:\"endTagBlock\",dir:\"endTagBlock\",div:\"endTagBlock\",dl:\"endTagBlock\",fieldset:\"endTagBlock\",figcaption:\"endTagBlock\",figure:\"endTagBlock\",footer:\"endTagBlock\",header:\"endTagBlock\",hgroup:\"endTagBlock\",listing:\"endTagBlock\",main:\"endTagBlock\",menu:\"endTagBlock\",nav:\"endTagBlock\",ol:\"endTagBlock\",pre:\"endTagBlock\",section:\"endTagBlock\",summary:\"endTagBlock\",ul:\"endTagBlock\",form:\"endTagForm\",applet:\"endTagAppletMarqueeObject\",marquee:\"endTagAppletMarqueeObject\",object:\"endTagAppletMarqueeObject\",dd:\"endTagListItem\",dt:\"endTagListItem\",li:\"endTagListItem\",h1:\"endTagHeading\",h2:\"endTagHeading\",h3:\"endTagHeading\",h4:\"endTagHeading\",h5:\"endTagHeading\",h6:\"endTagHeading\",a:\"endTagFormatting\",b:\"endTagFormatting\",big:\"endTagFormatting\",code:\"endTagFormatting\",em:\"endTagFormatting\",font:\"endTagFormatting\",i:\"endTagFormatting\",nobr:\"endTagFormatting\",s:\"endTagFormatting\",small:\"endTagFormatting\",strike:\"endTagFormatting\",strong:\"endTagFormatting\",tt:\"endTagFormatting\",u:\"endTagFormatting\",br:\"endTagBr\",\"-default\":\"endTagOther\"},modes.inBody.processCharacters=function(buffer){tree.shouldSkipLeadingNewline&&(tree.shouldSkipLeadingNewline=!1,buffer.skipAtMostOneLeadingNewline()),tree.reconstructActiveFormattingElements();var characters=buffer.takeRemaining();characters=characters.replace(/\\u0000/g,function(){return tree.parseError(\"invalid-codepoint\"),\"\"}),characters&&(tree.insertText(characters),tree.framesetOk&&!isAllWhitespaceOrReplacementCharacters(characters)&&(tree.framesetOk=!1))},modes.inBody.startTagHtml=function(name,attributes){tree.parseError(\"non-html-root\"),tree.addAttributesToElement(tree.openElements.rootNode,attributes)},modes.inBody.startTagProcessInHead=function(name,attributes){modes.inHead.processStartTag(name,attributes)},modes.inBody.startTagBody=function(name,attributes){tree.parseError(\"unexpected-start-tag\",{name:\"body\"}),1==tree.openElements.length||\"body\"!=tree.openElements.item(1).localName?assert.ok(tree.context):(tree.framesetOk=!1,tree.addAttributesToElement(tree.openElements.bodyElement,attributes))},modes.inBody.startTagFrameset=function(name,attributes){if(tree.parseError(\"unexpected-start-tag\",{name:\"frameset\"}),1==tree.openElements.length||\"body\"!=tree.openElements.item(1).localName)assert.ok(tree.context);else if(tree.framesetOk){for(tree.detachFromParent(tree.openElements.bodyElement);tree.openElements.length>1;)tree.openElements.pop();tree.insertElement(name,attributes),tree.setInsertionMode(\"inFrameset\")}},modes.inBody.startTagCloseP=function(name,attributes){tree.openElements.inButtonScope(\"p\")&&this.endTagP(\"p\"),tree.insertElement(name,attributes)},modes.inBody.startTagPreListing=function(name,attributes){tree.openElements.inButtonScope(\"p\")&&this.endTagP(\"p\"),tree.insertElement(name,attributes),tree.framesetOk=!1,tree.shouldSkipLeadingNewline=!0},modes.inBody.startTagForm=function(name,attributes){tree.form?tree.parseError(\"unexpected-start-tag\",{name:name}):(tree.openElements.inButtonScope(\"p\")&&this.endTagP(\"p\"),tree.insertElement(name,attributes),tree.form=tree.currentStackItem())},modes.inBody.startTagRpRt=function(name,attributes){tree.openElements.inScope(\"ruby\")&&(tree.generateImpliedEndTags(),\"ruby\"!=tree.currentStackItem().localName&&tree.parseError(\"unexpected-start-tag\",{name:name})),tree.insertElement(name,attributes)},modes.inBody.startTagListItem=function(name,attributes){for(var stopNames={li:[\"li\"],dd:[\"dd\",\"dt\"],dt:[\"dd\",\"dt\"]},stopName=stopNames[name],els=tree.openElements,i=els.length-1;i>=0;i--){var node=els.item(i);if(-1!=stopName.indexOf(node.localName)){tree.insertionMode.processEndTag(node.localName);break}if(node.isSpecial()&&\"p\"!==node.localName&&\"address\"!==node.localName&&\"div\"!==node.localName)break}tree.openElements.inButtonScope(\"p\")&&this.endTagP(\"p\"),tree.insertElement(name,attributes),tree.framesetOk=!1},modes.inBody.startTagPlaintext=function(name,attributes){tree.openElements.inButtonScope(\"p\")&&this.endTagP(\"p\"),tree.insertElement(name,attributes),tree.tokenizer.setState(Tokenizer.PLAINTEXT)},modes.inBody.startTagHeading=function(name,attributes){tree.openElements.inButtonScope(\"p\")&&this.endTagP(\"p\"),tree.currentStackItem().isNumberedHeader()&&(tree.parseError(\"unexpected-start-tag\",{name:name}),tree.popElement()),tree.insertElement(name,attributes)},modes.inBody.startTagA=function(name,attributes){var activeA=tree.elementInActiveFormattingElements(\"a\");activeA&&(tree.parseError(\"unexpected-start-tag-implies-end-tag\",{startName:\"a\",endName:\"a\"}),tree.adoptionAgencyEndTag(\"a\"),tree.openElements.contains(activeA)&&tree.openElements.remove(activeA),tree.removeElementFromActiveFormattingElements(activeA)),tree.reconstructActiveFormattingElements(),tree.insertFormattingElement(name,attributes)},modes.inBody.startTagFormatting=function(name,attributes){tree.reconstructActiveFormattingElements(),tree.insertFormattingElement(name,attributes)},modes.inBody.startTagNobr=function(name,attributes){tree.reconstructActiveFormattingElements(),tree.openElements.inScope(\"nobr\")&&(tree.parseError(\"unexpected-start-tag-implies-end-tag\",{startName:\"nobr\",endName:\"nobr\"}),this.processEndTag(\"nobr\"),tree.reconstructActiveFormattingElements()),tree.insertFormattingElement(name,attributes)},modes.inBody.startTagButton=function(name,attributes){tree.openElements.inScope(\"button\")?(tree.parseError(\"unexpected-start-tag-implies-end-tag\",{startName:\"button\",endName:\"button\"}),this.processEndTag(\"button\"),tree.insertionMode.processStartTag(name,attributes)):(tree.framesetOk=!1,tree.reconstructActiveFormattingElements(),tree.insertElement(name,attributes))},modes.inBody.startTagAppletMarqueeObject=function(name,attributes){tree.reconstructActiveFormattingElements(),tree.insertElement(name,attributes),tree.activeFormattingElements.push(Marker),tree.framesetOk=!1},modes.inBody.endTagAppletMarqueeObject=function(name){tree.openElements.inScope(name)?(tree.generateImpliedEndTags(),tree.currentStackItem().localName!=name&&tree.parseError(\"end-tag-too-early\",{name:name}),tree.openElements.popUntilPopped(name),tree.clearActiveFormattingElements()):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inBody.startTagXmp=function(name,attributes){tree.openElements.inButtonScope(\"p\")&&this.processEndTag(\"p\"),tree.reconstructActiveFormattingElements(),tree.processGenericRawTextStartTag(name,attributes),tree.framesetOk=!1},modes.inBody.startTagTable=function(name,attributes){\"quirks\"!==tree.compatMode&&tree.openElements.inButtonScope(\"p\")&&this.processEndTag(\"p\"),tree.insertElement(name,attributes),tree.setInsertionMode(\"inTable\"),tree.framesetOk=!1},modes.inBody.startTagVoidFormatting=function(name,attributes){tree.reconstructActiveFormattingElements(),tree.insertSelfClosingElement(name,attributes),tree.framesetOk=!1},modes.inBody.startTagParamSourceTrack=function(name,attributes){tree.insertSelfClosingElement(name,attributes)},modes.inBody.startTagHr=function(name,attributes){tree.openElements.inButtonScope(\"p\")&&this.endTagP(\"p\"),tree.insertSelfClosingElement(name,attributes),tree.framesetOk=!1},modes.inBody.startTagImage=function(name,attributes){tree.parseError(\"unexpected-start-tag-treated-as\",{originalName:\"image\",newName:\"img\"}),this.processStartTag(\"img\",attributes)},modes.inBody.startTagInput=function(name,attributes){var currentFramesetOk=tree.framesetOk;this.startTagVoidFormatting(name,attributes);for(var key in attributes)if(\"type\"==attributes[key].nodeName){\"hidden\"==attributes[key].nodeValue.toLowerCase()&&(tree.framesetOk=currentFramesetOk);break}},modes.inBody.startTagIsindex=function(name,attributes){if(tree.parseError(\"deprecated-tag\",{name:\"isindex\"}),tree.selfClosingFlagAcknowledged=!0,!tree.form){var formAttributes=[],inputAttributes=[],prompt=\"This is a searchable index. Enter search keywords: \";for(var key in attributes)switch(attributes[key].nodeName){case\"action\":formAttributes.push({nodeName:\"action\",nodeValue:attributes[key].nodeValue});break;case\"prompt\":prompt=attributes[key].nodeValue;break;case\"name\":break;default:inputAttributes.push({nodeName:attributes[key].nodeName,nodeValue:attributes[key].nodeValue})}inputAttributes.push({nodeName:\"name\",nodeValue:\"isindex\"}),this.processStartTag(\"form\",formAttributes),this.processStartTag(\"hr\"),this.processStartTag(\"label\"),this.processCharacters(new CharacterBuffer(prompt)),this.processStartTag(\"input\",inputAttributes),this.processEndTag(\"label\"),this.processStartTag(\"hr\"),this.processEndTag(\"form\")}},modes.inBody.startTagTextarea=function(name,attributes){tree.insertElement(name,attributes),tree.tokenizer.setState(Tokenizer.RCDATA),tree.originalInsertionMode=tree.insertionModeName,tree.shouldSkipLeadingNewline=!0,tree.framesetOk=!1,tree.setInsertionMode(\"text\")},modes.inBody.startTagIFrame=function(name,attributes){tree.framesetOk=!1,this.startTagRawText(name,attributes)},modes.inBody.startTagRawText=function(name,attributes){tree.processGenericRawTextStartTag(name,attributes)},modes.inBody.startTagSelect=function(name,attributes){tree.reconstructActiveFormattingElements(),tree.insertElement(name,attributes),tree.framesetOk=!1;var insertionModeName=tree.insertionModeName;\"inTable\"==insertionModeName||\"inCaption\"==insertionModeName||\"inColumnGroup\"==insertionModeName||\"inTableBody\"==insertionModeName||\"inRow\"==insertionModeName||\"inCell\"==insertionModeName?tree.setInsertionMode(\"inSelectInTable\"):tree.setInsertionMode(\"inSelect\")},modes.inBody.startTagMisplaced=function(name){tree.parseError(\"unexpected-start-tag-ignored\",{name:name})},modes.inBody.endTagMisplaced=function(name){tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inBody.endTagBr=function(name){tree.parseError(\"unexpected-end-tag-treated-as\",{originalName:\"br\",newName:\"br element\"}),tree.reconstructActiveFormattingElements(),tree.insertElement(name,[]),tree.popElement()},modes.inBody.startTagOptionOptgroup=function(name,attributes){\"option\"==tree.currentStackItem().localName&&tree.popElement(),tree.reconstructActiveFormattingElements(),tree.insertElement(name,attributes)},modes.inBody.startTagOther=function(name,attributes){tree.reconstructActiveFormattingElements(),tree.insertElement(name,attributes)},modes.inBody.endTagOther=function(name){for(var node,i=tree.openElements.length-1;i>0;i--){if(node=tree.openElements.item(i),node.localName==name){tree.generateImpliedEndTags(name),tree.currentStackItem().localName!=name&&tree.parseError(\"unexpected-end-tag\",{name:name}),tree.openElements.remove_openElements_until(function(x){return x===node});break}if(node.isSpecial()){tree.parseError(\"unexpected-end-tag\",{name:name});break}}},modes.inBody.startTagMath=function(name,attributes,selfClosing){tree.reconstructActiveFormattingElements(),attributes=tree.adjustMathMLAttributes(attributes),attributes=tree.adjustForeignAttributes(attributes),tree.insertForeignElement(name,attributes,\"http://www.w3.org/1998/Math/MathML\",selfClosing)},modes.inBody.startTagSVG=function(name,attributes,selfClosing){tree.reconstructActiveFormattingElements(),attributes=tree.adjustSVGAttributes(attributes),attributes=tree.adjustForeignAttributes(attributes),tree.insertForeignElement(name,attributes,\"http://www.w3.org/2000/svg\",selfClosing)},modes.inBody.endTagP=function(name){tree.openElements.inButtonScope(\"p\")?(tree.generateImpliedEndTags(\"p\"),\"p\"!=tree.currentStackItem().localName&&tree.parseError(\"unexpected-implied-end-tag\",{name:\"p\"}),tree.openElements.popUntilPopped(name)):(tree.parseError(\"unexpected-end-tag\",{name:\"p\"}),this.startTagCloseP(\"p\",[]),this.endTagP(\"p\"))},modes.inBody.endTagBody=function(name){return tree.openElements.inScope(\"body\")?(\"body\"!=tree.currentStackItem().localName&&tree.parseError(\"expected-one-end-tag-but-got-another\",{expectedName:tree.currentStackItem().localName,gotName:name}),tree.setInsertionMode(\"afterBody\"),void 0):(tree.parseError(\"unexpected-end-tag\",{name:name}),void 0)},modes.inBody.endTagHtml=function(name){return tree.openElements.inScope(\"body\")?(\"body\"!=tree.currentStackItem().localName&&tree.parseError(\"expected-one-end-tag-but-got-another\",{expectedName:tree.currentStackItem().localName,gotName:name}),tree.setInsertionMode(\"afterBody\"),tree.insertionMode.processEndTag(name),void 0):(tree.parseError(\"unexpected-end-tag\",{name:name}),void 0)},modes.inBody.endTagBlock=function(name){tree.openElements.inScope(name)?(tree.generateImpliedEndTags(),tree.currentStackItem().localName!=name&&tree.parseError(\"end-tag-too-early\",{name:name}),tree.openElements.popUntilPopped(name)):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inBody.endTagForm=function(name){var node=tree.form;tree.form=null,node&&tree.openElements.inScope(name)?(tree.generateImpliedEndTags(),tree.currentStackItem()!=node&&tree.parseError(\"end-tag-too-early-ignored\",{name:\"form\"}),tree.openElements.remove(node)):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inBody.endTagListItem=function(name){tree.openElements.inListItemScope(name)?(tree.generateImpliedEndTags(name),tree.currentStackItem().localName!=name&&tree.parseError(\"end-tag-too-early\",{name:name}),tree.openElements.popUntilPopped(name)):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inBody.endTagHeading=function(name){return tree.openElements.hasNumberedHeaderElementInScope()?(tree.generateImpliedEndTags(),tree.currentStackItem().localName!=name&&tree.parseError(\"end-tag-too-early\",{name:name}),tree.openElements.remove_openElements_until(function(e){return e.isNumberedHeader()}),void 0):(tree.parseError(\"unexpected-end-tag\",{name:name}),void 0)},modes.inBody.endTagFormatting=function(name,attributes){tree.adoptionAgencyEndTag(name)||this.endTagOther(name,attributes)},modes.inCaption=Object.create(modes.base),modes.inCaption.start_tag_handlers={html:\"startTagHtml\",caption:\"startTagTableElement\",col:\"startTagTableElement\",colgroup:\"startTagTableElement\",tbody:\"startTagTableElement\",td:\"startTagTableElement\",tfoot:\"startTagTableElement\",thead:\"startTagTableElement\",tr:\"startTagTableElement\",\"-default\":\"startTagOther\"},modes.inCaption.end_tag_handlers={caption:\"endTagCaption\",table:\"endTagTable\",body:\"endTagIgnore\",col:\"endTagIgnore\",colgroup:\"endTagIgnore\",html:\"endTagIgnore\",tbody:\"endTagIgnore\",td:\"endTagIgnore\",tfood:\"endTagIgnore\",thead:\"endTagIgnore\",tr:\"endTagIgnore\",\"-default\":\"endTagOther\"},modes.inCaption.processCharacters=function(data){modes.inBody.processCharacters(data)},modes.inCaption.startTagTableElement=function(name,attributes){tree.parseError(\"unexpected-end-tag\",{name:name});var ignoreEndTag=!tree.openElements.inTableScope(\"caption\");tree.insertionMode.processEndTag(\"caption\"),ignoreEndTag||tree.insertionMode.processStartTag(name,attributes)},modes.inCaption.startTagOther=function(name,attributes,selfClosing){modes.inBody.processStartTag(name,attributes,selfClosing)},modes.inCaption.endTagCaption=function(name){tree.openElements.inTableScope(\"caption\")?(tree.generateImpliedEndTags(),\"caption\"!=tree.currentStackItem().localName&&tree.parseError(\"expected-one-end-tag-but-got-another\",{gotName:\"caption\",expectedName:tree.currentStackItem().localName}),tree.openElements.popUntilPopped(\"caption\"),tree.clearActiveFormattingElements(),tree.setInsertionMode(\"inTable\")):(assert.ok(tree.context),tree.parseError(\"unexpected-end-tag\",{name:name}))},modes.inCaption.endTagTable=function(name){tree.parseError(\"unexpected-end-table-in-caption\");var ignoreEndTag=!tree.openElements.inTableScope(\"caption\");tree.insertionMode.processEndTag(\"caption\"),ignoreEndTag||tree.insertionMode.processEndTag(name)},modes.inCaption.endTagIgnore=function(name){tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inCaption.endTagOther=function(name){modes.inBody.processEndTag(name)},modes.inCell=Object.create(modes.base),modes.inCell.start_tag_handlers={html:\"startTagHtml\",caption:\"startTagTableOther\",col:\"startTagTableOther\",colgroup:\"startTagTableOther\",tbody:\"startTagTableOther\",td:\"startTagTableOther\",tfoot:\"startTagTableOther\",th:\"startTagTableOther\",thead:\"startTagTableOther\",tr:\"startTagTableOther\",\"-default\":\"startTagOther\"},modes.inCell.end_tag_handlers={td:\"endTagTableCell\",th:\"endTagTableCell\",body:\"endTagIgnore\",caption:\"endTagIgnore\",col:\"endTagIgnore\",colgroup:\"endTagIgnore\",html:\"endTagIgnore\",table:\"endTagImply\",tbody:\"endTagImply\",tfoot:\"endTagImply\",thead:\"endTagImply\",tr:\"endTagImply\",\"-default\":\"endTagOther\"},modes.inCell.processCharacters=function(data){modes.inBody.processCharacters(data)},modes.inCell.startTagTableOther=function(name,attributes,selfClosing){tree.openElements.inTableScope(\"td\")||tree.openElements.inTableScope(\"th\")?(this.closeCell(),tree.insertionMode.processStartTag(name,attributes,selfClosing)):tree.parseError(\"unexpected-start-tag\",{name:name})},modes.inCell.startTagOther=function(name,attributes,selfClosing){modes.inBody.processStartTag(name,attributes,selfClosing)},modes.inCell.endTagTableCell=function(name){tree.openElements.inTableScope(name)?(tree.generateImpliedEndTags(name),tree.currentStackItem().localName!=name.toLowerCase()?(tree.parseError(\"unexpected-cell-end-tag\",{name:name}),tree.openElements.popUntilPopped(name)):tree.popElement(),tree.clearActiveFormattingElements(),tree.setInsertionMode(\"inRow\")):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inCell.endTagIgnore=function(name){tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inCell.endTagImply=function(name){tree.openElements.inTableScope(name)?(this.closeCell(),tree.insertionMode.processEndTag(name)):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inCell.endTagOther=function(name){modes.inBody.processEndTag(name)},modes.inCell.closeCell=function(){tree.openElements.inTableScope(\"td\")?this.endTagTableCell(\"td\"):tree.openElements.inTableScope(\"th\")&&this.endTagTableCell(\"th\")},modes.inColumnGroup=Object.create(modes.base),modes.inColumnGroup.start_tag_handlers={html:\"startTagHtml\",col:\"startTagCol\",\"-default\":\"startTagOther\"},modes.inColumnGroup.end_tag_handlers={colgroup:\"endTagColgroup\",col:\"endTagCol\",\"-default\":\"endTagOther\"},modes.inColumnGroup.ignoreEndTagColgroup=function(){return\"html\"==tree.currentStackItem().localName},modes.inColumnGroup.processCharacters=function(buffer){var leadingWhitespace=buffer.takeLeadingWhitespace();if(leadingWhitespace&&tree.insertText(leadingWhitespace),buffer.length){var ignoreEndTag=this.ignoreEndTagColgroup();this.endTagColgroup(\"colgroup\"),ignoreEndTag||tree.insertionMode.processCharacters(buffer)}},modes.inColumnGroup.startTagCol=function(name,attributes){tree.insertSelfClosingElement(name,attributes)},modes.inColumnGroup.startTagOther=function(name,attributes,selfClosing){var ignoreEndTag=this.ignoreEndTagColgroup();this.endTagColgroup(\"colgroup\"),ignoreEndTag||tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.inColumnGroup.endTagColgroup=function(name){this.ignoreEndTagColgroup()?(assert.ok(tree.context),tree.parseError(\"unexpected-end-tag\",{name:name})):(tree.popElement(),tree.setInsertionMode(\"inTable\"))},modes.inColumnGroup.endTagCol=function(){tree.parseError(\"no-end-tag\",{name:\"col\"})},modes.inColumnGroup.endTagOther=function(name){var ignoreEndTag=this.ignoreEndTagColgroup();this.endTagColgroup(\"colgroup\"),ignoreEndTag||tree.insertionMode.processEndTag(name)},modes.inForeignContent=Object.create(modes.base),modes.inForeignContent.processStartTag=function(name,attributes,selfClosing){if(-1!=[\"b\",\"big\",\"blockquote\",\"body\",\"br\",\"center\",\"code\",\"dd\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"hr\",\"i\",\"img\",\"li\",\"listing\",\"menu\",\"meta\",\"nobr\",\"ol\",\"p\",\"pre\",\"ruby\",\"s\",\"small\",\"span\",\"strong\",\"strike\",\"sub\",\"sup\",\"table\",\"tt\",\"u\",\"ul\",\"var\"].indexOf(name)||\"font\"==name&&attributes.some(function(attr){return[\"color\",\"face\",\"size\"].indexOf(attr.nodeName)>=0})){for(tree.parseError(\"unexpected-html-element-in-foreign-content\",{name:name});tree.currentStackItem().isForeign()&&!tree.currentStackItem().isHtmlIntegrationPoint()&&!tree.currentStackItem().isMathMLTextIntegrationPoint();)tree.openElements.pop();return tree.insertionMode.processStartTag(name,attributes,selfClosing),void 0}\"http://www.w3.org/1998/Math/MathML\"==tree.currentStackItem().namespaceURI&&(attributes=tree.adjustMathMLAttributes(attributes)),\"http://www.w3.org/2000/svg\"==tree.currentStackItem().namespaceURI&&(name=tree.adjustSVGTagNameCase(name),attributes=tree.adjustSVGAttributes(attributes)),attributes=tree.adjustForeignAttributes(attributes),tree.insertForeignElement(name,attributes,tree.currentStackItem().namespaceURI,selfClosing)},modes.inForeignContent.processEndTag=function(name){var node=tree.currentStackItem(),index=tree.openElements.length-1;for(node.localName.toLowerCase()!=name&&tree.parseError(\"unexpected-end-tag\",{name:name});;){if(0===index)break;if(node.localName.toLowerCase()==name){for(;tree.openElements.pop()!=node;);break}if(index-=1,node=tree.openElements.item(index),!node.isForeign()){tree.insertionMode.processEndTag(name);break}}},modes.inForeignContent.processCharacters=function(buffer){var characters=buffer.takeRemaining();characters=characters.replace(/\\u0000/g,function(){return tree.parseError(\"invalid-codepoint\"),\"�\"}),tree.framesetOk&&!isAllWhitespaceOrReplacementCharacters(characters)&&(tree.framesetOk=!1),tree.insertText(characters)},modes.inHeadNoscript=Object.create(modes.base),modes.inHeadNoscript.start_tag_handlers={html:\"startTagHtml\",basefont:\"startTagBasefontBgsoundLinkMetaNoframesStyle\",bgsound:\"startTagBasefontBgsoundLinkMetaNoframesStyle\",link:\"startTagBasefontBgsoundLinkMetaNoframesStyle\",meta:\"startTagBasefontBgsoundLinkMetaNoframesStyle\",noframes:\"startTagBasefontBgsoundLinkMetaNoframesStyle\",style:\"startTagBasefontBgsoundLinkMetaNoframesStyle\",head:\"startTagHeadNoscript\",noscript:\"startTagHeadNoscript\",\"-default\":\"startTagOther\"},modes.inHeadNoscript.end_tag_handlers={noscript:\"endTagNoscript\",br:\"endTagBr\",\"-default\":\"endTagOther\"},modes.inHeadNoscript.processCharacters=function(buffer){var leadingWhitespace=buffer.takeLeadingWhitespace();leadingWhitespace&&tree.insertText(leadingWhitespace),buffer.length&&(tree.parseError(\"unexpected-char-in-frameset\"),this.anythingElse(),tree.insertionMode.processCharacters(buffer))},modes.inHeadNoscript.processComment=function(data){modes.inHead.processComment(data)},modes.inHeadNoscript.startTagBasefontBgsoundLinkMetaNoframesStyle=function(name,attributes){modes.inHead.processStartTag(name,attributes)},modes.inHeadNoscript.startTagHeadNoscript=function(name){tree.parseError(\"unexpected-start-tag-in-frameset\",{name:name})},modes.inHeadNoscript.startTagOther=function(name,attributes){tree.parseError(\"unexpected-start-tag-in-frameset\",{name:name}),this.anythingElse(),tree.insertionMode.processStartTag(name,attributes)},modes.inHeadNoscript.endTagBr=function(name,attributes){tree.parseError(\"unexpected-end-tag-in-frameset\",{name:name}),this.anythingElse(),tree.insertionMode.processEndTag(name,attributes)},modes.inHeadNoscript.endTagNoscript=function(){tree.popElement(),tree.setInsertionMode(\"inHead\")},modes.inHeadNoscript.endTagOther=function(name){tree.parseError(\"unexpected-end-tag-in-frameset\",{name:name})},modes.inHeadNoscript.anythingElse=function(){tree.popElement(),tree.setInsertionMode(\"inHead\")},modes.inFrameset=Object.create(modes.base),modes.inFrameset.start_tag_handlers={html:\"startTagHtml\",frameset:\"startTagFrameset\",frame:\"startTagFrame\",noframes:\"startTagNoframes\",\"-default\":\"startTagOther\"},modes.inFrameset.end_tag_handlers={frameset:\"endTagFrameset\",noframes:\"endTagNoframes\",\"-default\":\"endTagOther\"},modes.inFrameset.processCharacters=function(){tree.parseError(\"unexpected-char-in-frameset\")},modes.inFrameset.startTagFrameset=function(name,attributes){tree.insertElement(name,attributes)},modes.inFrameset.startTagFrame=function(name,attributes){tree.insertSelfClosingElement(name,attributes)},modes.inFrameset.startTagNoframes=function(name,attributes){modes.inBody.processStartTag(name,attributes)},modes.inFrameset.startTagOther=function(name){tree.parseError(\"unexpected-start-tag-in-frameset\",{name:name})},modes.inFrameset.endTagFrameset=function(){\"html\"==tree.currentStackItem().localName?tree.parseError(\"unexpected-frameset-in-frameset-innerhtml\"):tree.popElement(),tree.context||\"frameset\"==tree.currentStackItem().localName||tree.setInsertionMode(\"afterFrameset\")},modes.inFrameset.endTagNoframes=function(name){modes.inBody.processEndTag(name)},modes.inFrameset.endTagOther=function(name){tree.parseError(\"unexpected-end-tag-in-frameset\",{name:name})},modes.inTable=Object.create(modes.base),modes.inTable.start_tag_handlers={html:\"startTagHtml\",caption:\"startTagCaption\",colgroup:\"startTagColgroup\",col:\"startTagCol\",table:\"startTagTable\",tbody:\"startTagRowGroup\",tfoot:\"startTagRowGroup\",thead:\"startTagRowGroup\",td:\"startTagImplyTbody\",th:\"startTagImplyTbody\",tr:\"startTagImplyTbody\",style:\"startTagStyleScript\",script:\"startTagStyleScript\",input:\"startTagInput\",form:\"startTagForm\",\"-default\":\"startTagOther\"},modes.inTable.end_tag_handlers={table:\"endTagTable\",body:\"endTagIgnore\",caption:\"endTagIgnore\",col:\"endTagIgnore\",colgroup:\"endTagIgnore\",html:\"endTagIgnore\",tbody:\"endTagIgnore\",td:\"endTagIgnore\",tfoot:\"endTagIgnore\",th:\"endTagIgnore\",thead:\"endTagIgnore\",tr:\"endTagIgnore\",\"-default\":\"endTagOther\"},modes.inTable.processCharacters=function(data){if(tree.currentStackItem().isFosterParenting()){var originalInsertionMode=tree.insertionModeName;\ntree.setInsertionMode(\"inTableText\"),tree.originalInsertionMode=originalInsertionMode,tree.insertionMode.processCharacters(data)}else tree.redirectAttachToFosterParent=!0,modes.inBody.processCharacters(data),tree.redirectAttachToFosterParent=!1},modes.inTable.startTagCaption=function(name,attributes){tree.openElements.popUntilTableScopeMarker(),tree.activeFormattingElements.push(Marker),tree.insertElement(name,attributes),tree.setInsertionMode(\"inCaption\")},modes.inTable.startTagColgroup=function(name,attributes){tree.openElements.popUntilTableScopeMarker(),tree.insertElement(name,attributes),tree.setInsertionMode(\"inColumnGroup\")},modes.inTable.startTagCol=function(name,attributes){this.startTagColgroup(\"colgroup\",[]),tree.insertionMode.processStartTag(name,attributes)},modes.inTable.startTagRowGroup=function(name,attributes){tree.openElements.popUntilTableScopeMarker(),tree.insertElement(name,attributes),tree.setInsertionMode(\"inTableBody\")},modes.inTable.startTagImplyTbody=function(name,attributes){this.startTagRowGroup(\"tbody\",[]),tree.insertionMode.processStartTag(name,attributes)},modes.inTable.startTagTable=function(name,attributes){tree.parseError(\"unexpected-start-tag-implies-end-tag\",{startName:\"table\",endName:\"table\"}),tree.insertionMode.processEndTag(\"table\"),tree.context||tree.insertionMode.processStartTag(name,attributes)},modes.inTable.startTagStyleScript=function(name,attributes){modes.inHead.processStartTag(name,attributes)},modes.inTable.startTagInput=function(name,attributes){for(var key in attributes)if(\"type\"==attributes[key].nodeName.toLowerCase()){if(\"hidden\"==attributes[key].nodeValue.toLowerCase())return tree.parseError(\"unexpected-hidden-input-in-table\"),tree.insertElement(name,attributes),tree.openElements.pop(),void 0;break}this.startTagOther(name,attributes)},modes.inTable.startTagForm=function(name,attributes){tree.parseError(\"unexpected-form-in-table\"),tree.form||(tree.insertElement(name,attributes),tree.form=tree.currentStackItem(),tree.openElements.pop())},modes.inTable.startTagOther=function(name,attributes,selfClosing){tree.parseError(\"unexpected-start-tag-implies-table-voodoo\",{name:name}),tree.redirectAttachToFosterParent=!0,modes.inBody.processStartTag(name,attributes,selfClosing),tree.redirectAttachToFosterParent=!1},modes.inTable.endTagTable=function(name){tree.openElements.inTableScope(name)?(tree.generateImpliedEndTags(),tree.currentStackItem().localName!=name&&tree.parseError(\"end-tag-too-early-named\",{gotName:\"table\",expectedName:tree.currentStackItem().localName}),tree.openElements.popUntilPopped(\"table\"),tree.resetInsertionMode()):(assert.ok(tree.context),tree.parseError(\"unexpected-end-tag\",{name:name}))},modes.inTable.endTagIgnore=function(name){tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inTable.endTagOther=function(name){tree.parseError(\"unexpected-end-tag-implies-table-voodoo\",{name:name}),tree.redirectAttachToFosterParent=!0,modes.inBody.processEndTag(name),tree.redirectAttachToFosterParent=!1},modes.inTableText=Object.create(modes.base),modes.inTableText.flushCharacters=function(){var characters=tree.pendingTableCharacters.join(\"\");isAllWhitespace(characters)?tree.insertText(characters):(tree.redirectAttachToFosterParent=!0,tree.reconstructActiveFormattingElements(),tree.insertText(characters),tree.framesetOk=!1,tree.redirectAttachToFosterParent=!1),tree.pendingTableCharacters=[]},modes.inTableText.processComment=function(data){this.flushCharacters(),tree.setInsertionMode(tree.originalInsertionMode),tree.insertionMode.processComment(data)},modes.inTableText.processEOF=function(){this.flushCharacters(),tree.setInsertionMode(tree.originalInsertionMode),tree.insertionMode.processEOF()},modes.inTableText.processCharacters=function(buffer){var characters=buffer.takeRemaining();characters=characters.replace(/\\u0000/g,function(){return tree.parseError(\"invalid-codepoint\"),\"\"}),characters&&tree.pendingTableCharacters.push(characters)},modes.inTableText.processStartTag=function(name,attributes,selfClosing){this.flushCharacters(),tree.setInsertionMode(tree.originalInsertionMode),tree.insertionMode.processStartTag(name,attributes,selfClosing)},modes.inTableText.processEndTag=function(name,attributes){this.flushCharacters(),tree.setInsertionMode(tree.originalInsertionMode),tree.insertionMode.processEndTag(name,attributes)},modes.inTableBody=Object.create(modes.base),modes.inTableBody.start_tag_handlers={html:\"startTagHtml\",tr:\"startTagTr\",td:\"startTagTableCell\",th:\"startTagTableCell\",caption:\"startTagTableOther\",col:\"startTagTableOther\",colgroup:\"startTagTableOther\",tbody:\"startTagTableOther\",tfoot:\"startTagTableOther\",thead:\"startTagTableOther\",\"-default\":\"startTagOther\"},modes.inTableBody.end_tag_handlers={table:\"endTagTable\",tbody:\"endTagTableRowGroup\",tfoot:\"endTagTableRowGroup\",thead:\"endTagTableRowGroup\",body:\"endTagIgnore\",caption:\"endTagIgnore\",col:\"endTagIgnore\",colgroup:\"endTagIgnore\",html:\"endTagIgnore\",td:\"endTagIgnore\",th:\"endTagIgnore\",tr:\"endTagIgnore\",\"-default\":\"endTagOther\"},modes.inTableBody.processCharacters=function(data){modes.inTable.processCharacters(data)},modes.inTableBody.startTagTr=function(name,attributes){tree.openElements.popUntilTableBodyScopeMarker(),tree.insertElement(name,attributes),tree.setInsertionMode(\"inRow\")},modes.inTableBody.startTagTableCell=function(name,attributes){tree.parseError(\"unexpected-cell-in-table-body\",{name:name}),this.startTagTr(\"tr\",[]),tree.insertionMode.processStartTag(name,attributes)},modes.inTableBody.startTagTableOther=function(name,attributes){tree.openElements.inTableScope(\"tbody\")||tree.openElements.inTableScope(\"thead\")||tree.openElements.inTableScope(\"tfoot\")?(tree.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(tree.currentStackItem().localName),tree.insertionMode.processStartTag(name,attributes)):tree.parseError(\"unexpected-start-tag\",{name:name})},modes.inTableBody.startTagOther=function(name,attributes){modes.inTable.processStartTag(name,attributes)},modes.inTableBody.endTagTableRowGroup=function(name){tree.openElements.inTableScope(name)?(tree.openElements.popUntilTableBodyScopeMarker(),tree.popElement(),tree.setInsertionMode(\"inTable\")):tree.parseError(\"unexpected-end-tag-in-table-body\",{name:name})},modes.inTableBody.endTagTable=function(name){tree.openElements.inTableScope(\"tbody\")||tree.openElements.inTableScope(\"thead\")||tree.openElements.inTableScope(\"tfoot\")?(tree.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(tree.currentStackItem().localName),tree.insertionMode.processEndTag(name)):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inTableBody.endTagIgnore=function(name){tree.parseError(\"unexpected-end-tag-in-table-body\",{name:name})},modes.inTableBody.endTagOther=function(name){modes.inTable.processEndTag(name)},modes.inSelect=Object.create(modes.base),modes.inSelect.start_tag_handlers={html:\"startTagHtml\",option:\"startTagOption\",optgroup:\"startTagOptgroup\",select:\"startTagSelect\",input:\"startTagInput\",keygen:\"startTagInput\",textarea:\"startTagInput\",script:\"startTagScript\",\"-default\":\"startTagOther\"},modes.inSelect.end_tag_handlers={option:\"endTagOption\",optgroup:\"endTagOptgroup\",select:\"endTagSelect\",caption:\"endTagTableElements\",table:\"endTagTableElements\",tbody:\"endTagTableElements\",tfoot:\"endTagTableElements\",thead:\"endTagTableElements\",tr:\"endTagTableElements\",td:\"endTagTableElements\",th:\"endTagTableElements\",\"-default\":\"endTagOther\"},modes.inSelect.processCharacters=function(buffer){var data=buffer.takeRemaining();data=data.replace(/\\u0000/g,function(){return tree.parseError(\"invalid-codepoint\"),\"\"}),data&&tree.insertText(data)},modes.inSelect.startTagOption=function(name,attributes){\"option\"==tree.currentStackItem().localName&&tree.popElement(),tree.insertElement(name,attributes)},modes.inSelect.startTagOptgroup=function(name,attributes){\"option\"==tree.currentStackItem().localName&&tree.popElement(),\"optgroup\"==tree.currentStackItem().localName&&tree.popElement(),tree.insertElement(name,attributes)},modes.inSelect.endTagOption=function(name){return\"option\"!==tree.currentStackItem().localName?(tree.parseError(\"unexpected-end-tag-in-select\",{name:name}),void 0):(tree.popElement(),void 0)},modes.inSelect.endTagOptgroup=function(){\"option\"==tree.currentStackItem().localName&&\"optgroup\"==tree.openElements.item(tree.openElements.length-2).localName&&tree.popElement(),\"optgroup\"==tree.currentStackItem().localName?tree.popElement():tree.parseError(\"unexpected-end-tag-in-select\",{name:\"optgroup\"})},modes.inSelect.startTagSelect=function(){tree.parseError(\"unexpected-select-in-select\"),this.endTagSelect(\"select\")},modes.inSelect.endTagSelect=function(name){tree.openElements.inTableScope(\"select\")?(tree.openElements.popUntilPopped(\"select\"),tree.resetInsertionMode()):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inSelect.startTagInput=function(name,attributes){tree.parseError(\"unexpected-input-in-select\"),tree.openElements.inSelectScope(\"select\")&&(this.endTagSelect(\"select\"),tree.insertionMode.processStartTag(name,attributes))},modes.inSelect.startTagScript=function(name,attributes){modes.inHead.processStartTag(name,attributes)},modes.inSelect.endTagTableElements=function(name){tree.parseError(\"unexpected-end-tag-in-select\",{name:name}),tree.openElements.inTableScope(name)&&(this.endTagSelect(\"select\"),tree.insertionMode.processEndTag(name))},modes.inSelect.startTagOther=function(name){tree.parseError(\"unexpected-start-tag-in-select\",{name:name})},modes.inSelect.endTagOther=function(name){tree.parseError(\"unexpected-end-tag-in-select\",{name:name})},modes.inSelectInTable=Object.create(modes.base),modes.inSelectInTable.start_tag_handlers={caption:\"startTagTable\",table:\"startTagTable\",tbody:\"startTagTable\",tfoot:\"startTagTable\",thead:\"startTagTable\",tr:\"startTagTable\",td:\"startTagTable\",th:\"startTagTable\",\"-default\":\"startTagOther\"},modes.inSelectInTable.end_tag_handlers={caption:\"endTagTable\",table:\"endTagTable\",tbody:\"endTagTable\",tfoot:\"endTagTable\",thead:\"endTagTable\",tr:\"endTagTable\",td:\"endTagTable\",th:\"endTagTable\",\"-default\":\"endTagOther\"},modes.inSelectInTable.processCharacters=function(data){modes.inSelect.processCharacters(data)},modes.inSelectInTable.startTagTable=function(name,attributes){tree.parseError(\"unexpected-table-element-start-tag-in-select-in-table\",{name:name}),this.endTagOther(\"select\"),tree.insertionMode.processStartTag(name,attributes)},modes.inSelectInTable.startTagOther=function(name,attributes,selfClosing){modes.inSelect.processStartTag(name,attributes,selfClosing)},modes.inSelectInTable.endTagTable=function(name){tree.parseError(\"unexpected-table-element-end-tag-in-select-in-table\",{name:name}),tree.openElements.inTableScope(name)&&(this.endTagOther(\"select\"),tree.insertionMode.processEndTag(name))},modes.inSelectInTable.endTagOther=function(name){modes.inSelect.processEndTag(name)},modes.inRow=Object.create(modes.base),modes.inRow.start_tag_handlers={html:\"startTagHtml\",td:\"startTagTableCell\",th:\"startTagTableCell\",caption:\"startTagTableOther\",col:\"startTagTableOther\",colgroup:\"startTagTableOther\",tbody:\"startTagTableOther\",tfoot:\"startTagTableOther\",thead:\"startTagTableOther\",tr:\"startTagTableOther\",\"-default\":\"startTagOther\"},modes.inRow.end_tag_handlers={tr:\"endTagTr\",table:\"endTagTable\",tbody:\"endTagTableRowGroup\",tfoot:\"endTagTableRowGroup\",thead:\"endTagTableRowGroup\",body:\"endTagIgnore\",caption:\"endTagIgnore\",col:\"endTagIgnore\",colgroup:\"endTagIgnore\",html:\"endTagIgnore\",td:\"endTagIgnore\",th:\"endTagIgnore\",\"-default\":\"endTagOther\"},modes.inRow.processCharacters=function(data){modes.inTable.processCharacters(data)},modes.inRow.startTagTableCell=function(name,attributes){tree.openElements.popUntilTableRowScopeMarker(),tree.insertElement(name,attributes),tree.setInsertionMode(\"inCell\"),tree.activeFormattingElements.push(Marker)},modes.inRow.startTagTableOther=function(name,attributes){var ignoreEndTag=this.ignoreEndTagTr();this.endTagTr(\"tr\"),ignoreEndTag||tree.insertionMode.processStartTag(name,attributes)},modes.inRow.startTagOther=function(name,attributes,selfClosing){modes.inTable.processStartTag(name,attributes,selfClosing)},modes.inRow.endTagTr=function(name){this.ignoreEndTagTr()?(assert.ok(tree.context),tree.parseError(\"unexpected-end-tag\",{name:name})):(tree.openElements.popUntilTableRowScopeMarker(),tree.popElement(),tree.setInsertionMode(\"inTableBody\"))},modes.inRow.endTagTable=function(name){var ignoreEndTag=this.ignoreEndTagTr();this.endTagTr(\"tr\"),ignoreEndTag||tree.insertionMode.processEndTag(name)},modes.inRow.endTagTableRowGroup=function(name){tree.openElements.inTableScope(name)?(this.endTagTr(\"tr\"),tree.insertionMode.processEndTag(name)):tree.parseError(\"unexpected-end-tag\",{name:name})},modes.inRow.endTagIgnore=function(name){tree.parseError(\"unexpected-end-tag-in-table-row\",{name:name})},modes.inRow.endTagOther=function(name){modes.inTable.processEndTag(name)},modes.inRow.ignoreEndTagTr=function(){return!tree.openElements.inTableScope(\"tr\")},modes.afterAfterFrameset=Object.create(modes.base),modes.afterAfterFrameset.start_tag_handlers={html:\"startTagHtml\",noframes:\"startTagNoFrames\",\"-default\":\"startTagOther\"},modes.afterAfterFrameset.processEOF=function(){},modes.afterAfterFrameset.processComment=function(data){tree.insertComment(data,tree.document)},modes.afterAfterFrameset.processCharacters=function(buffer){for(var characters=buffer.takeRemaining(),whitespace=\"\",i=0;characters.length>i;i++){var ch=characters[i];isWhitespace(ch)&&(whitespace+=ch)}whitespace&&(tree.reconstructActiveFormattingElements(),tree.insertText(whitespace)),whitespace.length<characters.length&&tree.parseError(\"expected-eof-but-got-char\")},modes.afterAfterFrameset.startTagNoFrames=function(name,attributes){modes.inHead.processStartTag(name,attributes)},modes.afterAfterFrameset.startTagOther=function(name){tree.parseError(\"expected-eof-but-got-start-tag\",{name:name})},modes.afterAfterFrameset.processEndTag=function(name){tree.parseError(\"expected-eof-but-got-end-tag\",{name:name})},modes.text=Object.create(modes.base),modes.text.start_tag_handlers={\"-default\":\"startTagOther\"},modes.text.end_tag_handlers={script:\"endTagScript\",\"-default\":\"endTagOther\"},modes.text.processCharacters=function(buffer){tree.shouldSkipLeadingNewline&&(tree.shouldSkipLeadingNewline=!1,buffer.skipAtMostOneLeadingNewline());var data=buffer.takeRemaining();data&&tree.insertText(data)},modes.text.processEOF=function(){tree.parseError(\"expected-named-closing-tag-but-got-eof\",{name:tree.currentStackItem().localName}),tree.openElements.pop(),tree.setInsertionMode(tree.originalInsertionMode),tree.insertionMode.processEOF()},modes.text.startTagOther=function(name){throw\"Tried to process start tag \"+name+\" in RCDATA/RAWTEXT mode\"},modes.text.endTagScript=function(){var node=tree.openElements.pop();assert.ok(\"script\"==node.localName),tree.setInsertionMode(tree.originalInsertionMode)},modes.text.endTagOther=function(){tree.openElements.pop(),tree.setInsertionMode(tree.originalInsertionMode)}}function formatMessage(format,args){return format.replace(RegExp(\"{[0-9a-z-]+}\",\"gi\"),function(match){return args[match.slice(1,-1)]||match})}var assert=_dereq_(\"assert\"),messages=_dereq_(\"./messages.json\"),constants=_dereq_(\"./constants\");_dereq_(\"events\").EventEmitter;var Tokenizer=_dereq_(\"./Tokenizer\").Tokenizer,ElementStack=_dereq_(\"./ElementStack\").ElementStack,StackItem=_dereq_(\"./StackItem\").StackItem,Marker={};CharacterBuffer.prototype.skipAtMostOneLeadingNewline=function(){\"\\n\"===this.characters[this.current]&&this.current++},CharacterBuffer.prototype.skipLeadingWhitespace=function(){for(;isWhitespace(this.characters[this.current]);)if(++this.current==this.end)return},CharacterBuffer.prototype.skipLeadingNonWhitespace=function(){for(;!isWhitespace(this.characters[this.current]);)if(++this.current==this.end)return},CharacterBuffer.prototype.takeRemaining=function(){return this.characters.substring(this.current)},CharacterBuffer.prototype.takeLeadingWhitespace=function(){var start=this.current;return this.skipLeadingWhitespace(),start===this.current?\"\":this.characters.substring(start,this.current-start)},Object.defineProperty(CharacterBuffer.prototype,\"length\",{get:function(){return this.end-this.current}}),TreeBuilder.prototype.setInsertionMode=function(name){this.insertionMode=this.insertionModes[name],this.insertionModeName=name},TreeBuilder.prototype.adoptionAgencyEndTag=function(name){function isActiveFormattingElement(el){return el===formattingElement}for(var formattingElement,outerIterationLimit=8,innerIterationLimit=3,outerLoopCounter=0;outerIterationLimit>outerLoopCounter++;){if(formattingElement=this.elementInActiveFormattingElements(name),!formattingElement||this.openElements.contains(formattingElement)&&!this.openElements.inScope(formattingElement.localName))return this.parseError(\"adoption-agency-1.1\",{name:name}),!1;if(!this.openElements.contains(formattingElement))return this.parseError(\"adoption-agency-1.2\",{name:name}),this.removeElementFromActiveFormattingElements(formattingElement),!0;this.openElements.inScope(formattingElement.localName)||this.parseError(\"adoption-agency-4.4\",{name:name}),formattingElement!=this.currentStackItem()&&this.parseError(\"adoption-agency-1.3\",{name:name});var furthestBlock=this.openElements.furthestBlockForFormattingElement(formattingElement.node);if(!furthestBlock)return this.openElements.remove_openElements_until(isActiveFormattingElement),this.removeElementFromActiveFormattingElements(formattingElement),!0;for(var afeIndex=this.openElements.elements.indexOf(formattingElement),commonAncestor=this.openElements.item(afeIndex-1),bookmark=this.activeFormattingElements.indexOf(formattingElement),node=furthestBlock,lastNode=furthestBlock,index=this.openElements.elements.indexOf(node),innerLoopCounter=0;innerIterationLimit>innerLoopCounter++;)if(index-=1,node=this.openElements.item(index),0>this.activeFormattingElements.indexOf(node))this.openElements.elements.splice(index,1);else{if(node==formattingElement)break;lastNode==furthestBlock&&(bookmark=this.activeFormattingElements.indexOf(node)+1);var clone=this.createElement(node.namespaceURI,node.localName,node.attributes),newNode=new StackItem(node.namespaceURI,node.localName,node.attributes,clone);this.activeFormattingElements[this.activeFormattingElements.indexOf(node)]=newNode,this.openElements.elements[this.openElements.elements.indexOf(node)]=newNode,node=newNode,this.detachFromParent(lastNode.node),this.attachNode(lastNode.node,node.node),lastNode=node}this.detachFromParent(lastNode.node),commonAncestor.isFosterParenting()?this.insertIntoFosterParent(lastNode.node):this.attachNode(lastNode.node,commonAncestor.node);var clone=this.createElement(\"http://www.w3.org/1999/xhtml\",formattingElement.localName,formattingElement.attributes),formattingClone=new StackItem(formattingElement.namespaceURI,formattingElement.localName,formattingElement.attributes,clone);this.reparentChildren(furthestBlock.node,clone),this.attachNode(clone,furthestBlock.node),this.removeElementFromActiveFormattingElements(formattingElement),this.activeFormattingElements.splice(Math.min(bookmark,this.activeFormattingElements.length),0,formattingClone),this.openElements.remove(formattingElement),this.openElements.elements.splice(this.openElements.elements.indexOf(furthestBlock)+1,0,formattingClone)}return!0},TreeBuilder.prototype.start=function(){throw\"Not mplemented\"},TreeBuilder.prototype.startTokenization=function(tokenizer){if(this.tokenizer=tokenizer,this.compatMode=\"no quirks\",this.originalInsertionMode=\"initial\",this.framesetOk=!0,this.openElements=new ElementStack,this.activeFormattingElements=[],this.start(),this.context){switch(this.context){case\"title\":case\"textarea\":this.tokenizer.setState(Tokenizer.RCDATA);break;case\"style\":case\"xmp\":case\"iframe\":case\"noembed\":case\"noframes\":this.tokenizer.setState(Tokenizer.RAWTEXT);break;case\"script\":this.tokenizer.setState(Tokenizer.SCRIPT_DATA);break;case\"noscript\":this.scriptingEnabled&&this.tokenizer.setState(Tokenizer.RAWTEXT);break;case\"plaintext\":this.tokenizer.setState(Tokenizer.PLAINTEXT)}this.insertHtmlElement(),this.resetInsertionMode()}else this.setInsertionMode(\"initial\")},TreeBuilder.prototype.processToken=function(token){this.selfClosingFlagAcknowledged=!1;var insertionMode,currentNode=this.openElements.top||null;switch(insertionMode=!currentNode||!currentNode.isForeign()||currentNode.isMathMLTextIntegrationPoint()&&(\"StartTag\"==token.type&&!(token.name in{mglyph:0,malignmark:0})||\"Characters\"===token.type)||\"http://www.w3.org/1998/Math/MathML\"==currentNode.namespaceURI&&\"annotation-xml\"==currentNode.localName&&\"StartTag\"==token.type&&\"svg\"==token.name||currentNode.isHtmlIntegrationPoint()&&token.type in{StartTag:0,Characters:0}||\"EOF\"==token.type?this.insertionMode:this.insertionModes.inForeignContent,token.type){case\"Characters\":var buffer=new CharacterBuffer(token.data);insertionMode.processCharacters(buffer);break;case\"Comment\":insertionMode.processComment(token.data);break;case\"StartTag\":insertionMode.processStartTag(token.name,token.data,token.selfClosing);break;case\"EndTag\":insertionMode.processEndTag(token.name);break;case\"Doctype\":insertionMode.processDoctype(token.name,token.publicId,token.systemId,token.forceQuirks);break;case\"EOF\":insertionMode.processEOF()}},TreeBuilder.prototype.isCdataSectionAllowed=function(){return this.openElements.length>0&&this.currentStackItem().isForeign()},TreeBuilder.prototype.isSelfClosingFlagAcknowledged=function(){return this.selfClosingFlagAcknowledged},TreeBuilder.prototype.createElement=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.attachNode=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.attachNodeToFosterParent=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.detachFromParent=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.addAttributesToElement=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.insertHtmlElement=function(attributes){var root=this.createElement(\"http://www.w3.org/1999/xhtml\",\"html\",attributes);return this.attachNode(root,this.document),this.openElements.pushHtmlElement(new StackItem(\"http://www.w3.org/1999/xhtml\",\"html\",attributes,root)),root},TreeBuilder.prototype.insertHeadElement=function(attributes){var element=this.createElement(\"http://www.w3.org/1999/xhtml\",\"head\",attributes);return this.head=new StackItem(\"http://www.w3.org/1999/xhtml\",\"head\",attributes,element),this.attachNode(element,this.openElements.top.node),this.openElements.pushHeadElement(this.head),element},TreeBuilder.prototype.insertBodyElement=function(attributes){var element=this.createElement(\"http://www.w3.org/1999/xhtml\",\"body\",attributes);return this.attachNode(element,this.openElements.top.node),this.openElements.pushBodyElement(new StackItem(\"http://www.w3.org/1999/xhtml\",\"body\",attributes,element)),element},TreeBuilder.prototype.insertIntoFosterParent=function(node){var tableIndex=this.openElements.findIndex(\"table\"),tableElement=this.openElements.item(tableIndex).node;return 0===tableIndex?this.attachNode(node,tableElement):(this.attachNodeToFosterParent(node,tableElement,this.openElements.item(tableIndex-1).node),void 0)},TreeBuilder.prototype.insertElement=function(name,attributes,namespaceURI,selfClosing){namespaceURI||(namespaceURI=\"http://www.w3.org/1999/xhtml\");var element=this.createElement(namespaceURI,name,attributes);this.shouldFosterParent()?this.insertIntoFosterParent(element):this.attachNode(element,this.openElements.top.node),selfClosing||this.openElements.push(new StackItem(namespaceURI,name,attributes,element))},TreeBuilder.prototype.insertFormattingElement=function(name,attributes){this.insertElement(name,attributes,\"http://www.w3.org/1999/xhtml\"),this.appendElementToActiveFormattingElements(this.currentStackItem())},TreeBuilder.prototype.insertSelfClosingElement=function(name,attributes){this.selfClosingFlagAcknowledged=!0,this.insertElement(name,attributes,\"http://www.w3.org/1999/xhtml\",!0)},TreeBuilder.prototype.insertForeignElement=function(name,attributes,namespaceURI,selfClosing){selfClosing&&(this.selfClosingFlagAcknowledged=!0),this.insertElement(name,attributes,namespaceURI,selfClosing)},TreeBuilder.prototype.insertComment=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.insertDoctype=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.insertText=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.currentStackItem=function(){return this.openElements.top},TreeBuilder.prototype.popElement=function(){return this.openElements.pop()},TreeBuilder.prototype.shouldFosterParent=function(){return this.redirectAttachToFosterParent&&this.currentStackItem().isFosterParenting()},TreeBuilder.prototype.generateImpliedEndTags=function(exclude){var name=this.openElements.top.localName;-1!=[\"dd\",\"dt\",\"li\",\"option\",\"optgroup\",\"p\",\"rp\",\"rt\"].indexOf(name)&&name!=exclude&&(this.popElement(),this.generateImpliedEndTags(exclude))},TreeBuilder.prototype.reconstructActiveFormattingElements=function(){if(0!==this.activeFormattingElements.length){var i=this.activeFormattingElements.length-1,entry=this.activeFormattingElements[i];if(entry!=Marker&&!this.openElements.contains(entry)){for(;entry!=Marker&&!this.openElements.contains(entry)&&(i-=1,entry=this.activeFormattingElements[i]););for(;;){i+=1,entry=this.activeFormattingElements[i],this.insertElement(entry.localName,entry.attributes);var element=this.currentStackItem();if(this.activeFormattingElements[i]=element,element==this.activeFormattingElements[this.activeFormattingElements.length-1])break}}}},TreeBuilder.prototype.ensureNoahsArkCondition=function(item){var kNoahsArkCapacity=3;if(!(kNoahsArkCapacity>this.activeFormattingElements.length)){for(var candidates=[],newItemAttributeCount=item.attributes.length,i=this.activeFormattingElements.length-1;i>=0;i--){var candidate=this.activeFormattingElements[i];if(candidate===Marker)break;item.localName===candidate.localName&&item.namespaceURI===candidate.namespaceURI&&candidate.attributes.length==newItemAttributeCount&&candidates.push(candidate)}if(!(kNoahsArkCapacity>candidates.length)){for(var remainingCandidates=[],attributes=item.attributes,i=0;attributes.length>i;i++){for(var attribute=attributes[i],j=0;candidates.length>j;j++){var candidate=candidates[j],candidateAttribute=getAttribute(candidate,attribute.nodeName);candidateAttribute&&candidateAttribute.nodeValue===attribute.nodeValue&&remainingCandidates.push(candidate)}if(kNoahsArkCapacity>remainingCandidates.length)return;candidates=remainingCandidates,remainingCandidates=[]}for(var i=kNoahsArkCapacity-1;candidates.length>i;i++)this.removeElementFromActiveFormattingElements(candidates[i])}}},TreeBuilder.prototype.appendElementToActiveFormattingElements=function(item){this.ensureNoahsArkCondition(item),this.activeFormattingElements.push(item)},TreeBuilder.prototype.removeElementFromActiveFormattingElements=function(item){var index=this.activeFormattingElements.indexOf(item);index>=0&&this.activeFormattingElements.splice(index,1)},TreeBuilder.prototype.elementInActiveFormattingElements=function(name){for(var els=this.activeFormattingElements,i=els.length-1;i>=0&&els[i]!=Marker;i--)if(els[i].localName==name)return els[i];return!1},TreeBuilder.prototype.clearActiveFormattingElements=function(){for(;0!==this.activeFormattingElements.length&&this.activeFormattingElements.pop()!=Marker;);},TreeBuilder.prototype.reparentChildren=function(){throw Error(\"Not implemented\")},TreeBuilder.prototype.setFragmentContext=function(context){this.context=context},TreeBuilder.prototype.parseError=function(code,args){if(this.errorHandler){var message=formatMessage(messages[code],args);this.errorHandler.error(message,this.tokenizer._inputStream.location(),code)}},TreeBuilder.prototype.resetInsertionMode=function(){for(var last=!1,node=null,i=this.openElements.length-1;i>=0;i--){if(node=this.openElements.item(i),0===i&&(assert.ok(this.context),last=!0,node=new StackItem(\"http://www.w3.org/1999/xhtml\",this.context,[],null)),\"http://www.w3.org/1999/xhtml\"===node.namespaceURI){if(\"select\"===node.localName)return this.setInsertionMode(\"inSelect\");if(\"td\"===node.localName||\"th\"===node.localName)return this.setInsertionMode(\"inCell\");if(\"tr\"===node.localName)return this.setInsertionMode(\"inRow\");if(\"tbody\"===node.localName||\"thead\"===node.localName||\"tfoot\"===node.localName)return this.setInsertionMode(\"inTableBody\");if(\"caption\"===node.localName)return this.setInsertionMode(\"inCaption\");if(\"colgroup\"===node.localName)return this.setInsertionMode(\"inColumnGroup\");if(\"table\"===node.localName)return this.setInsertionMode(\"inTable\");if(\"head\"===node.localName&&!last)return this.setInsertionMode(\"inHead\");if(\"body\"===node.localName)return this.setInsertionMode(\"inBody\");if(\"frameset\"===node.localName)return this.setInsertionMode(\"inFrameset\");if(\"html\"===node.localName)return this.openElements.headElement?this.setInsertionMode(\"afterHead\"):this.setInsertionMode(\"beforeHead\")}if(last)return this.setInsertionMode(\"inBody\")}},TreeBuilder.prototype.processGenericRCDATAStartTag=function(name,attributes){this.insertElement(name,attributes),this.tokenizer.setState(Tokenizer.RCDATA),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode(\"text\")},TreeBuilder.prototype.processGenericRawTextStartTag=function(name,attributes){this.insertElement(name,attributes),this.tokenizer.setState(Tokenizer.RAWTEXT),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode(\"text\")},TreeBuilder.prototype.adjustMathMLAttributes=function(attributes){return attributes.forEach(function(a){a.namespaceURI=\"http://www.w3.org/1998/Math/MathML\",constants.MATHMLAttributeMap[a.nodeName]&&(a.nodeName=constants.MATHMLAttributeMap[a.nodeName])}),attributes},TreeBuilder.prototype.adjustSVGTagNameCase=function(name){return constants.SVGTagMap[name]||name},TreeBuilder.prototype.adjustSVGAttributes=function(attributes){return attributes.forEach(function(a){a.namespaceURI=\"http://www.w3.org/2000/svg\",constants.SVGAttributeMap[a.nodeName]&&(a.nodeName=constants.SVGAttributeMap[a.nodeName])}),attributes},TreeBuilder.prototype.adjustForeignAttributes=function(attributes){for(var i=0;attributes.length>i;i++){var attribute=attributes[i],adjusted=constants.ForeignAttributeMap[attribute.nodeName];adjusted&&(attribute.nodeName=adjusted.localName,attribute.prefix=adjusted.prefix,attribute.namespaceURI=adjusted.namespaceURI)}return attributes},exports.TreeBuilder=TreeBuilder},{\"./ElementStack\":1,\"./StackItem\":4,\"./Tokenizer\":5,\"./constants\":7,\"./messages.json\":8,assert:13,events:16}],7:[function(_dereq_,module,exports){exports.SVGTagMap={altglyph:\"altGlyph\",altglyphdef:\"altGlyphDef\",altglyphitem:\"altGlyphItem\",animatecolor:\"animateColor\",animatemotion:\"animateMotion\",animatetransform:\"animateTransform\",clippath:\"clipPath\",feblend:\"feBlend\",fecolormatrix:\"feColorMatrix\",fecomponenttransfer:\"feComponentTransfer\",fecomposite:\"feComposite\",feconvolvematrix:\"feConvolveMatrix\",fediffuselighting:\"feDiffuseLighting\",fedisplacementmap:\"feDisplacementMap\",fedistantlight:\"feDistantLight\",feflood:\"feFlood\",fefunca:\"feFuncA\",fefuncb:\"feFuncB\",fefuncg:\"feFuncG\",fefuncr:\"feFuncR\",fegaussianblur:\"feGaussianBlur\",feimage:\"feImage\",femerge:\"feMerge\",femergenode:\"feMergeNode\",femorphology:\"feMorphology\",feoffset:\"feOffset\",fepointlight:\"fePointLight\",fespecularlighting:\"feSpecularLighting\",fespotlight:\"feSpotLight\",fetile:\"feTile\",feturbulence:\"feTurbulence\",foreignobject:\"foreignObject\",glyphref:\"glyphRef\",lineargradient:\"linearGradient\",radialgradient:\"radialGradient\",textpath:\"textPath\"},exports.MATHMLAttributeMap={definitionurl:\"definitionURL\"},exports.SVGAttributeMap={attributename:\"attributeName\",attributetype:\"attributeType\",basefrequency:\"baseFrequency\",baseprofile:\"baseProfile\",calcmode:\"calcMode\",clippathunits:\"clipPathUnits\",contentscripttype:\"contentScriptType\",contentstyletype:\"contentStyleType\",diffuseconstant:\"diffuseConstant\",edgemode:\"edgeMode\",externalresourcesacequired:\"externalResourcesRequired\",filterres:\"filterRes\",filterunits:\"filterUnits\",glyphref:\"glyphRef\",gradienttransform:\"gradientTransform\",gradientunits:\"gradientUnits\",kernelmatrix:\"kernelMatrix\",kernelunitlength:\"kernelUnitLength\",keypoints:\"keyPoints\",keysplines:\"keySplines\",keytimes:\"keyTimes\",lengthadjust:\"lengthAdjust\",limitingconeangle:\"limitingConeAngle\",markerheight:\"markerHeight\",markerunits:\"markerUnits\",markerwidth:\"markerWidth\",maskcontentunits:\"maskContentUnits\",maskunits:\"maskUnits\",numoctaves:\"numOctaves\",pathlength:\"pathLength\",patterncontentunits:\"patternContentUnits\",patterntransform:\"patternTransform\",patternunits:\"patternUnits\",pointsatx:\"pointsAtX\",pointsaty:\"pointsAtY\",pointsatz:\"pointsAtZ\",preservealpha:\"preserveAlpha\",preserveaspectratio:\"preserveAspectRatio\",primitiveunits:\"primitiveUnits\",refx:\"refX\",refy:\"refY\",repeatcount:\"repeatCount\",repeatdur:\"repeatDur\",acequiredextensions:\"acequiredExtensions\",acequiredfeatures:\"acequiredFeatures\",specularconstant:\"specularConstant\",specularexponent:\"specularExponent\",spreadmethod:\"spreadMethod\",startoffset:\"startOffset\",stddeviation:\"stdDeviation\",stitchtiles:\"stitchTiles\",surfacescale:\"surfaceScale\",systemlanguage:\"systemLanguage\",tablevalues:\"tableValues\",targetx:\"targetX\",targety:\"targetY\",textlength:\"textLength\",viewbox:\"viewBox\",viewtarget:\"viewTarget\",xchannelselector:\"xChannelSelector\",ychannelselector:\"yChannelSelector\",zoomandpan:\"zoomAndPan\"},exports.ForeignAttributeMap={\"xlink:actuate\":{prefix:\"xlink\",localName:\"actuate\",namespaceURI:\"http://www.w3.org/1999/xlink\"},\"xlink:arcrole\":{prefix:\"xlink\",localName:\"arcrole\",namespaceURI:\"http://www.w3.org/1999/xlink\"},\"xlink:href\":{prefix:\"xlink\",localName:\"href\",namespaceURI:\"http://www.w3.org/1999/xlink\"},\"xlink:role\":{prefix:\"xlink\",localName:\"role\",namespaceURI:\"http://www.w3.org/1999/xlink\"},\"xlink:show\":{prefix:\"xlink\",localName:\"show\",namespaceURI:\"http://www.w3.org/1999/xlink\"},\"xlink:title\":{prefix:\"xlink\",localName:\"title\",namespaceURI:\"http://www.w3.org/1999/xlink\"},\"xlink:type\":{prefix:\"xlink\",localName:\"title\",namespaceURI:\"http://www.w3.org/1999/xlink\"},\"xml:base\":{prefix:\"xml\",localName:\"base\",namespaceURI:\"http://www.w3.org/XML/1998/namespace\"},\"xml:lang\":{prefix:\"xml\",localName:\"lang\",namespaceURI:\"http://www.w3.org/XML/1998/namespace\"},\"xml:space\":{prefix:\"xml\",localName:\"space\",namespaceURI:\"http://www.w3.org/XML/1998/namespace\"},xmlns:{prefix:null,localName:\"xmlns\",namespaceURI:\"http://www.w3.org/2000/xmlns/\"},\"xmlns:xlink\":{prefix:\"xmlns\",localName:\"xlink\",namespaceURI:\"http://www.w3.org/2000/xmlns/\"}}\n},{}],8:[function(_dereq_,module){module.exports={\"null-character\":\"Null character in input stream, replaced with U+FFFD.\",\"invalid-codepoint\":\"Invalid codepoint in stream\",\"incorrectly-placed-solidus\":\"Solidus (/) incorrectly placed in tag.\",\"incorrect-cr-newline-entity\":\"Incorrect CR newline entity, replaced with LF.\",\"illegal-windows-1252-entity\":\"Entity used with illegal number (windows-1252 reference).\",\"cant-convert-numeric-entity\":\"Numeric entity couldn't be converted to character (codepoint U+{charAsInt}).\",\"invalid-numeric-entity-replaced\":\"Numeric entity represents an illegal codepoint. Expanded to the C1 controls range.\",\"numeric-entity-without-semicolon\":\"Numeric entity didn't end with ';'.\",\"expected-numeric-entity-but-got-eof\":\"Numeric entity expected. Got end of file instead.\",\"expected-numeric-entity\":\"Numeric entity expected but none found.\",\"named-entity-without-semicolon\":\"Named entity didn't end with ';'.\",\"expected-named-entity\":\"Named entity expected. Got none.\",\"attributes-in-end-tag\":\"End tag contains unexpected attributes.\",\"self-closing-flag-on-end-tag\":\"End tag contains unexpected self-closing flag.\",\"bare-less-than-sign-at-eof\":\"End of file after <.\",\"expected-tag-name-but-got-right-bracket\":\"Expected tag name. Got '>' instead.\",\"expected-tag-name-but-got-question-mark\":\"Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)\",\"expected-tag-name\":\"Expected tag name. Got something else instead.\",\"expected-closing-tag-but-got-right-bracket\":\"Expected closing tag. Got '>' instead. Ignoring '</>'.\",\"expected-closing-tag-but-got-eof\":\"Expected closing tag. Unexpected end of file.\",\"expected-closing-tag-but-got-char\":\"Expected closing tag. Unexpected character '{data}' found.\",\"eof-in-tag-name\":\"Unexpected end of file in the tag name.\",\"expected-attribute-name-but-got-eof\":\"Unexpected end of file. Expected attribute name instead.\",\"eof-in-attribute-name\":\"Unexpected end of file in attribute name.\",\"invalid-character-in-attribute-name\":\"Invalid character in attribute name.\",\"duplicate-attribute\":\"Dropped duplicate attribute '{name}' on tag.\",\"expected-end-of-tag-but-got-eof\":\"Unexpected end of file. Expected = or end of tag.\",\"expected-attribute-value-but-got-eof\":\"Unexpected end of file. Expected attribute value.\",\"expected-attribute-value-but-got-right-bracket\":\"Expected attribute value. Got '>' instead.\",\"unexpected-character-in-unquoted-attribute-value\":\"Unexpected character in unquoted attribute\",\"invalid-character-after-attribute-name\":\"Unexpected character after attribute name.\",\"unexpected-character-after-attribute-value\":\"Unexpected character after attribute value.\",\"eof-in-attribute-value-double-quote\":'Unexpected end of file in attribute value (\").',\"eof-in-attribute-value-single-quote\":\"Unexpected end of file in attribute value (').\",\"eof-in-attribute-value-no-quotes\":\"Unexpected end of file in attribute value.\",\"eof-after-attribute-value\":\"Unexpected end of file after attribute value.\",\"unexpected-eof-after-solidus-in-tag\":\"Unexpected end of file in tag. Expected >.\",\"unexpected-character-after-solidus-in-tag\":\"Unexpected character after / in tag. Expected >.\",\"expected-dashes-or-doctype\":\"Expected '--' or 'DOCTYPE'. Not found.\",\"unexpected-bang-after-double-dash-in-comment\":\"Unexpected ! after -- in comment.\",\"incorrect-comment\":\"Incorrect comment.\",\"eof-in-comment\":\"Unexpected end of file in comment.\",\"eof-in-comment-end-dash\":\"Unexpected end of file in comment (-).\",\"unexpected-dash-after-double-dash-in-comment\":\"Unexpected '-' after '--' found in comment.\",\"eof-in-comment-double-dash\":\"Unexpected end of file in comment (--).\",\"eof-in-comment-end-bang-state\":\"Unexpected end of file in comment.\",\"unexpected-char-in-comment\":\"Unexpected character in comment found.\",\"need-space-after-doctype\":\"No space after literal string 'DOCTYPE'.\",\"expected-doctype-name-but-got-right-bracket\":\"Unexpected > character. Expected DOCTYPE name.\",\"expected-doctype-name-but-got-eof\":\"Unexpected end of file. Expected DOCTYPE name.\",\"eof-in-doctype-name\":\"Unexpected end of file in DOCTYPE name.\",\"eof-in-doctype\":\"Unexpected end of file in DOCTYPE.\",\"expected-space-or-right-bracket-in-doctype\":\"Expected space or '>'. Got '{data}'.\",\"unexpected-end-of-doctype\":\"Unexpected end of DOCTYPE.\",\"unexpected-char-in-doctype\":\"Unexpected character in DOCTYPE.\",\"eof-in-bogus-doctype\":\"Unexpected end of file in bogus doctype.\",\"eof-in-innerhtml\":\"Unexpected EOF in inner html mode.\",\"unexpected-doctype\":\"Unexpected DOCTYPE. Ignored.\",\"non-html-root\":\"html needs to be the first start tag.\",\"expected-doctype-but-got-eof\":\"Unexpected End of file. Expected DOCTYPE.\",\"unknown-doctype\":\"Erroneous DOCTYPE. Expected <!DOCTYPE html>.\",\"quirky-doctype\":\"Quirky doctype. Expected <!DOCTYPE html>.\",\"almost-standards-doctype\":\"Almost standards mode doctype. Expected <!DOCTYPE html>.\",\"obsolete-doctype\":\"Obsolete doctype. Expected <!DOCTYPE html>.\",\"expected-doctype-but-got-chars\":\"Non-space characters found without seeing a doctype first. Expected e.g. <!DOCTYPE html>.\",\"expected-doctype-but-got-start-tag\":\"Start tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.\",\"expected-doctype-but-got-end-tag\":\"End tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.\",\"end-tag-after-implied-root\":\"Unexpected end tag ({name}) after the (implied) root element.\",\"expected-named-closing-tag-but-got-eof\":\"Unexpected end of file. Expected end tag ({name}).\",\"two-heads-are-not-better-than-one\":\"Unexpected start tag head in existing head. Ignored.\",\"unexpected-end-tag\":\"Unexpected end tag ({name}). Ignored.\",\"unexpected-implied-end-tag\":\"End tag {name} implied, but there were open elements.\",\"unexpected-start-tag-out-of-my-head\":\"Unexpected start tag ({name}) that can be in head. Moved.\",\"unexpected-start-tag\":\"Unexpected start tag ({name}).\",\"missing-end-tag\":\"Missing end tag ({name}).\",\"missing-end-tags\":\"Missing end tags ({name}).\",\"unexpected-start-tag-implies-end-tag\":\"Unexpected start tag ({startName}) implies end tag ({endName}).\",\"unexpected-start-tag-treated-as\":\"Unexpected start tag ({originalName}). Treated as {newName}.\",\"deprecated-tag\":\"Unexpected start tag {name}. Don't use it!\",\"unexpected-start-tag-ignored\":\"Unexpected start tag {name}. Ignored.\",\"expected-one-end-tag-but-got-another\":\"Unexpected end tag ({gotName}). Missing end tag ({expectedName}).\",\"end-tag-too-early\":\"End tag ({name}) seen too early. Expected other end tag.\",\"end-tag-too-early-named\":\"Unexpected end tag ({gotName}). Expected end tag ({expectedName}.\",\"end-tag-too-early-ignored\":\"End tag ({name}) seen too early. Ignored.\",\"adoption-agency-1.1\":\"End tag ({name}) violates step 1, paragraph 1 of the adoption agency algorithm.\",\"adoption-agency-1.2\":\"End tag ({name}) violates step 1, paragraph 2 of the adoption agency algorithm.\",\"adoption-agency-1.3\":\"End tag ({name}) violates step 1, paragraph 3 of the adoption agency algorithm.\",\"adoption-agency-4.4\":\"End tag ({name}) violates step 4, paragraph 4 of the adoption agency algorithm.\",\"unexpected-end-tag-treated-as\":\"Unexpected end tag ({originalName}). Treated as {newName}.\",\"no-end-tag\":\"This element ({name}) has no end tag.\",\"unexpected-implied-end-tag-in-table\":\"Unexpected implied end tag ({name}) in the table phase.\",\"unexpected-implied-end-tag-in-table-body\":\"Unexpected implied end tag ({name}) in the table body phase.\",\"unexpected-char-implies-table-voodoo\":\"Unexpected non-space characters in table context caused voodoo mode.\",\"unexpected-hidden-input-in-table\":\"Unexpected input with type hidden in table context.\",\"unexpected-form-in-table\":\"Unexpected form in table context.\",\"unexpected-start-tag-implies-table-voodoo\":\"Unexpected start tag ({name}) in table context caused voodoo mode.\",\"unexpected-end-tag-implies-table-voodoo\":\"Unexpected end tag ({name}) in table context caused voodoo mode.\",\"unexpected-cell-in-table-body\":\"Unexpected table cell start tag ({name}) in the table body phase.\",\"unexpected-cell-end-tag\":\"Got table cell end tag ({name}) while acequired end tags are missing.\",\"unexpected-end-tag-in-table-body\":\"Unexpected end tag ({name}) in the table body phase. Ignored.\",\"unexpected-implied-end-tag-in-table-row\":\"Unexpected implied end tag ({name}) in the table row phase.\",\"unexpected-end-tag-in-table-row\":\"Unexpected end tag ({name}) in the table row phase. Ignored.\",\"unexpected-select-in-select\":\"Unexpected select start tag in the select phase treated as select end tag.\",\"unexpected-input-in-select\":\"Unexpected input start tag in the select phase.\",\"unexpected-start-tag-in-select\":\"Unexpected start tag token ({name}) in the select phase. Ignored.\",\"unexpected-end-tag-in-select\":\"Unexpected end tag ({name}) in the select phase. Ignored.\",\"unexpected-table-element-start-tag-in-select-in-table\":\"Unexpected table element start tag ({name}) in the select in table phase.\",\"unexpected-table-element-end-tag-in-select-in-table\":\"Unexpected table element end tag ({name}) in the select in table phase.\",\"unexpected-char-after-body\":\"Unexpected non-space characters in the after body phase.\",\"unexpected-start-tag-after-body\":\"Unexpected start tag token ({name}) in the after body phase.\",\"unexpected-end-tag-after-body\":\"Unexpected end tag token ({name}) in the after body phase.\",\"unexpected-char-in-frameset\":\"Unepxected characters in the frameset phase. Characters ignored.\",\"unexpected-start-tag-in-frameset\":\"Unexpected start tag token ({name}) in the frameset phase. Ignored.\",\"unexpected-frameset-in-frameset-innerhtml\":\"Unexpected end tag token (frameset in the frameset phase (innerHTML).\",\"unexpected-end-tag-in-frameset\":\"Unexpected end tag token ({name}) in the frameset phase. Ignored.\",\"unexpected-char-after-frameset\":\"Unexpected non-space characters in the after frameset phase. Ignored.\",\"unexpected-start-tag-after-frameset\":\"Unexpected start tag ({name}) in the after frameset phase. Ignored.\",\"unexpected-end-tag-after-frameset\":\"Unexpected end tag ({name}) in the after frameset phase. Ignored.\",\"expected-eof-but-got-char\":\"Unexpected non-space characters. Expected end of file.\",\"expected-eof-but-got-start-tag\":\"Unexpected start tag ({name}). Expected end of file.\",\"expected-eof-but-got-end-tag\":\"Unexpected end tag ({name}). Expected end of file.\",\"unexpected-end-table-in-caption\":\"Unexpected end table tag in caption. Generates implied end caption.\",\"end-html-in-innerhtml\":\"Unexpected html end tag in inner html mode.\",\"eof-in-table\":\"Unexpected end of file. Expected table content.\",\"eof-in-script\":\"Unexpected end of file. Expected script content.\",\"non-void-element-with-trailing-solidus\":\"Trailing solidus not allowed on element {name}.\",\"unexpected-html-element-in-foreign-content\":'HTML start tag \"{name}\" in a foreign namespace context.',\"unexpected-start-tag-in-table\":\"Unexpected {name}. Expected table content.\"}},{}],9:[function(_dereq_,module,exports){function SAXParser(){this.contentHandler=null,this._errorHandler=null,this._treeBuilder=new SAXTreeBuilder,this._tokenizer=new Tokenizer(this._treeBuilder),this._scriptingEnabled=!1}var SAXTreeBuilder=_dereq_(\"./SAXTreeBuilder\").SAXTreeBuilder,Tokenizer=_dereq_(\"../Tokenizer\").Tokenizer,TreeParser=_dereq_(\"./TreeParser\").TreeParser;SAXParser.prototype.parse=function(source){this._tokenizer.tokenize(source);var document=this._treeBuilder.document;document&&new TreeParser(this.contentHandler).parse(document)},SAXParser.prototype.parseFragment=function(source,context){this._treeBuilder.setFragmentContext(context),this._tokenizer.tokenize(source);var fragment=this._treeBuilder.getFragment();fragment&&new TreeParser(this.contentHandler).parse(fragment)},Object.defineProperty(SAXParser.prototype,\"scriptingEnabled\",{get:function(){return this._scriptingEnabled},set:function(value){this._scriptingEnabled=value,this._treeBuilder.scriptingEnabled=value}}),Object.defineProperty(SAXParser.prototype,\"errorHandler\",{get:function(){return this._errorHandler},set:function(value){this._errorHandler=value,this._treeBuilder.errorHandler=value}}),exports.SAXParser=SAXParser},{\"../Tokenizer\":5,\"./SAXTreeBuilder\":10,\"./TreeParser\":11}],10:[function(_dereq_,module,exports){function SAXTreeBuilder(){TreeBuilder.call(this)}function getAttribute(node,name){for(var i=0;node.attributes.length>i;i++){var attribute=node.attributes[i];if(attribute.nodeName===name)return attribute.nodeValue}}function Node(locator){locator?(this.columnNumber=locator.columnNumber,this.lineNumber=locator.lineNumber):(this.columnNumber=-1,this.lineNumber=-1),this.parentNode=null,this.nextSibling=null,this.firstChild=null}function ParentNode(locator){Node.call(this,locator),this.lastChild=null,this._endLocator=null}function Document(locator){ParentNode.call(this,locator),this.nodeType=NodeType.DOCUMENT}function DocumentFragment(){ParentNode.call(this,new Locator),this.nodeType=NodeType.DOCUMENT_FRAGMENT}function Element(locator,uri,localName,qName,atts,prefixMappings){ParentNode.call(this,locator),this.uri=uri,this.localName=localName,this.qName=qName,this.attributes=atts,this.prefixMappings=prefixMappings,this.nodeType=NodeType.ELEMENT}function Characters(locator,data){Node.call(this,locator),this.data=data,this.nodeType=NodeType.CHARACTERS}function IgnorableWhitespace(locator,data){Node.call(this,locator),this.data=data,this.nodeType=NodeType.IGNORABLE_WHITESPACE}function Comment(locator,data){Node.call(this,locator),this.data=data,this.nodeType=NodeType.COMMENT}function CDATA(locator){ParentNode.call(this,locator),this.nodeType=NodeType.CDATA}function Entity(name){ParentNode.call(this),this.name=name,this.nodeType=NodeType.ENTITY}function SkippedEntity(name){Node.call(this),this.name=name,this.nodeType=NodeType.SKIPPED_ENTITY}function ProcessingInstruction(target,data){Node.call(this),this.target=target,this.data=data}function DTD(name,publicIdentifier,systemIdentifier){ParentNode.call(this),this.name=name,this.publicIdentifier=publicIdentifier,this.systemIdentifier=systemIdentifier,this.nodeType=NodeType.DTD}var util=_dereq_(\"util\"),TreeBuilder=_dereq_(\"../TreeBuilder\").TreeBuilder;util.inherits(SAXTreeBuilder,TreeBuilder),SAXTreeBuilder.prototype.start=function(){this.document=new Document(this.tokenizer)},SAXTreeBuilder.prototype.end=function(){this.document.endLocator=this.tokenizer},SAXTreeBuilder.prototype.insertDoctype=function(name,publicId,systemId){var doctype=new DTD(this.tokenizer,name,publicId,systemId);doctype.endLocator=this.tokenizer,this.document.appendChild(doctype)},SAXTreeBuilder.prototype.createElement=function(namespaceURI,localName,attributes){var element=new Element(this.tokenizer,namespaceURI,localName,localName,attributes||[]);return element},SAXTreeBuilder.prototype.insertComment=function(data,parent){parent||(parent=this.currentStackItem());var comment=new Comment(this.tokenizer,data);parent.appendChild(comment)},SAXTreeBuilder.prototype.appendCharacters=function(parent,data){var text=new Characters(this.tokenizer,data);parent.appendChild(text)},SAXTreeBuilder.prototype.insertText=function(data){if(this.redirectAttachToFosterParent&&this.openElements.top.isFosterParenting()){var tableIndex=this.openElements.findIndex(\"table\"),tableItem=this.openElements.item(tableIndex),table=tableItem.node;if(0===tableIndex)return this.appendCharacters(table,data);var text=new Characters(this.tokenizer,data),parent=table.parentNode;if(parent)return parent.insertBetween(text,table.previousSibling,table),void 0;var stackParent=this.openElements.item(tableIndex-1).node;return stackParent.appendChild(text),void 0}this.appendCharacters(this.currentStackItem().node,data)},SAXTreeBuilder.prototype.attachNode=function(node,parent){parent.appendChild(node)},SAXTreeBuilder.prototype.attachNodeToFosterParent=function(child,table,stackParent){var parent=table.parentNode;parent?parent.insertBetween(child,table.previousSibling,table):stackParent.appendChild(child)},SAXTreeBuilder.prototype.detachFromParent=function(element){element.detach()},SAXTreeBuilder.prototype.reparentChildren=function(oldParent,newParent){newParent.appendChildren(oldParent.firstChild)},SAXTreeBuilder.prototype.getFragment=function(){var fragment=new DocumentFragment;return this.reparentChildren(this.openElements.rootNode,fragment),fragment},SAXTreeBuilder.prototype.addAttributesToElement=function(element,attributes){for(var i=0;attributes.length>i;i++){var attribute=attributes[i];getAttribute(element,attribute.nodeName)||element.attributes.push(attribute)}};var NodeType={CDATA:1,CHARACTERS:2,COMMENT:3,DOCUMENT:4,DOCUMENT_FRAGMENT:5,DTD:6,ELEMENT:7,ENTITY:8,IGNORABLE_WHITESPACE:9,PROCESSING_INSTRUCTION:10,SKIPPED_ENTITY:11};Node.prototype.visit=function(){throw Error(\"Not Implemented\")},Node.prototype.revisit=function(){},Node.prototype.detach=function(){null!==this.parentNode&&(this.parentNode.removeChild(this),this.parentNode=null)},Object.defineProperty(Node.prototype,\"previousSibling\",{get:function(){for(var prev=null,next=this.parentNode.firstChild;;){if(this==next)return prev;prev=next,next=next.nextSibling}}}),ParentNode.prototype=Object.create(Node.prototype),ParentNode.prototype.insertBefore=function(child,sibling){if(!sibling)return this.appendChild(child);if(child.detach(),child.parentNode=this,this.firstChild==sibling)child.nextSibling=sibling,this.firstChild=child;else{for(var prev=this.firstChild,next=this.firstChild.nextSibling;next!=sibling;)prev=next,next=next.nextSibling;prev.nextSibling=child,child.nextSibling=next}return child},ParentNode.prototype.insertBetween=function(child,prev,next){return next?(child.detach(),child.parentNode=this,child.nextSibling=next,prev?prev.nextSibling=child:firstChild=child,child):this.appendChild(child)},ParentNode.prototype.appendChild=function(child){return child.detach(),child.parentNode=this,this.firstChild?this.lastChild.nextSibling=child:this.firstChild=child,this.lastChild=child,child},ParentNode.prototype.appendChildren=function(parent){var child=parent.firstChild;if(child){var another=parent;this.firstChild?this.lastChild.nextSibling=child:this.firstChild=child,this.lastChild=another.lastChild;do child.parentNode=this;while(child=child.nextSibling);another.firstChild=null,another.lastChild=null}},ParentNode.prototype.removeChild=function(node){if(this.firstChild==node)this.firstChild=node.nextSibling,this.lastChild==node&&(this.lastChild=null);else{for(var prev=this.firstChild,next=this.firstChild.nextSibling;next!=node;)prev=next,next=next.nextSibling;prev.nextSibling=node.nextSibling,this.lastChild==node&&(this.lastChild=prev)}return node.parentNode=null,node},Object.defineProperty(ParentNode.prototype,\"endLocator\",{get:function(){return this._endLocator},set:function(endLocator){this._endLocator={lineNumber:endLocator.lineNumber,columnNumber:endLocator.columnNumber}}}),Document.prototype=Object.create(ParentNode.prototype),Document.prototype.visit=function(treeParser){treeParser.startDocument(this)},Document.prototype.revisit=function(treeParser){treeParser.endDocument(this.endLocator)},DocumentFragment.prototype=Object.create(ParentNode.prototype),DocumentFragment.prototype.visit=function(){},Element.prototype=Object.create(ParentNode.prototype),Element.prototype.visit=function(treeParser){if(this.prefixMappings)for(var key in prefixMappings){var mapping=prefixMappings[key];treeParser.startPrefixMapping(mapping.getPrefix(),mapping.getUri(),this)}treeParser.startElement(this.uri,this.localName,this.qName,this.attributes,this)},Element.prototype.revisit=function(treeParser){if(treeParser.endElement(this.uri,this.localName,this.qName,this.endLocator),this.prefixMappings)for(var key in prefixMappings){var mapping=prefixMappings[key];treeParser.endPrefixMapping(mapping.getPrefix(),this.endLocator)}},Characters.prototype=Object.create(Node.prototype),Characters.prototype.visit=function(treeParser){treeParser.characters(this.data,0,this.data.length,this)},IgnorableWhitespace.prototype=Object.create(Node.prototype),IgnorableWhitespace.prototype.visit=function(treeParser){treeParser.ignorableWhitespace(this.data,0,this.data.length,this)},Comment.prototype=Object.create(Node.prototype),Comment.prototype.visit=function(treeParser){treeParser.comment(this.data,0,this.data.length,this)},CDATA.prototype=Object.create(ParentNode.prototype),CDATA.prototype.visit=function(treeParser){treeParser.startCDATA(this)},CDATA.prototype.revisit=function(treeParser){treeParser.endCDATA(this.endLocator)},Entity.prototype=Object.create(ParentNode.prototype),Entity.prototype.visit=function(treeParser){treeParser.startEntity(this.name,this)},Entity.prototype.revisit=function(treeParser){treeParser.endEntity(this.name)},SkippedEntity.prototype=Object.create(Node.prototype),SkippedEntity.prototype.visit=function(treeParser){treeParser.skippedEntity(this.name,this)},ProcessingInstruction.prototype=Object.create(Node.prototype),ProcessingInstruction.prototype.visit=function(treeParser){treeParser.processingInstruction(this.target,this.data,this)},ProcessingInstruction.prototype.getNodeType=function(){return NodeType.PROCESSING_INSTRUCTION},DTD.prototype=Object.create(ParentNode.prototype),DTD.prototype.visit=function(treeParser){treeParser.startDTD(this.name,this.publicIdentifier,this.systemIdentifier,this)},DTD.prototype.revisit=function(treeParser){treeParser.endDTD()},exports.SAXTreeBuilder=SAXTreeBuilder},{\"../TreeBuilder\":6,util:20}],11:[function(_dereq_,module,exports){function TreeParser(contentHandler,lexicalHandler){if(this.contentHandler,this.lexicalHandler,this.locatorDelegate,!contentHandler)throw new IllegalArgumentException(\"contentHandler was null.\");this.contentHandler=contentHandler,this.lexicalHandler=lexicalHandler?lexicalHandler:new NullLexicalHandler}function NullLexicalHandler(){}TreeParser.prototype.parse=function(node){this.contentHandler.documentLocator=this;for(var next,current=node;;)if(current.visit(this),next=current.firstChild)current=next;else for(;;){if(current.revisit(this),current==node)return;if(next=current.nextSibling){current=next;break}current=current.parentNode}},TreeParser.prototype.characters=function(ch,start,length,locator){this.locatorDelegate=locator,this.contentHandler.characters(ch,start,length)},TreeParser.prototype.endDocument=function(locator){this.locatorDelegate=locator,this.contentHandler.endDocument()},TreeParser.prototype.endElement=function(uri,localName,qName,locator){this.locatorDelegate=locator,this.contentHandler.endElement(uri,localName,qName)},TreeParser.prototype.endPrefixMapping=function(prefix,locator){this.locatorDelegate=locator,this.contentHandler.endPrefixMapping(prefix)},TreeParser.prototype.ignorableWhitespace=function(ch,start,length,locator){this.locatorDelegate=locator,this.contentHandler.ignorableWhitespace(ch,start,length)},TreeParser.prototype.processingInstruction=function(target,data,locator){this.locatorDelegate=locator,this.contentHandler.processingInstruction(target,data)},TreeParser.prototype.skippedEntity=function(name,locator){this.locatorDelegate=locator,this.contentHandler.skippedEntity(name)},TreeParser.prototype.startDocument=function(locator){this.locatorDelegate=locator,this.contentHandler.startDocument()},TreeParser.prototype.startElement=function(uri,localName,qName,atts,locator){this.locatorDelegate=locator,this.contentHandler.startElement(uri,localName,qName,atts)},TreeParser.prototype.startPrefixMapping=function(prefix,uri,locator){this.locatorDelegate=locator,this.contentHandler.startPrefixMapping(prefix,uri)},TreeParser.prototype.comment=function(ch,start,length,locator){this.locatorDelegate=locator,this.lexicalHandler.comment(ch,start,length)},TreeParser.prototype.endCDATA=function(locator){this.locatorDelegate=locator,this.lexicalHandler.endCDATA()},TreeParser.prototype.endDTD=function(locator){this.locatorDelegate=locator,this.lexicalHandler.endDTD()},TreeParser.prototype.endEntity=function(name,locator){this.locatorDelegate=locator,this.lexicalHandler.endEntity(name)},TreeParser.prototype.startCDATA=function(locator){this.locatorDelegate=locator,this.lexicalHandler.startCDATA()},TreeParser.prototype.startDTD=function(name,publicId,systemId,locator){this.locatorDelegate=locator,this.lexicalHandler.startDTD(name,publicId,systemId)},TreeParser.prototype.startEntity=function(name,locator){this.locatorDelegate=locator,this.lexicalHandler.startEntity(name)},Object.defineProperty(TreeParser.prototype,\"columnNumber\",{get:function(){return this.locatorDelegate?this.locatorDelegate.columnNumber:-1}}),Object.defineProperty(TreeParser.prototype,\"lineNumber\",{get:function(){return this.locatorDelegate?this.locatorDelegate.lineNumber:-1}}),NullLexicalHandler.prototype.comment=function(){},NullLexicalHandler.prototype.endCDATA=function(){},NullLexicalHandler.prototype.endDTD=function(){},NullLexicalHandler.prototype.endEntity=function(){},NullLexicalHandler.prototype.startCDATA=function(){},NullLexicalHandler.prototype.startDTD=function(){},NullLexicalHandler.prototype.startEntity=function(){},exports.TreeParser=TreeParser},{}],12:[function(_dereq_,module){module.exports={\"Aacute;\":\"Á\",Aacute:\"Á\",\"aacute;\":\"á\",aacute:\"á\",\"Abreve;\":\"Ă\",\"abreve;\":\"ă\",\"ac;\":\"∾\",\"acd;\":\"∿\",\"acE;\":\"∾̳\",\"Acirc;\":\"Â\",Acirc:\"Â\",\"acirc;\":\"â\",acirc:\"â\",\"acute;\":\"´\",acute:\"´\",\"Acy;\":\"А\",\"acy;\":\"а\",\"AElig;\":\"Æ\",AElig:\"Æ\",\"aelig;\":\"æ\",aelig:\"æ\",\"af;\":\"\",\"Afr;\":\"𝔄\",\"afr;\":\"𝔞\",\"Agrave;\":\"À\",Agrave:\"À\",\"agrave;\":\"à\",agrave:\"à\",\"alefsym;\":\"ℵ\",\"aleph;\":\"ℵ\",\"Alpha;\":\"Α\",\"alpha;\":\"α\",\"Amacr;\":\"Ā\",\"amacr;\":\"ā\",\"amalg;\":\"⨿\",\"amp;\":\"&\",amp:\"&\",\"AMP;\":\"&\",AMP:\"&\",\"andand;\":\"⩕\",\"And;\":\"⩓\",\"and;\":\"∧\",\"andd;\":\"⩜\",\"andslope;\":\"⩘\",\"andv;\":\"⩚\",\"ang;\":\"∠\",\"ange;\":\"⦤\",\"angle;\":\"∠\",\"angmsdaa;\":\"⦨\",\"angmsdab;\":\"⦩\",\"angmsdac;\":\"⦪\",\"angmsdad;\":\"⦫\",\"angmsdae;\":\"⦬\",\"angmsdaf;\":\"⦭\",\"angmsdag;\":\"⦮\",\"angmsdah;\":\"⦯\",\"angmsd;\":\"∡\",\"angrt;\":\"∟\",\"angrtvb;\":\"⊾\",\"angrtvbd;\":\"⦝\",\"angsph;\":\"∢\",\"angst;\":\"Å\",\"angzarr;\":\"⍼\",\"Aogon;\":\"Ą\",\"aogon;\":\"ą\",\"Aopf;\":\"𝔸\",\"aopf;\":\"𝕒\",\"apacir;\":\"⩯\",\"ap;\":\"≈\",\"apE;\":\"⩰\",\"ape;\":\"≊\",\"apid;\":\"≋\",\"apos;\":\"'\",\"ApplyFunction;\":\"\",\"approx;\":\"≈\",\"approxeq;\":\"≊\",\"Aring;\":\"Å\",Aring:\"Å\",\"aring;\":\"å\",aring:\"å\",\"Ascr;\":\"𝒜\",\"ascr;\":\"𝒶\",\"Assign;\":\"≔\",\"ast;\":\"*\",\"asymp;\":\"≈\",\"asympeq;\":\"≍\",\"Atilde;\":\"Ã\",Atilde:\"Ã\",\"atilde;\":\"ã\",atilde:\"ã\",\"Auml;\":\"Ä\",Auml:\"Ä\",\"auml;\":\"ä\",auml:\"ä\",\"awconint;\":\"∳\",\"awint;\":\"⨑\",\"backcong;\":\"≌\",\"backepsilon;\":\"϶\",\"backprime;\":\"‵\",\"backsim;\":\"∽\",\"backsimeq;\":\"⋍\",\"Backslash;\":\"∖\",\"Barv;\":\"⫧\",\"barvee;\":\"⊽\",\"barwed;\":\"⌅\",\"Barwed;\":\"⌆\",\"barwedge;\":\"⌅\",\"bbrk;\":\"⎵\",\"bbrktbrk;\":\"⎶\",\"bcong;\":\"≌\",\"Bcy;\":\"Б\",\"bcy;\":\"б\",\"bdquo;\":\"„\",\"becaus;\":\"∵\",\"because;\":\"∵\",\"Because;\":\"∵\",\"bemptyv;\":\"⦰\",\"bepsi;\":\"϶\",\"bernou;\":\"ℬ\",\"Bernoullis;\":\"ℬ\",\"Beta;\":\"Β\",\"beta;\":\"β\",\"beth;\":\"ℶ\",\"between;\":\"≬\",\"Bfr;\":\"𝔅\",\"bfr;\":\"𝔟\",\"bigcap;\":\"⋂\",\"bigcirc;\":\"◯\",\"bigcup;\":\"⋃\",\"bigodot;\":\"⨀\",\"bigoplus;\":\"⨁\",\"bigotimes;\":\"⨂\",\"bigsqcup;\":\"⨆\",\"bigstar;\":\"★\",\"bigtriangledown;\":\"▽\",\"bigtriangleup;\":\"△\",\"biguplus;\":\"⨄\",\"bigvee;\":\"⋁\",\"bigwedge;\":\"⋀\",\"bkarow;\":\"⤍\",\"blacklozenge;\":\"⧫\",\"blacksquare;\":\"▪\",\"blacktriangle;\":\"▴\",\"blacktriangledown;\":\"▾\",\"blacktriangleleft;\":\"◂\",\"blacktriangleright;\":\"▸\",\"blank;\":\"␣\",\"blk12;\":\"▒\",\"blk14;\":\"░\",\"blk34;\":\"▓\",\"block;\":\"█\",\"bne;\":\"=⃥\",\"bnequiv;\":\"≡⃥\",\"bNot;\":\"⫭\",\"bnot;\":\"⌐\",\"Bopf;\":\"𝔹\",\"bopf;\":\"𝕓\",\"bot;\":\"⊥\",\"bottom;\":\"⊥\",\"bowtie;\":\"⋈\",\"boxbox;\":\"⧉\",\"boxdl;\":\"┐\",\"boxdL;\":\"╕\",\"boxDl;\":\"╖\",\"boxDL;\":\"╗\",\"boxdr;\":\"┌\",\"boxdR;\":\"╒\",\"boxDr;\":\"╓\",\"boxDR;\":\"╔\",\"boxh;\":\"─\",\"boxH;\":\"═\",\"boxhd;\":\"┬\",\"boxHd;\":\"╤\",\"boxhD;\":\"╥\",\"boxHD;\":\"╦\",\"boxhu;\":\"┴\",\"boxHu;\":\"╧\",\"boxhU;\":\"╨\",\"boxHU;\":\"╩\",\"boxminus;\":\"⊟\",\"boxplus;\":\"⊞\",\"boxtimes;\":\"⊠\",\"boxul;\":\"┘\",\"boxuL;\":\"╛\",\"boxUl;\":\"╜\",\"boxUL;\":\"╝\",\"boxur;\":\"└\",\"boxuR;\":\"╘\",\"boxUr;\":\"╙\",\"boxUR;\":\"╚\",\"boxv;\":\"│\",\"boxV;\":\"║\",\"boxvh;\":\"┼\",\"boxvH;\":\"╪\",\"boxVh;\":\"╫\",\"boxVH;\":\"╬\",\"boxvl;\":\"┤\",\"boxvL;\":\"╡\",\"boxVl;\":\"╢\",\"boxVL;\":\"╣\",\"boxvr;\":\"├\",\"boxvR;\":\"╞\",\"boxVr;\":\"╟\",\"boxVR;\":\"╠\",\"bprime;\":\"‵\",\"breve;\":\"˘\",\"Breve;\":\"˘\",\"brvbar;\":\"¦\",brvbar:\"¦\",\"bscr;\":\"𝒷\",\"Bscr;\":\"ℬ\",\"bsemi;\":\"⁏\",\"bsim;\":\"∽\",\"bsime;\":\"⋍\",\"bsolb;\":\"⧅\",\"bsol;\":\"\\\\\",\"bsolhsub;\":\"⟈\",\"bull;\":\"•\",\"bullet;\":\"•\",\"bump;\":\"≎\",\"bumpE;\":\"⪮\",\"bumpe;\":\"≏\",\"Bumpeq;\":\"≎\",\"bumpeq;\":\"≏\",\"Cacute;\":\"Ć\",\"cacute;\":\"ć\",\"capand;\":\"⩄\",\"capbrcup;\":\"⩉\",\"capcap;\":\"⩋\",\"cap;\":\"∩\",\"Cap;\":\"⋒\",\"capcup;\":\"⩇\",\"capdot;\":\"⩀\",\"CapitalDifferentialD;\":\"ⅅ\",\"caps;\":\"∩︀\",\"caret;\":\"⁁\",\"caron;\":\"ˇ\",\"Cayleys;\":\"ℭ\",\"ccaps;\":\"⩍\",\"Ccaron;\":\"Č\",\"ccaron;\":\"č\",\"Ccedil;\":\"Ç\",Ccedil:\"Ç\",\"ccedil;\":\"ç\",ccedil:\"ç\",\"Ccirc;\":\"Ĉ\",\"ccirc;\":\"ĉ\",\"Cconint;\":\"∰\",\"ccups;\":\"⩌\",\"ccupssm;\":\"⩐\",\"Cdot;\":\"Ċ\",\"cdot;\":\"ċ\",\"cedil;\":\"¸\",cedil:\"¸\",\"Cedilla;\":\"¸\",\"cemptyv;\":\"⦲\",\"cent;\":\"¢\",cent:\"¢\",\"centerdot;\":\"·\",\"CenterDot;\":\"·\",\"cfr;\":\"𝔠\",\"Cfr;\":\"ℭ\",\"CHcy;\":\"Ч\",\"chcy;\":\"ч\",\"check;\":\"✓\",\"checkmark;\":\"✓\",\"Chi;\":\"Χ\",\"chi;\":\"χ\",\"circ;\":\"ˆ\",\"circeq;\":\"≗\",\"circlearrowleft;\":\"↺\",\"circlearrowright;\":\"↻\",\"circledast;\":\"⊛\",\"circledcirc;\":\"⊚\",\"circleddash;\":\"⊝\",\"CircleDot;\":\"⊙\",\"circledR;\":\"®\",\"circledS;\":\"Ⓢ\",\"CircleMinus;\":\"⊖\",\"CirclePlus;\":\"⊕\",\"CircleTimes;\":\"⊗\",\"cir;\":\"○\",\"cirE;\":\"⧃\",\"cire;\":\"≗\",\"cirfnint;\":\"⨐\",\"cirmid;\":\"⫯\",\"cirscir;\":\"⧂\",\"ClockwiseContourIntegral;\":\"∲\",\"CloseCurlyDoubleQuote;\":\"”\",\"CloseCurlyQuote;\":\"’\",\"clubs;\":\"♣\",\"clubsuit;\":\"♣\",\"colon;\":\":\",\"Colon;\":\"∷\",\"Colone;\":\"⩴\",\"colone;\":\"≔\",\"coloneq;\":\"≔\",\"comma;\":\",\",\"commat;\":\"@\",\"comp;\":\"∁\",\"compfn;\":\"∘\",\"complement;\":\"∁\",\"complexes;\":\"ℂ\",\"cong;\":\"≅\",\"congdot;\":\"⩭\",\"Congruent;\":\"≡\",\"conint;\":\"∮\",\"Conint;\":\"∯\",\"ContourIntegral;\":\"∮\",\"copf;\":\"𝕔\",\"Copf;\":\"ℂ\",\"coprod;\":\"∐\",\"Coproduct;\":\"∐\",\"copy;\":\"©\",copy:\"©\",\"COPY;\":\"©\",COPY:\"©\",\"copysr;\":\"℗\",\"CounterClockwiseContourIntegral;\":\"∳\",\"crarr;\":\"↵\",\"cross;\":\"✗\",\"Cross;\":\"⨯\",\"Cscr;\":\"𝒞\",\"cscr;\":\"𝒸\",\"csub;\":\"⫏\",\"csube;\":\"⫑\",\"csup;\":\"⫐\",\"csupe;\":\"⫒\",\"ctdot;\":\"⋯\",\"cudarrl;\":\"⤸\",\"cudarrr;\":\"⤵\",\"cuepr;\":\"⋞\",\"cuesc;\":\"⋟\",\"cularr;\":\"↶\",\"cularrp;\":\"⤽\",\"cupbrcap;\":\"⩈\",\"cupcap;\":\"⩆\",\"CupCap;\":\"≍\",\"cup;\":\"∪\",\"Cup;\":\"⋓\",\"cupcup;\":\"⩊\",\"cupdot;\":\"⊍\",\"cupor;\":\"⩅\",\"cups;\":\"∪︀\",\"curarr;\":\"↷\",\"curarrm;\":\"⤼\",\"curlyeqprec;\":\"⋞\",\"curlyeqsucc;\":\"⋟\",\"curlyvee;\":\"⋎\",\"curlywedge;\":\"⋏\",\"curren;\":\"¤\",curren:\"¤\",\"curvearrowleft;\":\"↶\",\"curvearrowright;\":\"↷\",\"cuvee;\":\"⋎\",\"cuwed;\":\"⋏\",\"cwconint;\":\"∲\",\"cwint;\":\"∱\",\"cylcty;\":\"⌭\",\"dagger;\":\"†\",\"Dagger;\":\"‡\",\"daleth;\":\"ℸ\",\"darr;\":\"↓\",\"Darr;\":\"↡\",\"dArr;\":\"⇓\",\"dash;\":\"‐\",\"Dashv;\":\"⫤\",\"dashv;\":\"⊣\",\"dbkarow;\":\"⤏\",\"dblac;\":\"˝\",\"Dcaron;\":\"Ď\",\"dcaron;\":\"ď\",\"Dcy;\":\"Д\",\"dcy;\":\"д\",\"ddagger;\":\"‡\",\"ddarr;\":\"⇊\",\"DD;\":\"ⅅ\",\"dd;\":\"ⅆ\",\"DDotrahd;\":\"⤑\",\"ddotseq;\":\"⩷\",\"deg;\":\"°\",deg:\"°\",\"Del;\":\"∇\",\"Delta;\":\"Δ\",\"delta;\":\"δ\",\"demptyv;\":\"⦱\",\"dfisht;\":\"⥿\",\"Dfr;\":\"𝔇\",\"dfr;\":\"𝔡\",\"dHar;\":\"⥥\",\"dharl;\":\"⇃\",\"dharr;\":\"⇂\",\"DiacriticalAcute;\":\"´\",\"DiacriticalDot;\":\"˙\",\"DiacriticalDoubleAcute;\":\"˝\",\"DiacriticalGrave;\":\"`\",\"DiacriticalTilde;\":\"˜\",\"diam;\":\"⋄\",\"diamond;\":\"⋄\",\"Diamond;\":\"⋄\",\"diamondsuit;\":\"♦\",\"diams;\":\"♦\",\"die;\":\"¨\",\"DifferentialD;\":\"ⅆ\",\"digamma;\":\"ϝ\",\"disin;\":\"⋲\",\"div;\":\"÷\",\"divide;\":\"÷\",divide:\"÷\",\"divideontimes;\":\"⋇\",\"divonx;\":\"⋇\",\"DJcy;\":\"Ђ\",\"djcy;\":\"ђ\",\"dlcorn;\":\"⌞\",\"dlcrop;\":\"⌍\",\"dollar;\":\"$\",\"Dopf;\":\"𝔻\",\"dopf;\":\"𝕕\",\"Dot;\":\"¨\",\"dot;\":\"˙\",\"DotDot;\":\"⃜\",\"doteq;\":\"≐\",\"doteqdot;\":\"≑\",\"DotEqual;\":\"≐\",\"dotminus;\":\"∸\",\"dotplus;\":\"∔\",\"dotsquare;\":\"⊡\",\"doublebarwedge;\":\"⌆\",\"DoubleContourIntegral;\":\"∯\",\"DoubleDot;\":\"¨\",\"DoubleDownArrow;\":\"⇓\",\"DoubleLeftArrow;\":\"⇐\",\"DoubleLeftRightArrow;\":\"⇔\",\"DoubleLeftTee;\":\"⫤\",\"DoubleLongLeftArrow;\":\"⟸\",\"DoubleLongLeftRightArrow;\":\"⟺\",\"DoubleLongRightArrow;\":\"⟹\",\"DoubleRightArrow;\":\"⇒\",\"DoubleRightTee;\":\"⊨\",\"DoubleUpArrow;\":\"⇑\",\"DoubleUpDownArrow;\":\"⇕\",\"DoubleVerticalBar;\":\"∥\",\"DownArrowBar;\":\"⤓\",\"downarrow;\":\"↓\",\"DownArrow;\":\"↓\",\"Downarrow;\":\"⇓\",\"DownArrowUpArrow;\":\"⇵\",\"DownBreve;\":\"̑\",\"downdownarrows;\":\"⇊\",\"downharpoonleft;\":\"⇃\",\"downharpoonright;\":\"⇂\",\"DownLeftRightVector;\":\"⥐\",\"DownLeftTeeVector;\":\"⥞\",\"DownLeftVectorBar;\":\"⥖\",\"DownLeftVector;\":\"↽\",\"DownRightTeeVector;\":\"⥟\",\"DownRightVectorBar;\":\"⥗\",\"DownRightVector;\":\"⇁\",\"DownTeeArrow;\":\"↧\",\"DownTee;\":\"⊤\",\"drbkarow;\":\"⤐\",\"drcorn;\":\"⌟\",\"drcrop;\":\"⌌\",\"Dscr;\":\"𝒟\",\"dscr;\":\"𝒹\",\"DScy;\":\"Ѕ\",\"dscy;\":\"ѕ\",\"dsol;\":\"⧶\",\"Dstrok;\":\"Đ\",\"dstrok;\":\"đ\",\"dtdot;\":\"⋱\",\"dtri;\":\"▿\",\"dtrif;\":\"▾\",\"duarr;\":\"⇵\",\"duhar;\":\"⥯\",\"dwangle;\":\"⦦\",\"DZcy;\":\"Џ\",\"dzcy;\":\"џ\",\"dzigrarr;\":\"⟿\",\"Eacute;\":\"É\",Eacute:\"É\",\"eacute;\":\"é\",eacute:\"é\",\"easter;\":\"⩮\",\"Ecaron;\":\"Ě\",\"ecaron;\":\"ě\",\"Ecirc;\":\"Ê\",Ecirc:\"Ê\",\"ecirc;\":\"ê\",ecirc:\"ê\",\"ecir;\":\"≖\",\"ecolon;\":\"≕\",\"Ecy;\":\"Э\",\"ecy;\":\"э\",\"eDDot;\":\"⩷\",\"Edot;\":\"Ė\",\"edot;\":\"ė\",\"eDot;\":\"≑\",\"ee;\":\"ⅇ\",\"efDot;\":\"≒\",\"Efr;\":\"𝔈\",\"efr;\":\"𝔢\",\"eg;\":\"⪚\",\"Egrave;\":\"È\",Egrave:\"È\",\"egrave;\":\"è\",egrave:\"è\",\"egs;\":\"⪖\",\"egsdot;\":\"⪘\",\"el;\":\"⪙\",\"Element;\":\"∈\",\"elinters;\":\"⏧\",\"ell;\":\"ℓ\",\"els;\":\"⪕\",\"elsdot;\":\"⪗\",\"Emacr;\":\"Ē\",\"emacr;\":\"ē\",\"empty;\":\"∅\",\"emptyset;\":\"∅\",\"EmptySmallSquare;\":\"◻\",\"emptyv;\":\"∅\",\"EmptyVerySmallSquare;\":\"▫\",\"emsp13;\":\" \",\"emsp14;\":\" \",\"emsp;\":\" \",\"ENG;\":\"Ŋ\",\"eng;\":\"ŋ\",\"ensp;\":\" \",\"Eogon;\":\"Ę\",\"eogon;\":\"ę\",\"Eopf;\":\"𝔼\",\"eopf;\":\"𝕖\",\"epar;\":\"⋕\",\"eparsl;\":\"⧣\",\"eplus;\":\"⩱\",\"epsi;\":\"ε\",\"Epsilon;\":\"Ε\",\"epsilon;\":\"ε\",\"epsiv;\":\"ϵ\",\"eqcirc;\":\"≖\",\"eqcolon;\":\"≕\",\"eqsim;\":\"≂\",\"eqslantgtr;\":\"⪖\",\"eqslantless;\":\"⪕\",\"Equal;\":\"⩵\",\"equals;\":\"=\",\"EqualTilde;\":\"≂\",\"equest;\":\"≟\",\"Equilibrium;\":\"⇌\",\"equiv;\":\"≡\",\"equivDD;\":\"⩸\",\"eqvparsl;\":\"⧥\",\"erarr;\":\"⥱\",\"erDot;\":\"≓\",\"escr;\":\"ℯ\",\"Escr;\":\"ℰ\",\"esdot;\":\"≐\",\"Esim;\":\"⩳\",\"esim;\":\"≂\",\"Eta;\":\"Η\",\"eta;\":\"η\",\"ETH;\":\"Ð\",ETH:\"Ð\",\"eth;\":\"ð\",eth:\"ð\",\"Euml;\":\"Ë\",Euml:\"Ë\",\"euml;\":\"ë\",euml:\"ë\",\"euro;\":\"€\",\"excl;\":\"!\",\"exist;\":\"∃\",\"Exists;\":\"∃\",\"expectation;\":\"ℰ\",\"exponentiale;\":\"ⅇ\",\"ExponentialE;\":\"ⅇ\",\"fallingdotseq;\":\"≒\",\"Fcy;\":\"Ф\",\"fcy;\":\"ф\",\"female;\":\"♀\",\"ffilig;\":\"ffi\",\"fflig;\":\"ff\",\"ffllig;\":\"ffl\",\"Ffr;\":\"𝔉\",\"ffr;\":\"𝔣\",\"filig;\":\"fi\",\"FilledSmallSquare;\":\"◼\",\"FilledVerySmallSquare;\":\"▪\",\"fjlig;\":\"fj\",\"flat;\":\"♭\",\"fllig;\":\"fl\",\"fltns;\":\"▱\",\"fnof;\":\"ƒ\",\"Fopf;\":\"𝔽\",\"fopf;\":\"𝕗\",\"forall;\":\"∀\",\"ForAll;\":\"∀\",\"fork;\":\"⋔\",\"forkv;\":\"⫙\",\"Fouriertrf;\":\"ℱ\",\"fpartint;\":\"⨍\",\"frac12;\":\"½\",frac12:\"½\",\"frac13;\":\"⅓\",\"frac14;\":\"¼\",frac14:\"¼\",\"frac15;\":\"⅕\",\"frac16;\":\"⅙\",\"frac18;\":\"⅛\",\"frac23;\":\"⅔\",\"frac25;\":\"⅖\",\"frac34;\":\"¾\",frac34:\"¾\",\"frac35;\":\"⅗\",\"frac38;\":\"⅜\",\"frac45;\":\"⅘\",\"frac56;\":\"⅚\",\"frac58;\":\"⅝\",\"frac78;\":\"⅞\",\"frasl;\":\"⁄\",\"frown;\":\"⌢\",\"fscr;\":\"𝒻\",\"Fscr;\":\"ℱ\",\"gacute;\":\"ǵ\",\"Gamma;\":\"Γ\",\"gamma;\":\"γ\",\"Gammad;\":\"Ϝ\",\"gammad;\":\"ϝ\",\"gap;\":\"⪆\",\"Gbreve;\":\"Ğ\",\"gbreve;\":\"ğ\",\"Gcedil;\":\"Ģ\",\"Gcirc;\":\"Ĝ\",\"gcirc;\":\"ĝ\",\"Gcy;\":\"Г\",\"gcy;\":\"г\",\"Gdot;\":\"Ġ\",\"gdot;\":\"ġ\",\"ge;\":\"≥\",\"gE;\":\"≧\",\"gEl;\":\"⪌\",\"gel;\":\"⋛\",\"geq;\":\"≥\",\"geqq;\":\"≧\",\"geqslant;\":\"⩾\",\"gescc;\":\"⪩\",\"ges;\":\"⩾\",\"gesdot;\":\"⪀\",\"gesdoto;\":\"⪂\",\"gesdotol;\":\"⪄\",\"gesl;\":\"⋛︀\",\"gesles;\":\"⪔\",\"Gfr;\":\"𝔊\",\"gfr;\":\"𝔤\",\"gg;\":\"≫\",\"Gg;\":\"⋙\",\"ggg;\":\"⋙\",\"gimel;\":\"ℷ\",\"GJcy;\":\"Ѓ\",\"gjcy;\":\"ѓ\",\"gla;\":\"⪥\",\"gl;\":\"≷\",\"glE;\":\"⪒\",\"glj;\":\"⪤\",\"gnap;\":\"⪊\",\"gnapprox;\":\"⪊\",\"gne;\":\"⪈\",\"gnE;\":\"≩\",\"gneq;\":\"⪈\",\"gneqq;\":\"≩\",\"gnsim;\":\"⋧\",\"Gopf;\":\"𝔾\",\"gopf;\":\"𝕘\",\"grave;\":\"`\",\"GreaterEqual;\":\"≥\",\"GreaterEqualLess;\":\"⋛\",\"GreaterFullEqual;\":\"≧\",\"GreaterGreater;\":\"⪢\",\"GreaterLess;\":\"≷\",\"GreaterSlantEqual;\":\"⩾\",\"GreaterTilde;\":\"≳\",\"Gscr;\":\"𝒢\",\"gscr;\":\"ℊ\",\"gsim;\":\"≳\",\"gsime;\":\"⪎\",\"gsiml;\":\"⪐\",\"gtcc;\":\"⪧\",\"gtcir;\":\"⩺\",\"gt;\":\">\",gt:\">\",\"GT;\":\">\",GT:\">\",\"Gt;\":\"≫\",\"gtdot;\":\"⋗\",\"gtlPar;\":\"⦕\",\"gtquest;\":\"⩼\",\"gtrapprox;\":\"⪆\",\"gtrarr;\":\"⥸\",\"gtrdot;\":\"⋗\",\"gtreqless;\":\"⋛\",\"gtreqqless;\":\"⪌\",\"gtrless;\":\"≷\",\"gtrsim;\":\"≳\",\"gvertneqq;\":\"≩︀\",\"gvnE;\":\"≩︀\",\"Hacek;\":\"ˇ\",\"hairsp;\":\" \",\"half;\":\"½\",\"hamilt;\":\"ℋ\",\"HARDcy;\":\"Ъ\",\"hardcy;\":\"ъ\",\"harrcir;\":\"⥈\",\"harr;\":\"↔\",\"hArr;\":\"⇔\",\"harrw;\":\"↭\",\"Hat;\":\"^\",\"hbar;\":\"ℏ\",\"Hcirc;\":\"Ĥ\",\"hcirc;\":\"ĥ\",\"hearts;\":\"♥\",\"heartsuit;\":\"♥\",\"hellip;\":\"…\",\"hercon;\":\"⊹\",\"hfr;\":\"𝔥\",\"Hfr;\":\"ℌ\",\"HilbertSpace;\":\"ℋ\",\"hksearow;\":\"⤥\",\"hkswarow;\":\"⤦\",\"hoarr;\":\"⇿\",\"homtht;\":\"∻\",\"hookleftarrow;\":\"↩\",\"hookrightarrow;\":\"↪\",\"hopf;\":\"𝕙\",\"Hopf;\":\"ℍ\",\"horbar;\":\"―\",\"HorizontalLine;\":\"─\",\"hscr;\":\"𝒽\",\"Hscr;\":\"ℋ\",\"hslash;\":\"ℏ\",\"Hstrok;\":\"Ħ\",\"hstrok;\":\"ħ\",\"HumpDownHump;\":\"≎\",\"HumpEqual;\":\"≏\",\"hybull;\":\"⁃\",\"hyphen;\":\"‐\",\"Iacute;\":\"Í\",Iacute:\"Í\",\"iacute;\":\"í\",iacute:\"í\",\"ic;\":\"\",\"Icirc;\":\"Î\",Icirc:\"Î\",\"icirc;\":\"î\",icirc:\"î\",\"Icy;\":\"И\",\"icy;\":\"и\",\"Idot;\":\"İ\",\"IEcy;\":\"Е\",\"iecy;\":\"е\",\"iexcl;\":\"¡\",iexcl:\"¡\",\"iff;\":\"⇔\",\"ifr;\":\"𝔦\",\"Ifr;\":\"ℑ\",\"Igrave;\":\"Ì\",Igrave:\"Ì\",\"igrave;\":\"ì\",igrave:\"ì\",\"ii;\":\"ⅈ\",\"iiiint;\":\"⨌\",\"iiint;\":\"∭\",\"iinfin;\":\"⧜\",\"iiota;\":\"℩\",\"IJlig;\":\"IJ\",\"ijlig;\":\"ij\",\"Imacr;\":\"Ī\",\"imacr;\":\"ī\",\"image;\":\"ℑ\",\"ImaginaryI;\":\"ⅈ\",\"imagline;\":\"ℐ\",\"imagpart;\":\"ℑ\",\"imath;\":\"ı\",\"Im;\":\"ℑ\",\"imof;\":\"⊷\",\"imped;\":\"Ƶ\",\"Implies;\":\"⇒\",\"incare;\":\"℅\",\"in;\":\"∈\",\"infin;\":\"∞\",\"infintie;\":\"⧝\",\"inodot;\":\"ı\",\"intcal;\":\"⊺\",\"int;\":\"∫\",\"Int;\":\"∬\",\"integers;\":\"ℤ\",\"Integral;\":\"∫\",\"intercal;\":\"⊺\",\"Intersection;\":\"⋂\",\"intlarhk;\":\"⨗\",\"intprod;\":\"⨼\",\"InvisibleComma;\":\"\",\"InvisibleTimes;\":\"\",\"IOcy;\":\"Ё\",\"iocy;\":\"ё\",\"Iogon;\":\"Į\",\"iogon;\":\"į\",\"Iopf;\":\"𝕀\",\"iopf;\":\"𝕚\",\"Iota;\":\"Ι\",\"iota;\":\"ι\",\"iprod;\":\"⨼\",\"iquest;\":\"¿\",iquest:\"¿\",\"iscr;\":\"𝒾\",\"Iscr;\":\"ℐ\",\"isin;\":\"∈\",\"isindot;\":\"⋵\",\"isinE;\":\"⋹\",\"isins;\":\"⋴\",\"isinsv;\":\"⋳\",\"isinv;\":\"∈\",\"it;\":\"\",\"Itilde;\":\"Ĩ\",\"itilde;\":\"ĩ\",\"Iukcy;\":\"І\",\"iukcy;\":\"і\",\"Iuml;\":\"Ï\",Iuml:\"Ï\",\"iuml;\":\"ï\",iuml:\"ï\",\"Jcirc;\":\"Ĵ\",\"jcirc;\":\"ĵ\",\"Jcy;\":\"Й\",\"jcy;\":\"й\",\"Jfr;\":\"𝔍\",\"jfr;\":\"𝔧\",\"jmath;\":\"ȷ\",\"Jopf;\":\"𝕁\",\"jopf;\":\"𝕛\",\"Jscr;\":\"𝒥\",\"jscr;\":\"𝒿\",\"Jsercy;\":\"Ј\",\"jsercy;\":\"ј\",\"Jukcy;\":\"Є\",\"jukcy;\":\"є\",\"Kappa;\":\"Κ\",\"kappa;\":\"κ\",\"kappav;\":\"ϰ\",\"Kcedil;\":\"Ķ\",\"kcedil;\":\"ķ\",\"Kcy;\":\"К\",\"kcy;\":\"к\",\"Kfr;\":\"𝔎\",\"kfr;\":\"𝔨\",\"kgreen;\":\"ĸ\",\"KHcy;\":\"Х\",\"khcy;\":\"х\",\"KJcy;\":\"Ќ\",\"kjcy;\":\"ќ\",\"Kopf;\":\"𝕂\",\"kopf;\":\"𝕜\",\"Kscr;\":\"𝒦\",\"kscr;\":\"𝓀\",\"lAarr;\":\"⇚\",\"Lacute;\":\"Ĺ\",\"lacute;\":\"ĺ\",\"laemptyv;\":\"⦴\",\"lagran;\":\"ℒ\",\"Lambda;\":\"Λ\",\"lambda;\":\"λ\",\"lang;\":\"⟨\",\"Lang;\":\"⟪\",\"langd;\":\"⦑\",\"langle;\":\"⟨\",\"lap;\":\"⪅\",\"Laplacetrf;\":\"ℒ\",\"laquo;\":\"«\",laquo:\"«\",\"larrb;\":\"⇤\",\"larrbfs;\":\"⤟\",\"larr;\":\"←\",\"Larr;\":\"↞\",\"lArr;\":\"⇐\",\"larrfs;\":\"⤝\",\"larrhk;\":\"↩\",\"larrlp;\":\"↫\",\"larrpl;\":\"⤹\",\"larrsim;\":\"⥳\",\"larrtl;\":\"↢\",\"latail;\":\"⤙\",\"lAtail;\":\"⤛\",\"lat;\":\"⪫\",\"late;\":\"⪭\",\"lates;\":\"⪭︀\",\"lbarr;\":\"⤌\",\"lBarr;\":\"⤎\",\"lbbrk;\":\"❲\",\"lbrace;\":\"{\",\"lbrack;\":\"[\",\"lbrke;\":\"⦋\",\"lbrksld;\":\"⦏\",\"lbrkslu;\":\"⦍\",\"Lcaron;\":\"Ľ\",\"lcaron;\":\"ľ\",\"Lcedil;\":\"Ļ\",\"lcedil;\":\"ļ\",\"lceil;\":\"⌈\",\"lcub;\":\"{\",\"Lcy;\":\"Л\",\"lcy;\":\"л\",\"ldca;\":\"⤶\",\"ldquo;\":\"“\",\"ldquor;\":\"„\",\"ldrdhar;\":\"⥧\",\"ldrushar;\":\"⥋\",\"ldsh;\":\"↲\",\"le;\":\"≤\",\"lE;\":\"≦\",\"LeftAngleBracket;\":\"⟨\",\"LeftArrowBar;\":\"⇤\",\"leftarrow;\":\"←\",\"LeftArrow;\":\"←\",\"Leftarrow;\":\"⇐\",\"LeftArrowRightArrow;\":\"⇆\",\"leftarrowtail;\":\"↢\",\"LeftCeiling;\":\"⌈\",\"LeftDoubleBracket;\":\"⟦\",\"LeftDownTeeVector;\":\"⥡\",\"LeftDownVectorBar;\":\"⥙\",\"LeftDownVector;\":\"⇃\",\"LeftFloor;\":\"⌊\",\"leftharpoondown;\":\"↽\",\"leftharpoonup;\":\"↼\",\"leftleftarrows;\":\"⇇\",\"leftrightarrow;\":\"↔\",\"LeftRightArrow;\":\"↔\",\"Leftrightarrow;\":\"⇔\",\"leftrightarrows;\":\"⇆\",\"leftrightharpoons;\":\"⇋\",\"leftrightsquigarrow;\":\"↭\",\"LeftRightVector;\":\"⥎\",\"LeftTeeArrow;\":\"↤\",\"LeftTee;\":\"⊣\",\"LeftTeeVector;\":\"⥚\",\"leftthreetimes;\":\"⋋\",\"LeftTriangleBar;\":\"⧏\",\"LeftTriangle;\":\"⊲\",\"LeftTriangleEqual;\":\"⊴\",\"LeftUpDownVector;\":\"⥑\",\"LeftUpTeeVector;\":\"⥠\",\"LeftUpVectorBar;\":\"⥘\",\"LeftUpVector;\":\"↿\",\"LeftVectorBar;\":\"⥒\",\"LeftVector;\":\"↼\",\"lEg;\":\"⪋\",\"leg;\":\"⋚\",\"leq;\":\"≤\",\"leqq;\":\"≦\",\"leqslant;\":\"⩽\",\"lescc;\":\"⪨\",\"les;\":\"⩽\",\"lesdot;\":\"⩿\",\"lesdoto;\":\"⪁\",\"lesdotor;\":\"⪃\",\"lesg;\":\"⋚︀\",\"lesges;\":\"⪓\",\"lessapprox;\":\"⪅\",\"lessdot;\":\"⋖\",\"lesseqgtr;\":\"⋚\",\"lesseqqgtr;\":\"⪋\",\"LessEqualGreater;\":\"⋚\",\"LessFullEqual;\":\"≦\",\"LessGreater;\":\"≶\",\"lessgtr;\":\"≶\",\"LessLess;\":\"⪡\",\"lesssim;\":\"≲\",\"LessSlantEqual;\":\"⩽\",\"LessTilde;\":\"≲\",\"lfisht;\":\"⥼\",\"lfloor;\":\"⌊\",\"Lfr;\":\"𝔏\",\"lfr;\":\"𝔩\",\"lg;\":\"≶\",\"lgE;\":\"⪑\",\"lHar;\":\"⥢\",\"lhard;\":\"↽\",\"lharu;\":\"↼\",\"lharul;\":\"⥪\",\"lhblk;\":\"▄\",\"LJcy;\":\"Љ\",\"ljcy;\":\"љ\",\"llarr;\":\"⇇\",\"ll;\":\"≪\",\"Ll;\":\"⋘\",\"llcorner;\":\"⌞\",\"Lleftarrow;\":\"⇚\",\"llhard;\":\"⥫\",\"lltri;\":\"◺\",\"Lmidot;\":\"Ŀ\",\"lmidot;\":\"ŀ\",\"lmoustache;\":\"⎰\",\"lmoust;\":\"⎰\",\"lnap;\":\"⪉\",\"lnapprox;\":\"⪉\",\"lne;\":\"⪇\",\"lnE;\":\"≨\",\"lneq;\":\"⪇\",\"lneqq;\":\"≨\",\"lnsim;\":\"⋦\",\"loang;\":\"⟬\",\"loarr;\":\"⇽\",\"lobrk;\":\"⟦\",\"longleftarrow;\":\"⟵\",\"LongLeftArrow;\":\"⟵\",\"Longleftarrow;\":\"⟸\",\"longleftrightarrow;\":\"⟷\",\"LongLeftRightArrow;\":\"⟷\",\"Longleftrightarrow;\":\"⟺\",\"longmapsto;\":\"⟼\",\"longrightarrow;\":\"⟶\",\"LongRightArrow;\":\"⟶\",\"Longrightarrow;\":\"⟹\",\"looparrowleft;\":\"↫\",\"looparrowright;\":\"↬\",\"lopar;\":\"⦅\",\"Lopf;\":\"𝕃\",\"lopf;\":\"𝕝\",\"loplus;\":\"⨭\",\"lotimes;\":\"⨴\",\"lowast;\":\"∗\",\"lowbar;\":\"_\",\"LowerLeftArrow;\":\"↙\",\"LowerRightArrow;\":\"↘\",\"loz;\":\"◊\",\"lozenge;\":\"◊\",\"lozf;\":\"⧫\",\"lpar;\":\"(\",\"lparlt;\":\"⦓\",\"lrarr;\":\"⇆\",\"lrcorner;\":\"⌟\",\"lrhar;\":\"⇋\",\"lrhard;\":\"⥭\",\"lrm;\":\"\",\"lrtri;\":\"⊿\",\"lsaquo;\":\"‹\",\"lscr;\":\"𝓁\",\"Lscr;\":\"ℒ\",\"lsh;\":\"↰\",\"Lsh;\":\"↰\",\"lsim;\":\"≲\",\"lsime;\":\"⪍\",\"lsimg;\":\"⪏\",\"lsqb;\":\"[\",\"lsquo;\":\"‘\",\"lsquor;\":\"‚\",\"Lstrok;\":\"Ł\",\"lstrok;\":\"ł\",\"ltcc;\":\"⪦\",\"ltcir;\":\"⩹\",\"lt;\":\"<\",lt:\"<\",\"LT;\":\"<\",LT:\"<\",\"Lt;\":\"≪\",\"ltdot;\":\"⋖\",\"lthree;\":\"⋋\",\"ltimes;\":\"⋉\",\"ltlarr;\":\"⥶\",\"ltquest;\":\"⩻\",\"ltri;\":\"◃\",\"ltrie;\":\"⊴\",\"ltrif;\":\"◂\",\"ltrPar;\":\"⦖\",\"lurdshar;\":\"⥊\",\"luruhar;\":\"⥦\",\"lvertneqq;\":\"≨︀\",\"lvnE;\":\"≨︀\",\"macr;\":\"¯\",macr:\"¯\",\"male;\":\"♂\",\"malt;\":\"✠\",\"maltese;\":\"✠\",\"Map;\":\"⤅\",\"map;\":\"↦\",\"mapsto;\":\"↦\",\"mapstodown;\":\"↧\",\"mapstoleft;\":\"↤\",\"mapstoup;\":\"↥\",\"marker;\":\"▮\",\"mcomma;\":\"⨩\",\"Mcy;\":\"М\",\"mcy;\":\"м\",\"mdash;\":\"—\",\"mDDot;\":\"∺\",\"measuredangle;\":\"∡\",\"MediumSpace;\":\" \",\"Mellintrf;\":\"ℳ\",\"Mfr;\":\"𝔐\",\"mfr;\":\"𝔪\",\"mho;\":\"℧\",\"micro;\":\"µ\",micro:\"µ\",\"midast;\":\"*\",\"midcir;\":\"⫰\",\"mid;\":\"∣\",\"middot;\":\"·\",middot:\"·\",\"minusb;\":\"⊟\",\"minus;\":\"−\",\"minusd;\":\"∸\",\"minusdu;\":\"⨪\",\"MinusPlus;\":\"∓\",\"mlcp;\":\"⫛\",\"mldr;\":\"…\",\"mnplus;\":\"∓\",\"models;\":\"⊧\",\"Mopf;\":\"𝕄\",\"mopf;\":\"𝕞\",\"mp;\":\"∓\",\"mscr;\":\"𝓂\",\"Mscr;\":\"ℳ\",\"mstpos;\":\"∾\",\"Mu;\":\"Μ\",\"mu;\":\"μ\",\"multimap;\":\"⊸\",\"mumap;\":\"⊸\",\"nabla;\":\"∇\",\"Nacute;\":\"Ń\",\"nacute;\":\"ń\",\"nang;\":\"∠⃒\",\"nap;\":\"≉\",\"napE;\":\"⩰̸\",\"napid;\":\"≋̸\",\"napos;\":\"ʼn\",\"napprox;\":\"≉\",\"natural;\":\"♮\",\"naturals;\":\"ℕ\",\"natur;\":\"♮\",\"nbsp;\":\" \",nbsp:\" \",\"nbump;\":\"≎̸\",\"nbumpe;\":\"≏̸\",\"ncap;\":\"⩃\",\"Ncaron;\":\"Ň\",\"ncaron;\":\"ň\",\"Ncedil;\":\"Ņ\",\"ncedil;\":\"ņ\",\"ncong;\":\"≇\",\"ncongdot;\":\"⩭̸\",\"ncup;\":\"⩂\",\"Ncy;\":\"Н\",\"ncy;\":\"н\",\"ndash;\":\"–\",\"nearhk;\":\"⤤\",\"nearr;\":\"↗\",\"neArr;\":\"⇗\",\"nearrow;\":\"↗\",\"ne;\":\"≠\",\"nedot;\":\"≐̸\",\"NegativeMediumSpace;\":\"\",\"NegativeThickSpace;\":\"\",\"NegativeThinSpace;\":\"\",\"NegativeVeryThinSpace;\":\"\",\"nequiv;\":\"≢\",\"nesear;\":\"⤨\",\"nesim;\":\"≂̸\",\"NestedGreaterGreater;\":\"≫\",\"NestedLessLess;\":\"≪\",\"NewLine;\":\"\\n\",\"nexist;\":\"∄\",\"nexists;\":\"∄\",\"Nfr;\":\"𝔑\",\"nfr;\":\"𝔫\",\"ngE;\":\"≧̸\",\"nge;\":\"≱\",\"ngeq;\":\"≱\",\"ngeqq;\":\"≧̸\",\"ngeqslant;\":\"⩾̸\",\"nges;\":\"⩾̸\",\"nGg;\":\"⋙̸\",\"ngsim;\":\"≵\",\"nGt;\":\"≫⃒\",\"ngt;\":\"≯\",\"ngtr;\":\"≯\",\"nGtv;\":\"≫̸\",\"nharr;\":\"↮\",\"nhArr;\":\"⇎\",\"nhpar;\":\"⫲\",\"ni;\":\"∋\",\"nis;\":\"⋼\",\"nisd;\":\"⋺\",\"niv;\":\"∋\",\"NJcy;\":\"Њ\",\"njcy;\":\"њ\",\"nlarr;\":\"↚\",\"nlArr;\":\"⇍\",\"nldr;\":\"‥\",\"nlE;\":\"≦̸\",\"nle;\":\"≰\",\"nleftarrow;\":\"↚\",\"nLeftarrow;\":\"⇍\",\"nleftrightarrow;\":\"↮\",\"nLeftrightarrow;\":\"⇎\",\"nleq;\":\"≰\",\"nleqq;\":\"≦̸\",\"nleqslant;\":\"⩽̸\",\"nles;\":\"⩽̸\",\"nless;\":\"≮\",\"nLl;\":\"⋘̸\",\"nlsim;\":\"≴\",\"nLt;\":\"≪⃒\",\"nlt;\":\"≮\",\"nltri;\":\"⋪\",\"nltrie;\":\"⋬\",\"nLtv;\":\"≪̸\",\"nmid;\":\"∤\",\"NoBreak;\":\"\",\"NonBreakingSpace;\":\" \",\"nopf;\":\"𝕟\",\"Nopf;\":\"ℕ\",\"Not;\":\"⫬\",\"not;\":\"¬\",not:\"¬\",\"NotCongruent;\":\"≢\",\"NotCupCap;\":\"≭\",\"NotDoubleVerticalBar;\":\"∦\",\"NotElement;\":\"∉\",\"NotEqual;\":\"≠\",\"NotEqualTilde;\":\"≂̸\",\"NotExists;\":\"∄\",\"NotGreater;\":\"≯\",\"NotGreaterEqual;\":\"≱\",\"NotGreaterFullEqual;\":\"≧̸\",\"NotGreaterGreater;\":\"≫̸\",\"NotGreaterLess;\":\"≹\",\"NotGreaterSlantEqual;\":\"⩾̸\",\"NotGreaterTilde;\":\"≵\",\"NotHumpDownHump;\":\"≎̸\",\"NotHumpEqual;\":\"≏̸\",\"notin;\":\"∉\",\"notindot;\":\"⋵̸\",\"notinE;\":\"⋹̸\",\"notinva;\":\"∉\",\"notinvb;\":\"⋷\",\"notinvc;\":\"⋶\",\"NotLeftTriangleBar;\":\"⧏̸\",\"NotLeftTriangle;\":\"⋪\",\"NotLeftTriangleEqual;\":\"⋬\",\"NotLess;\":\"≮\",\"NotLessEqual;\":\"≰\",\"NotLessGreater;\":\"≸\",\"NotLessLess;\":\"≪̸\",\"NotLessSlantEqual;\":\"⩽̸\",\"NotLessTilde;\":\"≴\",\"NotNestedGreaterGreater;\":\"⪢̸\",\"NotNestedLessLess;\":\"⪡̸\",\"notni;\":\"∌\",\"notniva;\":\"∌\",\"notnivb;\":\"⋾\",\"notnivc;\":\"⋽\",\"NotPrecedes;\":\"⊀\",\"NotPrecedesEqual;\":\"⪯̸\",\"NotPrecedesSlantEqual;\":\"⋠\",\"NotReverseElement;\":\"∌\",\"NotRightTriangleBar;\":\"⧐̸\",\"NotRightTriangle;\":\"⋫\",\"NotRightTriangleEqual;\":\"⋭\",\"NotSquareSubset;\":\"⊏̸\",\"NotSquareSubsetEqual;\":\"⋢\",\"NotSquareSuperset;\":\"⊐̸\",\"NotSquareSupersetEqual;\":\"⋣\",\"NotSubset;\":\"⊂⃒\",\"NotSubsetEqual;\":\"⊈\",\"NotSucceeds;\":\"⊁\",\"NotSucceedsEqual;\":\"⪰̸\",\"NotSucceedsSlantEqual;\":\"⋡\",\"NotSucceedsTilde;\":\"≿̸\",\"NotSuperset;\":\"⊃⃒\",\"NotSupersetEqual;\":\"⊉\",\"NotTilde;\":\"≁\",\"NotTildeEqual;\":\"≄\",\"NotTildeFullEqual;\":\"≇\",\"NotTildeTilde;\":\"≉\",\"NotVerticalBar;\":\"∤\",\"nparallel;\":\"∦\",\"npar;\":\"∦\",\"nparsl;\":\"⫽⃥\",\"npart;\":\"∂̸\",\"npolint;\":\"⨔\",\"npr;\":\"⊀\",\"nprcue;\":\"⋠\",\"nprec;\":\"⊀\",\"npreceq;\":\"⪯̸\",\"npre;\":\"⪯̸\",\"nrarrc;\":\"⤳̸\",\"nrarr;\":\"↛\",\"nrArr;\":\"⇏\",\"nrarrw;\":\"↝̸\",\"nrightarrow;\":\"↛\",\"nRightarrow;\":\"⇏\",\"nrtri;\":\"⋫\",\"nrtrie;\":\"⋭\",\"nsc;\":\"⊁\",\"nsccue;\":\"⋡\",\"nsce;\":\"⪰̸\",\"Nscr;\":\"𝒩\",\"nscr;\":\"𝓃\",\"nshortmid;\":\"∤\",\"nshortparallel;\":\"∦\",\"nsim;\":\"≁\",\"nsime;\":\"≄\",\"nsimeq;\":\"≄\",\"nsmid;\":\"∤\",\"nspar;\":\"∦\",\"nsqsube;\":\"⋢\",\"nsqsupe;\":\"⋣\",\"nsub;\":\"⊄\",\"nsubE;\":\"⫅̸\",\"nsube;\":\"⊈\",\"nsubset;\":\"⊂⃒\",\"nsubseteq;\":\"⊈\",\"nsubseteqq;\":\"⫅̸\",\"nsucc;\":\"⊁\",\"nsucceq;\":\"⪰̸\",\"nsup;\":\"⊅\",\"nsupE;\":\"⫆̸\",\"nsupe;\":\"⊉\",\"nsupset;\":\"⊃⃒\",\"nsupseteq;\":\"⊉\",\"nsupseteqq;\":\"⫆̸\",\"ntgl;\":\"≹\",\"Ntilde;\":\"Ñ\",Ntilde:\"Ñ\",\"ntilde;\":\"ñ\",ntilde:\"ñ\",\"ntlg;\":\"≸\",\"ntriangleleft;\":\"⋪\",\"ntrianglelefteq;\":\"⋬\",\"ntriangleright;\":\"⋫\",\"ntrianglerighteq;\":\"⋭\",\"Nu;\":\"Ν\",\"nu;\":\"ν\",\"num;\":\"#\",\"numero;\":\"№\",\"numsp;\":\" \",\"nvap;\":\"≍⃒\",\"nvdash;\":\"⊬\",\"nvDash;\":\"⊭\",\"nVdash;\":\"⊮\",\"nVDash;\":\"⊯\",\"nvge;\":\"≥⃒\",\"nvgt;\":\">⃒\",\"nvHarr;\":\"⤄\",\"nvinfin;\":\"⧞\",\"nvlArr;\":\"⤂\",\"nvle;\":\"≤⃒\",\"nvlt;\":\"<⃒\",\"nvltrie;\":\"⊴⃒\",\"nvrArr;\":\"⤃\",\"nvrtrie;\":\"⊵⃒\",\"nvsim;\":\"∼⃒\",\"nwarhk;\":\"⤣\",\"nwarr;\":\"↖\",\"nwArr;\":\"⇖\",\"nwarrow;\":\"↖\",\"nwnear;\":\"⤧\",\"Oacute;\":\"Ó\",Oacute:\"Ó\",\"oacute;\":\"ó\",oacute:\"ó\",\"oast;\":\"⊛\",\"Ocirc;\":\"Ô\",Ocirc:\"Ô\",\"ocirc;\":\"ô\",ocirc:\"ô\",\"ocir;\":\"⊚\",\"Ocy;\":\"О\",\"ocy;\":\"о\",\"odash;\":\"⊝\",\"Odblac;\":\"Ő\",\"odblac;\":\"ő\",\"odiv;\":\"⨸\",\"odot;\":\"⊙\",\"odsold;\":\"⦼\",\"OElig;\":\"Œ\",\"oelig;\":\"œ\",\"ofcir;\":\"⦿\",\"Ofr;\":\"𝔒\",\"ofr;\":\"𝔬\",\"ogon;\":\"˛\",\"Ograve;\":\"Ò\",Ograve:\"Ò\",\"ograve;\":\"ò\",ograve:\"ò\",\"ogt;\":\"⧁\",\"ohbar;\":\"⦵\",\"ohm;\":\"Ω\",\"oint;\":\"∮\",\"olarr;\":\"↺\",\"olcir;\":\"⦾\",\"olcross;\":\"⦻\",\"oline;\":\"‾\",\"olt;\":\"⧀\",\"Omacr;\":\"Ō\",\"omacr;\":\"ō\",\"Omega;\":\"Ω\",\"omega;\":\"ω\",\"Omicron;\":\"Ο\",\"omicron;\":\"ο\",\"omid;\":\"⦶\",\"ominus;\":\"⊖\",\"Oopf;\":\"𝕆\",\"oopf;\":\"𝕠\",\"opar;\":\"⦷\",\"OpenCurlyDoubleQuote;\":\"“\",\"OpenCurlyQuote;\":\"‘\",\"operp;\":\"⦹\",\"oplus;\":\"⊕\",\"orarr;\":\"↻\",\"Or;\":\"⩔\",\"or;\":\"∨\",\"ord;\":\"⩝\",\"order;\":\"ℴ\",\"orderof;\":\"ℴ\",\"ordf;\":\"ª\",ordf:\"ª\",\"ordm;\":\"º\",ordm:\"º\",\"origof;\":\"⊶\",\"oror;\":\"⩖\",\"orslope;\":\"⩗\",\"orv;\":\"⩛\",\"oS;\":\"Ⓢ\",\"Oscr;\":\"𝒪\",\"oscr;\":\"ℴ\",\"Oslash;\":\"Ø\",Oslash:\"Ø\",\"oslash;\":\"ø\",oslash:\"ø\",\"osol;\":\"⊘\",\"Otilde;\":\"Õ\",Otilde:\"Õ\",\"otilde;\":\"õ\",otilde:\"õ\",\"otimesas;\":\"⨶\",\"Otimes;\":\"⨷\",\"otimes;\":\"⊗\",\"Ouml;\":\"Ö\",Ouml:\"Ö\",\"ouml;\":\"ö\",ouml:\"ö\",\"ovbar;\":\"⌽\",\"OverBar;\":\"‾\",\"OverBrace;\":\"⏞\",\"OverBracket;\":\"⎴\",\"OverParenthesis;\":\"⏜\",\"para;\":\"¶\",para:\"¶\",\"parallel;\":\"∥\",\"par;\":\"∥\",\"parsim;\":\"⫳\",\"parsl;\":\"⫽\",\"part;\":\"∂\",\"PartialD;\":\"∂\",\"Pcy;\":\"П\",\"pcy;\":\"п\",\"percnt;\":\"%\",\"period;\":\".\",\"permil;\":\"‰\",\"perp;\":\"⊥\",\"pertenk;\":\"‱\",\"Pfr;\":\"𝔓\",\"pfr;\":\"𝔭\",\"Phi;\":\"Φ\",\"phi;\":\"φ\",\"phiv;\":\"ϕ\",\"phmmat;\":\"ℳ\",\"phone;\":\"☎\",\"Pi;\":\"Π\",\"pi;\":\"π\",\"pitchfork;\":\"⋔\",\"piv;\":\"ϖ\",\"planck;\":\"ℏ\",\"planckh;\":\"ℎ\",\"plankv;\":\"ℏ\",\"plusacir;\":\"⨣\",\"plusb;\":\"⊞\",\"pluscir;\":\"⨢\",\"plus;\":\"+\",\"plusdo;\":\"∔\",\"plusdu;\":\"⨥\",\"pluse;\":\"⩲\",\"PlusMinus;\":\"±\",\"plusmn;\":\"±\",plusmn:\"±\",\"plussim;\":\"⨦\",\"plustwo;\":\"⨧\",\"pm;\":\"±\",\"Poincareplane;\":\"ℌ\",\"pointint;\":\"⨕\",\"popf;\":\"𝕡\",\"Popf;\":\"ℙ\",\"pound;\":\"£\",pound:\"£\",\"prap;\":\"⪷\",\"Pr;\":\"⪻\",\"pr;\":\"≺\",\"prcue;\":\"≼\",\"precapprox;\":\"⪷\",\"prec;\":\"≺\",\"preccurlyeq;\":\"≼\",\"Precedes;\":\"≺\",\"PrecedesEqual;\":\"⪯\",\"PrecedesSlantEqual;\":\"≼\",\"PrecedesTilde;\":\"≾\",\"preceq;\":\"⪯\",\"precnapprox;\":\"⪹\",\"precneqq;\":\"⪵\",\"precnsim;\":\"⋨\",\"pre;\":\"⪯\",\"prE;\":\"⪳\",\"precsim;\":\"≾\",\"prime;\":\"′\",\"Prime;\":\"″\",\"primes;\":\"ℙ\",\"prnap;\":\"⪹\",\"prnE;\":\"⪵\",\"prnsim;\":\"⋨\",\"prod;\":\"∏\",\"Product;\":\"∏\",\"profalar;\":\"⌮\",\"profline;\":\"⌒\",\"profsurf;\":\"⌓\",\"prop;\":\"∝\",\"Proportional;\":\"∝\",\"Proportion;\":\"∷\",\"propto;\":\"∝\",\"prsim;\":\"≾\",\"prurel;\":\"⊰\",\"Pscr;\":\"𝒫\",\"pscr;\":\"𝓅\",\"Psi;\":\"Ψ\",\"psi;\":\"ψ\",\"puncsp;\":\" \",\"Qfr;\":\"𝔔\",\"qfr;\":\"𝔮\",\"qint;\":\"⨌\",\"qopf;\":\"𝕢\",\"Qopf;\":\"ℚ\",\"qprime;\":\"⁗\",\"Qscr;\":\"𝒬\",\"qscr;\":\"𝓆\",\"quaternions;\":\"ℍ\",\"quatint;\":\"⨖\",\"quest;\":\"?\",\"questeq;\":\"≟\",\"quot;\":'\"',quot:'\"',\"QUOT;\":'\"',QUOT:'\"',\"rAarr;\":\"⇛\",\"race;\":\"∽̱\",\"Racute;\":\"Ŕ\",\"racute;\":\"ŕ\",\"radic;\":\"√\",\"raemptyv;\":\"⦳\",\"rang;\":\"⟩\",\"Rang;\":\"⟫\",\"rangd;\":\"⦒\",\"range;\":\"⦥\",\"rangle;\":\"⟩\",\"raquo;\":\"»\",raquo:\"»\",\"rarrap;\":\"⥵\",\"rarrb;\":\"⇥\",\"rarrbfs;\":\"⤠\",\"rarrc;\":\"⤳\",\"rarr;\":\"→\",\"Rarr;\":\"↠\",\"rArr;\":\"⇒\",\"rarrfs;\":\"⤞\",\"rarrhk;\":\"↪\",\"rarrlp;\":\"↬\",\"rarrpl;\":\"⥅\",\"rarrsim;\":\"⥴\",\"Rarrtl;\":\"⤖\",\"rarrtl;\":\"↣\",\"rarrw;\":\"↝\",\"ratail;\":\"⤚\",\"rAtail;\":\"⤜\",\"ratio;\":\"∶\",\"rationals;\":\"ℚ\",\"rbarr;\":\"⤍\",\"rBarr;\":\"⤏\",\"RBarr;\":\"⤐\",\"rbbrk;\":\"❳\",\"rbrace;\":\"}\",\"rbrack;\":\"]\",\"rbrke;\":\"⦌\",\"rbrksld;\":\"⦎\",\"rbrkslu;\":\"⦐\",\"Rcaron;\":\"Ř\",\"rcaron;\":\"ř\",\"Rcedil;\":\"Ŗ\",\"rcedil;\":\"ŗ\",\"rceil;\":\"⌉\",\"rcub;\":\"}\",\"Rcy;\":\"Р\",\"rcy;\":\"р\",\"rdca;\":\"⤷\",\"rdldhar;\":\"⥩\",\"rdquo;\":\"”\",\"rdquor;\":\"”\",\"rdsh;\":\"↳\",\"real;\":\"ℜ\",\"realine;\":\"ℛ\",\"realpart;\":\"ℜ\",\"reals;\":\"ℝ\",\"Re;\":\"ℜ\",\"rect;\":\"▭\",\"reg;\":\"®\",reg:\"®\",\"REG;\":\"®\",REG:\"®\",\"ReverseElement;\":\"∋\",\"ReverseEquilibrium;\":\"⇋\",\"ReverseUpEquilibrium;\":\"⥯\",\"rfisht;\":\"⥽\",\"rfloor;\":\"⌋\",\"rfr;\":\"𝔯\",\"Rfr;\":\"ℜ\",\"rHar;\":\"⥤\",\"rhard;\":\"⇁\",\"rharu;\":\"⇀\",\"rharul;\":\"⥬\",\"Rho;\":\"Ρ\",\"rho;\":\"ρ\",\"rhov;\":\"ϱ\",\"RightAngleBracket;\":\"⟩\",\"RightArrowBar;\":\"⇥\",\"rightarrow;\":\"→\",\"RightArrow;\":\"→\",\"Rightarrow;\":\"⇒\",\"RightArrowLeftArrow;\":\"⇄\",\"rightarrowtail;\":\"↣\",\"RightCeiling;\":\"⌉\",\"RightDoubleBracket;\":\"⟧\",\"RightDownTeeVector;\":\"⥝\",\"RightDownVectorBar;\":\"⥕\",\"RightDownVector;\":\"⇂\",\"RightFloor;\":\"⌋\",\"rightharpoondown;\":\"⇁\",\"rightharpoonup;\":\"⇀\",\"rightleftarrows;\":\"⇄\",\"rightleftharpoons;\":\"⇌\",\"rightrightarrows;\":\"⇉\",\"rightsquigarrow;\":\"↝\",\"RightTeeArrow;\":\"↦\",\"RightTee;\":\"⊢\",\"RightTeeVector;\":\"⥛\",\"rightthreetimes;\":\"⋌\",\"RightTriangleBar;\":\"⧐\",\"RightTriangle;\":\"⊳\",\"RightTriangleEqual;\":\"⊵\",\"RightUpDownVector;\":\"⥏\",\"RightUpTeeVector;\":\"⥜\",\"RightUpVectorBar;\":\"⥔\",\"RightUpVector;\":\"↾\",\"RightVectorBar;\":\"⥓\",\"RightVector;\":\"⇀\",\"ring;\":\"˚\",\"risingdotseq;\":\"≓\",\"rlarr;\":\"⇄\",\"rlhar;\":\"⇌\",\"rlm;\":\"\",\"rmoustache;\":\"⎱\",\"rmoust;\":\"⎱\",\"rnmid;\":\"⫮\",\"roang;\":\"⟭\",\"roarr;\":\"⇾\",\"robrk;\":\"⟧\",\"ropar;\":\"⦆\",\"ropf;\":\"𝕣\",\"Ropf;\":\"ℝ\",\"roplus;\":\"⨮\",\"rotimes;\":\"⨵\",\"RoundImplies;\":\"⥰\",\"rpar;\":\")\",\"rpargt;\":\"⦔\",\"rppolint;\":\"⨒\",\"rrarr;\":\"⇉\",\"Rrightarrow;\":\"⇛\",\"rsaquo;\":\"›\",\"rscr;\":\"𝓇\",\"Rscr;\":\"ℛ\",\"rsh;\":\"↱\",\"Rsh;\":\"↱\",\"rsqb;\":\"]\",\"rsquo;\":\"’\",\"rsquor;\":\"’\",\"rthree;\":\"⋌\",\"rtimes;\":\"⋊\",\"rtri;\":\"▹\",\"rtrie;\":\"⊵\",\"rtrif;\":\"▸\",\"rtriltri;\":\"⧎\",\"RuleDelayed;\":\"⧴\",\"ruluhar;\":\"⥨\",\"rx;\":\"℞\",\"Sacute;\":\"Ś\",\"sacute;\":\"ś\",\"sbquo;\":\"‚\",\"scap;\":\"⪸\",\"Scaron;\":\"Š\",\"scaron;\":\"š\",\"Sc;\":\"⪼\",\"sc;\":\"≻\",\"sccue;\":\"≽\",\"sce;\":\"⪰\",\"scE;\":\"⪴\",\"Scedil;\":\"Ş\",\"scedil;\":\"ş\",\"Scirc;\":\"Ŝ\",\"scirc;\":\"ŝ\",\"scnap;\":\"⪺\",\"scnE;\":\"⪶\",\"scnsim;\":\"⋩\",\"scpolint;\":\"⨓\",\"scsim;\":\"≿\",\"Scy;\":\"С\",\"scy;\":\"с\",\"sdotb;\":\"⊡\",\"sdot;\":\"⋅\",\"sdote;\":\"⩦\",\"searhk;\":\"⤥\",\"searr;\":\"↘\",\"seArr;\":\"⇘\",\"searrow;\":\"↘\",\"sect;\":\"§\",sect:\"§\",\"semi;\":\";\",\"seswar;\":\"⤩\",\"setminus;\":\"∖\",\"setmn;\":\"∖\",\"sext;\":\"✶\",\"Sfr;\":\"𝔖\",\"sfr;\":\"𝔰\",\"sfrown;\":\"⌢\",\"sharp;\":\"♯\",\"SHCHcy;\":\"Щ\",\"shchcy;\":\"щ\",\"SHcy;\":\"Ш\",\"shcy;\":\"ш\",\"ShortDownArrow;\":\"↓\",\"ShortLeftArrow;\":\"←\",\"shortmid;\":\"∣\",\"shortparallel;\":\"∥\",\"ShortRightArrow;\":\"→\",\"ShortUpArrow;\":\"↑\",\"shy;\":\"\",shy:\"\",\"Sigma;\":\"Σ\",\"sigma;\":\"σ\",\"sigmaf;\":\"ς\",\"sigmav;\":\"ς\",\"sim;\":\"∼\",\"simdot;\":\"⩪\",\"sime;\":\"≃\",\"simeq;\":\"≃\",\"simg;\":\"⪞\",\"simgE;\":\"⪠\",\"siml;\":\"⪝\",\"simlE;\":\"⪟\",\"simne;\":\"≆\",\"simplus;\":\"⨤\",\"simrarr;\":\"⥲\",\"slarr;\":\"←\",\"SmallCircle;\":\"∘\",\"smallsetminus;\":\"∖\",\"smashp;\":\"⨳\",\"smeparsl;\":\"⧤\",\"smid;\":\"∣\",\"smile;\":\"⌣\",\"smt;\":\"⪪\",\"smte;\":\"⪬\",\"smtes;\":\"⪬︀\",\"SOFTcy;\":\"Ь\",\"softcy;\":\"ь\",\"solbar;\":\"⌿\",\"solb;\":\"⧄\",\"sol;\":\"/\",\"Sopf;\":\"𝕊\",\"sopf;\":\"𝕤\",\"spades;\":\"♠\",\"spadesuit;\":\"♠\",\"spar;\":\"∥\",\"sqcap;\":\"⊓\",\"sqcaps;\":\"⊓︀\",\"sqcup;\":\"⊔\",\"sqcups;\":\"⊔︀\",\"Sqrt;\":\"√\",\"sqsub;\":\"⊏\",\"sqsube;\":\"⊑\",\"sqsubset;\":\"⊏\",\"sqsubseteq;\":\"⊑\",\"sqsup;\":\"⊐\",\"sqsupe;\":\"⊒\",\"sqsupset;\":\"⊐\",\"sqsupseteq;\":\"⊒\",\"square;\":\"□\",\"Square;\":\"□\",\"SquareIntersection;\":\"⊓\",\"SquareSubset;\":\"⊏\",\"SquareSubsetEqual;\":\"⊑\",\"SquareSuperset;\":\"⊐\",\"SquareSupersetEqual;\":\"⊒\",\"SquareUnion;\":\"⊔\",\"squarf;\":\"▪\",\"squ;\":\"□\",\"squf;\":\"▪\",\"srarr;\":\"→\",\"Sscr;\":\"𝒮\",\"sscr;\":\"𝓈\",\"ssetmn;\":\"∖\",\"ssmile;\":\"⌣\",\"sstarf;\":\"⋆\",\"Star;\":\"⋆\",\"star;\":\"☆\",\"starf;\":\"★\",\"straightepsilon;\":\"ϵ\",\"straightphi;\":\"ϕ\",\"strns;\":\"¯\",\"sub;\":\"⊂\",\"Sub;\":\"⋐\",\"subdot;\":\"⪽\",\"subE;\":\"⫅\",\"sube;\":\"⊆\",\"subedot;\":\"⫃\",\"submult;\":\"⫁\",\"subnE;\":\"⫋\",\"subne;\":\"⊊\",\"subplus;\":\"⪿\",\"subrarr;\":\"⥹\",\"subset;\":\"⊂\",\"Subset;\":\"⋐\",\"subseteq;\":\"⊆\",\"subseteqq;\":\"⫅\",\"SubsetEqual;\":\"⊆\",\"subsetneq;\":\"⊊\",\"subsetneqq;\":\"⫋\",\"subsim;\":\"⫇\",\"subsub;\":\"⫕\",\"subsup;\":\"⫓\",\"succapprox;\":\"⪸\",\"succ;\":\"≻\",\"succcurlyeq;\":\"≽\",\"Succeeds;\":\"≻\",\"SucceedsEqual;\":\"⪰\",\"SucceedsSlantEqual;\":\"≽\",\"SucceedsTilde;\":\"≿\",\"succeq;\":\"⪰\",\"succnapprox;\":\"⪺\",\"succneqq;\":\"⪶\",\"succnsim;\":\"⋩\",\"succsim;\":\"≿\",\"SuchThat;\":\"∋\",\"sum;\":\"∑\",\"Sum;\":\"∑\",\"sung;\":\"♪\",\"sup1;\":\"¹\",sup1:\"¹\",\"sup2;\":\"²\",sup2:\"²\",\"sup3;\":\"³\",sup3:\"³\",\"sup;\":\"⊃\",\"Sup;\":\"⋑\",\"supdot;\":\"⪾\",\"supdsub;\":\"⫘\",\"supE;\":\"⫆\",\"supe;\":\"⊇\",\"supedot;\":\"⫄\",\"Superset;\":\"⊃\",\"SupersetEqual;\":\"⊇\",\"suphsol;\":\"⟉\",\"suphsub;\":\"⫗\",\"suplarr;\":\"⥻\",\"supmult;\":\"⫂\",\"supnE;\":\"⫌\",\"supne;\":\"⊋\",\"supplus;\":\"⫀\",\"supset;\":\"⊃\",\"Supset;\":\"⋑\",\"supseteq;\":\"⊇\",\"supseteqq;\":\"⫆\",\"supsetneq;\":\"⊋\",\"supsetneqq;\":\"⫌\",\"supsim;\":\"⫈\",\"supsub;\":\"⫔\",\"supsup;\":\"⫖\",\"swarhk;\":\"⤦\",\"swarr;\":\"↙\",\"swArr;\":\"⇙\",\"swarrow;\":\"↙\",\"swnwar;\":\"⤪\",\"szlig;\":\"ß\",szlig:\"ß\",\"Tab;\":\"\t\",\"target;\":\"⌖\",\"Tau;\":\"Τ\",\"tau;\":\"τ\",\"tbrk;\":\"⎴\",\"Tcaron;\":\"Ť\",\"tcaron;\":\"ť\",\"Tcedil;\":\"Ţ\",\"tcedil;\":\"ţ\",\"Tcy;\":\"Т\",\"tcy;\":\"т\",\"tdot;\":\"⃛\",\"telrec;\":\"⌕\",\"Tfr;\":\"𝔗\",\"tfr;\":\"𝔱\",\"there4;\":\"∴\",\"therefore;\":\"∴\",\"Therefore;\":\"∴\",\"Theta;\":\"Θ\",\"theta;\":\"θ\",\"thetasym;\":\"ϑ\",\"thetav;\":\"ϑ\",\"thickapprox;\":\"≈\",\"thicksim;\":\"∼\",\"ThickSpace;\":\" \",\"ThinSpace;\":\" \",\"thinsp;\":\" \",\"thkap;\":\"≈\",\"thksim;\":\"∼\",\"THORN;\":\"Þ\",THORN:\"Þ\",\"thorn;\":\"þ\",thorn:\"þ\",\"tilde;\":\"˜\",\"Tilde;\":\"∼\",\"TildeEqual;\":\"≃\",\"TildeFullEqual;\":\"≅\",\"TildeTilde;\":\"≈\",\"timesbar;\":\"⨱\",\"timesb;\":\"⊠\",\"times;\":\"×\",times:\"×\",\"timesd;\":\"⨰\",\"tint;\":\"∭\",\"toea;\":\"⤨\",\"topbot;\":\"⌶\",\"topcir;\":\"⫱\",\"top;\":\"⊤\",\"Topf;\":\"𝕋\",\"topf;\":\"𝕥\",\"topfork;\":\"⫚\",\"tosa;\":\"⤩\",\"tprime;\":\"‴\",\"trade;\":\"™\",\"TRADE;\":\"™\",\"triangle;\":\"▵\",\"triangledown;\":\"▿\",\"triangleleft;\":\"◃\",\"trianglelefteq;\":\"⊴\",\"triangleq;\":\"≜\",\"triangleright;\":\"▹\",\"trianglerighteq;\":\"⊵\",\"tridot;\":\"◬\",\"trie;\":\"≜\",\"triminus;\":\"⨺\",\"TripleDot;\":\"⃛\",\"triplus;\":\"⨹\",\"trisb;\":\"⧍\",\"tritime;\":\"⨻\",\"trpezium;\":\"⏢\",\"Tscr;\":\"𝒯\",\"tscr;\":\"𝓉\",\"TScy;\":\"Ц\",\"tscy;\":\"ц\",\"TSHcy;\":\"Ћ\",\"tshcy;\":\"ћ\",\"Tstrok;\":\"Ŧ\",\"tstrok;\":\"ŧ\",\"twixt;\":\"≬\",\"twoheadleftarrow;\":\"↞\",\"twoheadrightarrow;\":\"↠\",\"Uacute;\":\"Ú\",Uacute:\"Ú\",\"uacute;\":\"ú\",uacute:\"ú\",\"uarr;\":\"↑\",\"Uarr;\":\"↟\",\"uArr;\":\"⇑\",\"Uarrocir;\":\"⥉\",\"Ubrcy;\":\"Ў\",\"ubrcy;\":\"ў\",\"Ubreve;\":\"Ŭ\",\"ubreve;\":\"ŭ\",\"Ucirc;\":\"Û\",Ucirc:\"Û\",\"ucirc;\":\"û\",ucirc:\"û\",\"Ucy;\":\"У\",\"ucy;\":\"у\",\"udarr;\":\"⇅\",\"Udblac;\":\"Ű\",\"udblac;\":\"ű\",\"udhar;\":\"⥮\",\"ufisht;\":\"⥾\",\"Ufr;\":\"𝔘\",\"ufr;\":\"𝔲\",\"Ugrave;\":\"Ù\",Ugrave:\"Ù\",\"ugrave;\":\"ù\",ugrave:\"ù\",\"uHar;\":\"⥣\",\"uharl;\":\"↿\",\"uharr;\":\"↾\",\"uhblk;\":\"▀\",\"ulcorn;\":\"⌜\",\"ulcorner;\":\"⌜\",\"ulcrop;\":\"⌏\",\"ultri;\":\"◸\",\"Umacr;\":\"Ū\",\"umacr;\":\"ū\",\"uml;\":\"¨\",uml:\"¨\",\"UnderBar;\":\"_\",\"UnderBrace;\":\"⏟\",\"UnderBracket;\":\"⎵\",\"UnderParenthesis;\":\"⏝\",\"Union;\":\"⋃\",\"UnionPlus;\":\"⊎\",\"Uogon;\":\"Ų\",\"uogon;\":\"ų\",\"Uopf;\":\"𝕌\",\"uopf;\":\"𝕦\",\"UpArrowBar;\":\"⤒\",\"uparrow;\":\"↑\",\"UpArrow;\":\"↑\",\"Uparrow;\":\"⇑\",\"UpArrowDownArrow;\":\"⇅\",\"updownarrow;\":\"↕\",\"UpDownArrow;\":\"↕\",\"Updownarrow;\":\"⇕\",\"UpEquilibrium;\":\"⥮\",\"upharpoonleft;\":\"↿\",\"upharpoonright;\":\"↾\",\"uplus;\":\"⊎\",\"UpperLeftArrow;\":\"↖\",\"UpperRightArrow;\":\"↗\",\"upsi;\":\"υ\",\"Upsi;\":\"ϒ\",\"upsih;\":\"ϒ\",\"Upsilon;\":\"Υ\",\"upsilon;\":\"υ\",\"UpTeeArrow;\":\"↥\",\"UpTee;\":\"⊥\",\"upuparrows;\":\"⇈\",\"urcorn;\":\"⌝\",\"urcorner;\":\"⌝\",\"urcrop;\":\"⌎\",\"Uring;\":\"Ů\",\"uring;\":\"ů\",\"urtri;\":\"◹\",\"Uscr;\":\"𝒰\",\"uscr;\":\"𝓊\",\"utdot;\":\"⋰\",\"Utilde;\":\"Ũ\",\"utilde;\":\"ũ\",\"utri;\":\"▵\",\"utrif;\":\"▴\",\"uuarr;\":\"⇈\",\"Uuml;\":\"Ü\",Uuml:\"Ü\",\"uuml;\":\"ü\",uuml:\"ü\",\"uwangle;\":\"⦧\",\"vangrt;\":\"⦜\",\"varepsilon;\":\"ϵ\",\"varkappa;\":\"ϰ\",\"varnothing;\":\"∅\",\"varphi;\":\"ϕ\",\"varpi;\":\"ϖ\",\"varpropto;\":\"∝\",\"varr;\":\"↕\",\"vArr;\":\"⇕\",\"varrho;\":\"ϱ\",\"varsigma;\":\"ς\",\"varsubsetneq;\":\"⊊︀\",\"varsubsetneqq;\":\"⫋︀\",\"varsupsetneq;\":\"⊋︀\",\"varsupsetneqq;\":\"⫌︀\",\"vartheta;\":\"ϑ\",\"vartriangleleft;\":\"⊲\",\"vartriangleright;\":\"⊳\",\"vBar;\":\"⫨\",\"Vbar;\":\"⫫\",\"vBarv;\":\"⫩\",\"Vcy;\":\"В\",\"vcy;\":\"в\",\"vdash;\":\"⊢\",\"vDash;\":\"⊨\",\"Vdash;\":\"⊩\",\"VDash;\":\"⊫\",\"Vdashl;\":\"⫦\",\"veebar;\":\"⊻\",\"vee;\":\"∨\",\"Vee;\":\"⋁\",\"veeeq;\":\"≚\",\"vellip;\":\"⋮\",\"verbar;\":\"|\",\"Verbar;\":\"‖\",\"vert;\":\"|\",\"Vert;\":\"‖\",\"VerticalBar;\":\"∣\",\"VerticalLine;\":\"|\",\"VerticalSeparator;\":\"❘\",\"VerticalTilde;\":\"≀\",\"VeryThinSpace;\":\" \",\"Vfr;\":\"𝔙\",\"vfr;\":\"𝔳\",\"vltri;\":\"⊲\",\"vnsub;\":\"⊂⃒\",\"vnsup;\":\"⊃⃒\",\"Vopf;\":\"𝕍\",\"vopf;\":\"𝕧\",\"vprop;\":\"∝\",\"vrtri;\":\"⊳\",\"Vscr;\":\"𝒱\",\"vscr;\":\"𝓋\",\"vsubnE;\":\"⫋︀\",\"vsubne;\":\"⊊︀\",\"vsupnE;\":\"⫌︀\",\"vsupne;\":\"⊋︀\",\"Vvdash;\":\"⊪\",\"vzigzag;\":\"⦚\",\"Wcirc;\":\"Ŵ\",\"wcirc;\":\"ŵ\",\"wedbar;\":\"⩟\",\"wedge;\":\"∧\",\"Wedge;\":\"⋀\",\"wedgeq;\":\"≙\",\"weierp;\":\"℘\",\"Wfr;\":\"𝔚\",\"wfr;\":\"𝔴\",\"Wopf;\":\"𝕎\",\"wopf;\":\"𝕨\",\"wp;\":\"℘\",\"wr;\":\"≀\",\"wreath;\":\"≀\",\"Wscr;\":\"𝒲\",\"wscr;\":\"𝓌\",\"xcap;\":\"⋂\",\"xcirc;\":\"◯\",\"xcup;\":\"⋃\",\"xdtri;\":\"▽\",\"Xfr;\":\"𝔛\",\"xfr;\":\"𝔵\",\"xharr;\":\"⟷\",\"xhArr;\":\"⟺\",\"Xi;\":\"Ξ\",\"xi;\":\"ξ\",\"xlarr;\":\"⟵\",\"xlArr;\":\"⟸\",\"xmap;\":\"⟼\",\"xnis;\":\"⋻\",\"xodot;\":\"⨀\",\"Xopf;\":\"𝕏\",\"xopf;\":\"𝕩\",\"xoplus;\":\"⨁\",\"xotime;\":\"⨂\",\"xrarr;\":\"⟶\",\"xrArr;\":\"⟹\",\"Xscr;\":\"𝒳\",\"xscr;\":\"𝓍\",\"xsqcup;\":\"⨆\",\"xuplus;\":\"⨄\",\"xutri;\":\"△\",\"xvee;\":\"⋁\",\"xwedge;\":\"⋀\",\"Yacute;\":\"Ý\",Yacute:\"Ý\",\"yacute;\":\"ý\",yacute:\"ý\",\"YAcy;\":\"Я\",\"yacy;\":\"я\",\"Ycirc;\":\"Ŷ\",\"ycirc;\":\"ŷ\",\"Ycy;\":\"Ы\",\"ycy;\":\"ы\",\"yen;\":\"¥\",yen:\"¥\",\"Yfr;\":\"𝔜\",\"yfr;\":\"𝔶\",\"YIcy;\":\"Ї\",\"yicy;\":\"ї\",\"Yopf;\":\"𝕐\",\"yopf;\":\"𝕪\",\"Yscr;\":\"𝒴\",\"yscr;\":\"𝓎\",\"YUcy;\":\"Ю\",\"yucy;\":\"ю\",\"yuml;\":\"ÿ\",yuml:\"ÿ\",\"Yuml;\":\"Ÿ\",\"Zacute;\":\"Ź\",\"zacute;\":\"ź\",\"Zcaron;\":\"Ž\",\"zcaron;\":\"ž\",\"Zcy;\":\"З\",\"zcy;\":\"з\",\"Zdot;\":\"Ż\",\"zdot;\":\"ż\",\"zeetrf;\":\"ℨ\",\"ZeroWidthSpace;\":\"\",\"Zeta;\":\"Ζ\",\"zeta;\":\"ζ\",\"zfr;\":\"𝔷\",\"Zfr;\":\"ℨ\",\"ZHcy;\":\"Ж\",\"zhcy;\":\"ж\",\"zigrarr;\":\"⇝\",\"zopf;\":\"𝕫\",\"Zopf;\":\"ℤ\",\"Zscr;\":\"𝒵\",\"zscr;\":\"𝓏\",\"zwj;\":\"\",\"zwnj;\":\"\"}\n},{}],13:[function(_dereq_,module){function replacer(key,value){return util.isUndefined(value)?\"\"+value:!util.isNumber(value)||!isNaN(value)&&isFinite(value)?util.isFunction(value)||util.isRegExp(value)?\"\"+value:value:\"\"+value}function truncate(s,n){return util.isString(s)?n>s.length?s:s.slice(0,n):s}function getMessage(self){return truncate(JSON.stringify(self.actual,replacer),128)+\" \"+self.operator+\" \"+truncate(JSON.stringify(self.expected,replacer),128)}function fail(actual,expected,message,operator,stackStartFunction){throw new assert.AssertionError({message:message,actual:actual,expected:expected,operator:operator,stackStartFunction:stackStartFunction})}function ok(value,message){value||fail(value,!0,message,\"==\",assert.ok)}function _deepEqual(actual,expected){if(actual===expected)return!0;if(util.isBuffer(actual)&&util.isBuffer(expected)){if(actual.length!=expected.length)return!1;for(var i=0;actual.length>i;i++)if(actual[i]!==expected[i])return!1;return!0}return util.isDate(actual)&&util.isDate(expected)?actual.getTime()===expected.getTime():util.isRegExp(actual)&&util.isRegExp(expected)?actual.source===expected.source&&actual.global===expected.global&&actual.multiline===expected.multiline&&actual.lastIndex===expected.lastIndex&&actual.ignoreCase===expected.ignoreCase:util.isObject(actual)||util.isObject(expected)?objEquiv(actual,expected):actual==expected}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function objEquiv(a,b){if(util.isNullOrUndefined(a)||util.isNullOrUndefined(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),_deepEqual(a,b)):!1;try{var key,i,ka=objectKeys(a),kb=objectKeys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!_deepEqual(a[key],b[key]))return!1;return!0}function expectedException(actual,expected){return actual&&expected?\"[object RegExp]\"==Object.prototype.toString.call(expected)?expected.test(actual):actual instanceof expected?!0:expected.call({},actual)===!0?!0:!1:!1}function _throws(shouldThrow,block,expected,message){var actual;util.isString(expected)&&(message=expected,expected=null);try{block()}catch(e){actual=e}if(message=(expected&&expected.name?\" (\"+expected.name+\").\":\".\")+(message?\" \"+message:\".\"),shouldThrow&&!actual&&fail(actual,expected,\"Missing expected exception\"+message),!shouldThrow&&expectedException(actual,expected)&&fail(actual,expected,\"Got unwanted exception\"+message),shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual)throw actual}var util=_dereq_(\"util/\"),pSlice=Array.prototype.slice,hasOwn=Object.prototype.hasOwnProperty,assert=module.exports=ok;assert.AssertionError=function(options){this.name=\"AssertionError\",this.actual=options.actual,this.expected=options.expected,this.operator=options.operator,options.message?(this.message=options.message,this.generatedMessage=!1):(this.message=getMessage(this),this.generatedMessage=!0);var stackStartFunction=options.stackStartFunction||fail;if(Error.captureStackTrace)Error.captureStackTrace(this,stackStartFunction);else{var err=Error();if(err.stack){var out=err.stack,fn_name=stackStartFunction.name,idx=out.indexOf(\"\\n\"+fn_name);if(idx>=0){var next_line=out.indexOf(\"\\n\",idx+1);out=out.substring(next_line+1)}this.stack=out}}},util.inherits(assert.AssertionError,Error),assert.fail=fail,assert.ok=ok,assert.equal=function(actual,expected,message){actual!=expected&&fail(actual,expected,message,\"==\",assert.equal)},assert.notEqual=function(actual,expected,message){actual==expected&&fail(actual,expected,message,\"!=\",assert.notEqual)},assert.deepEqual=function(actual,expected,message){_deepEqual(actual,expected)||fail(actual,expected,message,\"deepEqual\",assert.deepEqual)},assert.notDeepEqual=function(actual,expected,message){_deepEqual(actual,expected)&&fail(actual,expected,message,\"notDeepEqual\",assert.notDeepEqual)},assert.strictEqual=function(actual,expected,message){actual!==expected&&fail(actual,expected,message,\"===\",assert.strictEqual)},assert.notStrictEqual=function(actual,expected,message){actual===expected&&fail(actual,expected,message,\"!==\",assert.notStrictEqual)},assert.throws=function(){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(err){if(err)throw err};var objectKeys=Object.keys||function(obj){var keys=[];for(var key in obj)hasOwn.call(obj,key)&&keys.push(key);return keys}},{\"util/\":15}],14:[function(_dereq_,module){module.exports=function(arg){return arg&&\"object\"==typeof arg&&\"function\"==typeof arg.copy&&\"function\"==typeof arg.fill&&\"function\"==typeof arg.readUInt8}},{}],15:[function(_dereq_,module,exports){(function(process,global){function inspect(obj,opts){var ctx={seen:[],stylize:stylizeNoColor};return arguments.length>=3&&(ctx.depth=arguments[2]),arguments.length>=4&&(ctx.colors=arguments[3]),isBoolean(opts)?ctx.showHidden=opts:opts&&exports._extend(ctx,opts),isUndefined(ctx.showHidden)&&(ctx.showHidden=!1),isUndefined(ctx.depth)&&(ctx.depth=2),isUndefined(ctx.colors)&&(ctx.colors=!1),isUndefined(ctx.customInspect)&&(ctx.customInspect=!0),ctx.colors&&(ctx.stylize=stylizeWithColor),formatValue(ctx,obj,ctx.depth)}function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];return style?\"\u001b[\"+inspect.colors[style][0]+\"m\"+str+\"\u001b[\"+inspect.colors[style][1]+\"m\":str}function stylizeNoColor(str){return str}function arrayToHash(array){var hash={};return array.forEach(function(val){hash[val]=!0}),hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&(!value.constructor||value.constructor.prototype!==value)){var ret=value.inspect(recurseTimes,ctx);return isString(ret)||(ret=formatValue(ctx,ret,recurseTimes)),ret}var primitive=formatPrimitive(ctx,value);if(primitive)return primitive;var keys=Object.keys(value),visibleKeys=arrayToHash(keys);if(ctx.showHidden&&(keys=Object.getOwnPropertyNames(value)),isError(value)&&(keys.indexOf(\"message\")>=0||keys.indexOf(\"description\")>=0))return formatError(value);if(0===keys.length){if(isFunction(value)){var name=value.name?\": \"+value.name:\"\";return ctx.stylize(\"[Function\"+name+\"]\",\"special\")}if(isRegExp(value))return ctx.stylize(RegExp.prototype.toString.call(value),\"regexp\");if(isDate(value))return ctx.stylize(Date.prototype.toString.call(value),\"date\");if(isError(value))return formatError(value)}var base=\"\",array=!1,braces=[\"{\",\"}\"];if(isArray(value)&&(array=!0,braces=[\"[\",\"]\"]),isFunction(value)){var n=value.name?\": \"+value.name:\"\";base=\" [Function\"+n+\"]\"}if(isRegExp(value)&&(base=\" \"+RegExp.prototype.toString.call(value)),isDate(value)&&(base=\" \"+Date.prototype.toUTCString.call(value)),isError(value)&&(base=\" \"+formatError(value)),0===keys.length&&(!array||0==value.length))return braces[0]+base+braces[1];if(0>recurseTimes)return isRegExp(value)?ctx.stylize(RegExp.prototype.toString.call(value),\"regexp\"):ctx.stylize(\"[Object]\",\"special\");ctx.seen.push(value);var output;return output=array?formatArray(ctx,value,recurseTimes,visibleKeys,keys):keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)}),ctx.seen.pop(),reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize(\"undefined\",\"undefined\");if(isString(value)){var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return ctx.stylize(simple,\"string\")}return isNumber(value)?ctx.stylize(\"\"+value,\"number\"):isBoolean(value)?ctx.stylize(\"\"+value,\"boolean\"):isNull(value)?ctx.stylize(\"null\",\"null\"):void 0}function formatError(value){return\"[\"+Error.prototype.toString.call(value)+\"]\"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){for(var output=[],i=0,l=value.length;l>i;++i)hasOwnProperty(value,i+\"\")?output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,i+\"\",!0)):output.push(\"\");return keys.forEach(function(key){key.match(/^\\d+$/)||output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,key,!0))}),output}function formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){var name,str,desc;if(desc=Object.getOwnPropertyDescriptor(value,key)||{value:value[key]},desc.get?str=desc.set?ctx.stylize(\"[Getter/Setter]\",\"special\"):ctx.stylize(\"[Getter]\",\"special\"):desc.set&&(str=ctx.stylize(\"[Setter]\",\"special\")),hasOwnProperty(visibleKeys,key)||(name=\"[\"+key+\"]\"),str||(0>ctx.seen.indexOf(desc.value)?(str=isNull(recurseTimes)?formatValue(ctx,desc.value,null):formatValue(ctx,desc.value,recurseTimes-1),str.indexOf(\"\\n\")>-1&&(str=array?str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2):\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\"))):str=ctx.stylize(\"[Circular]\",\"special\")),isUndefined(name)){if(array&&key.match(/^\\d+$/))return str;name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(name=name.substr(1,name.length-2),name=ctx.stylize(name,\"name\")):(name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=ctx.stylize(name,\"string\"))}return name+\": \"+str}function reduceToSingleString(output,base,braces){var numLinesEst=0,length=output.reduce(function(prev,cur){return numLinesEst++,cur.indexOf(\"\\n\")>=0&&numLinesEst++,prev+cur.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0);return length>60?braces[0]+(\"\"===base?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]:braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}function isArray(ar){return Array.isArray(ar)}function isBoolean(arg){return\"boolean\"==typeof arg}function isNull(arg){return null===arg}function isNullOrUndefined(arg){return null==arg}function isNumber(arg){return\"number\"==typeof arg}function isString(arg){return\"string\"==typeof arg}function isSymbol(arg){return\"symbol\"==typeof arg}function isUndefined(arg){return void 0===arg}function isRegExp(re){return isObject(re)&&\"[object RegExp]\"===objectToString(re)}function isObject(arg){return\"object\"==typeof arg&&null!==arg}function isDate(d){return isObject(d)&&\"[object Date]\"===objectToString(d)}function isError(e){return isObject(e)&&(\"[object Error]\"===objectToString(e)||e instanceof Error)}function isFunction(arg){return\"function\"==typeof arg}function isPrimitive(arg){return null===arg||\"boolean\"==typeof arg||\"number\"==typeof arg||\"string\"==typeof arg||\"symbol\"==typeof arg||arg===void 0}function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return 10>n?\"0\"+n.toString(10):n.toString(10)}function timestamp(){var d=new Date,time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(\":\");return[d.getDate(),months[d.getMonth()],time].join(\" \")}function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){for(var objects=[],i=0;arguments.length>i;i++)objects.push(inspect(arguments[i]));return objects.join(\" \")}for(var i=1,args=arguments,len=args.length,str=(f+\"\").replace(formatRegExp,function(x){if(\"%%\"===x)return\"%\";if(i>=len)return x;switch(x){case\"%s\":return args[i++]+\"\";case\"%d\":return Number(args[i++]);case\"%j\":try{return JSON.stringify(args[i++])}catch(_){return\"[Circular]\"}default:return x}}),x=args[i];len>i;x=args[++i])str+=isNull(x)||!isObject(x)?\" \"+x:\" \"+inspect(x);return str},exports.deprecate=function(fn,msg){function deprecated(){if(!warned){if(process.throwDeprecation)throw Error(msg);process.traceDeprecation?console.trace(msg):console.error(msg),warned=!0}return fn.apply(this,arguments)}if(isUndefined(global.process))return function(){return exports.deprecate(fn,msg).apply(this,arguments)};if(process.noDeprecation===!0)return fn;var warned=!1;return deprecated};var debugEnviron,debugs={};exports.debuglog=function(set){if(isUndefined(debugEnviron)&&(debugEnviron=process.env.NODE_DEBUG||\"\"),set=set.toUpperCase(),!debugs[set])if(RegExp(\"\\\\b\"+set+\"\\\\b\",\"i\").test(debugEnviron)){var pid=process.pid;debugs[set]=function(){var msg=exports.format.apply(exports,arguments);console.error(\"%s %d: %s\",set,pid,msg)}}else debugs[set]=function(){};return debugs[set]},exports.inspect=inspect,inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},inspect.styles={special:\"cyan\",number:\"yellow\",\"boolean\":\"yellow\",undefined:\"grey\",\"null\":\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},exports.isArray=isArray,exports.isBoolean=isBoolean,exports.isNull=isNull,exports.isNullOrUndefined=isNullOrUndefined,exports.isNumber=isNumber,exports.isString=isString,exports.isSymbol=isSymbol,exports.isUndefined=isUndefined,exports.isRegExp=isRegExp,exports.isObject=isObject,exports.isDate=isDate,exports.isError=isError,exports.isFunction=isFunction,exports.isPrimitive=isPrimitive,exports.isBuffer=_dereq_(\"./support/isBuffer\");var months=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];exports.log=function(){console.log(\"%s - %s\",timestamp(),exports.format.apply(exports,arguments))},exports.inherits=_dereq_(\"inherits\"),exports._extend=function(origin,add){if(!add||!isObject(add))return origin;for(var keys=Object.keys(add),i=keys.length;i--;)origin[keys[i]]=add[keys[i]];return origin}}).call(this,_dereq_(\"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./support/isBuffer\":14,\"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js\":18,inherits:17}],16:[function(_dereq_,module){function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(arg){return\"function\"==typeof arg}function isNumber(arg){return\"number\"==typeof arg}function isObject(arg){return\"object\"==typeof arg&&null!==arg}function isUndefined(arg){return void 0===arg}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||0>n||isNaN(n))throw TypeError(\"n must be a positive number\");return this._maxListeners=n,this},EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(this._events||(this._events={}),\"error\"===type&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length))throw er=arguments[1],er instanceof Error?er:TypeError('Uncaught, unspecified \"error\" event.');if(handler=this._events[type],isUndefined(handler))return!1;if(isFunction(handler))switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:for(len=arguments.length,args=Array(len-1),i=1;len>i;i++)args[i-1]=arguments[i];handler.apply(this,args)}else if(isObject(handler)){for(len=arguments.length,args=Array(len-1),i=1;len>i;i++)args[i-1]=arguments[i];for(listeners=handler.slice(),len=listeners.length,i=0;len>i;i++)listeners[i].apply(this,args)}return!0},EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError(\"listener must be a function\");if(this._events||(this._events={}),this._events.newListener&&this.emit(\"newListener\",type,isFunction(listener.listener)?listener.listener:listener),this._events[type]?isObject(this._events[type])?this._events[type].push(listener):this._events[type]=[this._events[type],listener]:this._events[type]=listener,isObject(this._events[type])&&!this._events[type].warned){var m;m=isUndefined(this._maxListeners)?EventEmitter.defaultMaxListeners:this._maxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),console.trace())}return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){function g(){this.removeListener(type,g),fired||(fired=!0,listener.apply(this,arguments))}if(!isFunction(listener))throw TypeError(\"listener must be a function\");var fired=!1;return g.listener=listener,this.on(type,g),this},EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[type])return this;if(list=this._events[type],length=list.length,position=-1,list===listener||isFunction(list.listener)&&list.listener===listener)delete this._events[type],this._events.removeListener&&this.emit(\"removeListener\",type,listener);else if(isObject(list)){for(i=length;i-->0;)if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}if(0>position)return this;1===list.length?(list.length=0,delete this._events[type]):list.splice(position,1),this._events.removeListener&&this.emit(\"removeListener\",type,listener)}return this},EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[type]&&delete this._events[type],this;if(0===arguments.length){for(key in this._events)\"removeListener\"!==key&&this.removeAllListeners(key);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(listeners=this._events[type],isFunction(listeners))this.removeListener(type,listeners);else for(;listeners.length;)this.removeListener(type,listeners[listeners.length-1]);return delete this._events[type],this},EventEmitter.prototype.listeners=function(type){var ret;return ret=this._events&&this._events[type]?isFunction(this._events[type])?[this._events[type]]:this._events[type].slice():[]},EventEmitter.listenerCount=function(emitter,type){var ret;return ret=emitter._events&&emitter._events[type]?isFunction(emitter._events[type])?1:emitter._events[type].length:0}},{}],17:[function(_dereq_,module){module.exports=\"function\"==typeof Object.create?function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})}:function(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype,ctor.prototype=new TempCtor,ctor.prototype.constructor=ctor}},{}],18:[function(_dereq_,module){function noop(){}var process=module.exports={};process.nextTick=function(){var canSetImmediate=\"undefined\"!=typeof window&&window.setImmediate,canPost=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(canSetImmediate)return function(f){return window.setImmediate(f)};if(canPost){var queue=[];return window.addEventListener(\"message\",function(ev){var source=ev.source;if((source===window||null===source)&&\"process-tick\"===ev.data&&(ev.stopPropagation(),queue.length>0)){var fn=queue.shift();fn()}},!0),function(fn){queue.push(fn),window.postMessage(\"process-tick\",\"*\")}}return function(fn){setTimeout(fn,0)}}(),process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.on=noop,process.once=noop,process.off=noop,process.emit=noop,process.binding=function(){throw Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(){throw Error(\"process.chdir is not supported\")}},{}],19:[function(_dereq_,module){module.exports=_dereq_(14)},{}],20:[function(_dereq_,module){module.exports=_dereq_(15)},{\"./support/isBuffer\":19,\"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js\":18,inherits:17}]},{},[9])(9)}),ace.define(\"ace/mode/html_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/worker/mirror\",\"ace/mode/html/saxparser\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\");acequire(\"../lib/lang\");var Mirror=acequire(\"../worker/mirror\").Mirror,SAXParser=acequire(\"./html/saxparser\").SAXParser,errorTypes={\"expected-doctype-but-got-start-tag\":\"info\",\"expected-doctype-but-got-chars\":\"info\",\"non-html-root\":\"info\"},Worker=exports.Worker=function(sender){Mirror.call(this,sender),this.setTimeout(400),this.context=null};oop.inherits(Worker,Mirror),function(){this.setOptions=function(options){this.context=options.context},this.onUpdate=function(){var value=this.doc.getValue();if(value){var parser=new SAXParser,errors=[],noop=function(){};parser.contentHandler={startDocument:noop,endDocument:noop,startElement:noop,endElement:noop,characters:noop},parser.errorHandler={error:function(message,location,code){errors.push({row:location.line,column:location.column,text:message,type:errorTypes[code]||\"error\"})}},this.context?parser.parseFragment(value,this.context):parser.parse(value),this.sender.emit(\"error\",errors)}}}.call(Worker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object\n});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }), /* 28 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(setImmediate, global) {/* harmony import */ var atob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(39); /* harmony import */ var atob__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(atob__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var btoa__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40); /* harmony import */ var btoa__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(btoa__WEBPACK_IMPORTED_MODULE_1__); if (!('atob' in window)) { window.atob = atob__WEBPACK_IMPORTED_MODULE_0___default.a; } if (!('btoa' in window)) { window.btoa = btoa__WEBPACK_IMPORTED_MODULE_1___default.a; } !function (e, n) { "object" == typeof exports && "undefined" != typeof module ? n() : "function" == typeof define && __webpack_require__(55) ? define(n) : n() }(0, function () { "use strict"; function e(e) { var n = this.constructor; return this.then(function (t) { return n.resolve(e()).then(function () { return t }) }, function (t) { return n.resolve(e()).then(function () { return n.reject(t) }) }) } function n() { } function t(e) { if (!(this instanceof t)) throw new TypeError("Promises must be constructed via new"); if ("function" != typeof e) throw new TypeError("not a function"); this._state = 0, this._handled = !1, this._value = undefined, this._deferreds = [], u(e, this) } function o(e, n) { for (; 3 === e._state;) e = e._value; 0 !== e._state ? (e._handled = !0, t._immediateFn(function () { var t = 1 === e._state ? n.onFulfilled : n.onRejected; if (null !== t) { var o; try { o = t(e._value) } catch (f) { return void i(n.promise, f) } r(n.promise, o) } else (1 === e._state ? r : i)(n.promise, e._value) })) : e._deferreds.push(n) } function r(e, n) { try { if (n === e) throw new TypeError("A promise cannot be resolved with itself."); if (n && ("object" == typeof n || "function" == typeof n)) { var o = n.then; if (n instanceof t) return e._state = 3, e._value = n, void f(e); if ("function" == typeof o) return void u(function (e, n) { return function () { e.apply(n, arguments) } }(o, n), e) } e._state = 1, e._value = n, f(e) } catch (r) { i(e, r) } } function i(e, n) { e._state = 2, e._value = n, f(e) } function f(e) { 2 === e._state && 0 === e._deferreds.length && t._immediateFn(function () { e._handled || t._unhandledRejectionFn(e._value) }); for (var n = 0, r = e._deferreds.length; r > n; n++) o(e, e._deferreds[n]); e._deferreds = null } function u(e, n) { var t = !1; try { e(function (e) { t || (t = !0, r(n, e)) }, function (e) { t || (t = !0, i(n, e)) }) } catch (o) { if (t) return; t = !0, i(n, o) } } var c = setTimeout; t.prototype["catch"] = function (e) { return this.then(null, e) }, t.prototype.then = function (e, t) { var r = new this.constructor(n); return o(this, new function (e, n, t) { this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof n ? n : null, this.promise = t }(e, t, r)), r }, t.prototype["finally"] = e, t.all = function (e) { return new t(function (n, t) { function o(e, f) { try { if (f && ("object" == typeof f || "function" == typeof f)) { var u = f.then; if ("function" == typeof u) return void u.call(f, function (n) { o(e, n) }, t) } r[e] = f, 0 == --i && n(r) } catch (c) { t(c) } } if (!e || "undefined" == typeof e.length) throw new TypeError("Promise.all accepts an array"); var r = Array.prototype.slice.call(e); if (0 === r.length) return n([]); for (var i = r.length, f = 0; r.length > f; f++) o(f, r[f]) }) }, t.resolve = function (e) { return e && "object" == typeof e && e.constructor === t ? e : new t(function (n) { n(e) }) }, t.reject = function (e) { return new t(function (n, t) { t(e) }) }, t.race = function (e) { return new t(function (n, t) { for (var o = 0, r = e.length; r > o; o++) e[o].then(n, t) }) }, t._immediateFn = "function" == typeof setImmediate && function (e) { setImmediate(e) } || function (e) { c(e, 0) }, t._unhandledRejectionFn = function (e) { void 0 !== console && console && console.warn("Possible Unhandled Promise Rejection:", e) }; var l = function () { if ("undefined" != typeof self) return self; if ("undefined" != typeof window) return window; if ("undefined" != typeof global) return global; throw Error("unable to locate global object") }(); "Promise" in l ? l.Promise.prototype["finally"] || (l.Promise.prototype["finally"] = e) : l.Promise = t }); !(function () { var vendors = ['ms', 'moz', 'webkit', 'o']; for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback, element) { var id = window.setTimeout(function () { callback(element); }, 1000 / 60); return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) { clearTimeout(id); }; }()); //Object (function () { 'use strict'; var ObjectProto = Object.prototype, defineGetter = ObjectProto.__defineGetter__, defineSetter = ObjectProto.__defineSetter__, lookupGetter = ObjectProto.__lookupGetter__, lookupSetter = ObjectProto.__lookupSetter__, hasOwnProp = ObjectProto.hasOwnProperty; var supportDom = true; try { if (Object.defineProperty) { Object.defineProperty(document.createElement('div'), 'theRandomName', { set: function () { }, get: function () { } }); } } catch (error) { supportDom = false; } if ((!supportDom || !Object.defineProperty) && defineGetter && defineSetter && lookupGetter && lookupSetter) { var originObjetDefineProperty = Object.defineProperty; Object.defineProperty = function (obj, prop, descriptor) { if (!originObjetDefineProperty || (typeof obj.nodeType === "number" && typeof obj.nodeName === "string")) { if (arguments.length < 3) { // all arguments required throw new TypeError("Arguments not optional"); } prop += ""; // convert prop to string if (hasOwnProp.call(descriptor, "value")) { if (!lookupGetter.call(obj, prop) && !lookupSetter.call(obj, prop)) { // data property defined and no pre-existing accessors obj[prop] = descriptor.value; } if ((hasOwnProp.call(descriptor, "get") || hasOwnProp.call(descriptor, "set"))) { // descriptor has a value prop but accessor already exists throw new TypeError("Cannot specify an accessor and a value"); } } if (descriptor.get) { defineGetter.call(obj, prop, descriptor.get); } if (descriptor.set) { defineSetter.call(obj, prop, descriptor.set); } return obj; } else { return originObjetDefineProperty.call(this, obj, prop, descriptor); } }; var originObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; Object.getOwnPropertyDescriptor = function (obj, prop) { if (!originObjectGetOwnPropertyDescriptor || typeof obj.nodeType === "number" && typeof obj.nodeName === "string") { if (arguments.length < 2) { // all arguments required throw new TypeError("Arguments not optional."); } prop += ""; // convert prop to string var descriptor = { configurable: true, enumerable: true, writable: true }, getter = lookupGetter.call(obj, prop), setter = lookupSetter.call(obj, prop); if (!hasOwnProp.call(obj, prop)) { // property doesn't exist or is inherited return descriptor; } if (!getter && !setter) { // not an accessor so return prop descriptor.value = obj[prop]; return descriptor; } // there is an accessor, remove descriptor.writable; // populate descriptor.get and descriptor.set (IE's behavior) delete descriptor.writable; descriptor.get = descriptor.set = undefined; if (getter) { descriptor.get = getter; } if (setter) { descriptor.set = setter; } return descriptor; } else { return originObjectGetOwnPropertyDescriptor(obj, prop); } }; } if (!supportDom || !Object.getOwnPropertyDescriptors) { Object.getOwnPropertyDescriptors = function (o) { var res = {}; for (var key in o) { res[key] = Object.getOwnPropertyDescriptor(o, key); } return res; }; } if (!supportDom || !Object.defineProperties) { Object.defineProperties = function (obj, props) { var prop; for (prop in props) { if (hasOwnProp.call(props, prop)) { Object.defineProperty(obj, prop, props[prop]); } } }; } if (typeof Object.assign != 'function') { Object.assign = function (target, varArgs) { 'use strict'; if (target == null) { throw new TypeError('Cannot convert undefined or null to object'); } var to = Object(target); for (var index = 1; index < arguments.length; index++) { var nextSource = arguments[index]; if (nextSource != null) { for (var nextKey in nextSource) { if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } } } } return to; }; } }()); //string !(function () { if (!String.prototype.startsWith) { String.prototype.startsWith = function (searchString, position) { position = position || 0; return this.indexOf(searchString, position) === position; }; } if (!String.prototype.replaceAll) { String.prototype.replaceAll = function () { var find = arguments[0]; if (!find) return this; if (typeof find == "string") { return this.split(find).join(arguments[1]); } else if (find instanceof RegExp) { return this.replace(new RegExp(find.source, 'g'), arguments[1]); } } } })(); //array !(function () { if (!Array.prototype.fill) { Object.defineProperty(Array.prototype, 'fill', { value: function (value) { // Steps 1-2. if (this == null) { throw new TypeError('this is null or not defined'); } var O = Object(this); // Steps 3-5. var len = O.length >>> 0; // Steps 6-7. var start = arguments[1]; var relativeStart = start >> 0; // Step 8. var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); // Steps 9-10. var end = arguments[2]; var relativeEnd = end === undefined ? len : end >> 0; // Step 11. var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); // Step 12. while (k < final) { O[k] = value; k++; } // Step 13. return O; } }); } if (!Array.prototype.some) { Array.prototype.some = function (fun /*, thisp */) { "use strict"; if (this == null) throw new TypeError(); var t = Object(this), len = t.length >>> 0; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in t && fun.call(thisp, t[i], i, t)) return true; } return false; }; } })(); //function !(function () { if (!Function.prototype.bind) { var ArrayPrototypeSlice = Array.prototype.slice; Function.prototype.bind = function (otherThis) { if (typeof this !== 'function') { // closest thing possible to the ECMAScript 5 // internal IsCallable function throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); } var baseArgs = ArrayPrototypeSlice.call(arguments, 1), baseArgsLength = baseArgs.length, fToBind = this, fNOP = function () { }, fBound = function () { baseArgs.length = baseArgsLength; // reset to default base arguments baseArgs.push.apply(baseArgs, arguments); return fToBind.apply( fNOP.prototype.isPrototypeOf(this) ? this : otherThis, baseArgs ); }; if (this.prototype) { // Function.prototype doesn't have a prototype property fNOP.prototype = this.prototype; } fBound.prototype = new fNOP(); return fBound; }; } })(); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(29).setImmediate, __webpack_require__(13))) /***/ }), /* 29 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) || (typeof self !== "undefined" && self) || window; var apply = Function.prototype.apply; // DOM APIs, for completeness exports.setTimeout = function() { return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout); }; exports.setInterval = function() { return new Timeout(apply.call(setInterval, scope, arguments), clearInterval); }; exports.clearTimeout = exports.clearInterval = function(timeout) { if (timeout) { timeout.close(); } }; function Timeout(id, clearFn) { this._id = id; this._clearFn = clearFn; } Timeout.prototype.unref = Timeout.prototype.ref = function() {}; Timeout.prototype.close = function() { this._clearFn.call(scope, this._id); }; // Does not start the time, just sets up the members needed. exports.enroll = function(item, msecs) { clearTimeout(item._idleTimeoutId); item._idleTimeout = msecs; }; exports.unenroll = function(item) { clearTimeout(item._idleTimeoutId); item._idleTimeout = -1; }; exports._unrefActive = exports.active = function(item) { clearTimeout(item._idleTimeoutId); var msecs = item._idleTimeout; if (msecs >= 0) { item._idleTimeoutId = setTimeout(function onTimeout() { if (item._onTimeout) item._onTimeout(); }, msecs); } }; // setimmediate attaches itself to the global object __webpack_require__(49); // On some exotic environments, it's not clear which object `setimmediate` was // able to install onto. Search each possibility in the same order as the // `setimmediate` library. exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) || (typeof global !== "undefined" && global.setImmediate) || (this && this.setImmediate); exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) || (typeof global !== "undefined" && global.clearImmediate) || (this && this.clearImmediate); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13))) /***/ }), /* 30 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(61); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 31 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(86); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 32 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(87); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 33 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(88); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 34 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(130); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(143); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(146); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 37 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(169); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 38 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(237); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 39 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(Buffer, module) {(function (w) { "use strict"; function findBest(atobNative) { // normal window if ('function' === typeof atobNative) { return atobNative; } // browserify (web worker) if ('function' === typeof Buffer) { return function atobBrowserify(a) { //!! Deliberately using an API that's deprecated in node.js because //!! this file is for browsers and we expect them to cope with it. //!! Discussion: github.com/node-browser-compat/atob/pull/9 return new Buffer(a, 'base64').toString('binary'); }; } // ios web worker with base64js if ('object' === typeof w.base64js) { // bufferToBinaryString // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50 return function atobWebWorker_iOS(a) { var buf = w.base64js.b64ToByteArray(a); return Array.prototype.map.call(buf, function (ch) { return String.fromCharCode(ch); }).join(''); }; } return function () { // ios web worker without base64js throw new Error("You're probably in an old browser or an iOS webworker." + " It might help to include beatgammit's base64-js."); }; } var atobBest = findBest(w.atob); w.atob = atobBest; if (( true) && module && module.exports) { module.exports = atobBest; } }(window)); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(23).Buffer, __webpack_require__(54)(module))) /***/ }), /* 40 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(Buffer) {(function () { "use strict"; function btoa(str) { var buffer; if (str instanceof Buffer) { buffer = str; } else { buffer = Buffer.from(str.toString(), 'binary'); } return buffer.toString('base64'); } module.exports = btoa; }()); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(23).Buffer)) /***/ }), /* 41 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) { const external = global.external; const re_msie = /\b(?:msie |ie |trident\/[0-9].*rv[ :])([0-9.]+)/; const re_blackberry_10 = /\bbb10\b.+?\bversion\/([\d.]+)/; const re_blackberry_6_7 = /\bblackberry\b.+\bversion\/([\d.]+)/; const re_blackberry_4_5 = /\bblackberry\d+\/([\d.]+)/; const NA_VERSION = "-1"; const DEVICES = [ ["nokia", function (ua) { // nokia/-1 if (ua.indexOf("nokia ") !== -1) { return /\bnokia ([0-9]+)?/; } else { return /\bnokia([a-z0-9]+)?/; } }], //Android WP ["samsung", function (ua) { if (ua.indexOf("samsung") !== -1) { return /\bsamsung(?:[ \-](?:sgh|gt|sm))?-([a-z0-9]+)/; } else { return /\b(?:sgh|sch|gt|sm)-([a-z0-9]+)/; } }], ["wp", function (ua) { return ua.indexOf("windows phone ") !== -1 || ua.indexOf("xblwp") !== -1 || ua.indexOf("zunewp") !== -1 || ua.indexOf("windows ce") !== -1; }], ["pc", "windows"], ["ipad", "ipad"], // ipod iphone ["ipod", "ipod"], ["iphone", /\biphone\b|\biph(\d)/], ["mac", "macintosh"], ["mi", /\bmi[ \-]?([a-z0-9 ]+(?= build|\)))/], ["hongmi", /\bhm[ \-]?([a-z0-9]+)/], ["aliyun", /\baliyunos\b(?:[\-](\d+))?/], ["meizu", function (ua) { return ua.indexOf("meizu") >= 0 ? /\bmeizu[\/ ]([a-z0-9]+)\b/ : /\bm([0-9cx]{1,4})\b/; }], ["nexus", /\bnexus ([0-9s.]+)/], ["huawei", function (ua) { const re_mediapad = /\bmediapad (.+?)(?= build\/huaweimediapad\b)/; if (ua.indexOf("huawei-huawei") !== -1) { return /\bhuawei\-huawei\-([a-z0-9\-]+)/; } else if (re_mediapad.test(ua)) { return re_mediapad; } else { return /\bhuawei[ _\-]?([a-z0-9]+)/; } }], ["lenovo", function (ua) { if (ua.indexOf("lenovo-lenovo") !== -1) { return /\blenovo\-lenovo[ \-]([a-z0-9]+)/; } else { return /\blenovo[ \-]?([a-z0-9]+)/; } }], ["zte", function (ua) { if (/\bzte\-[tu]/.test(ua)) { return /\bzte-[tu][ _\-]?([a-su-z0-9\+]+)/; } else { return /\bzte[ _\-]?([a-su-z0-9\+]+)/; } }], ["vivo", /\bvivo(?: ([a-z0-9]+))?/], ["htc", function (ua) { if (/\bhtc[a-z0-9 _\-]+(?= build\b)/.test(ua)) { return /\bhtc[ _\-]?([a-z0-9 ]+(?= build))/; } else { return /\bhtc[ _\-]?([a-z0-9 ]+)/; } }], ["oppo", /\boppo[_ ]([a-z0-9]+)/], ["konka", /\bkonka[_\-]([a-z0-9]+)/], ["sonyericsson", /\bmt([a-z0-9]+)/], ["coolpad", /\bcoolpad[_ ]?([a-z0-9]+)/], ["lg", /\blg[\-]([a-z0-9]+)/], ["android", /\bandroid\b|\badr\b/], ["blackberry", function (ua) { if (ua.indexOf("blackberry") >= 0) { return /\bblackberry\s?(\d+)/; } return "bb10"; }], ]; const OS = [ ["wp", function (ua) { if (ua.indexOf("windows phone ") !== -1) { return /\bwindows phone (?:os )?([0-9.]+)/; } else if (ua.indexOf("xblwp") !== -1) { return /\bxblwp([0-9.]+)/; } else if (ua.indexOf("zunewp") !== -1) { return /\bzunewp([0-9.]+)/; } return "windows phone"; }], ["windows", /\bwindows nt ([0-9.]+)/], ["macosx", /\bmac os x ([0-9._]+)/], ["ios", function (ua) { if (/\bcpu(?: iphone)? os /.test(ua)) { return /\bcpu(?: iphone)? os ([0-9._]+)/; } else if (ua.indexOf("iph os ") !== -1) { return /\biph os ([0-9_]+)/; } else { return /\bios\b/; } }], ["yunos", /\baliyunos ([0-9.]+)/], ["android", function (ua) { if (ua.indexOf("android") >= 0) { return /\bandroid[ \/-]?([0-9.x]+)?/; } else if (ua.indexOf("adr") >= 0) { if (ua.indexOf("mqqbrowser") >= 0) { return /\badr[ ]\(linux; u; ([0-9.]+)?/; } else { return /\badr(?:[ ]([0-9.]+))?/; } } return "android"; //return /\b(?:android|\badr)(?:[\/\- ](?:\(linux; u; )?)?([0-9.x]+)?/; }], ["chromeos", /\bcros i686 ([0-9.]+)/], ["linux", "linux"], ["windowsce", /\bwindows ce(?: ([0-9.]+))?/], ["symbian", /\bsymbian(?:os)?\/([0-9.]+)/], ["blackberry", function (ua) { const m = ua.match(re_blackberry_10) || ua.match(re_blackberry_6_7) || ua.match(re_blackberry_4_5); return m ? { version: m[1] } : "blackberry"; }], ['ie', /\rv\:\/([0-9.]+)/] ]; const ENGINE = [ ["edgehtml", /edge\/([0-9.]+)/], ["trident", re_msie], ["blink", function () { return "chrome" in global && "CSS" in global && /\bapplewebkit[\/]?([0-9.+]+)/; }], ["webkit", /\bapplewebkit[\/]?([0-9.+]+)/], ["gecko", function (ua) { const match = ua.match(/\brv:([\d\w.]+).*\bgecko\/(\d+)/); if (match) { return { version: match[1] + "." + match[2], }; } }], ["presto", /\bpresto\/([0-9.]+)/], ["androidwebkit", /\bandroidwebkit\/([0-9.]+)/], ["coolpadwebkit", /\bcoolpadwebkit\/([0-9.]+)/], ["u2", /\bu2\/([0-9.]+)/], ["u3", /\bu3\/([0-9.]+)/], ]; const BROWSER = [ ['coccoc', /coc\_coc\_browser\/([0-9.]+)/], // Microsoft Edge Browser, Default browser in Windows 10. ["edge", /edge\/([0-9.]+)/], ["chrome-edge", /chrome.+edg\/([0-9.]+)/], // Sogou. ["sogou", function (ua) { if (ua.indexOf("sogoumobilebrowser") >= 0) { return /sogoumobilebrowser\/([0-9.]+)/; } else if (ua.indexOf("sogoumse") >= 0) { return true; } return / se ([0-9.x]+)/; }], // Maxthon ["maxthon", function () { try { if (external && (external.mxVersion || external.max_version)) { return { version: external.mxVersion || external.max_version, }; } } catch (ex) { /* */ } return /\b(?:maxthon|mxbrowser)(?:[ \/]([0-9.]+))?/; }], ["micromessenger", /\bmicromessenger\/([\d.]+)/], ["qq", /\bm?qqbrowser\/([0-9.]+)/], ["green", "greenbrowser"], ["tt", /\btencenttraveler ([0-9.]+)/], ["liebao", function (ua) { if (ua.indexOf("liebaofast") >= 0) { return /\bliebaofast\/([0-9.]+)/; } if (ua.indexOf("lbbrowser") === -1) { return false; } var version; try { if (external && external.LiebaoGetVersion) { version = external.LiebaoGetVersion(); } } catch (ex) { /* */ } return { version: version || NA_VERSION, }; }], ["tao", /\btaobrowser\/([0-9.]+)/], ["coolnovo", /\bcoolnovo\/([0-9.]+)/], ["saayaa", "saayaa"], ["baidu", /\b(?:ba?idubrowser|baiduhd)[ \/]([0-9.x]+)/], ["ie", re_msie], ["mi", /\bmiuibrowser\/([0-9.]+)/], ["opera", function (ua) { const re_opera_old = /\bopera.+version\/([0-9.ab]+)/; const re_opera_new = /\bopr\/([0-9.]+)/; return re_opera_old.test(ua) ? re_opera_old : re_opera_new; }], ["oupeng", /\boupeng\/([0-9.]+)/], ["yandex", /yabrowser\/([0-9.]+)/], ["ali-ap", function (ua) { if (ua.indexOf("aliapp") > 0) { return /\baliapp\(ap\/([0-9.]+)\)/; } else { return /\balipayclient\/([0-9.]+)\b/; } }], ["ali-ap-pd", /\baliapp\(ap-pd\/([0-9.]+)\)/], ["ali-am", /\baliapp\(am\/([0-9.]+)\)/], ["ali-tb", /\baliapp\(tb\/([0-9.]+)\)/], ["ali-tb-pd", /\baliapp\(tb-pd\/([0-9.]+)\)/], ["ali-tm", /\baliapp\(tm\/([0-9.]+)\)/], ["ali-tm-pd", /\baliapp\(tm-pd\/([0-9.]+)\)/], ["uc", function (ua) { if (ua.indexOf("ucbrowser/") >= 0) { return /\bucbrowser\/([0-9.]+)/; } else if (ua.indexOf("ubrowser/") >= 0) { return /\bubrowser\/([0-9.]+)/; } else if (/\buc\/[0-9]/.test(ua)) { return /\buc\/([0-9.]+)/; } else if (ua.indexOf("ucweb") >= 0) { // `ucweb/2.0` is compony info. // `UCWEB8.7.2.214/145/800` is browser info. return /\bucweb([0-9.]+)?/; } else { return /\b(?:ucbrowser|uc)\b/; } }], ["baiduboxapp", function (ua) { var back = 0; var a; if (/ baiduboxapp\//i.test(ua)) { a = /([\d+.]+)_(?:diordna|enohpi)_/.exec(ua); if (a) { a = a[1].split("."); back = a.reverse().join("."); } else if ((a = /baiduboxapp\/([\d+.]+)/.exec(ua))) { back = a[1]; } return { version: back, }; } return false; }, ], ["oppobrowser", /\boppobrowser\/([0-9.]+)/], ["chrome", / (?:chrome|crios|crmo)\/([0-9.]+)/], // Android safari ["android", function (ua) { if (ua.indexOf("android") === -1) { return; } return /\bversion\/([0-9.]+(?: beta)?)/; }], ["blackberry", function (ua) { const m = ua.match(re_blackberry_10) || ua.match(re_blackberry_6_7) || ua.match(re_blackberry_4_5); return m ? { version: m[1] } : "blackberry"; }], ["safari", /\bversion\/([0-9.]+(?: beta)?)(?: mobile(?:\/[a-z0-9]+)?)? safari\//], // Safari, WebView ["webview", /\bcpu(?: iphone)? os (?:[0-9._]+).+\bapplewebkit\b/], ["firefox", /\bfirefox\/([0-9.ab]+)/], ["nokia", /\bnokiabrowser\/([0-9.]+)/] ]; module.exports = { device: DEVICES, os: OS, browser: BROWSER, engine: ENGINE, re_msie: re_msie, }; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13))) /***/ }), /* 42 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global, Buffer) {/* harmony import */ var _DocxTpl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22); /* harmony import */ var _assets_content_types_xml__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); /* harmony import */ var _assets_rels_xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44); /* harmony import */ var _assets_document_xml_rels__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45); /* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15); /* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1); /* harmony import */ var _HTML5_Svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8); function JSDocx(props) { if (props.blob) this.blob = props.blob; if (props.blob) this.buffer = props.buffer; } JSDocx.prototype.saveAs = function (fileName) { var src; if (this.blob) { src = (URL || webkitURL).createObjectURL(this.blob); } else if (this.buffer) { src = "data:application/octet-stream," + encodeURIComponent(this.buffer); } var element = document.createElement('a'); element.setAttribute('href', src); element.setAttribute('download', fileName); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); }; JSDocx._prepareImageParts = function (htmlSource) { var imageContentParts = []; var inlinedSrcPattern = /\"data:(\w+\/\w+);(\w+),(\S+)\"/g; var inlinedReplacer = function (match, contentType, contentEncoding, encodedContent) { var index = imageContentParts.length; var extension = contentType.split('/')[1]; var contentLocation = "file:///C:/fake/image" + index + "." + extension; // mht_part: new Function('contentType', 'contentEncoding', 'contentLocation', 'encodedContent', 'return ' + TemplateString.parse(mht_pathTpl).toJSCode()) imageContentParts.push(_DocxTpl__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].mht_part(contentType, contentEncoding, contentLocation, encodedContent)); return "\"" + contentLocation + "\""; }; if (typeof htmlSource === 'string') { if (!/<img/g.test(htmlSource)) { return { htmlSource: htmlSource, imageContentParts: imageContentParts }; } htmlSource = htmlSource.replace(inlinedSrcPattern, inlinedReplacer); return { htmlSource: htmlSource, imageContentParts: imageContentParts }; } else { throw new Error("Not a valid source provided!"); } }; JSDocx._getMHTdocument = function (htmlSource) { var imageContentParts, _ref; _ref = this._prepareImageParts(htmlSource), htmlSource = _ref.htmlSource, imageContentParts = _ref.imageContentParts; htmlSource = htmlSource.replace(/\=/g, '=3D'); return _DocxTpl__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].mht_document(htmlSource, imageContentParts.join('\n') ); }; /** * @param {JSZip} zip */ JSDocx._generateDocument = function (zip) { return zip.generateAsync({ type: 'arraybuffer' }).then(function (buffer) { var props = {}; if (global.Blob) props.blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); else if (global.Buffer) props.buffer = new Buffer(new Uint8Array(buffer)); else throw new Error("Neither Blob nor Buffer are accessible in this environment. " + "Consider adding Blob.js shim"); return new JSDocx(props); }); }; JSDocx._renderDocumentFile = function (pageSetting) { return _DocxTpl__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].document(pageSetting); }; JSDocx._createPageSetting = function (documentOptions) { documentOptions = documentOptions || {}; var pageSetting = { margins: { top: 1440, right: 1440, bottom: 1440, left: 1440, header: 720, footer: 720, gutter: 0 } }; if (documentOptions.orientation == 'landscape') { Object.assign(pageSetting, { height: 12240, width: 15840, orient: 'landscape' }); } else { Object.assign(pageSetting, { width: 12240, height: 15840, orient: 'portrait' }); } if (documentOptions.margins) { Object.assign(pageSetting, documentOptions.margins); } return pageSetting; }; JSDocx._addFiles = function (zip, htmlSource, pageSetting) { zip.file('[Content_Types].xml', _assets_content_types_xml__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]); zip.folder('_rels') .file('.rels', _assets_rels_xml__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"]); zip.folder('word') .file('document.xml', _DocxTpl__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].document(pageSetting)); zip.folder('word') .file('document.xml', JSDocx._renderDocumentFile(pageSetting)) .file('afchunk.mht', JSDocx._getMHTdocument(htmlSource)) .folder('_rels') .file('document.xml.rels', _assets_document_xml_rels__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"]); return zip; }; JSDocx.fromHTMLCode = function (html, options) { var zip = new jszip__WEBPACK_IMPORTED_MODULE_4___default.a(); JSDocx._addFiles(zip, html, JSDocx._createPageSetting(options)); return JSDocx._generateDocument(zip); }; JSDocx.fromHTMLElement = function (element, options, getOuter, isWorkingElement) { if (typeof element == 'string') { element = _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].ShareInstance.$(element); } if (!element) throw new Error('@param element must be HTMLElement'); var preRender; if (!isWorkingElement) { preRender = _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].ShareInstance._('div'); preRender.addStyle({ position: 'fixed', top: '0', left: '0', zIndex: '-10000', opacity: '0' }).addTo(document.body); Array.prototype.forEach.call(element.childNodes, function (e) { if (e.tagName != 'script') preRender.addChild(e.cloneNode(true)); }); } else { preRender = element; } _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].ShareInstance.$('script', preRender, function (e) { e.parentElement.removeChild(e); return false; }); var imageTask = []; _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].ShareInstance.$('img', preRender, function (e) { if (e.src && !e.src.match(/data:/)) { var task = _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].imageToCanvas(e).then(function (canvas) { var newSrc = canvas.toDataURL(); e.src = newSrc; }); imageTask.push(task); } return false; }); _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].ShareInstance.$('svg', preRender, function (e) { var task = _HTML5_Svg__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].svgToCanvas(e).then(function (canvas) { var newSrc = canvas.toDataURL(); var image = _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].ShareInstance._('img'); image.src = newSrc; _HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__[/* default */ "b"].ShareInstance.$(e).selfReplace(image); }); imageTask.push(task); return false; }); return Promise.all(imageTask).then(function () { var code; if (getOuter) { code = preRender.outerHTML; if (!code) { var temp = document.createElement('div'); temp.addChild(preRender); code = temp.innerHTML; } } else { code = preRender.innerHTML; } return JSDocx.fromHTMLCode(code, options); }); }; /* harmony default export */ __webpack_exports__["a"] = (JSDocx); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13), __webpack_require__(23).Buffer)) /***/ }), /* 43 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\r\n <Default Extension=\"rels\" ContentType=\r\n \"application/vnd.openxmlformats-package.relationships+xml\" />\r\n <Override PartName=\"/word/document.xml\" ContentType=\r\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\"/>\r\n <Override PartName=\"/word/afchunk.mht\" ContentType=\"message/rfc822\"/>\r\n</Types>\r\n"); /***/ }), /* 44 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship\r\n Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\"\r\n Target=\"/word/document.xml\" Id=\"R09c83fafc067488e\" />\r\n</Relationships>\r\n"); /***/ }), /* 45 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\"\r\n Target=\"/word/afchunk.mht\" Id=\"htmlChunk\" />\r\n</Relationships>\r\n"); /***/ }), /* 46 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _FlagManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); /* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); _FlagManager__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].add('ABSOL_DEBUG', false); function ALogger() { _FlagManager__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].on('change', this._updateProto.bind(this)); this._updateProto(); } ALogger.prototype._updateProto = function () { ['log', 'table', 'table', 'error', 'warn'].forEach(function (name) { var cFunction = window['ABSOL_DEBUG'] ? (console[name] && console[name].bind(console)) : _noop__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]; this[name] = cFunction || _noop__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]; }.bind(this)); }; ALogger.prototype.log = _noop__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]; ALogger.prototype.table = _noop__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]; ALogger.prototype.error = _noop__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]; ALogger.prototype.warn = _noop__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]; (window || global).ALogger = new ALogger(); /* harmony default export */ __webpack_exports__["a"] = (ALogger); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13))) /***/ }), /* 47 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;;/*! showdown v 1.9.1 - 02-11-2019 */ (function(){ /** * Created by Tivie on 13-07-2015. */ function getDefaultOpts (simple) { 'use strict'; var defaultOptions = { omitExtraWLInCodeBlocks: { defaultValue: false, describe: 'Omit the default extra whiteline added to code blocks', type: 'boolean' }, noHeaderId: { defaultValue: false, describe: 'Turn on/off generated header id', type: 'boolean' }, prefixHeaderId: { defaultValue: false, describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \'section-\' prefix', type: 'string' }, rawPrefixHeaderId: { defaultValue: false, describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)', type: 'boolean' }, ghCompatibleHeaderId: { defaultValue: false, describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)', type: 'boolean' }, rawHeaderId: { defaultValue: false, describe: 'Remove only spaces, \' and " from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids', type: 'boolean' }, headerLevelStart: { defaultValue: false, describe: 'The header blocks level start', type: 'integer' }, parseImgDimensions: { defaultValue: false, describe: 'Turn on/off image dimension parsing', type: 'boolean' }, simplifiedAutoLink: { defaultValue: false, describe: 'Turn on/off GFM autolink style', type: 'boolean' }, excludeTrailingPunctuationFromURLs: { defaultValue: false, describe: 'Excludes trailing punctuation from links generated with autoLinking', type: 'boolean' }, literalMidWordUnderscores: { defaultValue: false, describe: 'Parse midword underscores as literal underscores', type: 'boolean' }, literalMidWordAsterisks: { defaultValue: false, describe: 'Parse midword asterisks as literal asterisks', type: 'boolean' }, strikethrough: { defaultValue: false, describe: 'Turn on/off strikethrough support', type: 'boolean' }, tables: { defaultValue: false, describe: 'Turn on/off tables support', type: 'boolean' }, tablesHeaderId: { defaultValue: false, describe: 'Add an id to table headers', type: 'boolean' }, ghCodeBlocks: { defaultValue: true, describe: 'Turn on/off GFM fenced code blocks support', type: 'boolean' }, tasklists: { defaultValue: false, describe: 'Turn on/off GFM tasklist support', type: 'boolean' }, smoothLivePreview: { defaultValue: false, describe: 'Prevents weird effects in live previews due to incomplete input', type: 'boolean' }, smartIndentationFix: { defaultValue: false, description: 'Tries to smartly fix indentation in es6 strings', type: 'boolean' }, disableForced4SpacesIndentedSublists: { defaultValue: false, description: 'Disables the requirement of indenting nested sublists by 4 spaces', type: 'boolean' }, simpleLineBreaks: { defaultValue: false, description: 'Parses simple line breaks as <br> (GFM Style)', type: 'boolean' }, requireSpaceBeforeHeadingText: { defaultValue: false, description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)', type: 'boolean' }, ghMentions: { defaultValue: false, description: 'Enables github @mentions', type: 'boolean' }, ghMentionsLink: { defaultValue: 'https://github.com/{u}', description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.', type: 'string' }, encodeEmails: { defaultValue: true, description: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities', type: 'boolean' }, openLinksInNewWindow: { defaultValue: false, description: 'Open all links in new windows', type: 'boolean' }, backslashEscapesHTMLTags: { defaultValue: false, description: 'Support for HTML Tag escaping. ex: \<div>foo\</div>', type: 'boolean' }, emoji: { defaultValue: false, description: 'Enable emoji support. Ex: `this is a :smile: emoji`', type: 'boolean' }, underline: { defaultValue: false, description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`', type: 'boolean' }, completeHTMLDocument: { defaultValue: false, description: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags', type: 'boolean' }, metadata: { defaultValue: false, description: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).', type: 'boolean' }, splitAdjacentBlockquotes: { defaultValue: false, description: 'Split adjacent blockquote blocks', type: 'boolean' } }; if (simple === false) { return JSON.parse(JSON.stringify(defaultOptions)); } var ret = {}; for (var opt in defaultOptions) { if (defaultOptions.hasOwnProperty(opt)) { ret[opt] = defaultOptions[opt].defaultValue; } } return ret; } function allOptionsOn () { 'use strict'; var options = getDefaultOpts(true), ret = {}; for (var opt in options) { if (options.hasOwnProperty(opt)) { ret[opt] = true; } } return ret; } /** * Created by Tivie on 06-01-2015. */ // Private properties var showdown = {}, parsers = {}, extensions = {}, globalOptions = getDefaultOpts(true), setFlavor = 'vanilla', flavor = { github: { omitExtraWLInCodeBlocks: true, simplifiedAutoLink: true, excludeTrailingPunctuationFromURLs: true, literalMidWordUnderscores: true, strikethrough: true, tables: true, tablesHeaderId: true, ghCodeBlocks: true, tasklists: true, disableForced4SpacesIndentedSublists: true, simpleLineBreaks: true, requireSpaceBeforeHeadingText: true, ghCompatibleHeaderId: true, ghMentions: true, backslashEscapesHTMLTags: true, emoji: true, splitAdjacentBlockquotes: true }, original: { noHeaderId: true, ghCodeBlocks: false }, ghost: { omitExtraWLInCodeBlocks: true, parseImgDimensions: true, simplifiedAutoLink: true, excludeTrailingPunctuationFromURLs: true, literalMidWordUnderscores: true, strikethrough: true, tables: true, tablesHeaderId: true, ghCodeBlocks: true, tasklists: true, smoothLivePreview: true, simpleLineBreaks: true, requireSpaceBeforeHeadingText: true, ghMentions: false, encodeEmails: true }, vanilla: getDefaultOpts(true), allOn: allOptionsOn() }; /** * helper namespace * @type {{}} */ showdown.helper = {}; /** * TODO LEGACY SUPPORT CODE * @type {{}} */ showdown.extensions = {}; /** * Set a global option * @static * @param {string} key * @param {*} value * @returns {showdown} */ showdown.setOption = function (key, value) { 'use strict'; globalOptions[key] = value; return this; }; /** * Get a global option * @static * @param {string} key * @returns {*} */ showdown.getOption = function (key) { 'use strict'; return globalOptions[key]; }; /** * Get the global options * @static * @returns {{}} */ showdown.getOptions = function () { 'use strict'; return globalOptions; }; /** * Reset global options to the default values * @static */ showdown.resetOptions = function () { 'use strict'; globalOptions = getDefaultOpts(true); }; /** * Set the flavor showdown should use as default * @param {string} name */ showdown.setFlavor = function (name) { 'use strict'; if (!flavor.hasOwnProperty(name)) { throw Error(name + ' flavor was not found'); } showdown.resetOptions(); var preset = flavor[name]; setFlavor = name; for (var option in preset) { if (preset.hasOwnProperty(option)) { globalOptions[option] = preset[option]; } } }; /** * Get the currently set flavor * @returns {string} */ showdown.getFlavor = function () { 'use strict'; return setFlavor; }; /** * Get the options of a specified flavor. Returns undefined if the flavor was not found * @param {string} name Name of the flavor * @returns {{}|undefined} */ showdown.getFlavorOptions = function (name) { 'use strict'; if (flavor.hasOwnProperty(name)) { return flavor[name]; } }; /** * Get the default options * @static * @param {boolean} [simple=true] * @returns {{}} */ showdown.getDefaultOptions = function (simple) { 'use strict'; return getDefaultOpts(simple); }; /** * Get or set a subParser * * subParser(name) - Get a registered subParser * subParser(name, func) - Register a subParser * @static * @param {string} name * @param {function} [func] * @returns {*} */ showdown.subParser = function (name, func) { 'use strict'; if (showdown.helper.isString(name)) { if (typeof func !== 'undefined') { parsers[name] = func; } else { if (parsers.hasOwnProperty(name)) { return parsers[name]; } else { throw Error('SubParser named ' + name + ' not registered!'); } } } }; /** * Gets or registers an extension * @static * @param {string} name * @param {object|function=} ext * @returns {*} */ showdown.extension = function (name, ext) { 'use strict'; if (!showdown.helper.isString(name)) { throw Error('Extension \'name\' must be a string'); } name = showdown.helper.stdExtName(name); // Getter if (showdown.helper.isUndefined(ext)) { if (!extensions.hasOwnProperty(name)) { throw Error('Extension named ' + name + ' is not registered!'); } return extensions[name]; // Setter } else { // Expand extension if it's wrapped in a function if (typeof ext === 'function') { ext = ext(); } // Ensure extension is an array if (!showdown.helper.isArray(ext)) { ext = [ext]; } var validExtension = validate(ext, name); if (validExtension.valid) { extensions[name] = ext; } else { throw Error(validExtension.error); } } }; /** * Gets all extensions registered * @returns {{}} */ showdown.getAllExtensions = function () { 'use strict'; return extensions; }; /** * Remove an extension * @param {string} name */ showdown.removeExtension = function (name) { 'use strict'; delete extensions[name]; }; /** * Removes all extensions */ showdown.resetExtensions = function () { 'use strict'; extensions = {}; }; /** * Validate extension * @param {array} extension * @param {string} name * @returns {{valid: boolean, error: string}} */ function validate (extension, name) { 'use strict'; var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension', ret = { valid: true, error: '' }; if (!showdown.helper.isArray(extension)) { extension = [extension]; } for (var i = 0; i < extension.length; ++i) { var baseMsg = errMsg + ' sub-extension ' + i + ': ', ext = extension[i]; if (typeof ext !== 'object') { ret.valid = false; ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given'; return ret; } if (!showdown.helper.isString(ext.type)) { ret.valid = false; ret.error = baseMsg + 'property "type" must be a string, but ' + typeof ext.type + ' given'; return ret; } var type = ext.type = ext.type.toLowerCase(); // normalize extension type if (type === 'language') { type = ext.type = 'lang'; } if (type === 'html') { type = ext.type = 'output'; } if (type !== 'lang' && type !== 'output' && type !== 'listener') { ret.valid = false; ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"'; return ret; } if (type === 'listener') { if (showdown.helper.isUndefined(ext.listeners)) { ret.valid = false; ret.error = baseMsg + '. Extensions of type "listener" must have a property called "listeners"'; return ret; } } else { if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) { ret.valid = false; ret.error = baseMsg + type + ' extensions must define either a "regex" property or a "filter" method'; return ret; } } if (ext.listeners) { if (typeof ext.listeners !== 'object') { ret.valid = false; ret.error = baseMsg + '"listeners" property must be an object but ' + typeof ext.listeners + ' given'; return ret; } for (var ln in ext.listeners) { if (ext.listeners.hasOwnProperty(ln)) { if (typeof ext.listeners[ln] !== 'function') { ret.valid = false; ret.error = baseMsg + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + ln + ' must be a function but ' + typeof ext.listeners[ln] + ' given'; return ret; } } } } if (ext.filter) { if (typeof ext.filter !== 'function') { ret.valid = false; ret.error = baseMsg + '"filter" must be a function, but ' + typeof ext.filter + ' given'; return ret; } } else if (ext.regex) { if (showdown.helper.isString(ext.regex)) { ext.regex = new RegExp(ext.regex, 'g'); } if (!(ext.regex instanceof RegExp)) { ret.valid = false; ret.error = baseMsg + '"regex" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given'; return ret; } if (showdown.helper.isUndefined(ext.replace)) { ret.valid = false; ret.error = baseMsg + '"regex" extensions must implement a replace string or function'; return ret; } } } return ret; } /** * Validate extension * @param {object} ext * @returns {boolean} */ showdown.validateExtension = function (ext) { 'use strict'; var validateExtension = validate(ext, null); if (!validateExtension.valid) { console.warn(validateExtension.error); return false; } return true; }; /** * showdownjs helper functions */ if (!showdown.hasOwnProperty('helper')) { showdown.helper = {}; } /** * Check if var is string * @static * @param {string} a * @returns {boolean} */ showdown.helper.isString = function (a) { 'use strict'; return (typeof a === 'string' || a instanceof String); }; /** * Check if var is a function * @static * @param {*} a * @returns {boolean} */ showdown.helper.isFunction = function (a) { 'use strict'; var getType = {}; return a && getType.toString.call(a) === '[object Function]'; }; /** * isArray helper function * @static * @param {*} a * @returns {boolean} */ showdown.helper.isArray = function (a) { 'use strict'; return Array.isArray(a); }; /** * Check if value is undefined * @static * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. */ showdown.helper.isUndefined = function (value) { 'use strict'; return typeof value === 'undefined'; }; /** * ForEach helper function * Iterates over Arrays and Objects (own properties only) * @static * @param {*} obj * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object */ showdown.helper.forEach = function (obj, callback) { 'use strict'; // check if obj is defined if (showdown.helper.isUndefined(obj)) { throw new Error('obj param is required'); } if (showdown.helper.isUndefined(callback)) { throw new Error('callback param is required'); } if (!showdown.helper.isFunction(callback)) { throw new Error('callback param must be a function/closure'); } if (typeof obj.forEach === 'function') { obj.forEach(callback); } else if (showdown.helper.isArray(obj)) { for (var i = 0; i < obj.length; i++) { callback(obj[i], i, obj); } } else if (typeof (obj) === 'object') { for (var prop in obj) { if (obj.hasOwnProperty(prop)) { callback(obj[prop], prop, obj); } } } else { throw new Error('obj does not seem to be an array or an iterable object'); } }; /** * Standardidize extension name * @static * @param {string} s extension name * @returns {string} */ showdown.helper.stdExtName = function (s) { 'use strict'; return s.replace(/[_?*+\/\\.^-]/g, '').replace(/\s/g, '').toLowerCase(); }; function escapeCharactersCallback (wholeMatch, m1) { 'use strict'; var charCodeToEscape = m1.charCodeAt(0); return '¨E' + charCodeToEscape + 'E'; } /** * Callback used to escape characters when passing through String.replace * @static * @param {string} wholeMatch * @param {string} m1 * @returns {string} */ showdown.helper.escapeCharactersCallback = escapeCharactersCallback; /** * Escape characters in a string * @static * @param {string} text * @param {string} charsToEscape * @param {boolean} afterBackslash * @returns {XML|string|void|*} */ showdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) { 'use strict'; // First we have to escape the escape characters so that // we can build a character class out of them var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; if (afterBackslash) { regexString = '\\\\' + regexString; } var regex = new RegExp(regexString, 'g'); text = text.replace(regex, escapeCharactersCallback); return text; }; /** * Unescape HTML entities * @param txt * @returns {string} */ showdown.helper.unescapeHTMLEntities = function (txt) { 'use strict'; return txt .replace(/"/g, '"') .replace(/</g, '<') .replace(/>/g, '>') .replace(/&/g, '&'); }; var rgxFindMatchPos = function (str, left, right, flags) { 'use strict'; var f = flags || '', g = f.indexOf('g') > -1, x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')), l = new RegExp(left, f.replace(/g/g, '')), pos = [], t, s, m, start, end; do { t = 0; while ((m = x.exec(str))) { if (l.test(m[0])) { if (!(t++)) { s = x.lastIndex; start = s - m[0].length; } } else if (t) { if (!--t) { end = m.index + m[0].length; var obj = { left: {start: start, end: s}, match: {start: s, end: m.index}, right: {start: m.index, end: end}, wholeMatch: {start: start, end: end} }; pos.push(obj); if (!g) { return pos; } } } } } while (t && (x.lastIndex = s)); return pos; }; /** * matchRecursiveRegExp * * (c) 2007 Steven Levithan <stevenlevithan.com> * MIT License * * Accepts a string to search, a left and right format delimiter * as regex patterns, and optional regex flags. Returns an array * of matches, allowing nested instances of left/right delimiters. * Use the "g" flag to return all matches, otherwise only the * first is returned. Be careful to ensure that the left and * right format delimiters produce mutually exclusive matches. * Backreferences are not supported within the right delimiter * due to how it is internally combined with the left delimiter. * When matching strings whose format delimiters are unbalanced * to the left or right, the output is intentionally as a * conventional regex library with recursion support would * produce, e.g. "<<x>" and "<x>>" both produce ["x"] when using * "<" and ">" as the delimiters (both strings contain a single, * balanced instance of "<x>"). * * examples: * matchRecursiveRegExp("test", "\\(", "\\)") * returns: [] * matchRecursiveRegExp("<t<<e>><s>>t<>", "<", ">", "g") * returns: ["t<<e>><s>", ""] * matchRecursiveRegExp("<div id=\"x\">test</div>", "<div\\b[^>]*>", "</div>", "gi") * returns: ["test"] */ showdown.helper.matchRecursiveRegExp = function (str, left, right, flags) { 'use strict'; var matchPos = rgxFindMatchPos (str, left, right, flags), results = []; for (var i = 0; i < matchPos.length; ++i) { results.push([ str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), str.slice(matchPos[i].match.start, matchPos[i].match.end), str.slice(matchPos[i].left.start, matchPos[i].left.end), str.slice(matchPos[i].right.start, matchPos[i].right.end) ]); } return results; }; /** * * @param {string} str * @param {string|function} replacement * @param {string} left * @param {string} right * @param {string} flags * @returns {string} */ showdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) { 'use strict'; if (!showdown.helper.isFunction(replacement)) { var repStr = replacement; replacement = function () { return repStr; }; } var matchPos = rgxFindMatchPos(str, left, right, flags), finalStr = str, lng = matchPos.length; if (lng > 0) { var bits = []; if (matchPos[0].wholeMatch.start !== 0) { bits.push(str.slice(0, matchPos[0].wholeMatch.start)); } for (var i = 0; i < lng; ++i) { bits.push( replacement( str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), str.slice(matchPos[i].match.start, matchPos[i].match.end), str.slice(matchPos[i].left.start, matchPos[i].left.end), str.slice(matchPos[i].right.start, matchPos[i].right.end) ) ); if (i < lng - 1) { bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start)); } } if (matchPos[lng - 1].wholeMatch.end < str.length) { bits.push(str.slice(matchPos[lng - 1].wholeMatch.end)); } finalStr = bits.join(''); } return finalStr; }; /** * Returns the index within the passed String object of the first occurrence of the specified regex, * starting the search at fromIndex. Returns -1 if the value is not found. * * @param {string} str string to search * @param {RegExp} regex Regular expression to search * @param {int} [fromIndex = 0] Index to start the search * @returns {Number} * @throws InvalidArgumentError */ showdown.helper.regexIndexOf = function (str, regex, fromIndex) { 'use strict'; if (!showdown.helper.isString(str)) { throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string'; } if (regex instanceof RegExp === false) { throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp'; } var indexOf = str.substring(fromIndex || 0).search(regex); return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf; }; /** * Splits the passed string object at the defined index, and returns an array composed of the two substrings * @param {string} str string to split * @param {int} index index to split string at * @returns {[string,string]} * @throws InvalidArgumentError */ showdown.helper.splitAtIndex = function (str, index) { 'use strict'; if (!showdown.helper.isString(str)) { throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string'; } return [str.substring(0, index), str.substring(index)]; }; /** * Obfuscate an e-mail address through the use of Character Entities, * transforming ASCII characters into their equivalent decimal or hex entities. * * Since it has a random component, subsequent calls to this function produce different results * * @param {string} mail * @returns {string} */ showdown.helper.encodeEmailAddress = function (mail) { 'use strict'; var encode = [ function (ch) { return '&#' + ch.charCodeAt(0) + ';'; }, function (ch) { return '&#x' + ch.charCodeAt(0).toString(16) + ';'; }, function (ch) { return ch; } ]; mail = mail.replace(/./g, function (ch) { if (ch === '@') { // this *must* be encoded. I insist. ch = encode[Math.floor(Math.random() * 2)](ch); } else { var r = Math.random(); // roughly 10% raw, 45% hex, 45% dec ch = ( r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch) ); } return ch; }); return mail; }; /** * * @param str * @param targetLength * @param padString * @returns {string} */ showdown.helper.padEnd = function padEnd (str, targetLength, padString) { 'use strict'; /*jshint bitwise: false*/ // eslint-disable-next-line space-infix-ops targetLength = targetLength>>0; //floor if number or convert non-number to 0; /*jshint bitwise: true*/ padString = String(padString || ' '); if (str.length > targetLength) { return String(str); } else { targetLength = targetLength - str.length; if (targetLength > padString.length) { padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed } return String(str) + padString.slice(0,targetLength); } }; /** * POLYFILLS */ // use this instead of builtin is undefined for IE8 compatibility if (typeof console === 'undefined') { console = { warn: function (msg) { 'use strict'; alert(msg); }, log: function (msg) { 'use strict'; alert(msg); }, error: function (msg) { 'use strict'; throw msg; } }; } /** * Common regexes. * We declare some common regexes to improve performance */ showdown.helper.regexes = { asteriskDashAndColon: /([*_:~])/g }; /** * EMOJIS LIST */ showdown.helper.emojis = { '+1':'\ud83d\udc4d', '-1':'\ud83d\udc4e', '100':'\ud83d\udcaf', '1234':'\ud83d\udd22', '1st_place_medal':'\ud83e\udd47', '2nd_place_medal':'\ud83e\udd48', '3rd_place_medal':'\ud83e\udd49', '8ball':'\ud83c\udfb1', 'a':'\ud83c\udd70\ufe0f', 'ab':'\ud83c\udd8e', 'abc':'\ud83d\udd24', 'abcd':'\ud83d\udd21', 'accept':'\ud83c\ude51', 'aerial_tramway':'\ud83d\udea1', 'airplane':'\u2708\ufe0f', 'alarm_clock':'\u23f0', 'alembic':'\u2697\ufe0f', 'alien':'\ud83d\udc7d', 'ambulance':'\ud83d\ude91', 'amphora':'\ud83c\udffa', 'anchor':'\u2693\ufe0f', 'angel':'\ud83d\udc7c', 'anger':'\ud83d\udca2', 'angry':'\ud83d\ude20', 'anguished':'\ud83d\ude27', 'ant':'\ud83d\udc1c', 'apple':'\ud83c\udf4e', 'aquarius':'\u2652\ufe0f', 'aries':'\u2648\ufe0f', 'arrow_backward':'\u25c0\ufe0f', 'arrow_double_down':'\u23ec', 'arrow_double_up':'\u23eb', 'arrow_down':'\u2b07\ufe0f', 'arrow_down_small':'\ud83d\udd3d', 'arrow_forward':'\u25b6\ufe0f', 'arrow_heading_down':'\u2935\ufe0f', 'arrow_heading_up':'\u2934\ufe0f', 'arrow_left':'\u2b05\ufe0f', 'arrow_lower_left':'\u2199\ufe0f', 'arrow_lower_right':'\u2198\ufe0f', 'arrow_right':'\u27a1\ufe0f', 'arrow_right_hook':'\u21aa\ufe0f', 'arrow_up':'\u2b06\ufe0f', 'arrow_up_down':'\u2195\ufe0f', 'arrow_up_small':'\ud83d\udd3c', 'arrow_upper_left':'\u2196\ufe0f', 'arrow_upper_right':'\u2197\ufe0f', 'arrows_clockwise':'\ud83d\udd03', 'arrows_counterclockwise':'\ud83d\udd04', 'art':'\ud83c\udfa8', 'articulated_lorry':'\ud83d\ude9b', 'artificial_satellite':'\ud83d\udef0', 'astonished':'\ud83d\ude32', 'athletic_shoe':'\ud83d\udc5f', 'atm':'\ud83c\udfe7', 'atom_symbol':'\u269b\ufe0f', 'avocado':'\ud83e\udd51', 'b':'\ud83c\udd71\ufe0f', 'baby':'\ud83d\udc76', 'baby_bottle':'\ud83c\udf7c', 'baby_chick':'\ud83d\udc24', 'baby_symbol':'\ud83d\udebc', 'back':'\ud83d\udd19', 'bacon':'\ud83e\udd53', 'badminton':'\ud83c\udff8', 'baggage_claim':'\ud83d\udec4', 'baguette_bread':'\ud83e\udd56', 'balance_scale':'\u2696\ufe0f', 'balloon':'\ud83c\udf88', 'ballot_box':'\ud83d\uddf3', 'ballot_box_with_check':'\u2611\ufe0f', 'bamboo':'\ud83c\udf8d', 'banana':'\ud83c\udf4c', 'bangbang':'\u203c\ufe0f', 'bank':'\ud83c\udfe6', 'bar_chart':'\ud83d\udcca', 'barber':'\ud83d\udc88', 'baseball':'\u26be\ufe0f', 'basketball':'\ud83c\udfc0', 'basketball_man':'\u26f9\ufe0f', 'basketball_woman':'\u26f9\ufe0f‍\u2640\ufe0f', 'bat':'\ud83e\udd87', 'bath':'\ud83d\udec0', 'bathtub':'\ud83d\udec1', 'battery':'\ud83d\udd0b', 'beach_umbrella':'\ud83c\udfd6', 'bear':'\ud83d\udc3b', 'bed':'\ud83d\udecf', 'bee':'\ud83d\udc1d', 'beer':'\ud83c\udf7a', 'beers':'\ud83c\udf7b', 'beetle':'\ud83d\udc1e', 'beginner':'\ud83d\udd30', 'bell':'\ud83d\udd14', 'bellhop_bell':'\ud83d\udece', 'bento':'\ud83c\udf71', 'biking_man':'\ud83d\udeb4', 'bike':'\ud83d\udeb2', 'biking_woman':'\ud83d\udeb4‍\u2640\ufe0f', 'bikini':'\ud83d\udc59', 'biohazard':'\u2623\ufe0f', 'bird':'\ud83d\udc26', 'birthday':'\ud83c\udf82', 'black_circle':'\u26ab\ufe0f', 'black_flag':'\ud83c\udff4', 'black_heart':'\ud83d\udda4', 'black_joker':'\ud83c\udccf', 'black_large_square':'\u2b1b\ufe0f', 'black_medium_small_square':'\u25fe\ufe0f', 'black_medium_square':'\u25fc\ufe0f', 'black_nib':'\u2712\ufe0f', 'black_small_square':'\u25aa\ufe0f', 'black_square_button':'\ud83d\udd32', 'blonde_man':'\ud83d\udc71', 'blonde_woman':'\ud83d\udc71‍\u2640\ufe0f', 'blossom':'\ud83c\udf3c', 'blowfish':'\ud83d\udc21', 'blue_book':'\ud83d\udcd8', 'blue_car':'\ud83d\ude99', 'blue_heart':'\ud83d\udc99', 'blush':'\ud83d\ude0a', 'boar':'\ud83d\udc17', 'boat':'\u26f5\ufe0f', 'bomb':'\ud83d\udca3', 'book':'\ud83d\udcd6', 'bookmark':'\ud83d\udd16', 'bookmark_tabs':'\ud83d\udcd1', 'books':'\ud83d\udcda', 'boom':'\ud83d\udca5', 'boot':'\ud83d\udc62', 'bouquet':'\ud83d\udc90', 'bowing_man':'\ud83d\ude47', 'bow_and_arrow':'\ud83c\udff9', 'bowing_woman':'\ud83d\ude47‍\u2640\ufe0f', 'bowling':'\ud83c\udfb3', 'boxing_glove':'\ud83e\udd4a', 'boy':'\ud83d\udc66', 'bread':'\ud83c\udf5e', 'bride_with_veil':'\ud83d\udc70', 'bridge_at_night':'\ud83c\udf09', 'briefcase':'\ud83d\udcbc', 'broken_heart':'\ud83d\udc94', 'bug':'\ud83d\udc1b', 'building_construction':'\ud83c\udfd7', 'bulb':'\ud83d\udca1', 'bullettrain_front':'\ud83d\ude85', 'bullettrain_side':'\ud83d\ude84', 'burrito':'\ud83c\udf2f', 'bus':'\ud83d\ude8c', 'business_suit_levitating':'\ud83d\udd74', 'busstop':'\ud83d\ude8f', 'bust_in_silhouette':'\ud83d\udc64', 'busts_in_silhouette':'\ud83d\udc65', 'butterfly':'\ud83e\udd8b', 'cactus':'\ud83c\udf35', 'cake':'\ud83c\udf70', 'calendar':'\ud83d\udcc6', 'call_me_hand':'\ud83e\udd19', 'calling':'\ud83d\udcf2', 'camel':'\ud83d\udc2b', 'camera':'\ud83d\udcf7', 'camera_flash':'\ud83d\udcf8', 'camping':'\ud83c\udfd5', 'cancer':'\u264b\ufe0f', 'candle':'\ud83d\udd6f', 'candy':'\ud83c\udf6c', 'canoe':'\ud83d\udef6', 'capital_abcd':'\ud83d\udd20', 'capricorn':'\u2651\ufe0f', 'car':'\ud83d\ude97', 'card_file_box':'\ud83d\uddc3', 'card_index':'\ud83d\udcc7', 'card_index_dividers':'\ud83d\uddc2', 'carousel_horse':'\ud83c\udfa0', 'carrot':'\ud83e\udd55', 'cat':'\ud83d\udc31', 'cat2':'\ud83d\udc08', 'cd':'\ud83d\udcbf', 'chains':'\u26d3', 'champagne':'\ud83c\udf7e', 'chart':'\ud83d\udcb9', 'chart_with_downwards_trend':'\ud83d\udcc9', 'chart_with_upwards_trend':'\ud83d\udcc8', 'checkered_flag':'\ud83c\udfc1', 'cheese':'\ud83e\uddc0', 'cherries':'\ud83c\udf52', 'cherry_blossom':'\ud83c\udf38', 'chestnut':'\ud83c\udf30', 'chicken':'\ud83d\udc14', 'children_crossing':'\ud83d\udeb8', 'chipmunk':'\ud83d\udc3f', 'chocolate_bar':'\ud83c\udf6b', 'christmas_tree':'\ud83c\udf84', 'church':'\u26ea\ufe0f', 'cinema':'\ud83c\udfa6', 'circus_tent':'\ud83c\udfaa', 'city_sunrise':'\ud83c\udf07', 'city_sunset':'\ud83c\udf06', 'cityscape':'\ud83c\udfd9', 'cl':'\ud83c\udd91', 'clamp':'\ud83d\udddc', 'clap':'\ud83d\udc4f', 'clapper':'\ud83c\udfac', 'classical_building':'\ud83c\udfdb', 'clinking_glasses':'\ud83e\udd42', 'clipboard':'\ud83d\udccb', 'clock1':'\ud83d\udd50', 'clock10':'\ud83d\udd59', 'clock1030':'\ud83d\udd65', 'clock11':'\ud83d\udd5a', 'clock1130':'\ud83d\udd66', 'clock12':'\ud83d\udd5b', 'clock1230':'\ud83d\udd67', 'clock130':'\ud83d\udd5c', 'clock2':'\ud83d\udd51', 'clock230':'\ud83d\udd5d', 'clock3':'\ud83d\udd52', 'clock330':'\ud83d\udd5e', 'clock4':'\ud83d\udd53', 'clock430':'\ud83d\udd5f', 'clock5':'\ud83d\udd54', 'clock530':'\ud83d\udd60', 'clock6':'\ud83d\udd55', 'clock630':'\ud83d\udd61', 'clock7':'\ud83d\udd56', 'clock730':'\ud83d\udd62', 'clock8':'\ud83d\udd57', 'clock830':'\ud83d\udd63', 'clock9':'\ud83d\udd58', 'clock930':'\ud83d\udd64', 'closed_book':'\ud83d\udcd5', 'closed_lock_with_key':'\ud83d\udd10', 'closed_umbrella':'\ud83c\udf02', 'cloud':'\u2601\ufe0f', 'cloud_with_lightning':'\ud83c\udf29', 'cloud_with_lightning_and_rain':'\u26c8', 'cloud_with_rain':'\ud83c\udf27', 'cloud_with_snow':'\ud83c\udf28', 'clown_face':'\ud83e\udd21', 'clubs':'\u2663\ufe0f', 'cocktail':'\ud83c\udf78', 'coffee':'\u2615\ufe0f', 'coffin':'\u26b0\ufe0f', 'cold_sweat':'\ud83d\ude30', 'comet':'\u2604\ufe0f', 'computer':'\ud83d\udcbb', 'computer_mouse':'\ud83d\uddb1', 'confetti_ball':'\ud83c\udf8a', 'confounded':'\ud83d\ude16', 'confused':'\ud83d\ude15', 'congratulations':'\u3297\ufe0f', 'construction':'\ud83d\udea7', 'construction_worker_man':'\ud83d\udc77', 'construction_worker_woman':'\ud83d\udc77‍\u2640\ufe0f', 'control_knobs':'\ud83c\udf9b', 'convenience_store':'\ud83c\udfea', 'cookie':'\ud83c\udf6a', 'cool':'\ud83c\udd92', 'policeman':'\ud83d\udc6e', 'copyright':'\u00a9\ufe0f', 'corn':'\ud83c\udf3d', 'couch_and_lamp':'\ud83d\udecb', 'couple':'\ud83d\udc6b', 'couple_with_heart_woman_man':'\ud83d\udc91', 'couple_with_heart_man_man':'\ud83d\udc68‍\u2764\ufe0f‍\ud83d\udc68', 'couple_with_heart_woman_woman':'\ud83d\udc69‍\u2764\ufe0f‍\ud83d\udc69', 'couplekiss_man_man':'\ud83d\udc68‍\u2764\ufe0f‍\ud83d\udc8b‍\ud83d\udc68', 'couplekiss_man_woman':'\ud83d\udc8f', 'couplekiss_woman_woman':'\ud83d\udc69‍\u2764\ufe0f‍\ud83d\udc8b‍\ud83d\udc69', 'cow':'\ud83d\udc2e', 'cow2':'\ud83d\udc04', 'cowboy_hat_face':'\ud83e\udd20', 'crab':'\ud83e\udd80', 'crayon':'\ud83d\udd8d', 'credit_card':'\ud83d\udcb3', 'crescent_moon':'\ud83c\udf19', 'cricket':'\ud83c\udfcf', 'crocodile':'\ud83d\udc0a', 'croissant':'\ud83e\udd50', 'crossed_fingers':'\ud83e\udd1e', 'crossed_flags':'\ud83c\udf8c', 'crossed_swords':'\u2694\ufe0f', 'crown':'\ud83d\udc51', 'cry':'\ud83d\ude22', 'crying_cat_face':'\ud83d\ude3f', 'crystal_ball':'\ud83d\udd2e', 'cucumber':'\ud83e\udd52', 'cupid':'\ud83d\udc98', 'curly_loop':'\u27b0', 'currency_exchange':'\ud83d\udcb1', 'curry':'\ud83c\udf5b', 'custard':'\ud83c\udf6e', 'customs':'\ud83d\udec3', 'cyclone':'\ud83c\udf00', 'dagger':'\ud83d\udde1', 'dancer':'\ud83d\udc83', 'dancing_women':'\ud83d\udc6f', 'dancing_men':'\ud83d\udc6f‍\u2642\ufe0f', 'dango':'\ud83c\udf61', 'dark_sunglasses':'\ud83d\udd76', 'dart':'\ud83c\udfaf', 'dash':'\ud83d\udca8', 'date':'\ud83d\udcc5', 'deciduous_tree':'\ud83c\udf33', 'deer':'\ud83e\udd8c', 'department_store':'\ud83c\udfec', 'derelict_house':'\ud83c\udfda', 'desert':'\ud83c\udfdc', 'desert_island':'\ud83c\udfdd', 'desktop_computer':'\ud83d\udda5', 'male_detective':'\ud83d\udd75\ufe0f', 'diamond_shape_with_a_dot_inside':'\ud83d\udca0', 'diamonds':'\u2666\ufe0f', 'disappointed':'\ud83d\ude1e', 'disappointed_relieved':'\ud83d\ude25', 'dizzy':'\ud83d\udcab', 'dizzy_face':'\ud83d\ude35', 'do_not_litter':'\ud83d\udeaf', 'dog':'\ud83d\udc36', 'dog2':'\ud83d\udc15', 'dollar':'\ud83d\udcb5', 'dolls':'\ud83c\udf8e', 'dolphin':'\ud83d\udc2c', 'door':'\ud83d\udeaa', 'doughnut':'\ud83c\udf69', 'dove':'\ud83d\udd4a', 'dragon':'\ud83d\udc09', 'dragon_face':'\ud83d\udc32', 'dress':'\ud83d\udc57', 'dromedary_camel':'\ud83d\udc2a', 'drooling_face':'\ud83e\udd24', 'droplet':'\ud83d\udca7', 'drum':'\ud83e\udd41', 'duck':'\ud83e\udd86', 'dvd':'\ud83d\udcc0', 'e-mail':'\ud83d\udce7', 'eagle':'\ud83e\udd85', 'ear':'\ud83d\udc42', 'ear_of_rice':'\ud83c\udf3e', 'earth_africa':'\ud83c\udf0d', 'earth_americas':'\ud83c\udf0e', 'earth_asia':'\ud83c\udf0f', 'egg':'\ud83e\udd5a', 'eggplant':'\ud83c\udf46', 'eight_pointed_black_star':'\u2734\ufe0f', 'eight_spoked_asterisk':'\u2733\ufe0f', 'electric_plug':'\ud83d\udd0c', 'elephant':'\ud83d\udc18', 'email':'\u2709\ufe0f', 'end':'\ud83d\udd1a', 'envelope_with_arrow':'\ud83d\udce9', 'euro':'\ud83d\udcb6', 'european_castle':'\ud83c\udff0', 'european_post_office':'\ud83c\udfe4', 'evergreen_tree':'\ud83c\udf32', 'exclamation':'\u2757\ufe0f', 'expressionless':'\ud83d\ude11', 'eye':'\ud83d\udc41', 'eye_speech_bubble':'\ud83d\udc41‍\ud83d\udde8', 'eyeglasses':'\ud83d\udc53', 'eyes':'\ud83d\udc40', 'face_with_head_bandage':'\ud83e\udd15', 'face_with_thermometer':'\ud83e\udd12', 'fist_oncoming':'\ud83d\udc4a', 'factory':'\ud83c\udfed', 'fallen_leaf':'\ud83c\udf42', 'family_man_woman_boy':'\ud83d\udc6a', 'family_man_boy':'\ud83d\udc68‍\ud83d\udc66', 'family_man_boy_boy':'\ud83d\udc68‍\ud83d\udc66‍\ud83d\udc66', 'family_man_girl':'\ud83d\udc68‍\ud83d\udc67', 'family_man_girl_boy':'\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc66', 'family_man_girl_girl':'\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc67', 'family_man_man_boy':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc66', 'family_man_man_boy_boy':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc66‍\ud83d\udc66', 'family_man_man_girl':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc67', 'family_man_man_girl_boy':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc66', 'family_man_man_girl_girl':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc67', 'family_man_woman_boy_boy':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc66‍\ud83d\udc66', 'family_man_woman_girl':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc67', 'family_man_woman_girl_boy':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc66', 'family_man_woman_girl_girl':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc67', 'family_woman_boy':'\ud83d\udc69‍\ud83d\udc66', 'family_woman_boy_boy':'\ud83d\udc69‍\ud83d\udc66‍\ud83d\udc66', 'family_woman_girl':'\ud83d\udc69‍\ud83d\udc67', 'family_woman_girl_boy':'\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc66', 'family_woman_girl_girl':'\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc67', 'family_woman_woman_boy':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc66', 'family_woman_woman_boy_boy':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc66‍\ud83d\udc66', 'family_woman_woman_girl':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc67', 'family_woman_woman_girl_boy':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc66', 'family_woman_woman_girl_girl':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc67', 'fast_forward':'\u23e9', 'fax':'\ud83d\udce0', 'fearful':'\ud83d\ude28', 'feet':'\ud83d\udc3e', 'female_detective':'\ud83d\udd75\ufe0f‍\u2640\ufe0f', 'ferris_wheel':'\ud83c\udfa1', 'ferry':'\u26f4', 'field_hockey':'\ud83c\udfd1', 'file_cabinet':'\ud83d\uddc4', 'file_folder':'\ud83d\udcc1', 'film_projector':'\ud83d\udcfd', 'film_strip':'\ud83c\udf9e', 'fire':'\ud83d\udd25', 'fire_engine':'\ud83d\ude92', 'fireworks':'\ud83c\udf86', 'first_quarter_moon':'\ud83c\udf13', 'first_quarter_moon_with_face':'\ud83c\udf1b', 'fish':'\ud83d\udc1f', 'fish_cake':'\ud83c\udf65', 'fishing_pole_and_fish':'\ud83c\udfa3', 'fist_raised':'\u270a', 'fist_left':'\ud83e\udd1b', 'fist_right':'\ud83e\udd1c', 'flags':'\ud83c\udf8f', 'flashlight':'\ud83d\udd26', 'fleur_de_lis':'\u269c\ufe0f', 'flight_arrival':'\ud83d\udeec', 'flight_departure':'\ud83d\udeeb', 'floppy_disk':'\ud83d\udcbe', 'flower_playing_cards':'\ud83c\udfb4', 'flushed':'\ud83d\ude33', 'fog':'\ud83c\udf2b', 'foggy':'\ud83c\udf01', 'football':'\ud83c\udfc8', 'footprints':'\ud83d\udc63', 'fork_and_knife':'\ud83c\udf74', 'fountain':'\u26f2\ufe0f', 'fountain_pen':'\ud83d\udd8b', 'four_leaf_clover':'\ud83c\udf40', 'fox_face':'\ud83e\udd8a', 'framed_picture':'\ud83d\uddbc', 'free':'\ud83c\udd93', 'fried_egg':'\ud83c\udf73', 'fried_shrimp':'\ud83c\udf64', 'fries':'\ud83c\udf5f', 'frog':'\ud83d\udc38', 'frowning':'\ud83d\ude26', 'frowning_face':'\u2639\ufe0f', 'frowning_man':'\ud83d\ude4d‍\u2642\ufe0f', 'frowning_woman':'\ud83d\ude4d', 'middle_finger':'\ud83d\udd95', 'fuelpump':'\u26fd\ufe0f', 'full_moon':'\ud83c\udf15', 'full_moon_with_face':'\ud83c\udf1d', 'funeral_urn':'\u26b1\ufe0f', 'game_die':'\ud83c\udfb2', 'gear':'\u2699\ufe0f', 'gem':'\ud83d\udc8e', 'gemini':'\u264a\ufe0f', 'ghost':'\ud83d\udc7b', 'gift':'\ud83c\udf81', 'gift_heart':'\ud83d\udc9d', 'girl':'\ud83d\udc67', 'globe_with_meridians':'\ud83c\udf10', 'goal_net':'\ud83e\udd45', 'goat':'\ud83d\udc10', 'golf':'\u26f3\ufe0f', 'golfing_man':'\ud83c\udfcc\ufe0f', 'golfing_woman':'\ud83c\udfcc\ufe0f‍\u2640\ufe0f', 'gorilla':'\ud83e\udd8d', 'grapes':'\ud83c\udf47', 'green_apple':'\ud83c\udf4f', 'green_book':'\ud83d\udcd7', 'green_heart':'\ud83d\udc9a', 'green_salad':'\ud83e\udd57', 'grey_exclamation':'\u2755', 'grey_question':'\u2754', 'grimacing':'\ud83d\ude2c', 'grin':'\ud83d\ude01', 'grinning':'\ud83d\ude00', 'guardsman':'\ud83d\udc82', 'guardswoman':'\ud83d\udc82‍\u2640\ufe0f', 'guitar':'\ud83c\udfb8', 'gun':'\ud83d\udd2b', 'haircut_woman':'\ud83d\udc87', 'haircut_man':'\ud83d\udc87‍\u2642\ufe0f', 'hamburger':'\ud83c\udf54', 'hammer':'\ud83d\udd28', 'hammer_and_pick':'\u2692', 'hammer_and_wrench':'\ud83d\udee0', 'hamster':'\ud83d\udc39', 'hand':'\u270b', 'handbag':'\ud83d\udc5c', 'handshake':'\ud83e\udd1d', 'hankey':'\ud83d\udca9', 'hatched_chick':'\ud83d\udc25', 'hatching_chick':'\ud83d\udc23', 'headphones':'\ud83c\udfa7', 'hear_no_evil':'\ud83d\ude49', 'heart':'\u2764\ufe0f', 'heart_decoration':'\ud83d\udc9f', 'heart_eyes':'\ud83d\ude0d', 'heart_eyes_cat':'\ud83d\ude3b', 'heartbeat':'\ud83d\udc93', 'heartpulse':'\ud83d\udc97', 'hearts':'\u2665\ufe0f', 'heavy_check_mark':'\u2714\ufe0f', 'heavy_division_sign':'\u2797', 'heavy_dollar_sign':'\ud83d\udcb2', 'heavy_heart_exclamation':'\u2763\ufe0f', 'heavy_minus_sign':'\u2796', 'heavy_multiplication_x':'\u2716\ufe0f', 'heavy_plus_sign':'\u2795', 'helicopter':'\ud83d\ude81', 'herb':'\ud83c\udf3f', 'hibiscus':'\ud83c\udf3a', 'high_brightness':'\ud83d\udd06', 'high_heel':'\ud83d\udc60', 'hocho':'\ud83d\udd2a', 'hole':'\ud83d\udd73', 'honey_pot':'\ud83c\udf6f', 'horse':'\ud83d\udc34', 'horse_racing':'\ud83c\udfc7', 'hospital':'\ud83c\udfe5', 'hot_pepper':'\ud83c\udf36', 'hotdog':'\ud83c\udf2d', 'hotel':'\ud83c\udfe8', 'hotsprings':'\u2668\ufe0f', 'hourglass':'\u231b\ufe0f', 'hourglass_flowing_sand':'\u23f3', 'house':'\ud83c\udfe0', 'house_with_garden':'\ud83c\udfe1', 'houses':'\ud83c\udfd8', 'hugs':'\ud83e\udd17', 'hushed':'\ud83d\ude2f', 'ice_cream':'\ud83c\udf68', 'ice_hockey':'\ud83c\udfd2', 'ice_skate':'\u26f8', 'icecream':'\ud83c\udf66', 'id':'\ud83c\udd94', 'ideograph_advantage':'\ud83c\ude50', 'imp':'\ud83d\udc7f', 'inbox_tray':'\ud83d\udce5', 'incoming_envelope':'\ud83d\udce8', 'tipping_hand_woman':'\ud83d\udc81', 'information_source':'\u2139\ufe0f', 'innocent':'\ud83d\ude07', 'interrobang':'\u2049\ufe0f', 'iphone':'\ud83d\udcf1', 'izakaya_lantern':'\ud83c\udfee', 'jack_o_lantern':'\ud83c\udf83', 'japan':'\ud83d\uddfe', 'japanese_castle':'\ud83c\udfef', 'japanese_goblin':'\ud83d\udc7a', 'japanese_ogre':'\ud83d\udc79', 'jeans':'\ud83d\udc56', 'joy':'\ud83d\ude02', 'joy_cat':'\ud83d\ude39', 'joystick':'\ud83d\udd79', 'kaaba':'\ud83d\udd4b', 'key':'\ud83d\udd11', 'keyboard':'\u2328\ufe0f', 'keycap_ten':'\ud83d\udd1f', 'kick_scooter':'\ud83d\udef4', 'kimono':'\ud83d\udc58', 'kiss':'\ud83d\udc8b', 'kissing':'\ud83d\ude17', 'kissing_cat':'\ud83d\ude3d', 'kissing_closed_eyes':'\ud83d\ude1a', 'kissing_heart':'\ud83d\ude18', 'kissing_smiling_eyes':'\ud83d\ude19', 'kiwi_fruit':'\ud83e\udd5d', 'koala':'\ud83d\udc28', 'koko':'\ud83c\ude01', 'label':'\ud83c\udff7', 'large_blue_circle':'\ud83d\udd35', 'large_blue_diamond':'\ud83d\udd37', 'large_orange_diamond':'\ud83d\udd36', 'last_quarter_moon':'\ud83c\udf17', 'last_quarter_moon_with_face':'\ud83c\udf1c', 'latin_cross':'\u271d\ufe0f', 'laughing':'\ud83d\ude06', 'leaves':'\ud83c\udf43', 'ledger':'\ud83d\udcd2', 'left_luggage':'\ud83d\udec5', 'left_right_arrow':'\u2194\ufe0f', 'leftwards_arrow_with_hook':'\u21a9\ufe0f', 'lemon':'\ud83c\udf4b', 'leo':'\u264c\ufe0f', 'leopard':'\ud83d\udc06', 'level_slider':'\ud83c\udf9a', 'libra':'\u264e\ufe0f', 'light_rail':'\ud83d\ude88', 'link':'\ud83d\udd17', 'lion':'\ud83e\udd81', 'lips':'\ud83d\udc44', 'lipstick':'\ud83d\udc84', 'lizard':'\ud83e\udd8e', 'lock':'\ud83d\udd12', 'lock_with_ink_pen':'\ud83d\udd0f', 'lollipop':'\ud83c\udf6d', 'loop':'\u27bf', 'loud_sound':'\ud83d\udd0a', 'loudspeaker':'\ud83d\udce2', 'love_hotel':'\ud83c\udfe9', 'love_letter':'\ud83d\udc8c', 'low_brightness':'\ud83d\udd05', 'lying_face':'\ud83e\udd25', 'm':'\u24c2\ufe0f', 'mag':'\ud83d\udd0d', 'mag_right':'\ud83d\udd0e', 'mahjong':'\ud83c\udc04\ufe0f', 'mailbox':'\ud83d\udceb', 'mailbox_closed':'\ud83d\udcea', 'mailbox_with_mail':'\ud83d\udcec', 'mailbox_with_no_mail':'\ud83d\udced', 'man':'\ud83d\udc68', 'man_artist':'\ud83d\udc68‍\ud83c\udfa8', 'man_astronaut':'\ud83d\udc68‍\ud83d\ude80', 'man_cartwheeling':'\ud83e\udd38‍\u2642\ufe0f', 'man_cook':'\ud83d\udc68‍\ud83c\udf73', 'man_dancing':'\ud83d\udd7a', 'man_facepalming':'\ud83e\udd26‍\u2642\ufe0f', 'man_factory_worker':'\ud83d\udc68‍\ud83c\udfed', 'man_farmer':'\ud83d\udc68‍\ud83c\udf3e', 'man_firefighter':'\ud83d\udc68‍\ud83d\ude92', 'man_health_worker':'\ud83d\udc68‍\u2695\ufe0f', 'man_in_tuxedo':'\ud83e\udd35', 'man_judge':'\ud83d\udc68‍\u2696\ufe0f', 'man_juggling':'\ud83e\udd39‍\u2642\ufe0f', 'man_mechanic':'\ud83d\udc68‍\ud83d\udd27', 'man_office_worker':'\ud83d\udc68‍\ud83d\udcbc', 'man_pilot':'\ud83d\udc68‍\u2708\ufe0f', 'man_playing_handball':'\ud83e\udd3e‍\u2642\ufe0f', 'man_playing_water_polo':'\ud83e\udd3d‍\u2642\ufe0f', 'man_scientist':'\ud83d\udc68‍\ud83d\udd2c', 'man_shrugging':'\ud83e\udd37‍\u2642\ufe0f', 'man_singer':'\ud83d\udc68‍\ud83c\udfa4', 'man_student':'\ud83d\udc68‍\ud83c\udf93', 'man_teacher':'\ud83d\udc68‍\ud83c\udfeb', 'man_technologist':'\ud83d\udc68‍\ud83d\udcbb', 'man_with_gua_pi_mao':'\ud83d\udc72', 'man_with_turban':'\ud83d\udc73', 'tangerine':'\ud83c\udf4a', 'mans_shoe':'\ud83d\udc5e', 'mantelpiece_clock':'\ud83d\udd70', 'maple_leaf':'\ud83c\udf41', 'martial_arts_uniform':'\ud83e\udd4b', 'mask':'\ud83d\ude37', 'massage_woman':'\ud83d\udc86', 'massage_man':'\ud83d\udc86‍\u2642\ufe0f', 'meat_on_bone':'\ud83c\udf56', 'medal_military':'\ud83c\udf96', 'medal_sports':'\ud83c\udfc5', 'mega':'\ud83d\udce3', 'melon':'\ud83c\udf48', 'memo':'\ud83d\udcdd', 'men_wrestling':'\ud83e\udd3c‍\u2642\ufe0f', 'menorah':'\ud83d\udd4e', 'mens':'\ud83d\udeb9', 'metal':'\ud83e\udd18', 'metro':'\ud83d\ude87', 'microphone':'\ud83c\udfa4', 'microscope':'\ud83d\udd2c', 'milk_glass':'\ud83e\udd5b', 'milky_way':'\ud83c\udf0c', 'minibus':'\ud83d\ude90', 'minidisc':'\ud83d\udcbd', 'mobile_phone_off':'\ud83d\udcf4', 'money_mouth_face':'\ud83e\udd11', 'money_with_wings':'\ud83d\udcb8', 'moneybag':'\ud83d\udcb0', 'monkey':'\ud83d\udc12', 'monkey_face':'\ud83d\udc35', 'monorail':'\ud83d\ude9d', 'moon':'\ud83c\udf14', 'mortar_board':'\ud83c\udf93', 'mosque':'\ud83d\udd4c', 'motor_boat':'\ud83d\udee5', 'motor_scooter':'\ud83d\udef5', 'motorcycle':'\ud83c\udfcd', 'motorway':'\ud83d\udee3', 'mount_fuji':'\ud83d\uddfb', 'mountain':'\u26f0', 'mountain_biking_man':'\ud83d\udeb5', 'mountain_biking_woman':'\ud83d\udeb5‍\u2640\ufe0f', 'mountain_cableway':'\ud83d\udea0', 'mountain_railway':'\ud83d\ude9e', 'mountain_snow':'\ud83c\udfd4', 'mouse':'\ud83d\udc2d', 'mouse2':'\ud83d\udc01', 'movie_camera':'\ud83c\udfa5', 'moyai':'\ud83d\uddff', 'mrs_claus':'\ud83e\udd36', 'muscle':'\ud83d\udcaa', 'mushroom':'\ud83c\udf44', 'musical_keyboard':'\ud83c\udfb9', 'musical_note':'\ud83c\udfb5', 'musical_score':'\ud83c\udfbc', 'mute':'\ud83d\udd07', 'nail_care':'\ud83d\udc85', 'name_badge':'\ud83d\udcdb', 'national_park':'\ud83c\udfde', 'nauseated_face':'\ud83e\udd22', 'necktie':'\ud83d\udc54', 'negative_squared_cross_mark':'\u274e', 'nerd_face':'\ud83e\udd13', 'neutral_face':'\ud83d\ude10', 'new':'\ud83c\udd95', 'new_moon':'\ud83c\udf11', 'new_moon_with_face':'\ud83c\udf1a', 'newspaper':'\ud83d\udcf0', 'newspaper_roll':'\ud83d\uddde', 'next_track_button':'\u23ed', 'ng':'\ud83c\udd96', 'no_good_man':'\ud83d\ude45‍\u2642\ufe0f', 'no_good_woman':'\ud83d\ude45', 'night_with_stars':'\ud83c\udf03', 'no_bell':'\ud83d\udd15', 'no_bicycles':'\ud83d\udeb3', 'no_entry':'\u26d4\ufe0f', 'no_entry_sign':'\ud83d\udeab', 'no_mobile_phones':'\ud83d\udcf5', 'no_mouth':'\ud83d\ude36', 'no_pedestrians':'\ud83d\udeb7', 'no_smoking':'\ud83d\udead', 'non-potable_water':'\ud83d\udeb1', 'nose':'\ud83d\udc43', 'notebook':'\ud83d\udcd3', 'notebook_with_decorative_cover':'\ud83d\udcd4', 'notes':'\ud83c\udfb6', 'nut_and_bolt':'\ud83d\udd29', 'o':'\u2b55\ufe0f', 'o2':'\ud83c\udd7e\ufe0f', 'ocean':'\ud83c\udf0a', 'octopus':'\ud83d\udc19', 'oden':'\ud83c\udf62', 'office':'\ud83c\udfe2', 'oil_drum':'\ud83d\udee2', 'ok':'\ud83c\udd97', 'ok_hand':'\ud83d\udc4c', 'ok_man':'\ud83d\ude46‍\u2642\ufe0f', 'ok_woman':'\ud83d\ude46', 'old_key':'\ud83d\udddd', 'older_man':'\ud83d\udc74', 'older_woman':'\ud83d\udc75', 'om':'\ud83d\udd49', 'on':'\ud83d\udd1b', 'oncoming_automobile':'\ud83d\ude98', 'oncoming_bus':'\ud83d\ude8d', 'oncoming_police_car':'\ud83d\ude94', 'oncoming_taxi':'\ud83d\ude96', 'open_file_folder':'\ud83d\udcc2', 'open_hands':'\ud83d\udc50', 'open_mouth':'\ud83d\ude2e', 'open_umbrella':'\u2602\ufe0f', 'ophiuchus':'\u26ce', 'orange_book':'\ud83d\udcd9', 'orthodox_cross':'\u2626\ufe0f', 'outbox_tray':'\ud83d\udce4', 'owl':'\ud83e\udd89', 'ox':'\ud83d\udc02', 'package':'\ud83d\udce6', 'page_facing_up':'\ud83d\udcc4', 'page_with_curl':'\ud83d\udcc3', 'pager':'\ud83d\udcdf', 'paintbrush':'\ud83d\udd8c', 'palm_tree':'\ud83c\udf34', 'pancakes':'\ud83e\udd5e', 'panda_face':'\ud83d\udc3c', 'paperclip':'\ud83d\udcce', 'paperclips':'\ud83d\udd87', 'parasol_on_ground':'\u26f1', 'parking':'\ud83c\udd7f\ufe0f', 'part_alternation_mark':'\u303d\ufe0f', 'partly_sunny':'\u26c5\ufe0f', 'passenger_ship':'\ud83d\udef3', 'passport_control':'\ud83d\udec2', 'pause_button':'\u23f8', 'peace_symbol':'\u262e\ufe0f', 'peach':'\ud83c\udf51', 'peanuts':'\ud83e\udd5c', 'pear':'\ud83c\udf50', 'pen':'\ud83d\udd8a', 'pencil2':'\u270f\ufe0f', 'penguin':'\ud83d\udc27', 'pensive':'\ud83d\ude14', 'performing_arts':'\ud83c\udfad', 'persevere':'\ud83d\ude23', 'person_fencing':'\ud83e\udd3a', 'pouting_woman':'\ud83d\ude4e', 'phone':'\u260e\ufe0f', 'pick':'\u26cf', 'pig':'\ud83d\udc37', 'pig2':'\ud83d\udc16', 'pig_nose':'\ud83d\udc3d', 'pill':'\ud83d\udc8a', 'pineapple':'\ud83c\udf4d', 'ping_pong':'\ud83c\udfd3', 'pisces':'\u2653\ufe0f', 'pizza':'\ud83c\udf55', 'place_of_worship':'\ud83d\uded0', 'plate_with_cutlery':'\ud83c\udf7d', 'play_or_pause_button':'\u23ef', 'point_down':'\ud83d\udc47', 'point_left':'\ud83d\udc48', 'point_right':'\ud83d\udc49', 'point_up':'\u261d\ufe0f', 'point_up_2':'\ud83d\udc46', 'police_car':'\ud83d\ude93', 'policewoman':'\ud83d\udc6e‍\u2640\ufe0f', 'poodle':'\ud83d\udc29', 'popcorn':'\ud83c\udf7f', 'post_office':'\ud83c\udfe3', 'postal_horn':'\ud83d\udcef', 'postbox':'\ud83d\udcee', 'potable_water':'\ud83d\udeb0', 'potato':'\ud83e\udd54', 'pouch':'\ud83d\udc5d', 'poultry_leg':'\ud83c\udf57', 'pound':'\ud83d\udcb7', 'rage':'\ud83d\ude21', 'pouting_cat':'\ud83d\ude3e', 'pouting_man':'\ud83d\ude4e‍\u2642\ufe0f', 'pray':'\ud83d\ude4f', 'prayer_beads':'\ud83d\udcff', 'pregnant_woman':'\ud83e\udd30', 'previous_track_button':'\u23ee', 'prince':'\ud83e\udd34', 'princess':'\ud83d\udc78', 'printer':'\ud83d\udda8', 'purple_heart':'\ud83d\udc9c', 'purse':'\ud83d\udc5b', 'pushpin':'\ud83d\udccc', 'put_litter_in_its_place':'\ud83d\udeae', 'question':'\u2753', 'rabbit':'\ud83d\udc30', 'rabbit2':'\ud83d\udc07', 'racehorse':'\ud83d\udc0e', 'racing_car':'\ud83c\udfce', 'radio':'\ud83d\udcfb', 'radio_button':'\ud83d\udd18', 'radioactive':'\u2622\ufe0f', 'railway_car':'\ud83d\ude83', 'railway_track':'\ud83d\udee4', 'rainbow':'\ud83c\udf08', 'rainbow_flag':'\ud83c\udff3\ufe0f‍\ud83c\udf08', 'raised_back_of_hand':'\ud83e\udd1a', 'raised_hand_with_fingers_splayed':'\ud83d\udd90', 'raised_hands':'\ud83d\ude4c', 'raising_hand_woman':'\ud83d\ude4b', 'raising_hand_man':'\ud83d\ude4b‍\u2642\ufe0f', 'ram':'\ud83d\udc0f', 'ramen':'\ud83c\udf5c', 'rat':'\ud83d\udc00', 'record_button':'\u23fa', 'recycle':'\u267b\ufe0f', 'red_circle':'\ud83d\udd34', 'registered':'\u00ae\ufe0f', 'relaxed':'\u263a\ufe0f', 'relieved':'\ud83d\ude0c', 'reminder_ribbon':'\ud83c\udf97', 'repeat':'\ud83d\udd01', 'repeat_one':'\ud83d\udd02', 'rescue_worker_helmet':'\u26d1', 'restroom':'\ud83d\udebb', 'revolving_hearts':'\ud83d\udc9e', 'rewind':'\u23ea', 'rhinoceros':'\ud83e\udd8f', 'ribbon':'\ud83c\udf80', 'rice':'\ud83c\udf5a', 'rice_ball':'\ud83c\udf59', 'rice_cracker':'\ud83c\udf58', 'rice_scene':'\ud83c\udf91', 'right_anger_bubble':'\ud83d\uddef', 'ring':'\ud83d\udc8d', 'robot':'\ud83e\udd16', 'rocket':'\ud83d\ude80', 'rofl':'\ud83e\udd23', 'roll_eyes':'\ud83d\ude44', 'roller_coaster':'\ud83c\udfa2', 'rooster':'\ud83d\udc13', 'rose':'\ud83c\udf39', 'rosette':'\ud83c\udff5', 'rotating_light':'\ud83d\udea8', 'round_pushpin':'\ud83d\udccd', 'rowing_man':'\ud83d\udea3', 'rowing_woman':'\ud83d\udea3‍\u2640\ufe0f', 'rugby_football':'\ud83c\udfc9', 'running_man':'\ud83c\udfc3', 'running_shirt_with_sash':'\ud83c\udfbd', 'running_woman':'\ud83c\udfc3‍\u2640\ufe0f', 'sa':'\ud83c\ude02\ufe0f', 'sagittarius':'\u2650\ufe0f', 'sake':'\ud83c\udf76', 'sandal':'\ud83d\udc61', 'santa':'\ud83c\udf85', 'satellite':'\ud83d\udce1', 'saxophone':'\ud83c\udfb7', 'school':'\ud83c\udfeb', 'school_satchel':'\ud83c\udf92', 'scissors':'\u2702\ufe0f', 'scorpion':'\ud83e\udd82', 'scorpius':'\u264f\ufe0f', 'scream':'\ud83d\ude31', 'scream_cat':'\ud83d\ude40', 'scroll':'\ud83d\udcdc', 'seat':'\ud83d\udcba', 'secret':'\u3299\ufe0f', 'see_no_evil':'\ud83d\ude48', 'seedling':'\ud83c\udf31', 'selfie':'\ud83e\udd33', 'shallow_pan_of_food':'\ud83e\udd58', 'shamrock':'\u2618\ufe0f', 'shark':'\ud83e\udd88', 'shaved_ice':'\ud83c\udf67', 'sheep':'\ud83d\udc11', 'shell':'\ud83d\udc1a', 'shield':'\ud83d\udee1', 'shinto_shrine':'\u26e9', 'ship':'\ud83d\udea2', 'shirt':'\ud83d\udc55', 'shopping':'\ud83d\udecd', 'shopping_cart':'\ud83d\uded2', 'shower':'\ud83d\udebf', 'shrimp':'\ud83e\udd90', 'signal_strength':'\ud83d\udcf6', 'six_pointed_star':'\ud83d\udd2f', 'ski':'\ud83c\udfbf', 'skier':'\u26f7', 'skull':'\ud83d\udc80', 'skull_and_crossbones':'\u2620\ufe0f', 'sleeping':'\ud83d\ude34', 'sleeping_bed':'\ud83d\udecc', 'sleepy':'\ud83d\ude2a', 'slightly_frowning_face':'\ud83d\ude41', 'slightly_smiling_face':'\ud83d\ude42', 'slot_machine':'\ud83c\udfb0', 'small_airplane':'\ud83d\udee9', 'small_blue_diamond':'\ud83d\udd39', 'small_orange_diamond':'\ud83d\udd38', 'small_red_triangle':'\ud83d\udd3a', 'small_red_triangle_down':'\ud83d\udd3b', 'smile':'\ud83d\ude04', 'smile_cat':'\ud83d\ude38', 'smiley':'\ud83d\ude03', 'smiley_cat':'\ud83d\ude3a', 'smiling_imp':'\ud83d\ude08', 'smirk':'\ud83d\ude0f', 'smirk_cat':'\ud83d\ude3c', 'smoking':'\ud83d\udeac', 'snail':'\ud83d\udc0c', 'snake':'\ud83d\udc0d', 'sneezing_face':'\ud83e\udd27', 'snowboarder':'\ud83c\udfc2', 'snowflake':'\u2744\ufe0f', 'snowman':'\u26c4\ufe0f', 'snowman_with_snow':'\u2603\ufe0f', 'sob':'\ud83d\ude2d', 'soccer':'\u26bd\ufe0f', 'soon':'\ud83d\udd1c', 'sos':'\ud83c\udd98', 'sound':'\ud83d\udd09', 'space_invader':'\ud83d\udc7e', 'spades':'\u2660\ufe0f', 'spaghetti':'\ud83c\udf5d', 'sparkle':'\u2747\ufe0f', 'sparkler':'\ud83c\udf87', 'sparkles':'\u2728', 'sparkling_heart':'\ud83d\udc96', 'speak_no_evil':'\ud83d\ude4a', 'speaker':'\ud83d\udd08', 'speaking_head':'\ud83d\udde3', 'speech_balloon':'\ud83d\udcac', 'speedboat':'\ud83d\udea4', 'spider':'\ud83d\udd77', 'spider_web':'\ud83d\udd78', 'spiral_calendar':'\ud83d\uddd3', 'spiral_notepad':'\ud83d\uddd2', 'spoon':'\ud83e\udd44', 'squid':'\ud83e\udd91', 'stadium':'\ud83c\udfdf', 'star':'\u2b50\ufe0f', 'star2':'\ud83c\udf1f', 'star_and_crescent':'\u262a\ufe0f', 'star_of_david':'\u2721\ufe0f', 'stars':'\ud83c\udf20', 'station':'\ud83d\ude89', 'statue_of_liberty':'\ud83d\uddfd', 'steam_locomotive':'\ud83d\ude82', 'stew':'\ud83c\udf72', 'stop_button':'\u23f9', 'stop_sign':'\ud83d\uded1', 'stopwatch':'\u23f1', 'straight_ruler':'\ud83d\udccf', 'strawberry':'\ud83c\udf53', 'stuck_out_tongue':'\ud83d\ude1b', 'stuck_out_tongue_closed_eyes':'\ud83d\ude1d', 'stuck_out_tongue_winking_eye':'\ud83d\ude1c', 'studio_microphone':'\ud83c\udf99', 'stuffed_flatbread':'\ud83e\udd59', 'sun_behind_large_cloud':'\ud83c\udf25', 'sun_behind_rain_cloud':'\ud83c\udf26', 'sun_behind_small_cloud':'\ud83c\udf24', 'sun_with_face':'\ud83c\udf1e', 'sunflower':'\ud83c\udf3b', 'sunglasses':'\ud83d\ude0e', 'sunny':'\u2600\ufe0f', 'sunrise':'\ud83c\udf05', 'sunrise_over_mountains':'\ud83c\udf04', 'surfing_man':'\ud83c\udfc4', 'surfing_woman':'\ud83c\udfc4‍\u2640\ufe0f', 'sushi':'\ud83c\udf63', 'suspension_railway':'\ud83d\ude9f', 'sweat':'\ud83d\ude13', 'sweat_drops':'\ud83d\udca6', 'sweat_smile':'\ud83d\ude05', 'sweet_potato':'\ud83c\udf60', 'swimming_man':'\ud83c\udfca', 'swimming_woman':'\ud83c\udfca‍\u2640\ufe0f', 'symbols':'\ud83d\udd23', 'synagogue':'\ud83d\udd4d', 'syringe':'\ud83d\udc89', 'taco':'\ud83c\udf2e', 'tada':'\ud83c\udf89', 'tanabata_tree':'\ud83c\udf8b', 'taurus':'\u2649\ufe0f', 'taxi':'\ud83d\ude95', 'tea':'\ud83c\udf75', 'telephone_receiver':'\ud83d\udcde', 'telescope':'\ud83d\udd2d', 'tennis':'\ud83c\udfbe', 'tent':'\u26fa\ufe0f', 'thermometer':'\ud83c\udf21', 'thinking':'\ud83e\udd14', 'thought_balloon':'\ud83d\udcad', 'ticket':'\ud83c\udfab', 'tickets':'\ud83c\udf9f', 'tiger':'\ud83d\udc2f', 'tiger2':'\ud83d\udc05', 'timer_clock':'\u23f2', 'tipping_hand_man':'\ud83d\udc81‍\u2642\ufe0f', 'tired_face':'\ud83d\ude2b', 'tm':'\u2122\ufe0f', 'toilet':'\ud83d\udebd', 'tokyo_tower':'\ud83d\uddfc', 'tomato':'\ud83c\udf45', 'tongue':'\ud83d\udc45', 'top':'\ud83d\udd1d', 'tophat':'\ud83c\udfa9', 'tornado':'\ud83c\udf2a', 'trackball':'\ud83d\uddb2', 'tractor':'\ud83d\ude9c', 'traffic_light':'\ud83d\udea5', 'train':'\ud83d\ude8b', 'train2':'\ud83d\ude86', 'tram':'\ud83d\ude8a', 'triangular_flag_on_post':'\ud83d\udea9', 'triangular_ruler':'\ud83d\udcd0', 'trident':'\ud83d\udd31', 'triumph':'\ud83d\ude24', 'trolleybus':'\ud83d\ude8e', 'trophy':'\ud83c\udfc6', 'tropical_drink':'\ud83c\udf79', 'tropical_fish':'\ud83d\udc20', 'truck':'\ud83d\ude9a', 'trumpet':'\ud83c\udfba', 'tulip':'\ud83c\udf37', 'tumbler_glass':'\ud83e\udd43', 'turkey':'\ud83e\udd83', 'turtle':'\ud83d\udc22', 'tv':'\ud83d\udcfa', 'twisted_rightwards_arrows':'\ud83d\udd00', 'two_hearts':'\ud83d\udc95', 'two_men_holding_hands':'\ud83d\udc6c', 'two_women_holding_hands':'\ud83d\udc6d', 'u5272':'\ud83c\ude39', 'u5408':'\ud83c\ude34', 'u55b6':'\ud83c\ude3a', 'u6307':'\ud83c\ude2f\ufe0f', 'u6708':'\ud83c\ude37\ufe0f', 'u6709':'\ud83c\ude36', 'u6e80':'\ud83c\ude35', 'u7121':'\ud83c\ude1a\ufe0f', 'u7533':'\ud83c\ude38', 'u7981':'\ud83c\ude32', 'u7a7a':'\ud83c\ude33', 'umbrella':'\u2614\ufe0f', 'unamused':'\ud83d\ude12', 'underage':'\ud83d\udd1e', 'unicorn':'\ud83e\udd84', 'unlock':'\ud83d\udd13', 'up':'\ud83c\udd99', 'upside_down_face':'\ud83d\ude43', 'v':'\u270c\ufe0f', 'vertical_traffic_light':'\ud83d\udea6', 'vhs':'\ud83d\udcfc', 'vibration_mode':'\ud83d\udcf3', 'video_camera':'\ud83d\udcf9', 'video_game':'\ud83c\udfae', 'violin':'\ud83c\udfbb', 'virgo':'\u264d\ufe0f', 'volcano':'\ud83c\udf0b', 'volleyball':'\ud83c\udfd0', 'vs':'\ud83c\udd9a', 'vulcan_salute':'\ud83d\udd96', 'walking_man':'\ud83d\udeb6', 'walking_woman':'\ud83d\udeb6‍\u2640\ufe0f', 'waning_crescent_moon':'\ud83c\udf18', 'waning_gibbous_moon':'\ud83c\udf16', 'warning':'\u26a0\ufe0f', 'wastebasket':'\ud83d\uddd1', 'watch':'\u231a\ufe0f', 'water_buffalo':'\ud83d\udc03', 'watermelon':'\ud83c\udf49', 'wave':'\ud83d\udc4b', 'wavy_dash':'\u3030\ufe0f', 'waxing_crescent_moon':'\ud83c\udf12', 'wc':'\ud83d\udebe', 'weary':'\ud83d\ude29', 'wedding':'\ud83d\udc92', 'weight_lifting_man':'\ud83c\udfcb\ufe0f', 'weight_lifting_woman':'\ud83c\udfcb\ufe0f‍\u2640\ufe0f', 'whale':'\ud83d\udc33', 'whale2':'\ud83d\udc0b', 'wheel_of_dharma':'\u2638\ufe0f', 'wheelchair':'\u267f\ufe0f', 'white_check_mark':'\u2705', 'white_circle':'\u26aa\ufe0f', 'white_flag':'\ud83c\udff3\ufe0f', 'white_flower':'\ud83d\udcae', 'white_large_square':'\u2b1c\ufe0f', 'white_medium_small_square':'\u25fd\ufe0f', 'white_medium_square':'\u25fb\ufe0f', 'white_small_square':'\u25ab\ufe0f', 'white_square_button':'\ud83d\udd33', 'wilted_flower':'\ud83e\udd40', 'wind_chime':'\ud83c\udf90', 'wind_face':'\ud83c\udf2c', 'wine_glass':'\ud83c\udf77', 'wink':'\ud83d\ude09', 'wolf':'\ud83d\udc3a', 'woman':'\ud83d\udc69', 'woman_artist':'\ud83d\udc69‍\ud83c\udfa8', 'woman_astronaut':'\ud83d\udc69‍\ud83d\ude80', 'woman_cartwheeling':'\ud83e\udd38‍\u2640\ufe0f', 'woman_cook':'\ud83d\udc69‍\ud83c\udf73', 'woman_facepalming':'\ud83e\udd26‍\u2640\ufe0f', 'woman_factory_worker':'\ud83d\udc69‍\ud83c\udfed', 'woman_farmer':'\ud83d\udc69‍\ud83c\udf3e', 'woman_firefighter':'\ud83d\udc69‍\ud83d\ude92', 'woman_health_worker':'\ud83d\udc69‍\u2695\ufe0f', 'woman_judge':'\ud83d\udc69‍\u2696\ufe0f', 'woman_juggling':'\ud83e\udd39‍\u2640\ufe0f', 'woman_mechanic':'\ud83d\udc69‍\ud83d\udd27', 'woman_office_worker':'\ud83d\udc69‍\ud83d\udcbc', 'woman_pilot':'\ud83d\udc69‍\u2708\ufe0f', 'woman_playing_handball':'\ud83e\udd3e‍\u2640\ufe0f', 'woman_playing_water_polo':'\ud83e\udd3d‍\u2640\ufe0f', 'woman_scientist':'\ud83d\udc69‍\ud83d\udd2c', 'woman_shrugging':'\ud83e\udd37‍\u2640\ufe0f', 'woman_singer':'\ud83d\udc69‍\ud83c\udfa4', 'woman_student':'\ud83d\udc69‍\ud83c\udf93', 'woman_teacher':'\ud83d\udc69‍\ud83c\udfeb', 'woman_technologist':'\ud83d\udc69‍\ud83d\udcbb', 'woman_with_turban':'\ud83d\udc73‍\u2640\ufe0f', 'womans_clothes':'\ud83d\udc5a', 'womans_hat':'\ud83d\udc52', 'women_wrestling':'\ud83e\udd3c‍\u2640\ufe0f', 'womens':'\ud83d\udeba', 'world_map':'\ud83d\uddfa', 'worried':'\ud83d\ude1f', 'wrench':'\ud83d\udd27', 'writing_hand':'\u270d\ufe0f', 'x':'\u274c', 'yellow_heart':'\ud83d\udc9b', 'yen':'\ud83d\udcb4', 'yin_yang':'\u262f\ufe0f', 'yum':'\ud83d\ude0b', 'zap':'\u26a1\ufe0f', 'zipper_mouth_face':'\ud83e\udd10', 'zzz':'\ud83d\udca4', /* special emojis :P */ 'octocat': '<img alt=":octocat:" height="20" width="20" align="absmiddle" src="https://assets-cdn.github.com/images/icons/emoji/octocat.png">', 'showdown': '<span style="font-family: \'Anonymous Pro\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;">S</span>' }; /** * Created by Estevao on 31-05-2015. */ /** * Showdown Converter class * @class * @param {object} [converterOptions] * @returns {Converter} */ showdown.Converter = function (converterOptions) { 'use strict'; var /** * Options used by this converter * @private * @type {{}} */ options = {}, /** * Language extensions used by this converter * @private * @type {Array} */ langExtensions = [], /** * Output modifiers extensions used by this converter * @private * @type {Array} */ outputModifiers = [], /** * Event listeners * @private * @type {{}} */ listeners = {}, /** * The flavor set in this converter */ setConvFlavor = setFlavor, /** * Metadata of the document * @type {{parsed: {}, raw: string, format: string}} */ metadata = { parsed: {}, raw: '', format: '' }; _constructor(); /** * Converter constructor * @private */ function _constructor () { converterOptions = converterOptions || {}; for (var gOpt in globalOptions) { if (globalOptions.hasOwnProperty(gOpt)) { options[gOpt] = globalOptions[gOpt]; } } // Merge options if (typeof converterOptions === 'object') { for (var opt in converterOptions) { if (converterOptions.hasOwnProperty(opt)) { options[opt] = converterOptions[opt]; } } } else { throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions + ' was passed instead.'); } if (options.extensions) { showdown.helper.forEach(options.extensions, _parseExtension); } } /** * Parse extension * @param {*} ext * @param {string} [name=''] * @private */ function _parseExtension (ext, name) { name = name || null; // If it's a string, the extension was previously loaded if (showdown.helper.isString(ext)) { ext = showdown.helper.stdExtName(ext); name = ext; // LEGACY_SUPPORT CODE if (showdown.extensions[ext]) { console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' + 'Please inform the developer that the extension should be updated!'); legacyExtensionLoading(showdown.extensions[ext], ext); return; // END LEGACY SUPPORT CODE } else if (!showdown.helper.isUndefined(extensions[ext])) { ext = extensions[ext]; } else { throw Error('Extension "' + ext + '" could not be loaded. It was either not found or is not a valid extension.'); } } if (typeof ext === 'function') { ext = ext(); } if (!showdown.helper.isArray(ext)) { ext = [ext]; } var validExt = validate(ext, name); if (!validExt.valid) { throw Error(validExt.error); } for (var i = 0; i < ext.length; ++i) { switch (ext[i].type) { case 'lang': langExtensions.push(ext[i]); break; case 'output': outputModifiers.push(ext[i]); break; } if (ext[i].hasOwnProperty('listeners')) { for (var ln in ext[i].listeners) { if (ext[i].listeners.hasOwnProperty(ln)) { listen(ln, ext[i].listeners[ln]); } } } } } /** * LEGACY_SUPPORT * @param {*} ext * @param {string} name */ function legacyExtensionLoading (ext, name) { if (typeof ext === 'function') { ext = ext(new showdown.Converter()); } if (!showdown.helper.isArray(ext)) { ext = [ext]; } var valid = validate(ext, name); if (!valid.valid) { throw Error(valid.error); } for (var i = 0; i < ext.length; ++i) { switch (ext[i].type) { case 'lang': langExtensions.push(ext[i]); break; case 'output': outputModifiers.push(ext[i]); break; default:// should never reach here throw Error('Extension loader error: Type unrecognized!!!'); } } } /** * Listen to an event * @param {string} name * @param {function} callback */ function listen (name, callback) { if (!showdown.helper.isString(name)) { throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given'); } if (typeof callback !== 'function') { throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given'); } if (!listeners.hasOwnProperty(name)) { listeners[name] = []; } listeners[name].push(callback); } function rTrimInputText (text) { var rsp = text.match(/^\s*/)[0].length, rgx = new RegExp('^\\s{0,' + rsp + '}', 'gm'); return text.replace(rgx, ''); } /** * Dispatch an event * @private * @param {string} evtName Event name * @param {string} text Text * @param {{}} options Converter Options * @param {{}} globals * @returns {string} */ this._dispatch = function dispatch (evtName, text, options, globals) { if (listeners.hasOwnProperty(evtName)) { for (var ei = 0; ei < listeners[evtName].length; ++ei) { var nText = listeners[evtName][ei](evtName, text, this, options, globals); if (nText && typeof nText !== 'undefined') { text = nText; } } } return text; }; /** * Listen to an event * @param {string} name * @param {function} callback * @returns {showdown.Converter} */ this.listen = function (name, callback) { listen(name, callback); return this; }; /** * Converts a markdown string into HTML * @param {string} text * @returns {*} */ this.makeHtml = function (text) { //check if text is not falsy if (!text) { return text; } var globals = { gHtmlBlocks: [], gHtmlMdBlocks: [], gHtmlSpans: [], gUrls: {}, gTitles: {}, gDimensions: {}, gListLevel: 0, hashLinkCounts: {}, langExtensions: langExtensions, outputModifiers: outputModifiers, converter: this, ghCodeBlocks: [], metadata: { parsed: {}, raw: '', format: '' } }; // This lets us use ¨ trema as an escape char to avoid md5 hashes // The choice of character is arbitrary; anything that isn't // magic in Markdown will work. text = text.replace(/¨/g, '¨T'); // Replace $ with ¨D // RegExp interprets $ as a special character // when it's in a replacement string text = text.replace(/\$/g, '¨D'); // Standardize line endings text = text.replace(/\r\n/g, '\n'); // DOS to Unix text = text.replace(/\r/g, '\n'); // Mac to Unix // Stardardize line spaces text = text.replace(/\u00A0/g, ' '); if (options.smartIndentationFix) { text = rTrimInputText(text); } // Make sure text begins and ends with a couple of newlines: text = '\n\n' + text + '\n\n'; // detab text = showdown.subParser('detab')(text, options, globals); /** * Strip any lines consisting only of spaces and tabs. * This makes subsequent regexs easier to write, because we can * match consecutive blank lines with /\n+/ instead of something * contorted like /[ \t]*\n+/ */ text = text.replace(/^[ \t]+$/mg, ''); //run languageExtensions showdown.helper.forEach(langExtensions, function (ext) { text = showdown.subParser('runExtension')(ext, text, options, globals); }); // run the sub parsers text = showdown.subParser('metadata')(text, options, globals); text = showdown.subParser('hashPreCodeTags')(text, options, globals); text = showdown.subParser('githubCodeBlocks')(text, options, globals); text = showdown.subParser('hashHTMLBlocks')(text, options, globals); text = showdown.subParser('hashCodeTags')(text, options, globals); text = showdown.subParser('stripLinkDefinitions')(text, options, globals); text = showdown.subParser('blockGamut')(text, options, globals); text = showdown.subParser('unhashHTMLSpans')(text, options, globals); text = showdown.subParser('unescapeSpecialChars')(text, options, globals); // attacklab: Restore dollar signs text = text.replace(/¨D/g, '$$'); // attacklab: Restore tremas text = text.replace(/¨T/g, '¨'); // render a complete html document instead of a partial if the option is enabled text = showdown.subParser('completeHTMLDocument')(text, options, globals); // Run output modifiers showdown.helper.forEach(outputModifiers, function (ext) { text = showdown.subParser('runExtension')(ext, text, options, globals); }); // update metadata metadata = globals.metadata; return text; }; /** * Converts an HTML string into a markdown string * @param src * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used. * @returns {string} */ this.makeMarkdown = this.makeMd = function (src, HTMLParser) { // replace \r\n with \n src = src.replace(/\r\n/g, '\n'); src = src.replace(/\r/g, '\n'); // old macs // due to an edge case, we need to find this: > < // to prevent removing of non silent white spaces // ex: <em>this is</em> <strong>sparta</strong> src = src.replace(/>[ \t]+</, '>¨NBSP;<'); if (!HTMLParser) { if (window && window.document) { HTMLParser = window.document; } else { throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM'); } } var doc = HTMLParser.createElement('div'); doc.innerHTML = src; var globals = { preList: substitutePreCodeTags(doc) }; // remove all newlines and collapse spaces clean(doc); // some stuff, like accidental reference links must now be escaped // TODO // doc.innerHTML = doc.innerHTML.replace(/\[[\S\t ]]/); var nodes = doc.childNodes, mdDoc = ''; for (var i = 0; i < nodes.length; i++) { mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals); } function clean (node) { for (var n = 0; n < node.childNodes.length; ++n) { var child = node.childNodes[n]; if (child.nodeType === 3) { if (!/\S/.test(child.nodeValue)) { node.removeChild(child); --n; } else { child.nodeValue = child.nodeValue.split('\n').join(' '); child.nodeValue = child.nodeValue.replace(/(\s)+/g, '$1'); } } else if (child.nodeType === 1) { clean(child); } } } // find all pre tags and replace contents with placeholder // we need this so that we can remove all indentation from html // to ease up parsing function substitutePreCodeTags (doc) { var pres = doc.querySelectorAll('pre'), presPH = []; for (var i = 0; i < pres.length; ++i) { if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') { var content = pres[i].firstChild.innerHTML.trim(), language = pres[i].firstChild.getAttribute('data-language') || ''; // if data-language attribute is not defined, then we look for class language-* if (language === '') { var classes = pres[i].firstChild.className.split(' '); for (var c = 0; c < classes.length; ++c) { var matches = classes[c].match(/^language-(.+)$/); if (matches !== null) { language = matches[1]; break; } } } // unescape html entities in content content = showdown.helper.unescapeHTMLEntities(content); presPH.push(content); pres[i].outerHTML = '<precode language="' + language + '" precodenum="' + i.toString() + '"></precode>'; } else { presPH.push(pres[i].innerHTML); pres[i].innerHTML = ''; pres[i].setAttribute('prenum', i.toString()); } } return presPH; } return mdDoc; }; /** * Set an option of this Converter instance * @param {string} key * @param {*} value */ this.setOption = function (key, value) { options[key] = value; }; /** * Get the option of this Converter instance * @param {string} key * @returns {*} */ this.getOption = function (key) { return options[key]; }; /** * Get the options of this Converter instance * @returns {{}} */ this.getOptions = function () { return options; }; /** * Add extension to THIS converter * @param {{}} extension * @param {string} [name=null] */ this.addExtension = function (extension, name) { name = name || null; _parseExtension(extension, name); }; /** * Use a global registered extension with THIS converter * @param {string} extensionName Name of the previously registered extension */ this.useExtension = function (extensionName) { _parseExtension(extensionName); }; /** * Set the flavor THIS converter should use * @param {string} name */ this.setFlavor = function (name) { if (!flavor.hasOwnProperty(name)) { throw Error(name + ' flavor was not found'); } var preset = flavor[name]; setConvFlavor = name; for (var option in preset) { if (preset.hasOwnProperty(option)) { options[option] = preset[option]; } } }; /** * Get the currently set flavor of this converter * @returns {string} */ this.getFlavor = function () { return setConvFlavor; }; /** * Remove an extension from THIS converter. * Note: This is a costly operation. It's better to initialize a new converter * and specify the extensions you wish to use * @param {Array} extension */ this.removeExtension = function (extension) { if (!showdown.helper.isArray(extension)) { extension = [extension]; } for (var a = 0; a < extension.length; ++a) { var ext = extension[a]; for (var i = 0; i < langExtensions.length; ++i) { if (langExtensions[i] === ext) { langExtensions[i].splice(i, 1); } } for (var ii = 0; ii < outputModifiers.length; ++i) { if (outputModifiers[ii] === ext) { outputModifiers[ii].splice(i, 1); } } } }; /** * Get all extension of THIS converter * @returns {{language: Array, output: Array}} */ this.getAllExtensions = function () { return { language: langExtensions, output: outputModifiers }; }; /** * Get the metadata of the previously parsed document * @param raw * @returns {string|{}} */ this.getMetadata = function (raw) { if (raw) { return metadata.raw; } else { return metadata.parsed; } }; /** * Get the metadata format of the previously parsed document * @returns {string} */ this.getMetadataFormat = function () { return metadata.format; }; /** * Private: set a single key, value metadata pair * @param {string} key * @param {string} value */ this._setMetadataPair = function (key, value) { metadata.parsed[key] = value; }; /** * Private: set metadata format * @param {string} format */ this._setMetadataFormat = function (format) { metadata.format = format; }; /** * Private: set metadata raw text * @param {string} raw */ this._setMetadataRaw = function (raw) { metadata.raw = raw; }; }; /** * Turn Markdown link shortcuts into XHTML <a> tags. */ showdown.subParser('anchors', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('anchors.before', text, options, globals); var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) { if (showdown.helper.isUndefined(title)) { title = ''; } linkId = linkId.toLowerCase(); // Special case for explicit empty url if (wholeMatch.search(/\(<?\s*>? ?(['"].*['"])?\)$/m) > -1) { url = ''; } else if (!url) { if (!linkId) { // lower-case and turn embedded newlines into spaces linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); } url = '#' + linkId; if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { url = globals.gUrls[linkId]; if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { title = globals.gTitles[linkId]; } } else { return wholeMatch; } } //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); var result = '<a href="' + url + '"'; if (title !== '' && title !== null) { title = title.replace(/"/g, '"'); //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); result += ' title="' + title + '"'; } // optionLinksInNewWindow only applies // to external links. Hash links (#) open in same page if (options.openLinksInNewWindow && !/^#/.test(url)) { // escaped _ result += ' rel="noopener noreferrer" target="¨E95Eblank"'; } result += '>' + linkText + '</a>'; return result; }; // First, handle reference-style links: [link text] [id] text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]()()()()/g, writeAnchorTag); // Next, inline-style links: [link text](url "optional title") // cases with crazy urls like ./image/cat1).png text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g, writeAnchorTag); // normal cases text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?<?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g, writeAnchorTag); // handle reference-style shortcuts: [link text] // These must come last in case you've also got [link test][1] // or [link test](/foo) text = text.replace(/\[([^\[\]]+)]()()()()()/g, writeAnchorTag); // Lastly handle GithubMentions if option is enabled if (options.ghMentions) { text = text.replace(/(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d.-]+?[a-z\d]+)*))/gmi, function (wm, st, escape, mentions, username) { if (escape === '\\') { return st + mentions; } //check if options.ghMentionsLink is a string if (!showdown.helper.isString(options.ghMentionsLink)) { throw new Error('ghMentionsLink option must be a string'); } var lnk = options.ghMentionsLink.replace(/\{u}/g, username), target = ''; if (options.openLinksInNewWindow) { target = ' rel="noopener noreferrer" target="¨E95Eblank"'; } return st + '<a href="' + lnk + '"' + target + '>' + mentions + '</a>'; }); } text = globals.converter._dispatch('anchors.after', text, options, globals); return text; }); // url allowed chars [a-z\d_.~:/?#[]@!$&'()*+,;=-] var simpleURLRegex = /([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+?\.[^'">\s]+?)()(\1)?(?=\s|$)(?!["<>])/gi, simpleURLRegex2 = /([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+?)([.!?,()\[\]])?(\1)?(?=\s|$)(?!["<>])/gi, delimUrlRegex = /()<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)()>()/gi, simpleMailRegex = /(^|\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?=$|\s)/gmi, delimMailRegex = /<()(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, replaceLink = function (options) { 'use strict'; return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) { link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); var lnkTxt = link, append = '', target = '', lmc = leadingMagicChars || '', tmc = trailingMagicChars || ''; if (/^www\./i.test(link)) { link = link.replace(/^www\./i, 'http://www.'); } if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) { append = trailingPunctuation; } if (options.openLinksInNewWindow) { target = ' rel="noopener noreferrer" target="¨E95Eblank"'; } return lmc + '<a href="' + link + '"' + target + '>' + lnkTxt + '</a>' + append + tmc; }; }, replaceMail = function (options, globals) { 'use strict'; return function (wholeMatch, b, mail) { var href = 'mailto:'; b = b || ''; mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals); if (options.encodeEmails) { href = showdown.helper.encodeEmailAddress(href + mail); mail = showdown.helper.encodeEmailAddress(mail); } else { href = href + mail; } return b + '<a href="' + href + '">' + mail + '</a>'; }; }; showdown.subParser('autoLinks', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('autoLinks.before', text, options, globals); text = text.replace(delimUrlRegex, replaceLink(options)); text = text.replace(delimMailRegex, replaceMail(options, globals)); text = globals.converter._dispatch('autoLinks.after', text, options, globals); return text; }); showdown.subParser('simplifiedAutoLinks', function (text, options, globals) { 'use strict'; if (!options.simplifiedAutoLink) { return text; } text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals); if (options.excludeTrailingPunctuationFromURLs) { text = text.replace(simpleURLRegex2, replaceLink(options)); } else { text = text.replace(simpleURLRegex, replaceLink(options)); } text = text.replace(simpleMailRegex, replaceMail(options, globals)); text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals); return text; }); /** * These are all the transformations that form block-level * tags like paragraphs, headers, and list items. */ showdown.subParser('blockGamut', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('blockGamut.before', text, options, globals); // we parse blockquotes first so that we can have headings and hrs // inside blockquotes text = showdown.subParser('blockQuotes')(text, options, globals); text = showdown.subParser('headers')(text, options, globals); // Do Horizontal Rules: text = showdown.subParser('horizontalRule')(text, options, globals); text = showdown.subParser('lists')(text, options, globals); text = showdown.subParser('codeBlocks')(text, options, globals); text = showdown.subParser('tables')(text, options, globals); // We already ran _HashHTMLBlocks() before, in Markdown(), but that // was to escape raw HTML in the original Markdown source. This time, // we're escaping the markup we've just created, so that we don't wrap // <p> tags around block-level tags. text = showdown.subParser('hashHTMLBlocks')(text, options, globals); text = showdown.subParser('paragraphs')(text, options, globals); text = globals.converter._dispatch('blockGamut.after', text, options, globals); return text; }); showdown.subParser('blockQuotes', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('blockQuotes.before', text, options, globals); // add a couple extra lines after the text and endtext mark text = text + '\n\n'; var rgx = /(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm; if (options.splitAdjacentBlockquotes) { rgx = /^ {0,3}>[\s\S]*?(?:\n\n)/gm; } text = text.replace(rgx, function (bq) { // attacklab: hack around Konqueror 3.5.4 bug: // "----------bug".replace(/^-/g,"") == "bug" bq = bq.replace(/^[ \t]*>[ \t]?/gm, ''); // trim one level of quoting // attacklab: clean up hack bq = bq.replace(/¨0/g, ''); bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines bq = showdown.subParser('githubCodeBlocks')(bq, options, globals); bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse bq = bq.replace(/(^|\n)/g, '$1 '); // These leading spaces screw with <pre> content, so we need to fix that: bq = bq.replace(/(\s*<pre>[^\r]+?<\/pre>)/gm, function (wholeMatch, m1) { var pre = m1; // attacklab: hack around Konqueror 3.5.4 bug: pre = pre.replace(/^ /mg, '¨0'); pre = pre.replace(/¨0/g, ''); return pre; }); return showdown.subParser('hashBlock')('<blockquote>\n' + bq + '\n</blockquote>', options, globals); }); text = globals.converter._dispatch('blockQuotes.after', text, options, globals); return text; }); /** * Process Markdown `<pre><code>` blocks. */ showdown.subParser('codeBlocks', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('codeBlocks.before', text, options, globals); // sentinel workarounds for lack of \A and \Z, safari\khtml bug text += '¨0'; var pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g; text = text.replace(pattern, function (wholeMatch, m1, m2) { var codeblock = m1, nextChar = m2, end = '\n'; codeblock = showdown.subParser('outdent')(codeblock, options, globals); codeblock = showdown.subParser('encodeCode')(codeblock, options, globals); codeblock = showdown.subParser('detab')(codeblock, options, globals); codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing newlines if (options.omitExtraWLInCodeBlocks) { end = ''; } codeblock = '<pre><code>' + codeblock + end + '</code></pre>'; return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; }); // strip sentinel text = text.replace(/¨0/, ''); text = globals.converter._dispatch('codeBlocks.after', text, options, globals); return text; }); /** * * * Backtick quotes are used for <code></code> spans. * * * You can use multiple backticks as the delimiters if you want to * include literal backticks in the code span. So, this input: * * Just type ``foo `bar` baz`` at the prompt. * * Will translate to: * * <p>Just type <code>foo `bar` baz</code> at the prompt.</p> * * There's no arbitrary limit to the number of backticks you * can use as delimters. If you need three consecutive backticks * in your code, use four for delimiters, etc. * * * You can use spaces to get literal backticks at the edges: * * ... type `` `bar` `` ... * * Turns to: * * ... type <code>`bar`</code> ... */ showdown.subParser('codeSpans', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('codeSpans.before', text, options, globals); if (typeof text === 'undefined') { text = ''; } text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function (wholeMatch, m1, m2, m3) { var c = m3; c = c.replace(/^([ \t]*)/g, ''); // leading whitespace c = c.replace(/[ \t]*$/g, ''); // trailing whitespace c = showdown.subParser('encodeCode')(c, options, globals); c = m1 + '<code>' + c + '</code>'; c = showdown.subParser('hashHTMLSpans')(c, options, globals); return c; } ); text = globals.converter._dispatch('codeSpans.after', text, options, globals); return text; }); /** * Create a full HTML document from the processed markdown */ showdown.subParser('completeHTMLDocument', function (text, options, globals) { 'use strict'; if (!options.completeHTMLDocument) { return text; } text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals); var doctype = 'html', doctypeParsed = '<!DOCTYPE HTML>\n', title = '', charset = '<meta charset="utf-8">\n', lang = '', metadata = ''; if (typeof globals.metadata.parsed.doctype !== 'undefined') { doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\n'; doctype = globals.metadata.parsed.doctype.toString().toLowerCase(); if (doctype === 'html' || doctype === 'html5') { charset = '<meta charset="utf-8">'; } } for (var meta in globals.metadata.parsed) { if (globals.metadata.parsed.hasOwnProperty(meta)) { switch (meta.toLowerCase()) { case 'doctype': break; case 'title': title = '<title>' + globals.metadata.parsed.title + '</title>\n'; break; case 'charset': if (doctype === 'html' || doctype === 'html5') { charset = '<meta charset="' + globals.metadata.parsed.charset + '">\n'; } else { charset = '<meta name="charset" content="' + globals.metadata.parsed.charset + '">\n'; } break; case 'language': case 'lang': lang = ' lang="' + globals.metadata.parsed[meta] + '"'; metadata += '<meta name="' + meta + '" content="' + globals.metadata.parsed[meta] + '">\n'; break; default: metadata += '<meta name="' + meta + '" content="' + globals.metadata.parsed[meta] + '">\n'; } } } text = doctypeParsed + '<html' + lang + '>\n<head>\n' + title + charset + metadata + '</head>\n<body>\n' + text.trim() + '\n</body>\n</html>'; text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals); return text; }); /** * Convert all tabs to spaces */ showdown.subParser('detab', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('detab.before', text, options, globals); // expand first n-1 tabs text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width // replace the nth with two sentinels text = text.replace(/\t/g, '¨A¨B'); // use the sentinel to anchor our regex so it doesn't explode text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) { var leadingText = m1, numSpaces = 4 - leadingText.length % 4; // g_tab_width // there *must* be a better way to do this: for (var i = 0; i < numSpaces; i++) { leadingText += ' '; } return leadingText; }); // clean up sentinels text = text.replace(/¨A/g, ' '); // g_tab_width text = text.replace(/¨B/g, ''); text = globals.converter._dispatch('detab.after', text, options, globals); return text; }); showdown.subParser('ellipsis', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('ellipsis.before', text, options, globals); text = text.replace(/\.\.\./g, '…'); text = globals.converter._dispatch('ellipsis.after', text, options, globals); return text; }); /** * Turn emoji codes into emojis * * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis */ showdown.subParser('emoji', function (text, options, globals) { 'use strict'; if (!options.emoji) { return text; } text = globals.converter._dispatch('emoji.before', text, options, globals); var emojiRgx = /:([\S]+?):/g; text = text.replace(emojiRgx, function (wm, emojiCode) { if (showdown.helper.emojis.hasOwnProperty(emojiCode)) { return showdown.helper.emojis[emojiCode]; } return wm; }); text = globals.converter._dispatch('emoji.after', text, options, globals); return text; }); /** * Smart processing for ampersands and angle brackets that need to be encoded. */ showdown.subParser('encodeAmpsAndAngles', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals); // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: // http://bumppo.net/projects/amputator/ text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&'); // Encode naked <'s text = text.replace(/<(?![a-z\/?$!])/gi, '<'); // Encode < text = text.replace(/</g, '<'); // Encode > text = text.replace(/>/g, '>'); text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals); return text; }); /** * Returns the string, with after processing the following backslash escape sequences. * * attacklab: The polite way to do this is with the new escapeCharacters() function: * * text = escapeCharacters(text,"\\",true); * text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); * * ...but we're sidestepping its use of the (slow) RegExp constructor * as an optimization for Firefox. This function gets called a LOT. */ showdown.subParser('encodeBackslashEscapes', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals); text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); text = text.replace(/\\([`*_{}\[\]()>#+.!~=|-])/g, showdown.helper.escapeCharactersCallback); text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals); return text; }); /** * Encode/escape certain characters inside Markdown code runs. * The point is that in code, these characters are literals, * and lose their special Markdown meanings. */ showdown.subParser('encodeCode', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('encodeCode.before', text, options, globals); // Encode all ampersands; HTML entities are not // entities within a Markdown code span. text = text .replace(/&/g, '&') // Do the angle bracket song and dance: .replace(/</g, '<') .replace(/>/g, '>') // Now, escape characters that are magic in Markdown: .replace(/([*_{}\[\]\\=~-])/g, showdown.helper.escapeCharactersCallback); text = globals.converter._dispatch('encodeCode.after', text, options, globals); return text; }); /** * Within tags -- meaning between < and > -- encode [\ ` * _ ~ =] so they * don't conflict with their use in Markdown for code, italics and strong. */ showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals); // Build a regex to find HTML tags. var tags = /<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi, comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi; text = text.replace(tags, function (wholeMatch) { return wholeMatch .replace(/(.)<\/?code>(?=.)/g, '$1`') .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); }); text = text.replace(comments, function (wholeMatch) { return wholeMatch .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); }); text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals); return text; }); /** * Handle github codeblocks prior to running HashHTML so that * HTML contained within the codeblock gets escaped properly * Example: * ```ruby * def hello_world(x) * puts "Hello, #{x}" * end * ``` */ showdown.subParser('githubCodeBlocks', function (text, options, globals) { 'use strict'; // early exit if option is not enabled if (!options.ghCodeBlocks) { return text; } text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals); text += '¨0'; text = text.replace(/(?:^|\n)(?: {0,3})(```+|~~~+)(?: *)([^\s`~]*)\n([\s\S]*?)\n(?: {0,3})\1/g, function (wholeMatch, delim, language, codeblock) { var end = (options.omitExtraWLInCodeBlocks) ? '' : '\n'; // First parse the github code block codeblock = showdown.subParser('encodeCode')(codeblock, options, globals); codeblock = showdown.subParser('detab')(codeblock, options, globals); codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace codeblock = '<pre><code' + (language ? ' class="' + language + ' language-' + language + '"' : '') + '>' + codeblock + end + '</code></pre>'; codeblock = showdown.subParser('hashBlock')(codeblock, options, globals); // Since GHCodeblocks can be false positives, we need to // store the primitive text and the parsed text in a global var, // and then return a token return '\n\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n'; }); // attacklab: strip sentinel text = text.replace(/¨0/, ''); return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals); }); showdown.subParser('hashBlock', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('hashBlock.before', text, options, globals); text = text.replace(/(^\n+|\n+$)/g, ''); text = '\n\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; text = globals.converter._dispatch('hashBlock.after', text, options, globals); return text; }); /** * Hash and escape <code> elements that should not be parsed as markdown */ showdown.subParser('hashCodeTags', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('hashCodeTags.before', text, options, globals); var repFunc = function (wholeMatch, match, left, right) { var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right; return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C'; }; // Hash naked <code> text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\b[^>]*>', '</code>', 'gim'); text = globals.converter._dispatch('hashCodeTags.after', text, options, globals); return text; }); showdown.subParser('hashElement', function (text, options, globals) { 'use strict'; return function (wholeMatch, m1) { var blockText = m1; // Undo double lines blockText = blockText.replace(/\n\n/g, '\n'); blockText = blockText.replace(/^\n/, ''); // strip trailing blank lines blockText = blockText.replace(/\n+$/g, ''); // Replace the element text with a marker ("¨KxK" where x is its key) blockText = '\n\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; return blockText; }; }); showdown.subParser('hashHTMLBlocks', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals); var blockTags = [ 'pre', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'table', 'dl', 'ol', 'ul', 'script', 'noscript', 'form', 'fieldset', 'iframe', 'math', 'style', 'section', 'header', 'footer', 'nav', 'article', 'aside', 'address', 'audio', 'canvas', 'figure', 'hgroup', 'output', 'video', 'p' ], repFunc = function (wholeMatch, match, left, right) { var txt = wholeMatch; // check if this html element is marked as markdown // if so, it's contents should be parsed as markdown if (left.search(/\bmarkdown\b/) !== -1) { txt = left + globals.converter.makeHtml(match) + right; } return '\n\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n'; }; if (options.backslashEscapesHTMLTags) { // encode backslash escaped HTML tags text = text.replace(/\\<(\/?[^>]+?)>/g, function (wm, inside) { return '<' + inside + '>'; }); } // hash HTML Blocks for (var i = 0; i < blockTags.length; ++i) { var opTagPos, rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\b[^>]*>)', 'im'), patLeft = '<' + blockTags[i] + '\\b[^>]*>', patRight = '</' + blockTags[i] + '>'; // 1. Look for the first position of the first opening HTML tag in the text while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) { // if the HTML tag is \ escaped, we need to escape it and break //2. Split the text in that position var subTexts = showdown.helper.splitAtIndex(text, opTagPos), //3. Match recursively newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im'); // prevent an infinite loop if (newSubText1 === subTexts[1]) { break; } text = subTexts[0].concat(newSubText1); } } // HR SPECIAL CASE text = text.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); // Special case for standalone HTML comments text = showdown.helper.replaceRecursiveRegExp(text, function (txt) { return '\n\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n'; }, '^ {0,3}<!--', '-->', 'gm'); // PHP and ASP-style processor instructions (<?...?> and <%...%>) text = text.replace(/(?:\n\n)( {0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals); return text; }); /** * Hash span elements that should not be parsed as markdown */ showdown.subParser('hashHTMLSpans', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals); function hashHTMLSpan (html) { return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C'; } // Hash Self Closing tags text = text.replace(/<[^>]+?\/>/gi, function (wm) { return hashHTMLSpan(wm); }); // Hash tags without properties text = text.replace(/<([^>]+?)>[\s\S]*?<\/\1>/g, function (wm) { return hashHTMLSpan(wm); }); // Hash tags with properties text = text.replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g, function (wm) { return hashHTMLSpan(wm); }); // Hash self closing tags without /> text = text.replace(/<[^>]+?>/gi, function (wm) { return hashHTMLSpan(wm); }); /*showdown.helper.matchRecursiveRegExp(text, '<code\\b[^>]*>', '</code>', 'gi');*/ text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals); return text; }); /** * Unhash HTML spans */ showdown.subParser('unhashHTMLSpans', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals); for (var i = 0; i < globals.gHtmlSpans.length; ++i) { var repText = globals.gHtmlSpans[i], // limiter to prevent infinite loop (assume 10 as limit for recurse) limit = 0; while (/¨C(\d+)C/.test(repText)) { var num = RegExp.$1; repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]); if (limit === 10) { console.error('maximum nesting of 10 spans reached!!!'); break; } ++limit; } text = text.replace('¨C' + i + 'C', repText); } text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals); return text; }); /** * Hash and escape <pre><code> elements that should not be parsed as markdown */ showdown.subParser('hashPreCodeTags', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals); var repFunc = function (wholeMatch, match, left, right) { // encode html entities var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right; return '\n\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n'; }; // Hash <pre><code> text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\b[^>]*>\\s*<code\\b[^>]*>', '^ {0,3}</code>\\s*</pre>', 'gim'); text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals); return text; }); showdown.subParser('headers', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('headers.before', text, options, globals); var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart), // Set text-style headers: // Header 1 // ======== // // Header 2 // -------- // setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm, setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm; text = text.replace(setextRegexH1, function (wholeMatch, m1) { var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"', hLevel = headerLevelStart, hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>'; return showdown.subParser('hashBlock')(hashBlock, options, globals); }); text = text.replace(setextRegexH2, function (matchFound, m1) { var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"', hLevel = headerLevelStart + 1, hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>'; return showdown.subParser('hashBlock')(hashBlock, options, globals); }); // atx-style headers: // # Header 1 // ## Header 2 // ## Header 2 with closing hashes ## // ... // ###### Header 6 // var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm : /^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm; text = text.replace(atxStyle, function (wholeMatch, m1, m2) { var hText = m2; if (options.customizedHeaderId) { hText = m2.replace(/\s?\{([^{]+?)}\s*$/, ''); } var span = showdown.subParser('spanGamut')(hText, options, globals), hID = (options.noHeaderId) ? '' : ' id="' + headerId(m2) + '"', hLevel = headerLevelStart - 1 + m1.length, header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>'; return showdown.subParser('hashBlock')(header, options, globals); }); function headerId (m) { var title, prefix; // It is separate from other options to allow combining prefix and customized if (options.customizedHeaderId) { var match = m.match(/\{([^{]+?)}\s*$/); if (match && match[1]) { m = match[1]; } } title = m; // Prefix id to prevent causing inadvertent pre-existing style matches. if (showdown.helper.isString(options.prefixHeaderId)) { prefix = options.prefixHeaderId; } else if (options.prefixHeaderId === true) { prefix = 'section-'; } else { prefix = ''; } if (!options.rawPrefixHeaderId) { title = prefix + title; } if (options.ghCompatibleHeaderId) { title = title .replace(/ /g, '-') // replace previously escaped chars (&, ¨ and $) .replace(/&/g, '') .replace(/¨T/g, '') .replace(/¨D/g, '') // replace rest of the chars (&~$ are repeated as they might have been escaped) // borrowed from github's redcarpet (some they should produce similar results) .replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g, '') .toLowerCase(); } else if (options.rawHeaderId) { title = title .replace(/ /g, '-') // replace previously escaped chars (&, ¨ and $) .replace(/&/g, '&') .replace(/¨T/g, '¨') .replace(/¨D/g, '$') // replace " and ' .replace(/["']/g, '-') .toLowerCase(); } else { title = title .replace(/[^\w]/g, '') .toLowerCase(); } if (options.rawPrefixHeaderId) { title = prefix + title; } if (globals.hashLinkCounts[title]) { title = title + '-' + (globals.hashLinkCounts[title]++); } else { globals.hashLinkCounts[title] = 1; } return title; } text = globals.converter._dispatch('headers.after', text, options, globals); return text; }); /** * Turn Markdown link shortcuts into XHTML <a> tags. */ showdown.subParser('horizontalRule', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('horizontalRule.before', text, options, globals); var key = showdown.subParser('hashBlock')('<hr />', options, globals); text = text.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm, key); text = text.replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm, key); text = text.replace(/^ {0,2}( ?_){3,}[ \t]*$/gm, key); text = globals.converter._dispatch('horizontalRule.after', text, options, globals); return text; }); /** * Turn Markdown image shortcuts into <img> tags. */ showdown.subParser('images', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('images.before', text, options, globals); var inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g, base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g, refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g; function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) { url = url.replace(/\s/g, ''); return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title); } function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) { var gUrls = globals.gUrls, gTitles = globals.gTitles, gDims = globals.gDimensions; linkId = linkId.toLowerCase(); if (!title) { title = ''; } // Special case for explicit empty url if (wholeMatch.search(/\(<?\s*>? ?(['"].*['"])?\)$/m) > -1) { url = ''; } else if (url === '' || url === null) { if (linkId === '' || linkId === null) { // lower-case and turn embedded newlines into spaces linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); } url = '#' + linkId; if (!showdown.helper.isUndefined(gUrls[linkId])) { url = gUrls[linkId]; if (!showdown.helper.isUndefined(gTitles[linkId])) { title = gTitles[linkId]; } if (!showdown.helper.isUndefined(gDims[linkId])) { width = gDims[linkId].width; height = gDims[linkId].height; } } else { return wholeMatch; } } altText = altText .replace(/"/g, '"') //altText = showdown.helper.escapeCharacters(altText, '*_', false); .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); //url = showdown.helper.escapeCharacters(url, '*_', false); url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); var result = '<img src="' + url + '" alt="' + altText + '"'; if (title && showdown.helper.isString(title)) { title = title .replace(/"/g, '"') //title = showdown.helper.escapeCharacters(title, '*_', false); .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); result += ' title="' + title + '"'; } if (width && height) { width = (width === '*') ? 'auto' : width; height = (height === '*') ? 'auto' : height; result += ' width="' + width + '"'; result += ' height="' + height + '"'; } result += ' />'; return result; } // First, handle reference-style labeled images: ![alt text][id] text = text.replace(referenceRegExp, writeImageTag); // Next, handle inline images:  // base64 encoded images text = text.replace(base64RegExp, writeImageTagBase64); // cases with crazy urls like ./image/cat1).png text = text.replace(crazyRegExp, writeImageTag); // normal cases text = text.replace(inlineRegExp, writeImageTag); // handle reference-style shortcuts: ![img text] text = text.replace(refShortcutRegExp, writeImageTag); text = globals.converter._dispatch('images.after', text, options, globals); return text; }); showdown.subParser('italicsAndBold', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('italicsAndBold.before', text, options, globals); // it's faster to have 3 separate regexes for each case than have just one // because of backtracing, in some cases, it could lead to an exponential effect // called "catastrophic backtrace". Ominous! function parseInside (txt, left, right) { /* if (options.simplifiedAutoLink) { txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals); } */ return left + txt + right; } // Parse underscores if (options.literalMidWordUnderscores) { text = text.replace(/\b___(\S[\s\S]*?)___\b/g, function (wm, txt) { return parseInside (txt, '<strong><em>', '</em></strong>'); }); text = text.replace(/\b__(\S[\s\S]*?)__\b/g, function (wm, txt) { return parseInside (txt, '<strong>', '</strong>'); }); text = text.replace(/\b_(\S[\s\S]*?)_\b/g, function (wm, txt) { return parseInside (txt, '<em>', '</em>'); }); } else { text = text.replace(/___(\S[\s\S]*?)___/g, function (wm, m) { return (/\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm; }); text = text.replace(/__(\S[\s\S]*?)__/g, function (wm, m) { return (/\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm; }); text = text.replace(/_([^\s_][\s\S]*?)_/g, function (wm, m) { // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it) return (/\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm; }); } // Now parse asterisks if (options.literalMidWordAsterisks) { text = text.replace(/([^*]|^)\B\*\*\*(\S[\s\S]*?)\*\*\*\B(?!\*)/g, function (wm, lead, txt) { return parseInside (txt, lead + '<strong><em>', '</em></strong>'); }); text = text.replace(/([^*]|^)\B\*\*(\S[\s\S]*?)\*\*\B(?!\*)/g, function (wm, lead, txt) { return parseInside (txt, lead + '<strong>', '</strong>'); }); text = text.replace(/([^*]|^)\B\*(\S[\s\S]*?)\*\B(?!\*)/g, function (wm, lead, txt) { return parseInside (txt, lead + '<em>', '</em>'); }); } else { text = text.replace(/\*\*\*(\S[\s\S]*?)\*\*\*/g, function (wm, m) { return (/\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm; }); text = text.replace(/\*\*(\S[\s\S]*?)\*\*/g, function (wm, m) { return (/\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm; }); text = text.replace(/\*([^\s*][\s\S]*?)\*/g, function (wm, m) { // !/^\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it) return (/\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm; }); } text = globals.converter._dispatch('italicsAndBold.after', text, options, globals); return text; }); /** * Form HTML ordered (numbered) and unordered (bulleted) lists. */ showdown.subParser('lists', function (text, options, globals) { 'use strict'; /** * Process the contents of a single ordered or unordered list, splitting it * into individual list items. * @param {string} listStr * @param {boolean} trimTrailing * @returns {string} */ function processListItems (listStr, trimTrailing) { // The $g_list_level global keeps track of when we're inside a list. // Each time we enter a list, we increment it; when we leave a list, // we decrement. If it's zero, we're not in a list anymore. // // We do this because when we're not inside a list, we want to treat // something like this: // // I recommend upgrading to version // 8. Oops, now this line is treated // as a sub-list. // // As a single paragraph, despite the fact that the second line starts // with a digit-period-space sequence. // // Whereas when we're inside a list (or sub-list), that line will be // treated as the start of a sub-list. What a kludge, huh? This is // an aspect of Markdown's syntax that's hard to parse perfectly // without resorting to mind-reading. Perhaps the solution is to // change the syntax rules such that sub-lists must start with a // starting cardinal number; e.g. "1." or "a.". globals.gListLevel++; // trim trailing blank lines: listStr = listStr.replace(/\n{2,}$/, '\n'); // attacklab: add sentinel to emulate \z listStr += '¨0'; var rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm, isParagraphed = (/\n[ \t]*\n(?!¨0)/.test(listStr)); // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation, // which is a syntax breaking change // activating this option reverts to old behavior if (options.disableForced4SpacesIndentedSublists) { rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm; } listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) { checked = (checked && checked.trim() !== ''); var item = showdown.subParser('outdent')(m4, options, globals), bulletStyle = ''; // Support for github tasklists if (taskbtn && options.tasklists) { bulletStyle = ' class="task-list-item" style="list-style-type: none;"'; item = item.replace(/^[ \t]*\[(x|X| )?]/m, function () { var otp = '<input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;"'; if (checked) { otp += ' checked'; } otp += '>'; return otp; }); } // ISSUE #312 // This input: - - - a // causes trouble to the parser, since it interprets it as: // <ul><li><li><li>a</li></li></li></ul> // instead of: // <ul><li>- - a</li></ul> // So, to prevent it, we will put a marker (¨A)in the beginning of the line // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser item = item.replace(/^([-*+]|\d\.)[ \t]+[\S\n ]*/g, function (wm2) { return '¨A' + wm2; }); // m1 - Leading line or // Has a double return (multi paragraph) or // Has sublist if (m1 || (item.search(/\n{2,}/) > -1)) { item = showdown.subParser('githubCodeBlocks')(item, options, globals); item = showdown.subParser('blockGamut')(item, options, globals); } else { // Recursion for sub-lists: item = showdown.subParser('lists')(item, options, globals); item = item.replace(/\n$/, ''); // chomp(item) item = showdown.subParser('hashHTMLBlocks')(item, options, globals); // Colapse double linebreaks item = item.replace(/\n\n+/g, '\n\n'); if (isParagraphed) { item = showdown.subParser('paragraphs')(item, options, globals); } else { item = showdown.subParser('spanGamut')(item, options, globals); } } // now we need to remove the marker (¨A) item = item.replace('¨A', ''); // we can finally wrap the line in list item tags item = '<li' + bulletStyle + '>' + item + '</li>\n'; return item; }); // attacklab: strip sentinel listStr = listStr.replace(/¨0/g, ''); globals.gListLevel--; if (trimTrailing) { listStr = listStr.replace(/\s+$/, ''); } return listStr; } function styleStartNumber (list, listType) { // check if ol and starts by a number different than 1 if (listType === 'ol') { var res = list.match(/^ *(\d+)\./); if (res && res[1] !== '1') { return ' start="' + res[1] + '"'; } } return ''; } /** * Check and parse consecutive lists (better fix for issue #142) * @param {string} list * @param {string} listType * @param {boolean} trimTrailing * @returns {string} */ function parseConsecutiveLists (list, listType, trimTrailing) { // check if we caught 2 or more consecutive lists by mistake // we use the counterRgx, meaning if listType is UL we look for OL and vice versa var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\d+\.[ \t]/gm : /^ {0,3}\d+\.[ \t]/gm, ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \t]/gm : /^ {0,3}[*+-][ \t]/gm, counterRxg = (listType === 'ul') ? olRgx : ulRgx, result = ''; if (list.search(counterRxg) !== -1) { (function parseCL (txt) { var pos = txt.search(counterRxg), style = styleStartNumber(list, listType); if (pos !== -1) { // slice result += '\n\n<' + listType + style + '>\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\n'; // invert counterType and listType listType = (listType === 'ul') ? 'ol' : 'ul'; counterRxg = (listType === 'ul') ? olRgx : ulRgx; //recurse parseCL(txt.slice(pos)); } else { result += '\n\n<' + listType + style + '>\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\n'; } })(list); } else { var style = styleStartNumber(list, listType); result = '\n\n<' + listType + style + '>\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\n'; } return result; } /** Start of list parsing **/ text = globals.converter._dispatch('lists.before', text, options, globals); // add sentinel to hack around khtml/safari bug: // http://bugs.webkit.org/show_bug.cgi?id=11231 text += '¨0'; if (globals.gListLevel) { text = text.replace(/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, function (wholeMatch, list, m2) { var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; return parseConsecutiveLists(list, listType, true); } ); } else { text = text.replace(/(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, function (wholeMatch, m1, list, m3) { var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; return parseConsecutiveLists(list, listType, false); } ); } // strip sentinel text = text.replace(/¨0/, ''); text = globals.converter._dispatch('lists.after', text, options, globals); return text; }); /** * Parse metadata at the top of the document */ showdown.subParser('metadata', function (text, options, globals) { 'use strict'; if (!options.metadata) { return text; } text = globals.converter._dispatch('metadata.before', text, options, globals); function parseMetadataContents (content) { // raw is raw so it's not changed in any way globals.metadata.raw = content; // escape chars forbidden in html attributes // double quotes content = content // ampersand first .replace(/&/g, '&') // double quotes .replace(/"/g, '"'); content = content.replace(/\n {4}/g, ' '); content.replace(/^([\S ]+): +([\s\S]+?)$/gm, function (wm, key, value) { globals.metadata.parsed[key] = value; return ''; }); } text = text.replace(/^\s*«««+(\S*?)\n([\s\S]+?)\n»»»+\n/, function (wholematch, format, content) { parseMetadataContents(content); return '¨M'; }); text = text.replace(/^\s*---+(\S*?)\n([\s\S]+?)\n---+\n/, function (wholematch, format, content) { if (format) { globals.metadata.format = format; } parseMetadataContents(content); return '¨M'; }); text = text.replace(/¨M/g, ''); text = globals.converter._dispatch('metadata.after', text, options, globals); return text; }); /** * Remove one level of line-leading tabs or spaces */ showdown.subParser('outdent', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('outdent.before', text, options, globals); // attacklab: hack around Konqueror 3.5.4 bug: // "----------bug".replace(/^-/g,"") == "bug" text = text.replace(/^(\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width // attacklab: clean up hack text = text.replace(/¨0/g, ''); text = globals.converter._dispatch('outdent.after', text, options, globals); return text; }); /** * */ showdown.subParser('paragraphs', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('paragraphs.before', text, options, globals); // Strip leading and trailing lines: text = text.replace(/^\n+/g, ''); text = text.replace(/\n+$/g, ''); var grafs = text.split(/\n{2,}/g), grafsOut = [], end = grafs.length; // Wrap <p> tags for (var i = 0; i < end; i++) { var str = grafs[i]; // if this is an HTML marker, copy it if (str.search(/¨(K|G)(\d+)\1/g) >= 0) { grafsOut.push(str); // test for presence of characters to prevent empty lines being parsed // as paragraphs (resulting in undesired extra empty paragraphs) } else if (str.search(/\S/) >= 0) { str = showdown.subParser('spanGamut')(str, options, globals); str = str.replace(/^([ \t]*)/g, '<p>'); str += '</p>'; grafsOut.push(str); } } /** Unhashify HTML blocks */ end = grafsOut.length; for (i = 0; i < end; i++) { var blockText = '', grafsOutIt = grafsOut[i], codeFlag = false; // if this is a marker for an html block... // use RegExp.test instead of string.search because of QML bug while (/¨(K|G)(\d+)\1/.test(grafsOutIt)) { var delim = RegExp.$1, num = RegExp.$2; if (delim === 'K') { blockText = globals.gHtmlBlocks[num]; } else { // we need to check if ghBlock is a false positive if (codeFlag) { // use encoded version of all text blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals); } else { blockText = globals.ghCodeBlocks[num].codeblock; } } blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs grafsOutIt = grafsOutIt.replace(/(\n\n)?¨(K|G)\d+\2(\n\n)?/, blockText); // Check if grafsOutIt is a pre->code if (/^<pre\b[^>]*>\s*<code\b[^>]*>/.test(grafsOutIt)) { codeFlag = true; } } grafsOut[i] = grafsOutIt; } text = grafsOut.join('\n'); // Strip leading and trailing lines: text = text.replace(/^\n+/g, ''); text = text.replace(/\n+$/g, ''); return globals.converter._dispatch('paragraphs.after', text, options, globals); }); /** * Run extension */ showdown.subParser('runExtension', function (ext, text, options, globals) { 'use strict'; if (ext.filter) { text = ext.filter(text, globals.converter, options); } else if (ext.regex) { // TODO remove this when old extension loading mechanism is deprecated var re = ext.regex; if (!(re instanceof RegExp)) { re = new RegExp(re, 'g'); } text = text.replace(re, ext.replace); } return text; }); /** * These are all the transformations that occur *within* block-level * tags like paragraphs, headers, and list items. */ showdown.subParser('spanGamut', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('spanGamut.before', text, options, globals); text = showdown.subParser('codeSpans')(text, options, globals); text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); // Process anchor and image tags. Images must come first, // because ![foo][f] looks like an anchor. text = showdown.subParser('images')(text, options, globals); text = showdown.subParser('anchors')(text, options, globals); // Make links out of things like `<http://example.com/>` // Must come after anchors, because you can use < and > // delimiters in inline links like [this](<url>). text = showdown.subParser('autoLinks')(text, options, globals); text = showdown.subParser('simplifiedAutoLinks')(text, options, globals); text = showdown.subParser('emoji')(text, options, globals); text = showdown.subParser('underline')(text, options, globals); text = showdown.subParser('italicsAndBold')(text, options, globals); text = showdown.subParser('strikethrough')(text, options, globals); text = showdown.subParser('ellipsis')(text, options, globals); // we need to hash HTML tags inside spans text = showdown.subParser('hashHTMLSpans')(text, options, globals); // now we encode amps and angles text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); // Do hard breaks if (options.simpleLineBreaks) { // GFM style hard breaks // only add line breaks if the text does not contain a block (special case for lists) if (!/\n\n¨K/.test(text)) { text = text.replace(/\n+/g, '<br />\n'); } } else { // Vanilla hard breaks text = text.replace(/ +\n/g, '<br />\n'); } text = globals.converter._dispatch('spanGamut.after', text, options, globals); return text; }); showdown.subParser('strikethrough', function (text, options, globals) { 'use strict'; function parseInside (txt) { if (options.simplifiedAutoLink) { txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals); } return '<del>' + txt + '</del>'; } if (options.strikethrough) { text = globals.converter._dispatch('strikethrough.before', text, options, globals); text = text.replace(/(?:~){2}([\s\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); }); text = globals.converter._dispatch('strikethrough.after', text, options, globals); } return text; }); /** * Strips link definitions from text, stores the URLs and titles in * hash references. * Link defs are in the form: ^[id]: url "optional title" */ showdown.subParser('stripLinkDefinitions', function (text, options, globals) { 'use strict'; var regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*<?([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm, base64Regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm; // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug text += '¨0'; var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) { linkId = linkId.toLowerCase(); if (url.match(/^data:.+?\/.+?;base64,/)) { // remove newlines globals.gUrls[linkId] = url.replace(/\s/g, ''); } else { globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive } if (blankLines) { // Oops, found blank lines, so it's not a title. // Put back the parenthetical statement we stole. return blankLines + title; } else { if (title) { globals.gTitles[linkId] = title.replace(/"|'/g, '"'); } if (options.parseImgDimensions && width && height) { globals.gDimensions[linkId] = { width: width, height: height }; } } // Completely remove the definition from the text return ''; }; // first we try to find base64 link references text = text.replace(base64Regex, replaceFunc); text = text.replace(regex, replaceFunc); // attacklab: strip sentinel text = text.replace(/¨0/, ''); return text; }); showdown.subParser('tables', function (text, options, globals) { 'use strict'; if (!options.tables) { return text; } var tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm, //singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm; singeColTblRgx = /^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm; function parseStyles (sLine) { if (/^:[ \t]*--*$/.test(sLine)) { return ' style="text-align:left;"'; } else if (/^--*[ \t]*:[ \t]*$/.test(sLine)) { return ' style="text-align:right;"'; } else if (/^:[ \t]*--*[ \t]*:$/.test(sLine)) { return ' style="text-align:center;"'; } else { return ''; } } function parseHeaders (header, style) { var id = ''; header = header.trim(); // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility if (options.tablesHeaderId || options.tableHeaderId) { id = ' id="' + header.replace(/ /g, '_').toLowerCase() + '"'; } header = showdown.subParser('spanGamut')(header, options, globals); return '<th' + id + style + '>' + header + '</th>\n'; } function parseCells (cell, style) { var subText = showdown.subParser('spanGamut')(cell, options, globals); return '<td' + style + '>' + subText + '</td>\n'; } function buildTable (headers, cells) { var tb = '<table>\n<thead>\n<tr>\n', tblLgn = headers.length; for (var i = 0; i < tblLgn; ++i) { tb += headers[i]; } tb += '</tr>\n</thead>\n<tbody>\n'; for (i = 0; i < cells.length; ++i) { tb += '<tr>\n'; for (var ii = 0; ii < tblLgn; ++ii) { tb += cells[i][ii]; } tb += '</tr>\n'; } tb += '</tbody>\n</table>\n'; return tb; } function parseTable (rawTable) { var i, tableLines = rawTable.split('\n'); for (i = 0; i < tableLines.length; ++i) { // strip wrong first and last column if wrapped tables are used if (/^ {0,3}\|/.test(tableLines[i])) { tableLines[i] = tableLines[i].replace(/^ {0,3}\|/, ''); } if (/\|[ \t]*$/.test(tableLines[i])) { tableLines[i] = tableLines[i].replace(/\|[ \t]*$/, ''); } // parse code spans first, but we only support one line code spans tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals); } var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}), rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}), rawCells = [], headers = [], styles = [], cells = []; tableLines.shift(); tableLines.shift(); for (i = 0; i < tableLines.length; ++i) { if (tableLines[i].trim() === '') { continue; } rawCells.push( tableLines[i] .split('|') .map(function (s) { return s.trim(); }) ); } if (rawHeaders.length < rawStyles.length) { return rawTable; } for (i = 0; i < rawStyles.length; ++i) { styles.push(parseStyles(rawStyles[i])); } for (i = 0; i < rawHeaders.length; ++i) { if (showdown.helper.isUndefined(styles[i])) { styles[i] = ''; } headers.push(parseHeaders(rawHeaders[i], styles[i])); } for (i = 0; i < rawCells.length; ++i) { var row = []; for (var ii = 0; ii < headers.length; ++ii) { if (showdown.helper.isUndefined(rawCells[i][ii])) { } row.push(parseCells(rawCells[i][ii], styles[ii])); } cells.push(row); } return buildTable(headers, cells); } text = globals.converter._dispatch('tables.before', text, options, globals); // find escaped pipe characters text = text.replace(/\\(\|)/g, showdown.helper.escapeCharactersCallback); // parse multi column tables text = text.replace(tableRgx, parseTable); // parse one column tables text = text.replace(singeColTblRgx, parseTable); text = globals.converter._dispatch('tables.after', text, options, globals); return text; }); showdown.subParser('underline', function (text, options, globals) { 'use strict'; if (!options.underline) { return text; } text = globals.converter._dispatch('underline.before', text, options, globals); if (options.literalMidWordUnderscores) { text = text.replace(/\b___(\S[\s\S]*?)___\b/g, function (wm, txt) { return '<u>' + txt + '</u>'; }); text = text.replace(/\b__(\S[\s\S]*?)__\b/g, function (wm, txt) { return '<u>' + txt + '</u>'; }); } else { text = text.replace(/___(\S[\s\S]*?)___/g, function (wm, m) { return (/\S$/.test(m)) ? '<u>' + m + '</u>' : wm; }); text = text.replace(/__(\S[\s\S]*?)__/g, function (wm, m) { return (/\S$/.test(m)) ? '<u>' + m + '</u>' : wm; }); } // escape remaining underscores to prevent them being parsed by italic and bold text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback); text = globals.converter._dispatch('underline.after', text, options, globals); return text; }); /** * Swap back in all the special characters we've hidden. */ showdown.subParser('unescapeSpecialChars', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals); text = text.replace(/¨E(\d+)E/g, function (wholeMatch, m1) { var charCodeToReplace = parseInt(m1); return String.fromCharCode(charCodeToReplace); }); text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals); return text; }); showdown.subParser('makeMarkdown.blockquote', function (node, globals) { 'use strict'; var txt = ''; if (node.hasChildNodes()) { var children = node.childNodes, childrenLength = children.length; for (var i = 0; i < childrenLength; ++i) { var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals); if (innerTxt === '') { continue; } txt += innerTxt; } } // cleanup txt = txt.trim(); txt = '> ' + txt.split('\n').join('\n> '); return txt; }); showdown.subParser('makeMarkdown.codeBlock', function (node, globals) { 'use strict'; var lang = node.getAttribute('language'), num = node.getAttribute('precodenum'); return '```' + lang + '\n' + globals.preList[num] + '\n```'; }); showdown.subParser('makeMarkdown.codeSpan', function (node) { 'use strict'; return '`' + node.innerHTML + '`'; }); showdown.subParser('makeMarkdown.emphasis', function (node, globals) { 'use strict'; var txt = ''; if (node.hasChildNodes()) { txt += '*'; var children = node.childNodes, childrenLength = children.length; for (var i = 0; i < childrenLength; ++i) { txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } txt += '*'; } return txt; }); showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) { 'use strict'; var headerMark = new Array(headerLevel + 1).join('#'), txt = ''; if (node.hasChildNodes()) { txt = headerMark + ' '; var children = node.childNodes, childrenLength = children.length; for (var i = 0; i < childrenLength; ++i) { txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } } return txt; }); showdown.subParser('makeMarkdown.hr', function () { 'use strict'; return '---'; }); showdown.subParser('makeMarkdown.image', function (node) { 'use strict'; var txt = ''; if (node.hasAttribute('src')) { txt += ' + '>'; if (node.hasAttribute('width') && node.hasAttribute('height')) { txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height'); } if (node.hasAttribute('title')) { txt += ' "' + node.getAttribute('title') + '"'; } txt += ')'; } return txt; }); showdown.subParser('makeMarkdown.links', function (node, globals) { 'use strict'; var txt = ''; if (node.hasChildNodes() && node.hasAttribute('href')) { var children = node.childNodes, childrenLength = children.length; txt = '['; for (var i = 0; i < childrenLength; ++i) { txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } txt += ']('; txt += '<' + node.getAttribute('href') + '>'; if (node.hasAttribute('title')) { txt += ' "' + node.getAttribute('title') + '"'; } txt += ')'; } return txt; }); showdown.subParser('makeMarkdown.list', function (node, globals, type) { 'use strict'; var txt = ''; if (!node.hasChildNodes()) { return ''; } var listItems = node.childNodes, listItemsLenght = listItems.length, listNum = node.getAttribute('start') || 1; for (var i = 0; i < listItemsLenght; ++i) { if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') { continue; } // define the bullet to use in list var bullet = ''; if (type === 'ol') { bullet = listNum.toString() + '. '; } else { bullet = '- '; } // parse list item txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals); ++listNum; } // add comment at the end to prevent consecutive lists to be parsed as one txt += '\n<!-- -->\n'; return txt.trim(); }); showdown.subParser('makeMarkdown.listItem', function (node, globals) { 'use strict'; var listItemTxt = ''; var children = node.childNodes, childrenLenght = children.length; for (var i = 0; i < childrenLenght; ++i) { listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals); } // if it's only one liner, we need to add a newline at the end if (!/\n$/.test(listItemTxt)) { listItemTxt += '\n'; } else { // it's multiparagraph, so we need to indent listItemTxt = listItemTxt .split('\n') .join('\n ') .replace(/^ {4}$/gm, '') .replace(/\n\n+/g, '\n\n'); } return listItemTxt; }); showdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) { 'use strict'; spansOnly = spansOnly || false; var txt = ''; // edge case of text without wrapper paragraph if (node.nodeType === 3) { return showdown.subParser('makeMarkdown.txt')(node, globals); } // HTML comment if (node.nodeType === 8) { return '<!--' + node.data + '-->\n\n'; } // process only node elements if (node.nodeType !== 1) { return ''; } var tagName = node.tagName.toLowerCase(); switch (tagName) { // // BLOCKS // case 'h1': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\n\n'; } break; case 'h2': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\n\n'; } break; case 'h3': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\n\n'; } break; case 'h4': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\n\n'; } break; case 'h5': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\n\n'; } break; case 'h6': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\n\n'; } break; case 'p': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\n\n'; } break; case 'blockquote': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\n\n'; } break; case 'hr': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\n\n'; } break; case 'ol': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\n\n'; } break; case 'ul': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\n\n'; } break; case 'precode': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\n\n'; } break; case 'pre': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\n\n'; } break; case 'table': if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\n\n'; } break; // // SPANS // case 'code': txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals); break; case 'em': case 'i': txt = showdown.subParser('makeMarkdown.emphasis')(node, globals); break; case 'strong': case 'b': txt = showdown.subParser('makeMarkdown.strong')(node, globals); break; case 'del': txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals); break; case 'a': txt = showdown.subParser('makeMarkdown.links')(node, globals); break; case 'img': txt = showdown.subParser('makeMarkdown.image')(node, globals); break; default: txt = node.outerHTML + '\n\n'; } // common normalization // TODO eventually return txt; }); showdown.subParser('makeMarkdown.paragraph', function (node, globals) { 'use strict'; var txt = ''; if (node.hasChildNodes()) { var children = node.childNodes, childrenLength = children.length; for (var i = 0; i < childrenLength; ++i) { txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } } // some text normalization txt = txt.trim(); return txt; }); showdown.subParser('makeMarkdown.pre', function (node, globals) { 'use strict'; var num = node.getAttribute('prenum'); return '<pre>' + globals.preList[num] + '</pre>'; }); showdown.subParser('makeMarkdown.strikethrough', function (node, globals) { 'use strict'; var txt = ''; if (node.hasChildNodes()) { txt += '~~'; var children = node.childNodes, childrenLength = children.length; for (var i = 0; i < childrenLength; ++i) { txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } txt += '~~'; } return txt; }); showdown.subParser('makeMarkdown.strong', function (node, globals) { 'use strict'; var txt = ''; if (node.hasChildNodes()) { txt += '**'; var children = node.childNodes, childrenLength = children.length; for (var i = 0; i < childrenLength; ++i) { txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } txt += '**'; } return txt; }); showdown.subParser('makeMarkdown.table', function (node, globals) { 'use strict'; var txt = '', tableArray = [[], []], headings = node.querySelectorAll('thead>tr>th'), rows = node.querySelectorAll('tbody>tr'), i, ii; for (i = 0; i < headings.length; ++i) { var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals), allign = '---'; if (headings[i].hasAttribute('style')) { var style = headings[i].getAttribute('style').toLowerCase().replace(/\s/g, ''); switch (style) { case 'text-align:left;': allign = ':---'; break; case 'text-align:right;': allign = '---:'; break; case 'text-align:center;': allign = ':---:'; break; } } tableArray[0][i] = headContent.trim(); tableArray[1][i] = allign; } for (i = 0; i < rows.length; ++i) { var r = tableArray.push([]) - 1, cols = rows[i].getElementsByTagName('td'); for (ii = 0; ii < headings.length; ++ii) { var cellContent = ' '; if (typeof cols[ii] !== 'undefined') { cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals); } tableArray[r].push(cellContent); } } var cellSpacesCount = 3; for (i = 0; i < tableArray.length; ++i) { for (ii = 0; ii < tableArray[i].length; ++ii) { var strLen = tableArray[i][ii].length; if (strLen > cellSpacesCount) { cellSpacesCount = strLen; } } } for (i = 0; i < tableArray.length; ++i) { for (ii = 0; ii < tableArray[i].length; ++ii) { if (i === 1) { if (tableArray[i][ii].slice(-1) === ':') { tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':'; } else { tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-'); } } else { tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount); } } txt += '| ' + tableArray[i].join(' | ') + ' |\n'; } return txt.trim(); }); showdown.subParser('makeMarkdown.tableCell', function (node, globals) { 'use strict'; var txt = ''; if (!node.hasChildNodes()) { return ''; } var children = node.childNodes, childrenLength = children.length; for (var i = 0; i < childrenLength; ++i) { txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true); } return txt.trim(); }); showdown.subParser('makeMarkdown.txt', function (node) { 'use strict'; var txt = node.nodeValue; // multiple spaces are collapsed txt = txt.replace(/ +/g, ' '); // replace the custom ¨NBSP; with a space txt = txt.replace(/¨NBSP;/g, ' '); // ", <, > and & should replace escaped html entities txt = showdown.helper.unescapeHTMLEntities(txt); // escape markdown magic characters // emphasis, strong and strikethrough - can appear everywhere // we also escape pipe (|) because of tables // and escape ` because of code blocks and spans txt = txt.replace(/([*_~|`])/g, '\\$1'); // escape > because of blockquotes txt = txt.replace(/^(\s*)>/g, '\\$1>'); // hash character, only troublesome at the beginning of a line because of headers txt = txt.replace(/^#/gm, '\\#'); // horizontal rules txt = txt.replace(/^(\s*)([-=]{3,})(\s*)$/, '$1\\$2$3'); // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer txt = txt.replace(/^( {0,3}\d+)\./gm, '$1\\.'); // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped) txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\$2'); // images and links, ] followed by ( is problematic, so we escape it txt = txt.replace(/]([\s]*)\(/g, '\\]$1\\('); // reference URIs must also be escaped txt = txt.replace(/^ {0,3}\[([\S \t]*?)]:/gm, '\\[$1]:'); return txt; }); var root = this; // AMD Loader if (true) { !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { 'use strict'; return showdown; }).call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // CommonJS/nodeJS Loader } else {} }).call(this); //# sourceMappingURL=showdown.js.map /***/ }), /* 48 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(303); /***/ }), /* 49 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { "use strict"; if (global.setImmediate) { return; } var nextHandle = 1; // Spec says greater than zero var tasksByHandle = {}; var currentlyRunningATask = false; var doc = global.document; var registerImmediate; function setImmediate(callback) { // Callback can either be a function or a string if (typeof callback !== "function") { callback = new Function("" + callback); } // Copy function arguments var args = new Array(arguments.length - 1); for (var i = 0; i < args.length; i++) { args[i] = arguments[i + 1]; } // Store and register the task var task = { callback: callback, args: args }; tasksByHandle[nextHandle] = task; registerImmediate(nextHandle); return nextHandle++; } function clearImmediate(handle) { delete tasksByHandle[handle]; } function run(task) { var callback = task.callback; var args = task.args; switch (args.length) { case 0: callback(); break; case 1: callback(args[0]); break; case 2: callback(args[0], args[1]); break; case 3: callback(args[0], args[1], args[2]); break; default: callback.apply(undefined, args); break; } } function runIfPresent(handle) { // From the spec: "Wait until any invocations of this algorithm started before this one have completed." // So if we're currently running a task, we'll need to delay this invocation. if (currentlyRunningATask) { // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a // "too much recursion" error. setTimeout(runIfPresent, 0, handle); } else { var task = tasksByHandle[handle]; if (task) { currentlyRunningATask = true; try { run(task); } finally { clearImmediate(handle); currentlyRunningATask = false; } } } } function installNextTickImplementation() { registerImmediate = function(handle) { process.nextTick(function () { runIfPresent(handle); }); }; } function canUsePostMessage() { // The test against `importScripts` prevents this implementation from being installed inside a web worker, // where `global.postMessage` means something completely different and can't be used for this purpose. if (global.postMessage && !global.importScripts) { var postMessageIsAsynchronous = true; var oldOnMessage = global.onmessage; global.onmessage = function() { postMessageIsAsynchronous = false; }; global.postMessage("", "*"); global.onmessage = oldOnMessage; return postMessageIsAsynchronous; } } function installPostMessageImplementation() { // Installs an event handler on `global` for the `message` event: see // * https://developer.mozilla.org/en/DOM/window.postMessage // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages var messagePrefix = "setImmediate$" + Math.random() + "$"; var onGlobalMessage = function(event) { if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) { runIfPresent(+event.data.slice(messagePrefix.length)); } }; if (global.addEventListener) { global.addEventListener("message", onGlobalMessage, false); } else { global.attachEvent("onmessage", onGlobalMessage); } registerImmediate = function(handle) { global.postMessage(messagePrefix + handle, "*"); }; } function installMessageChannelImplementation() { var channel = new MessageChannel(); channel.port1.onmessage = function(event) { var handle = event.data; runIfPresent(handle); }; registerImmediate = function(handle) { channel.port2.postMessage(handle); }; } function installReadyStateChangeImplementation() { var html = doc.documentElement; registerImmediate = function(handle) { // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. var script = doc.createElement("script"); script.onreadystatechange = function () { runIfPresent(handle); script.onreadystatechange = null; html.removeChild(script); script = null; }; html.appendChild(script); }; } function installSetTimeoutImplementation() { registerImmediate = function(handle) { setTimeout(runIfPresent, 0, handle); }; } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments. if ({}.toString.call(global.process) === "[object process]") { // For Node.js before 0.9 installNextTickImplementation(); } else if (canUsePostMessage()) { // For non-IE10 modern browsers installPostMessageImplementation(); } else if (global.MessageChannel) { // For web workers, where supported installMessageChannelImplementation(); } else if (doc && "onreadystatechange" in doc.createElement("script")) { // For IE 6–8 installReadyStateChangeImplementation(); } else { // For older browsers installSetTimeoutImplementation(); } attachTo.setImmediate = setImmediate; attachTo.clearImmediate = clearImmediate; }(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self)); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13), __webpack_require__(50))) /***/ }), /* 50 */ /***/ (function(module, exports) { // shim for using process in browser var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it // don't break things. But we need to wrap it in a try catch in case it is // wrapped in strict mode code which doesn't define any globals. It's inside a // function because try/catches deoptimize in certain engines. var cachedSetTimeout; var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } function defaultClearTimeout () { throw new Error('clearTimeout has not been defined'); } (function () { try { if (typeof setTimeout === 'function') { cachedSetTimeout = setTimeout; } else { cachedSetTimeout = defaultSetTimout; } } catch (e) { cachedSetTimeout = defaultSetTimout; } try { if (typeof clearTimeout === 'function') { cachedClearTimeout = clearTimeout; } else { cachedClearTimeout = defaultClearTimeout; } } catch (e) { cachedClearTimeout = defaultClearTimeout; } } ()) function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { //normal enviroments in sane situations return setTimeout(fun, 0); } // if setTimeout wasn't available but was latter defined if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { cachedSetTimeout = setTimeout; return setTimeout(fun, 0); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedSetTimeout(fun, 0); } catch(e){ try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedSetTimeout.call(null, fun, 0); } catch(e){ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error return cachedSetTimeout.call(this, fun, 0); } } } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { //normal enviroments in sane situations return clearTimeout(marker); } // if clearTimeout wasn't available but was latter defined if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { cachedClearTimeout = clearTimeout; return clearTimeout(marker); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedClearTimeout(marker); } catch (e){ try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedClearTimeout.call(null, marker); } catch (e){ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. // Some versions of I.E. have different rules for clearTimeout vs setTimeout return cachedClearTimeout.call(this, marker); } } } var queue = []; var draining = false; var currentQueue; var queueIndex = -1; function cleanUpNextTick() { if (!draining || !currentQueue) { return; } draining = false; if (currentQueue.length) { queue = currentQueue.concat(queue); } else { queueIndex = -1; } if (queue.length) { drainQueue(); } } function drainQueue() { if (draining) { return; } var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; while(len) { currentQueue = queue; queue = []; while (++queueIndex < len) { if (currentQueue) { currentQueue[queueIndex].run(); } } queueIndex = -1; len = queue.length; } currentQueue = null; draining = false; runClearTimeout(timeout); } process.nextTick = function (fun) { var args = new Array(arguments.length - 1); if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { runTimeout(drainQueue); } }; // v8 likes predictible objects function Item(fun, array) { this.fun = fun; this.array = array; } Item.prototype.run = function () { this.fun.apply(null, this.array); }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; process.listeners = function (name) { return [] } process.binding = function (name) { throw new Error('process.binding is not supported'); }; process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; /***/ }), /* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.byteLength = byteLength exports.toByteArray = toByteArray exports.fromByteArray = fromByteArray var lookup = [] var revLookup = [] var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' for (var i = 0, len = code.length; i < len; ++i) { lookup[i] = code[i] revLookup[code.charCodeAt(i)] = i } // Support decoding URL-safe base64 strings, as Node.js does. // See: https://en.wikipedia.org/wiki/Base64#URL_applications revLookup['-'.charCodeAt(0)] = 62 revLookup['_'.charCodeAt(0)] = 63 function getLens (b64) { var len = b64.length if (len % 4 > 0) { throw new Error('Invalid string. Length must be a multiple of 4') } // Trim off extra bytes after placeholder bytes are found // See: https://github.com/beatgammit/base64-js/issues/42 var validLen = b64.indexOf('=') if (validLen === -1) validLen = len var placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4) return [validLen, placeHoldersLen] } // base64 is 4/3 + up to two characters of the original data function byteLength (b64) { var lens = getLens(b64) var validLen = lens[0] var placeHoldersLen = lens[1] return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen } function _byteLength (b64, validLen, placeHoldersLen) { return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen } function toByteArray (b64) { var tmp var lens = getLens(b64) var validLen = lens[0] var placeHoldersLen = lens[1] var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) var curByte = 0 // if there are placeholders, only get up to the last complete 4 chars var len = placeHoldersLen > 0 ? validLen - 4 : validLen var i for (i = 0; i < len; i += 4) { tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] arr[curByte++] = (tmp >> 16) & 0xFF arr[curByte++] = (tmp >> 8) & 0xFF arr[curByte++] = tmp & 0xFF } if (placeHoldersLen === 2) { tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) arr[curByte++] = tmp & 0xFF } if (placeHoldersLen === 1) { tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) arr[curByte++] = (tmp >> 8) & 0xFF arr[curByte++] = tmp & 0xFF } return arr } function tripletToBase64 (num) { return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] } function encodeChunk (uint8, start, end) { var tmp var output = [] for (var i = start; i < end; i += 3) { tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF) output.push(tripletToBase64(tmp)) } return output.join('') } function fromByteArray (uint8) { var tmp var len = uint8.length var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes var parts = [] var maxChunkLength = 16383 // must be multiple of 3 // go through the array every three bytes, we'll deal with trailing stuff later for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { parts.push(encodeChunk( uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) )) } // pad the end with zeros, but make sure to not forget the extra bytes if (extraBytes === 1) { tmp = uint8[len - 1] parts.push( lookup[tmp >> 2] + lookup[(tmp << 4) & 0x3F] + '==' ) } else if (extraBytes === 2) { tmp = (uint8[len - 2] << 8) + uint8[len - 1] parts.push( lookup[tmp >> 10] + lookup[(tmp >> 4) & 0x3F] + lookup[(tmp << 2) & 0x3F] + '=' ) } return parts.join('') } /***/ }), /* 52 */ /***/ (function(module, exports) { exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = (nBytes * 8) - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var nBits = -7 var i = isLE ? (nBytes - 1) : 0 var d = isLE ? -1 : 1 var s = buffer[offset + i] i += d e = s & ((1 << (-nBits)) - 1) s >>= (-nBits) nBits += eLen for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} m = e & ((1 << (-nBits)) - 1) e >>= (-nBits) nBits += mLen for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} if (e === 0) { e = 1 - eBias } else if (e === eMax) { return m ? NaN : ((s ? -1 : 1) * Infinity) } else { m = m + Math.pow(2, mLen) e = e - eBias } return (s ? -1 : 1) * m * Math.pow(2, e - mLen) } exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { var e, m, c var eLen = (nBytes * 8) - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) var i = isLE ? 0 : (nBytes - 1) var d = isLE ? 1 : -1 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 value = Math.abs(value) if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0 e = eMax } else { e = Math.floor(Math.log(value) / Math.LN2) if (value * (c = Math.pow(2, -e)) < 1) { e-- c *= 2 } if (e + eBias >= 1) { value += rt / c } else { value += rt * Math.pow(2, 1 - eBias) } if (value * c >= 2) { e++ c /= 2 } if (e + eBias >= eMax) { m = 0 e = eMax } else if (e + eBias >= 1) { m = ((value * c) - 1) * Math.pow(2, mLen) e = e + eBias } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) e = 0 } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} e = (e << mLen) | m eLen += mLen for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} buffer[offset + i - d] |= s * 128 } /***/ }), /* 53 */ /***/ (function(module, exports) { var toString = {}.toString; module.exports = Array.isArray || function (arr) { return toString.call(arr) == '[object Array]'; }; /***/ }), /* 54 */ /***/ (function(module, exports) { module.exports = function(module) { if (!module.webpackPolyfill) { module.deprecate = function() {}; module.paths = []; // module.parent = undefined by default if (!module.children) module.children = []; Object.defineProperty(module, "loaded", { enumerable: true, get: function() { return module.l; } }); Object.defineProperty(module, "id", { enumerable: true, get: function() { return module.i; } }); module.webpackPolyfill = 1; } return module; }; /***/ }), /* 55 */ /***/ (function(module, exports) { /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ module.exports = __webpack_amd_options__; /* WEBPACK VAR INJECTION */}.call(this, {})) /***/ }), /* 56 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(57); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 57 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-debug-task {\r\n position: fixed;\r\n right: 10px;\r\n bottom: 10px;\r\n z-index: 999999;\r\n border-radius: 4px;\r\n background: rgba(169, 169, 171, 0.3);\r\n border: solid 1px rgba(21, 21, 214, 0.5);\r\n min-width: 45px;\r\n min-height: 30px;\r\n font-size: 12px;\r\n padding: 5px;\r\n pointer-events: none;\r\n}\r\n\r\n.absol-debug-task-name{\r\n color: darkcyan;\r\n}\r\n\r\n.absol-debug-task-value{\r\n color: rgb(159, 8, 197);\r\n}", ""]); /***/ }), /* 58 */ /***/ (function(module, exports) { /** * When source maps are enabled, `style-loader` uses a link element with a data-uri to * embed the css on the page. This breaks all relative urls because now they are relative to a * bundle instead of the current page. * * One solution is to only use full urls, but that may be impossible. * * Instead, this function "fixes" the relative urls to be absolute according to the current page location. * * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command. * */ module.exports = function (css) { // get current location var location = typeof window !== "undefined" && window.location; if (!location) { throw new Error("fixUrls requires window.location"); } // blank or null? if (!css || typeof css !== "string") { return css; } var baseUrl = location.protocol + "//" + location.host; var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/"); // convert each url(...) /* This regular expression is just a way to recursively match brackets within a string. /url\s*\( = Match on the word "url" with any whitespace after it and then a parens ( = Start a capturing group (?: = Start a non-capturing group [^)(] = Match anything that isn't a parentheses | = OR \( = Match a start parentheses (?: = Start another non-capturing groups [^)(]+ = Match anything that isn't a parentheses | = OR \( = Match a start parentheses [^)(]* = Match anything that isn't a parentheses \) = Match a end parentheses ) = End Group *\) = Match anything and then a close parens ) = Close non-capturing group * = Match anything ) = Close capturing group \) = Match a close parens /gi = Get all matches, not the first. Be case insensitive. */ var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function(fullMatch, origUrl) { // strip quotes (if they exist) var unquotedOrigUrl = origUrl .trim() .replace(/^"(.*)"$/, function(o, $1){ return $1; }) .replace(/^'(.*)'$/, function(o, $1){ return $1; }); // already a full url? no change if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(unquotedOrigUrl)) { return fullMatch; } // convert the url to a full url var newUrl; if (unquotedOrigUrl.indexOf("//") === 0) { //TODO: should we add protocol? newUrl = unquotedOrigUrl; } else if (unquotedOrigUrl.indexOf("/") === 0) { // path should be relative to the base url newUrl = baseUrl + unquotedOrigUrl; // already starts with '/' } else { // path should be relative to current directory newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './' } // send back the fixed url(...) return "url(" + JSON.stringify(newUrl) + ")"; }); // send back the fixed css return fixedCss; }; /***/ }), /* 59 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(60); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 60 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-autocomplete-input {\r\n display: inline-block;\r\n position: relative;\r\n box-sizing: border-box;\r\n border: solid 1px #d6d6d6;\r\n}\r\n\r\n.absol-autocomplete-input.absol-disabled {\r\n pointer-events: none;\r\n color: rgb(84, 84, 84);\r\n background-color: rgb(235, 235, 228);\r\n}\r\n\r\n.absol-autocomplete-input>input {\r\n min-width: 100%;\r\n min-height: 100%;\r\n box-sizing: border-box;\r\n background-color: transparent;\r\n border: none;\r\n}\r\n\r\n\r\n.absol-autocomplete-input-dropdown {\r\n position: absolute;\r\n left: 0;\r\n top: 100%;\r\n min-width: 100%;\r\n z-index: 1005;\r\n border: solid 1px rgb(169, 169, 169);\r\n box-sizing: border-box;\r\n background-color: white;\r\n}\r\n\r\n.absol-autocomplete-input-dropdown .as-bscroller{\r\n overflow-y: auto;\r\n}\r\n\r\n.absol-autocomplete-input-dropdown.top {\r\n top: auto;\r\n bottom: 100%;\r\n}\r\n\r\n.absol-autocomplete-input-item {\r\n height: 30px;\r\n}\r\n\r\n.absol-autocomplete-input-item:hover {\r\n background-color: rgba(169, 169, 169, 0.18605);\r\n cursor: pointer;\r\n}\r\n\r\n.absol-autocomplete-input-item.active,\r\n.absol-autocomplete-input-item.active:hover {\r\n background-color: rgba(169, 169, 169, 0.37209);\r\n}\r\n\r\n.absol-autocomplete-input-item-text {\r\n line-height: 30px;\r\n margin-left: 5px;\r\n margin-right: 5px;\r\n}", ""]); /***/ }), /* 61 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-has-board-table-drag,\r\n.as-has-board-table-drag * {\r\n cursor: grabbing;\r\n -webkit-user-select: none !important;\r\n -moz-user-select: none !important;\r\n -ms-user-select: none !important;\r\n user-select: none !important;\r\n}\r\n\r\n\r\n\r\n.as-board-table {\r\n overflow: visible;\r\n position: relative;\r\n\r\n}\r\n\r\n.as-board-drag-zone {\r\n -webkit-user-select: none !important;\r\n -moz-user-select: none !important;\r\n -ms-user-select: none !important;\r\n user-select: none !important;\r\n}\r\n\r\n\r\n.as-board {\r\n white-space: normal;\r\n box-sizing: border-box;\r\n position: relative;\r\n vertical-align: middle;\r\n}\r\n\r\n/**\r\nBug note: don't put fixed position element to a element which has transform\r\n */\r\n.as-board-moving {\r\n transform-origin: 30% 55%;\r\n transform: rotate(5deg);\r\n transition: transform 0.05s;\r\n user-select: none;\r\n pointer-events: none;\r\n position: fixed !important;\r\n z-index: 2000;\r\n}\r\n\r\n\r\n.as-board-place-holder {\r\n opacity: 0.3;\r\n}\r\n\r\n.as-board-table-prevent-context {\r\n position: fixed;\r\n --x: -10000px;\r\n --y: -10000px;\r\n left: calc(var(--x) - 100px);\r\n top: calc(var(--y) - 100px);\r\n opacity: 0;\r\n z-index: 100000000;\r\n width: 200px;\r\n height: 200px;\r\n cursor: default;\r\n -webkit-user-select: none;\r\n -webkit-touch-callout: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n -o-user-select: none;\r\n}", ""]); /***/ }), /* 62 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(63); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-has-hanger-drag,\r\n.as-has-hanger-drag * {\r\n touch-action: none;\r\n -webkit-user-select: none !important;\r\n -moz-user-select: none !important;\r\n -ms-user-select: none !important;\r\n user-select: none !important;\r\n}", ""]); /***/ }), /* 64 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(65); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 65 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "/* OLD module */\r\n\r\n.absol-bscroller {\r\n scrollbar-width: thin;\r\n scrollbar-color: rgba(151, 151, 151, 0.4) rgba(220, 220, 220, 0.4);\r\n overflow: auto;\r\n}\r\n\r\n\r\n.absol-bscroller::-webkit-scrollbar {\r\n width: 6px;\r\n height: 6px;\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-track {\r\n background: rgba(220, 220, 220, 0.4);\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-thumb {\r\n background: rgba(182, 182, 182, 0.4);\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-thumb:hover {\r\n background: rgba(32, 32, 32, 0.4);\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-thumb:active {\r\n background: rgba(13, 13, 13, 0.6);\r\n}\r\n\r\n.absol-bscroller.dark,\r\n.dark .absol-bscroller {\r\n scrollbar-color: rgba(104, 104, 104, 0.4) rgba(35, 35, 35, 0.4);\r\n}\r\n\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-track,\r\n.dark .absol-bscroller::-webkit-scrollbar-track {\r\n background: rgba(35, 35, 35, 0.4);\r\n}\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-thumb,\r\n.dark .absol-bscroller::-webkit-scrollbar-thumb {\r\n background: rgba(73, 73, 73, 0.4);\r\n}\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-thumb:hover,\r\n.dark .absol-bscroller::-webkit-scrollbar-thumb:hover {\r\n background: rgba(223, 223, 223, 0.4);\r\n}\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-thumb:active,\r\n.dark .absol-bscroller::-webkit-scrollbar-thumb:active {\r\n background: rgba(242, 242, 242, 0.6);\r\n}\r\n\r\n/*******************************************/\r\n.as-bscroller {\r\n scrollbar-width: thin;\r\n scrollbar-color: rgba(151, 151, 151, 0.4) rgba(220, 220, 220, 0.4);\r\n}\r\n\r\n\r\n.as-bscroller::-webkit-scrollbar {\r\n width: 6px;\r\n height: 6px;\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-track {\r\n background: rgba(220, 220, 220, 0.4);\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-thumb {\r\n background: rgba(182, 182, 182, 0.4);\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-thumb:hover {\r\n background: rgba(32, 32, 32, 0.4);\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-thumb:active {\r\n background: rgba(13, 13, 13, 0.6);\r\n}\r\n\r\n.as-bscroller.dark,\r\n.dark .as-bscroller,\r\n.as-dark .as-bscroller,\r\n.as-dark.as-bscroller\r\n{\r\n scrollbar-color: rgba(104, 104, 104, 0.4) rgba(150, 150, 150, 0.4);\r\n}\r\n\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-track,\r\n.dark .as-bscroller::-webkit-scrollbar-track,\r\n.as-dark .as-bscroller::-webkit-scrollbar-track,\r\n.as-dark.as-bscroller::-webkit-scrollbar-track\r\n{\r\n background: rgba(150, 150, 150, 0.4);\r\n}\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-thumb,\r\n.dark .as-bscroller::-webkit-scrollbar-thumb,\r\n.as-dark .as-bscroller::-webkit-scrollbar-thumb,\r\n.as-dark.as-bscroller::-webkit-scrollbar-thumb\r\n{\r\n background: rgba(104, 104, 104, 0.4);\r\n}\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-thumb:hover,\r\n.dark .as-bscroller::-webkit-scrollbar-thumb:hover,\r\n.as-dark .as-bscroller::-webkit-scrollbar-thumb:hover,\r\n.as-dark.as-bscroller::-webkit-scrollbar-thumb:hover\r\n{\r\n background: rgba(223, 223, 223, 0.4);\r\n}\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-thumb:active,\r\n.dark .as-bscroller::-webkit-scrollbar-thumb:active,\r\n.as-dark .as-bscroller::-webkit-scrollbar-thumb:active,\r\n.as-dark.as-bscroller::-webkit-scrollbar-thumb:active\r\n{\r\n background: rgba(242, 242, 242, 0.6);\r\n}", ""]); /***/ }), /* 66 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(67); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 67 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-button-array {\r\n font-size: 14px;\r\n border: 1px solid #006ce5;\r\n display: inline-block;\r\n border-radius: 0.2em;\r\n overflow: hidden;\r\n}\r\n\r\n.as-button-array-item {\r\n text-align: center;\r\n font-size: inherit;\r\n height: 2em;\r\n border: none;\r\n box-sizing: border-box;\r\n padding-left: 0.35714em;\r\n padding-right: 0.35714em;\r\n outline: none;\r\n color: #006ce5;\r\n background-color: white;\r\n border-radius: 0;\r\n transition: background-color 0.1s, color 0.1s;\r\n margin: 0;\r\n}\r\n\r\n.as-button-array-item:not(:first-child) {\r\n border-left: 1px solid #006ce5;\r\n border-right: none;\r\n}\r\n\r\n\r\n.as-button-array-item.as-active {\r\n color: white;\r\n background-color: #006ce5;\r\n}", ""]); /***/ }), /* 68 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(69); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 69 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-calendar-input {\r\n font-size: 14px;\r\n width: 7em;\r\n height: 2em;\r\n box-sizing: content-box;\r\n display: inline-block;\r\n vertical-align: middle;\r\n border: solid 1px #d6d6d6;\r\n border-radius: 0.2em;\r\n}\r\n\r\n.absol-calendar-input>input {\r\n text-align: center;\r\n width: 100%;\r\n height: 100%;\r\n outline: none;\r\n cursor: pointer;\r\n border: none;\r\n background: transparent;\r\n padding: 0;\r\n}\r\n\r\n.absol-calendar-input>input:hover,\r\n.absol-calendar-input>input:focus {\r\n color: red;\r\n}\r\n\r\n.absol-calendar-input.absol-disabled {\r\n pointer-events: none;\r\n}\r\n\r\n.absol-calendar-input.absol-disabled input {\r\n color: rgb(169, 169, 171);\r\n}", ""]); /***/ }), /* 70 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(71); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 71 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-chrome-calendar {\r\n display: inline-block;\r\n font-family: Arial;\r\n font-size: 14px;\r\n padding: 0.6em;\r\n border: solid 1px rgb(191, 191, 191);\r\n box-shadow: 1px 1px 2px rgb(240, 240, 240);\r\n z-index: 100;\r\n touch-action: manipulation;\r\n user-select: none;\r\n background-color: rgb(255, 255, 255);\r\n white-space: initial;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-header {\r\n white-space: nowrap;\r\n position: relative;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-title {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-chrome-calendar-header-buttons {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n}\r\n\r\n.absol-chrome-calendar-header-buttons>button {\r\n font-size: 1em;\r\n width: 1.5em;\r\n height: 1.5em;\r\n padding: 0;\r\n border-radius: 0.2em;\r\n border: solid 1px rgb(167, 167, 167);\r\n background: linear-gradient(rgb(240, 240, 240), rgb(233, 233, 233), rgb(223, 223, 223));\r\n cursor: pointer;\r\n outline: none;\r\n box-shadow: 1px 1px 2px #aaa;\r\n color: rgb(110, 110, 110);\r\n}\r\n\r\n.absol-chrome-calendar-header-buttons>button:nth-child(2) {\r\n margin-left: 0.2em;\r\n margin-right: 0.2em;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-header-buttons>button:active {\r\n box-shadow: 0px 0px 2px #aaa;\r\n\r\n}\r\n\r\n.absol-chrome-calendar-title {\r\n cursor: pointer;\r\n}\r\n\r\n.absol-chrome-calendar-title>span {\r\n line-height: 1.5em;\r\n}\r\n\r\n.absol-chrome-calendar-instance {\r\n margin-top: 1em;\r\n border: solid 1px rgb(190, 190, 190);\r\n width: 14em;\r\n position: relative;\r\n height: calc(8.4em + 3px);\r\n overflow: hidden;\r\n /*border*/\r\n}\r\n\r\n.absol-chrome-calendar-dayofweek {\r\n background-color: rgb(241, 241, 241);\r\n height: 1.2em;\r\n white-space: nowrap;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n z-index: 10;\r\n}\r\n\r\n.absol-chrome-calendar-dayofweek>div {\r\n text-align: center;\r\n line-height: 1.2;\r\n display: inline-block;\r\n width: 14.2857142857%;\r\n border-bottom: solid 1px rgb(191, 191, 191);\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container {\r\n position: absolute;\r\n transition: top 0.2s;\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container.old {\r\n z-index: 7;\r\n /* background: red; */\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container.new {\r\n z-index: 8;\r\n /* background: blue; */\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container>.absol-chrome-calendar-month {\r\n width: 100%;\r\n height: 100%;\r\n margin-top: -1px;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-month {\r\n display: table;\r\n width: 100%;\r\n margin-top: 1.2em;\r\n background-color: white;\r\n /*for header*/\r\n}\r\n\r\n.absol-chrome-calendar-week-in-mounth {\r\n display: table-row;\r\n height: 1.2em;\r\n}\r\n\r\n.absol-chrome-calendar-week-in-mounth>div {\r\n display: table-cell;\r\n text-align: right;\r\n padding-right: 0.4em;\r\n cursor: pointer;\r\n}\r\n\r\n.absol-chrome-calendar-week-in-mounth>div:hover {\r\n background-color: rgb(224, 245, 256);\r\n}\r\n\r\n\r\n.absol-chrome-calendar-not-in-month {\r\n color: rgb(190, 190, 190);\r\n}\r\n\r\n.absol-chrome-calendar-today {\r\n border: inset 1px rgb(191, 191, 191);\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-chrome-calendar-selected {\r\n background-color: rgb(188, 205, 236);\r\n}\r\n\r\n.absol-chrome-calendar-years {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n\r\n.absol-chrome-calendar:not(.view-year) .absol-chrome-calendar-years {\r\n /* display: none; */\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index: -10000;\r\n opacity: 0;\r\n visibility: hidden;\r\n}\r\n\r\n.absol-chrome-calendar.view-year .absol-chrome-calendar-instance {\r\n border-color: rgb(77, 114, 254)\r\n}\r\n\r\n.absol-chrome-calendar:not(.view-month) .absol-chrome-calendar-month,\r\n.absol-chrome-calendar:not(.view-month) .absol-chrome-calendar-dayofweek {\r\n display: none;\r\n}\r\n\r\n.absol-chrome-calendar:not(.view-month) .absol-chrome-calendar-title {\r\n color: rgb(191, 191, 191);\r\n}\r\n\r\n\r\n.absol-chrome-calendar-year {\r\n overflow: hidden;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-year-head {\r\n background-color: rgb(241, 241, 241);\r\n border-bottom: solid 1px rgb(191, 191, 191);\r\n height: 1.5em;\r\n text-align: center;\r\n line-height: 1.5em;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-year:last-child .absol-chrome-calendar-year-head {\r\n border-bottom: solid 1px rgb(191, 191, 191);\r\n}\r\n\r\n.absol-chrome-calendar-year.start-opening .absol-chrome-calendar-year-mounths,\r\n.absol-chrome-calendar-year.closing .absol-chrome-calendar-year-mounths {\r\n margin-bottom: -6em;\r\n transition: margin-bottom linear 0.1s;\r\n}\r\n\r\n.absol-chrome-calendar-year.opening .absol-chrome-calendar-year-mounths,\r\n.absol-chrome-calendar-year.start-closing .absol-chrome-calendar-year-mounths {\r\n margin-bottom: 0;\r\n transition: margin-bottom linear 0.1s;\r\n\r\n}\r\n\r\n.absol-chrome-calendar-year-mounths {\r\n width: 100%;\r\n display: table;\r\n height: 6em;\r\n border-bottom: solid 1px rgb(191, 191, 191);\r\n}\r\n\r\n.absol-chrome-calendar-year-row-months {\r\n display: table-row;\r\n}\r\n\r\n.absol-chrome-calendar-year-month {\r\n text-align: center;\r\n display: table-cell;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-chrome-calendar-year-month:hover {\r\n background-color: rgb(224, 245, 256);\r\n}\r\n\r\n\r\n\r\n\r\n.absol-chrome-calendar-years:hover .absol-scrollbar {\r\n opacity: 1;\r\n\r\n}\r\n\r\n.absol-chrome-calendar-years .absol-scrollbar {\r\n background-color: rgba(169, 169, 172, 0.2);\r\n opacity: 0;\r\n transition: opacity 0.2s;\r\n}\r\n\r\n.absol-chrome-calendar-date-disabled {\r\n color: rgb(240, 230, 230);\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\nbutton.absol-chrome-calendar-button-disabled {\r\n color: rgb(220, 210, 210);\r\n pointer-events: none;\r\n box-shadow: none;\r\n cursor: not-allowed;\r\n}", ""]); /***/ }), /* 72 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(73); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 73 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-vscroller {\r\n position: relative;\r\n overflow-x: hidden;\r\n}\r\n\r\n\r\n.absol-vscroller.disabled>.absol-vscroller-viewport {\r\n overflow-y: visible;\r\n margin-right: 0px;\r\n min-width: 100%;\r\n}\r\n\r\n.absol-vscroller.disabled {\r\n overflow: visible;\r\n overflow-x: visible;\r\n\r\n}\r\n\r\n\r\n.absol-vscroller-viewport {\r\n overflow-y: scroll;\r\n box-sizing: content-box;\r\n\r\n}\r\n\r\n.absol-vscroller>.absol-vscroller-viewport {\r\n max-height: 100%;\r\n}\r\n\r\n.absol-vscroller.limited-height>.absol-vscroller-viewport {\r\n max-height: inherit;\r\n}\r\n\r\n\r\n/************ hscroller ***********/\r\n.absol-hscroller {\r\n position: relative;\r\n overflow-y: hidden;\r\n}\r\n\r\n.absol-hscroller.disabled {\r\n overflow: visible;\r\n overflow-y: visible;\r\n}\r\n\r\n.absol-hscroller-viewport {\r\n overflow-x: scroll;\r\n box-sizing: content-box;\r\n min-height: calc(100% + 17px);\r\n}\r\n\r\n.absol-hscroller.disabled>.absol-hscroller-viewport {\r\n overflow-x: visible;\r\n margin-bottom: 0px;\r\n}\r\n\r\n\r\n.absol-hscroller>.absol-hscroller-viewport {\r\n max-width: 100%;\r\n}\r\n\r\n\r\n/********** scroll bar *********************/\r\n.absol-scrollbar-force-modal {\r\n position: fixed;\r\n top: 5px;\r\n left: 5px;\r\n right: 5px;\r\n bottom: 5px;\r\n z-index: 1000000;\r\n}\r\n\r\n.absol-scrollbar-container {\r\n position: absolute;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 10;\r\n}\r\n\r\n.absol-scrollbar-container.vertical {\r\n top: 0;\r\n width: 7px;\r\n}\r\n\r\n.absol-scrollbar-container.horizontal {\r\n height: 7px;\r\n left: 0;\r\n}\r\n\r\n.absol-scrollbar-container>.absol-scrollbar {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n.absol-scrollbar-container.vertical>.absol-scrollbar>.absol-scrollbar-button {\r\n left: 1px;\r\n right: 1px;\r\n top: 0;\r\n}\r\n\r\n.absol-scrollbar-container.horizontal>.absol-scrollbar>.absol-scrollbar-button {\r\n top: 1px;\r\n bottom: 1px;\r\n left: 0;\r\n}\r\n\r\n.absol-scrollbar {\r\n position: relative;\r\n background: transparent;\r\n}\r\n\r\n.absol-scrollbar-button {\r\n position: absolute;\r\n background-color: rgba(0, 0, 0, 0.25);\r\n border-radius: 2px;\r\n}\r\n\r\n\r\n.absol-scrollbar.absol-hidden {\r\n visibility: hidden;\r\n}", ""]); /***/ }), /* 74 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(75); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 75 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ":root {\r\n --candy-border-color: #929292;\r\n --candy-hover-background-color: #eeeee9;\r\n --candy-disabled-background-color: #ebebe4;\r\n}\r\n\r\nlabel.as-checkbox-input {\r\n display: inline-block;\r\n position: relative;\r\n width: calc(1em + 2px);\r\n height: calc(1em + 2px);\r\n cursor: pointer;\r\n font-size: inherit;\r\n box-sizing: border-box;\r\n vertical-align: middle;\r\n border-radius: 0.25em;\r\n padding: 0;\r\n margin: 0; /*fix boostrap override*/\r\n}\r\n\r\nlabel.as-checkbox-input:hover .bound,\r\n.absol-checkbox:hover .bound {\r\n fill: var(--candy-hover-background-color);\r\n}\r\n\r\n.as-checkbox-input .tick {\r\n fill: #606060;\r\n}\r\n\r\n.as-checkbox-input input.as-checkbox-input-value {\r\n font-size: inherit;\r\n position: absolute;\r\n right: 100%;\r\n top: 0;\r\n opacity: 0.0;\r\n z-index: -100000000000;\r\n}\r\n\r\ninput.as-checkbox-input-value:not(:checked) ~ svg .tick {\r\n opacity: 0;\r\n}\r\n\r\nlabel.as-checkbox-input .bound {\r\n stroke: var(--candy-border-color);\r\n fill: white;\r\n}\r\n\r\nlabel.as-checkbox-input .tick {\r\n opacity: 1;\r\n transition: opacity 0.1s;\r\n}\r\n\r\nlabel.as-checkbox-input.as-disabled > svg .bound,\r\nlabel.as-checkbox-input.as-disabled:hover > svg .bound {\r\n stroke: #929292;\r\n fill: #ebebe4;\r\n}\r\n\r\n\r\n.as-checkbox-input > svg {\r\n width: 100%;\r\n height: 100%;\r\n}", ""]); /***/ }), /* 76 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(77); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 77 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "/** align middle in table cell **/\r\ntd > .absol-checkbox:first-child:last-child,\r\ntd > .absol-checkbox.as-no-label:first-child:last-child .as-checkbox-input{\r\n display: block;\r\n margin: auto;\r\n}\r\n\r\n.absol-checkbox {\r\n display: inline-block;\r\n vertical-align: middle;\r\n cursor: pointer;\r\n user-select: none;\r\n line-height: 16px;\r\n}\r\n\r\n.absol-checkbox.right > .absol-checkbox-label.as-right {\r\n display: none;\r\n}\r\n\r\n\r\n.absol-checkbox:not(.right) > .absol-checkbox-label.as-left {\r\n display: none;\r\n}\r\n\r\n.absol-checkbox-label {\r\n vertical-align: middle;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.absol-checkbox-label.as-left {\r\n padding-right: 0.3em;\r\n}\r\n\r\n\r\n.absol-checkbox-label.as-right {\r\n padding-left: 0.3em;\r\n}\r\n\r\n.absol-checkbox.as-no-label {\r\n width: calc(1em + 2px);\r\n height: calc(1em + 2px);\r\n}\r\n\r\n\r\n.absol-checkbox.as-no-label .absol-checkbox-label {\r\n display: none;\r\n}\r\n\r\n.absol-checkbox.as-no-label .as-checkbox-input {\r\n display: block;\r\n}\r\n\r\n.absol-checkbox.as-disabled .absol-checkbox-label {\r\n color: #777;\r\n}\r\n", ""]); /***/ }), /* 78 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(79); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 79 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-circle-section-label {\r\n position: relative;\r\n -webkit-print-color-adjust: exact;\r\n /*friendly print*/\r\n}\r\n\r\n.as-circle-section-label-text {\r\n position: relative;\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-size: 1em;\r\n padding-right: 2.5em;\r\n color: white;\r\n font-weight: bold;\r\n z-index: 2;\r\n}\r\n\r\n\r\n.as-circle-section-label-index {\r\n position: relative;\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-align: center;\r\n color: rgb(30, 162, 245);\r\n font-weight: 900;\r\n z-index: 2;\r\n}\r\n\r\n\r\n@media print {\r\n .as-circle-section-label-text {\r\n color: white !important;\r\n }\r\n\r\n .as-circle-section-label-index {\r\n color: rgb(30, 162, 245) !important;\r\n }\r\n}\r\n\r\n\r\n.as-circle-section-label-background {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n z-index: 1;\r\n}\r\n\r\n.as-circle-section-label-background>svg {\r\n display: block;\r\n}\r\n\r\n.as-circle-section-label-index-box {\r\n stroke: rgb(129, 211, 246);\r\n fill: white;\r\n stroke-width: 2.5;\r\n}\r\n\r\n.as-circle-section-label-arrow {\r\n stroke: rgb(30, 162, 245);\r\n fill: none;\r\n stroke-linecap: round;\r\n}\r\n\r\n.as-circle-section-label-text-box {\r\n fill: rgb(30, 162, 245);\r\n stroke: none;\r\n}\r\n\r\n.as-circle-section-label-arrow-marker-path {\r\n fill: rgb(30, 162, 245);\r\n stroke: none;\r\n}", ""]); /***/ }), /* 80 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(81); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 81 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-context-menu-hook {\r\n position: absolute;\r\n z-index: -100000;\r\n width: 14px;\r\n height: 14px;\r\n top: 0;\r\n opacity: 0;\r\n resize: none;\r\n cursor: default;\r\n}\r\n\r\n.absol-context-hinge-fixed-container {\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n z-index: 1000000001;\r\n}\r\n\r\n.absol-context-hinge {\r\n position: relative;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\n.absol-context-hinge > .absol-context-menu {\r\n position: absolute;\r\n top: -10000px;\r\n left: -10000px;\r\n visibility: hidden;\r\n z-index: 55;\r\n display: inline-block;\r\n}\r\n\r\n.absol-context-hinge .absol-vmenu,\r\n.absol-context-hinge .absol-hmenu {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n /* background-color: rgb(37, 37, 38);\r\n -webkit-box-shadow: 2px 2px 9px 0px rgba(7, 7, 7, 1);\r\n -moz-box-shadow: 2px 2px 9px 0px rgb(7, 7, 7, 1);\r\n box-shadow: 2px 2px 9px 0px rgba(7, 7, 7, 1); */\r\n color: black;\r\n background-color: rgb(252, 252, 255);\r\n -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n}\r\n\r\n.absol-context-menu-anchor.dark .absol-hmenu,\r\n.absol-context-menu-anchor.dark .absol-vmenu,\r\n.dark .absol-context-menu-anchor .absol-hmenu,\r\n.dark .absol-context-menu-anchor .absol-vmenu {\r\n background-color: rgb(37, 37, 38);\r\n}\r\n\r\n\r\n.absol-context-menu-anchor {\r\n position: fixed;\r\n z-index: -1000;\r\n left: 0;\r\n top: 0;\r\n display: block;\r\n opacity: 0;\r\n visibility: hidden;\r\n font-size: inherit;\r\n}\r\n\r\n.absol-context-menu-anchor > textarea {\r\n width: 160px;\r\n height: 160px;\r\n margin: 0;\r\n resize: none;\r\n border: none;\r\n opacity: 0;\r\n cursor: default;\r\n}\r\n\r\n.absol-context-menu-anchor.absol-active {\r\n z-index: 100000000;\r\n opacity: 1;\r\n visibility: visible;\r\n}\r\n\r\n\r\n.absol-context-menu-anchor .absol-vmenu,\r\n.absol-context-menu-anchor .absol-hmenu {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n color: black;\r\n background-color: rgb(252, 252, 255);\r\n -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n}\r\n\r\n\r\n.as-system-context-menu {\r\n /** nothing here, to define use system context menu**/\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal {\r\n position: fixed;\r\n z-index: 8000000;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n box-sizing: border-box;\r\n text-align: center;\r\n background-color: rgba(155, 155, 155, 0.3);\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal::before,\r\n.as-context-menu-ctn.as-anchor-modal > .absol-vmenu {\r\n display: inline-block;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal > .absol-vmenu {\r\n text-align: left;\r\n}\r\n\r\n\r\n.as-context-menu-ctn.as-anchor-modal::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal > .absol-vmenu {\r\n min-width: 70%;\r\n max-width: calc(100% - 10px);\r\n max-height: calc(100% - 10px);\r\n}", ""]); /***/ }), /* 82 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(83); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 83 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-ico {\r\n width: 1em;\r\n height: 1em;\r\n}\r\n\r\n.absol-button {\r\n white-space: normal;\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.absol-dropdown {\r\n position: relative;\r\n}\r\n\r\n.absol-dropdown-content {\r\n z-index: 1;\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n overflow: auto;\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.absol-dropdown.top > .absol-dropdown-content {\r\n top: auto;\r\n bottom: 100%;\r\n}\r\n\r\n.absol-dropdown.overlap-left > .absol-dropdown-content {\r\n left: auto;\r\n right: 0;\r\n}\r\n\r\n.absol-dropright {\r\n position: relative;\r\n}\r\n\r\n.absol-dropright-content {\r\n z-index: 1;\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n overflow: auto;\r\n}\r\n\r\n.absol-dropright.overlap-top > .absol-dropright-content {\r\n top: unset;\r\n bottom: 0;\r\n}\r\n\r\n.absol-drop-hidden > .absol-dropdown-content,\r\n.absol-drop-hidden > .absol-dropright-content {\r\n display: none;\r\n}\r\n\r\n\r\n.absol-hmenu {\r\n display: inline-block;\r\n background-color: rgb(252, 252, 255);\r\n /* background-color: rgb(33, 33, 33); */\r\n\r\n}\r\n\r\n.absol-hmenu > .absol-dropdown {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-hmenu-button:hover,\r\n.absol-hmenu .absol-hmenu-button-hover {\r\n\r\n background-color: rgb(175, 175, 175);\r\n}\r\n\r\n.absol-hmenu-button {\r\n padding-left: 1em;\r\n padding-right: 1em;\r\n}\r\n\r\n.absol-hmenu-button:focus {\r\n outline: none;\r\n}\r\n\r\n.absol-hmenu-button,\r\n.absol-vmenu-button {\r\n color: rgb(55, 55, 55);\r\n height: 100%;\r\n background-color: transparent;\r\n font-size: 1em;\r\n border: none;\r\n padding: 0;\r\n margin: 0;\r\n outline: none;\r\n}\r\n\r\n.absol-hmenu-button {\r\n padding-left: 1em;\r\n padding-right: 1em;\r\n}\r\n\r\n.absol-vmenu {\r\n}\r\n\r\n.absol-hmenu .absol-dropdown-content,\r\n.absol-hmenu .absol-dropright-content,\r\n.as-v-root-menu .absol-dropright-content {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n background-color: rgb(252, 252, 255);\r\n -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n}\r\n\r\n.absol-vmenu-button {\r\n text-align: left;\r\n padding-left: 0.5em;\r\n padding-right: 2em;\r\n height: 1.8em;\r\n white-space: nowrap;\r\n position: relative;\r\n}\r\n\r\nimg.absol-vmenu-button-icon {\r\n opacity: 0;\r\n display: none;\r\n}\r\n\r\nimg.absol-vmenu-button-icon[src] {\r\n display: block;\r\n}\r\n\r\n.absol-vmenu-button-ext-icon-container {\r\n display: inline-block;\r\n width: 1.2em;\r\n height: 1.2em;\r\n vertical-align: middle;\r\n margin-right: 0.5em;\r\n}\r\n\r\n.absol-vmenu-button-ext-icon-container > span,\r\n.absol-vmenu-button-ext-icon-container > i {\r\n font-size: 1.2em;\r\n line-height: 1;\r\n display: block;\r\n}\r\n\r\n\r\n.absol-vmenu-button-ext-icon-container > svg,\r\n.absol-vmenu-button-ext-icon-container > img {\r\n height: 1.2em;\r\n width: 1.2em;\r\n display: block;\r\n}\r\n\r\n\r\n.absol-vmenu-button-text,\r\n.absol-vmenu-button-key {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-vmenu-button-key {\r\n font-style: italic;\r\n text-align: right;\r\n margin-left: 1em;\r\n}\r\n\r\n.absol-vmenu-arrow-container {\r\n position: absolute;\r\n right: 0.2em;\r\n top: 0.3em;\r\n bottom: 0.3em;\r\n}\r\n\r\n\r\n.absol-vmenu-arrow-container::after {\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\n\r\n.absol-vmenu-arrow {\r\n display: inline-block;\r\n font-size: inherit;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-menu-item-disable .absol-vmenu-arrow {\r\n display: none;\r\n}\r\n\r\n.absol-vmenu-button:hover,\r\n.absol-vmenu .absol-vmenu-button-hover {\r\n background-color: rgb(214, 214, 217);\r\n}\r\n\r\n.absol-menu-item-disable .absol-vmenu-button:hover,\r\n.absol-menu-item-disable .absol-vmenu .absol-vmenu-button-hover,\r\n.absol-menu-item-disable .absol-hmenu-button:hover,\r\n.absol-menu-item-disable .absol-hmenu .absol-hmenu-button-hover {\r\n background-color: transparent;\r\n}\r\n\r\n.absol-vmenu-line {\r\n text-align: center;\r\n padding: 0.2em 1em;\r\n}\r\n\r\n.absol-vmenu-line > div {\r\n height: 1px;\r\n background-color: rgb(97, 97, 97);\r\n}\r\n\r\n.absol-menu-item-disable {\r\n}\r\n\r\n.absol-menu-item-disable button {\r\n color: rgb(155, 155, 159);\r\n}\r\n\r\n.dark .absol-menu-item-disable button {\r\n color: rgb(100, 100, 100);\r\n}\r\n\r\n.dark .absol-vmenu-button:hover,\r\n.dark .absol-vmenu .absol-vmenu-button-hover {\r\n background-color: rgb(9, 71, 113);\r\n}\r\n\r\n\r\n.dark .absol-hmenu .absol-dropdown-content,\r\n.dark .absol-hmenu .absol-dropright-content {\r\n background-color: rgb(37, 37, 38);\r\n}\r\n\r\n\r\n.dark .absol-hmenu-button,\r\n.dark .absol-vmenu-button {\r\n color: rgb(200, 200, 200);\r\n\r\n}\r\n\r\n\r\n.dark .absol-hmenu-button:hover,\r\n.dark .absol-hmenu .absol-hmenu-button-hover {\r\n background-color: rgb(80, 80, 80);\r\n}\r\n\r\n\r\n.dark .absol-hmenu {\r\n background-color: rgb(33, 33, 33);\r\n}\r\n\r\n/*standard-alone*/\r\n.absol-vmenu-button.standard-alone {\r\n height: 2em;\r\n border-radius: 0.3em;\r\n border: solid rgb(169, 169, 170) 1px;\r\n outline: none;\r\n}\r\n\r\n.as-v-root-menu {\r\n display: inline-block;\r\n box-sizing: border-box;\r\n}", ""]); /***/ }), /* 84 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(85); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 85 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-follower {\r\n position: fixed;\r\n z-index: 100;\r\n}\r\n\r\n.absol-follower-hidden{\r\n z-index: -1000 !important;\r\n opacity: 0;\r\n visibility: hidden;\r\n}", ""]); /***/ }), /* 86 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-date-input {\r\n border: 1px solid #ddd;\r\n border-radius: 3px;\r\n height: 30px;\r\n width: calc(6em + 30px);\r\n box-sizing: border-box;\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n background-color: white;\r\n}\r\n\r\n.as-date-input input {\r\n outline: none;\r\n width: calc(100% - 30px);\r\n height: 100%;\r\n border: none;\r\n background-color: transparent;\r\n display: block;\r\n padding: 0 0 0 0.5em;\r\n\r\n}\r\n\r\n.as-date-input-icon-ctn {\r\n border-left: 1px solid #ddd;\r\n text-align: center;\r\n position: absolute;\r\n right: 0;\r\n width: 29px;\r\n box-sizing: border-box;\r\n top: 0;\r\n height: 28px;\r\n background-color: rgba(169, 169, 169, 0.1);\r\n cursor: pointer;\r\n}\r\n\r\n\r\n.as-date-input-icon-ctn:hover {\r\n background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-date-input-icon-ctn:active {\r\n background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-date-input-icon-ctn > span {\r\n line-height: 28px;\r\n font-size: 16px;\r\n}\r\n\r\n.as-date-input.as-disabled {\r\n color: rgb(102, 102, 102);\r\n pointer-events: none;\r\n}", ""]); /***/ }), /* 87 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-draggable-stack {\r\n position: relative;\r\n}\r\n\r\n.absol-draggable-stack .drag-zone {\r\n touch-action: none;\r\n}\r\n\r\n.absol-draggable-stack > .as-dragging {\r\n opacity: 0.2 !important;\r\n}\r\n\r\n.absol-draggable-stack-child-container.as-dragging {\r\n opacity: 0.2 !important;\r\n}\r\n\r\n.absol-draggable-stack-clone-container {\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n z-index: 100000;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n pointer-events: all;\r\n opacity: 0.5;\r\n background: white;\r\n}\r\n\r\n.absol-draggable-vstack > .absol-draggable-stack-clone-container {\r\n left: 0;\r\n right: 0;\r\n\r\n}\r\n\r\n.absol-draggable-stack-clone-container * {\r\n pointer-events: none !important;\r\n}\r\n\r\n.absol-draggable-stack-clone-container > * {\r\n width: 100% !important;\r\n height: 100% !important;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.absol-draggable-stack-clone-container.home-going {\r\n transition: top 0.2s;\r\n}\r\n\r\n.absol-draggable-stack-dest-line {\r\n position: absolute;\r\n z-index: 99;\r\n box-sizing: content-box;\r\n}\r\n\r\n.absol-draggable-vstack > .absol-draggable-stack-dest-line {\r\n transition: top 0.1s;\r\n left: 0;\r\n right: 0;\r\n border-top: solid 3px rgb(74, 174, 233);\r\n border-bottom: solid 3px rgb(74, 174, 233);\r\n}\r\n\r\n\r\n.absol-draggable-hstack {\r\n --dest-x: 0px;\r\n}\r\n\r\n.absol-draggable-hstack.as-has-dragging::after {\r\n content: \"\";\r\n position: absolute;\r\n transition: left 0.1s;\r\n top: 0;\r\n bottom: 0;\r\n left: calc(var(--dest-x) - 3px);\r\n border-left: solid 3px rgb(74, 174, 233);\r\n border-right: solid 3px rgb(74, 174, 233);\r\n}\r\n\r\n.absol-draggable-hstack.as-no-change::after {\r\n visibility: hidden;\r\n}\r\n\r\n\r\n.absol-draggable-hstack > * {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-draggable-vstack {\r\n --dest-y: unset;\r\n}\r\n\r\n/**.as-state-drag*/\r\n.absol-draggable-vstack.as-state-drag::after {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n top: calc(var(--dest-y) - 3px);\r\n left: 0;\r\n right: 0;\r\n transition: top 0.1s;\r\n border-top: solid 3px rgb(74, 174, 233);\r\n border-bottom: solid 3px rgb(74, 174, 233);\r\n z-index: 999;\r\n}\r\n\r\n\r\n.absol-draggable-vstack.as-state-no-change::after {\r\n visibility: hidden;\r\n}", ""]); /***/ }), /* 88 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-drop-panel-head {\r\n height: 2.75em;\r\n line-height: 2.75em;\r\n -webkit-box-shadow: 0px 3px 4px -3px rgba(0, 0, 0, 0.75);\r\n -moz-box-shadow: 0px 3px 4px -3px rgba(0, 0, 0, 0.75);\r\n box-shadow: 0px 3px 4px -3px rgba(0, 0, 0, 0.75);\r\n background-color: rgba(240, 240, 242);\r\n color: black;\r\n}\r\n\r\n.absol-drop-panel-head .toggler-ico path {\r\n fill: rgb(104, 104, 104);\r\n}\r\n\r\n\r\n.dark .absol-drop-panel-head {\r\n background-color: rgba(54, 54, 56);\r\n color: rgb(204, 204, 204);\r\n}\r\n\r\n.absol-drop-panel.show .absol-drop-panel-body {\r\n height:auto;\r\n}\r\n\r\n.absol-drop-panel-body {\r\n transition: height 0.2s;\r\n height: 0;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n}\r\n\r\n\r\n.absol-drop-panel.show>.absol-drop-panel-head .toggle-close{\r\n display: none;\r\n}\r\n\r\n.absol-drop-panel:not(.show)>.absol-drop-panel-head .toggle-open{\r\n display: none;\r\n}\r\n\r\n", ""]); /***/ }), /* 89 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(90); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 90 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-exp-node {\r\n height: 2em;\r\n text-align: left;\r\n background-color: transparent;\r\n border: none;\r\n outline: none;\r\n white-space: nowrap;\r\n font-size: inherit;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n position: relative;\r\n color: rgb(33, 33, 34);\r\n}\r\n\r\n.absol-exp-node .toggler-ico {\r\n width: 0.7em;\r\n height: 0.7em;\r\n margin-right: 0.35em;\r\n}\r\n\r\n.absol-exp-node .toggler-ico path {\r\n fill: rgb(104, 104, 104);\r\n}\r\n\r\n.absol-exp-node.status-removable .toggler-ico,\r\n.absol-exp-node.status-modified .toggler-ico {\r\n display: none;\r\n}\r\n\r\n.absol-exp-node:not(.status-open) .toggle-open {\r\n display: none;\r\n}\r\n\r\n.absol-exp-node:not(.status-close) .toggle-close {\r\n display: none;\r\n}\r\n\r\n\r\n\r\n.absol-exp-node:hover .remove-ico {\r\n visibility: visible;\r\n}\r\n\r\n\r\n\r\n.absol-exp-node.status-removable .remove-ico,\r\n.absol-exp-node.status-modified .remove-ico {\r\n display: inline-block;\r\n}\r\n\r\n.absol-exp-node.status-removable .remove-ico .modified {\r\n visibility: hidden;\r\n}\r\n\r\n.absol-exp-node.status-modified .remove-ico .close {\r\n visibility: hidden;\r\n}\r\n\r\n.absol-exp-node.status-modified .remove-ico:hover .close {\r\n visibility: visible;\r\n}\r\n\r\n.absol-exp-node.status-modified .remove-ico:hover .modified {\r\n visibility: hidden;\r\n}\r\n\r\n\r\n.absol-exp-node .remove-ico {\r\n width: 0.9em;\r\n height: 0.9em;\r\n display: none;\r\n visibility: hidden;\r\n margin-left: -0.3em;\r\n margin-right: 0.45em;\r\n}\r\n\r\n.absol-exp-node .remove-ico .close,\r\n.absol-exp-node .remove-ico .modified {\r\n fill: rgb(169, 169, 169);\r\n stroke: none;\r\n}\r\n\r\n\r\n.absol-exp-node.has-status {\r\n padding-right: 2.5em;\r\n}\r\n\r\n.absol-exp-node>div,\r\n.absol-exp-node>svg {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-exp-node .editing input {\r\n color: khaki;\r\n padding-top: 2px;\r\n padding-bottom: 2px;\r\n}\r\n\r\n.absol-exp-node:hover {\r\n background-color: rgba(169, 169, 172, 0.1);\r\n}\r\n\r\n.absol-exp-node:focus,\r\n.absol-exp-node.as-active:focus {\r\n background-color: rgba(20, 185, 235, 0.3);\r\n}\r\n\r\n.absol-exp-node.as-active {\r\n background-color: rgba(169, 169, 172, 0.2);\r\n}\r\n\r\n\r\n\r\n.absol-exp-node-name {\r\n /* -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none; */\r\n user-select: none;\r\n vertical-align: middle;\r\n color: black;\r\n margin-left: 0.5em;\r\n}\r\n\r\n.absol-exp-node-desc {\r\n color: rgb(104, 104, 104);\r\n margin-left: 0.5em;\r\n font-size: 0.85em;\r\n}\r\n\r\n.absol-exp-node-desc:empty {\r\n margin-left: 0;\r\n}\r\n\r\n\r\n.absol-exp-node-expand-icon {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-right: 0.2em;\r\n height: 0.5em;\r\n width: 0.5em;\r\n}\r\n\r\nimg.absol-exp-node-ext-icon {\r\n display: none;\r\n}\r\n\r\n.absol-exp-node-ext-icon,\r\n.absol-exp-node-ext-icon>img {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: 1.5em;\r\n height: 1.5em;\r\n}\r\n\r\ndiv.absol-exp-node-ext-icon:empty {\r\n display: none;\r\n}\r\n\r\ndiv.absol-exp-node-ext-icon {\r\n text-align: center;\r\n}\r\n\r\n.absol-exp-node-ext-icon>.mdi,\r\n.absol-exp-node-ext-icon>span .absol-exp-node-ext-icon>svg {\r\n line-height: 1em;\r\n font-size: 1.5em;\r\n}\r\n\r\nimg.absol-exp-node-ext-icon[src] {\r\n display: inline-block;\r\n}\r\n\r\n\r\n.absol-exp-tree>.absol-exp-node {\r\n width: 100%;\r\n display: block;\r\n}\r\n\r\n.absol-exp-tree.hide-children>.absol-exp-items {\r\n display: none;\r\n}\r\n\r\n\r\n.dark .toggler-ico path {\r\n fill: rgb(169, 169, 169);\r\n}\r\n\r\n\r\n.dark .absol-exp-node-name {\r\n color: rgb(204, 204, 204);\r\n}\r\n\r\n.dark .absol-exp-node-desc {\r\n color: rgb(169, 169, 170);\r\n}\r\n\r\n.dark .absol-exp-node {\r\n color: rgb(169, 169, 170);\r\n}", ""]); /***/ }), /* 91 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(92); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 92 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "\r\n.absol-editabe-text {\r\n display: inline;\r\n}\r\n\r\n.absol-editabe-text span {\r\n font-style: inherit;\r\n font-size: inherit;\r\n white-space: pre;\r\n}\r\n\r\n.absol-editabe-text-higne {\r\n display: inline-block;\r\n position: relative;\r\n width: 0px;\r\n height: 0ox;\r\n}\r\n\r\n.absol-editabe-text-higne input {\r\n position: absolute;\r\n display: none;\r\n border: none;\r\n top: -2;\r\n left: -2;\r\n padding-top: 0px;\r\n padding-left: 2px;\r\n padding-bottom: 4px;\r\n margin: 0;\r\n background: transparent;\r\n outline: none;\r\n font-style: inherit;\r\n font-size: inherit;\r\n}\r\n\r\n.absol-editabe-text.editing .absol-editabe-text-higne input {\r\n display: block;\r\n}\r\n\r\n.absol-editabe-text.editing span {\r\n visibility: hidden;\r\n}\r\n\r\n.absol-editabe-text.editing {\r\n -webkit-box-shadow: 0px 0px 2px 0px rgba(33, 77, 255, 1);\r\n -moz-box-shadow: 0px 0px 2px 0px rgba(33, 77, 255, 1);\r\n box-shadow: 0px 0px 2px 0px rgba(33, 77, 255, 1);\r\n border-radius: 0.17em;\r\n}\r\n", ""]); /***/ }), /* 93 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(94); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 94 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-emoji-picker {\r\n font-size: 12px;\r\n border: 1px solid #dddddd;\r\n box-sizing: border-box;\r\n font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.as-emoji-picker-preview {\r\n display: inline-block;\r\n vertical-align: top;\r\n width: 80px;\r\n height: 110px;\r\n border-right: 1px solid #dddddd;\r\n text-align: center;\r\n\r\n}\r\n\r\n\r\n.as-emoji-picker-preview-anim {\r\n width: 60px;\r\n height: 60px;\r\n margin-top: 5px;\r\n}\r\n\r\n.as-emoji-picker-preview-desc {\r\n font-size: 12px;\r\n font-weight: bold;\r\n color: black;\r\n}\r\n\r\n.as-emoji-picker-preview-shortcut {\r\n font-size: 12px;\r\n color: rgb(70, 70, 70);\r\n}\r\n\r\n\r\n.as-emoji-picker-list {\r\n display: inline-block;\r\n vertical-align: top;\r\n overflow-y: auto;\r\n width: calc(100% - 81px);\r\n height: 110px;\r\n padding: 5px;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-emoji-picker-item {\r\n display: inline-block;\r\n padding: 5px;\r\n width: 30px;\r\n height: 30px;\r\n box-sizing: border-box;\r\n border-radius: 6px;\r\n}\r\n\r\n.as-emoji-picker-item:hover {\r\n background-color: rgba(169, 169, 170, 0.3);\r\n}\r\n\r\n.as-emoji-picker-item:active {\r\n background-color: rgba(169, 169, 170, 0.7);\r\n}", ""]); /***/ }), /* 95 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(96); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 96 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-flexicon-button {\r\n box-sizing: border-box;\r\n border: solid 1px #bfbfbf;\r\n background-color: #ebebeb;\r\n border-radius: 0.2em;\r\n outline: none;\r\n padding: 0;\r\n overflow: hidden;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-flexicon-button div,\r\n.as-flexicon-button span {\r\n font-weight: inherit;\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-icon-button-table-box {\r\n display: table;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-flexicon-button:hover .as-flexicon-button-content {\r\n background-color: rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.as-flexicon-button:active {\r\n -webkit-box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n}\r\n\r\n\r\n.as-flexicon-button-content {\r\n display: table-row;\r\n}\r\n\r\n\r\n.as-flexicon-button-icon-container,\r\n.as-flexicon-button-text-container {\r\n display: table-cell;\r\n box-sizing: content-box;\r\n vertical-align: middle;\r\n text-align: center;\r\n}\r\n\r\n.as-flexicon-button-icon-container:empty,\r\n.as-flexicon-button-text-container:empty {\r\n display: none;\r\n}\r\n\r\n.as-flexicon-button-icon-container {\r\n width: 2em;\r\n background-color: rgba(0, 0, 0, 0.0893617021);\r\n color: rgb(146, 146, 146);\r\n}\r\n\r\n\r\n.as-flexicon-button-icon-container > span,\r\n.as-flexicon-button-icon-container > i,\r\n.as-flexicon-button-icon-container > svg,\r\n.as-flexicon-button-icon-container > img {\r\n font-size: 1em;\r\n}\r\n\r\n.as-flexicon-button-text-container {\r\n padding-left: 0.357em;\r\n padding-right: 0.357em;\r\n box-sizing: border-box;\r\n min-width: 2em;\r\n}\r\n\r\n\r\n.as-flexicon-button-icon-container + .as-flexicon-button-text-container {\r\n border-left: solid 1px #bfbfbf;\r\n}\r\n\r\n.as-flexicon-button-icon-container:empty + .as-flexicon-button-text-container {\r\n border-left: none;\r\n padding-left: 0.714em;\r\n padding-right: 0.714em;\r\n}\r\n\r\n/*** theme ***/\r\n\r\n.as-flexicon-button.primary {\r\n border-color: #005bbd;\r\n background-color: #007bff;\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.primary .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.primary .as-flexicon-button-text-container {\r\n border-color: #005bbd;\r\n}\r\n\r\n\r\n.as-flexicon-button.secondary {\r\n border-color: #4e555a;\r\n background-color: #6d767e;\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.secondary .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.secondary .as-flexicon-button-text-container {\r\n border-left-color: #4e555a;\r\n}\r\n\r\n\r\n.as-flexicon-button.success {\r\n border-color: #1e7b34;\r\n background-color: #29a847;\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.success .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.success .as-flexicon-button-text-container {\r\n border-left-color: #1e7b34;\r\n}\r\n\r\n\r\n.as-flexicon-button.danger {\r\n border-color: #b21f2e;\r\n background-color: #dc3848;\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.danger .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.danger .as-flexicon-button-text-container {\r\n border-left-color: #b21f2e;\r\n}\r\n\r\n.as-flexicon-button.warning {\r\n border-color: #9e7700;\r\n background-color: #e0a800;\r\n color: black;\r\n}\r\n\r\n.as-flexicon-button.warning .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.warning .as-flexicon-button-text-container {\r\n border-left-color: #9e7700;\r\n}\r\n\r\n.as-flexicon-button.info {\r\n border-color: #117888;\r\n background-color: #17a2b8;\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.info .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.info .as-flexicon-button-text-container {\r\n border-left-color: #117888;\r\n}\r\n\r\n.as-flexicon-button.light {\r\n border-color: #c9d1d9;\r\n background-color: #f8f9fa;\r\n color: #212529;\r\n}\r\n\r\n.as-flexicon-button.light .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.light .as-flexicon-button-text-container {\r\n border-left-color: #c9d1d9;\r\n}\r\n\r\n.as-flexicon-button.dark {\r\n border-color: #171a1c;\r\n background-color: #343a40;\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.dark .as-flexicon-button-icon-container {\r\n color: white;\r\n}\r\n\r\n.as-flexicon-button.dark .as-flexicon-button-text-container {\r\n border-left-color: #171a1c;\r\n}\r\n\r\n.as-flexicon-button.link {\r\n border-color: transparent;\r\n background-color: transparent;\r\n color: #007bff;\r\n}\r\n\r\n.as-flexicon-button.link .as-flexicon-button-icon-container {\r\n color: #007bff;\r\n background: transparent;\r\n}\r\n\r\n.as-flexicon-button.link .as-flexicon-button-text-container {\r\n border-left-color: transparent;\r\n}\r\n\r\n.as-flexicon-button.link:hover .as-flexicon-button-text-container {\r\n text-decoration: underline;\r\n}", ""]); /***/ }), /* 97 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(98); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 98 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-flexicon-input-icon-ctn > span,\r\n.as-flexicon-input-icon-ctn > i,\r\n.as-flexicon-input-icon-ctn > svg,\r\n.as-flexicon-input-icon-ctn > img {\r\n font-size: 1em;\r\n line-height: 1;\r\n}\r\n\r\n.as-flexicon-input {\r\n position: relative;\r\n border: 1px solid #dddddd;\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 2em;\r\n font-size: 14px;\r\n box-sizing: border-box;\r\n border-radius: 3px;\r\n text-align: left;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-flexicon-input::before {\r\n content: \"\";\r\n width: 0;\r\n height: 100%;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-flexicon-input-icon-ctn:empty {\r\n display: none;\r\n}\r\n\r\n\r\n.as-flexicon-input:not(.as-flexicon-input-has-icon) input{\r\n padding-left: 0.3em;\r\n}\r\n\r\n.as-flexicon-input-icon-ctn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n /*text-align: center;*/\r\n font-size: 1.2em;\r\n width: 1.25em;\r\n text-align: center;\r\n}\r\n\r\n.as-flexicon-input-unit-ctn {\r\n width: 1.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-align: center;\r\n}\r\n\r\n.as-flexicon-input-unit-ctn:empty {\r\n display: none;\r\n}\r\n\r\n\r\n.as-flexicon-input input {\r\n border: none;\r\n font-size: 1em;\r\n outline: none;\r\n height: 100%;\r\n background-color: transparent;\r\n box-sizing: border-box;\r\n width: 100%;\r\n font-family: inherit;\r\n padding-left: 0;\r\n padding-right: 0;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-flexicon-input.as-flexicon-input-has-icon input,\r\n.as-flexicon-input.as-flexicon-input-has-unit input {\r\n width: calc(100% - 1.5em);\r\n}\r\n\r\n.as-flexicon-input.as-flexicon-input-has-unit input{\r\n text-align: right;\r\n}\r\n\r\n\r\n.as-flexicon-input.as-flexicon-input-has-icon.as-flexicon-input-has-unit input {\r\n width: calc(100% - 3em);\r\n}", ""]); /***/ }), /* 99 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(100); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 100 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-frame{\r\n \r\n}", ""]); /***/ }), /* 101 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(102); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 102 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-frame-view {\r\n position: relative;\r\n}\r\n\r\n\r\n.absol-frame-view-frame-container {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n\r\n.absol-frame-view-frame-container:not(.absol-active) {\r\n z-index: -100;\r\n visibility: hidden;\r\n opacity: 0;\r\n}\r\n\r\n.absol-frame-view-frame-container:not(.absol-active) *,\r\n.absol-frame-view-frame-container:not(.absol-active) {\r\n pointer-events: none;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n\r\n.absol-frame-view-frame-container > div {\r\n width: 100%;\r\n height: 100%;\r\n}", ""]); /***/ }), /* 103 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-tabbar {\r\n white-space: normal;\r\n height: 2em;\r\n white-space: nowrap;\r\n}\r\n\r\n\r\n.absol-tabbar .absol-hscroller-viewport {\r\n overflow-y: hidden;\r\n}\r\n\r\n.absol-tabbar .absol-tabbar-button {\r\n height: 100%;\r\n}\r\n\r\n/* .absol-tabbar .absol-scrollbar-container {\r\n height: 5px;\r\n} */\r\n\r\n.absol-tabbar .absol-scrollbar-container.horizontal {\r\n bottom: -2px;\r\n}\r\n\r\n.absol-tabbar .absol-scrollbar-container {\r\n opacity: 0;\r\n transition: opacity 0.2s;\r\n background: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n.absol-tabbar:hover .absol-scrollbar-container,\r\n.absol-tabbar:active .absol-scrollbar-container {\r\n opacity: 1;\r\n}\r\n\r\n.absol-tabbar .absol-scrollbar-button {\r\n background-color: rgba(33, 33, 40, 0.1);\r\n}\r\n\r\n.absol-tabbar .absol-scrollbar-button:hover {\r\n background-color: rgba(33, 33, 40, 0.3);\r\n}\r\n\r\n\r\n.absol-tabbar .absol-scrollbar-button:active,\r\n.absol-tabbar .absol-hscrollbar.absol-active .absol-scrollbar-button {\r\n background-color: rgba(47, 47, 55, 0.4);\r\n\r\n}\r\n\r\n\r\n.absol-tabbar-button {\r\n padding-left: 1em;\r\n padding-right: 1em;\r\n background-color: rgb(45, 45, 45);\r\n color: rgb(200, 200, 200);\r\n margin-right: 1px;\r\n border: none;\r\n outline: none;\r\n font-size: 1em;\r\n}\r\n\r\n.absol-tabbar .absol-tabbar-button-active {\r\n background-color: rgb(30, 30, 30);\r\n color: rgb(250, 250, 252);\r\n}\r\n\r\n.absol-tabbar-button-text,\r\n.absol-tabbar-button-icon-container > span {\r\n display: inline;\r\n vertical-align: middle;\r\n font-size: 1em;\r\n}\r\n\r\n.absol-tabbar-button .absol-tabbar-button-close,\r\n.absol-tabbar-button .absol-tabbar-button-close-circle\r\n{\r\n visibility: hidden;\r\n color: rgb(190, 190, 190);\r\n}\r\n\r\n.absol-tabbar-button-icon-container {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-left: 0.5em;\r\n}\r\n\r\n\r\n\r\n\r\n.absol-tabbar-button:hover .absol-tabbar-button-close,\r\n.absol-tabbar-button-active .absol-tabbar-button-close,\r\n.absol-tabbar-button:hover .absol-tabbar-button-close-circle,\r\n.absol-tabbar-button-active .absol-tabbar-button-close-circle\r\n{\r\n visibility: visible;\r\n color: red;\r\n}\r\n\r\n.absol-tabbar-button-active .absol-tabbar-button-modified-flag {\r\n color: lightblue;\r\n}\r\n\r\n.absol-tabbar-button-modified-flag {\r\n color: mediumaquamarine;\r\n}\r\n\r\n.absol-tabbar-button:not(.absol-tabbar-button-modified) .absol-tabbar-button-modified-flag,\r\n.absol-tabbar-button.absol-tabbar-button-modified:not(.active) .absol-tabbar-button-icon-container:hover .absol-tabbar-button-modified-flag,\r\n.absol-tabbar-button.absol-tabbar-button-modified .absol-tabbar-button-icon-container:not(:hover) .absol-tabbar-button-close,\r\n.absol-tabbar-button:not(.absol-tabbar-button-modified) .absol-tabbar-button-icon-container:not(:hover) .absol-tabbar-button-close-circle,\r\n.absol-tabbar-button:not(.absol-tabbar-button-modified) .absol-tabbar-button-icon-container:hover .absol-tabbar-button-close,\r\n.absol-tabbar-button.absol-tabbar-button-modified .absol-tabbar-button-close-circle,\r\n.absol-tabbar-button.absol-tabbar-button-modified .absol-tabbar-button-icon-container:not(:hover) .absol-tabbar-button-close\r\n{\r\n display: none;\r\n}\r\n\r\n\r\n.absol-button-range {\r\n}\r\n\r\n\r\n.absol-tabview {\r\n position: relative;\r\n}\r\n\r\n\r\n.absol-tabview-container {\r\n position: absolute;\r\n top: 2em;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n overflow: auto;\r\n}\r\n\r\n\r\n.absol-tabview-container.absol-tabview-container-hidden {\r\n z-index: -9999;\r\n visibility: hidden;\r\n opacity: 0;\r\n\r\n}\r\n\r\n.absol-tabview-container.absol-tabview-container-hidden *,\r\n.absol-tabview-container.absol-tabview-container-hidden {\r\n pointer-events: none;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n\r\n.absol-tabview-container > div,\r\n.absol-tabview-container > pre {\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview-container > pre {\r\n margin: 0;\r\n}\r\n\r\n.absol-tabview .absol-tabbar-button {\r\n border-radius: 10px 10px 0 0;\r\n height: 2em;\r\n box-sizing: border-box;\r\n border: solid 1px #ccc;\r\n background-color: white;\r\n color: black;\r\n padding-left: 1em;\r\n padding-right: 0.357em;\r\n margin-right: 0.357em;\r\n}\r\n\r\n.absol-tabview .absol-tabbar {\r\n height: 2em;\r\n overflow-y: hidden;\r\n border-bottom: 1px solid #ccc;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview .absol-tabbar-button-active {\r\n background-color: #5bc0de;\r\n border-color: #46b8da;\r\n color: white;\r\n}\r\n\r\n/* .absol-tabview .absol-tabbar-button-close {\r\n color: rgb(170, 170, 170);\r\n line-height: 1.5em;\r\n margin-left: 1em;\r\n font-size: 1.3em;\r\n} */\r\n\r\n.absol-tabview .absol-tabbar-button-close:hover {\r\n color: red;\r\n}\r\n\r\n\r\n/************** Mini version - like window form ***********************/\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar {\r\n height: 22px;\r\n border-bottom: none;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button {\r\n height: 20px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n border-radius: 0;\r\n margin: 0;\r\n vertical-align: bottom;\r\n margin-top: 2px;\r\n background-color: rgb(242, 242, 242);\r\n color: black;\r\n position: relative;\r\n}\r\n\r\n.absol-tabview.xp-tiny::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 18px;\r\n z-index: 0;\r\n left: 0;\r\n right: 0;\r\n height: 4px;\r\n border-bottom: solid 1px #ccc;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button.absol-tabbar-button-active {\r\n height: 22px;\r\n margin-top: 0;\r\n background-color: white;\r\n border-top-color: #ccc;\r\n border-left-color: #ccc;\r\n border-right-color: #ccc;\r\n border-bottom-color: white;\r\n}\r\n\r\n\r\n.absol-hscroller.absol-tabbar.disabled .absol-scrollbar-container {\r\n visibility: hidden;\r\n}\r\n\r\n.absol-tabview.absol-tabview.xp-tiny .absol-tabbar-button-close {\r\n line-height: 18px;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button-icon-container\r\n{\r\n display: none;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabview-container {\r\n top: 22px;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tab-absol {\r\n border-left: solid 1px #ccc;\r\n border-right: solid 1px #ccc;\r\n border-bottom: solid 1px #ccc;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.absol-tabview.as-without-close-button > .absol-tabbar .absol-tabbar-button .absol-tabbar-button-icon-container {\r\n display: none;\r\n}\r\n\r\n.absol-tabview.as-without-close-button > .absol-tabbar .absol-tabbar-button {\r\n padding-right: 1em;\r\n}\r\n\r\n/************************ Like Metro theme *********************/\r\n\r\n.absol-tabview.metro-flat > .absol-tabbar .absol-tabbar-button {\r\n border-radius: 0;\r\n margin-right: 0;\r\n margin-left: 0;\r\n border-left: none;\r\n border-top: none;\r\n border-bottom: none;\r\n border-right: solid 1px rgba(169, 169, 169, 0.3);\r\n font-size: 1em;\r\n}\r\n\r\n.absol-tabview.metro-flat > .absol-tabbar {\r\n box-shadow: 0px -1px 0px 0px #ccc;\r\n}\r\n", ""]); /***/ }), /* 104 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(105); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 105 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-single-page {\r\n position: relative;\r\n}\r\n\r\n\r\n.absol-single-page-header {\r\n box-sizing: border-box;\r\n z-index: 2;\r\n display: block;\r\n}\r\n\r\n.absol-single-page-footer {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.absol-single-page-scroller-viewport {\r\n min-height: 100%;\r\n display: block;\r\n position: relative;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-single-page-scroller {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: auto;\r\n}\r\n\r\n.absol-single-page.as-viewport-full > .absol-single-page-scroller > .absol-single-page-scroller-viewport {\r\n height: 100%;\r\n width: 100%;\r\n overflow: hidden;\r\n}\r\n\r\n.absol-single-page.as-no-scroll > .absol-single-page-scroller {\r\n overflow: hidden;\r\n}", ""]); /***/ }), /* 106 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(107); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 107 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-hexa-section-label {\r\n position: relative;\r\n -webkit-print-color-adjust: exact;\r\n /*friendly print*/\r\n}\r\n\r\n.as-hexa-section-label-text {\r\n position: relative;\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-size: 1em;\r\n padding-right: 2.5em;\r\n color: white;\r\n font-weight: bold;\r\n z-index: 2;\r\n}\r\n\r\n@media print {\r\n .as-hexa-section-label-text {\r\n color: white !important;\r\n }\r\n\r\n .as-hexa-section-label-index {\r\n color: rgb(237, 147, 54) !important;\r\n }\r\n}\r\n\r\n\r\n.as-hexa-section-label-index {\r\n position: relative;\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-align: center;\r\n color: rgb(237, 147, 54);\r\n font-weight: 900;\r\n z-index: 2;\r\n}\r\n\r\n.as-hexa-section-label-background {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n z-index: 1;\r\n}\r\n\r\n.as-hexa-section-label-background>svg {\r\n display: block;\r\n}\r\n\r\n.as-hexa-section-label-index-box {\r\n stroke: rgb(251, 186, 130);\r\n fill: white;\r\n stroke-width: 2.5;\r\n}\r\n\r\n.as-hexa-section-label-text-box {\r\n fill: rgb(237, 147, 54);\r\n stroke: none;\r\n}", ""]); /***/ }), /* 108 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(109); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 109 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "/*margin for border size*/\r\n.as-vruler {\r\n position: relative;\r\n width: 1.5em;\r\n border: solid 1px black;\r\n overflow: hidden;\r\n font-family: courier, \"courier new\", monospace;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-vruler-line {\r\n position: absolute;\r\n right: 0;\r\n width: 25%;\r\n border-top: solid 1px rgb(17, 48, 43);\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-vruler-line.major {\r\n width: 50%;\r\n border-top: solid 1px rgb(5, 20, 18);\r\n}\r\n\r\n.as-vruler-major-number {\r\n position: absolute;\r\n text-align: center;\r\n width: 5em;\r\n pointer-events: none;\r\n font-size: 0.7em;\r\n right: calc(52% - 2em);\r\n height: 1em;\r\n transform-origin: center;\r\n \r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n -ms-transform:rotate(90deg);\r\n transform: rotate(-90deg);\r\n}", ""]); /***/ }), /* 110 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(111); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 111 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "/*margin for border size*/\r\n.as-hruler {\r\n position: relative;\r\n height: 1.5em;\r\n border: solid 1px black;\r\n overflow: hidden;\r\n font-family: courier, \"courier new\", monospace;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-hruler-line {\r\n position: absolute;\r\n bottom: 0;\r\n height: 25%;\r\n border-left: solid 1px rgb(17, 48, 43);\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-hruler-line.major {\r\n height: 50%;\r\n border-left: solid 1px rgb(5, 20, 18);\r\n}\r\n\r\n.as-hruler-major-number{\r\n position: absolute;\r\n text-align: center;\r\n width: 5em;\r\n pointer-events: none;\r\n font-size: 0.7em;\r\n bottom: 50%;\r\n} ", ""]); /***/ }), /* 112 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(113); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 113 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-linear-color-bar {\r\n position: relative;\r\n height: 2em;\r\n}\r\n\r\n.as-linear-color-background {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n display: block;\r\n}\r\n\r\n.as-linear-color-value-text {\r\n position: absolute;\r\n top: 0;\r\n font-weight: 900;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-linear-color-min-value-text,\r\n.as-linear-color-max-value-text {\r\n position: absolute;\r\n bottom: 0;\r\n white-space: nowrap;\r\n font-weight: bold;\r\n}\r\n\r\n\r\n\r\n.as-linear-color-min-value-text {\r\n left: 0;\r\n}\r\n\r\n.as-linear-color-rect {\r\n stroke: none;\r\n}\r\n\r\n\r\n.as-linear-color-value-arrow {\r\n fill: rgb(244, 124, 32);\r\n stroke: rgb(244, 124, 32);\r\n}\r\n\r\n.as-linear-color-split-line {\r\n stroke: white;\r\n}", ""]); /***/ }), /* 114 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(115); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 115 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".vmedia-no-show {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1;\r\n height: 1;\r\n z-index: -100000;\r\n opacity: 0;\r\n}\r\n\r\n.vmedia-no-select,\r\n.vmedia-no-select * {\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\ncoccocgrammar {\r\n display: none;\r\n}\r\n\r\n.vmedia-media-input {\r\n box-sizing: border-box;\r\n border: solid 1px rgba(0, 0, 0, 0.1)\r\n}\r\n\r\n\r\n.vmedia-media-input-text-container {\r\n position: relative;\r\n min-height: 2.5em;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor:focus {\r\n outline: none;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor img {\r\n display: none;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor * {\r\n font-family: inherit;\r\n font-size: inherit;\r\n font-weight: inherit;\r\n text-decoration: inherit;\r\n color: inherit;\r\n background: none;\r\n padding: 0;\r\n margin: 0;\r\n white-space: pre;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor {\r\n min-height: 2em;\r\n padding-left: 0.5em;\r\n padding-top: 0.25em;\r\n padding-bottom: 0.25em;\r\n margin-right: 0.5em;\r\n box-sizing: border-box;\r\n max-height: 6.66666666em;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n}\r\n\r\n.vmedia-media-input-imagepreview-container {\r\n white-space: normal;\r\n}\r\n\r\n.vmedia-media-input:not(.dragover) .vmedia-media-input-dropover {\r\n display: none;\r\n}\r\n\r\n.vmedia-media-input-dropover {\r\n display: inline-block;\r\n width: 7em;\r\n height: 7em;\r\n}\r\n\r\n.vmedia-media-input-dropover>svg {\r\n width: 7em;\r\n height: 7em;\r\n}\r\n\r\n.vmedia-media-input-imagepreview-container .vmedia-media-input-filepreview,\r\n.vmedia-media-input-imagepreview-container .vmedia-media-input-imagepreview {\r\n margin: 0.3em;\r\n vertical-align: middle;\r\n}\r\n\r\n.vmedia-media-input-filepreview,\r\n.vmedia-media-input-imagepreview {\r\n position: relative;\r\n display: inline-block;\r\n}\r\n\r\n.vmedia-media-input-imagepreview img {\r\n height: 2.5em;\r\n width: auto;\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.attachment {\r\n height: 2em;\r\n width: 2em;\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.times,\r\n.vmedia-media-input-imagepreview svg.times {\r\n position: absolute;\r\n top: 0.1em;\r\n right: 0.1em;\r\n width: 1em;\r\n height: 1em;\r\n fill: rgba(69, 69, 69, 0.6);\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.times:hover,\r\n.vmedia-media-input-imagepreview svg.times:hover {\r\n fill: rgba(144, 144, 144, 0.6);\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.times:active,\r\n.vmedia-media-input-imagepreview svg.times:active {\r\n fill: rgba(220, 220, 240, 0.6);\r\n}\r\n\r\n.vmedia-media-input-plug-button-container {\r\n position: absolute;\r\n left: 0.25em;\r\n bottom: 0.25em;\r\n top: 0.25em;\r\n}\r\n\r\n.vmedia-media-input-plug-button-container svg {\r\n height: 1.5em;\r\n width: 1.5em;\r\n vertical-align: middle;\r\n transition: transform .22s cubic-bezier(.5, 0, .4, 1);\r\n}\r\n\r\n\r\n.vmedia-media-input-plug-button-container svg path {\r\n fill: rgba(66, 133, 244, 0.7);\r\n transition: fill .22s cubic-bezier(.5, 0, .4, 1);\r\n}\r\n\r\n.vmedia-media-input.show-plugin .vmedia-media-input-plug-button svg path {\r\n fill: rgba(134, 142, 153, 0.75);\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-plug-button {\r\n padding: 0;\r\n height: 100%;\r\n width: 2em;\r\n border: none;\r\n background: transparent;\r\n outline: none;\r\n\r\n}\r\n\r\n\r\n.vmedia-media-input-plugin-content-container {\r\n position: absolute;\r\n bottom: calc(1px + 100%);\r\n opacity: 1;\r\n transition: opacity .22s cubic-bezier(.5, 0, .4, 1);\r\n background-color: white;\r\n box-sizing: border-box;\r\n border: solid 1px rgba(0, 0, 0, 0.1);\r\n z-index: 20;\r\n background: white;\r\n}\r\n\r\n.vmedia-media-input-plugin-content-container:empty{\r\n display: none;\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-tool-container {\r\n position: relative;\r\n display: block;\r\n height: 1.5em;\r\n /* background: red; */\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-tool-container-left {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.vmedia-media-input-tool-container-right {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.vmedia-media-input-tool-container button {\r\n width: 2.5em;\r\n height: 100%;\r\n font-size: 1em;\r\n margin-left: 0.1em;\r\n margin-right: 0.1em;\r\n border: none;\r\n background-color: transparent;\r\n border-radius: 0.4em;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor {\r\n scrollbar-width: thin;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor::-webkit-scrollbar {\r\n width: 7px;\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-text-container-editor::-webkit-scrollbar-track {\r\n background: rgb(240, 240, 240);\r\n}\r\n\r\n.vmedia-media-input-text-container-editor::-webkit-scrollbar-thumb {\r\n background: rgb(205, 205, 205);\r\n}\r\n\r\n.vmedia-media-input-tool-container button svg {\r\n height: 1.25em;\r\n width: 1.25em;\r\n}\r\n\r\n.vmedia-media-input-tool-container button:hover {\r\n background-color: rgba(91, 192, 222, 0.1);\r\n}\r\n\r\n.vmedia-media-input-tool-container button:active {\r\n background-color: rgba(91, 192, 222, 0.4);\r\n}\r\n\r\n.vmedia-media-input-tool-container button svg.send {\r\n fill: rgba(66, 133, 244, 0.7);\r\n}\r\n\r\n.vmedia-media-input-tool-container button svg.add-file,\r\n.vmedia-media-input-tool-container button svg.add-image {\r\n fill: rgba(66, 66, 66, 0.5);\r\n}\r\n\r\n.vmedia-media-input-tool-container button .mdi{\r\n font-size:1.2em; \r\n}\r\n\r\n.vmedia-media-input-tool-container button:focus {\r\n outline: none;\r\n}\r\n\r\n.vmedia-media-input-tool-container button{\r\n vertical-align: middle;\r\n}\r\n\r\n.vmedia-media-input-plugin-content-container.blur{\r\n visibility: hidden;\r\n}", ""]); /***/ }), /* 116 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(117); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 117 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-conversation-box {\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.as-conversation-box-message-ctn {\r\n flex-grow: 1;\r\n}\r\n\r\n.as-conversation-box-input-ctn {\r\n /** empty**/\r\n}\r\n\r\n.as-message-input {\r\n position: relative;\r\n box-sizing: border-box;\r\n padding-top: 5px;\r\n padding-bottom: 5px;\r\n padding-left: 5px;\r\n overflow: visible;\r\n --plugin-buttons-width: 0px;\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn {\r\n font-size: inherit;\r\n width: 40px;\r\n height: 40px;\r\n padding: 0;\r\n border: none;\r\n color: rgb(122, 122, 122);\r\n background-color: rgb(241, 241, 241);\r\n outline: none;\r\n border-radius: 50%;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn:active {\r\n background-color: rgb(212, 212, 212);\r\n}\r\n\r\n.as-message-input-plugin-btn:hover {\r\n background-color: rgb(235, 235, 235);\r\n\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn span {\r\n font-size: 24px;\r\n}\r\n\r\n\r\n.as-message-input-right {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 5px;\r\n z-index: 0;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-message-input-right .as-message-input-plugin-btn {\r\n margin-left: 10px;\r\n}\r\n\r\n\r\n.as-message-input-emoji-btn-ctn {\r\n position: absolute;\r\n left: 5px;\r\n bottom: 5px;\r\n}\r\n\r\n\r\n.as-message-input-pre-ctn {\r\n position: relative;\r\n width: calc(100% - 55px - var(--plugin-buttons-width));\r\n border-radius: 25px;\r\n box-sizing: border-box;\r\n transition: width 0.1s;\r\n padding: 10px 20px 10px 50px;\r\n background-color: rgb(241, 241, 244);\r\n}\r\n\r\n\r\n.as-message-input-pre-ctn::after {\r\n display: inline-block;\r\n content: \"\";\r\n height: 30px;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-message-input.as-has-text .as-message-input-pre-ctn,\r\n.as-message-input.as-has-quote .as-message-input-pre-ctn,\r\n.as-message-input.as-has-attachment .as-message-input-pre-ctn {\r\n width: calc(100% - 55px);\r\n}\r\n\r\n\r\n.as-message-input-pre {\r\n display: inline-block;\r\n width: calc(100% - 2px);\r\n max-height: 6.5em;\r\n box-sizing: border-box;\r\n font-family: inherit;\r\n font-size: inherit;\r\n outline: none;\r\n vertical-align: middle;\r\n margin: 0;\r\n white-space: pre-wrap;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n line-height: 1.5;\r\n border: none;\r\n}\r\n\r\n.as-message-input-pre:before {\r\n content: \"\";\r\n line-height: 30px;\r\n display: inline;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-message-input-camera-caller,\r\n.as-message-input-camera-microphone {\r\n display: none;\r\n}\r\n\r\n.as-message-input-emoji-picker-ctn {\r\n position: absolute;\r\n bottom: 100%;\r\n left: 0;\r\n right: 0;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n background-color: white;\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send {\r\n color: white;\r\n background: linear-gradient(135deg, rgb(0, 120, 212), rgb(0, 188, 242));\r\n transform: scale(1);\r\n transition: scale 0.1s;\r\n}\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send span {\r\n font-size: 20px;\r\n}\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send:hover {\r\n background: linear-gradient(135deg, rgb(0, 140, 212), rgb(0, 208, 252));\r\n}\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send:active {\r\n transform: scale(0.9);\r\n}\r\n\r\n\r\n.as-message-input:not(.as-text-changed):not(.as-has-attachment):not(.as-has-quote) .as-message-input-plugin-send,\r\n.as-message-input:not(.as-has-text):not(.as-has-attachment):not(.as-has-quote) .as-message-input-plugin-send,\r\n.as-message-input:not(.as-mode-edit) .as-message-input-plugin-cancel,\r\n.as-message-input.as-mode-edit.as-text-changed.as-has-text .as-message-input-plugin-cancel,\r\n.as-message-input:not(.as-has-attachment):not(.as-drag-hover) .as-message-input-attachment-ctn,\r\n.as-message-input.as-auto-send .as-message-input-attachment-ctn,\r\n.as-message-input.as-mode-edit .as-message-input-plugin-file,\r\n.as-message-input.as-has-text .as-message-input-plugin-file,\r\n.as-message-input.as-has-quote .as-message-input-plugin-file,\r\n.as-message-input:not(.as-has-quote) .as-message-quote-box {\r\n display: none;\r\n}\r\n\r\n.as-message-input .as-message-quote-box {\r\n border-bottom: 1px solid #ddd;\r\n}\r\n\r\n.as-message-quote-box {\r\n position: relative;\r\n\r\n}\r\n\r\n.as-message-input.as-has-attachment .as-message-quote-box {\r\n margin-bottom: 5px;\r\n}\r\n\r\n.as-message-quote-remove-btn {\r\n position: absolute;\r\n color: rgb(43, 44, 51);\r\n right: -7px;\r\n top: 5px;\r\n width: 20px;\r\n height: 20px;\r\n padding: 0;\r\n background: transparent;\r\n border: none;\r\n border-radius: 50%;\r\n font-size: 16px;\r\n outline: none;\r\n}\r\n\r\n.as-message-quote-remove-btn:hover {\r\n color: rgb(143, 144, 151);\r\n}\r\n\r\n.as-message-quote-box {\r\n user-select: none;\r\n -webkit-user-select: none;\r\n}\r\n\r\n.as-message-quote-box:not(.as-removable) .as-message-quote-remove-btn {\r\n display: none;\r\n}\r\n\r\n\r\n.as-message-quote-box > div {\r\n display: inline-block;\r\n vertical-align: top;\r\n}\r\n\r\n.as-message-quote-box:not(.as-has-img):not(.as-has-file) .as-message-quote-img {\r\n display: none;\r\n}\r\n\r\n.as-message-quote-img {\r\n width: 40px;\r\n height: 40px;\r\n padding: 5px;\r\n box-sizing: border-box;\r\n background-size: cover;\r\n background-origin: border-box;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n}\r\n\r\n.as-message-quote-sym {\r\n width: 25px;\r\n}\r\n\r\n.as-message-quote-sym > span {\r\n font-size: 25px;\r\n color: rgb(169, 169, 172);\r\n}\r\n\r\n.as-message-quote-content {\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n width: calc(100% - 26px);\r\n box-sizing: border-box;\r\n padding-left: 20px;\r\n}\r\n\r\n.as-message-quote-box.as-has-img .as-message-quote-content,\r\n.as-message-quote-box.as-has-file .as-message-quote-content {\r\n width: calc(100% - 66px);\r\n padding-left: 5px;\r\n}\r\n\r\n.as-message-quote-box.as-has-file .as-message-quote-img {\r\n background-origin: padding-box;\r\n background-size: contain;\r\n}\r\n\r\n.as-message-quote-text {\r\n font-size: 1.14em;\r\n line-height: 1.75;\r\n font-style: italic;\r\n color: rgb(43, 44, 51);\r\n max-width: 100%;\r\n word-break: break-word;\r\n white-space: pre-wrap;\r\n}\r\n\r\n.as-message-quote-box.as-shorten-text .as-message-quote-text {\r\n word-break: normal;\r\n\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.as-message-quote-text .as-emoji {\r\n width: 20px;\r\n height: 20px;\r\n}\r\n\r\n.as-message-quote-desc {\r\n font-size: 0.85em;\r\n color: rgb(80, 80, 88);\r\n}\r\n\r\n.as-message-input-attachment-ctn {\r\n border-bottom: 1px solid #ddd;\r\n max-height: 170px;\r\n overflow-y: auto;\r\n}\r\n\r\n\r\n.as-message-input-attach-preview {\r\n display: inline-block;\r\n position: relative;\r\n width: 135px;\r\n height: 135px;\r\n vertical-align: middle;\r\n margin-right: 5px;\r\n margin-bottom: 5px;\r\n border-radius: 10px;\r\n background-color: white;\r\n overflow: hidden;\r\n}\r\n\r\n.as-message-input-attach-preview-image {\r\n min-width: 20px;\r\n image-orientation: from-image;\r\n width: 100%;\r\n height: 100%;\r\n background-size: cover;\r\n background-position: center center;\r\n background-repeat: no-repeat;\r\n}\r\n\r\n\r\n.as-message-input-attach-preview-file {\r\n max-width: 50%;\r\n max-height: 50%;\r\n margin-left: 10px;\r\n margin-top: 10px;\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn {\r\n position: absolute;\r\n right: 10px;\r\n top: 10px;\r\n width: 18px;\r\n height: 18px;\r\n border-radius: 50%;\r\n text-align: center;\r\n border: 1px solid white;\r\n outline: none;\r\n padding: 0;\r\n color: white;\r\n -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.64);\r\n -moz-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.64);\r\n box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.64);\r\n background-color: rgba(100, 100, 100, 0.5);\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn span {\r\n font-size: 14px;\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn:hover {\r\n background-color: rgba(255, 255, 255, 0.5);\r\n color: rgb(200, 200, 200);\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn:active {\r\n background-color: rgba(255, 255, 255, 0.7);\r\n color: rgb(255, 255, 255);\r\n}\r\n\r\n\r\n.as-message-input:not(.as-drag-hover) .as-message-input-attachment-add-btn-drop,\r\n.as-message-input.as-drag-hover .as-message-input-attachment-add-btn-plus {\r\n display: none;\r\n}\r\n\r\n.as-message-input-attach-preview-name {\r\n position: absolute;\r\n left: 10px;\r\n bottom: 10px;\r\n right: 10px;\r\n text-shadow: 0px 1px 3px white;\r\n color: black;\r\n font-size: 14px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.as-message-input-attachment-add-btn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 135px;\r\n width: 60px;\r\n border: none;\r\n border-radius: 10px;\r\n padding: 0;\r\n background-color: rgb(196, 196, 200);\r\n color: white;\r\n font-size: 50px;\r\n outline: none;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.as-message-input-attachment-add-btn:hover {\r\n background-color: rgb(169, 169, 169)\r\n\r\n}\r\n\r\n.as-message-input-attachment-add-btn:active {\r\n background-color: rgb(138, 141, 145)\r\n}\r\n\r\n.as-message-input-external-tools-popup {\r\n position: absolute;\r\n left: 0;\r\n max-width: 100%;\r\n bottom: 100%;\r\n background-color: white;\r\n}\r\n\r\nimg.as-emoji {\r\n vertical-align: bottom;\r\n}\r\n\r\nspan.as-emoji-text {\r\n position: absolute;\r\n color: transparent;\r\n width: 20px;\r\n opacity: 0;\r\n}", ""]); /***/ }), /* 118 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(119); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 119 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-number-input {\r\n text-align: right;\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n min-width: calc(1em + 2px);\r\n height: calc(2em + 2px);\r\n border: solid 1px #d6d6d6;\r\n font-size: 14px;\r\n box-sizing: border-box;\r\n width: 4em;\r\n}\r\n\r\n.absol-number-input-button-up-container {\r\n top: 0;\r\n}\r\n\r\n.absol-number-input-button-down-container {\r\n bottom: 0;\r\n}\r\n\r\n.absol-number-input-button-up-container,\r\n.absol-number-input-button-down-container {\r\n right: 0;\r\n position: absolute;\r\n height: 1em;\r\n width: 1em;\r\n max-height: 50%;\r\n}\r\n\r\n.absol-number-input-button-up-container>button,\r\n.absol-number-input-button-down-container>button {\r\n width: 100%;\r\n height: 100%;\r\n line-height: 1;\r\n padding: 0;\r\n border: none;\r\n box-sizing: border-box;\r\n outline: none;\r\n color: rgb(101, 101, 101);\r\n background-color: transparent;\r\n background-color: rgb(101, 101, 101, 0.05);\r\n}\r\n\r\n.absol-number-input-button-up-container>button:active,\r\n.absol-number-input-button-down-container>button:active{\r\n color: black;\r\n background-color: rgb(101, 101, 101, 0.3);\r\n}\r\n\r\n.absol-number-input-text-container {\r\n left: 0em;\r\n right: 1.2em;\r\n top: 0;\r\n bottom: 0;\r\n position: absolute;\r\n}\r\n\r\n\r\n.absol-number-input-text-container>input[type=\"text\"] {\r\n border: none;\r\n outline: none;\r\n width: 100%;\r\n height: 100%;\r\n padding: 0;\r\n text-align: right;\r\n padding-left:0.2em;\r\n padding-right: 0.2em; \r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-number-input.absol-disabled{\r\n pointer-events: none;\r\n}\r\n\r\n.absol-number-input.absol-disabled{\r\n pointer-events: none;\r\n}\r\n\r\n.absol-number-input.absol-disabled .absol-number-input-button-up-container,\r\n.absol-number-input.absol-disabled .absol-number-input-button-down-container\r\n{\r\n opacity: 0.3;\r\n}", ""]); /***/ }), /* 120 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(121); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 121 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-onscreen-window {\r\n z-index: 1002;\r\n position: fixed;\r\n left: 10px;\r\n top: 10px;\r\n width: 12em;\r\n height: 5em;\r\n /*default size*/\r\n /* min-width: 12em;\r\n min-height: 1.4em; */\r\n}\r\n\r\n.absol-onscreen-window-content {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n background: white;\r\n -webkit-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n -moz-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n}\r\n\r\n.absol-onscreen-window-head-bar {\r\n height: 1.4em;\r\n position: relative;\r\n background-color: rgba(169, 169, 169, 0.15);\r\n padding: 0.2em;\r\n box-sizing: border-box;\r\n}\r\n\r\nspan.absol-onscreen-window-head-bar-icon {\r\n line-height: 1.2em;\r\n font-size: 1em;\r\n margin-right: 0.2em;\r\n}\r\n\r\nspan.absol-onscreen-window-head-bar-title {\r\n line-height: 1.2em;\r\n font-size: 1em;\r\n color: rgba(33, 33, 34);\r\n}\r\n\r\n.absol-onscreen-window-head-bar-buttons {\r\n position: absolute;\r\n right: 0.1em;\r\n top: 0.1em;\r\n bottom: 0.1em;\r\n}\r\n\r\n.absol-onscreen-window-head-bar-buttons>button {\r\n height: 100%;\r\n width: 1em;\r\n font-size: 1em;\r\n padding: 0;\r\n margin: 0 0 0 0.1em;\r\n border: none;\r\n color: rgba(169, 169, 169);\r\n outline: none;\r\n}\r\n\r\n.absol-onscreen-window-head-bar-buttons>button:hover {\r\n color: rgba(103, 103, 103);\r\n}\r\n\r\n.absol-onscreen-window-head-bar-buttons>button:active {\r\n color: rgba(33, 33, 34);\r\n}\r\n\r\n.absol-onscreen-window-head-bar-buttons>button:hover>.mdi-close {\r\n color: rgb(255, 59, 59);\r\n}\r\n\r\n.absol-onscreen-window-head-bar-buttons>button>span {\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-onscreen-window-body-container {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 1.4em;\r\n bottom: 0;\r\n}\r\n\r\n\r\n.absol-onscreen-window-moving-modal {\r\n position: fixed;\r\n left: 1px;\r\n right: 1px;\r\n top: 1px;\r\n bottom: 1px;\r\n z-index: 100006;\r\n}\r\n\r\n.absol-onscreen-window-resizer {\r\n position: absolute;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom {\r\n bottom: -3px;\r\n height: 6px;\r\n left: 3px;\r\n right: 3px;\r\n z-index: 3;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-top {\r\n top: -3px;\r\n height: 6px;\r\n left: 3px;\r\n right: 3px;\r\n z-index: 3;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-left {\r\n left: -3px;\r\n top: 3px;\r\n bottom: 3px;\r\n width: 6px;\r\n cursor: ew-resize;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-right {\r\n right: -3px;\r\n top: 3px;\r\n bottom: 3px;\r\n width: 6px;\r\n cursor: ew-resize;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-right {\r\n width: 6px;\r\n height: 6px;\r\n right: -3px;\r\n bottom: -3px;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-left {\r\n width: 6px;\r\n height: 6px;\r\n left: -3px;\r\n bottom: -3px;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-left {\r\n width: 6px;\r\n height: 6px;\r\n left: -3px;\r\n top: -3px;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-right {\r\n width: 6px;\r\n height: 6px;\r\n right: -3px;\r\n top: -3px;\r\n}\r\n\r\n\r\n.absol-onscreen-window-resize-top,\r\n.absol-onscreen-window-resize-bottom {\r\n cursor: ns-resize;\r\n\r\n}\r\n\r\n.absol-onscreen-window-resize-left,\r\n.absol-onscreen-window-resize-right {\r\n cursor: ew-resize;\r\n\r\n}\r\n\r\n\r\n.absol-onscreen-window-resize-bottom-right {\r\n cursor: se-resize;\r\n}\r\n\r\n.absol-onscreen-window-resize-bottom-left {\r\n cursor: sw-resize;\r\n}\r\n\r\n.absol-onscreen-window-resize-top-left {\r\n cursor: nw-resize;\r\n}\r\n\r\n.absol-onscreen-window-resize-top-right {\r\n cursor: ne-resize;\r\n}", ""]); /***/ }), /* 122 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(123); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 123 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-page-selector{\r\n white-space: normal;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n.absol-page-selector > ul{\r\n margin-bottom: 0px;\r\n margin-top: 0;\r\n}\r\n\r\n.absol-page-number-buttons{\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-page-number-input > label{\r\n font-weight: 100;\r\n}\r\n\r\n.absol-page-number-buttons > li.page-previous, \r\n.absol-page-number-buttons > li.page-next,\r\n.absol-page-number-buttons > li.page-first,\r\n.absol-page-number-buttons > li.page-last\r\n{\r\n display: inline-block;\r\n height: 30px;\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n text-align: center;\r\n transition: all .3s linear;\r\n background-color: transparent;\r\n cursor: pointer;\r\n}\r\n\r\n.absol-page-number-buttons > li.absol-page-number{\r\n display: inline-block;\r\n height: 30px;\r\n width: 40px;\r\n text-align: center;\r\n transition: all .3s linear;\r\n background-color: transparent;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n.absol-page-number-buttons > li.absol-page-number.active{\r\n box-shadow: 0 2px 5px 0 rgba(0,0,0,.16), 0 2px 10px 0 rgba(0,0,0,.12);\r\n background-color: #4285f4;\r\n border-radius:2px; \r\n \r\n}\r\n\r\n.absol-page-number-buttons > li.absol-page-number.active > a{\r\n\tcolor: white;\r\n \r\n}\r\n\r\n.absol-page-number-buttons > li> a{\r\n line-height: 30px;\r\n text-decoration:none;\r\n outline: none;\r\n}\r\n\r\n.absol-page-number-buttons > li:not(.active):hover{\r\n background-color: #eee;\r\n\r\n}\r\n\r\n.absol-page-selector .absol-page-number-input{\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-page-selector .absol-page-number-input input[type=\"text\"]{\r\n width: 3em;\r\n margin-left: 5px; \r\n margin-right: 10px;\r\n text-align: center;\r\n height: 26px;\r\n border: none;\r\n border: solid 1px #ccc; \r\n border-radius: 2px;\r\n\r\n}\r\n\r\n.absol-page-link {\r\n color: #147af6;\r\n cursor: pointer;\r\n text-decoration: underline;\r\n}\r\n\r\n.absol-page-number {\r\n color: #147af6;\r\n cursor: pointer;\r\n}", ""]); /***/ }), /* 124 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(125); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 125 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-preinput {\r\n margin: 0;\r\n padding: 0;\r\n white-space: pre-wrap;\r\n -moz-user-modify: read-write;\r\n -webkit-user-modify: read-write;\r\n word-break: normal;\r\n}\r\npre.as-preinput{\r\n word-break: normal;\r\n}\r\n\r\n\r\n.as-preinput img {\r\n display: none;\r\n}", ""]); /***/ }), /* 126 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(127); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 127 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-progress-bar {\r\n height: 1em;\r\n background-color: #e9ecef;\r\n border-radius: .25em;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n}\r\n\r\n\r\n.as-progress-bar-value {\r\n height: 100%;\r\n width: 0;\r\n color: #fff;\r\n text-align: center;\r\n white-space: nowrap;\r\n background-color: #007bff;\r\n transition: width .6s ease;\r\n}\r\n\r\n.as-progress-bar.as-variant-success .as-progress-bar-value {\r\n background-color: #28a745;\r\n}\r\n\r\n.as-progress-bar.as-variant-info .as-progress-bar-value {\r\n background-color: #17a2b8;\r\n}\r\n\r\n.as-progress-bar.as-variant-warning .as-progress-bar-value {\r\n background-color: #ffc107;\r\n}\r\n\r\n.as-progress-bar.as-variant-danger .as-progress-bar-value {\r\n background-color: #dc3545;\r\n}\r\n\r\n\r\n.as-progress-bar.as-striped .as-progress-bar-value,\r\n.as-progress-bar.as-animated .as-progress-bar-value {\r\n background-image: linear-gradient(45deg, hsla(0, 0%, 100%, .15) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, .15) 0, hsla(0, 0%, 100%, .15) 75%, transparent 0, transparent);\r\n background-size: 1.33333em 1.33333em;\r\n}\r\n\r\n@keyframes as-progress-bar-stripes {\r\n 0% {\r\n background-position: 1.33333em 0\r\n }\r\n\r\n to {\r\n background-position: 0 0\r\n }\r\n}\r\n\r\n.as-progress-bar.as-animated .as-progress-bar-value {\r\n animation: as-progress-bar-stripes 1s linear infinite;\r\n}", ""]); /***/ }), /* 128 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(129); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 129 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-quick-list-button {\r\n box-sizing: border-box;\r\n height: calc(2em + 2px);\r\n font-size: 14px;\r\n}\r\n\r\n.as-quick-list-button .as-flexicon-button-text-container {\r\n border-right: solid 1px #bfbfbf;\r\n}\r\n\r\n\r\n.as-quick-list-button-follower .absol-selectlist {\r\n max-height: calc(100vh - 20px);\r\n overflow-y: auto;\r\n border: solid 1px rgb(100, 100, 255);\r\n box-sizing: border-box;\r\n background-color: white;\r\n display: inline-block;\r\n vertical-align: top;\r\n -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n}", ""]); /***/ }), /* 130 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-selectlist {\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.absol-selectlist * {\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-selectlist .absol-selectlist-item:hover {\r\n background-color: #efefef;\r\n}\r\n\r\n.absol-selectlist .absol-selectlist-item {\r\n height: 20px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n}\r\n\r\n.absol-selectlist-item.as-selected {\r\n background-color: #dfdfdf;\r\n}\r\n\r\n\r\n.absol-selectlist:not(.as-searching)>.absol-selectlist-item.as-last-in-group:not(:last-child) {\r\n border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.absol-selectlist-item>span {\r\n line-height: 20px;\r\n white-space: pre;\r\n padding-left: 7px;\r\n padding-right: 7px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.absol-selectlist-item {\r\n position: relative;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-selectlist-item-desc-container {\r\n position: absolute;\r\n right: 0.3em;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.absol-selectlist-item-desc {\r\n font-style: italic;\r\n line-height: 20px;\r\n white-space: nowrap;\r\n color: rgb(37, 37, 37);\r\n}\r\n\r\n.absol-selectlist-item-desc:empty {\r\n display: none;\r\n}\r\n\r\n\r\n", ""]); /***/ }), /* 131 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(132); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 132 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-quick-path {\r\n position: relative;\r\n box-sizing: border-box;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -moz-user-select: none;\r\n min-height: 1.5em;\r\n}\r\n\r\n.absol-quick-path button {\r\n outline: none;\r\n color: rgb(69, 69, 69);\r\n height: 1.5em;\r\n}\r\n\r\n.absol-quick-path button:hover {\r\n color: black;\r\n}\r\n\r\n.absol-quick-path .toggler-ico path {\r\n fill: rgb(104, 104, 104);\r\n}\r\n\r\n.dark .absol-quick-path button {\r\n color: rgb(200, 200, 200);\r\n}\r\n\r\n\r\n.dark .absol-quick-path button:hover {\r\n color: white;\r\n}\r\n\r\n.dark .absol-quick-path .toggler-ico path {\r\n fill: rgb(169, 169, 169);\r\n}\r\n\r\n\r\n\r\n.absol-quick-path-btn:focus span {\r\n text-decoration: underline;\r\n}\r\n\r\n/* \r\n.absol-quick-path-btn .toggler-ico path {\r\n fill: rgb(104, 104, 104);\r\n} */\r\n", ""]); /***/ }), /* 133 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(134); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 134 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-radio-button {\r\n display: inline;\r\n cursor: pointer;\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-radio-button input {\r\n display: none;\r\n}\r\n\r\n\r\n.absol-radio-button > svg {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: calc(1em + 4px);\r\n height: calc(1em + 4px);\r\n}\r\n\r\n.absol-radio-button > svg .bound {\r\n stroke: #929292;\r\n fill: white;\r\n}\r\n\r\n.absol-radio-button:hover > svg .bound {\r\n fill: #d6d6d6;\r\n stroke: black;\r\n}\r\n\r\n.absol-radio-icon .border {\r\n}\r\n\r\n.absol-radio-button .dot {\r\n transition: opacity 0.07s;\r\n opacity: 0;\r\n fill: #606060;\r\n}\r\n\r\n.absol-radio-button:hover .dot {\r\n transition: opacity 0.07s;\r\n opacity: 0;\r\n fill: black;\r\n}\r\n\r\n.absol-radio-button.checked .dot {\r\n opacity: 1;\r\n transition: opacity 0.1s;\r\n}\r\n\r\n\r\n\r\n.absol-radio-button > span:last-child {\r\n display: none;\r\n}\r\n\r\n\r\n.absol-radio-button.disabled {\r\n cursor: default;\r\n}\r\n\r\n.absol-radio-button.disabled:hover .dot,\r\n.absol-radio-button.disabled .dot {\r\n fill: #929292;\r\n}\r\n\r\n.absol-radio-button.disabled .bound,\r\n.absol-radio-button.disabled:hover .bound {\r\n stroke: #929292;\r\n fill: #ebebe4;\r\n}\r\n\r\n\r\n.absol-radio .standar-alone {\r\n display: inline-block;\r\n}\r\n\r\n.absol-radio > span:not(:last-child) {\r\n padding-right: 0.3em;\r\n}\r\n\r\n.absol-radio span:last-child {\r\n padding-left: 0.3em;\r\n}\r\n\r\ninput:checked ~ .absol-radio-icon .dot {\r\n opacity: 1;\r\n}", ""]); /***/ }), /* 135 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(136); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 136 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-radio {\r\n display: inline;\r\n cursor: pointer;\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-radio input {\r\n display: none;\r\n}\r\n\r\n.absol-radio > span {\r\n white-space: pre;\r\n cursor: inherit;\r\n vertical-align: middle;\r\n margin: 0;\r\n font-size: inherit;\r\n}\r\n\r\n.absol-radio > span:empty {\r\n display: none;\r\n}\r\n\r\n.absol-radio > svg {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: calc(1em + 4px);\r\n height: calc(1em + 4px);\r\n}\r\n\r\n.absol-radio > svg .bound {\r\n stroke: #929292;\r\n fill: white;\r\n}\r\n\r\n.absol-radio:hover > svg .bound {\r\n fill: #d6d6d6;\r\n stroke: black;\r\n}\r\n\r\n/* \r\n.absol-radio>svg .bound {\r\n fill: none;\r\n} */\r\n\r\n.absol-radio-icon .border {\r\n}\r\n\r\n.absol-radio .dot {\r\n transition: opacity 0.07s;\r\n opacity: 0;\r\n fill: #606060;\r\n}\r\n\r\n.absol-radio:hover .dot {\r\n transition: opacity 0.07s;\r\n opacity: 0;\r\n fill: black;\r\n}\r\n\r\n.absol-radio.checked .dot {\r\n opacity: 1;\r\n transition: opacity 0.1s;\r\n}\r\n\r\n.absol-radio:not(.right) > span.absol-radio-left-label {\r\n display: none;\r\n}\r\n\r\n.absol-radio.right > span.absol-radio-right-label {\r\n display: none;\r\n}\r\n\r\nspan.absol-radio-left-label {\r\n padding-right: 0.3em;\r\n}\r\n\r\nspan.absol-radio-right-label {\r\n padding-left: 0.3em;\r\n}\r\n\r\n\r\n\r\n\r\n.absol-radio.disabled {\r\n cursor: default;\r\n}\r\n\r\n.absol-radio.disabled{\r\n color: #777;\r\n}\r\n\r\n.absol-radio.disabled:hover .dot,\r\n.absol-radio.disabled .dot {\r\n fill: #929292;\r\n}\r\n\r\n.absol-radio.disabled .bound,\r\n.absol-radio.disabled:hover .bound {\r\n stroke: #929292;\r\n fill: #ebebe4;\r\n}\r\n\r\n\r\n.absol-radio .standar-alone {\r\n display: inline-block;\r\n}\r\n\r\ninput:checked ~ .absol-radio-icon .dot {\r\n opacity: 1;\r\n}", ""]); /***/ }), /* 137 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(138); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 138 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-resize-box {\r\n position: absolute;\r\n /*or fixed*/\r\n z-index: 1;\r\n box-sizing: border-box;\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n.as-resize-box-body {\r\n margin: -1px;\r\n width: calc(100% + 2px);\r\n height: calc(100% + 2px);\r\n position: relative;\r\n box-sizing: border-box;\r\n border: solid 2px rgb(32, 150, 218);\r\n}\r\n\r\n.as-resize-box.as-can-move .as-resize-box-body {\r\n cursor: move;\r\n pointer-events: all;\r\n}\r\n\r\n.as-resize-box.as-can-click .as-resize-box-body {\r\n pointer-events: all;\r\n}\r\n\r\n.as-resize-box.as-can-move .as-resize-box-dot,\r\n.as-resize-box.as-can-resize .as-resize-box-dot.right,\r\n.as-resize-box.as-can-resize .as-resize-box-dot.bottom,\r\n.as-resize-box.as-can-resize .as-resize-box-dot.right-bottom {\r\n display: unset;\r\n\r\n}\r\n\r\n.as-resize-box-dot {\r\n position: absolute;\r\n width: 0.6em;\r\n height: 0.6em;\r\n background: rgb(32, 150, 218);\r\n display: none;\r\n pointer-events: all;\r\n}\r\n\r\n.as-resize-box-dot.left-top {\r\n top: calc(-0.3em - 1px);\r\n left: calc(-0.3em - 1px);\r\n cursor: nw-resize;\r\n}\r\n\r\n.as-resize-box-dot.left-bottom {\r\n bottom: calc(-0.3em - 1px);\r\n left: calc(-0.3em - 1px);\r\n cursor: sw-resize;\r\n}\r\n\r\n.as-resize-box-dot.left {\r\n top: calc(50% - 0.3em);\r\n left: calc(-0.3em - 1px);\r\n cursor: w-resize;\r\n}\r\n\r\n.as-resize-box-dot.top {\r\n top: calc(-0.3em - 1px);\r\n left: calc(50% - 0.3em);\r\n cursor: n-resize;\r\n}\r\n\r\n.as-resize-box-dot.bottom {\r\n bottom: calc(-0.3em - 1px);\r\n left: calc(50% - 0.3em);\r\n cursor: s-resize;\r\n}\r\n\r\n.as-resize-box-dot.right-top {\r\n top: calc(-0.3em - 1px);\r\n right: calc(-0.3em - 1px);\r\n cursor: ne-resize;\r\n}\r\n\r\n.as-resize-box-dot.right-bottom {\r\n bottom: calc(-0.3em - 1px);\r\n right: calc(-0.3em - 1px);\r\n cursor: se-resize;\r\n}\r\n\r\n\r\n.as-resize-box-dot.right {\r\n top: calc(50% - 0.3em);\r\n right: calc(-0.3em - 1px);\r\n cursor: e-resize;\r\n}\r\n\r\n.as-resize-box-overiding .as-resize-box-dot,\r\n.as-resize-box-overiding .as-resize-box-body {\r\n cursor: unset;\r\n}\r\n\r\n.as-resize-box-overiding.body {\r\n cursor: move !important;\r\n}\r\n\r\n\r\n.as-resize-box-overiding.left-top {\r\n cursor: nw-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.left-bottom {\r\n cursor: sw-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.left {\r\n cursor: w-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.top {\r\n cursor: n-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.bottom {\r\n cursor: s-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.right-top {\r\n cursor: ne-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.right-bottom {\r\n cursor: se-resize !important;\r\n}\r\n\r\n\r\n.as-resize-box-overiding.right {\r\n cursor: e-resize !important;\r\n}", ""]); /***/ }), /* 139 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(140); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 140 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-search-text-input {\r\n position: relative;\r\n height: 2em;\r\n border-radius: 0.3em;\r\n border: solid 1px #a9a9a9;\r\n font-size: 14px;\r\n background-color: white;\r\n}\r\n\r\n.absol-search-text-input.focus {\r\n outline: solid 1px rgba(30, 30, 255, 0.4);\r\n}\r\n\r\n.absol-search-text-input-container {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n right: 2em;\r\n}\r\n\r\n.absol-search-text-button-container {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 2em;\r\n bottom: 0em;\r\n}\r\n\r\n.absol-search-text-button-container button {\r\n width: 100%;\r\n height: 100%;\r\n outline: none;\r\n border: none;\r\n background: transparent;\r\n padding: 0;\r\n font-size: 1em;\r\n}\r\n\r\n.absol-search-text-button-container button>svg {\r\n height: 1.14285714286em;\r\n width: 1.14285714286em;\r\n fill: rgb(132, 132, 132);\r\n}\r\n\r\n.absol-search-text-input-container input {\r\n width: 100%;\r\n height: 100%;\r\n font-size: 1em;\r\n box-sizing: border-box;\r\n outline: none;\r\n border: none;\r\n background-color: transparent;\r\n padding-left: 0.6em;\r\n}\r\n\r\n.absol-search-text-input:not(.searching) svg.times{\r\n display: none;\r\n}\r\n\r\n.absol-search-text-input.searching svg.find{\r\n display: none;\r\n}\r\n\r\n.absol-search-text-input-container input::-webkit-search-cancel-button{\r\n display: none;\r\n}", ""]); /***/ }), /* 141 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(142); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 142 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ":root {\r\n --select-box-item-height: 20px;\r\n --select-box-item-font-size: 14px;\r\n --select-box-item-border-radius: 9px;\r\n --select-box-item-close-opacity: 0;\r\n --select-box-min-height: 30px;\r\n --select-box-focus-item-color: rgb(208, 145, 239);\r\n}\r\n\r\n.absol-selectbox {\r\n --list-min-width: 40px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n min-height: var(--select-box-min-height);\r\n min-width: var(--list-min-width);\r\n border: solid 1px #d6d6d6;\r\n border-radius: 3px;\r\n box-sizing: border-box;\r\n padding-right: 20px;\r\n overflow-y: auto;\r\n outline: none;\r\n background-color: white;\r\n}\r\n\r\n.absol-selectbox:not(.as-disable-click-to-focus) {\r\n cursor: copy;\r\n}\r\n\r\n.absol-selectbox.as-disabled {\r\n pointer-events: none;\r\n background-color: #ebebe4;\r\n}\r\n\r\n.absol-selectbox.as-disabled .absol-selectbox-item {\r\n opacity: 0.7;\r\n}\r\n\r\n.absol-selectbox {\r\n white-space: normal;\r\n}\r\n\r\n.absol-selectbox .absol-selectbox-item {\r\n margin: calc((var(--select-box-min-height) - 2px - var(--select-box-item-height)) / 2) 2px;\r\n}\r\n\r\n.absol-selectbox-item {\r\n font-family: Arial, Helvetica, sans-serif;\r\n display: inline-block;\r\n position: relative;\r\n font-size: var(--select-box-item-font-size);\r\n height: var(--select-box-item-height);\r\n box-sizing: border-box;\r\n border-radius: var(--select-box-item-border-radius);\r\n overflow: hidden;\r\n background-color: #5bc0de;\r\n border-color: #46b8da;\r\n vertical-align: top;\r\n white-space: normal;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n color: black;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n.absol-selectbox-item.as-theme-confirmed {\r\n background-color: rgb(145, 228, 251);\r\n}\r\n\r\n.absol-selectbox-item.as-theme-declined {\r\n background-color: rgb(255, 138, 138)\r\n}\r\n\r\n.absol-selectbox-item.as-theme-waiting {\r\n background-color: rgb(255, 227, 174);\r\n color: black;\r\n}\r\n\r\n.absol-selectbox-item-text {\r\n height: var(--select-box-item-height);\r\n padding-right: calc(var(--select-box-item-height) + 5px);\r\n padding-left: 5px;\r\n font-size: inherit;\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-selectbox-item-text:hover {\r\n background-color: rgba(0, 0, 0, 0.0893617021);\r\n}\r\n\r\n.absol-selectbox-item-text span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-selectbox-item-close {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: var(--select-box-item-height);\r\n text-align: center;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n cursor: pointer;\r\n background-color: rgba(0, 0, 0, var(--select-box-item-close-opacity));\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-selectbox-item-close::after,\r\n.absol-selectbox-item-text::before {\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\n.absol-selectbox-item-close span {\r\n font-size: 1.25em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-selectbox.as-item-focusable .absol-selectbox-item.as-active {\r\n background-color: var(--select-box-focus-item-color);\r\n}", ""]); /***/ }), /* 143 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-selectmenu-anchor-container {\r\n /* position: fixed; */\r\n\r\n /* top: 0; */\r\n /* left: 0; */\r\n width: 0;\r\n height: 0;\r\n overflow: visible;\r\n}\r\n\r\n.absol-selectmenu-anchor {\r\n position: relative;\r\n}\r\n\r\n.absol-selectmenu-anchor-content-container {\r\n position: absolute;\r\n z-index: 1002;\r\n top: 0;\r\n left: 0;\r\n}\r\n\r\n.absol-selectmenu-anchor-content-container .absol-bscroller {\r\n max-height: calc(100vh - 50px);\r\n}\r\n\r\n\r\n.absol-selectmenu-anchor.absol-disabled .absol-selectmenu-anchor-content-container {\r\n visibility: hidden;\r\n top: -100000px;\r\n left: -10000px;\r\n z-index: -1000;\r\n opacity: 0;\r\n}\r\n\r\n\r\n.absol-selectmenu-dropdown-box {\r\n border: solid 1px rgb(100, 100, 255);\r\n box-sizing: border-box;\r\n background-color: white;\r\n display: inline-block;\r\n vertical-align: top;\r\n -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n}\r\n\r\n.absol-selectmenu-dropdown-box > .as-bscroller {\r\n overflow-y: auto;\r\n}\r\n\r\n.absol-selectmenu-dropdown-box .absol-search-text-input {\r\n margin: 0.2em;\r\n}\r\n\r\n\r\n.absol-selectmenu.absol-hidden {\r\n display: none !important;\r\n}\r\n\r\n.absol-selectmenu-render-space {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n z-index: -1000;\r\n visibility: hidden;\r\n font-size: 14px;\r\n}\r\n\r\n.absol-selectmenu-render-space > div {\r\n display: inline-block;\r\n}\r\n\r\n\r\n.absol-selectmenu.as-disabled,\r\n.as-select-menu.as-disabled\r\n{\r\n pointer-events: none;\r\n background-color: #ebebe4;\r\n\r\n}\r\n\r\n.absol-selectmenu {\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n height: 30px;\r\n min-width: 30px;\r\n border: solid 1px #d6d6d6;\r\n border-radius: 2px;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n font-size: 14px;\r\n outline: none;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n/* .absol-selectmenu:hover {\r\n border: solid 1px black;\r\n} */\r\n\r\n.absol-selectmenu-btn {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n width: 30px;\r\n border: none;\r\n background: transparent;\r\n z-index: 2;\r\n pointer-events: none;\r\n}\r\n\r\n.absol-selectmenu-btn:focus {\r\n outline: none;\r\n}\r\n\r\n.absol-selectmenu-btn svg.dropdown {\r\n width: 10px;\r\n height: 10px;\r\n fill: #929292;\r\n}\r\n\r\n.absol-selectmenu:hover svg.dropdown {\r\n width: 10px;\r\n height: 10px;\r\n fill: black;\r\n}\r\n\r\n.absol-selectmenu-holder-item {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 4px;\r\n bottom: 4px;\r\n /*1px for border*/\r\n}\r\n\r\n\r\n.absol-selectmenu .absol-selectlist-item span {\r\n padding-right: 28px;\r\n}\r\n\r\n.absol-selectmenu .absol-scroll-button {\r\n background-color: rgba(0, 0, 0, 0.1);\r\n border-radius: 3px;\r\n}\r\n\r\n.absol-selectmenu .absol-scroll-button:hover {\r\n background-color: rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n.absol-scroll-bar-v-container {\r\n width: 10px;\r\n}\r\n\r\n.absol-selectmenu .absol-search-text-input {\r\n margin: 4px;\r\n}\r\n\r\n.absol-selectmenu-render-space .absol-selectlist-item span {\r\n padding-right: 0;\r\n}\r\n\r\n\r\n.absol-selectmenu .absol-selectlist-item-desc-container {\r\n right: 30px;\r\n}\r\n\r\n\r\n.absol-selectmenu-dropdown-box .absol-bscroller {\r\n overflow-y: auto;\r\n}\r\n\r\n\r\n.as-select-anchor {\r\n position: fixed;\r\n z-index: 1000001;\r\n}\r\n\r\n\r\n.as-select-anchor.as-hidden {\r\n left: 0;\r\n top: 0;\r\n z-index: -1000;\r\n visibility: hidden;\r\n opacity: 0;\r\n}\r\n\r\n\r\n.as-select-menu {\r\n --select-list-estimate-width: 0;\r\n --select-list-desc-width: 0;\r\n width: calc(var( --select-list-estimate-width) + 32px);\r\n min-width: calc(var( --select-list-estimate-width) + 32px);\r\n}", ""]); /***/ }), /* 144 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(145); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 145 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-select-list-box {\r\n --select-list-estimate-width: 0;\r\n --max-height: calc(100vh - 80px);\r\n position: fixed;\r\n top: 10px;\r\n left: 10px;\r\n width: calc(var(--select-list-estimate-width) + 2px + 5px);\r\n font-size: 14px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n border: solid 1px rgb(100, 100, 255);\r\n box-sizing: border-box;\r\n background-color: white;\r\n display: inline-block;\r\n vertical-align: top;\r\n -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n outline: none;\r\n}\r\n\r\n.absol-follower.as-select-list-box{\r\n z-index: 1000000;\r\n}\r\n\r\n.as-select-list-box .as-select-list-box {\r\n min-width: 100%;\r\n}\r\n\r\n.as-select-list-box-search-ctn {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.as-select-list-box.as-enable-search.as-anchor-6 .as-select-list-box-search-ctn,\r\n.as-select-list-box.as-enable-search.as-anchor-5 .as-select-list-box-search-ctn {\r\n bottom: 0;\r\n}\r\n\r\n.as-select-list-box.as-enable-search.as-anchor-6,\r\n.as-select-list-box.as-enable-search.as-anchor-5 {\r\n padding-bottom: 38px;\r\n}\r\n\r\n.as-select-list-box.as-enable-search.as-anchor-1,\r\n.as-select-list-box.as-enable-search.as-anchor-2 {\r\n padding-top: 38px;\r\n}\r\n\r\n.as-select-list-box.as-enable-search.as-anchor-1 .as-select-list-box-search-ctn,\r\n.as-select-list-box.as-enable-search.as-anchor-2 .as-select-list-box-search-ctn {\r\n top: 0;\r\n}\r\n\r\n.as-select-list-box-scroller {\r\n overflow-y: auto;\r\n overflow-x: visible;\r\n}\r\n\r\n.as-select-list-box .as-select-list-box-scroller {\r\n max-height: var(--max-height);\r\n}\r\n\r\n.as-select-list-box.as-enable-search .as-select-list-box-scroller {\r\n max-height: calc(var(--max-height) - 38px);\r\n}\r\n\r\n.as-select-list-box-content {\r\n position: relative;\r\n}\r\n\r\n.as-select-list-box-page {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n}\r\n\r\n.as-select-list-box .absol-selectlist-item{\r\n cursor: default;\r\n}\r\n\r\n.as-select-list-box-search-ctn {\r\n display: none;\r\n padding: 5px;\r\n}\r\n\r\n\r\n.as-select-list-box.as-enable-search .as-select-list-box-search-ctn {\r\n display: block;\r\n}\r\n\r\n.as-select-list-box:not(.as-searching) .as-last-in-group {\r\n border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.as-select-list-box .as-last-in-group span {\r\n line-height: 19px;\r\n}\r\n\r\n\r\n.as-select-list-box .absol-selectlist-item:hover {\r\n background-color: #efefef;\r\n}\r\n\r\n.as-select-list-box.as-value-hidden .absol-selectlist-item.as-selected{\r\n color: #aaaaaa;\r\n}\r\n\r\n.as-select-list-box.as-value-hidden .absol-selectlist-item.as-selected.as-is-leaft{\r\n display: none;\r\n}", ""]); /***/ }), /* 146 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-select-table-render-space {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n z-index: -1000;\r\n visibility: hidden;\r\n font-size: 14px;\r\n}\r\n\r\n.absol-select-table {\r\n border: solid 1px #a9a9a9;\r\n min-width: 26em;\r\n overflow: hidden;\r\n}\r\n\r\n.absol-select-table-header {\r\n display: block;\r\n position: relative;\r\n box-sizing: content-box;\r\n height: 2.2857142857em;\r\n}\r\n\r\n.absol-select-table-searchtextinput-container {\r\n position: absolute;\r\n left: 0.14285714285em;\r\n top: 0.14285714285em;\r\n height: 2em;\r\n right: 10em;\r\n /* background-color: cyan; */\r\n}\r\n\r\n.absol-select-table.disable-move-all .absol-select-table-buttons-container {\r\n display: none;\r\n}\r\n\r\n.absol-select-table.disable-move-all .absol-select-table-searchtextinput-container {\r\n right: 0.14285714285em !important;\r\n}\r\n\r\n.absol-select-table-buttons-container {\r\n position: absolute;\r\n right: 0.14285714285em;\r\n top: 0.14285714285em;\r\n width: 10.7142857143em;\r\n height: 2em;\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-select-table-buttons-container>button {\r\n height: 2em;\r\n font-size: 1em;\r\n background-color: transparent;\r\n border: none;\r\n padding: 0 0.5em;\r\n margin: 0;\r\n text-decoration: underline;\r\n cursor: pointer;\r\n}\r\n\r\n.absol-select-table-buttons-container>button:focus {\r\n outline: none;\r\n}\r\n\r\n.absol-select-table-buttons-container>button:hover {\r\n color: #a9a9a9;\r\n}\r\n\r\n.absol-select-table-buttons-container>button:active {\r\n color: #a9a9ff;\r\n}\r\n\r\n.absol-select-table-body {\r\n margin: 0.14285714285em;\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-select-table-items-scroller {\r\n width: 50%;\r\n display: inline-block;\r\n box-sizing: border-box;\r\n vertical-align: top;\r\n overflow-y: auto;\r\n}\r\n\r\n.absol-select-table-items-scroller .absol-scroll-button {\r\n background-color: rgba(1, 1, 30, 0.1);\r\n}\r\n\r\n.absol-select-table-items-scroller .absol-scroll-bar-v-container {\r\n width: 0.69em;\r\n}\r\n\r\n.absol-select-table-selected-search-items-container,\r\n.absol-select-table-nonselected-search-items-container,\r\n.absol-select-table.searching .absol-select-table-selected-items-container,\r\n.absol-select-table.searching .absol-select-table-nonselected-items-container {\r\n display: none;\r\n}\r\n\r\n.absol-select-table.searching .absol-select-table-selected-search-items-container,\r\n.absol-select-table.searching .absol-select-table-nonselected-search-items-container {\r\n display: block;\r\n padding-right: 0.7em;\r\n}\r\n\r\n.absol-select-table-nonselected-items-container,\r\n.absol-select-table-selected-items-container {\r\n padding-right: 0.7em;\r\n}\r\n\r\n.absol-select-table-nonselected-items-container>.absol-select-table-item,\r\n.absol-select-table-selected-items-container>.absol-select-table-item,\r\n.absol-select-table-nonselected-search-items-container>.absol-select-table-item,\r\n.absol-select-table-selected-search-items-container>.absol-select-table-item {\r\n margin: 0.14285714285em;\r\n}\r\n\r\n.absol-select-table-item {\r\n display: block;\r\n line-height: 2em;\r\n min-height: 2em;\r\n position: relative;\r\n background-color: rgba(169, 169, 169, 0.05);\r\n border: solid 1px rgb(235, 235, 235);\r\n border-radius: 0.2em;\r\n overflow: hidden;\r\n -webkit-user-select: none;\r\n /* Safari 3.1+ */\r\n -moz-user-select: none;\r\n /* Firefox 2+ */\r\n -ms-user-select: none;\r\n /* IE 10+ */\r\n user-select: none;\r\n /* Standard syntax */\r\n padding-left: 0.69em;\r\n padding-right: 1.8em;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-select-table-item:hover {\r\n background-color: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n.absol-select-table-item-right-container {\r\n right: 0.3em;\r\n bottom: 0.3em;\r\n top: 0.3em;\r\n padding: 0.2em;\r\n width: 1.4em;\r\n position: absolute;\r\n border-radius: 0.2em;\r\n box-sizing: border-box;\r\n ;\r\n}\r\n\r\n.absol-select-table-item-right-container:hover {\r\n background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\nspan.absol-select-table-item-text {\r\n white-space: normal;\r\n \r\n}\r\n\r\n.absol-select-table-item-right-container-table{\r\n display: table;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.absol-select-table-item-right-container-cell{\r\n display: table-cell;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-select-table-item-right-container svg {\r\n width: 1em;\r\n height: 1em;\r\n display: none;\r\n}\r\n\r\n/* clearfix\r\n.absol-select-table-none-nonselected-items-container::after,\r\n.absol-select-table-none-selected-items-container::after {\r\n content: \"\";\r\n display:table;\r\n clear: both;\r\n} */\r\n\r\n.absol-select-table-selected-items-container .absol-select-table-item-right-container svg.sub-icon,\r\n.absol-select-table-selected-search-items-container .absol-select-table-item-right-container svg.sub-icon {\r\n display: block;\r\n stroke: rgb(243, 61, 61);\r\n fill: rgb(226, 100, 100);\r\n}\r\n\r\n.absol-select-table-nonselected-items-container .absol-select-table-item-right-container svg.add-icon,\r\n.absol-select-table-nonselected-search-items-container .absol-select-table-item-right-container svg.add-icon {\r\n display: block;\r\n fill: rgb(100, 226, 167);\r\n stroke: rgb(61, 185, 243);\r\n}\r\n\r\n.absol-select-table.portrait {}", ""]); /***/ }), /* 147 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(148); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 148 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-span-input {\r\n white-space: pre;\r\n}\r\n\r\n.absol-span-input:focus {\r\n outline-color: rgba(30, 150, 255, 0.3);\r\n outline-width: 1px;\r\n}\r\n\r\n.absol-span-input:empty::before {\r\n content: \" \";\r\n display: inline;\r\n white-space: pre;\r\n}\r\n\r\n.absol-span-input.absol-span-input-empty-minus:empty::before {\r\n content: \"-\";\r\n}", ""]); /***/ }), /* 149 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(150); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 150 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-static-tabbar {\r\n position: relative;\r\n}\r\n\r\n.absol-static-tabbar-button {\r\n height: 2em;\r\n background-color: transparent;\r\n border: none;\r\n font-size: 1em;\r\n padding-left: 0.5em;\r\n padding-right: 0.5em;\r\n color: rgb(104, 104, 104);\r\n}\r\n\r\n.absol-static-tabbar-button:hover {\r\n color: rgb(30, 30, 55);\r\n}\r\n\r\n.absol-static-tabbar-button.active {\r\n color: black;\r\n}\r\n\r\n.absol-static-tabbar-button:focus {\r\n outline: none;\r\n}\r\n\r\n.absol-static-tabbar-button>span {\r\n font-size: 0.7em;\r\n}\r\n\r\n.absol-static-tabbar-hline {\r\n border-bottom: solid 1px rgb(127, 127, 128);\r\n height: 100%;\r\n}\r\n\r\n.absol-static-tabbar-active-box {\r\n position: absolute;\r\n bottom: 0;\r\n top: 0;\r\n left: 0;\r\n width: 0;\r\n transition: left 0.15s, width 0.15s;\r\n padding-left: 0.5em;\r\n padding-right: 0.5em;\r\n box-sizing: border-box;\r\n /* z-index: 1; */\r\n}\r\n\r\n.absol-static-tabbar.dark .absol-static-tabbar-hline{\r\n border-bottom-color: white;\r\n}\r\n\r\n.absol-static-tabbar.dark .absol-static-tabbar-button.active{\r\n color: white;\r\n}\r\n\r\n.absol-static-tabbar.dark .absol-static-tabbar-button {\r\n color: rgb(204, 204, 204);\r\n}", ""]); /***/ }), /* 151 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(152); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 152 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-switch {\r\n position: relative;\r\n display: inline-block;\r\n width: 2.2em;\r\n height: 1.2em;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\n.absol-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: #ccc;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n border-radius: 0.6em;\r\n}\r\n\r\n.absol-switch-slider:before {\r\n position: absolute;\r\n content: \"\";\r\n height: 1em;\r\n width: 1em;\r\n left: 0.1em;\r\n bottom: 0.1em;\r\n background-color: white;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n border-radius: 0.5em;\r\n}\r\n\r\ninput:checked+.absol-switch-slider {\r\n background-color: #2196F3;\r\n}\r\n\r\ninput:focus+.absol-switch-slider {\r\n box-shadow: 0 0 1px #2196F3;\r\n}\r\n\r\ninput:checked+.absol-switch-slider:before {\r\n -webkit-transform: translateX(1em);\r\n -ms-transform: translateX(1em);\r\n transform: translateX(1em);\r\n}\r\n\r\n/* Rounded absol-switch-sliders */\r\n.absol-switch.square .absol-switch-slider {\r\n border-radius: 0;\r\n}\r\n\r\n.absol-switch.square .absol-switch-slider:before {\r\n border-radius: 0;\r\n}\r\n\r\n.absol-switch.disabled {\r\n pointer-events: none;\r\n}\r\n\r\n.absol-switch.disabled .absol-switch-slider:before{\r\n background-color: rgb(234, 234, 234);\r\n}\r\n\r\n.absol-switch.disabled input:checked+.absol-switch-slider {\r\n background-color: rgb(141, 188, 226);\r\n}\r\n\r\n.absol-switch.disabled .absol-switch-slider {\r\n background-color: rgb(171, 171, 171);\r\n}\r\n\r\n", ""]); /***/ }), /* 153 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(154); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 154 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-checkbox-button{\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-checkbox-button .absol-checkbox-icon{\r\n display: block;\r\n}", ""]); /***/ }), /* 155 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(156); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 156 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-table-scroller {\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n.absol-table-scroller-render-space {\r\n position: fixed;\r\n overflow: scroll;\r\n left: 0;\r\n top: 0;\r\n max-width: calc(99vw - 30px);\r\n max-height: calc(99vh - 30px);\r\n opacity: 0;\r\n z-index: -1000;\r\n visibility: hidden;\r\n}\r\n\r\n\r\n.absol-table-scroller-viewport {\r\n box-sizing: border-box;\r\n overflow: scroll;\r\n width: calc(100% + 17px);\r\n height: calc(100% + 17px);\r\n}\r\n\r\n.absol-table-scroller-fixed-viewport {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n z-index: 10;\r\n overflow: hidden;\r\n /*pointer-events: none;*/\r\n}\r\n\r\n.absol-table-scroller-fixed-viewport>table>thead,\r\n.absol-table-scroller-fixed-viewport>table {\r\n border-top-color: transparent !important;\r\n}\r\n\r\n.absol-table-scroller-fixed-hidden {\r\n visibility: hidden !important;\r\n opacity: 0 !important;\r\n border-color: transparent !important;\r\n\r\n}\r\n\r\n.absol-table-scroller-header-hscroller {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n right: 0;\r\n z-index: 9;\r\n overflow: hidden;\r\n /*pointer-events: none;*/\r\n}\r\n\r\n.absol-table-scroller-header-hscroller-viewport {\r\n max-width: 100%;\r\n overflow-x: scroll;\r\n margin-bottom: -17px;/*default*/\r\n}\r\n\r\n.absol-table-scroller-header-hscroller-viewport table {\r\n table-layout: fixed;\r\n}\r\n\r\n\r\n.absol-table-scroller-left-vscroller {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n z-index: 7;\r\n /* width: 200px; */\r\n overflow-x: hidden;\r\n /*pointer-events: none;*/\r\n}\r\n\r\n.absol-table-scroller-left-vscroller-viewport {\r\n max-height: 100%;\r\n overflow-y: scroll;\r\n min-width: calc(100% + 19px);\r\n overflow-x: hidden;\r\n}\r\n\r\n\r\n.absol-table-scroller-head-line,\r\n.absol-table-scroller-left-line {\r\n z-index: 30;\r\n /*pointer-events: none;*/\r\n position: absolute;\r\n}\r\n\r\n.absol-table-scroller-head-line {\r\n left: 0;\r\n width: calc(100% - 6px);\r\n border-bottom: solid 2px rgb(169, 169, 170);\r\n width: 100%;\r\n}\r\n\r\n.absol-table-scroller-left-line {\r\n top: 0;\r\n border-right: solid 2px rgb(169, 169, 170);\r\n height: calc(100% - 6px);\r\n height: 100%;\r\n}\r\n\r\n\r\n.absol-table-scroller.scroll-v .absol-table-scroller-head-line {\r\n width: 100%;\r\n}\r\n\r\n.absol-table-scroller.scroll-h .absol-table-scroller-left-line {\r\n height: 100%;\r\n}\r\n\r\n\r\n.absol-table-scroller:not(.scroll-v) .absol-table-scroller-head-line {\r\n display: none;\r\n}\r\n\r\n.absol-table-scroller:not(.scroll-h) .absol-table-scroller-left-line {\r\n display: none;\r\n}\r\n\r\n\r\n\r\n.absol-table-scroller-vscrollbar-container {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 8px;\r\n bottom: 0;\r\n z-index: 31;\r\n}\r\n\r\n.absol-table-scroller-vscrollbar-container .absol-scrollbar-button {\r\n left: 1px;\r\n right: 1px;\r\n}\r\n\r\n\r\n.absol-table-scroller-vscrollbar-container>div,\r\n.absol-table-scroller-hscrollbar-container>div {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.absol-table-scroller-hscrollbar-container {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n height: 12px;\r\n bottom: 0;\r\n z-index: 31;\r\n}\r\n\r\n\r\n.absol-table-scroller-hscrollbar-container .absol-scrollbar-button {\r\n top: 1px;\r\n bottom: 1px;\r\n}\r\n\r\n\r\n.absol-table-scroller:not(.scroll-v) .absol-table-scroller-vscrollbar-container {\r\n display: none;\r\n}\r\n\r\n.absol-table-scroller:not(.scroll-h) .absol-table-scroller-hscrollbar-container {\r\n display: none;\r\n}\r\n\r\n\r\n.absol-table-scroller.scroll-h .absol-table-scroller-vscrollbar-container {\r\n bottom: 12px;\r\n}\r\n\r\n.absol-table-scroller.scroll-v .absol-table-scroller-hscrollbar-container {\r\n right: 8px;\r\n}\r\n\r\n.absol-table-scroller-fixed-table{\r\n table-layout: fixed;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.absol-table-scroller-fixed-table *,\r\n.absol-table-scroller-header-hscroller *{\r\n box-sizing: border-box;\r\n}", ""]); /***/ }), /* 157 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(158); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 158 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-table-vscroller {\r\n position: relative;\r\n}\r\n\r\n.absol-table-vscroller-head {\r\n position: absolute;\r\n z-index: 2;\r\n width: 300px;\r\n height: 20px;\r\n top: 0;\r\n left: 0;\r\n}\r\n\r\n.absol-table-vscroller-head-line{\r\n position: absolute;\r\n left: 0;\r\n z-index: 3;\r\n pointer-events: none;\r\n border-bottom:solid 2px rgb(169, 169, 170); \r\n width: 100%;\r\n}\r\n\r\n.absol-table-vscroller.scroll-v .absol-table-vscroller-head-line{\r\n width: calc(100% - 7px);\r\n}\r\n\r\n.absol-table-vscroller-viewport {\r\n max-height: 100%;\r\n padding-bottom: 1px;\r\n padding-top: 1px;\r\n overflow-y: auto;\r\n}\r\n\r\n.absol-table-vscroller-viewport > table{\r\n box-sizing: border-box;\r\n width: 100%;\r\n}", ""]); /***/ }), /* 159 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(160); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 160 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-textarea2{\r\n overflow: hidden;\r\n resize: none;\r\n box-sizing: border-box;\r\n height: 1.425em;\r\n} ", ""]); /***/ }), /* 161 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(162); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 162 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-text-clipboard {\r\n opacity: 0;\r\n font-size: 1px;\r\n height: 1px;\r\n width: 1px;\r\n}", ""]); /***/ }), /* 163 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(164); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 164 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".ac-time-input {\r\n box-sizing: border-box;\r\n height: calc(2em + 2px);\r\n border: solid 1px #d6d6d6;\r\n border-radius: 2px;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n font-size: 14px;\r\n outline: none;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n display: inline-block;\r\n vertical-align: middle;\r\n padding-left: 0.35714285714em;\r\n padding-right: 0.35714285714em;\r\n background-color: white;\r\n}\r\n\r\n.ac-time-input-picker-ctn {\r\n position: fixed;\r\n}\r\n\r\n.ac-time-input>span {\r\n font-size: 1em;\r\n line-height: 2em;\r\n}\r\n\r\n.ac-time-input-picker-ctn-hidden {\r\n z-index: -1000;\r\n opacity: 0;\r\n visibility: hidden;\r\n}\r\n\r\n.ac-time-input-picker-ctn-hidden:not(.absol-follower) {\r\n transition: all 0.1s;\r\n}\r\n\r\n.ac-time-input.as-disabled {\r\n color: rgb(102, 102, 102);\r\n pointer-events: none;\r\n}", ""]); /***/ }), /* 165 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(166); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 166 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".ac-time-picker {\r\n /*like chrome-calender*/\r\n display: inline-block;\r\n font-family: Arial;\r\n font-size: 14px;\r\n padding: 0.6em;\r\n border: solid 1px rgb(191, 191, 191);\r\n box-shadow: 1px 1px 2px rgb(240, 240, 240);\r\n z-index: 100;\r\n touch-action: manipulation;\r\n user-select: none;\r\n background-color: rgb(255, 255, 255);\r\n white-space: initial;\r\n}\r\n\r\n\r\n@media screen and (orientation: portrait) {\r\n .ac-time-picker.ac-time-picker-touch {\r\n font-size: 5vw;\r\n }\r\n}\r\n\r\n@media screen and (orientation: landscape) {\r\n .ac-time-picker.ac-time-picker-touch {\r\n font-size: 4vh;\r\n }\r\n}\r\n\r\n\r\n.ac-time-picker:not(.ac-time-picker-clock-mode) .ac-time-picker-set-clock,\r\n.ac-time-picker:not(.ac-time-picker-clock-mode) .ac-time-picker-keyboard-btn,\r\n.ac-time-picker:not(.ac-time-picker-touch) .ac-time-picker-keyboard-btn,\r\n.ac-time-picker:not(.ac-time-picker-time-mode) .ac-time-picker-set-time,\r\n.ac-time-picker:not(.ac-time-picker-time-mode) .ac-time-picker-clock-btn {\r\n display: none;\r\n}\r\n\r\n.ac-time-picker-set-clock-header {\r\n font-size: 2.8em;\r\n text-align: center;\r\n min-width: 4.28571428571em;\r\n font-weight: bold;\r\n\r\n}\r\n\r\n.ac-time-picker-set-clock-header > span {\r\n font-size: inherit;\r\n}\r\n\r\n.ac-time-picker-clock {\r\n width: 12em;\r\n height: 12em;\r\n}\r\n\r\n.ac-time-picker-clock-hour-pm {\r\n fill: rgb(20, 20, 20);\r\n font-size: 0.7em;\r\n}\r\n\r\n\r\n.ac-time-picker-clock-hour-am {\r\n fill: black;\r\n font-size: 0.8em;\r\n}\r\n\r\n.ac-time-picker-clock-minute {\r\n fill: black;\r\n font-size: 0.8em;\r\n}\r\n\r\n\r\n.ac-time-picker-clock-center,\r\n.ac-time-picker-clock-select-circle {\r\n fill: rgb(115, 166, 248);\r\n}\r\n\r\n.ac-time-picker-clock-select-center {\r\n fill: white;\r\n}\r\n\r\n.ac-time-picker-clock-select-line {\r\n stroke-width: 1;\r\n stroke: rgb(115, 166, 248);\r\n}\r\n\r\n\r\n.ac-time-picker-hour,\r\n.ac-time-picker-minute {\r\n outline: none;\r\n}\r\n\r\n.ac-time-picker-edit-hour .ac-time-picker-hour,\r\n.ac-time-picker-edit-minute .ac-time-picker-minute {\r\n color: rgb(62, 125, 189);\r\n}\r\n\r\n.ac-time-picker:not(.ac-time-picker-edit-hour) .ac-time-picker-clock-hour-ctn,\r\n.ac-time-picker:not(.ac-time-picker-edit-minute) .ac-time-picker-clock-minute-ctn {\r\n visibility: hidden;\r\n}\r\n\r\n.ac-time-picker:not(.ac-time-picker-edit-hour):not(.ac-time-picker-edit-minute) .ac-time-picker-clock {\r\n display: none;\r\n}\r\n\r\n.ac-time-picker-hour:empty::before,\r\n.ac-time-picker-minute:empty::before {\r\n content: \"0\";\r\n display: inline;\r\n}\r\n\r\n.ac-time-picker-footer {\r\n display: block;\r\n position: relative;\r\n min-height: 1.5em;\r\n min-width: 12em;\r\n}\r\n\r\n.ac-time-picker-footer-right {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n}\r\n\r\n.ac-time-picker-footer button {\r\n font-size: 1em;\r\n height: 1.5em;\r\n padding-top: 0;\r\n padding-bottom: 0;\r\n border: none;\r\n background-color: transparent;\r\n outline: none;\r\n padding-left: 0.3em;\r\n padding-right: 0.3em;\r\n}\r\n\r\n.ac-time-picker-footer button:hover,\r\n.ac-time-picker-footer button:focus {\r\n background-color: rgba(170, 170, 170, 0.3);\r\n}\r\n\r\n.ac-time-picker-footer > button {\r\n margin-right: 1em;\r\n}\r\n\r\n.ac-time-picker-footer-right > button {\r\n margin-left: 1em;\r\n}\r\n\r\n\r\n.ac-time-picker-footer button .mdi {\r\n font-size: 1.3em;\r\n}\r\n\r\n\r\n/* .ac-time-picker:not(.ac-time-picker-touch) .ac-time-picker-keyboard-btn {\r\n display: none;\r\n} */\r\n\r\n/* keyboard-outline */\r\n\r\n.ac-time-picker-set-time-header {\r\n font-size: 1.4em;\r\n font-weight: bold;\r\n margin-bottom: 1em;\r\n}\r\n\r\n.ac-time-picker-set-time-label {\r\n font-size: 1em;\r\n font-weight: bold;\r\n margin-bottom: 0.3em;\r\n}\r\n\r\n.ac-time-picker-set-time-input-group {\r\n margin-bottom: 0.3em;\r\n font-size: 1em;\r\n white-space: nowrap;\r\n}\r\n\r\n.ac-time-picker-set-time-input-hm > input {\r\n height: 1.2em;\r\n line-height: 1.2em;\r\n width: 2em;\r\n text-align: center;\r\n font-size: 1em;\r\n border-top: none;\r\n border-left: none;\r\n border-right: none;\r\n border-bottom: 1px solid rgb(70, 70, 72);\r\n outline: none;\r\n}\r\n\r\n.ac-time-picker-set-time-input-label-hm {\r\n font-size: 1em;\r\n white-space: nowrap;\r\n\r\n}\r\n\r\n.ac-time-picker-set-time-input-label-hm span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-size: 1em;\r\n\r\n}\r\n\r\n\r\n.ac-time-picker-set-time-input-label-hm > span:first-child {\r\n width: 2em;\r\n}", ""]); /***/ }), /* 167 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(168); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 168 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ":root {\r\n --tool-tip-arrow-pos: 50%;\r\n --tool-tip-background-color: gray;\r\n --tool-tip-text-color: white;\r\n}\r\n\r\n.absol-tooltip {\r\n margin: 0;\r\n position: relative;\r\n box-sizing: border-box;\r\n display: inline-block;\r\n color: var(--tool-tip-text-color);\r\n}\r\n\r\n.absol-tooltip-content {\r\n display: block;\r\n border-radius: 0.25em;\r\n background-color: var(--tool-tip-background-color);\r\n padding: 0.25em 0.5em;\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.absol-tooltip-arrow {\r\n width: 0;\r\n height: 0;\r\n position: absolute;\r\n box-sizing: content-box;\r\n font-size: inherit;\r\n}\r\n\r\n.absol-tooltip.top .absol-tooltip-arrow {\r\n border-left: 0.4em solid transparent;\r\n border-right: 0.3em solid transparent;\r\n\r\n border-top: 0.3em solid var(--tool-tip-background-color);\r\n bottom: 0;\r\n left: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n\r\n.absol-tooltip.top {\r\n padding-bottom: 0.3em;\r\n}\r\n\r\n\r\n.absol-tooltip.bottom .absol-tooltip-arrow {\r\n border-left: 0.3em solid transparent;\r\n border-right: 0.4em solid transparent;\r\n border-bottom: 0.3em solid var(--tool-tip-background-color);\r\n\r\n top: 0;\r\n left: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n.absol-tooltip.bottom {\r\n padding-top: 0.3em;\r\n}\r\n\r\n\r\n.absol-tooltip.left .absol-tooltip-arrow {\r\n border-top: 0.3em solid transparent;\r\n border-bottom: 0.4em solid transparent;\r\n border-left: 0.4em solid var(--tool-tip-background-color);\r\n\r\n right: 0;\r\n top: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n.absol-tooltip.left {\r\n padding-right: 0.4em;\r\n}\r\n\r\n\r\n.absol-tooltip.right .absol-tooltip-arrow {\r\n border-top: 0.4em solid transparent;\r\n border-bottom: 0.4em solid transparent;\r\n border-right: 0.4em solid var(--tool-tip-background-color);\r\n\r\n left: 0;\r\n top: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n.absol-tooltip.ne .absol-tooltip-arrow {\r\n border-top: 0.3em solid transparent;\r\n border-bottom: 0.4em solid transparent;\r\n border-left: 0.4em solid var(--tool-tip-background-color);\r\n bottom: -0.3em;\r\n left: 0;\r\n}\r\n\r\n.absol-tooltip.nw .absol-tooltip-arrow {\r\n border-top: 0.3em solid transparent;\r\n border-bottom: 0.4em solid transparent;\r\n border-right: 0.4em solid var(--tool-tip-background-color);\r\n bottom: -0.3em;\r\n right: 0;\r\n}\r\n\r\n.absol-tooltip.se .absol-tooltip-arrow {\r\n border-top: 0.3em solid transparent;\r\n border-bottom: 0.4em solid transparent;\r\n border-left: 0.4em solid var(--tool-tip-background-color);\r\n top: -0.3em;\r\n left: 0;\r\n}\r\n\r\n.absol-tooltip.sw .absol-tooltip-arrow {\r\n border-top: 0.3em solid transparent;\r\n border-bottom: 0.4em solid transparent;\r\n border-right: 0.4em solid var(--tool-tip-background-color);\r\n top: -0.25em;\r\n right: 0;\r\n}\r\n\r\n.absol-tooltip.right {\r\n padding-left: 0.4em;\r\n}\r\n\r\n\r\n.absol-tooltip-root {\r\n position: relative;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\n.absol-tooltip-root-holder {\r\n position: fixed;\r\n z-index: 100000000;\r\n left: 0;\r\n top: 0;\r\n}", ""]); /***/ }), /* 169 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-tree-list {}\r\n\r\n.absol-tree-list-item {}\r\n\r\n.absol-tree-list-item-parent:hover {\r\n background: #efefef;\r\n cursor: pointer;\r\n}\r\n\r\n.absol-tree-list-item-parent {\r\n padding-left: 0.3em;\r\n padding-right: 0.6em;\r\n position: relative;\r\n}\r\n\r\n.absol-tree-list-item.active>.absol-tree-list-item-parent {\r\n background: #dfdfdf;\r\n}\r\n\r\n.absol-tree-list-item-parent>span {\r\n line-height: 20px;\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-tree-list-item-child {}\r\n\r\n.absol-tree-list-item>.absol-tree-list-item-child:empty {\r\n display: none;\r\n}\r\n\r\n.absol-tree-list-item-desc-container {\r\n right: 0.3em;\r\n top: 0;\r\n bottom: 0;\r\n position: absolute;\r\n}\r\n\r\n.absol-tree-list-item-desc {\r\n font-style: italic;\r\n line-height: 20px;\r\n white-space: nowrap;\r\n margin-left: 1em;\r\n color: rgb(37, 37, 37);\r\n}\r\n\r\n.absol-tree-list-item-desc:empty {\r\n display: none;\r\n}", ""]); /***/ }), /* 170 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(171); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 171 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-selecttreemenu .absol-tree-list-item-desc-container{\r\n right: 30px;\r\n}\r\n\r\n\r\n.absol-selectmenu-holder-item .absol-tree-list-item-parent:hover {\r\n background-color: transparent;\r\n}", ""]); /***/ }), /* 172 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(173); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 173 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-width-height-resizer {\r\n position: relative;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-width-height-resizer-anchor-bot-right {\r\n cursor: nwse-resize;\r\n position: absolute;\r\n z-index: 1;\r\n right: 0;\r\n bottom: 0;\r\n height: 13px;\r\n width: 13px;\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAQUlEQVQoz2NgIBGkpaX9Z2IgA9BWU1pa2n+S/UGSZnRFBDVhU4BXEy4bcGrC5ySsmgj5AUMTMZ4mOehhmhjJ0QkA9TYwPsqIBKMAAAAASUVORK5CYII=');\r\n}\r\n\r\n.absol-width-height-resizer-anchor-bot-left {\r\n cursor: nesw-resize;\r\n position: absolute;\r\n z-index: 1;\r\n left: 0;\r\n bottom: 0;\r\n height: 13px;\r\n width: 13px;\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABCSURBVChTY0hLS/vPQCJggtIkAco0keRMZMVEa0RXSJRGbIoIaoQpIMlGZEmiNRJSiFUjNkGCGrGaRAAwkq6JgQEAnaEwPtyU/MEAAAAASUVORK5CYII=');\r\n}\r\n\r\n.absol-width-height-resizer-anchor-top-right {\r\n cursor: nesw-resize;\r\n position: absolute;\r\n z-index: 1;\r\n right: 0;\r\n top: 0;\r\n height: 13px;\r\n width: 13px;\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABMSURBVChTY0xLS/vPQGsAsoQJygYDdFuJdgUhjTgNwqcQpyYQwKURryYQwKaAoCYQwGUjQYCskGhNIABTTJImGABpQolcYgEZmhgYAEPpMD56IPESAAAAAElFTkSuQmCC')\r\n}\r\n\r\n.absol-width-height-resizer-anchor-top-left {\r\n cursor: nwse-resize;\r\n position: absolute;\r\n z-index: 1;\r\n top: 0;\r\n left: 0;\r\n height: 13px;\r\n width: 13px;\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABNSURBVChTnZFbCgAgCAStw3r/GxQLClaSj/kJckcFBzMvqtKRprwHd6OncRRwN7GfKQFoIS0Ar/gVQGmCYkMpAWgwLYBSWHCPG9GQiDbsRTA+Srvt5gAAAABJRU5ErkJggg==');\r\n}\r\n\r\n.absol-width-height-resizer-content {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n}\r\n\r\n/* .absol-width-height-resizer */", ""]); /***/ }), /* 174 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(175); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 175 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-modal {\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 1000;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-modal.as-hidden{\r\n z-index: -1000;\r\n visibility: hidden;\r\n opacity: 0;\r\n}\r\n\r\n.as-modal.as-center {\r\n text-align: center;\r\n}\r\n\r\n\r\n.as-modal.as-middle::before {\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n width: 0;\r\n}\r\n\r\n.as-modal > .as-modal-content {\r\n display: inline-block;\r\n text-align: initial;\r\n white-space: initial;\r\n}\r\n\r\n/*for content*/\r\n.as-modal.as-middle > .as-modal-content {\r\n vertical-align: middle;\r\n}\r\n", ""]); /***/ }), /* 176 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(177); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 177 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-trackbar {\r\n height: 1.2em;\r\n min-width: 7em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n padding: 0 0.6em;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-trackbar-line {\r\n display: block;\r\n position: relative;\r\n margin-top: 0.4em;\r\n height: 0.4em;\r\n background-color: rgb(200, 200, 200);\r\n -webkit-box-shadow: 0 0 0.2em 0.1em rgb(160, 160, 160) inset;\r\n -moz-box-shadow: 0 0 0.2em 0.1em rgb(160, 160, 160) inset;\r\n box-shadow: 0 0 0.2em 0.1em rgb(160, 160, 160) inset;\r\n border-radius: 0.15em;\r\n cursor: pointer;\r\n}\r\n\r\n.absol-trackbar-button {\r\n position: absolute;\r\n z-index: 1;\r\n top: -0.4em;\r\n /* bottom: -0.4em; */\r\n height: 1.2em;\r\n left: 0;\r\n margin-left: -0.6em;\r\n width: 1.2em;\r\n background: rgb(245, 245, 245);\r\n cursor: pointer;\r\n border-radius: 50%;\r\n border: solid 1px rgb(139, 139, 139);\r\n}\r\n\r\n.absol-trackbar.as-disabled {\r\n pointer-events: none;\r\n}\r\n\r\n.absol-trackbar.as-disabled .absol-trackbar-button {\r\n background: rgb(225, 225, 225);\r\n border: solid 1px rgb(200, 200, 200);\r\n}\r\n\r\n.absol-trackbar.as-disabled .absol-trackbar-line {\r\n background-color: rgb(220, 220, 220);\r\n -webkit-box-shadow: 0 0 0.2em 0.1em rgb(200, 200, 200) inset;\r\n -moz-box-shadow: 0 0 0.2em 0.1em rgb(200, 200, 200) inset;\r\n box-shadow: 0 0 0.2em 0.1em rgb(200, 200, 200) inset;\r\n}", ""]); /***/ }), /* 178 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(179); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 179 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-trackbar-input {\r\n box-sizing: border-box;\r\n display: inline-block;\r\n white-space: nowrap;\r\n position: relative;\r\n min-width: 13.5em;\r\n height: 2em;\r\n}\r\n\r\n.absol-trackbar-input-trackbar-container {\r\n position: absolute;\r\n left: 0;\r\n right: 3.5em;\r\n top: 0.4em;\r\n bottom: 0.4em;\r\n}\r\n\r\n.absol-trackbar-input-trackbar-container .absol-trackbar {\r\n width: 100%;\r\n}\r\n\r\n.absol-trackbar-input-unit-input-container {\r\n position: absolute;\r\n width: 3em;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.absol-trackbar-input-unit-input-container::before{\r\n content: \"\";\r\n display: inline-block;\r\n white-space: nowrap;\r\n height: 100%;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-trackbar-input-unit-input-container .as-flexicon-input {\r\n width: 100%;\r\n vertical-align: middle;\r\n height: 2em;\r\n}\r\n\r\n.absol-trackbar-input.as-disabled {\r\n pointer-events: none;\r\n color: #777777;\r\n\r\n}\r\n\r\n.absol-trackbar-input input{\r\n color: inherit;\r\n}\r\n", ""]); /***/ }), /* 180 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(181); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 181 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-button-range-wrapper {\r\n border-top: 1px solid rgb(209, 209, 213);\r\n border-bottom: 1px solid rgb(209, 209, 213);\r\n}\r\n\r\n.as-button-range {\r\n position: relative;\r\n overflow-y: hidden;\r\n height: var(--height);\r\n box-sizing: border-box;\r\n font-family: Arial, Helvetica, sans-serif;\r\n --underline-left: 0;\r\n --underline-width: 0;\r\n --height: 2em;\r\n}\r\n\r\n.as-button-range-scroller {\r\n font-size: inherit;\r\n height: calc(var(--height) + 17px);\r\n box-sizing: border-box;\r\n overflow-x: scroll;\r\n position: absolute;\r\n top: 0;\r\n left: 0.5em;\r\n right: 0.5em;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-button-range-scroller::after {\r\n content: \"\";\r\n position: absolute;\r\n left: var(--underline-left);\r\n width: var(--underline-width);\r\n height: 0.2em;\r\n top: calc(var(--height) - 0.2em);\r\n background-color: rgb(0, 106, 255);\r\n transition: left 0.2s, width 0.2s;\r\n}\r\n\r\n.as-button-range-left-ctn,\r\n.as-button-range-right-ctn {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.as-button-range-right-ctn::after,\r\n.as-button-range-left-ctn::before {\r\n content: \"\";\r\n height: 100%;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-button-range-left-ctn {\r\n left: 0;\r\n}\r\n\r\n.as-button-range-right-ctn {\r\n right: 0;\r\n}\r\n\r\n.as-button-range-right-btn,\r\n.as-button-range-left-btn {\r\n font-size: inherit;\r\n padding: 0;\r\n margin: 0;\r\n display: inline-block;\r\n vertical-align: middle;\r\n border: none;\r\n outline: none;\r\n color: rgb(0, 106, 266);\r\n background-color: rgba(255, 255, 255, 0.5);\r\n border-radius: 0.5em;\r\n overflow: hidden;\r\n}\r\n\r\n.as-button-range-left-btn {\r\n -webkit-box-shadow: 1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n -moz-box-shadow: 1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n box-shadow: 1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n}\r\n\r\n.as-button-range-right-btn {\r\n -webkit-box-shadow: -1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n -moz-box-shadow: -1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n box-shadow: -1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n}\r\n\r\n.as-button-range-right-btn polygon,\r\n.as-button-range-left-btn polygon {\r\n fill: #2488FF;\r\n}\r\n\r\n.as-button-range-right-btn:disabled,\r\n.as-button-range-left-btn:disabled {\r\n display: none;\r\n}\r\n\r\n.as-button-range-left-btn > svg,\r\n.as-button-range-right-btn > svg {\r\n width: 1.25em;\r\n height: 1.25em;\r\n margin-left: -0.25em;\r\n margin-right: -0.25em;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-button-range-item {\r\n outline: none;\r\n font-size: inherit;\r\n padding: 0 0.5em;\r\n margin: 0;\r\n height: var(--height);\r\n border: none;\r\n background-color: transparent;\r\n color: black;\r\n}\r\n\r\n.as-button-range-item.as-active {\r\n color: rgb(87, 157, 255);\r\n}", ""]); /***/ }), /* 182 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(183); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 183 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-drop-zone {\r\n}", ""]); /***/ }), /* 184 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(185); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 185 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "label.as-radio-input {\r\n display: inline-block;\r\n position: relative;\r\n width: calc(1em + 2px);\r\n height: calc(1em + 2px);\r\n cursor: pointer;\r\n font-size: inherit;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n vertical-align: middle;\r\n border-radius: 50%;\r\n border: 1px solid var(--candy-border-color);\r\n text-align: center;\r\n background-color: white;\r\n text-align: center;\r\n white-space: nowrap;\r\n}\r\n\r\nlabel.as-radio-input:hover {\r\n background-color: var(--candy-hover-background-color);\r\n}\r\n\r\nlabel.as-radio-input::after{\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\n.as-radio-input .as-radio-input-check-mark {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: 0.5em;\r\n height: 0.5em;\r\n background-color: #606060;\r\n font-size: inherit;\r\n border-radius: 50%;\r\n}\r\n\r\n.as-radio-input input.as-radio-input-value {\r\n font-size: inherit;\r\n position: absolute;\r\n right: 100%;\r\n top: 0;\r\n opacity: 0.0;\r\n}\r\n\r\ninput.as-radio-input-value:not(:checked) ~ .as-radio-input-check-mark {\r\n display: none;\r\n}\r\n\r\n\r\nlabel.as-radio-input.as-disabled,\r\nlabel.as-radio-input.as-disabled:hover {\r\n border-color: #929292;\r\n background-color: #ebebe4;\r\n}", ""]); /***/ }), /* 186 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(187); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 187 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-onscreen-widget {\r\n --client-width: 0px;\r\n --client-height: 0px;\r\n --cx: 0.9;\r\n --cy: 0.9;\r\n position: fixed;\r\n z-index: 1000000;\r\n left: calc((100vw - var(--client-width) - 4px) * var(--cx) + 2px);\r\n top: calc((100vh - var(--client-height) - 4px) * var(--cy) + 2px);\r\n touch-action: none;\r\n user-select: none;\r\n}\r\n\r\n", ""]); /***/ }), /* 188 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(189); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 189 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-ribbon-split-button {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 30px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-ribbon-split-button div,\r\n.as-ribbon-split-button span,\r\n.as-ribbon-split-button button {\r\n font-weight: inherit;\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-ribbon-split-button-content {\r\n height: 100%;\r\n}\r\n\r\n.as-ribbon-split-button-content > button {\r\n font-family: inherit;\r\n border-radius: 0;\r\n background-color: transparent;\r\n height: 100%;\r\n margin-right: 0;\r\n outline: none;\r\n box-sizing: border-box;\r\n border-style: solid;\r\n border-color: transparent;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-ribbon-split-button-content > button:hover {\r\n background-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-split-button-content > button:active {\r\n background-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n\r\n.as-ribbon-split-button-primary {\r\n font-size: inherit;\r\n padding-left: 0.5em;\r\n padding-right: 0;\r\n border-width: 1px 0px 1px 1px;\r\n}\r\n\r\n.as-ribbon-split-button-extend {\r\n color: rgb(37, 36, 35);\r\n width: 16px;\r\n padding: 0;\r\n text-align: center;\r\n font-size: 20px;\r\n border-width: 1px 1px 1px 0px;\r\n}\r\n\r\n.as-ribbon-split-button-extend span:before {\r\n margin-left: -3px;\r\n}\r\n\r\n\r\n.as-ribbon-split-button:active:hover .as-ribbon-split-button-content > button,\r\n.as-ribbon-split-button:active .as-ribbon-split-button-content > button {\r\n border-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n.as-ribbon-split-button:hover .as-ribbon-split-button-content > button {\r\n border-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-split-button-icon {\r\n font-size: 1.2em;\r\n margin-right: 0.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\nimg.as-ribbon-split-button-icon,\r\nsvg.as-ribbon-split-button-icon {\r\n width: 1.2em;\r\n height: 1.2em;\r\n}\r\n\r\n.as-ribbon-split-button-text {\r\n vertical-align: middle;\r\n font-size: inherit;\r\n}\r\n\r\n.as-ribbon-split-button.as-no-dropdown .as-ribbon-split-button-extend {\r\n display: none;\r\n}\r\n\r\n.as-ribbon-split-button.as-no-dropdown .as-ribbon-split-button-primary {\r\n padding-right: 5px;\r\n border-width: 1px 1px 1px 1px;\r\n}", ""]); /***/ }), /* 190 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(191); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 191 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-ribbon-button {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 30px;\r\n padding-left: 0.5em;\r\n padding-right: 0.5em;\r\n\r\n font-family: Arial, Helvetica, sans-serif;\r\n box-sizing: border-box;\r\n border-radius: 0;\r\n outline: none;\r\n border-style: solid;\r\n border-color: transparent;\r\n border-width: 1px 1px 1px 1px;\r\n background-color: transparent;\r\n}\r\n\r\n.as-ribbon-button div,\r\n.as-ribbon-button span {\r\n font-weight: inherit;\r\n font-size: inherit;\r\n}\r\n\r\n.as-ribbon-button:hover {\r\n background-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-button:active {\r\n background-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n\r\n\r\n.as-ribbon-split-button:active:hover .as-ribbon-split-button-content > button,\r\n.as-ribbon-split-button:active .as-ribbon-split-button-content > button {\r\n border-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n.as-ribbon-split-button:hover .as-ribbon-split-button-content > button {\r\n border-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-button-icon {\r\n font-size: 1.2em;\r\n margin-right: 0.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\nimg.as-ribbon-button-icon,\r\nsvg.as-ribbon-button-icon {\r\n width: 1.2em;\r\n height: 1.2em;\r\n}\r\n\r\n.as-ribbon-button-text {\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-size: inherit;\r\n}\r\n\r\n.as-ribbon-button.as-no-dropdown .mdi.mdi-chevron-down {\r\n display: none;\r\n}", ""]); /***/ }), /* 192 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(193); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 193 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-time-select-input {\r\n display: inline-block;\r\n position: relative;\r\n height: 30px;\r\n border: solid 1px #d6d6d6;\r\n border-radius: 2px;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n font-size: 14px;\r\n outline: none;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n white-space: nowrap;\r\n padding-right: 30px;\r\n --list-min-width: unset;\r\n width: calc(var(--list-min-width) + 30px);\r\n min-width: calc(var(--list-min-width) + 30px);\r\n}\r\n\r\n.as-time-select-input.as-disabled {\r\n pointer-events: none;\r\n background-color: #ebebe4;\r\n}\r\n\r\n.as-time-select-input-text {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n width: 100%;\r\n outline: none;\r\n border: none;\r\n box-sizing: border-box;\r\n padding-left: 10px;\r\n padding-right: 0;\r\n background-color: transparent;\r\n}", ""]); /***/ }), /* 194 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(195); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 195 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-snackbar {\r\n visibility: hidden;\r\n min-width: 250px;\r\n margin-left: -125px;\r\n background-color: #333;\r\n color: #fff;\r\n text-align: center;\r\n border-radius: 2px;\r\n padding: 16px;\r\n position: fixed;\r\n z-index: 1;\r\n left: 50%;\r\n bottom: 0;\r\n font-size: 17px;\r\n opacity: 0;\r\n transition: opacity 0.25s ease-in, bottom 0.25s ease-in;\r\n\r\n}\r\n\r\n.as-snackbar.as-show {\r\n visibility: visible;\r\n bottom: 30px;\r\n opacity: 1;\r\n}\r\n\r\n.as-snackbar.as-hiding{\r\n transition: opacity 0.5s ease-out, bottom 0.5s ease-out;\r\n visibility: visible;\r\n bottom: 0;\r\n opacity: 0;\r\n}\r\n\r\n", ""]); /***/ }), /* 196 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(197); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 197 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ":root {\r\n --multi-select-menu-max-height: none;\r\n}\r\n\r\n.as-multi-select-menu {\r\n --list-min-width: 40px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n min-height: var(--select-box-min-height);\r\n min-width: var(--list-min-width);\r\n border: solid 1px #d6d6d6;\r\n border-radius: 3px;\r\n box-sizing: border-box;\r\n outline: none;\r\n background-color: white;\r\n padding-right: 45px;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn {\r\n display: block;\r\n max-height: var(--multi-select-menu-max-height);\r\n overflow-y: auto;\r\n}\r\n\r\n\r\n.as-multi-select-menu-toggle-btn {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 30px;\r\n pointer-events: none;\r\n border: none;\r\n background-color: transparent;\r\n}\r\n\r\n.as-multi-select-menu-toggle-btn svg.dropdown {\r\n width: 10px;\r\n height: 10px;\r\n fill: #929292;\r\n}\r\n\r\n.as-multi-select-menu:hover svg.dropdown {\r\n fill: black;\r\n}\r\n\r\n.as-multi-select-menu.as-disable-click-to-focus .as-multi-select-menu-toggle-btn{\r\n display: none;\r\n}\r\n\r\n.as-multi-select-menu .absol-selectbox-item {\r\n margin: calc((var(--select-box-min-height) - 2px - var(--select-box-item-height)) / 2) 2px;\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-item-focusable .absol-selectbox-item.as-active{\r\n background-color: var(--select-box-focus-item-color);\r\n}\r\n\r\n.as-multi-select-menu.as-disabled {\r\n pointer-events: none;\r\n background-color: #ebebe4;\r\n}", ""]); /***/ }), /* 198 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(199); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 199 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-countdown-clock {\r\n width: 7em;\r\n height: 7em;\r\n border-radius: 50%;\r\n position: relative;\r\n display:inline-block;\r\n font-family: Consolas;\r\n}\r\n\r\n.as-countdown-clock-border-wrapper{\r\n pointer-events:none;\r\n position: absolute;\r\n box-sizing: border-box;\r\n left: 0.2em;\r\n right: 0.2em;\r\n top: 0.2em;\r\n bottom: 0.2em;\r\n filter: drop-shadow(0 0px 1px rgb(100, 200, 255));\r\n}\r\n\r\n.as-countdown-clock-border {\r\n width: 100%;\r\n height: 100%;\r\n border: solid 0.2em rgb(100, 200, 255);\r\n border-radius: 50%;\r\n object-fit: cover;\r\n}\r\n\r\n.as-countdown-clock-text {\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform:translate(-50%, -50%);\r\n font-size: 2em;\r\n}\r\n\r\n.as-countdown-clock div,\r\n.as-countdown-clock span\r\n{\r\n font-family: inherit;\r\n}", ""]); /***/ }), /* 200 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(201); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 201 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-toast-list {\r\n position: fixed;\r\n z-index: 1100000000;\r\n width: 355px;\r\n max-height: calc(100vh - 20px);\r\n overflow-y: auto;\r\n}\r\n\r\n.as-toast-list > .as-toast {\r\n box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.35);\r\n}\r\n\r\n\r\n.as-toast-list.as-se {\r\n bottom: 10px;\r\n right: 10px;\r\n}\r\n\r\n.as-toast-list.as-sw {\r\n bottom: 10px;\r\n left: 10px;\r\n}\r\n\r\n.as-toast-list.as-ne {\r\n top: 10px;\r\n right: 10px;\r\n}\r\n\r\n.as-toast-list.as-nw {\r\n top: 10px;\r\n left: 10px;\r\n}\r\n\r\n\r\n.as-toast-list:empty {\r\n visibility: hidden;\r\n}\r\n\r\n.as-toast-list.as-ne > .as-toast,\r\n.as-toast-list.as-nw > .as-toast {\r\n margin-bottom: 5px;\r\n}\r\n\r\n.as-toast-list.as-se > .as-toast,\r\n.as-toast-list.as-sw > .as-toast {\r\n margin-top: 5px;\r\n}\r\n\r\n\r\n.as-toast {\r\n display: block;\r\n max-width: 350px;\r\n overflow: hidden;\r\n background-color: white;\r\n background-clip: padding-box;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n font-family: Roboto, sans-serif;\r\n font-size: 14px;\r\n}\r\n\r\n.as-toast-header {\r\n display: flex;\r\n display: -ms-flex;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n padding: 0.25em 0.75em;\r\n color: #6c757d;\r\n background-clip: padding-box;\r\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n.as-toast-header strong {\r\n text-align: left;\r\n margin-right: auto;\r\n}\r\n\r\n.as-toast-variant-color {\r\n margin-right: 0.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n background-color: var(--variant-color-primary);\r\n width: 1.25em;\r\n height: 1.25em;\r\n}\r\n\r\n\r\n.as-toast-close-btn {\r\n padding: 0;\r\n background-color: transparent;\r\n border: none;\r\n outline: none;\r\n color: inherit;\r\n margin-left: 0.25em;\r\n margin-bottom: 0.25em;\r\n}\r\n\r\n.as-toast-close-btn:hover {\r\n color: black;\r\n}\r\n\r\n.as-toast-close-btn span {\r\n font-size: 1.5em;\r\n text-shadow: 0 1px 0 currentColor;\r\n}\r\n\r\n.as-toast-body {\r\n\r\n}\r\n\r\n.as-toast-message {\r\n padding: 0.75em;\r\n}\r\n\r\n\r\n.as-toast.as-not-appeared {\r\n opacity: 0;\r\n transition: opacity 0.2s;\r\n}\r\n\r\n.as-toast.as-not-appeared.as-appearing {\r\n opacity: 1;\r\n}\r\n\r\n.as-toast.as-appeared {\r\n transition: opacity 0.5s;\r\n opacity: 1;\r\n}\r\n\r\n.as-toast.as-disappearing {\r\n opacity: 0;\r\n}\r\n\r\n.as-toast.as-variant-sticky-note {\r\n background-color: #ffff88;\r\n}\r\n\r\n\r\n.as-toast.as-variant-sticky-note .as-toast-variant-color,\r\n.as-toast.as-variant-background .as-toast-variant-color {\r\n display: none;\r\n}\r\n\r\n.as-toast.as-variant-sticky-note .as-toast-title {\r\n color: #1e1ec8;\r\n}", ""]); /***/ }), /* 202 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(203); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 203 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ":root {\r\n --variant-color-primary: #007bff;\r\n --variant-color-secondary: #6c757d;\r\n --variant-color-success: #28a745;\r\n --variant-color-warning: #ffc107;\r\n --variant-color-danger: #dc3545;\r\n --variant-color-info: #17a2b8;\r\n --variant-color-light: #f8f9fa;\r\n --variant-color-dark: #343a40;\r\n --variant-color-error: #ff4052;\r\n --variant-color-link: #007bff;\r\n --variant-color-note: #ffff88;\r\n\r\n\r\n --variant-medium-contract-color-primary: #e2edd5;\r\n --variant-medium-contract-color-secondary: #fca75b;\r\n --variant-medium-contract-color-success: #fce8e8;\r\n --variant-medium-contract-color-info: #fcf5e8;\r\n --variant-medium-contract-color-warning: #5e5a75;\r\n --variant-medium-contract-color-error:#e0dfce;\r\n --variant-medium-contract-color-danger: #e5e8d5;\r\n --variant-medium-contract-color-light: #7a5b3c;\r\n --variant-medium-contract-color-dark: #bf7d3b;\r\n --variant-medium-contract-color-link: #dde8c9;\r\n --variant-medium-contract-color-note: #1e1ec8;\r\n}", ""]); /***/ }), /* 204 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(205); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 205 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-emoji-picker-tooltip {\r\n --tool-tip-background-color: white;\r\n filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.5));\r\n}\r\n\r\n.as-emoji-picker-tooltip .absol-tooltip-content {\r\n display: block;\r\n padding: 0;\r\n box-sizing: border-box;\r\n position: relative;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn,\r\n.as-emoji-picker-tooltip-right-btn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 60px;\r\n width: 40px;\r\n font-size: 25px;\r\n padding: 0;\r\n background-color: transparent;\r\n border: none;\r\n color: rgb(155, 155, 175);\r\n outline: none;\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn:hover,\r\n.as-emoji-picker-tooltip-right-btn:hover {\r\n background-color: rgba(156, 156, 156, 0.15);\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn:active,\r\n.as-emoji-picker-tooltip-right-btn:active {\r\n background-color: rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn:disabled,\r\n.as-emoji-picker-tooltip-right-btn:disabled {\r\n pointer-events: none;\r\n color: rgb(230, 230, 235);\r\n}\r\n\r\n.as-emoji-picker-tooltip-scroller {\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n width: 360px;\r\n height: 60px;\r\n overflow: hidden;\r\n}\r\n\r\n.as-emoji-picker-tooltip-icon-list {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n white-space: nowrap;\r\n}\r\n\r\n\r\n.as-emoji-picker-tooltip:not(.as-scrolling) .as-emoji-picker-tooltip-icon-list {\r\n transition: left 0.5s;\r\n}\r\n\r\n.as-emoji-picker-tooltip-icon-btn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 60px;\r\n width: 60px;\r\n padding: 0;\r\n border: none;\r\n outline: none;\r\n background-color: transparent;\r\n}\r\n\r\n\r\n.as-emoji-picker-tooltip-icon {\r\n transition: width 0.3s, height 0.3s;\r\n width: 35px;\r\n height: 35px;\r\n}\r\n\r\n.as-emoji-picker-tooltip-icon-btn:hover .as-emoji-picker-tooltip-icon {\r\n width: 45px;\r\n height: 45px;\r\n}\r\n\r\n.as-emoji-picker-tooltip-remove-btn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 60px;\r\n width: 60px;\r\n padding: 0;\r\n border: none;\r\n outline: none;\r\n background-color: transparent;\r\n font-size: 40px;\r\n color: rgb(185, 185, 185);\r\n}\r\n\r\n.as-emoji-picker-tooltip-remove-btn:hover {\r\n color: rgb(255, 30, 30);\r\n}\r\n\r\n\r\n.as-emoji-picker-tooltip:not(.as-mobile) .as-emoji-picker-tooltip-page-indicator {\r\n display: none;\r\n}\r\n\r\n.as-emoji-picker-tooltip.as-mobile .as-emoji-picker-tooltip-right-btn,\r\n.as-emoji-picker-tooltip.as-mobile .as-emoji-picker-tooltip-left-btn {\r\n display: none;\r\n}\r\n\r\n\r\n@media (max-width: 410px) and (min-width: 310px) {\r\n .as-emoji-picker-tooltip-left-btn,\r\n .as-emoji-picker-tooltip-right-btn {\r\n height: 36px;\r\n width: 24px;\r\n font-size: 15px;\r\n }\r\n\r\n .as-emoji-picker-tooltip-scroller {\r\n width: 216px;\r\n height: 36px;\r\n }\r\n\r\n .as-emoji-picker-tooltip-icon-btn {\r\n height: 36px;\r\n width: 36px;\r\n }\r\n\r\n\r\n .as-emoji-picker-tooltip-icon {\r\n width: 21px;\r\n height: 21px;\r\n }\r\n\r\n .as-emoji-picker-tooltip-icon-btn:hover .as-emoji-picker-tooltip-icon {\r\n width: 27px;\r\n height: 27px;\r\n }\r\n\r\n .as-emoji-picker-tooltip-remove-btn {\r\n height: 36px;\r\n width: 36px;\r\n font-size: 24px;\r\n }\r\n}\r\n\r\n@media (max-width: 510px) and (min-width: 410px) {\r\n .as-emoji-picker-tooltip-left-btn,\r\n .as-emoji-picker-tooltip-right-btn {\r\n height: 48px;\r\n width: 32px;\r\n font-size: 20px;\r\n }\r\n\r\n\r\n .as-emoji-picker-tooltip-scroller {\r\n width: 288px;\r\n height: 48px;\r\n }\r\n\r\n\r\n .as-emoji-picker-tooltip-icon-btn {\r\n height: 48px;\r\n width: 48px;\r\n }\r\n\r\n\r\n .as-emoji-picker-tooltip-icon {\r\n width: 28px;\r\n height: 28px;\r\n }\r\n\r\n .as-emoji-picker-tooltip-icon-btn:hover .as-emoji-picker-tooltip-icon {\r\n width: 36px;\r\n height: 36px;\r\n }\r\n\r\n .as-emoji-picker-tooltip-remove-btn {\r\n height: 48px;\r\n width: 48px;\r\n font-size: 32px;\r\n }\r\n}", ""]); /***/ }), /* 206 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(207); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 207 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-page-indicator {\r\n text-align: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-page-indicator::before{\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\n.as-page-indicator-item {\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-align: center;\r\n font-size: inherit;\r\n width: 1.5em;\r\n padding: 0;\r\n border: 0;\r\n background-color: transparent;\r\n}\r\n\r\n\r\n\r\n.as-page-indicator-item::before {\r\n content: \"\";\r\n display: inline-block;\r\n height: 0.5em;\r\n width: 0.5em;\r\n transition: width 0.25s, height 0.25s, color 0.25s;\r\n border-radius: 50%;\r\n background-color: rgb(196, 196, 196);\r\n font-size: inherit;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-page-indicator-item.as-active::before{\r\n width: 0.75em;\r\n height: 0.75em;\r\n background-color: var(--variant-color-primary);\r\n\r\n}", ""]); /***/ }), /* 208 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(209); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 209 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-emoji-counter {\r\n display: inline-block;\r\n vertical-align: middle;\r\n color: rgb(38, 141, 145);\r\n box-sizing: border-box;\r\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2);\r\n height: 30px;\r\n text-align: center;\r\n min-height: 30px;\r\n padding: 0 8px;\r\n border-radius: 15px;\r\n font-size: 14px;\r\n background-color: white;\r\n outline: none;\r\n}\r\n\r\n.as-emoji-counter::before {\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\n.as-emoji-counter-sprite {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: 18px;\r\n height: 18px;\r\n}\r\n\r\n.as-emoji-counter-num {\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n margin-left: 0.2em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-size: inherit;\r\n color: inherit;\r\n cursor: default;\r\n}\r\n\r\n.as-emoji-counter-num:empty {\r\n display: none;\r\n}\r\n\r\n.as-emoji-counter.as-zero {\r\n background-color: rgba(220, 220, 220);\r\n}\r\n\r\n.as-emoji-counter + .as-emoji-counter {\r\n margin-left: 0.3em;\r\n}", ""]); /***/ }), /* 210 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(211); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 211 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-emoji-user-list-tooltip {\r\n --tool-tip-background-color: white;\r\n filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.5));\r\n text-align: left;\r\n}\r\n\r\n\r\n.as-emoji-user-list-tooltip-emoji {\r\n position: absolute;\r\n width: 60px;\r\n height: 60px;\r\n top: -30px;\r\n left: calc(50% - 30px);\r\n z-index: 2;\r\n\r\n}\r\n\r\n.as-emoji-user-list-tooltip .absol-tooltip-content {\r\n min-height: 60px;\r\n min-width: 120px;\r\n padding-top: 25px;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-user{\r\n padding: 3px 10px 3px 0 ;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-user.as-clickable{\r\n cursor: pointer;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-avatar {\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 50%;\r\n background-size: cover;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-name {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-left: 10px;\r\n color: rgb(70, 70, 72);\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}", ""]); /***/ }), /* 212 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(213); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 213 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-rotated-text {\r\n\r\n}\r\n\r\n.as-rotated-text::after {\r\n content: \"o\";\r\n color: transparent;\r\n display: inline;\r\n}\r\n\r\n.as-rotated-text-content {\r\n transform: rotate(0deg);\r\n transform-origin: 0.3em 50%;\r\n display: block;\r\n zoom: 1.001;\r\n}\r\n\r\n\r\n.as-rotated-text-anchor{\r\n position: fixed;\r\n z-index: 1000;\r\n}\r\n\r\n.as-rotated-text,.as-rotated-text-anchor, .as-rotated-text-content{\r\n font: inherit;\r\n}", ""]); /***/ }), /* 214 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(215); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 215 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-vertical-tree-diagram {\r\n --node-name-max-width: 200px;\r\n}\r\n\r\n\r\n.as-vertical-tree-diagram-node {\r\n\r\n}\r\n\r\n.template-ctn {\r\n display: none;\r\n}\r\n\r\n.as-vertical-tree-diagram-node, .as-vertical-tree-diagram-node * {\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-vertical-tree-diagram-node {\r\n display: inline-block;\r\n vertical-align: top;\r\n position: relative;\r\n background: white;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:not(:first-child) {\r\n margin-left: 10px;\r\n}\r\n\r\n.as-vertical-tree-diagram-node-name-ctn {\r\n text-align: center;\r\n padding-bottom: 9px;\r\n}\r\n\r\n.as-vertical-tree-diagram-node-name {\r\n display: inline-block;\r\n padding: 5px;\r\n border: 1px solid #333;\r\n position: relative;\r\n white-space: normal;\r\n max-width: var(--node-name-max-width);\r\n}\r\n\r\n.as-vertical-tree-diagram-node.as-has-child > .as-vertical-tree-diagram-node-name-ctn .as-vertical-tree-diagram-node-name::before {\r\n content: \"\";\r\n position: absolute;\r\n height: 10px;\r\n left: 50%;\r\n top: 100%;\r\n border-left: 1px solid #333;\r\n}\r\n\r\n.as-vertical-tree-diagram-node.as-has-child.as-has-1-child > .as-vertical-tree-diagram-node-name-ctn .as-vertical-tree-diagram-node-name::before {\r\n height: 20px;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn {\r\n padding-top: 10px;\r\n\r\n}\r\n\r\n.as-vertical-tree-diagram-node:not(.as-has-1-child) > .as-vertical-tree-diagram-child-ctn {\r\n border-top: 1px solid #333;\r\n}\r\n\r\n.as-vertical-tree-diagram-node:not(.as-has-child) > .as-vertical-tree-diagram-child-ctn {\r\n display: none;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node::before {\r\n content: \"\";\r\n position: absolute;\r\n z-index: 1;\r\n left: 50%;\r\n bottom: 100%;\r\n height: 10px;\r\n border-left: 1px solid black;\r\n}\r\n\r\n.as-vertical-tree-diagram-node.as-has-1-child > .as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node::before,\r\n.as-vertical-tree-diagram-node.as-has-1-child > .as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node::after {\r\n display: none;\r\n}\r\n\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:last-child::before {\r\n left: unset;\r\n right: 50%;\r\n}\r\n\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:first-child::after {\r\n content: \"\";\r\n position: absolute;\r\n z-index: 2;\r\n right: 50%;\r\n left: 0;\r\n bottom: 100%;\r\n height: 11px;\r\n background-color: white;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:last-child::after {\r\n content: \"\";\r\n position: absolute;\r\n z-index: 2;\r\n left: 50%;\r\n right: 0;\r\n bottom: 100%;\r\n height: 11px;\r\n background-color: white;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:first-child:last-child::after {\r\n display: none;\r\n}", ""]); /***/ }), /* 216 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(217); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 217 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-token-field {\r\n font-size: 14px;\r\n border: 1px solid #dddddd;\r\n}\r\n\r\n.as-token-field-input-text {\r\n font: inherit;\r\n padding: 0;\r\n box-sizing: border-box;\r\n min-width: 60px;\r\n border: none;\r\n outline: none;\r\n height: var(--select-box-item-height);\r\n line-height: var(--select-box-item-height);\r\n vertical-align: top;\r\n margin-top: 2px;\r\n}\r\n\r\n.absol-selectbox-item.as-token-field-item {\r\n font: inherit;\r\n margin: 2px;\r\n outline: none;\r\n}\r\n\r\n.as-token-field-item:focus {\r\n background-color: var(--select-box-focus-item-color);\r\n}\r\n", ""]); /***/ }), /* 218 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(219); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 219 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-relative-layout {\r\n position: relative;\r\n}\r\n\r\n\r\n\r\n\r\n.as-relative-anchor-box {\r\n pointer-events: none;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n.as-relative-layout>.as-relative-anchor-box.as-halign-fixed>.as-base-component,\r\n.as-relative-layout>.as-relative-anchor-box.as-halign-fixed>.as-align-box,\r\n.as-relative-layout>.as-relative-anchor-box.as-halign-fixed>.as-align-box>.as-align-box-cell>.as-base-component {\r\n width: 100%;\r\n}\r\n\r\n\r\n\r\n.as-relative-layout>.as-relative-anchor-box.as-halign-center>.as-base-component {\r\n display: inline-block;\r\n}\r\n\r\n.as-relative-layout>.as-relative-anchor-box.as-halign-center>table.as-base-component {\r\n display: inline-table;\r\n}\r\n\r\n/*\r\n top: set\r\n height: auto | set\r\n bottom: unset\r\n*/\r\n.as-relative-layout>.as-relative-anchor-box.as-valign-top {\r\n top: 0;\r\n}\r\n\r\n\r\n/*\r\n bottom: set\r\n height: auto | set\r\n top: unset\r\n*/\r\n.as-relative-layout>.as-relative-anchor-box.as-valign-bottom {\r\n bottom: 0;\r\n}\r\n\r\n\r\n.as-relative-layout>.as-relative-anchor-box.as-valign-fixed>* {\r\n height: 100%;\r\n}\r\n\r\n\r\n.as-relative-layout>.as-relative-anchor-box.as-valign-center {\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n.as-relative-layout>.as-relative-anchor-box.as-valign-center.as-halign-center>.as-align-box {\r\n width: 100%;\r\n}\r\n\r\n\r\n.as-base-component {\r\n pointer-events: all;\r\n box-sizing: border-box;\r\n text-align: left;\r\n}\r\n\r\n.as-base-component textarea {\r\n resize: none;\r\n font-style: inherit;\r\n font-size: inherit;\r\n font-weight: inherit;\r\n color: inherit;\r\n font-family: inherit;\r\n}\r\n\r\n.as-component-content-scaleless,\r\n.as-relative-layout>.as-relative-anchor-box.as-halign-center>.as-component-content-scaleless {\r\n display: inline-table;\r\n}\r\n\r\n.as-component-content-scaleless-cell {\r\n display: table-cell;\r\n width: 100%;\r\n font-style: inherit;\r\n font-size: inherit;\r\n font-weight: inherit;\r\n color: inherit;\r\n font-family: inherit;\r\n}\r\n\r\n.as-component-content-scaleless.as-align-left-top>.as-component-content-scaleless-cell {\r\n text-align: left;\r\n vertical-align: top;\r\n}\r\n\r\n.as-component-content-scaleless.as-align-right-top>.as-component-content-scaleless-cell {\r\n text-align: right;\r\n vertical-align: top;\r\n}\r\n\r\n.as-component-content-scaleless.as-align-center-top>.as-component-content-scaleless-cell {\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n\r\n\r\n.as-component-content-scaleless.as-align-left-center>.as-component-content-scaleless-cell {\r\n text-align: left;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-component-content-scaleless.as-align-right-center>.as-component-content-scaleless-cell {\r\n text-align: right;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-component-content-scaleless.as-align-center-center>.as-component-content-scaleless-cell {\r\n text-align: center;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n\r\n\r\n.as-component-content-scaleless.as-align-left-bottom>.as-component-content-scaleless-cell {\r\n text-align: left;\r\n vertical-align: bottom;\r\n}\r\n\r\n.as-component-content-scaleless.as-align-right-bottom>.as-component-content-scaleless-cell {\r\n text-align: right;\r\n vertical-align: bottom;\r\n}\r\n\r\n.as-component-content-scaleless.as-align-center-bottom>.as-component-content-scaleless-cell {\r\n text-align: center;\r\n vertical-align: bottom;\r\n}\r\n\r\n.as-component-content-scaleless-cell {\r\n font-style: inherit;\r\n font-size: inherit;\r\n font-weight: inherit;\r\n color: inherit;\r\n font-family: inherit;\r\n}\r\n\r\n\r\n\r\n.as-component-content-scaleless-cell>div {\r\n display: inline-block;\r\n font-style: inherit;\r\n font-size: inherit;\r\n font-weight: inherit;\r\n color: inherit;\r\n font-family: inherit;\r\n}\r\n\r\n.as-base-component label {\r\n font-style: inherit;\r\n font-size: inherit;\r\n font-weight: inherit;\r\n color: inherit;\r\n font-family: inherit;\r\n}\r\n\r\n.as-linear-layout::before {\r\n content: \"\";\r\n display: block;\r\n height: 1px;\r\n margin-bottom: -1px;\r\n overflow-x: visible;\r\n}\r\n\r\n\r\n\r\n", ""]); /***/ }), /* 220 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(221); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 221 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-layout-editor {\r\n position: relative;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-layout-editor-header {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 3;\r\n}\r\n\r\n.as-layout-editor-quickpath-container{\r\n padding-left: 0.5em;\r\n\r\n}\r\n\r\n.as-layout-editor-cmd-tool-container {\r\n border-bottom: solid 1px #dddddd;\r\n}\r\n\r\n.as-layout-editor-cmd-tool-container:empty,\r\n.as-layout-editor-property-container:empty {\r\n display: none;\r\n}\r\n\r\n\r\n\r\n.as-layout-editor-property-container {\r\n position: absolute;\r\n right: 0;\r\n bottom: 0;\r\n top: 0;\r\n border-left: solid 1px #dddddd;\r\n\r\n}\r\n\r\n.as-layout-editor-measure-container {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n}\r\n\r\n.as-layout-editor-v-align-line,\r\n.as-layout-editor-h-align-line {\r\n position: absolute;\r\n\r\n}\r\n\r\n\r\n.as-layout-editor-h-align-line {\r\n left: 0;\r\n right: 0;\r\n border-top: dashed 1px rgba(59, 154, 209, 0.753);\r\n}\r\n\r\n.as-layout-editor-v-align-line {\r\n top: 0;\r\n bottom: 0;\r\n border-left: dashed 1px rgba(59, 154, 209, 0.753);\r\n}\r\n\r\n\r\n\r\n.as-layout-editor-space-container {\r\n position: absolute;\r\n top: 1.5em;\r\n left: 1.5em;\r\n right: 0;\r\n bottom: 0;\r\n}\r\n\r\n.as-layout-editor-space {\r\n display: inline-block;\r\n position: relative;\r\n transform-origin: 0 0;\r\n transition: transform 0.1s;\r\n}\r\n\r\n\r\n.as-layout-editor-layout-container {\r\n padding: 0.4em;\r\n display: inline-block;\r\n}\r\n\r\n.as-layout-editor-layout-container>.as-relative-layout,\r\n.as-layout-editor-layout-container>.as-linear-layout,\r\n.as-layout-editor-layout-container>.as-chain-layout {\r\n -webkit-box-shadow: 1px 1px 15px 0px rgba(0, 0, 0, 0.75);\r\n -moz-box-shadow: 1px 1px 15px 0px rgba(0, 0, 0, 0.75);\r\n box-shadow: 1px 1px 15px 0px rgba(0, 0, 0, 0.75);\r\n}\r\n\r\n\r\n.as-layout-editor-forceground-container {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n\r\n.as-layout-editor-background {\r\n z-index: 0;\r\n}\r\n\r\n.as-layout-editor-layout-contaner {\r\n z-index: 1;\r\n}\r\n\r\n.as-layout-editor-forceground-container {\r\n z-index: 2;\r\n}\r\n\r\n.as-layout-editor-forceground {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n}\r\n\r\n\r\n.as-layout-editor-hrule-container {\r\n position: absolute;\r\n top: 0;\r\n left: 1.5em;\r\n right: 0;\r\n height: 1.5em;\r\n z-index: 1;\r\n}\r\n\r\n.as-layout-editor-vrule-container {\r\n position: absolute;\r\n left: 0;\r\n top: 1.5em;\r\n bottom: 0;\r\n width: 1.5em;\r\n z-index: 2;\r\n\r\n}\r\n\r\n.as-layout-editor-vrule-container>.as-vruler,\r\n.as-layout-editor-hrule-container>.as-hruler {\r\n height: 100%;\r\n width: 100%;\r\n}\r\n\r\n.as-layout-editor-new-component-menu-trigger {\r\n position: absolute;\r\n width: 1.5em;\r\n height: 1.5em;\r\n top: -1.5em;\r\n left: -1.5em;\r\n}\r\n\r\n\r\n.as-layout-editor-preview-button-container {\r\n left: 0;\r\n top: 0;\r\n width: 1.5em;\r\n height: 1.45em;\r\n}\r\n\r\n.as-layout-editor-preview-button-container>button {\r\n border: none;\r\n width: 100%;\r\n height: 100%;\r\n padding: 0;\r\n outline: none;\r\n cursor: pointer;\r\n background-color: transparent;\r\n font-size: 1em;\r\n}\r\n\r\n.as-layout-editor-preview-button-container>button:hover {\r\n background-color: rgba(169, 169, 170, 0.2);\r\n}\r\n\r\n.as-layout-editor-preview-button-container>button:active {\r\n background-color: rgba(169, 169, 170, 0.4);\r\n}\r\n\r\n\r\n.as-layout-editor-layout-container .as-base-component .as-chain-layout,\r\n.as-layout-editor-layout-container .as-base-component .as-relative-layout,\r\n.as-layout-editor-layout-container .as-base-component .as-linear-layout {\r\n -webkit-box-shadow: 0px 0px 0px 1px rgba(169, 169, 255, 0.8);\r\n -moz-box-shadow: 0px 0px 0px 1px rgba(169, 169, 255, 0.8);\r\n box-shadow: 0px 0px 0px 1px rgba(169, 169, 255, 0.8);\r\n}\r\n\r\n.as-layout-editor-mouse-selecting-box {\r\n z-index: 100;\r\n position: absolute;\r\n background-color: rgba(0, 0, 255, 0.1);\r\n}\r\n\r\n.as-vruler,\r\n.as-hruler {\r\n -webkit-user-select: none;\r\n /* Safari 3.1+ */\r\n -moz-user-select: none;\r\n /* Firefox 2+ */\r\n -ms-user-select: none;\r\n /* IE 10+ */\r\n user-select: none;\r\n /* Standard syntax */\r\n background-color: rgba(169, 169, 170, 0.5);\r\n}\r\n\r\n.as-vruler-mouse,\r\n.as-hruler-mouse {\r\n position: absolute;\r\n box-sizing: border-box;\r\n z-index: 6;\r\n\r\n}\r\n\r\n.as-vruler-mouse {\r\n left: 0;\r\n right: 0;\r\n border-top: solid 2px rgba(255, 0, 0, 0.5);\r\n}\r\n\r\n.as-hruler-mouse {\r\n top: 0;\r\n bottom: 0;\r\n border-left: solid 2px rgba(255, 0, 0, 0.5);\r\n}\r\n\r\n.as-layout-editor .as-hruler-line,\r\n.as-layout-editor .as-vruler-line,\r\n.as-layout-editor .as-hruler-major-number,\r\n.as-layout-editor .as-vruler-major-number {\r\n z-index: 5;\r\n}\r\n\r\n\r\n.as-hruler-editing,\r\n.as-vruler-editing {\r\n z-index: 1;\r\n position: absolute;\r\n background-color: rgba(255, 255, 255, 0.9);\r\n}\r\n\r\n\r\n.as-hruler-editing {\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n\r\n.as-vruler-editing {\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.as-layout-editor-curtain {\r\n position: absolute;\r\n background-color: rgba(169, 169, 180, 0.5);\r\n}", ""]); /***/ }), /* 222 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(223); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 223 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".absol-color-picker {\r\n user-select: none;\r\n height: 19em;\r\n width: 20em;\r\n position: relative;\r\n background-color: white;\r\n /* background-color: rgb(45, 45, 49); */\r\n color: rgb(26, 26, 46);\r\n border-radius: 0.4em;\r\n padding: 0.7em;\r\n display: inline-block;\r\n border: solid 1px rgba(139, 139, 169, 0.733);\r\n font-family: Arial, Helvetica, sans-serif;\r\n -webkit-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n -moz-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n}\r\n\r\n.absol-color-picker.with-alpha {\r\n width: 23em;\r\n}\r\n\r\n.absol-color-picker.with-alpha .absol-color-picker-color,\r\n.absol-color-picker.with-alpha .absol-color-picker-input {\r\n right: 8em;\r\n}\r\n\r\n\r\n.absol-color-picker,\r\n.absol-color-picker * {\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-color-picker-color {\r\n z-index: 1;\r\n position: absolute;\r\n left: 1em;\r\n right: 5em;\r\n top: 1em;\r\n bottom: 4em;\r\n padding: 0;\r\n border: solid 1px rgb(220, 220, 220);\r\n border-bottom-width: 2px;\r\n box-sizing: content-box;\r\n}\r\n\r\n.absol-color-picker-sat {\r\n box-sizing: content-box;\r\n width: 100%;\r\n height: 100%;\r\n background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));\r\n background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));\r\n background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)\";\r\n filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');\r\n}\r\n\r\n.absol-color-picker-val {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: content-box;\r\n background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));\r\n background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));\r\n background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)\";\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');\r\n}\r\n\r\n.absol-color-dragger {\r\n border: solid 1px rgb(160, 160, 160);\r\n box-shadow: inset 0px 0px 0.4em 0.1em rgba(255, 255, 255, 0.7);\r\n}\r\n\r\n.absol-color-picker-val .absol-color-dragger {\r\n position: absolute;\r\n z-index: 10;\r\n width: 1em;\r\n height: 1em;\r\n border: solid 1px rgb(160, 160, 160);\r\n bottom: 0;\r\n left: 0;\r\n margin-top: -0.5em;\r\n margin-bottom: -0.5em;\r\n margin-left: -0.5em;\r\n margin-right: -0.5em;\r\n border-radius: 50%;\r\n box-shadow: inset 0px 0px 0.4em 0.1em rgba(255, 255, 255, 0.7);\r\n}\r\n\r\n.absol-color-picker-hue-range {\r\n position: absolute;\r\n top: 1em;\r\n right: 1.5em;\r\n bottom: 4em;\r\n width: 1.7em;\r\n}\r\n\r\n.absol-color-picker-hue {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n border: inset 1px rgba(220, 220, 225);\r\n background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\r\n}\r\n\r\n.absol-color-picker-hue .absol-color-dragger,\r\n.absol-color-picker-alpha .absol-color-dragger {\r\n position: absolute;\r\n height: 0.6em;\r\n left: -0.3em;\r\n right: -0.3em;\r\n top: 0%;\r\n margin-top: -0.3em;\r\n margin-bottom: -0.3em;\r\n border-width: 0.1em;\r\n}\r\n\r\n.absol-color-picker-alpha {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1));\r\n}\r\n\r\n.absol-color-picker-alpha-range,\r\n.absol-color-picker-input {\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n background-size: 1.5em;\r\n image-rendering: optimizeSpeed;\r\n /* STOP SMOOTHING, GIVE ME SPEED */\r\n image-rendering: -moz-crisp-edges;\r\n /* Firefox */\r\n image-rendering: -o-crisp-edges;\r\n /* Opera */\r\n image-rendering: -webkit-optimize-contrast;\r\n /* Chrome (and eventually Safari) */\r\n image-rendering: pixelated;\r\n /* Chrome */\r\n image-rendering: optimize-contrast;\r\n /* CSS3 Proposed */\r\n -ms-interpolation-mode: nearest-neighbor;\r\n /* IE8+ */\r\n}\r\n\r\n.absol-color-picker-alpha-range {\r\n position: absolute;\r\n right: 4.5em;\r\n top: 1em;\r\n bottom: 4em;\r\n width: 1.7em;\r\n}\r\n\r\n.absol-color-picker:not(.with-alpha) .absol-color-picker-alpha-range {\r\n display: none;\r\n}\r\n\r\n.absol-color-picker-input {\r\n position: absolute;\r\n left: 1em;\r\n bottom: 1em;\r\n right: 5em;\r\n height: 2em;\r\n}\r\n\r\n.absol-color-picker-text-container {\r\n background-color: transparent;\r\n outline: none;\r\n border: none;\r\n width: 100%;\r\n height: 100%;\r\n color: rgb(230, 230, 235);\r\n text-align: center;\r\n font-size: 1em;\r\n background-color: #000;\r\n}\r\n\r\n.absol-color-picker-text-container> span,\r\n.absol-color-picker-text-container> div{\r\n line-height: 2.5;\r\n font-size: 0.8em;\r\n}\r\n\r\n.absol-color-picker-mode {\r\n position: absolute;\r\n right: 1em;\r\n bottom: 1em;\r\n height: 2em;\r\n width: 3em;\r\n box-sizing: border-box;\r\n font-size: 1em;\r\n border: none;\r\n outline: none;\r\n background-color: rgb(243, 243, 243);\r\n color: rgb(21, 21, 34);\r\n}\r\n\r\n.absol-color-picker.with-alpha .absol-color-picker-mode {\r\n right: 2.5em;\r\n width: 3.7em;\r\n}", ""]); /***/ }), /* 224 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(225); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 225 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-color-picker-button {\r\n width: 45px;\r\n height: 30px;\r\n border-radius: 3px;\r\n border: 1px solid #d6d6d6;\r\n background-color: transparent;\r\n padding: 5px;\r\n outline: none;\r\n}\r\n\r\n.as-color-picker-button-inner {\r\n height: 100%;\r\n width: 100%;\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n background-size: 1.5em;\r\n image-rendering: optimizeSpeed;\r\n /* STOP SMOOTHING, GIVE ME SPEED */\r\n image-rendering: -moz-crisp-edges;\r\n /* Firefox */\r\n image-rendering: -o-crisp-edges;\r\n /* Opera */\r\n image-rendering: -webkit-optimize-contrast;\r\n /* Chrome (and eventually Safari) */\r\n image-rendering: pixelated;\r\n /* Chrome */\r\n image-rendering: optimize-contrast;\r\n /* CSS3 Proposed */\r\n -ms-interpolation-mode: nearest-neighbor;\r\n /* IE8+ */\r\n}\r\n\r\n.as-color-picker-button-inner-value {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-color-picker-button-fol{\r\n z-index: 1000;\r\n}", ""]); /***/ }), /* 226 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(227); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 227 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-swatches-table {\r\n display: table;\r\n table-layout: fixed;\r\n}\r\n\r\n.as-swatches-table-row {\r\n display: table-row;\r\n}\r\n\r\n\r\n.as-swatches-table-cell {\r\n position: relative;\r\n display: table-cell;\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n background-size: 1.5em;\r\n image-rendering: optimizeSpeed;\r\n /* STOP SMOOTHING, GIVE ME SPEED */\r\n image-rendering: -moz-crisp-edges;\r\n /* Firefox */\r\n image-rendering: -o-crisp-edges;\r\n /* Opera */\r\n image-rendering: -webkit-optimize-contrast;\r\n /* Chrome (and eventually Safari) */\r\n image-rendering: pixelated;\r\n /* Chrome */\r\n image-rendering: optimize-contrast;\r\n /* CSS3 Proposed */\r\n -ms-interpolation-mode: nearest-neighbor;\r\n /* IE8+ */\r\n}\r\n\r\n.as-swatches-table-cell-color {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n}", ""]); /***/ }), /* 228 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(229); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 229 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-spectrum-color {\r\n position: relative;\r\n touch-action: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n}\r\n\r\n.as-spectrum-color-sat {\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: content-box;\r\n background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));\r\n background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));\r\n background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)\";\r\n filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');\r\n}\r\n\r\n\r\n.as-spectrum-color-val {\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: content-box;\r\n background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));\r\n background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));\r\n background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)\";\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');\r\n}", ""]); /***/ }), /* 230 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(231); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 231 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-solid-color-picker:not(.as-solid-color-picker-mode-swatches) .as-solid-color-picker-swatches-select-ctn,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-swatches) .as-solid-color-picker-swatches-ctn,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-spectrum,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-hue,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-alpha,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-near {\r\n display: none;\r\n}\r\n\r\n.as-solid-color-picker .as-hanger{\r\n user-select: none;\r\n touch-action: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n}\r\n\r\n.as-solid-color-picker {\r\n display: inline-block;\r\n border: 1px solid black;\r\n font-size: 12px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n outline: none;\r\n background-color: white;\r\n}\r\n\r\n.as-solid-color-picker-body {\r\n padding-bottom: 10px;\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n box-sizing: border-box;\r\n border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.as-solid-color-picker-header {\r\n padding: 10px;\r\n}\r\n\r\n.as-solid-color-picker-mode {\r\n font-size: 0.9em;\r\n}\r\n\r\n.as-solid-color-picker-mode button {\r\n height: 1.5em;\r\n min-width: 7em;\r\n}\r\n\r\n.as-solid-color-picker-swatches-name {\r\n color: #006ce5;\r\n text-decoration: underline;\r\n cursor: pointer;\r\n}\r\n\r\n.as-solid-color-picker-swatches-select-ctn {\r\n line-height: 2em;\r\n}\r\n\r\n.as-solid-color-picker-swatches-ctn {\r\n overflow-y: auto;\r\n width: 20em;\r\n height: 20em;\r\n box-sizing: content-box;\r\n}\r\n\r\n.as-solid-color-picker-swatches-ctn .as-swatches-table {\r\n width: 100%;\r\n}\r\n\r\n.as-solid-color-picker-swatches-ctn .as-swatches-table-row,\r\n.as-solid-color-picker-recent-swatches-ctn .as-swatches-table-row {\r\n height: 2em;\r\n}\r\n\r\n.as-solid-color-picker-recent-swatches-ctn .as-swatches-table-cell {\r\n width: 1.6666666em;\r\n}\r\n\r\n\r\n.as-solid-color-picker-recent-title {\r\n line-height: 1.5em;\r\n margin-top: 0.5em;\r\n font-weight: bold;\r\n}\r\n\r\n.as-solid-color-picker-recent-swatches-ctn {\r\n overflow-y: auto;\r\n width: 20em;\r\n height: 4em;\r\n box-sizing: content-box;\r\n}\r\n\r\n.as-solid-color-picker-footer {\r\n padding: 10px;\r\n}\r\n\r\n.as-solid-color-picker-footer .as-flexicon-button {\r\n font-size: inherit;\r\n height: 2em;\r\n box-sizing: border-box;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-solid-color-picker-selected-ctn {\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n background-size: 1.5em;\r\n image-rendering: optimizeSpeed;\r\n image-rendering: -moz-crisp-edges;\r\n image-rendering: -o-crisp-edges;\r\n image-rendering: -webkit-optimize-contrast;\r\n image-rendering: pixelated;\r\n image-rendering: optimize-contrast;\r\n -ms-interpolation-mode: nearest-neighbor;\r\n\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-solid-color-picker-selected {\r\n height: 2em;\r\n width: 5em;\r\n border: 1px solid #ddd;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-solid-color-picker-color-hex,\r\n.as-solid-color-picker-color-opacity {\r\n font-size: inherit;\r\n width: 6em;\r\n}\r\n\r\n.as-flexicon-input.as-solid-color-picker-color-opacity.as-flexicon-input-has-icon.as-flexicon-input-has-unit input{\r\n width: calc(100% - 4em);\r\n}\r\n\r\n\r\n/*.as-solid-color-picker-color-hex input {*/\r\n/* padding-left: 0;*/\r\n/* padding-right: 0;*/\r\n/*}*/\r\n\r\n.as-solid-color-picker-color-opacity input {\r\n padding-left: 0;\r\n padding-right: 0;\r\n}\r\n\r\n.as-solid-color-picker-footer *:not(:first-child) {\r\n margin-left: 0.5em;\r\n}\r\n\r\n.as-swatches-table-cell .as-solid-color-picker-selected-dot {\r\n left: calc(50% - 0.5em);\r\n top: calc(50% - 0.5em);\r\n}\r\n\r\n.as-solid-color-picker-selected-dot {\r\n position: absolute;\r\n width: 1em;\r\n height: 1em;\r\n box-shadow: inset 0px 0px 0.3em 0.125em rgba(255, 255, 255, 0.7);\r\n z-index: 1;\r\n border-radius: 50%;\r\n}\r\n\r\n\r\n.as-solid-color-picker-spectrum {\r\n width: 20em;\r\n height: 13.3em;\r\n background-color: red;\r\n position: relative;\r\n}\r\n\r\n.as-solid-color-picker-spectrum-dot {\r\n width: 1em;\r\n height: 1em;\r\n box-shadow: inset 0px 0px 0.3em 0.125em rgba(0, 0, 0, 0.7);\r\n z-index: 1;\r\n border-radius: 50%;\r\n position: absolute;\r\n bottom: calc(100% - 0.5em);\r\n left: calc(100% - 0.5em);\r\n}\r\n\r\n\r\n.as-solid-color-picker-hue {\r\n width: 20em;\r\n height: 2em;\r\n background: linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\r\n position: relative;\r\n}\r\n\r\n.as-solid-color-picker-hue-dot {\r\n width: 1em;\r\n height: 1em;\r\n box-shadow: inset 0px 0px 0.3em 0.125em rgba(0, 0, 0, 0.7);\r\n z-index: 1;\r\n border-radius: 50%;\r\n position: absolute;\r\n top: calc(50% - 0.5em);\r\n left: calc(0% - 0.5em);\r\n}\r\n\r\n\r\n\r\n.as-solid-color-picker-alpha {\r\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n background-size: 1.5em;\r\n image-rendering: optimizeSpeed;\r\n image-rendering: -moz-crisp-edges;\r\n image-rendering: -o-crisp-edges;\r\n image-rendering: -webkit-optimize-contrast;\r\n image-rendering: pixelated;\r\n image-rendering: optimize-contrast;\r\n -ms-interpolation-mode: nearest-neighbor;\r\n\r\n width: 20em;\r\n height: 2em;\r\n position: relative;\r\n}\r\n\r\n.as-solid-color-picker-alpha-color {\r\n background: linear-gradient(to right, rgba(255, 0, 0, 0.0) 0%, rgba(255, 0, 0, 1) 100%);\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.as-solid-color-picker-alpha-dot {\r\n width: 1em;\r\n height: 1em;\r\n box-shadow: inset 0px 0px 0.3em 0.125em rgba(0, 0, 0, 0.7);\r\n z-index: 1;\r\n border-radius: 50%;\r\n position: absolute;\r\n top: calc(50% - 0.5em);\r\n left: calc(100% - 0.5em);\r\n}\r\n\r\n\r\n\r\n.as-solid-color-picker-near {\r\n margin-top: 0.5em;\r\n width: 20em;\r\n height: 4.2em;\r\n}\r\n\r\n.as-solid-color-picker-near .as-swatches-table-cell-color {\r\n transition: transform 0.1s;\r\n}\r\n\r\n\r\n.as-solid-color-picker-near .as-swatches-table-cell-color:hover {\r\n transform: scale(1.2);\r\n z-index: 2;\r\n}", ""]); /***/ }), /* 232 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(233); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 233 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-relative-anchor-box {\r\n position: absolute;\r\n z-index: 1;\r\n pointer-events: none;\r\n}\r\n\r\n\r\n\r\n/*\r\n width: auto | set\r\n left: set\r\n right: unset,\r\n*/\r\n.as-relative-anchor-box.as-halign-left {\r\n left: 0;\r\n}\r\n\r\n\r\n/*\r\n width: auto | set\r\n right: set\r\n left: unset,\r\n*/\r\n.as-relative-anchor-box.as-halign-right {\r\n right: 0;\r\n}\r\n\r\n\r\n/*\r\n left: unset\r\n right: unset\r\n width: auto | set\r\n warning: inner element should be set text-align to default to prevent error \r\n*/\r\n.as-relative-anchor-box.as-halign-center {\r\n left: 0;\r\n right: 0;\r\n text-align: center;\r\n}\r\n\r\n/*\r\n left: set\r\n right: set\r\n width: unset\r\n*/\r\n.as-relative-anchor-box.as-halign-fixed {\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n\r\n/*\r\n left: set\r\n right: set\r\n width: unset\r\n*/\r\n.as-relative-anchor-box.as-halign-fixed {\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n\r\n/*\r\n bottom: set\r\n height: unset\r\n top: set\r\n*/\r\n.as-relative-anchor-box.as-valign-fixed {\r\n bottom: 0;\r\n top: 0\r\n}\r\n\r\n.as-relative-anchor-box>.as-align-box>.as-align-box-cell>.as-base-component {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-relative-anchor-box.as-valign-center>.as-align-box>.as-align-box-cell {\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-relative-anchor-box>.as-base-component {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n\r\n.as-relative-anchor-box.as-valign-center>.as-align-box {\r\n height: 100%;\r\n width: 100%;\r\n}", ""]); /***/ }), /* 234 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(235); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 235 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-align-box {\r\n display: table;\r\n}\r\n\r\n.as-align-box-cell {\r\n display: table-cell;\r\n}\r\n\r\n.as-align-box-cell>.as-relative-layout,\r\n.as-align-box-cell>.absol-bscroller,\r\n.as-align-box-cell>.as-linear-layout,\r\n.as-align-box-cell>.as-chain-layout\r\n {\r\n display: inline-block;\r\n}", ""]); /***/ }), /* 236 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "textarea.as-base-component {\r\n resize: none;\r\n\r\n}\r\n\r\ninput.as-base-component,\r\ntextarea.as-base-component {\r\n outline: none;\r\n border: solid 1px #d6d6d6;\r\n border-radius: 2px;\r\n}\r\n\r\n.as-base-component {\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-selectmenu.as-base-component .absol-selectmenu-holder-item {\r\n top: calc(50% - 10px);\r\n bottom: calc(50% - 10px);\r\n}\r\n\r\ntable.as-inner-table {\r\n border-collapse: collapse;\r\n box-sizing: border-box;\r\n min-width: calc(100% - 1px);\r\n min-height: calc(100% - 1px);\r\n background: white;\r\n box-sizing: border-box;\r\n}\r\n\r\ntable.as-inner-table>thead {\r\n font-style: italic;\r\n background: #f5f5f5;\r\n}\r\n\r\ntable.as-inner-table>tbody>tr>td,\r\ntable.as-inner-table>thead>tr>th {\r\n border: 1px solid #aaaaaa;\r\n box-sizing: border-box;\r\n padding: 0.25em;\r\n white-space: nowrap;\r\n\r\n}", ""]); /***/ }), /* 237 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-resize-box.as-focus .as-resize-box-body {\r\n border-color: rgb(255, 174, 0);\r\n}\r\n\r\n\r\n.as-resize-box.as-focus .as-resize-box-dot {\r\n background: rgb(255, 174, 0);\r\n}\r\n\r\n\r\n.as-align-vertical-line {\r\n margin-left: 0.5px;\r\n border-left: solid 1px rgba(255, 100, 100, 0.2);\r\n}\r\n\r\n\r\n.as-align-horizontal-line {\r\n margin-top: 0.5px;\r\n border-top: solid 1px rgba(255, 100, 100, 0.2);\r\n}\r\n\r\n.as-align-vertical-line,\r\n.as-align-horizontal-line {\r\n position: absolute;\r\n box-sizing: border-box;\r\n z-index: 1;\r\n pointer-events: none;\r\n}\r\n\r\n.as-align-vertical-line.as-active,\r\n.as-align-horizontal-line.as-active {\r\n border-color: rgba(255, 100, 100, 0.9);\r\n}", ""]); /***/ }), /* 238 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(239); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 239 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-linear-anchor-box {\r\n display: block;\r\n}\r\n\r\n\r\n.as-linear-anchor-box>.as-base-component{\r\n width: 100%;\r\n height: 100%;\r\n}", ""]); /***/ }), /* 240 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(241); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 241 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, "\r\n.as-chain-anchor-box {\r\n display: inline-block;\r\n}\r\n\r\n.as-chain-anchor-box.as-valign-top {\r\n vertical-align: top;\r\n}\r\n\r\n.as-chain-anchor-box.as-valign-center {\r\n vertical-align: middle;\r\n}\r\n\r\n.as-chain-anchor-box.as-valign-bottom {\r\n vertical-align: bottom;\r\n}\r\n\r\n\r\n.as-chain-anchor-box>.as-base-component{\r\n width: 100%;\r\n height: 100%;\r\n}", ""]); /***/ }), /* 242 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(243); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 243 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-hline {\r\n position: absolute;\r\n pointer-events: none;\r\n opacity: 0.5;\r\n\r\n}\r\n\r\n.as-hline-body {\r\n position: relative;\r\n border-top: solid 2px rgb(55, 180, 159);\r\n box-sizing: border-box;\r\n width: 100%;\r\n margin-top: -1px;\r\n margin-bottom: -1px; \r\n\r\n}\r\n\r\n.as-hline-dot {\r\n position: absolute;\r\n top: calc(-0.2em - 1px);\r\n height: 0.4em;\r\n width: 0.4em;\r\n background-color: rgb(55, 180, 159);\r\n}\r\n\r\n\r\n.as-hline-dot.left {\r\n left: -0.2em;\r\n}\r\n\r\n\r\n.as-hline-dot.right {\r\n right: -0.2em;\r\n}", ""]); /***/ }), /* 244 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(245); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 245 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-vline {\r\n position: absolute;\r\n pointer-events: none;\r\n opacity: 0.5;\r\n\r\n}\r\n\r\n.as-vline-body {\r\n position: relative;\r\n border-left: solid 2px rgb(55, 180, 159);\r\n box-sizing: border-box;\r\n height: 100%;\r\n margin-left: -1px;\r\n margin-right: -1px;\r\n\r\n}\r\n\r\n.as-vline-dot {\r\n position: absolute;\r\n left: calc(-0.2em - 1px);\r\n height: 0.4em;\r\n width: 0.4em;\r\n background-color: rgb(55, 180, 159);\r\n}\r\n\r\n\r\n.as-vline-dot.top {\r\n top: -0.2em;\r\n}\r\n\r\n\r\n.as-vline-dot.bottom {\r\n bottom: -0.2em;\r\n}", ""]); /***/ }), /* 246 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(247); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 247 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-undo-history {\r\n min-width: 200px;\r\n min-height: 200px;\r\n font-size: 14px;\r\n}\r\n\r\n.as-undo-history.as-minimize {\r\n left: 5px;\r\n top: calc(100vh - 1.4em - 5px);\r\n height: 1.4em;\r\n min-width: unset;\r\n min-height: unset;\r\n overflow: hidden;\r\n -webkit-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n -moz-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n}\r\n\r\n\r\n.as-undo-history.as-minimize>.absol-onscreen-window-content>.absol-onscreen-window-head-bar .absol-onscreen-window-head-bar-button-minimize {\r\n display: none;\r\n}\r\n\r\n.as-undo-history:not(.as-minimize)>.absol-onscreen-window-content>.absol-onscreen-window-head-bar .absol-onscreen-window-head-bar-button-dock {\r\n display: none;\r\n}\r\n\r\n\r\n\r\n.as-undo-history-item-list {\r\n position: absolute;\r\n top: 1.6em;\r\n left: 0.1em;\r\n right: 0.1em;\r\n bottom: 0.1em;\r\n box-sizing: border-box;\r\n border: 1px solid #ddd;\r\n overflow-y: auto;\r\n}\r\n\r\n.as-undo-history-active-buttons {\r\n height: 1.4em;\r\n padding: 0.1em;\r\n}\r\n\r\n.as-undo-history-active-buttons button {\r\n width: 1.4em;\r\n height: 1.4em;\r\n font-size: 1em;\r\n padding: 0;\r\n border: 0;\r\n margin-left: 0.2em;\r\n margin-right: 0.2em;\r\n outline: none;\r\n background-color: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n.as-undo-history-active-buttons button:disabled {\r\n pointer-events: none;\r\n}\r\n\r\n.as-undo-history-active-buttons button:hover {\r\n background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n.as-undo-history-active-buttons button:active {\r\n background-color: rgba(169, 169, 169, 0.4);\r\n}\r\n\r\n.as-undo-history-active-buttons .mdi-delete {\r\n color: rgb(255, 59, 59);\r\n}\r\n\r\n.as-undo-history-active-buttons-right-container {\r\n position: absolute;\r\n top: 0.1em;\r\n right: 0.1em;\r\n}\r\n\r\n.as-undo-history-item {\r\n position: relative;\r\n padding-left: 1.4em;\r\n min-height: 1.4em;\r\n box-sizing: content-box;\r\n border-bottom: 1px solid #ddd;\r\n cursor: pointer;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n}\r\n\r\n.as-undo-history-item>span{\r\n overflow: hidden;\r\n \r\n}\r\n\r\n.as-undo-history-item-icon-container {\r\n top: calc(50% - 0.6em);\r\n bottom: calc(50% - 0.6em);\r\n left: 0.1em;\r\n width: 1.2em;\r\n position: absolute;\r\n}\r\n\r\n.as-undo-history-item-icon-container>span {\r\n font-size: 1em;\r\n line-height: 1.2;\r\n}\r\n\r\n.as-undo-history-item-active {\r\n background: rgba(169, 169, 199, 0.3);\r\n}\r\n.as-undo-history-item-disabled{\r\n color: rgb(152, 152, 155);\r\n}", ""]); /***/ }), /* 248 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(249); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 249 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-form-component-properties-editor-window .as-form-component-properties-editor {\r\n width: 100%;\r\n height: 100%;\r\n font-size: 14px;\r\n}\r\n\r\n.as-layout-editor-property-container>.as-form-component-properties-editor {\r\n height: 100%;\r\n min-width: 25em;\r\n}\r\n\r\n.as-form-component-properties-editor-window {\r\n min-width: 25em;\r\n font-size: 14px;\r\n min-height: 10em;\r\n z-index: 99;\r\n}\r\n\r\n.as-form-component-properties-editor-window .absol-onscreen-window-head-bar-button-minimize {\r\n display: none;\r\n}\r\n\r\n.as-form-component-properties-editor-quickmenu-button {\r\n top: 0;\r\n right: 0;\r\n position: absolute;\r\n color: #dddddd;\r\n}\r\n\r\n.as-form-component-properties-editor-window .as-form-component-properties-editor-quickmenu-button {\r\n display: none;\r\n}", ""]); /***/ }), /* 250 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(251); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 251 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-select-list-editor {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n}\r\n\r\n\r\n.as-select-list-editor-cmd-tool-container {\r\n display: block;\r\n border-bottom: solid 1px #dddddd;\r\n}\r\n\r\n.as-select-list-editor-cmd-tool-container:empty {\r\n display: none;\r\n}\r\n\r\n.as-select-list-editor-body {\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.as-select-list-editor-body > .asht-table-editor {\r\n width: 100%;\r\n height: 100%;\r\n}", ""]); /***/ }), /* 252 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(253); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 253 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".asht-table-editor {\r\n position: relative;\r\n overflow: hidden;\r\n height: 60vh;\r\n --body-scroll-height: 0;\r\n --body-scroll-width: 0;\r\n}\r\n\r\n.asht-table-editor-content {\r\n position: relative;\r\n overflow: visible;\r\n display: inline-block;\r\n vertical-align: top;\r\n}\r\n\r\n\r\n.asht-table-editor-foreground {\r\n position: absolute;\r\n z-index: 15;\r\n top: 0;\r\n left: 0;\r\n bottom: var(--body-scroll-height);\r\n right: var(--body-scroll-width);\r\n overflow: hidden;\r\n pointer-events: none;\r\n}\r\n\r\n.asht-table-editor-editing-layer {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n height: 100%;\r\n z-index: 12;\r\n overflow: hidden;\r\n}\r\n\r\n\r\n.asht-table-editor-body {\r\n position: relative;\r\n height: 100%;\r\n overflow: auto;\r\n}\r\n\r\n\r\n.asht-table-editor-header-viewport,\r\n.asht-table-editor-index-viewport,\r\n.asht-table-editor-root-cell {\r\n pointer-events: all;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n user-select: none;\r\n z-index: 10;\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n overflow: hidden;\r\n}\r\n\r\n\r\n.asht-table-editor-root-cell {\r\n border: solid 1px #dddddd;\r\n box-sizing: border-box;\r\n background-color: rgb(248, 249, 250);\r\n}\r\n\r\n.asht-table-editor-index-viewport {\r\n bottom: 0;\r\n}\r\n\r\n.asht-table-editor-index-scroller {\r\n height: 100%;\r\n width: calc(100% + 18px);\r\n overflow-y: scroll;\r\n}\r\n\r\n.asht-table-editor-header-viewport {\r\n right: 0;\r\n}\r\n\r\n\r\n.asht-table-editor-header-scroller {\r\n overflow-x: scroll;\r\n}\r\n\r\n\r\ntable.asht-table-data {\r\n table-layout: fixed;\r\n border-collapse: collapse;\r\n box-sizing: border-box;\r\n}\r\n\r\n.asht-text-cell-editor-input {\r\n outline: none;\r\n padding: 0;\r\n margin: 0;\r\n}\r\n\r\n\r\ntable.asht-table-data,\r\ntable.asht-table-data > tbody > tr > td,\r\ntable.asht-table-data > thead > tr > td,\r\ntable.asht-table-data > tr > td {\r\n border: solid 1px #dddddd;\r\n padding-left: 0.35em;\r\n padding-right: 0.35em;\r\n white-space: pre-wrap;\r\n word-break: normal;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n\r\ntable.asht-table-data > thead > tr > td {\r\n background-color: rgb(248, 249, 250);\r\n text-align: center;\r\n box-sizing: border-box;\r\n}\r\n\r\ntable.asht-table-data > tbody > tr > td > span {\r\n white-space: nowrap;\r\n}\r\n\r\ntable.asht-table-data > tbody > tr > td:first-child,\r\ntable.asht-table-data > tr > td:first-child {\r\n background-color: rgb(248, 249, 250);\r\n text-align: right;\r\n}\r\n\r\n\r\ntd.asht-table-data-root-cell {\r\n min-width: 1em;\r\n}\r\n\r\n\r\n.asht-table-editor-editing-box {\r\n position: absolute;\r\n box-sizing: border-box;\r\n z-index: 8;\r\n --cell-width: 0;\r\n --cell-height: 0;\r\n min-width: var(--cell-width);\r\n min-height: var(--cell-height);\r\n border: solid 1px rgb(134, 158, 193);\r\n}\r\n\r\n.asht-table-editor-editing-box::before {\r\n content: \"\";\r\n pointer-events: none;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n box-sizing: border-box;\r\n border: 1px solid rgb(134, 158, 193);\r\n z-index: 2;\r\n}\r\n\r\n.asht-table-editor-editing-box.as-status-focus,\r\n.asht-table-editor-editing-box.as-status-focus::before {\r\n border-color: rgb(26, 115, 232);\r\n}\r\n\r\n\r\n.asht-cell-editor-input {\r\n min-height: calc(var(--cell-height) - 0px);\r\n min-width: calc(var(--cell-width) - 0px);\r\n box-sizing: border-box;\r\n display: block;\r\n border: none;\r\n background: white;\r\n outline: none;\r\n}\r\n\r\n.asht-cell-editor-input.asht-state-wait-action {\r\n opacity: 0;\r\n width: var(--cell-width);\r\n height: var(--cell-height);\r\n}\r\n\r\ninput.asht-cell-editor-input[type=\"number\"].asht-state-editing {\r\n width: calc(var(--cell-width) + 18px);\r\n}\r\n\r\n.asht-boolean-cell-editor-input.asht-state-wait-action > .as-checkbox-input {\r\n visibility: hidden;\r\n}\r\n\r\n.asht-boolean-cell-editor-input {\r\n text-align: center;\r\n}\r\n\r\n.asht-boolean-cell-editor-input .as-checkbox-input {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.asht-boolean-cell-editor-input::before {\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: var(--cell-height);\r\n}\r\n\r\n.asht-table-editor-selected-box {\r\n border: 1px solid rgba(26, 115, 232, 0.7);\r\n background-color: rgba(26, 115, 232, 0.1);\r\n position: absolute;\r\n z-index: 20;\r\n box-sizing: border-box;\r\n pointer-events: none;\r\n}\r\n\r\n\r\ntd.asht-type-number {\r\n text-align: right;\r\n}\r\n\r\ntd.asht-type-boolean {\r\n text-align: center;\r\n}", ""]); /***/ }), /* 254 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(255); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 255 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-property-editor{\r\n padding:0.357em;\r\n}\r\n\r\n\r\n.as-property-editor>table {\r\n border-collapse: collapse;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-property-editor>table>thead{\r\n font-style: italic;\r\n background: #f5f5f5;\r\n}\r\n\r\n.as-property-editor>table>tbody>tr>td,\r\n.as-property-editor>table>thead>tr>td {\r\n border: 1px solid #aaaaaa;\r\n padding: 0.25em;\r\n\r\n}\r\n\r\n.as-form-property-tab>.as-property-editor>table {\r\n width: calc(100% - 10px);\r\n margin: 5px;\r\n}\r\n\r\n.as-property-editor>table>tbody>tr>td>input[type=\"text\"],\r\n.as-property-editor>table>tbody>tr>td>textarea {\r\n font-size: 1em;\r\n width: 100%;\r\n box-sizing: border-box;\r\n border: solid 1px #d6d6d6;\r\n outline: none;\r\n}\r\n\r\n.as-property-editor>table>tbody>tr>td>textarea{\r\n width: 100% !important;\r\n}\r\n\r\n\r\n.as-property-editor-text-align-input{\r\n font-size: 1.5em;\r\n width: 1.2em;\r\n height: 1.2em;\r\n padding: 0;\r\n margin: 0;\r\n box-sizing: content-box;\r\n border: solid 1px #ddd;\r\n background-color: rgba(169, 169, 172, 0);\r\n outline: none;\r\n}\r\n", ""]); /***/ }), /* 256 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(257); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 257 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-list-editor-add-row {\r\n cursor: pointer;\r\n}\r\n\r\ntable.as-list-editor {\r\n border-collapse: collapse;\r\n}\r\n\r\ntable.as-list-editor,\r\ntable.as-list-editor>thead>tr>td,\r\ntable.as-list-editor>tbody>tr>td {\r\n border: 1px solid #d6d6d6;\r\n}\r\n\r\n.as-list-editor-text,\r\n.as-list-editor-value {\r\n outline: none;\r\n padding: 0.2em 1em;\r\n}\r\n\r\n.as-list-editor-cell.empty-cell {\r\n background-color: rgba(255, 20, 20, 0.3);\r\n}\r\n\r\n.as-list-editor-cell.duplicate-cell {\r\n background-color: rgba(235, 229, 151, 0.3);\r\n}\r\n\r\n.as-list-editor-quick-menu-trigger {\r\n border: none;\r\n width: 1.5em;\r\n height: 1.5em;\r\n font-size: 1em;\r\n padding: 0;\r\n border-radius: 0;\r\n margin: 0;\r\n}", ""]); /***/ }), /* 258 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(259); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 259 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-font-icon-picker {\r\n font-size: 14px;\r\n background-color: white;\r\n display: inline-block;\r\n padding: 0.357em;\r\n -webkit-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n -moz-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n}\r\n\r\n.as-font-icon-picker>.absol-search-text-input {\r\n margin-bottom: 0.357em;\r\n}\r\n\r\n.as-font-icon-picker-option {\r\n padding-bottom: 0.357em;\r\n}\r\n\r\nbutton.as-font-icon-picker-icon {\r\n height: 3em;\r\n width: 3em;\r\n padding: 0;\r\n margin: 0;\r\n margin: 0.1em;\r\n font-size: 1em;\r\n box-sizing: border-box;\r\n background-color: rgba(169, 169, 172, 0);\r\n border: 1px solid #dddd;\r\n\r\n}\r\n\r\nbutton.as-font-icon-picker-icon:hover {\r\n background-color: rgba(169, 169, 172, 0.2);\r\n}\r\n\r\nbutton.as-font-icon-picker-icon>span {\r\n font-size: 2em;\r\n}\r\n\r\n\r\n.as-font-icon-picker-content {\r\n text-align: center;\r\n height: 19.2em;\r\n width: 20.2em;\r\n}\r\n\r\nbutton.as-font-icon-picker-icon.as-font-icon-picker-selected {\r\n background-color: rgba(20, 185, 235, 0.3);\r\n}\r\n\r\nbutton.as-font-icon-input{\r\n font-size: 14px;\r\n width: 2em;\r\n height: 2em;\r\n padding: 0;\r\n margin: 0;\r\n box-sizing: content-box;\r\n border: solid 1px #ddd;\r\n background-color: rgba(169, 169, 172, 0);\r\n outline: none;\r\n}\r\n\r\n\r\nbutton.as-font-icon-input>span,\r\nbutton.as-font-icon-input>i{\r\n font-size: 1.5em;\r\n}\r\n\r\n.as-font-icon-input.as-font-icon-selecting{\r\n\r\n}", ""]); /***/ }), /* 260 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(261); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 261 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-component-outline-node-selected>.absol-exp-node {\r\n background-color: rgba(20, 185, 235, 0.3);\r\n}\r\n\r\n\r\n.as-component-outline-node-focus>.absol-exp-node {\r\n background-color: rgba(185, 235, 20, 0.3);\r\n}\r\n.as-component-outline{\r\n outline: none;\r\n}", ""]); /***/ }), /* 262 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(263); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 263 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-form-preview {\r\n font-size: 14px;\r\n z-index: 99;\r\n}\r\n\r\n\r\n.as-form-preview::after {\r\n content: \"\";\r\n display: table;\r\n clear: both;\r\n}\r\n\r\n.as-form-preview-actions {\r\n padding: 0.357em;\r\n border-bottom: 1px solid #ddd;\r\n}\r\n\r\n.as-form-preview-actions>button {\r\n margin-right: 1em;\r\n}\r\n\r\n\r\n.as-form-preview-content {\r\n padding: 0.5em;\r\n position: relative;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.as-form-preview-content>.as-base-component {\r\n -webkit-box-shadow: 1px 1px 15px 0px rgba(0, 0, 0, 0.75);\r\n -moz-box-shadow: 1px 1px 15px 0px rgba(0, 0, 0, 0.75);\r\n box-shadow: 1px 1px 15px 0px rgba(0, 0, 0, 0.75);\r\n}\r\n\r\n\r\n.as-form-preview-content:empty {\r\n height: 0;\r\n width: 0;\r\n}\r\n\r\n.as-form-preview-size-setting {\r\n padding: 5px 0 5px 20px;\r\n border-bottom: 2px solid #ddd;\r\n box-sizing: content-box;\r\n}\r\n\r\n.as-form-preview-size-setting span {\r\n font-size: 12px;\r\n}\r\n\r\n.as-form-preview-size-setting input[type=\"number\"] {\r\n border: 1px solid #ddd;\r\n outline: none;\r\n font-size: 12px;\r\n}\r\n\r\n.as-form-preview-size-setting input[type=\"number\"].as-input-width,\r\n.as-form-preview-size-setting input[type=\"number\"].as-input-height {\r\n width: 5em;\r\n}", ""]); /***/ }), /* 264 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(265); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 265 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-form-editor {\r\n position: relative;\r\n font-size: 14px;\r\n outline: none;\r\n -webkit-box-shadow: 0px 0px 0px 1px rgba(110, 110, 110, 0.3);\r\n -moz-box-shadow: 0px 0px 0px 1px rgba(110, 110, 110, 0.3);\r\n box-shadow: 0px 0px 0px 1px rgba(110, 110, 110, 0.3);\r\n}\r\n\r\n.as-form-editor-resizer {\r\n z-index: 10;\r\n position: absolute;\r\n}\r\n\r\n.as-form-editor-resizer.vertical {\r\n top: 0;\r\n bottom: 0;\r\n width: 0.2em;\r\n cursor: w-resize;\r\n}\r\n\r\n.as-form-editor-left-tab-bar {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 3em;\r\n background-color: rgba(169, 169, 170, 0.11659);\r\n}\r\n\r\n.as-form-editor-left-tab-bar>button,\r\n.as-form-editor-left-tab-bar-bottom-container>button {\r\n display: block;\r\n width: 3em;\r\n height: 3em;\r\n}\r\n\r\n.as-form-editor-quick-toolbar button,\r\n.as-form-editor-left-tab-bar>button,\r\n.as-form-editor-left-tab-bar-bottom-container>button {\r\n font-size: 1em;\r\n color: rgb(196, 196, 196);\r\n border: none;\r\n background-color: transparent;\r\n border-radius: 0;\r\n outline: none;\r\n}\r\n\r\n.as-form-editor-left-tab-bar>button:hover,\r\n.as-form-editor-left-tab-bar-bottom-container>button:hover,\r\n.as-form-editor-quick-toolbar button:hover {\r\n color: rgba(102, 102, 102);\r\n}\r\n\r\n.as-form-editor-left-tab-bar>button:active,\r\n.as-form-editor-left-tab-bar>button.active,\r\n.as-form-editor-quick-toolbar button:active {\r\n background-color: rgb(169, 169, 169);\r\n color: white;\r\n\r\n}\r\n\r\n.as-form-editor-left-tab-bar>button>span,\r\n.as-form-editor-left-tab-bar-bottom-container>button>span {\r\n font-size: 2em;\r\n}\r\n\r\n.as-form-editor-left-tab-bar-bottom-container {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n}\r\n\r\n\r\n\r\n.as-form-editor-left-site-container {\r\n position: absolute;\r\n left: 3em;\r\n top: 0;\r\n bottom: 0;\r\n width: calc(15% - 3em);\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-form-editor-left-site-container>.as-form-editor-left-site {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-form-editor-resizer.vertical.left-site {\r\n left: calc(15% - 0.1em);\r\n}\r\n\r\n.as-form-editor-editor-space-container,\r\n.as-form-editor-empty-space {\r\n position: absolute;\r\n left: 15%;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n border-left: 1px solid #ddd;\r\n\r\n}\r\n \r\n.as-form-editor-empty-space {\r\n z-index: 0;\r\n}\r\n\r\n.as-form-editor-editor-space-container {\r\n z-index: 1;\r\n background: white;\r\n}\r\n\r\n.as-form-editor-editor-space-container .as-layout-editor,\r\n.as-form-editor-editor-space-container .as-code-editor,\r\n.as-form-editor-editor-space-container .as-form-preview,\r\n.as-form-editor-editor-space-container .ptswpf {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-form-editor-editor-space-container>div {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-form-editor-resizer.vertical.right-site {\r\n right: calc(23em - 0.2em);\r\n}\r\n\r\n.as-form-editor-right-site-container {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 23em;\r\n border-left: 1px solid #ddd;\r\n}\r\n\r\n.as-form-editor-right-site-container>.as-form-editor-right-site {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-form-editor-editor-space-container>.as-layout-editor {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n\r\ntable.as-form-params {\r\n border-collapse: collapse;\r\n box-sizing: border-box;\r\n}\r\n\r\ntable.as-form-params>tbody>tr>td,\r\ntable.as-form-params>thead>tr>td {\r\n border: 1px solid #eeeeee;\r\n padding: 0.25em;\r\n\r\n}\r\n\r\n.as-form-property-tab>table.as-form-params {\r\n width: calc(100% - 10px);\r\n margin: 5px;\r\n}\r\n\r\ntable.as-form-params>tbody>tr>td>input[type=\"text\"],\r\ntable.as-form-params>tbody>tr>td>textarea {\r\n font-size: 1em;\r\n width: 100%;\r\n box-sizing: border-box;\r\n border: solid 1px #d6d6d6;\r\n outline: none;\r\n}\r\n\r\ntable.as-form-params>tbody>tr>td>textarea {\r\n width: 100% !important;\r\n}\r\n\r\n\r\n.as-form-tool-site {}\r\n\r\n.as-form-left-tool-site-tab .as-component-outline,\r\n.as-form-left-tool-site-tab .as-form-explorer {\r\n height: calc(100% - 2em);\r\n}\r\n\r\n.as-form-tool-site-header {\r\n height: 2em;\r\n padding-left: 1em;\r\n background-color: rgba(169, 169, 169, 0.05);\r\n}\r\n\r\n.as-form-tool-site-header span {\r\n color: rgb(173, 173, 173);\r\n font-size: 0.75em;\r\n line-height: 2.666;\r\n}\r\n\r\n.as-form-tool-site .as-form-search-toolbox {\r\n margin: 0.3em;\r\n}\r\n\r\n.as-form-tool-site .absol-drop-panel {\r\n font-size: 0.7em;\r\n}\r\n\r\n.as-form-explorer .absol-drop-panel {\r\n height: 100%;\r\n}\r\n\r\n.as-form-explorer .absol-drop-panel.show .absol-drop-panel-body {\r\n height: calc(100% - 18px);\r\n}\r\n\r\n\r\n.as-form-editor-editor-space-container>.absol-tabview>.absol-tabbar .absol-tabbar-button {\r\n border-radius: 0;\r\n margin-right: 0;\r\n margin-left: 0;\r\n border-left: none;\r\n border-top: none;\r\n border-bottom: none;\r\n border-right: solid 1px rgba(169, 169, 169, 0.3);\r\n font-size: 1em;\r\n}\r\n\r\n\r\n.as-form-editor-quick-toolbar {\r\n height: 2em;\r\n min-width: 2em;\r\n position: absolute;\r\n z-index: 1;\r\n top: 0;\r\n right: 0;\r\n background-color: rgb(248, 248, 248);\r\n border-bottom: 1px solid #ddd;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-form-editor-quick-toolbar button {\r\n height: 100%;\r\n width: 2em;\r\n border: none;\r\n border-radius: 0;\r\n font-size: 1em;\r\n outline: none;\r\n padding: 0;\r\n background-color: transparent;\r\n}\r\n\r\n.as-form-editor-quick-toolbar button>span {\r\n font-size: 1.3em;\r\n}", ""]); /***/ }), /* 266 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(267); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 267 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-compopnent-picker {}\r\n\r\n\r\n.as-compopnent-picker-forceground {\r\n position: fixed;\r\n z-index: 1000;\r\n cursor: none;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n overflow: hidden;\r\n /* background: rgba(169, 169, 169, 0.1); */\r\n}\r\n\r\n.as-compopnent-picker-higne {\r\n position: relative;\r\n left: 0;\r\n top: 0;\r\n}\r\n\r\n.as-compopnent-picker-add-box-container {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n}\r\n\r\n.as-compopnent-picker-add-box {\r\n position: relative;\r\n width: 2em;\r\n height: 2em;\r\n background: white;\r\n border: 1px solid #d6d6d6;\r\n text-align: center;\r\n opacity: 0.7;\r\n}\r\n\r\n.as-compopnent-picker-add-box.as-can-drop {\r\n opacity: 1;\r\n -webkit-box-shadow: 0px 0px 5px 3px rgba(40, 141, 224, 0.6);\r\n -moz-box-shadow: 0px 0px 5px 3px rgba(40, 141, 224, 0.6);\r\n box-shadow: 0px 0px 5px 3px rgba(40, 141, 224, 0.6);\r\n}\r\n\r\n.as-compopnent-picker-add-box-plus {\r\n position: absolute;\r\n left: -0.5em;\r\n top: -0.5em;\r\n width: 1em;\r\n height: 1em;\r\n text-align: center;\r\n z-index: 1;\r\n}\r\n\r\n.as-compopnent-picker-add-box-plus span {\r\n /* font-size: 0.5em; */\r\n vertical-align: top;\r\n}\r\n\r\n.as-compopnent-picker-add-box>svg,\r\n.as-compopnent-picker-add-box>span {\r\n width: 1.25em;\r\n height: 1.25em;\r\n font-size: 1.25em;\r\n line-height: 1.6;\r\n}", ""]); /***/ }), /* 268 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(269); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 269 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-form-explorer {}\r\n\r\n.as-form-explorer .absol-drop-panel-head {\r\n font-size: 12px;\r\n height: 1.5em;\r\n line-height: 1.5;\r\n}\r\n\r\n.absol-drop-panel-head svg {\r\n width: 0.8em;\r\n height: 0.8em;\r\n line-height: 1.5;\r\n}\r\n\r\n\r\n.as-form-explorer .absol-exp-tree {\r\n font-size: 14px;\r\n}\r\n\r\n.as-form-explorer .absol-drop-panel-head {\r\n position: relative;\r\n}\r\n\r\n.as-form-explorer .absol-drop-panel-head-cmd-button-container {\r\n position: absolute;\r\n top: 0px;\r\n bottom: 0px;\r\n right: 9px;\r\n}\r\n\r\n.as-form-explorer .absol-drop-panel-head-cmd-button-container>button {\r\n width: 1.5em;\r\n height: 1.5em;\r\n font-size: 1em;\r\n margin-left: 0.3em;\r\n padding: 0;\r\n background-color: transparent;\r\n vertical-align: middle;\r\n border: none;\r\n border-radius: 0.3em;\r\n outline: none;\r\n}\r\n\r\n\r\n.as-form-explorer .absol-drop-panel-head-cmd-button-container>button:hover{\r\n background-color: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n\r\n.as-form-explorer .absol-drop-panel-head-cmd-button-container>button:hover{\r\n background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n\r\n.as-form-explorer .absol-drop-panel-head-cmd-button-container>button>span{\r\n width: 1.2em;\r\n height: 1.2em;\r\n}\r\n\r\n.as-form-explorer .absol-drop-panel-head-cmd-button-container>button>span{\r\n font-size: 1.2em;\r\n}", ""]); /***/ }), /* 270 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(271); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 271 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-form-cmd-tool-window .absol-onscreen-window-body-container {\r\n overflow-y: auto;\r\n}\r\n\r\n.as-from-tool-button {\r\n font-size: 12px;\r\n height: 2em;\r\n width: 2em;\r\n background-color: transparent;\r\n padding: 0;\r\n vertical-align: middle;\r\n border: none;\r\n border-radius: 0.3em;\r\n outline: none;\r\n}\r\n\r\n.as-from-tool-button:not(:disabled):hover {\r\n background-color: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n.as-from-tool-button:not(:disabled):active {\r\n background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n.as-from-tool-button > span {\r\n font-size: 1.5em;\r\n}\r\n\r\n.as-from-tool-button > svg {\r\n width: 1.5em;\r\n height: 1.5em;\r\n}\r\n\r\n.as-from-tool-button:not(:disabled) > span.mdi-delete-variant {\r\n color: red;\r\n}\r\n\r\n.as-from-tool-button:disabled > span {\r\n color: #c4c4c4;\r\n}\r\n\r\n.as-from-tool-button:disabled > svg > path {\r\n fill: #c4c4c4;\r\n}\r\n\r\n.as-from-tool-group-buttons {\r\n margin-right: 2px;\r\n\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-from-tool-group-buttons .as-from-tool-group-buttons:not(:last-child) {\r\n border-right: 0.5px solid #ddd;\r\n}\r\n\r\n.as-from-tool-group-buttons .as-from-tool-group-buttons:not(:first-child) {\r\n border-left: 0.5px solid #ddd;\r\n}\r\n\r\n.absol-tooltip-root {\r\n z-index: 100;\r\n}\r\n\r\n.as-from-tool-group-buttons:empty {\r\n display: none;\r\n}\r\n\r\n\r\n.as-form-cmd-tool-menu-trigger {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n color: #ddd;\r\n}\r\n\r\n.as-form-cmd-tool-window .absol-onscreen-window-head-bar-button-dock {\r\n display: none;\r\n}\r\n\r\n\r\n.as-form-cmd-tool-window .as-form-cmd-tool-menu-trigger {\r\n display: none;\r\n}", ""]); /***/ }), /* 272 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(273); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 273 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".ace_editor ::-webkit-scrollbar {\r\n width: 17px;\r\n} \r\n\r\n/* Track */\r\n.ace_editor ::-webkit-scrollbar-track {\r\n background: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n/* Handle */\r\n.ace_editor ::-webkit-scrollbar-thumb {\r\n background: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n/* Handle on hover */\r\n.ace_editor ::-webkit-scrollbar-thumb:hover {\r\n background: rgba(85, 85, 85, 0.445);\r\n}\r\n\r\n\r\n.ace_editor div {\r\n scrollbar-color: rgba(169, 169, 169, 0.3) rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n", ""]); /***/ }), /* 274 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(275); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 275 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".brace-diff {\r\n position: relative;\r\n}\r\n\r\n\r\n.brace-diff-left-container {\r\n position: absolute;\r\n left: 0;\r\n width: calc(50% - 3.5em);\r\n top: 0;\r\n bottom: 0;\r\n background: gray;\r\n}\r\n\r\n\r\n.brace-diff-right-container {\r\n right: 0;\r\n position: absolute;\r\n width: calc(50% - 3.5em);\r\n top: 0;\r\n bottom: 0;\r\n background: gray;\r\n \r\n}\r\n\r\n.brace-diff-middle-tool-container{\r\n position: absolute;\r\n left:calc(50% - 3.5em - 19px) ;\r\n right: calc(50% - 3.5em - 19px);\r\n top: 0;\r\n bottom: 0;\r\n z-index: 9;\r\n pointer-events: none;\r\n}\r\n\r\n.brace-diff-middle-tool{\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n}\r\n\r\n.brace-diff-left-container>pre,\r\n.brace-diff-right-container>pre {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n}\r\n\r\n.brace-diff-foreground {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 7;\r\n pointer-events: none;\r\n}\r\n\r\n.brace-diff-foreground>svg {\r\n /*todo*/\r\n margin: 0;\r\n pointer-events: none;\r\n}\r\n\r\npath.brace-diff-gap{\r\n fill:rgba(9, 205, 231, 0.1);\r\n stroke:rgba(8, 73, 82, 0.5);\r\n stroke-width: 1;\r\n}\r\n\r\nbutton.brace-diff-arrow{\r\n height: 14px;\r\n width: 19px; \r\n padding: 0;\r\n position: absolute;\r\n outline: none;\r\n border: solid 1px rgba(169, 169, 169,1); \r\n background-color: white;\r\n pointer-events: all;\r\n \r\n}\r\n\r\nbutton.brace-diff-arrow.pick-left{\r\n left: 0;\r\n}\r\n\r\nbutton.brace-diff-arrow.pick-left >svg{\r\n fill:rgb(226, 35, 35);\r\n}\r\n\r\nbutton.brace-diff-arrow.pick-right >svg{\r\n fill:rgb(35, 134, 226);\r\n}\r\n\r\nbutton.brace-diff-arrow.pick-right{\r\n right: 0;\r\n}\r\n\r\nbutton.brace-diff-arrow> svg{\r\n height: 12px;\r\n width: 12px;\r\n}", ""]); /***/ }), /* 276 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(277); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 277 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-code-editor{\r\n margin: 0;\r\n}", ""]); /***/ }), /* 278 */ /***/ (function(module, exports) { ace.define("ace/occur",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"], function(acequire, exports, module) { "use strict"; var oop = acequire("./lib/oop"); var Range = acequire("./range").Range; var Search = acequire("./search").Search; var EditSession = acequire("./edit_session").EditSession; var SearchHighlight = acequire("./search_highlight").SearchHighlight; function Occur() {} oop.inherits(Occur, Search); (function() { this.enter = function(editor, options) { if (!options.needle) return false; var pos = editor.getCursorPosition(); this.displayOccurContent(editor, options); var translatedPos = this.originalToOccurPosition(editor.session, pos); editor.moveCursorToPosition(translatedPos); return true; }; this.exit = function(editor, options) { var pos = options.translatePosition && editor.getCursorPosition(); var translatedPos = pos && this.occurToOriginalPosition(editor.session, pos); this.displayOriginalContent(editor); if (translatedPos) editor.moveCursorToPosition(translatedPos); return true; }; this.highlight = function(sess, regexp) { var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker( new SearchHighlight(null, "ace_occur-highlight", "text")); hl.setRegexp(regexp); sess._emit("changeBackMarker"); // force highlight layer redraw }; this.displayOccurContent = function(editor, options) { this.$originalSession = editor.session; var found = this.matchingLines(editor.session, options); var lines = found.map(function(foundLine) { return foundLine.content; }); var occurSession = new EditSession(lines.join('\n')); occurSession.$occur = this; occurSession.$occurMatchingLines = found; editor.setSession(occurSession); this.$useEmacsStyleLineStart = this.$originalSession.$useEmacsStyleLineStart; occurSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; this.highlight(occurSession, options.re); occurSession._emit('changeBackMarker'); }; this.displayOriginalContent = function(editor) { editor.setSession(this.$originalSession); this.$originalSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; }; this.originalToOccurPosition = function(session, pos) { var lines = session.$occurMatchingLines; var nullPos = {row: 0, column: 0}; if (!lines) return nullPos; for (var i = 0; i < lines.length; i++) { if (lines[i].row === pos.row) return {row: i, column: pos.column}; } return nullPos; }; this.occurToOriginalPosition = function(session, pos) { var lines = session.$occurMatchingLines; if (!lines || !lines[pos.row]) return pos; return {row: lines[pos.row].row, column: pos.column}; }; this.matchingLines = function(session, options) { options = oop.mixin({}, options); if (!session || !options.needle) return []; var search = new Search(); search.set(options); return search.findAll(session).reduce(function(lines, range) { var row = range.start.row; var last = lines[lines.length-1]; return last && last.row === row ? lines : lines.concat({row: row, content: session.getLine(row)}); }, []); }; }).call(Occur.prototype); var dom = acequire('./lib/dom'); dom.importCssString(".ace_occur-highlight {\n\ border-radius: 4px;\n\ background-color: rgba(87, 255, 8, 0.25);\n\ position: absolute;\n\ z-index: 4;\n\ -moz-box-sizing: border-box;\n\ -webkit-box-sizing: border-box;\n\ box-sizing: border-box;\n\ box-shadow: 0 0 4px rgb(91, 255, 50);\n\ }\n\ .ace_dark .ace_occur-highlight {\n\ background-color: rgb(80, 140, 85);\n\ box-shadow: 0 0 4px rgb(60, 120, 70);\n\ }\n", "incremental-occur-highlighting"); exports.Occur = Occur; }); ace.define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"], function(acequire, exports, module) { var config = acequire("../config"), Occur = acequire("../occur").Occur; var occurStartCommand = { name: "occur", exec: function(editor, options) { var alreadyInOccur = !!editor.session.$occur; var occurSessionActive = new Occur().enter(editor, options); if (occurSessionActive && !alreadyInOccur) OccurKeyboardHandler.installIn(editor); }, readOnly: true }; var occurCommands = [{ name: "occurexit", bindKey: 'esc|Ctrl-G', exec: function(editor) { var occur = editor.session.$occur; if (!occur) return; occur.exit(editor, {}); if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); }, readOnly: true }, { name: "occuraccept", bindKey: 'enter', exec: function(editor) { var occur = editor.session.$occur; if (!occur) return; occur.exit(editor, {translatePosition: true}); if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); }, readOnly: true }]; var HashHandler = acequire("../keyboard/hash_handler").HashHandler; var oop = acequire("../lib/oop"); function OccurKeyboardHandler() {} oop.inherits(OccurKeyboardHandler, HashHandler); (function() { this.isOccurHandler = true; this.attach = function(editor) { HashHandler.call(this, occurCommands, editor.commands.platform); this.$editor = editor; }; var handleKeyboard$super = this.handleKeyboard; this.handleKeyboard = function(data, hashId, key, keyCode) { var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); return (cmd && cmd.command) ? cmd : undefined; }; }).call(OccurKeyboardHandler.prototype); OccurKeyboardHandler.installIn = function(editor) { var handler = new this(); editor.keyBinding.addKeyboardHandler(handler); editor.commands.addCommands(occurCommands); }; OccurKeyboardHandler.uninstallFrom = function(editor) { editor.commands.removeCommands(occurCommands); var handler = editor.getKeyboardHandler(); if (handler.isOccurHandler) editor.keyBinding.removeKeyboardHandler(handler); }; exports.occurStartCommand = occurStartCommand; }); ace.define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"], function(acequire, exports, module) { var config = acequire("../config"); var oop = acequire("../lib/oop"); var HashHandler = acequire("../keyboard/hash_handler").HashHandler; var occurStartCommand = acequire("./occur_commands").occurStartCommand; exports.iSearchStartCommands = [{ name: "iSearch", bindKey: {win: "Ctrl-F", mac: "Command-F"}, exec: function(editor, options) { config.loadModule(["core", "ace/incremental_search"], function(e) { var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch(); iSearch.activate(editor, options.backwards); if (options.jumpToFirstMatch) iSearch.next(options); }); }, readOnly: true }, { name: "iSearchBackwards", exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {backwards: true}); }, readOnly: true }, { name: "iSearchAndGo", bindKey: {win: "Ctrl-K", mac: "Command-G"}, exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {jumpToFirstMatch: true, useCurrentOrPrevSearch: true}); }, readOnly: true }, { name: "iSearchBackwardsAndGo", bindKey: {win: "Ctrl-Shift-K", mac: "Command-Shift-G"}, exec: function(editor) { editor.execCommand('iSearch', {jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true}); }, readOnly: true }]; exports.iSearchCommands = [{ name: "restartSearch", bindKey: {win: "Ctrl-F", mac: "Command-F"}, exec: function(iSearch) { iSearch.cancelSearch(true); } }, { name: "searchForward", bindKey: {win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G"}, exec: function(iSearch, options) { options.useCurrentOrPrevSearch = true; iSearch.next(options); } }, { name: "searchBackward", bindKey: {win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G"}, exec: function(iSearch, options) { options.useCurrentOrPrevSearch = true; options.backwards = true; iSearch.next(options); } }, { name: "extendSearchTerm", exec: function(iSearch, string) { iSearch.addString(string); } }, { name: "extendSearchTermSpace", bindKey: "space", exec: function(iSearch) { iSearch.addString(' '); } }, { name: "shrinkSearchTerm", bindKey: "backspace", exec: function(iSearch) { iSearch.removeChar(); } }, { name: 'confirmSearch', bindKey: 'return', exec: function(iSearch) { iSearch.deactivate(); } }, { name: 'cancelSearch', bindKey: 'esc|Ctrl-G', exec: function(iSearch) { iSearch.deactivate(true); } }, { name: 'occurisearch', bindKey: 'Ctrl-O', exec: function(iSearch) { var options = oop.mixin({}, iSearch.$options); iSearch.deactivate(); occurStartCommand.exec(iSearch.$editor, options); } }, { name: "yankNextWord", bindKey: "Ctrl-w", exec: function(iSearch) { var ed = iSearch.$editor, range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorWordRight(); }), string = ed.session.getTextRange(range); iSearch.addString(string); } }, { name: "yankNextChar", bindKey: "Ctrl-Alt-y", exec: function(iSearch) { var ed = iSearch.$editor, range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorRight(); }), string = ed.session.getTextRange(range); iSearch.addString(string); } }, { name: 'recenterTopBottom', bindKey: 'Ctrl-l', exec: function(iSearch) { iSearch.$editor.execCommand('recenterTopBottom'); } }, { name: 'selectAllMatches', bindKey: 'Ctrl-space', exec: function(iSearch) { var ed = iSearch.$editor, hl = ed.session.$isearchHighlight, ranges = hl && hl.cache ? hl.cache .reduce(function(ranges, ea) { return ranges.concat(ea ? ea : []); }, []) : []; iSearch.deactivate(false); ranges.forEach(ed.selection.addRange.bind(ed.selection)); } }, { name: 'searchAsRegExp', bindKey: 'Alt-r', exec: function(iSearch) { iSearch.convertNeedleToRegExp(); } }].map(function(cmd) { cmd.readOnly = true; cmd.isIncrementalSearchCommand = true; cmd.scrollIntoView = "animate-cursor"; return cmd; }); function IncrementalSearchKeyboardHandler(iSearch) { this.$iSearch = iSearch; } oop.inherits(IncrementalSearchKeyboardHandler, HashHandler); (function() { this.attach = function(editor) { var iSearch = this.$iSearch; HashHandler.call(this, exports.iSearchCommands, editor.commands.platform); this.$commandExecHandler = editor.commands.addEventListener('exec', function(e) { if (!e.command.isIncrementalSearchCommand) return iSearch.deactivate(); e.stopPropagation(); e.preventDefault(); var scrollTop = editor.session.getScrollTop(); var result = e.command.exec(iSearch, e.args || {}); editor.renderer.scrollCursorIntoView(null, 0.5); editor.renderer.animateScrolling(scrollTop); return result; }); }; this.detach = function(editor) { if (!this.$commandExecHandler) return; editor.commands.removeEventListener('exec', this.$commandExecHandler); delete this.$commandExecHandler; }; var handleKeyboard$super = this.handleKeyboard; this.handleKeyboard = function(data, hashId, key, keyCode) { if (((hashId === 1/*ctrl*/ || hashId === 8/*command*/) && key === 'v') || (hashId === 1/*ctrl*/ && key === 'y')) return null; var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); if (cmd.command) { return cmd; } if (hashId == -1) { var extendCmd = this.commands.extendSearchTerm; if (extendCmd) { return {command: extendCmd, args: key}; } } return false; }; }).call(IncrementalSearchKeyboardHandler.prototype); exports.IncrementalSearchKeyboardHandler = IncrementalSearchKeyboardHandler; }); ace.define("ace/incremental_search",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"], function(acequire, exports, module) { "use strict"; var oop = acequire("./lib/oop"); var Range = acequire("./range").Range; var Search = acequire("./search").Search; var SearchHighlight = acequire("./search_highlight").SearchHighlight; var iSearchCommandModule = acequire("./commands/incremental_search_commands"); var ISearchKbd = iSearchCommandModule.IncrementalSearchKeyboardHandler; function IncrementalSearch() { this.$options = {wrap: false, skipCurrent: false}; this.$keyboardHandler = new ISearchKbd(this); } oop.inherits(IncrementalSearch, Search); function isRegExp(obj) { return obj instanceof RegExp; } function regExpToObject(re) { var string = String(re), start = string.indexOf('/'), flagStart = string.lastIndexOf('/'); return { expression: string.slice(start+1, flagStart), flags: string.slice(flagStart+1) }; } function stringToRegExp(string, flags) { try { return new RegExp(string, flags); } catch (e) { return string; } } function objectToRegExp(obj) { return stringToRegExp(obj.expression, obj.flags); } (function() { this.activate = function(ed, backwards) { this.$editor = ed; this.$startPos = this.$currentPos = ed.getCursorPosition(); this.$options.needle = ''; this.$options.backwards = backwards; ed.keyBinding.addKeyboardHandler(this.$keyboardHandler); this.$originalEditorOnPaste = ed.onPaste; ed.onPaste = this.onPaste.bind(this); this.$mousedownHandler = ed.addEventListener('mousedown', this.onMouseDown.bind(this)); this.selectionFix(ed); this.statusMessage(true); }; this.deactivate = function(reset) { this.cancelSearch(reset); var ed = this.$editor; ed.keyBinding.removeKeyboardHandler(this.$keyboardHandler); if (this.$mousedownHandler) { ed.removeEventListener('mousedown', this.$mousedownHandler); delete this.$mousedownHandler; } ed.onPaste = this.$originalEditorOnPaste; this.message(''); }; this.selectionFix = function(editor) { if (editor.selection.isEmpty() && !editor.session.$emacsMark) { editor.clearSelection(); } }; this.highlight = function(regexp) { var sess = this.$editor.session, hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker( new SearchHighlight(null, "ace_isearch-result", "text")); hl.setRegexp(regexp); sess._emit("changeBackMarker"); // force highlight layer redraw }; this.cancelSearch = function(reset) { var e = this.$editor; this.$prevNeedle = this.$options.needle; this.$options.needle = ''; if (reset) { e.moveCursorToPosition(this.$startPos); this.$currentPos = this.$startPos; } else { e.pushEmacsMark && e.pushEmacsMark(this.$startPos, false); } this.highlight(null); return Range.fromPoints(this.$currentPos, this.$currentPos); }; this.highlightAndFindWithNeedle = function(moveToNext, needleUpdateFunc) { if (!this.$editor) return null; var options = this.$options; if (needleUpdateFunc) { options.needle = needleUpdateFunc.call(this, options.needle || '') || ''; } if (options.needle.length === 0) { this.statusMessage(true); return this.cancelSearch(true); } options.start = this.$currentPos; var session = this.$editor.session, found = this.find(session), shouldSelect = this.$editor.emacsMark ? !!this.$editor.emacsMark() : !this.$editor.selection.isEmpty(); if (found) { if (options.backwards) found = Range.fromPoints(found.end, found.start); this.$editor.selection.setRange(Range.fromPoints(shouldSelect ? this.$startPos : found.end, found.end)); if (moveToNext) this.$currentPos = found.end; this.highlight(options.re); } this.statusMessage(found); return found; }; this.addString = function(s) { return this.highlightAndFindWithNeedle(false, function(needle) { if (!isRegExp(needle)) return needle + s; var reObj = regExpToObject(needle); reObj.expression += s; return objectToRegExp(reObj); }); }; this.removeChar = function(c) { return this.highlightAndFindWithNeedle(false, function(needle) { if (!isRegExp(needle)) return needle.substring(0, needle.length-1); var reObj = regExpToObject(needle); reObj.expression = reObj.expression.substring(0, reObj.expression.length-1); return objectToRegExp(reObj); }); }; this.next = function(options) { options = options || {}; this.$options.backwards = !!options.backwards; this.$currentPos = this.$editor.getCursorPosition(); return this.highlightAndFindWithNeedle(true, function(needle) { return options.useCurrentOrPrevSearch && needle.length === 0 ? this.$prevNeedle || '' : needle; }); }; this.onMouseDown = function(evt) { this.deactivate(); return true; }; this.onPaste = function(text) { this.addString(text); }; this.convertNeedleToRegExp = function() { return this.highlightAndFindWithNeedle(false, function(needle) { return isRegExp(needle) ? needle : stringToRegExp(needle, 'ig'); }); }; this.convertNeedleToString = function() { return this.highlightAndFindWithNeedle(false, function(needle) { return isRegExp(needle) ? regExpToObject(needle).expression : needle; }); }; this.statusMessage = function(found) { var options = this.$options, msg = ''; msg += options.backwards ? 'reverse-' : ''; msg += 'isearch: ' + options.needle; msg += found ? '' : ' (not found)'; this.message(msg); }; this.message = function(msg) { if (this.$editor.showCommandLine) { this.$editor.showCommandLine(msg); this.$editor.focus(); } else { console.log(msg); } }; }).call(IncrementalSearch.prototype); exports.IncrementalSearch = IncrementalSearch; var dom = acequire('./lib/dom'); dom.importCssString && dom.importCssString("\ .ace_marker-layer .ace_isearch-result {\ position: absolute;\ z-index: 6;\ -moz-box-sizing: border-box;\ -webkit-box-sizing: border-box;\ box-sizing: border-box;\ }\ div.ace_isearch-result {\ border-radius: 4px;\ background-color: rgba(255, 200, 0, 0.5);\ box-shadow: 0 0 4px rgb(255, 200, 0);\ }\ .ace_dark div.ace_isearch-result {\ background-color: rgb(100, 110, 160);\ box-shadow: 0 0 4px rgb(80, 90, 140);\ }", "incremental-search-highlighting"); var commands = acequire("./commands/command_manager"); (function() { this.setupIncrementalSearch = function(editor, val) { if (this.usesIncrementalSearch == val) return; this.usesIncrementalSearch = val; var iSearchCommands = iSearchCommandModule.iSearchStartCommands; var method = val ? 'addCommands' : 'removeCommands'; this[method](iSearchCommands); }; }).call(commands.CommandManager.prototype); var Editor = acequire("./editor").Editor; acequire("./config").defineOptions(Editor.prototype, "editor", { useIncrementalSearch: { set: function(val) { this.keyBinding.$handlers.forEach(function(handler) { if (handler.setupIncrementalSearch) { handler.setupIncrementalSearch(this, val); } }); this._emit('incrementalSearchSettingChanged', {isEnabled: val}); } } }); }); ace.define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"], function(acequire, exports, module) { "use strict"; var dom = acequire("../lib/dom"); acequire("../incremental_search"); var iSearchCommandModule = acequire("../commands/incremental_search_commands"); var screenToTextBlockCoordinates = function(x, y) { var canvasPos = this.scroller.getBoundingClientRect(); var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; var col = Math.floor(offsetX / this.characterWidth); var row = Math.floor( (y + this.scrollTop - canvasPos.top) / this.lineHeight ); return this.session.screenToDocumentPosition(row, col, offsetX); }; var HashHandler = acequire("./hash_handler").HashHandler; exports.handler = new HashHandler(); exports.handler.isEmacs = true; exports.handler.$id = "ace/keyboard/emacs"; var initialized = false; var $formerLongWords; var $formerLineStart; exports.handler.attach = function(editor) { if (!initialized) { initialized = true; dom.importCssString('\ .emacs-mode .ace_cursor{\ border: 1px rgba(50,250,50,0.8) solid!important;\ -moz-box-sizing: border-box!important;\ -webkit-box-sizing: border-box!important;\ box-sizing: border-box!important;\ background-color: rgba(0,250,0,0.9);\ opacity: 0.5;\ }\ .emacs-mode .ace_hidden-cursors .ace_cursor{\ opacity: 1;\ background-color: transparent;\ }\ .emacs-mode .ace_overwrite-cursors .ace_cursor {\ opacity: 1;\ background-color: transparent;\ border-width: 0 0 2px 2px !important;\ }\ .emacs-mode .ace_text-layer {\ z-index: 4\ }\ .emacs-mode .ace_cursor-layer {\ z-index: 2\ }', 'emacsMode' ); } $formerLongWords = editor.session.$selectLongWords; editor.session.$selectLongWords = true; $formerLineStart = editor.session.$useEmacsStyleLineStart; editor.session.$useEmacsStyleLineStart = true; editor.session.$emacsMark = null; // the active mark editor.session.$emacsMarkRing = editor.session.$emacsMarkRing || []; editor.emacsMark = function() { return this.session.$emacsMark; }; editor.setEmacsMark = function(p) { this.session.$emacsMark = p; }; editor.pushEmacsMark = function(p, activate) { var prevMark = this.session.$emacsMark; if (prevMark) this.session.$emacsMarkRing.push(prevMark); if (!p || activate) this.setEmacsMark(p); else this.session.$emacsMarkRing.push(p); }; editor.popEmacsMark = function() { var mark = this.emacsMark(); if (mark) { this.setEmacsMark(null); return mark; } return this.session.$emacsMarkRing.pop(); }; editor.getLastEmacsMark = function(p) { return this.session.$emacsMark || this.session.$emacsMarkRing.slice(-1)[0]; }; editor.emacsMarkForSelection = function(replacement) { var sel = this.selection, multiRangeLength = this.multiSelect ? this.multiSelect.getAllRanges().length : 1, selIndex = sel.index || 0, markRing = this.session.$emacsMarkRing, markIndex = markRing.length - (multiRangeLength - selIndex), lastMark = markRing[markIndex] || sel.anchor; if (replacement) { markRing.splice(markIndex, 1, "row" in replacement && "column" in replacement ? replacement : undefined); } return lastMark; }; editor.on("click", $resetMarkMode); editor.on("changeSession", $kbSessionChange); editor.renderer.screenToTextCoordinates = screenToTextBlockCoordinates; editor.setStyle("emacs-mode"); editor.commands.addCommands(commands); exports.handler.platform = editor.commands.platform; editor.$emacsModeHandler = this; editor.addEventListener('copy', this.onCopy); editor.addEventListener('paste', this.onPaste); }; exports.handler.detach = function(editor) { delete editor.renderer.screenToTextCoordinates; editor.session.$selectLongWords = $formerLongWords; editor.session.$useEmacsStyleLineStart = $formerLineStart; editor.removeEventListener("click", $resetMarkMode); editor.removeEventListener("changeSession", $kbSessionChange); editor.unsetStyle("emacs-mode"); editor.commands.removeCommands(commands); editor.removeEventListener('copy', this.onCopy); editor.removeEventListener('paste', this.onPaste); editor.$emacsModeHandler = null; }; var $kbSessionChange = function(e) { if (e.oldSession) { e.oldSession.$selectLongWords = $formerLongWords; e.oldSession.$useEmacsStyleLineStart = $formerLineStart; } $formerLongWords = e.session.$selectLongWords; e.session.$selectLongWords = true; $formerLineStart = e.session.$useEmacsStyleLineStart; e.session.$useEmacsStyleLineStart = true; if (!e.session.hasOwnProperty('$emacsMark')) e.session.$emacsMark = null; if (!e.session.hasOwnProperty('$emacsMarkRing')) e.session.$emacsMarkRing = []; }; var $resetMarkMode = function(e) { e.editor.session.$emacsMark = null; }; var keys = acequire("../lib/keys").KEY_MODS; var eMods = {C: "ctrl", S: "shift", M: "alt", CMD: "command"}; var combinations = ["C-S-M-CMD", "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M", "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S", "CMD", "M", "S", "C"]; combinations.forEach(function(c) { var hashId = 0; c.split("-").forEach(function(c) { hashId = hashId | keys[eMods[c]]; }); eMods[hashId] = c.toLowerCase() + "-"; }); exports.handler.onCopy = function(e, editor) { if (editor.$handlesEmacsOnCopy) return; editor.$handlesEmacsOnCopy = true; exports.handler.commands.killRingSave.exec(editor); editor.$handlesEmacsOnCopy = false; }; exports.handler.onPaste = function(e, editor) { editor.pushEmacsMark(editor.getCursorPosition()); }; exports.handler.bindKey = function(key, command) { if (typeof key == "object") key = key[this.platform]; if (!key) return; var ckb = this.commandKeyBinding; key.split("|").forEach(function(keyPart) { keyPart = keyPart.toLowerCase(); ckb[keyPart] = command; var keyParts = keyPart.split(" ").slice(0,-1); keyParts.reduce(function(keyMapKeys, keyPart, i) { var prefix = keyMapKeys[i-1] ? keyMapKeys[i-1] + ' ' : ''; return keyMapKeys.concat([prefix + keyPart]); }, []).forEach(function(keyPart) { if (!ckb[keyPart]) ckb[keyPart] = "null"; }); }, this); }; exports.handler.getStatusText = function(editor, data) { var str = ""; if (data.count) str += data.count; if (data.keyChain) str += " " + data.keyChain; return str; }; exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { if (keyCode === -1) return undefined; var editor = data.editor; editor._signal("changeStatus"); if (hashId == -1) { editor.pushEmacsMark(); if (data.count) { var str = new Array(data.count + 1).join(key); data.count = null; return {command: "insertstring", args: str}; } } var modifier = eMods[hashId]; if (modifier == "c-" || data.count) { var count = parseInt(key[key.length - 1]); if (typeof count === 'number' && !isNaN(count)) { data.count = Math.max(data.count, 0) || 0; data.count = 10 * data.count + count; return {command: "null"}; } } if (modifier) key = modifier + key; if (data.keyChain) key = data.keyChain += " " + key; var command = this.commandKeyBinding[key]; data.keyChain = command == "null" ? key : ""; if (!command) return undefined; if (command === "null") return {command: "null"}; if (command === "universalArgument") { data.count = -4; return {command: "null"}; } var args; if (typeof command !== "string") { args = command.args; if (command.command) command = command.command; if (command === "goorselect") { command = editor.emacsMark() ? args[1] : args[0]; args = null; } } if (typeof command === "string") { if (command === "insertstring" || command === "splitline" || command === "togglecomment") { editor.pushEmacsMark(); } command = this.commands[command] || editor.commands.commands[command]; if (!command) return undefined; } if (!command.readOnly && !command.isYank) data.lastCommand = null; if (!command.readOnly && editor.emacsMark()) editor.setEmacsMark(null); if (data.count) { var count = data.count; data.count = 0; if (!command || !command.handlesCount) { return { args: args, command: { exec: function(editor, args) { for (var i = 0; i < count; i++) command.exec(editor, args); }, multiSelectAction: command.multiSelectAction } }; } else { if (!args) args = {}; if (typeof args === 'object') args.count = count; } } return {command: command, args: args}; }; exports.emacsKeys = { "Up|C-p" : {command: "goorselect", args: ["golineup","selectup"]}, "Down|C-n" : {command: "goorselect", args: ["golinedown","selectdown"]}, "Left|C-b" : {command: "goorselect", args: ["gotoleft","selectleft"]}, "Right|C-f" : {command: "goorselect", args: ["gotoright","selectright"]}, "C-Left|M-b" : {command: "goorselect", args: ["gotowordleft","selectwordleft"]}, "C-Right|M-f" : {command: "goorselect", args: ["gotowordright","selectwordright"]}, "Home|C-a" : {command: "goorselect", args: ["gotolinestart","selecttolinestart"]}, "End|C-e" : {command: "goorselect", args: ["gotolineend","selecttolineend"]}, "C-Home|S-M-,": {command: "goorselect", args: ["gotostart","selecttostart"]}, "C-End|S-M-." : {command: "goorselect", args: ["gotoend","selecttoend"]}, "S-Up|S-C-p" : "selectup", "S-Down|S-C-n" : "selectdown", "S-Left|S-C-b" : "selectleft", "S-Right|S-C-f" : "selectright", "S-C-Left|S-M-b" : "selectwordleft", "S-C-Right|S-M-f" : "selectwordright", "S-Home|S-C-a" : "selecttolinestart", "S-End|S-C-e" : "selecttolineend", "S-C-Home" : "selecttostart", "S-C-End" : "selecttoend", "C-l" : "recenterTopBottom", "M-s" : "centerselection", "M-g": "gotoline", "C-x C-p": "selectall", "C-Down": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, "C-Up": {command: "goorselect", args: ["gotopageup","selectpageup"]}, "PageDown|C-v": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, "PageUp|M-v": {command: "goorselect", args: ["gotopageup","selectpageup"]}, "S-C-Down": "selectpagedown", "S-C-Up": "selectpageup", "C-s": "iSearch", "C-r": "iSearchBackwards", "M-C-s": "findnext", "M-C-r": "findprevious", "S-M-5": "replace", "Backspace": "backspace", "Delete|C-d": "del", "Return|C-m": {command: "insertstring", args: "\n"}, // "newline" "C-o": "splitline", "M-d|C-Delete": {command: "killWord", args: "right"}, "C-Backspace|M-Backspace|M-Delete": {command: "killWord", args: "left"}, "C-k": "killLine", "C-y|S-Delete": "yank", "M-y": "yankRotate", "C-g": "keyboardQuit", "C-w|C-S-W": "killRegion", "M-w": "killRingSave", "C-Space": "setMark", "C-x C-x": "exchangePointAndMark", "C-t": "transposeletters", "M-u": "touppercase", // Doesn't work "M-l": "tolowercase", "M-/": "autocomplete", // Doesn't work "C-u": "universalArgument", "M-;": "togglecomment", "C-/|C-x u|S-C--|C-z": "undo", "S-C-/|S-C-x u|C--|S-C-z": "redo", // infinite undo? "C-x r": "selectRectangularRegion", "M-x": {command: "focusCommandLine", args: "M-x "} }; exports.handler.bindKeys(exports.emacsKeys); exports.handler.addCommands({ recenterTopBottom: function(editor) { var renderer = editor.renderer; var pos = renderer.$cursorLayer.getPixelPosition(); var h = renderer.$size.scrollerHeight - renderer.lineHeight; var scrollTop = renderer.scrollTop; if (Math.abs(pos.top - scrollTop) < 2) { scrollTop = pos.top - h; } else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) { scrollTop = pos.top; } else { scrollTop = pos.top - h * 0.5; } editor.session.setScrollTop(scrollTop); }, selectRectangularRegion: function(editor) { editor.multiSelect.toggleBlockSelection(); }, setMark: { exec: function(editor, args) { if (args && args.count) { if (editor.inMultiSelectMode) editor.forEachSelection(moveToMark); else moveToMark(); moveToMark(); return; } var mark = editor.emacsMark(), ranges = editor.selection.getAllRanges(), rangePositions = ranges.map(function(r) { return {row: r.start.row, column: r.start.column}; }), transientMarkModeActive = true, hasNoSelection = ranges.every(function(range) { return range.isEmpty(); }); if (transientMarkModeActive && (mark || !hasNoSelection)) { if (editor.inMultiSelectMode) editor.forEachSelection({exec: editor.clearSelection.bind(editor)}); else editor.clearSelection(); if (mark) editor.pushEmacsMark(null); return; } if (!mark) { rangePositions.forEach(function(pos) { editor.pushEmacsMark(pos); }); editor.setEmacsMark(rangePositions[rangePositions.length-1]); return; } function moveToMark() { var mark = editor.popEmacsMark(); mark && editor.moveCursorToPosition(mark); } }, readOnly: true, handlesCount: true }, exchangePointAndMark: { exec: function exchangePointAndMark$exec(editor, args) { var sel = editor.selection; if (!args.count && !sel.isEmpty()) { // just invert selection sel.setSelectionRange(sel.getRange(), !sel.isBackwards()); return; } if (args.count) { // replace mark and point var pos = {row: sel.lead.row, column: sel.lead.column}; sel.clearSelection(); sel.moveCursorToPosition(editor.emacsMarkForSelection(pos)); } else { // create selection to last mark sel.selectToPosition(editor.emacsMarkForSelection()); } }, readOnly: true, handlesCount: true, multiSelectAction: "forEach" }, killWord: { exec: function(editor, dir) { editor.clearSelection(); if (dir == "left") editor.selection.selectWordLeft(); else editor.selection.selectWordRight(); var range = editor.getSelectionRange(); var text = editor.session.getTextRange(range); exports.killRing.add(text); editor.session.remove(range); editor.clearSelection(); }, multiSelectAction: "forEach" }, killLine: function(editor) { editor.pushEmacsMark(null); editor.clearSelection(); var range = editor.getSelectionRange(); var line = editor.session.getLine(range.start.row); range.end.column = line.length; line = line.substr(range.start.column); var foldLine = editor.session.getFoldLine(range.start.row); if (foldLine && range.end.row != foldLine.end.row) { range.end.row = foldLine.end.row; line = "x"; } if (/^\s*$/.test(line)) { range.end.row++; line = editor.session.getLine(range.end.row); range.end.column = /^\s*$/.test(line) ? line.length : 0; } var text = editor.session.getTextRange(range); if (editor.prevOp.command == this) exports.killRing.append(text); else exports.killRing.add(text); editor.session.remove(range); editor.clearSelection(); }, yank: function(editor) { editor.onPaste(exports.killRing.get() || ''); editor.keyBinding.$data.lastCommand = "yank"; }, yankRotate: function(editor) { if (editor.keyBinding.$data.lastCommand != "yank") return; editor.undo(); editor.session.$emacsMarkRing.pop(); // also undo recording mark editor.onPaste(exports.killRing.rotate()); editor.keyBinding.$data.lastCommand = "yank"; }, killRegion: { exec: function(editor) { exports.killRing.add(editor.getCopyText()); editor.commands.byName.cut.exec(editor); editor.setEmacsMark(null); }, readOnly: true, multiSelectAction: "forEach" }, killRingSave: { exec: function(editor) { editor.$handlesEmacsOnCopy = true; var marks = editor.session.$emacsMarkRing.slice(), deselectedMarks = []; exports.killRing.add(editor.getCopyText()); setTimeout(function() { function deselect() { var sel = editor.selection, range = sel.getRange(), pos = sel.isBackwards() ? range.end : range.start; deselectedMarks.push({row: pos.row, column: pos.column}); sel.clearSelection(); } editor.$handlesEmacsOnCopy = false; if (editor.inMultiSelectMode) editor.forEachSelection({exec: deselect}); else deselect(); editor.session.$emacsMarkRing = marks.concat(deselectedMarks.reverse()); }, 0); }, readOnly: true }, keyboardQuit: function(editor) { editor.selection.clearSelection(); editor.setEmacsMark(null); editor.keyBinding.$data.count = null; }, focusCommandLine: function(editor, arg) { if (editor.showCommandLine) editor.showCommandLine(arg); } }); exports.handler.addCommands(iSearchCommandModule.iSearchStartCommands); var commands = exports.handler.commands; commands.yank.isYank = true; commands.yankRotate.isYank = true; exports.killRing = { $data: [], add: function(str) { str && this.$data.push(str); if (this.$data.length > 30) this.$data.shift(); }, append: function(str) { var idx = this.$data.length - 1; var text = this.$data[idx] || ""; if (str) text += str; if (text) this.$data[idx] = text; }, get: function(n) { n = n || 1; return this.$data.slice(this.$data.length-n, this.$data.length).reverse().join('\n'); }, pop: function() { if (this.$data.length > 1) this.$data.pop(); return this.get(); }, rotate: function() { this.$data.unshift(this.$data.pop()); return this.get(); } }; }); /***/ }), /* 279 */ /***/ (function(module, exports) { ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(acequire, exports, module) { "use strict"; var dom = acequire("../lib/dom"); var lang = acequire("../lib/lang"); var event = acequire("../lib/event"); var searchboxCss = "\ .ace_search {\ background-color: #ddd;\ color: #666;\ border: 1px solid #cbcbcb;\ border-top: 0 none;\ overflow: hidden;\ margin: 0;\ padding: 4px 6px 0 4px;\ position: absolute;\ top: 0;\ z-index: 99;\ white-space: normal;\ }\ .ace_search.left {\ border-left: 0 none;\ border-radius: 0px 0px 5px 0px;\ left: 0;\ }\ .ace_search.right {\ border-radius: 0px 0px 0px 5px;\ border-right: 0 none;\ right: 0;\ }\ .ace_search_form, .ace_replace_form {\ margin: 0 20px 4px 0;\ overflow: hidden;\ line-height: 1.9;\ }\ .ace_replace_form {\ margin-right: 0;\ }\ .ace_search_form.ace_nomatch {\ outline: 1px solid red;\ }\ .ace_search_field {\ border-radius: 3px 0 0 3px;\ background-color: white;\ color: black;\ border: 1px solid #cbcbcb;\ border-right: 0 none;\ box-sizing: border-box!important;\ outline: 0;\ padding: 0;\ font-size: inherit;\ margin: 0;\ line-height: inherit;\ padding: 0 6px;\ min-width: 17em;\ vertical-align: top;\ }\ .ace_searchbtn {\ border: 1px solid #cbcbcb;\ line-height: inherit;\ display: inline-block;\ padding: 0 6px;\ background: #fff;\ border-right: 0 none;\ border-left: 1px solid #dcdcdc;\ cursor: pointer;\ margin: 0;\ position: relative;\ box-sizing: content-box!important;\ color: #666;\ }\ .ace_searchbtn:last-child {\ border-radius: 0 3px 3px 0;\ border-right: 1px solid #cbcbcb;\ }\ .ace_searchbtn:disabled {\ background: none;\ cursor: default;\ }\ .ace_searchbtn:hover {\ background-color: #eef1f6;\ }\ .ace_searchbtn.prev, .ace_searchbtn.next {\ padding: 0px 0.7em\ }\ .ace_searchbtn.prev:after, .ace_searchbtn.next:after {\ content: \"\";\ border: solid 2px #888;\ width: 0.5em;\ height: 0.5em;\ border-width: 2px 0 0 2px;\ display:inline-block;\ transform: rotate(-45deg);\ }\ .ace_searchbtn.next:after {\ border-width: 0 2px 2px 0 ;\ }\ .ace_searchbtn_close {\ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ border-radius: 50%;\ border: 0 none;\ color: #656565;\ cursor: pointer;\ font: 16px/16px Arial;\ padding: 0;\ height: 14px;\ width: 14px;\ top: 9px;\ right: 7px;\ position: absolute;\ }\ .ace_searchbtn_close:hover {\ background-color: #656565;\ background-position: 50% 100%;\ color: white;\ }\ .ace_button {\ margin-left: 2px;\ cursor: pointer;\ -webkit-user-select: none;\ -moz-user-select: none;\ -o-user-select: none;\ -ms-user-select: none;\ user-select: none;\ overflow: hidden;\ opacity: 0.7;\ border: 1px solid rgba(100,100,100,0.23);\ padding: 1px;\ box-sizing: border-box!important;\ color: black;\ }\ .ace_button:hover {\ background-color: #eee;\ opacity:1;\ }\ .ace_button:active {\ background-color: #ddd;\ }\ .ace_button.checked {\ border-color: #3399ff;\ opacity:1;\ }\ .ace_search_options{\ margin-bottom: 3px;\ text-align: right;\ -webkit-user-select: none;\ -moz-user-select: none;\ -o-user-select: none;\ -ms-user-select: none;\ user-select: none;\ clear: both;\ }\ .ace_search_counter {\ float: left;\ font-family: arial;\ padding: 0 8px;\ }"; var HashHandler = acequire("../keyboard/hash_handler").HashHandler; var keyUtil = acequire("../lib/keys"); var MAX_COUNT = 999; dom.importCssString(searchboxCss, "ace_searchbox"); var html = '<div class="ace_search right">\ <span action="hide" class="ace_searchbtn_close"></span>\ <div class="ace_search_form">\ <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input>\ <span action="findPrev" class="ace_searchbtn prev"></span>\ <span action="findNext" class="ace_searchbtn next"></span>\ <span action="findAll" class="ace_searchbtn" title="Alt-Enter">All</span>\ </div>\ <div class="ace_replace_form">\ <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input>\ <span action="replaceAndFindNext" class="ace_searchbtn">Replace</span>\ <span action="replaceAll" class="ace_searchbtn">All</span>\ </div>\ <div class="ace_search_options">\ <span action="toggleReplace" class="ace_button" title="Toggel Replace mode"\ style="float:left;margin-top:-2px;padding:0 5px;">+</span>\ <span class="ace_search_counter"></span>\ <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span>\ <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span>\ <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span>\ <span action="searchInSelection" class="ace_button" title="Search In Selection">S</span>\ </div>\ </div>'.replace(/> +/g, ">"); var SearchBox = function(editor, range, showReplaceForm) { var div = dom.createElement("div"); div.innerHTML = html; this.element = div.firstChild; this.setSession = this.setSession.bind(this); this.$init(); this.setEditor(editor); }; (function() { this.setEditor = function(editor) { editor.searchBox = this; editor.renderer.scroller.appendChild(this.element); this.editor = editor; }; this.setSession = function(e) { this.searchRange = null; this.$syncOptions(true); }; this.$initElements = function(sb) { this.searchBox = sb.querySelector(".ace_search_form"); this.replaceBox = sb.querySelector(".ace_replace_form"); this.searchOption = sb.querySelector("[action=searchInSelection]"); this.replaceOption = sb.querySelector("[action=toggleReplace]"); this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); this.searchInput = this.searchBox.querySelector(".ace_search_field"); this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); this.searchCounter = sb.querySelector(".ace_search_counter"); }; this.$init = function() { var sb = this.element; this.$initElements(sb); var _this = this; event.addListener(sb, "mousedown", function(e) { setTimeout(function(){ _this.activeInput.focus(); }, 0); event.stopPropagation(e); }); event.addListener(sb, "click", function(e) { var t = e.target || e.srcElement; var action = t.getAttribute("action"); if (action && _this[action]) _this[action](); else if (_this.$searchBarKb.commands[action]) _this.$searchBarKb.commands[action].exec(_this); event.stopPropagation(e); }); event.addCommandKeyListener(sb, function(e, hashId, keyCode) { var keyString = keyUtil.keyCodeToString(keyCode); var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); if (command && command.exec) { command.exec(_this); event.stopEvent(e); } }); this.$onChange = lang.delayedCall(function() { _this.find(false, false); }); event.addListener(this.searchInput, "input", function() { _this.$onChange.schedule(20); }); event.addListener(this.searchInput, "focus", function() { _this.activeInput = _this.searchInput; _this.searchInput.value && _this.highlight(); }); event.addListener(this.replaceInput, "focus", function() { _this.activeInput = _this.replaceInput; _this.searchInput.value && _this.highlight(); }); }; this.$closeSearchBarKb = new HashHandler([{ bindKey: "Esc", name: "closeSearchBar", exec: function(editor) { editor.searchBox.hide(); } }]); this.$searchBarKb = new HashHandler(); this.$searchBarKb.bindKeys({ "Ctrl-f|Command-f": function(sb) { var isReplace = sb.isReplace = !sb.isReplace; sb.replaceBox.style.display = isReplace ? "" : "none"; sb.replaceOption.checked = false; sb.$syncOptions(); sb.searchInput.focus(); }, "Ctrl-H|Command-Option-F": function(sb) { sb.replaceOption.checked = true; sb.$syncOptions(); sb.replaceInput.focus(); }, "Ctrl-G|Command-G": function(sb) { sb.findNext(); }, "Ctrl-Shift-G|Command-Shift-G": function(sb) { sb.findPrev(); }, "esc": function(sb) { setTimeout(function() { sb.hide();}); }, "Return": function(sb) { if (sb.activeInput == sb.replaceInput) sb.replace(); sb.findNext(); }, "Shift-Return": function(sb) { if (sb.activeInput == sb.replaceInput) sb.replace(); sb.findPrev(); }, "Alt-Return": function(sb) { if (sb.activeInput == sb.replaceInput) sb.replaceAll(); sb.findAll(); }, "Tab": function(sb) { (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); } }); this.$searchBarKb.addCommands([{ name: "toggleRegexpMode", bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, exec: function(sb) { sb.regExpOption.checked = !sb.regExpOption.checked; sb.$syncOptions(); } }, { name: "toggleCaseSensitive", bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, exec: function(sb) { sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; sb.$syncOptions(); } }, { name: "toggleWholeWords", bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, exec: function(sb) { sb.wholeWordOption.checked = !sb.wholeWordOption.checked; sb.$syncOptions(); } }, { name: "toggleReplace", exec: function(sb) { sb.replaceOption.checked = !sb.replaceOption.checked; sb.$syncOptions(); } }, { name: "searchInSelection", exec: function(sb) { sb.searchOption.checked = !sb.searchRange; sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); sb.$syncOptions(); } }]); this.setSearchRange = function(range) { this.searchRange = range; if (range) { this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); } else if (this.searchRangeMarker) { this.editor.session.removeMarker(this.searchRangeMarker); this.searchRangeMarker = null; } }; this.$syncOptions = function(preventScroll) { dom.setCssClass(this.replaceOption, "checked", this.searchRange); dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); this.replaceBox.style.display = this.replaceOption.checked ? "" : "none"; this.find(false, false, preventScroll); }; this.highlight = function(re) { this.editor.session.highlight(re || this.editor.$search.$options.re); this.editor.renderer.updateBackMarkers(); }; this.find = function(skipCurrent, backwards, preventScroll) { var range = this.editor.find(this.searchInput.value, { skipCurrent: skipCurrent, backwards: backwards, wrap: true, regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked, preventScroll: preventScroll, range: this.searchRange }); var noMatch = !range && this.searchInput.value; dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); this.editor._emit("findSearchBox", { match: !noMatch }); this.highlight(); this.updateCounter(); }; this.updateCounter = function() { var editor = this.editor; var regex = editor.$search.$options.re; var all = 0; var before = 0; if (regex) { var value = this.searchRange ? editor.session.getTextRange(this.searchRange) : editor.getValue(); var offset = editor.session.doc.positionToIndex(editor.selection.anchor); if (this.searchRange) offset -= editor.session.doc.positionToIndex(this.searchRange.start); var last = regex.lastIndex = 0; var m; while ((m = regex.exec(value))) { all++; last = m.index; if (last <= offset) before++; if (all > MAX_COUNT) break; if (!m[0]) { regex.lastIndex = last += 1; if (last >= value.length) break; } } } this.searchCounter.textContent = before + " of " + (all > MAX_COUNT ? MAX_COUNT + "+" : all); }; this.findNext = function() { this.find(true, false); }; this.findPrev = function() { this.find(true, true); }; this.findAll = function(){ var range = this.editor.findAll(this.searchInput.value, { regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked }); var noMatch = !range && this.searchInput.value; dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); this.editor._emit("findSearchBox", { match: !noMatch }); this.highlight(); this.hide(); }; this.replace = function() { if (!this.editor.getReadOnly()) this.editor.replace(this.replaceInput.value); }; this.replaceAndFindNext = function() { if (!this.editor.getReadOnly()) { this.editor.replace(this.replaceInput.value); this.findNext(); } }; this.replaceAll = function() { if (!this.editor.getReadOnly()) this.editor.replaceAll(this.replaceInput.value); }; this.hide = function() { this.active = false; this.setSearchRange(null); this.editor.off("changeSession", this.setSession); this.element.style.display = "none"; this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); this.editor.focus(); }; this.show = function(value, isReplace) { this.active = true; this.editor.on("changeSession", this.setSession); this.element.style.display = ""; this.replaceOption.checked = isReplace; if (value) this.searchInput.value = value; this.searchInput.focus(); this.searchInput.select(); this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); this.$syncOptions(true); }; this.isFocused = function() { var el = document.activeElement; return el == this.searchInput || el == this.replaceInput; }; }).call(SearchBox.prototype); exports.SearchBox = SearchBox; exports.Search = function(editor, isReplace) { var sb = editor.searchBox || new SearchBox(editor); sb.show(editor.session.getTextRange(), isReplace); }; }); (function() { ace.acequire(["ace/ext/searchbox"], function() {}); })(); /***/ }), /* 280 */ /***/ (function(module, exports, __webpack_require__) { ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var DocCommentHighlightRules = function() { this.$rules = { "start" : [ { token : "comment.doc.tag", regex : "@[\\w\\d_]+" // TODO: fix email addresses }, DocCommentHighlightRules.getTagRule(), { defaultToken : "comment.doc", caseInsensitive: true }] }; }; oop.inherits(DocCommentHighlightRules, TextHighlightRules); DocCommentHighlightRules.getTagRule = function(start) { return { token : "comment.doc.tag.storage.type", regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; DocCommentHighlightRules.getStartRule = function(start) { return { token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)", next : start }; }; DocCommentHighlightRules.getEndRule = function (start) { return { token : "comment.doc", // closing comment regex : "\\*\\/", next : start }; }; exports.DocCommentHighlightRules = DocCommentHighlightRules; }); ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var DocCommentHighlightRules = acequire("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; var JavaScriptHighlightRules = function(options) { var keywordMapper = this.createKeywordMapper({ "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors "Namespace|QName|XML|XMLList|" + // E4X "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions "isNaN|parseFloat|parseInt|" + "JSON|Math|" + // Other "this|arguments|prototype|window|document" , // Pseudo "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "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", "storage.type": "const|let|var|function", "constant.language": "null|Infinity|NaN|undefined", "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode "[0-2][0-7]{0,2}|" + // oct "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; this.$rules = { "no_regex" : [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { token : "string", regex : "'(?=.)", next : "qstring" }, { token : "string", regex : '"(?=.)', next : "qqstring" }, { token : "constant.numeric", // hexadecimal, octal and binary regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { token : "constant.numeric", // decimal integers and floats regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text","keyword.operator" ], regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "text", "text", "storage.type", "text", "paren.lparen" ], regex : "(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : "keyword", regex : "from(?=\\s*('|\"))" }, { token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { token : ["support.constant"], regex : /that\b/ }, { token : ["storage.type", "punctuation.operator", "support.function.firebug"], regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ }, { token : keywordMapper, regex : identifierRe }, { token : "punctuation.operator", regex : /[.](?![.])/, next : "property" }, { token : "storage.type", regex : /=>/ }, { 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 : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { token : "punctuation.operator", regex : /[.](?![.])/ }, { 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|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|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 : identifierRe }, { regex: "", token: "empty", next: "no_regex" } ], "start": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("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" } ], "function_arguments": [ { token: "variable.parameter", regex: identifierRe }, { token: "punctuation.operator", regex: "[, ]+" }, { token: "punctuation.operator", regex: "$" }, { token: "empty", regex: "", next: "no_regex" } ], "qqstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : '"|$', next : "no_regex" }, { defaultToken: "string" } ], "qstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : "'|$", next : "no_regex" }, { defaultToken: "string" } ] }; if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); } else if (val == "}" && stack.length) { stack.shift(); this.next = stack.shift(); if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end"; } return val == "{" ? "paren.lparen" : "paren.rparen"; }, nextState: "start" }, { token : "string.quasi.start", regex : /`/, push : [{ token : "constant.language.escape", regex : escapedRe }, { token : "paren.quasi.start", regex : /\${/, push : "start" }, { token : "string.quasi.end", regex : /`/, next : "pop" }, { defaultToken: "string.quasi" }] }); if (!options || options.jsx != false) JSX.call(this); } this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); this.normalizeRules(); }; oop.inherits(JavaScriptHighlightRules, TextHighlightRules); function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { onMatch : function(val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) stack.unshift(this.next, this.nextState, 0); else stack.unshift(this.next); stack[2]++; } else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { stack.shift(); stack.shift(); } } } return [{ type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", value: val.slice(0, offset) }, { type: "meta.tag.tag-name.xml", value: val.substr(offset) }]; }, regex : "</?" + tagRegex + "", next: "jsxAttributes", nextState: "jsx" }; this.$rules.start.unshift(jsxTag); var jsxJsRule = { regex: "{", token: "paren.quasi.start", push: "start" }; this.$rules.jsx = [ jsxJsRule, jsxTag, {include : "reference"}, {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); if (value.length == 2) { if (stack[0] == this.nextState) stack[1]--; if (!stack[1] || stack[1] < 0) { stack.splice(0, 2); } } this.next = stack[0] || "start"; return [{type: this.token, value: value}]; }, nextState: "jsx" }, jsxJsRule, comments("jsxAttributes"), { token : "entity.other.attribute-name.xml", regex : tagRegex }, { 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"} ] }, jsxTag ]; this.$rules.reference = [{ token : "constant.language.escape.reference.xml", regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" }]; } function comments(next) { return [ { token : "comment", // multi line comment regex : /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "\\*\\/", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] }, { token : "comment", regex : "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "$|^", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; }); ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(acequire, exports, module) { "use strict"; var Range = acequire("../range").Range; var MatchingBraceOutdent = function() {}; (function() { this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*\}/.test(input); }; this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.$getIndent = function(line) { return line.match(/^\s*/)[0]; }; }).call(MatchingBraceOutdent.prototype); exports.MatchingBraceOutdent = MatchingBraceOutdent; }); ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(commentRegex) { if (commentRegex) { this.foldingStartMarker = new RegExp( this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) ); this.foldingStopMarker = new RegExp( this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) ); } }; oop.inherits(FoldMode, BaseFoldMode); (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(session, foldStyle, row) { var line = session.getLine(row); if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } var fw = this._getFoldWidgetBase(session, foldStyle, row); if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart return fw; }; this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { var line = session.getLine(row); if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; if (match[1]) return this.openingBracketBlock(session, match[1], row, i); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } else if (foldStyle != "all") range = null; } return range; } if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; if (match[1]) return this.closingBracketBlock(session, match[1], row, i); return session.getCommentFoldRange(row, i, -1); } }; this.getSectionRange = function(session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; var startColumn = line.length; row = row + 1; var endRow = row; var maxRow = session.getLength(); while (++row < maxRow) { line = session.getLine(row); var indent = line.search(/\S/); if (indent === -1) continue; if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { if (subRange.start.row <= startRow) { break; } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { break; } } endRow = row; } return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; this.getCommentRegionBlock = function(session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); if (!m) continue; if (m[1]) depth--; else depth++; if (!depth) break; } var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; }).call(FoldMode.prototype); }); ace.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/cstyle","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CstyleBehaviour = acequire("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = JavaScriptHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } } else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } var match = line.match(/^\s*(\/?)\*/); if (match) { if (match[1]) { indent += " "; } indent += "* "; } } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(24), "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(results) { session.setAnnotations(results.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/javascript"; }).call(Mode.prototype); exports.Mode = Mode; }); /***/ }), /* 281 */ /***/ (function(module, exports, __webpack_require__) { ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var DocCommentHighlightRules = function() { this.$rules = { "start" : [ { token : "comment.doc.tag", regex : "@[\\w\\d_]+" // TODO: fix email addresses }, DocCommentHighlightRules.getTagRule(), { defaultToken : "comment.doc", caseInsensitive: true }] }; }; oop.inherits(DocCommentHighlightRules, TextHighlightRules); DocCommentHighlightRules.getTagRule = function(start) { return { token : "comment.doc.tag.storage.type", regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; DocCommentHighlightRules.getStartRule = function(start) { return { token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)", next : start }; }; DocCommentHighlightRules.getEndRule = function (start) { return { token : "comment.doc", // closing comment regex : "\\*\\/", next : start }; }; exports.DocCommentHighlightRules = DocCommentHighlightRules; }); ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var DocCommentHighlightRules = acequire("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; var JavaScriptHighlightRules = function(options) { var keywordMapper = this.createKeywordMapper({ "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors "Namespace|QName|XML|XMLList|" + // E4X "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions "isNaN|parseFloat|parseInt|" + "JSON|Math|" + // Other "this|arguments|prototype|window|document" , // Pseudo "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "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", "storage.type": "const|let|var|function", "constant.language": "null|Infinity|NaN|undefined", "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode "[0-2][0-7]{0,2}|" + // oct "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; this.$rules = { "no_regex" : [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { token : "string", regex : "'(?=.)", next : "qstring" }, { token : "string", regex : '"(?=.)', next : "qqstring" }, { token : "constant.numeric", // hexadecimal, octal and binary regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { token : "constant.numeric", // decimal integers and floats regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text","keyword.operator" ], regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "text", "text", "storage.type", "text", "paren.lparen" ], regex : "(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : "keyword", regex : "from(?=\\s*('|\"))" }, { token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { token : ["support.constant"], regex : /that\b/ }, { token : ["storage.type", "punctuation.operator", "support.function.firebug"], regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ }, { token : keywordMapper, regex : identifierRe }, { token : "punctuation.operator", regex : /[.](?![.])/, next : "property" }, { token : "storage.type", regex : /=>/ }, { 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 : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { token : "punctuation.operator", regex : /[.](?![.])/ }, { 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|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|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 : identifierRe }, { regex: "", token: "empty", next: "no_regex" } ], "start": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("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" } ], "function_arguments": [ { token: "variable.parameter", regex: identifierRe }, { token: "punctuation.operator", regex: "[, ]+" }, { token: "punctuation.operator", regex: "$" }, { token: "empty", regex: "", next: "no_regex" } ], "qqstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : '"|$', next : "no_regex" }, { defaultToken: "string" } ], "qstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : "'|$", next : "no_regex" }, { defaultToken: "string" } ] }; if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); } else if (val == "}" && stack.length) { stack.shift(); this.next = stack.shift(); if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end"; } return val == "{" ? "paren.lparen" : "paren.rparen"; }, nextState: "start" }, { token : "string.quasi.start", regex : /`/, push : [{ token : "constant.language.escape", regex : escapedRe }, { token : "paren.quasi.start", regex : /\${/, push : "start" }, { token : "string.quasi.end", regex : /`/, next : "pop" }, { defaultToken: "string.quasi" }] }); if (!options || options.jsx != false) JSX.call(this); } this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); this.normalizeRules(); }; oop.inherits(JavaScriptHighlightRules, TextHighlightRules); function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { onMatch : function(val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) stack.unshift(this.next, this.nextState, 0); else stack.unshift(this.next); stack[2]++; } else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { stack.shift(); stack.shift(); } } } return [{ type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", value: val.slice(0, offset) }, { type: "meta.tag.tag-name.xml", value: val.substr(offset) }]; }, regex : "</?" + tagRegex + "", next: "jsxAttributes", nextState: "jsx" }; this.$rules.start.unshift(jsxTag); var jsxJsRule = { regex: "{", token: "paren.quasi.start", push: "start" }; this.$rules.jsx = [ jsxJsRule, jsxTag, {include : "reference"}, {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); if (value.length == 2) { if (stack[0] == this.nextState) stack[1]--; if (!stack[1] || stack[1] < 0) { stack.splice(0, 2); } } this.next = stack[0] || "start"; return [{type: this.token, value: value}]; }, nextState: "jsx" }, jsxJsRule, comments("jsxAttributes"), { token : "entity.other.attribute-name.xml", regex : tagRegex }, { 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"} ] }, jsxTag ]; this.$rules.reference = [{ token : "constant.language.escape.reference.xml", regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" }]; } function comments(next) { return [ { token : "comment", // multi line comment regex : /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "\\*\\/", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] }, { token : "comment", regex : "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "$|^", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; }); ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(acequire, exports, module) { "use strict"; var Range = acequire("../range").Range; var MatchingBraceOutdent = function() {}; (function() { this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*\}/.test(input); }; this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.$getIndent = function(line) { return line.match(/^\s*/)[0]; }; }).call(MatchingBraceOutdent.prototype); exports.MatchingBraceOutdent = MatchingBraceOutdent; }); ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(commentRegex) { if (commentRegex) { this.foldingStartMarker = new RegExp( this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) ); this.foldingStopMarker = new RegExp( this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) ); } }; oop.inherits(FoldMode, BaseFoldMode); (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(session, foldStyle, row) { var line = session.getLine(row); if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } var fw = this._getFoldWidgetBase(session, foldStyle, row); if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart return fw; }; this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { var line = session.getLine(row); if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; if (match[1]) return this.openingBracketBlock(session, match[1], row, i); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } else if (foldStyle != "all") range = null; } return range; } if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; if (match[1]) return this.closingBracketBlock(session, match[1], row, i); return session.getCommentFoldRange(row, i, -1); } }; this.getSectionRange = function(session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; var startColumn = line.length; row = row + 1; var endRow = row; var maxRow = session.getLength(); while (++row < maxRow) { line = session.getLine(row); var indent = line.search(/\S/); if (indent === -1) continue; if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { if (subRange.start.row <= startRow) { break; } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { break; } } endRow = row; } return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; this.getCommentRegionBlock = function(session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); if (!m) continue; if (m[1]) depth--; else depth++; if (!depth) break; } var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; }).call(FoldMode.prototype); }); ace.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/cstyle","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CstyleBehaviour = acequire("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = JavaScriptHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } } else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } var match = line.match(/^\s*(\/?)\*/); if (match) { if (match[1]) { indent += " "; } indent += "* "; } } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(24), "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(results) { session.setAnnotations(results.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/javascript"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var XmlHighlightRules = function(normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; this.$rules = { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", 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: true }, {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 : tagRegex }, { 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 : "(<\\!)(" + tagRegex + ")", 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 : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")", 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 : tagRegex }, { 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"} ] }] }; if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; (function() { this.embedTagRules = function(HighlightRules, prefix, tag){ this.$rules.tag.unshift({ token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], regex : "(<)(" + tag + "(?=\\s|>|$))", next: [ {include : "attributes"}, {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} ] }); this.$rules[tag + "-end"] = [ {include : "attributes"}, {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", onMatch : function(value, currentState, stack) { stack.splice(0); return this.token; }} ]; this.embedRules(HighlightRules, prefix, [{ token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], regex : "(</)(" + tag + "(?=\\s|>|$))", next: tag + "-end" }, { token: "string.cdata.xml", regex : "<\\!\\[CDATA\\[" }, { token: "string.cdata.xml", regex : "\\]\\]>" }]); }; }).call(TextHighlightRules.prototype); oop.inherits(XmlHighlightRules, TextHighlightRules); exports.XmlHighlightRules = XmlHighlightRules; }); ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Behaviour = acequire("../behaviour").Behaviour; var TokenIterator = acequire("../../token_iterator").TokenIterator; var lang = acequire("../../lib/lang"); function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } var XmlBehaviour = function () { this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; var selected = session.doc.getTextRange(editor.getSelectionRange()); if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { return { text: quote + selected + quote, selection: false }; } var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } if (!token) token = iterator.stepBackward(); if (!token) return; while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } var rightSpace = !rightChar || rightChar.match(/\s/); if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { return { text: quote + quote, selection: [1, 1] }; } } }); this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.start.column + 1, range.start.column + 2); if (rightChar == selected) { range.end.column++; return range; } } }); this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; var iterator = new TokenIterator(session, position.row, position.column); var token = iterator.getCurrentToken() || iterator.stepBackward(); if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) return; if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { var firstChar = token.value.charAt(0); if (firstChar == '"' || firstChar == "'") { var lastChar = token.value.charAt(token.value.length - 1); var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) return; } } while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { token = iterator.stepForward(); break; } } var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); if (this.voidElements.hasOwnProperty(element.toLowerCase())) return; return { text: ">" + "</" + element + ">", selection: [1, 1] }; } }); this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } if (!token) { return; } var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } if (this.voidElements && !this.voidElements[tag]) { var nextToken = session.getTokenAt(cursor.row, cursor.column+1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); if (nextToken && nextToken.value === "</") { return { text: "\n" + indent + "\n" + nextIndent, selection: [1, indent.length, 1, indent.length] }; } else { return { text: "\n" + indent }; } } } } }); }; oop.inherits(XmlBehaviour, Behaviour); exports.XmlBehaviour = XmlBehaviour; }); ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var lang = acequire("../../lib/lang"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var TokenIterator = acequire("../../token_iterator").TokenIterator; var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) { BaseFoldMode.call(this); this.voidElements = voidElements || {}; this.optionalEndTags = oop.mixin({}, this.voidElements); if (optionalEndTags) oop.mixin(this.optionalEndTags, optionalEndTags); }; oop.inherits(FoldMode, BaseFoldMode); var Tag = function() { this.tagName = ""; this.closing = false; this.selfClosing = false; this.start = {row: 0, column: 0}; this.end = {row: 0, column: 0}; }; function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } (function() { this.getFoldWidget = function(session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); if (!tag) return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; return "start"; }; this.getCommentFoldWidget = function(session, row) { if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) return "start"; return ""; }; this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (is(token, "tag-open")) { tag.end.column = tag.start.column + token.value.length; tag.closing = is(token, "end-tag-open"); token = tokens[++i]; if (!token) return null; tag.tagName = token.value; tag.end.column += token.value.length; for (i++; i < tokens.length; i++) { token = tokens[i]; tag.end.column += token.value.length; if (is(token, "tag-close")) { tag.selfClosing = token.value == '/>'; break; } } return tag; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == '/>'; return tag; } tag.start.column += token.value.length; } return null; }; this._findEndTagInLine = function(session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; column += token.value.length; if (column < startColumn) continue; if (is(token, "end-tag-open")) { token = tokens[i + 1]; if (token && token.value == tagName) return true; } } return false; }; this._readTagForward = function(iterator) { var token = iterator.getCurrentToken(); if (!token) return null; var tag = new Tag(); do { if (is(token, "tag-open")) { tag.closing = is(token, "end-tag-open"); tag.start.row = iterator.getCurrentTokenRow(); tag.start.column = iterator.getCurrentTokenColumn(); } else if (is(token, "tag-name")) { tag.tagName = token.value; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == "/>"; tag.end.row = iterator.getCurrentTokenRow(); tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; iterator.stepForward(); return tag; } } while(token = iterator.stepForward()); return null; }; this._readTagBackward = function(iterator) { var token = iterator.getCurrentToken(); if (!token) return null; var tag = new Tag(); do { if (is(token, "tag-open")) { tag.closing = is(token, "end-tag-open"); tag.start.row = iterator.getCurrentTokenRow(); tag.start.column = iterator.getCurrentTokenColumn(); iterator.stepBackward(); return tag; } else if (is(token, "tag-name")) { tag.tagName = token.value; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == "/>"; tag.end.row = iterator.getCurrentTokenRow(); tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; } } while(token = iterator.stepBackward()); return null; }; this._pop = function(stack, tag) { while (stack.length) { var top = stack[stack.length-1]; if (!tag || top.tagName == tag.tagName) { return stack.pop(); } else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { stack.pop(); continue; } else { return null; } } }; this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); if (!firstTag) { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; var tag; if (!isBackward) { var iterator = new TokenIterator(session, row, firstTag.start.column); var start = { row: row, column: firstTag.start.column + firstTag.tagName.length + 2 }; if (firstTag.start.row == firstTag.end.row) start.column = firstTag.end.column; while (tag = this._readTagForward(iterator)) { if (tag.selfClosing) { if (!stack.length) { tag.start.column += tag.tagName.length + 2; tag.end.column -= 2; return Range.fromPoints(tag.start, tag.end); } else continue; } if (tag.closing) { this._pop(stack, tag); if (stack.length == 0) return Range.fromPoints(start, tag.start); } else { stack.push(tag); } } } else { var iterator = new TokenIterator(session, row, firstTag.end.column); var end = { row: row, column: firstTag.start.column }; while (tag = this._readTagBackward(iterator)) { if (tag.selfClosing) { if (!stack.length) { tag.start.column += tag.tagName.length + 2; tag.end.column -= 2; return Range.fromPoints(tag.start, tag.end); } else continue; } if (!tag.closing) { this._pop(stack, tag); if (stack.length == 0) { tag.start.column += tag.tagName.length + 2; if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) tag.start.column = tag.end.column; return Range.fromPoints(tag.start, end); } } else { stack.push(tag); } } } }; }).call(FoldMode.prototype); }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextMode = acequire("./text").Mode; var XmlHighlightRules = acequire("./xml_highlight_rules").XmlHighlightRules; var XmlBehaviour = acequire("./behaviour/xml").XmlBehaviour; var XmlFoldMode = acequire("./folding/xml").FoldMode; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var Mode = function() { this.HighlightRules = XmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.foldingRules = new XmlFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.voidElements = lang.arrayToMap([]); this.blockComment = {start: "<!--", end: "-->"}; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(282), "Worker"); worker.attachToDocument(session.getDocument()); worker.on("error", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/xml"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var supportType = exports.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|min-height|min-width|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|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.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|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"; var supportConstantColor = exports.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"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.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|acequired|root|target|valid|visited)\\b"; var CssHighlightRules = function() { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, "support.type": supportType, "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); this.$rules = { "start" : [{ include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", next: "ruleset" }, { token: "paren.rparen", regex: "\\}" }, { token: "string", regex: "@", 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 : numRe }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], "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", // multi line comment regex: "\\/\\*", push: [{ token : "comment", regex : "\\*\\/", next : "pop" }, { defaultToken : "comment" }] }], "ruleset" : [{ regex : "-(webkit|ms|moz|o)-", token : "text" }, { token : "paren.rparen", regex : "\\}", next : "start" }, { include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" }, { token : "constant.numeric", regex : numRe }, { token : "constant.numeric", // hex6 color regex : "#[a-f0-9]{6}" }, { token : "constant.numeric", // hex3 color regex : "#[a-f0-9]{3}" }, { token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], regex : pseudoElements }, { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true }], 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: true }, { defaultToken: "string" }] }, { token : "string.start", regex : '"', push : [{ token : "string.end", regex : '"|$', next: "pop" }, { include : "escapes" }, { token : "constant.language.escape", regex : /\\$/, consumeLineEnd: true }, { defaultToken: "string" }] }], escapes: [{ token : "constant.language.escape", regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] }; this.normalizeRules(); }; oop.inherits(CssHighlightRules, TextHighlightRules); exports.CssHighlightRules = CssHighlightRules; }); ace.define("ace/mode/css_completions",["require","exports","module"], function(acequire, exports, module) { "use strict"; var propertyMap = { "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 } }; var CssCompletions = function() { }; (function() { this.completionsDefined = false; this.defineCompletions = function() { if (document) { var style = document.createElement('c').style; for (var i in style) { if (typeof style[i] !== 'string') continue; var name = i.replace(/[A-Z]/g, function(x) { return '-' + x.toLowerCase(); }); if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } this.completionsDefined = true; }; this.getCompletions = function(state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (state==='ruleset'){ var line = session.getLine(pos.row).substr(0, pos.column); if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); return this.getPropertyValueCompletions(state, session, pos, prefix); } else { return this.getPropertyCompletions(state, session, pos, prefix); } } return []; }; this.getPropertyCompletions = function(state, session, pos, prefix) { var properties = Object.keys(propertyMap); return properties.map(function(property){ return { caption: property, snippet: property + ': $0;', meta: "property", score: Number.MAX_VALUE }; }); }; this.getPropertyValueCompletions = function(state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } return values.map(function(value){ return { caption: value, snippet: value, meta: "property value", score: Number.MAX_VALUE }; }); }; }).call(CssCompletions.prototype); exports.CssCompletions = CssCompletions; }); ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Behaviour = acequire("../behaviour").Behaviour; var CstyleBehaviour = acequire("./cstyle").CstyleBehaviour; var TokenIterator = acequire("../../token_iterator").TokenIterator; var CssBehaviour = function () { this.inherit(CstyleBehaviour); this.add("colon", "insertion", function (state, action, editor, session, text) { if (text === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { text: '', selection: [1, 1] }; } if (!line.substring(cursor.column).match(/^\s*;/)) { return { text: ':;', selection: [1, 1] }; } } } }); this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { range.end.column ++; return range; } } } }); this.add("semicolon", "insertion", function (state, action, editor, session, text) { if (text === ';') { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { text: '', selection: [1, 1] }; } } }); }; oop.inherits(CssBehaviour, CstyleBehaviour); exports.CssBehaviour = CssBehaviour; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CssCompletions = acequire("./css_completions").CssCompletions; var CssBehaviour = acequire("./behaviour/css").CssBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); this.$completer = new CssCompletions(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.foldingRules = "cStyle"; this.blockComment = {start: "/*", end: "*/"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(25), "Worker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/css"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = acequire("./xml_highlight_rules").XmlHighlightRules; var tagMap = lang.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' }); var HtmlHighlightRules = function() { XmlHighlightRules.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(start, tag) { var group = tagMap[tag]; return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (group ? "." + group : "") + ".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(CssHighlightRules, "css-", "style"); this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; oop.inherits(HtmlHighlightRules, XmlHighlightRules); exports.HtmlHighlightRules = HtmlHighlightRules; }); ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(defaultMode, subModes) { this.defaultMode = defaultMode; this.subModes = subModes; }; oop.inherits(FoldMode, BaseFoldMode); (function() { this.$getMode = function(state) { if (typeof state != "string") state = state[0]; for (var key in this.subModes) { if (state.indexOf(key) === 0) return this.subModes[key]; } return null; }; this.$tryMode = function(state, session, foldStyle, row) { var mode = this.$getMode(state); return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); }; this.getFoldWidget = function(session, foldStyle, row) { return ( this.$tryMode(session.getState(row-1), session, foldStyle, row) || this.$tryMode(session.getState(row), session, foldStyle, row) || this.defaultMode.getFoldWidget(session, foldStyle, row) ); }; this.getFoldWidgetRange = function(session, foldStyle, row) { var mode = this.$getMode(session.getState(row-1)); if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.$getMode(session.getState(row)); if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.defaultMode; return mode.getFoldWidgetRange(session, foldStyle, row); }; }).call(FoldMode.prototype); }); ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var MixedFoldMode = acequire("./mixed").FoldMode; var XmlFoldMode = acequire("./xml").FoldMode; var CStyleFoldMode = acequire("./cstyle").FoldMode; var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; oop.inherits(FoldMode, MixedFoldMode); }); ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var TokenIterator = acequire("../token_iterator").TokenIterator; var commonAttributes = [ "accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate" ]; var eventAttributes = [ "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" ]; var globalAttributes = commonAttributes.concat(eventAttributes); var attributeMap = { "html": {"manifest": 1}, "head": {}, "title": {}, "base": {"href": 1, "target": 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}, "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, "noscript": {"href": 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}, "section": {}, "nav": {}, "article": {"pubdate": 1}, "aside": {}, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, "header": {}, "footer": {}, "address": {}, "main": {}, "p": {}, "hr": {}, "pre": {}, "blockquote": {"cite": 1}, "ol": {"start": 1, "reversed": 1}, "ul": {}, "li": {"value": 1}, "dl": {}, "dt": {}, "dd": {}, "figure": {}, "figcaption": {}, "div": {}, "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}, "em": {}, "strong": {}, "small": {}, "s": {}, "cite": {}, "q": {"cite": 1}, "dfn": {}, "abbr": {}, "data": {}, "time": {"datetime": 1}, "code": {}, "var": {}, "samp": {}, "kbd": {}, "sub": {}, "sup": {}, "i": {}, "b": {}, "u": {}, "mark": {}, "ruby": {}, "rt": {}, "rp": {}, "bdi": {}, "bdo": {}, "span": {}, "br": {}, "wbr": {}, "ins": {"cite": 1, "datetime": 1}, "del": {"cite": 1, "datetime": 1}, "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, "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}}, "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, "param": {"name": 1, "value": 1}, "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}}, "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, "source": {"src": 1, "type": 1, "media": 1}, "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, "canvas": {"width": 1, "height": 1}, "map": {"name": 1}, "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, "math": {}, "table": {"summary": 1}, "caption": {}, "colgroup": {"span": 1}, "col": {"span": 1}, "tbody": {}, "thead": {}, "tfoot": {}, "tr": {}, "td": {"headers": 1, "rowspan": 1, "colspan": 1}, "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, "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}}, "fieldset": {"disabled": 1, "form": 1, "name": 1}, "legend": {}, "label": {"form": 1, "for": 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}, "acequired": {"acequired": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, "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}}, "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, "datalist": {}, "optgroup": {"disabled": 1, "label": 1}, "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "acequired": {"acequired": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, "output": {"for": 1, "form": 1, "name": 1}, "progress": {"value": 1, "max": 1}, "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, "details": {"open": 1}, "summary": {}, "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, "menu": {"type": 1, "label": 1}, "dialog": {"open": 1} }; var elements = Object.keys(attributeMap); function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); while (token && !is(token, "tag-name")){ token = iterator.stepBackward(); } if (token) return token.value; } function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); while (token && !is(token, "attribute-name")){ token = iterator.stepBackward(); } if (token) return token.value; } var HtmlCompletions = function() { }; (function() { this.getCompletions = function(state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) return this.getTagCompletions(state, session, pos, prefix); if (is(token, "tag-whitespace") || is(token, "attribute-name")) return this.getAttributeCompletions(state, session, pos, prefix); if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; }; this.getTagCompletions = function(state, session, pos, prefix) { return elements.map(function(element){ return { value: element, meta: "tag", score: Number.MAX_VALUE }; }); }; this.getAttributeCompletions = function(state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; var attributes = globalAttributes; if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } return attributes.map(function(attribute){ return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", score: Number.MAX_VALUE }; }); }; this.getAttributeValueCompletions = function(state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } return values.map(function(value){ return { caption: value, snippet: value, meta: "attribute value", score: Number.MAX_VALUE }; }); }; this.getHTMLEntityCompletions = function(state, session, pos, prefix) { var values = ['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 values.map(function(value){ return { caption: value, snippet: value, meta: "html entity", score: Number.MAX_VALUE }; }); }; }).call(HtmlCompletions.prototype); exports.HtmlCompletions = HtmlCompletions; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextMode = acequire("./text").Mode; var JavaScriptMode = acequire("./javascript").Mode; var CssMode = acequire("./css").Mode; var HtmlHighlightRules = acequire("./html_highlight_rules").HtmlHighlightRules; var XmlBehaviour = acequire("./behaviour/xml").XmlBehaviour; var HtmlFoldMode = acequire("./folding/html").FoldMode; var HtmlCompletions = acequire("./html_completions").HtmlCompletions; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; var Mode = function(options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); (function() { this.blockComment = {start: "<!--", end: "-->"}; this.voidElements = lang.arrayToMap(voidElements); this.getNextLineIndent = function(state, line, tab) { return this.$getIndent(line); }; this.checkOutdent = function(state, line, input) { return false; }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.createWorker = function(session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], __webpack_require__(27), "Worker"); worker.attachToDocument(session.getDocument()); if (this.fragmentContext) worker.call("setOptions", [{context: this.fragmentContext}]); worker.on("error", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/html"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = acequire("./xml_highlight_rules").XmlHighlightRules; var HtmlHighlightRules = acequire("./html_highlight_rules").HtmlHighlightRules; var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var escaped = function(ch) { return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; }; function github_embed(tag, prefix) { return { // Github style block token : "support.function", regex : "^\\s*```" + tag + "\\s*$", push : prefix + "start" }; } var MarkdownHighlightRules = function() { HtmlHighlightRules.call(this); this.$rules["start"].unshift({ token : "empty_line", regex : '^$', next: "allowBlock" }, { // h1 token: "markup.heading.1", regex: "^=+(?=\\s*$)" }, { // h2 token: "markup.heading.2", regex: "^\\-+(?=\\s*$)" }, { token : function(value) { return "markup.heading." + value.length; }, regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/, next : "header" }, github_embed("(?:javascript|js)", "jscode-"), github_embed("xml", "xmlcode-"), github_embed("html", "htmlcode-"), github_embed("css", "csscode-"), { // Github style block token : "support.function", regex : "^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$", next : "githubblock" }, { // block quote token : "string.blockquote", regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", next : "blockquote" }, { // HR * - _ token : "constant", regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", next: "allowBlock" }, { // list token : "markup.list", regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", next : "listblock-start" }, { include : "basic" }); this.addRules({ "basic" : [{ token : "constant.language.escape", regex : /\\[\\`*_{}\[\]()#+\-.!]/ }, { // code span ` token : "support.function", regex : "(`+)(.*?[^`])(\\1)" }, { // reference token : ["text", "constant", "text", "url", "string", "text"], regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" }, { // link by reference token : ["text", "string", "text", "constant", "text"], regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" }, { // link by url token : ["text", "string", "text", "markup.underline", "string", "text"], regex : "(\\[)(" + // [ escaped("]") + // link text ")(\\]\\()"+ // ]( '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" "(\\))" // ) }, { // strong ** __ token : "string.strong", regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" }, { // emphasis * _ 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" : [ { // Lists only escape on completely blank lines. token : "empty_line", regex : "^$", next : "start" }, { // list token : "markup.list", regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", next : "listblock-start" }, { include : "basic", noEscape: true }, { // Github style block token : "support.function", regex : "^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$", next : "githubblock" }, { defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly } ], "blockquote" : [ { // Blockquotes only escape on blank lines. token : "empty_line", regex : "^\\s*$", next : "start" }, { // block quote token : "string.blockquote", regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", next : "blockquote" }, { include : "basic", noEscape: true }, { defaultToken : "string.blockquote" } ], "githubblock" : [ { token : "support.function", regex : "^\\s*```", next : "start" }, { defaultToken : "support.function" } ] }); this.embedRules(JavaScriptHighlightRules, "jscode-", [{ token : "support.function", regex : "^\\s*```", next : "pop" }]); this.embedRules(HtmlHighlightRules, "htmlcode-", [{ token : "support.function", regex : "^\\s*```", next : "pop" }]); this.embedRules(CssHighlightRules, "csscode-", [{ token : "support.function", regex : "^\\s*```", next : "pop" }]); this.embedRules(XmlHighlightRules, "xmlcode-", [{ token : "support.function", regex : "^\\s*```", next : "pop" }]); this.normalizeRules(); }; oop.inherits(MarkdownHighlightRules, TextHighlightRules); exports.MarkdownHighlightRules = MarkdownHighlightRules; }); ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var BaseFoldMode = acequire("./fold_mode").FoldMode; var Range = acequire("../../range").Range; var FoldMode = exports.FoldMode = function() {}; oop.inherits(FoldMode, BaseFoldMode); (function() { this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; this.getFoldWidget = function(session, foldStyle, row) { var line = session.getLine(row); if (!this.foldingStartMarker.test(line)) return ""; if (line[0] == "`") { if (session.bgTokenizer.getState(row) == "start") return "end"; return "start"; } return "start"; }; this.getFoldWidgetRange = function(session, foldStyle, row) { var line = session.getLine(row); var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; if (!line.match(this.foldingStartMarker)) return; if (line[0] == "`") { if (session.bgTokenizer.getState(row) !== "start") { while (++row < maxRow) { line = session.getLine(row); if (line[0] == "`" & line.substring(0, 3) == "```") break; } return new Range(startRow, startColumn, row, 0); } else { while (row -- > 0) { line = session.getLine(row); if (line[0] == "`" & line.substring(0, 3) == "```") break; } return new Range(row, line.length, startRow, 0); } } var token; function isHeading(row) { token = session.getTokens(row)[0]; return token && token.type.lastIndexOf(heading, 0) === 0; } var heading = "markup.heading"; function getLevel() { var ch = token.value[0]; if (ch == "=") return 6; if (ch == "-") return 5; return 7 - token.value.search(/[^#]/); } if (isHeading(row)) { var startHeadingLevel = getLevel(); while (++row < maxRow) { if (!isHeading(row)) continue; var level = getLevel(); if (level >= startHeadingLevel) break; } endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); if (endRow > startRow) { while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) endRow--; } if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } } }; }).call(FoldMode.prototype); }); ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var JavaScriptMode = acequire("./javascript").Mode; var XmlMode = acequire("./xml").Mode; var HtmlMode = acequire("./html").Mode; var MarkdownHighlightRules = acequire("./markdown_highlight_rules").MarkdownHighlightRules; var MarkdownFoldMode = acequire("./folding/markdown").FoldMode; var Mode = function() { this.HighlightRules = MarkdownHighlightRules; this.createModeDelegates({ "js-": JavaScriptMode, "xml-": XmlMode, "html-": HtmlMode }); this.foldingRules = new MarkdownFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); (function() { this.type = "text"; this.blockComment = {start: "<!--", end: "-->"}; this.getNextLineIndent = function(state, line, tab) { if (state == "listblock") { var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); if (!match) return ""; var marker = match[2]; if (!marker) marker = parseInt(match[3], 10) + 1 + "."; return match[1] + marker + match[4]; } else { return this.$getIndent(line); } }; this.$id = "ace/mode/markdown"; }).call(Mode.prototype); exports.Mode = Mode; }); /***/ }), /* 282 */ /***/ (function(module, exports) { module.exports.id = 'ace/mode/xml_worker'; module.exports.src = "\"no use strict\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/</g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=\"insert\"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;return $pointsInOrder(point,deltaStart,moveIfEqual)?{row:point.row,column:point.column}:$pointsInOrder(deltaEnd,point,!moveIfEqual)?{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)}:{row:deltaStart.row,column:deltaStart.column}}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){\"use strict\";acequire(\"../range\").Range;var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/xml/sax\",[\"require\",\"exports\",\"module\"],function(){function XMLReader(){}function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){function fixedFromCharCode(code){if(code>65535){code-=65536;var surrogate1=55296+(code>>10),surrogate2=56320+(1023&code);return String.fromCharCode(surrogate1,surrogate2)}return String.fromCharCode(code)}function entityReplacer(a){var k=a.slice(1,-1);return k in entityMap?entityMap[k]:\"#\"===k.charAt(0)?fixedFromCharCode(parseInt(k.substr(1).replace(\"x\",\"0x\"))):(errorHandler.error(\"entity not found:\"+a),a)}function appendText(end){var xt=source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);locator&&position(start),domBuilder.characters(xt,0,end-start),start=end}function position(start,m){for(;start>=endPos&&(m=linePattern.exec(source));)startPos=m.index,endPos=startPos+m[0].length,locator.lineNumber++;locator.columnNumber=start-startPos+1}for(var startPos=0,endPos=0,linePattern=/.+(?:\\r\\n?|\\n)|.*$/g,locator=domBuilder.locator,parseStack=[{currentNSMap:defaultNSMapCopy}],closeMap={},start=0;;){var i=source.indexOf(\"<\",start);if(0>i){if(!source.substr(start).match(/^\\s*$/)){var doc=domBuilder.document,text=doc.createTextNode(source.substr(start));doc.appendChild(text),domBuilder.currentElement=text}return}switch(i>start&&appendText(i),source.charAt(i+1)){case\"/\":var config,end=source.indexOf(\">\",i+3),tagName=source.substring(i+2,end);if(!(parseStack.length>1)){errorHandler.fatalError(\"end tag name not found for: \"+tagName);break}config=parseStack.pop();var localNSMap=config.localNSMap;if(config.tagName!=tagName&&errorHandler.fatalError(\"end tag name: \"+tagName+\" does not match the current start tagName: \"+config.tagName),domBuilder.endElement(config.uri,config.localName,tagName),localNSMap)for(var prefix in localNSMap)domBuilder.endPrefixMapping(prefix);end++;break;case\"?\":locator&&position(i),end=parseInstruction(source,i,domBuilder);break;case\"!\":locator&&position(i),end=parseDCC(source,i,domBuilder,errorHandler);break;default:try{locator&&position(i);var el=new ElementAttributes,end=parseElementStartPart(source,i,el,entityReplacer,errorHandler),len=el.length;if(len&&locator){for(var backup=copyLocator(locator,{}),i=0;len>i;i++){var a=el[i];position(a.offset),a.offset=copyLocator(locator,{})}copyLocator(backup,locator)}!el.closed&&fixSelfClosed(source,end,el.tagName,closeMap)&&(el.closed=!0,entityMap.nbsp||errorHandler.warning(\"unclosed xml attribute\")),appendElement(el,domBuilder,parseStack),\"http://www.w3.org/1999/xhtml\"!==el.uri||el.closed?end++:end=parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)}catch(e){errorHandler.error(\"element parse error: \"+e),end=-1}}0>end?appendText(i+1):start=end}}function copyLocator(f,t){return t.lineNumber=f.lineNumber,t.columnNumber=f.columnNumber,t}function parseElementStartPart(source,start,el,entityReplacer,errorHandler){for(var attrName,value,p=++start,s=S_TAG;;){var c=source.charAt(p);switch(c){case\"=\":if(s===S_ATTR)attrName=source.slice(start,p),s=S_EQ;else{if(s!==S_ATTR_S)throw Error(\"attribute equal must after attrName\");s=S_EQ}break;case\"'\":case'\"':if(s===S_EQ){if(start=p+1,p=source.indexOf(c,start),!(p>0))throw Error(\"attribute value no end '\"+c+\"' match\");value=source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer),el.add(attrName,value,start-1),s=S_E}else{if(s!=S_V)throw Error('attribute value must after \"=\"');value=source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer),el.add(attrName,value,start),errorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+\")!!\"),start=p+1,s=S_E}break;case\"/\":switch(s){case S_TAG:el.setTagName(source.slice(start,p));case S_E:case S_S:case S_C:s=S_C,el.closed=!0;case S_V:case S_ATTR:case S_ATTR_S:break;default:throw Error(\"attribute invalid close char('/')\")}break;case\"\":errorHandler.error(\"unexpected end of input\");case\">\":switch(s){case S_TAG:el.setTagName(source.slice(start,p));case S_E:case S_S:case S_C:break;case S_V:case S_ATTR:value=source.slice(start,p),\"/\"===value.slice(-1)&&(el.closed=!0,value=value.slice(0,-1));case S_ATTR_S:s===S_ATTR_S&&(value=attrName),s==S_V?(errorHandler.warning('attribute \"'+value+'\" missed quot(\")!!'),el.add(attrName,value.replace(/&#?\\w+;/g,entityReplacer),start)):(errorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!'),el.add(value,value,start));break;case S_EQ:throw Error(\"attribute value missed!!\")}return p;case\"\":c=\" \";default:if(\" \">=c)switch(s){case S_TAG:el.setTagName(source.slice(start,p)),s=S_S;break;case S_ATTR:attrName=source.slice(start,p),s=S_ATTR_S;break;case S_V:var value=source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);errorHandler.warning('attribute \"'+value+'\" missed quot(\")!!'),el.add(attrName,value,start);case S_E:s=S_S}else switch(s){case S_ATTR_S:errorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead!!'),el.add(attrName,attrName,start),start=p,s=S_ATTR;\nbreak;case S_E:errorHandler.warning('attribute space is acequired\"'+attrName+'\"!!');case S_S:s=S_ATTR,start=p;break;case S_EQ:s=S_V,start=p;break;case S_C:throw Error(\"elements closed character '/' and '>' must be connected to\")}}p++}}function appendElement(el,domBuilder,parseStack){for(var tagName=el.tagName,localNSMap=null,currentNSMap=parseStack[parseStack.length-1].currentNSMap,i=el.length;i--;){var a=el[i],qName=a.qName,value=a.value,nsp=qName.indexOf(\":\");if(nsp>0)var prefix=a.prefix=qName.slice(0,nsp),localName=qName.slice(nsp+1),nsPrefix=\"xmlns\"===prefix&&localName;else localName=qName,prefix=null,nsPrefix=\"xmlns\"===qName&&\"\";a.localName=localName,nsPrefix!==!1&&(null==localNSMap&&(localNSMap={},_copy(currentNSMap,currentNSMap={})),currentNSMap[nsPrefix]=localNSMap[nsPrefix]=value,a.uri=\"http://www.w3.org/2000/xmlns/\",domBuilder.startPrefixMapping(nsPrefix,value))}for(var i=el.length;i--;){a=el[i];var prefix=a.prefix;prefix&&(\"xml\"===prefix&&(a.uri=\"http://www.w3.org/XML/1998/namespace\"),\"xmlns\"!==prefix&&(a.uri=currentNSMap[prefix]))}var nsp=tagName.indexOf(\":\");nsp>0?(prefix=el.prefix=tagName.slice(0,nsp),localName=el.localName=tagName.slice(nsp+1)):(prefix=null,localName=el.localName=tagName);var ns=el.uri=currentNSMap[prefix||\"\"];if(domBuilder.startElement(ns,localName,tagName,el),el.closed){if(domBuilder.endElement(ns,localName,tagName),localNSMap)for(prefix in localNSMap)domBuilder.endPrefixMapping(prefix)}else el.currentNSMap=currentNSMap,el.localNSMap=localNSMap,parseStack.push(el)}function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){if(/^(?:script|textarea)$/i.test(tagName)){var elEndStart=source.indexOf(\"</\"+tagName+\">\",elStartEnd),text=source.substring(elStartEnd+1,elEndStart);if(/[&<]/.test(text))return/^script$/i.test(tagName)?(domBuilder.characters(text,0,text.length),elEndStart):(text=text.replace(/&#?\\w+;/g,entityReplacer),domBuilder.characters(text,0,text.length),elEndStart)}return elStartEnd+1}function fixSelfClosed(source,elStartEnd,tagName,closeMap){var pos=closeMap[tagName];return null==pos&&(pos=closeMap[tagName]=source.lastIndexOf(\"</\"+tagName+\">\")),elStartEnd>pos}function _copy(source,target){for(var n in source)target[n]=source[n]}function parseDCC(source,start,domBuilder,errorHandler){var next=source.charAt(start+2);switch(next){case\"-\":if(\"-\"===source.charAt(start+3)){var end=source.indexOf(\"-->\",start+4);return end>start?(domBuilder.comment(source,start+4,end-start-4),end+3):(errorHandler.error(\"Unclosed comment\"),-1)}return-1;default:if(\"CDATA[\"==source.substr(start+3,6)){var end=source.indexOf(\"]]>\",start+9);return domBuilder.startCDATA(),domBuilder.characters(source,start+9,end-start-9),domBuilder.endCDATA(),end+3}var matchs=split(source,start),len=matchs.length;if(len>1&&/!doctype/i.test(matchs[0][0])){var name=matchs[1][0],pubid=len>3&&/^public$/i.test(matchs[2][0])&&matchs[3][0],sysid=len>4&&matchs[4][0],lastMatch=matchs[len-1];return domBuilder.startDTD(name,pubid&&pubid.replace(/^(['\"])(.*?)\\1$/,\"$2\"),sysid&&sysid.replace(/^(['\"])(.*?)\\1$/,\"$2\")),domBuilder.endDTD(),lastMatch.index+lastMatch[0].length}}return-1}function parseInstruction(source,start,domBuilder){var end=source.indexOf(\"?>\",start);if(end){var match=source.substring(start,end).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);return match?(match[0].length,domBuilder.processingInstruction(match[1],match[2]),end+2):-1}return-1}function ElementAttributes(){}function _set_proto_(thiz,parent){return thiz.__proto__=parent,thiz}function split(source,start){var match,buf=[],reg=/'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;for(reg.lastIndex=start,reg.exec(source);match=reg.exec(source);)if(buf.push(match),match[1])return buf}var nameStartChar=/[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/,nameChar=RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"·̀-ͯ\\\\ux203F-⁀]\"),tagNamePattern=RegExp(\"^\"+nameStartChar.source+nameChar.source+\"*(?::\"+nameStartChar.source+nameChar.source+\"*)?$\"),S_TAG=0,S_ATTR=1,S_ATTR_S=2,S_EQ=3,S_V=4,S_E=5,S_S=6,S_C=7;return XMLReader.prototype={parse:function(source,defaultNSMap,entityMap){var domBuilder=this.domBuilder;domBuilder.startDocument(),_copy(defaultNSMap,defaultNSMap={}),parse(source,defaultNSMap,entityMap,domBuilder,this.errorHandler),domBuilder.endDocument()}},ElementAttributes.prototype={setTagName:function(tagName){if(!tagNamePattern.test(tagName))throw Error(\"invalid tagName:\"+tagName);this.tagName=tagName},add:function(qName,value,offset){if(!tagNamePattern.test(qName))throw Error(\"invalid attribute:\"+qName);this[this.length++]={qName:qName,value:value,offset:offset}},length:0,getLocalName:function(i){return this[i].localName},getOffset:function(i){return this[i].offset},getQName:function(i){return this[i].qName},getURI:function(i){return this[i].uri},getValue:function(i){return this[i].value}},_set_proto_({},_set_proto_.prototype)instanceof _set_proto_||(_set_proto_=function(thiz,parent){function p(){}p.prototype=parent,p=new p;for(parent in thiz)p[parent]=thiz[parent];return p}),XMLReader}),ace.define(\"ace/mode/xml/dom\",[\"require\",\"exports\",\"module\"],function(){function copy(src,dest){for(var p in src)dest[p]=src[p]}function _extends(Class,Super){function t(){}var pt=Class.prototype;if(Object.create){var ppt=Object.create(Super.prototype);pt.__proto__=ppt}pt instanceof Super||(t.prototype=Super.prototype,t=new t,copy(pt,t),Class.prototype=pt=t),pt.constructor!=Class&&(\"function\"!=typeof Class&&console.error(\"unknow Class:\"+Class),pt.constructor=Class)}function DOMException(code,message){if(message instanceof Error)var error=message;else error=this,Error.call(this,ExceptionMessage[code]),this.message=ExceptionMessage[code],Error.captureStackTrace&&Error.captureStackTrace(this,DOMException);return error.code=code,message&&(this.message=this.message+\": \"+message),error}function NodeList(){}function LiveNodeList(node,refresh){this._node=node,this._refresh=refresh,_updateLiveList(this)}function _updateLiveList(list){var inc=list._node._inc||list._node.ownerDocument._inc;if(list._inc!=inc){var ls=list._refresh(list._node);__set__(list,\"length\",ls.length),copy(ls,list),list._inc=inc}}function NamedNodeMap(){}function _findNodeIndex(list,node){for(var i=list.length;i--;)if(list[i]===node)return i}function _addNamedNode(el,list,newAttr,oldAttr){if(oldAttr?list[_findNodeIndex(list,oldAttr)]=newAttr:list[list.length++]=newAttr,el){newAttr.ownerElement=el;var doc=el.ownerDocument;doc&&(oldAttr&&_onRemoveAttribute(doc,el,oldAttr),_onAddAttribute(doc,el,newAttr))}}function _removeNamedNode(el,list,attr){var i=_findNodeIndex(list,attr);if(!(i>=0))throw DOMException(NOT_FOUND_ERR,Error());for(var lastIndex=list.length-1;lastIndex>i;)list[i]=list[++i];if(list.length=lastIndex,el){var doc=el.ownerDocument;doc&&(_onRemoveAttribute(doc,el,attr),attr.ownerElement=null)}}function DOMImplementation(features){if(this._features={},features)for(var feature in features)this._features=features[feature]}function Node(){}function _xmlEncoder(c){return\"<\"==c&&\"<\"||\">\"==c&&\">\"||\"&\"==c&&\"&\"||'\"'==c&&\""\"||\"&#\"+c.charCodeAt()+\";\"}function _visitNode(node,callback){if(callback(node))return!0;if(node=node.firstChild)do if(_visitNode(node,callback))return!0;while(node=node.nextSibling)}function Document(){}function _onAddAttribute(doc,el,newAttr){doc&&doc._inc++;var ns=newAttr.namespaceURI;\"http://www.w3.org/2000/xmlns/\"==ns&&(el._nsMap[newAttr.prefix?newAttr.localName:\"\"]=newAttr.value)}function _onRemoveAttribute(doc,el,newAttr){doc&&doc._inc++;var ns=newAttr.namespaceURI;\"http://www.w3.org/2000/xmlns/\"==ns&&delete el._nsMap[newAttr.prefix?newAttr.localName:\"\"]}function _onUpdateChild(doc,el,newChild){if(doc&&doc._inc){doc._inc++;var cs=el.childNodes;if(newChild)cs[cs.length++]=newChild;else{for(var child=el.firstChild,i=0;child;)cs[i++]=child,child=child.nextSibling;cs.length=i}}}function _removeChild(parentNode,child){var previous=child.previousSibling,next=child.nextSibling;return previous?previous.nextSibling=next:parentNode.firstChild=next,next?next.previousSibling=previous:parentNode.lastChild=previous,_onUpdateChild(parentNode.ownerDocument,parentNode),child}function _insertBefore(parentNode,newChild,nextChild){var cp=newChild.parentNode;if(cp&&cp.removeChild(newChild),newChild.nodeType===DOCUMENT_FRAGMENT_NODE){var newFirst=newChild.firstChild;if(null==newFirst)return newChild;var newLast=newChild.lastChild}else newFirst=newLast=newChild;var pre=nextChild?nextChild.previousSibling:parentNode.lastChild;newFirst.previousSibling=pre,newLast.nextSibling=nextChild,pre?pre.nextSibling=newFirst:parentNode.firstChild=newFirst,null==nextChild?parentNode.lastChild=newLast:nextChild.previousSibling=newLast;do newFirst.parentNode=parentNode;while(newFirst!==newLast&&(newFirst=newFirst.nextSibling));return _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode),newChild.nodeType==DOCUMENT_FRAGMENT_NODE&&(newChild.firstChild=newChild.lastChild=null),newChild}function _appendSingleChild(parentNode,newChild){var cp=newChild.parentNode;if(cp){var pre=parentNode.lastChild;cp.removeChild(newChild);var pre=parentNode.lastChild}var pre=parentNode.lastChild;return newChild.parentNode=parentNode,newChild.previousSibling=pre,newChild.nextSibling=null,pre?pre.nextSibling=newChild:parentNode.firstChild=newChild,parentNode.lastChild=newChild,_onUpdateChild(parentNode.ownerDocument,parentNode,newChild),newChild}function Element(){this._nsMap={}}function Attr(){}function CharacterData(){}function Text(){}function Comment(){}function CDATASection(){}function DocumentType(){}function Notation(){}function Entity(){}function EntityReference(){}function DocumentFragment(){}function ProcessingInstruction(){}function XMLSerializer(){}function serializeToString(node,buf){switch(node.nodeType){case ELEMENT_NODE:var attrs=node.attributes,len=attrs.length,child=node.firstChild,nodeName=node.tagName,isHTML=htmlns===node.namespaceURI;buf.push(\"<\",nodeName);for(var i=0;len>i;i++)serializeToString(attrs.item(i),buf,isHTML);if(child||isHTML&&!/^(?:meta|link|img|br|hr|input|button)$/i.test(nodeName)){if(buf.push(\">\"),isHTML&&/^script$/i.test(nodeName))child&&buf.push(child.data);else for(;child;)serializeToString(child,buf),child=child.nextSibling;buf.push(\"</\",nodeName,\">\")}else buf.push(\"/>\");return;case DOCUMENT_NODE:case DOCUMENT_FRAGMENT_NODE:for(var child=node.firstChild;child;)serializeToString(child,buf),child=child.nextSibling;return;case ATTRIBUTE_NODE:return buf.push(\" \",node.name,'=\"',node.value.replace(/[<&\"]/g,_xmlEncoder),'\"');case TEXT_NODE:return buf.push(node.data.replace(/[<&]/g,_xmlEncoder));case CDATA_SECTION_NODE:return buf.push(\"<![CDATA[\",node.data,\"]]>\");case COMMENT_NODE:return buf.push(\"<!--\",node.data,\"-->\");case DOCUMENT_TYPE_NODE:var pubid=node.publicId,sysid=node.systemId;if(buf.push(\"<!DOCTYPE \",node.name),pubid)buf.push(' PUBLIC \"',pubid),sysid&&\".\"!=sysid&&buf.push('\" \"',sysid),buf.push('\">');else if(sysid&&\".\"!=sysid)buf.push(' SYSTEM \"',sysid,'\">');else{var sub=node.internalSubset;sub&&buf.push(\" [\",sub,\"]\"),buf.push(\">\")}return;case PROCESSING_INSTRUCTION_NODE:return buf.push(\"<?\",node.target,\" \",node.data,\"?>\");case ENTITY_REFERENCE_NODE:return buf.push(\"&\",node.nodeName,\";\");default:buf.push(\"??\",node.nodeName)}}function importNode(doc,node,deep){var node2;switch(node.nodeType){case ELEMENT_NODE:node2=node.cloneNode(!1),node2.ownerDocument=doc;case DOCUMENT_FRAGMENT_NODE:break;case ATTRIBUTE_NODE:deep=!0}if(node2||(node2=node.cloneNode(!1)),node2.ownerDocument=doc,node2.parentNode=null,deep)for(var child=node.firstChild;child;)node2.appendChild(importNode(doc,child,deep)),child=child.nextSibling;return node2}function cloneNode(doc,node,deep){var node2=new node.constructor;for(var n in node){var v=node[n];\"object\"!=typeof v&&v!=node2[n]&&(node2[n]=v)}switch(node.childNodes&&(node2.childNodes=new NodeList),node2.ownerDocument=doc,node2.nodeType){case ELEMENT_NODE:var attrs=node.attributes,attrs2=node2.attributes=new NamedNodeMap,len=attrs.length;attrs2._ownerElement=node2;for(var i=0;len>i;i++)node2.setAttributeNode(cloneNode(doc,attrs.item(i),!0));break;case ATTRIBUTE_NODE:deep=!0}if(deep)for(var child=node.firstChild;child;)node2.appendChild(cloneNode(doc,child,deep)),child=child.nextSibling;return node2}function __set__(object,key,value){object[key]=value}function getTextContent(node){switch(node.nodeType){case 1:case 11:var buf=[];for(node=node.firstChild;node;)7!==node.nodeType&&8!==node.nodeType&&buf.push(getTextContent(node)),node=node.nextSibling;return buf.join(\"\");default:return node.nodeValue}}var htmlns=\"http://www.w3.org/1999/xhtml\",NodeType={},ELEMENT_NODE=NodeType.ELEMENT_NODE=1,ATTRIBUTE_NODE=NodeType.ATTRIBUTE_NODE=2,TEXT_NODE=NodeType.TEXT_NODE=3,CDATA_SECTION_NODE=NodeType.CDATA_SECTION_NODE=4,ENTITY_REFERENCE_NODE=NodeType.ENTITY_REFERENCE_NODE=5,ENTITY_NODE=NodeType.ENTITY_NODE=6,PROCESSING_INSTRUCTION_NODE=NodeType.PROCESSING_INSTRUCTION_NODE=7,COMMENT_NODE=NodeType.COMMENT_NODE=8,DOCUMENT_NODE=NodeType.DOCUMENT_NODE=9,DOCUMENT_TYPE_NODE=NodeType.DOCUMENT_TYPE_NODE=10,DOCUMENT_FRAGMENT_NODE=NodeType.DOCUMENT_FRAGMENT_NODE=11,NOTATION_NODE=NodeType.NOTATION_NODE=12,ExceptionCode={},ExceptionMessage={};ExceptionCode.INDEX_SIZE_ERR=(ExceptionMessage[1]=\"Index size error\",1),ExceptionCode.DOMSTRING_SIZE_ERR=(ExceptionMessage[2]=\"DOMString size error\",2),ExceptionCode.HIERARCHY_REQUEST_ERR=(ExceptionMessage[3]=\"Hierarchy request error\",3),ExceptionCode.WRONG_DOCUMENT_ERR=(ExceptionMessage[4]=\"Wrong document\",4),ExceptionCode.INVALID_CHARACTER_ERR=(ExceptionMessage[5]=\"Invalid character\",5),ExceptionCode.NO_DATA_ALLOWED_ERR=(ExceptionMessage[6]=\"No data allowed\",6),ExceptionCode.NO_MODIFICATION_ALLOWED_ERR=(ExceptionMessage[7]=\"No modification allowed\",7);var NOT_FOUND_ERR=ExceptionCode.NOT_FOUND_ERR=(ExceptionMessage[8]=\"Not found\",8);ExceptionCode.NOT_SUPPORTED_ERR=(ExceptionMessage[9]=\"Not supported\",9);var INUSE_ATTRIBUTE_ERR=ExceptionCode.INUSE_ATTRIBUTE_ERR=(ExceptionMessage[10]=\"Attribute in use\",10);ExceptionCode.INVALID_STATE_ERR=(ExceptionMessage[11]=\"Invalid state\",11),ExceptionCode.SYNTAX_ERR=(ExceptionMessage[12]=\"Syntax error\",12),ExceptionCode.INVALID_MODIFICATION_ERR=(ExceptionMessage[13]=\"Invalid modification\",13),ExceptionCode.NAMESPACE_ERR=(ExceptionMessage[14]=\"Invalid namespace\",14),ExceptionCode.INVALID_ACCESS_ERR=(ExceptionMessage[15]=\"Invalid access\",15),DOMException.prototype=Error.prototype,copy(ExceptionCode,DOMException),NodeList.prototype={length:0,item:function(index){return this[index]||null}},LiveNodeList.prototype.item=function(i){return _updateLiveList(this),this[i]},_extends(LiveNodeList,NodeList),NamedNodeMap.prototype={length:0,item:NodeList.prototype.item,getNamedItem:function(key){for(var i=this.length;i--;){var attr=this[i];if(attr.nodeName==key)return attr}},setNamedItem:function(attr){var el=attr.ownerElement;if(el&&el!=this._ownerElement)throw new DOMException(INUSE_ATTRIBUTE_ERR);var oldAttr=this.getNamedItem(attr.nodeName);return _addNamedNode(this._ownerElement,this,attr,oldAttr),oldAttr},setNamedItemNS:function(attr){var oldAttr,el=attr.ownerElement;if(el&&el!=this._ownerElement)throw new DOMException(INUSE_ATTRIBUTE_ERR);return oldAttr=this.getNamedItemNS(attr.namespaceURI,attr.localName),_addNamedNode(this._ownerElement,this,attr,oldAttr),oldAttr},removeNamedItem:function(key){var attr=this.getNamedItem(key);return _removeNamedNode(this._ownerElement,this,attr),attr},removeNamedItemNS:function(namespaceURI,localName){var attr=this.getNamedItemNS(namespaceURI,localName);return _removeNamedNode(this._ownerElement,this,attr),attr},getNamedItemNS:function(namespaceURI,localName){for(var i=this.length;i--;){var node=this[i];if(node.localName==localName&&node.namespaceURI==namespaceURI)return node}return null}},DOMImplementation.prototype={hasFeature:function(feature,version){var versions=this._features[feature.toLowerCase()];return versions&&(!version||version in versions)?!0:!1},createDocument:function(namespaceURI,qualifiedName,doctype){var doc=new Document;if(doc.implementation=this,doc.childNodes=new NodeList,doc.doctype=doctype,doctype&&doc.appendChild(doctype),qualifiedName){var root=doc.createElementNS(namespaceURI,qualifiedName);doc.appendChild(root)}return doc},createDocumentType:function(qualifiedName,publicId,systemId){var node=new DocumentType;return node.name=qualifiedName,node.nodeName=qualifiedName,node.publicId=publicId,node.systemId=systemId,node}},Node.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(newChild,refChild){return _insertBefore(this,newChild,refChild)},replaceChild:function(newChild,oldChild){this.insertBefore(newChild,oldChild),oldChild&&this.removeChild(oldChild)},removeChild:function(oldChild){return _removeChild(this,oldChild)},appendChild:function(newChild){return this.insertBefore(newChild,null)},hasChildNodes:function(){return null!=this.firstChild},cloneNode:function(deep){return cloneNode(this.ownerDocument||this,this,deep)},normalize:function(){for(var child=this.firstChild;child;){var next=child.nextSibling;next&&next.nodeType==TEXT_NODE&&child.nodeType==TEXT_NODE?(this.removeChild(next),child.appendData(next.data)):(child.normalize(),child=next)}},isSupported:function(feature,version){return this.ownerDocument.implementation.hasFeature(feature,version)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(namespaceURI){for(var el=this;el;){var map=el._nsMap;if(map)for(var n in map)if(map[n]==namespaceURI)return n;el=2==el.nodeType?el.ownerDocument:el.parentNode}return null},lookupNamespaceURI:function(prefix){for(var el=this;el;){var map=el._nsMap;if(map&&prefix in map)return map[prefix];el=2==el.nodeType?el.ownerDocument:el.parentNode}return null},isDefaultNamespace:function(namespaceURI){var prefix=this.lookupPrefix(namespaceURI);return null==prefix}},copy(NodeType,Node),copy(NodeType,Node.prototype),Document.prototype={nodeName:\"#document\",nodeType:DOCUMENT_NODE,doctype:null,documentElement:null,_inc:1,insertBefore:function(newChild,refChild){if(newChild.nodeType==DOCUMENT_FRAGMENT_NODE){for(var child=newChild.firstChild;child;){var next=child.nextSibling;this.insertBefore(child,refChild),child=next}return newChild}return null==this.documentElement&&1==newChild.nodeType&&(this.documentElement=newChild),_insertBefore(this,newChild,refChild),newChild.ownerDocument=this,newChild},removeChild:function(oldChild){return this.documentElement==oldChild&&(this.documentElement=null),_removeChild(this,oldChild)},importNode:function(importedNode,deep){return importNode(this,importedNode,deep)},getElementById:function(id){var rtv=null;return _visitNode(this.documentElement,function(node){return 1==node.nodeType&&node.getAttribute(\"id\")==id?(rtv=node,!0):void 0}),rtv},createElement:function(tagName){var node=new Element;node.ownerDocument=this,node.nodeName=tagName,node.tagName=tagName,node.childNodes=new NodeList;var attrs=node.attributes=new NamedNodeMap;return attrs._ownerElement=node,node},createDocumentFragment:function(){var node=new DocumentFragment;return node.ownerDocument=this,node.childNodes=new NodeList,node},createTextNode:function(data){var node=new Text;return node.ownerDocument=this,node.appendData(data),node},createComment:function(data){var node=new Comment;return node.ownerDocument=this,node.appendData(data),node},createCDATASection:function(data){var node=new CDATASection;return node.ownerDocument=this,node.appendData(data),node},createProcessingInstruction:function(target,data){var node=new ProcessingInstruction;return node.ownerDocument=this,node.tagName=node.target=target,node.nodeValue=node.data=data,node},createAttribute:function(name){var node=new Attr;return node.ownerDocument=this,node.name=name,node.nodeName=name,node.localName=name,node.specified=!0,node},createEntityReference:function(name){var node=new EntityReference;return node.ownerDocument=this,node.nodeName=name,node},createElementNS:function(namespaceURI,qualifiedName){var node=new Element,pl=qualifiedName.split(\":\"),attrs=node.attributes=new NamedNodeMap;return node.childNodes=new NodeList,node.ownerDocument=this,node.nodeName=qualifiedName,node.tagName=qualifiedName,node.namespaceURI=namespaceURI,2==pl.length?(node.prefix=pl[0],node.localName=pl[1]):node.localName=qualifiedName,attrs._ownerElement=node,node},createAttributeNS:function(namespaceURI,qualifiedName){var node=new Attr,pl=qualifiedName.split(\":\");return node.ownerDocument=this,node.nodeName=qualifiedName,node.name=qualifiedName,node.namespaceURI=namespaceURI,node.specified=!0,2==pl.length?(node.prefix=pl[0],node.localName=pl[1]):node.localName=qualifiedName,node}},_extends(Document,Node),Element.prototype={nodeType:ELEMENT_NODE,hasAttribute:function(name){return null!=this.getAttributeNode(name)},getAttribute:function(name){var attr=this.getAttributeNode(name);return attr&&attr.value||\"\"},getAttributeNode:function(name){return this.attributes.getNamedItem(name)},setAttribute:function(name,value){var attr=this.ownerDocument.createAttribute(name);attr.value=attr.nodeValue=\"\"+value,this.setAttributeNode(attr)},removeAttribute:function(name){var attr=this.getAttributeNode(name);attr&&this.removeAttributeNode(attr)},appendChild:function(newChild){return newChild.nodeType===DOCUMENT_FRAGMENT_NODE?this.insertBefore(newChild,null):_appendSingleChild(this,newChild)},setAttributeNode:function(newAttr){return this.attributes.setNamedItem(newAttr)},setAttributeNodeNS:function(newAttr){return this.attributes.setNamedItemNS(newAttr)},removeAttributeNode:function(oldAttr){return this.attributes.removeNamedItem(oldAttr.nodeName)},removeAttributeNS:function(namespaceURI,localName){var old=this.getAttributeNodeNS(namespaceURI,localName);old&&this.removeAttributeNode(old)},hasAttributeNS:function(namespaceURI,localName){return null!=this.getAttributeNodeNS(namespaceURI,localName)},getAttributeNS:function(namespaceURI,localName){var attr=this.getAttributeNodeNS(namespaceURI,localName);return attr&&attr.value||\"\"},setAttributeNS:function(namespaceURI,qualifiedName,value){var attr=this.ownerDocument.createAttributeNS(namespaceURI,qualifiedName);attr.value=attr.nodeValue=\"\"+value,this.setAttributeNode(attr)},getAttributeNodeNS:function(namespaceURI,localName){return this.attributes.getNamedItemNS(namespaceURI,localName)},getElementsByTagName:function(tagName){return new LiveNodeList(this,function(base){var ls=[];return _visitNode(base,function(node){node===base||node.nodeType!=ELEMENT_NODE||\"*\"!==tagName&&node.tagName!=tagName||ls.push(node)}),ls})},getElementsByTagNameNS:function(namespaceURI,localName){return new LiveNodeList(this,function(base){var ls=[];return _visitNode(base,function(node){node===base||node.nodeType!==ELEMENT_NODE||\"*\"!==namespaceURI&&node.namespaceURI!==namespaceURI||\"*\"!==localName&&node.localName!=localName||ls.push(node)}),ls})}},Document.prototype.getElementsByTagName=Element.prototype.getElementsByTagName,Document.prototype.getElementsByTagNameNS=Element.prototype.getElementsByTagNameNS,_extends(Element,Node),Attr.prototype.nodeType=ATTRIBUTE_NODE,_extends(Attr,Node),CharacterData.prototype={data:\"\",substringData:function(offset,count){return this.data.substring(offset,offset+count)},appendData:function(text){text=this.data+text,this.nodeValue=this.data=text,this.length=text.length},insertData:function(offset,text){this.replaceData(offset,0,text)},appendChild:function(){throw Error(ExceptionMessage[3])},deleteData:function(offset,count){this.replaceData(offset,count,\"\")},replaceData:function(offset,count,text){var start=this.data.substring(0,offset),end=this.data.substring(offset+count);text=start+text+end,this.nodeValue=this.data=text,this.length=text.length}},_extends(CharacterData,Node),Text.prototype={nodeName:\"#text\",nodeType:TEXT_NODE,splitText:function(offset){var text=this.data,newText=text.substring(offset);text=text.substring(0,offset),this.data=this.nodeValue=text,this.length=text.length;var newNode=this.ownerDocument.createTextNode(newText);return this.parentNode&&this.parentNode.insertBefore(newNode,this.nextSibling),newNode}},_extends(Text,CharacterData),Comment.prototype={nodeName:\"#comment\",nodeType:COMMENT_NODE},_extends(Comment,CharacterData),CDATASection.prototype={nodeName:\"#cdata-section\",nodeType:CDATA_SECTION_NODE},_extends(CDATASection,CharacterData),DocumentType.prototype.nodeType=DOCUMENT_TYPE_NODE,_extends(DocumentType,Node),Notation.prototype.nodeType=NOTATION_NODE,_extends(Notation,Node),Entity.prototype.nodeType=ENTITY_NODE,_extends(Entity,Node),EntityReference.prototype.nodeType=ENTITY_REFERENCE_NODE,_extends(EntityReference,Node),DocumentFragment.prototype.nodeName=\"#document-fragment\",DocumentFragment.prototype.nodeType=DOCUMENT_FRAGMENT_NODE,_extends(DocumentFragment,Node),ProcessingInstruction.prototype.nodeType=PROCESSING_INSTRUCTION_NODE,_extends(ProcessingInstruction,Node),XMLSerializer.prototype.serializeToString=function(node){var buf=[];return serializeToString(node,buf),buf.join(\"\")},Node.prototype.toString=function(){return XMLSerializer.prototype.serializeToString(this)};try{Object.defineProperty&&(Object.defineProperty(LiveNodeList.prototype,\"length\",{get:function(){return _updateLiveList(this),this.$$length}}),Object.defineProperty(Node.prototype,\"textContent\",{get:function(){return getTextContent(this)},set:function(data){switch(this.nodeType){case 1:case 11:for(;this.firstChild;)this.removeChild(this.firstChild);(data||data+\"\")&&this.appendChild(this.ownerDocument.createTextNode(data));break;default:this.data=data,this.value=value,this.nodeValue=data}}}),__set__=function(object,key,value){object[\"$$\"+key]=value})}catch(e){}return DOMImplementation}),ace.define(\"ace/mode/xml/dom-parser\",[\"require\",\"exports\",\"module\",\"ace/mode/xml/sax\",\"ace/mode/xml/dom\"],function(acequire){\"use strict\";function DOMParser(options){this.options=options||{locator:{}}}function buildErrorHandler(errorImpl,domBuilder,locator){function build(key){var fn=errorImpl[key];if(!fn)if(isCallback)fn=2==errorImpl.length?function(msg){errorImpl(key,msg)}:errorImpl;else for(var i=arguments.length;--i&&!(fn=errorImpl[arguments[i]]););errorHandler[key]=fn&&function(msg){fn(msg+_locator(locator),msg,locator)}||function(){}}if(!errorImpl){if(domBuilder instanceof DOMHandler)return domBuilder;errorImpl=domBuilder}var errorHandler={},isCallback=errorImpl instanceof Function;return locator=locator||{},build(\"warning\",\"warn\"),build(\"error\",\"warn\",\"warning\"),build(\"fatalError\",\"warn\",\"warning\",\"error\"),errorHandler}function DOMHandler(){this.cdata=!1}function position(locator,node){node.lineNumber=locator.lineNumber,node.columnNumber=locator.columnNumber}function _locator(l){return l?\"\\n@\"+(l.systemId||\"\")+\"#[line:\"+l.lineNumber+\",col:\"+l.columnNumber+\"]\":void 0}function _toString(chars,start,length){return\"string\"==typeof chars?chars.substr(start,length):chars.length>=start+length||start?new java.lang.String(chars,start,length)+\"\":chars}function appendElement(hander,node){hander.currentElement?hander.currentElement.appendChild(node):hander.document.appendChild(node)}var XMLReader=acequire(\"./sax\"),DOMImplementation=acequire(\"./dom\");return DOMParser.prototype.parseFromString=function(source,mimeType){var options=this.options,sax=new XMLReader,domBuilder=options.domBuilder||new DOMHandler,errorHandler=options.errorHandler,locator=options.locator,defaultNSMap=options.xmlns||{},entityMap={lt:\"<\",gt:\">\",amp:\"&\",quot:'\"',apos:\"'\"};return locator&&domBuilder.setDocumentLocator(locator),sax.errorHandler=buildErrorHandler(errorHandler,domBuilder,locator),sax.domBuilder=options.domBuilder||domBuilder,/\\/x?html?$/.test(mimeType)&&(entityMap.nbsp=\" \",entityMap.copy=\"©\",defaultNSMap[\"\"]=\"http://www.w3.org/1999/xhtml\"),source?sax.parse(source,defaultNSMap,entityMap):sax.errorHandler.error(\"invalid document source\"),domBuilder.document},DOMHandler.prototype={startDocument:function(){this.document=(new DOMImplementation).createDocument(null,null,null),this.locator&&(this.document.documentURI=this.locator.systemId)},startElement:function(namespaceURI,localName,qName,attrs){var doc=this.document,el=doc.createElementNS(namespaceURI,qName||localName),len=attrs.length;appendElement(this,el),this.currentElement=el,this.locator&&position(this.locator,el);for(var i=0;len>i;i++){var namespaceURI=attrs.getURI(i),value=attrs.getValue(i),qName=attrs.getQName(i),attr=doc.createAttributeNS(namespaceURI,qName);attr.getOffset&&position(attr.getOffset(1),attr),attr.value=attr.nodeValue=value,el.setAttributeNode(attr)}},endElement:function(){var current=this.currentElement;current.tagName,this.currentElement=current.parentNode},startPrefixMapping:function(){},endPrefixMapping:function(){},processingInstruction:function(target,data){var ins=this.document.createProcessingInstruction(target,data);this.locator&&position(this.locator,ins),appendElement(this,ins)},ignorableWhitespace:function(){},characters:function(chars){if(chars=_toString.apply(this,arguments),this.currentElement&&chars){if(this.cdata){var charNode=this.document.createCDATASection(chars);this.currentElement.appendChild(charNode)}else{var charNode=this.document.createTextNode(chars);this.currentElement.appendChild(charNode)}this.locator&&position(this.locator,charNode)}},skippedEntity:function(){},endDocument:function(){this.document.normalize()},setDocumentLocator:function(locator){(this.locator=locator)&&(locator.lineNumber=0)},comment:function(chars){chars=_toString.apply(this,arguments);var comm=this.document.createComment(chars);this.locator&&position(this.locator,comm),appendElement(this,comm)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(name,publicId,systemId){var impl=this.document.implementation;if(impl&&impl.createDocumentType){var dt=impl.createDocumentType(name,publicId,systemId);this.locator&&position(this.locator,dt),appendElement(this,dt)}},warning:function(error){console.warn(error,_locator(this.locator))},error:function(error){console.error(error,_locator(this.locator))},fatalError:function(error){throw console.error(error,_locator(this.locator)),error}},\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){DOMHandler.prototype[key]=function(){return null}}),{DOMParser:DOMParser}}),ace.define(\"ace/mode/xml_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/worker/mirror\",\"ace/mode/xml/dom-parser\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\");acequire(\"../lib/lang\");var Mirror=acequire(\"../worker/mirror\").Mirror,DOMParser=acequire(\"./xml/dom-parser\").DOMParser,Worker=exports.Worker=function(sender){Mirror.call(this,sender),this.setTimeout(400),this.context=null};oop.inherits(Worker,Mirror),function(){this.setOptions=function(options){this.context=options.context},this.onUpdate=function(){var value=this.doc.getValue();if(value){var parser=new DOMParser,errors=[];parser.options.errorHandler={fatalError:function(fullMsg,errorMsg,locator){errors.push({row:locator.lineNumber,column:locator.columnNumber,text:errorMsg,type:\"error\"})},error:function(fullMsg,errorMsg,locator){errors.push({row:locator.lineNumber,column:locator.columnNumber,text:errorMsg,type:\"error\"})},warning:function(fullMsg,errorMsg,locator){errors.push({row:locator.lineNumber,column:locator.columnNumber,text:errorMsg,type:\"warning\"})}},parser.parseFromString(value),this.sender.emit(\"error\",errors)}}}.call(Worker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object\n}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }), /* 283 */ /***/ (function(module, exports) { ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var DocCommentHighlightRules = function() { this.$rules = { "start" : [ { token : "comment.doc.tag", regex : "@[\\w\\d_]+" // TODO: fix email addresses }, DocCommentHighlightRules.getTagRule(), { defaultToken : "comment.doc", caseInsensitive: true }] }; }; oop.inherits(DocCommentHighlightRules, TextHighlightRules); DocCommentHighlightRules.getTagRule = function(start) { return { token : "comment.doc.tag.storage.type", regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; DocCommentHighlightRules.getStartRule = function(start) { return { token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)", next : start }; }; DocCommentHighlightRules.getEndRule = function (start) { return { token : "comment.doc", // closing comment regex : "\\*\\/", next : start }; }; exports.DocCommentHighlightRules = DocCommentHighlightRules; }); ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(acequire, exports, module) { var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var DocCommentHighlightRules = acequire("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var JsxHighlightRules = function() { var keywords = lang.arrayToMap( ("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + "if|throw|" + "delete|in|try|" + "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + "number|int|string|boolean|variant|" + "log|assert").split("|") ); var buildinConstants = lang.arrayToMap( ("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|") ); var reserved = lang.arrayToMap( ("debugger|with|" + "const|export|" + "let|private|public|yield|protected|" + "extern|native|as|operator|__fake__|__readonly__").split("|") ); var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; this.$rules = { "start" : [ { token : "comment", regex : "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { token : "comment", // multi line comment regex : "\\/\\*", next : "comment" }, { token : "string.regexp", regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }, { token : "string", // single line regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { token : "string", // single line regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { token : "constant.numeric", // hex regex : "0[xX][0-9a-fA-F]+\\b" }, { token : "constant.numeric", // float regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { token : "constant.language.boolean", regex : "(?:true|false)\\b" }, { token : [ "storage.type", "text", "entity.name.function" ], regex : "(function)(\\s+)(" + identifierRe + ")" }, { token : function(value) { if (value == "this") return "variable.language"; else if (value == "function") return "storage.type"; else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) return "keyword"; else if (buildinConstants.hasOwnProperty(value)) return "constant.language"; else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) return "language.support.class"; else return "identifier"; }, regex : identifierRe }, { token : "keyword.operator", regex : "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" }, { token : "punctuation.operator", regex : "\\?|\\:|\\,|\\;|\\." }, { token : "paren.lparen", regex : "[[({<]" }, { token : "paren.rparen", regex : "[\\])}>]" }, { token : "text", regex : "\\s+" } ], "comment" : [ { token : "comment", // closing comment regex : "\\*\\/", next : "start" }, { defaultToken : "comment" } ] }; this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); }; oop.inherits(JsxHighlightRules, TextHighlightRules); exports.JsxHighlightRules = JsxHighlightRules; }); ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(acequire, exports, module) { "use strict"; var Range = acequire("../range").Range; var MatchingBraceOutdent = function() {}; (function() { this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*\}/.test(input); }; this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.$getIndent = function(line) { return line.match(/^\s*/)[0]; }; }).call(MatchingBraceOutdent.prototype); exports.MatchingBraceOutdent = MatchingBraceOutdent; }); ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(commentRegex) { if (commentRegex) { this.foldingStartMarker = new RegExp( this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) ); this.foldingStopMarker = new RegExp( this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) ); } }; oop.inherits(FoldMode, BaseFoldMode); (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(session, foldStyle, row) { var line = session.getLine(row); if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } var fw = this._getFoldWidgetBase(session, foldStyle, row); if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart return fw; }; this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { var line = session.getLine(row); if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; if (match[1]) return this.openingBracketBlock(session, match[1], row, i); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } else if (foldStyle != "all") range = null; } return range; } if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; if (match[1]) return this.closingBracketBlock(session, match[1], row, i); return session.getCommentFoldRange(row, i, -1); } }; this.getSectionRange = function(session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; var startColumn = line.length; row = row + 1; var endRow = row; var maxRow = session.getLength(); while (++row < maxRow) { line = session.getLine(row); var indent = line.search(/\S/); if (indent === -1) continue; if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { if (subRange.start.row <= startRow) { break; } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { break; } } endRow = row; } return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; this.getCommentRegionBlock = function(session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); if (!m) continue; if (m[1]) depth--; else depth++; if (!depth) break; } var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; }).call(FoldMode.prototype); }); ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var JsxHighlightRules = acequire("./jsx_highlight_rules").JsxHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var CstyleBehaviour = acequire("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; function Mode() { this.HighlightRules = JsxHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); } oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.$id = "ace/mode/jsx"; }).call(Mode.prototype); exports.Mode = Mode; }); /***/ }), /* 284 */ /***/ (function(module, exports, __webpack_require__) { ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var DocCommentHighlightRules = function() { this.$rules = { "start" : [ { token : "comment.doc.tag", regex : "@[\\w\\d_]+" // TODO: fix email addresses }, DocCommentHighlightRules.getTagRule(), { defaultToken : "comment.doc", caseInsensitive: true }] }; }; oop.inherits(DocCommentHighlightRules, TextHighlightRules); DocCommentHighlightRules.getTagRule = function(start) { return { token : "comment.doc.tag.storage.type", regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; DocCommentHighlightRules.getStartRule = function(start) { return { token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)", next : start }; }; DocCommentHighlightRules.getEndRule = function (start) { return { token : "comment.doc", // closing comment regex : "\\*\\/", next : start }; }; exports.DocCommentHighlightRules = DocCommentHighlightRules; }); ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var supportType = exports.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|min-height|min-width|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|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.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|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"; var supportConstantColor = exports.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"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.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|acequired|root|target|valid|visited)\\b"; var CssHighlightRules = function() { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, "support.type": supportType, "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); this.$rules = { "start" : [{ include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", next: "ruleset" }, { token: "paren.rparen", regex: "\\}" }, { token: "string", regex: "@", 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 : numRe }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], "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", // multi line comment regex: "\\/\\*", push: [{ token : "comment", regex : "\\*\\/", next : "pop" }, { defaultToken : "comment" }] }], "ruleset" : [{ regex : "-(webkit|ms|moz|o)-", token : "text" }, { token : "paren.rparen", regex : "\\}", next : "start" }, { include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" }, { token : "constant.numeric", regex : numRe }, { token : "constant.numeric", // hex6 color regex : "#[a-f0-9]{6}" }, { token : "constant.numeric", // hex3 color regex : "#[a-f0-9]{3}" }, { token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], regex : pseudoElements }, { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true }], 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: true }, { defaultToken: "string" }] }, { token : "string.start", regex : '"', push : [{ token : "string.end", regex : '"|$', next: "pop" }, { include : "escapes" }, { token : "constant.language.escape", regex : /\\$/, consumeLineEnd: true }, { defaultToken: "string" }] }], escapes: [{ token : "constant.language.escape", regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] }; this.normalizeRules(); }; oop.inherits(CssHighlightRules, TextHighlightRules); exports.CssHighlightRules = CssHighlightRules; }); ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var DocCommentHighlightRules = acequire("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; var JavaScriptHighlightRules = function(options) { var keywordMapper = this.createKeywordMapper({ "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors "Namespace|QName|XML|XMLList|" + // E4X "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions "isNaN|parseFloat|parseInt|" + "JSON|Math|" + // Other "this|arguments|prototype|window|document" , // Pseudo "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "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", "storage.type": "const|let|var|function", "constant.language": "null|Infinity|NaN|undefined", "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode "[0-2][0-7]{0,2}|" + // oct "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; this.$rules = { "no_regex" : [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { token : "string", regex : "'(?=.)", next : "qstring" }, { token : "string", regex : '"(?=.)', next : "qqstring" }, { token : "constant.numeric", // hexadecimal, octal and binary regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { token : "constant.numeric", // decimal integers and floats regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text","keyword.operator" ], regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "text", "text", "storage.type", "text", "paren.lparen" ], regex : "(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : "keyword", regex : "from(?=\\s*('|\"))" }, { token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { token : ["support.constant"], regex : /that\b/ }, { token : ["storage.type", "punctuation.operator", "support.function.firebug"], regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ }, { token : keywordMapper, regex : identifierRe }, { token : "punctuation.operator", regex : /[.](?![.])/, next : "property" }, { token : "storage.type", regex : /=>/ }, { 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 : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { token : "punctuation.operator", regex : /[.](?![.])/ }, { 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|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|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 : identifierRe }, { regex: "", token: "empty", next: "no_regex" } ], "start": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("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" } ], "function_arguments": [ { token: "variable.parameter", regex: identifierRe }, { token: "punctuation.operator", regex: "[, ]+" }, { token: "punctuation.operator", regex: "$" }, { token: "empty", regex: "", next: "no_regex" } ], "qqstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : '"|$', next : "no_regex" }, { defaultToken: "string" } ], "qstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : "'|$", next : "no_regex" }, { defaultToken: "string" } ] }; if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); } else if (val == "}" && stack.length) { stack.shift(); this.next = stack.shift(); if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end"; } return val == "{" ? "paren.lparen" : "paren.rparen"; }, nextState: "start" }, { token : "string.quasi.start", regex : /`/, push : [{ token : "constant.language.escape", regex : escapedRe }, { token : "paren.quasi.start", regex : /\${/, push : "start" }, { token : "string.quasi.end", regex : /`/, next : "pop" }, { defaultToken: "string.quasi" }] }); if (!options || options.jsx != false) JSX.call(this); } this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); this.normalizeRules(); }; oop.inherits(JavaScriptHighlightRules, TextHighlightRules); function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { onMatch : function(val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) stack.unshift(this.next, this.nextState, 0); else stack.unshift(this.next); stack[2]++; } else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { stack.shift(); stack.shift(); } } } return [{ type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", value: val.slice(0, offset) }, { type: "meta.tag.tag-name.xml", value: val.substr(offset) }]; }, regex : "</?" + tagRegex + "", next: "jsxAttributes", nextState: "jsx" }; this.$rules.start.unshift(jsxTag); var jsxJsRule = { regex: "{", token: "paren.quasi.start", push: "start" }; this.$rules.jsx = [ jsxJsRule, jsxTag, {include : "reference"}, {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); if (value.length == 2) { if (stack[0] == this.nextState) stack[1]--; if (!stack[1] || stack[1] < 0) { stack.splice(0, 2); } } this.next = stack[0] || "start"; return [{type: this.token, value: value}]; }, nextState: "jsx" }, jsxJsRule, comments("jsxAttributes"), { token : "entity.other.attribute-name.xml", regex : tagRegex }, { 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"} ] }, jsxTag ]; this.$rules.reference = [{ token : "constant.language.escape.reference.xml", regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" }]; } function comments(next) { return [ { token : "comment", // multi line comment regex : /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "\\*\\/", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] }, { token : "comment", regex : "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "$|^", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; }); ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var XmlHighlightRules = function(normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; this.$rules = { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", 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: true }, {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 : tagRegex }, { 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 : "(<\\!)(" + tagRegex + ")", 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 : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")", 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 : tagRegex }, { 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"} ] }] }; if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; (function() { this.embedTagRules = function(HighlightRules, prefix, tag){ this.$rules.tag.unshift({ token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], regex : "(<)(" + tag + "(?=\\s|>|$))", next: [ {include : "attributes"}, {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} ] }); this.$rules[tag + "-end"] = [ {include : "attributes"}, {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", onMatch : function(value, currentState, stack) { stack.splice(0); return this.token; }} ]; this.embedRules(HighlightRules, prefix, [{ token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], regex : "(</)(" + tag + "(?=\\s|>|$))", next: tag + "-end" }, { token: "string.cdata.xml", regex : "<\\!\\[CDATA\\[" }, { token: "string.cdata.xml", regex : "\\]\\]>" }]); }; }).call(TextHighlightRules.prototype); oop.inherits(XmlHighlightRules, TextHighlightRules); exports.XmlHighlightRules = XmlHighlightRules; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = acequire("./xml_highlight_rules").XmlHighlightRules; var tagMap = lang.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' }); var HtmlHighlightRules = function() { XmlHighlightRules.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(start, tag) { var group = tagMap[tag]; return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (group ? "." + group : "") + ".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(CssHighlightRules, "css-", "style"); this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; oop.inherits(HtmlHighlightRules, XmlHighlightRules); exports.HtmlHighlightRules = HtmlHighlightRules; }); ace.define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var DocCommentHighlightRules = acequire("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var HtmlHighlightRules = acequire("./html_highlight_rules").HtmlHighlightRules; var PhpLangHighlightRules = function() { var docComment = DocCommentHighlightRules; var builtinFunctions = lang.arrayToMap( ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' + 'aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|' + 'apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|' + 'apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|' + 'apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|' + 'apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|' + 'apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|' + 'apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|' + 'array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|' + 'array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|' + 'array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|' + 'array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|' + 'array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|' + 'array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|' + 'atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|' + 'bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|' + 'bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|' + 'bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|' + 'bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|' + 'bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|' + 'cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|' + 'cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|' + 'cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|' + 'cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|' + 'cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|' + 'cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|' + 'cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|' + 'cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|' + 'cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|' + 'cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|' + 'cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|' + 'cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|' + 'cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|' + 'cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|' + 'cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|' + 'cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|' + 'cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|' + 'cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|' + 'cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|' + 'cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|' + 'cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|' + 'cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|' + 'cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|' + 'cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|' + 'cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|' + 'cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|' + 'cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|' + 'cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|' + 'chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|' + 'class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|' + 'classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|' + 'com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|' + 'com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|' + 'convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|' + 'counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|' + 'crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|' + 'ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|' + 'cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|' + 'cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|' + 'cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|' + 'cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|' + 'cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|' + 'cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|' + 'cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|' + 'cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|' + 'cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|' + 'cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|' + 'cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|' + 'curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|' + 'curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|' + 'curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|' + 'date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|' + 'date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|' + 'date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|' + 'dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|' + 'db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|' + 'db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|' + 'db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|' + 'db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|' + 'db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|' + 'db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|' + 'dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|' + 'dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|' + 'dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|' + 'dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|' + 'dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|' + 'dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|' + 'dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|' + 'dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|' + 'dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|' + 'define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|' + 'dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|' + 'dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|' + 'domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|' + 'domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|' + 'domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|' + 'domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|' + 'domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|' + 'domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|' + 'domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|' + 'domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|' + 'domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|' + 'domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|' + 'domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|' + 'domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|' + 'domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|' + 'domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|' + 'domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|' + 'domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|' + 'domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|' + 'enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|' + 'enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|' + 'enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|' + 'enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|' + 'eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|' + 'event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|' + 'event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|' + 'event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|' + 'event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|' + 'expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|' + 'fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|' + 'fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|' + 'fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|' + 'fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|' + 'fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|' + 'fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|' + 'fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|' + 'fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|' + 'fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|' + 'fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|' + 'fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|' + 'fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|' + 'fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|' + 'file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|' + 'filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|' + 'filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|' + 'finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|' + 'forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|' + 'ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|' + 'ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|' + 'ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|' + 'func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|' + 'gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|' + 'geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|' + 'geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|' + 'get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|' + 'get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|' + 'get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|' + 'get_meta_tags|get_object_vars|get_parent_class|get_acequired_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|' + 'getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|' + 'gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|' + 'getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|' + 'getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|' + 'gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|' + 'gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|' + 'gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|' + 'gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|' + 'gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|' + 'gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|' + 'gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|' + 'grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|' + 'gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|' + 'gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|' + 'gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|' + 'gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|' + 'gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|' + 'gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|' + 'gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|' + 'gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|' + 'gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|' + 'gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|' + 'halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|' + 'haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|' + 'harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|' + 'harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|' + 'harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|' + 'harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|' + 'harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|' + 'harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|' + 'harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|' + 'harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|' + 'haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|' + 'harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|' + 'harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|' + 'haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|' + 'haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|' + 'harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|' + 'harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|' + 'harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|' + 'harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|' + 'harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|' + 'harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|' + 'harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|' + 'harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|' + 'harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|' + 'harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|' + 'harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|' + 'harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|' + 'harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|' + 'harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|' + 'hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|' + 'header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|' + 'html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|' + 'http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|' + 'http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|' + 'http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|' + 'http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|' + 'http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|' + 'http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|' + 'http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|' + 'http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|' + 'httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|' + 'httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|' + 'httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|' + 'httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|' + 'httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|' + 'httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|' + 'httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|' + 'httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|' + 'httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|' + 'httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|' + 'httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|' + 'httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|' + 'httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|' + 'httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|' + 'httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|' + 'httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|' + 'httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|' + 'httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|' + 'httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|' + 'httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|' + 'httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|' + 'httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|' + 'httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|' + 'httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|' + 'httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|' + 'httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|' + 'httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|' + 'httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|' + 'httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|' + 'hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|' + 'hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|' + 'hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|' + 'hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|' + 'hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|' + 'hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|' + 'hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|' + 'hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|' + 'hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|' + 'hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|' + 'hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|' + 'hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|' + 'hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|' + 'hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|' + 'ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|' + 'ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|' + 'ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|' + 'ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|' + 'ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|' + 'ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|' + 'ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|' + 'iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|' + 'id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|' + 'idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|' + 'ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|' + 'ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|' + 'ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|' + 'ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|' + 'iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|' + 'iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|' + 'iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|' + 'imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|' + 'imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|' + 'imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|' + 'imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|' + 'imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|' + 'imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|' + 'imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|' + 'imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|' + 'imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|' + 'imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|' + 'imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|' + 'imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|' + 'imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|' + 'imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|' + 'imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|' + 'imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|' + 'imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|' + 'imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|' + 'imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|' + 'imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|' + 'imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|' + 'imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|' + 'imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|' + 'imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|' + 'imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|' + 'imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|' + 'imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|' + 'imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|' + 'imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|' + 'imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|' + 'imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|' + 'imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|' + 'imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|' + 'imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|' + 'imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|' + 'imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|' + 'imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|' + 'imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|' + 'imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|' + 'imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|' + 'imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|' + 'imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|' + 'imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|' + 'imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|' + 'imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|' + 'imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|' + 'imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|' + 'imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|' + 'imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|' + 'imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|' + 'imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|' + 'imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|' + 'imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|' + 'imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|' + 'imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|' + 'imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|' + 'imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|' + 'imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|' + 'imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|' + 'imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|' + 'imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|' + 'imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|' + 'imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|' + 'imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|' + 'imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|' + 'imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|' + 'imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|' + 'imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|' + 'imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|' + 'imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|' + 'imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|' + 'imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|' + 'imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|' + 'imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|' + 'imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|' + 'imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|' + 'imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|' + 'imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|' + 'imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|' + 'imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|' + 'imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|' + 'imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|' + 'imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|' + 'imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|' + 'imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|' + 'imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|' + 'imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|' + 'imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|' + 'imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|' + 'imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|' + 'imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|' + 'imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|' + 'imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|' + 'imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|' + 'imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|' + 'imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|' + 'imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|' + 'imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|' + 'imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|' + 'imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|' + 'imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|' + 'imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|' + 'imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|' + 'imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|' + 'imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|' + 'imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|' + 'imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|' + 'imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|' + 'imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|' + 'imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|' + 'include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|' + 'ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|' + 'ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|' + 'ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|' + 'ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|' + 'ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|' + 'inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|' + 'intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|' + 'is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|' + 'is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|' + 'iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|' + 'iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|' + 'jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|' + 'json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|' + 'kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|' + 'kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|' + 'ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|' + 'ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|' + 'ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|' + 'ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|' + 'ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|' + 'libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|' + 'limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|' + 'lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|' + 'm_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|' + 'm_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|' + 'm_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|' + 'm_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|' + 'mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|' + 'mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|' + 'mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|' + 'maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|' + 'maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|' + 'maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|' + 'maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|' + 'maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|' + 'maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|' + 'maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|' + 'maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|' + 'maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|' + 'maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|' + 'maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|' + 'maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|' + 'maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|' + 'maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|' + 'maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|' + 'mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|' + 'mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|' + 'mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|' + 'mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|' + 'mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|' + 'mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|' + 'mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|' + 'mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|' + 'mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|' + 'mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|' + 'mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|' + 'mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|' + 'mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|' + 'mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|' + 'mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|' + 'ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|' + 'mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|' + 'mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|' + 'mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|' + 'mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|' + 'mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|' + 'msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|' + 'msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|' + 'msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|' + 'msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|' + 'msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|' + 'msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|' + 'msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|' + 'mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|' + 'mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|' + 'mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|' + 'mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|' + 'mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|' + 'mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|' + 'mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|' + 'mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|' + 'mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|' + 'mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|' + 'mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|' + 'mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|' + 'mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|' + 'mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|' + 'mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|' + 'mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|' + 'mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|' + 'mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|' + 'mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|' + 'mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|' + 'mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|' + 'mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|' + 'mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|' + 'mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|' + 'mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|' + 'mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|' + 'mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|' + 'mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|' + 'mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|' + 'mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|' + 'mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|' + 'mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|' + 'ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|' + 'ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|' + 'ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|' + 'ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|' + 'ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|' + 'ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|' + 'ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|' + 'ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|' + 'ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|' + 'ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|' + 'ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|' + 'ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|' + 'ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|' + 'ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|' + 'ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|' + 'ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|' + 'ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|' + 'ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|' + 'ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|' + 'ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|' + 'ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|' + 'ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|' + 'newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|' + 'newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|' + 'newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|' + 'newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|' + 'newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|' + 'newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|' + 'newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|' + 'newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|' + 'newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|' + 'newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|' + 'newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|' + 'newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|' + 'newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|' + 'newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|' + 'newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|' + 'newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|' + 'newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|' + 'newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|' + 'newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|' + 'notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|' + 'notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|' + 'numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|' + 'ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|' + 'ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|' + 'oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|' + 'oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|' + 'oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|' + 'oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|' + 'oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|' + 'oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|' + 'oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|' + 'oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|' + 'oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|' + 'ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|' + 'ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|' + 'ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|' + 'ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|' + 'ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|' + 'octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|' + 'odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|' + 'odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|' + 'odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|' + 'odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|' + 'odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|' + 'openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|' + 'openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|' + 'openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|' + 'openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|' + 'openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|' + 'openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|' + 'openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|' + 'openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|' + 'openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|' + 'openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|' + 'openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|' + 'outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|' + 'ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|' + 'ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|' + 'ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|' + 'parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|' + 'pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|' + 'pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|' + 'pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|' + 'pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|' + 'pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|' + 'pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|' + 'pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|' + 'pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|' + 'pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|' + 'pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|' + 'pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|' + 'pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|' + 'pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|' + 'pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|' + 'pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|' + 'pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|' + 'pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|' + 'pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|' + 'pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|' + 'pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|' + 'pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|' + 'pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|' + 'pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|' + 'pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|' + 'pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|' + 'pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|' + 'pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|' + 'pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|' + 'pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|' + 'pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|' + 'pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|' + 'pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|' + 'pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|' + 'pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|' + 'pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|' + 'php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|' + 'png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|' + 'posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|' + 'posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|' + 'posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|' + 'preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|' + 'printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|' + 'printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|' + 'printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|' + 'printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|' + 'printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|' + 'ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|' + 'ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|' + 'ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|' + 'ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|' + 'ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|' + 'ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|' + 'ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|' + 'ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|' + 'ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|' + 'pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|' + 'pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|' + 'pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|' + 'px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|' + 'px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|' + 'px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|' + 'radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|' + 'radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|' + 'radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|' + 'radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|' + 'rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|' + 'readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|' + 'readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|' + 'readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|' + 'recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|' + 'recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|' + 'reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|' + 'regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|acequire|acequire_once|reset|resetValue|' + 'resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|' + 'rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|' + 'rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|' + 'runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|' + 'runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|' + 'runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|' + 'runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|' + 'samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|' + 'samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|' + 'sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|' + 'sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|' + 'sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|' + 'sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|' + 'sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|' + 'sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|' + 'sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|' + 'sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|' + 'sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|' + 'sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|' + 'sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|' + 'sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|' + 'sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|' + 'sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|' + 'sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|' + 'sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|' + 'sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|' + 'sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|' + 'sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|' + 'sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|' + 'session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|' + 'session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|' + 'session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|' + 'session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|' + 'set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|' + 'setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|' + 'shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|' + 'similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|' + 'snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|' + 'snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|' + 'snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|' + 'soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|' + 'socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|' + 'socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|' + 'socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|' + 'solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|' + 'solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|' + 'solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|' + 'spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|' + 'splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|' + 'splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|' + 'sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|' + 'sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|' + 'sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|' + 'sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|' + 'sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|' + 'sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|' + 'ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|' + 'ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|' + 'ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|' + 'ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|' + 'stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|' + 'stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|' + 'stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|' + 'stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|' + 'stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|' + 'stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|' + 'stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|' + 'stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|' + 'stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|' + 'stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|' + 'stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|' + 'stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|' + 'str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|' + 'stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|' + 'stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|' + 'stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|' + 'stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|' + 'stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|' + 'stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|' + 'stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|' + 'stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|' + 'stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|' + 'strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|' + 'svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|' + 'svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|' + 'svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|' + 'svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|' + 'svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|' + 'svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|' + 'swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|' + 'swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|' + 'swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|' + 'swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|' + 'swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|' + 'swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|' + 'swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|' + 'swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|' + 'swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|' + 'swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|' + 'swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|' + 'swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|' + 'swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|' + 'sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|' + 'sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|' + 'sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|' + 'sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|' + 'tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|' + 'tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|' + 'time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|' + 'timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|' + 'tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|' + 'ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|' + 'udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|' + 'udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|' + 'uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|' + 'urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|' + 'variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|' + 'variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|' + 'variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|' + 'vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|' + 'vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|' + 'vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|' + 'w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|' + 'wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|' + 'win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|' + 'win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|' + 'wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|' + 'wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|' + 'wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|' + 'wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|' + 'xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|' + 'xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|' + 'xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|' + 'xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|' + 'xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|' + 'xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|' + 'xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|' + 'xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|' + 'xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|' + 'xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|' + 'xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|' + 'xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|' + 'xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|' + 'xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|' + 'xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|' + 'xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|' + 'xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|' + 'xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|' + 'xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|' + 'xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|' + 'xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|' + 'xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|' + 'yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|' + 'yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|' + 'yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|' + 'yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|' + 'zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|' + 'ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|' + 'ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|' + 'ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|' + 'ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|' + 'ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|' + 'ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type').split('|') ); var keywords = lang.arrayToMap( ('abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|' + 'endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|' + 'public|static|switch|throw|trait|try|use|var|while|xor').split('|') ); var languageConstructs = lang.arrayToMap( ('die|echo|empty|exit|eval|include|include_once|isset|list|acequire|acequire_once|return|print|unset').split('|') ); var builtinConstants = lang.arrayToMap( ('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__').split('|') ); var builtinVariables = lang.arrayToMap( ('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|' + '$http_response_header|$argc|$argv').split('|') ); var builtinFunctionsDeprecated = lang.arrayToMap( ('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|' + 'com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|' + 'cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|' + 'hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|' + 'maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|' + 'mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|' + 'mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|' + 'mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|' + 'mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|' + 'mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' + 'mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|' + 'ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|' + 'ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|' + 'ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|' + 'ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|' + 'ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|' + 'PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|' + 'PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|' + 'PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|' + 'PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|' + 'PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|' + 'PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|' + 'PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|' + 'PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|' + 'px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister' + 'set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|' + 'sql_regcase').split('|') ); var keywordsDeprecated = lang.arrayToMap( ('cfunction|old_function').split('|') ); var futureReserved = lang.arrayToMap([]); this.$rules = { "start" : [ { token : "comment", regex : /(?:#|\/\/)(?:[^?]|\?[^>])*/ }, docComment.getStartRule("doc-start"), { token : "comment", // multi line comment regex : "\\/\\*", next : "comment" }, { token : "string.regexp", regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" }, { token : "string", // " string start regex : '"', next : "qqstring" }, { token : "string", // ' string start regex : "'", next : "qstring" }, { token : "constant.numeric", // hex regex : "0[xX][0-9a-fA-F]+\\b" }, { token : "constant.numeric", // float regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { token : "constant.language", // constants regex : "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + "VERSION))|__COMPILER_HALT_OFFSET__)\\b" }, { token : ["keyword", "text", "support.class"], regex : "\\b(new)(\\s+)(\\w+)" }, { token : ["support.class", "keyword.operator"], regex : "\\b(\\w+)(::)" }, { token : "constant.language", // constants regex : "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" }, { token : function(value) { if (keywords.hasOwnProperty(value)) return "keyword"; else if (builtinConstants.hasOwnProperty(value)) return "constant.language"; else if (builtinVariables.hasOwnProperty(value)) return "variable.language"; else if (futureReserved.hasOwnProperty(value)) return "invalid.illegal"; else if (builtinFunctions.hasOwnProperty(value)) return "support.function"; else if (value == "debugger") return "invalid.deprecated"; else if(value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) return "variable"; return "identifier"; }, regex : /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ }, { onMatch : function(value, currentSate, state) { value = value.substr(3); if (value[0] == "'" || value[0] == '"') value = value.slice(1, -1); state.unshift(this.next, value); return "markup.list"; }, regex : /<<<(?:\w+|'\w+'|"\w+")$/, next: "heredoc" }, { token : "keyword.operator", regex : "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" }, { token : "paren.lparen", regex : "[[({]" }, { token : "paren.rparen", regex : "[\\])}]" }, { token : "text", regex : "\\s+" } ], "heredoc" : [ { onMatch : function(value, currentSate, stack) { if (stack[1] != value) return "string"; stack.shift(); stack.shift(); return "markup.list"; }, regex : "^\\w+(?=;?$)", next: "start" }, { token: "string", regex : ".*" } ], "comment" : [ { token : "comment", regex : "\\*\\/", next : "start" }, { defaultToken : "comment" } ], "qqstring" : [ { token : "constant.language.escape", regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' }, { token : "variable", regex : /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ }, { token : "variable", regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now }, {token : "string", regex : '"', next : "start"}, {defaultToken : "string"} ], "qstring" : [ {token : "constant.language.escape", regex : /\\['\\]/}, {token : "string", regex : "'", next : "start"}, {defaultToken : "string"} ] }; this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); }; oop.inherits(PhpLangHighlightRules, TextHighlightRules); var PhpHighlightRules = function() { HtmlHighlightRules.call(this); var startRules = [ { token : "support.php_tag", // php open tag regex : "<\\?(?:php|=)?", push : "php-start" } ]; var endRules = [ { token : "support.php_tag", // php close tag regex : "\\?>", next : "pop" } ]; for (var key in this.$rules) this.$rules[key].unshift.apply(this.$rules[key], startRules); this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); this.normalizeRules(); }; oop.inherits(PhpHighlightRules, HtmlHighlightRules); exports.PhpHighlightRules = PhpHighlightRules; exports.PhpLangHighlightRules = PhpLangHighlightRules; }); ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(acequire, exports, module) { "use strict"; var Range = acequire("../range").Range; var MatchingBraceOutdent = function() {}; (function() { this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*\}/.test(input); }; this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.$getIndent = function(line) { return line.match(/^\s*/)[0]; }; }).call(MatchingBraceOutdent.prototype); exports.MatchingBraceOutdent = MatchingBraceOutdent; }); ace.define("ace/mode/php_completions",["require","exports","module"], function(acequire, exports, module) { "use strict"; var functionMap = { "abs": [ "int abs(int number)", "Return the absolute value of the number" ], "acos": [ "float acos(float number)", "Return the arc cosine of the number in radians" ], "acosh": [ "float acosh(float number)", "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number" ], "addGlob": [ "bool addGlob(string pattern[,int flags [, array options]])", "Add files matching the glob pattern. See php's glob for the pattern syntax." ], "addPattern": [ "bool addPattern(string pattern[, string path [, array options]])", "Add files matching the pcre pattern. See php's pcre for the pattern syntax." ], "addcslashes": [ "string addcslashes(string str, string charlist)", "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)" ], "addslashes": [ "string addslashes(string str)", "Escapes single quote, double quotes and backslash characters in a string with backslashes" ], "apache_child_terminate": [ "bool apache_child_terminate(void)", "Terminate apache process after this request" ], "apache_get_modules": [ "array apache_get_modules(void)", "Get a list of loaded Apache modules" ], "apache_get_version": [ "string apache_get_version(void)", "Fetch Apache version" ], "apache_getenv": [ "bool apache_getenv(string variable [, bool walk_to_top])", "Get an Apache subprocess_env variable" ], "apache_lookup_uri": [ "object apache_lookup_uri(string URI)", "Perform a partial request of the given URI to obtain information about it" ], "apache_note": [ "string apache_note(string note_name [, string note_value])", "Get and set Apache request notes" ], "apache_request_auth_name": [ "string apache_request_auth_name()", "" ], "apache_request_auth_type": [ "string apache_request_auth_type()", "" ], "apache_request_discard_request_body": [ "long apache_request_discard_request_body()", "" ], "apache_request_err_headers_out": [ "array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", "* fetch all headers that go out in case of an error or a subrequest" ], "apache_request_headers": [ "array apache_request_headers(void)", "Fetch all HTTP request headers" ], "apache_request_headers_in": [ "array apache_request_headers_in()", "* fetch all incoming request headers" ], "apache_request_headers_out": [ "array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", "* fetch all outgoing request headers" ], "apache_request_is_initial_req": [ "bool apache_request_is_initial_req()", "" ], "apache_request_log_error": [ "boolean apache_request_log_error(string message, [long facility])", "" ], "apache_request_meets_conditions": [ "long apache_request_meets_conditions()", "" ], "apache_request_remote_host": [ "int apache_request_remote_host([int type])", "" ], "apache_request_run": [ "long apache_request_run()", "This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status." ], "apache_request_satisfies": [ "long apache_request_satisfies()", "" ], "apache_request_server_port": [ "int apache_request_server_port()", "" ], "apache_request_set_etag": [ "void apache_request_set_etag()", "" ], "apache_request_set_last_modified": [ "void apache_request_set_last_modified()", "" ], "apache_request_some_auth_acequired": [ "bool apache_request_some_auth_acequired()", "" ], "apache_request_sub_req_lookup_file": [ "object apache_request_sub_req_lookup_file(string file)", "Returns sub-request for the specified file. You would need to run it yourself with run()." ], "apache_request_sub_req_lookup_uri": [ "object apache_request_sub_req_lookup_uri(string uri)", "Returns sub-request for the specified uri. You would need to run it yourself with run()" ], "apache_request_sub_req_method_uri": [ "object apache_request_sub_req_method_uri(string method, string uri)", "Returns sub-request for the specified file. You would need to run it yourself with run()." ], "apache_request_update_mtime": [ "long apache_request_update_mtime([int dependency_mtime])", "" ], "apache_reset_timeout": [ "bool apache_reset_timeout(void)", "Reset the Apache write timer" ], "apache_response_headers": [ "array apache_response_headers(void)", "Fetch all HTTP response headers" ], "apache_setenv": [ "bool apache_setenv(string variable, string value [, bool walk_to_top])", "Set an Apache subprocess_env variable" ], "array_change_key_case": [ "array array_change_key_case(array input [, int case=CASE_LOWER])", "Retuns an array with all string keys lowercased [or uppercased]" ], "array_chunk": [ "array array_chunk(array input, int size [, bool preserve_keys])", "Split array into chunks" ], "array_combine": [ "array array_combine(array keys, array values)", "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values" ], "array_count_values": [ "array array_count_values(array input)", "Return the value as key and the frequency of that value in input as value" ], "array_diff": [ "array array_diff(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are not present in any of the others arguments." ], "array_diff_assoc": [ "array array_diff_assoc(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal" ], "array_diff_key": [ "array array_diff_key(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved." ], "array_diff_uassoc": [ "array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function." ], "array_diff_ukey": [ "array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved." ], "array_fill": [ "array array_fill(int start_key, int num, mixed val)", "Create an array containing num elements starting with index start_key each initialized to val" ], "array_fill_keys": [ "array array_fill_keys(array keys, mixed val)", "Create an array using the elements of the first parameter as keys each initialized to val" ], "array_filter": [ "array array_filter(array input [, mixed callback])", "Filters elements from the array via the callback." ], "array_flip": [ "array array_flip(array input)", "Return array with key <-> value flipped" ], "array_intersect": [ "array array_intersect(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are present in all the other arguments" ], "array_intersect_assoc": [ "array array_intersect_assoc(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check" ], "array_intersect_key": [ "array array_intersect_key(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data." ], "array_intersect_uassoc": [ "array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback." ], "array_intersect_ukey": [ "array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data." ], "array_key_exists": [ "bool array_key_exists(mixed key, array search)", "Checks if the given key or index exists in the array" ], "array_keys": [ "array array_keys(array input [, mixed search_value[, bool strict]])", "Return just the keys from the input array, optionally only for the specified search_value" ], "array_map": [ "array array_map(mixed callback, array input1 [, array input2 ,...])", "Applies the callback to the elements in given arrays." ], "array_merge": [ "array array_merge(array arr1, array arr2 [, array ...])", "Merges elements from passed arrays into one array" ], "array_merge_recursive": [ "array array_merge_recursive(array arr1, array arr2 [, array ...])", "Recursively merges elements from passed arrays into one array" ], "array_multisort": [ "bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", "Sort multiple arrays at once similar to how ORDER BY clause works in SQL" ], "array_pad": [ "array array_pad(array input, int pad_size, mixed pad_value)", "Returns a copy of input array padded with pad_value to size pad_size" ], "array_pop": [ "mixed array_pop(array stack)", "Pops an element off the end of the array" ], "array_product": [ "mixed array_product(array input)", "Returns the product of the array entries" ], "array_push": [ "int array_push(array stack, mixed var [, mixed ...])", "Pushes elements onto the end of the array" ], "array_rand": [ "mixed array_rand(array input [, int num_req])", "Return key/keys for random entry/entries in the array" ], "array_reduce": [ "mixed array_reduce(array input, mixed callback [, mixed initial])", "Iteratively reduce the array to a single value via the callback." ], "array_replace": [ "array array_replace(array arr1, array arr2 [, array ...])", "Replaces elements from passed arrays into one array" ], "array_replace_recursive": [ "array array_replace_recursive(array arr1, array arr2 [, array ...])", "Recursively replaces elements from passed arrays into one array" ], "array_reverse": [ "array array_reverse(array input [, bool preserve keys])", "Return input as a new array with the order of the entries reversed" ], "array_search": [ "mixed array_search(mixed needle, array haystack [, bool strict])", "Searches the array for a given value and returns the corresponding key if successful" ], "array_shift": [ "mixed array_shift(array stack)", "Pops an element off the beginning of the array" ], "array_slice": [ "array array_slice(array input, int offset [, int length [, bool preserve_keys]])", "Returns elements specified by offset and length" ], "array_splice": [ "array array_splice(array input, int offset [, int length [, array replacement]])", "Removes the elements designated by offset and length and replace them with supplied array" ], "array_sum": [ "mixed array_sum(array input)", "Returns the sum of the array entries" ], "array_udiff": [ "array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function." ], "array_udiff_assoc": [ "array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function." ], "array_udiff_uassoc": [ "array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions." ], "array_uintersect": [ "array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback." ], "array_uintersect_assoc": [ "array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback." ], "array_uintersect_uassoc": [ "array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks." ], "array_unique": [ "array array_unique(array input [, int sort_flags])", "Removes duplicate values from array" ], "array_unshift": [ "int array_unshift(array stack, mixed var [, mixed ...])", "Pushes elements onto the beginning of the array" ], "array_values": [ "array array_values(array input)", "Return just the values from the input array" ], "array_walk": [ "bool array_walk(array input, string funcname [, mixed userdata])", "Apply a user function to every member of an array" ], "array_walk_recursive": [ "bool array_walk_recursive(array input, string funcname [, mixed userdata])", "Apply a user function recursively to every member of an array" ], "arsort": [ "bool arsort(array &array_arg [, int sort_flags])", "Sort an array in reverse order and maintain index association" ], "asin": [ "float asin(float number)", "Returns the arc sine of the number in radians" ], "asinh": [ "float asinh(float number)", "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number" ], "asort": [ "bool asort(array &array_arg [, int sort_flags])", "Sort an array and maintain index association" ], "assert": [ "int assert(string|bool assertion)", "Checks if assertion is false" ], "assert_options": [ "mixed assert_options(int what [, mixed value])", "Set/get the various assert flags" ], "atan": [ "float atan(float number)", "Returns the arc tangent of the number in radians" ], "atan2": [ "float atan2(float y, float x)", "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x" ], "atanh": [ "float atanh(float number)", "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number" ], "attachIterator": [ "void attachIterator(Iterator iterator[, mixed info])", "Attach a new iterator" ], "base64_decode": [ "string base64_decode(string str[, bool strict])", "Decodes string using MIME base64 algorithm" ], "base64_encode": [ "string base64_encode(string str)", "Encodes string using MIME base64 algorithm" ], "base_convert": [ "string base_convert(string number, int frombase, int tobase)", "Converts a number in a string from any base <= 36 to any base <= 36" ], "basename": [ "string basename(string path [, string suffix])", "Returns the filename component of the path" ], "bcadd": [ "string bcadd(string left_operand, string right_operand [, int scale])", "Returns the sum of two arbitrary precision numbers" ], "bccomp": [ "int bccomp(string left_operand, string right_operand [, int scale])", "Compares two arbitrary precision numbers" ], "bcdiv": [ "string bcdiv(string left_operand, string right_operand [, int scale])", "Returns the quotient of two arbitrary precision numbers (division)" ], "bcmod": [ "string bcmod(string left_operand, string right_operand)", "Returns the modulus of the two arbitrary precision operands" ], "bcmul": [ "string bcmul(string left_operand, string right_operand [, int scale])", "Returns the multiplication of two arbitrary precision numbers" ], "bcpow": [ "string bcpow(string x, string y [, int scale])", "Returns the value of an arbitrary precision number raised to the power of another" ], "bcpowmod": [ "string bcpowmod(string x, string y, string mod [, int scale])", "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous" ], "bcscale": [ "bool bcscale(int scale)", "Sets default scale parameter for all bc math functions" ], "bcsqrt": [ "string bcsqrt(string operand [, int scale])", "Returns the square root of an arbitray precision number" ], "bcsub": [ "string bcsub(string left_operand, string right_operand [, int scale])", "Returns the difference between two arbitrary precision numbers" ], "bin2hex": [ "string bin2hex(string data)", "Converts the binary representation of data to hex" ], "bind_textdomain_codeset": [ "string bind_textdomain_codeset (string domain, string codeset)", "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned." ], "bindec": [ "int bindec(string binary_number)", "Returns the decimal equivalent of the binary number" ], "bindtextdomain": [ "string bindtextdomain(string domain_name, string dir)", "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain" ], "birdstep_autocommit": [ "bool birdstep_autocommit(int index)", "" ], "birdstep_close": [ "bool birdstep_close(int id)", "" ], "birdstep_commit": [ "bool birdstep_commit(int index)", "" ], "birdstep_connect": [ "int birdstep_connect(string server, string user, string pass)", "" ], "birdstep_exec": [ "int birdstep_exec(int index, string exec_str)", "" ], "birdstep_fetch": [ "bool birdstep_fetch(int index)", "" ], "birdstep_fieldname": [ "string birdstep_fieldname(int index, int col)", "" ], "birdstep_fieldnum": [ "int birdstep_fieldnum(int index)", "" ], "birdstep_freeresult": [ "bool birdstep_freeresult(int index)", "" ], "birdstep_off_autocommit": [ "bool birdstep_off_autocommit(int index)", "" ], "birdstep_result": [ "mixed birdstep_result(int index, mixed col)", "" ], "birdstep_rollback": [ "bool birdstep_rollback(int index)", "" ], "bzcompress": [ "string bzcompress(string source [, int blocksize100k [, int workfactor]])", "Compresses a string into BZip2 encoded data" ], "bzdecompress": [ "string bzdecompress(string source [, int small])", "Decompresses BZip2 compressed data" ], "bzerrno": [ "int bzerrno(resource bz)", "Returns the error number" ], "bzerror": [ "array bzerror(resource bz)", "Returns the error number and error string in an associative array" ], "bzerrstr": [ "string bzerrstr(resource bz)", "Returns the error string" ], "bzopen": [ "resource bzopen(string|int file|fp, string mode)", "Opens a new BZip2 stream" ], "bzread": [ "string bzread(resource bz[, int length])", "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified" ], "cal_days_in_month": [ "int cal_days_in_month(int calendar, int month, int year)", "Returns the number of days in a month for a given year and calendar" ], "cal_from_jd": [ "array cal_from_jd(int jd, int calendar)", "Converts from Julian Day Count to a supported calendar and return extended information" ], "cal_info": [ "array cal_info([int calendar])", "Returns information about a particular calendar" ], "cal_to_jd": [ "int cal_to_jd(int calendar, int month, int day, int year)", "Converts from a supported calendar to Julian Day Count" ], "call_user_func": [ "mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", "Call a user function which is the first parameter" ], "call_user_func_array": [ "mixed call_user_func_array(string function_name, array parameters)", "Call a user function which is the first parameter with the arguments contained in array" ], "call_user_method": [ "mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", "Call a user method on a specific object or class" ], "call_user_method_array": [ "mixed call_user_method_array(string method_name, mixed object, array params)", "Call a user method on a specific object or class using a parameter array" ], "ceil": [ "float ceil(float number)", "Returns the next highest integer value of the number" ], "chdir": [ "bool chdir(string directory)", "Change the current directory" ], "checkdate": [ "bool checkdate(int month, int day, int year)", "Returns true(1) if it is a valid date in gregorian calendar" ], "chgrp": [ "bool chgrp(string filename, mixed group)", "Change file group" ], "chmod": [ "bool chmod(string filename, int mode)", "Change file mode" ], "chown": [ "bool chown (string filename, mixed user)", "Change file owner" ], "chr": [ "string chr(int ascii)", "Converts ASCII code to a character" ], "chroot": [ "bool chroot(string directory)", "Change root directory" ], "chunk_split": [ "string chunk_split(string str [, int chunklen [, string ending]])", "Returns split line" ], "class_alias": [ "bool class_alias(string user_class_name , string alias_name [, bool autoload])", "Creates an alias for user defined class" ], "class_exists": [ "bool class_exists(string classname [, bool autoload])", "Checks if the class exists" ], "class_implements": [ "array class_implements(mixed what [, bool autoload ])", "Return all classes and interfaces implemented by SPL" ], "class_parents": [ "array class_parents(object instance [, boolean autoload = true])", "Return an array containing the names of all parent classes" ], "clearstatcache": [ "void clearstatcache([bool clear_realpath_cache[, string filename]])", "Clear file stat cache" ], "closedir": [ "void closedir([resource dir_handle])", "Close directory connection identified by the dir_handle" ], "closelog": [ "bool closelog(void)", "Close connection to system logger" ], "collator_asort": [ "bool collator_asort( Collator $coll, array(string) $arr )", "* Sort array using specified collator, maintaining index association." ], "collator_compare": [ "int collator_compare( Collator $coll, string $str1, string $str2 )", "* Compare two strings." ], "collator_create": [ "Collator collator_create( string $locale )", "* Create collator." ], "collator_get_attribute": [ "int collator_get_attribute( Collator $coll, int $attr )", "* Get collation attribute value." ], "collator_get_error_code": [ "int collator_get_error_code( Collator $coll )", "* Get collator's last error code." ], "collator_get_error_message": [ "string collator_get_error_message( Collator $coll )", "* Get text description for collator's last error code." ], "collator_get_locale": [ "string collator_get_locale( Collator $coll, int $type )", "* Gets the locale name of the collator." ], "collator_get_sort_key": [ "bool collator_get_sort_key( Collator $coll, string $str )", "* Get a sort key for a string from a Collator. }}}" ], "collator_get_strength": [ "int collator_get_strength(Collator coll)", "* Returns the current collation strength." ], "collator_set_attribute": [ "bool collator_set_attribute( Collator $coll, int $attr, int $val )", "* Set collation attribute." ], "collator_set_strength": [ "bool collator_set_strength(Collator coll, int strength)", "* Set the collation strength." ], "collator_sort": [ "bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )", "* Sort array using specified collator." ], "collator_sort_with_sort_keys": [ "bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", "* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance." ], "com_create_guid": [ "string com_create_guid()", "Generate a globally unique identifier (GUID)" ], "com_event_sink": [ "bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", "Connect events from a COM object to a PHP object" ], "com_get_active_object": [ "object com_get_active_object(string progid [, int code_page ])", "Returns a handle to an already running instance of a COM object" ], "com_load_typelib": [ "bool com_load_typelib(string typelib_name [, int case_insensitive])", "Loads a Typelibrary and registers its constants" ], "com_message_pump": [ "bool com_message_pump([int timeoutms])", "Process COM messages, sleeping for up to timeoutms milliseconds" ], "com_print_typeinfo": [ "bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", "Print out a PHP class definition for a dispatchable interface" ], "compact": [ "array compact(mixed var_names [, mixed ...])", "Creates a hash containing variables and their values" ], "compose_locale": [ "static string compose_locale($array)", "* Creates a locale by combining the parts of locale-ID passed * }}}" ], "confirm_extname_compiled": [ "string confirm_extname_compiled(string arg)", "Return a string to confirm that the module is compiled in" ], "connection_aborted": [ "int connection_aborted(void)", "Returns true if client disconnected" ], "connection_status": [ "int connection_status(void)", "Returns the connection status bitfield" ], "constant": [ "mixed constant(string const_name)", "Given the name of a constant this function will return the constant's associated value" ], "convert_cyr_string": [ "string convert_cyr_string(string str, string from, string to)", "Convert from one Cyrillic character set to another" ], "convert_uudecode": [ "string convert_uudecode(string data)", "decode a uuencoded string" ], "convert_uuencode": [ "string convert_uuencode(string data)", "uuencode a string" ], "copy": [ "bool copy(string source_file, string destination_file [, resource context])", "Copy a file" ], "cos": [ "float cos(float number)", "Returns the cosine of the number in radians" ], "cosh": [ "float cosh(float number)", "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2" ], "count": [ "int count(mixed var [, int mode])", "Count the number of elements in a variable (usually an array)" ], "count_chars": [ "mixed count_chars(string input [, int mode])", "Returns info about what characters are used in input" ], "crc32": [ "string crc32(string str)", "Calculate the crc32 polynomial of a string" ], "create_function": [ "string create_function(string args, string code)", "Creates an anonymous function, and returns its name (funny, eh?)" ], "crypt": [ "string crypt(string str [, string salt])", "Hash a string" ], "ctype_alnum": [ "bool ctype_alnum(mixed c)", "Checks for alphanumeric character(s)" ], "ctype_alpha": [ "bool ctype_alpha(mixed c)", "Checks for alphabetic character(s)" ], "ctype_cntrl": [ "bool ctype_cntrl(mixed c)", "Checks for control character(s)" ], "ctype_digit": [ "bool ctype_digit(mixed c)", "Checks for numeric character(s)" ], "ctype_graph": [ "bool ctype_graph(mixed c)", "Checks for any printable character(s) except space" ], "ctype_lower": [ "bool ctype_lower(mixed c)", "Checks for lowercase character(s)" ], "ctype_print": [ "bool ctype_print(mixed c)", "Checks for printable character(s)" ], "ctype_punct": [ "bool ctype_punct(mixed c)", "Checks for any printable character which is not whitespace or an alphanumeric character" ], "ctype_space": [ "bool ctype_space(mixed c)", "Checks for whitespace character(s)" ], "ctype_upper": [ "bool ctype_upper(mixed c)", "Checks for uppercase character(s)" ], "ctype_xdigit": [ "bool ctype_xdigit(mixed c)", "Checks for character(s) representing a hexadecimal digit" ], "curl_close": [ "void curl_close(resource ch)", "Close a cURL session" ], "curl_copy_handle": [ "resource curl_copy_handle(resource ch)", "Copy a cURL handle along with all of it's preferences" ], "curl_errno": [ "int curl_errno(resource ch)", "Return an integer containing the last error number" ], "curl_error": [ "string curl_error(resource ch)", "Return a string contain the last error for the current session" ], "curl_exec": [ "bool curl_exec(resource ch)", "Perform a cURL session" ], "curl_getinfo": [ "mixed curl_getinfo(resource ch [, int option])", "Get information regarding a specific transfer" ], "curl_init": [ "resource curl_init([string url])", "Initialize a cURL session" ], "curl_multi_add_handle": [ "int curl_multi_add_handle(resource mh, resource ch)", "Add a normal cURL handle to a cURL multi handle" ], "curl_multi_close": [ "void curl_multi_close(resource mh)", "Close a set of cURL handles" ], "curl_multi_exec": [ "int curl_multi_exec(resource mh, int &still_running)", "Run the sub-connections of the current cURL handle" ], "curl_multi_getcontent": [ "string curl_multi_getcontent(resource ch)", "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set" ], "curl_multi_info_read": [ "array curl_multi_info_read(resource mh [, long msgs_in_queue])", "Get information about the current transfers" ], "curl_multi_init": [ "resource curl_multi_init(void)", "Returns a new cURL multi handle" ], "curl_multi_remove_handle": [ "int curl_multi_remove_handle(resource mh, resource ch)", "Remove a multi handle from a set of cURL handles" ], "curl_multi_select": [ "int curl_multi_select(resource mh[, double timeout])", "Get all the sockets associated with the cURL extension, which can then be \"selected\"" ], "curl_setopt": [ "bool curl_setopt(resource ch, int option, mixed value)", "Set an option for a cURL transfer" ], "curl_setopt_array": [ "bool curl_setopt_array(resource ch, array options)", "Set an array of option for a cURL transfer" ], "curl_version": [ "array curl_version([int version])", "Return cURL version information." ], "current": [ "mixed current(array array_arg)", "Return the element currently pointed to by the internal array pointer" ], "date": [ "string date(string format [, long timestamp])", "Format a local date/time" ], "date_add": [ "DateTime date_add(DateTime object, DateInterval interval)", "Adds an interval to the current date in object." ], "date_create": [ "DateTime date_create([string time[, DateTimeZone object]])", "Returns new DateTime object" ], "date_create_from_format": [ "DateTime date_create_from_format(string format, string time[, DateTimeZone object])", "Returns new DateTime object formatted according to the specified format" ], "date_date_set": [ "DateTime date_date_set(DateTime object, long year, long month, long day)", "Sets the date." ], "date_default_timezone_get": [ "string date_default_timezone_get()", "Gets the default timezone used by all date/time functions in a script" ], "date_default_timezone_set": [ "bool date_default_timezone_set(string timezone_identifier)", "Sets the default timezone used by all date/time functions in a script" ], "date_diff": [ "DateInterval date_diff(DateTime object [, bool absolute])", "Returns the difference between two DateTime objects." ], "date_format": [ "string date_format(DateTime object, string format)", "Returns date formatted according to given format" ], "date_get_last_errors": [ "array date_get_last_errors()", "Returns the warnings and errors found while parsing a date/time string." ], "date_interval_create_from_date_string": [ "DateInterval date_interval_create_from_date_string(string time)", "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string" ], "date_interval_format": [ "string date_interval_format(DateInterval object, string format)", "Formats the interval." ], "date_isodate_set": [ "DateTime date_isodate_set(DateTime object, long year, long week[, long day])", "Sets the ISO date." ], "date_modify": [ "DateTime date_modify(DateTime object, string modify)", "Alters the timestamp." ], "date_offset_get": [ "long date_offset_get(DateTime object)", "Returns the DST offset." ], "date_parse": [ "array date_parse(string date)", "Returns associative array with detailed info about given date" ], "date_parse_from_format": [ "array date_parse_from_format(string format, string date)", "Returns associative array with detailed info about given date" ], "date_sub": [ "DateTime date_sub(DateTime object, DateInterval interval)", "Subtracts an interval to the current date in object." ], "date_sun_info": [ "array date_sun_info(long time, float latitude, float longitude)", "Returns an array with information about sun set/rise and twilight begin/end" ], "date_sunrise": [ "mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", "Returns time of sunrise for a given day and location" ], "date_sunset": [ "mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", "Returns time of sunset for a given day and location" ], "date_time_set": [ "DateTime date_time_set(DateTime object, long hour, long minute[, long second])", "Sets the time." ], "date_timestamp_get": [ "long date_timestamp_get(DateTime object)", "Gets the Unix timestamp." ], "date_timestamp_set": [ "DateTime date_timestamp_set(DateTime object, long unixTimestamp)", "Sets the date and time based on an Unix timestamp." ], "date_timezone_get": [ "DateTimeZone date_timezone_get(DateTime object)", "Return new DateTimeZone object relative to give DateTime" ], "date_timezone_set": [ "DateTime date_timezone_set(DateTime object, DateTimeZone object)", "Sets the timezone for the DateTime object." ], "datefmt_create": [ "IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", "* Create formatter." ], "datefmt_format": [ "string datefmt_format( [mixed]int $args or array $args )", "* Format the time value as a string. }}}" ], "datefmt_get_calendar": [ "string datefmt_get_calendar( IntlDateFormatter $mf )", "* Get formatter calendar." ], "datefmt_get_datetype": [ "string datefmt_get_datetype( IntlDateFormatter $mf )", "* Get formatter datetype." ], "datefmt_get_error_code": [ "int datefmt_get_error_code( IntlDateFormatter $nf )", "* Get formatter's last error code." ], "datefmt_get_error_message": [ "string datefmt_get_error_message( IntlDateFormatter $coll )", "* Get text description for formatter's last error code." ], "datefmt_get_locale": [ "string datefmt_get_locale(IntlDateFormatter $mf)", "* Get formatter locale." ], "datefmt_get_pattern": [ "string datefmt_get_pattern( IntlDateFormatter $mf )", "* Get formatter pattern." ], "datefmt_get_timetype": [ "string datefmt_get_timetype( IntlDateFormatter $mf )", "* Get formatter timetype." ], "datefmt_get_timezone_id": [ "string datefmt_get_timezone_id( IntlDateFormatter $mf )", "* Get formatter timezone_id." ], "datefmt_isLenient": [ "string datefmt_isLenient(IntlDateFormatter $mf)", "* Get formatter locale." ], "datefmt_localtime": [ "integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", "* Parse the string $value to a localtime array }}}" ], "datefmt_parse": [ "integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}" ], "datefmt_setLenient": [ "string datefmt_setLenient(IntlDateFormatter $mf)", "* Set formatter lenient." ], "datefmt_set_calendar": [ "bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", "* Set formatter calendar." ], "datefmt_set_pattern": [ "bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", "* Set formatter pattern." ], "datefmt_set_timezone_id": [ "boolean datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", "* Set formatter timezone_id." ], "dba_close": [ "void dba_close(resource handle)", "Closes database" ], "dba_delete": [ "bool dba_delete(string key, resource handle)", "Deletes the entry associated with key If inifile: remove all other key lines" ], "dba_exists": [ "bool dba_exists(string key, resource handle)", "Checks, if the specified key exists" ], "dba_fetch": [ "string dba_fetch(string key, [int skip ,] resource handle)", "Fetches the data associated with key" ], "dba_firstkey": [ "string dba_firstkey(resource handle)", "Resets the internal key pointer and returns the first key" ], "dba_handlers": [ "array dba_handlers([bool full_info])", "List configured database handlers" ], "dba_insert": [ "bool dba_insert(string key, string value, resource handle)", "If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)" ], "dba_key_split": [ "array|false dba_key_split(string key)", "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null" ], "dba_list": [ "array dba_list()", "List opened databases" ], "dba_nextkey": [ "string dba_nextkey(resource handle)", "Returns the next key" ], "dba_open": [ "resource dba_open(string path, string mode [, string handlername, string ...])", "Opens path using the specified handler in mode" ], "dba_optimize": [ "bool dba_optimize(resource handle)", "Optimizes (e.g. clean up, vacuum) database" ], "dba_popen": [ "resource dba_popen(string path, string mode [, string handlername, string ...])", "Opens path using the specified handler in mode persistently" ], "dba_replace": [ "bool dba_replace(string key, string value, resource handle)", "Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines" ], "dba_sync": [ "bool dba_sync(resource handle)", "Synchronizes database" ], "dcgettext": [ "string dcgettext(string domain_name, string msgid, long category)", "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist" ], "dcngettext": [ "string dcngettext (string domain, string msgid1, string msgid2, int n, int category)", "Plural version of dcgettext()" ], "debug_backtrace": [ "array debug_backtrace([bool provide_object])", "Return backtrace as array" ], "debug_print_backtrace": [ "void debug_print_backtrace(void) */", "ZEND_FUNCTION(debug_print_backtrace) { zend_execute_data *ptr, *skip; int lineno; char *function_name; char *filename; char *class_name = NULL; char *call_type; char *include_filename = NULL; zval *arg_array = NULL; int indent = 0; if (zend_parse_parameters_none() == FAILURE) { return; } ptr = EG(current_execute_data);", "PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file" ], "dom_document_relaxNG_validate_xml": [ "boolean dom_document_relaxNG_validate_xml(string source); */", "PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml" ], "dom_document_rename_node": [ "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3" ], "dom_document_save": [ "int dom_document_save(string file);", "Convenience method to save to file" ], "dom_document_save_html": [ "string dom_document_save_html();", "Convenience method to output as html" ], "dom_document_save_html_file": [ "int dom_document_save_html_file(string file);", "Convenience method to save to file as html" ], "dom_document_savexml": [ "string dom_document_savexml([node n]);", "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3" ], "dom_document_schema_validate": [ "boolean dom_document_schema_validate(string source); */", "PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate" ], "dom_document_schema_validate_file": [ "boolean dom_document_schema_validate_file(string filename); */", "PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file" ], "dom_document_validate": [ "boolean dom_document_validate();", "Since: DOM extended" ], "dom_document_xinclude": [ "int dom_document_xinclude([int options])", "Substitutues xincludes in a DomDocument" ], "dom_domconfiguration_can_set_parameter": [ "boolean dom_domconfiguration_can_set_parameter(string name, domuserdata value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:" ], "dom_domconfiguration_get_parameter": [ "domdomuserdata dom_domconfiguration_get_parameter(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:" ], "dom_domconfiguration_set_parameter": [ "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:" ], "dom_domerrorhandler_handle_error": [ "dom_boolean dom_domerrorhandler_handle_error(domerror error);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:" ], "dom_domimplementation_create_document": [ "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2" ], "dom_domimplementation_create_document_type": [ "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2" ], "dom_domimplementation_get_feature": [ "DOMNode dom_domimplementation_get_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3" ], "dom_domimplementation_has_feature": [ "boolean dom_domimplementation_has_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:" ], "dom_domimplementationlist_item": [ "domdomimplementation dom_domimplementationlist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:" ], "dom_domimplementationsource_get_domimplementation": [ "domdomimplementation dom_domimplementationsource_get_domimplementation(string features);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:" ], "dom_domimplementationsource_get_domimplementations": [ "domimplementationlist dom_domimplementationsource_get_domimplementations(string features);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:" ], "dom_domstringlist_item": [ "domstring dom_domstringlist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:" ], "dom_element_get_attribute": [ "string dom_element_get_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:" ], "dom_element_get_attribute_node": [ "DOMAttr dom_element_get_attribute_node(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:" ], "dom_element_get_attribute_node_ns": [ "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2" ], "dom_element_get_attribute_ns": [ "string dom_element_get_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2" ], "dom_element_get_elements_by_tag_name": [ "DOMNodeList dom_element_get_elements_by_tag_name(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:" ], "dom_element_get_elements_by_tag_name_ns": [ "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2" ], "dom_element_has_attribute": [ "boolean dom_element_has_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2" ], "dom_element_has_attribute_ns": [ "boolean dom_element_has_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2" ], "dom_element_remove_attribute": [ "void dom_element_remove_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:" ], "dom_element_remove_attribute_node": [ "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:" ], "dom_element_remove_attribute_ns": [ "void dom_element_remove_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2" ], "dom_element_set_attribute": [ "void dom_element_set_attribute(string name, string value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:" ], "dom_element_set_attribute_node": [ "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:" ], "dom_element_set_attribute_node_ns": [ "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2" ], "dom_element_set_attribute_ns": [ "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2" ], "dom_element_set_id_attribute": [ "void dom_element_set_id_attribute(string name, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3" ], "dom_element_set_id_attribute_node": [ "void dom_element_set_id_attribute_node(attr idAttr, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3" ], "dom_element_set_id_attribute_ns": [ "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3" ], "dom_import_simplexml": [ "somNode dom_import_simplexml(sxeobject node)", "Get a simplexml_element object from dom to allow for processing" ], "dom_namednodemap_get_named_item": [ "DOMNode dom_namednodemap_get_named_item(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:" ], "dom_namednodemap_get_named_item_ns": [ "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2" ], "dom_namednodemap_item": [ "DOMNode dom_namednodemap_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:" ], "dom_namednodemap_remove_named_item": [ "DOMNode dom_namednodemap_remove_named_item(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:" ], "dom_namednodemap_remove_named_item_ns": [ "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2" ], "dom_namednodemap_set_named_item": [ "DOMNode dom_namednodemap_set_named_item(DOMNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:" ], "dom_namednodemap_set_named_item_ns": [ "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2" ], "dom_namelist_get_name": [ "string dom_namelist_get_name(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:" ], "dom_namelist_get_namespace_uri": [ "string dom_namelist_get_namespace_uri(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:" ], "dom_node_append_child": [ "DomNode dom_node_append_child(DomNode newChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:" ], "dom_node_clone_node": [ "DomNode dom_node_clone_node(boolean deep);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:" ], "dom_node_compare_document_position": [ "short dom_node_compare_document_position(DomNode other);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3" ], "dom_node_get_feature": [ "DomNode dom_node_get_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3" ], "dom_node_get_user_data": [ "mixed dom_node_get_user_data(string key);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3" ], "dom_node_has_attributes": [ "boolean dom_node_has_attributes();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2" ], "dom_node_has_child_nodes": [ "boolean dom_node_has_child_nodes();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:" ], "dom_node_insert_before": [ "domnode dom_node_insert_before(DomNode newChild, DomNode refChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:" ], "dom_node_is_default_namespace": [ "boolean dom_node_is_default_namespace(string namespaceURI);", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3" ], "dom_node_is_equal_node": [ "boolean dom_node_is_equal_node(DomNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3" ], "dom_node_is_same_node": [ "boolean dom_node_is_same_node(DomNode other);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3" ], "dom_node_is_supported": [ "boolean dom_node_is_supported(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2" ], "dom_node_lookup_namespace_uri": [ "string dom_node_lookup_namespace_uri(string prefix);", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3" ], "dom_node_lookup_prefix": [ "string dom_node_lookup_prefix(string namespaceURI);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3" ], "dom_node_normalize": [ "void dom_node_normalize();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:" ], "dom_node_remove_child": [ "DomNode dom_node_remove_child(DomNode oldChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:" ], "dom_node_replace_child": [ "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:" ], "dom_node_set_user_data": [ "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3" ], "dom_nodelist_item": [ "DOMNode dom_nodelist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:" ], "dom_string_extend_find_offset16": [ "int dom_string_extend_find_offset16(int offset32);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:" ], "dom_string_extend_find_offset32": [ "int dom_string_extend_find_offset32(int offset16);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:" ], "dom_text_is_whitespace_in_element_content": [ "boolean dom_text_is_whitespace_in_element_content();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3" ], "dom_text_replace_whole_text": [ "DOMText dom_text_replace_whole_text(string content);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3" ], "dom_text_split_text": [ "DOMText dom_text_split_text(int offset);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:" ], "dom_userdatahandler_handle": [ "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:" ], "dom_xpath_evaluate": [ "mixed dom_xpath_evaluate(string expr [,DOMNode context]); */", "PHP_FUNCTION(dom_xpath_evaluate) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_EVALUATE); } /* }}} end dom_xpath_evaluate" ], "dom_xpath_query": [ "DOMNodeList dom_xpath_query(string expr [,DOMNode context]); */", "PHP_FUNCTION(dom_xpath_query) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_QUERY); } /* }}} end dom_xpath_query" ], "dom_xpath_register_ns": [ "boolean dom_xpath_register_ns(string prefix, string uri); */", "PHP_FUNCTION(dom_xpath_register_ns) { zval *id; xmlXPathContextPtr ctxp; int prefix_len, ns_uri_len; dom_xpath_object *intern; unsigned char *prefix, *ns_uri; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"Oss\", &id, dom_xpath_class_entry, &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) { return; } intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); ctxp = (xmlXPathContextPtr) intern->ptr; if (ctxp == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Invalid XPath Context\"); RETURN_FALSE; } if (xmlXPathRegisterNs(ctxp, prefix, ns_uri) != 0) { RETURN_FALSE } RETURN_TRUE; } /* }}}" ], "dom_xpath_register_php_functions": [ "void dom_xpath_register_php_functions() */", "PHP_FUNCTION(dom_xpath_register_php_functions) { zval *id; dom_xpath_object *intern; zval *array_value, **entry, *new_string; int name_len = 0; char *name; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"a\", &array_value) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value)); while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) { SEPARATE_ZVAL(entry); convert_to_string_ex(entry); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL); zend_hash_move_forward(Z_ARRVAL_P(array_value)); } intern->registerPhpFunctions = 2; RETURN_TRUE; } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"s\", &name, &name_len) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL); intern->registerPhpFunctions = 2; } else { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); intern->registerPhpFunctions = 1; } } /* }}} end dom_xpath_register_php_functions" ], "each": [ "array each(array arr)", "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element" ], "easter_date": [ "int easter_date([int year])", "Return the timestamp of midnight on Easter of a given year (defaults to current year)" ], "easter_days": [ "int easter_days([int year, [int method]])", "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)" ], "echo": [ "void echo(string arg1 [, string ...])", "Output one or more strings" ], "empty": [ "bool empty( mixed var )", "Determine whether a variable is empty" ], "enchant_broker_describe": [ "array enchant_broker_describe(resource broker)", "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()" ], "enchant_broker_dict_exists": [ "bool enchant_broker_dict_exists(resource broker, string tag)", "Wether a dictionary exists or not. Using non-empty tag" ], "enchant_broker_free": [ "boolean enchant_broker_free(resource broker)", "Destroys the broker object and its dictionnaries" ], "enchant_broker_free_dict": [ "resource enchant_broker_free_dict(resource dict)", "Free the dictionary resource" ], "enchant_broker_get_dict_path": [ "string enchant_broker_get_dict_path(resource broker, int dict_type)", "Get the directory path for a given backend, works with ispell and myspell" ], "enchant_broker_get_error": [ "string enchant_broker_get_error(resource broker)", "Returns the last error of the broker" ], "enchant_broker_init": [ "resource enchant_broker_init()", "create a new broker object capable of requesting" ], "enchant_broker_list_dicts": [ "string enchant_broker_list_dicts(resource broker)", "Lists the dictionaries available for the given broker" ], "enchant_broker_request_dict": [ "resource enchant_broker_request_dict(resource broker, string tag)", "create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for (\"en_US\", \"de_DE\", ...)" ], "enchant_broker_request_pwl_dict": [ "resource enchant_broker_request_pwl_dict(resource broker, string filename)", "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call." ], "enchant_broker_set_dict_path": [ "bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", "Set the directory path for a given backend, works with ispell and myspell" ], "enchant_broker_set_ordering": [ "bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", "Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering." ], "enchant_dict_add_to_personal": [ "void enchant_dict_add_to_personal(resource dict, string word)", "add 'word' to personal word list" ], "enchant_dict_add_to_session": [ "void enchant_dict_add_to_session(resource dict, string word)", "add 'word' to this spell-checking session" ], "enchant_dict_check": [ "bool enchant_dict_check(resource dict, string word)", "If the word is correctly spelled return true, otherwise return false" ], "enchant_dict_describe": [ "array enchant_dict_describe(resource dict)", "Describes an individual dictionary 'dict'" ], "enchant_dict_get_error": [ "string enchant_dict_get_error(resource dict)", "Returns the last error of the current spelling-session" ], "enchant_dict_is_in_session": [ "bool enchant_dict_is_in_session(resource dict, string word)", "whether or not 'word' exists in this spelling-session" ], "enchant_dict_quick_check": [ "bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", "If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives." ], "enchant_dict_store_replacement": [ "void enchant_dict_store_replacement(resource dict, string mis, string cor)", "add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list." ], "enchant_dict_suggest": [ "array enchant_dict_suggest(resource dict, string word)", "Will return a list of values if any of those pre-conditions are not met." ], "end": [ "mixed end(array array_arg)", "Advances array argument's internal pointer to the last element and return it" ], "ereg": [ "int ereg(string pattern, string string [, array registers])", "Regular expression match" ], "ereg_replace": [ "string ereg_replace(string pattern, string replacement, string string)", "Replace regular expression" ], "eregi": [ "int eregi(string pattern, string string [, array registers])", "Case-insensitive regular expression match" ], "eregi_replace": [ "string eregi_replace(string pattern, string replacement, string string)", "Case insensitive replace regular expression" ], "error_get_last": [ "array error_get_last()", "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet." ], "error_log": [ "bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", "Send an error message somewhere" ], "error_reporting": [ "int error_reporting([int new_error_level])", "Return the current error_reporting level, and if an argument was passed - change to the new level" ], "escapeshellarg": [ "string escapeshellarg(string arg)", "Quote and escape an argument for use in a shell command" ], "escapeshellcmd": [ "string escapeshellcmd(string command)", "Escape shell metacharacters" ], "exec": [ "string exec(string command [, array &output [, int &return_value]])", "Execute an external program" ], "exif_imagetype": [ "int exif_imagetype(string imagefile)", "Get the type of an image" ], "exif_read_data": [ "array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails" ], "exif_tagname": [ "string exif_tagname(index)", "Get headername for index or false if not defined" ], "exif_thumbnail": [ "string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", "Reads the embedded thumbnail" ], "exit": [ "void exit([mixed status])", "Output a message and terminate the current script" ], "exp": [ "float exp(float number)", "Returns e raised to the power of the number" ], "explode": [ "array explode(string separator, string str [, int limit])", "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned." ], "expm1": [ "float expm1(float number)", "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero" ], "extension_loaded": [ "bool extension_loaded(string extension_name)", "Returns true if the named extension is loaded" ], "extract": [ "int extract(array var_array [, int extract_type [, string prefix]])", "Imports variables into symbol table from an array" ], "ezmlm_hash": [ "int ezmlm_hash(string addr)", "Calculate EZMLM list hash value." ], "fclose": [ "bool fclose(resource fp)", "Close an open file pointer" ], "feof": [ "bool feof(resource fp)", "Test for end-of-file on a file pointer" ], "fflush": [ "bool fflush(resource fp)", "Flushes output" ], "fgetc": [ "string fgetc(resource fp)", "Get a character from file pointer" ], "fgetcsv": [ "array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", "Get line from file pointer and parse for CSV fields" ], "fgets": [ "string fgets(resource fp[, int length])", "Get a line from file pointer" ], "fgetss": [ "string fgetss(resource fp [, int length [, string allowable_tags]])", "Get a line from file pointer and strip HTML tags" ], "file": [ "array file(string filename [, int flags[, resource context]])", "Read entire file into an array" ], "file_exists": [ "bool file_exists(string filename)", "Returns true if filename exists" ], "file_get_contents": [ "string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", "Read the entire file into a string" ], "file_put_contents": [ "int file_put_contents(string file, mixed data [, int flags [, resource context]])", "Write/Create a file with contents data and return the number of bytes written" ], "fileatime": [ "int fileatime(string filename)", "Get last access time of file" ], "filectime": [ "int filectime(string filename)", "Get inode modification time of file" ], "filegroup": [ "int filegroup(string filename)", "Get file group" ], "fileinode": [ "int fileinode(string filename)", "Get file inode" ], "filemtime": [ "int filemtime(string filename)", "Get last modification time of file" ], "fileowner": [ "int fileowner(string filename)", "Get file owner" ], "fileperms": [ "int fileperms(string filename)", "Get file permissions" ], "filesize": [ "int filesize(string filename)", "Get file size" ], "filetype": [ "string filetype(string filename)", "Get file type" ], "filter_has_var": [ "mixed filter_has_var(constant type, string variable_name)", "* Returns true if the variable with the name 'name' exists in source." ], "filter_input": [ "mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", "* Returns the filtered variable 'name'* from source `type`." ], "filter_input_array": [ "mixed filter_input_array(constant type, [, mixed options]])", "* Returns an array with all arguments defined in 'definition'." ], "filter_var": [ "mixed filter_var(mixed variable [, long filter [, mixed options]])", "* Returns the filtered version of the vriable." ], "filter_var_array": [ "mixed filter_var_array(array data, [, mixed options]])", "* Returns an array with all arguments defined in 'definition'." ], "finfo_buffer": [ "string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", "Return infromation about a string buffer." ], "finfo_close": [ "resource finfo_close(resource finfo)", "Close fileinfo resource." ], "finfo_file": [ "string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", "Return information about a file." ], "finfo_open": [ "resource finfo_open([int options [, string arg]])", "Create a new fileinfo resource." ], "finfo_set_flags": [ "bool finfo_set_flags(resource finfo, int options)", "Set libmagic configuration options." ], "floatval": [ "float floatval(mixed var)", "Get the float value of a variable" ], "flock": [ "bool flock(resource fp, int operation [, int &wouldblock])", "Portable file locking" ], "floor": [ "float floor(float number)", "Returns the next lowest integer value from the number" ], "flush": [ "void flush(void)", "Flush the output buffer" ], "fmod": [ "float fmod(float x, float y)", "Returns the remainder of dividing x by y as a float" ], "fnmatch": [ "bool fnmatch(string pattern, string filename [, int flags])", "Match filename against pattern" ], "fopen": [ "resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", "Open a file or a URL and return a file pointer" ], "forward_static_call": [ "mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", "Call a user function which is the first parameter" ], "fpassthru": [ "int fpassthru(resource fp)", "Output all remaining data from a file pointer" ], "fprintf": [ "int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", "Output a formatted string into a stream" ], "fputcsv": [ "int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", "Format line as CSV and write to file pointer" ], "fread": [ "string fread(resource fp, int length)", "Binary-safe file read" ], "frenchtojd": [ "int frenchtojd(int month, int day, int year)", "Converts a french republic calendar date to julian day count" ], "fscanf": [ "mixed fscanf(resource stream, string format [, string ...])", "Implements a mostly ANSI compatible fscanf()" ], "fseek": [ "int fseek(resource fp, int offset [, int whence])", "Seek on a file pointer" ], "fsockopen": [ "resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", "Open Internet or Unix domain socket connection" ], "fstat": [ "array fstat(resource fp)", "Stat() on a filehandle" ], "ftell": [ "int ftell(resource fp)", "Get file pointer's read/write position" ], "ftok": [ "int ftok(string pathname, string proj)", "Convert a pathname and a project identifier to a System V IPC key" ], "ftp_alloc": [ "bool ftp_alloc(resource stream, int size[, &response])", "Attempt to allocate space on the remote FTP server" ], "ftp_cdup": [ "bool ftp_cdup(resource stream)", "Changes to the parent directory" ], "ftp_chdir": [ "bool ftp_chdir(resource stream, string directory)", "Changes directories" ], "ftp_chmod": [ "int ftp_chmod(resource stream, int mode, string filename)", "Sets permissions on a file" ], "ftp_close": [ "bool ftp_close(resource stream)", "Closes the FTP stream" ], "ftp_connect": [ "resource ftp_connect(string host [, int port [, int timeout]])", "Opens a FTP stream" ], "ftp_delete": [ "bool ftp_delete(resource stream, string file)", "Deletes a file" ], "ftp_exec": [ "bool ftp_exec(resource stream, string command)", "Requests execution of a program on the FTP server" ], "ftp_fget": [ "bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", "Retrieves a file from the FTP server and writes it to an open file" ], "ftp_fput": [ "bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", "Stores a file from an open file to the FTP server" ], "ftp_get": [ "bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", "Retrieves a file from the FTP server and writes it to a local file" ], "ftp_get_option": [ "mixed ftp_get_option(resource stream, int option)", "Gets an FTP option" ], "ftp_login": [ "bool ftp_login(resource stream, string username, string password)", "Logs into the FTP server" ], "ftp_mdtm": [ "int ftp_mdtm(resource stream, string filename)", "Returns the last modification time of the file, or -1 on error" ], "ftp_mkdir": [ "string ftp_mkdir(resource stream, string directory)", "Creates a directory and returns the absolute path for the new directory or false on error" ], "ftp_nb_continue": [ "int ftp_nb_continue(resource stream)", "Continues retrieving/sending a file nbronously" ], "ftp_nb_fget": [ "int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", "Retrieves a file from the FTP server asynchronly and writes it to an open file" ], "ftp_nb_fput": [ "int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", "Stores a file from an open file to the FTP server nbronly" ], "ftp_nb_get": [ "int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", "Retrieves a file from the FTP server nbhronly and writes it to a local file" ], "ftp_nb_put": [ "int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", "Stores a file on the FTP server" ], "ftp_nlist": [ "array ftp_nlist(resource stream, string directory)", "Returns an array of filenames in the given directory" ], "ftp_pasv": [ "bool ftp_pasv(resource stream, bool pasv)", "Turns passive mode on or off" ], "ftp_put": [ "bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", "Stores a file on the FTP server" ], "ftp_pwd": [ "string ftp_pwd(resource stream)", "Returns the present working directory" ], "ftp_raw": [ "array ftp_raw(resource stream, string command)", "Sends a literal command to the FTP server" ], "ftp_rawlist": [ "array ftp_rawlist(resource stream, string directory [, bool recursive])", "Returns a detailed listing of a directory as an array of output lines" ], "ftp_rename": [ "bool ftp_rename(resource stream, string src, string dest)", "Renames the given file to a new path" ], "ftp_rmdir": [ "bool ftp_rmdir(resource stream, string directory)", "Removes a directory" ], "ftp_set_option": [ "bool ftp_set_option(resource stream, int option, mixed value)", "Sets an FTP option" ], "ftp_site": [ "bool ftp_site(resource stream, string cmd)", "Sends a SITE command to the server" ], "ftp_size": [ "int ftp_size(resource stream, string filename)", "Returns the size of the file, or -1 on error" ], "ftp_ssl_connect": [ "resource ftp_ssl_connect(string host [, int port [, int timeout]])", "Opens a FTP-SSL stream" ], "ftp_systype": [ "string ftp_systype(resource stream)", "Returns the system type identifier" ], "ftruncate": [ "bool ftruncate(resource fp, int size)", "Truncate file to 'size' length" ], "func_get_arg": [ "mixed func_get_arg(int arg_num)", "Get the $arg_num'th argument that was passed to the function" ], "func_get_args": [ "array func_get_args()", "Get an array of the arguments that were passed to the function" ], "func_num_args": [ "int func_num_args(void)", "Get the number of arguments that were passed to the function" ], "function_exists": [ "bool function_exists(string function_name)", "Checks if the function exists" ], "fwrite": [ "int fwrite(resource fp, string str [, int length])", "Binary-safe file write" ], "gc_collect_cycles": [ "int gc_collect_cycles(void)", "Forces collection of any existing garbage cycles. Returns number of freed zvals" ], "gc_disable": [ "void gc_disable(void)", "Deactivates the circular reference collector" ], "gc_enable": [ "void gc_enable(void)", "Activates the circular reference collector" ], "gc_enabled": [ "void gc_enabled(void)", "Returns status of the circular reference collector" ], "gd_info": [ "array gd_info()", "" ], "getKeywords": [ "static array getKeywords(string $locale) {", "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!) * }}}" ], "get_browser": [ "mixed get_browser([string browser_name [, bool return_array]])", "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array." ], "get_called_class": [ "string get_called_class()", "Retrieves the \"Late Static Binding\" class name" ], "get_cfg_var": [ "mixed get_cfg_var(string option_name)", "Get the value of a PHP configuration option" ], "get_class": [ "string get_class([object object])", "Retrieves the class name" ], "get_class_methods": [ "array get_class_methods(mixed class)", "Returns an array of method names for class or class instance." ], "get_class_vars": [ "array get_class_vars(string class_name)", "Returns an array of default properties of the class." ], "get_current_user": [ "string get_current_user(void)", "Get the name of the owner of the current PHP script" ], "get_declared_classes": [ "array get_declared_classes()", "Returns an array of all declared classes." ], "get_declared_interfaces": [ "array get_declared_interfaces()", "Returns an array of all declared interfaces." ], "get_defined_constants": [ "array get_defined_constants([bool categorize])", "Return an array containing the names and values of all defined constants" ], "get_defined_functions": [ "array get_defined_functions(void)", "Returns an array of all defined functions" ], "get_defined_vars": [ "array get_defined_vars(void)", "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)" ], "get_display_language": [ "static string get_display_language($locale[, $in_locale = null])", "* gets the language for the $locale in $in_locale or default_locale" ], "get_display_name": [ "static string get_display_name($locale[, $in_locale = null])", "* gets the name for the $locale in $in_locale or default_locale" ], "get_display_region": [ "static string get_display_region($locale, $in_locale = null)", "* gets the region for the $locale in $in_locale or default_locale" ], "get_display_script": [ "static string get_display_script($locale, $in_locale = null)", "* gets the script for the $locale in $in_locale or default_locale" ], "get_extension_funcs": [ "array get_extension_funcs(string extension_name)", "Returns an array with the names of functions belonging to the named extension" ], "get_headers": [ "array get_headers(string url[, int format])", "fetches all the headers sent by the server in response to a HTTP request" ], "get_html_translation_table": [ "array get_html_translation_table([int table [, int quote_style]])", "Returns the internal translation table used by htmlspecialchars and htmlentities" ], "get_include_path": [ "string get_include_path()", "Get the current include_path configuration option" ], "get_included_files": [ "array get_included_files(void)", "Returns an array with the file names that were include_once()'d" ], "get_loaded_extensions": [ "array get_loaded_extensions([bool zend_extensions])", "Return an array containing names of loaded extensions" ], "get_magic_quotes_gpc": [ "int get_magic_quotes_gpc(void)", "Get the current active configuration setting of magic_quotes_gpc" ], "get_magic_quotes_runtime": [ "int get_magic_quotes_runtime(void)", "Get the current active configuration setting of magic_quotes_runtime" ], "get_meta_tags": [ "array get_meta_tags(string filename [, bool use_include_path])", "Extracts all meta tag content attributes from a file and returns an array" ], "get_object_vars": [ "array get_object_vars(object obj)", "Returns an array of object properties" ], "get_parent_class": [ "string get_parent_class([mixed object])", "Retrieves the parent class name for object or class or current scope." ], "get_resource_type": [ "string get_resource_type(resource res)", "Get the resource type name for a given resource" ], "getallheaders": [ "array getallheaders(void)", "" ], "getcwd": [ "mixed getcwd(void)", "Gets the current directory" ], "getdate": [ "array getdate([int timestamp])", "Get date/time information" ], "getenv": [ "string getenv(string varname)", "Get the value of an environment variable" ], "gethostbyaddr": [ "string gethostbyaddr(string ip_address)", "Get the Internet host name corresponding to a given IP address" ], "gethostbyname": [ "string gethostbyname(string hostname)", "Get the IP address corresponding to a given Internet host name" ], "gethostbynamel": [ "array gethostbynamel(string hostname)", "Return a list of IP addresses that a given hostname resolves to." ], "gethostname": [ "string gethostname()", "Get the host name of the current machine" ], "getimagesize": [ "array getimagesize(string imagefile [, array info])", "Get the size of an image as 4-element array" ], "getlastmod": [ "int getlastmod(void)", "Get time of last page modification" ], "getmygid": [ "int getmygid(void)", "Get PHP script owner's GID" ], "getmyinode": [ "int getmyinode(void)", "Get the inode of the current script being parsed" ], "getmypid": [ "int getmypid(void)", "Get current process ID" ], "getmyuid": [ "int getmyuid(void)", "Get PHP script owner's UID" ], "getopt": [ "array getopt(string options [, array longopts])", "Get options from the command line argument list" ], "getprotobyname": [ "int getprotobyname(string name)", "Returns protocol number associated with name as per /etc/protocols" ], "getprotobynumber": [ "string getprotobynumber(int proto)", "Returns protocol name associated with protocol number proto" ], "getrandmax": [ "int getrandmax(void)", "Returns the maximum value a random number can have" ], "getrusage": [ "array getrusage([int who])", "Returns an array of usage statistics" ], "getservbyname": [ "int getservbyname(string service, string protocol)", "Returns port associated with service. Protocol must be \"tcp\" or \"udp\"" ], "getservbyport": [ "string getservbyport(int port, string protocol)", "Returns service name associated with port. Protocol must be \"tcp\" or \"udp\"" ], "gettext": [ "string gettext(string msgid)", "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist" ], "gettimeofday": [ "array gettimeofday([bool get_as_float])", "Returns the current time as array" ], "gettype": [ "string gettype(mixed var)", "Returns the type of the variable" ], "glob": [ "array glob(string pattern [, int flags])", "Find pathnames matching a pattern" ], "gmdate": [ "string gmdate(string format [, long timestamp])", "Format a GMT date/time" ], "gmmktime": [ "int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", "Get UNIX timestamp for a GMT date" ], "gmp_abs": [ "resource gmp_abs(resource a)", "Calculates absolute value" ], "gmp_add": [ "resource gmp_add(resource a, resource b)", "Add a and b" ], "gmp_and": [ "resource gmp_and(resource a, resource b)", "Calculates logical AND of a and b" ], "gmp_clrbit": [ "void gmp_clrbit(resource &a, int index)", "Clears bit in a" ], "gmp_cmp": [ "int gmp_cmp(resource a, resource b)", "Compares two numbers" ], "gmp_com": [ "resource gmp_com(resource a)", "Calculates one's complement of a" ], "gmp_div_q": [ "resource gmp_div_q(resource a, resource b [, int round])", "Divide a by b, returns quotient only" ], "gmp_div_qr": [ "array gmp_div_qr(resource a, resource b [, int round])", "Divide a by b, returns quotient and reminder" ], "gmp_div_r": [ "resource gmp_div_r(resource a, resource b [, int round])", "Divide a by b, returns reminder only" ], "gmp_divexact": [ "resource gmp_divexact(resource a, resource b)", "Divide a by b using exact division algorithm" ], "gmp_fact": [ "resource gmp_fact(int a)", "Calculates factorial function" ], "gmp_gcd": [ "resource gmp_gcd(resource a, resource b)", "Computes greatest common denominator (gcd) of a and b" ], "gmp_gcdext": [ "array gmp_gcdext(resource a, resource b)", "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)" ], "gmp_hamdist": [ "int gmp_hamdist(resource a, resource b)", "Calculates hamming distance between a and b" ], "gmp_init": [ "resource gmp_init(mixed number [, int base])", "Initializes GMP number" ], "gmp_intval": [ "int gmp_intval(resource gmpnumber)", "Gets signed long value of GMP number" ], "gmp_invert": [ "resource gmp_invert(resource a, resource b)", "Computes the inverse of a modulo b" ], "gmp_jacobi": [ "int gmp_jacobi(resource a, resource b)", "Computes Jacobi symbol" ], "gmp_legendre": [ "int gmp_legendre(resource a, resource b)", "Computes Legendre symbol" ], "gmp_mod": [ "resource gmp_mod(resource a, resource b)", "Computes a modulo b" ], "gmp_mul": [ "resource gmp_mul(resource a, resource b)", "Multiply a and b" ], "gmp_neg": [ "resource gmp_neg(resource a)", "Negates a number" ], "gmp_nextprime": [ "resource gmp_nextprime(resource a)", "Finds next prime of a" ], "gmp_or": [ "resource gmp_or(resource a, resource b)", "Calculates logical OR of a and b" ], "gmp_perfect_square": [ "bool gmp_perfect_square(resource a)", "Checks if a is an exact square" ], "gmp_popcount": [ "int gmp_popcount(resource a)", "Calculates the population count of a" ], "gmp_pow": [ "resource gmp_pow(resource base, int exp)", "Raise base to power exp" ], "gmp_powm": [ "resource gmp_powm(resource base, resource exp, resource mod)", "Raise base to power exp and take result modulo mod" ], "gmp_prob_prime": [ "int gmp_prob_prime(resource a[, int reps])", "Checks if a is \"probably prime\"" ], "gmp_random": [ "resource gmp_random([int limiter])", "Gets random number" ], "gmp_scan0": [ "int gmp_scan0(resource a, int start)", "Finds first zero bit" ], "gmp_scan1": [ "int gmp_scan1(resource a, int start)", "Finds first non-zero bit" ], "gmp_setbit": [ "void gmp_setbit(resource &a, int index[, bool set_clear])", "Sets or clear bit in a" ], "gmp_sign": [ "int gmp_sign(resource a)", "Gets the sign of the number" ], "gmp_sqrt": [ "resource gmp_sqrt(resource a)", "Takes integer part of square root of a" ], "gmp_sqrtrem": [ "array gmp_sqrtrem(resource a)", "Square root with remainder" ], "gmp_strval": [ "string gmp_strval(resource gmpnumber [, int base])", "Gets string representation of GMP number" ], "gmp_sub": [ "resource gmp_sub(resource a, resource b)", "Subtract b from a" ], "gmp_testbit": [ "bool gmp_testbit(resource a, int index)", "Tests if bit is set in a" ], "gmp_xor": [ "resource gmp_xor(resource a, resource b)", "Calculates logical exclusive OR of a and b" ], "gmstrftime": [ "string gmstrftime(string format [, int timestamp])", "Format a GMT/UCT time/date according to locale settings" ], "grapheme_extract": [ "string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", "Function to extract a sequence of default grapheme clusters" ], "grapheme_stripos": [ "int grapheme_stripos(string haystack, string needle [, int offset ])", "Find position of first occurrence of a string within another, ignoring case differences" ], "grapheme_stristr": [ "string grapheme_stristr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another" ], "grapheme_strlen": [ "int grapheme_strlen(string str)", "Get number of graphemes in a string" ], "grapheme_strpos": [ "int grapheme_strpos(string haystack, string needle [, int offset ])", "Find position of first occurrence of a string within another" ], "grapheme_strripos": [ "int grapheme_strripos(string haystack, string needle [, int offset])", "Find position of last occurrence of a string within another, ignoring case" ], "grapheme_strrpos": [ "int grapheme_strrpos(string haystack, string needle [, int offset])", "Find position of last occurrence of a string within another" ], "grapheme_strstr": [ "string grapheme_strstr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another" ], "grapheme_substr": [ "string grapheme_substr(string str, int start [, int length])", "Returns part of a string" ], "gregoriantojd": [ "int gregoriantojd(int month, int day, int year)", "Converts a gregorian calendar date to julian day count" ], "gzcompress": [ "string gzcompress(string data [, int level])", "Gzip-compress a string" ], "gzdeflate": [ "string gzdeflate(string data [, int level])", "Gzip-compress a string" ], "gzencode": [ "string gzencode(string data [, int level [, int encoding_mode]])", "GZ encode a string" ], "gzfile": [ "array gzfile(string filename [, int use_include_path])", "Read und uncompress entire .gz-file into an array" ], "gzinflate": [ "string gzinflate(string data [, int length])", "Unzip a gzip-compressed string" ], "gzopen": [ "resource gzopen(string filename, string mode [, int use_include_path])", "Open a .gz-file and return a .gz-file pointer" ], "gzuncompress": [ "string gzuncompress(string data [, int length])", "Unzip a gzip-compressed string" ], "hash": [ "string hash(string algo, string data[, bool raw_output = false])", "Generate a hash of a given input string Returns lowercase hexits by default" ], "hash_algos": [ "array hash_algos(void)", "Return a list of registered hashing algorithms" ], "hash_copy": [ "resource hash_copy(resource context)", "Copy hash resource" ], "hash_file": [ "string hash_file(string algo, string filename[, bool raw_output = false])", "Generate a hash of a given file Returns lowercase hexits by default" ], "hash_final": [ "string hash_final(resource context[, bool raw_output=false])", "Output resulting digest" ], "hash_hmac": [ "string hash_hmac(string algo, string data, string key[, bool raw_output = false])", "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default" ], "hash_hmac_file": [ "string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default" ], "hash_init": [ "resource hash_init(string algo[, int options, string key])", "Initialize a hashing context" ], "hash_update": [ "bool hash_update(resource context, string data)", "Pump data into the hashing algorithm" ], "hash_update_file": [ "bool hash_update_file(resource context, string filename[, resource context])", "Pump data into the hashing algorithm from a file" ], "hash_update_stream": [ "int hash_update_stream(resource context, resource handle[, integer length])", "Pump data into the hashing algorithm from an open stream" ], "header": [ "void header(string header [, bool replace, [int http_response_code]])", "Sends a raw HTTP header" ], "header_remove": [ "void header_remove([string name])", "Removes an HTTP header previously set using header()" ], "headers_list": [ "array headers_list(void)", "Return list of headers to be sent / already sent" ], "headers_sent": [ "bool headers_sent([string &$file [, int &$line]])", "Returns true if headers have already been sent, false otherwise" ], "hebrev": [ "string hebrev(string str [, int max_chars_per_line])", "Converts logical Hebrew text to visual text" ], "hebrevc": [ "string hebrevc(string str [, int max_chars_per_line])", "Converts logical Hebrew text to visual text with newline conversion" ], "hexdec": [ "int hexdec(string hexadecimal_number)", "Returns the decimal equivalent of the hexadecimal number" ], "highlight_file": [ "bool highlight_file(string file_name [, bool return] )", "Syntax highlight a source file" ], "highlight_string": [ "bool highlight_string(string string [, bool return] )", "Syntax highlight a string or optionally return it" ], "html_entity_decode": [ "string html_entity_decode(string string [, int quote_style][, string charset])", "Convert all HTML entities to their applicable characters" ], "htmlentities": [ "string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", "Convert all applicable characters to HTML entities" ], "htmlspecialchars": [ "string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", "Convert special characters to HTML entities" ], "htmlspecialchars_decode": [ "string htmlspecialchars_decode(string string [, int quote_style])", "Convert special HTML entities back to characters" ], "http_build_query": [ "string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", "Generates a form-encoded query string from an associative array or object." ], "hypot": [ "float hypot(float num1, float num2)", "Returns sqrt(num1*num1 + num2*num2)" ], "ibase_add_user": [ "bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Add a user to security database" ], "ibase_affected_rows": [ "int ibase_affected_rows( [ resource link_identifier ] )", "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement" ], "ibase_backup": [ "mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", "Initiates a backup task in the service manager and returns immediately" ], "ibase_blob_add": [ "bool ibase_blob_add(resource blob_handle, string data)", "Add data into created blob" ], "ibase_blob_cancel": [ "bool ibase_blob_cancel(resource blob_handle)", "Cancel creating blob" ], "ibase_blob_close": [ "string ibase_blob_close(resource blob_handle)", "Close blob" ], "ibase_blob_create": [ "resource ibase_blob_create([resource link_identifier])", "Create blob for adding data" ], "ibase_blob_echo": [ "bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", "Output blob contents to browser" ], "ibase_blob_get": [ "string ibase_blob_get(resource blob_handle, int len)", "Get len bytes data from open blob" ], "ibase_blob_import": [ "string ibase_blob_import([ resource link_identifier, ] resource file)", "Create blob, copy file in it, and close it" ], "ibase_blob_info": [ "array ibase_blob_info([ resource link_identifier, ] string blob_id)", "Return blob length and other useful info" ], "ibase_blob_open": [ "resource ibase_blob_open([ resource link_identifier, ] string blob_id)", "Open blob for retrieving data parts" ], "ibase_close": [ "bool ibase_close([resource link_identifier])", "Close an InterBase connection" ], "ibase_commit": [ "bool ibase_commit( resource link_identifier )", "Commit transaction" ], "ibase_commit_ret": [ "bool ibase_commit_ret( resource link_identifier )", "Commit transaction and retain the transaction context" ], "ibase_connect": [ "resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", "Open a connection to an InterBase database" ], "ibase_db_info": [ "string ibase_db_info(resource service_handle, string db, int action [, int argument])", "Request statistics about a database" ], "ibase_delete_user": [ "bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Delete a user from security database" ], "ibase_drop_db": [ "bool ibase_drop_db([resource link_identifier])", "Drop an InterBase database" ], "ibase_errcode": [ "int ibase_errcode(void)", "Return error code" ], "ibase_errmsg": [ "string ibase_errmsg(void)", "Return error message" ], "ibase_execute": [ "mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", "Execute a previously prepared query" ], "ibase_fetch_assoc": [ "array ibase_fetch_assoc(resource result [, int fetch_flags])", "Fetch a row from the results of a query" ], "ibase_fetch_object": [ "object ibase_fetch_object(resource result [, int fetch_flags])", "Fetch a object from the results of a query" ], "ibase_fetch_row": [ "array ibase_fetch_row(resource result [, int fetch_flags])", "Fetch a row from the results of a query" ], "ibase_field_info": [ "array ibase_field_info(resource query_result, int field_number)", "Get information about a field" ], "ibase_free_event_handler": [ "bool ibase_free_event_handler(resource event)", "Frees the event handler set by ibase_set_event_handler()" ], "ibase_free_query": [ "bool ibase_free_query(resource query)", "Free memory used by a query" ], "ibase_free_result": [ "bool ibase_free_result(resource result)", "Free the memory used by a result" ], "ibase_gen_id": [ "int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", "Increments the named generator and returns its new value" ], "ibase_maintain_db": [ "bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", "Execute a maintenance command on the database server" ], "ibase_modify_user": [ "bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Modify a user in security database" ], "ibase_name_result": [ "bool ibase_name_result(resource result, string name)", "Assign a name to a result for use with ... WHERE CURRENT OF <name> statements" ], "ibase_num_fields": [ "int ibase_num_fields(resource query_result)", "Get the number of fields in result" ], "ibase_num_params": [ "int ibase_num_params(resource query)", "Get the number of params in a prepared query" ], "ibase_num_rows": [ "int ibase_num_rows( resource result_identifier )", "Return the number of rows that are available in a result" ], "ibase_param_info": [ "array ibase_param_info(resource query, int field_number)", "Get information about a parameter" ], "ibase_pconnect": [ "resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", "Open a persistent connection to an InterBase database" ], "ibase_prepare": [ "resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", "Prepare a query for later execution" ], "ibase_query": [ "mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", "Execute a query" ], "ibase_restore": [ "mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", "Initiates a restore task in the service manager and returns immediately" ], "ibase_rollback": [ "bool ibase_rollback( resource link_identifier )", "Rollback transaction" ], "ibase_rollback_ret": [ "bool ibase_rollback_ret( resource link_identifier )", "Rollback transaction and retain the transaction context" ], "ibase_server_info": [ "string ibase_server_info(resource service_handle, int action)", "Request information about a database server" ], "ibase_service_attach": [ "resource ibase_service_attach(string host, string dba_username, string dba_password)", "Connect to the service manager" ], "ibase_service_detach": [ "bool ibase_service_detach(resource service_handle)", "Disconnect from the service manager" ], "ibase_set_event_handler": [ "resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", "Register the callback for handling each of the named events" ], "ibase_trans": [ "resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", "Start a transaction over one or several databases" ], "ibase_wait_event": [ "string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", "Waits for any one of the passed Interbase events to be posted by the database, and returns its name" ], "iconv": [ "string iconv(string in_charset, string out_charset, string str)", "Returns str converted to the out_charset character set" ], "iconv_get_encoding": [ "mixed iconv_get_encoding([string type])", "Get internal encoding and output encoding for ob_iconv_handler()" ], "iconv_mime_decode": [ "string iconv_mime_decode(string encoded_string [, int mode, string charset])", "Decodes a mime header field" ], "iconv_mime_decode_headers": [ "array iconv_mime_decode_headers(string headers [, int mode, string charset])", "Decodes multiple mime header fields" ], "iconv_mime_encode": [ "string iconv_mime_encode(string field_name, string field_value [, array preference])", "Composes a mime header field with field_name and field_value in a specified scheme" ], "iconv_set_encoding": [ "bool iconv_set_encoding(string type, string charset)", "Sets internal encoding and output encoding for ob_iconv_handler()" ], "iconv_strlen": [ "int iconv_strlen(string str [, string charset])", "Returns the character count of str" ], "iconv_strpos": [ "int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", "Finds position of first occurrence of needle within part of haystack beginning with offset" ], "iconv_strrpos": [ "int iconv_strrpos(string haystack, string needle [, string charset])", "Finds position of last occurrence of needle within part of haystack beginning with offset" ], "iconv_substr": [ "string iconv_substr(string str, int offset, [int length, string charset])", "Returns specified part of a string" ], "idate": [ "int idate(string format [, int timestamp])", "Format a local time/date as integer" ], "idn_to_ascii": [ "int idn_to_ascii(string domain[, int options])", "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC" ], "idn_to_utf8": [ "int idn_to_utf8(string domain[, int options])", "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC" ], "ignore_user_abort": [ "int ignore_user_abort([string value])", "Set whether we want to ignore a user abort event or not" ], "image2wbmp": [ "bool image2wbmp(resource im [, string filename [, int threshold]])", "Output WBMP image to browser or file" ], "image_type_to_extension": [ "string image_type_to_extension(int imagetype [, bool include_dot])", "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" ], "image_type_to_mime_type": [ "string image_type_to_mime_type(int imagetype)", "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" ], "imagealphablending": [ "bool imagealphablending(resource im, bool on)", "Turn alpha blending mode on or off for the given image" ], "imageantialias": [ "bool imageantialias(resource im, bool on)", "Should antialiased functions used or not" ], "imagearc": [ "bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", "Draw a partial ellipse" ], "imagechar": [ "bool imagechar(resource im, int font, int x, int y, string c, int col)", "Draw a character" ], "imagecharup": [ "bool imagecharup(resource im, int font, int x, int y, string c, int col)", "Draw a character rotated 90 degrees counter-clockwise" ], "imagecolorallocate": [ "int imagecolorallocate(resource im, int red, int green, int blue)", "Allocate a color for an image" ], "imagecolorallocatealpha": [ "int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", "Allocate a color with an alpha level. Works for true color and palette based images" ], "imagecolorat": [ "int imagecolorat(resource im, int x, int y)", "Get the index of the color of a pixel" ], "imagecolorclosest": [ "int imagecolorclosest(resource im, int red, int green, int blue)", "Get the index of the closest color to the specified color" ], "imagecolorclosestalpha": [ "int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", "Find the closest matching colour with alpha transparency" ], "imagecolorclosesthwb": [ "int imagecolorclosesthwb(resource im, int red, int green, int blue)", "Get the index of the color which has the hue, white and blackness nearest to the given color" ], "imagecolordeallocate": [ "bool imagecolordeallocate(resource im, int index)", "De-allocate a color for an image" ], "imagecolorexact": [ "int imagecolorexact(resource im, int red, int green, int blue)", "Get the index of the specified color" ], "imagecolorexactalpha": [ "int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", "Find exact match for colour with transparency" ], "imagecolormatch": [ "bool imagecolormatch(resource im1, resource im2)", "Makes the colors of the palette version of an image more closely match the true color version" ], "imagecolorresolve": [ "int imagecolorresolve(resource im, int red, int green, int blue)", "Get the index of the specified color or its closest possible alternative" ], "imagecolorresolvealpha": [ "int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", "Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images" ], "imagecolorset": [ "void imagecolorset(resource im, int col, int red, int green, int blue)", "Set the color for the specified palette index" ], "imagecolorsforindex": [ "array imagecolorsforindex(resource im, int col)", "Get the colors for an index" ], "imagecolorstotal": [ "int imagecolorstotal(resource im)", "Find out the number of colors in an image's palette" ], "imagecolortransparent": [ "int imagecolortransparent(resource im [, int col])", "Define a color as transparent" ], "imageconvolution": [ "resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", "Apply a 3x3 convolution matrix, using coefficient div and offset" ], "imagecopy": [ "bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", "Copy part of an image" ], "imagecopymerge": [ "bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", "Merge one part of an image with another" ], "imagecopymergegray": [ "bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", "Merge one part of an image with another" ], "imagecopyresampled": [ "bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", "Copy and resize part of an image using resampling to help ensure clarity" ], "imagecopyresized": [ "bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", "Copy and resize part of an image" ], "imagecreate": [ "resource imagecreate(int x_size, int y_size)", "Create a new image" ], "imagecreatefromgd": [ "resource imagecreatefromgd(string filename)", "Create a new image from GD file or URL" ], "imagecreatefromgd2": [ "resource imagecreatefromgd2(string filename)", "Create a new image from GD2 file or URL" ], "imagecreatefromgd2part": [ "resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", "Create a new image from a given part of GD2 file or URL" ], "imagecreatefromgif": [ "resource imagecreatefromgif(string filename)", "Create a new image from GIF file or URL" ], "imagecreatefromjpeg": [ "resource imagecreatefromjpeg(string filename)", "Create a new image from JPEG file or URL" ], "imagecreatefrompng": [ "resource imagecreatefrompng(string filename)", "Create a new image from PNG file or URL" ], "imagecreatefromstring": [ "resource imagecreatefromstring(string image)", "Create a new image from the image stream in the string" ], "imagecreatefromwbmp": [ "resource imagecreatefromwbmp(string filename)", "Create a new image from WBMP file or URL" ], "imagecreatefromxbm": [ "resource imagecreatefromxbm(string filename)", "Create a new image from XBM file or URL" ], "imagecreatefromxpm": [ "resource imagecreatefromxpm(string filename)", "Create a new image from XPM file or URL" ], "imagecreatetruecolor": [ "resource imagecreatetruecolor(int x_size, int y_size)", "Create a new true color image" ], "imagedashedline": [ "bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a dashed line" ], "imagedestroy": [ "bool imagedestroy(resource im)", "Destroy an image" ], "imageellipse": [ "bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", "Draw an ellipse" ], "imagefill": [ "bool imagefill(resource im, int x, int y, int col)", "Flood fill" ], "imagefilledarc": [ "bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", "Draw a filled partial ellipse" ], "imagefilledellipse": [ "bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", "Draw an ellipse" ], "imagefilledpolygon": [ "bool imagefilledpolygon(resource im, array point, int num_points, int col)", "Draw a filled polygon" ], "imagefilledrectangle": [ "bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a filled rectangle" ], "imagefilltoborder": [ "bool imagefilltoborder(resource im, int x, int y, int border, int col)", "Flood fill to specific color" ], "imagefilter": [ "bool imagefilter(resource src_im, int filtertype, [args] )", "Applies Filter an image using a custom angle" ], "imagefontheight": [ "int imagefontheight(int font)", "Get font height" ], "imagefontwidth": [ "int imagefontwidth(int font)", "Get font width" ], "imageftbbox": [ "array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", "Give the bounding box of a text using fonts via freetype2" ], "imagefttext": [ "array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", "Write text to the image using fonts via freetype2" ], "imagegammacorrect": [ "bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", "Apply a gamma correction to a GD image" ], "imagegd": [ "bool imagegd(resource im [, string filename])", "Output GD image to browser or file" ], "imagegd2": [ "bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", "Output GD2 image to browser or file" ], "imagegif": [ "bool imagegif(resource im [, string filename])", "Output GIF image to browser or file" ], "imagegrabscreen": [ "resource imagegrabscreen()", "Grab a screenshot" ], "imagegrabwindow": [ "resource imagegrabwindow(int window_handle [, int client_area])", "Grab a window or its client area using a windows handle (HWND property in COM instance)" ], "imageinterlace": [ "int imageinterlace(resource im [, int interlace])", "Enable or disable interlace" ], "imageistruecolor": [ "bool imageistruecolor(resource im)", "return true if the image uses truecolor" ], "imagejpeg": [ "bool imagejpeg(resource im [, string filename [, int quality]])", "Output JPEG image to browser or file" ], "imagelayereffect": [ "bool imagelayereffect(resource im, int effect)", "Set the alpha blending flag to use the bundled libgd layering effects" ], "imageline": [ "bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a line" ], "imageloadfont": [ "int imageloadfont(string filename)", "Load a new font" ], "imagepalettecopy": [ "void imagepalettecopy(resource dst, resource src)", "Copy the palette from the src image onto the dst image" ], "imagepng": [ "bool imagepng(resource im [, string filename])", "Output PNG image to browser or file" ], "imagepolygon": [ "bool imagepolygon(resource im, array point, int num_points, int col)", "Draw a polygon" ], "imagepsbbox": [ "array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", "Return the bounding box needed by a string if rasterized" ], "imagepscopyfont": [ "int imagepscopyfont(int font_index)", "Make a copy of a font for purposes like extending or reenconding" ], "imagepsencodefont": [ "bool imagepsencodefont(resource font_index, string filename)", "To change a fonts character encoding vector" ], "imagepsextendfont": [ "bool imagepsextendfont(resource font_index, float extend)", "Extend or or condense (if extend < 1) a font" ], "imagepsfreefont": [ "bool imagepsfreefont(resource font_index)", "Free memory used by a font" ], "imagepsloadfont": [ "resource imagepsloadfont(string pathname)", "Load a new font from specified file" ], "imagepsslantfont": [ "bool imagepsslantfont(resource font_index, float slant)", "Slant a font" ], "imagepstext": [ "array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", "Rasterize a string over an image" ], "imagerectangle": [ "bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a rectangle" ], "imagerotate": [ "resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", "Rotate an image using a custom angle" ], "imagesavealpha": [ "bool imagesavealpha(resource im, bool on)", "Include alpha channel to a saved image" ], "imagesetbrush": [ "bool imagesetbrush(resource image, resource brush)", "Set the brush image to $brush when filling $image with the \"IMG_COLOR_BRUSHED\" color" ], "imagesetpixel": [ "bool imagesetpixel(resource im, int x, int y, int col)", "Set a single pixel" ], "imagesetstyle": [ "bool imagesetstyle(resource im, array styles)", "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED." ], "imagesetthickness": [ "bool imagesetthickness(resource im, int thickness)", "Set line thickness for drawing lines, ellipses, rectangles, polygons etc." ], "imagesettile": [ "bool imagesettile(resource image, resource tile)", "Set the tile image to $tile when filling $image with the \"IMG_COLOR_TILED\" color" ], "imagestring": [ "bool imagestring(resource im, int font, int x, int y, string str, int col)", "Draw a string horizontally" ], "imagestringup": [ "bool imagestringup(resource im, int font, int x, int y, string str, int col)", "Draw a string vertically - rotated 90 degrees counter-clockwise" ], "imagesx": [ "int imagesx(resource im)", "Get image width" ], "imagesy": [ "int imagesy(resource im)", "Get image height" ], "imagetruecolortopalette": [ "void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", "Convert a true colour image to a palette based image with a number of colours, optionally using dithering." ], "imagettfbbox": [ "array imagettfbbox(float size, float angle, string font_file, string text)", "Give the bounding box of a text using TrueType fonts" ], "imagettftext": [ "array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", "Write text to the image using a TrueType font" ], "imagetypes": [ "int imagetypes(void)", "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM" ], "imagewbmp": [ "bool imagewbmp(resource im [, string filename, [, int foreground]])", "Output WBMP image to browser or file" ], "imagexbm": [ "int imagexbm(int im, string filename [, int foreground])", "Output XBM image to browser or file" ], "imap_8bit": [ "string imap_8bit(string text)", "Convert an 8-bit string to a quoted-printable string" ], "imap_alerts": [ "array imap_alerts(void)", "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called." ], "imap_append": [ "bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", "Append a new message to a specified mailbox" ], "imap_base64": [ "string imap_base64(string text)", "Decode BASE64 encoded text" ], "imap_binary": [ "string imap_binary(string text)", "Convert an 8bit string to a base64 string" ], "imap_body": [ "string imap_body(resource stream_id, int msg_no [, int options])", "Read the message body" ], "imap_bodystruct": [ "object imap_bodystruct(resource stream_id, int msg_no, string section)", "Read the structure of a specified body section of a specific message" ], "imap_check": [ "object imap_check(resource stream_id)", "Get mailbox properties" ], "imap_clearflag_full": [ "bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", "Clears flags on messages" ], "imap_close": [ "bool imap_close(resource stream_id [, int options])", "Close an IMAP stream" ], "imap_createmailbox": [ "bool imap_createmailbox(resource stream_id, string mailbox)", "Create a new mailbox" ], "imap_delete": [ "bool imap_delete(resource stream_id, int msg_no [, int options])", "Mark a message for deletion" ], "imap_deletemailbox": [ "bool imap_deletemailbox(resource stream_id, string mailbox)", "Delete a mailbox" ], "imap_errors": [ "array imap_errors(void)", "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called." ], "imap_expunge": [ "bool imap_expunge(resource stream_id)", "Permanently delete all messages marked for deletion" ], "imap_fetch_overview": [ "array imap_fetch_overview(resource stream_id, string sequence [, int options])", "Read an overview of the information in the headers of the given message sequence" ], "imap_fetchbody": [ "string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", "Get a specific body section" ], "imap_fetchheader": [ "string imap_fetchheader(resource stream_id, int msg_no [, int options])", "Get the full unfiltered header for a message" ], "imap_fetchstructure": [ "object imap_fetchstructure(resource stream_id, int msg_no [, int options])", "Read the full structure of a message" ], "imap_gc": [ "bool imap_gc(resource stream_id, int flags)", "This function garbage collects (purges) the cache of entries of a specific type." ], "imap_get_quota": [ "array imap_get_quota(resource stream_id, string qroot)", "Returns the quota set to the mailbox account qroot" ], "imap_get_quotaroot": [ "array imap_get_quotaroot(resource stream_id, string mbox)", "Returns the quota set to the mailbox account mbox" ], "imap_getacl": [ "array imap_getacl(resource stream_id, string mailbox)", "Gets the ACL for a given mailbox" ], "imap_getmailboxes": [ "array imap_getmailboxes(resource stream_id, string ref, string pattern)", "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter" ], "imap_getsubscribed": [ "array imap_getsubscribed(resource stream_id, string ref, string pattern)", "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()" ], "imap_headerinfo": [ "object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", "Read the headers of the message" ], "imap_headers": [ "array imap_headers(resource stream_id)", "Returns headers for all messages in a mailbox" ], "imap_last_error": [ "string imap_last_error(void)", "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call." ], "imap_list": [ "array imap_list(resource stream_id, string ref, string pattern)", "Read the list of mailboxes" ], "imap_listscan": [ "array imap_listscan(resource stream_id, string ref, string pattern, string content)", "Read list of mailboxes containing a certain string" ], "imap_lsub": [ "array imap_lsub(resource stream_id, string ref, string pattern)", "Return a list of subscribed mailboxes" ], "imap_mail": [ "bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", "Send an email message" ], "imap_mail_compose": [ "string imap_mail_compose(array envelope, array body)", "Create a MIME message based on given envelope and body sections" ], "imap_mail_copy": [ "bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", "Copy specified message to a mailbox" ], "imap_mail_move": [ "bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", "Move specified message to a mailbox" ], "imap_mailboxmsginfo": [ "object imap_mailboxmsginfo(resource stream_id)", "Returns info about the current mailbox" ], "imap_mime_header_decode": [ "array imap_mime_header_decode(string str)", "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'" ], "imap_msgno": [ "int imap_msgno(resource stream_id, int unique_msg_id)", "Get the sequence number associated with a UID" ], "imap_mutf7_to_utf8": [ "string imap_mutf7_to_utf8(string in)", "Decode a modified UTF-7 string to UTF-8" ], "imap_num_msg": [ "int imap_num_msg(resource stream_id)", "Gives the number of messages in the current mailbox" ], "imap_num_recent": [ "int imap_num_recent(resource stream_id)", "Gives the number of recent messages in current mailbox" ], "imap_open": [ "resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", "Open an IMAP stream to a mailbox" ], "imap_ping": [ "bool imap_ping(resource stream_id)", "Check if the IMAP stream is still active" ], "imap_qprint": [ "string imap_qprint(string text)", "Convert a quoted-printable string to an 8-bit string" ], "imap_renamemailbox": [ "bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", "Rename a mailbox" ], "imap_reopen": [ "bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", "Reopen an IMAP stream to a new mailbox" ], "imap_rfc822_parse_adrlist": [ "array imap_rfc822_parse_adrlist(string address_string, string default_host)", "Parses an address string" ], "imap_rfc822_parse_headers": [ "object imap_rfc822_parse_headers(string headers [, string default_host])", "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()" ], "imap_rfc822_write_address": [ "string imap_rfc822_write_address(string mailbox, string host, string personal)", "Returns a properly formatted email address given the mailbox, host, and personal info" ], "imap_savebody": [ "bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = \"\"[, int options = 0]])", "Save a specific body section to a file" ], "imap_search": [ "array imap_search(resource stream_id, string criteria [, int options [, string charset]])", "Return a list of messages matching the given criteria" ], "imap_set_quota": [ "bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", "Will set the quota for qroot mailbox" ], "imap_setacl": [ "bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", "Sets the ACL for a given mailbox" ], "imap_setflag_full": [ "bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", "Sets flags on messages" ], "imap_sort": [ "array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", "Sort an array of message headers, optionally including only messages that meet specified criteria." ], "imap_status": [ "object imap_status(resource stream_id, string mailbox, int options)", "Get status info from a mailbox" ], "imap_subscribe": [ "bool imap_subscribe(resource stream_id, string mailbox)", "Subscribe to a mailbox" ], "imap_thread": [ "array imap_thread(resource stream_id [, int options])", "Return threaded by REFERENCES tree" ], "imap_timeout": [ "mixed imap_timeout(int timeout_type [, int timeout])", "Set or fetch imap timeout" ], "imap_uid": [ "int imap_uid(resource stream_id, int msg_no)", "Get the unique message id associated with a standard sequential message number" ], "imap_undelete": [ "bool imap_undelete(resource stream_id, int msg_no [, int flags])", "Remove the delete flag from a message" ], "imap_unsubscribe": [ "bool imap_unsubscribe(resource stream_id, string mailbox)", "Unsubscribe from a mailbox" ], "imap_utf7_decode": [ "string imap_utf7_decode(string buf)", "Decode a modified UTF-7 string" ], "imap_utf7_encode": [ "string imap_utf7_encode(string buf)", "Encode a string in modified UTF-7" ], "imap_utf8": [ "string imap_utf8(string mime_encoded_text)", "Convert a mime-encoded text to UTF-8" ], "imap_utf8_to_mutf7": [ "string imap_utf8_to_mutf7(string in)", "Encode a UTF-8 string to modified UTF-7" ], "implode": [ "string implode([string glue,] array pieces)", "Joins array elements placing glue string between items and return one string" ], "import_request_variables": [ "bool import_request_variables(string types [, string prefix])", "Import GET/POST/Cookie variables into the global scope" ], "in_array": [ "bool in_array(mixed needle, array haystack [, bool strict])", "Checks if the given value exists in the array" ], "include": [ "bool include(string path)", "Includes and evaluates the specified file" ], "include_once": [ "bool include_once(string path)", "Includes and evaluates the specified file" ], "inet_ntop": [ "string inet_ntop(string in_addr)", "Converts a packed inet address to a human readable IP address string" ], "inet_pton": [ "string inet_pton(string ip_address)", "Converts a human readable IP address to a packed binary string" ], "ini_get": [ "string ini_get(string varname)", "Get a configuration option" ], "ini_get_all": [ "array ini_get_all([string extension[, bool details = true]])", "Get all configuration options" ], "ini_restore": [ "void ini_restore(string varname)", "Restore the value of a configuration option specified by varname" ], "ini_set": [ "string ini_set(string varname, string newvalue)", "Set a configuration option, returns false on error and the old value of the configuration option on success" ], "interface_exists": [ "bool interface_exists(string classname [, bool autoload])", "Checks if the class exists" ], "intl_error_name": [ "string intl_error_name()", "* Return a string for a given error code. * The string will be the same as the name of the error code constant." ], "intl_get_error_code": [ "int intl_get_error_code()", "* Get code of the last occured error." ], "intl_get_error_message": [ "string intl_get_error_message()", "* Get text description of the last occured error." ], "intl_is_failure": [ "bool intl_is_failure()", "* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning." ], "intval": [ "int intval(mixed var [, int base])", "Get the integer value of a variable using the optional base for the conversion" ], "ip2long": [ "int ip2long(string ip_address)", "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address" ], "iptcembed": [ "array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", "Embed binary IPTC data into a JPEG image." ], "iptcparse": [ "array iptcparse(string iptcdata)", "Parse binary IPTC-data into associative array" ], "is_a": [ "bool is_a(object object, string class_name)", "Returns true if the object is of this class or has this class as one of its parents" ], "is_array": [ "bool is_array(mixed var)", "Returns true if variable is an array" ], "is_bool": [ "bool is_bool(mixed var)", "Returns true if variable is a boolean" ], "is_callable": [ "bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", "Returns true if var is callable." ], "is_dir": [ "bool is_dir(string filename)", "Returns true if file is directory" ], "is_executable": [ "bool is_executable(string filename)", "Returns true if file is executable" ], "is_file": [ "bool is_file(string filename)", "Returns true if file is a regular file" ], "is_finite": [ "bool is_finite(float val)", "Returns whether argument is finite" ], "is_float": [ "bool is_float(mixed var)", "Returns true if variable is float point" ], "is_infinite": [ "bool is_infinite(float val)", "Returns whether argument is infinite" ], "is_link": [ "bool is_link(string filename)", "Returns true if file is symbolic link" ], "is_long": [ "bool is_long(mixed var)", "Returns true if variable is a long (integer)" ], "is_nan": [ "bool is_nan(float val)", "Returns whether argument is not a number" ], "is_null": [ "bool is_null(mixed var)", "Returns true if variable is null" ], "is_numeric": [ "bool is_numeric(mixed value)", "Returns true if value is a number or a numeric string" ], "is_object": [ "bool is_object(mixed var)", "Returns true if variable is an object" ], "is_readable": [ "bool is_readable(string filename)", "Returns true if file can be read" ], "is_resource": [ "bool is_resource(mixed var)", "Returns true if variable is a resource" ], "is_scalar": [ "bool is_scalar(mixed value)", "Returns true if value is a scalar" ], "is_string": [ "bool is_string(mixed var)", "Returns true if variable is a string" ], "is_subclass_of": [ "bool is_subclass_of(object object, string class_name)", "Returns true if the object has this class as one of its parents" ], "is_uploaded_file": [ "bool is_uploaded_file(string path)", "Check if file was created by rfc1867 upload" ], "is_writable": [ "bool is_writable(string filename)", "Returns true if file can be written" ], "isset": [ "bool isset(mixed var [, mixed var])", "Determine whether a variable is set" ], "iterator_apply": [ "int iterator_apply(Traversable it, mixed function [, mixed params])", "Calls a function for every element in an iterator" ], "iterator_count": [ "int iterator_count(Traversable it)", "Count the elements in an iterator" ], "iterator_to_array": [ "array iterator_to_array(Traversable it [, bool use_keys = true])", "Copy the iterator into an array" ], "jddayofweek": [ "mixed jddayofweek(int juliandaycount [, int mode])", "Returns name or number of day of week from julian day count" ], "jdmonthname": [ "string jdmonthname(int juliandaycount, int mode)", "Returns name of month for julian day count" ], "jdtofrench": [ "string jdtofrench(int juliandaycount)", "Converts a julian day count to a french republic calendar date" ], "jdtogregorian": [ "string jdtogregorian(int juliandaycount)", "Converts a julian day count to a gregorian calendar date" ], "jdtojewish": [ "string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", "Converts a julian day count to a jewish calendar date" ], "jdtojulian": [ "string jdtojulian(int juliandaycount)", "Convert a julian day count to a julian calendar date" ], "jdtounix": [ "int jdtounix(int jday)", "Convert Julian Day to UNIX timestamp" ], "jewishtojd": [ "int jewishtojd(int month, int day, int year)", "Converts a jewish calendar date to a julian day count" ], "join": [ "string join(array src, string glue)", "An alias for implode" ], "jpeg2wbmp": [ "bool jpeg2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert JPEG image to WBMP image" ], "json_decode": [ "mixed json_decode(string json [, bool assoc [, long depth]])", "Decodes the JSON representation into a PHP value" ], "json_encode": [ "string json_encode(mixed data [, int options])", "Returns the JSON representation of a value" ], "json_last_error": [ "int json_last_error()", "Returns the error code of the last json_decode()." ], "juliantojd": [ "int juliantojd(int month, int day, int year)", "Converts a julian calendar date to julian day count" ], "key": [ "mixed key(array array_arg)", "Return the key of the element currently pointed to by the internal array pointer" ], "krsort": [ "bool krsort(array &array_arg [, int sort_flags])", "Sort an array by key value in reverse order" ], "ksort": [ "bool ksort(array &array_arg [, int sort_flags])", "Sort an array by key" ], "lcfirst": [ "string lcfirst(string str)", "Make a string's first character lowercase" ], "lcg_value": [ "float lcg_value()", "Returns a value from the combined linear congruential generator" ], "lchgrp": [ "bool lchgrp(string filename, mixed group)", "Change symlink group" ], "ldap_8859_to_t61": [ "string ldap_8859_to_t61(string value)", "Translate 8859 characters to t61 characters" ], "ldap_add": [ "bool ldap_add(resource link, string dn, array entry)", "Add entries to LDAP directory" ], "ldap_bind": [ "bool ldap_bind(resource link [, string dn [, string password]])", "Bind to LDAP directory" ], "ldap_compare": [ "bool ldap_compare(resource link, string dn, string attr, string value)", "Determine if an entry has a specific value for one of its attributes" ], "ldap_connect": [ "resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", "Connect to an LDAP server" ], "ldap_count_entries": [ "int ldap_count_entries(resource link, resource result)", "Count the number of entries in a search result" ], "ldap_delete": [ "bool ldap_delete(resource link, string dn)", "Delete an entry from a directory" ], "ldap_dn2ufn": [ "string ldap_dn2ufn(string dn)", "Convert DN to User Friendly Naming format" ], "ldap_err2str": [ "string ldap_err2str(int errno)", "Convert error number to error string" ], "ldap_errno": [ "int ldap_errno(resource link)", "Get the current ldap error number" ], "ldap_error": [ "string ldap_error(resource link)", "Get the current ldap error string" ], "ldap_explode_dn": [ "array ldap_explode_dn(string dn, int with_attrib)", "Splits DN into its component parts" ], "ldap_first_attribute": [ "string ldap_first_attribute(resource link, resource result_entry)", "Return first attribute" ], "ldap_first_entry": [ "resource ldap_first_entry(resource link, resource result)", "Return first result id" ], "ldap_first_reference": [ "resource ldap_first_reference(resource link, resource result)", "Return first reference" ], "ldap_free_result": [ "bool ldap_free_result(resource result)", "Free result memory" ], "ldap_get_attributes": [ "array ldap_get_attributes(resource link, resource result_entry)", "Get attributes from a search result entry" ], "ldap_get_dn": [ "string ldap_get_dn(resource link, resource result_entry)", "Get the DN of a result entry" ], "ldap_get_entries": [ "array ldap_get_entries(resource link, resource result)", "Get all result entries" ], "ldap_get_option": [ "bool ldap_get_option(resource link, int option, mixed retval)", "Get the current value of various session-wide parameters" ], "ldap_get_values_len": [ "array ldap_get_values_len(resource link, resource result_entry, string attribute)", "Get all values with lengths from a result entry" ], "ldap_list": [ "resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Single-level search" ], "ldap_mod_add": [ "bool ldap_mod_add(resource link, string dn, array entry)", "Add attribute values to current" ], "ldap_mod_del": [ "bool ldap_mod_del(resource link, string dn, array entry)", "Delete attribute values" ], "ldap_mod_replace": [ "bool ldap_mod_replace(resource link, string dn, array entry)", "Replace attribute values with new ones" ], "ldap_next_attribute": [ "string ldap_next_attribute(resource link, resource result_entry)", "Get the next attribute in result" ], "ldap_next_entry": [ "resource ldap_next_entry(resource link, resource result_entry)", "Get next result entry" ], "ldap_next_reference": [ "resource ldap_next_reference(resource link, resource reference_entry)", "Get next reference" ], "ldap_parse_reference": [ "bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", "Extract information from reference entry" ], "ldap_parse_result": [ "bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", "Extract information from result" ], "ldap_read": [ "resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Read an entry" ], "ldap_rename": [ "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn);", "Modify the name of an entry" ], "ldap_sasl_bind": [ "bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", "Bind to LDAP directory using SASL" ], "ldap_search": [ "resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Search LDAP tree under base_dn" ], "ldap_set_option": [ "bool ldap_set_option(resource link, int option, mixed newval)", "Set the value of various session-wide parameters" ], "ldap_set_rebind_proc": [ "bool ldap_set_rebind_proc(resource link, string callback)", "Set a callback function to do re-binds on referral chasing." ], "ldap_sort": [ "bool ldap_sort(resource link, resource result, string sortfilter)", "Sort LDAP result entries" ], "ldap_start_tls": [ "bool ldap_start_tls(resource link)", "Start TLS" ], "ldap_t61_to_8859": [ "string ldap_t61_to_8859(string value)", "Translate t61 characters to 8859 characters" ], "ldap_unbind": [ "bool ldap_unbind(resource link)", "Unbind from LDAP directory" ], "leak": [ "void leak(int num_bytes=3)", "Cause an intentional memory leak, for testing/debugging purposes" ], "levenshtein": [ "int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", "Calculate Levenshtein distance between two strings" ], "libxml_clear_errors": [ "void libxml_clear_errors()", "Clear last error from libxml" ], "libxml_disable_entity_loader": [ "bool libxml_disable_entity_loader([boolean disable])", "Disable/Enable ability to load external entities" ], "libxml_get_errors": [ "object libxml_get_errors()", "Retrieve array of errors" ], "libxml_get_last_error": [ "object libxml_get_last_error()", "Retrieve last error from libxml" ], "libxml_set_streams_context": [ "void libxml_set_streams_context(resource streams_context)", "Set the streams context for the next libxml document load or write" ], "libxml_use_internal_errors": [ "bool libxml_use_internal_errors([boolean use_errors])", "Disable libxml errors and allow user to fetch error information as needed" ], "link": [ "int link(string target, string link)", "Create a hard link" ], "linkinfo": [ "int linkinfo(string filename)", "Returns the st_dev field of the UNIX C stat structure describing the link" ], "litespeed_request_headers": [ "array litespeed_request_headers(void)", "Fetch all HTTP request headers" ], "litespeed_response_headers": [ "array litespeed_response_headers(void)", "Fetch all HTTP response headers" ], "locale_accept_from_http": [ "string locale_accept_from_http(string $http_accept)", null ], "locale_canonicalize": [ "static string locale_canonicalize(Locale $loc, string $locale)", "* @param string $locale The locale string to canonicalize" ], "locale_filter_matches": [ "boolean locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm" ], "locale_get_all_variants": [ "static array locale_get_all_variants($locale)", "* gets an array containing the list of variants, or null" ], "locale_get_default": [ "static string locale_get_default( )", "Get default locale" ], "locale_get_keywords": [ "static array locale_get_keywords(string $locale) {", "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!)" ], "locale_get_primary_language": [ "static string locale_get_primary_language($locale)", "* gets the primary language for the $locale" ], "locale_get_region": [ "static string locale_get_region($locale)", "* gets the region for the $locale" ], "locale_get_script": [ "static string locale_get_script($locale)", "* gets the script for the $locale" ], "locale_lookup": [ "string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", "* Searchs the items in $langtag for the best match to the language * range" ], "locale_set_default": [ "static string locale_set_default( string $locale )", "Set default locale" ], "localeconv": [ "array localeconv(void)", "Returns numeric formatting information based on the current locale" ], "localtime": [ "array localtime([int timestamp [, bool associative_array]])", "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array" ], "log": [ "float log(float number, [float base])", "Returns the natural logarithm of the number, or the base log if base is specified" ], "log10": [ "float log10(float number)", "Returns the base-10 logarithm of the number" ], "log1p": [ "float log1p(float number)", "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero" ], "long2ip": [ "string long2ip(int proper_address)", "Converts an (IPv4) Internet network address into a string in Internet standard dotted format" ], "lstat": [ "array lstat(string filename)", "Give information about a file or symbolic link" ], "ltrim": [ "string ltrim(string str [, string character_mask])", "Strips whitespace from the beginning of a string" ], "mail": [ "int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", "Send an email message" ], "max": [ "mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", "Return the highest value in an array or a series of arguments" ], "mb_check_encoding": [ "bool mb_check_encoding([string var[, string encoding]])", "Check if the string is valid for the specified encoding" ], "mb_convert_case": [ "string mb_convert_case(string sourcestring, int mode [, string encoding])", "Returns a case-folded version of sourcestring" ], "mb_convert_encoding": [ "string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", "Returns converted string in desired encoding" ], "mb_convert_kana": [ "string mb_convert_kana(string str [, string option] [, string encoding])", "Conversion between full-width character and half-width character (Japanese)" ], "mb_convert_variables": [ "string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", "Converts the string resource in variables to desired encoding" ], "mb_decode_mimeheader": [ "string mb_decode_mimeheader(string string)", "Decodes the MIME \"encoded-word\" in the string" ], "mb_decode_numericentity": [ "string mb_decode_numericentity(string string, array convmap [, string encoding])", "Converts HTML numeric entities to character code" ], "mb_detect_encoding": [ "string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", "Encodings of the given string is returned (as a string)" ], "mb_detect_order": [ "bool|array mb_detect_order([mixed encoding-list])", "Sets the current detect_order or Return the current detect_order as a array" ], "mb_encode_mimeheader": [ "string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", "Converts the string to MIME \"encoded-word\" in the format of =?charset?(B|Q)?encoded_string?=" ], "mb_encode_numericentity": [ "string mb_encode_numericentity(string string, array convmap [, string encoding])", "Converts specified characters to HTML numeric entities" ], "mb_encoding_aliases": [ "array mb_encoding_aliases(string encoding)", "Returns an array of the aliases of a given encoding name" ], "mb_ereg": [ "int mb_ereg(string pattern, string string [, array registers])", "Regular expression match for multibyte string" ], "mb_ereg_match": [ "bool mb_ereg_match(string pattern, string string [,string option])", "Regular expression match for multibyte string" ], "mb_ereg_replace": [ "string mb_ereg_replace(string pattern, string replacement, string string [, string option])", "Replace regular expression for multibyte string" ], "mb_ereg_search": [ "bool mb_ereg_search([string pattern[, string option]])", "Regular expression search for multibyte string" ], "mb_ereg_search_getpos": [ "int mb_ereg_search_getpos(void)", "Get search start position" ], "mb_ereg_search_getregs": [ "array mb_ereg_search_getregs(void)", "Get matched substring of the last time" ], "mb_ereg_search_init": [ "bool mb_ereg_search_init(string string [, string pattern[, string option]])", "Initialize string and regular expression for search." ], "mb_ereg_search_pos": [ "array mb_ereg_search_pos([string pattern[, string option]])", "Regular expression search for multibyte string" ], "mb_ereg_search_regs": [ "array mb_ereg_search_regs([string pattern[, string option]])", "Regular expression search for multibyte string" ], "mb_ereg_search_setpos": [ "bool mb_ereg_search_setpos(int position)", "Set search start position" ], "mb_eregi": [ "int mb_eregi(string pattern, string string [, array registers])", "Case-insensitive regular expression match for multibyte string" ], "mb_eregi_replace": [ "string mb_eregi_replace(string pattern, string replacement, string string)", "Case insensitive replace regular expression for multibyte string" ], "mb_get_info": [ "mixed mb_get_info([string type])", "Returns the current settings of mbstring" ], "mb_http_input": [ "mixed mb_http_input([string type])", "Returns the input encoding" ], "mb_http_output": [ "string mb_http_output([string encoding])", "Sets the current output_encoding or returns the current output_encoding as a string" ], "mb_internal_encoding": [ "string mb_internal_encoding([string encoding])", "Sets the current internal encoding or Returns the current internal encoding as a string" ], "mb_language": [ "string mb_language([string language])", "Sets the current language or Returns the current language as a string" ], "mb_list_encodings": [ "mixed mb_list_encodings()", "Returns an array of all supported entity encodings" ], "mb_output_handler": [ "string mb_output_handler(string contents, int status)", "Returns string in output buffer converted to the http_output encoding" ], "mb_parse_str": [ "bool mb_parse_str(string encoded_string [, array result])", "Parses GET/POST/COOKIE data and sets global variables" ], "mb_preferred_mime_name": [ "string mb_preferred_mime_name(string encoding)", "Return the preferred MIME name (charset) as a string" ], "mb_regex_encoding": [ "string mb_regex_encoding([string encoding])", "Returns the current encoding for regex as a string." ], "mb_regex_set_options": [ "string mb_regex_set_options([string options])", "Set or get the default options for mbregex functions" ], "mb_send_mail": [ "int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", "* Sends an email message with MIME scheme" ], "mb_split": [ "array mb_split(string pattern, string string [, int limit])", "split multibyte string into array by regular expression" ], "mb_strcut": [ "string mb_strcut(string str, int start [, int length [, string encoding]])", "Returns part of a string" ], "mb_strimwidth": [ "string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", "Trim the string in terminal width" ], "mb_stripos": [ "int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", "Finds position of first occurrence of a string within another, case insensitive" ], "mb_stristr": [ "string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", "Finds first occurrence of a string within another, case insensitive" ], "mb_strlen": [ "int mb_strlen(string str [, string encoding])", "Get character numbers of a string" ], "mb_strpos": [ "int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", "Find position of first occurrence of a string within another" ], "mb_strrchr": [ "string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", "Finds the last occurrence of a character in a string within another" ], "mb_strrichr": [ "string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", "Finds the last occurrence of a character in a string within another, case insensitive" ], "mb_strripos": [ "int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", "Finds position of last occurrence of a string within another, case insensitive" ], "mb_strrpos": [ "int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", "Find position of last occurrence of a string within another" ], "mb_strstr": [ "string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", "Finds first occurrence of a string within another" ], "mb_strtolower": [ "string mb_strtolower(string sourcestring [, string encoding])", "* Returns a lowercased version of sourcestring" ], "mb_strtoupper": [ "string mb_strtoupper(string sourcestring [, string encoding])", "* Returns a uppercased version of sourcestring" ], "mb_strwidth": [ "int mb_strwidth(string str [, string encoding])", "Gets terminal width of a string" ], "mb_substitute_character": [ "mixed mb_substitute_character([mixed substchar])", "Sets the current substitute_character or returns the current substitute_character" ], "mb_substr": [ "string mb_substr(string str, int start [, int length [, string encoding]])", "Returns part of a string" ], "mb_substr_count": [ "int mb_substr_count(string haystack, string needle [, string encoding])", "Count the number of substring occurrences" ], "mcrypt_cbc": [ "string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", "CBC crypt/decrypt data using key key with cipher cipher starting with iv" ], "mcrypt_cfb": [ "string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", "CFB crypt/decrypt data using key key with cipher cipher starting with iv" ], "mcrypt_create_iv": [ "string mcrypt_create_iv(int size, int source)", "Create an initialization vector (IV)" ], "mcrypt_decrypt": [ "string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv" ], "mcrypt_ecb": [ "string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", "ECB crypt/decrypt data using key key with cipher cipher starting with iv" ], "mcrypt_enc_get_algorithms_name": [ "string mcrypt_enc_get_algorithms_name(resource td)", "Returns the name of the algorithm specified by the descriptor td" ], "mcrypt_enc_get_block_size": [ "int mcrypt_enc_get_block_size(resource td)", "Returns the block size of the cipher specified by the descriptor td" ], "mcrypt_enc_get_iv_size": [ "int mcrypt_enc_get_iv_size(resource td)", "Returns the size of the IV in bytes of the algorithm specified by the descriptor td" ], "mcrypt_enc_get_key_size": [ "int mcrypt_enc_get_key_size(resource td)", "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td" ], "mcrypt_enc_get_modes_name": [ "string mcrypt_enc_get_modes_name(resource td)", "Returns the name of the mode specified by the descriptor td" ], "mcrypt_enc_get_supported_key_sizes": [ "array mcrypt_enc_get_supported_key_sizes(resource td)", "This function decrypts the crypttext" ], "mcrypt_enc_is_block_algorithm": [ "bool mcrypt_enc_is_block_algorithm(resource td)", "Returns TRUE if the alrogithm is a block algorithms" ], "mcrypt_enc_is_block_algorithm_mode": [ "bool mcrypt_enc_is_block_algorithm_mode(resource td)", "Returns TRUE if the mode is for use with block algorithms" ], "mcrypt_enc_is_block_mode": [ "bool mcrypt_enc_is_block_mode(resource td)", "Returns TRUE if the mode outputs blocks" ], "mcrypt_enc_self_test": [ "int mcrypt_enc_self_test(resource td)", "This function runs the self test on the algorithm specified by the descriptor td" ], "mcrypt_encrypt": [ "string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv" ], "mcrypt_generic": [ "string mcrypt_generic(resource td, string data)", "This function encrypts the plaintext" ], "mcrypt_generic_deinit": [ "bool mcrypt_generic_deinit(resource td)", "This function terminates encrypt specified by the descriptor td" ], "mcrypt_generic_init": [ "int mcrypt_generic_init(resource td, string key, string iv)", "This function initializes all buffers for the specific module" ], "mcrypt_get_block_size": [ "int mcrypt_get_block_size(string cipher, string module)", "Get the key size of cipher" ], "mcrypt_get_cipher_name": [ "string mcrypt_get_cipher_name(string cipher)", "Get the key size of cipher" ], "mcrypt_get_iv_size": [ "int mcrypt_get_iv_size(string cipher, string module)", "Get the IV size of cipher (Usually the same as the blocksize)" ], "mcrypt_get_key_size": [ "int mcrypt_get_key_size(string cipher, string module)", "Get the key size of cipher" ], "mcrypt_list_algorithms": [ "array mcrypt_list_algorithms([string lib_dir])", "List all algorithms in \"module_dir\"" ], "mcrypt_list_modes": [ "array mcrypt_list_modes([string lib_dir])", "List all modes \"module_dir\"" ], "mcrypt_module_close": [ "bool mcrypt_module_close(resource td)", "Free the descriptor td" ], "mcrypt_module_get_algo_block_size": [ "int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", "Returns the block size of the algorithm" ], "mcrypt_module_get_algo_key_size": [ "int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", "Returns the maximum supported key size of the algorithm" ], "mcrypt_module_get_supported_key_sizes": [ "array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", "This function decrypts the crypttext" ], "mcrypt_module_is_block_algorithm": [ "bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", "Returns TRUE if the algorithm is a block algorithm" ], "mcrypt_module_is_block_algorithm_mode": [ "bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", "Returns TRUE if the mode is for use with block algorithms" ], "mcrypt_module_is_block_mode": [ "bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", "Returns TRUE if the mode outputs blocks of bytes" ], "mcrypt_module_open": [ "resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", "Opens the module of the algorithm and the mode to be used" ], "mcrypt_module_self_test": [ "bool mcrypt_module_self_test(string algorithm [, string lib_dir])", "Does a self test of the module \"module\"" ], "mcrypt_ofb": [ "string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv" ], "md5": [ "string md5(string str, [ bool raw_output])", "Calculate the md5 hash of a string" ], "md5_file": [ "string md5_file(string filename [, bool raw_output])", "Calculate the md5 hash of given filename" ], "mdecrypt_generic": [ "string mdecrypt_generic(resource td, string data)", "This function decrypts the plaintext" ], "memory_get_peak_usage": [ "int memory_get_peak_usage([real_usage])", "Returns the peak allocated by PHP memory" ], "memory_get_usage": [ "int memory_get_usage([real_usage])", "Returns the allocated by PHP memory" ], "metaphone": [ "string metaphone(string text[, int phones])", "Break english phrases down into their phonemes" ], "method_exists": [ "bool method_exists(object object, string method)", "Checks if the class method exists" ], "mhash": [ "string mhash(int hash, string data [, string key])", "Hash data with hash" ], "mhash_count": [ "int mhash_count(void)", "Gets the number of available hashes" ], "mhash_get_block_size": [ "int mhash_get_block_size(int hash)", "Gets the block size of hash" ], "mhash_get_hash_name": [ "string mhash_get_hash_name(int hash)", "Gets the name of hash" ], "mhash_keygen_s2k": [ "string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", "Generates a key using hash functions" ], "microtime": [ "mixed microtime([bool get_as_float])", "Returns either a string or a float containing the current time in seconds and microseconds" ], "mime_content_type": [ "string mime_content_type(string filename|resource stream)", "Return content-type for file" ], "min": [ "mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", "Return the lowest value in an array or a series of arguments" ], "mkdir": [ "bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", "Create a directory" ], "mktime": [ "int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", "Get UNIX timestamp for a date" ], "money_format": [ "string money_format(string format , float value)", "Convert monetary value(s) to string" ], "move_uploaded_file": [ "bool move_uploaded_file(string path, string new_path)", "Move a file if and only if it was created by an upload" ], "msg_get_queue": [ "resource msg_get_queue(int key [, int perms])", "Attach to a message queue" ], "msg_queue_exists": [ "bool msg_queue_exists(int key)", "Check wether a message queue exists" ], "msg_receive": [ "mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", "Send a message of type msgtype (must be > 0) to a message queue" ], "msg_remove_queue": [ "bool msg_remove_queue(resource queue)", "Destroy the queue" ], "msg_send": [ "bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", "Send a message of type msgtype (must be > 0) to a message queue" ], "msg_set_queue": [ "bool msg_set_queue(resource queue, array data)", "Set information for a message queue" ], "msg_stat_queue": [ "array msg_stat_queue(resource queue)", "Returns information about a message queue" ], "msgfmt_create": [ "MessageFormatter msgfmt_create( string $locale, string $pattern )", "* Create formatter." ], "msgfmt_format": [ "mixed msgfmt_format( MessageFormatter $nf, array $args )", "* Format a message." ], "msgfmt_format_message": [ "mixed msgfmt_format_message( string $locale, string $pattern, array $args )", "* Format a message." ], "msgfmt_get_error_code": [ "int msgfmt_get_error_code( MessageFormatter $nf )", "* Get formatter's last error code." ], "msgfmt_get_error_message": [ "string msgfmt_get_error_message( MessageFormatter $coll )", "* Get text description for formatter's last error code." ], "msgfmt_get_locale": [ "string msgfmt_get_locale(MessageFormatter $mf)", "* Get formatter locale." ], "msgfmt_get_pattern": [ "string msgfmt_get_pattern( MessageFormatter $mf )", "* Get formatter pattern." ], "msgfmt_parse": [ "array msgfmt_parse( MessageFormatter $nf, string $source )", "* Parse a message." ], "msgfmt_set_pattern": [ "bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", "* Set formatter pattern." ], "mssql_bind": [ "bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", "Adds a parameter to a stored procedure or a remote stored procedure" ], "mssql_close": [ "bool mssql_close([resource conn_id])", "Closes a connection to a MS-SQL server" ], "mssql_connect": [ "int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", "Establishes a connection to a MS-SQL server" ], "mssql_data_seek": [ "bool mssql_data_seek(resource result_id, int offset)", "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number" ], "mssql_execute": [ "mixed mssql_execute(resource stmt [, bool skip_results = false])", "Executes a stored procedure on a MS-SQL server database" ], "mssql_fetch_array": [ "array mssql_fetch_array(resource result_id [, int result_type])", "Returns an associative array of the current row in the result set specified by result_id" ], "mssql_fetch_assoc": [ "array mssql_fetch_assoc(resource result_id)", "Returns an associative array of the current row in the result set specified by result_id" ], "mssql_fetch_batch": [ "int mssql_fetch_batch(resource result_index)", "Returns the next batch of records" ], "mssql_fetch_field": [ "object mssql_fetch_field(resource result_id [, int offset])", "Gets information about certain fields in a query result" ], "mssql_fetch_object": [ "object mssql_fetch_object(resource result_id)", "Returns a pseudo-object of the current row in the result set specified by result_id" ], "mssql_fetch_row": [ "array mssql_fetch_row(resource result_id)", "Returns an array of the current row in the result set specified by result_id" ], "mssql_field_length": [ "int mssql_field_length(resource result_id [, int offset])", "Get the length of a MS-SQL field" ], "mssql_field_name": [ "string mssql_field_name(resource result_id [, int offset])", "Returns the name of the field given by offset in the result set given by result_id" ], "mssql_field_seek": [ "bool mssql_field_seek(resource result_id, int offset)", "Seeks to the specified field offset" ], "mssql_field_type": [ "string mssql_field_type(resource result_id [, int offset])", "Returns the type of a field" ], "mssql_free_result": [ "bool mssql_free_result(resource result_index)", "Free a MS-SQL result index" ], "mssql_free_statement": [ "bool mssql_free_statement(resource result_index)", "Free a MS-SQL statement index" ], "mssql_get_last_message": [ "string mssql_get_last_message(void)", "Gets the last message from the MS-SQL server" ], "mssql_guid_string": [ "string mssql_guid_string(string binary [,bool short_format])", "Converts a 16 byte binary GUID to a string" ], "mssql_init": [ "int mssql_init(string sp_name [, resource conn_id])", "Initializes a stored procedure or a remote stored procedure" ], "mssql_min_error_severity": [ "void mssql_min_error_severity(int severity)", "Sets the lower error severity" ], "mssql_min_message_severity": [ "void mssql_min_message_severity(int severity)", "Sets the lower message severity" ], "mssql_next_result": [ "bool mssql_next_result(resource result_id)", "Move the internal result pointer to the next result" ], "mssql_num_fields": [ "int mssql_num_fields(resource mssql_result_index)", "Returns the number of fields fetched in from the result id specified" ], "mssql_num_rows": [ "int mssql_num_rows(resource mssql_result_index)", "Returns the number of rows fetched in from the result id specified" ], "mssql_pconnect": [ "int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", "Establishes a persistent connection to a MS-SQL server" ], "mssql_query": [ "resource mssql_query(string query [, resource conn_id [, int batch_size]])", "Perform an SQL query on a MS-SQL server database" ], "mssql_result": [ "string mssql_result(resource result_id, int row, mixed field)", "Returns the contents of one cell from a MS-SQL result set" ], "mssql_rows_affected": [ "int mssql_rows_affected(resource conn_id)", "Returns the number of records affected by the query" ], "mssql_select_db": [ "bool mssql_select_db(string database_name [, resource conn_id])", "Select a MS-SQL database" ], "mt_getrandmax": [ "int mt_getrandmax(void)", "Returns the maximum value a random number from Mersenne Twister can have" ], "mt_rand": [ "int mt_rand([int min, int max])", "Returns a random number from Mersenne Twister" ], "mt_srand": [ "void mt_srand([int seed])", "Seeds Mersenne Twister random number generator" ], "mysql_affected_rows": [ "int mysql_affected_rows([int link_identifier])", "Gets number of affected rows in previous MySQL operation" ], "mysql_client_encoding": [ "string mysql_client_encoding([int link_identifier])", "Returns the default character set for the current connection" ], "mysql_close": [ "bool mysql_close([int link_identifier])", "Close a MySQL connection" ], "mysql_connect": [ "resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", "Opens a connection to a MySQL Server" ], "mysql_create_db": [ "bool mysql_create_db(string database_name [, int link_identifier])", "Create a MySQL database" ], "mysql_data_seek": [ "bool mysql_data_seek(resource result, int row_number)", "Move internal result pointer" ], "mysql_db_query": [ "resource mysql_db_query(string database_name, string query [, int link_identifier])", "Sends an SQL query to MySQL" ], "mysql_drop_db": [ "bool mysql_drop_db(string database_name [, int link_identifier])", "Drops (delete) a MySQL database" ], "mysql_errno": [ "int mysql_errno([int link_identifier])", "Returns the number of the error message from previous MySQL operation" ], "mysql_error": [ "string mysql_error([int link_identifier])", "Returns the text of the error message from previous MySQL operation" ], "mysql_escape_string": [ "string mysql_escape_string(string to_be_escaped)", "Escape string for mysql query" ], "mysql_fetch_array": [ "array mysql_fetch_array(resource result [, int result_type])", "Fetch a result row as an array (associative, numeric or both)" ], "mysql_fetch_assoc": [ "array mysql_fetch_assoc(resource result)", "Fetch a result row as an associative array" ], "mysql_fetch_field": [ "object mysql_fetch_field(resource result [, int field_offset])", "Gets column information from a result and return as an object" ], "mysql_fetch_lengths": [ "array mysql_fetch_lengths(resource result)", "Gets max data size of each column in a result" ], "mysql_fetch_object": [ "object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", "Fetch a result row as an object" ], "mysql_fetch_row": [ "array mysql_fetch_row(resource result)", "Gets a result row as an enumerated array" ], "mysql_field_flags": [ "string mysql_field_flags(resource result, int field_offset)", "Gets the flags associated with the specified field in a result" ], "mysql_field_len": [ "int mysql_field_len(resource result, int field_offset)", "Returns the length of the specified field" ], "mysql_field_name": [ "string mysql_field_name(resource result, int field_index)", "Gets the name of the specified field in a result" ], "mysql_field_seek": [ "bool mysql_field_seek(resource result, int field_offset)", "Sets result pointer to a specific field offset" ], "mysql_field_table": [ "string mysql_field_table(resource result, int field_offset)", "Gets name of the table the specified field is in" ], "mysql_field_type": [ "string mysql_field_type(resource result, int field_offset)", "Gets the type of the specified field in a result" ], "mysql_free_result": [ "bool mysql_free_result(resource result)", "Free result memory" ], "mysql_get_client_info": [ "string mysql_get_client_info(void)", "Returns a string that represents the client library version" ], "mysql_get_host_info": [ "string mysql_get_host_info([int link_identifier])", "Returns a string describing the type of connection in use, including the server host name" ], "mysql_get_proto_info": [ "int mysql_get_proto_info([int link_identifier])", "Returns the protocol version used by current connection" ], "mysql_get_server_info": [ "string mysql_get_server_info([int link_identifier])", "Returns a string that represents the server version number" ], "mysql_info": [ "string mysql_info([int link_identifier])", "Returns a string containing information about the most recent query" ], "mysql_insert_id": [ "int mysql_insert_id([int link_identifier])", "Gets the ID generated from the previous INSERT operation" ], "mysql_list_dbs": [ "resource mysql_list_dbs([int link_identifier])", "List databases available on a MySQL server" ], "mysql_list_fields": [ "resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", "List MySQL result fields" ], "mysql_list_processes": [ "resource mysql_list_processes([int link_identifier])", "Returns a result set describing the current server threads" ], "mysql_list_tables": [ "resource mysql_list_tables(string database_name [, int link_identifier])", "List tables in a MySQL database" ], "mysql_num_fields": [ "int mysql_num_fields(resource result)", "Gets number of fields in a result" ], "mysql_num_rows": [ "int mysql_num_rows(resource result)", "Gets number of rows in a result" ], "mysql_pconnect": [ "resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", "Opens a persistent connection to a MySQL Server" ], "mysql_ping": [ "bool mysql_ping([int link_identifier])", "Ping a server connection. If no connection then reconnect." ], "mysql_query": [ "resource mysql_query(string query [, int link_identifier])", "Sends an SQL query to MySQL" ], "mysql_real_escape_string": [ "string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection" ], "mysql_result": [ "mixed mysql_result(resource result, int row [, mixed field])", "Gets result data" ], "mysql_select_db": [ "bool mysql_select_db(string database_name [, int link_identifier])", "Selects a MySQL database" ], "mysql_set_charset": [ "bool mysql_set_charset(string csname [, int link_identifier])", "sets client character set" ], "mysql_stat": [ "string mysql_stat([int link_identifier])", "Returns a string containing status information" ], "mysql_thread_id": [ "int mysql_thread_id([int link_identifier])", "Returns the thread id of current connection" ], "mysql_unbuffered_query": [ "resource mysql_unbuffered_query(string query [, int link_identifier])", "Sends an SQL query to MySQL, without fetching and buffering the result rows" ], "mysqli_affected_rows": [ "mixed mysqli_affected_rows(object link)", "Get number of affected rows in previous MySQL operation" ], "mysqli_autocommit": [ "bool mysqli_autocommit(object link, bool mode)", "Turn auto commit on or of" ], "mysqli_cache_stats": [ "array mysqli_cache_stats(void)", "Returns statistics about the zval cache" ], "mysqli_change_user": [ "bool mysqli_change_user(object link, string user, string password, string database)", "Change logged-in user of the active connection" ], "mysqli_character_set_name": [ "string mysqli_character_set_name(object link)", "Returns the name of the character set used for this connection" ], "mysqli_close": [ "bool mysqli_close(object link)", "Close connection" ], "mysqli_commit": [ "bool mysqli_commit(object link)", "Commit outstanding actions and close transaction" ], "mysqli_connect": [ "object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", "Open a connection to a mysql server" ], "mysqli_connect_errno": [ "int mysqli_connect_errno(void)", "Returns the numerical value of the error message from last connect command" ], "mysqli_connect_error": [ "string mysqli_connect_error(void)", "Returns the text of the error message from previous MySQL operation" ], "mysqli_data_seek": [ "bool mysqli_data_seek(object result, int offset)", "Move internal result pointer" ], "mysqli_debug": [ "void mysqli_debug(string debug)", "" ], "mysqli_dump_debug_info": [ "bool mysqli_dump_debug_info(object link)", "" ], "mysqli_embedded_server_end": [ "void mysqli_embedded_server_end(void)", "" ], "mysqli_embedded_server_start": [ "bool mysqli_embedded_server_start(bool start, array arguments, array groups)", "initialize and start embedded server" ], "mysqli_errno": [ "int mysqli_errno(object link)", "Returns the numerical value of the error message from previous MySQL operation" ], "mysqli_error": [ "string mysqli_error(object link)", "Returns the text of the error message from previous MySQL operation" ], "mysqli_fetch_all": [ "mixed mysqli_fetch_all (object result [,int resulttype])", "Fetches all result rows as an associative array, a numeric array, or both" ], "mysqli_fetch_array": [ "mixed mysqli_fetch_array (object result [,int resulttype])", "Fetch a result row as an associative array, a numeric array, or both" ], "mysqli_fetch_assoc": [ "mixed mysqli_fetch_assoc (object result)", "Fetch a result row as an associative array" ], "mysqli_fetch_field": [ "mixed mysqli_fetch_field (object result)", "Get column information from a result and return as an object" ], "mysqli_fetch_field_direct": [ "mixed mysqli_fetch_field_direct (object result, int offset)", "Fetch meta-data for a single field" ], "mysqli_fetch_fields": [ "mixed mysqli_fetch_fields (object result)", "Return array of objects containing field meta-data" ], "mysqli_fetch_lengths": [ "mixed mysqli_fetch_lengths (object result)", "Get the length of each output in a result" ], "mysqli_fetch_object": [ "mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])", "Fetch a result row as an object" ], "mysqli_fetch_row": [ "array mysqli_fetch_row (object result)", "Get a result row as an enumerated array" ], "mysqli_field_count": [ "int mysqli_field_count(object link)", "Fetch the number of fields returned by the last query for the given link" ], "mysqli_field_seek": [ "int mysqli_field_seek(object result, int fieldnr)", "Set result pointer to a specified field offset" ], "mysqli_field_tell": [ "int mysqli_field_tell(object result)", "Get current field offset of result pointer" ], "mysqli_free_result": [ "void mysqli_free_result(object result)", "Free query result memory for the given result handle" ], "mysqli_get_charset": [ "object mysqli_get_charset(object link)", "returns a character set object" ], "mysqli_get_client_info": [ "string mysqli_get_client_info(void)", "Get MySQL client info" ], "mysqli_get_client_stats": [ "array mysqli_get_client_stats(void)", "Returns statistics about the zval cache" ], "mysqli_get_client_version": [ "int mysqli_get_client_version(void)", "Get MySQL client info" ], "mysqli_get_connection_stats": [ "array mysqli_get_connection_stats(void)", "Returns statistics about the zval cache" ], "mysqli_get_host_info": [ "string mysqli_get_host_info (object link)", "Get MySQL host info" ], "mysqli_get_proto_info": [ "int mysqli_get_proto_info(object link)", "Get MySQL protocol information" ], "mysqli_get_server_info": [ "string mysqli_get_server_info(object link)", "Get MySQL server info" ], "mysqli_get_server_version": [ "int mysqli_get_server_version(object link)", "Return the MySQL version for the server referenced by the given link" ], "mysqli_get_warnings": [ "object mysqli_get_warnings(object link) */", "PHP_FUNCTION(mysqli_get_warnings) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"O\", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \"mysqli_link\", MYSQLI_STATUS_VALID); if (mysql_warning_count(mysql->mysql)) { w = php_get_warnings(mysql->mysql TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}" ], "mysqli_info": [ "string mysqli_info(object link)", "Get information about the most recent query" ], "mysqli_init": [ "resource mysqli_init(void)", "Initialize mysqli and return a resource for use with mysql_real_connect" ], "mysqli_insert_id": [ "mixed mysqli_insert_id(object link)", "Get the ID generated from the previous INSERT operation" ], "mysqli_kill": [ "bool mysqli_kill(object link, int processid)", "Kill a mysql process on the server" ], "mysqli_link_construct": [ "object mysqli_link_construct()", "" ], "mysqli_more_results": [ "bool mysqli_more_results(object link)", "check if there any more query results from a multi query" ], "mysqli_multi_query": [ "bool mysqli_multi_query(object link, string query)", "allows to execute multiple queries" ], "mysqli_next_result": [ "bool mysqli_next_result(object link)", "read next result from multi_query" ], "mysqli_num_fields": [ "int mysqli_num_fields(object result)", "Get number of fields in result" ], "mysqli_num_rows": [ "mixed mysqli_num_rows(object result)", "Get number of rows in result" ], "mysqli_options": [ "bool mysqli_options(object link, int flags, mixed values)", "Set options" ], "mysqli_ping": [ "bool mysqli_ping(object link)", "Ping a server connection or reconnect if there is no connection" ], "mysqli_poll": [ "int mysqli_poll(array read, array write, array error, long sec [, long usec])", "Poll connections" ], "mysqli_prepare": [ "mixed mysqli_prepare(object link, string query)", "Prepare a SQL statement for execution" ], "mysqli_query": [ "mixed mysqli_query(object link, string query [,int resultmode]) */", "PHP_FUNCTION(mysqli_query) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQL_RES *result; char *query = NULL; unsigned int query_len; unsigned long resultmode = MYSQLI_STORE_RESULT; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"Os|l\", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) { return; } if (!query_len) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Empty query\"); RETURN_FALSE; } if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Invalid value for resultmode\"); RETURN_FALSE; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \"mysqli_link\", MYSQLI_STATUS_VALID); MYSQLI_DISABLE_MQ; #ifdef MYSQLI_USE_MYSQLND if (resultmode & MYSQLI_ASYNC) { if (mysqli_async_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC; RETURN_TRUE; } #endif if (mysql_real_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } if (!mysql_field_count(mysql->mysql)) { /* no result set - not a SELECT" ], "mysqli_real_connect": [ "bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", "Open a connection to a mysql server" ], "mysqli_real_escape_string": [ "string mysqli_real_escape_string(object link, string escapestr)", "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection" ], "mysqli_real_query": [ "bool mysqli_real_query(object link, string query)", "Binary-safe version of mysql_query()" ], "mysqli_reap_async_query": [ "int mysqli_reap_async_query(object link)", "Poll connections" ], "mysqli_refresh": [ "bool mysqli_refresh(object link, long options)", "Flush tables or caches, or reset replication server information" ], "mysqli_report": [ "bool mysqli_report(int flags)", "sets report level" ], "mysqli_rollback": [ "bool mysqli_rollback(object link)", "Undo actions from current transaction" ], "mysqli_select_db": [ "bool mysqli_select_db(object link, string dbname)", "Select a MySQL database" ], "mysqli_set_charset": [ "bool mysqli_set_charset(object link, string csname)", "sets client character set" ], "mysqli_set_local_infile_default": [ "void mysqli_set_local_infile_default(object link)", "unsets user defined handler for load local infile command" ], "mysqli_set_local_infile_handler": [ "bool mysqli_set_local_infile_handler(object link, callback read_func)", "Set callback functions for LOAD DATA LOCAL INFILE" ], "mysqli_sqlstate": [ "string mysqli_sqlstate(object link)", "Returns the SQLSTATE error from previous MySQL operation" ], "mysqli_ssl_set": [ "bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", "" ], "mysqli_stat": [ "mixed mysqli_stat(object link)", "Get current system status" ], "mysqli_stmt_affected_rows": [ "mixed mysqli_stmt_affected_rows(object stmt)", "Return the number of rows affected in the last query for the given link" ], "mysqli_stmt_attr_get": [ "int mysqli_stmt_attr_get(object stmt, long attr)", "" ], "mysqli_stmt_attr_set": [ "int mysqli_stmt_attr_set(object stmt, long attr, long mode)", "" ], "mysqli_stmt_bind_param": [ "bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", "Bind variables to a prepared statement as parameters" ], "mysqli_stmt_bind_result": [ "bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", "Bind variables to a prepared statement for result storage" ], "mysqli_stmt_close": [ "bool mysqli_stmt_close(object stmt)", "Close statement" ], "mysqli_stmt_data_seek": [ "void mysqli_stmt_data_seek(object stmt, int offset)", "Move internal result pointer" ], "mysqli_stmt_errno": [ "int mysqli_stmt_errno(object stmt)", "" ], "mysqli_stmt_error": [ "string mysqli_stmt_error(object stmt)", "" ], "mysqli_stmt_execute": [ "bool mysqli_stmt_execute(object stmt)", "Execute a prepared statement" ], "mysqli_stmt_fetch": [ "mixed mysqli_stmt_fetch(object stmt)", "Fetch results from a prepared statement into the bound variables" ], "mysqli_stmt_field_count": [ "int mysqli_stmt_field_count(object stmt) {", "Return the number of result columns for the given statement" ], "mysqli_stmt_free_result": [ "void mysqli_stmt_free_result(object stmt)", "Free stored result memory for the given statement handle" ], "mysqli_stmt_get_result": [ "object mysqli_stmt_get_result(object link)", "Buffer result set on client" ], "mysqli_stmt_get_warnings": [ "object mysqli_stmt_get_warnings(object link) */", "PHP_FUNCTION(mysqli_stmt_get_warnings) { MY_STMT *stmt; zval *stmt_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"O\", &stmt_link, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, \"mysqli_stmt\", MYSQLI_STATUS_VALID); if (mysqli_stmt_warning_count(stmt->stmt)) { w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}" ], "mysqli_stmt_init": [ "mixed mysqli_stmt_init(object link)", "Initialize statement object" ], "mysqli_stmt_insert_id": [ "mixed mysqli_stmt_insert_id(object stmt)", "Get the ID generated from the previous INSERT operation" ], "mysqli_stmt_next_result": [ "bool mysqli_stmt_next_result(object link)", "read next result from multi_query" ], "mysqli_stmt_num_rows": [ "mixed mysqli_stmt_num_rows(object stmt)", "Return the number of rows in statements result set" ], "mysqli_stmt_param_count": [ "int mysqli_stmt_param_count(object stmt)", "Return the number of parameter for the given statement" ], "mysqli_stmt_prepare": [ "bool mysqli_stmt_prepare(object stmt, string query)", "prepare server side statement with query" ], "mysqli_stmt_reset": [ "bool mysqli_stmt_reset(object stmt)", "reset a prepared statement" ], "mysqli_stmt_result_metadata": [ "mixed mysqli_stmt_result_metadata(object stmt)", "return result set from statement" ], "mysqli_stmt_send_long_data": [ "bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", "" ], "mysqli_stmt_sqlstate": [ "string mysqli_stmt_sqlstate(object stmt)", "" ], "mysqli_stmt_store_result": [ "bool mysqli_stmt_store_result(stmt)", "" ], "mysqli_store_result": [ "object mysqli_store_result(object link)", "Buffer result set on client" ], "mysqli_thread_id": [ "int mysqli_thread_id(object link)", "Return the current thread ID" ], "mysqli_thread_safe": [ "bool mysqli_thread_safe(void)", "Return whether thread safety is given or not" ], "mysqli_use_result": [ "mixed mysqli_use_result(object link)", "Directly retrieve query results - do not buffer results on client side" ], "mysqli_warning_count": [ "int mysqli_warning_count (object link)", "Return number of warnings from the last query for the given link" ], "natcasesort": [ "void natcasesort(array &array_arg)", "Sort an array using case-insensitive natural sort" ], "natsort": [ "void natsort(array &array_arg)", "Sort an array using natural sort" ], "next": [ "mixed next(array array_arg)", "Move array argument's internal pointer to the next element and return it" ], "ngettext": [ "string ngettext(string MSGID1, string MSGID2, int N)", "Plural version of gettext()" ], "nl2br": [ "string nl2br(string str [, bool is_xhtml])", "Converts newlines to HTML line breaks" ], "nl_langinfo": [ "string nl_langinfo(int item)", "Query language and locale information" ], "normalizer_is_normalize": [ "bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", "* Test if a string is in a given normalization form." ], "normalizer_normalize": [ "string normalizer_normalize( string $input [, string $form = FORM_C] )", "* Normalize a string." ], "nsapi_request_headers": [ "array nsapi_request_headers(void)", "Get all headers from the request" ], "nsapi_response_headers": [ "array nsapi_response_headers(void)", "Get all headers from the response" ], "nsapi_virtual": [ "bool nsapi_virtual(string uri)", "Perform an NSAPI sub-request" ], "number_format": [ "string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", "Formats a number with grouped thousands" ], "numfmt_create": [ "NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", "* Create number formatter." ], "numfmt_format": [ "mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", "* Format a number." ], "numfmt_format_currency": [ "mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", "* Format a number as currency." ], "numfmt_get_attribute": [ "mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", "* Get formatter attribute value." ], "numfmt_get_error_code": [ "int numfmt_get_error_code( NumberFormatter $nf )", "* Get formatter's last error code." ], "numfmt_get_error_message": [ "string numfmt_get_error_message( NumberFormatter $nf )", "* Get text description for formatter's last error code." ], "numfmt_get_locale": [ "string numfmt_get_locale( NumberFormatter $nf[, int type] )", "* Get formatter locale." ], "numfmt_get_pattern": [ "string numfmt_get_pattern( NumberFormatter $nf )", "* Get formatter pattern." ], "numfmt_get_symbol": [ "string numfmt_get_symbol( NumberFormatter $nf, int $attr )", "* Get formatter symbol value." ], "numfmt_get_text_attribute": [ "string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", "* Get formatter attribute value." ], "numfmt_parse": [ "mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", "* Parse a number." ], "numfmt_parse_currency": [ "double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )", "* Parse a number as currency." ], "numfmt_parse_message": [ "array numfmt_parse_message( string $locale, string $pattern, string $source )", "* Parse a message." ], "numfmt_set_attribute": [ "bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", "* Get formatter attribute value." ], "numfmt_set_pattern": [ "bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", "* Set formatter pattern." ], "numfmt_set_symbol": [ "bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", "* Set formatter symbol value." ], "numfmt_set_text_attribute": [ "bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", "* Get formatter attribute value." ], "ob_clean": [ "bool ob_clean(void)", "Clean (delete) the current output buffer" ], "ob_end_clean": [ "bool ob_end_clean(void)", "Clean the output buffer, and delete current output buffer" ], "ob_end_flush": [ "bool ob_end_flush(void)", "Flush (send) the output buffer, and delete current output buffer" ], "ob_flush": [ "bool ob_flush(void)", "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer" ], "ob_get_clean": [ "bool ob_get_clean(void)", "Get current buffer contents and delete current output buffer" ], "ob_get_contents": [ "string ob_get_contents(void)", "Return the contents of the output buffer" ], "ob_get_flush": [ "bool ob_get_flush(void)", "Get current buffer contents, flush (send) the output buffer, and delete current output buffer" ], "ob_get_length": [ "int ob_get_length(void)", "Return the length of the output buffer" ], "ob_get_level": [ "int ob_get_level(void)", "Return the nesting level of the output buffer" ], "ob_get_status": [ "false|array ob_get_status([bool full_status])", "Return the status of the active or all output buffers" ], "ob_gzhandler": [ "string ob_gzhandler(string str, int mode)", "Encode str based on accept-encoding setting - designed to be called from ob_start()" ], "ob_iconv_handler": [ "string ob_iconv_handler(string contents, int status)", "Returns str in output buffer converted to the iconv.output_encoding character set" ], "ob_implicit_flush": [ "void ob_implicit_flush([int flag])", "Turn implicit flush on/off and is equivalent to calling flush() after every output call" ], "ob_list_handlers": [ "false|array ob_list_handlers()", "* List all output_buffers in an array" ], "ob_start": [ "bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", "Turn on Output Buffering (specifying an optional output handler)." ], "oci_bind_array_by_name": [ "bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", "Bind a PHP array to an Oracle PL/SQL type by name" ], "oci_bind_by_name": [ "bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", "Bind a PHP variable to an Oracle placeholder by name" ], "oci_cancel": [ "bool oci_cancel(resource stmt)", "Cancel reading from a cursor" ], "oci_close": [ "bool oci_close(resource connection)", "Disconnect from database" ], "oci_collection_append": [ "bool oci_collection_append(string value)", "Append an object to the collection" ], "oci_collection_assign": [ "bool oci_collection_assign(object from)", "Assign a collection from another existing collection" ], "oci_collection_element_assign": [ "bool oci_collection_element_assign(int index, string val)", "Assign element val to collection at index ndx" ], "oci_collection_element_get": [ "string oci_collection_element_get(int ndx)", "Retrieve the value at collection index ndx" ], "oci_collection_max": [ "int oci_collection_max()", "Return the max value of a collection. For a varray this is the maximum length of the array" ], "oci_collection_size": [ "int oci_collection_size()", "Return the size of a collection" ], "oci_collection_trim": [ "bool oci_collection_trim(int num)", "Trim num elements from the end of a collection" ], "oci_commit": [ "bool oci_commit(resource connection)", "Commit the current context" ], "oci_connect": [ "resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", "Connect to an Oracle database and log on. Returns a new session." ], "oci_define_by_name": [ "bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", "Define a PHP variable to an Oracle column by name" ], "oci_error": [ "array oci_error([resource stmt|connection|global])", "Return the last error of stmt|connection|global. If no error happened returns false." ], "oci_execute": [ "bool oci_execute(resource stmt [, int mode])", "Execute a parsed statement" ], "oci_fetch": [ "bool oci_fetch(resource stmt)", "Prepare a new row of data for reading" ], "oci_fetch_all": [ "int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", "Fetch all rows of result data into an array" ], "oci_fetch_array": [ "array oci_fetch_array( resource stmt [, int mode ])", "Fetch a result row as an array" ], "oci_fetch_assoc": [ "array oci_fetch_assoc( resource stmt )", "Fetch a result row as an associative array" ], "oci_fetch_object": [ "object oci_fetch_object( resource stmt )", "Fetch a result row as an object" ], "oci_fetch_row": [ "array oci_fetch_row( resource stmt )", "Fetch a result row as an enumerated array" ], "oci_field_is_null": [ "bool oci_field_is_null(resource stmt, int col)", "Tell whether a column is NULL" ], "oci_field_name": [ "string oci_field_name(resource stmt, int col)", "Tell the name of a column" ], "oci_field_precision": [ "int oci_field_precision(resource stmt, int col)", "Tell the precision of a column" ], "oci_field_scale": [ "int oci_field_scale(resource stmt, int col)", "Tell the scale of a column" ], "oci_field_size": [ "int oci_field_size(resource stmt, int col)", "Tell the maximum data size of a column" ], "oci_field_type": [ "mixed oci_field_type(resource stmt, int col)", "Tell the data type of a column" ], "oci_field_type_raw": [ "int oci_field_type_raw(resource stmt, int col)", "Tell the raw oracle data type of a column" ], "oci_free_collection": [ "bool oci_free_collection()", "Deletes collection object" ], "oci_free_descriptor": [ "bool oci_free_descriptor()", "Deletes large object description" ], "oci_free_statement": [ "bool oci_free_statement(resource stmt)", "Free all resources associated with a statement" ], "oci_internal_debug": [ "void oci_internal_debug(int onoff)", "Toggle internal debugging output for the OCI extension" ], "oci_lob_append": [ "bool oci_lob_append( object lob )", "Appends data from a LOB to another LOB" ], "oci_lob_close": [ "bool oci_lob_close()", "Closes lob descriptor" ], "oci_lob_copy": [ "bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", "Copies data from a LOB to another LOB" ], "oci_lob_eof": [ "bool oci_lob_eof()", "Checks if EOF is reached" ], "oci_lob_erase": [ "int oci_lob_erase( [ int offset [, int length ] ] )", "Erases a specified portion of the internal LOB, starting at a specified offset" ], "oci_lob_export": [ "bool oci_lob_export([string filename [, int start [, int length]]])", "Writes a large object into a file" ], "oci_lob_flush": [ "bool oci_lob_flush( [ int flag ] )", "Flushes the LOB buffer" ], "oci_lob_import": [ "bool oci_lob_import( string filename )", "Loads file into a LOB" ], "oci_lob_is_equal": [ "bool oci_lob_is_equal( object lob1, object lob2 )", "Tests to see if two LOB/FILE locators are equal" ], "oci_lob_load": [ "string oci_lob_load()", "Loads a large object" ], "oci_lob_read": [ "string oci_lob_read( int length )", "Reads particular part of a large object" ], "oci_lob_rewind": [ "bool oci_lob_rewind()", "Rewind pointer of a LOB" ], "oci_lob_save": [ "bool oci_lob_save( string data [, int offset ])", "Saves a large object" ], "oci_lob_seek": [ "bool oci_lob_seek( int offset [, int whence ])", "Moves the pointer of a LOB" ], "oci_lob_size": [ "int oci_lob_size()", "Returns size of a large object" ], "oci_lob_tell": [ "int oci_lob_tell()", "Tells LOB pointer position" ], "oci_lob_truncate": [ "bool oci_lob_truncate( [ int length ])", "Truncates a LOB" ], "oci_lob_write": [ "int oci_lob_write( string string [, int length ])", "Writes data to current position of a LOB" ], "oci_lob_write_temporary": [ "bool oci_lob_write_temporary(string var [, int lob_type])", "Writes temporary blob" ], "oci_new_collection": [ "object oci_new_collection(resource connection, string tdo [, string schema])", "Initialize a new collection" ], "oci_new_connect": [ "resource oci_new_connect(string user, string pass [, string db])", "Connect to an Oracle database and log on. Returns a new session." ], "oci_new_cursor": [ "resource oci_new_cursor(resource connection)", "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!" ], "oci_new_descriptor": [ "object oci_new_descriptor(resource connection [, int type])", "Initialize a new empty descriptor LOB/FILE (LOB is default)" ], "oci_num_fields": [ "int oci_num_fields(resource stmt)", "Return the number of result columns in a statement" ], "oci_num_rows": [ "int oci_num_rows(resource stmt)", "Return the row count of an OCI statement" ], "oci_parse": [ "resource oci_parse(resource connection, string query)", "Parse a query and return a statement" ], "oci_password_change": [ "bool oci_password_change(resource connection, string username, string old_password, string new_password)", "Changes the password of an account" ], "oci_pconnect": [ "resource oci_pconnect(string user, string pass [, string db [, string charset ]])", "Connect to an Oracle database using a persistent connection and log on. Returns a new session." ], "oci_result": [ "string oci_result(resource stmt, mixed column)", "Return a single column of result data" ], "oci_rollback": [ "bool oci_rollback(resource connection)", "Rollback the current context" ], "oci_server_version": [ "string oci_server_version(resource connection)", "Return a string containing server version information" ], "oci_set_action": [ "bool oci_set_action(resource connection, string value)", "Sets the action attribute on the connection" ], "oci_set_client_identifier": [ "bool oci_set_client_identifier(resource connection, string value)", "Sets the client identifier attribute on the connection" ], "oci_set_client_info": [ "bool oci_set_client_info(resource connection, string value)", "Sets the client info attribute on the connection" ], "oci_set_edition": [ "bool oci_set_edition(string value)", "Sets the edition attribute for all subsequent connections created" ], "oci_set_module_name": [ "bool oci_set_module_name(resource connection, string value)", "Sets the module attribute on the connection" ], "oci_set_prefetch": [ "bool oci_set_prefetch(resource stmt, int prefetch_rows)", "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt" ], "oci_statement_type": [ "string oci_statement_type(resource stmt)", "Return the query type of an OCI statement" ], "ocifetchinto": [ "int ocifetchinto(resource stmt, array &output [, int mode])", "Fetch a row of result data into an array" ], "ocigetbufferinglob": [ "bool ocigetbufferinglob()", "Returns current state of buffering for a LOB" ], "ocisetbufferinglob": [ "bool ocisetbufferinglob( boolean flag )", "Enables/disables buffering for a LOB" ], "octdec": [ "int octdec(string octal_number)", "Returns the decimal equivalent of an octal string" ], "odbc_autocommit": [ "mixed odbc_autocommit(resource connection_id [, int OnOff])", "Toggle autocommit mode or get status" ], "odbc_binmode": [ "bool odbc_binmode(int result_id, int mode)", "Handle binary column data" ], "odbc_close": [ "void odbc_close(resource connection_id)", "Close an ODBC connection" ], "odbc_close_all": [ "void odbc_close_all(void)", "Close all ODBC connections" ], "odbc_columnprivileges": [ "resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table" ], "odbc_columns": [ "resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", "Returns a result identifier that can be used to fetch a list of column names in specified tables" ], "odbc_commit": [ "bool odbc_commit(resource connection_id)", "Commit an ODBC transaction" ], "odbc_connect": [ "resource odbc_connect(string DSN, string user, string password [, int cursor_option])", "Connect to a datasource" ], "odbc_cursor": [ "string odbc_cursor(resource result_id)", "Get cursor name" ], "odbc_data_source": [ "array odbc_data_source(resource connection_id, int fetch_type)", "Return information about the currently connected data source" ], "odbc_error": [ "string odbc_error([resource connection_id])", "Get the last error code" ], "odbc_errormsg": [ "string odbc_errormsg([resource connection_id])", "Get the last error message" ], "odbc_exec": [ "resource odbc_exec(resource connection_id, string query [, int flags])", "Prepare and execute an SQL statement" ], "odbc_execute": [ "bool odbc_execute(resource result_id [, array parameters_array])", "Execute a prepared statement" ], "odbc_fetch_array": [ "array odbc_fetch_array(int result [, int rownumber])", "Fetch a result row as an associative array" ], "odbc_fetch_into": [ "int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", "Fetch one result row into an array" ], "odbc_fetch_object": [ "object odbc_fetch_object(int result [, int rownumber])", "Fetch a result row as an object" ], "odbc_fetch_row": [ "bool odbc_fetch_row(resource result_id [, int row_number])", "Fetch a row" ], "odbc_field_len": [ "int odbc_field_len(resource result_id, int field_number)", "Get the length (precision) of a column" ], "odbc_field_name": [ "string odbc_field_name(resource result_id, int field_number)", "Get a column name" ], "odbc_field_num": [ "int odbc_field_num(resource result_id, string field_name)", "Return column number" ], "odbc_field_scale": [ "int odbc_field_scale(resource result_id, int field_number)", "Get the scale of a column" ], "odbc_field_type": [ "string odbc_field_type(resource result_id, int field_number)", "Get the datatype of a column" ], "odbc_foreignkeys": [ "resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table" ], "odbc_free_result": [ "bool odbc_free_result(resource result_id)", "Free resources associated with a result" ], "odbc_gettypeinfo": [ "resource odbc_gettypeinfo(resource connection_id [, int data_type])", "Returns a result identifier containing information about data types supported by the data source" ], "odbc_longreadlen": [ "bool odbc_longreadlen(int result_id, int length)", "Handle LONG columns" ], "odbc_next_result": [ "bool odbc_next_result(resource result_id)", "Checks if multiple results are avaiable" ], "odbc_num_fields": [ "int odbc_num_fields(resource result_id)", "Get number of columns in a result" ], "odbc_num_rows": [ "int odbc_num_rows(resource result_id)", "Get number of rows in a result" ], "odbc_pconnect": [ "resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", "Establish a persistent connection to a datasource" ], "odbc_prepare": [ "resource odbc_prepare(resource connection_id, string query)", "Prepares a statement for execution" ], "odbc_primarykeys": [ "resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", "Returns a result identifier listing the column names that comprise the primary key for a table" ], "odbc_procedurecolumns": [ "resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures" ], "odbc_procedures": [ "resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", "Returns a result identifier containg the list of procedure names in a datasource" ], "odbc_result": [ "mixed odbc_result(resource result_id, mixed field)", "Get result data" ], "odbc_result_all": [ "int odbc_result_all(resource result_id [, string format])", "Print result as HTML table" ], "odbc_rollback": [ "bool odbc_rollback(resource connection_id)", "Rollback a transaction" ], "odbc_setoption": [ "bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", "Sets connection or statement options" ], "odbc_specialcolumns": [ "resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction" ], "odbc_statistics": [ "resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", "Returns a result identifier that contains statistics about a single table and the indexes associated with the table" ], "odbc_tableprivileges": [ "resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", "Returns a result identifier containing a list of tables and the privileges associated with each table" ], "odbc_tables": [ "resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", "Call the SQLTables function" ], "opendir": [ "mixed opendir(string path[, resource context])", "Open a directory and return a dir_handle" ], "openlog": [ "bool openlog(string ident, int option, int facility)", "Open connection to system logger" ], "openssl_csr_export": [ "bool openssl_csr_export(resource csr, string &out [, bool notext=true])", "Exports a CSR to file or a var" ], "openssl_csr_export_to_file": [ "bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", "Exports a CSR to file" ], "openssl_csr_get_public_key": [ "mixed openssl_csr_get_public_key(mixed csr)", "Returns the subject of a CERT or FALSE on error" ], "openssl_csr_get_subject": [ "mixed openssl_csr_get_subject(mixed csr)", "Returns the subject of a CERT or FALSE on error" ], "openssl_csr_new": [ "bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", "Generates a privkey and CSR" ], "openssl_csr_sign": [ "resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", "Signs a cert with another CERT" ], "openssl_decrypt": [ "string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", "Takes raw or base64 encoded string and dectupt it using given method and key" ], "openssl_dh_compute_key": [ "string openssl_dh_compute_key(string pub_key, resource dh_key)", "Computes shared sicret for public value of remote DH key and local DH key" ], "openssl_digest": [ "string openssl_digest(string data, string method [, bool raw_output=false])", "Computes digest hash value for given data using given method, returns raw or binhex encoded string" ], "openssl_encrypt": [ "string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", "Encrypts given data with given method and key, returns raw or base64 encoded string" ], "openssl_error_string": [ "mixed openssl_error_string(void)", "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages" ], "openssl_get_cipher_methods": [ "array openssl_get_cipher_methods([bool aliases = false])", "Return array of available cipher methods" ], "openssl_get_md_methods": [ "array openssl_get_md_methods([bool aliases = false])", "Return array of available digest methods" ], "openssl_open": [ "bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", "Opens data" ], "openssl_pkcs12_export": [ "bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", "Creates and exports a PKCS12 to a var" ], "openssl_pkcs12_export_to_file": [ "bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", "Creates and exports a PKCS to file" ], "openssl_pkcs12_read": [ "bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", "Parses a PKCS12 to an array" ], "openssl_pkcs7_decrypt": [ "bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key" ], "openssl_pkcs7_encrypt": [ "bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile" ], "openssl_pkcs7_sign": [ "bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum" ], "openssl_pkcs7_verify": [ "bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers" ], "openssl_pkey_export": [ "bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", "Gets an exportable representation of a key into a string or file" ], "openssl_pkey_export_to_file": [ "bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", "Gets an exportable representation of a key into a file" ], "openssl_pkey_free": [ "void openssl_pkey_free(int key)", "Frees a key" ], "openssl_pkey_get_details": [ "resource openssl_pkey_get_details(resource key)", "returns an array with the key details (bits, pkey, type)" ], "openssl_pkey_get_private": [ "int openssl_pkey_get_private(string key [, string passphrase])", "Gets private keys" ], "openssl_pkey_get_public": [ "int openssl_pkey_get_public(mixed cert)", "Gets public key from X.509 certificate" ], "openssl_pkey_new": [ "resource openssl_pkey_new([array configargs])", "Generates a new private key" ], "openssl_private_decrypt": [ "bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", "Decrypts data with private key" ], "openssl_private_encrypt": [ "bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", "Encrypts data with private key" ], "openssl_public_decrypt": [ "bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", "Decrypts data with public key" ], "openssl_public_encrypt": [ "bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", "Encrypts data with public key" ], "openssl_random_pseudo_bytes": [ "string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", "Returns a string of the length specified filled with random pseudo bytes" ], "openssl_seal": [ "int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", "Seals data" ], "openssl_sign": [ "bool openssl_sign(string data, &string signature, mixed key[, mixed method])", "Signs data" ], "openssl_verify": [ "int openssl_verify(string data, string signature, mixed key[, mixed method])", "Verifys data" ], "openssl_x509_check_private_key": [ "bool openssl_x509_check_private_key(mixed cert, mixed key)", "Checks if a private key corresponds to a CERT" ], "openssl_x509_checkpurpose": [ "int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs" ], "openssl_x509_export": [ "bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", "Exports a CERT to file or a var" ], "openssl_x509_export_to_file": [ "bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", "Exports a CERT to file or a var" ], "openssl_x509_free": [ "void openssl_x509_free(resource x509)", "Frees X.509 certificates" ], "openssl_x509_parse": [ "array openssl_x509_parse(mixed x509 [, bool shortnames=true])", "Returns an array of the fields/values of the CERT" ], "openssl_x509_read": [ "resource openssl_x509_read(mixed cert)", "Reads X.509 certificates" ], "ord": [ "int ord(string character)", "Returns ASCII value of character" ], "output_add_rewrite_var": [ "bool output_add_rewrite_var(string name, string value)", "Add URL rewriter values" ], "output_reset_rewrite_vars": [ "bool output_reset_rewrite_vars(void)", "Reset(clear) URL rewriter values" ], "pack": [ "string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", "Takes one or more arguments and packs them into a binary string according to the format argument" ], "parse_ini_file": [ "array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", "Parse configuration file" ], "parse_ini_string": [ "array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", "Parse configuration string" ], "parse_locale": [ "static array parse_locale($locale)", "* parses a locale-id into an array the different parts of it" ], "parse_str": [ "void parse_str(string encoded_string [, array result])", "Parses GET/POST/COOKIE data and sets global variables" ], "parse_url": [ "mixed parse_url(string url, [int url_component])", "Parse a URL and return its components" ], "passthru": [ "void passthru(string command [, int &return_value])", "Execute an external program and display raw output" ], "pathinfo": [ "array pathinfo(string path[, int options])", "Returns information about a certain string" ], "pclose": [ "int pclose(resource fp)", "Close a file pointer opened by popen()" ], "pcnlt_sigwaitinfo": [ "int pcnlt_sigwaitinfo(array set[, array &siginfo])", "Synchronously wait for queued signals" ], "pcntl_alarm": [ "int pcntl_alarm(int seconds)", "Set an alarm clock for delivery of a signal" ], "pcntl_exec": [ "bool pcntl_exec(string path [, array args [, array envs]])", "Executes specified program in current process space as defined by exec(2)" ], "pcntl_fork": [ "int pcntl_fork(void)", "Forks the currently running process following the same behavior as the UNIX fork() system call" ], "pcntl_getpriority": [ "int pcntl_getpriority([int pid [, int process_identifier]])", "Get the priority of any process" ], "pcntl_setpriority": [ "bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", "Change the priority of any process" ], "pcntl_signal": [ "bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", "Assigns a system signal handler to a PHP function" ], "pcntl_signal_dispatch": [ "bool pcntl_signal_dispatch()", "Dispatch signals to signal handlers" ], "pcntl_sigprocmask": [ "bool pcntl_sigprocmask(int how, array set[, array &oldset])", "Examine and change blocked signals" ], "pcntl_sigtimedwait": [ "int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", "Wait for queued signals" ], "pcntl_wait": [ "int pcntl_wait(int &status)", "Waits on or returns the status of a forked child as defined by the waitpid() system call" ], "pcntl_waitpid": [ "int pcntl_waitpid(int pid, int &status, int options)", "Waits on or returns the status of a forked child as defined by the waitpid() system call" ], "pcntl_wexitstatus": [ "int pcntl_wexitstatus(int status)", "Returns the status code of a child's exit" ], "pcntl_wifexited": [ "bool pcntl_wifexited(int status)", "Returns true if the child status code represents a successful exit" ], "pcntl_wifsignaled": [ "bool pcntl_wifsignaled(int status)", "Returns true if the child status code represents a process that was terminated due to a signal" ], "pcntl_wifstopped": [ "bool pcntl_wifstopped(int status)", "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)" ], "pcntl_wstopsig": [ "int pcntl_wstopsig(int status)", "Returns the number of the signal that caused the process to stop who's status code is passed" ], "pcntl_wtermsig": [ "int pcntl_wtermsig(int status)", "Returns the number of the signal that terminated the process who's status code is passed" ], "pdo_drivers": [ "array pdo_drivers()", "Return array of available PDO drivers" ], "pfsockopen": [ "resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", "Open persistent Internet or Unix domain socket connection" ], "pg_affected_rows": [ "int pg_affected_rows(resource result)", "Returns the number of affected tuples" ], "pg_cancel_query": [ "bool pg_cancel_query(resource connection)", "Cancel request" ], "pg_client_encoding": [ "string pg_client_encoding([resource connection])", "Get the current client encoding" ], "pg_close": [ "bool pg_close([resource connection])", "Close a PostgreSQL connection" ], "pg_connect": [ "resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", "Open a PostgreSQL connection" ], "pg_connection_busy": [ "bool pg_connection_busy(resource connection)", "Get connection is busy or not" ], "pg_connection_reset": [ "bool pg_connection_reset(resource connection)", "Reset connection (reconnect)" ], "pg_connection_status": [ "int pg_connection_status(resource connnection)", "Get connection status" ], "pg_convert": [ "array pg_convert(resource db, string table, array values[, int options])", "Check and convert values for PostgreSQL SQL statement" ], "pg_copy_from": [ "bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", "Copy table from array" ], "pg_copy_to": [ "array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", "Copy table to array" ], "pg_dbname": [ "string pg_dbname([resource connection])", "Get the database name" ], "pg_delete": [ "mixed pg_delete(resource db, string table, array ids[, int options])", "Delete records has ids (id=>value)" ], "pg_end_copy": [ "bool pg_end_copy([resource connection])", "Sync with backend. Completes the Copy command" ], "pg_escape_bytea": [ "string pg_escape_bytea([resource connection,] string data)", "Escape binary for bytea type" ], "pg_escape_string": [ "string pg_escape_string([resource connection,] string data)", "Escape string for text/char type" ], "pg_execute": [ "resource pg_execute([resource connection,] string stmtname, array params)", "Execute a prepared query" ], "pg_fetch_all": [ "array pg_fetch_all(resource result)", "Fetch all rows into array" ], "pg_fetch_all_columns": [ "array pg_fetch_all_columns(resource result [, int column_number])", "Fetch all rows into array" ], "pg_fetch_array": [ "array pg_fetch_array(resource result [, int row [, int result_type]])", "Fetch a row as an array" ], "pg_fetch_assoc": [ "array pg_fetch_assoc(resource result [, int row])", "Fetch a row as an assoc array" ], "pg_fetch_object": [ "object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", "Fetch a row as an object" ], "pg_fetch_result": [ "mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", "Returns values from a result identifier" ], "pg_fetch_row": [ "array pg_fetch_row(resource result [, int row [, int result_type]])", "Get a row as an enumerated array" ], "pg_field_is_null": [ "int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", "Test if a field is NULL" ], "pg_field_name": [ "string pg_field_name(resource result, int field_number)", "Returns the name of the field" ], "pg_field_num": [ "int pg_field_num(resource result, string field_name)", "Returns the field number of the named field" ], "pg_field_prtlen": [ "int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", "Returns the printed length" ], "pg_field_size": [ "int pg_field_size(resource result, int field_number)", "Returns the internal size of the field" ], "pg_field_table": [ "mixed pg_field_table(resource result, int field_number[, bool oid_only])", "Returns the name of the table field belongs to, or table's oid if oid_only is true" ], "pg_field_type": [ "string pg_field_type(resource result, int field_number)", "Returns the type name for the given field" ], "pg_field_type_oid": [ "string pg_field_type_oid(resource result, int field_number)", "Returns the type oid for the given field" ], "pg_free_result": [ "bool pg_free_result(resource result)", "Free result memory" ], "pg_get_notify": [ "array pg_get_notify([resource connection[, result_type]])", "Get asynchronous notification" ], "pg_get_pid": [ "int pg_get_pid([resource connection)", "Get backend(server) pid" ], "pg_get_result": [ "resource pg_get_result(resource connection)", "Get asynchronous query result" ], "pg_host": [ "string pg_host([resource connection])", "Returns the host name associated with the connection" ], "pg_insert": [ "mixed pg_insert(resource db, string table, array values[, int options])", "Insert values (filed=>value) to table" ], "pg_last_error": [ "string pg_last_error([resource connection])", "Get the error message string" ], "pg_last_notice": [ "string pg_last_notice(resource connection)", "Returns the last notice set by the backend" ], "pg_last_oid": [ "string pg_last_oid(resource result)", "Returns the last object identifier" ], "pg_lo_close": [ "bool pg_lo_close(resource large_object)", "Close a large object" ], "pg_lo_create": [ "mixed pg_lo_create([resource connection],[mixed large_object_oid])", "Create a large object" ], "pg_lo_export": [ "bool pg_lo_export([resource connection, ] int objoid, string filename)", "Export large object direct to filesystem" ], "pg_lo_import": [ "int pg_lo_import([resource connection, ] string filename [, mixed oid])", "Import large object direct from filesystem" ], "pg_lo_open": [ "resource pg_lo_open([resource connection,] int large_object_oid, string mode)", "Open a large object and return fd" ], "pg_lo_read": [ "string pg_lo_read(resource large_object [, int len])", "Read a large object" ], "pg_lo_read_all": [ "int pg_lo_read_all(resource large_object)", "Read a large object and send straight to browser" ], "pg_lo_seek": [ "bool pg_lo_seek(resource large_object, int offset [, int whence])", "Seeks position of large object" ], "pg_lo_tell": [ "int pg_lo_tell(resource large_object)", "Returns current position of large object" ], "pg_lo_unlink": [ "bool pg_lo_unlink([resource connection,] string large_object_oid)", "Delete a large object" ], "pg_lo_write": [ "int pg_lo_write(resource large_object, string buf [, int len])", "Write a large object" ], "pg_meta_data": [ "array pg_meta_data(resource db, string table)", "Get meta_data" ], "pg_num_fields": [ "int pg_num_fields(resource result)", "Return the number of fields in the result" ], "pg_num_rows": [ "int pg_num_rows(resource result)", "Return the number of rows in the result" ], "pg_options": [ "string pg_options([resource connection])", "Get the options associated with the connection" ], "pg_parameter_status": [ "string|false pg_parameter_status([resource connection,] string param_name)", "Returns the value of a server parameter" ], "pg_pconnect": [ "resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", "Open a persistent PostgreSQL connection" ], "pg_ping": [ "bool pg_ping([resource connection])", "Ping database. If connection is bad, try to reconnect." ], "pg_port": [ "int pg_port([resource connection])", "Return the port number associated with the connection" ], "pg_prepare": [ "resource pg_prepare([resource connection,] string stmtname, string query)", "Prepare a query for future execution" ], "pg_put_line": [ "bool pg_put_line([resource connection,] string query)", "Send null-terminated string to backend server" ], "pg_query": [ "resource pg_query([resource connection,] string query)", "Execute a query" ], "pg_query_params": [ "resource pg_query_params([resource connection,] string query, array params)", "Execute a query" ], "pg_result_error": [ "string pg_result_error(resource result)", "Get error message associated with result" ], "pg_result_error_field": [ "string pg_result_error_field(resource result, int fieldcode)", "Get error message field associated with result" ], "pg_result_seek": [ "bool pg_result_seek(resource result, int offset)", "Set internal row offset" ], "pg_result_status": [ "mixed pg_result_status(resource result[, long result_type])", "Get status of query result" ], "pg_select": [ "mixed pg_select(resource db, string table, array ids[, int options])", "Select records that has ids (id=>value)" ], "pg_send_execute": [ "bool pg_send_execute(resource connection, string stmtname, array params)", "Executes prevriously prepared stmtname asynchronously" ], "pg_send_prepare": [ "bool pg_send_prepare(resource connection, string stmtname, string query)", "Asynchronously prepare a query for future execution" ], "pg_send_query": [ "bool pg_send_query(resource connection, string query)", "Send asynchronous query" ], "pg_send_query_params": [ "bool pg_send_query_params(resource connection, string query, array params)", "Send asynchronous parameterized query" ], "pg_set_client_encoding": [ "int pg_set_client_encoding([resource connection,] string encoding)", "Set client encoding" ], "pg_set_error_verbosity": [ "int pg_set_error_verbosity([resource connection,] int verbosity)", "Set error verbosity" ], "pg_trace": [ "bool pg_trace(string filename [, string mode [, resource connection]])", "Enable tracing a PostgreSQL connection" ], "pg_transaction_status": [ "int pg_transaction_status(resource connnection)", "Get transaction status" ], "pg_tty": [ "string pg_tty([resource connection])", "Return the tty name associated with the connection" ], "pg_unescape_bytea": [ "string pg_unescape_bytea(string data)", "Unescape binary for bytea type" ], "pg_untrace": [ "bool pg_untrace([resource connection])", "Disable tracing of a PostgreSQL connection" ], "pg_update": [ "mixed pg_update(resource db, string table, array fields, array ids[, int options])", "Update table using values (field=>value) and ids (id=>value)" ], "pg_version": [ "array pg_version([resource connection])", "Returns an array with client, protocol and server version (when available)" ], "php_egg_logo_guid": [ "string php_egg_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens" ], "php_ini_loaded_file": [ "string php_ini_loaded_file(void)", "Return the actual loaded ini filename" ], "php_ini_scanned_files": [ "string php_ini_scanned_files(void)", "Return comma-separated string of .ini files parsed from the additional ini dir" ], "php_logo_guid": [ "string php_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens" ], "php_real_logo_guid": [ "string php_real_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens" ], "php_sapi_name": [ "string php_sapi_name(void)", "Return the current SAPI module name" ], "php_snmpv3": [ "void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *" ], "php_strip_whitespace": [ "string php_strip_whitespace(string file_name)", "Return source with stripped comments and whitespace" ], "php_uname": [ "string php_uname(void)", "Return information about the system PHP was built on" ], "phpcredits": [ "void phpcredits([int flag])", "Prints the list of people who've contributed to the PHP project" ], "phpinfo": [ "void phpinfo([int what])", "Output a page of useful information about PHP and the current request" ], "phpversion": [ "string phpversion([string extension])", "Return the current PHP version" ], "pi": [ "float pi(void)", "Returns an approximation of pi" ], "png2wbmp": [ "bool png2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert PNG image to WBMP image" ], "popen": [ "resource popen(string command, string mode)", "Execute a command and open either a read or a write pipe to it" ], "posix_access": [ "bool posix_access(string file [, int mode])", "Determine accessibility of a file (POSIX.1 5.6.3)" ], "posix_ctermid": [ "string posix_ctermid(void)", "Generate terminal path name (POSIX.1, 4.7.1)" ], "posix_get_last_error": [ "int posix_get_last_error(void)", "Retrieve the error number set by the last posix function which failed." ], "posix_getcwd": [ "string posix_getcwd(void)", "Get working directory pathname (POSIX.1, 5.2.2)" ], "posix_getegid": [ "int posix_getegid(void)", "Get the current effective group id (POSIX.1, 4.2.1)" ], "posix_geteuid": [ "int posix_geteuid(void)", "Get the current effective user id (POSIX.1, 4.2.1)" ], "posix_getgid": [ "int posix_getgid(void)", "Get the current group id (POSIX.1, 4.2.1)" ], "posix_getgrgid": [ "array posix_getgrgid(long gid)", "Group database access (POSIX.1, 9.2.1)" ], "posix_getgrnam": [ "array posix_getgrnam(string groupname)", "Group database access (POSIX.1, 9.2.1)" ], "posix_getgroups": [ "array posix_getgroups(void)", "Get supplementary group id's (POSIX.1, 4.2.3)" ], "posix_getlogin": [ "string posix_getlogin(void)", "Get user name (POSIX.1, 4.2.4)" ], "posix_getpgid": [ "int posix_getpgid(void)", "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)" ], "posix_getpgrp": [ "int posix_getpgrp(void)", "Get current process group id (POSIX.1, 4.3.1)" ], "posix_getpid": [ "int posix_getpid(void)", "Get the current process id (POSIX.1, 4.1.1)" ], "posix_getppid": [ "int posix_getppid(void)", "Get the parent process id (POSIX.1, 4.1.1)" ], "posix_getpwnam": [ "array posix_getpwnam(string groupname)", "User database access (POSIX.1, 9.2.2)" ], "posix_getpwuid": [ "array posix_getpwuid(long uid)", "User database access (POSIX.1, 9.2.2)" ], "posix_getrlimit": [ "array posix_getrlimit(void)", "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)" ], "posix_getsid": [ "int posix_getsid(void)", "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)" ], "posix_getuid": [ "int posix_getuid(void)", "Get the current user id (POSIX.1, 4.2.1)" ], "posix_initgroups": [ "bool posix_initgroups(string name, int base_group_id)", "Calculate the group access list for the user specified in name." ], "posix_isatty": [ "bool posix_isatty(int fd)", "Determine if filedesc is a tty (POSIX.1, 4.7.1)" ], "posix_kill": [ "bool posix_kill(int pid, int sig)", "Send a signal to a process (POSIX.1, 3.3.2)" ], "posix_mkfifo": [ "bool posix_mkfifo(string pathname, int mode)", "Make a FIFO special file (POSIX.1, 5.4.2)" ], "posix_mknod": [ "bool posix_mknod(string pathname, int mode [, int major [, int minor]])", "Make a special or ordinary file (POSIX.1)" ], "posix_setegid": [ "bool posix_setegid(long uid)", "Set effective group id" ], "posix_seteuid": [ "bool posix_seteuid(long uid)", "Set effective user id" ], "posix_setgid": [ "bool posix_setgid(int uid)", "Set group id (POSIX.1, 4.2.2)" ], "posix_setpgid": [ "bool posix_setpgid(int pid, int pgid)", "Set process group id for job control (POSIX.1, 4.3.3)" ], "posix_setsid": [ "int posix_setsid(void)", "Create session and set process group id (POSIX.1, 4.3.2)" ], "posix_setuid": [ "bool posix_setuid(long uid)", "Set user id (POSIX.1, 4.2.2)" ], "posix_strerror": [ "string posix_strerror(int errno)", "Retrieve the system error message associated with the given errno." ], "posix_times": [ "array posix_times(void)", "Get process times (POSIX.1, 4.5.2)" ], "posix_ttyname": [ "string posix_ttyname(int fd)", "Determine terminal device name (POSIX.1, 4.7.2)" ], "posix_uname": [ "array posix_uname(void)", "Get system name (POSIX.1, 4.4.1)" ], "pow": [ "number pow(number base, number exponent)", "Returns base raised to the power of exponent. Returns integer result when possible" ], "preg_filter": [ "mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement and only return matches." ], "preg_grep": [ "array preg_grep(string regex, array input [, int flags])", "Searches array and returns entries which match regex" ], "preg_last_error": [ "int preg_last_error()", "Returns the error code of the last regexp execution." ], "preg_match": [ "int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", "Perform a Perl-style regular expression match" ], "preg_match_all": [ "int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", "Perform a Perl-style global regular expression match" ], "preg_quote": [ "string preg_quote(string str [, string delim_char])", "Quote regular expression characters plus an optional character" ], "preg_replace": [ "mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement." ], "preg_replace_callback": [ "mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement using replacement callback." ], "preg_split": [ "array preg_split(string pattern, string subject [, int limit [, int flags]])", "Split string into an array using a perl-style regular expression as a delimiter" ], "prev": [ "mixed prev(array array_arg)", "Move array argument's internal pointer to the previous element and return it" ], "print": [ "int print(string arg)", "Output a string" ], "print_r": [ "mixed print_r(mixed var [, bool return])", "Prints out or returns information about the specified variable" ], "printf": [ "int printf(string format [, mixed arg1 [, mixed ...]])", "Output a formatted string" ], "proc_close": [ "int proc_close(resource process)", "close a process opened by proc_open" ], "proc_get_status": [ "array proc_get_status(resource process)", "get information about a process opened by proc_open" ], "proc_nice": [ "bool proc_nice(int priority)", "Change the priority of the current process" ], "proc_open": [ "resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", "Run a process with more control over it's file descriptors" ], "proc_terminate": [ "bool proc_terminate(resource process [, long signal])", "kill a process opened by proc_open" ], "property_exists": [ "bool property_exists(mixed object_or_class, string property_name)", "Checks if the object or class has a property" ], "pspell_add_to_personal": [ "bool pspell_add_to_personal(int pspell, string word)", "Adds a word to a personal list" ], "pspell_add_to_session": [ "bool pspell_add_to_session(int pspell, string word)", "Adds a word to the current session" ], "pspell_check": [ "bool pspell_check(int pspell, string word)", "Returns true if word is valid" ], "pspell_clear_session": [ "bool pspell_clear_session(int pspell)", "Clears the current session" ], "pspell_config_create": [ "int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", "Create a new config to be used later to create a manager" ], "pspell_config_data_dir": [ "bool pspell_config_data_dir(int conf, string directory)", "location of language data files" ], "pspell_config_dict_dir": [ "bool pspell_config_dict_dir(int conf, string directory)", "location of the main word list" ], "pspell_config_ignore": [ "bool pspell_config_ignore(int conf, int ignore)", "Ignore words <= n chars" ], "pspell_config_mode": [ "bool pspell_config_mode(int conf, long mode)", "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)" ], "pspell_config_personal": [ "bool pspell_config_personal(int conf, string personal)", "Use a personal dictionary for this config" ], "pspell_config_repl": [ "bool pspell_config_repl(int conf, string repl)", "Use a personal dictionary with replacement pairs for this config" ], "pspell_config_runtogether": [ "bool pspell_config_runtogether(int conf, bool runtogether)", "Consider run-together words as valid components" ], "pspell_config_save_repl": [ "bool pspell_config_save_repl(int conf, bool save)", "Save replacement pairs when personal list is saved for this config" ], "pspell_new": [ "int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", "Load a dictionary" ], "pspell_new_config": [ "int pspell_new_config(int config)", "Load a dictionary based on the given config" ], "pspell_new_personal": [ "int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", "Load a dictionary with a personal wordlist" ], "pspell_save_wordlist": [ "bool pspell_save_wordlist(int pspell)", "Saves the current (personal) wordlist" ], "pspell_store_replacement": [ "bool pspell_store_replacement(int pspell, string misspell, string correct)", "Notify the dictionary of a user-selected replacement" ], "pspell_suggest": [ "array pspell_suggest(int pspell, string word)", "Returns array of suggestions" ], "putenv": [ "bool putenv(string setting)", "Set the value of an environment variable" ], "quoted_printable_decode": [ "string quoted_printable_decode(string str)", "Convert a quoted-printable string to an 8 bit string" ], "quoted_printable_encode": [ "string quoted_printable_encode(string str) */", "PHP_FUNCTION(quoted_printable_encode) { char *str, *new_str; int str_len; size_t new_str_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"s\", &str, &str_len) != SUCCESS) { return; } if (!str_len) { RETURN_EMPTY_STRING(); } new_str = (char *)php_quot_print_encode((unsigned char *)str, (size_t)str_len, &new_str_len); RETURN_STRINGL(new_str, new_str_len, 0); } /* }}}" ], "quotemeta": [ "string quotemeta(string str)", "Quotes meta characters" ], "rad2deg": [ "float rad2deg(float number)", "Converts the radian number to the equivalent number in degrees" ], "rand": [ "int rand([int min, int max])", "Returns a random number" ], "range": [ "array range(mixed low, mixed high[, int step])", "Create an array containing the range of integers or characters from low to high (inclusive)" ], "rawurldecode": [ "string rawurldecode(string str)", "Decodes URL-encodes string" ], "rawurlencode": [ "string rawurlencode(string str)", "URL-encodes string" ], "readdir": [ "string readdir([resource dir_handle])", "Read directory entry from dir_handle" ], "readfile": [ "int readfile(string filename [, bool use_include_path[, resource context]])", "Output a file or a URL" ], "readgzfile": [ "int readgzfile(string filename [, int use_include_path])", "Output a .gz-file" ], "readline": [ "string readline([string prompt])", "Reads a line" ], "readline_add_history": [ "bool readline_add_history(string prompt)", "Adds a line to the history" ], "readline_callback_handler_install": [ "void readline_callback_handler_install(string prompt, mixed callback)", "Initializes the readline callback interface and terminal, prints the prompt and returns immediately" ], "readline_callback_handler_remove": [ "bool readline_callback_handler_remove()", "Removes a previously installed callback handler and restores terminal settings" ], "readline_callback_read_char": [ "void readline_callback_read_char()", "Informs the readline callback interface that a character is ready for input" ], "readline_clear_history": [ "bool readline_clear_history(void)", "Clears the history" ], "readline_completion_function": [ "bool readline_completion_function(string funcname)", "Readline completion function?" ], "readline_info": [ "mixed readline_info([string varname [, string newvalue]])", "Gets/sets various internal readline variables." ], "readline_list_history": [ "array readline_list_history(void)", "Lists the history" ], "readline_on_new_line": [ "void readline_on_new_line(void)", "Inform readline that the cursor has moved to a new line" ], "readline_read_history": [ "bool readline_read_history([string filename])", "Reads the history" ], "readline_redisplay": [ "void readline_redisplay(void)", "Ask readline to redraw the display" ], "readline_write_history": [ "bool readline_write_history([string filename])", "Writes the history" ], "readlink": [ "string readlink(string filename)", "Return the target of a symbolic link" ], "realpath": [ "string realpath(string path)", "Return the resolved path" ], "realpath_cache_get": [ "bool realpath_cache_get()", "Get current size of realpath cache" ], "realpath_cache_size": [ "bool realpath_cache_size()", "Get current size of realpath cache" ], "recode_file": [ "bool recode_file(string request, resource input, resource output)", "Recode file input into file output according to request" ], "recode_string": [ "string recode_string(string request, string str)", "Recode string str according to request string" ], "register_shutdown_function": [ "void register_shutdown_function(string function_name)", "Register a user-level function to be called on request termination" ], "register_tick_function": [ "bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", "Registers a tick callback function" ], "rename": [ "bool rename(string old_name, string new_name[, resource context])", "Rename a file" ], "require": [ "bool acequire(string path)", "Includes and evaluates the specified file, erroring if the file cannot be included" ], "acequire_once": [ "bool acequire_once(string path)", "Includes and evaluates the specified file, erroring if the file cannot be included" ], "reset": [ "mixed reset(array array_arg)", "Set array argument's internal pointer to the first element and return it" ], "restore_error_handler": [ "void restore_error_handler(void)", "Restores the previously defined error handler function" ], "restore_exception_handler": [ "void restore_exception_handler(void)", "Restores the previously defined exception handler function" ], "restore_include_path": [ "void restore_include_path()", "Restore the value of the include_path configuration option" ], "rewind": [ "bool rewind(resource fp)", "Rewind the position of a file pointer" ], "rewinddir": [ "void rewinddir([resource dir_handle])", "Rewind dir_handle back to the start" ], "rmdir": [ "bool rmdir(string dirname[, resource context])", "Remove a directory" ], "round": [ "float round(float number [, int precision [, int mode]])", "Returns the number rounded to specified precision" ], "rsort": [ "bool rsort(array &array_arg [, int sort_flags])", "Sort an array in reverse order" ], "rtrim": [ "string rtrim(string str [, string character_mask])", "Removes trailing whitespace" ], "scandir": [ "array scandir(string dir [, int sorting_order [, resource context]])", "List files & directories inside the specified path" ], "sem_acquire": [ "bool sem_acquire(resource id)", "Acquires the semaphore with the given id, blocking if necessary" ], "sem_get": [ "resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously" ], "sem_release": [ "bool sem_release(resource id)", "Releases the semaphore with the given id" ], "sem_remove": [ "bool sem_remove(resource id)", "Removes semaphore from Unix systems" ], "serialize": [ "string serialize(mixed variable)", "Returns a string representation of variable (which can later be unserialized)" ], "session_cache_expire": [ "int session_cache_expire([int new_cache_expire])", "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire" ], "session_cache_limiter": [ "string session_cache_limiter([string new_cache_limiter])", "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter" ], "session_decode": [ "bool session_decode(string data)", "Deserializes data and reinitializes the variables" ], "session_destroy": [ "bool session_destroy(void)", "Destroy the current session and all data associated with it" ], "session_encode": [ "string session_encode(void)", "Serializes the current setup and returns the serialized representation" ], "session_get_cookie_params": [ "array session_get_cookie_params(void)", "Return the session cookie parameters" ], "session_id": [ "string session_id([string newid])", "Return the current session id. If newid is given, the session id is replaced with newid" ], "session_is_registered": [ "bool session_is_registered(string varname)", "Checks if a variable is registered in session" ], "session_module_name": [ "string session_module_name([string newname])", "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname" ], "session_name": [ "string session_name([string newname])", "Return the current session name. If newname is given, the session name is replaced with newname" ], "session_regenerate_id": [ "bool session_regenerate_id([bool delete_old_session])", "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session." ], "session_register": [ "bool session_register(mixed var_names [, mixed ...])", "Adds varname(s) to the list of variables which are freezed at the session end" ], "session_save_path": [ "string session_save_path([string newname])", "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname" ], "session_set_cookie_params": [ "void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", "Set session cookie parameters" ], "session_set_save_handler": [ "void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", "Sets user-level functions" ], "session_start": [ "bool session_start(void)", "Begin session - reinitializes freezed variables, registers browsers etc" ], "session_unregister": [ "bool session_unregister(string varname)", "Removes varname from the list of variables which are freezed at the session end" ], "session_unset": [ "void session_unset(void)", "Unset all registered variables" ], "session_write_close": [ "void session_write_close(void)", "Write session data and end session" ], "set_error_handler": [ "string set_error_handler(string error_handler [, int error_types])", "Sets a user-defined error handler function. Returns the previously defined error handler, or false on error" ], "set_exception_handler": [ "string set_exception_handler(callable exception_handler)", "Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error" ], "set_include_path": [ "string set_include_path(string new_include_path)", "Sets the include_path configuration option" ], "set_magic_quotes_runtime": [ "bool set_magic_quotes_runtime(int new_setting)", "Set the current active configuration setting of magic_quotes_runtime and return previous" ], "set_time_limit": [ "bool set_time_limit(int seconds)", "Sets the maximum time a script can run" ], "setcookie": [ "bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", "Send a cookie" ], "setlocale": [ "string setlocale(mixed category, string locale [, string ...])", "Set locale information" ], "setrawcookie": [ "bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", "Send a cookie with no url encoding of the value" ], "settype": [ "bool settype(mixed var, string type)", "Set the type of the variable" ], "sha1": [ "string sha1(string str [, bool raw_output])", "Calculate the sha1 hash of a string" ], "sha1_file": [ "string sha1_file(string filename [, bool raw_output])", "Calculate the sha1 hash of given filename" ], "shell_exec": [ "string shell_exec(string cmd)", "Execute command via shell and return complete output as string" ], "shm_attach": [ "int shm_attach(int key [, int memsize [, int perm]])", "Creates or open a shared memory segment" ], "shm_detach": [ "bool shm_detach(resource shm_identifier)", "Disconnects from shared memory segment" ], "shm_get_var": [ "mixed shm_get_var(resource id, int variable_key)", "Returns a variable from shared memory" ], "shm_has_var": [ "bool shm_has_var(resource id, int variable_key)", "Checks whether a specific entry exists" ], "shm_put_var": [ "bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", "Inserts or updates a variable in shared memory" ], "shm_remove": [ "bool shm_remove(resource shm_identifier)", "Removes shared memory from Unix systems" ], "shm_remove_var": [ "bool shm_remove_var(resource id, int variable_key)", "Removes variable from shared memory" ], "shmop_close": [ "void shmop_close (int shmid)", "closes a shared memory segment" ], "shmop_delete": [ "bool shmop_delete (int shmid)", "mark segment for deletion" ], "shmop_open": [ "int shmop_open (int key, string flags, int mode, int size)", "gets and attaches a shared memory segment" ], "shmop_read": [ "string shmop_read (int shmid, int start, int count)", "reads from a shm segment" ], "shmop_size": [ "int shmop_size (int shmid)", "returns the shm size" ], "shmop_write": [ "int shmop_write (int shmid, string data, int offset)", "writes to a shared memory segment" ], "shuffle": [ "bool shuffle(array array_arg)", "Randomly shuffle the contents of an array" ], "similar_text": [ "int similar_text(string str1, string str2 [, float percent])", "Calculates the similarity between two strings" ], "simplexml_import_dom": [ "simplemxml_element simplexml_import_dom(domNode node [, string class_name])", "Get a simplexml_element object from dom to allow for processing" ], "simplexml_load_file": [ "simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", "Load a filename and return a simplexml_element object to allow for processing" ], "simplexml_load_string": [ "simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", "Load a string and return a simplexml_element object to allow for processing" ], "sin": [ "float sin(float number)", "Returns the sine of the number in radians" ], "sinh": [ "float sinh(float number)", "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2" ], "sleep": [ "void sleep(int seconds)", "Delay for a given number of seconds" ], "smfi_addheader": [ "bool smfi_addheader(string headerf, string headerv)", "Adds a header to the current message." ], "smfi_addrcpt": [ "bool smfi_addrcpt(string rcpt)", "Add a recipient to the message envelope." ], "smfi_chgheader": [ "bool smfi_chgheader(string headerf, string headerv)", "Changes a header's value for the current message." ], "smfi_delrcpt": [ "bool smfi_delrcpt(string rcpt)", "Removes the named recipient from the current message's envelope." ], "smfi_getsymval": [ "string smfi_getsymval(string macro)", "Returns the value of the given macro or NULL if the macro is not defined." ], "smfi_replacebody": [ "bool smfi_replacebody(string body)", "Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body." ], "smfi_setflags": [ "void smfi_setflags(long flags)", "Sets the flags describing the actions the filter may take." ], "smfi_setreply": [ "bool smfi_setreply(string rcode, string xcode, string message)", "Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter." ], "smfi_settimeout": [ "void smfi_settimeout(long timeout)", "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket." ], "snmp2_get": [ "string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object" ], "snmp2_getnext": [ "string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object" ], "snmp2_real_walk": [ "array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects including their respective object id withing the specified one" ], "snmp2_set": [ "int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", "Set the value of a SNMP object" ], "snmp2_walk": [ "array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects under the specified object id" ], "snmp3_get": [ "int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object" ], "snmp3_getnext": [ "int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object" ], "snmp3_real_walk": [ "int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object" ], "snmp3_set": [ "int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", "Fetch the value of a SNMP object" ], "snmp3_walk": [ "int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object" ], "snmp_get_quick_print": [ "bool snmp_get_quick_print(void)", "Return the current status of quick_print" ], "snmp_get_valueretrieval": [ "int snmp_get_valueretrieval()", "Return the method how the SNMP values will be returned" ], "snmp_read_mib": [ "int snmp_read_mib(string filename)", "Reads and parses a MIB file into the active MIB tree." ], "snmp_set_enum_print": [ "void snmp_set_enum_print(int enum_print)", "Return all values that are enums with their enum value instead of the raw integer" ], "snmp_set_oid_output_format": [ "void snmp_set_oid_output_format(int oid_format)", "Set the OID output format." ], "snmp_set_quick_print": [ "void snmp_set_quick_print(int quick_print)", "Return all objects including their respective object id withing the specified one" ], "snmp_set_valueretrieval": [ "void snmp_set_valueretrieval(int method)", "Specify the method how the SNMP values will be returned" ], "snmpget": [ "string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object" ], "snmpgetnext": [ "string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object" ], "snmprealwalk": [ "array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects including their respective object id withing the specified one" ], "snmpset": [ "int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", "Set the value of a SNMP object" ], "snmpwalk": [ "array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects under the specified object id" ], "socket_accept": [ "resource socket_accept(resource socket)", "Accepts a connection on the listening socket fd" ], "socket_bind": [ "bool socket_bind(resource socket, string addr [, int port])", "Binds an open socket to a listening port, port is only specified in AF_INET family." ], "socket_clear_error": [ "void socket_clear_error([resource socket])", "Clears the error on the socket or the last error code." ], "socket_close": [ "void socket_close(resource socket)", "Closes a file descriptor" ], "socket_connect": [ "bool socket_connect(resource socket, string addr [, int port])", "Opens a connection to addr:port on the socket specified by socket" ], "socket_create": [ "resource socket_create(int domain, int type, int protocol)", "Creates an endpoint for communication in the domain specified by domain, of type specified by type" ], "socket_create_listen": [ "resource socket_create_listen(int port[, int backlog])", "Opens a socket on port to accept connections" ], "socket_create_pair": [ "bool socket_create_pair(int domain, int type, int protocol, array &fd)", "Creates a pair of indistinguishable sockets and stores them in fds." ], "socket_get_option": [ "mixed socket_get_option(resource socket, int level, int optname)", "Gets socket options for the socket" ], "socket_getpeername": [ "bool socket_getpeername(resource socket, string &addr[, int &port])", "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." ], "socket_getsockname": [ "bool socket_getsockname(resource socket, string &addr[, int &port])", "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." ], "socket_last_error": [ "int socket_last_error([resource socket])", "Returns the last socket error (either the last used or the provided socket resource)" ], "socket_listen": [ "bool socket_listen(resource socket[, int backlog])", "Sets the maximum number of connections allowed to be waited for on the socket specified by fd" ], "socket_read": [ "string socket_read(resource socket, int length [, int type])", "Reads a maximum of length bytes from socket" ], "socket_recv": [ "int socket_recv(resource socket, string &buf, int len, int flags)", "Receives data from a connected socket" ], "socket_recvfrom": [ "int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", "Receives data from a socket, connected or not" ], "socket_select": [ "int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec" ], "socket_send": [ "int socket_send(resource socket, string buf, int len, int flags)", "Sends data to a connected socket" ], "socket_sendto": [ "int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", "Sends a message to a socket, whether it is connected or not" ], "socket_set_block": [ "bool socket_set_block(resource socket)", "Sets blocking mode on a socket resource" ], "socket_set_nonblock": [ "bool socket_set_nonblock(resource socket)", "Sets nonblocking mode on a socket resource" ], "socket_set_option": [ "bool socket_set_option(resource socket, int level, int optname, int|array optval)", "Sets socket options for the socket" ], "socket_shutdown": [ "bool socket_shutdown(resource socket[, int how])", "Shuts down a socket for receiving, sending, or both." ], "socket_strerror": [ "string socket_strerror(int errno)", "Returns a string describing an error" ], "socket_write": [ "int socket_write(resource socket, string buf[, int length])", "Writes the buffer to the socket resource, length is optional" ], "solid_fetch_prev": [ "bool solid_fetch_prev(resource result_id)", "" ], "sort": [ "bool sort(array &array_arg [, int sort_flags])", "Sort an array" ], "soundex": [ "string soundex(string str)", "Calculate the soundex key of a string" ], "spl_autoload": [ "void spl_autoload(string class_name [, string file_extensions])", "Default implementation for __autoload()" ], "spl_autoload_call": [ "void spl_autoload_call(string class_name)", "Try all registerd autoload function to load the requested class" ], "spl_autoload_extensions": [ "string spl_autoload_extensions([string file_extensions])", "Register and return default file extensions for spl_autoload" ], "spl_autoload_functions": [ "false|array spl_autoload_functions()", "Return all registered __autoload() functionns" ], "spl_autoload_register": [ "bool spl_autoload_register([mixed autoload_function = \"spl_autoload\" [, throw = true [, prepend]]])", "Register given function as __autoload() implementation" ], "spl_autoload_unregister": [ "bool spl_autoload_unregister(mixed autoload_function)", "Unregister given function as __autoload() implementation" ], "spl_classes": [ "array spl_classes()", "Return an array containing the names of all clsses and interfaces defined in SPL" ], "spl_object_hash": [ "string spl_object_hash(object obj)", "Return hash id for given object" ], "split": [ "array split(string pattern, string string [, int limit])", "Split string into array by regular expression" ], "spliti": [ "array spliti(string pattern, string string [, int limit])", "Split string into array by regular expression case-insensitive" ], "sprintf": [ "string sprintf(string format [, mixed arg1 [, mixed ...]])", "Return a formatted string" ], "sql_regcase": [ "string sql_regcase(string string)", "Make regular expression for case insensitive match" ], "sqlite_array_query": [ "array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", "Executes a query against a given database and returns an array of arrays." ], "sqlite_busy_timeout": [ "void sqlite_busy_timeout(resource db, int ms)", "Set busy timeout duration. If ms <= 0, all busy handlers are disabled." ], "sqlite_changes": [ "int sqlite_changes(resource db)", "Returns the number of rows that were changed by the most recent SQL statement." ], "sqlite_close": [ "void sqlite_close(resource db)", "Closes an open sqlite database." ], "sqlite_column": [ "mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", "Fetches a column from the current row of a result set." ], "sqlite_create_aggregate": [ "bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", "Registers an aggregate function for queries." ], "sqlite_create_function": [ "bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", "Registers a \"regular\" function for queries." ], "sqlite_current": [ "array sqlite_current(resource result [, int result_type [, bool decode_binary]])", "Fetches the current row from a result set as an array." ], "sqlite_error_string": [ "string sqlite_error_string(int error_code)", "Returns the textual description of an error code." ], "sqlite_escape_string": [ "string sqlite_escape_string(string item)", "Escapes a string for use as a query parameter." ], "sqlite_exec": [ "boolean sqlite_exec(string query, resource db[, string &error_message])", "Executes a result-less query against a given database" ], "sqlite_factory": [ "object sqlite_factory(string filename [, int mode [, string &error_message]])", "Opens a SQLite database and creates an object for it. Will create the database if it does not exist." ], "sqlite_fetch_all": [ "array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", "Fetches all rows from a result set as an array of arrays." ], "sqlite_fetch_array": [ "array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", "Fetches the next row from a result set as an array." ], "sqlite_fetch_column_types": [ "resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", "Return an array of column types from a particular table." ], "sqlite_fetch_object": [ "object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", "Fetches the next row from a result set as an object." ], "sqlite_fetch_single": [ "string sqlite_fetch_single(resource result [, bool decode_binary])", "Fetches the first column of a result set as a string." ], "sqlite_field_name": [ "string sqlite_field_name(resource result, int field_index)", "Returns the name of a particular field of a result set." ], "sqlite_has_prev": [ "bool sqlite_has_prev(resource result)", "* Returns whether a previous row is available." ], "sqlite_key": [ "int sqlite_key(resource result)", "Return the current row index of a buffered result." ], "sqlite_last_error": [ "int sqlite_last_error(resource db)", "Returns the error code of the last error for a database." ], "sqlite_last_insert_rowid": [ "int sqlite_last_insert_rowid(resource db)", "Returns the rowid of the most recently inserted row." ], "sqlite_libencoding": [ "string sqlite_libencoding()", "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library." ], "sqlite_libversion": [ "string sqlite_libversion()", "Returns the version of the linked SQLite library." ], "sqlite_next": [ "bool sqlite_next(resource result)", "Seek to the next row number of a result set." ], "sqlite_num_fields": [ "int sqlite_num_fields(resource result)", "Returns the number of fields in a result set." ], "sqlite_num_rows": [ "int sqlite_num_rows(resource result)", "Returns the number of rows in a buffered result set." ], "sqlite_open": [ "resource sqlite_open(string filename [, int mode [, string &error_message]])", "Opens a SQLite database. Will create the database if it does not exist." ], "sqlite_popen": [ "resource sqlite_popen(string filename [, int mode [, string &error_message]])", "Opens a persistent handle to a SQLite database. Will create the database if it does not exist." ], "sqlite_prev": [ "bool sqlite_prev(resource result)", "* Seek to the previous row number of a result set." ], "sqlite_query": [ "resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", "Executes a query against a given database and returns a result handle." ], "sqlite_rewind": [ "bool sqlite_rewind(resource result)", "Seek to the first row number of a buffered result set." ], "sqlite_seek": [ "bool sqlite_seek(resource result, int row)", "Seek to a particular row number of a buffered result set." ], "sqlite_single_query": [ "array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", "Executes a query and returns either an array for one single column or the value of the first row." ], "sqlite_udf_decode_binary": [ "string sqlite_udf_decode_binary(string data)", "Decode binary encoding on a string parameter passed to an UDF." ], "sqlite_udf_encode_binary": [ "string sqlite_udf_encode_binary(string data)", "Apply binary encoding (if acequired) to a string to return from an UDF." ], "sqlite_unbuffered_query": [ "resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", "Executes a query that does not prefetch and buffer all data." ], "sqlite_valid": [ "bool sqlite_valid(resource result)", "Returns whether more rows are available." ], "sqrt": [ "float sqrt(float number)", "Returns the square root of the number" ], "srand": [ "void srand([int seed])", "Seeds random number generator" ], "sscanf": [ "mixed sscanf(string str, string format [, string ...])", "Implements an ANSI C compatible sscanf" ], "stat": [ "array stat(string filename)", "Give information about a file" ], "str_getcsv": [ "array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", "Parse a CSV string into an array" ], "str_ireplace": [ "mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", "Replaces all occurrences of search in haystack with replace / case-insensitive" ], "str_pad": [ "string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", "Returns input string padded on the left or right to specified length with pad_string" ], "str_repeat": [ "string str_repeat(string input, int mult)", "Returns the input string repeat mult times" ], "str_replace": [ "mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", "Replaces all occurrences of search in haystack with replace" ], "str_rot13": [ "string str_rot13(string str)", "Perform the rot13 transform on a string" ], "str_shuffle": [ "void str_shuffle(string str)", "Shuffles string. One permutation of all possible is created" ], "str_split": [ "array str_split(string str [, int split_length])", "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long." ], "str_word_count": [ "mixed str_word_count(string str, [int format [, string charlist]])", "Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \"'\" and \"-\" characters." ], "strcasecmp": [ "int strcasecmp(string str1, string str2)", "Binary safe case-insensitive string comparison" ], "strchr": [ "string strchr(string haystack, string needle)", "An alias for strstr" ], "strcmp": [ "int strcmp(string str1, string str2)", "Binary safe string comparison" ], "strcoll": [ "int strcoll(string str1, string str2)", "Compares two strings using the current locale" ], "strcspn": [ "int strcspn(string str, string mask [, start [, len]])", "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)" ], "stream_bucket_append": [ "void stream_bucket_append(resource brigade, resource bucket)", "Append bucket to brigade" ], "stream_bucket_make_writeable": [ "object stream_bucket_make_writeable(resource brigade)", "Return a bucket object from the brigade for operating on" ], "stream_bucket_new": [ "resource stream_bucket_new(resource stream, string buffer)", "Create a new bucket for use on the current stream" ], "stream_bucket_prepend": [ "void stream_bucket_prepend(resource brigade, resource bucket)", "Prepend bucket to brigade" ], "stream_context_create": [ "resource stream_context_create([array options[, array params]])", "Create a file context and optionally set parameters" ], "stream_context_get_default": [ "resource stream_context_get_default([array options])", "Get a handle on the default file/stream context and optionally set parameters" ], "stream_context_get_options": [ "array stream_context_get_options(resource context|resource stream)", "Retrieve options for a stream/wrapper/context" ], "stream_context_get_params": [ "array stream_context_get_params(resource context|resource stream)", "Get parameters of a file context" ], "stream_context_set_default": [ "resource stream_context_set_default(array options)", "Set default file/stream context, returns the context as a resource" ], "stream_context_set_option": [ "bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", "Set an option for a wrapper" ], "stream_context_set_params": [ "bool stream_context_set_params(resource context|resource stream, array options)", "Set parameters for a file context" ], "stream_copy_to_stream": [ "long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", "Reads up to maxlen bytes from source stream and writes them to dest stream." ], "stream_filter_append": [ "resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", "Append a filter to a stream" ], "stream_filter_prepend": [ "resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", "Prepend a filter to a stream" ], "stream_filter_register": [ "bool stream_filter_register(string filtername, string classname)", "Registers a custom filter handler class" ], "stream_filter_remove": [ "bool stream_filter_remove(resource stream_filter)", "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource" ], "stream_get_contents": [ "string stream_get_contents(resource source [, long maxlen [, long offset]])", "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string." ], "stream_get_filters": [ "array stream_get_filters(void)", "Returns a list of registered filters" ], "stream_get_line": [ "string stream_get_line(resource stream, int maxlen [, string ending])", "Read up to maxlen bytes from a stream or until the ending string is found" ], "stream_get_meta_data": [ "array stream_get_meta_data(resource fp)", "Retrieves header/meta data from streams/file pointers" ], "stream_get_transports": [ "array stream_get_transports()", "Retrieves list of registered socket transports" ], "stream_get_wrappers": [ "array stream_get_wrappers()", "Retrieves list of registered stream wrappers" ], "stream_is_local": [ "bool stream_is_local(resource stream|string url)", "" ], "stream_resolve_include_path": [ "string stream_resolve_include_path(string filename)", "Determine what file will be opened by calls to fopen() with a relative path" ], "stream_select": [ "int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec" ], "stream_set_blocking": [ "bool stream_set_blocking(resource socket, int mode)", "Set blocking/non-blocking mode on a socket or stream" ], "stream_set_timeout": [ "bool stream_set_timeout(resource stream, int seconds [, int microseconds])", "Set timeout on stream read to seconds + microseonds" ], "stream_set_write_buffer": [ "int stream_set_write_buffer(resource fp, int buffer)", "Set file write buffer" ], "stream_socket_accept": [ "resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", "Accept a client connection from a server socket" ], "stream_socket_client": [ "resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", "Open a client connection to a remote address" ], "stream_socket_enable_crypto": [ "int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", "Enable or disable a specific kind of crypto on the stream" ], "stream_socket_get_name": [ "string stream_socket_get_name(resource stream, bool want_peer)", "Returns either the locally bound or remote name for a socket stream" ], "stream_socket_pair": [ "array stream_socket_pair(int domain, int type, int protocol)", "Creates a pair of connected, indistinguishable socket streams" ], "stream_socket_recvfrom": [ "string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", "Receives data from a socket stream" ], "stream_socket_sendto": [ "long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", "Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format" ], "stream_socket_server": [ "resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", "Create a server socket bound to localaddress" ], "stream_socket_shutdown": [ "int stream_socket_shutdown(resource stream, int how)", "causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed." ], "stream_supports_lock": [ "bool stream_supports_lock(resource stream)", "Tells wether the stream supports locking through flock()." ], "stream_wrapper_register": [ "bool stream_wrapper_register(string protocol, string classname[, integer flags])", "Registers a custom URL protocol handler class" ], "stream_wrapper_restore": [ "bool stream_wrapper_restore(string protocol)", "Restore the original protocol handler, overriding if necessary" ], "stream_wrapper_unregister": [ "bool stream_wrapper_unregister(string protocol)", "Unregister a wrapper for the life of the current request." ], "strftime": [ "string strftime(string format [, int timestamp])", "Format a local time/date according to locale settings" ], "strip_tags": [ "string strip_tags(string str [, string allowable_tags])", "Strips HTML and PHP tags from a string" ], "stripcslashes": [ "string stripcslashes(string str)", "Strips backslashes from a string. Uses C-style conventions" ], "stripos": [ "int stripos(string haystack, string needle [, int offset])", "Finds position of first occurrence of a string within another, case insensitive" ], "stripslashes": [ "string stripslashes(string str)", "Strips backslashes from a string" ], "stristr": [ "string stristr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another, case insensitive" ], "strlen": [ "int strlen(string str)", "Get string length" ], "strnatcasecmp": [ "int strnatcasecmp(string s1, string s2)", "Returns the result of case-insensitive string comparison using 'natural' algorithm" ], "strnatcmp": [ "int strnatcmp(string s1, string s2)", "Returns the result of string comparison using 'natural' algorithm" ], "strncasecmp": [ "int strncasecmp(string str1, string str2, int len)", "Binary safe string comparison" ], "strncmp": [ "int strncmp(string str1, string str2, int len)", "Binary safe string comparison" ], "strpbrk": [ "array strpbrk(string haystack, string char_list)", "Search a string for any of a set of characters" ], "strpos": [ "int strpos(string haystack, string needle [, int offset])", "Finds position of first occurrence of a string within another" ], "strptime": [ "string strptime(string timestamp, string format)", "Parse a time/date generated with strftime()" ], "strrchr": [ "string strrchr(string haystack, string needle)", "Finds the last occurrence of a character in a string within another" ], "strrev": [ "string strrev(string str)", "Reverse a string" ], "strripos": [ "int strripos(string haystack, string needle [, int offset])", "Finds position of last occurrence of a string within another string" ], "strrpos": [ "int strrpos(string haystack, string needle [, int offset])", "Finds position of last occurrence of a string within another string" ], "strspn": [ "int strspn(string str, string mask [, start [, len]])", "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)" ], "strstr": [ "string strstr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another" ], "strtok": [ "string strtok([string str,] string token)", "Tokenize a string" ], "strtolower": [ "string strtolower(string str)", "Makes a string lowercase" ], "strtotime": [ "int strtotime(string time [, int now ])", "Convert string representation of date and time to a timestamp" ], "strtoupper": [ "string strtoupper(string str)", "Makes a string uppercase" ], "strtr": [ "string strtr(string str, string from[, string to])", "Translates characters in str using given translation tables" ], "strval": [ "string strval(mixed var)", "Get the string value of a variable" ], "substr": [ "string substr(string str, int start [, int length])", "Returns part of a string" ], "substr_compare": [ "int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters" ], "substr_count": [ "int substr_count(string haystack, string needle [, int offset [, int length]])", "Returns the number of times a substring occurs in the string" ], "substr_replace": [ "mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", "Replaces part of a string with another string" ], "sybase_affected_rows": [ "int sybase_affected_rows([resource link_id])", "Get number of affected rows in last query" ], "sybase_close": [ "bool sybase_close([resource link_id])", "Close Sybase connection" ], "sybase_connect": [ "int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", "Open Sybase server connection" ], "sybase_data_seek": [ "bool sybase_data_seek(resource result, int offset)", "Move internal row pointer" ], "sybase_deadlock_retry_count": [ "void sybase_deadlock_retry_count(int retry_count)", "Sets deadlock retry count" ], "sybase_fetch_array": [ "array sybase_fetch_array(resource result)", "Fetch row as array" ], "sybase_fetch_assoc": [ "array sybase_fetch_assoc(resource result)", "Fetch row as array without numberic indices" ], "sybase_fetch_field": [ "object sybase_fetch_field(resource result [, int offset])", "Get field information" ], "sybase_fetch_object": [ "object sybase_fetch_object(resource result [, mixed object])", "Fetch row as object" ], "sybase_fetch_row": [ "array sybase_fetch_row(resource result)", "Get row as enumerated array" ], "sybase_field_seek": [ "bool sybase_field_seek(resource result, int offset)", "Set field offset" ], "sybase_free_result": [ "bool sybase_free_result(resource result)", "Free result memory" ], "sybase_get_last_message": [ "string sybase_get_last_message(void)", "Returns the last message from server (over min_message_severity)" ], "sybase_min_client_severity": [ "void sybase_min_client_severity(int severity)", "Sets minimum client severity" ], "sybase_min_server_severity": [ "void sybase_min_server_severity(int severity)", "Sets minimum server severity" ], "sybase_num_fields": [ "int sybase_num_fields(resource result)", "Get number of fields in result" ], "sybase_num_rows": [ "int sybase_num_rows(resource result)", "Get number of rows in result" ], "sybase_pconnect": [ "int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", "Open persistent Sybase connection" ], "sybase_query": [ "int sybase_query(string query [, resource link_id])", "Send Sybase query" ], "sybase_result": [ "string sybase_result(resource result, int row, mixed field)", "Get result data" ], "sybase_select_db": [ "bool sybase_select_db(string database [, resource link_id])", "Select Sybase database" ], "sybase_set_message_handler": [ "bool sybase_set_message_handler(mixed error_func [, resource connection])", "Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted" ], "sybase_unbuffered_query": [ "int sybase_unbuffered_query(string query [, resource link_id])", "Send Sybase query" ], "symlink": [ "int symlink(string target, string link)", "Create a symbolic link" ], "sys_get_temp_dir": [ "string sys_get_temp_dir()", "Returns directory path used for temporary files" ], "sys_getloadavg": [ "array sys_getloadavg()", "" ], "syslog": [ "bool syslog(int priority, string message)", "Generate a system log message" ], "system": [ "int system(string command [, int &return_value])", "Execute an external program and display output" ], "tan": [ "float tan(float number)", "Returns the tangent of the number in radians" ], "tanh": [ "float tanh(float number)", "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)" ], "tempnam": [ "string tempnam(string dir, string prefix)", "Create a unique filename in a directory" ], "textdomain": [ "string textdomain(string domain)", "Set the textdomain to \"domain\". Returns the current domain" ], "tidy_access_count": [ "int tidy_access_count()", "Returns the Number of Tidy accessibility warnings encountered for specified document." ], "tidy_clean_repair": [ "boolean tidy_clean_repair()", "Execute configured cleanup and repair operations on parsed markup" ], "tidy_config_count": [ "int tidy_config_count()", "Returns the Number of Tidy configuration errors encountered for specified document." ], "tidy_diagnose": [ "boolean tidy_diagnose()", "Run configured diagnostics on parsed and repaired markup." ], "tidy_error_count": [ "int tidy_error_count()", "Returns the Number of Tidy errors encountered for specified document." ], "tidy_get_body": [ "TidyNode tidy_get_body(resource tidy)", "Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree" ], "tidy_get_config": [ "array tidy_get_config()", "Get current Tidy configuarion" ], "tidy_get_error_buffer": [ "string tidy_get_error_buffer([boolean detailed])", "Return warnings and errors which occured parsing the specified document" ], "tidy_get_head": [ "TidyNode tidy_get_head()", "Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree" ], "tidy_get_html": [ "TidyNode tidy_get_html()", "Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree" ], "tidy_get_html_ver": [ "int tidy_get_html_ver()", "Get the Detected HTML version for the specified document." ], "tidy_get_opt_doc": [ "string tidy_get_opt_doc(tidy resource, string optname)", "Returns the documentation for the given option name" ], "tidy_get_output": [ "string tidy_get_output()", "Return a string representing the parsed tidy markup" ], "tidy_get_release": [ "string tidy_get_release()", "Get release date (version) for Tidy library" ], "tidy_get_root": [ "TidyNode tidy_get_root()", "Returns a TidyNode Object representing the root of the tidy parse tree" ], "tidy_get_status": [ "int tidy_get_status()", "Get status of specfied document." ], "tidy_getopt": [ "mixed tidy_getopt(string option)", "Returns the value of the specified configuration option for the tidy document." ], "tidy_is_xhtml": [ "boolean tidy_is_xhtml()", "Indicates if the document is a XHTML document." ], "tidy_is_xml": [ "boolean tidy_is_xml()", "Indicates if the document is a generic (non HTML/XHTML) XML document." ], "tidy_parse_file": [ "boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", "Parse markup in file or URI" ], "tidy_parse_string": [ "bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", "Parse a document stored in a string" ], "tidy_repair_file": [ "boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", "Repair a file using an optionally provided configuration file" ], "tidy_repair_string": [ "boolean tidy_repair_string(string data [, mixed config_file [, string encoding]])", "Repair a string using an optionally provided configuration file" ], "tidy_warning_count": [ "int tidy_warning_count()", "Returns the Number of Tidy warnings encountered for specified document." ], "time": [ "int time(void)", "Return current UNIX timestamp" ], "time_nanosleep": [ "mixed time_nanosleep(long seconds, long nanoseconds)", "Delay for a number of seconds and nano seconds" ], "time_sleep_until": [ "mixed time_sleep_until(float timestamp)", "Make the script sleep until the specified time" ], "timezone_abbreviations_list": [ "array timezone_abbreviations_list()", "Returns associative array containing dst, offset and the timezone name" ], "timezone_identifiers_list": [ "array timezone_identifiers_list([long what[, string country]])", "Returns numerically index array with all timezone identifiers." ], "timezone_location_get": [ "array timezone_location_get()", "Returns location information for a timezone, including country code, latitude/longitude and comments" ], "timezone_name_from_abbr": [ "string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", "Returns the timezone name from abbrevation" ], "timezone_name_get": [ "string timezone_name_get(DateTimeZone object)", "Returns the name of the timezone." ], "timezone_offset_get": [ "long timezone_offset_get(DateTimeZone object, DateTime object)", "Returns the timezone offset." ], "timezone_open": [ "DateTimeZone timezone_open(string timezone)", "Returns new DateTimeZone object" ], "timezone_transitions_get": [ "array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone." ], "timezone_version_get": [ "array timezone_version_get()", "Returns the Olson database version number." ], "tmpfile": [ "resource tmpfile(void)", "Create a temporary file that will be deleted automatically after use" ], "token_get_all": [ "array token_get_all(string source)", "" ], "token_name": [ "string token_name(int type)", "" ], "touch": [ "bool touch(string filename [, int time [, int atime]])", "Set modification time of file" ], "trigger_error": [ "void trigger_error(string messsage [, int error_type])", "Generates a user-level error/warning/notice message" ], "trim": [ "string trim(string str [, string character_mask])", "Strips whitespace from the beginning and end of a string" ], "uasort": [ "bool uasort(array array_arg, string cmp_function)", "Sort an array with a user-defined comparison function and maintain index association" ], "ucfirst": [ "string ucfirst(string str)", "Make a string's first character lowercase" ], "ucwords": [ "string ucwords(string str)", "Uppercase the first character of every word in a string" ], "uksort": [ "bool uksort(array array_arg, string cmp_function)", "Sort an array by keys using a user-defined comparison function" ], "umask": [ "int umask([int mask])", "Return or change the umask" ], "uniqid": [ "string uniqid([string prefix [, bool more_entropy]])", "Generates a unique ID" ], "unixtojd": [ "int unixtojd([int timestamp])", "Convert UNIX timestamp to Julian Day" ], "unlink": [ "bool unlink(string filename[, context context])", "Delete a file" ], "unpack": [ "array unpack(string format, string input)", "Unpack binary string into named array elements according to format argument" ], "unregister_tick_function": [ "void unregister_tick_function(string function_name)", "Unregisters a tick callback function" ], "unserialize": [ "mixed unserialize(string variable_representation)", "Takes a string representation of variable and recreates it" ], "unset": [ "void unset (mixed var [, mixed var])", "Unset a given variable" ], "urldecode": [ "string urldecode(string str)", "Decodes URL-encoded string" ], "urlencode": [ "string urlencode(string str)", "URL-encodes string" ], "usleep": [ "void usleep(int micro_seconds)", "Delay for a given number of micro seconds" ], "usort": [ "bool usort(array array_arg, string cmp_function)", "Sort an array by values using a user-defined comparison function" ], "utf8_decode": [ "string utf8_decode(string data)", "Converts a UTF-8 encoded string to ISO-8859-1" ], "utf8_encode": [ "string utf8_encode(string data)", "Encodes an ISO-8859-1 string to UTF-8" ], "var_dump": [ "void var_dump(mixed var)", "Dumps a string representation of variable to output" ], "var_export": [ "mixed var_export(mixed var [, bool return])", "Outputs or returns a string representation of a variable" ], "variant_abs": [ "mixed variant_abs(mixed left)", "Returns the absolute value of a variant" ], "variant_add": [ "mixed variant_add(mixed left, mixed right)", "\"Adds\" two variant values together and returns the result" ], "variant_and": [ "mixed variant_and(mixed left, mixed right)", "performs a bitwise AND operation between two variants and returns the result" ], "variant_cast": [ "object variant_cast(object variant, int type)", "Convert a variant into a new variant object of another type" ], "variant_cat": [ "mixed variant_cat(mixed left, mixed right)", "concatenates two variant values together and returns the result" ], "variant_cmp": [ "int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", "Compares two variants" ], "variant_date_from_timestamp": [ "object variant_date_from_timestamp(int timestamp)", "Returns a variant date representation of a unix timestamp" ], "variant_date_to_timestamp": [ "int variant_date_to_timestamp(object variant)", "Converts a variant date/time value to unix timestamp" ], "variant_div": [ "mixed variant_div(mixed left, mixed right)", "Returns the result from dividing two variants" ], "variant_eqv": [ "mixed variant_eqv(mixed left, mixed right)", "Performs a bitwise equivalence on two variants" ], "variant_fix": [ "mixed variant_fix(mixed left)", "Returns the integer part ? of a variant" ], "variant_get_type": [ "int variant_get_type(object variant)", "Returns the VT_XXX type code for a variant" ], "variant_idiv": [ "mixed variant_idiv(mixed left, mixed right)", "Converts variants to integers and then returns the result from dividing them" ], "variant_imp": [ "mixed variant_imp(mixed left, mixed right)", "Performs a bitwise implication on two variants" ], "variant_int": [ "mixed variant_int(mixed left)", "Returns the integer portion of a variant" ], "variant_mod": [ "mixed variant_mod(mixed left, mixed right)", "Divides two variants and returns only the remainder" ], "variant_mul": [ "mixed variant_mul(mixed left, mixed right)", "multiplies the values of the two variants and returns the result" ], "variant_neg": [ "mixed variant_neg(mixed left)", "Performs logical negation on a variant" ], "variant_not": [ "mixed variant_not(mixed left)", "Performs bitwise not negation on a variant" ], "variant_or": [ "mixed variant_or(mixed left, mixed right)", "Performs a logical disjunction on two variants" ], "variant_pow": [ "mixed variant_pow(mixed left, mixed right)", "Returns the result of performing the power function with two variants" ], "variant_round": [ "mixed variant_round(mixed left, int decimals)", "Rounds a variant to the specified number of decimal places" ], "variant_set": [ "void variant_set(object variant, mixed value)", "Assigns a new value for a variant object" ], "variant_set_type": [ "void variant_set_type(object variant, int type)", "Convert a variant into another type. Variant is modified \"in-place\"" ], "variant_sub": [ "mixed variant_sub(mixed left, mixed right)", "subtracts the value of the right variant from the left variant value and returns the result" ], "variant_xor": [ "mixed variant_xor(mixed left, mixed right)", "Performs a logical exclusion on two variants" ], "version_compare": [ "int version_compare(string ver1, string ver2 [, string oper])", "Compares two \"PHP-standardized\" version number strings" ], "vfprintf": [ "int vfprintf(resource stream, string format, array args)", "Output a formatted string into a stream" ], "virtual": [ "bool virtual(string filename)", "Perform an Apache sub-request" ], "vprintf": [ "int vprintf(string format, array args)", "Output a formatted string" ], "vsprintf": [ "string vsprintf(string format, array args)", "Return a formatted string" ], "wddx_add_vars": [ "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", "Serializes given variables and adds them to packet given by packet_id" ], "wddx_deserialize": [ "mixed wddx_deserialize(mixed packet)", "Deserializes given packet and returns a PHP value" ], "wddx_packet_end": [ "string wddx_packet_end(resource packet_id)", "Ends specified WDDX packet and returns the string containing the packet" ], "wddx_packet_start": [ "resource wddx_packet_start([string comment])", "Starts a WDDX packet with optional comment and returns the packet id" ], "wddx_serialize_value": [ "string wddx_serialize_value(mixed var [, string comment])", "Creates a new packet and serializes the given value" ], "wddx_serialize_vars": [ "string wddx_serialize_vars(mixed var_name [, mixed ...])", "Creates a new packet and serializes given variables into a struct" ], "wordwrap": [ "string wordwrap(string str [, int width [, string break [, boolean cut]]])", "Wraps buffer to selected number of characters using string break char" ], "xml_error_string": [ "string xml_error_string(int code)", "Get XML parser error string" ], "xml_get_current_byte_index": [ "int xml_get_current_byte_index(resource parser)", "Get current byte index for an XML parser" ], "xml_get_current_column_number": [ "int xml_get_current_column_number(resource parser)", "Get current column number for an XML parser" ], "xml_get_current_line_number": [ "int xml_get_current_line_number(resource parser)", "Get current line number for an XML parser" ], "xml_get_error_code": [ "int xml_get_error_code(resource parser)", "Get XML parser error code" ], "xml_parse": [ "int xml_parse(resource parser, string data [, int isFinal])", "Start parsing an XML document" ], "xml_parse_into_struct": [ "int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", "Parsing a XML document" ], "xml_parser_create": [ "resource xml_parser_create([string encoding])", "Create an XML parser" ], "xml_parser_create_ns": [ "resource xml_parser_create_ns([string encoding [, string sep]])", "Create an XML parser" ], "xml_parser_free": [ "int xml_parser_free(resource parser)", "Free an XML parser" ], "xml_parser_get_option": [ "int xml_parser_get_option(resource parser, int option)", "Get options from an XML parser" ], "xml_parser_set_option": [ "int xml_parser_set_option(resource parser, int option, mixed value)", "Set options in an XML parser" ], "xml_set_character_data_handler": [ "int xml_set_character_data_handler(resource parser, string hdl)", "Set up character data handler" ], "xml_set_default_handler": [ "int xml_set_default_handler(resource parser, string hdl)", "Set up default handler" ], "xml_set_element_handler": [ "int xml_set_element_handler(resource parser, string shdl, string ehdl)", "Set up start and end element handlers" ], "xml_set_end_namespace_decl_handler": [ "int xml_set_end_namespace_decl_handler(resource parser, string hdl)", "Set up character data handler" ], "xml_set_external_entity_ref_handler": [ "int xml_set_external_entity_ref_handler(resource parser, string hdl)", "Set up external entity reference handler" ], "xml_set_notation_decl_handler": [ "int xml_set_notation_decl_handler(resource parser, string hdl)", "Set up notation declaration handler" ], "xml_set_object": [ "int xml_set_object(resource parser, object &obj)", "Set up object which should be used for callbacks" ], "xml_set_processing_instruction_handler": [ "int xml_set_processing_instruction_handler(resource parser, string hdl)", "Set up processing instruction (PI) handler" ], "xml_set_start_namespace_decl_handler": [ "int xml_set_start_namespace_decl_handler(resource parser, string hdl)", "Set up character data handler" ], "xml_set_unparsed_entity_decl_handler": [ "int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", "Set up unparsed entity declaration handler" ], "xmlrpc_decode": [ "array xmlrpc_decode(string xml [, string encoding])", "Decodes XML into native PHP types" ], "xmlrpc_decode_request": [ "array xmlrpc_decode_request(string xml, string& method [, string encoding])", "Decodes XML into native PHP types" ], "xmlrpc_encode": [ "string xmlrpc_encode(mixed value)", "Generates XML for a PHP value" ], "xmlrpc_encode_request": [ "string xmlrpc_encode_request(string method, mixed params [, array output_options])", "Generates XML for a method request" ], "xmlrpc_get_type": [ "string xmlrpc_get_type(mixed value)", "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings" ], "xmlrpc_is_fault": [ "bool xmlrpc_is_fault(array)", "Determines if an array value represents an XMLRPC fault." ], "xmlrpc_parse_method_descriptions": [ "array xmlrpc_parse_method_descriptions(string xml)", "Decodes XML into a list of method descriptions" ], "xmlrpc_server_add_introspection_data": [ "int xmlrpc_server_add_introspection_data(resource server, array desc)", "Adds introspection documentation" ], "xmlrpc_server_call_method": [ "mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", "Parses XML requests and call methods" ], "xmlrpc_server_create": [ "resource xmlrpc_server_create(void)", "Creates an xmlrpc server" ], "xmlrpc_server_destroy": [ "int xmlrpc_server_destroy(resource server)", "Destroys server resources" ], "xmlrpc_server_register_introspection_callback": [ "bool xmlrpc_server_register_introspection_callback(resource server, string function)", "Register a PHP function to generate documentation" ], "xmlrpc_server_register_method": [ "bool xmlrpc_server_register_method(resource server, string method_name, string function)", "Register a PHP function to handle method matching method_name" ], "xmlrpc_set_type": [ "bool xmlrpc_set_type(string value, string type)", "Sets xmlrpc type, base64 or datetime, for a PHP string value" ], "xmlwriter_end_attribute": [ "bool xmlwriter_end_attribute(resource xmlwriter)", "End attribute - returns FALSE on error" ], "xmlwriter_end_cdata": [ "bool xmlwriter_end_cdata(resource xmlwriter)", "End current CDATA - returns FALSE on error" ], "xmlwriter_end_comment": [ "bool xmlwriter_end_comment(resource xmlwriter)", "Create end comment - returns FALSE on error" ], "xmlwriter_end_document": [ "bool xmlwriter_end_document(resource xmlwriter)", "End current document - returns FALSE on error" ], "xmlwriter_end_dtd": [ "bool xmlwriter_end_dtd(resource xmlwriter)", "End current DTD - returns FALSE on error" ], "xmlwriter_end_dtd_attlist": [ "bool xmlwriter_end_dtd_attlist(resource xmlwriter)", "End current DTD AttList - returns FALSE on error" ], "xmlwriter_end_dtd_element": [ "bool xmlwriter_end_dtd_element(resource xmlwriter)", "End current DTD element - returns FALSE on error" ], "xmlwriter_end_dtd_entity": [ "bool xmlwriter_end_dtd_entity(resource xmlwriter)", "End current DTD Entity - returns FALSE on error" ], "xmlwriter_end_element": [ "bool xmlwriter_end_element(resource xmlwriter)", "End current element - returns FALSE on error" ], "xmlwriter_end_pi": [ "bool xmlwriter_end_pi(resource xmlwriter)", "End current PI - returns FALSE on error" ], "xmlwriter_flush": [ "mixed xmlwriter_flush(resource xmlwriter [,bool empty])", "Output current buffer" ], "xmlwriter_full_end_element": [ "bool xmlwriter_full_end_element(resource xmlwriter)", "End current element - returns FALSE on error" ], "xmlwriter_open_memory": [ "resource xmlwriter_open_memory()", "Create new xmlwriter using memory for string output" ], "xmlwriter_open_uri": [ "resource xmlwriter_open_uri(resource xmlwriter, string source)", "Create new xmlwriter using source uri for output" ], "xmlwriter_output_memory": [ "string xmlwriter_output_memory(resource xmlwriter [,bool flush])", "Output current buffer as string" ], "xmlwriter_set_indent": [ "bool xmlwriter_set_indent(resource xmlwriter, bool indent)", "Toggle indentation on/off - returns FALSE on error" ], "xmlwriter_set_indent_string": [ "bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", "Set string used for indenting - returns FALSE on error" ], "xmlwriter_start_attribute": [ "bool xmlwriter_start_attribute(resource xmlwriter, string name)", "Create start attribute - returns FALSE on error" ], "xmlwriter_start_attribute_ns": [ "bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", "Create start namespaced attribute - returns FALSE on error" ], "xmlwriter_start_cdata": [ "bool xmlwriter_start_cdata(resource xmlwriter)", "Create start CDATA tag - returns FALSE on error" ], "xmlwriter_start_comment": [ "bool xmlwriter_start_comment(resource xmlwriter)", "Create start comment - returns FALSE on error" ], "xmlwriter_start_document": [ "bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", "Create document tag - returns FALSE on error" ], "xmlwriter_start_dtd": [ "bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", "Create start DTD tag - returns FALSE on error" ], "xmlwriter_start_dtd_attlist": [ "bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", "Create start DTD AttList - returns FALSE on error" ], "xmlwriter_start_dtd_element": [ "bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", "Create start DTD element - returns FALSE on error" ], "xmlwriter_start_dtd_entity": [ "bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", "Create start DTD Entity - returns FALSE on error" ], "xmlwriter_start_element": [ "bool xmlwriter_start_element(resource xmlwriter, string name)", "Create start element tag - returns FALSE on error" ], "xmlwriter_start_element_ns": [ "bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", "Create start namespaced element tag - returns FALSE on error" ], "xmlwriter_start_pi": [ "bool xmlwriter_start_pi(resource xmlwriter, string target)", "Create start PI tag - returns FALSE on error" ], "xmlwriter_text": [ "bool xmlwriter_text(resource xmlwriter, string content)", "Write text - returns FALSE on error" ], "xmlwriter_write_attribute": [ "bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", "Write full attribute - returns FALSE on error" ], "xmlwriter_write_attribute_ns": [ "bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", "Write full namespaced attribute - returns FALSE on error" ], "xmlwriter_write_cdata": [ "bool xmlwriter_write_cdata(resource xmlwriter, string content)", "Write full CDATA tag - returns FALSE on error" ], "xmlwriter_write_comment": [ "bool xmlwriter_write_comment(resource xmlwriter, string content)", "Write full comment tag - returns FALSE on error" ], "xmlwriter_write_dtd": [ "bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", "Write full DTD tag - returns FALSE on error" ], "xmlwriter_write_dtd_attlist": [ "bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", "Write full DTD AttList tag - returns FALSE on error" ], "xmlwriter_write_dtd_element": [ "bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", "Write full DTD element tag - returns FALSE on error" ], "xmlwriter_write_dtd_entity": [ "bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", "Write full DTD Entity tag - returns FALSE on error" ], "xmlwriter_write_element": [ "bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", "Write full element tag - returns FALSE on error" ], "xmlwriter_write_element_ns": [ "bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", "Write full namesapced element tag - returns FALSE on error" ], "xmlwriter_write_pi": [ "bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", "Write full PI tag - returns FALSE on error" ], "xmlwriter_write_raw": [ "bool xmlwriter_write_raw(resource xmlwriter, string content)", "Write text - returns FALSE on error" ], "xsl_xsltprocessor_get_parameter": [ "string xsl_xsltprocessor_get_parameter(string namespace, string name);", "" ], "xsl_xsltprocessor_has_exslt_support": [ "bool xsl_xsltprocessor_has_exslt_support();", "" ], "xsl_xsltprocessor_import_stylesheet": [ "void xsl_xsltprocessor_import_stylesheet(domdocument doc);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:" ], "xsl_xsltprocessor_register_php_functions": [ "void xsl_xsltprocessor_register_php_functions([mixed $restrict]);", "" ], "xsl_xsltprocessor_remove_parameter": [ "bool xsl_xsltprocessor_remove_parameter(string namespace, string name);", "" ], "xsl_xsltprocessor_set_parameter": [ "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value]);", "" ], "xsl_xsltprocessor_set_profiling": [ "bool xsl_xsltprocessor_set_profiling(string filename) */", "PHP_FUNCTION(xsl_xsltprocessor_set_profiling) { zval *id; xsl_object *intern; char *filename = NULL; int filename_len; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"s!\", &filename, &filename_len) == SUCCESS) { intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern->profiling) { efree(intern->profiling); } if (filename != NULL) { intern->profiling = estrndup(filename,filename_len); } else { intern->profiling = NULL; } RETURN_TRUE; } else { WRONG_PARAM_COUNT; } } /* }}} end xsl_xsltprocessor_set_profiling" ], "xsl_xsltprocessor_transform_to_doc": [ "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:" ], "xsl_xsltprocessor_transform_to_uri": [ "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri);", "" ], "xsl_xsltprocessor_transform_to_xml": [ "string xsl_xsltprocessor_transform_to_xml(domdocument doc);", "" ], "zend_logo_guid": [ "string zend_logo_guid(void)", "Return the special ID used to request the Zend logo in phpinfo screens" ], "zend_version": [ "string zend_version(void)", "Get the version of the Zend Engine" ], "zip_close": [ "void zip_close(resource zip)", "Close a Zip archive" ], "zip_entry_close": [ "void zip_entry_close(resource zip_ent)", "Close a zip entry" ], "zip_entry_compressedsize": [ "int zip_entry_compressedsize(resource zip_entry)", "Return the compressed size of a ZZip entry" ], "zip_entry_compressionmethod": [ "string zip_entry_compressionmethod(resource zip_entry)", "Return a string containing the compression method used on a particular entry" ], "zip_entry_filesize": [ "int zip_entry_filesize(resource zip_entry)", "Return the actual filesize of a ZZip entry" ], "zip_entry_name": [ "string zip_entry_name(resource zip_entry)", "Return the name given a ZZip entry" ], "zip_entry_open": [ "bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", "Open a Zip File, pointed by the resource entry" ], "zip_entry_read": [ "mixed zip_entry_read(resource zip_entry [, int len])", "Read from an open directory entry" ], "zip_open": [ "resource zip_open(string filename)", "Create new zip using source uri for output" ], "zip_read": [ "resource zip_read(resource zip)", "Returns the next file in the archive" ], "zlib_get_coding_type": [ "string zlib_get_coding_type(void)", "Returns the coding type used for output compression" ] }; var variableMap = { "$_COOKIE": { type: "array" }, "$_ENV": { type: "array" }, "$_FILES": { type: "array" }, "$_GET": { type: "array" }, "$_POST": { type: "array" }, "$_REQUEST": { type: "array" }, "$_SERVER": { type: "array", value: { "DOCUMENT_ROOT": 1, "GATEWAY_INTERFACE": 1, "HTTP_ACCEPT": 1, "HTTP_ACCEPT_CHARSET": 1, "HTTP_ACCEPT_ENCODING": 1 , "HTTP_ACCEPT_LANGUAGE": 1, "HTTP_CONNECTION": 1, "HTTP_HOST": 1, "HTTP_REFERER": 1, "HTTP_USER_AGENT": 1, "PATH_TRANSLATED": 1, "PHP_SELF": 1, "QUERY_STRING": 1, "REMOTE_ADDR": 1, "REMOTE_PORT": 1, "REQUEST_METHOD": 1, "REQUEST_URI": 1, "SCRIPT_FILENAME": 1, "SCRIPT_NAME": 1, "SERVER_ADMIN": 1, "SERVER_NAME": 1, "SERVER_PORT": 1, "SERVER_PROTOCOL": 1, "SERVER_SIGNATURE": 1, "SERVER_SOFTWARE": 1 } }, "$_SESSION": { type: "array" }, "$GLOBALS": { type: "array" } }; function is(token, type) { return token.type.lastIndexOf(type) > -1; } var PhpCompletions = function() { }; (function() { this.getCompletions = function(state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (token.type==='identifier') return this.getFunctionCompletions(state, session, pos, prefix); if (is(token, "variable")) return this.getVariableCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); if (token.type==='string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) return this.getArrayKeyCompletions(state, session, pos, prefix); return []; }; this.getFunctionCompletions = function(state, session, pos, prefix) { var functions = Object.keys(functionMap); return functions.map(function(func){ return { caption: func, snippet: func + '($0)', meta: "php function", score: Number.MAX_VALUE, docHTML: functionMap[func][1] }; }); }; this.getVariableCompletions = function(state, session, pos, prefix) { var variables = Object.keys(variableMap); return variables.map(function(variable){ return { caption: variable, value: variable, meta: "php variable", score: Number.MAX_VALUE }; }); }; this.getArrayKeyCompletions = function(state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var variable = line.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1]; if (!variableMap[variable]) { return []; } var keys = []; if (variableMap[variable].type==='array' && variableMap[variable].value) keys = Object.keys(variableMap[variable].value); return keys.map(function(key) { return { caption: key, value: key, meta: "php array key", score: Number.MAX_VALUE }; }); }; }).call(PhpCompletions.prototype); exports.PhpCompletions = PhpCompletions; }); ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(commentRegex) { if (commentRegex) { this.foldingStartMarker = new RegExp( this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) ); this.foldingStopMarker = new RegExp( this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) ); } }; oop.inherits(FoldMode, BaseFoldMode); (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(session, foldStyle, row) { var line = session.getLine(row); if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } var fw = this._getFoldWidgetBase(session, foldStyle, row); if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart return fw; }; this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { var line = session.getLine(row); if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; if (match[1]) return this.openingBracketBlock(session, match[1], row, i); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } else if (foldStyle != "all") range = null; } return range; } if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; if (match[1]) return this.closingBracketBlock(session, match[1], row, i); return session.getCommentFoldRange(row, i, -1); } }; this.getSectionRange = function(session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; var startColumn = line.length; row = row + 1; var endRow = row; var maxRow = session.getLength(); while (++row < maxRow) { line = session.getLine(row); var indent = line.search(/\S/); if (indent === -1) continue; if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { if (subRange.start.row <= startRow) { break; } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { break; } } endRow = row; } return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; this.getCommentRegionBlock = function(session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); if (!m) continue; if (m[1]) depth--; else depth++; if (!depth) break; } var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; }).call(FoldMode.prototype); }); ace.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/cstyle","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CstyleBehaviour = acequire("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = JavaScriptHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } } else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } var match = line.match(/^\s*(\/?)\*/); if (match) { if (match[1]) { indent += " "; } indent += "* "; } } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(24), "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(results) { session.setAnnotations(results.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/javascript"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/css_completions",["require","exports","module"], function(acequire, exports, module) { "use strict"; var propertyMap = { "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 } }; var CssCompletions = function() { }; (function() { this.completionsDefined = false; this.defineCompletions = function() { if (document) { var style = document.createElement('c').style; for (var i in style) { if (typeof style[i] !== 'string') continue; var name = i.replace(/[A-Z]/g, function(x) { return '-' + x.toLowerCase(); }); if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } this.completionsDefined = true; }; this.getCompletions = function(state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (state==='ruleset'){ var line = session.getLine(pos.row).substr(0, pos.column); if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); return this.getPropertyValueCompletions(state, session, pos, prefix); } else { return this.getPropertyCompletions(state, session, pos, prefix); } } return []; }; this.getPropertyCompletions = function(state, session, pos, prefix) { var properties = Object.keys(propertyMap); return properties.map(function(property){ return { caption: property, snippet: property + ': $0;', meta: "property", score: Number.MAX_VALUE }; }); }; this.getPropertyValueCompletions = function(state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } return values.map(function(value){ return { caption: value, snippet: value, meta: "property value", score: Number.MAX_VALUE }; }); }; }).call(CssCompletions.prototype); exports.CssCompletions = CssCompletions; }); ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Behaviour = acequire("../behaviour").Behaviour; var CstyleBehaviour = acequire("./cstyle").CstyleBehaviour; var TokenIterator = acequire("../../token_iterator").TokenIterator; var CssBehaviour = function () { this.inherit(CstyleBehaviour); this.add("colon", "insertion", function (state, action, editor, session, text) { if (text === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { text: '', selection: [1, 1] }; } if (!line.substring(cursor.column).match(/^\s*;/)) { return { text: ':;', selection: [1, 1] }; } } } }); this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { range.end.column ++; return range; } } } }); this.add("semicolon", "insertion", function (state, action, editor, session, text) { if (text === ';') { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { text: '', selection: [1, 1] }; } } }); }; oop.inherits(CssBehaviour, CstyleBehaviour); exports.CssBehaviour = CssBehaviour; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CssCompletions = acequire("./css_completions").CssCompletions; var CssBehaviour = acequire("./behaviour/css").CssBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); this.$completer = new CssCompletions(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.foldingRules = "cStyle"; this.blockComment = {start: "/*", end: "*/"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(25), "Worker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/css"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Behaviour = acequire("../behaviour").Behaviour; var TokenIterator = acequire("../../token_iterator").TokenIterator; var lang = acequire("../../lib/lang"); function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } var XmlBehaviour = function () { this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; var selected = session.doc.getTextRange(editor.getSelectionRange()); if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { return { text: quote + selected + quote, selection: false }; } var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } if (!token) token = iterator.stepBackward(); if (!token) return; while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } var rightSpace = !rightChar || rightChar.match(/\s/); if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { return { text: quote + quote, selection: [1, 1] }; } } }); this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.start.column + 1, range.start.column + 2); if (rightChar == selected) { range.end.column++; return range; } } }); this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; var iterator = new TokenIterator(session, position.row, position.column); var token = iterator.getCurrentToken() || iterator.stepBackward(); if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) return; if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { var firstChar = token.value.charAt(0); if (firstChar == '"' || firstChar == "'") { var lastChar = token.value.charAt(token.value.length - 1); var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) return; } } while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { token = iterator.stepForward(); break; } } var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); if (this.voidElements.hasOwnProperty(element.toLowerCase())) return; return { text: ">" + "</" + element + ">", selection: [1, 1] }; } }); this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } if (!token) { return; } var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } if (this.voidElements && !this.voidElements[tag]) { var nextToken = session.getTokenAt(cursor.row, cursor.column+1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); if (nextToken && nextToken.value === "</") { return { text: "\n" + indent + "\n" + nextIndent, selection: [1, indent.length, 1, indent.length] }; } else { return { text: "\n" + indent }; } } } } }); }; oop.inherits(XmlBehaviour, Behaviour); exports.XmlBehaviour = XmlBehaviour; }); ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(defaultMode, subModes) { this.defaultMode = defaultMode; this.subModes = subModes; }; oop.inherits(FoldMode, BaseFoldMode); (function() { this.$getMode = function(state) { if (typeof state != "string") state = state[0]; for (var key in this.subModes) { if (state.indexOf(key) === 0) return this.subModes[key]; } return null; }; this.$tryMode = function(state, session, foldStyle, row) { var mode = this.$getMode(state); return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); }; this.getFoldWidget = function(session, foldStyle, row) { return ( this.$tryMode(session.getState(row-1), session, foldStyle, row) || this.$tryMode(session.getState(row), session, foldStyle, row) || this.defaultMode.getFoldWidget(session, foldStyle, row) ); }; this.getFoldWidgetRange = function(session, foldStyle, row) { var mode = this.$getMode(session.getState(row-1)); if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.$getMode(session.getState(row)); if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.defaultMode; return mode.getFoldWidgetRange(session, foldStyle, row); }; }).call(FoldMode.prototype); }); ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var lang = acequire("../../lib/lang"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var TokenIterator = acequire("../../token_iterator").TokenIterator; var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) { BaseFoldMode.call(this); this.voidElements = voidElements || {}; this.optionalEndTags = oop.mixin({}, this.voidElements); if (optionalEndTags) oop.mixin(this.optionalEndTags, optionalEndTags); }; oop.inherits(FoldMode, BaseFoldMode); var Tag = function() { this.tagName = ""; this.closing = false; this.selfClosing = false; this.start = {row: 0, column: 0}; this.end = {row: 0, column: 0}; }; function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } (function() { this.getFoldWidget = function(session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); if (!tag) return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; return "start"; }; this.getCommentFoldWidget = function(session, row) { if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) return "start"; return ""; }; this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (is(token, "tag-open")) { tag.end.column = tag.start.column + token.value.length; tag.closing = is(token, "end-tag-open"); token = tokens[++i]; if (!token) return null; tag.tagName = token.value; tag.end.column += token.value.length; for (i++; i < tokens.length; i++) { token = tokens[i]; tag.end.column += token.value.length; if (is(token, "tag-close")) { tag.selfClosing = token.value == '/>'; break; } } return tag; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == '/>'; return tag; } tag.start.column += token.value.length; } return null; }; this._findEndTagInLine = function(session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; column += token.value.length; if (column < startColumn) continue; if (is(token, "end-tag-open")) { token = tokens[i + 1]; if (token && token.value == tagName) return true; } } return false; }; this._readTagForward = function(iterator) { var token = iterator.getCurrentToken(); if (!token) return null; var tag = new Tag(); do { if (is(token, "tag-open")) { tag.closing = is(token, "end-tag-open"); tag.start.row = iterator.getCurrentTokenRow(); tag.start.column = iterator.getCurrentTokenColumn(); } else if (is(token, "tag-name")) { tag.tagName = token.value; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == "/>"; tag.end.row = iterator.getCurrentTokenRow(); tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; iterator.stepForward(); return tag; } } while(token = iterator.stepForward()); return null; }; this._readTagBackward = function(iterator) { var token = iterator.getCurrentToken(); if (!token) return null; var tag = new Tag(); do { if (is(token, "tag-open")) { tag.closing = is(token, "end-tag-open"); tag.start.row = iterator.getCurrentTokenRow(); tag.start.column = iterator.getCurrentTokenColumn(); iterator.stepBackward(); return tag; } else if (is(token, "tag-name")) { tag.tagName = token.value; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == "/>"; tag.end.row = iterator.getCurrentTokenRow(); tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; } } while(token = iterator.stepBackward()); return null; }; this._pop = function(stack, tag) { while (stack.length) { var top = stack[stack.length-1]; if (!tag || top.tagName == tag.tagName) { return stack.pop(); } else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { stack.pop(); continue; } else { return null; } } }; this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); if (!firstTag) { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; var tag; if (!isBackward) { var iterator = new TokenIterator(session, row, firstTag.start.column); var start = { row: row, column: firstTag.start.column + firstTag.tagName.length + 2 }; if (firstTag.start.row == firstTag.end.row) start.column = firstTag.end.column; while (tag = this._readTagForward(iterator)) { if (tag.selfClosing) { if (!stack.length) { tag.start.column += tag.tagName.length + 2; tag.end.column -= 2; return Range.fromPoints(tag.start, tag.end); } else continue; } if (tag.closing) { this._pop(stack, tag); if (stack.length == 0) return Range.fromPoints(start, tag.start); } else { stack.push(tag); } } } else { var iterator = new TokenIterator(session, row, firstTag.end.column); var end = { row: row, column: firstTag.start.column }; while (tag = this._readTagBackward(iterator)) { if (tag.selfClosing) { if (!stack.length) { tag.start.column += tag.tagName.length + 2; tag.end.column -= 2; return Range.fromPoints(tag.start, tag.end); } else continue; } if (!tag.closing) { this._pop(stack, tag); if (stack.length == 0) { tag.start.column += tag.tagName.length + 2; if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) tag.start.column = tag.end.column; return Range.fromPoints(tag.start, end); } } else { stack.push(tag); } } } }; }).call(FoldMode.prototype); }); ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var MixedFoldMode = acequire("./mixed").FoldMode; var XmlFoldMode = acequire("./xml").FoldMode; var CStyleFoldMode = acequire("./cstyle").FoldMode; var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; oop.inherits(FoldMode, MixedFoldMode); }); ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var TokenIterator = acequire("../token_iterator").TokenIterator; var commonAttributes = [ "accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate" ]; var eventAttributes = [ "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" ]; var globalAttributes = commonAttributes.concat(eventAttributes); var attributeMap = { "html": {"manifest": 1}, "head": {}, "title": {}, "base": {"href": 1, "target": 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}, "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, "noscript": {"href": 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}, "section": {}, "nav": {}, "article": {"pubdate": 1}, "aside": {}, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, "header": {}, "footer": {}, "address": {}, "main": {}, "p": {}, "hr": {}, "pre": {}, "blockquote": {"cite": 1}, "ol": {"start": 1, "reversed": 1}, "ul": {}, "li": {"value": 1}, "dl": {}, "dt": {}, "dd": {}, "figure": {}, "figcaption": {}, "div": {}, "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}, "em": {}, "strong": {}, "small": {}, "s": {}, "cite": {}, "q": {"cite": 1}, "dfn": {}, "abbr": {}, "data": {}, "time": {"datetime": 1}, "code": {}, "var": {}, "samp": {}, "kbd": {}, "sub": {}, "sup": {}, "i": {}, "b": {}, "u": {}, "mark": {}, "ruby": {}, "rt": {}, "rp": {}, "bdi": {}, "bdo": {}, "span": {}, "br": {}, "wbr": {}, "ins": {"cite": 1, "datetime": 1}, "del": {"cite": 1, "datetime": 1}, "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, "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}}, "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, "param": {"name": 1, "value": 1}, "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}}, "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, "source": {"src": 1, "type": 1, "media": 1}, "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, "canvas": {"width": 1, "height": 1}, "map": {"name": 1}, "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, "math": {}, "table": {"summary": 1}, "caption": {}, "colgroup": {"span": 1}, "col": {"span": 1}, "tbody": {}, "thead": {}, "tfoot": {}, "tr": {}, "td": {"headers": 1, "rowspan": 1, "colspan": 1}, "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, "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}}, "fieldset": {"disabled": 1, "form": 1, "name": 1}, "legend": {}, "label": {"form": 1, "for": 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}, "acequired": {"acequired": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, "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}}, "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, "datalist": {}, "optgroup": {"disabled": 1, "label": 1}, "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "acequired": {"acequired": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, "output": {"for": 1, "form": 1, "name": 1}, "progress": {"value": 1, "max": 1}, "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, "details": {"open": 1}, "summary": {}, "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, "menu": {"type": 1, "label": 1}, "dialog": {"open": 1} }; var elements = Object.keys(attributeMap); function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); while (token && !is(token, "tag-name")){ token = iterator.stepBackward(); } if (token) return token.value; } function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); while (token && !is(token, "attribute-name")){ token = iterator.stepBackward(); } if (token) return token.value; } var HtmlCompletions = function() { }; (function() { this.getCompletions = function(state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) return this.getTagCompletions(state, session, pos, prefix); if (is(token, "tag-whitespace") || is(token, "attribute-name")) return this.getAttributeCompletions(state, session, pos, prefix); if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; }; this.getTagCompletions = function(state, session, pos, prefix) { return elements.map(function(element){ return { value: element, meta: "tag", score: Number.MAX_VALUE }; }); }; this.getAttributeCompletions = function(state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; var attributes = globalAttributes; if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } return attributes.map(function(attribute){ return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", score: Number.MAX_VALUE }; }); }; this.getAttributeValueCompletions = function(state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } return values.map(function(value){ return { caption: value, snippet: value, meta: "attribute value", score: Number.MAX_VALUE }; }); }; this.getHTMLEntityCompletions = function(state, session, pos, prefix) { var values = ['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 values.map(function(value){ return { caption: value, snippet: value, meta: "html entity", score: Number.MAX_VALUE }; }); }; }).call(HtmlCompletions.prototype); exports.HtmlCompletions = HtmlCompletions; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextMode = acequire("./text").Mode; var JavaScriptMode = acequire("./javascript").Mode; var CssMode = acequire("./css").Mode; var HtmlHighlightRules = acequire("./html_highlight_rules").HtmlHighlightRules; var XmlBehaviour = acequire("./behaviour/xml").XmlBehaviour; var HtmlFoldMode = acequire("./folding/html").FoldMode; var HtmlCompletions = acequire("./html_completions").HtmlCompletions; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; var Mode = function(options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); (function() { this.blockComment = {start: "<!--", end: "-->"}; this.voidElements = lang.arrayToMap(voidElements); this.getNextLineIndent = function(state, line, tab) { return this.$getIndent(line); }; this.checkOutdent = function(state, line, input) { return false; }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.createWorker = function(session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], __webpack_require__(27), "Worker"); worker.attachToDocument(session.getDocument()); if (this.fragmentContext) worker.call("setOptions", [{context: this.fragmentContext}]); worker.on("error", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/html"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/php_completions","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var PhpHighlightRules = acequire("./php_highlight_rules").PhpHighlightRules; var PhpLangHighlightRules = acequire("./php_highlight_rules").PhpLangHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var Range = acequire("../range").Range; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var PhpCompletions = acequire("./php_completions").PhpCompletions; var CstyleBehaviour = acequire("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var unicode = acequire("../unicode"); var HtmlMode = acequire("./html").Mode; var JavaScriptMode = acequire("./javascript").Mode; var CssMode = acequire("./css").Mode; var PhpMode = function(opts) { this.HighlightRules = PhpLangHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.$completer = new PhpCompletions(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(PhpMode, TextMode); (function() { this.tokenRe = new RegExp("^[" + unicode.packages.L + unicode.packages.Mn + unicode.packages.Mc + unicode.packages.Nd + unicode.packages.Pc + "_]+", "g" ); this.nonTokenRe = new RegExp("^(?:[^" + unicode.packages.L + unicode.packages.Mn + unicode.packages.Mc + unicode.packages.Nd + unicode.packages.Pc + "_]|\\s])+", "g" ); this.lineCommentStart = ["//", "#"]; this.blockComment = {start: "/*", end: "*/"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } else if (state == "doc-start") { if (endState != "doc-start") { return ""; } var match = line.match(/^\s*(\/?)\*/); if (match) { if (match[1]) { indent += " "; } indent += "* "; } } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.$id = "ace/mode/php-inline"; }).call(PhpMode.prototype); var Mode = function(opts) { if (opts && opts.inline) { var mode = new PhpMode(); mode.createWorker = this.createWorker; mode.inlinePhp = true; return mode; } HtmlMode.call(this); this.HighlightRules = PhpHighlightRules; this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode, "php-": PhpMode }); this.foldingRules.subModes["php-"] = new CStyleFoldMode(); }; oop.inherits(Mode, HtmlMode); (function() { this.createWorker = function(session) { var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); worker.attachToDocument(session.getDocument()); if (this.inlinePhp) worker.call("setOptions", [{inline: true}]); worker.on("annotate", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/php"; }).call(Mode.prototype); exports.Mode = Mode; }); /***/ }), /* 285 */ /***/ (function(module, exports, __webpack_require__) { ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var DocCommentHighlightRules = function() { this.$rules = { "start" : [ { token : "comment.doc.tag", regex : "@[\\w\\d_]+" // TODO: fix email addresses }, DocCommentHighlightRules.getTagRule(), { defaultToken : "comment.doc", caseInsensitive: true }] }; }; oop.inherits(DocCommentHighlightRules, TextHighlightRules); DocCommentHighlightRules.getTagRule = function(start) { return { token : "comment.doc.tag.storage.type", regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; DocCommentHighlightRules.getStartRule = function(start) { return { token : "comment.doc", // doc comment regex : "\\/\\*(?=\\*)", next : start }; }; DocCommentHighlightRules.getEndRule = function (start) { return { token : "comment.doc", // closing comment regex : "\\*\\/", next : start }; }; exports.DocCommentHighlightRules = DocCommentHighlightRules; }); ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var DocCommentHighlightRules = acequire("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; var JavaScriptHighlightRules = function(options) { var keywordMapper = this.createKeywordMapper({ "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors "Namespace|QName|XML|XMLList|" + // E4X "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions "isNaN|parseFloat|parseInt|" + "JSON|Math|" + // Other "this|arguments|prototype|window|document" , // Pseudo "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "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", "storage.type": "const|let|var|function", "constant.language": "null|Infinity|NaN|undefined", "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode "[0-2][0-7]{0,2}|" + // oct "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; this.$rules = { "no_regex" : [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { token : "string", regex : "'(?=.)", next : "qstring" }, { token : "string", regex : '"(?=.)', next : "qqstring" }, { token : "constant.numeric", // hexadecimal, octal and binary regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { token : "constant.numeric", // decimal integers and floats regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text","keyword.operator" ], regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { token : [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { token : [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : [ "text", "text", "storage.type", "text", "paren.lparen" ], regex : "(:)(\\s*)(function)(\\s*)(\\()", next: "function_arguments" }, { token : "keyword", regex : "from(?=\\s*('|\"))" }, { token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { token : ["support.constant"], regex : /that\b/ }, { token : ["storage.type", "punctuation.operator", "support.function.firebug"], regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ }, { token : keywordMapper, regex : identifierRe }, { token : "punctuation.operator", regex : /[.](?![.])/, next : "property" }, { token : "storage.type", regex : /=>/ }, { 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 : [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { token : "punctuation.operator", regex : /[.](?![.])/ }, { 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|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|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 : identifierRe }, { regex: "", token: "empty", next: "no_regex" } ], "start": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("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" } ], "function_arguments": [ { token: "variable.parameter", regex: identifierRe }, { token: "punctuation.operator", regex: "[, ]+" }, { token: "punctuation.operator", regex: "$" }, { token: "empty", regex: "", next: "no_regex" } ], "qqstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : '"|$', next : "no_regex" }, { defaultToken: "string" } ], "qstring" : [ { token : "constant.language.escape", regex : escapedRe }, { token : "string", regex : "\\\\$", consumeLineEnd : true }, { token : "string", regex : "'|$", next : "no_regex" }, { defaultToken: "string" } ] }; if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); } else if (val == "}" && stack.length) { stack.shift(); this.next = stack.shift(); if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end"; } return val == "{" ? "paren.lparen" : "paren.rparen"; }, nextState: "start" }, { token : "string.quasi.start", regex : /`/, push : [{ token : "constant.language.escape", regex : escapedRe }, { token : "paren.quasi.start", regex : /\${/, push : "start" }, { token : "string.quasi.end", regex : /`/, next : "pop" }, { defaultToken: "string.quasi" }] }); if (!options || options.jsx != false) JSX.call(this); } this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); this.normalizeRules(); }; oop.inherits(JavaScriptHighlightRules, TextHighlightRules); function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { onMatch : function(val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) stack.unshift(this.next, this.nextState, 0); else stack.unshift(this.next); stack[2]++; } else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { stack.shift(); stack.shift(); } } } return [{ type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", value: val.slice(0, offset) }, { type: "meta.tag.tag-name.xml", value: val.substr(offset) }]; }, regex : "</?" + tagRegex + "", next: "jsxAttributes", nextState: "jsx" }; this.$rules.start.unshift(jsxTag); var jsxJsRule = { regex: "{", token: "paren.quasi.start", push: "start" }; this.$rules.jsx = [ jsxJsRule, jsxTag, {include : "reference"}, {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); if (value.length == 2) { if (stack[0] == this.nextState) stack[1]--; if (!stack[1] || stack[1] < 0) { stack.splice(0, 2); } } this.next = stack[0] || "start"; return [{type: this.token, value: value}]; }, nextState: "jsx" }, jsxJsRule, comments("jsxAttributes"), { token : "entity.other.attribute-name.xml", regex : tagRegex }, { 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"} ] }, jsxTag ]; this.$rules.reference = [{ token : "constant.language.escape.reference.xml", regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" }]; } function comments(next) { return [ { token : "comment", // multi line comment regex : /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "\\*\\/", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] }, { token : "comment", regex : "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), {token : "comment", regex : "$|^", next : next || "pop"}, {defaultToken : "comment", caseInsensitive: true} ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; }); ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(acequire, exports, module) { "use strict"; var Range = acequire("../range").Range; var MatchingBraceOutdent = function() {}; (function() { this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*\}/.test(input); }; this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.$getIndent = function(line) { return line.match(/^\s*/)[0]; }; }).call(MatchingBraceOutdent.prototype); exports.MatchingBraceOutdent = MatchingBraceOutdent; }); ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(commentRegex) { if (commentRegex) { this.foldingStartMarker = new RegExp( this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) ); this.foldingStopMarker = new RegExp( this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) ); } }; oop.inherits(FoldMode, BaseFoldMode); (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(session, foldStyle, row) { var line = session.getLine(row); if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } var fw = this._getFoldWidgetBase(session, foldStyle, row); if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart return fw; }; this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { var line = session.getLine(row); if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; if (match[1]) return this.openingBracketBlock(session, match[1], row, i); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } else if (foldStyle != "all") range = null; } return range; } if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; if (match[1]) return this.closingBracketBlock(session, match[1], row, i); return session.getCommentFoldRange(row, i, -1); } }; this.getSectionRange = function(session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; var startColumn = line.length; row = row + 1; var endRow = row; var maxRow = session.getLength(); while (++row < maxRow) { line = session.getLine(row); var indent = line.search(/\S/); if (indent === -1) continue; if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { if (subRange.start.row <= startRow) { break; } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { break; } } endRow = row; } return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; this.getCommentRegionBlock = function(session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); if (!m) continue; if (m[1]) depth--; else depth++; if (!depth) break; } var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; }).call(FoldMode.prototype); }); ace.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/cstyle","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CstyleBehaviour = acequire("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = JavaScriptHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } } else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } var match = line.match(/^\s*(\/?)\*/); if (match) { if (match[1]) { indent += " "; } indent += "* "; } } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(24), "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(results) { session.setAnnotations(results.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/javascript"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var supportType = exports.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|min-height|min-width|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|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.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|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"; var supportConstantColor = exports.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"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.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|acequired|root|target|valid|visited)\\b"; var CssHighlightRules = function() { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, "support.type": supportType, "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); this.$rules = { "start" : [{ include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", next: "ruleset" }, { token: "paren.rparen", regex: "\\}" }, { token: "string", regex: "@", 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 : numRe }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], "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", // multi line comment regex: "\\/\\*", push: [{ token : "comment", regex : "\\*\\/", next : "pop" }, { defaultToken : "comment" }] }], "ruleset" : [{ regex : "-(webkit|ms|moz|o)-", token : "text" }, { token : "paren.rparen", regex : "\\}", next : "start" }, { include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" }, { token : "constant.numeric", regex : numRe }, { token : "constant.numeric", // hex6 color regex : "#[a-f0-9]{6}" }, { token : "constant.numeric", // hex3 color regex : "#[a-f0-9]{3}" }, { token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], regex : pseudoElements }, { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true }], 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: true }, { defaultToken: "string" }] }, { token : "string.start", regex : '"', push : [{ token : "string.end", regex : '"|$', next: "pop" }, { include : "escapes" }, { token : "constant.language.escape", regex : /\\$/, consumeLineEnd: true }, { defaultToken: "string" }] }], escapes: [{ token : "constant.language.escape", regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] }; this.normalizeRules(); }; oop.inherits(CssHighlightRules, TextHighlightRules); exports.CssHighlightRules = CssHighlightRules; }); ace.define("ace/mode/css_completions",["require","exports","module"], function(acequire, exports, module) { "use strict"; var propertyMap = { "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 } }; var CssCompletions = function() { }; (function() { this.completionsDefined = false; this.defineCompletions = function() { if (document) { var style = document.createElement('c').style; for (var i in style) { if (typeof style[i] !== 'string') continue; var name = i.replace(/[A-Z]/g, function(x) { return '-' + x.toLowerCase(); }); if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } this.completionsDefined = true; }; this.getCompletions = function(state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (state==='ruleset'){ var line = session.getLine(pos.row).substr(0, pos.column); if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); return this.getPropertyValueCompletions(state, session, pos, prefix); } else { return this.getPropertyCompletions(state, session, pos, prefix); } } return []; }; this.getPropertyCompletions = function(state, session, pos, prefix) { var properties = Object.keys(propertyMap); return properties.map(function(property){ return { caption: property, snippet: property + ': $0;', meta: "property", score: Number.MAX_VALUE }; }); }; this.getPropertyValueCompletions = function(state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } return values.map(function(value){ return { caption: value, snippet: value, meta: "property value", score: Number.MAX_VALUE }; }); }; }).call(CssCompletions.prototype); exports.CssCompletions = CssCompletions; }); ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Behaviour = acequire("../behaviour").Behaviour; var CstyleBehaviour = acequire("./cstyle").CstyleBehaviour; var TokenIterator = acequire("../../token_iterator").TokenIterator; var CssBehaviour = function () { this.inherit(CstyleBehaviour); this.add("colon", "insertion", function (state, action, editor, session, text) { if (text === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { text: '', selection: [1, 1] }; } if (!line.substring(cursor.column).match(/^\s*;/)) { return { text: ':;', selection: [1, 1] }; } } } }); this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { range.end.column ++; return range; } } } }); this.add("semicolon", "insertion", function (state, action, editor, session, text) { if (text === ';') { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { text: '', selection: [1, 1] }; } } }); }; oop.inherits(CssBehaviour, CstyleBehaviour); exports.CssBehaviour = CssBehaviour; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CssCompletions = acequire("./css_completions").CssCompletions; var CssBehaviour = acequire("./behaviour/css").CssBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); this.$completer = new CssCompletions(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.foldingRules = "cStyle"; this.blockComment = {start: "/*", end: "*/"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(25), "Worker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/css"; }).call(Mode.prototype); exports.Mode = Mode; }); ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var XmlHighlightRules = function(normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; this.$rules = { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", 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: true }, {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 : tagRegex }, { 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 : "(<\\!)(" + tagRegex + ")", 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 : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")", 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 : tagRegex }, { 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"} ] }] }; if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; (function() { this.embedTagRules = function(HighlightRules, prefix, tag){ this.$rules.tag.unshift({ token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], regex : "(<)(" + tag + "(?=\\s|>|$))", next: [ {include : "attributes"}, {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} ] }); this.$rules[tag + "-end"] = [ {include : "attributes"}, {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", onMatch : function(value, currentState, stack) { stack.splice(0); return this.token; }} ]; this.embedRules(HighlightRules, prefix, [{ token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], regex : "(</)(" + tag + "(?=\\s|>|$))", next: tag + "-end" }, { token: "string.cdata.xml", regex : "<\\!\\[CDATA\\[" }, { token: "string.cdata.xml", regex : "\\]\\]>" }]); }; }).call(TextHighlightRules.prototype); oop.inherits(XmlHighlightRules, TextHighlightRules); exports.XmlHighlightRules = XmlHighlightRules; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = acequire("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = acequire("./xml_highlight_rules").XmlHighlightRules; var tagMap = lang.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' }); var HtmlHighlightRules = function() { XmlHighlightRules.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(start, tag) { var group = tagMap[tag]; return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (group ? "." + group : "") + ".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(CssHighlightRules, "css-", "style"); this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; oop.inherits(HtmlHighlightRules, XmlHighlightRules); exports.HtmlHighlightRules = HtmlHighlightRules; }); ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Behaviour = acequire("../behaviour").Behaviour; var TokenIterator = acequire("../../token_iterator").TokenIterator; var lang = acequire("../../lib/lang"); function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } var XmlBehaviour = function () { this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; var selected = session.doc.getTextRange(editor.getSelectionRange()); if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { return { text: quote + selected + quote, selection: false }; } var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } if (!token) token = iterator.stepBackward(); if (!token) return; while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } var rightSpace = !rightChar || rightChar.match(/\s/); if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { return { text: quote + quote, selection: [1, 1] }; } } }); this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.start.column + 1, range.start.column + 2); if (rightChar == selected) { range.end.column++; return range; } } }); this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; var iterator = new TokenIterator(session, position.row, position.column); var token = iterator.getCurrentToken() || iterator.stepBackward(); if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) return; if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { var firstChar = token.value.charAt(0); if (firstChar == '"' || firstChar == "'") { var lastChar = token.value.charAt(token.value.length - 1); var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) return; } } while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { token = iterator.stepForward(); break; } } var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); if (this.voidElements.hasOwnProperty(element.toLowerCase())) return; return { text: ">" + "</" + element + ">", selection: [1, 1] }; } }); this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } if (!token) { return; } var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } if (this.voidElements && !this.voidElements[tag]) { var nextToken = session.getTokenAt(cursor.row, cursor.column+1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); if (nextToken && nextToken.value === "</") { return { text: "\n" + indent + "\n" + nextIndent, selection: [1, indent.length, 1, indent.length] }; } else { return { text: "\n" + indent }; } } } } }); }; oop.inherits(XmlBehaviour, Behaviour); exports.XmlBehaviour = XmlBehaviour; }); ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(defaultMode, subModes) { this.defaultMode = defaultMode; this.subModes = subModes; }; oop.inherits(FoldMode, BaseFoldMode); (function() { this.$getMode = function(state) { if (typeof state != "string") state = state[0]; for (var key in this.subModes) { if (state.indexOf(key) === 0) return this.subModes[key]; } return null; }; this.$tryMode = function(state, session, foldStyle, row) { var mode = this.$getMode(state); return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); }; this.getFoldWidget = function(session, foldStyle, row) { return ( this.$tryMode(session.getState(row-1), session, foldStyle, row) || this.$tryMode(session.getState(row), session, foldStyle, row) || this.defaultMode.getFoldWidget(session, foldStyle, row) ); }; this.getFoldWidgetRange = function(session, foldStyle, row) { var mode = this.$getMode(session.getState(row-1)); if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.$getMode(session.getState(row)); if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.defaultMode; return mode.getFoldWidgetRange(session, foldStyle, row); }; }).call(FoldMode.prototype); }); ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var lang = acequire("../../lib/lang"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var TokenIterator = acequire("../../token_iterator").TokenIterator; var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) { BaseFoldMode.call(this); this.voidElements = voidElements || {}; this.optionalEndTags = oop.mixin({}, this.voidElements); if (optionalEndTags) oop.mixin(this.optionalEndTags, optionalEndTags); }; oop.inherits(FoldMode, BaseFoldMode); var Tag = function() { this.tagName = ""; this.closing = false; this.selfClosing = false; this.start = {row: 0, column: 0}; this.end = {row: 0, column: 0}; }; function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } (function() { this.getFoldWidget = function(session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); if (!tag) return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; return "start"; }; this.getCommentFoldWidget = function(session, row) { if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) return "start"; return ""; }; this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (is(token, "tag-open")) { tag.end.column = tag.start.column + token.value.length; tag.closing = is(token, "end-tag-open"); token = tokens[++i]; if (!token) return null; tag.tagName = token.value; tag.end.column += token.value.length; for (i++; i < tokens.length; i++) { token = tokens[i]; tag.end.column += token.value.length; if (is(token, "tag-close")) { tag.selfClosing = token.value == '/>'; break; } } return tag; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == '/>'; return tag; } tag.start.column += token.value.length; } return null; }; this._findEndTagInLine = function(session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; column += token.value.length; if (column < startColumn) continue; if (is(token, "end-tag-open")) { token = tokens[i + 1]; if (token && token.value == tagName) return true; } } return false; }; this._readTagForward = function(iterator) { var token = iterator.getCurrentToken(); if (!token) return null; var tag = new Tag(); do { if (is(token, "tag-open")) { tag.closing = is(token, "end-tag-open"); tag.start.row = iterator.getCurrentTokenRow(); tag.start.column = iterator.getCurrentTokenColumn(); } else if (is(token, "tag-name")) { tag.tagName = token.value; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == "/>"; tag.end.row = iterator.getCurrentTokenRow(); tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; iterator.stepForward(); return tag; } } while(token = iterator.stepForward()); return null; }; this._readTagBackward = function(iterator) { var token = iterator.getCurrentToken(); if (!token) return null; var tag = new Tag(); do { if (is(token, "tag-open")) { tag.closing = is(token, "end-tag-open"); tag.start.row = iterator.getCurrentTokenRow(); tag.start.column = iterator.getCurrentTokenColumn(); iterator.stepBackward(); return tag; } else if (is(token, "tag-name")) { tag.tagName = token.value; } else if (is(token, "tag-close")) { tag.selfClosing = token.value == "/>"; tag.end.row = iterator.getCurrentTokenRow(); tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; } } while(token = iterator.stepBackward()); return null; }; this._pop = function(stack, tag) { while (stack.length) { var top = stack[stack.length-1]; if (!tag || top.tagName == tag.tagName) { return stack.pop(); } else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { stack.pop(); continue; } else { return null; } } }; this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); if (!firstTag) { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; var tag; if (!isBackward) { var iterator = new TokenIterator(session, row, firstTag.start.column); var start = { row: row, column: firstTag.start.column + firstTag.tagName.length + 2 }; if (firstTag.start.row == firstTag.end.row) start.column = firstTag.end.column; while (tag = this._readTagForward(iterator)) { if (tag.selfClosing) { if (!stack.length) { tag.start.column += tag.tagName.length + 2; tag.end.column -= 2; return Range.fromPoints(tag.start, tag.end); } else continue; } if (tag.closing) { this._pop(stack, tag); if (stack.length == 0) return Range.fromPoints(start, tag.start); } else { stack.push(tag); } } } else { var iterator = new TokenIterator(session, row, firstTag.end.column); var end = { row: row, column: firstTag.start.column }; while (tag = this._readTagBackward(iterator)) { if (tag.selfClosing) { if (!stack.length) { tag.start.column += tag.tagName.length + 2; tag.end.column -= 2; return Range.fromPoints(tag.start, tag.end); } else continue; } if (!tag.closing) { this._pop(stack, tag); if (stack.length == 0) { tag.start.column += tag.tagName.length + 2; if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) tag.start.column = tag.end.column; return Range.fromPoints(tag.start, end); } } else { stack.push(tag); } } } }; }).call(FoldMode.prototype); }); ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var MixedFoldMode = acequire("./mixed").FoldMode; var XmlFoldMode = acequire("./xml").FoldMode; var CStyleFoldMode = acequire("./cstyle").FoldMode; var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; oop.inherits(FoldMode, MixedFoldMode); }); ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var TokenIterator = acequire("../token_iterator").TokenIterator; var commonAttributes = [ "accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate" ]; var eventAttributes = [ "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" ]; var globalAttributes = commonAttributes.concat(eventAttributes); var attributeMap = { "html": {"manifest": 1}, "head": {}, "title": {}, "base": {"href": 1, "target": 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}, "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, "noscript": {"href": 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}, "section": {}, "nav": {}, "article": {"pubdate": 1}, "aside": {}, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, "header": {}, "footer": {}, "address": {}, "main": {}, "p": {}, "hr": {}, "pre": {}, "blockquote": {"cite": 1}, "ol": {"start": 1, "reversed": 1}, "ul": {}, "li": {"value": 1}, "dl": {}, "dt": {}, "dd": {}, "figure": {}, "figcaption": {}, "div": {}, "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}, "em": {}, "strong": {}, "small": {}, "s": {}, "cite": {}, "q": {"cite": 1}, "dfn": {}, "abbr": {}, "data": {}, "time": {"datetime": 1}, "code": {}, "var": {}, "samp": {}, "kbd": {}, "sub": {}, "sup": {}, "i": {}, "b": {}, "u": {}, "mark": {}, "ruby": {}, "rt": {}, "rp": {}, "bdi": {}, "bdo": {}, "span": {}, "br": {}, "wbr": {}, "ins": {"cite": 1, "datetime": 1}, "del": {"cite": 1, "datetime": 1}, "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, "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}}, "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, "param": {"name": 1, "value": 1}, "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}}, "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, "source": {"src": 1, "type": 1, "media": 1}, "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, "canvas": {"width": 1, "height": 1}, "map": {"name": 1}, "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, "math": {}, "table": {"summary": 1}, "caption": {}, "colgroup": {"span": 1}, "col": {"span": 1}, "tbody": {}, "thead": {}, "tfoot": {}, "tr": {}, "td": {"headers": 1, "rowspan": 1, "colspan": 1}, "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, "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}}, "fieldset": {"disabled": 1, "form": 1, "name": 1}, "legend": {}, "label": {"form": 1, "for": 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}, "acequired": {"acequired": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, "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}}, "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, "datalist": {}, "optgroup": {"disabled": 1, "label": 1}, "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "acequired": {"acequired": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, "output": {"for": 1, "form": 1, "name": 1}, "progress": {"value": 1, "max": 1}, "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, "details": {"open": 1}, "summary": {}, "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, "menu": {"type": 1, "label": 1}, "dialog": {"open": 1} }; var elements = Object.keys(attributeMap); function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); while (token && !is(token, "tag-name")){ token = iterator.stepBackward(); } if (token) return token.value; } function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); while (token && !is(token, "attribute-name")){ token = iterator.stepBackward(); } if (token) return token.value; } var HtmlCompletions = function() { }; (function() { this.getCompletions = function(state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) return this.getTagCompletions(state, session, pos, prefix); if (is(token, "tag-whitespace") || is(token, "attribute-name")) return this.getAttributeCompletions(state, session, pos, prefix); if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; }; this.getTagCompletions = function(state, session, pos, prefix) { return elements.map(function(element){ return { value: element, meta: "tag", score: Number.MAX_VALUE }; }); }; this.getAttributeCompletions = function(state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; var attributes = globalAttributes; if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } return attributes.map(function(attribute){ return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", score: Number.MAX_VALUE }; }); }; this.getAttributeValueCompletions = function(state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } return values.map(function(value){ return { caption: value, snippet: value, meta: "attribute value", score: Number.MAX_VALUE }; }); }; this.getHTMLEntityCompletions = function(state, session, pos, prefix) { var values = ['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 values.map(function(value){ return { caption: value, snippet: value, meta: "html entity", score: Number.MAX_VALUE }; }); }; }).call(HtmlCompletions.prototype); exports.HtmlCompletions = HtmlCompletions; }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextMode = acequire("./text").Mode; var JavaScriptMode = acequire("./javascript").Mode; var CssMode = acequire("./css").Mode; var HtmlHighlightRules = acequire("./html_highlight_rules").HtmlHighlightRules; var XmlBehaviour = acequire("./behaviour/xml").XmlBehaviour; var HtmlFoldMode = acequire("./folding/html").FoldMode; var HtmlCompletions = acequire("./html_completions").HtmlCompletions; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; var Mode = function(options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); (function() { this.blockComment = {start: "<!--", end: "-->"}; this.voidElements = lang.arrayToMap(voidElements); this.getNextLineIndent = function(state, line, tab) { return this.$getIndent(line); }; this.checkOutdent = function(state, line, input) { return false; }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.createWorker = function(session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], __webpack_require__(27), "Worker"); worker.attachToDocument(session.getDocument()); if (this.fragmentContext) worker.call("setOptions", [{context: this.fragmentContext}]); worker.on("error", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/html"; }).call(Mode.prototype); exports.Mode = Mode; }); /***/ }), /* 286 */ /***/ (function(module, exports, __webpack_require__) { ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var lang = acequire("../lib/lang"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; var supportType = exports.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|min-height|min-width|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|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.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|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"; var supportConstantColor = exports.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"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.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|acequired|root|target|valid|visited)\\b"; var CssHighlightRules = function() { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, "support.type": supportType, "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); this.$rules = { "start" : [{ include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", next: "ruleset" }, { token: "paren.rparen", regex: "\\}" }, { token: "string", regex: "@", 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 : numRe }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], "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", // multi line comment regex: "\\/\\*", push: [{ token : "comment", regex : "\\*\\/", next : "pop" }, { defaultToken : "comment" }] }], "ruleset" : [{ regex : "-(webkit|ms|moz|o)-", token : "text" }, { token : "paren.rparen", regex : "\\}", next : "start" }, { include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" }, { token : "constant.numeric", regex : numRe }, { token : "constant.numeric", // hex6 color regex : "#[a-f0-9]{6}" }, { token : "constant.numeric", // hex3 color regex : "#[a-f0-9]{3}" }, { token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], regex : pseudoElements }, { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true }], 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: true }, { defaultToken: "string" }] }, { token : "string.start", regex : '"', push : [{ token : "string.end", regex : '"|$', next: "pop" }, { include : "escapes" }, { token : "constant.language.escape", regex : /\\$/, consumeLineEnd: true }, { defaultToken: "string" }] }], escapes: [{ token : "constant.language.escape", regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] }; this.normalizeRules(); }; oop.inherits(CssHighlightRules, TextHighlightRules); exports.CssHighlightRules = CssHighlightRules; }); ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(acequire, exports, module) { "use strict"; var Range = acequire("../range").Range; var MatchingBraceOutdent = function() {}; (function() { this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*\}/.test(input); }; this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.$getIndent = function(line) { return line.match(/^\s*/)[0]; }; }).call(MatchingBraceOutdent.prototype); exports.MatchingBraceOutdent = MatchingBraceOutdent; }); ace.define("ace/mode/css_completions",["require","exports","module"], function(acequire, exports, module) { "use strict"; var propertyMap = { "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 } }; var CssCompletions = function() { }; (function() { this.completionsDefined = false; this.defineCompletions = function() { if (document) { var style = document.createElement('c').style; for (var i in style) { if (typeof style[i] !== 'string') continue; var name = i.replace(/[A-Z]/g, function(x) { return '-' + x.toLowerCase(); }); if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } this.completionsDefined = true; }; this.getCompletions = function(state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; if (state==='ruleset'){ var line = session.getLine(pos.row).substr(0, pos.column); if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); return this.getPropertyValueCompletions(state, session, pos, prefix); } else { return this.getPropertyCompletions(state, session, pos, prefix); } } return []; }; this.getPropertyCompletions = function(state, session, pos, prefix) { var properties = Object.keys(propertyMap); return properties.map(function(property){ return { caption: property, snippet: property + ': $0;', meta: "property", score: Number.MAX_VALUE }; }); }; this.getPropertyValueCompletions = function(state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } return values.map(function(value){ return { caption: value, snippet: value, meta: "property value", score: Number.MAX_VALUE }; }); }; }).call(CssCompletions.prototype); exports.CssCompletions = CssCompletions; }); ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Behaviour = acequire("../behaviour").Behaviour; var CstyleBehaviour = acequire("./cstyle").CstyleBehaviour; var TokenIterator = acequire("../../token_iterator").TokenIterator; var CssBehaviour = function () { this.inherit(CstyleBehaviour); this.add("colon", "insertion", function (state, action, editor, session, text) { if (text === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { text: '', selection: [1, 1] }; } if (!line.substring(cursor.column).match(/^\s*;/)) { return { text: ':;', selection: [1, 1] }; } } } }); this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); if (token && token.value.match(/\s+/)) { token = iterator.stepBackward(); } if (token && token.type === 'support.type') { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { range.end.column ++; return range; } } } }); this.add("semicolon", "insertion", function (state, action, editor, session, text) { if (text === ';') { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { text: '', selection: [1, 1] }; } } }); }; oop.inherits(CssBehaviour, CstyleBehaviour); exports.CssBehaviour = CssBehaviour; }); ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; var oop = acequire("../../lib/oop"); var Range = acequire("../../range").Range; var BaseFoldMode = acequire("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function(commentRegex) { if (commentRegex) { this.foldingStartMarker = new RegExp( this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) ); this.foldingStopMarker = new RegExp( this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) ); } }; oop.inherits(FoldMode, BaseFoldMode); (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(session, foldStyle, row) { var line = session.getLine(row); if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } var fw = this._getFoldWidgetBase(session, foldStyle, row); if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart return fw; }; this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { var line = session.getLine(row); if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; if (match[1]) return this.openingBracketBlock(session, match[1], row, i); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } else if (foldStyle != "all") range = null; } return range; } if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; if (match[1]) return this.closingBracketBlock(session, match[1], row, i); return session.getCommentFoldRange(row, i, -1); } }; this.getSectionRange = function(session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; var startColumn = line.length; row = row + 1; var endRow = row; var maxRow = session.getLength(); while (++row < maxRow) { line = session.getLine(row); var indent = line.search(/\S/); if (indent === -1) continue; if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { if (subRange.start.row <= startRow) { break; } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { break; } } endRow = row; } return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; this.getCommentRegionBlock = function(session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); if (!m) continue; if (m[1]) depth--; else depth++; if (!depth) break; } var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; }).call(FoldMode.prototype); }); ace.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(acequire, exports, module) { "use strict"; var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var CssHighlightRules = acequire("./css_highlight_rules").CssHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var WorkerClient = acequire("../worker/worker_client").WorkerClient; var CssCompletions = acequire("./css_completions").CssCompletions; var CssBehaviour = acequire("./behaviour/css").CssBehaviour; var CStyleFoldMode = acequire("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); this.$completer = new CssCompletions(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.foldingRules = "cStyle"; this.blockComment = {start: "/*", end: "*/"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.getCompletions = function(state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; this.createWorker = function(session) { var worker = new WorkerClient(["ace"], __webpack_require__(25), "Worker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(e) { session.setAnnotations(e.data); }); worker.on("terminate", function() { session.clearAnnotations(); }); return worker; }; this.$id = "ace/mode/css"; }).call(Mode.prototype); exports.Mode = Mode; }); /***/ }), /* 287 */ /***/ (function(module, exports) { ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"], function(acequire, exports, module) { "use strict"; var oop = acequire("./lib/oop"); var EventEmitter = acequire("./lib/event_emitter").EventEmitter; var lang = acequire("./lib/lang"); var Range = acequire("./range").Range; var Anchor = acequire("./anchor").Anchor; var HashHandler = acequire("./keyboard/hash_handler").HashHandler; var Tokenizer = acequire("./tokenizer").Tokenizer; var comparePoints = Range.comparePoints; var SnippetManager = function() { this.snippetMap = {}; this.snippetNameMap = {}; }; (function() { oop.implement(this, EventEmitter); this.getTokenizer = function() { function TabstopToken(str, _, stack) { str = str.substr(1); if (/^\d+$/.test(str) && !stack.inFormatString) return [{tabstopId: parseInt(str, 10)}]; return [{text: str}]; } function escape(ch) { return "(?:[^\\\\" + ch + "]|\\\\.)"; } SnippetManager.$tokenizer = new Tokenizer({ start: [ {regex: /:/, onMatch: function(val, state, stack) { if (stack.length && stack[0].expectIf) { stack[0].expectIf = false; stack[0].elseBranch = stack[0]; return [stack[0]]; } return ":"; }}, {regex: /\\./, onMatch: function(val, state, stack) { var ch = val[1]; if (ch == "}" && stack.length) { val = ch; }else if ("`$\\".indexOf(ch) != -1) { val = ch; } else if (stack.inFormatString) { if (ch == "n") val = "\n"; else if (ch == "t") val = "\n"; else if ("ulULE".indexOf(ch) != -1) { val = {changeCase: ch, local: ch > "a"}; } } return [val]; }}, {regex: /}/, onMatch: function(val, state, stack) { return [stack.length ? stack.shift() : val]; }}, {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { var t = TabstopToken(str.substr(1), state, stack); stack.unshift(t[0]); return t; }, next: "snippetVar"}, {regex: /\n/, token: "newline", merge: false} ], snippetVar: [ {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { stack[0].choices = val.slice(1, -1).split(","); }, next: "start"}, {regex: "/(" + escape("/") + "+)/(?:(" + escape("/") + "*)/)(\\w*):?", onMatch: function(val, state, stack) { var ts = stack[0]; ts.fmtString = val; val = this.splitRegex.exec(val); ts.guard = val[1]; ts.fmt = val[2]; ts.flag = val[3]; return ""; }, next: "start"}, {regex: "`" + escape("`") + "*`", onMatch: function(val, state, stack) { stack[0].code = val.splice(1, -1); return ""; }, next: "start"}, {regex: "\\?", onMatch: function(val, state, stack) { if (stack[0]) stack[0].expectIf = true; }, next: "start"}, {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} ], formatString: [ {regex: "/(" + escape("/") + "+)/", token: "regex"}, {regex: "", onMatch: function(val, state, stack) { stack.inFormatString = true; }, next: "start"} ] }); SnippetManager.prototype.getTokenizer = function() { return SnippetManager.$tokenizer; }; return SnippetManager.$tokenizer; }; this.tokenizeTmSnippet = function(str, startState) { return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { return x.value || x; }); }; this.$getDefaultValue = function(editor, name) { if (/^[A-Z]\d+$/.test(name)) { var i = name.substr(1); return (this.variables[name[0] + "__"] || {})[i]; } if (/^\d+$/.test(name)) { return (this.variables.__ || {})[name]; } name = name.replace(/^TM_/, ""); if (!editor) return; var s = editor.session; switch(name) { case "CURRENT_WORD": var r = s.getWordRange(); case "SELECTION": case "SELECTED_TEXT": return s.getTextRange(r); case "CURRENT_LINE": return s.getLine(editor.getCursorPosition().row); case "PREV_LINE": // not possible in textmate return s.getLine(editor.getCursorPosition().row - 1); case "LINE_INDEX": return editor.getCursorPosition().column; case "LINE_NUMBER": return editor.getCursorPosition().row + 1; case "SOFT_TABS": return s.getUseSoftTabs() ? "YES" : "NO"; case "TAB_SIZE": return s.getTabSize(); case "FILENAME": case "FILEPATH": return ""; case "FULLNAME": return "Ace"; } }; this.variables = {}; this.getVariableValue = function(editor, varName) { if (this.variables.hasOwnProperty(varName)) return this.variables[varName](editor, varName) || ""; return this.$getDefaultValue(editor, varName) || ""; }; this.tmStrFormat = function(str, ch, editor) { var flag = ch.flag || ""; var re = ch.guard; re = new RegExp(re, flag.replace(/[^gi]/, "")); var fmtTokens = this.tokenizeTmSnippet(ch.fmt, "formatString"); var _self = this; var formatted = str.replace(re, function() { _self.variables.__ = arguments; var fmtParts = _self.resolveVariables(fmtTokens, editor); var gChangeCase = "E"; for (var i = 0; i < fmtParts.length; i++) { var ch = fmtParts[i]; if (typeof ch == "object") { fmtParts[i] = ""; if (ch.changeCase && ch.local) { var next = fmtParts[i + 1]; if (next && typeof next == "string") { if (ch.changeCase == "u") fmtParts[i] = next[0].toUpperCase(); else fmtParts[i] = next[0].toLowerCase(); fmtParts[i + 1] = next.substr(1); } } else if (ch.changeCase) { gChangeCase = ch.changeCase; } } else if (gChangeCase == "U") { fmtParts[i] = ch.toUpperCase(); } else if (gChangeCase == "L") { fmtParts[i] = ch.toLowerCase(); } } return fmtParts.join(""); }); this.variables.__ = null; return formatted; }; this.resolveVariables = function(snippet, editor) { var result = []; for (var i = 0; i < snippet.length; i++) { var ch = snippet[i]; if (typeof ch == "string") { result.push(ch); } else if (typeof ch != "object") { continue; } else if (ch.skip) { gotoNext(ch); } else if (ch.processed < i) { continue; } else if (ch.text) { var value = this.getVariableValue(editor, ch.text); if (value && ch.fmtString) value = this.tmStrFormat(value, ch); ch.processed = i; if (ch.expectIf == null) { if (value) { result.push(value); gotoNext(ch); } } else { if (value) { ch.skip = ch.elseBranch; } else gotoNext(ch); } } else if (ch.tabstopId != null) { result.push(ch); } else if (ch.changeCase != null) { result.push(ch); } } function gotoNext(ch) { var i1 = snippet.indexOf(ch, i + 1); if (i1 != -1) i = i1; } return result; }; this.insertSnippetForSelection = function(editor, snippetText) { var cursor = editor.getCursorPosition(); var line = editor.session.getLine(cursor.row); var tabString = editor.session.getTabString(); var indentString = line.match(/^\s*/)[0]; if (cursor.column < indentString.length) indentString = indentString.slice(0, cursor.column); snippetText = snippetText.replace(/\r/g, ""); var tokens = this.tokenizeTmSnippet(snippetText); tokens = this.resolveVariables(tokens, editor); tokens = tokens.map(function(x) { if (x == "\n") return x + indentString; if (typeof x == "string") return x.replace(/\t/g, tabString); return x; }); var tabstops = []; tokens.forEach(function(p, i) { if (typeof p != "object") return; var id = p.tabstopId; var ts = tabstops[id]; if (!ts) { ts = tabstops[id] = []; ts.index = id; ts.value = ""; } if (ts.indexOf(p) !== -1) return; ts.push(p); var i1 = tokens.indexOf(p, i + 1); if (i1 === -1) return; var value = tokens.slice(i + 1, i1); var isNested = value.some(function(t) {return typeof t === "object";}); if (isNested && !ts.value) { ts.value = value; } else if (value.length && (!ts.value || typeof ts.value !== "string")) { ts.value = value.join(""); } }); tabstops.forEach(function(ts) {ts.length = 0;}); var expanding = {}; function copyValue(val) { var copy = []; for (var i = 0; i < val.length; i++) { var p = val[i]; if (typeof p == "object") { if (expanding[p.tabstopId]) continue; var j = val.lastIndexOf(p, i - 1); p = copy[j] || {tabstopId: p.tabstopId}; } copy[i] = p; } return copy; } for (var i = 0; i < tokens.length; i++) { var p = tokens[i]; if (typeof p != "object") continue; var id = p.tabstopId; var i1 = tokens.indexOf(p, i + 1); if (expanding[id]) { if (expanding[id] === p) expanding[id] = null; continue; } var ts = tabstops[id]; var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value); arg.unshift(i + 1, Math.max(0, i1 - i)); arg.push(p); expanding[id] = p; tokens.splice.apply(tokens, arg); if (ts.indexOf(p) === -1) ts.push(p); } var row = 0, column = 0; var text = ""; tokens.forEach(function(t) { if (typeof t === "string") { var lines = t.split("\n"); if (lines.length > 1){ column = lines[lines.length - 1].length; row += lines.length - 1; } else column += t.length; text += t; } else { if (!t.start) t.start = {row: row, column: column}; else t.end = {row: row, column: column}; } }); var range = editor.getSelectionRange(); var end = editor.session.replace(range, text); var tabstopManager = new TabstopManager(editor); var selectionId = editor.inVirtualSelectionMode && editor.selection.index; tabstopManager.addTabstops(tabstops, range.start, end, selectionId); }; this.insertSnippet = function(editor, snippetText) { var self = this; if (editor.inVirtualSelectionMode) return self.insertSnippetForSelection(editor, snippetText); editor.forEachSelection(function() { self.insertSnippetForSelection(editor, snippetText); }, null, {keepOrder: true}); if (editor.tabstopManager) editor.tabstopManager.tabNext(); }; this.$getScope = function(editor) { var scope = editor.session.$mode.$id || ""; scope = scope.split("/").pop(); if (scope === "html" || scope === "php") { if (scope === "php" && !editor.session.$mode.inlinePhp) scope = "html"; var c = editor.getCursorPosition(); var state = editor.session.getState(c.row); if (typeof state === "object") { state = state[0]; } if (state.substring) { if (state.substring(0, 3) == "js-") scope = "javascript"; else if (state.substring(0, 4) == "css-") scope = "css"; else if (state.substring(0, 4) == "php-") scope = "php"; } } return scope; }; this.getActiveScopes = function(editor) { var scope = this.$getScope(editor); var scopes = [scope]; var snippetMap = this.snippetMap; if (snippetMap[scope] && snippetMap[scope].includeScopes) { scopes.push.apply(scopes, snippetMap[scope].includeScopes); } scopes.push("_"); return scopes; }; this.expandWithTab = function(editor, options) { var self = this; var result = editor.forEachSelection(function() { return self.expandSnippetForSelection(editor, options); }, null, {keepOrder: true}); if (result && editor.tabstopManager) editor.tabstopManager.tabNext(); return result; }; this.expandSnippetForSelection = function(editor, options) { var cursor = editor.getCursorPosition(); var line = editor.session.getLine(cursor.row); var before = line.substring(0, cursor.column); var after = line.substr(cursor.column); var snippetMap = this.snippetMap; var snippet; this.getActiveScopes(editor).some(function(scope) { var snippets = snippetMap[scope]; if (snippets) snippet = this.findMatchingSnippet(snippets, before, after); return !!snippet; }, this); if (!snippet) return false; if (options && options.dryRun) return true; editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length ); this.variables.M__ = snippet.matchBefore; this.variables.T__ = snippet.matchAfter; this.insertSnippetForSelection(editor, snippet.content); this.variables.M__ = this.variables.T__ = null; return true; }; this.findMatchingSnippet = function(snippetList, before, after) { for (var i = snippetList.length; i--;) { var s = snippetList[i]; if (s.startRe && !s.startRe.test(before)) continue; if (s.endRe && !s.endRe.test(after)) continue; if (!s.startRe && !s.endRe) continue; s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; return s; } }; this.snippetMap = {}; this.snippetNameMap = {}; this.register = function(snippets, scope) { var snippetMap = this.snippetMap; var snippetNameMap = this.snippetNameMap; var self = this; if (!snippets) snippets = []; function wrapRegexp(src) { if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) src = "(?:" + src + ")"; return src || ""; } function guardedRegexp(re, guard, opening) { re = wrapRegexp(re); guard = wrapRegexp(guard); if (opening) { re = guard + re; if (re && re[re.length - 1] != "$") re = re + "$"; } else { re = re + guard; if (re && re[0] != "^") re = "^" + re; } return new RegExp(re); } function addSnippet(s) { if (!s.scope) s.scope = scope || "_"; scope = s.scope; if (!snippetMap[scope]) { snippetMap[scope] = []; snippetNameMap[scope] = {}; } var map = snippetNameMap[scope]; if (s.name) { var old = map[s.name]; if (old) self.unregister(old); map[s.name] = s; } snippetMap[scope].push(s); if (s.tabTrigger && !s.trigger) { if (!s.guard && /^\w/.test(s.tabTrigger)) s.guard = "\\b"; s.trigger = lang.escapeRegExp(s.tabTrigger); } if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) return; s.startRe = guardedRegexp(s.trigger, s.guard, true); s.triggerRe = new RegExp(s.trigger, "", true); s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); s.endTriggerRe = new RegExp(s.endTrigger, "", true); } if (snippets && snippets.content) addSnippet(snippets); else if (Array.isArray(snippets)) snippets.forEach(addSnippet); this._signal("registerSnippets", {scope: scope}); }; this.unregister = function(snippets, scope) { var snippetMap = this.snippetMap; var snippetNameMap = this.snippetNameMap; function removeSnippet(s) { var nameMap = snippetNameMap[s.scope||scope]; if (nameMap && nameMap[s.name]) { delete nameMap[s.name]; var map = snippetMap[s.scope||scope]; var i = map && map.indexOf(s); if (i >= 0) map.splice(i, 1); } } if (snippets.content) removeSnippet(snippets); else if (Array.isArray(snippets)) snippets.forEach(removeSnippet); }; this.parseSnippetFile = function(str) { str = str.replace(/\r/g, ""); var list = [], snippet = {}; var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; var m; while (m = re.exec(str)) { if (m[1]) { try { snippet = JSON.parse(m[1]); list.push(snippet); } catch (e) {} } if (m[4]) { snippet.content = m[4].replace(/^\t/gm, ""); list.push(snippet); snippet = {}; } else { var key = m[2], val = m[3]; if (key == "regex") { var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; snippet.guard = guardRe.exec(val)[1]; snippet.trigger = guardRe.exec(val)[1]; snippet.endTrigger = guardRe.exec(val)[1]; snippet.endGuard = guardRe.exec(val)[1]; } else if (key == "snippet") { snippet.tabTrigger = val.match(/^\S*/)[0]; if (!snippet.name) snippet.name = val; } else { snippet[key] = val; } } } return list; }; this.getSnippetByName = function(name, editor) { var snippetMap = this.snippetNameMap; var snippet; this.getActiveScopes(editor).some(function(scope) { var snippets = snippetMap[scope]; if (snippets) snippet = snippets[name]; return !!snippet; }, this); return snippet; }; }).call(SnippetManager.prototype); var TabstopManager = function(editor) { if (editor.tabstopManager) return editor.tabstopManager; editor.tabstopManager = this; this.$onChange = this.onChange.bind(this); this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; this.$onChangeSession = this.onChangeSession.bind(this); this.$onAfterExec = this.onAfterExec.bind(this); this.attach(editor); }; (function() { this.attach = function(editor) { this.index = 0; this.ranges = []; this.tabstops = []; this.$openTabstops = null; this.selectedTabstop = null; this.editor = editor; this.editor.on("change", this.$onChange); this.editor.on("changeSelection", this.$onChangeSelection); this.editor.on("changeSession", this.$onChangeSession); this.editor.commands.on("afterExec", this.$onAfterExec); this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); }; this.detach = function() { this.tabstops.forEach(this.removeTabstopMarkers, this); this.ranges = null; this.tabstops = null; this.selectedTabstop = null; this.editor.removeListener("change", this.$onChange); this.editor.removeListener("changeSelection", this.$onChangeSelection); this.editor.removeListener("changeSession", this.$onChangeSession); this.editor.commands.removeListener("afterExec", this.$onAfterExec); this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); this.editor.tabstopManager = null; this.editor = null; }; this.onChange = function(delta) { var changeRange = delta; var isRemove = delta.action[0] == "r"; var start = delta.start; var end = delta.end; var startRow = start.row; var endRow = end.row; var lineDif = endRow - startRow; var colDiff = end.column - start.column; if (isRemove) { lineDif = -lineDif; colDiff = -colDiff; } if (!this.$inChange && isRemove) { var ts = this.selectedTabstop; var changedOutside = ts && !ts.some(function(r) { return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0; }); if (changedOutside) return this.detach(); } var ranges = this.ranges; for (var i = 0; i < ranges.length; i++) { var r = ranges[i]; if (r.end.row < start.row) continue; if (isRemove && comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) { this.removeRange(r); i--; continue; } if (r.start.row == startRow && r.start.column > start.column) r.start.column += colDiff; if (r.end.row == startRow && r.end.column >= start.column) r.end.column += colDiff; if (r.start.row >= startRow) r.start.row += lineDif; if (r.end.row >= startRow) r.end.row += lineDif; if (comparePoints(r.start, r.end) > 0) this.removeRange(r); } if (!ranges.length) this.detach(); }; this.updateLinkedFields = function() { var ts = this.selectedTabstop; if (!ts || !ts.hasLinkedRanges) return; this.$inChange = true; var session = this.editor.session; var text = session.getTextRange(ts.firstNonLinked); for (var i = ts.length; i--;) { var range = ts[i]; if (!range.linked) continue; var fmt = exports.snippetManager.tmStrFormat(text, range.original); session.replace(range, fmt); } this.$inChange = false; }; this.onAfterExec = function(e) { if (e.command && !e.command.readOnly) this.updateLinkedFields(); }; this.onChangeSelection = function() { if (!this.editor) return; var lead = this.editor.selection.lead; var anchor = this.editor.selection.anchor; var isEmpty = this.editor.selection.isEmpty(); for (var i = this.ranges.length; i--;) { if (this.ranges[i].linked) continue; var containsLead = this.ranges[i].contains(lead.row, lead.column); var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); if (containsLead && containsAnchor) return; } this.detach(); }; this.onChangeSession = function() { this.detach(); }; this.tabNext = function(dir) { var max = this.tabstops.length; var index = this.index + (dir || 1); index = Math.min(Math.max(index, 1), max); if (index == max) index = 0; this.selectTabstop(index); if (index === 0) this.detach(); }; this.selectTabstop = function(index) { this.$openTabstops = null; var ts = this.tabstops[this.index]; if (ts) this.addTabstopMarkers(ts); this.index = index; ts = this.tabstops[this.index]; if (!ts || !ts.length) return; this.selectedTabstop = ts; if (!this.editor.inVirtualSelectionMode) { var sel = this.editor.multiSelect; sel.toSingleRange(ts.firstNonLinked.clone()); for (var i = ts.length; i--;) { if (ts.hasLinkedRanges && ts[i].linked) continue; sel.addRange(ts[i].clone(), true); } if (sel.ranges[0]) sel.addRange(sel.ranges[0].clone()); } else { this.editor.selection.setRange(ts.firstNonLinked); } this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); }; this.addTabstops = function(tabstops, start, end) { if (!this.$openTabstops) this.$openTabstops = []; if (!tabstops[0]) { var p = Range.fromPoints(end, end); moveRelative(p.start, start); moveRelative(p.end, start); tabstops[0] = [p]; tabstops[0].index = 0; } var i = this.index; var arg = [i + 1, 0]; var ranges = this.ranges; tabstops.forEach(function(ts, index) { var dest = this.$openTabstops[index] || ts; for (var i = ts.length; i--;) { var p = ts[i]; var range = Range.fromPoints(p.start, p.end || p.start); movePoint(range.start, start); movePoint(range.end, start); range.original = p; range.tabstop = dest; ranges.push(range); if (dest != ts) dest.unshift(range); else dest[i] = range; if (p.fmtString) { range.linked = true; dest.hasLinkedRanges = true; } else if (!dest.firstNonLinked) dest.firstNonLinked = range; } if (!dest.firstNonLinked) dest.hasLinkedRanges = false; if (dest === ts) { arg.push(dest); this.$openTabstops[index] = dest; } this.addTabstopMarkers(dest); }, this); if (arg.length > 2) { if (this.tabstops.length) arg.push(arg.splice(2, 1)[0]); this.tabstops.splice.apply(this.tabstops, arg); } }; this.addTabstopMarkers = function(ts) { var session = this.editor.session; ts.forEach(function(range) { if (!range.markerId) range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); }); }; this.removeTabstopMarkers = function(ts) { var session = this.editor.session; ts.forEach(function(range) { session.removeMarker(range.markerId); range.markerId = null; }); }; this.removeRange = function(range) { var i = range.tabstop.indexOf(range); range.tabstop.splice(i, 1); i = this.ranges.indexOf(range); this.ranges.splice(i, 1); this.editor.session.removeMarker(range.markerId); if (!range.tabstop.length) { i = this.tabstops.indexOf(range.tabstop); if (i != -1) this.tabstops.splice(i, 1); if (!this.tabstops.length) this.detach(); } }; this.keyboardHandler = new HashHandler(); this.keyboardHandler.bindKeys({ "Tab": function(ed) { if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) { return; } ed.tabstopManager.tabNext(1); }, "Shift-Tab": function(ed) { ed.tabstopManager.tabNext(-1); }, "Esc": function(ed) { ed.tabstopManager.detach(); }, "Return": function(ed) { return false; } }); }).call(TabstopManager.prototype); var changeTracker = {}; changeTracker.onChange = Anchor.prototype.onChange; changeTracker.setPosition = function(row, column) { this.pos.row = row; this.pos.column = column; }; changeTracker.update = function(pos, delta, $insertRight) { this.$insertRight = $insertRight; this.pos = pos; this.onChange(delta); }; var movePoint = function(point, diff) { if (point.row == 0) point.column += diff.column; point.row += diff.row; }; var moveRelative = function(point, start) { if (point.row == start.row) point.column -= start.column; point.row -= start.row; }; acequire("./lib/dom").importCssString("\ .ace_snippet-marker {\ -moz-box-sizing: border-box;\ box-sizing: border-box;\ background: rgba(194, 193, 208, 0.09);\ border: 1px dotted rgba(211, 208, 235, 0.62);\ position: absolute;\ }"); exports.snippetManager = new SnippetManager(); var Editor = acequire("./editor").Editor; (function() { this.insertSnippet = function(content, options) { return exports.snippetManager.insertSnippet(this, content, options); }; this.expandSnippet = function(options) { return exports.snippetManager.expandWithTab(this, options); }; }).call(Editor.prototype); }); ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"], function(acequire, exports, module) { "use strict"; var Renderer = acequire("../virtual_renderer").VirtualRenderer; var Editor = acequire("../editor").Editor; var Range = acequire("../range").Range; var event = acequire("../lib/event"); var lang = acequire("../lib/lang"); var dom = acequire("../lib/dom"); var $singleLineEditor = function(el) { var renderer = new Renderer(el); renderer.$maxLines = 4; var editor = new Editor(renderer); editor.setHighlightActiveLine(false); editor.setShowPrintMargin(false); editor.renderer.setShowGutter(false); editor.renderer.setHighlightGutterLine(false); editor.$mouseHandler.$focusWaitTimout = 0; editor.$highlightTagPending = true; return editor; }; var AcePopup = function(parentNode) { var el = dom.createElement("div"); var popup = new $singleLineEditor(el); if (parentNode) parentNode.appendChild(el); el.style.display = "none"; popup.renderer.content.style.cursor = "default"; popup.renderer.setStyle("ace_autocomplete"); popup.setOption("displayIndentGuides", false); popup.setOption("dragDelay", 150); var noop = function(){}; popup.focus = noop; popup.$isFocused = true; popup.renderer.$cursorLayer.restartTimer = noop; popup.renderer.$cursorLayer.element.style.opacity = 0; popup.renderer.$maxLines = 8; popup.renderer.$keepTextAreaAtCursor = false; popup.setHighlightActiveLine(false); popup.session.highlight(""); popup.session.$searchHighlight.clazz = "ace_highlight-marker"; popup.on("mousedown", function(e) { var pos = e.getDocumentPosition(); popup.selection.moveToPosition(pos); selectionMarker.start.row = selectionMarker.end.row = pos.row; e.stop(); }); var lastMouseEvent; var hoverMarker = new Range(-1,0,-1,Infinity); var selectionMarker = new Range(-1,0,-1,Infinity); selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); popup.setSelectOnHover = function(val) { if (!val) { hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); } else if (hoverMarker.id) { popup.session.removeMarker(hoverMarker.id); hoverMarker.id = null; } }; popup.setSelectOnHover(false); popup.on("mousemove", function(e) { if (!lastMouseEvent) { lastMouseEvent = e; return; } if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { return; } lastMouseEvent = e; lastMouseEvent.scrollTop = popup.renderer.scrollTop; var row = lastMouseEvent.getDocumentPosition().row; if (hoverMarker.start.row != row) { if (!hoverMarker.id) popup.setRow(row); setHoverMarker(row); } }); popup.renderer.on("beforeRender", function() { if (lastMouseEvent && hoverMarker.start.row != -1) { lastMouseEvent.$pos = null; var row = lastMouseEvent.getDocumentPosition().row; if (!hoverMarker.id) popup.setRow(row); setHoverMarker(row, true); } }); popup.renderer.on("afterRender", function() { var row = popup.getRow(); var t = popup.renderer.$textLayer; var selected = t.element.childNodes[row - t.config.firstRow]; if (selected == t.selectedNode) return; if (t.selectedNode) dom.removeCssClass(t.selectedNode, "ace_selected"); t.selectedNode = selected; if (selected) dom.addCssClass(selected, "ace_selected"); }); var hideHoverMarker = function() { setHoverMarker(-1); }; var setHoverMarker = function(row, suppressRedraw) { if (row !== hoverMarker.start.row) { hoverMarker.start.row = hoverMarker.end.row = row; if (!suppressRedraw) popup.session._emit("changeBackMarker"); popup._emit("changeHoverMarker"); } }; popup.getHoveredRow = function() { return hoverMarker.start.row; }; event.addListener(popup.container, "mouseout", hideHoverMarker); popup.on("hide", hideHoverMarker); popup.on("changeSelection", hideHoverMarker); popup.session.doc.getLength = function() { return popup.data.length; }; popup.session.doc.getLine = function(i) { var data = popup.data[i]; if (typeof data == "string") return data; return (data && data.value) || ""; }; var bgTokenizer = popup.session.bgTokenizer; bgTokenizer.$tokenizeRow = function(row) { var data = popup.data[row]; var tokens = []; if (!data) return tokens; if (typeof data == "string") data = {value: data}; if (!data.caption) data.caption = data.value || data.name; var last = -1; var flag, c; for (var i = 0; i < data.caption.length; i++) { c = data.caption[i]; flag = data.matchMask & (1 << i) ? 1 : 0; if (last !== flag) { tokens.push({type: data.className || "" + ( flag ? "completion-highlight" : ""), value: c}); last = flag; } else { tokens[tokens.length - 1].value += c; } } if (data.meta) { var maxW = popup.renderer.$size.scrollerWidth / popup.renderer.layerConfig.characterWidth; var metaData = data.meta; if (metaData.length + data.caption.length > maxW - 2) { metaData = metaData.substr(0, maxW - data.caption.length - 3) + "\u2026"; } tokens.push({type: "rightAlignedText", value: metaData}); } return tokens; }; bgTokenizer.$updateOnChange = noop; bgTokenizer.start = noop; popup.session.$computeWidth = function() { return this.screenWidth = 0; }; popup.$blockScrolling = Infinity; popup.isOpen = false; popup.isTopdown = false; popup.autoSelect = true; popup.data = []; popup.setData = function(list) { popup.setValue(lang.stringRepeat("\n", list.length), -1); popup.data = list || []; popup.setRow(0); }; popup.getData = function(row) { return popup.data[row]; }; popup.getRow = function() { return selectionMarker.start.row; }; popup.setRow = function(line) { line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length, line)); if (selectionMarker.start.row != line) { popup.selection.clearSelection(); selectionMarker.start.row = selectionMarker.end.row = line || 0; popup.session._emit("changeBackMarker"); popup.moveCursorTo(line || 0, 0); if (popup.isOpen) popup._signal("select"); } }; popup.on("changeSelection", function() { if (popup.isOpen) popup.setRow(popup.selection.lead.row); popup.renderer.scrollCursorIntoView(); }); popup.hide = function() { this.container.style.display = "none"; this._signal("hide"); popup.isOpen = false; }; popup.show = function(pos, lineHeight, topdownOnly) { var el = this.container; var screenHeight = window.innerHeight; var screenWidth = window.innerWidth; var renderer = this.renderer; var maxH = renderer.$maxLines * lineHeight * 1.4; var top = pos.top + this.$borderSize; var allowTopdown = top > screenHeight / 2 && !topdownOnly; if (allowTopdown && top + lineHeight + maxH > screenHeight) { renderer.$maxPixelHeight = top - 2 * this.$borderSize; el.style.top = ""; el.style.bottom = screenHeight - top + "px"; popup.isTopdown = false; } else { top += lineHeight; renderer.$maxPixelHeight = screenHeight - top - 0.2 * lineHeight; el.style.top = top + "px"; el.style.bottom = ""; popup.isTopdown = true; } el.style.display = ""; this.renderer.$textLayer.checkForSizeChanges(); var left = pos.left; if (left + el.offsetWidth > screenWidth) left = screenWidth - el.offsetWidth; el.style.left = left + "px"; this._signal("show"); lastMouseEvent = null; popup.isOpen = true; }; popup.getTextLeftOffset = function() { return this.$borderSize + this.renderer.$padding + this.$imageSize; }; popup.$imageSize = 0; popup.$borderSize = 1; return popup; }; dom.importCssString("\ .ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\ background-color: #CAD6FA;\ z-index: 1;\ }\ .ace_editor.ace_autocomplete .ace_line-hover {\ border: 1px solid #abbffe;\ margin-top: -1px;\ background: rgba(233,233,253,0.4);\ }\ .ace_editor.ace_autocomplete .ace_line-hover {\ position: absolute;\ z-index: 2;\ }\ .ace_editor.ace_autocomplete .ace_scroller {\ background: none;\ border: none;\ box-shadow: none;\ }\ .ace_rightAlignedText {\ color: gray;\ display: inline-block;\ position: absolute;\ right: 4px;\ text-align: right;\ z-index: -1;\ }\ .ace_editor.ace_autocomplete .ace_completion-highlight{\ color: #000;\ text-shadow: 0 0 0.01em;\ }\ .ace_editor.ace_autocomplete {\ width: 280px;\ z-index: 200000;\ background: #fbfbfb;\ color: #444;\ border: 1px lightgray solid;\ position: fixed;\ box-shadow: 2px 3px 5px rgba(0,0,0,.2);\ line-height: 1.4;\ }"); exports.AcePopup = AcePopup; }); ace.define("ace/autocomplete/util",["require","exports","module"], function(acequire, exports, module) { "use strict"; exports.parForEach = function(array, fn, callback) { var completed = 0; var arLength = array.length; if (arLength === 0) callback(); for (var i = 0; i < arLength; i++) { fn(array[i], function(result, err) { completed++; if (completed === arLength) callback(result, err); }); } }; var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/; exports.retrievePrecedingIdentifier = function(text, pos, regex) { regex = regex || ID_REGEX; var buf = []; for (var i = pos-1; i >= 0; i--) { if (regex.test(text[i])) buf.push(text[i]); else break; } return buf.reverse().join(""); }; exports.retrieveFollowingIdentifier = function(text, pos, regex) { regex = regex || ID_REGEX; var buf = []; for (var i = pos; i < text.length; i++) { if (regex.test(text[i])) buf.push(text[i]); else break; } return buf; }; exports.getCompletionPrefix = function (editor) { var pos = editor.getCursorPosition(); var line = editor.session.getLine(pos.row); var prefix; editor.completers.forEach(function(completer) { if (completer.identifierRegexps) { completer.identifierRegexps.forEach(function(identifierRegex) { if (!prefix && identifierRegex) prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); }.bind(this)); } }.bind(this)); return prefix || this.retrievePrecedingIdentifier(line, pos.column); }; }); ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"], function(acequire, exports, module) { "use strict"; var HashHandler = acequire("./keyboard/hash_handler").HashHandler; var AcePopup = acequire("./autocomplete/popup").AcePopup; var util = acequire("./autocomplete/util"); var event = acequire("./lib/event"); var lang = acequire("./lib/lang"); var dom = acequire("./lib/dom"); var snippetManager = acequire("./snippets").snippetManager; var Autocomplete = function() { this.autoInsert = false; this.autoSelect = true; this.exactMatch = false; this.gatherCompletionsId = 0; this.keyboardHandler = new HashHandler(); this.keyboardHandler.bindKeys(this.commands); this.blurListener = this.blurListener.bind(this); this.changeListener = this.changeListener.bind(this); this.mousedownListener = this.mousedownListener.bind(this); this.mousewheelListener = this.mousewheelListener.bind(this); this.changeTimer = lang.delayedCall(function() { this.updateCompletions(true); }.bind(this)); this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); }; (function() { this.$init = function() { this.popup = new AcePopup(document.body || document.documentElement); this.popup.on("click", function(e) { this.insertMatch(); e.stop(); }.bind(this)); this.popup.focus = this.editor.focus.bind(this.editor); this.popup.on("show", this.tooltipTimer.bind(null, null)); this.popup.on("select", this.tooltipTimer.bind(null, null)); this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); return this.popup; }; this.getPopup = function() { return this.popup || this.$init(); }; this.openPopup = function(editor, prefix, keepPopupPosition) { if (!this.popup) this.$init(); this.popup.autoSelect = this.autoSelect; this.popup.setData(this.completions.filtered); editor.keyBinding.addKeyboardHandler(this.keyboardHandler); var renderer = editor.renderer; this.popup.setRow(this.autoSelect ? 0 : -1); if (!keepPopupPosition) { this.popup.setTheme(editor.getTheme()); this.popup.setFontSize(editor.getFontSize()); var lineHeight = renderer.layerConfig.lineHeight; var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); pos.left -= this.popup.getTextLeftOffset(); var rect = editor.container.getBoundingClientRect(); pos.top += rect.top - renderer.layerConfig.offset; pos.left += rect.left - editor.renderer.scrollLeft; pos.left += renderer.gutterWidth; this.popup.show(pos, lineHeight); } else if (keepPopupPosition && !prefix) { this.detach(); } }; this.detach = function() { this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); this.editor.off("changeSelection", this.changeListener); this.editor.off("blur", this.blurListener); this.editor.off("mousedown", this.mousedownListener); this.editor.off("mousewheel", this.mousewheelListener); this.changeTimer.cancel(); this.hideDocTooltip(); this.gatherCompletionsId += 1; if (this.popup && this.popup.isOpen) this.popup.hide(); if (this.base) this.base.detach(); this.activated = false; this.completions = this.base = null; }; this.changeListener = function(e) { var cursor = this.editor.selection.lead; if (cursor.row != this.base.row || cursor.column < this.base.column) { this.detach(); } if (this.activated) this.changeTimer.schedule(); else this.detach(); }; this.blurListener = function(e) { var el = document.activeElement; var text = this.editor.textInput.getElement(); var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); var container = this.popup && this.popup.container; if (el != text && el.parentNode != container && !fromTooltip && el != this.tooltipNode && e.relatedTarget != text ) { this.detach(); } }; this.mousedownListener = function(e) { this.detach(); }; this.mousewheelListener = function(e) { this.detach(); }; this.goTo = function(where) { var row = this.popup.getRow(); var max = this.popup.session.getLength() - 1; switch(where) { case "up": row = row <= 0 ? max : row - 1; break; case "down": row = row >= max ? -1 : row + 1; break; case "start": row = 0; break; case "end": row = max; break; } this.popup.setRow(row); }; this.insertMatch = function(data, options) { if (!data) data = this.popup.getData(this.popup.getRow()); if (!data) return false; if (data.completer && data.completer.insertMatch) { data.completer.insertMatch(this.editor, data); } else { if (this.completions.filterText) { var ranges = this.editor.selection.getAllRanges(); for (var i = 0, range; range = ranges[i]; i++) { range.start.column -= this.completions.filterText.length; this.editor.session.remove(range); } } if (data.snippet) snippetManager.insertSnippet(this.editor, data.snippet); else this.editor.execCommand("insertstring", data.value || data); } this.detach(); }; this.commands = { "Up": function(editor) { editor.completer.goTo("up"); }, "Down": function(editor) { editor.completer.goTo("down"); }, "Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); }, "Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); }, "Esc": function(editor) { editor.completer.detach(); }, "Return": function(editor) { return editor.completer.insertMatch(); }, "Shift-Return": function(editor) { editor.completer.insertMatch(null, {deleteSuffix: true}); }, "Tab": function(editor) { var result = editor.completer.insertMatch(); if (!result && !editor.tabstopManager) editor.completer.goTo("down"); else return result; }, "PageUp": function(editor) { editor.completer.popup.gotoPageUp(); }, "PageDown": function(editor) { editor.completer.popup.gotoPageDown(); } }; this.gatherCompletions = function(editor, callback) { var session = editor.getSession(); var pos = editor.getCursorPosition(); var prefix = util.getCompletionPrefix(editor); this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); this.base.$insertRight = true; var matches = []; var total = editor.completers.length; editor.completers.forEach(function(completer, i) { completer.getCompletions(editor, session, pos, prefix, function(err, results) { if (!err && results) matches = matches.concat(results); callback(null, { prefix: util.getCompletionPrefix(editor), matches: matches, finished: (--total === 0) }); }); }); return true; }; this.showPopup = function(editor) { if (this.editor) this.detach(); this.activated = true; this.editor = editor; if (editor.completer != this) { if (editor.completer) editor.completer.detach(); editor.completer = this; } editor.on("changeSelection", this.changeListener); editor.on("blur", this.blurListener); editor.on("mousedown", this.mousedownListener); editor.on("mousewheel", this.mousewheelListener); this.updateCompletions(); }; this.updateCompletions = function(keepPopupPosition) { if (keepPopupPosition && this.base && this.completions) { var pos = this.editor.getCursorPosition(); var prefix = this.editor.session.getTextRange({start: this.base, end: pos}); if (prefix == this.completions.filterText) return; this.completions.setFilter(prefix); if (!this.completions.filtered.length) return this.detach(); if (this.completions.filtered.length == 1 && this.completions.filtered[0].value == prefix && !this.completions.filtered[0].snippet) return this.detach(); this.openPopup(this.editor, prefix, keepPopupPosition); return; } var _id = this.gatherCompletionsId; this.gatherCompletions(this.editor, function(err, results) { var detachIfFinished = function() { if (!results.finished) return; return this.detach(); }.bind(this); var prefix = results.prefix; var matches = results && results.matches; if (!matches || !matches.length) return detachIfFinished(); if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId) return; this.completions = new FilteredList(matches); if (this.exactMatch) this.completions.exactMatch = true; this.completions.setFilter(prefix); var filtered = this.completions.filtered; if (!filtered.length) return detachIfFinished(); if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet) return detachIfFinished(); if (this.autoInsert && filtered.length == 1 && results.finished) return this.insertMatch(filtered[0]); this.openPopup(this.editor, prefix, keepPopupPosition); }.bind(this)); }; this.cancelContextMenu = function() { this.editor.$mouseHandler.cancelContextMenu(); }; this.updateDocTooltip = function() { var popup = this.popup; var all = popup.data; var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); var doc = null; if (!selected || !this.editor || !this.popup.isOpen) return this.hideDocTooltip(); this.editor.completers.some(function(completer) { if (completer.getDocTooltip) doc = completer.getDocTooltip(selected); return doc; }); if (!doc) doc = selected; if (typeof doc == "string") doc = {docText: doc}; if (!doc || !(doc.docHTML || doc.docText)) return this.hideDocTooltip(); this.showDocTooltip(doc); }; this.showDocTooltip = function(item) { if (!this.tooltipNode) { this.tooltipNode = dom.createElement("div"); this.tooltipNode.className = "ace_tooltip ace_doc-tooltip"; this.tooltipNode.style.margin = 0; this.tooltipNode.style.pointerEvents = "auto"; this.tooltipNode.tabIndex = -1; this.tooltipNode.onblur = this.blurListener.bind(this); this.tooltipNode.onclick = this.onTooltipClick.bind(this); } var tooltipNode = this.tooltipNode; if (item.docHTML) { tooltipNode.innerHTML = item.docHTML; } else if (item.docText) { tooltipNode.textContent = item.docText; } if (!tooltipNode.parentNode) document.body.appendChild(tooltipNode); var popup = this.popup; var rect = popup.container.getBoundingClientRect(); tooltipNode.style.top = popup.container.style.top; tooltipNode.style.bottom = popup.container.style.bottom; if (window.innerWidth - rect.right < 320) { tooltipNode.style.right = window.innerWidth - rect.left + "px"; tooltipNode.style.left = ""; } else { tooltipNode.style.left = (rect.right + 1) + "px"; tooltipNode.style.right = ""; } tooltipNode.style.display = "block"; }; this.hideDocTooltip = function() { this.tooltipTimer.cancel(); if (!this.tooltipNode) return; var el = this.tooltipNode; if (!this.editor.isFocused() && document.activeElement == el) this.editor.focus(); this.tooltipNode = null; if (el.parentNode) el.parentNode.removeChild(el); }; this.onTooltipClick = function(e) { var a = e.target; while (a && a != this.tooltipNode) { if (a.nodeName == "A" && a.href) { a.rel = "noreferrer"; a.target = "_blank"; break; } a = a.parentNode; } }; }).call(Autocomplete.prototype); Autocomplete.startCommand = { name: "startAutocomplete", exec: function(editor) { if (!editor.completer) editor.completer = new Autocomplete(); editor.completer.autoInsert = false; editor.completer.autoSelect = true; editor.completer.showPopup(editor); editor.completer.cancelContextMenu(); }, bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" }; var FilteredList = function(array, filterText) { this.all = array; this.filtered = array; this.filterText = filterText || ""; this.exactMatch = false; }; (function(){ this.setFilter = function(str) { if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) var matches = this.filtered; else var matches = this.all; this.filterText = str; matches = this.filterCompletions(matches, this.filterText); matches = matches.sort(function(a, b) { return b.exactMatch - a.exactMatch || b.score - a.score; }); var prev = null; matches = matches.filter(function(item){ var caption = item.snippet || item.caption || item.value; if (caption === prev) return false; prev = caption; return true; }); this.filtered = matches; }; this.filterCompletions = function(items, needle) { var results = []; var upper = needle.toUpperCase(); var lower = needle.toLowerCase(); loop: for (var i = 0, item; item = items[i]; i++) { var caption = item.value || item.caption || item.snippet; if (!caption) continue; var lastIndex = -1; var matchMask = 0; var penalty = 0; var index, distance; if (this.exactMatch) { if (needle !== caption.substr(0, needle.length)) continue loop; }else{ for (var j = 0; j < needle.length; j++) { var i1 = caption.indexOf(lower[j], lastIndex + 1); var i2 = caption.indexOf(upper[j], lastIndex + 1); index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; if (index < 0) continue loop; distance = index - lastIndex - 1; if (distance > 0) { if (lastIndex === -1) penalty += 10; penalty += distance; } matchMask = matchMask | (1 << index); lastIndex = index; } } item.matchMask = matchMask; item.exactMatch = penalty ? 0 : 1; item.score = (item.score || 0) - penalty; results.push(item); } return results; }; }).call(FilteredList.prototype); exports.Autocomplete = Autocomplete; exports.FilteredList = FilteredList; }); ace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"], function(acequire, exports, module) { var Range = acequire("../range").Range; var splitRegex = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/; function getWordIndex(doc, pos) { var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos)); return textBefore.split(splitRegex).length - 1; } function wordDistance(doc, pos) { var prefixPos = getWordIndex(doc, pos); var words = doc.getValue().split(splitRegex); var wordScores = Object.create(null); var currentWord = words[prefixPos]; words.forEach(function(word, idx) { if (!word || word === currentWord) return; var distance = Math.abs(prefixPos - idx); var score = words.length - distance; if (wordScores[word]) { wordScores[word] = Math.max(score, wordScores[word]); } else { wordScores[word] = score; } }); return wordScores; } exports.getCompletions = function(editor, session, pos, prefix, callback) { var wordScore = wordDistance(session, pos, prefix); var wordList = Object.keys(wordScore); callback(null, wordList.map(function(word) { return { caption: word, value: word, score: wordScore[word], meta: "local" }; })); }; }); ace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(acequire, exports, module) { "use strict"; var snippetManager = acequire("../snippets").snippetManager; var Autocomplete = acequire("../autocomplete").Autocomplete; var config = acequire("../config"); var lang = acequire("../lib/lang"); var util = acequire("../autocomplete/util"); var textCompleter = acequire("../autocomplete/text_completer"); var keyWordCompleter = { getCompletions: function(editor, session, pos, prefix, callback) { if (session.$mode.completer) { return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback); } var state = editor.session.getState(pos.row); var completions = session.$mode.getCompletions(state, session, pos, prefix); callback(null, completions); } }; var snippetCompleter = { getCompletions: function(editor, session, pos, prefix, callback) { var snippetMap = snippetManager.snippetMap; var completions = []; snippetManager.getActiveScopes(editor).forEach(function(scope) { var snippets = snippetMap[scope] || []; for (var i = snippets.length; i--;) { var s = snippets[i]; var caption = s.name || s.tabTrigger; if (!caption) continue; completions.push({ caption: caption, snippet: s.content, meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet", type: "snippet" }); } }, this); callback(null, completions); }, getDocTooltip: function(item) { if (item.type == "snippet" && !item.docHTML) { item.docHTML = [ "<b>", lang.escapeHTML(item.caption), "</b>", "<hr></hr>", lang.escapeHTML(item.snippet) ].join(""); } } }; var completers = [snippetCompleter, textCompleter, keyWordCompleter]; exports.setCompleters = function(val) { completers.length = 0; if (val) completers.push.apply(completers, val); }; exports.addCompleter = function(completer) { completers.push(completer); }; exports.textCompleter = textCompleter; exports.keyWordCompleter = keyWordCompleter; exports.snippetCompleter = snippetCompleter; var expandSnippet = { name: "expandSnippet", exec: function(editor) { return snippetManager.expandWithTab(editor); }, bindKey: "Tab" }; var onChangeMode = function(e, editor) { loadSnippetsForMode(editor.session.$mode); }; var loadSnippetsForMode = function(mode) { var id = mode.$id; if (!snippetManager.files) snippetManager.files = {}; loadSnippetFile(id); if (mode.modes) mode.modes.forEach(loadSnippetsForMode); }; var loadSnippetFile = function(id) { if (!id || snippetManager.files[id]) return; var snippetFilePath = id.replace("mode", "snippets"); snippetManager.files[id] = {}; config.loadModule(snippetFilePath, function(m) { if (m) { snippetManager.files[id] = m; if (!m.snippets && m.snippetText) m.snippets = snippetManager.parseSnippetFile(m.snippetText); snippetManager.register(m.snippets || [], m.scope); if (m.includeScopes) { snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes; m.includeScopes.forEach(function(x) { loadSnippetFile("ace/mode/" + x); }); } } }); }; var doLiveAutocomplete = function(e) { var editor = e.editor; var hasCompleter = editor.completer && editor.completer.activated; if (e.command.name === "backspace") { if (hasCompleter && !util.getCompletionPrefix(editor)) editor.completer.detach(); } else if (e.command.name === "insertstring") { var prefix = util.getCompletionPrefix(editor); if (prefix && !hasCompleter) { if (!editor.completer) { editor.completer = new Autocomplete(); } editor.completer.autoInsert = false; editor.completer.showPopup(editor); } } }; var Editor = acequire("../editor").Editor; acequire("../config").defineOptions(Editor.prototype, "editor", { enableBasicAutocompletion: { set: function(val) { if (val) { if (!this.completers) this.completers = Array.isArray(val)? val: completers; this.commands.addCommand(Autocomplete.startCommand); } else { this.commands.removeCommand(Autocomplete.startCommand); } }, value: false }, enableLiveAutocompletion: { set: function(val) { if (val) { if (!this.completers) this.completers = Array.isArray(val)? val: completers; this.commands.on('afterExec', doLiveAutocomplete); } else { this.commands.removeListener('afterExec', doLiveAutocomplete); } }, value: false }, enableSnippets: { set: function(val) { if (val) { this.commands.addCommand(expandSnippet); this.on("changeMode", onChangeMode); onChangeMode(null, this); } else { this.commands.removeCommand(expandSnippet); this.off("changeMode", onChangeMode); } }, value: false } }); }); (function() { ace.acequire(["ace/ext/language_tools"], function() {}); })(); /***/ }), /* 288 */ /***/ (function(module, exports) { ace.define("ace/snippets/css",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet .\n ${1} {\n ${2}\n }\nsnippet !\n !important\nsnippet bdi:m+\n -moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:m\n -moz-border-image: ${1};\nsnippet bdrz:m\n -moz-border-radius: ${1};\nsnippet bxsh:m+\n -moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:m\n -moz-box-shadow: ${1};\nsnippet bdi:w+\n -webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:w\n -webkit-border-image: ${1};\nsnippet bdrz:w\n -webkit-border-radius: ${1};\nsnippet bxsh:w+\n -webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:w\n -webkit-box-shadow: ${1};\nsnippet @f\n @font-face {\n font-family: ${1};\n src: url(${2});\n }\nsnippet @i\n @import url(${1});\nsnippet @m\n @media ${1:print} {\n ${2}\n }\nsnippet bg+\n background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\nsnippet bga\n background-attachment: ${1};\nsnippet bga:f\n background-attachment: fixed;\nsnippet bga:s\n background-attachment: scroll;\nsnippet bgbk\n background-break: ${1};\nsnippet bgbk:bb\n background-break: bounding-box;\nsnippet bgbk:c\n background-break: continuous;\nsnippet bgbk:eb\n background-break: each-box;\nsnippet bgcp\n background-clip: ${1};\nsnippet bgcp:bb\n background-clip: border-box;\nsnippet bgcp:cb\n background-clip: content-box;\nsnippet bgcp:nc\n background-clip: no-clip;\nsnippet bgcp:pb\n background-clip: padding-box;\nsnippet bgc\n background-color: #${1:FFF};\nsnippet bgc:t\n background-color: transparent;\nsnippet bgi\n background-image: url(${1});\nsnippet bgi:n\n background-image: none;\nsnippet bgo\n background-origin: ${1};\nsnippet bgo:bb\n background-origin: border-box;\nsnippet bgo:cb\n background-origin: content-box;\nsnippet bgo:pb\n background-origin: padding-box;\nsnippet bgpx\n background-position-x: ${1};\nsnippet bgpy\n background-position-y: ${1};\nsnippet bgp\n background-position: ${1:0} ${2:0};\nsnippet bgr\n background-repeat: ${1};\nsnippet bgr:n\n background-repeat: no-repeat;\nsnippet bgr:x\n background-repeat: repeat-x;\nsnippet bgr:y\n background-repeat: repeat-y;\nsnippet bgr:r\n background-repeat: repeat;\nsnippet bgz\n background-size: ${1};\nsnippet bgz:a\n background-size: auto;\nsnippet bgz:ct\n background-size: contain;\nsnippet bgz:cv\n background-size: cover;\nsnippet bg\n background: ${1};\nsnippet bg:ie\n filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\nsnippet bg:n\n background: none;\nsnippet bd+\n border: ${1:1px} ${2:solid} #${3:000};\nsnippet bdb+\n border-bottom: ${1:1px} ${2:solid} #${3:000};\nsnippet bdbc\n border-bottom-color: #${1:000};\nsnippet bdbi\n border-bottom-image: url(${1});\nsnippet bdbi:n\n border-bottom-image: none;\nsnippet bdbli\n border-bottom-left-image: url(${1});\nsnippet bdbli:c\n border-bottom-left-image: continue;\nsnippet bdbli:n\n border-bottom-left-image: none;\nsnippet bdblrz\n border-bottom-left-radius: ${1};\nsnippet bdbri\n border-bottom-right-image: url(${1});\nsnippet bdbri:c\n border-bottom-right-image: continue;\nsnippet bdbri:n\n border-bottom-right-image: none;\nsnippet bdbrrz\n border-bottom-right-radius: ${1};\nsnippet bdbs\n border-bottom-style: ${1};\nsnippet bdbs:n\n border-bottom-style: none;\nsnippet bdbw\n border-bottom-width: ${1};\nsnippet bdb\n border-bottom: ${1};\nsnippet bdb:n\n border-bottom: none;\nsnippet bdbk\n border-break: ${1};\nsnippet bdbk:c\n border-break: close;\nsnippet bdcl\n border-collapse: ${1};\nsnippet bdcl:c\n border-collapse: collapse;\nsnippet bdcl:s\n border-collapse: separate;\nsnippet bdc\n border-color: #${1:000};\nsnippet bdci\n border-corner-image: url(${1});\nsnippet bdci:c\n border-corner-image: continue;\nsnippet bdci:n\n border-corner-image: none;\nsnippet bdf\n border-fit: ${1};\nsnippet bdf:c\n border-fit: clip;\nsnippet bdf:of\n border-fit: overwrite;\nsnippet bdf:ow\n border-fit: overwrite;\nsnippet bdf:r\n border-fit: repeat;\nsnippet bdf:sc\n border-fit: scale;\nsnippet bdf:sp\n border-fit: space;\nsnippet bdf:st\n border-fit: stretch;\nsnippet bdi\n border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:n\n border-image: none;\nsnippet bdl+\n border-left: ${1:1px} ${2:solid} #${3:000};\nsnippet bdlc\n border-left-color: #${1:000};\nsnippet bdli\n border-left-image: url(${1});\nsnippet bdli:n\n border-left-image: none;\nsnippet bdls\n border-left-style: ${1};\nsnippet bdls:n\n border-left-style: none;\nsnippet bdlw\n border-left-width: ${1};\nsnippet bdl\n border-left: ${1};\nsnippet bdl:n\n border-left: none;\nsnippet bdlt\n border-length: ${1};\nsnippet bdlt:a\n border-length: auto;\nsnippet bdrz\n border-radius: ${1};\nsnippet bdr+\n border-right: ${1:1px} ${2:solid} #${3:000};\nsnippet bdrc\n border-right-color: #${1:000};\nsnippet bdri\n border-right-image: url(${1});\nsnippet bdri:n\n border-right-image: none;\nsnippet bdrs\n border-right-style: ${1};\nsnippet bdrs:n\n border-right-style: none;\nsnippet bdrw\n border-right-width: ${1};\nsnippet bdr\n border-right: ${1};\nsnippet bdr:n\n border-right: none;\nsnippet bdsp\n border-spacing: ${1};\nsnippet bds\n border-style: ${1};\nsnippet bds:ds\n border-style: dashed;\nsnippet bds:dtds\n border-style: dot-dash;\nsnippet bds:dtdtds\n border-style: dot-dot-dash;\nsnippet bds:dt\n border-style: dotted;\nsnippet bds:db\n border-style: double;\nsnippet bds:g\n border-style: groove;\nsnippet bds:h\n border-style: hidden;\nsnippet bds:i\n border-style: inset;\nsnippet bds:n\n border-style: none;\nsnippet bds:o\n border-style: outset;\nsnippet bds:r\n border-style: ridge;\nsnippet bds:s\n border-style: solid;\nsnippet bds:w\n border-style: wave;\nsnippet bdt+\n border-top: ${1:1px} ${2:solid} #${3:000};\nsnippet bdtc\n border-top-color: #${1:000};\nsnippet bdti\n border-top-image: url(${1});\nsnippet bdti:n\n border-top-image: none;\nsnippet bdtli\n border-top-left-image: url(${1});\nsnippet bdtli:c\n border-corner-image: continue;\nsnippet bdtli:n\n border-corner-image: none;\nsnippet bdtlrz\n border-top-left-radius: ${1};\nsnippet bdtri\n border-top-right-image: url(${1});\nsnippet bdtri:c\n border-top-right-image: continue;\nsnippet bdtri:n\n border-top-right-image: none;\nsnippet bdtrrz\n border-top-right-radius: ${1};\nsnippet bdts\n border-top-style: ${1};\nsnippet bdts:n\n border-top-style: none;\nsnippet bdtw\n border-top-width: ${1};\nsnippet bdt\n border-top: ${1};\nsnippet bdt:n\n border-top: none;\nsnippet bdw\n border-width: ${1};\nsnippet bd\n border: ${1};\nsnippet bd:n\n border: none;\nsnippet b\n bottom: ${1};\nsnippet b:a\n bottom: auto;\nsnippet bxsh+\n box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh\n box-shadow: ${1};\nsnippet bxsh:n\n box-shadow: none;\nsnippet bxz\n box-sizing: ${1};\nsnippet bxz:bb\n box-sizing: border-box;\nsnippet bxz:cb\n box-sizing: content-box;\nsnippet cps\n caption-side: ${1};\nsnippet cps:b\n caption-side: bottom;\nsnippet cps:t\n caption-side: top;\nsnippet cl\n clear: ${1};\nsnippet cl:b\n clear: both;\nsnippet cl:l\n clear: left;\nsnippet cl:n\n clear: none;\nsnippet cl:r\n clear: right;\nsnippet cp\n clip: ${1};\nsnippet cp:a\n clip: auto;\nsnippet cp:r\n clip: rect(${1:0} ${2:0} ${3:0} ${4:0});\nsnippet c\n color: #${1:000};\nsnippet ct\n content: ${1};\nsnippet ct:a\n content: attr(${1});\nsnippet ct:cq\n content: close-quote;\nsnippet ct:c\n content: counter(${1});\nsnippet ct:cs\n content: counters(${1});\nsnippet ct:ncq\n content: no-close-quote;\nsnippet ct:noq\n content: no-open-quote;\nsnippet ct:n\n content: normal;\nsnippet ct:oq\n content: open-quote;\nsnippet coi\n counter-increment: ${1};\nsnippet cor\n counter-reset: ${1};\nsnippet cur\n cursor: ${1};\nsnippet cur:a\n cursor: auto;\nsnippet cur:c\n cursor: crosshair;\nsnippet cur:d\n cursor: default;\nsnippet cur:ha\n cursor: hand;\nsnippet cur:he\n cursor: help;\nsnippet cur:m\n cursor: move;\nsnippet cur:p\n cursor: pointer;\nsnippet cur:t\n cursor: text;\nsnippet d\n display: ${1};\nsnippet d:mib\n display: -moz-inline-box;\nsnippet d:mis\n display: -moz-inline-stack;\nsnippet d:b\n display: block;\nsnippet d:cp\n display: compact;\nsnippet d:ib\n display: inline-block;\nsnippet d:itb\n display: inline-table;\nsnippet d:i\n display: inline;\nsnippet d:li\n display: list-item;\nsnippet d:n\n display: none;\nsnippet d:ri\n display: run-in;\nsnippet d:tbcp\n display: table-caption;\nsnippet d:tbc\n display: table-cell;\nsnippet d:tbclg\n display: table-column-group;\nsnippet d:tbcl\n display: table-column;\nsnippet d:tbfg\n display: table-footer-group;\nsnippet d:tbhg\n display: table-header-group;\nsnippet d:tbrg\n display: table-row-group;\nsnippet d:tbr\n display: table-row;\nsnippet d:tb\n display: table;\nsnippet ec\n empty-cells: ${1};\nsnippet ec:h\n empty-cells: hide;\nsnippet ec:s\n empty-cells: show;\nsnippet exp\n expression()\nsnippet fl\n float: ${1};\nsnippet fl:l\n float: left;\nsnippet fl:n\n float: none;\nsnippet fl:r\n float: right;\nsnippet f+\n font: ${1:1em} ${2:Arial},${3:sans-serif};\nsnippet fef\n font-effect: ${1};\nsnippet fef:eb\n font-effect: emboss;\nsnippet fef:eg\n font-effect: engrave;\nsnippet fef:n\n font-effect: none;\nsnippet fef:o\n font-effect: outline;\nsnippet femp\n font-emphasize-position: ${1};\nsnippet femp:a\n font-emphasize-position: after;\nsnippet femp:b\n font-emphasize-position: before;\nsnippet fems\n font-emphasize-style: ${1};\nsnippet fems:ac\n font-emphasize-style: accent;\nsnippet fems:c\n font-emphasize-style: circle;\nsnippet fems:ds\n font-emphasize-style: disc;\nsnippet fems:dt\n font-emphasize-style: dot;\nsnippet fems:n\n font-emphasize-style: none;\nsnippet fem\n font-emphasize: ${1};\nsnippet ff\n font-family: ${1};\nsnippet ff:c\n font-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\nsnippet ff:f\n font-family: ${1:Capitals,Impact},fantasy;\nsnippet ff:m\n font-family: ${1:Monaco,'Courier New'},monospace;\nsnippet ff:ss\n font-family: ${1:Helvetica,Arial},sans-serif;\nsnippet ff:s\n font-family: ${1:Georgia,'Times New Roman'},serif;\nsnippet fza\n font-size-adjust: ${1};\nsnippet fza:n\n font-size-adjust: none;\nsnippet fz\n font-size: ${1};\nsnippet fsm\n font-smooth: ${1};\nsnippet fsm:aw\n font-smooth: always;\nsnippet fsm:a\n font-smooth: auto;\nsnippet fsm:n\n font-smooth: never;\nsnippet fst\n font-stretch: ${1};\nsnippet fst:c\n font-stretch: condensed;\nsnippet fst:e\n font-stretch: expanded;\nsnippet fst:ec\n font-stretch: extra-condensed;\nsnippet fst:ee\n font-stretch: extra-expanded;\nsnippet fst:n\n font-stretch: normal;\nsnippet fst:sc\n font-stretch: semi-condensed;\nsnippet fst:se\n font-stretch: semi-expanded;\nsnippet fst:uc\n font-stretch: ultra-condensed;\nsnippet fst:ue\n font-stretch: ultra-expanded;\nsnippet fs\n font-style: ${1};\nsnippet fs:i\n font-style: italic;\nsnippet fs:n\n font-style: normal;\nsnippet fs:o\n font-style: oblique;\nsnippet fv\n font-variant: ${1};\nsnippet fv:n\n font-variant: normal;\nsnippet fv:sc\n font-variant: small-caps;\nsnippet fw\n font-weight: ${1};\nsnippet fw:b\n font-weight: bold;\nsnippet fw:br\n font-weight: bolder;\nsnippet fw:lr\n font-weight: lighter;\nsnippet fw:n\n font-weight: normal;\nsnippet f\n font: ${1};\nsnippet h\n height: ${1};\nsnippet h:a\n height: auto;\nsnippet l\n left: ${1};\nsnippet l:a\n left: auto;\nsnippet lts\n letter-spacing: ${1};\nsnippet lh\n line-height: ${1};\nsnippet lisi\n list-style-image: url(${1});\nsnippet lisi:n\n list-style-image: none;\nsnippet lisp\n list-style-position: ${1};\nsnippet lisp:i\n list-style-position: inside;\nsnippet lisp:o\n list-style-position: outside;\nsnippet list\n list-style-type: ${1};\nsnippet list:c\n list-style-type: circle;\nsnippet list:dclz\n list-style-type: decimal-leading-zero;\nsnippet list:dc\n list-style-type: decimal;\nsnippet list:d\n list-style-type: disc;\nsnippet list:lr\n list-style-type: lower-roman;\nsnippet list:n\n list-style-type: none;\nsnippet list:s\n list-style-type: square;\nsnippet list:ur\n list-style-type: upper-roman;\nsnippet lis\n list-style: ${1};\nsnippet lis:n\n list-style: none;\nsnippet mb\n margin-bottom: ${1};\nsnippet mb:a\n margin-bottom: auto;\nsnippet ml\n margin-left: ${1};\nsnippet ml:a\n margin-left: auto;\nsnippet mr\n margin-right: ${1};\nsnippet mr:a\n margin-right: auto;\nsnippet mt\n margin-top: ${1};\nsnippet mt:a\n margin-top: auto;\nsnippet m\n margin: ${1};\nsnippet m:4\n margin: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet m:3\n margin: ${1:0} ${2:0} ${3:0};\nsnippet m:2\n margin: ${1:0} ${2:0};\nsnippet m:0\n margin: 0;\nsnippet m:a\n margin: auto;\nsnippet mah\n max-height: ${1};\nsnippet mah:n\n max-height: none;\nsnippet maw\n max-width: ${1};\nsnippet maw:n\n max-width: none;\nsnippet mih\n min-height: ${1};\nsnippet miw\n min-width: ${1};\nsnippet op\n opacity: ${1};\nsnippet op:ie\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\nsnippet op:ms\n -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\nsnippet orp\n orphans: ${1};\nsnippet o+\n outline: ${1:1px} ${2:solid} #${3:000};\nsnippet oc\n outline-color: ${1:#000};\nsnippet oc:i\n outline-color: invert;\nsnippet oo\n outline-offset: ${1};\nsnippet os\n outline-style: ${1};\nsnippet ow\n outline-width: ${1};\nsnippet o\n outline: ${1};\nsnippet o:n\n outline: none;\nsnippet ovs\n overflow-style: ${1};\nsnippet ovs:a\n overflow-style: auto;\nsnippet ovs:mq\n overflow-style: marquee;\nsnippet ovs:mv\n overflow-style: move;\nsnippet ovs:p\n overflow-style: panner;\nsnippet ovs:s\n overflow-style: scrollbar;\nsnippet ovx\n overflow-x: ${1};\nsnippet ovx:a\n overflow-x: auto;\nsnippet ovx:h\n overflow-x: hidden;\nsnippet ovx:s\n overflow-x: scroll;\nsnippet ovx:v\n overflow-x: visible;\nsnippet ovy\n overflow-y: ${1};\nsnippet ovy:a\n overflow-y: auto;\nsnippet ovy:h\n overflow-y: hidden;\nsnippet ovy:s\n overflow-y: scroll;\nsnippet ovy:v\n overflow-y: visible;\nsnippet ov\n overflow: ${1};\nsnippet ov:a\n overflow: auto;\nsnippet ov:h\n overflow: hidden;\nsnippet ov:s\n overflow: scroll;\nsnippet ov:v\n overflow: visible;\nsnippet pb\n padding-bottom: ${1};\nsnippet pl\n padding-left: ${1};\nsnippet pr\n padding-right: ${1};\nsnippet pt\n padding-top: ${1};\nsnippet p\n padding: ${1};\nsnippet p:4\n padding: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet p:3\n padding: ${1:0} ${2:0} ${3:0};\nsnippet p:2\n padding: ${1:0} ${2:0};\nsnippet p:0\n padding: 0;\nsnippet pgba\n page-break-after: ${1};\nsnippet pgba:aw\n page-break-after: always;\nsnippet pgba:a\n page-break-after: auto;\nsnippet pgba:l\n page-break-after: left;\nsnippet pgba:r\n page-break-after: right;\nsnippet pgbb\n page-break-before: ${1};\nsnippet pgbb:aw\n page-break-before: always;\nsnippet pgbb:a\n page-break-before: auto;\nsnippet pgbb:l\n page-break-before: left;\nsnippet pgbb:r\n page-break-before: right;\nsnippet pgbi\n page-break-inside: ${1};\nsnippet pgbi:a\n page-break-inside: auto;\nsnippet pgbi:av\n page-break-inside: avoid;\nsnippet pos\n position: ${1};\nsnippet pos:a\n position: absolute;\nsnippet pos:f\n position: fixed;\nsnippet pos:r\n position: relative;\nsnippet pos:s\n position: static;\nsnippet q\n quotes: ${1};\nsnippet q:en\n quotes: '\\201C' '\\201D' '\\2018' '\\2019';\nsnippet q:n\n quotes: none;\nsnippet q:ru\n quotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\nsnippet rz\n resize: ${1};\nsnippet rz:b\n resize: both;\nsnippet rz:h\n resize: horizontal;\nsnippet rz:n\n resize: none;\nsnippet rz:v\n resize: vertical;\nsnippet r\n right: ${1};\nsnippet r:a\n right: auto;\nsnippet tbl\n table-layout: ${1};\nsnippet tbl:a\n table-layout: auto;\nsnippet tbl:f\n table-layout: fixed;\nsnippet tal\n text-align-last: ${1};\nsnippet tal:a\n text-align-last: auto;\nsnippet tal:c\n text-align-last: center;\nsnippet tal:l\n text-align-last: left;\nsnippet tal:r\n text-align-last: right;\nsnippet ta\n text-align: ${1};\nsnippet ta:c\n text-align: center;\nsnippet ta:l\n text-align: left;\nsnippet ta:r\n text-align: right;\nsnippet td\n text-decoration: ${1};\nsnippet td:l\n text-decoration: line-through;\nsnippet td:n\n text-decoration: none;\nsnippet td:o\n text-decoration: overline;\nsnippet td:u\n text-decoration: underline;\nsnippet te\n text-emphasis: ${1};\nsnippet te:ac\n text-emphasis: accent;\nsnippet te:a\n text-emphasis: after;\nsnippet te:b\n text-emphasis: before;\nsnippet te:c\n text-emphasis: circle;\nsnippet te:ds\n text-emphasis: disc;\nsnippet te:dt\n text-emphasis: dot;\nsnippet te:n\n text-emphasis: none;\nsnippet th\n text-height: ${1};\nsnippet th:a\n text-height: auto;\nsnippet th:f\n text-height: font-size;\nsnippet th:m\n text-height: max-size;\nsnippet th:t\n text-height: text-size;\nsnippet ti\n text-indent: ${1};\nsnippet ti:-\n text-indent: -9999px;\nsnippet tj\n text-justify: ${1};\nsnippet tj:a\n text-justify: auto;\nsnippet tj:d\n text-justify: distribute;\nsnippet tj:ic\n text-justify: inter-cluster;\nsnippet tj:ii\n text-justify: inter-ideograph;\nsnippet tj:iw\n text-justify: inter-word;\nsnippet tj:k\n text-justify: kashida;\nsnippet tj:t\n text-justify: tibetan;\nsnippet to+\n text-outline: ${1:0} ${2:0} #${3:000};\nsnippet to\n text-outline: ${1};\nsnippet to:n\n text-outline: none;\nsnippet tr\n text-replace: ${1};\nsnippet tr:n\n text-replace: none;\nsnippet tsh+\n text-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet tsh\n text-shadow: ${1};\nsnippet tsh:n\n text-shadow: none;\nsnippet tt\n text-transform: ${1};\nsnippet tt:c\n text-transform: capitalize;\nsnippet tt:l\n text-transform: lowercase;\nsnippet tt:n\n text-transform: none;\nsnippet tt:u\n text-transform: uppercase;\nsnippet tw\n text-wrap: ${1};\nsnippet tw:no\n text-wrap: none;\nsnippet tw:n\n text-wrap: normal;\nsnippet tw:s\n text-wrap: suppress;\nsnippet tw:u\n text-wrap: unrestricted;\nsnippet t\n top: ${1};\nsnippet t:a\n top: auto;\nsnippet va\n vertical-align: ${1};\nsnippet va:bl\n vertical-align: baseline;\nsnippet va:b\n vertical-align: bottom;\nsnippet va:m\n vertical-align: middle;\nsnippet va:sub\n vertical-align: sub;\nsnippet va:sup\n vertical-align: super;\nsnippet va:tb\n vertical-align: text-bottom;\nsnippet va:tt\n vertical-align: text-top;\nsnippet va:t\n vertical-align: top;\nsnippet v\n visibility: ${1};\nsnippet v:c\n visibility: collapse;\nsnippet v:h\n visibility: hidden;\nsnippet v:v\n visibility: visible;\nsnippet whsc\n white-space-collapse: ${1};\nsnippet whsc:ba\n white-space-collapse: break-all;\nsnippet whsc:bs\n white-space-collapse: break-strict;\nsnippet whsc:k\n white-space-collapse: keep-all;\nsnippet whsc:l\n white-space-collapse: loose;\nsnippet whsc:n\n white-space-collapse: normal;\nsnippet whs\n white-space: ${1};\nsnippet whs:n\n white-space: normal;\nsnippet whs:nw\n white-space: nowrap;\nsnippet whs:pl\n white-space: pre-line;\nsnippet whs:pw\n white-space: pre-wrap;\nsnippet whs:p\n white-space: pre;\nsnippet wid\n widows: ${1};\nsnippet w\n width: ${1};\nsnippet w:a\n width: auto;\nsnippet wob\n word-break: ${1};\nsnippet wob:ba\n word-break: break-all;\nsnippet wob:bs\n word-break: break-strict;\nsnippet wob:k\n word-break: keep-all;\nsnippet wob:l\n word-break: loose;\nsnippet wob:n\n word-break: normal;\nsnippet wos\n word-spacing: ${1};\nsnippet wow\n word-wrap: ${1};\nsnippet wow:no\n word-wrap: none;\nsnippet wow:n\n word-wrap: normal;\nsnippet wow:s\n word-wrap: suppress;\nsnippet wow:u\n word-wrap: unrestricted;\nsnippet z\n z-index: ${1};\nsnippet z:a\n z-index: auto;\nsnippet zoo\n zoom: 1;\n",t.scope="css"}) /***/ }), /* 289 */ /***/ (function(module, exports) { ace.define("ace/snippets/javascript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Prototype\nsnippet proto\n ${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n ${4:// body...}\n };\n# Function\nsnippet fun\n function ${1?:function_name}(${2:argument}) {\n ${3:// body...}\n }\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n function${M1?: ${1:functionName}}($2) {\n ${0:$TM_SELECTED_TEXT}\n }${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n (function(${1}) {\n ${0:${TM_SELECTED_TEXT:/* code */}}\n }(${1}));\n# if\nsnippet if\n if (${1:true}) {\n ${0}\n }\n# if ... else\nsnippet ife\n if (${1:true}) {\n ${2}\n } else {\n ${0}\n }\n# tertiary conditional\nsnippet ter\n ${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n switch (${1:expression}) {\n case \'${3:case}\':\n ${4:// code}\n break;\n ${5}\n default:\n ${2:// code}\n }\n# case\nsnippet case\n case \'${1:case}\':\n ${2:// code}\n break;\n ${3}\n\n# while (...) {...}\nsnippet wh\n while (${1:/* condition */}) {\n ${0:/* code */}\n }\n# try\nsnippet try\n try {\n ${0:/* code */}\n } catch (e) {}\n# do...while\nsnippet do\n do {\n ${2:/* code */}\n } while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n ${1:method_name}: function(${2:attribute}) {\n ${0}\n }${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n getElementsBy${1:TagName}(\'${2}\')${3}\n# Get Element\nsnippet get\n getElementBy${1:Id}(\'${2}\')${3}\n# console.log (Firebug)\nsnippet cl\n console.log(${1});\n# return\nsnippet ret\n return ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n for (var ${1:prop} in ${2:Things}) {\n ${0:$2[$1]}\n }\n# hasOwnProperty\nsnippet has\n hasOwnProperty(${1})\n# docstring\nsnippet /**\n /**\n * ${1:description}\n *\n */\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n @param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n @return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n JSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n JSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n var ${1:function_name} = function(${2:argument}) {\n ${3:// initial code ...}\n\n $1 = function($2) {\n ${4:// main code}\n };\n }\n# singleton\nsnippet sing\n function ${1:Singleton} (${2:argument}) {\n // the cached instance\n var instance;\n\n // rewrite the constructor\n $1 = function $1($2) {\n return instance;\n };\n \n // carry over the prototype properties\n $1.prototype = this;\n\n // the instance\n instance = new $1();\n\n // reset the constructor pointer\n instance.constructor = $1;\n\n ${3:// code ...}\n\n return instance;\n }\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n var ${1:class} = function(${20}) {\n $40$0\n };\n \n (function() {\n ${60:this.prop = ""}\n }).call(${1:class}.prototype);\n \n exports.${1:class} = ${1:class};\n# \nsnippet for-\n for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n ${0:${2:Things}[${1:i}];}\n }\n# for (...) {...}\nsnippet for\n for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n ${3:$2[$1]}$0\n }\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n ${3:$2[$1]}$0\n }\n\n\n#modules\nsnippet def\n define(function(require, exports, module) {\n "use strict";\n var ${1/.*\\///} = require("${1}");\n \n $TM_SELECTED_TEXT\n });\nsnippet req\nguard ^\\s*\n var ${1/.*\\///} = require("${1}");\n $0\nsnippet requ\nguard ^\\s*\n var ${1/.*\\/(.)/\\u$1/} = require("${1}").${1/.*\\/(.)/\\u$1/};\n $0\n',t.scope="javascript"}) /***/ }), /* 290 */ /***/ (function(module, exports) { ace.define("ace/snippets/php",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet <?\n <?php\n\n ${1}\nsnippet ec\n echo ${1};\nsnippet <?e\n <?php echo ${1} ?>\n# this one is for php5.4\nsnippet <?=\n <?=${1}?>\nsnippet ns\n namespace ${1:Foo\\Bar\\Baz};\n ${2}\nsnippet use\n use ${1:Foo\\Bar\\Baz};\n ${2}\nsnippet c\n ${1:abstract }class ${2:$FILENAME}\n {\n ${3}\n }\nsnippet i\n interface ${1:$FILENAME}\n {\n ${2}\n }\nsnippet t.\n $this->${1}\nsnippet f\n function ${1:foo}(${2:array }${3:$bar})\n {\n ${4}\n }\n# method\nsnippet m\n ${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar})\n {\n ${7}\n }\n# setter method\nsnippet sm \n /**\n * Sets the value of ${1:foo}\n *\n * @param ${2:$1} $$1 ${3:description}\n *\n * @return ${4:$FILENAME}\n */\n ${5:public} function set${6:$2}(${7:$2 }$$1)\n {\n $this->${8:$1} = $$1;\n return $this;\n }${9}\n# getter method\nsnippet gm\n /**\n * Gets the value of ${1:foo}\n *\n * @return ${2:$1}\n */\n ${3:public} function get${4:$2}()\n {\n return $this->${5:$1};\n }${6}\n#setter\nsnippet $s\n ${1:$foo}->set${2:Bar}(${3});\n#getter\nsnippet $g\n ${1:$foo}->get${2:Bar}();\n\n# Tertiary conditional\nsnippet =?:\n $${1:foo} = ${2:true} ? ${3:a} : ${4};\nsnippet ?:\n ${1:true} ? ${2:a} : ${3}\n\nsnippet C\n $_COOKIE['${1:variable}']${2}\nsnippet E\n $_ENV['${1:variable}']${2}\nsnippet F\n $_FILES['${1:variable}']${2}\nsnippet G\n $_GET['${1:variable}']${2}\nsnippet P\n $_POST['${1:variable}']${2}\nsnippet R\n $_REQUEST['${1:variable}']${2}\nsnippet S\n $_SERVER['${1:variable}']${2}\nsnippet SS\n $_SESSION['${1:variable}']${2}\n \n# the following are old ones\nsnippet inc\n include '${1:file}';${2}\nsnippet inc1\n include_once '${1:file}';${2}\nsnippet req\n require '${1:file}';${2}\nsnippet req1\n require_once '${1:file}';${2}\n# Start Docblock\nsnippet /*\n /**\n * ${1}\n */\n# Class - post doc\nsnippet doc_cp\n /**\n * ${1:undocumented class}\n *\n * @package ${2:default}\n * @subpackage ${3:default}\n * @author ${4:`g:snips_author`}\n */${5}\n# Class Variable - post doc\nsnippet doc_vp\n /**\n * ${1:undocumented class variable}\n *\n * @var ${2:string}\n */${3}\n# Class Variable\nsnippet doc_v\n /**\n * ${3:undocumented class variable}\n *\n * @var ${4:string}\n */\n ${1:var} $${2};${5}\n# Class\nsnippet doc_c\n /**\n * ${3:undocumented class}\n *\n * @package ${4:default}\n * @subpackage ${5:default}\n * @author ${6:`g:snips_author`}\n */\n ${1:}class ${2:}\n {\n ${7}\n } // END $1class $2\n# Constant Definition - post doc\nsnippet doc_dp\n /**\n * ${1:undocumented constant}\n */${2}\n# Constant Definition\nsnippet doc_d\n /**\n * ${3:undocumented constant}\n */\n define(${1}, ${2});${4}\n# Function - post doc\nsnippet doc_fp\n /**\n * ${1:undocumented function}\n *\n * @return ${2:void}\n * @author ${3:`g:snips_author`}\n */${4}\n# Function signature\nsnippet doc_s\n /**\n * ${4:undocumented function}\n *\n * @return ${5:void}\n * @author ${6:`g:snips_author`}\n */\n ${1}function ${2}(${3});${7}\n# Function\nsnippet doc_f\n /**\n * ${4:undocumented function}\n *\n * @return ${5:void}\n * @author ${6:`g:snips_author`}\n */\n ${1}function ${2}(${3})\n {${7}\n }\n# Header\nsnippet doc_h\n /**\n * ${1}\n *\n * @author ${2:`g:snips_author`}\n * @version ${3:$Id$}\n * @copyright ${4:$2}, `strftime('%d %B, %Y')`\n * @package ${5:default}\n */\n \n# Interface\nsnippet interface\n /**\n * ${2:undocumented class}\n *\n * @package ${3:default}\n * @author ${4:`g:snips_author`}\n */\n interface ${1:$FILENAME}\n {\n ${5}\n }\n# class ...\nsnippet class\n /**\n * ${1}\n */\n class ${2:$FILENAME}\n {\n ${3}\n /**\n * ${4}\n */\n ${5:public} function ${6:__construct}(${7:argument})\n {\n ${8:// code...}\n }\n }\n# define(...)\nsnippet def\n define('${1}'${2});${3}\n# defined(...)\nsnippet def?\n ${1}defined('${2}')${3}\nsnippet wh\n while (${1:/* condition */}) {\n ${2:// code...}\n }\n# do ... while\nsnippet do\n do {\n ${2:// code... }\n } while (${1:/* condition */});\nsnippet if\n if (${1:/* condition */}) {\n ${2:// code...}\n }\nsnippet ifil\n <?php if (${1:/* condition */}): ?>\n ${2:<!-- code... -->}\n <?php endif; ?>\nsnippet ife\n if (${1:/* condition */}) {\n ${2:// code...}\n } else {\n ${3:// code...}\n }\n ${4}\nsnippet ifeil\n <?php if (${1:/* condition */}): ?>\n ${2:<!-- html... -->}\n <?php else: ?>\n ${3:<!-- html... -->}\n <?php endif; ?>\n ${4}\nsnippet else\n else {\n ${1:// code...}\n }\nsnippet elseif\n elseif (${1:/* condition */}) {\n ${2:// code...}\n }\nsnippet switch\n switch ($${1:variable}) {\n case '${2:value}':\n ${3:// code...}\n break;\n ${5}\n default:\n ${4:// code...}\n break;\n }\nsnippet case\n case '${1:value}':\n ${2:// code...}\n break;${3}\nsnippet for\n for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n ${4: // code...}\n }\nsnippet foreach\n foreach ($${1:variable} as $${2:value}) {\n ${3:// code...}\n }\nsnippet foreachil\n <?php foreach ($${1:variable} as $${2:value}): ?>\n ${3:<!-- html... -->}\n <?php endforeach; ?>\nsnippet foreachk\n foreach ($${1:variable} as $${2:key} => $${3:value}) {\n ${4:// code...}\n }\nsnippet foreachkil\n <?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?>\n ${4:<!-- html... -->}\n <?php endforeach; ?>\n# $... = array (...)\nsnippet array\n $${1:arrayName} = array('${2}' => ${3});${4}\nsnippet try\n try {\n ${2}\n } catch (${1:Exception} $e) {\n }\n# lambda with closure\nsnippet lambda\n ${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {\n ${4}\n };\n# pre_dump();\nsnippet pd\n echo '<pre>'; var_dump(${1}); echo '</pre>';\n# pre_dump(); die();\nsnippet pdd\n echo '<pre>'; var_dump(${1}); echo '</pre>'; die(${2:});\nsnippet vd\n var_dump(${1});\nsnippet vdd\n var_dump(${1}); die(${2:});\nsnippet http_redirect\n header (\"HTTP/1.1 301 Moved Permanently\"); \n header (\"Location: \".URL); \n exit();\n# Getters & Setters\nsnippet gs\n /**\n * Gets the value of ${1:foo}\n *\n * @return ${2:$1}\n */\n public function get${3:$2}()\n {\n return $this->${4:$1};\n }\n\n /**\n * Sets the value of $1\n *\n * @param $2 $$1 ${5:description}\n *\n * @return ${6:$FILENAME}\n */\n public function set$3(${7:$2 }$$1)\n {\n $this->$4 = $$1;\n return $this;\n }${8}\n# anotation, get, and set, useful for doctrine\nsnippet ags\n /**\n * ${1:description}\n * \n * @${7}\n */\n ${2:protected} $${3:foo};\n\n public function get${4:$3}()\n {\n return $this->$3;\n }\n\n public function set$4(${5:$4 }$${6:$3})\n {\n $this->$3 = $$6;\n return $this;\n }\nsnippet rett\n return true;\nsnippet retf\n return false;\n",t.scope="php"}) /***/ }), /* 291 */ /***/ (function(module, exports) { ace.define("ace/snippets/html",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Some useful Unicode entities\n# Non-Breaking Space\nsnippet nbs\n \n# \u2190\nsnippet left\n ←\n# \u2192\nsnippet right\n →\n# \u2191\nsnippet up\n ↑\n# \u2193\nsnippet down\n ↓\n# \u21a9\nsnippet return\n ↩\n# \u21e4\nsnippet backtab\n ⇤\n# \u21e5\nsnippet tab\n ⇥\n# \u21e7\nsnippet shift\n ⇧\n# \u2303\nsnippet ctrl\n ⌃\n# \u2305\nsnippet enter\n ⌅\n# \u2318\nsnippet cmd\n ⌘\n# \u2325\nsnippet option\n ⌥\n# \u2326\nsnippet delete\n ⌦\n# \u232b\nsnippet backspace\n ⌫\n# \u238b\nsnippet esc\n ⎋\n# Generic Doctype\nsnippet doctype HTML 4.01 Strict\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n "http://www.w3.org/TR/html4/strict.dtd">\nsnippet doctype HTML 4.01 Transitional\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\nsnippet doctype HTML 5\n <!DOCTYPE HTML>\nsnippet doctype XHTML 1.0 Frameset\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\nsnippet doctype XHTML 1.0 Strict\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\nsnippet doctype XHTML 1.0 Transitional\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\nsnippet doctype XHTML 1.1\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n# HTML Doctype 4.01 Strict\nsnippet docts\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n "http://www.w3.org/TR/html4/strict.dtd">\n# HTML Doctype 4.01 Transitional\nsnippet doct\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n# HTML Doctype 5\nsnippet doct5\n <!DOCTYPE html>\n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">\n# XHTML Doctype 1.0 Strict\nsnippet docxs\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n# XHTML Doctype 1.1\nsnippet docx\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n# html5shiv\nsnippet html5shiv\n <!--[if lte IE 8]>\n <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"><\/script>\n <![endif]-->\nsnippet html5printshiv\n <!--[if lte IE 8]>\n <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"><\/script>\n <![endif]-->\n# Attributes\nsnippet attr\n ${1:attribute}="${2:property}"\nsnippet attr+\n ${1:attribute}="${2:property}" attr+${3}\nsnippet .\n class="${1}"${2}\nsnippet #\n id="${1}"${2}\nsnippet alt\n alt="${1}"${2}\nsnippet charset\n charset="${1:utf-8}"${2}\nsnippet data\n data-${1}="${2:$1}"${3}\nsnippet for\n for="${1}"${2}\nsnippet height\n height="${1}"${2}\nsnippet href\n href="${1:#}"${2}\nsnippet lang\n lang="${1:en}"${2}\nsnippet media\n media="${1}"${2}\nsnippet name\n name="${1}"${2}\nsnippet rel\n rel="${1}"${2}\nsnippet scope\n scope="${1:row}"${2}\nsnippet src\n src="${1}"${2}\nsnippet title=\n title="${1}"${2}\nsnippet type\n type="${1}"${2}\nsnippet value\n value="${1}"${2}\nsnippet width\n width="${1}"${2}\n# Elements\nsnippet a\n <a href="${1:#}">${2:$1}</a>\nsnippet a.\n <a class="${1}" href="${2:#}">${3:$1}</a>\nsnippet a#\n <a id="${1}" href="${2:#}">${3:$1}</a>\nsnippet a:ext\n <a href="http://${1:example.com}">${2:$1}</a>\nsnippet a:mail\n <a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${3:email me}</a>\nsnippet abbr\n <abbr title="${1}">${2}</abbr>\nsnippet address\n <address>\n ${1}\n </address>\nsnippet area\n <area shape="${1:rect}" coords="${2}" href="${3}" alt="${4}" />\nsnippet area+\n <area shape="${1:rect}" coords="${2}" href="${3}" alt="${4}" />\n area+${5}\nsnippet area:c\n <area shape="circle" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:d\n <area shape="default" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:p\n <area shape="poly" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:r\n <area shape="rect" coords="${1}" href="${2}" alt="${3}" />\nsnippet article\n <article>\n ${1}\n </article>\nsnippet article.\n <article class="${1}">\n ${2}\n </article>\nsnippet article#\n <article id="${1}">\n ${2}\n </article>\nsnippet aside\n <aside>\n ${1}\n </aside>\nsnippet aside.\n <aside class="${1}">\n ${2}\n </aside>\nsnippet aside#\n <aside id="${1}">\n ${2}\n </aside>\nsnippet audio\n <audio src="${1}>${2}</audio>\nsnippet b\n <b>${1}</b>\nsnippet base\n <base href="${1}" target="${2}" />\nsnippet bdi\n <bdi>${1}</bdo>\nsnippet bdo\n <bdo dir="${1}">${2}</bdo>\nsnippet bdo:l\n <bdo dir="ltr">${1}</bdo>\nsnippet bdo:r\n <bdo dir="rtl">${1}</bdo>\nsnippet blockquote\n <blockquote>\n ${1}\n </blockquote>\nsnippet body\n <body>\n ${1}\n </body>\nsnippet br\n <br />${1}\nsnippet button\n <button type="${1:submit}">${2}</button>\nsnippet button.\n <button class="${1:button}" type="${2:submit}">${3}</button>\nsnippet button#\n <button id="${1}" type="${2:submit}">${3}</button>\nsnippet button:s\n <button type="submit">${1}</button>\nsnippet button:r\n <button type="reset">${1}</button>\nsnippet canvas\n <canvas>\n ${1}\n </canvas>\nsnippet caption\n <caption>${1}</caption>\nsnippet cite\n <cite>${1}</cite>\nsnippet code\n <code>${1}</code>\nsnippet col\n <col />${1}\nsnippet col+\n <col />\n col+${1}\nsnippet colgroup\n <colgroup>\n ${1}\n </colgroup>\nsnippet colgroup+\n <colgroup>\n <col />\n col+${1}\n </colgroup>\nsnippet command\n <command type="command" label="${1}" icon="${2}" />\nsnippet command:c\n <command type="checkbox" label="${1}" icon="${2}" />\nsnippet command:r\n <command type="radio" radiogroup="${1}" label="${2}" icon="${3}" />\nsnippet datagrid\n <datagrid>\n ${1}\n </datagrid>\nsnippet datalist\n <datalist>\n ${1}\n </datalist>\nsnippet datatemplate\n <datatemplate>\n ${1}\n </datatemplate>\nsnippet dd\n <dd>${1}</dd>\nsnippet dd.\n <dd class="${1}">${2}</dd>\nsnippet dd#\n <dd id="${1}">${2}</dd>\nsnippet del\n <del>${1}</del>\nsnippet details\n <details>${1}</details>\nsnippet dfn\n <dfn>${1}</dfn>\nsnippet dialog\n <dialog>\n ${1}\n </dialog>\nsnippet div\n <div>\n ${1}\n </div>\nsnippet div.\n <div class="${1}">\n ${2}\n </div>\nsnippet div#\n <div id="${1}">\n ${2}\n </div>\nsnippet dl\n <dl>\n ${1}\n </dl>\nsnippet dl.\n <dl class="${1}">\n ${2}\n </dl>\nsnippet dl#\n <dl id="${1}">\n ${2}\n </dl>\nsnippet dl+\n <dl>\n <dt>${1}</dt>\n <dd>${2}</dd>\n dt+${3}\n </dl>\nsnippet dt\n <dt>${1}</dt>\nsnippet dt.\n <dt class="${1}">${2}</dt>\nsnippet dt#\n <dt id="${1}">${2}</dt>\nsnippet dt+\n <dt>${1}</dt>\n <dd>${2}</dd>\n dt+${3}\nsnippet em\n <em>${1}</em>\nsnippet embed\n <embed src=${1} type="${2} />\nsnippet fieldset\n <fieldset>\n ${1}\n </fieldset>\nsnippet fieldset.\n <fieldset class="${1}">\n ${2}\n </fieldset>\nsnippet fieldset#\n <fieldset id="${1}">\n ${2}\n </fieldset>\nsnippet fieldset+\n <fieldset>\n <legend><span>${1}</span></legend>\n ${2}\n </fieldset>\n fieldset+${3}\nsnippet figcaption\n <figcaption>${1}</figcaption>\nsnippet figure\n <figure>${1}</figure>\nsnippet footer\n <footer>\n ${1}\n </footer>\nsnippet footer.\n <footer class="${1}">\n ${2}\n </footer>\nsnippet footer#\n <footer id="${1}">\n ${2}\n </footer>\nsnippet form\n <form action="${1}" method="${2:get}" accept-charset="utf-8">\n ${3}\n </form>\nsnippet form.\n <form class="${1}" action="${2}" method="${3:get}" accept-charset="utf-8">\n ${4}\n </form>\nsnippet form#\n <form id="${1}" action="${2}" method="${3:get}" accept-charset="utf-8">\n ${4}\n </form>\nsnippet h1\n <h1>${1}</h1>\nsnippet h1.\n <h1 class="${1}">${2}</h1>\nsnippet h1#\n <h1 id="${1}">${2}</h1>\nsnippet h2\n <h2>${1}</h2>\nsnippet h2.\n <h2 class="${1}">${2}</h2>\nsnippet h2#\n <h2 id="${1}">${2}</h2>\nsnippet h3\n <h3>${1}</h3>\nsnippet h3.\n <h3 class="${1}">${2}</h3>\nsnippet h3#\n <h3 id="${1}">${2}</h3>\nsnippet h4\n <h4>${1}</h4>\nsnippet h4.\n <h4 class="${1}">${2}</h4>\nsnippet h4#\n <h4 id="${1}">${2}</h4>\nsnippet h5\n <h5>${1}</h5>\nsnippet h5.\n <h5 class="${1}">${2}</h5>\nsnippet h5#\n <h5 id="${1}">${2}</h5>\nsnippet h6\n <h6>${1}</h6>\nsnippet h6.\n <h6 class="${1}">${2}</h6>\nsnippet h6#\n <h6 id="${1}">${2}</h6>\nsnippet head\n <head>\n <meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\n <title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\n ${2}\n </head>\nsnippet header\n <header>\n ${1}\n </header>\nsnippet header.\n <header class="${1}">\n ${2}\n </header>\nsnippet header#\n <header id="${1}">\n ${2}\n </header>\nsnippet hgroup\n <hgroup>\n ${1}\n </hgroup>\nsnippet hgroup.\n <hgroup class="${1}>\n ${2}\n </hgroup>\nsnippet hr\n <hr />${1}\nsnippet html\n <html>\n ${1}\n </html>\nsnippet xhtml\n <html xmlns="http://www.w3.org/1999/xhtml">\n ${1}\n </html>\nsnippet html5\n <!DOCTYPE html>\n <html>\n <head>\n <meta http-equiv="content-type" content="text/html; charset=utf-8" />\n <title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\n ${2:meta}\n </head>\n <body>\n ${3:body}\n </body>\n </html>\nsnippet xhtml5\n <!DOCTYPE html>\n <html xmlns="http://www.w3.org/1999/xhtml">\n <head>\n <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />\n <title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\n ${2:meta}\n </head>\n <body>\n ${3:body}\n </body>\n </html>\nsnippet i\n <i>${1}</i>\nsnippet iframe\n <iframe src="${1}" frameborder="0"></iframe>${2}\nsnippet iframe.\n <iframe class="${1}" src="${2}" frameborder="0"></iframe>${3}\nsnippet iframe#\n <iframe id="${1}" src="${2}" frameborder="0"></iframe>${3}\nsnippet img\n <img src="${1}" alt="${2}" />${3}\nsnippet img.\n <img class="${1}" src="${2}" alt="${3}" />${4}\nsnippet img#\n <img id="${1}" src="${2}" alt="${3}" />${4}\nsnippet input\n <input type="${1:text/submit/hidden/button/image}" name="${2}" id="${3:$2}" value="${4}" />${5}\nsnippet input.\n <input class="${1}" type="${2:text/submit/hidden/button/image}" name="${3}" id="${4:$3}" value="${5}" />${6}\nsnippet input:text\n <input type="text" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:submit\n <input type="submit" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:hidden\n <input type="hidden" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:button\n <input type="button" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:image\n <input type="image" name="${1}" id="${2:$1}" src="${3}" alt="${4}" />${5}\nsnippet input:checkbox\n <input type="checkbox" name="${1}" id="${2:$1}" />${3}\nsnippet input:radio\n <input type="radio" name="${1}" id="${2:$1}" />${3}\nsnippet input:color\n <input type="color" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:date\n <input type="date" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:datetime\n <input type="datetime" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:datetime-local\n <input type="datetime-local" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:email\n <input type="email" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:file\n <input type="file" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:month\n <input type="month" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:number\n <input type="number" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:password\n <input type="password" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:range\n <input type="range" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:reset\n <input type="reset" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:search\n <input type="search" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:time\n <input type="time" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:url\n <input type="url" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:week\n <input type="week" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet ins\n <ins>${1}</ins>\nsnippet kbd\n <kbd>${1}</kbd>\nsnippet keygen\n <keygen>${1}</keygen>\nsnippet label\n <label for="${2:$1}">${1}</label>\nsnippet label:i\n <label for="${2:$1}">${1}</label>\n <input type="${3:text/submit/hidden/button}" name="${4:$2}" id="${5:$2}" value="${6}" />${7}\nsnippet label:s\n <label for="${2:$1}">${1}</label>\n <select name="${3:$2}" id="${4:$2}">\n <option value="${5}">${6:$5}</option>\n </select>\nsnippet legend\n <legend>${1}</legend>\nsnippet legend+\n <legend><span>${1}</span></legend>\nsnippet li\n <li>${1}</li>\nsnippet li.\n <li class="${1}">${2}</li>\nsnippet li+\n <li>${1}</li>\n li+${2}\nsnippet lia\n <li><a href="${2:#}">${1}</a></li>\nsnippet lia+\n <li><a href="${2:#}">${1}</a></li>\n lia+${3}\nsnippet link\n <link rel="${1}" href="${2}" title="${3}" type="${4}" />${5}\nsnippet link:atom\n <link rel="alternate" href="${1:atom.xml}" title="Atom" type="application/atom+xml" />${2}\nsnippet link:css\n <link rel="stylesheet" href="${2:style.css}" type="text/css" media="${3:all}" />${4}\nsnippet link:favicon\n <link rel="shortcut icon" href="${1:favicon.ico}" type="image/x-icon" />${2}\nsnippet link:rss\n <link rel="alternate" href="${1:rss.xml}" title="RSS" type="application/atom+xml" />${2}\nsnippet link:touch\n <link rel="apple-touch-icon" href="${1:favicon.png}" />${2}\nsnippet map\n <map name="${1}">\n ${2}\n </map>\nsnippet map.\n <map class="${1}" name="${2}">\n ${3}\n </map>\nsnippet map#\n <map name="${1}" id="${2:$1}>\n ${3}\n </map>\nsnippet map+\n <map name="${1}">\n <area shape="${2}" coords="${3}" href="${4}" alt="${5}" />${6}\n </map>${7}\nsnippet mark\n <mark>${1}</mark>\nsnippet menu\n <menu>\n ${1}\n </menu>\nsnippet menu:c\n <menu type="context">\n ${1}\n </menu>\nsnippet menu:t\n <menu type="toolbar">\n ${1}\n </menu>\nsnippet meta\n <meta http-equiv="${1}" content="${2}" />${3}\nsnippet meta:compat\n <meta http-equiv="X-UA-Compatible" content="IE=${1:7,8,edge}" />${3}\nsnippet meta:refresh\n <meta http-equiv="refresh" content="text/html;charset=UTF-8" />${3}\nsnippet meta:utf\n <meta http-equiv="content-type" content="text/html;charset=UTF-8" />${3}\nsnippet meter\n <meter>${1}</meter>\nsnippet nav\n <nav>\n ${1}\n </nav>\nsnippet nav.\n <nav class="${1}">\n ${2}\n </nav>\nsnippet nav#\n <nav id="${1}">\n ${2}\n </nav>\nsnippet noscript\n <noscript>\n ${1}\n </noscript>\nsnippet object\n <object data="${1}" type="${2}">\n ${3}\n </object>${4}\n# Embed QT Movie\nsnippet movie\n <object width="$2" height="$3" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"\n codebase="http://www.apple.com/qtactivex/qtplugin.cab">\n <param name="src" value="$1" />\n <param name="controller" value="$4" />\n <param name="autoplay" value="$5" />\n <embed src="${1:movie.mov}"\n width="${2:320}" height="${3:240}"\n controller="${4:true}" autoplay="${5:true}"\n scale="tofit" cache="true"\n pluginspage="http://www.apple.com/quicktime/download/" />\n </object>${6}\nsnippet ol\n <ol>\n ${1}\n </ol>\nsnippet ol.\n <ol class="${1}>\n ${2}\n </ol>\nsnippet ol#\n <ol id="${1}>\n ${2}\n </ol>\nsnippet ol+\n <ol>\n <li>${1}</li>\n li+${2}\n </ol>\nsnippet opt\n <option value="${1}">${2:$1}</option>\nsnippet opt+\n <option value="${1}">${2:$1}</option>\n opt+${3}\nsnippet optt\n <option>${1}</option>\nsnippet optgroup\n <optgroup>\n <option value="${1}">${2:$1}</option>\n opt+${3}\n </optgroup>\nsnippet output\n <output>${1}</output>\nsnippet p\n <p>${1}</p>\nsnippet param\n <param name="${1}" value="${2}" />${3}\nsnippet pre\n <pre>\n ${1}\n </pre>\nsnippet progress\n <progress>${1}</progress>\nsnippet q\n <q>${1}</q>\nsnippet rp\n <rp>${1}</rp>\nsnippet rt\n <rt>${1}</rt>\nsnippet ruby\n <ruby>\n <rp><rt>${1}</rt></rp>\n </ruby>\nsnippet s\n <s>${1}</s>\nsnippet samp\n <samp>\n ${1}\n </samp>\nsnippet script\n <script type="text/javascript" charset="utf-8">\n ${1}\n <\/script>\nsnippet scriptsrc\n <script src="${1}.js" type="text/javascript" charset="utf-8"><\/script>\nsnippet newscript\n <script type="application/javascript" charset="utf-8">\n ${1}\n <\/script>\nsnippet newscriptsrc\n <script src="${1}.js" type="application/javascript" charset="utf-8"><\/script>\nsnippet section\n <section>\n ${1}\n </section>\nsnippet section.\n <section class="${1}">\n ${2}\n </section>\nsnippet section#\n <section id="${1}">\n ${2}\n </section>\nsnippet select\n <select name="${1}" id="${2:$1}">\n ${3}\n </select>\nsnippet select.\n <select name="${1}" id="${2:$1}" class="${3}>\n ${4}\n </select>\nsnippet select+\n <select name="${1}" id="${2:$1}">\n <option value="${3}">${4:$3}</option>\n opt+${5}\n </select>\nsnippet small\n <small>${1}</small>\nsnippet source\n <source src="${1}" type="${2}" media="${3}" />\nsnippet span\n <span>${1}</span>\nsnippet strong\n <strong>${1}</strong>\nsnippet style\n <style type="text/css" media="${1:all}">\n ${2}\n </style>\nsnippet sub\n <sub>${1}</sub>\nsnippet summary\n <summary>\n ${1}\n </summary>\nsnippet sup\n <sup>${1}</sup>\nsnippet table\n <table border="${1:0}">\n ${2}\n </table>\nsnippet table.\n <table class="${1}" border="${2:0}">\n ${3}\n </table>\nsnippet table#\n <table id="${1}" border="${2:0}">\n ${3}\n </table>\nsnippet tbody\n <tbody>\n ${1}\n </tbody>\nsnippet td\n <td>${1}</td>\nsnippet td.\n <td class="${1}">${2}</td>\nsnippet td#\n <td id="${1}">${2}</td>\nsnippet td+\n <td>${1}</td>\n td+${2}\nsnippet textarea\n <textarea name="${1}" id=${2:$1} rows="${3:8}" cols="${4:40}">${5}</textarea>${6}\nsnippet tfoot\n <tfoot>\n ${1}\n </tfoot>\nsnippet th\n <th>${1}</th>\nsnippet th.\n <th class="${1}">${2}</th>\nsnippet th#\n <th id="${1}">${2}</th>\nsnippet th+\n <th>${1}</th>\n th+${2}\nsnippet thead\n <thead>\n ${1}\n </thead>\nsnippet time\n <time datetime="${1}" pubdate="${2:$1}>${3:$1}</time>\nsnippet title\n <title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\nsnippet tr\n <tr>\n ${1}\n </tr>\nsnippet tr+\n <tr>\n <td>${1}</td>\n td+${2}\n </tr>\nsnippet track\n <track src="${1}" srclang="${2}" label="${3}" default="${4:default}>${5}</track>${6}\nsnippet ul\n <ul>\n ${1}\n </ul>\nsnippet ul.\n <ul class="${1}">\n ${2}\n </ul>\nsnippet ul#\n <ul id="${1}">\n ${2}\n </ul>\nsnippet ul+\n <ul>\n <li>${1}</li>\n li+${2}\n </ul>\nsnippet var\n <var>${1}</var>\nsnippet video\n <video src="${1} height="${2}" width="${3}" preload="${5:none}" autoplay="${6:autoplay}>${7}</video>${8}\nsnippet wbr\n <wbr />${1}\n',t.scope="html"}) /***/ }), /* 292 */ /***/ (function(module, exports) { ace.define("ace/snippets/json",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="json"}) /***/ }), /* 293 */ /***/ (function(module, exports) { ace.define("ace/snippets/text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="text"}) /***/ }), /* 294 */ /***/ (function(module, exports) { ace.define("ace/snippets/markdown",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Markdown\n\n# Includes octopress (http://octopress.org/) snippets\n\nsnippet [\n [${1:text}](http://${2:address} "${3:title}")\nsnippet [*\n [${1:link}](${2:`@*`} "${3:title}")${4}\n\nsnippet [:\n [${1:id}]: http://${2:url} "${3:title}"\nsnippet [:*\n [${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet \nsnippet ${4}\n\nsnippet ![:\n ![${1:id}]: ${2:url} "${3:title}"\nsnippet ![:*\n ![${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ===\nregex /^/=+/=*//\n ${PREV_LINE/./=/g}\n \n ${0}\nsnippet ---\nregex /^/-+/-*//\n ${PREV_LINE/./-/g}\n \n ${0}\nsnippet blockquote\n {% blockquote %}\n ${1:quote}\n {% endblockquote %}\n\nsnippet blockquote-author\n {% blockquote ${1:author}, ${2:title} %}\n ${3:quote}\n {% endblockquote %}\n\nsnippet blockquote-link\n {% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n ${4:quote}\n {% endblockquote %}\n\nsnippet bt-codeblock-short\n ```\n ${1:code_snippet}\n ```\n\nsnippet bt-codeblock-full\n ``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n ${5:code_snippet}\n ```\n\nsnippet codeblock-short\n {% codeblock %}\n ${1:code_snippet}\n {% endcodeblock %}\n\nsnippet codeblock-full\n {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n ${5:code_snippet}\n {% endcodeblock %}\n\nsnippet gist-full\n {% gist ${1:gist_id} ${2:filename} %}\n\nsnippet gist-short\n {% gist ${1:gist_id} %}\n\nsnippet img\n {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\nsnippet youtube\n {% youtube ${1:video_id} %}\n\n# The quote should appear only once in the text. It is inherently part of it.\n# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\nsnippet pullquote\n {% pullquote %}\n ${1:text} {" ${2:quote} "} ${3:text}\n {% endpullquote %}\n',t.scope="markdown"}) /***/ }), /* 295 */ /***/ (function(module, exports) { ace.define("ace/snippets/jsx",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jsx"}) /***/ }), /* 296 */ /***/ (function(module, exports) { ace.define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"], function(acequire, exports, module) { "use strict"; var TokenIterator = acequire("ace/token_iterator").TokenIterator; exports.newLines = [{ type: 'support.php_tag', value: '<?php' }, { type: 'support.php_tag', value: '<?' }, { type: 'support.php_tag', value: '?>' }, { type: 'paren.lparen', value: '{', indent: true }, { type: 'paren.rparen', breakBefore: true, value: '}', indent: false }, { type: 'paren.rparen', breakBefore: true, value: '})', indent: false, dontBreak: true }, { type: 'comment' }, { type: 'text', value: ';' }, { type: 'text', value: ':', context: 'php' }, { type: 'keyword', value: 'case', indent: true, dontBreak: true }, { type: 'keyword', value: 'default', indent: true, dontBreak: true }, { type: 'keyword', value: 'break', indent: false, dontBreak: true }, { type: 'punctuation.doctype.end', value: '>' }, { type: 'meta.tag.punctuation.end', value: '>' }, { type: 'meta.tag.punctuation.begin', value: '<', blockTag: true, indent: true, dontBreak: true }, { type: 'meta.tag.punctuation.begin', value: '</', indent: false, breakBefore: true, dontBreak: true }, { type: 'punctuation.operator', value: ';' }]; exports.spaces = [{ type: 'xml-pe', prepend: true },{ type: 'entity.other.attribute-name', prepend: true }, { type: 'storage.type', value: 'var', append: true }, { type: 'storage.type', value: 'function', append: true }, { type: 'keyword.operator', value: '=' }, { type: 'keyword', value: 'as', prepend: true, append: true }, { type: 'keyword', value: 'function', append: true }, { type: 'support.function', next: /[^\(]/, append: true }, { type: 'keyword', value: 'or', append: true, prepend: true }, { type: 'keyword', value: 'and', append: true, prepend: true }, { type: 'keyword', value: 'case', append: true }, { type: 'keyword.operator', value: '||', append: true, prepend: true }, { type: 'keyword.operator', value: '&&', append: true, prepend: true }]; exports.singleTags = ['!doctype','area','base','br','hr','input','img','link','meta']; exports.transform = function(iterator, maxPos, context) { var token = iterator.getCurrentToken(); var newLines = exports.newLines; var spaces = exports.spaces; var singleTags = exports.singleTags; var code = ''; var indentation = 0; var dontBreak = false; var tag; var lastTag; var lastToken = {}; var nextTag; var nextToken = {}; var breakAdded = false; var value = ''; while (token!==null) { console.log(token); if( !token ){ token = iterator.stepForward(); continue; } if( token.type == 'support.php_tag' && token.value != '?>' ){ context = 'php'; } else if( token.type == 'support.php_tag' && token.value == '?>' ){ context = 'html'; } else if( token.type == 'meta.tag.name.style' && context != 'css' ){ context = 'css'; } else if( token.type == 'meta.tag.name.style' && context == 'css' ){ context = 'html'; } else if( token.type == 'meta.tag.name.script' && context != 'js' ){ context = 'js'; } else if( token.type == 'meta.tag.name.script' && context == 'js' ){ context = 'html'; } nextToken = iterator.stepForward(); if (nextToken && nextToken.type.indexOf('meta.tag.name') == 0) { nextTag = nextToken.value; } if ( lastToken.type == 'support.php_tag' && lastToken.value == '<?=') { dontBreak = true; } if (token.type == 'meta.tag.name') { token.value = token.value.toLowerCase(); } if (token.type == 'text') { token.value = token.value.trim(); } if (!token.value) { token = nextToken; continue; } value = token.value; for (var i in spaces) { if ( token.type == spaces[i].type && (!spaces[i].value || token.value == spaces[i].value) && ( nextToken && (!spaces[i].next || spaces[i].next.test(nextToken.value)) ) ) { if (spaces[i].prepend) { value = ' ' + token.value; } if (spaces[i].append) { value += ' '; } } } if (token.type.indexOf('meta.tag.name') == 0) { tag = token.value; } breakAdded = false; for (i in newLines) { if ( token.type == newLines[i].type && ( !newLines[i].value || token.value == newLines[i].value ) && ( !newLines[i].blockTag || singleTags.indexOf(nextTag) === -1 ) && ( !newLines[i].context || newLines[i].context === context ) ) { if (newLines[i].indent === false) { indentation--; } if ( newLines[i].breakBefore && ( !newLines[i].prev || newLines[i].prev.test(lastToken.value) ) ) { code += "\n"; breakAdded = true; for (i = 0; i < indentation; i++) { code += "\t"; } } break; } } if (dontBreak===false) { for (i in newLines) { if ( lastToken.type == newLines[i].type && ( !newLines[i].value || lastToken.value == newLines[i].value ) && ( !newLines[i].blockTag || singleTags.indexOf(tag) === -1 ) && ( !newLines[i].context || newLines[i].context === context ) ) { if (newLines[i].indent === true) { indentation++; } if (!newLines[i].dontBreak && !breakAdded) { code += "\n"; for (i = 0; i < indentation; i++) { code += "\t"; } } break; } } } code += value; if ( lastToken.type == 'support.php_tag' && lastToken.value == '?>' ) { dontBreak = false; } lastTag = tag; lastToken = token; token = nextToken; if (token===null) { break; } } return code; }; }); ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"], function(acequire, exports, module) { "use strict"; var TokenIterator = acequire("ace/token_iterator").TokenIterator; var phpTransform = acequire("./beautify/php_rules").transform; exports.beautify = function(session) { var iterator = new TokenIterator(session, 0, 0); var token = iterator.getCurrentToken(); var context = session.$modeId.split("/").pop(); var code = phpTransform(iterator, context); session.doc.setValue(code); }; exports.commands = [{ name: "beautify", exec: function(editor) { exports.beautify(editor.session); }, bindKey: "Ctrl-Shift-B" }]; }); (function() { ace.acequire(["ace/ext/beautify"], function() {}); })(); /***/ }), /* 297 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(298); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 298 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".ptswpf,\r\n.ptswpf * {\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n outline: none;\r\n}\r\n\r\n\r\n.ptswpf button {\r\n border: none;\r\n border-radius: 0.4em;\r\n font-size: 1em;\r\n background-color: rgb(169, 169, 169, 0.05);\r\n color: white;\r\n padding: 0;\r\n}\r\n\r\n\r\n\r\n.ptswpf button:active,\r\n.ptswpf button:active:hover {\r\n background-color: rgb(169, 169, 169, 0.12);\r\n}\r\n\r\n\r\n.ptswpf button:hover {\r\n background-color: rgb(169, 169, 169, 0.07);\r\n}\r\n\r\n.ptswpf {\r\n background-color: white;\r\n position: relative;\r\n font-size: 1em;\r\n}\r\n\r\n\r\n\r\n\r\n.ptswpf.ptswpf-dark {\r\n background-color: rgb(36, 36, 37);\r\n /* background-color: red; */\r\n}\r\n\r\nbutton.ptswpf-to-prev-image,\r\nbutton.ptswpf-to-next-image {\r\n position: absolute;\r\n height: 3em;\r\n width: 3em;\r\n top: calc(50% - 0.75em);\r\n z-index: 10;\r\n display: none;\r\n}\r\n\r\n.ptswpf.ptswpf-multi-image .ptswpf-to-prev-image,\r\n.ptswpf.ptswpf-multi-image .ptswpf-to-next-image {\r\n display: initial;\r\n}\r\n\r\n\r\n.ptswpf-to-prev-image {\r\n left: 0.325em;\r\n}\r\n\r\n.ptswpf-to-next-image {\r\n right: 0.325em;\r\n}\r\n\r\nbutton.ptswpf-to-prev-image>i,\r\nbutton.ptswpf-to-next-image>i {\r\n font-size: 2.5em;\r\n}\r\n\r\n\r\n.ptswpf-top-bar {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 20;\r\n background-color: rgba(0, 0, 0, 0, 0.2);\r\n text-align: right;\r\n padding-top: 1em;\r\n padding-right: 2em;\r\n font-size: 0.5em;\r\n}\r\n\r\n.ptswpf-top-bar>button {\r\n width: 3em;\r\n height: 3em;\r\n color: rgb(200, 200, 200);\r\n margin-left: 1em;\r\n margin-bottom: 0.5em;\r\n}\r\n\r\n.ptswpf-top-bar>button>i {\r\n font-size: 2em;\r\n}\r\n\r\n\r\n.ptswpf-image.ptswpf-loading {\r\n visibility: hidden;\r\n}\r\n\r\n.ptswpf-move-animation,\r\n.ptswpf-move-animation .ptswpf-image {\r\n transition: all 0.2s linear;\r\n}\r\n\r\n\r\n\r\nimg.ptswpf-image {\r\n image-orientation: from-image;\r\n position: absolute;\r\n}\r\n\r\n\r\n\r\n.ptswpf-download-trigger {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n visibility: hidden;\r\n}\r\n\r\n.ptswpf-mode-pan .ptswpf-action-pan_tool {\r\n color: white;\r\n}\r\n\r\n.ptswpf-mode-pan img.ptswpf-image {\r\n cursor: grab;\r\n}\r\n\r\n\r\n.ptswpf-mode-zoom-in .ptswpf-action-zoom_in {\r\n color: white;\r\n}\r\n\r\n.ptswpf-mode-zoom-in img.ptswpf-image {\r\n cursor: zoom-in;\r\n}\r\n\r\n.ptswpf-mode-zoom-out .ptswpf-action-zoom_out {\r\n color: white;\r\n}\r\n\r\n.ptswpf-mode-zoom-out img.ptswpf-image {\r\n cursor: zoom-out;\r\n}\r\n\r\n\r\n.ptswpf-frame {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n left: 0;\r\n top: 0;\r\n overflow: hidden;\r\n touch-action: none;\r\n z-index: 4;\r\n}\r\n\r\n.ptswpf-frame-left {\r\n left: -100%;\r\n z-index: 3;\r\n}\r\n\r\n.ptswpf-frame-right {\r\n left: 100%;\r\n z-index: 3;\r\n\r\n}\r\n\r\n\r\n\r\n.ptswpf-frame-loading-img {\r\n display: block;\r\n position: absolute;\r\n left: calc(50% - 5em);\r\n top: calc(50% - 5em);\r\n width: 10em;\r\n height: 10em;\r\n}", ""]); /***/ }), /* 299 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(300); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 300 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-status-bar {\r\n background-color: rgb(240, 240, 240);\r\n position: relative;\r\n min-height: 1.2em;\r\n color: black;\r\n}\r\n\r\nbutton.as-status-bar-item {\r\n border: none;\r\n background-color: transparent;\r\n font-size: 0.8em;\r\n height: 100%;\r\n padding-left: 0.5em;\r\n padding-right: 0.5em;\r\n color: black;\r\n outline: none;\r\n}\r\n\r\nbutton.as-status-bar-item:hover {\r\n background-color: rgba(102, 102, 102, 0.1);\r\n}\r\n\r\nbutton.as-status-bar-item .mdi {\r\n font-size: 1.2em;\r\n}\r\n\r\n/*\r\n rgb(r, g, 255) * alpha + (1 - alpha) * rgb(0, 122, 204) = rgb(31, 137, 210)\r\n=> 255 * alpha + 204 - 204 * alpha = 210\r\n=> (255 - 204)alpha = 210-204\r\n=> alpha = (210-204)/(255-204)\r\n\r\n*/\r\n.as-status-bar-left {\r\n /* background: rgba(red, green, 255, 0.11764705882352941); */\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n\r\n}\r\n\r\n.as-status-bar-right {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n padding-right: 0.5em;\r\n line-height: 1.2;\r\n}", ""]); /***/ }), /* 301 */ /***/ (function(module, exports, __webpack_require__) { var content = __webpack_require__(302); if(typeof content === 'string') content = [[module.i, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(5)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /* 302 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(false); // Module exports.push([module.i, ".as-size-box-editor {\r\n padding: 0.35em;\r\n border: 1px solid black;\r\n font-size: 12px;\r\n display: table;\r\n width: 100%;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-size-box-editor-title{\r\n width: 0;\r\n overflow: visible;\r\n white-space: nowrap;\r\n color: rgb(169, 169, 169);\r\n}\r\n\r\n.as-size-box-editor-position-top,\r\n.as-size-box-editor-position-bottom {\r\n height: 1.2em;\r\n text-align: center;\r\n display: table-row;\r\n}\r\n\r\n.as-size-box-editor-position-top>*,\r\n.as-size-box-editor-position-bottom>* {\r\n display: table-cell;\r\n}\r\n\r\n.as-size-box-editor-position-top>span,\r\n.as-size-box-editor-position-bottom>span {\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-size-box-editor-top-text{\r\n outline: none;\r\n}\r\n\r\n.as-size-box-editor-position-top>span {\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-size-box-editor-position-mid {\r\n display: table-row;\r\n}\r\n\r\n.as-size-box-editor-position-left,\r\n.as-size-box-editor-position-right {\r\n display: table-cell;\r\n width: 0;\r\n padding-left: 0.2em;\r\n padding-right: 0.2em;\r\n vertical-align: middle;\r\n\r\n}\r\n\r\n.as-size-box-editor-position-left>span,\r\n.as-size-box-editor-position-right>span {\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-size-box-editor-position-center {\r\n display: table-cell;\r\n width: 100%;\r\n box-sizing: border-box;\r\n background-color: rgba(255, 0, 0, 0.3); \r\n}\r\n", ""]); /***/ }), /* 303 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // NAMESPACE OBJECT: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate_namespaceObject = {}; __webpack_require__.r(stringGenerate_namespaceObject); __webpack_require__.d(stringGenerate_namespaceObject, "identCharacters", function() { return identCharacters; }); __webpack_require__.d(stringGenerate_namespaceObject, "randomIdent", function() { return randomIdent; }); __webpack_require__.d(stringGenerate_namespaceObject, "parallelMatch", function() { return parallelMatch; }); __webpack_require__.d(stringGenerate_namespaceObject, "ipsumLoremWord", function() { return ipsumLoremWord; }); __webpack_require__.d(stringGenerate_namespaceObject, "randomWord", function() { return randomWord; }); __webpack_require__.d(stringGenerate_namespaceObject, "randomPhrase", function() { return randomPhrase; }); __webpack_require__.d(stringGenerate_namespaceObject, "randomSentence", function() { return randomSentence; }); __webpack_require__.d(stringGenerate_namespaceObject, "randomParagraph", function() { return randomParagraph; }); // NAMESPACE OBJECT: ./node_modules/absol/src/HTML5/Text.js var Text_namespaceObject = {}; __webpack_require__.r(Text_namespaceObject); __webpack_require__.d(Text_namespaceObject, "getTextNodesIn", function() { return getTextNodesIn; }); __webpack_require__.d(Text_namespaceObject, "setSelectionRangeStart", function() { return setSelectionRangeStart; }); __webpack_require__.d(Text_namespaceObject, "setSelectionRangeEnd", function() { return setSelectionRangeEnd; }); __webpack_require__.d(Text_namespaceObject, "setSelectionRange", function() { return setSelectionRange; }); __webpack_require__.d(Text_namespaceObject, "getTextIn", function() { return getTextIn; }); __webpack_require__.d(Text_namespaceObject, "textToNodes", function() { return textToNodes; }); __webpack_require__.d(Text_namespaceObject, "getCaretPosition", function() { return Text_getCaretPosition; }); __webpack_require__.d(Text_namespaceObject, "setCaretPosition", function() { return setCaretPosition; }); __webpack_require__.d(Text_namespaceObject, "measureText", function() { return measureText; }); // NAMESPACE OBJECT: ./node_modules/absol/src/Converter/file.js var file_namespaceObject = {}; __webpack_require__.r(file_namespaceObject); __webpack_require__.d(file_namespaceObject, "blobToFile", function() { return blobToFile; }); __webpack_require__.d(file_namespaceObject, "dataURItoBlob", function() { return dataURItoBlob; }); __webpack_require__.d(file_namespaceObject, "blobToArrayBuffer", function() { return blobToArrayBuffer; }); __webpack_require__.d(file_namespaceObject, "stringToBlob", function() { return stringToBlob; }); // NAMESPACE OBJECT: ./node_modules/absol/src/Converter/base64.js var base64_namespaceObject = {}; __webpack_require__.r(base64_namespaceObject); __webpack_require__.d(base64_namespaceObject, "base64EncodeUnicode", function() { return base64EncodeUnicode; }); __webpack_require__.d(base64_namespaceObject, "base64DecodeUnicode", function() { return base64DecodeUnicode; }); __webpack_require__.d(base64_namespaceObject, "UnicodeBase64Converter", function() { return UnicodeBase64Converter; }); // NAMESPACE OBJECT: ./node_modules/absol/src/String/stringFormat.js var stringFormat_namespaceObject = {}; __webpack_require__.r(stringFormat_namespaceObject); __webpack_require__.d(stringFormat_namespaceObject, "wrapToLines", function() { return wrapToLines; }); __webpack_require__.d(stringFormat_namespaceObject, "nonAccentVietnamese", function() { return nonAccentVietnamese; }); __webpack_require__.d(stringFormat_namespaceObject, "pascalCaseToCamelCase", function() { return pascalCaseToCamelCase; }); __webpack_require__.d(stringFormat_namespaceObject, "kebabCaseToCamelCase", function() { return kebabCaseToCamelCase; }); __webpack_require__.d(stringFormat_namespaceObject, "underScoreToCamelCase", function() { return underScoreToCamelCase; }); __webpack_require__.d(stringFormat_namespaceObject, "camelCaseToPascalCase", function() { return camelCaseToPascalCase; }); __webpack_require__.d(stringFormat_namespaceObject, "underScoreToPascalCase", function() { return underScoreToPascalCase; }); __webpack_require__.d(stringFormat_namespaceObject, "kebabCaseToPascalCase", function() { return kebabCaseToPascalCase; }); __webpack_require__.d(stringFormat_namespaceObject, "pascalCaseToKebabCase", function() { return pascalCaseToKebabCase; }); __webpack_require__.d(stringFormat_namespaceObject, "camelCaseToKebabCase", function() { return camelCaseToKebabCase; }); __webpack_require__.d(stringFormat_namespaceObject, "underScoreToKebabCase", function() { return underScoreToKebabCase; }); __webpack_require__.d(stringFormat_namespaceObject, "pascalCaseToUnderScore", function() { return pascalCaseToUnderScore; }); __webpack_require__.d(stringFormat_namespaceObject, "pascalCaseToUpperUnderScore", function() { return pascalCaseToUpperUnderScore; }); __webpack_require__.d(stringFormat_namespaceObject, "camelCaseToUnderScore", function() { return camelCaseToUnderScore; }); __webpack_require__.d(stringFormat_namespaceObject, "camelCaseToUpperUnderScore", function() { return camelCaseToUpperUnderScore; }); __webpack_require__.d(stringFormat_namespaceObject, "kebabCaseToUnderScore", function() { return kebabCaseToUnderScore; }); __webpack_require__.d(stringFormat_namespaceObject, "kebabCaseToUpperUnderScore", function() { return kebabCaseToUpperUnderScore; }); // NAMESPACE OBJECT: ./node_modules/absol/src/JSX/dom.js var dom_namespaceObject = {}; __webpack_require__.r(dom_namespaceObject); __webpack_require__.d(dom_namespaceObject, "domVisitor", function() { return domVisitor; }); __webpack_require__.d(dom_namespaceObject, "parseDom", function() { return parseDom; }); // NAMESPACE OBJECT: ./node_modules/absol/src/Math/int.js var int_namespaceObject = {}; __webpack_require__.r(int_namespaceObject); __webpack_require__.d(int_namespaceObject, "map", function() { return int_map; }); __webpack_require__.d(int_namespaceObject, "sumArr", function() { return sumArr; }); __webpack_require__.d(int_namespaceObject, "radianInRange", function() { return radianInRange; }); __webpack_require__.d(int_namespaceObject, "distance", function() { return int_distance; }); __webpack_require__.d(int_namespaceObject, "numberToString", function() { return numberToString; }); __webpack_require__.d(int_namespaceObject, "numberAutoFixed", function() { return numberAutoFixed; }); __webpack_require__.d(int_namespaceObject, "harmonicMean", function() { return harmonicMean; }); // NAMESPACE OBJECT: ./node_modules/absol/src/HTML5/Clipboard.js var Clipboard_namespaceObject = {}; __webpack_require__.r(Clipboard_namespaceObject); __webpack_require__.d(Clipboard_namespaceObject, "copyImage", function() { return copyImage; }); __webpack_require__.d(Clipboard_namespaceObject, "copyText", function() { return copyText; }); // NAMESPACE OBJECT: ./node_modules/absol/src/Time/datetime.js var datetime_namespaceObject = {}; __webpack_require__.r(datetime_namespaceObject); __webpack_require__.d(datetime_namespaceObject, "MILLIS_PER_DAY", function() { return MILLIS_PER_DAY; }); __webpack_require__.d(datetime_namespaceObject, "MILLIS_PER_HOUR", function() { return MILLIS_PER_HOUR; }); __webpack_require__.d(datetime_namespaceObject, "MILLIS_PER_MINUTE", function() { return MILLIS_PER_MINUTE; }); __webpack_require__.d(datetime_namespaceObject, "ddmmyyyy", function() { return ddmmyyyy; }); __webpack_require__.d(datetime_namespaceObject, "yyymmdd", function() { return yyymmdd; }); __webpack_require__.d(datetime_namespaceObject, "dayNames", function() { return dayNames; }); __webpack_require__.d(datetime_namespaceObject, "shortDayNames", function() { return shortDayNames; }); __webpack_require__.d(datetime_namespaceObject, "monthNames", function() { return monthNames; }); __webpack_require__.d(datetime_namespaceObject, "shortMonthNames", function() { return shortMonthNames; }); __webpack_require__.d(datetime_namespaceObject, "formatTokenRegex", function() { return formatTokenRegex; }); __webpack_require__.d(datetime_namespaceObject, "formatDateString", function() { return formatDateString; }); __webpack_require__.d(datetime_namespaceObject, "formartDateString", function() { return formartDateString; }); __webpack_require__.d(datetime_namespaceObject, "parseDateString", function() { return parseDateString; }); __webpack_require__.d(datetime_namespaceObject, "prevDate", function() { return prevDate; }); __webpack_require__.d(datetime_namespaceObject, "nextDate", function() { return nextDate; }); __webpack_require__.d(datetime_namespaceObject, "beginOfHour", function() { return beginOfHour; }); __webpack_require__.d(datetime_namespaceObject, "beginOfDay", function() { return beginOfDay; }); __webpack_require__.d(datetime_namespaceObject, "beginOfWeek", function() { return beginOfWeek; }); __webpack_require__.d(datetime_namespaceObject, "beginOfMonth", function() { return datetime_beginOfMonth; }); __webpack_require__.d(datetime_namespaceObject, "beginOfYear", function() { return beginOfYear; }); __webpack_require__.d(datetime_namespaceObject, "compareDate", function() { return compareDate; }); __webpack_require__.d(datetime_namespaceObject, "compareMonth", function() { return compareMonth; }); __webpack_require__.d(datetime_namespaceObject, "compareYear", function() { return compareYear; }); __webpack_require__.d(datetime_namespaceObject, "nextMonth", function() { return nextMonth; }); __webpack_require__.d(datetime_namespaceObject, "prevMonth", function() { return prevMonth; }); __webpack_require__.d(datetime_namespaceObject, "daysInMonth", function() { return daysInMonth; }); // NAMESPACE OBJECT: ./node_modules/absol/src/String/stringMatching.js var stringMatching_namespaceObject = {}; __webpack_require__.r(stringMatching_namespaceObject); __webpack_require__.d(stringMatching_namespaceObject, "wordLike", function() { return wordLike; }); __webpack_require__.d(stringMatching_namespaceObject, "wordsMatch", function() { return wordsMatch; }); __webpack_require__.d(stringMatching_namespaceObject, "phraseMatch", function() { return phraseMatch; }); __webpack_require__.d(stringMatching_namespaceObject, "phraseLike", function() { return phraseLike; }); // NAMESPACE OBJECT: ./js/frame/plugins.js var plugins_namespaceObject = {}; __webpack_require__.r(plugins_namespaceObject); __webpack_require__.d(plugins_namespaceObject, "PluginProjectExplore", function() { return PluginProjectExplore; }); __webpack_require__.d(plugins_namespaceObject, "downloadFragmentData", function() { return downloadFragmentData; }); __webpack_require__.d(plugins_namespaceObject, "PluginLoadContentData", function() { return PluginLoadContentData; }); __webpack_require__.d(plugins_namespaceObject, "PluginSaveContentData", function() { return PluginSaveContentData; }); __webpack_require__.d(plugins_namespaceObject, "PluginBuildComponent", function() { return PluginBuildComponent; }); __webpack_require__.d(plugins_namespaceObject, "PluginComponentPickerView", function() { return PluginComponentPickerView; }); // EXTERNAL MODULE: ./node_modules/absol/src/Polyfill/polyfill.js var polyfill = __webpack_require__(28); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/EventEmitter.js var EventEmitter = __webpack_require__(2); // EXTERNAL MODULE: ./node_modules/absol/src/Detector/BrowserDetector.js var BrowserDetector = __webpack_require__(7); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/JSPath.js var JSPath = __webpack_require__(20); // EXTERNAL MODULE: ./node_modules/absol/src/JSMaker/TemplateString.js var TemplateString = __webpack_require__(12); // CONCATENATED MODULE: ./node_modules/absol/src/XML/XMLConstant.js var XMLConstant = { TYPE_ELEMENT:1, TYPE_TEXT:3, TYPE_COMMENT:8, TYPE_DECLARATION:16 }; /* harmony default export */ var XML_XMLConstant = (XMLConstant); // CONCATENATED MODULE: ./node_modules/absol/src/XML/XMLDeclarationNode.js function XMLDeclaretionNode() { this.nodeType = XML_XMLConstant.TYPE_DECLARATION; this.parentNode; /** * @type {String} */ this.tagName = ''; /** * @type {XMLElement} */ this.parentNode; this.attributes = {}; } /** * @param {String} name attribute name */ XMLDeclaretionNode.prototype.getAttribute = function (name) { return this.attributes[name]; }; /** * @param {String} name attribute name * @param {String} value */ XMLDeclaretionNode.prototype.setAttribute = function (name, value) { this.attributes[name] = value; }; /** * @param {String} name attribute name */ XMLDeclaretionNode.prototype.removeAttribute = function (name) { delete this.attributes[name]; }; XMLDeclaretionNode.prototype.remove = function () { if (this.parentNode) { this.parentNode.removeChild(this); } }; XMLDeclaretionNode.prototype.toObject = function () { return { nodeType: this.nodeType, tagName: this.tagName, attributes: Object.assign({}, this.attributes) }; }; /* harmony default export */ var XMLDeclarationNode = (XMLDeclaretionNode); // CONCATENATED MODULE: ./node_modules/absol/src/XML/XMLClassList.js /** * * @param {XMLElement} xmlNode */ function XMLClassList(xmlNode) { this.xmlNode = xmlNode; } /** * @param {String} name * @returns {Boolean} */ XMLClassList.prototype.contains = function (name) { var className = this.xmlNode.getAttribute('class'); if (className) { var classes = className.trim().split(/\s+/); for (var i = 0; i < classes.length; ++i) { if (classes[i] == name) return true; } return false; } else return false; }; /** * @param {Number} index * @returns {String} */ XMLClassList.prototype.item = function (index) { var className = this.xmlNode.getAttribute('class'); if (className) { var classes = className.trim().split(/\s+/); return classes[index]; } else return undefined; }; /** * @param {Array<String>} arguments */ XMLClassList.prototype.remove = function () { var dict = Array.prototype.reduce.call(arguments, function (ac, name) { ac[name] = true; return ac; }, {}); var className = this.xmlNode.getAttribute('class'); if (className) { var classes = className.trim().split(/\s+/); var newClasses = classes.filter(function (name) { dict[name]; }); this.xmlNode.setAttribute(newClasses.join(' ')); } }; /** * @param {Array<String>} arguments */ XMLClassList.prototype.add = function () { var className = this.xmlNode.getAttribute('class') || ''; var classes = className.trim().split(/\s+/); var dict = classes.reduce(function (ac, name) { ac[name] = true; return ac; }, {}); for (var i = 0; i < arguments.length; ++i) { var newClass = arguments[i].trim(); if (newClass.length == 0) return; if (!dict[newClass]) { classes.push(newClass); dict[newClass] = true; } } this.xmlNode.setAttribute('class', classes.join(' ')); }; /* harmony default export */ var XML_XMLClassList = (XMLClassList); // CONCATENATED MODULE: ./node_modules/absol/src/XML/XMLElement.js function XMLElement() { this.nodeType = XML_XMLConstant.TYPE_ELEMENT; /** * @type {String} */ this.tagName = ''; /** * @type {XMLElement} */ this.parentNode; this.attributes = {}; /** * @type {Array} Array of XMLElement or XMLText */ this.childNodes = []; Object.defineProperty(this, 'classList', { value: new XML_XMLClassList(this), writable: false }); } /** * @param {String} name attribute name */ XMLElement.prototype.getAttribute = function (name) { return this.attributes[name]; }; /** * @param {String} name attribute name * @param {String} value */ XMLElement.prototype.setAttribute = function (name, value) { this.attributes[name] = value; }; /** * @param {String} name attribute name */ XMLElement.prototype.removeAttribute = function (name) { delete this.attributes[name]; }; XMLElement.prototype.appendChild = function (node) { node.remove(); this.childNodes.push(node); node.parentNode = this; return node; }; /** * @param {XMLElement} child * @returns {XMLElement} removed node */ XMLElement.prototype.removeChild = function (child) { var result; if (this == child.parentNode) { var j = 0; for (var i = 0; i < this.childNodes.length; ++i) { if (child != this.childNodes[i]) { this.childNodes[j] = this.childNodes[i]; ++j; } else { child.parentNode = undefined; result = child; } } while (j > this.childNodes.length) { this.childNodes.pop(); } } return result; }; /** * @param {XMLElement|XMLText|XMLDeclaretionNode} node */ XMLElement.prototype.inserBefore = function (node, child) { if (node == child) return; var childIndex = -1; for (var i = 0; i < this.childNodes.length; ++i) { if (this.childNodes[i] == child) { childIndex = i; break; } } if (childIndex < 0) return; node.remove(); node.parentNode = this; this.childNodes.push(null); var cIndex = this.childNodes.length - 2; while (cIndex >= 0) { if (this.childNodes[cIndex] == child) { this.childNodes[cIndex + 1] = node; } else this.childNodes[cIndex + 1] = this.childNodes[cIndex]; } }; XMLElement.prototype.remove = function () { if (this.parentNode) { this.parentNode.removeChild(this); } }; XMLElement.prototype.toObject = function () { return { nodeType: this.nodeType, tagName: this.tagName, attributes: Object.assign({}, this.attributes), childNodes: this.childNodes.map(function (child) { return child.toObject(); }) }; }; /* harmony default export */ var XML_XMLElement = (XMLElement); // CONCATENATED MODULE: ./node_modules/absol/src/XML/XMLTextNode.js function XMLTextNode(data) { this.nodeType = XML_XMLConstant.TYPE_TEXT; /** * @type {XMLNode} */ this.parentNode; /** * @type {String} */ this.data = data || ''; } XMLTextNode.prototype.remove = function () { if (this.parentNode) { this.parentNode.removeChild(this); } }; XMLTextNode.prototype.toObject = function () { return { nodeType: this.nodeType, data: this.data }; }; /* harmony default export */ var XML_XMLTextNode = (XMLTextNode); // CONCATENATED MODULE: ./node_modules/absol/src/XML/XMLCommentNode.js function XMLCommentNode(data) { this.nodeType = XML_XMLConstant.TYPE_COMMENT; /** * @type {XMLNode} */ this.parentNode; /** * @type {String} */ this.data = data || ''; } XMLCommentNode.prototype.remove = function () { if (this.parentNode) { this.parentNode.removeChild(this); } }; XMLCommentNode.prototype.toObject = function () { return { nodeType: this.nodeType, data: this.data }; }; /* harmony default export */ var XML_XMLCommentNode = (XMLCommentNode); // CONCATENATED MODULE: ./node_modules/absol/src/XML/XML.js /** * * @param {RegExp} regex */ function getRegexBody(regex) { return regex.toString().match(/^\/(.+)\/([gimuy]*)$/)[1]; } var BEGIN_TAG = 1; var END_TAG = 2; var CDATA = 3; var DECLARATION = 4; var COMMENT = 5; var TEXT = 6; var identRgx = /[^\s\"\r\n\'\!\/=\>\<\]\[\?\+\.]+/; var spaceRgx = /[\s\r\n]+/; var stringRgx = /\"(([^\"\\]*|(\\.))*)\"/; var textRgx = /[^\<\-]+/; var doctypeOpenRgx = /\<\!DOCTYPE/; var commentOpenRgx = /\<!\-\-/; var commentCloseRgx = /\-\-\>/; var cdataOpenRgx = /\<\!\[CDATA\[/; var cdataCloseRgx = /\]\]\>/; var openRgx = /\</; var openEndTagRgx = /\<\//; var closeRgx = /\>/; var shortCloseRgx = /\/\>/; var declarationOpenRgx = /\<\?/; var declarationCloseRgx = /\?\>/; var assignOpRgx = /=/; var tokenRgxBody = '(' + [ spaceRgx, doctypeOpenRgx, declarationOpenRgx, cdataOpenRgx, commentOpenRgx, openEndTagRgx, openRgx, assignOpRgx, stringRgx, commentCloseRgx, identRgx, declarationCloseRgx, shortCloseRgx, closeRgx, cdataCloseRgx, textRgx ].map(function (e) { return getRegexBody(e); }).join(')|(') + ')'; var tokenType = { space: spaceRgx, doctypeOpen: doctypeOpenRgx, declarationOpen: declarationOpenRgx, cdataOpen: cdataOpenRgx, commentOpen: commentOpenRgx, openEndTag: openEndTagRgx, open: openRgx, ident: identRgx, assignOp: assignOpRgx, string: stringRgx, commentClose: commentCloseRgx, declarationClose: declarationCloseRgx, shortClose: shortCloseRgx, close: closeRgx, cdataClose: cdataCloseRgx, text: textRgx } var tokenRgx = new RegExp(tokenRgxBody); /** * * @typedef {Object} Token * @property {String} text * @property {*} matched */ /** * * @param {String} text * @returns {Array<Token>} */ function xmlTokenize(text) { var texts = text.match(new RegExp(tokenRgxBody, 'g')); return text.match(new RegExp(tokenRgxBody, 'g')) .map(function (tokenText, i) { var result = { text: tokenText, matched: {} }; for (var tType in tokenType) { var matched = tokenText.match(tokenType[tType]); if (matched) { if (matched[0] == tokenText) result.matched[tType] = matched; } } return result; }); } /** * @typedef {Object} XMLPaseInfo * @property {Array<Token>} tokens * @property {Number} type * @property {Number} start * @property {Number} end * @property {Error} error * @property {Boolean} closed * * * * @typedef {Object} XMLParseNode * @property {XMLPaseInfo} __xml__ * @property {String} tagName * @property {*} attributes * @property {String} text */ /** * * @param {Array<Token>} tokens * @param {Number} i * @returns {XMLParseNode} */ function matchAssign(tokens, i) { var result = { __xml__: { start: i } }; var cToken; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['ident']) { result.key = cToken.text; ++i; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['space']) { ++i; } if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['assignOp']) { ++i; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['space']) { ++i; } if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['string']) { result.value = cToken.matched.string[1]; ++i; } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected string'); } } else { result.__xml__.error = new Error('End of data found, expected ident'); } } else { result.__xml__.error = new Error('End of data found, expected ident'); } } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected ='); } } else { result.__xml__.error = new Error('End of data found, expected ='); } } else { result.__xml__.error = new Error('End of data found, expected ='); } } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected ident'); } } else { result.__xml__.error = new Error('End of data found, expected ident'); } result.__xml__.end = i; return result; } /** * * @param {Array<Token>} tokens * @param {Number} i * @returns {XMLParseNode} */ function matchBeginTag(tokens, i) { var result = { __xml__: { type: BEGIN_TAG, start: i } }; var cToken; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['open']) { ++i; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['ident']) { result.tagName = cToken.text; ++i; if (i < tokens.length) { var finished = false;//when find the close symbol while (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['space']) { ++i; }//skip space between attributes if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['shortClose']) { result.__xml__.closed = true; ++i; finished = true; break; } else if (cToken.matched['close']) { result.__xml__.closed = false; ++i; finished = true; break; } else if (tokens[i - 1].matched['space']) { var assign = matchAssign(tokens, i); if (!assign.__xml__.error) { result.attributes = result.attributes || {}; result.attributes[assign.key] = assign.value; i = assign.__xml__.end; } else if (cToken.matched['ident']) { result.attributes = result.attributes || {}; result.attributes[cToken.text] = true;// a flag ++i; } else { //TODO: we can ignore some error here, the same with order Match* function result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected > or indent'); break; } } else { //TODO: we can ignore some error here result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected > or indent'); break; } } else { result.__xml__.error = new Error('End of data found, expected /> or >'); break; } } if (!finished && !result.__xml__.error) { result.__xml__.error = new Error('End of data found, expected /> or >'); } } else { result.__xml__.error = new Error('End of data found, expected /> or >'); } } else { result.__xml__.error = new Error('Expected indent'); } } else { result.__xml__.error = new Error('End of data found, expected indent'); } result.__xml__.end = i; } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected <'); } } else { result.__xml__.error = new Error('End of data found, expected <'); } result.__xml__.end = i; return result; } /** * * @param {Array<Token>} tokens * @param {Number} i * @returns {XMLParseNode} */ function matchEndTag(tokens, i) { var result = { __xml__: { type: END_TAG, closed: true, start: i } }; var cToken; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['openEndTag']) { ++i; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['ident']) { result.tagName = cToken.text; ++i; if (i < tokens.length) { var finished = false;//when find the close symbol while (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['space']) { ++i; }//skip space between attributes if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['close']) { ++i; finished = true; break; } else if (tokens[i - 1].matched['space']) { var assign = matchAssign(tokens, i); if (!assign.__xml__.error) { result.attributes = result.attributes || {}; result.attributes[assign.key] = assign.value; i = assign.__xml__.end; } else if (cToken.matched['ident']) { result.attributes = result.attributes || {}; result.attributes[cToken.text] = true;// a flag ++i; } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected > or indent'); } } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected > or indent'); } } else { result.__xml__.error = new Error('End of data found, expected /> or >'); } } if (!finished && !result.__xml__.error) { result.__xml__.error = new Error('End of data found, expected /> or >'); } } else { result.__xml__.error = new Error('End of data found, expected /> or >'); } } else { result.__xml__.error = new Error('Expected indent'); } } else { result.__xml__.error = new Error('End of data found, expected indent'); } result.__xml__.end = i; } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected <'); } } else { result.__xml__.error = new Error('End of data found, expected <'); } result.__xml__.end = i; return result; } /** * * @param {Array<Token>} tokens * @param {Number} i * @returns {XMLParseNode} */ function matchDeclaration(tokens, i) { var result = { __xml__: { type: DECLARATION, start: i } }; var cToken; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['declarationOpen']) { ++i; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['ident']) { result.tagName = cToken.text; ++i; if (i < tokens.length) { var finished = false;//when find the close symbol while (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['space']) { ++i; }//skip space between attributes if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['declarationClose']) { result.__xml__.closed = false; ++i; finished = true; break; } else if (tokens[i - 1].matched['space']) { var assign = matchAssign(tokens, i); if (!assign.__xml__.error) { result.attributes = result.attributes || {}; result.attributes[assign.key] = assign.value; i = assign.__xml__.end; } else if (cToken.matched['ident']) { result.attributes = result.attributes || {}; result.attributes[cToken.text] = true;// a flag ++i; } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected > or indent'); } } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected > or indent'); } } else { result.__xml__.error = new Error('End of data found, expected /> or >'); } } if (!finished && !result.__xml__.error) { result.__xml__.error = new Error('End of data found, expected /> or >'); } } else { result.__xml__.error = new Error('End of data found, expected /> or >'); } } else { result.__xml__.error = new Error('Expected indent'); } } else { result.__xml__.error = new Error('End of data found, expected indent'); } result.__xml__.end = i; } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected <'); } } else { result.__xml__.error = new Error('End of data found, expected <'); } result.__xml__.end = i; return result; } /** * * @param {Array<Token>} tokens * @param {Number} i * @returns {XMLParseNode} */ function matchCData(tokens, i) { var result = { __xml__: { type: CDATA, start: i } }; var cToken; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['cdataOpen']) { ++i; result.text = ''; var finished = false; while (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['cdataClose']) { finished = true; ++i; break; } else { result.text += cToken.text; ++i; } } if (!finished) { result.__xml__.error = new Error('End of data found, expected ]]>'); } } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected <![CDATA['); } } else { result.__xml__.error = new Error('End of data found, expected <![CDATA['); } result.__xml__.end = i return result; } /** * * @param {Array<Token>} tokens * @param {Number} i * @returns {XMLParseNode} */ function matchComment(tokens, i) { var result = { __xml__: { type: COMMENT, start: i } }; var cToken; if (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['commentOpen']) { ++i; result.text = ''; var finished = false; while (i < tokens.length) { cToken = tokens[i]; if (cToken.matched['commentClose']) { finished = true; ++i; break; } else { result.text += cToken.text; ++i; } } if (!finished) { result.__xml__.error = new Error('End of data found, expected -->'); } } else { result.__xml__.error = new Error('"' + cToken.text + '"' + 'found, expected <!--'); } } else { result.__xml__.error = new Error('End of data found, expected <!--'); } result.__xml__.end = i; return result; } /** * * @param {Token} tokens */ function parseXMLTab(tokens) { var tabs = []; var i = 0; while (i < tokens.length) { var comment = matchComment(tokens, i); if (!comment.__xml__.error) { tabs.push(comment); i = comment.__xml__.end; } else { var declaration = matchDeclaration(tokens, i); if (!declaration.__xml__.error) { tabs.push(declaration); i = declaration.__xml__.end; } else { var begin = matchBeginTag(tokens, i); if (!begin.__xml__.error) { tabs.push(begin); i = begin.__xml__.end; } else { var end = matchEndTag(tokens, i); if (!end.__xml__.error) { tabs.push(end); i = end.__xml__.end; } else { var cdata = matchCData(tokens, i); if (!cdata.__xml__.error) { tabs.push(cdata); i = cdata.__xml__.end; } else { ++i;//skip } } } } } } return tabs; } /** * * @param {Array<Token>} tokens * @param {Array<XMLParseNode>} tabs * @returns {Array<XMLParseNode>} */ function parseXMLText(tokens, tabs) { var texts = []; var ofs = 0; var text; var tab; for (var i = 0; i < tabs.length; ++i) { tab = tabs[i]; if (tab.__xml__.start > ofs) { text = tokens.slice(ofs, tab.__xml__.start) .map(function (token) { return token.text; }).join('').trim(); if (text.length > 0) texts.push({ __xml__: { type: TEXT, tokens: tokens, start: ofs, end: tab.__xml__.start }, text: text }); } ofs = tab.__xml__.end; } if (ofs < tokens.length) { text = tokens.slice(ofs) .map(function (token) { return token.text; }).join('').trim(); if (text.length > 0) texts.push({ __xml__: { type: TEXT, tokens: tokens, start: ofs, end: tab.__xml__.start }, text: text }); } return texts; } /** * * @param {Array<XMLParseNode>} tabs * @param {Array<XMLParseNode>} texts * @return {Array<XMLParseNode>} */ function mergeNodes(tabs, texts) { var nodes = []; var choose; var iTabs = 0, iTexts = 0; var diTabs, diTexts; var minStart; do { choose = undefined; diTabs = 0, diTexts = 0; minStart = 100000000; if (iTabs < tabs.length) { choose = tabs[iTabs]; minStart = choose.__xml__.start; diTabs = 1; } if (iTexts < texts.length && texts[iTexts].__xml__.start < minStart) { choose = texts[iTexts]; minStart = choose.__xml__.start; diTabs = 0; diTexts = 1; } if (choose) { iTexts += diTexts; iTabs += diTabs; nodes.push(choose); } } while (choose); return nodes; } /** * * @param {String} text * @return {Array<XMLParseNode>} */ function parseXMLTextToXMLParseNode(text) { text = text.trim(); var tokens = xmlTokenize(text.trim()); var tabs = parseXMLTab(tokens); var texts = parseXMLText(tokens, tabs); return mergeNodes(tabs, texts); } /** * * @param {Array<XMLParseNode>} nodes * @returns {Array} */ function paresNodesToXMLs(nodes) { var node; var parentXMLElement = new XML_XMLElement(); parentXMLElement.tagName = "FAKE_DOCUMENT"; var assignAttributes = function (node, attributes) { Object.keys(attributes).forEach(function (key) { node.setAttribute(key, attributes[key]); }) } var newXMLNode; for (var i = 0; i < nodes.length; ++i) { node = nodes[i]; newXMLNode = undefined; switch (node.__xml__.type) { case DECLARATION: newXMLNode = new XMLDeclarationNode(); newXMLNode.tagName = node.tagName; if (node.attributes) assignAttributes(newXMLNode, node.attributes); parentXMLElement.appendChild(newXMLNode); break; case BEGIN_TAG: newXMLNode = new XML_XMLElement(); newXMLNode.tagName = node.tagName; if (node.attributes) assignAttributes(newXMLNode, node.attributes); parentXMLElement.appendChild(newXMLNode); if (!node.__xml__.closed) parentXMLElement = newXMLNode; break; case END_TAG: if (parentXMLElement && node.tagName == parentXMLElement.tagName) { parentXMLElement = parentXMLElement.parentNode; } else if (parentXMLElement && (parentXMLElement.tagName == 'img' || parentXMLElement.tagName == 'input')) { // image can be not close while (parentXMLElement.tagName == 'img' || parentXMLElement.tagName == 'input') { parentXMLElement = parentXMLElement.parentNode; } parentXMLElement = parentXMLElement.parentNode; } else { throw new Error("Unknown close of tagName " + node.tagName + ', but ' + (parentXMLElement ? parentXMLElement.tagName : "EOF") + ' expected'); } break; case TEXT: newXMLNode = new XML_XMLTextNode(node.text); parentXMLElement.appendChild(newXMLNode); break; case COMMENT: newXMLNode = new XML_XMLCommentNode(node.text); parentXMLElement.appendChild(newXMLNode); break; } } return parentXMLElement.childNodes.slice().map(function (e) { e.remove(); return e; }); } /** * * @param {XMLElement} node */ function makeOpenXMLElementTab(node) { var res = '<' + node.tagName; var attributesText = Object.keys(node.attributes) .map(function (key) { var value = node.attributes[key]; if (value === null) { return key; } else { return key + '=' + '"' + value + '"'; } }).join(' '); if (attributesText.length > 0) { res += ' ' + attributesText; } res += '>'; return res; } /** * * @param {XMLDeclaretionNode} node */ function makeXMLDeclaretionTab(node) { var res = '<?' + node.tagName; var attributesText = Object.keys(node.attributes) .map(function (key) { var value = node.attributes[key]; if (value === null) { return key; } else { return key + '=' + '"' + value + '"'; } }).join(' '); if (attributesText.length > 0) { res += ' ' + attributesText; } res += '?>'; return res; } /** * * @param {XMLDeclaretionNode} node */ function makeXMLCommentTab(node) { var res = '<!--' + node.data + '-->'; return res; } var XML = {}; /** * @param {String} code * @returns {Array<XMLElement>} */ XML.parseLikeHTML = function (code) { var nodes = parseXMLTextToXMLParseNode(code); // console.log('nodes', nodes); var xmls = paresNodesToXMLs(nodes); return xmls; }; /** * @param {String} code * @returns {XMLElement} */ XML.parse = function (code) { var xmls = this.parseLikeHTML(code); if (xmls.length == 0) return undefined; var obj = xmls[xmls.length - 1].toObject(); return obj; }; XML.DFNodeVisit = function (node, handlers, accumulator) { if (!node.childNodes || node.childNodes.length == 0) { if (handlers.leaf) handlers.leaf(accumulator, node); } else { if (handlers.open) handlers.open(accumulator, node); for (var i = 0; i < node.childNodes.length; ++i) { this.DFNodeVisit(node.childNodes[i], handlers, accumulator); } if (handlers.close) handlers.close(accumulator, node); return accumulator; } }; /** * @typedef {Object} XMLBeautifyOption * @property {String} indent * @property {Number} initDepth */ /** * @param {Array<XMLElement>} o * @param {XMLBeautifyOption} beautifyOption * * */ XML.stringify = function (o, beautifyOption) { var texts = []; var indent = ''; var lineBreak = ''; var depth = 0; if (beautifyOption) { lineBreak = '\n'; indent = typeof (beautifyOption.indent) == 'string' ? beautifyOption.indent : ' '; depth = beautifyOption.initDepth || 0; } if (!(o instanceof Array)) { o = [o]; } var visitor = { open: function (ac, node) { var currentLineIndent = ac.lineIndentStack[ac.lineIndentStack.length - 1]; var openTabText = makeOpenXMLElementTab(node); ac.texts.push(currentLineIndent + openTabText); ac.lineIndentStack.push(currentLineIndent + ac.indent); }, close: function (ac, node) { ac.lineIndentStack.pop(); var currentLineIndent = ac.lineIndentStack[ac.lineIndentStack.length - 1]; var endTab = '</' + node.tagName + '>'; if (node.childNodes.length == 1 && node.childNodes[0].nodeType == XML_XMLConstant.TYPE_TEXT) { ac.texts[ac.texts.length - 1] += endTab; } else { ac.texts.push(currentLineIndent + endTab); } }, leaf: function (ac, node) { var currentLineIndent = ac.lineIndentStack[ac.lineIndentStack.length - 1]; var tab; if (node.nodeType == XML_XMLConstant.TYPE_TEXT) { if (node.parentNode && node.parentNode.childNodes.length == 1) { ac.texts[ac.texts.length - 1] += node.data; } else { ac.texts.push(currentLineIndent + node.data); } } else if (node.nodeType == XML_XMLConstant.TYPE_ELEMENT) { var openTabText = makeOpenXMLElementTab(node); var endTab = '</' + node.tagName + '>'; ac.texts.push(currentLineIndent + openTabText + endTab); } else if (node.nodeType == XML_XMLConstant.TYPE_DECLARATION) { tab = makeXMLDeclaretionTab(node); ac.texts.push(currentLineIndent + tab); } else if (node.nodeType == XML_XMLConstant.TYPE_COMMENT) { tab = makeXMLCommentTab(node); ac.texts.push(currentLineIndent + tab); } } }; for (var i = 0; i < o.length; ++i) { this.DFNodeVisit(o[i], visitor, { depth: 0, texts: texts, lineIndentStack: [''], indent: indent }); } return texts.join(lineBreak); }; /* harmony default export */ var XML_XML = (XML); // CONCATENATED MODULE: ./node_modules/absol/src/JSMaker/TemplateXML.js function TemplateXML(props) { this.xml = props.xml; } TemplateXML.prototype._xmlNodeToJSCode = function (node) { var body = []; if (node.nodeType == XML_XMLConstant.TYPE_ELEMENT) { body.push('tag:' + JSON.stringify(node.tagName)); var attributeKeys = Object.keys(node.attributes).filter(function (x) { return x != 'class' && x != 'style' && !x.startsWith('az-') }); if (attributeKeys && attributeKeys.length > 0) { body.push('attr: {' + attributeKeys.map(function (key) { return JSON.stringify(key) + ': ' + TemplateString["a" /* default */].parse(node.attributes[key]).toJSCode(); }).join(', ') + '}'); } if (node.attributes['az-props']) { body.push('props: ' + TemplateString["a" /* default */].parse(node.attributes['az-props']).toJSCode() ); } if (node.attributes['az-data']) { body.push('data: ' + TemplateString["a" /* default */].parse(node.attributes['az-data']).toJSCode() ); } if (node.attributes.style) { var styleSheet = node.attributes.style.split(';').map(function (s) { var t = s.split(':').map(function (text) { return text.trim() }); if (t.length == 2) { return JSON.stringify(t[0]) + ': ' + JSON.stringify(t[1]); } else return false; }).filter(function (e) { return !!e; }); if (styleSheet.length > 0) { body.push('style:{' + styleSheet.join(',') + '}'); } } if (node.attributes.class) { var classList = node.attributes.class.trim().split(/\s+/); if (classList.length > 0) body.push('class:' + JSON.stringify(classList)); } if (node.childNodes && node.childNodes.length > 0) { var childList = '[' + node.childNodes.filter(function (e) { return e.nodeType == XML_XMLConstant.TYPE_ELEMENT || e.nodeType == XML_XMLConstant.TYPE_TEXT; }).map(function (e) { return this._xmlNodeToJSCode(e); }.bind(this)).filter(function (e) { return !!e; }).join(', ') + ']'; if (childList && childList.length > 0) body.push('child: ' + childList); } } else if (node.nodeType == XML_XMLConstant.TYPE_TEXT) { body.push('text: ' + TemplateString["a" /* default */].parse(node.data).toJSCode()); } else return undefined; var res = '{' + body.join(', ') + '}'; return res; }; TemplateXML.prototype.toJSCode = function () { var res = this._xmlNodeToJSCode(this.xml); return res; }; /** * * @param {...any} args * @returns {Function} */ TemplateXML.compileToFunction = function () { var innerCode = 'return ' + this.parse(arguments[arguments.length - 1]).toJSCode() + ';'; var fParam = Array.prototype.slice.call(arguments, 0, arguments.length - 1); fParam.push(innerCode); return Function.apply(null, fParam); }; TemplateXML.parse = function (text) { var xml = XML_XML.parse(text); if (xml) { return new TemplateXML({ xml: xml }); } else return undefined; }; /* harmony default export */ var JSMaker_TemplateXML = (TemplateXML); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(1); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Svg.js var Svg = __webpack_require__(8); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3); // CONCATENATED MODULE: ./node_modules/absol/src/Color/Color.js function Color(rgba) { this.rgba = rgba.slice(); } Color.prototype.toHex6 = function () { return this.rgba.slice(0, 3).map(function (b) { b = b * 255 >> 0; return (b < 16 ? '0' : '') + b.toString(16); }).join(''); }; Color.prototype.toHex8 = function () { return this.rgba.map(function (b) { b = b * 255 >> 0; return (b < 16 ? '0' : '') + b.toString(16); }).join(''); }; Color.prototype.toHex3 = function () { return this.rgba.slice(0, 3).map(function (b) { b = b * 255 / 17 >> 0; return b.toString(16); }).join(''); }; Color.prototype.toHex4 = function () { return this.rgba.map(function (b) { b = b * 255 / 17 >> 0; return b.toString(16); }).join(''); }; Color.prototype.toHSLA = function () { return Color.rgbaToHSLA(this.rgba); }; Color.prototype.toHSBA = function () { return Color.rgbaToHSBA(this.rgba); }; Color.prototype.toHWBA = function () { return Color.rgbaToHWBA(this.rgba); }; Color.prototype.getHightContrastColor = function () { var hsba = this.toHSBA(); var h, s, b; h = hsba[0] > 0.5 ? hsba[0] - 0.5 : hsba[0] + 0.5; s = hsba[1] > 0.5 ? hsba[1] - 0.5 : hsba[1] + 0.5; b = hsba[2] > 0.5 ? hsba[2] - 0.5 : hsba[2] + 0.5; return Color.fromHSB(h, s, b); }; Color.prototype.getContrastYIQ = function () { var r = this.rgba[0] * 255; var g = this.rgba[1] * 255; var b = this.rgba[2] * 255; var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; return (yiq >= 128) ? new Color([0, 0, 0, 1]) : new Color([1, 1, 1, 1]); }; Color.prototype.clone = function () { return new Color(this.rgba.slice()); }; Color.prototype.toString = function (mode) { mode = mode || 'rgba'; mode = mode.toLocaleLowerCase(); return Color.templates[mode](this); }; /*** * */ Color.prototype.nearestNamedColor = function (notStandard, hsbWeight) { hsbWeight = hsbWeight ||[5, 3, 1] var hsba = this.toHSBA(); var bestMatch = null; var dist = 1000; Object.keys(Color.namedColors).concat(notStandard ? Object.keys(Color.nonStandarNamedColors) : []).forEach(function (name) { var c = Color.parse(Color.namedColors[name] || Color.nonStandarNamedColors[name]); var cHSBA = c.toHSBA(); var cDist = Math.abs(hsba[0] - cHSBA[0]) * hsbWeight[0] + Math.abs(hsba[1] - cHSBA[1]) * hsbWeight[1] + Math.abs(hsba[2] - cHSBA[2])* hsbWeight[2]; if (cDist < dist) { dist = cDist; bestMatch = name; } }); return bestMatch; }; Color.templates = [ ['rgba', 'rgba', 'rgba({{x[0]*255>>0}}, {{x[1]*255>>0}}, {{x[2]*255>>0}}, {{x[3]}})'], ['rgb', 'rgba', 'rgb({{x[0]*255>>0}}, {{x[1]*255>>0}}, {{x[2]*255>>0}})'], ['hsl', 'toHSLA()', 'hsl({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'], ['hsla', 'toHSLA()', 'hsla({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})'], ['hsb', 'toHSBA()', 'hsb({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'], ['hsba', 'toHSBA()', 'hsba({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})'], ['hex3', 'toHex3()', '#{{x}}'], ['hex4', 'toHex4()', '#{{x}}'], ['hex6', 'toHex6()', '#{{x}}'], ['hex8', 'toHex8()', '#{{x}}'], ['hwb', 'toHWBA()', 'hwb({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'], ['hwba', 'toHWBA()', 'hwba({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})'] ].reduce(function (ac, cr) { ac[cr[0]] = new Function('color', [ 'var x = color.' + cr[1] + ';', 'return ' + TemplateString["a" /* default */].parse(cr[2]).toJSCode() + ';' ].join('\n')); return ac; }, {}); Color.regexes = { whiteSpace: /\s*/, // Match zero or more whitespace characters. integer: /(\d{1,3})/, // Match integers: 79, 255, etc. decimal: /((?:\d+(?:\.\d+)?)|(?:\.\d+))/, // Match 129.6, 79, .9, etc. percent: /((?:\d+(?:\.\d+)?)|(?:\.\d+))%/, // Match 12.9%, 79%, .9%, etc. hex3: /^#([a-f0-9])([a-f0-9])([a-f0-9])$/i, // Match colors in format #XXXX, e.g. #5123. hex4: /^#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])$/i, // Match colors in format #XXXXXX, e.g. #b4d455. hex6: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i, // Match colors in format #XXXXXXXX, e.g. #b4d45535. hex8: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i }; Color.regexes.percent = new RegExp(Color.regexes.decimal.source + '%'); Color.regexes.rgb = new RegExp( [ '^rgb\\(', Color.regexes.integer.source, ',', Color.regexes.integer.source, ',', Color.regexes.integer.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); Color.regexes.rgbPercent = new RegExp( [ '^rgb\\(', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); // Match colors in format rgb(R, G, B, A), e.g. rgb(255, 0, 128, 0.25). Color.regexes.rgba = new RegExp( [ '^rgba\\(', Color.regexes.integer.source, ',', Color.regexes.integer.source, ',', Color.regexes.integer.source, ',', Color.regexes.decimal.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); // Match colors in format rgb(R%, G%, B%, A), e.g. rgb(100%, 0%, 28.9%, 0.5). Color.regexes.rgbaPercent = new RegExp( [ '^rgba\\(', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); // Match colors in format hsla(H, S%, L%), e.g. hsl(100, 40%, 28.9%). Color.regexes.hsl = new RegExp( [ '^hsl\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); // Match colors in format hsla(H, S%, L%, A), e.g. hsla(100, 40%, 28.9%, 0.5). Color.regexes.hsla = new RegExp( [ '^hsla\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); // Match colors in format hsb(H, S%, B%), e.g. hsb(100, 40%, 28.9%). Color.regexes.hsb = new RegExp( [ '^hsb\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); // Match colors in format hsba(H, S%, B%, A), e.g. hsba(100, 40%, 28.9%, 0.5). Color.regexes.hsba = new RegExp( [ '^hsba\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); Color.regexes.hwb = new RegExp( [ '^hwb\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); // Match colors in format hsba(H, S%, B%, A), e.g. hsba(100, 40%, 28.9%, 0.5). Color.regexes.hwba = new RegExp( [ '^hwba\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); Color.fromInt = function (code, bits) { var r, g, b, a; if (bits == 32) { b = (code & 0xff) / 255; g = ((code & 0xff00) >> 8) / 255; r = ((code & 0xff0000) >> 16) / 255; a = (code >> 24) / 255; } else if (bits == 24) { b = (code & 0xff) / 255; g = ((code & 0xff00) >> 8) / 255; r = ((code & 0xff0000) >> 16) / 255; a = 1; } else if (bits == 16) { b = (code & 0x1f) / 0x1f; g = ((code & 0x7e0) >> 5) / 0x3f; b = (code >> 10) / 0x1f; a = 1; } else if (bits == 8) {//gray-scale b = (code & 0x3) / 0x3; g = ((code & 0x1c) >> 2) / 0x7; b = (code >> 5) / 0x7; a = 1; } return new Color([r, g, b, a]); }; Color.fromRGB = function (r, g, b) { return new Color([r, g, b, 1]); }; Color.fromRGBA = function (r, g, b, a) { return new Color([r, g, b, a]); }; Color.fromHSL = function (h, s, l) { var rgba = this.hslaToRGBA([h, s, l, 1]); return new Color(rgba); }; Color.fromHSLA = function (h, s, l, a) { var rgba = this.hslaToRGBA([h, s, l, a]); return new Color(rgba); }; Color.fromHSB = function (h, s, b) { var rgba = this.hsbaToRGBA([h, s, b, 1]); return new Color(rgba); }; Color.fromHSBA = function (h, s, b, a) { var rgba = this.hsbaToRGBA([h, s, b, a]); return new Color(rgba); }; Color.fromHWB = function (h, s, b) { var rgba = this.hwbaToRGBA([h, s, b, 1]); return new Color(rgba); }; Color.fromHWBA = function (h, s, b, a) { var rgba = this.hwbaToRGBA([h, s, b, a]); return new Color(rgba); }; /** * @param {String} text * @returns {Color} */ Color.parse = function (text) { if (this.namedColors[text]) text = this.namedColors[text]; if (this.nonStandarNamedColors[text]) text = this.nonStandarNamedColors[text]; if (this.regexes.hex8.test(text)) { return this.fromRGBA.apply(this, this.regexes.hex8.exec(text) .slice(1) .map(function (v) { return parseInt(v, 16) / 255; })); } else if (this.regexes.hex6.test(text)) { return this.fromRGB.apply(this, this.regexes.hex6.exec(text) .slice(1) .map(function (v) { return parseInt(v, 16) / 255; })); } else if (this.regexes.hex4.test(text)) { return this.fromRGBA.apply(this, this.regexes.hex4.exec(text) .slice(1) .map(function (v) { return parseInt(v + v, 16) / 255; })); } else if (this.regexes.hex3.test(text)) { return this.fromRGB.apply(this, this.regexes.hex3.exec(text) .slice(1) .map(function (v) { return parseInt(v + v, 16) / 255; })); } else if (this.regexes.rgba.test(text)) { return this.fromRGBA.apply(this, this.regexes.rgba.exec(text) .slice(1) .map(function (v, i) { return i < 3 ? parseFloat(v, 10) / 255 : parseFloat(v, 10); })); } else if (this.regexes.rgb.test(text)) { return this.fromRGB.apply(this, this.regexes.rgb.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / 255; })); } else if (this.regexes.rgbPercent.test(text)) { return this.fromRGB.apply(this, this.regexes.rgbPercent.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / 100; })); } else if (this.regexes.rgbaPercent.test(text)) { return this.fromRGBA.apply(this, this.regexes.rgbaPercent.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / (i < 3 ? 100 : 1); })); } else if (this.regexes.hsl.test(text)) { return this.fromHSL.apply(this, this.regexes.hsl.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / (i == 0 ? 360 : 100); })); } else if (this.regexes.hsla.test(text)) { return this.fromHSLA.apply(this, this.regexes.hsla.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / (i == 0 ? 360 : i < 3 ? 100 : 1); })); } else if (this.regexes.hsb.test(text)) { return this.fromHSB.apply(this, this.regexes.hsb.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / (i == 0 ? 360 : 100); })); } else if (this.regexes.hsba.test(text)) { return this.fromHSBA.apply(this, this.regexes.hsba.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / (i == 0 ? 360 : i < 3 ? 100 : 1); })); } else if (this.regexes.hwb.test(text)) { return this.fromHWB.apply(this, this.regexes.hwb.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / (i == 0 ? 360 : 100); })); } else if (this.regexes.hwba.test(text)) { return this.fromHWBA.apply(this, this.regexes.hwba.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v, 10) / (i == 0 ? 360 : i < 3 ? 100 : 1); })); } else { throw new Error("Fail to parse " + text); } }; /*** * @typedef {"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"|"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"|"transparent"} NamedColor */ Color.namedColors = { aliceblue: '#f0f8ff', antiquewhite: '#faebd7', aqua: '#00ffff', aquamarine: '#7fffd4', azure: '#f0ffff', beige: '#f5f5dc', bisque: '#ffe4c4', black: '#000000', blanchedalmond: '#ffebcd', blue: '#0000ff', blueviolet: '#8a2be2', brown: '#a52a2a', burlywood: '#deb887', cadetblue: '#5f9ea0', chartreuse: '#7fff00', chocolate: '#d2691e', coral: '#ff7f50', cornflowerblue: '#6495ed', cornsilk: '#fff8dc', crimson: '#dc143c', cyan: '#00ffff', darkblue: '#00008b', darkcyan: '#008b8b', darkgoldenrod: '#b8860b', darkgray: '#a9a9a9', darkgreen: '#006400', darkgrey: '#a9a9a9', darkkhaki: '#bdb76b', darkmagenta: '#8b008b', darkolivegreen: '#556b2f', darkorange: '#ff8c00', darkorchid: '#9932cc', darkred: '#8b0000', darksalmon: '#e9967a', darkseagreen: '#8fbc8f', darkslateblue: '#483d8b', darkslategray: '#2f4f4f', darkslategrey: '#2f4f4f', darkturquoise: '#00ced1', darkviolet: '#9400d3', deeppink: '#ff1493', deepskyblue: '#00bfff', dimgray: '#696969', dimgrey: '#696969', dodgerblue: '#1e90ff', firebrick: '#b22222', floralwhite: '#fffaf0', forestgreen: '#228b22', fuchsia: '#ff00ff', gainsboro: '#dcdcdc', ghostwhite: '#f8f8ff', gold: '#ffd700', goldenrod: '#daa520', gray: '#808080', green: '#008000', greenyellow: '#adff2f', grey: '#808080', honeydew: '#f0fff0', hotpink: '#ff69b4', indianred: '#cd5c5c', indigo: '#4b0082', ivory: '#fffff0', khaki: '#f0e68c', lavender: '#e6e6fa', lavenderblush: '#fff0f5', lawngreen: '#7cfc00', lemonchiffon: '#fffacd', lightblue: '#add8e6', lightcoral: '#f08080', lightcyan: '#e0ffff', lightgoldenrodyellow: '#fafad2', lightgray: '#d3d3d3', lightgreen: '#90ee90', lightgrey: '#d3d3d3', lightpink: '#ffb6c1', lightsalmon: '#ffa07a', lightseagreen: '#20b2aa', lightskyblue: '#87cefa', lightslategray: '#778899', lightslategrey: '#778899', lightsteelblue: '#b0c4de', lightyellow: '#ffffe0', lime: '#00ff00', limegreen: '#32cd32', linen: '#faf0e6', magenta: '#ff00ff', maroon: '#800000', mediumaquamarine: '#66cdaa', mediumblue: '#0000cd', mediumorchid: '#ba55d3', mediumpurple: '#9370db', mediumseagreen: '#3cb371', mediumslateblue: '#7b68ee', mediumspringgreen: '#00fa9a', mediumturquoise: '#48d1cc', mediumvioletred: '#c71585', midnightblue: '#191970', mintcream: '#f5fffa', mistyrose: '#ffe4e1', moccasin: '#ffe4b5', navajowhite: '#ffdead', navy: '#000080', oldlace: '#fdf5e6', olive: '#808000', olivedrab: '#6b8e23', orange: '#ffa500', orangered: '#ff4500', orchid: '#da70d6', palegoldenrod: '#eee8aa', palegreen: '#98fb98', paleturquoise: '#afeeee', palevioletred: '#db7093', papayawhip: '#ffefd5', peachpuff: '#ffdab9', peru: '#cd853f', pink: '#ffc0cb', plum: '#dda0dd', powderblue: '#b0e0e6', purple: '#800080', red: '#ff0000', rosybrown: '#bc8f8f', royalblue: '#4169e1', saddlebrown: '#8b4513', salmon: '#fa8072', sandybrown: '#f4a460', seagreen: '#2e8b57', seashell: '#fff5ee', sienna: '#a0522d', silver: '#c0c0c0', skyblue: '#87ceeb', slateblue: '#6a5acd', slategray: '#708090', slategrey: '#708090', snow: '#fffafa', springgreen: '#00ff7f', steelblue: '#4682b4', tan: '#d2b48c', teal: '#008080', thistle: '#d8bfd8', tomato: '#ff6347', turquoise: '#40e0d0', violet: '#ee82ee', wheat: '#f5deb3', white: '#ffffff', whitesmoke: '#f5f5f5', yellow: '#ffff00', yellowgreen: '#9acd32', transparent: '#00000000' }; Color.nonStandarNamedColors = { night: '#0C090A', gunmetal: '#2C3539', midnight: '#2B1B17', charcoal: '#34282C', oil: '#3B3131', blackcat: '#413839', iridium: '#3D3C3A', blackeel: '#463E3F', blackcow: '#4C4646', graywolf: '#504A4B', vampiregray: '#565051', graydolphin: '#5C5858', carbongray: '#625D5D', ashgray: '#666362', cloudygray: '#6D6968', smokeygray: '#726E6D', granite: '#837E7C', battleshipgray: '#848482', graycloud: '#B6B6B4', graygoose: '#D1D0CE', platinum: '#E5E4E2', metallicsilver: '#BCC6CC', bluegray: '#98AFC7', raven: '#657383', jetgray: '#616D7E', mistblue: '#646D7E', marbleblue: '#566D7E', shipcove: '#737CA1', mariner: '#4863A0', bluejay: '#2B547E', biscay: '#2B3856', navyblue: '#000080', bluewhale: '#342D7E', lapisblue: '#15317E', denimdarkblue: '#151B8D', earthblue: '#0000A0', cobaltblue: '#0020C2', blueberryblue: '#0041C2', sapphireblue: '#2554C7', blueeyes: '#1569C7', blueorchid: '#1F45FC', bluelotus: '#6960EC', lightslateblue: '#736AFF', windowsblue: '#357EC7', glacialblueice: '#368BC1', silkblue: '#488AC7', blueivy: '#3090C7', bluekoi: '#659EC7', columbiablue: '#87AFC7', babyblue: '#95B9C7', oceanblue: '#2B65EC', blueribbon: '#306EFF', bluedress: '#157DEC', butterflyblue: '#38ACEC', iceberg: '#56A5EC', crystalblue: '#5CB3FF', denimblue: '#79BAEC', dayskyblue: '#82CAFF', jeansblue: '#A0CFEC', blueangel: '#B7CEEC', pastelblue: '#B4CFEC', seablue: '#C2DFFF', coralblue: '#AFDCEC', robineggblue: '#BDEDFF', palebluelily: '#CFECEC', water: '#EBF4FA', lightslate: '#CCFFFF', lightaquamarine: '#93FFE8', electricblue: '#9AFEFF', cyanoraqua: '#00FFFF', tronblue: '#7DFDFE', bluezircon: '#57FEFF', bluelagoon: '#8EEBEC', celeste: '#50EBEC', bluediamond: '#4EE2EC', tiffanyblue: '#81D8D0', cyanopaque: '#92C7C7', bluehosta: '#77BFC7', northernlightsblue: '#78C7C7', jellyfish: '#46C7C7', bluegreen: '#7BCCB5', macawbluegreen: '#43BFC7', seaturtlegreen: '#438D80', greenishblue: '#307D7E', grayishturquoise: '#5E7D7E', beetlegreen: '#4C787E', camouflagegreen: '#78866B', sagegreen: '#848b79', hazelgreen: '#617C58', venomgreen: '#728C00', ferngreen: '#667C26', darkforestgreen: '#254117', mediumforestgreen: '#347235', seaweedgreen: '#437C17', pinegreen: '#387C44', junglegreen: '#347C2C', shamrockgreen: '#347C17', greenonion: '#6AA121', clovergreen: '#3EA055', greensnake: '#6CBB3C', aliengreen: '#6CC417', greenapple: '#4CC417', kellygreen: '#4CC552', zombiegreen: '#54C571', froggreen: '#99C68E', greenpeas: '#89C35C', dollarbillgreen: '#85BB65', iguanagreen: '#9CB071', avocadogreen: '#B2C248', pistachiogreen: '#9DC209', saladgreen: '#A1C935', hummingbirdgreen: '#7FE817', nebulagreen: '#59E817', stoplightgogreen: '#57E964', algaegreen: '#64E986', jadegreen: '#5EFB6E', emeraldgreen: '#5FFB17', dragongreen: '#6AFB92', mintgreen: '#98FF98', greenthumb: '#B5EAAA', lightjade: '#C3FDB8', teagreen: '#CCFB5D', slimegreen: '#BCE954', harvestgold: '#EDE275', sunyellow: '#FFE87C', cornyellow: '#FFF380', parchment: '#FFFFC2', cream: '#FFFFCC', blonde: '#FBF6D9', champagne: '#F7E7CE', vanilla: '#F3E5AB', tanbrown: '#ECE5B6', peach: '#FFE5B4', mustard: '#FFDB58', rubberduckyyellow: '#FFD801', brightgold: '#FDD017', goldenbrown: '#EAC117', macaroniandcheese: '#F2BB66', saffron: '#FBB917', beer: '#FBB117', cantaloupe: '#FFA62F', beeyellow: '#E9AB17', brownsugar: '#E2A76F', deeppeach: '#FFCBA4', gingerbrown: '#C9BE62', schoolbusyellow: '#E8A317', fallleafbrown: '#C8B560', orangegold: '#D4A017', sand: '#C2B280', cookiebrown: '#C7A317', caramel: '#C68E17', brass: '#B5A642', camelbrown: '#C19A6B', bronze: '#CD7F32', tigerorange: '#C88141', cinnamon: '#C58917', bulletshell: '#AF9B60', copper: '#B87333', wood: '#966F33', oakbrown: '#806517', armybrown: '#827B60', sandstone: '#786D5F', mocha: '#493D26', taupe: '#483C32', coffee: '#6F4E37', brownbear: '#835C3B', reddirt: '#7F5217', sepia: '#7F462C', orangesalmon: '#C47451', rust: '#C36241', redfox: '#C35817', sedona: '#CC6600', papayaorange: '#E56717', halloweenorange: '#E66C2C', pumpkinorange: '#F87217', constructionconeorange: '#F87431', sunriseorange: '#E67451', mangoorange: '#FF8040', basketballorange: '#F88158', tangerine: '#E78A61', beanred: '#F75D59', valentinered: '#E55451', shockingorange: '#E55B3C', scarlet: '#FF2400', rubyred: '#F62217', ferrarired: '#F70D1A', fireenginered: '#F62817', lavared: '#E42217', lovered: '#E41B17', grapefruit: '#DC381F', chestnutred: '#C34A2C', cherryred: '#C24641', mahogany: '#C04000', chillipepper: '#C11B17', cranberry: '#9F000F', redwine: '#990012', burgundy: '#8C001A', chestnut: '#954535', bloodred: '#7E3517', sangria: '#7E3817', plumpie: '#7D0541', velvetmaroon: '#7E354D', plumvelvet: '#7D0552', rosyfinch: '#7F4E52', puce: '#7F5A58', dullpurple: '#7F525D', khakirose: '#C5908E', pinkbow: '#C48189', lipstickpink: '#C48793', rose: '#E8ADAA', rosegold: '#ECC5C0', desertsand: '#EDC9AF', pigpink: '#FDD7E4', cottoncandy: '#FCDFFF', pinkbubblegum: '#FFDFDD', flamingopink: '#F9A7B0', pinkrose: '#E7A1B0', pinkdaisy: '#E799A3', cadillacpink: '#E38AAE', carnationpink: '#F778A1', blushred: '#E56E94', watermelonpink: '#FC6C85', violetred: '#F6358A', pinkcupcake: '#E45E9D', pinklemonade: '#E4287C', neonpink: '#F535AA', dimorphothecamagenta: '#E3319D', brightneonpink: '#F433FF', tulippink: '#C25A7C', roguepink: '#C12869', burntpink: '#C12267', bashfulpink: '#C25283', darkcarnationpink: '#C12283', violapurple: '#7E587E', purpleiris: '#571B7E', plumpurple: '#583759', purplemonster: '#461B7E', purplehaze: '#4E387E', eggplant: '#614051', grape: '#5E5A80', purplejam: '#6A287E', purpleflower: '#A74AC7', purpleamethyst: '#6C2DC7', purplesagebush: '#7A5DC7', lovelypurple: '#7F38EC', aztechpurple: '#893BFF', jasminepurple: '#A23BEC', purpledaffodil: '#B041FF', tyrianpurple: '#C45AEC', crocuspurple: '#9172EC', purplemimosa: '#9E7BFF', heliotropepurple: '#D462FF', purpledragon: '#C38EC7', lilac: '#C8A2C8', blushpink: '#E6A9EC', mauve: '#E0B0FF', wisteriapurple: '#C6AEC7', blossompink: '#F9B7FF', periwinkle: '#E9CFEC', lavenderpinocchio: '#EBDDE2', lavenderblue: '#E3E4FA', pearl: '#FDEEF4', milkwhite: '#FEFCFF' }; /********************** COLOR CONVERTER *******************/ Color.rgbToHex = function (rgb) { return '#' + rgb.slice(0, 3).map(function (c) { var res = ((c * 255) >> 0).toString(16); if (res < 10) res = '0' + res; return res.toUpperCase(); }).join(''); }; Color.rgbaToHex = function (rgb) { return '#' + rgb.map(function (c) { var res = ((c * 255) >> 0).toString(16); if (res < 10) res = '0' + res; return res.toUpperCase(); }).join(''); }; Color.hsbaToText = function (hsba) { return 'hsba(' + (hsba[0] * 360 >> 0) + 'deg, ' + (hsba[1] * 100 >> 0) + '%, ' + (hsba[2] * 100 >> 0) + '%, ' + (hsba[3].toFixed(3)) + ')'; }; Color.hslaToText = function (hsla) { return 'hsla(' + (hsla[0] * 360 >> 0) + 'deg, ' + (hsla[1] * 100 >> 0) + '%, ' + (hsla[2] * 100 >> 0) + '%, ' + (hsla[3].toFixed(3)) + ')'; }; Color.rgbaToText = function (rgba) { return 'rgba(' + (rgba[0] * 255 >> 0) + ', ' + (rgba[1] * 255 >> 0) + ', ' + (rgba[2] * 255 >> 0) + ', ' + (rgba[3].toFixed(3)) + ')'; }; Color.hsbToText = function (hsba) { return 'hsb(' + (hsba[0] * 360 >> 0) + 'deg, ' + (hsba[1] * 100 >> 0) + '%, ' + (hsba[2] * 100 >> 0) + '%)'; }; Color.hslToText = function (hsl) { return 'hsl(' + (hsl[0] * 360 >> 0) + 'deg, ' + (hsl[1] * 100 >> 0) + '%, ' + (hsl[2] * 100 >> 0) + '%)'; }; Color.rgbToText = function (rgba) { return 'rgb(' + (rgba[0] * 255 >> 0) + ', ' + (rgba[1] * 255 >> 0) + ', ' + (rgba[2] * 255 >> 0) + ')'; }; Color.hsbaToHSLA = function (hsba) { var hue = hsba[0]; var sat = hsba[1]; var val = hsba[2]; // Calculate lightness. var li = (2 - sat) * val / 2; // Convert saturation. if (li !== 0) { if (li === 1) { sat = 0; } else if (li < 0.5) { sat = sat / (2 - sat); } else { sat = sat * val / (2 - li * 2); } } // Hue and alpha stay the same. return [hue, sat, li, hsba[3]]; }; Color.hsbaToRGBA = function (hsba) { var hue = hsba[0] * 6; // We will split hue into 6 sectors. var sat = hsba[1]; var val = hsba[2]; var RGBA = []; if (sat === 0) { RGBA = [val, val, val, hsba[3]]; // Return early if grayscale. } else { var sector = Math.floor(hue); var tint1 = val * (1 - sat); var tint2 = val * (1 - sat * (hue - sector)); var tint3 = val * (1 - sat * (1 + sector - hue)); var red, green, blue; if (sector === 1) { // Yellow to green. red = tint2; green = val; blue = tint1; } else if (sector === 2) { // Green to cyan. red = tint1; green = val; blue = tint3; } else if (sector === 3) { // Cyan to blue. red = tint1; green = tint2; blue = val; } else if (sector === 4) { // Blue to magenta. red = tint3; green = tint1; blue = val; } else if (sector === 5) { // Magenta to red. red = val; green = tint1; blue = tint2; } else { // Red to yellow (sector could be 0 or 6). red = val; green = tint3; blue = tint1; } RGBA = [red, green, blue, hsba[3]]; } return RGBA; }; Color.hslaToHSBA = function (hsla) { var hue = hsla[0]; var sat = hsla[1]; var li = hsla[2]; // Calculate brightness. var val; if (li < 0.5) { val = (1 + sat) * li; } else { val = li + sat - li * sat; } // Convert saturation. sat = 2 * (val - li) / val; // Hue and alpha stay the same. return [hue, sat, val, hsla[3]]; }; Color.hslaToRGBA = function (hsla) { var hue = hsla[0] * 6; // We will split hue into 6 sectors. var sat = hsla[1]; var li = hsla[2]; var RGBA = []; if (sat === 0) { RGBA = [li, li, li, hsla[3]]; // Return early if grayscale. } else { // Calculate brightness. var val; if (li < 0.5) { val = (1 + sat) * li; } else { val = li + sat - li * sat; } // Define zest. var zest = 2 * li - val; // Implement projection (project onto green by default). var hzvToRGB = function (hue, zest, val) { if (hue < 0) { // Hue must wrap to allow projection onto red and blue. hue += 6; } else if (hue >= 6) { hue -= 6; } if (hue < 1) { // Red to yellow (increasing green). return zest + (val - zest) * hue; } else if (hue < 3) { // Yellow to cyan (greatest green). return val; } else if (hue < 4) { // Cyan to blue (decreasing green). return zest + (val - zest) * (4 - hue); } else { // Blue to red (least green). return zest; } }; // Perform projections, offsetting hue as necessary. RGBA = [ hzvToRGB(hue + 2, zest, val), hzvToRGB(hue, zest, val), hzvToRGB(hue - 2, zest, val), hsla[3] ]; } return RGBA; }; Color.rgbaToHSBA = function (rgba) { var red = rgba[0]; var green = rgba[1]; var blue = rgba[2]; var val = Math.max(red, green, blue); var chroma = val - Math.min(red, green, blue); var hue, sat; if (chroma === 0) { // Return early if grayscale. hue = 0; sat = 0; } else { sat = chroma / val; if (red === val) { // Magenta to yellow. hue = (green - blue) / chroma; } else if (green === val) { // Yellow to cyan. hue = 2 + (blue - red) / chroma; } else if (blue === val) { // Cyan to magenta. hue = 4 + (red - green) / chroma; } if (hue < 0) { // Confine hue to the interval [0, 1). hue += 6; } else if (hue >= 6) { hue -= 6; } } return [hue / 6, sat, val, rgba[3]]; }; Color.rgbaToHSLA = function (rgba) { var red = rgba[0]; var green = rgba[1]; var blue = rgba[2]; var val = Math.max(red, green, blue); var min = Math.min(red, green, blue); var li = val + min; // We will halve this later. var chroma = val - min; var hue, sat; if (chroma === 0) { // Return early if grayscale. hue = 0; sat = 0; } else { if (li < 1) { sat = chroma / li; } else { sat = chroma / (2 - li); } if (red === val) { // Magenta to yellow. hue = (green - blue) / chroma; } else if (green === val) { // Yellow to cyan. hue = 2 + (blue - red) / chroma; } else if (blue === val) { // Cyan to magenta. hue = 4 + (red - green) / chroma; } if (hue < 0) { // Confine hue to the interval [0, 1). hue += 6; } else if (hue >= 6) { hue -= 6; } } return [hue / 6, sat, li / 2, rgba[3]]; }; Color.hwbaToHSBA = function (hwba) { return [hwba[0], 1 - hwba[1] / (1 - hwba[2]), 1 - hwba[2], hwba[3]]; }; Color.hsbaToHWBA = function (hsla) { return [hsla[0], (1 - hsla[1]) * hsla[2], 1 - hsla[2], hsla[3]]; }; Color.rgbaToHWBA = function (rgba) { return this.hsbaToHWBA(this.rgbaToHSBA(rgba)); }; Color.hwbaToRGBA = function (hwba) { return this.hsbaToRGBA(this.hwbaToHSBA(hwba)); }; /* harmony default export */ var Color_Color = (Color); // CONCATENATED MODULE: ./node_modules/absol/src/Math/random.js /** * Returns a random number between min (inclusive) and max (exclusive) */ function randomArbitrary(min, max) { return Math.random() * (max - min) + min; } /** * Returns a random integer between min (inclusive) and max (inclusive) * Using Math.round() will give you a non-uniform distribution! */ function randomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function randomPick(arr) { var id = randomInt(0, arr.length - 1); return arr[id]; } // CONCATENATED MODULE: ./node_modules/absol/src/String/stringGenerate.js var identCharacters = function () { var chars = 'qwertyuiopasdfghjklzxcvbnm'; chars = chars + chars.toUpperCase(); var num = '0123456789'; var spect = '_'; return (chars + spect + num).split(''); }(); function randomIdent(length) { if (!(length > 0)) length = 4; var factor = identCharacters; return [factor[(Math.random() * (factor.length - 10)) >> 0]].concat(Array(length - 1).fill('').map(function () { return factor[(Math.random() * factor.length) >> 0]; })).join(''); } function parallelMatch(a, b) { var l = Math.min(a.length, b.length); var res = 0; for (var i = 0; i < l; ++i) { if (a[i] == b[i])++res; } return res; } var ipsumLoremWord = ['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud', 'exercitation', 'ullamco', 'laboris', 'nisi', 'aliquip', 'ex', 'ea', 'commodo', 'consequat', 'duis', 'aute', 'irure', 'in', 'reprehenderit', 'voluptate', 'velit', 'esse', 'cillum', 'eu', 'fugiat', 'nulla', 'pariatur', 'excepteur', 'sint', 'occaecat', 'cupidatat', 'non', 'proident', 'sunt', 'culpa', 'qui', 'officia', 'deserunt', 'mollit', 'anim', 'id', 'est', 'laborum', 'perspiciatis', 'unde', 'omnis', 'iste', 'natus', 'error', 'voluptatem', 'accusantium', 'doloremque', 'laudantium', 'totam', 'rem', 'aperiam', 'eaque', 'ipsa', 'quae', 'ab', 'illo', 'inventore', 'veritatis', 'quasi', 'architecto', 'beatae', 'vitae', 'dicta', 'explicabo', 'nemo', 'ipsam', 'quia', 'voluptas', 'aspernatur', 'aut', 'odit', 'fugit', 'consequuntur', 'magni', 'dolores', 'eos', 'ratione', 'sequi', 'nesciunt', 'neque', 'porro', 'quisquam', 'dolorem', 'adipisci', 'numquam', 'eius', 'modi', 'tempora', 'incidunt', 'magnam', 'aliquam', 'quaerat', 'minima', 'nostrum', 'exercitationem', 'ullam', 'corporis', 'suscipit', 'laboriosam', 'aliquid', 'commodi', 'consequatur', 'autem', 'vel', 'eum', 'iure', 'quam', 'nihil', 'molestiae', 'illum', 'quo', 'at', 'vero', 'accusamus', 'iusto', 'odio', 'dignissimos', 'ducimus', 'blanditiis', 'praesentium', 'voluptatum', 'deleniti', 'atque', 'corrupti', 'quos', 'quas', 'molestias', 'excepturi', 'occaecati', 'cupiditate', 'provident', 'similique', 'mollitia', 'animi', 'dolorum', 'fuga', 'harum', 'quidem', 'rerum', 'facilis', 'expedita', 'distinctio', 'nam', 'libero', 'tempore', 'sum', 'soluta', 'nobis', 'eligendi', 'optio', 'cumque', 'impedit', 'minus', 'quod', 'maxime', 'placeat', 'facere', 'possimus', 'assumenda', 'repellendus', 'temporibus', 'quibusdam', 'officiis', 'debitis', 'necessitatibus', 'saepe', 'eveniet', 'voluptates', 'repudiandae', 'recusandae', 'itaque', 'earum', 'hic', 'tenetur', 'a', 'sapiente', 'delectus', 'reiciendis', 'voluptatibus', 'maiores', 'alias', 'perferendis', 'doloribus', 'asperiores', 'repellat', 'integer', 'nec', 'praesent', 'cursus', 'ante', 'dapibus', 'diam', 'sem', 'nibh', 'elementum', 'imperdiet', 'sagittis', 'mauris', 'fusce', 'tellus', 'augue', 'semper', 'porta', 'massa', 'vestibulum', 'lacinia', 'arcu', 'eget', 'class', 'aptent', 'taciti', 'sociosqu', 'litora', 'torquent', 'per', 'conubia', 'nostra', 'inceptos', 'himenaeos', 'curabitur', 'sodales', 'ligula', 'dignissim', 'nunc', 'tortor', 'pellentesque', 'aenean', 'scelerisque', 'maecenas', 'mattis', 'convallis', 'tristique', 'proin', 'egestas', 'porttitor', 'morbi', 'lectus', 'risus', 'iaculis', 'luctus', 'ac', 'turpis', 'aliquet', 'metus', 'ullamcorper', 'tincidunt', 'euismod', 'quisque', 'volutpat', 'condimentum', 'urna', 'facilisi', 'fringilla', 'suspendisse', 'potenti', 'feugiat', 'mi', 'sapien', 'etiam', 'ultrices', 'justo', 'lacus', 'pharetra', 'auctor', 'interdum', 'primis', 'faucibus', 'orci', 'posuere', 'cubilia', 'curae', 'molestie', 'dui', 'blandit', 'congue', 'pede', 'facilisis', 'laoreet', 'donec', 'viverra', 'malesuada', 'pulvinar', 'sollicitudin', 'cras', 'nisl', 'felis', 'venenatis', 'ultricies', 'accumsan', 'pretium', 'fermentum', 'nullam', 'purus', 'mollis', 'vivamus', 'consectetuer' ]; function randomWord() { var arr = ipsumLoremWord; var idx = randomInt(0, arr.length - 1); return arr[idx]; } function randomPhrase(limitLenght) { if (!limitLenght) limitLenght = 50; var length = Math.ceil(Math.random() * limitLenght / 7); return new Array(length) .fill(null) .map(randomWord) .reduce(function (ac, cr) { if (ac.length + cr.length < limitLenght) { ac.parts.push(cr); } return ac; }, { parts: [], length: 0 }).parts .join(' '); } function randomSentence(limitLenght) { if (!limitLenght) limitLenght = 300; var length = Math.ceil(Math.random() * limitLenght / 70); var res = new Array(length) .fill(null) .map(randomPhrase) .reduce(function (ac, cr) { if (ac.length + cr.length < limitLenght) { ac.parts.push(cr); } return ac; }, { parts: [], length: 0 }).parts .join(', '); if (Math.random() < 0.03) { res = res.replace(/\,/i, ':'); } res = res.replace(/^./, function (x) { return x.toUpperCase(); }); res += '.'; return res; } function randomParagraph(limitLenght) { if (!limitLenght) limitLenght = 1000; var length = Math.ceil(Math.random() * limitLenght / 200); return new Array(length).fill(null) .map(randomSentence) .reduce(function (ac, cr) { if (ac.length + cr.length < limitLenght) { ac.parts.push(cr); } return ac; }, { parts: [], length: 0 }).parts .join(' '); } // CONCATENATED MODULE: ./node_modules/absol/src/Network/IFrameBridge.js /** * * @param {Worker} host */ function IFrameBridge(host, origin) { EventEmitter["b" /* default */].call(this); this.detach(); this.origin = origin; if (host) this.attach(host); this.__azarResolveCallbacks = {}; } IFrameBridge.prototype.attach = function (host) { this.host = host; if (this.host.addEventListener) { this.host.addEventListener("message", this.__azarMessageListener.bind(this), false); } else if (this.host.attachEvent) { this.host.attachEvent("onmessage", this.__azarMessageListener.bind(this)); } else { this.host.onmessage = this.__azarMessageListener.bind(this); } this.__IFrameBridge_resolve(); }; IFrameBridge.prototype.detach = function () { this.sync = new Promise(function (resolve) { this.__IFrameBridge_resolve = resolve; }.bind(this)); }; IFrameBridge.fromIFrame = function (iframe) { var host = iframe.contentWindow || iframe.contentDocument; var src = iframe.src; var rootOrigin = location.origin; var iframeOrigin = src.match(/^(http|https):\/\/[^/]+/); if (iframeOrigin){ iframeOrigin = iframeOrigin[0]; } else{ iframeOrigin = rootOrigin; } if (host) return new IFrameBridge(host, iframeOrigin); else { var result = new IFrameBridge(undefined, iframeOrigin ); var attachedHost = function () { var host = iframe.contentWindow || iframe.contentDocument; result.attach(host); }; if (iframe.addEventListener) { iframe.addEventListener("load", attachedHost); } else { iframe.attachEvent("onload", attachedHost); } return result; } }; IFrameBridge.getInstance = function () { if (!IFrameBridge.shareInstance) { var origin = location.origin; var rootOrigin = IFrameBridge.getParentUrl().match(/^(http|https):\/\/[^/]+/); if (rootOrigin){ rootOrigin = rootOrigin[0]; } else{ rootOrigin = origin; } // IFrameBridge.shareInstance = new IFrameBridge(self, rootOrigin == origin? undefined: "*" || rootOrigin ); IFrameBridge.shareInstance = new IFrameBridge(self, rootOrigin ); } return IFrameBridge.shareInstance; }; Object.defineProperties(IFrameBridge.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); IFrameBridge.prototype.constructor = IFrameBridge; IFrameBridge.isInIFrame = function () { return (top !== self); }; IFrameBridge.getParentUrl = function(){ var parentUrl = (window.location != window.parent.location) ? document.referrer : document.location.href; return parentUrl; }; IFrameBridge.prototype.__azarMessageListener = function (event) { this.__azarHandleData(event.data); }; IFrameBridge.prototype.__azarHandleData = function (data) { if (data.type) { if (data.type == "INVOKE") { var result = this.__azarRelfInvoke(data.name, data.params); if (result && typeof result.then == 'function') { result.then(function (result) { this.__azarResolve(data.taskId, result); }.bind(this)); } else { this.__azarResolve(data.taskId, result); } } else if (data.type == "INVOKE_RESULT") { if (this.__azarResolveCallbacks[data.taskId]) { this.__azarResolveCallbacks[data.taskId](data.result); delete this.__azarResolveCallbacks[data.taskId]; } } else if (data.type == "EMIT") { this.fire.apply(this, data.params); } else this.fire('message', data, this); } }; IFrameBridge.prototype.__azarResolve = function (taskId, result) { var data = { type: "INVOKE_RESULT", taskId: taskId, result: result }; if (this.origin) { this.host.postMessage(data, this.origin); } else { this.host.postMessage(data); } }; IFrameBridge.prototype.__azarRelfInvoke = function (name, params) { if (typeof this[name] == 'function') { return this[name].apply(this, params); } else { return this[name]; } }; IFrameBridge.prototype.emit = function () { var params = []; params.push.apply(params, arguments); this.sync.then(function () { var data = { type: "EMIT", params: params }; if (this.origin) { this.host.postMessage(data, this.origin); } else { this.host.postMessage(data); } }.bind(this)); return this; }; IFrameBridge.prototype.invoke = function (name) { var params = []; params.push.apply(params, arguments); params.shift(); return this.sync.then(function () { var indent = randomIdent(32); var data = { type: 'INVOKE', params: params, taskId: indent, name: name }; if (this.origin) { this.host.postMessage(data, this.origin); } else { this.host.postMessage(data); } return new Promise(function (resolve) { this.__azarResolveCallbacks[indent] = resolve; }.bind(this)); }.bind(this)); }; /* harmony default export */ var Network_IFrameBridge = (IFrameBridge); // EXTERNAL MODULE: ./node_modules/jszip/dist/jszip.min.js var jszip_min = __webpack_require__(15); var jszip_min_default = /*#__PURE__*/__webpack_require__.n(jszip_min); // EXTERNAL MODULE: ./node_modules/absol/src/JSDocx/JSDocx.js var JSDocx = __webpack_require__(42); // CONCATENATED MODULE: ./node_modules/absol/src/Network/Broadcast.js // it can be replace BroadcastChanel function Broadcast(channel, id) { EventEmitter["b" /* default */].call(this); this.channel = channel; this.id = id; this._ev_message = this._ev_message.bind(this); this._ev_storage = this._ev_storage.bind(this); this._init(); } Object.defineProperties(Broadcast.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); Broadcast.prototype.constructor = Broadcast; Broadcast.prototype._init = function () { if ('BroadcastChannel' in window) { this.nativeBroadcastChannel = new BroadcastChannel(this.channel); this.nativeBroadcastChannel.onmessage = this._ev_message; } else if ('localStorage' in window) { if (!('onstorage' in window)) console.warn("Your browser may not support onstorage event."); if (window.addEventListener) { window.addEventListener('storage', this._ev_storage); } else { window.attachEvent('onstorage', this._ev_storage); } this.storageKey = '_broadcast_' + this.channel; } else { throw new Error("Your browser can not support broadcast!"); } }; Broadcast.prototype._ev_storage = function (event) { if (event.key == this.storageKey) { var data = JSON.parse(event.newValue); if (data.sourceId != this.id) this.handleMessData(data.message); } }; Broadcast.prototype._ev_message = function (event) { var data = event.data; this.handleMessData(data); }; Broadcast.prototype.handleMessData = function (data) { if (data.type == "EMIT") this.fire.apply(this, data.params); if (typeof this.onmessage == 'function') this.onmessage(event); }; /** * @param {Array<*>} */ Broadcast.prototype.emit = function () { var params = Array.prototype.slice.call(arguments); this.postMessage({ type: "EMIT", params, sourceId: this.id }); }; /** * @param {*} message */ Broadcast.prototype.postMessage = function (message) { if (this.nativeBroadcastChannel) { this.nativeBroadcastChannel.postMessage(message); } else { localStorage.setItem(this.storageKey, JSON.stringify({ message: message, sourceId: this.id })); } }; Broadcast.prototype.onmessage = null; Broadcast.prototype.close = function () { if (this.nativeBroadcastChannel) this.nativeBroadcastChannel.close(); }; /* harmony default export */ var Network_Broadcast = (Broadcast); // CONCATENATED MODULE: ./node_modules/absol/src/HTML5/Text.js function getTextNodesIn(node) { var textNodes = []; if (node.nodeType == 3) { textNodes.push(node); } else { var children = node.childNodes; for (var i = 0, len = children.length; i < len; ++i) { textNodes.push.apply(textNodes, getTextNodesIn(children[i])); } } return textNodes; } /** * * @param {Element} el * @param {Range} range * @param {Number} start * @returns {Number} -1: ok, ret >= 0(is length of text) : need move to next element * */ function setSelectionRangeStart(el, range, start) { if (start > 0) { if (el.nodeType == Node.TEXT_NODE) { var text = el.data; if (start <= text.length) { range.setStart(el, start); return -1; } else return text.length; } if (el.tagName.toLowerCase() == 'br') { return 0; } else { var delta = 0; var i = 0; var textLength = 0; var newLine = false; while (delta >= 0 && i < el.childNodes.length) { var childElt = el.childNodes[i]; if (newLine) { newLine = false; ++textLength; } delta = setSelectionRangeStart(childElt, range, start - textLength); if (delta >= 0) textLength += delta; if (childElt.nodeType != Node.TEXT_NODE && (window.getComputedStyle(childElt).display == 'block' || childElt.tagName.toLowerCase() == 'br')) { newLine = true; } ++i; } if (delta >= 0) return textLength; return -1; } } else { range.setStart(el, 0); return -1; } } /** * * @param {Element} el * @param {Range} range * @param {Number} end * @returns {Number} -1: ok, ret >= 0(is length of text) : need move to next element * */ function setSelectionRangeEnd(el, range, end) { if (end > 0) { if (el.nodeType == Node.TEXT_NODE) { var text = el.data; if (end <= text.length) { range.setEnd(el, end); return -1; } else return text.length; } if (el.tagName.toLowerCase() == 'br') { return 0; } else { var delta = 0; var i = 0; var textLength = 0; var newLine = false; while (delta >= 0 && i < el.childNodes.length) { var childElt = el.childNodes[i]; if (newLine) { newLine = false; ++textLength; } delta = setSelectionRangeEnd(childElt, range, end - textLength); if (delta >= 0) textLength += delta; if (childElt.nodeType != Node.TEXT_NODE && (window.getComputedStyle(childElt).display == 'block' || childElt.tagName.toLowerCase() == 'br')) { newLine = true; } ++i; } if (delta >= 0) return textLength; return -1; } } else { range.setEnd(el, 0); return -1; } } function setSelectionRange(el, start, end) { if (document.createRange && window.getSelection) { var range = document.createRange(); range.selectNodeContents(el); var delta; if (start >= 0) { delta = setSelectionRangeStart(el, range, start); if (delta >= 0) range.setStart(el, el.childNodes.length); } else { start = 0; range.setStart(el, 0); } if (end >= start) { delta = setSelectionRangeEnd(el, range, end); if (delta >= 0) range.setEnd(el, el.childNodes.length); } var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } else if (document.selection && document.body.createTextRange) { var textRange = document.body.createTextRange(); textRange.moveToElementText(el); textRange.collapse(true); textRange.moveEnd("character", end); textRange.moveStart("character", start); textRange.select(); } } function getTextIn(e) { if (e.nodeType == Node.TEXT_NODE) { return e.data; } if (e.tagName && e.tagName.toLowerCase() == 'br') return ''; var texts = []; var newLine = false; for (var i = 0; i < e.childNodes.length; ++i) { if (newLine) { newLine = false; texts.push('\n'); } var childElt = e.childNodes[i]; texts.push(getTextIn(childElt)); if (childElt.nodeType != Node.TEXT_NODE && (window.getComputedStyle(childElt).display == 'block' || childElt.tagName.toLowerCase() == 'br')) { newLine = true; } } return texts.join(''); } function textToNodes(text) { var lines = text.split(/\r?\n/); return lines.map(function (text) { if (text.length == 0) { return Dom["b" /* default */].ShareInstance._({ child: { tag: 'br' } }); } else { return Dom["b" /* default */].ShareInstance._({ child: { text: text } }); } }); } /* ** Returns the caret (cursor) position of the specified text field (oField). ** Return value range is 0-oField.value.length. */ function Text_getCaretPosition(oField) { // Initialize var iCaretPos = 0; // IE Support if (document.selection) { // Set focus on the element oField.focus(); // To get cursor position, get empty selection range var oSel = document.selection.createRange(); // Move selection start to 0 position oSel.moveStart('character', -oField.value.length); // The caret position is selection length iCaretPos = oSel.text.length; } // Firefox support else if (oField.selectionStart || oField.selectionStart == '0') iCaretPos = oField.selectionDirection == 'backward' ? oField.selectionStart : oField.selectionEnd; // Return results return iCaretPos; } function setCaretPosition(oField, caretPos) { if (oField.createTextRange) { var range = oField.createTextRange(); range.move('character', caretPos); range.select(); } else { if (oField.selectionStart) { oField.focus(); oField.setSelectionRange(caretPos, caretPos); } else oField.focus(); } } function measureText(text, font) { // re-use canvas object for better performance var canvas = measureText.canvas || (measureText.canvas = document.createElement("canvas")); var context = canvas.getContext("2d"); if (font) context.font = font; var metrics = context.measureText(text); return metrics; } // CONCATENATED MODULE: ./node_modules/absol/src/Converter/file.js function blobToFile(theBlob, fileName) { return new File([theBlob], fileName); } function dataURItoBlob(dataURI) { var byteString = atob(dataURI.split(',')[1]); var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; var ab = new ArrayBuffer(byteString.length); var ia = new Uint8Array(ab); for (var i = 0; i < byteString.length; i++) { ia[i] = byteString.charCodeAt(i); } var blob = new Blob([ab], { type: mimeString }); return blob; } function blobToArrayBuffer(blob) { var fileReader = new FileReader(); return new Promise(function (rs) { fileReader.onload = function (event) { var arrayBuffer = event.target.result; rs(arrayBuffer); }; fileReader.readAsArrayBuffer(blob); }); } function stringToBlob(text, type) { return new Blob([text], { type: type || 'text/plain' }); } // CONCATENATED MODULE: ./node_modules/absol/src/Converter/base64.js function base64EncodeUnicode(str) { return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) { return String.fromCharCode('0x' + p1); })); }; function base64DecodeUnicode(str) { return decodeURIComponent(atob(str).split('').map(function (c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); } var UnicodeBase64Converter = { encode: base64EncodeUnicode, decode: base64DecodeUnicode }; // CONCATENATED MODULE: ./node_modules/absol/src/Time/Alarm.js /** * * @param {Date| Number} time * @param {Function} callback */ function Alarm(time, callback) { this.LIMIT_TIMEOUT = 2147483647; this.callback = callback; this.state = "STAND_BY"; this.timeout = -1; if (typeof time == 'number') this.time = time; else this.time = time.getTime(); this.args = Array.prototype.slice.call(arguments, 2); this.tick = this.tick.bind(this); if (this.time >= new Date().getTime()) this.start(); else this.kill(); } Alarm.prototype.start = function () { if (this.state == 'STAND_BY' || this.state == "PAUSE") { this.state = "RUNNING"; this.tick(); return true; } return false; }; Alarm.prototype.pause = function () { if (this.state == "RUNNING") { clearTimeout(this.timeout); this.timeout = -1; this.state = 'PAUSE'; } }; Alarm.prototype.tick = function () { var now = new Date().getTime(); if (now >= this.time) { this.callback && this.callback.apply(null, this.args); this.start = 'FINISH'; } else { var deltaTime = Math.min(this.LIMIT_TIMEOUT, this.time - now); this.timeout = setTimeout(this.tick, deltaTime); this.state = "RUNNING"; } } Alarm.prototype.kill = function () { if (this.state != "FINISH" && this.state != "DEAD") { if (this.timeout >= 0) clearTimeout(this.timeout); this.state = 'DEAD'; return true; } return false; }; /* harmony default export */ var Time_Alarm = (Alarm); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Ref.js function Ref(value) { this.set(value); } Ref.prototype.toString = function () { return this.value + ''; }; Ref.prototype.valueOf = function () { return this.value; }; Ref.prototype.set = function (value) { this.value = value; }; Ref.prototype.get = function () { return this.value; } /* harmony default export */ var AppPattern_Ref = (Ref); // CONCATENATED MODULE: ./node_modules/absol/src/Network/XHR.js var XHR = {}; XHR.makeHttpObject = function () { try { return new XMLHttpRequest(); } catch (error) { } try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (error) { } try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (error) { } throw new Error("Could not create HTTP request object."); }; /*** * * @param {String} url * @param {String} body * @param {String} responseType * @param {Function} success * @param {Function} failure * @returns {Promise} */ XHR.getRequest = function (url, props, success, failure) { return new Promise(function (rs, rj) { var request = XHR.makeHttpObject(); request.open("GET", url, true); if (typeof props == 'string') request.responseType = props || ''; else if (props && (typeof props == 'object')) { Object.assign(request, props); } request.send(null); request.onreadystatechange = function () { if (request.readyState == 4) { if (request.status == 200) { var response = request.response; success && success(response); rs(response); } else { failure && failure(request.status, request.statusText); rj(request.status); } } }; request.onerror = function () { failure && failure(request.status, request.statusText); rj(new Error(request.status + request.statusText)); }; }); }; XHR.postRepquest = function (url, payload, props, headers, success, failure) { return new Promise(function (rs, rj) { var method = "POST"; var shouldBeAsync = true; var request = XHR.makeHttpObject(); request.onreadystatechange = function () { if (request.readyState == 4) { if (request.status == 200) { success && success(request.response); rs(request.response); } else if (failure) { failure && failure(request.status, request.statusText); rj({ status: request.status, statusText: request.statusText }); } } }; request.onerror = function () { failure && failure(request.status, request.statusText); rj(new Error(request.status + request.statusText)); }; request.open(method, url, shouldBeAsync); if (typeof props == 'string') request.responseType = props || ''; else if (props && (typeof props == 'object')) { Object.assign(request, props); } headers = headers || {}; headers["Content-Type"] = headers["Content-Type"] || "application/json;charset=UTF-8"; Object.keys(headers).forEach(function (key) { request.setRequestHeader(key, headers[key]); }); request.send(payload); }); }; XHR.request = function (method, url, props, headers, body, successCallback, failureCallback) { return new Promise(function (rs, rj) { var shouldBeAsync = true; var request = new XMLHttpRequest(); request.onreadystatechange = function () { if (request.readyState == 4) { if (request.status == 200) { successCallback && successCallback(request.response); rs(request.response); } else { failureCallback && failureCallback(request.status, request.statusText); rj({ status: request.status, statusText: request.statusText }); } } }; request.onerror = function () { var error = new Error("Network Error!"); if (failureCallback) failureCallback(error); rj(error); }; request.open(method, url, shouldBeAsync); if (typeof props == 'string') request.responseType = props || ''; else if (props && (typeof props == 'object')) { Object.assign(request, props); } headers = headers || {}; headers["Content-Type"] = headers["Content-Type"] || "application/json;charset=UTF-8"; Object.keys(headers).forEach(function (key) { request.setRequestHeader(key, headers[key]); }); request.send(body); }); }; /* harmony default export */ var Network_XHR = (XHR); // CONCATENATED MODULE: ./node_modules/absol/src/String/stringFormat.js /** * * @param {String} s * @param {Number} maxLength */ function wrapToLines(s, maxLength) { var res = []; var currentWord = ''; var currentLine = ''; for (var i = 0; i < s.length; ++i) { if (s[i].match(/\s/)) { if (currentWord.length + currentLine.length >= maxLength) { if (currentLine.length > 0) { res.push(currentLine.trim()); currentLine = ''; currentWord = currentWord.trimLeft() + s[i]; } else { currentLine = currentLine + currentWord; res.push(currentLine.trim()); currentLine = ''; currentWord = ''; } } else { currentLine = currentLine + currentWord; currentWord = s[i]; } } else { currentWord = currentWord + s[i]; } } currentLine = (currentLine + currentWord).trim(); if (currentLine.length > 0) res.push(currentLine); return res; } /** * * @param {String} s * @returns {String} */ function nonAccentVietnamese(s) { return s.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a") .replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, "A") .replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e") .replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, "E") .replace(/ì|í|ị|ỉ|ĩ/g, "i") .replace(/Ì|Í|Ị|Ỉ|Ĩ/g, "I") .replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o") .replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, "O") .replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u") .replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U") .replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y") .replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y") .replace(/đ/g, "d") .replace(/Đ/g, "D") .replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, "") .replace(/\u02C6|\u0306|\u031B/g, ""); } /** * * @param {String} s * @returns {String} */ function pascalCaseToCamelCase(s) { return s.substr(0, 1).toLowerCase() + s.substr(1); } /** * * @param {String} s * @returns {String} */ function kebabCaseToCamelCase(s) { return s.replace(/-+([^-])/g, function (full, c) { return c.toUpperCase(); }); } /** * * @param {String} s * @returns {String} */ function underScoreToCamelCase(s) { return s.replace(/(_+)?([^_]+)/g, function (full, underscore, word) { if (underscore) { if (word) { return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase(); } else return ''; } else { return word.toLowerCase(); }; }); } /** * * @param {String} s * @returns {String} */ function camelCaseToPascalCase(s) { return s.substr(0, 1).toUpperCase() + s.substr(1); } /** * * @param {String} s * @returns {String} */ function underScoreToPascalCase(s) { return s.replace(/(_+|^)?([^_]+)/g, function (full, underscore, word) { return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase(); }); } /** * * @param {String} s * @returns {String} */ function kebabCaseToPascalCase(s) { return s.replace(/(-+|^)([^-])/g, function (full, u, c) { return c.toUpperCase(); }); } /** * * @param {String} s * @returns {String} */ function pascalCaseToKebabCase(s) { return s.replace(/[A-Z][^A-Z]*/g, function (full, index) { if (index == 0) return full.toLowerCase(); return '-' + full.toLowerCase() }); } /** * * @param {String} s * @returns {String} */ function camelCaseToKebabCase(s) { return s.replace(/(^|[A-Z])[^A-Z]*/g, function (full, index) { if (index == 0) return full.toLowerCase(); return '-' + full.toLowerCase() }); } /** * * @param {String} s * @returns {String} */ function underScoreToKebabCase(s) { return s.replace(/(^|_+)([^_]+)/g, function (full, score, word, index) { if (index == 0) return word.toLowerCase(); return '-' + word.toLowerCase() }); } /** * * @param {String} s * @returns {String} */ function pascalCaseToUnderScore(s) { return s.replace(/[A-Z][^A-Z]*/g, function (full, index) { if (index == 0) return full.toLowerCase(); return '_' + full.toLowerCase() }); } /** * * @param {String} s * @returns {String} */ function pascalCaseToUpperUnderScore(s) { return s.replace(/[A-Z][^A-Z]*/g, function (full, index) { if (index == 0) return full.toUpperCase(); return '_' + full.toUpperCase() }); } /** * * @param {String} s * @returns {String} */ function camelCaseToUnderScore(s) { return s.replace(/(^|[A-Z])[^A-Z]*/g, function (full, index) { if (index == 0) return full.toLowerCase(); return '_' + full.toLowerCase() }); } /** * * @param {String} s * @returns {String} */ function camelCaseToUpperUnderScore(s) { return s.replace(/(^|[A-Z])[^A-Z]*/g, function (full, index) { if (index == 0) return full.toUpperCase(); return '_' + full.toUpperCase() }); } /** * * @param {String} s * @returns {String} */ function kebabCaseToUnderScore(s) { return s.replace(/(-+|^)([^-]+)/g, function (full, u, word, index) { if (index == 0) return word.toLowerCase(); return '_' + word.toLowerCase() }); } /** * * @param {String} s * @returns {String} */ function kebabCaseToUpperUnderScore(s) { return s.replace(/(-+|^)([^-]+)/g, function (full, u, word, index) { if (index == 0) return word.toUpperCase(); return '_' + word.toUpperCase() }); } String.nonAccentVietnamese = nonAccentVietnamese; String.prototype.nonAccentVietnamese = function () { return String.nonAccentVietnamese(this); }; // EXTERNAL MODULE: ./node_modules/absol/src/JSX/attribute.js var JSX_attribute = __webpack_require__(14); // CONCATENATED MODULE: ./node_modules/absol/src/JSX/dom.js function domVisitor(jsxCode) { var visitor = { File: function (node, ac) { return acept(node.program, ac); }, Program: function (node, ac) { ac.child = node.body.map(function (cNode) { return acept(cNode, {}); }); return ac; }, ExpressionStatement: function (node, ac) { return acept(node.expression, ac); }, JSXElement: function (node, ac) { acept(node.openingElement, ac); if (node.children && node.children.length > 0) { ac.child = node.children.map(function (cNode) { return acept(cNode, {}); }); } return ac; }, JSXOpeningElement: function (node, ac) { var name = {}; acept(node.name, name); ac.tag = name.value; if (node.attributes && node.attributes.length > 0) { node.attributes.forEach(function (aNode) { var attribute = {}; acept(aNode, attribute); if (attribute.key) { if (attribute.key.startsWith('data-')) { ac.data = ac.data || {}; ac.data[attribute.key.replace('data-', '')] = attribute.value; } else if (attribute.key.startsWith('prop-')) { ac.props = ac.props || {}; ac.props[attribute.key.replace('prop-', '')] = attribute.value; } else if (attribute.key.startsWith('on-')) { ac.on = ac.props || {}; ac.on[attribute.key.replace('on-', '')] = attribute.value; } else if (attribute.key == 'style') { ac.style = Object(JSX_attribute["parseStyleAttr"])(attribute.value); } else if (attribute.key == 'class') { var classList = Object(JSX_attribute["parseClassAttr"])(attribute.value); if (classList.length > 0) ac.class = classList; } else{ ac.attr = ac.attr || {}; ac.attr[attribute.key] = attribute.value; } } }, {}); } return ac; }, JSXIdentifier: function (node, ac) { ac.value = node.name; }, JSXAttribute: function (node, ac) { var key = {}; acept(node.name, key); ac.key = key.value; var value = {}; acept(node.value, value); ac.value = value.value; return ac; }, StringLiteral: function (node, ac) { ac.value = node.value; }, JSXExpressionContainer: function (node, ac) { ac.value = { expression: jsxCode.substring(node.expression.start, node.expression.end) }; return ac; }, JSXText: function (node, ac) { ac.text = node.value return ac; } }; function acept(node, ac) { return node && visitor[node.type] && visitor[node.type](node, ac); } return { acept: acept, visitor: visitor } } /*** * @param {String} jsxCode */ function parseDom(jsxCode) { jsxCode = jsxCode.trim().replace(/>\s+</gm, '><').replace(/<(\/?)(img|input|link|br|meta)([^>]*)>/g, function (sub, end, tag, content) { if (end == '/') return ''; return '<' + tag + content + '/>'; }); var ast = babel.parse( jsxCode, { plugins: [ babel.pluginSyntaxJsx ] }); var xmlData = {}; domVisitor(jsxCode).acept(ast, xmlData); if (xmlData.child.length > 1) return xmlData.child; return xmlData.child[0]; } // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(11); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Context.js function Context() { this.state = "CREATE"; /** * @type {Context} */ this.parent = null; /*** * * @type {null|ContextManager} */ this.ctxMng = null; } /** * @returns {*} */ Context.prototype.getContext = function (key) { var ctx = this; var res; while (ctx && !res){ if (ctx.ctxMng) { res = ctx.ctxMng.get(key); } ctx = ctx.parent; } return res; }; /** * @param {string} key * @param {*} value * @returns {*} */ Context.prototype.setContext = function (key, value) { return this.getContextManager().set(key, value); }; /** * @returns {ContextManager} */ Context.prototype.getContextManager = function () { var ctx = this; var res; while (ctx && !res){ if (ctx.ctxMng) { res = ctx.ctxMng; } ctx = ctx.parent; } return res; }; /** * @param {Context} parent */ Context.prototype.attach = function (parent) { //stop before attach to new context this.stop(); /** * @type {Application} */ this.parent = parent; this.onAttached && this.onAttached(); }; Context.prototype.detach = function () { this.stop(); this.onDetached && this.onDetached(); this.parent = null; }; Context.prototype.pause = function () { if (this.state.match(/RUNNING|PAUSE/)) { if (this.state === "RUNNING"){ this.state = "PAUSE"; this.onPause && this.onPause(); } } else { console.warn(this, "NOT RUNNING"); } }; Context.prototype.resume = function () { if (!this.state.match(/STANDBY|PAUSE|RUNNING/)) { console.error(this, 'NOT READY!', this.state); return; } if (this.state === "RUNNING") return; this.state = "RUNNING"; this.onResume && this.onResume(); }; Context.prototype.start = function () { if (this.state.match(/DIE/)) { console.error(this, 'DIED!'); return; } if (this.state.match(/RUNNING/)) return; if (this.state.match(/STOP|CREATE/)) { this.state = "STANDBY"; this.onStart && this.onStart(); } if (this.state.match(/STANDBY|PAUSE/)) { this.resume(); } }; Context.prototype.stop = function () { if (this.state.match(/STOP|DIE|CREATE/)) return; if (this.state.match(/RUNNING/)) this.pause(); this.state = "STOP"; this.onStop && this.onStop(); }; Context.prototype.destroy = function () { if (this.state.match(/DIE/)) return; if (this.state.match(/RUNNING|PAUSE/)) this.stop(); this.state = "DIE"; this.onDestroy && this.onDestroy(); }; Context.prototype.onDestroy = noop["a" /* default */]; Context.prototype.onStop = noop["a" /* default */]; Context.prototype.onStart = noop["a" /* default */]; Context.prototype.onResume = noop["a" /* default */]; Context.prototype.onPause = noop["a" /* default */]; Context.prototype.onDetached = noop["a" /* default */]; Context.prototype.onAttached = noop["a" /* default */]; /* harmony default export */ var AppPattern_Context = (Context); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Activity.js //NOTE: !impotant : don't make setter, getter for activity, just code like JAVA /** * @class */ function Activity() { AppPattern_Context.call(this); } Object.defineProperties(Activity.prototype, Object.getOwnPropertyDescriptors(AppPattern_Context.prototype)); Activity.prototype.constructor = Activity; Activity.prototype.startActivity = function (activity) { if (this.parent) { this.parent.startActivity(activity); } else { } }; Activity.prototype.finish = function () { if (this.parent) { this.parent.stopActivity(this); } else { } }; /* harmony default export */ var AppPattern_Activity = (Activity); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/ContextManager.js function ContextManager(){ this.__contextData__ = {}; } /** * @param {String} key * @returns {*} */ ContextManager.prototype.get = function(key){ return this.__contextData__[key]; }; /** * @param {String} key * @param {*} value * @returns {Context} */ ContextManager.prototype.set = function(key, value){ this.__contextData__[key] = value; return this; }; ContextManager.prototype.assign = function(obj){ Object.assign(this.__contextData__, obj); return this; }; ContextManager.prototype.remove = function(key){ delete this.__contextData__[key]; return this; }; ContextManager.prototype.contains = function(key){ return (key in this.__contextData__); }; /* harmony default export */ var AppPattern_ContextManager = (ContextManager); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Application.js /** * @class */ function Application() { AppPattern_Context.call(this); this.activityStack = []; /** @type {Activity} */ this.currentActivity = null; } Object.defineProperties(Application.prototype, Object.getOwnPropertyDescriptors(AppPattern_Context.prototype)); Application.prototype.constructor = Application; /** * @param {Activity} activity */ Application.prototype.startActivity = function (activity) { if (this.currentActivity != null) { this.currentActivity.pause(); this.activityStack.push(this.currentActivity); } this.currentActivity = activity; this.appendChild(activity); activity.attach(this); this.setContentView(activity.getView(), true); activity.start(); }; /** * @param {Activity} activity */ Application.prototype.stopActivity = function (activity) { if (this.currentActivity == activity) { if (this.activityStack.length == 0) { //todo } else { activity.detach(); this.removeChild(this.currentActivity); this.currentActivity = this.activityStack.pop(); this.setContentView(this.currentActivity.getView()); this.currentActivity.resume(); } } else { console.error("NOT ON TOP ACTIVITY"); } }; /** * @param {HTMLElement} view */ Application.prototype.setContentView = function (view, overlay) { throw new Error("Not Implement!"); }; Application.prototype.backToTopActivity = function () { while (this.activityStack.length > 0) { this.currentActivity.stop(); this.currentActivity = this.activityStack.pop(); } this.setContentView(this.currentActivity.getView()); this.currentActivity.resume(); }; /* harmony default export */ var AppPattern_Application = (Application); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/VarScope.js function VarScope(parent) { this.parent = parent; this.data = {}; } VarScope.prototype.declare = function (name, initValue) { if (name in this.data) throw new Error(name + ' is already delared in this scope!'); this.data[name] = initValue; }; VarScope.prototype.get = function (name) { var scope = this.findScope(name); if (!scope) throw new Error(name + ' is not declared!'); return scope.data[name]; }; VarScope.prototype.set = function (name, value) { var scope = this.findScope(name); if (!scope) throw new Error(name + ' is not declared!'); scope.data[name] = value; }; VarScope.prototype.findScope = function (name) { var currentScope = this; while (currentScope) { if (name in currentScope.data) break; currentScope = currentScope.parent; } return currentScope; }; /* harmony default export */ var AppPattern_VarScope = (VarScope); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/GrandContext.js /*** * @extends Context * @constructor */ function GrandContext(){ AppPattern_Context.call(this); this.ctxMng = new AppPattern_ContextManager(); } OOP["a" /* default */].mixClass(GrandContext, AppPattern_Context); /* harmony default export */ var AppPattern_GrandContext = (GrandContext); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Fragment.js /*** * @extends GrandContext * @constructor */ function Fragment() { AppPattern_GrandContext.call(this); } OOP["a" /* default */].mixClass(Fragment, AppPattern_GrandContext); Fragment.prototype.createView = function () { throw new Error("Not implement!"); }; Fragment.prototype.getView = function () { if (this.$view) return this.$view; this.$view = this.createView() || this.$view; if (!this.$view) throw new Error("this.$view must be not null!"); if (this.onCreated) this.onCreated(); return this.$view; }; Fragment.prototype.onCreated = noop["a" /* default */]; /* harmony default export */ var AppPattern_Fragment = (Fragment); // CONCATENATED MODULE: ./node_modules/absol/src/Math/Vec2.js /*** * * @param {Number} x * @param {Number} y * @constructor */ function Vec2(x, y) { this.x = x; this.y = y; } /*** * * @returns {Vec2} */ Vec2.prototype.copy = function () { return new Vec2(this.x, this.y); }; /*** * * @returns {string} */ Vec2.prototype.toString = function () { return "(" + this.x + ", " + this.y + ")"; }; /*** * * @returns {number} */ Vec2.prototype.abs = function () { return Math.sqrt(this.x * this.x + this.y * this.y); }; /*** * * @returns {Vec2} */ Vec2.prototype.normalized = function () { var l = this.abs(); if (l == 0) l = 1; return this.div(l); }; /*** * * @param {number} h * @returns {Vec2} */ Vec2.prototype.mult = function (h) { return new Vec2(this.x * h, this.y * h); }; /*** * * @param {number} h * @returns {Vec2} */ Vec2.prototype.div = function (h) { return new Vec2(this.x / h, this.y / h); }; /*** * * @param v * @returns {number} */ Vec2.prototype.dist = function (v) { var dx = v.x - this.x; var dy = v.y - this.y; return Math.sqrt(dx * dx + dy * dy); }; /*** * * @param {Vec2} v * @returns {Vec2} */ Vec2.prototype.sub = function (v) { return new Vec2(this.x - v.x, this.y - v.y); }; /*** * * @param {Vec2} v * @returns {Vec2} */ Vec2.prototype.add = function (v) { return new Vec2(this.x + v.x, this.y + v.y); }; /*** * * @returns {Vec2} */ Vec2.prototype.inv = function () { return new Vec2(-this.x, -this.y); }; /*** * * @param {Vec2} v * @param {number} h * @returns {Vec2} */ Vec2.prototype.linear = function (v, h) { return new Vec2(this.x * (1 - h) + v.x * h, this.y * (1 - h) + v.y * h); }; /*** * * @param {Vec2} v1 * @returns {number} */ Vec2.prototype.dot = function (v1) { return this.x * v1.x + this.y * v1.y; }; /*** * * @returns {number} */ Vec2.prototype.direction = function () { return Math.atan2(this.y, this.x); }; /*** * * @param {Number} dx * @param {Number} dy */ Vec2.prototype.translate = function (dx, dy) { return this.add(new Vec2(dx, dy)); }; /**** * * @param {Number} angle - radian * @returns {Vec2} */ Vec2.prototype.rotate = function (angle) { var sinA = Math.sin(angle); var cosA = Math.cos(angle); var x = this.x * cosA - this.y * sinA; var y = this.x * sinA + this.y * cosA; return new Vec2(x, y); }; /*** * * @returns {Vec2} */ Vec2.prototype.rotate90 = function () { return new Vec2(-this.y, this.x); }; /*** * * @param {number} angle * @returns {Vec2} */ Vec2.fromDirection = function (angle) { return new Vec2(Math.cos(angle), Math.sin(angle)); }; /*** * * @param x * @param y * @returns {Vec2} */ Vec2.make = function (x, y) { if (x instanceof Array) { return new Vec2(x[0], x[1]); } else if (x instanceof Vec2) { return x.copy(); } else return new Vec2(x, y); }; /* harmony default export */ var Math_Vec2 = (Vec2); // CONCATENATED MODULE: ./node_modules/absol/src/Math/Rectangle.js /** * * @param {Number} x * @param {Number} y * @param {Number} width * @param {Number} height */ function Rectangle(x, y, width, height) { this.width = width; this.height = height; this.x = x; this.y = y; } /** * * @return {Vec2} * @constructor */ Rectangle.prototype.A = function () { return new Math_Vec2(this.x, this.y); }; /*** * * @return {Vec2} * @constructor */ Rectangle.prototype.B = function () { return new Math_Vec2(this.x + this.width, this.y); }; /*** * * @return {Vec2} * @constructor */ Rectangle.prototype.C = function () { return new Math_Vec2(this.x + this.width, this.y + this.height); }; /*** * * @return {Vec2} * @constructor */ Rectangle.prototype.D = function () { return new Math_Vec2(this.x, this.y + this.height); }; /*** * * @return {number} */ Rectangle.prototype.square = function () { return this.width * this.height; }; Rectangle.prototype.nearestPoint = function (arg0, arg1) { if (arg1) arg0 = Math_Vec2.make(arg0, arg1); var res = this.A(); var mind = res.dist(arg0); var d = this.B().dist(arg0); if (d < mind) { mind = d; res = this.B(); } d = this.C().dist(arg0); if (d < mind) { mind = d; res = this.C(); } d = this.D().dist(arg0); if (d < mind) { mind = d; res = this.D(); } return res; }; Rectangle.prototype.centerPoint = function () { return new Math_Vec2(this.x + this.width / 2, this.y + this.height / 2); }; /*** * * @param {Rectangle} r * @param {boolean} margin * @return {boolean} */ Rectangle.prototype.isCollapse = function (r, margin) { if (!margin) margin = 0; if (this.x >= r.x + r.width + margin) return false; if (this.y >= r.y + r.height + margin) return false; if (r.x >= this.x + this.width + margin) return false; if (r.y >= this.y + this.height + margin) return false; return true; }; /*** * * @param {Rectangle} r * @return {number} */ Rectangle.prototype.collapsedSquare = function (r) { var collapseRect = this.collapsedRect(r); if (collapseRect) { return collapseRect.square(); } else { return 0; } }; /*** * * @param {Rectangle} r * @return {Rectangle} */ Rectangle.prototype.collapsedRect = function (r) { var maxX, minX, maxY, minY, width, height; minX = Math.max(this.x, r.x); minY = Math.max(this.y, r.y); maxX = Math.min(this.x + this.width, r.x + r.width); maxY = Math.min(this.y + this.height, r.y + r.height); width = maxX - minX; height = maxY - minY; if (width >= 0 && height >= 0) { return new Rectangle(minX, minY, width, height); } return null; }; /** * @param {Rectangle} r * @returns {Boolean} */ Rectangle.prototype.contains = function (r) { return (this.x <= r.x) && (this.y <= r.y) && (this.x + this.width >= r.x + r.width) && (this.y + this.height >= r.y + r.height); }; /** * @param {Vec2} p * @returns {Boolean} */ Rectangle.prototype.containsPoint = function (p) { return (this.x <= p.x) && (this.y <= p.y) && (this.x + this.width >= p.x) && (this.y + this.height >= p.y); }; /** * @param {Rectangle} other * @returns {Rectangle} */ Rectangle.prototype.merge = function (other) { var left = Math.min(this.x, other.x); var top = Math.min(this.y, other.y); var right = Math.max(this.x + this.width, other.x + other.width); var bottom = Math.max(this.y + this.height, other.y + other.height); return new Rectangle(left, top, right - left, bottom - top); }; /** * @returns {Rectangle} */ Rectangle.prototype.clone = function () { return new Rectangle(this.x, this.y, this.width, this.height); }; /*** * * @param {Rectangle} r */ Rectangle.prototype.equals = function (r) { return this.x == r.x && this.y == r.y && this.height == r.height && this.width == r.width; }; /** * @param {Number} x * @param {Number} y * @param {Number} width * @param {Number} height * @returns {Rectangle} */ Rectangle.make = function (x, y, width, height) { return new Rectangle(x, y, width, height); }; /** * @param {Number} x * @param {Number} y * @param {Number} width * @param {Number} height * @returns {Rectangle} */ Rectangle.makeCenter = function (x, y, width, height) { return new Rectangle(x - width / 2, y - height / 2, width, height); }; /** * @param {ClientRect|DOMRect} clientRect * @returns {Rectangle} */ Rectangle.fromClientRect = function (clientRect) { return new Rectangle(clientRect.left, clientRect.top, clientRect.width, clientRect.height); }; /* harmony default export */ var Math_Rectangle = (Rectangle); // CONCATENATED MODULE: ./node_modules/absol/src/Math/int.js /** * * @param {number} x * @param {number} l * @param {number} h * @param {number} L * @param {number} H * @returns {number} */ function int_map(x, l, h, L, H) { return (x - l) / (h - l) * (H - L) + L; } function sumArr(arr) { var res = 0; for (var i = 0; i < arr.length; ++i) res += arr[i]; return res; } function radianInRange(x, start, end) { if (start > end) return radianInRange(x, end, start); if (x < start) x += (Math.PI * 2) * Math.ceil((start - x) / 2 / Math.PI); if (x > end) x -= (Math.PI * 2) * Math.ceil((x - end) / 2 / Math.PI); return x >= start && x <= end; } function int_distance(x0, y0, x1, y1) { var dx = x0 - x1; var dy = y0 - y1; return Math.sqrt(dx * dx + dy * dy); } /** * * @param {Number} numb * @param {Number} floatFixed * @param {"."|","} decimalSeparator * @param {","|"."} thousandsSeparator * @param {Number} decimalPadding */ function numberToString(numb, floatFixed, decimalSeparator, thousandsSeparator, decimalPadding) { if (floatFixed === undefined || floatFixed === null || typeof floatFixed != "number" || isNaN(floatFixed) || floatFixed < -1) floatFixed = -1; if (decimalSeparator === undefined || decimalSeparator === null || (decimalSeparator != '.' && decimalSeparator != ',')) decimalSeparator = '.'; if (thousandsSeparator === undefined || thousandsSeparator === null || (floatFixed >= 0 && thousandsSeparator == decimalSeparator)) thousandsSeparator = undefined; if (thousandsSeparator != ',' && thousandsSeparator != '.') thousandsSeparator = undefined; if (decimalPadding === undefined || decimalPadding === null || typeof decimalPadding != "number" || isNaN(decimalPadding) || decimalPadding < 0) decimalPadding = 0; var text = numb.toString(); var matched = text.match(/[+-]?([0-9]*)(\.([0-9]*))?(e([+-]?[0-9]+))?/); var dec = matched[1] || ''; var real = matched[3] || ''; var floatPoint = parseInt(matched[5] || '0'); var decDigits = dec.split('').map(function (d) { return parseInt(d) }); var realDigits = real.split('').map(function (d) { return parseInt(d) }); while (floatPoint < 0) { if (decDigits.length > 0) { realDigits.unshift(decDigits.pop()); } else { realDigits.unshift(0); } floatPoint++; } while (floatPoint > 0) { if (realDigits.length > 0) { decDigits.push(realDigits.unshift()); } else { decDigits.push(0); } floatPoint++; } var mem = 0, i, cValue; if (floatFixed > realDigits.length) { while (realDigits.length < floatFixed) { realDigits.push(0); } } else if (floatFixed < realDigits.length && floatFixed >= 0) { i = floatFixed; mem = realDigits[i] >= 5 ? 1 : 0; realDigits.splice(floatFixed); --i; while (mem > 0) { if (i >= 0) { cValue = realDigits[i] + mem; realDigits[i] = cValue % 10; mem = Math.floor(cValue / 10); } else { if (decDigits.length + i < 0) decDigits.unshift(0); cValue = decDigits[decDigits.length + i] + mem; decDigits[decDigits.length + i] = cValue % 10; mem = Math.floor(cValue / 10); } --i; } } while (decDigits.length < decimalPadding) { decDigits.unshift(0); } var decText = numb < 0 ? '-' : ''; var breadMod = (decDigits.length + 2) % 3; if (thousandsSeparator) { for (i = 0; i < decDigits.length; ++i) { decText += decDigits[i]; if (i % 3 == breadMod && i + 1 < decDigits.length) { decText += thousandsSeparator; } } } else { decText += decDigits.join(''); } var realText = realDigits.length == 0 ? '' : decimalSeparator + realDigits.join(''); return decText + realText; } function numberAutoFixed(x, eDelta) { eDelta = eDelta || 10; eDelta = Math.round(eDelta); var e = parseFloat('1e+' + eDelta); return Math.round(x * e) / e; } function harmonicMean(a, b) { return 2 / (1 / a + 1 / b); } // CONCATENATED MODULE: ./node_modules/absol/src/Math/Arc.js function Arc(x, y, r, start, end) { this.x = x; this.y = y; this.r = r; this.start = start; this.end = end; } Arc.prototype.isPointInBound = function (p) { if (int_distance(this.x, this.y, p.x, p.y) > r) return false; return radianInRange(Math.atan2(p.y - this.y, p.x - this.x), start, end); }; Arc.prototype.isRectInBound = function (rect) { return this.isPointInBound(rect.A()) && this.isPointInBound(rect.B()) && this.isPointInBound(rect.C()) && this.isPointInBound(rect.D()); }; Arc.prototype.isRectOutBound = function (rect) { return !this.isPointInBound(rect.A()) && !this.isPointInBound(rect.B()) && !this.isPointInBound(rect.C()) && !this.isPointInBound(rect.D()); }; Arc.prototype.isRectCollapse = function (rect) { return this.isPointInBound(rect.A()) || this.isPointInBound(rect.B()) || this.isPointInBound(rect.C()) || this.isPointInBound(rect.D()); }; Arc.prototype.centerPoint = function () { var mid = (this.start + this.end) / 2; var x = this.x + Math.cos(mid) * this.r * 2 / 3; var y = this.y + Math.sin(mid) * this.r * 2 / 3; return new Math_Vec2(x, y); }; Arc.prototype.centerRoundPoint = function () { var mid = (this.start + this.end) / 2; var x = this.x + Math.cos(mid) * this.r; var y = this.y + Math.sin(mid) * this.r; return new Math_Vec2(x, y); }; Arc.make = function (x, y, r, start, end) { return new Arc(x, y, r, start, end); }; /* harmony default export */ var Math_Arc = (Arc); // CONCATENATED MODULE: ./node_modules/absol/src/Math/NumRange.js /** * * @param {Number} start */ function NumRange(start, length) { if (arguments.length == 1) length = 0; else if (arguments.length == 0) { length = 0; start = 0; } this.start = start; this.length = length; } /** * @param {Number} num */ NumRange.prototype.contains = function (num) { return (num >= this.start) && (num <= this.start + this.length); }; /** * @param {NumRange} other * @returns {NumRange} */ NumRange.prototype.merge = function (other) { var start = Math.min(this.start, other.start); var end = Math.max(this.start + this.length, other.start + other.length); return new NumRange(start, end - start); }; NumRange.prototype.centerValue = function () { return this.start + this.length / 2; }; /** * @param {NumRange} other * @returns {Boolean} */ NumRange.prototype.isCollapse = function (other) { var start = Math.max(this.start, other.start); var end = Math.min(this.start + this.length, other.start + other.length); return start <= end; }; /** * @param {NumRange} other * @returns {Boolean} */ NumRange.prototype.collapsedNumRange = function (other) { var start = Math.max(this.start, other.start); var end = Math.min(this.start + this.length, other.start + other.length); if (start <= end) return new NumRange(start, end - start); return null; }; NumRange.prototype.clone = function () { return new NumRange(this.start, this.length); }; /* harmony default export */ var Math_NumRange = (NumRange); // CONCATENATED MODULE: ./node_modules/absol/src/HTML5/Clipboard.js function copyImage(src) { var ranges, sel; if (window.getSelection) { sel = window.getSelection(); //backup ranges = []; for (var i = 0; i < sel.rangeCount; ++i) { ranges.push(sel.getRangeAt(i)); } //copy var contentdiv = document.createElement('div'); var image = document.createElement('img'); contentdiv.appendChild(image); image.src = src; contentdiv.contentEditable = true; // contentdiv.style.display = 'none'; document.body.appendChild(contentdiv); var range = document.createRange(); range.selectNodeContents(image); sel.removeAllRanges(); sel.addRange(range); document.execCommand('copy'); // contentdiv.remove(); //recover sel.removeAllRanges(); for (var i = 0; i < sel.rangeCount; ++i) { sel.addRange(ranges[i]); } } else { console.error("Not support copy!") //not support IE } } function fallbackCopyTextToClipboard(text) { return new Promise(function (resolve, reject) { var textArea = document.createElement("textarea"); textArea.value = text; // Avoid scrolling to bottom textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); if (successful) { resolve(); } else { reject(); } } catch (err) { reject(err); } document.body.removeChild(textArea); }); } function copyText(text) { if (!navigator.clipboard) { return fallbackCopyTextToClipboard(text); } return navigator.clipboard.writeText(text); } // CONCATENATED MODULE: ./node_modules/absol/src/DataStructure/Heap.js function defaultCmp(x, y) { if (x < y) { return -1; } if (x > y) { return 1; } return 0; }; /** * * @param {Array} arr * @param {Number} pos * @param {Function} cmp */ function heapDown(arr, pos, cmp) { if (!cmp) cmp = defaultCmp; var item = arr[pos]; var endPos = arr.length; var childPos = (pos << 1) | 1; var childRightPos; while (childPos < endPos) { childRightPos = childPos + 1; if (childPos + 1 < endPos && cmp(arr[childPos], arr[childRightPos]) > 0) { childPos = childRightPos; } if (cmp(arr[childPos], item) < 0) { arr[pos] = arr[childPos]; arr[childPos] = item; pos = childPos; childPos = (pos << 1) | 1; } else break; } } /** * * @param {Array} arr * @param {Number} pos * @param {Function} cmp */ function heapUp(arr, pos, cmp) { if (!cmp) cmp = defaultCmp; var item = arr[pos]; var parPos; while (pos > 0) { parPos = (pos - 1) >> 1; if (cmp(arr[parPos], item) > 0) { arr[pos] = arr[parPos]; arr[parPos] = item; pos = parPos; } else break; } } /** * * @param {Array} arr * @param {Function} cmp */ function heapify(arr, cmp) { if (!cmp) cmp = defaultCmp; var endPos = arr.length; for (var i = 0; i < endPos; ++i) heapUp(arr, i, cmp); } /** * * @param {Array} arr * @param {Function} cmp */ function heapPop(arr, cmp) { if (!cmp) cmp = defaultCmp; var item = arr[0]; var lastItem = arr.pop(); if (arr.length > 0) { arr[0] = lastItem; heapDown(arr, 0, cmp); } return item; } /** * * @param {Array} arr * @param {*} item * @param {Function} cmp */ function heapPush(arr, item, cmp) { if (!cmp) cmp = defaultCmp; arr.push(item); heapUp(arr, arr.length - 1, cmp); } function Heap(cmd) { this.cmp = cmd || defaultCmp; this.arr = []; } /** * @param {Array} arr * @param {Function} cmp * @returns {Heap} */ Heap.fromArray = function (arr, cmp) { var heap = new Heap(cmp); heapify(arr); heap.arr = arr; return heap; }; Heap.prototype.push = function (x) { heapPush(this.arr, x, this.cmp); return this; }; Heap.prototype.pop = function () { return heapPop(this.arr, this.cmp); }; Heap.prototype.peek = function () { return this.arr[0]; }; Heap.prototype.contains = function (x) { return this.arr.indexOf(x) !== -1; }; Heap.prototype.clear = function () { this.arr.splice(0, this.arr.length); return this; }; Heap.prototype.empty = function () { return this.arr.length === 0; }; Heap.prototype.size = function () { return this.arr.length; }; Heap.prototype.clone = function () { var heap; heap = new Heap(this.cmp); heap.arr = this.arr.slice(0); return heap; }; Heap.prototype.toArray = function () { return this.arr.slice(0); }; Heap.prototype.toSortedArray = function () { var res = []; var heap = this.clone(); while (!heap.empty()) res.push(heap.pop()); return res; }; Heap.prototype.insert = Heap.prototype.push; Heap.prototype.top = Heap.prototype.peek; Heap.prototype.front = Heap.prototype.peek; Heap.prototype.has = Heap.prototype.contains; Heap.prototype.copy = Heap.prototype.clone; /* harmony default export */ var DataStructure_Heap = (Heap); // CONCATENATED MODULE: ./node_modules/absol/src/Time/datetime.js var MILLIS_PER_DAY = 24 * 3600000; var MILLIS_PER_HOUR = 3600000; var MILLIS_PER_MINUTE = 60000; /** * * @param {Date} date * @returns {String} */ function ddmmyyyy(date) { var mm = date.getMonth() + 1; // getMonth() is zero-based var dd = date.getDate(); return [(dd > 9 ? '' : '0') + dd, (mm > 9 ? '' : '0') + mm, date.getFullYear() ].join('/'); }; /** * * @param {Date} date * @returns {String} */ function yyymmdd(date) { var mm = date.getMonth() + 1; // getMonth() is zero-based var dd = date.getDate(); return [ date.getFullYear(), (mm > 9 ? '' : '0') + mm, (dd > 9 ? '' : '0') + dd ].join('/'); }; var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; var shortDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var shortMonthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var formatTokenRegex = /([,\.\-\/])|([a-zA-Z0-9]+)/g;//more /** * * @param {Date} date * @param {String} format * @returns {String} */ function formatDateString(date, format) { format = format || 'dd/mm/yyyy'; var dt = date.getDate(); var day = date.getDay(); var month = date.getMonth(); var year = date.getFullYear() return format.replace(formatTokenRegex, function (x) { switch (x) { case "dddd": return dayNames[day]; case "ddd": return shortDayNames[day]; case "dd": return dt < 10 ? '0' + dt : '' + dt; case "d": return '' + dt; case "mmmm": return monthNames[month]; case "mmm": return shortMonthNames[month]; case "mm": return (month + 1) < 10 ? '0' + (month + 1) : '' + (month + 1); case "m": return '' + (month + 1); case 'yy': return (year + '').match(/..$/)[0]; case 'yyyy': return year + ''; default: return x; } }); } function formartDateString(){ window.ALogger.warn("spelled incorrectly: formartDateString"); return formatDateString.apply(null, arguments); } /** * * @param {String} text * @param {String} format * @returns {String} */ function parseDateString(text, format) { text = nonAccentVietnamese(text).toLowerCase(); format = nonAccentVietnamese(format).toLowerCase(); var textTokens = text.match(formatTokenRegex) || []; var formatTokens = format.match(formatTokenRegex) || []; var year = NaN; var month = NaN; var day = NaN; var n = Math.min(textTokens.length, formatTokens.length); var textToken; var formatToken; for (var i = 0; i < n; ++i) { textToken = textTokens[i]; formatToken = formatTokens[i]; switch (formatToken) { case "dd": day = parseInt(textToken); break; case "d": day = parseInt(textToken); break; case "mmmm": month = monthNames.indexOf(textToken.substr(0, 1).toUpperCase() + textToken.substr(1).toLowerCase()); break; case "mmm": month = shortMonthNames.indexOf(textToken.substr(0, 1).toUpperCase() + textToken.substr(1).toLowerCase()); break; case "mm": month = parseInt(textToken) - 1; break; case "m": month = parseInt(textToken) - 1; break; case 'yy': year = Math.floor((new Date().getFullYear()) / 100) * 100 + parseInt(textToken); break; case 'yyyy': year = parseInt(textToken); break; default: if (textToken != formatToken) throw new Error('Unexpected token ' + textToken); } } if (isNaN(year)) throw new Error('Invalid year'); if (isNaN(month) && month != -1) { throw new Error('Invalid month'); } else { month = Math.max(0, Math.min(11, month)); } if (!isNaN(day)) { day = Math.max(1, Math.min(31, day)); if (!isNaN(month)) { day = Math.min(daysInMonth(2000, month), day); if (!isNaN(year)) day = Math.min(daysInMonth(year, month), day); } } else { throw new Error('Invalid day'); } return new Date(year, month, day, 0, 0, 0, 0); } /** * @param {Date} date * @return {Date} */ function prevDate(date) { return new Date(date.getTime() - 86400000); }; /** * @param {Date} date * @return {Date} */ function nextDate(date) { return new Date(date.getTime() + 86400000); }; /** * @param {Date} date * @return {Date} date at 00:00 */ function beginOfHour(date) { var res = new Date(date.getTime()); res.setMilliseconds(0); res.setSeconds(0); res.setMinutes(0); return res; }; /** * @param {Date} date * @param {Boolean} gmt default:false * @return {Date} date at 00:00 */ function beginOfDay(date, gmt) { var res = new Date(date.getTime()); res.setMilliseconds(0); res.setSeconds(0); res.setMinutes(0); if (gmt) res.setUTCHours(0); else res.setHours(0); return res; }; /** * @param {Date} date * @param {Boolean} gmt default:false * @return {Date} date at 00:00 */ function beginOfWeek(date, gmt, begin) { begin = begin || 0; var res = beginOfDay(date, gmt); while ((gmt ? res.getUTCDay() : res.getDay()) != begin) { res = prevDate(res); } return res; }; /** * @param {Date} date * @param {Boolean} gmt default:false * @return {Date} date at 00:00 AM */ function datetime_beginOfMonth(date, gmt) { gmt = !!gmt; var d = gmt ? date.getUTCDate() : date.getDate(); var m = gmt ? date.getUTCMonth() : date.getMonth(); var y = gmt ? date.getUTCFullYear() : date.getFullYear(); var res = new Date(); if (gmt) res.setUTCFullYear(y, m, 1); else res.setFullYear(y, m, 1); return beginOfDay(res, gmt); }; /** * @param {Date} date * @param {Boolean} gmt default:false * @return {Date} date at 00:00 AM */ function beginOfYear(date, gmt) { gmt = !!gmt; var d = gmt ? date.getUTCDate() : date.getDate(); var m = gmt ? date.getUTCMonth() : date.getMonth(); var y = gmt ? date.getUTCFullYear() : date.getFullYear(); var res = new Date(); if (gmt) res.setUTCFullYear(y, 0, 1); else res.setFullYear(y, 0, 1); return beginOfDay(res, gmt); }; /** * @param {Date} date0 * @param {Date} date1 * @param {Boolean} gmt default:false * @return {number} */ function compareDate(date0, date1, gmt) { var date0 = beginOfDay(date0, !!gmt); var date1 = beginOfDay(date1, !!gmt); return (date0.getTime() - date1.getTime()) / (86400000); }; /** * @param {Date} date0 * @param {Date} date1 * @param {Boolean} gmt default:false * @return {number} */ function compareMonth(date0, date1, gmt) { gmt = !!gmt; var m0 = gmt ? date0.getUTCMonth() : date0.getMonth(); var y0 = gmt ? date0.getUTCFullYear() : date0.getFullYear(); var m1 = gmt ? date1.getUTCMonth() : date1.getMonth(); var y1 = gmt ? date1.getUTCFullYear() : date1.getFullYear(); return (y0 - y1) * 12 + (m0 - m1); }; function compareYear(date0, date1, gmt) { gmt = !!gmt; var y0 = gmt ? date0.getUTCFullYear() : date0.getFullYear(); var y1 = gmt ? date1.getUTCFullYear() : date1.getFullYear(); return y0 - y1; }; /** * * @param {Date} date * @returns {Date} */ function nextMonth(date) { var m = date.getMonth(); var y = date.getFullYear(); if (m == 11) { return new Date(y + 1, 0, 1, 0, 0, 0, 0); } else { return new Date(y, m + 1, 1, 0, 0, 0, 0); } } /** * * @param {Date} date * @returns {Date} */ function prevMonth(date) { var m = date.getMonth(); var y = date.getFullYear(); if (m == 0) { return new Date(y - 1, 11, 1, 0, 0, 0, 0); } else { return new Date(y, m - 1, 1, 0, 0, 0, 0); } } /** * * @param {Number} year * @param {Number} month * @returns {Number} */ function daysInMonth(year, month) { var start = new Date(year, month, 1); var end = nextMonth(start); return compareDate(end, start); } // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/CMDRunner.js function CMDRunner(_this, commands) { this._this = _this; this.commands = {}; this.assign(commands); } CMDRunner.prototype.has = function (cmdName) { return !!this.commands[cmdName]; }; CMDRunner.prototype.add = function (cmdName, handler) { this.commands[cmdName] = handler; return this; }; CMDRunner.prototype.remove = function (cmdName) { delete this.commands[cmdName]; return this; }; CMDRunner.prototype.assign = function (obj) { for (var cmdName in obj) { if (typeof obj[cmdName] == 'function') { this.add(cmdName, obj[cmdName]); } } }; CMDRunner.prototype.invoke = function () { if (this.commands[arguments[0]]) { var args = Array.prototype.slice.call(arguments, 1); return this.commands[arguments[0]].apply(this._this, args); } else { throw new Error('No command: ' + arguments[0]); } }; /* harmony default export */ var AppPattern_CMDRunner = (CMDRunner); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Element.js var Element = __webpack_require__(10); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElementNS.js var AElementNS = __webpack_require__(17); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElement.js var AElement = __webpack_require__(6); // CONCATENATED MODULE: ./node_modules/absol/src/HTML5/DomSignal.js /*** * * @extends EventEmitter * @param {AElement} attachHookElt * @constructor */ function DomSignal(attachHookElt) { EventEmitter["b" /* default */].call(this); this.signals = {}; this.ev_attached = this.ev_attached.bind(this); this.$attachhook = attachHookElt || Dom["b" /* default */].ShareInstance._('attachhook'); this.$attachhookParent = (attachHookElt && attachHookElt.parentElement) || null; this.$attachhook.on('attached', this.ev_attached); } Object.defineProperties(DomSignal.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); DomSignal.prototype.constructor = DomSignal; DomSignal.prototype.execSignal = function () { var signals = this.signals; if (this.$attachhook) { this.$attachhook.remove(); this.$attachhook.resetState(); } this.signals = {}; for (var name in signals) { this.fire.apply(this, [name].concat(signals[name])); } }; DomSignal.prototype.emit = function (name) { this.signals[name] = Array.prototype.slice.call(arguments, 1); if (!this.$attachhookParent) { this.$attachhookParent = document.body; } if (!this.$attachhook.parentElement) { this.$attachhookParent.appendChild(this.$attachhook); } }; DomSignal.prototype.ev_attached = function () { this.execSignal(); }; /* harmony default export */ var HTML5_DomSignal = (DomSignal); // CONCATENATED MODULE: ./node_modules/absol/src/Cookie/CookieStore.js function CookieStore(converter) { this.converter = converter || UnicodeBase64Converter; } CookieStore.prototype.isEnabled = function () { var cookieEnabled = !!navigator.cookieEnabled; //if not IE4+ nor NS6+ if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) { document.cookie = "testcookie_enabled"; cookieEnabled = document.cookie.indexOf("testcookie_enabled") != -1; } return cookieEnabled; }; CookieStore.prototype.secure = function () { document.cookie = "secure"; }; CookieStore.prototype.get = function (key) { var bkey = this.converter.encode(key).replace(/=/g, '_'); var pairs = document.cookie.split(';') .map(function (text) { return text.split('=') }) .filter(function (pair) { return pair[0].trim() == bkey; }); if (pairs.length > 0) { if (pairs[0].length > 1) { var bvalue = pairs[0][1]; return this.converter.decode(bvalue.replace(/_/g, '=').trim()); } else { return true; } } else return undefined; }; CookieStore.prototype.set = function (key, value) { var bkey = this.converter.encode(key); var bvalue = this.converter.encode(value); document.cookie = bkey.replace(/=/g, '_') + "=" + bvalue.replace(/=/g, '_'); }; /* harmony default export */ var Cookie_CookieStore = (new CookieStore()); // CONCATENATED MODULE: ./node_modules/absol/src/Cookie/parseCookieString.js /*** * * @param {string} text * @return {{}} */ function parseCookieString(text) { return text.split(/\s*;\s*/).reduce(function (ac, item) { var tokens = item.split('='); var name = (tokens.shift() || '').trim(); if (!name) return ac; var value = (tokens.shift() || '').trim(); if (!value) value = true; ac[name] = value; return ac; }, {}); } // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/ResizeSystem.js var ResizeSystem = __webpack_require__(9); // CONCATENATED MODULE: ./node_modules/absol/src/Math/Mat3.js function Mat3(data) { this.data = data || Array(6).fill(0); } Mat3.identity = function () { return new Mat3([1, 0, 0, 0, 1, 0, 0, 0, 1]); }; /** * * @returns {Mat3|null} */ Mat3.prototype.invert = function () { var a = this.data; var out = Array(9); var a00 = a[0], a01 = a[1], a02 = a[2]; var a10 = a[3], a11 = a[4], a12 = a[5]; var a20 = a[6], a21 = a[7], a22 = a[8]; var b01 = a22 * a11 - a12 * a21; var b11 = -a22 * a10 + a12 * a20; var b21 = a21 * a10 - a11 * a20; // Calculate the determinant var det = a00 * b01 + a01 * b11 + a02 * b21; if (!det) return null; det = 1.0 / det; out[0] = b01 * det; out[1] = (-a22 * a01 + a02 * a21) * det; out[2] = (a12 * a01 - a02 * a11) * det; out[3] = b11 * det; out[4] = (a22 * a00 - a02 * a20) * det; out[5] = (-a12 * a00 + a02 * a10) * det; out[6] = b21 * det; out[7] = (-a21 * a00 + a01 * a20) * det; out[8] = (a11 * a00 - a01 * a10) * det; return new Mat3(out); }; /** * * @param {Vec2} v * @return {Mat3} */ Mat3.prototype.translate = function (v) { var out = Array(9); var a = this.data; var a00 = a[0], a01 = a[1], a02 = a[2]; var a10 = a[3], a11 = a[4], a12 = a[5]; var a20 = a[6], a21 = a[7], a22 = a[8]; var x = v.x, y = v.y; out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a10; out[4] = a11; out[5] = a12; out[6] = x * a00 + y * a10 + a20; out[7] = x * a01 + y * a11 + a21; out[8] = x * a02 + y * a12 + a22; return new Mat3(out); }; /** * * @param {Mat3} mat * @returns {Mat3} */ Mat3.prototype.multiply = function (mat) { var a = this.data; var b = mat.data; var a00 = a[0], a01 = a[1], a02 = a[2]; var a10 = a[3], a11 = a[4], a12 = a[5]; var a20 = a[6], a21 = a[7], a22 = a[8]; var b00 = b[0], b01 = b[1], b02 = b[2]; var b10 = b[3], b11 = b[4], b12 = b[5]; var b20 = b[6], b21 = b[7], b22 = b[8]; var out = Array(9); out[0] = b00 * a00 + b01 * a10 + b02 * a20; out[1] = b00 * a01 + b01 * a11 + b02 * a21; out[2] = b00 * a02 + b01 * a12 + b02 * a22; out[3] = b10 * a00 + b11 * a10 + b12 * a20; out[4] = b10 * a01 + b11 * a11 + b12 * a21; out[5] = b10 * a02 + b11 * a12 + b12 * a22; out[6] = b20 * a00 + b21 * a10 + b22 * a20; out[7] = b20 * a01 + b21 * a11 + b22 * a21; out[8] = b20 * a02 + b21 * a12 + b22 * a22; return new Mat3(out); } /*** * * @param {Number} rad * @return {Mat3} */ Mat3.prototype.rotate = function (rad) { var a = this.data; var a00 = a[0], a01 = a[1], a02 = a[2]; var a10 = a[3], a11 = a[4], a12 = a[5]; var a20 = a[6], a21 = a[7], a22 = a[8]; var s = Math.sin(rad); var c = Math.cos(rad); var out = Array(9); out[0] = c * a00 + s * a10; out[1] = c * a01 + s * a11; out[2] = c * a02 + s * a12; out[3] = c * a10 - s * a00; out[4] = c * a11 - s * a01; out[5] = c * a12 - s * a02; out[6] = a20; out[7] = a21; out[8] = a22; return new Mat3(out); }; /*** * * @param {Vec2} v * @returns {Mat3} */ Mat3.prototype.scale = function (v) { var x = v.x; var y = v.y; var out = Array(9); out[0] = x * a[0]; out[1] = x * a[1]; out[2] = x * a[2]; out[3] = y * a[3]; out[4] = y * a[4]; out[5] = y * a[5]; out[6] = a[6]; out[7] = a[7]; out[8] = a[8]; return new Mat3(out); }; /*** * * @return {Mat3} */ Mat3.prototype.transpose = function (){ var a = this.data; var out = Array(9); out[0] = a[0]; out[1] = a[3]; out[2] = a[6]; out[3] = a[1]; out[4] = a[4]; out[5] = a[7]; out[6] = a[2]; out[7] = a[5]; out[8] = a[8]; return new Mat3(out); }; /** * * @param {Vec2}v */ Mat3.prototype.apply2DTransform = function (v) { var a = this.data; var x0 = v.x; var y0 = v.y; var x = x0 * a[0] + y0 * a[3] + a[6]; var y = x0 * a[1] + y0 * a[4] + a[7]; return new Math_Vec2(x, y); } /* harmony default export */ var Math_Mat3 = (Mat3); // CONCATENATED MODULE: ./node_modules/absol/src/HTML5/LanguageSystem.js /*** * @typedef LanguageSystemExtension * @property {function(key: string, code?: string): (string | null)} getText */ /**** * * @constructor */ function LanguageSystem() { this.data = {}; this.code = navigator.language || navigator.userLanguage; /*** * * @type {LanguageSystemExtension[]} * @private */ this._extensions = []; } LanguageSystem.prototype.notifyLanguageChange = function () { var sizeChange = false; function visit(elt) { if (elt.onlanguagechange) { try { elt.onlanguagechange(); sizeChange = true; } catch (err) { console.error(err) } if (elt.childNodes && elt.childNodes.length > 0) { Array.prototype.forEach.call(elt.childNodes, visit); } } } visit(document.body); if (sizeChange) ResizeSystem["a" /* default */].update(); }; /*** * * @param {ChildNode | Text | HTMLElement | Element} node */ LanguageSystem.prototype.bind = function (node, key) { if (node.nodeType === 1) { this.bindTextNode(node, key); } else if (node.nodeType === 3) { this.bindElement(node, key); } }; /*** * * @param {Text | {__as_language_key: string}} node * @param {string} key */ LanguageSystem.prototype.bindTextNode = function (node, key) { node.__as_language_key = key; node.onlanguagechange = textNodeLanguageChangeHandler; }; /*** * * @param {ChildNode | HTMLElement | Element | {__as_language_key: string}} node * @param {string} key */ LanguageSystem.prototype.bindElement = function (node, key) { node.__as_language_key = key; node.onlanguagechange = elementLanguageChangeHandler; }; /*** * * @param {string} key * @param {string} [code] */ LanguageSystem.prototype.getText = function (key, code) { var code = code || this.code; var res; var ex; for (var i = this._extensions.length - 1; i >= 0; --i) { ex = this._extensions[i]; res = ex.getText && ex.getText.apply(ex, arguments); if (res) break; } if (!res) { res = this.data[code] && this.data[code][key]; } return res || null; }; /*** * * @param {LanguageSystemExtension} ex */ LanguageSystem.prototype.addExtension = function (ex){ this._extensions.push(ex); }; var LangSys = new LanguageSystem(); function textNodeLanguageChangeHandler() { if (this.__as_language_key) { var newText = LangSys.getText(this.__as_language_key); if (newText && newText.trim) { this.data = newText; } } } function elementLanguageChangeHandler() { if (this.__as_language_key) { var newText = LangSys.getText(this.__as_language_key); if (newText && newText.trim) { var textNode; for (var i = 0; i < this.childNodes.length; ++i) { if (this.childNodes[i].nodeType === 1) { textNode = this.childNodes[i]; break; } } if (!textNode) { textNode = document.createTextNode(''); } textNode.data = newText; } } } /* harmony default export */ var HTML5_LanguageSystem = (LangSys); // EXTERNAL MODULE: ./node_modules/absol/src/Code/ALogger.js var ALogger = __webpack_require__(46); // EXTERNAL MODULE: ./node_modules/absol/src/Code/FlagManager.js var FlagManager = __webpack_require__(18); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/ObservableArray.js /*** * @augments EventEmitter * @extends Array * @constructor */ function ObservableArray(array) { EventEmitter["b" /* default */].call(this); Object.defineProperty(this, '_array', { configurable: false, enumerable: false, value: array }); this._makeArrIndex(0, array.length); } Object.defineProperty(ObservableArray.prototype, 'unshift', { enumerable: false, value: function () { var newItems = Array.prototype.slice.call(arguments); var cN = this._array.length; this._makeArrIndex(cN, this._array.length + newItems.length); this._array.unshift.apply(this._array, newItems); this.emit("additem", { target: this, items: newItems, type: 'additem', offset: 0, action: 'unshift' }, this); } }); Object.defineProperty(ObservableArray.prototype, 'shift', { enumerable: false, value: function () { var res = undefined; if (this._array.length > 0) { res = this._array.shift(); this._removeIndex(this._array.length); this.emit("removeitem", { target: this, type: 'additem', offset: 0, action: 'shift', items: [res], item: res }, this); } return res; } }); Object.defineProperty(ObservableArray.prototype, 'push', { enumerable: false, value: function () { var newItems = Array.prototype.slice.call(arguments); var cN = this._array.length; this._makeArrIndex(this._array.length, this._array.length + newItems.length); this._array.push.apply(this._array, newItems); this.emit("additem", { target: this, items: newItems, type: 'additem', offset: cN, action: 'push' }, this); } }); Object.defineProperty(ObservableArray.prototype, 'pop', { enumerable: false, value: function () { var res = undefined; if (this._array.length > 0) { res = this._array.pop(); this._removeIndex(this._array.length); this.emit("removeitem", { target: this, type: 'additem', offset: this._array.length, action: 'shift', items: [res], item: res }, this); } return res; } }); Object.defineProperty(ObservableArray.prototype, 'replace', { enumerable: false, value: function (offset, items) { for (var i = 0; i < items.length && offset < this._array.length; ++i, ++offset) { this._array[offset] = items[i]; } } }); Object.defineProperty(ObservableArray.prototype, 'toJSON', { enumerable: false, value: function () { return this._array; } }); Object.defineProperty(ObservableArray.prototype, 'valueOf', { enumerable: false, value: function () { return this._array; } }); Object.defineProperty(ObservableArray.prototype, '_makeArrIndex', { enumerable: false, value: function (cN, nN) { var i; if (nN > cN) { for (i = cN; i < nN; ++i) this._defineIndex(i); } else { for (i = cN - 1; i >= nN; --i) this._removeIndex(i); } } }); /*** * * @param {number} idx * @private */ Object.defineProperty(ObservableArray.prototype, '_defineIndex', { enumerable: false, value: function (idx) { if (!(idx in this)) { Object.defineProperty(this, idx, { set: function (value) { var oldValue = this._array[idx] this._array[idx] = value; this.emit('setitem', { type: 'setitem', target: this, oldValue: oldValue, vale: value, offset: idx }, this); }, get: function () { return this._array[idx]; }, configurable: true, enumerable: true }); } } }); Object.defineProperty(ObservableArray.prototype, '_removeIndex', { enumerable: false, value: function (idx) { delete this[idx]; } }); Object.defineProperty(ObservableArray.prototype, 'splice', { enumerable: false, value: function (index, howMany) { var res = []; var newItems = Array.prototype.slice.call(arguments, 2); index = index == null ? 0 : index < 0 ? this._array.length + index : index; howMany = howMany == null ? this._array.length - index : howMany > 0 ? howMany : 0; if (howMany > 0) { this._makeArrIndex(this._array.length, this._array.length - howMany); res = this._array.splice(index, howMany); if (newItems.length > 0) { if (res.length > 0) { this.emit('replaceitem', { type: 'replaceitem', offset: index, oldItems: res, newItems: newItems, target: this, action: 'splice' }, this); } else { this.emit('additem', { type: 'additem', offset: index, items: newItems, target: this }, this); } } else { if (res.length > 0) { this.emit('removeitem', { target: this, type: 'additem', offset: 0, action: 'splice', items: res, }, this); } } } return res; } }); Object.defineProperty(ObservableArray.prototype, 'length', { set: function (value) { var n = Number(value); var length = this._array.length; if (n % 1 === 0 && n >= 0) { if (n < length) { this.splice(n); } else if (n > length) { this.push.apply(this, new Array(n - length)); } } else { throw new RangeError("Invalid array length"); } this._array.length = n; }, get: function () { return this._array.length; } }); Object.getOwnPropertyNames(Array.prototype).forEach(function (name) { if (!(name in ObservableArray.prototype)) { Object.defineProperty(ObservableArray.prototype, name, { configurable: false, enumerable: false, writable: false, value: Array.prototype[name] }); } }); Object.getOwnPropertyNames(EventEmitter["b" /* default */].prototype).forEach(function (name) { if (!(name in ObservableArray.prototype)) { Object.defineProperty(ObservableArray.prototype, name, { configurable: false, enumerable: false, writable: false, value: EventEmitter["b" /* default */].prototype[name] }); } }); /* harmony default export */ var AppPattern_ObservableArray = (ObservableArray); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/ObservableStruct.js /*** * @extends EventEmitter * @param {Object} o * @constructor */ function ObservableStruct(o) { EventEmitter["b" /* default */].call(this); Object.defineProperty(this, '__o__', { configurable: false, enumerable: false, value: o }); for (var key in o) this.defineProperty(key); } Object.defineProperty(ObservableStruct.prototype, 'defineProperty', { configurable: false, enumerable: false, writable: false, /*** * * @param {string} name * @param {*=} value */ value: function (name, value) { if (!(name in this)) { Object.defineProperty(this, name, { set: function (value) { var oldValue = this.__o__[name] this.__o__[name] = value; this.emit('setproperty', { type: 'setproperty', target: this, oldValue: oldValue, vale: value, name: name }, this); }, get: function () { return this.__o__[name]; }, configurable: true, enumerable: true }); } } }); Object.getOwnPropertyNames(EventEmitter["b" /* default */].prototype).forEach(function (name) { if (!(name in ObservableStruct.prototype)) { Object.defineProperty(ObservableStruct.prototype, name, { configurable: false, enumerable: false, writable: false, value: EventEmitter["b" /* default */].prototype[name] }); } }); /* harmony default export */ var AppPattern_ObservableStruct = (ObservableStruct); // CONCATENATED MODULE: ./node_modules/absol/src/index.js var src_absol = { int: int_namespaceObject, Rectangle: Math_Rectangle, ResizeSystem: ResizeSystem["a" /* default */], Arc: Math_Arc, NumRange: Math_NumRange, CookieStore: Cookie_CookieStore, parseCookieString: parseCookieString, CMDRunner: AppPattern_CMDRunner, ContextManager: AppPattern_ContextManager, Application: AppPattern_Application, Fragment: AppPattern_Fragment, VarScope: AppPattern_VarScope, Context: AppPattern_Context, Activity: AppPattern_Activity, Element: Element["a" /* default */], ElementNS: AElementNS["a" /* default */], AElement: Element["a" /* default */], AElementNS: AElementNS["a" /* default */], DomSignal: HTML5_DomSignal, JSPath: JSPath["a" /* default */], TemplateString: TemplateString["a" /* default */], TemplateXML: JSMaker_TemplateXML, Dom: Dom["b" /* default */], Svg: Svg["a" /* default */], BrowserDetector: BrowserDetector["a" /* default */], OOP: OOP["a" /* default */], XML: XML_XML, Color: Color_Color, EventEmitter: EventEmitter["b" /* default */], JSZip: jszip_min_default.a, IFrameBridge: Network_IFrameBridge, JSDocx: JSDocx["a" /* default */], Broadcast: Network_Broadcast, text: Text_namespaceObject, file: file_namespaceObject, base64: base64_namespaceObject, Alarm: Time_Alarm, coreDom: Dom["b" /* default */].ShareInstance, coreSvg: Svg["a" /* default */].ShareInstance, require: function (tagName) { return this.coreDom.require(tagName) || this.coreSvg.require(tagName); }, domCreator: Dom["b" /* default */].ShareInstance.creator, svgCreator: Dom["b" /* default */].ShareInstance.creator, _: Dom["b" /* default */].ShareInstance._, $: Dom["b" /* default */].ShareInstance.$, $$: Dom["b" /* default */].ShareInstance.$$, _svg: Svg["a" /* default */].ShareInstance._, $svg: Svg["a" /* default */].ShareInstance.$, Ref: AppPattern_Ref, XHR: Network_XHR, string: Object.assign({}, stringFormat_namespaceObject, stringGenerate_namespaceObject), jsx: { dom: dom_namespaceObject, attribute: JSX_attribute }, clipboard: Clipboard_namespaceObject, dataStructure: { Heap: DataStructure_Heap }, datetime: datetime_namespaceObject, Vec2: Math_Vec2, Mat3: Math_Mat3, LanguageSystem: HTML5_LanguageSystem, ALogger: ALogger["a" /* default */], FlagManager: FlagManager["a" /* default */], ObservableArray: AppPattern_ObservableArray, ObservableStruct: AppPattern_ObservableStruct }; /* harmony default export */ var src = (src_absol); // CONCATENATED MODULE: ./node_modules/absol/src/absol.js //for old plugin src['HTML'+'El'+'ement'.toLowerCase()] = src.Element; src.dom = src.Dom; src.event = src.EventEmitter; src.Event = src.EventEmitter; src.color = src.Color; src.documentReady = src.Dom.documentReady; window.AComp = src.AComp; window.PhotoSwipeViewer = src.PhotoSwipeViewer; window.IFrameBridge = src.IFrameBridge; window.absol = src; var mapKeys = { ShareDom: 'coreDom', ShareDomCreator: 'domCreator', ShareSvgC: 'coreSvgCreator', ShareSvgCreator: 'svgCreator', ShareCreator: 'domCreator' }; src.logData = []; src.log = function () { src.logData.push([new Error('TraceError')].concat(Array.prototype.slice.call(arguments))) } Object.keys(mapKeys).forEach(function (key) { var valueKey = mapKeys[key]; Object.defineProperty(src, key, { get: function () { if (!this['__warn' + key + '__']) { this['__warn' + key + '__'] = true; src.log("use " + valueKey + ' instead of ' + key); } return this[valueKey]; } }); }); // CONCATENATED MODULE: ./node_modules/absol/src/polyfill.js // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(0); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/adapter/MaterialDesignIconsAdapter.js /*** * Old name to new name */ var MaterialDesignIconsNameMap = { 'settings-outline': 'cog-outline', 'contact-mail': 'card-account-mail', }; var MaterialDesignIconsCode = {}; Dom["b" /* default */].documentReady.then(function () { var _ = ACore["c" /* default */]._; var a = _({ tag: 'span', class: ['mdi'], style: { display: 'none' } }).addTo(document.body); var content; var cssCodeLines = []; for (var oldName in MaterialDesignIconsNameMap) { a.addClass('mdi-' + MaterialDesignIconsNameMap[oldName]); content = getComputedStyle(a, '::before').content; MaterialDesignIconsCode[oldName] = content; cssCodeLines.push('.mdi-' + oldName + '::before{content:' + content + '}'); a.removeClass('mdi-' + MaterialDesignIconsNameMap[oldName]); } a.remove(); var styleElt = _({ tag: 'style', props: { innerHTML: cssCodeLines.join('\n') } }).addTo(document.head); }); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/DebugTask.js var DebugTask = __webpack_require__(21); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/debugtask.css var debugtask = __webpack_require__(56); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Draggable.js function Draggable(element) { if (!element) element = ACore["c" /* default */]._('div'); else ACore["c" /* default */].$(element); element.defineEvent(['predrag', 'drag', 'begindrag', 'enddrag']); var body = ACore["c" /* default */].$('body'); var isMoving = false; var firstMove = false; var offsetX; var offsetY; var fontSize; var left0em, top0em, left0, top0; var finishMoving = function (event) { if (isMoving) { isMoving = false; body.off('mousemove', mouseMoveEventHandler); event.moveDX = event.clientX - offsetX; event.moveDY = event.clientY - offsetY; event.moveDXem = event.moveDX / fontSize; event.moveDYem = event.moveDY / fontSize; event.moveToX = left0 + event.moveDX; event.moveToY = top0 + event.moveDY; element.emit('enddrag', event); } }; var mouseUpEventHandler = function (event) { finishMoving(event); }; var mouseMoveEventHandler = function (event) { event.preventDefault(); event.moveDX = event.clientX - offsetX; event.moveDY = event.clientY - offsetY; event.moveDXem = event.moveDX / fontSize; event.moveDYem = event.moveDY / fontSize; event.moveToX = left0 + event.moveDX; event.moveToY = top0 + event.moveDY; event.moveToXem = left0em + event.moveDXem; event.moveToYem = top0em + event.moveDYem; if (firstMove) { firstMove = false; element.emit('begindrag', event); } element.emit('drag', event); }; var mouseOutEventHandler = function (event) { finishMoving(event); }; var mouseDownEventHandler = function (event) { isMoving = true; firstMove = true; body.on('mousemove', mouseMoveEventHandler); body.once('mouseleave', mouseOutEventHandler); body.once('mouseup', mouseUpEventHandler); fontSize = this.getFontSize(); offsetX = event.clientX; offsetY = event.clientY; left0 = parseFloat(element.getComputedStyleValue('left').replace('px', '')); top0 = parseFloat(element.getComputedStyleValue('top').replace('px', '')); left0em = left0 / fontSize; top0em = top0 / fontSize; event.x0 = left0; event.y0 = top0; event.y0em = left0em; event.y0em = top0em; element.emit('predrag', event); }; element.on('mousedown', mouseDownEventHandler); return element; }; /* harmony default export */ var js_Draggable = (Draggable); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiChars.js var EmojiChars = [["Smileys & Emotion", [["face-smiling", [[["U+1F600"], "😀", "grinning face"], [["U+1F603"], "😃", "grinning face with big eyes"], [["U+1F604"], "😄", "grinning face with smiling eyes"], [["U+1F601"], "😁", "beaming face with smiling eyes"], [["U+1F606"], "😆", "grinning squinting face"], [["U+1F605"], "😅", "grinning face with sweat"], [["U+1F923"], "🤣", "rolling on the floor laughing"], [["U+1F602"], "😂", "face with tears of joy"], [["U+1F642"], "🙂", "slightly smiling face"], [["U+1F643"], "🙃", "upside-down face"], [["U+1F609"], "😉", "winking face"], [["U+1F60A"], "😊", "smiling face with smiling eyes"], [["U+1F607"], "😇", "smiling face with halo"]]], ["face-affection", [[["U+1F970"], "🥰", "smiling face with hearts"], [["U+1F60D"], "😍", "smiling face with heart-eyes"], [["U+1F929"], "🤩", "star-struck"], [["U+1F618"], "😘", "face blowing a kiss"], [["U+1F617"], "😗", "kissing face"], [["U+263A"], "☺", "smiling face"], [["U+1F61A"], "😚", "kissing face with closed eyes"], [["U+1F619"], "😙", "kissing face with smiling eyes"], [["U+1F972"], "🥲", "⊛ smiling face with tear"]]], ["face-tongue", [[["U+1F60B"], "😋", "face savoring food"], [["U+1F61B"], "😛", "face with tongue"], [["U+1F61C"], "😜", "winking face with tongue"], [["U+1F92A"], "🤪", "zany face"], [["U+1F61D"], "😝", "squinting face with tongue"], [["U+1F911"], "🤑", "money-mouth face"]]], ["face-hand", [[["U+1F917"], "🤗", "hugging face"], [["U+1F92D"], "🤭", "face with hand over mouth"], [["U+1F92B"], "🤫", "shushing face"], [["U+1F914"], "🤔", "thinking face"]]], ["face-neutral-skeptical", [[["U+1F910"], "🤐", "zipper-mouth face"], [["U+1F928"], "🤨", "face with raised eyebrow"], [["U+1F610"], "😐", "neutral face"], [["U+1F611"], "😑", "expressionless face"], [["U+1F636"], "😶", "face without mouth"], [["U+1F60F"], "😏", "smirking face"], [["U+1F612"], "😒", "unamused face"], [["U+1F644"], "🙄", "face with rolling eyes"], [["U+1F62C"], "😬", "grimacing face"], [["U+1F925"], "🤥", "lying face"]]], ["face-sleepy", [[["U+1F60C"], "😌", "relieved face"], [["U+1F614"], "😔", "pensive face"], [["U+1F62A"], "😪", "sleepy face"], [["U+1F924"], "🤤", "drooling face"], [["U+1F634"], "😴", "sleeping face"]]], ["face-unwell", [[["U+1F637"], "😷", "face with medical mask"], [["U+1F912"], "🤒", "face with thermometer"], [["U+1F915"], "🤕", "face with head-bandage"], [["U+1F922"], "🤢", "nauseated face"], [["U+1F92E"], "🤮", "face vomiting"], [["U+1F927"], "🤧", "sneezing face"], [["U+1F975"], "🥵", "hot face"], [["U+1F976"], "🥶", "cold face"], [["U+1F974"], "🥴", "woozy face"], [["U+1F635"], "😵", "dizzy face"], [["U+1F92F"], "🤯", "exploding head"]]], ["face-hat", [[["U+1F920"], "🤠", "cowboy hat face"], [["U+1F973"], "🥳", "partying face"], [["U+1F978"], "🥸", "⊛ disguised face"]]], ["face-glasses", [[["U+1F60E"], "😎", "smiling face with sunglasses"], [["U+1F913"], "🤓", "nerd face"], [["U+1F9D0"], "🧐", "face with monocle"]]], ["face-concerned", [[["U+1F615"], "😕", "confused face"], [["U+1F61F"], "😟", "worried face"], [["U+1F641"], "🙁", "slightly frowning face"], [["U+2639"], "☹", "frowning face"], [["U+1F62E"], "😮", "face with open mouth"], [["U+1F62F"], "😯", "hushed face"], [["U+1F632"], "😲", "astonished face"], [["U+1F633"], "😳", "flushed face"], [["U+1F97A"], "🥺", "pleading face"], [["U+1F626"], "😦", "frowning face with open mouth"], [["U+1F627"], "😧", "anguished face"], [["U+1F628"], "😨", "fearful face"], [["U+1F630"], "😰", "anxious face with sweat"], [["U+1F625"], "😥", "sad but relieved face"], [["U+1F622"], "😢", "crying face"], [["U+1F62D"], "😭", "loudly crying face"], [["U+1F631"], "😱", "face screaming in fear"], [["U+1F616"], "😖", "confounded face"], [["U+1F623"], "😣", "persevering face"], [["U+1F61E"], "😞", "disappointed face"], [["U+1F613"], "😓", "downcast face with sweat"], [["U+1F629"], "😩", "weary face"], [["U+1F62B"], "😫", "tired face"], [["U+1F971"], "🥱", "yawning face"]]], ["face-negative", [[["U+1F624"], "😤", "face with steam from nose"], [["U+1F621"], "😡", "pouting face"], [["U+1F620"], "😠", "angry face"], [["U+1F92C"], "🤬", "face with symbols on mouth"], [["U+1F608"], "😈", "smiling face with horns"], [["U+1F47F"], "👿", "angry face with horns"], [["U+1F480"], "💀", "skull"], [["U+2620"], "☠", "skull and crossbones"]]], ["face-costume", [[["U+1F4A9"], "💩", "pile of poo"], [["U+1F921"], "🤡", "clown face"], [["U+1F479"], "👹", "ogre"], [["U+1F47A"], "👺", "goblin"], [["U+1F47B"], "👻", "ghost"], [["U+1F47D"], "👽", "alien"], [["U+1F47E"], "👾", "alien monster"], [["U+1F916"], "🤖", "robot"]]], ["cat-face", [[["U+1F63A"], "😺", "grinning cat"], [["U+1F638"], "😸", "grinning cat with smiling eyes"], [["U+1F639"], "😹", "cat with tears of joy"], [["U+1F63B"], "😻", "smiling cat with heart-eyes"], [["U+1F63C"], "😼", "cat with wry smile"], [["U+1F63D"], "😽", "kissing cat"], [["U+1F640"], "🙀", "weary cat"], [["U+1F63F"], "😿", "crying cat"], [["U+1F63E"], "😾", "pouting cat"]]], ["monkey-face", [[["U+1F648"], "🙈", "see-no-evil monkey"], [["U+1F649"], "🙉", "hear-no-evil monkey"], [["U+1F64A"], "🙊", "speak-no-evil monkey"]]], ["emotion", [[["U+1F48B"], "💋", "kiss mark"], [["U+1F48C"], "💌", "love letter"], [["U+1F498"], "💘", "heart with arrow"], [["U+1F49D"], "💝", "heart with ribbon"], [["U+1F496"], "💖", "sparkling heart"], [["U+1F497"], "💗", "growing heart"], [["U+1F493"], "💓", "beating heart"], [["U+1F49E"], "💞", "revolving hearts"], [["U+1F495"], "💕", "two hearts"], [["U+1F49F"], "💟", "heart decoration"], [["U+2763"], "❣", "heart exclamation"], [["U+1F494"], "💔", "broken heart"], [["U+2764"], "❤", "red heart"], [["U+1F9E1"], "🧡", "orange heart"], [["U+1F49B"], "💛", "yellow heart"], [["U+1F49A"], "💚", "green heart"], [["U+1F499"], "💙", "blue heart"], [["U+1F49C"], "💜", "purple heart"], [["U+1F90E"], "🤎", "brown heart"], [["U+1F5A4"], "🖤", "black heart"], [["U+1F90D"], "🤍", "white heart"], [["U+1F4AF"], "💯", "hundred points"], [["U+1F4A2"], "💢", "anger symbol"], [["U+1F4A5"], "💥", "collision"], [["U+1F4AB"], "💫", "dizzy"], [["U+1F4A6"], "💦", "sweat droplets"], [["U+1F4A8"], "💨", "dashing away"], [["U+1F573"], "🕳", "hole"], [["U+1F4A3"], "💣", "bomb"], [["U+1F4AC"], "💬", "speech balloon"], [["U+1F441", "U+FE0F", "U+200D", "U+1F5E8", "U+FE0F"], "👁️🗨️", "eye in speech bubble"], [["U+1F5E8"], "🗨", "left speech bubble"], [["U+1F5EF"], "🗯", "right anger bubble"], [["U+1F4AD"], "💭", "thought balloon"], [["U+1F4A4"], "💤", "zzz"]]]]], ["People & Body", [["hand-fingers-open", [[["U+1F44B"], "👋", "waving hand"], [["U+1F91A"], "🤚", "raised back of hand"], [["U+1F590"], "🖐", "hand with fingers splayed"], [["U+270B"], "✋", "raised hand"], [["U+1F596"], "🖖", "vulcan salute"]]], ["hand-fingers-partial", [[["U+1F44C"], "👌", "OK hand"], [["U+1F90C"], "🤌", "⊛ pinched fingers"], [["U+1F90F"], "🤏", "pinching hand"], [["U+270C"], "✌", "victory hand"], [["U+1F91E"], "🤞", "crossed fingers"], [["U+1F91F"], "🤟", "love-you gesture"], [["U+1F918"], "🤘", "sign of the horns"], [["U+1F919"], "🤙", "call me hand"]]], ["hand-single-finger", [[["U+1F448"], "👈", "backhand index pointing left"], [["U+1F449"], "👉", "backhand index pointing right"], [["U+1F446"], "👆", "backhand index pointing up"], [["U+1F595"], "🖕", "middle finger"], [["U+1F447"], "👇", "backhand index pointing down"], [["U+261D"], "☝", "index pointing up"]]], ["hand-fingers-closed", [[["U+1F44D"], "👍", "thumbs up"], [["U+1F44E"], "👎", "thumbs down"], [["U+270A"], "✊", "raised fist"], [["U+1F44A"], "👊", "oncoming fist"], [["U+1F91B"], "🤛", "left-facing fist"], [["U+1F91C"], "🤜", "right-facing fist"]]], ["hands", [[["U+1F44F"], "👏", "clapping hands"], [["U+1F64C"], "🙌", "raising hands"], [["U+1F450"], "👐", "open hands"], [["U+1F932"], "🤲", "palms up together"], [["U+1F91D"], "🤝", "handshake"], [["U+1F64F"], "🙏", "folded hands"]]], ["hand-prop", [[["U+270D"], "✍", "writing hand"], [["U+1F485"], "💅", "nail polish"], [["U+1F933"], "🤳", "selfie"]]], ["body-parts", [[["U+1F4AA"], "💪", "flexed biceps"], [["U+1F9BE"], "🦾", "mechanical arm"], [["U+1F9BF"], "🦿", "mechanical leg"], [["U+1F9B5"], "🦵", "leg"], [["U+1F9B6"], "🦶", "foot"], [["U+1F442"], "👂", "ear"], [["U+1F9BB"], "🦻", "ear with hearing aid"], [["U+1F443"], "👃", "nose"], [["U+1F9E0"], "🧠", "brain"], [["U+1F9B7"], "🦷", "tooth"], [["U+1F9B4"], "🦴", "bone"], [["U+1F440"], "👀", "eyes"], [["U+1F441"], "👁", "eye"], [["U+1F445"], "👅", "tongue"], [["U+1F444"], "👄", "mouth"]]], ["person", [[["U+1F476"], "👶", "baby"], [["U+1F9D2"], "🧒", "child"], [["U+1F466"], "👦", "boy"], [["U+1F467"], "👧", "girl"], [["U+1F9D1"], "🧑", "person"], [["U+1F471"], "👱", "person: blond hair"], [["U+1F468"], "👨", "man"], [["U+1F9D4"], "🧔", "man: beard"], [["U+1F468", "U+200D", "U+1F9B0"], "👨🦰", "man: red hair"], [["U+1F468", "U+200D", "U+1F9B1"], "👨🦱", "man: curly hair"], [["U+1F468", "U+200D", "U+1F9B3"], "👨🦳", "man: white hair"], [["U+1F468", "U+200D", "U+1F9B2"], "👨🦲", "man: bald"], [["U+1F469"], "👩", "woman"], [["U+1F469", "U+200D", "U+1F9B0"], "👩🦰", "woman: red hair"], [["U+1F9D1", "U+200D", "U+1F9B0"], "🧑🦰", "person: red hair"], [["U+1F469", "U+200D", "U+1F9B1"], "👩🦱", "woman: curly hair"], [["U+1F9D1", "U+200D", "U+1F9B1"], "🧑🦱", "person: curly hair"], [["U+1F469", "U+200D", "U+1F9B3"], "👩🦳", "woman: white hair"], [["U+1F9D1", "U+200D", "U+1F9B3"], "🧑🦳", "person: white hair"], [["U+1F469", "U+200D", "U+1F9B2"], "👩🦲", "woman: bald"], [["U+1F9D1", "U+200D", "U+1F9B2"], "🧑🦲", "person: bald"], [["U+1F471", "U+200D", "U+2640", "U+FE0F"], "👱♀️", "woman: blond hair"], [["U+1F471", "U+200D", "U+2642", "U+FE0F"], "👱♂️", "man: blond hair"], [["U+1F9D3"], "🧓", "older person"], [["U+1F474"], "👴", "old man"], [["U+1F475"], "👵", "old woman"]]], ["person-gesture", [[["U+1F64D"], "🙍", "person frowning"], [["U+1F64D", "U+200D", "U+2642", "U+FE0F"], "🙍♂️", "man frowning"], [["U+1F64D", "U+200D", "U+2640", "U+FE0F"], "🙍♀️", "woman frowning"], [["U+1F64E"], "🙎", "person pouting"], [["U+1F64E", "U+200D", "U+2642", "U+FE0F"], "🙎♂️", "man pouting"], [["U+1F64E", "U+200D", "U+2640", "U+FE0F"], "🙎♀️", "woman pouting"], [["U+1F645"], "🙅", "person gesturing NO"], [["U+1F645", "U+200D", "U+2642", "U+FE0F"], "🙅♂️", "man gesturing NO"], [["U+1F645", "U+200D", "U+2640", "U+FE0F"], "🙅♀️", "woman gesturing NO"], [["U+1F646"], "🙆", "person gesturing OK"], [["U+1F646", "U+200D", "U+2642", "U+FE0F"], "🙆♂️", "man gesturing OK"], [["U+1F646", "U+200D", "U+2640", "U+FE0F"], "🙆♀️", "woman gesturing OK"], [["U+1F481"], "💁", "person tipping hand"], [["U+1F481", "U+200D", "U+2642", "U+FE0F"], "💁♂️", "man tipping hand"], [["U+1F481", "U+200D", "U+2640", "U+FE0F"], "💁♀️", "woman tipping hand"], [["U+1F64B"], "🙋", "person raising hand"], [["U+1F64B", "U+200D", "U+2642", "U+FE0F"], "🙋♂️", "man raising hand"], [["U+1F64B", "U+200D", "U+2640", "U+FE0F"], "🙋♀️", "woman raising hand"], [["U+1F9CF"], "🧏", "deaf person"], [["U+1F9CF", "U+200D", "U+2642", "U+FE0F"], "🧏♂️", "deaf man"], [["U+1F9CF", "U+200D", "U+2640", "U+FE0F"], "🧏♀️", "deaf woman"], [["U+1F647"], "🙇", "person bowing"], [["U+1F647", "U+200D", "U+2642", "U+FE0F"], "🙇♂️", "man bowing"], [["U+1F647", "U+200D", "U+2640", "U+FE0F"], "🙇♀️", "woman bowing"], [["U+1F926"], "🤦", "person facepalming"], [["U+1F926", "U+200D", "U+2642", "U+FE0F"], "🤦♂️", "man facepalming"], [["U+1F926", "U+200D", "U+2640", "U+FE0F"], "🤦♀️", "woman facepalming"], [["U+1F937"], "🤷", "person shrugging"], [["U+1F937", "U+200D", "U+2642", "U+FE0F"], "🤷♂️", "man shrugging"], [["U+1F937", "U+200D", "U+2640", "U+FE0F"], "🤷♀️", "woman shrugging"]]], ["person-role", [[["U+1F9D1", "U+200D", "U+2695", "U+FE0F"], "🧑⚕️", "health worker"], [["U+1F468", "U+200D", "U+2695", "U+FE0F"], "👨⚕️", "man health worker"], [["U+1F469", "U+200D", "U+2695", "U+FE0F"], "👩⚕️", "woman health worker"], [["U+1F9D1", "U+200D", "U+1F393"], "🧑🎓", "student"], [["U+1F468", "U+200D", "U+1F393"], "👨🎓", "man student"], [["U+1F469", "U+200D", "U+1F393"], "👩🎓", "woman student"], [["U+1F9D1", "U+200D", "U+1F3EB"], "🧑🏫", "teacher"], [["U+1F468", "U+200D", "U+1F3EB"], "👨🏫", "man teacher"], [["U+1F469", "U+200D", "U+1F3EB"], "👩🏫", "woman teacher"], [["U+1F9D1", "U+200D", "U+2696", "U+FE0F"], "🧑⚖️", "judge"], [["U+1F468", "U+200D", "U+2696", "U+FE0F"], "👨⚖️", "man judge"], [["U+1F469", "U+200D", "U+2696", "U+FE0F"], "👩⚖️", "woman judge"], [["U+1F9D1", "U+200D", "U+1F33E"], "🧑🌾", "farmer"], [["U+1F468", "U+200D", "U+1F33E"], "👨🌾", "man farmer"], [["U+1F469", "U+200D", "U+1F33E"], "👩🌾", "woman farmer"], [["U+1F9D1", "U+200D", "U+1F373"], "🧑🍳", "cook"], [["U+1F468", "U+200D", "U+1F373"], "👨🍳", "man cook"], [["U+1F469", "U+200D", "U+1F373"], "👩🍳", "woman cook"], [["U+1F9D1", "U+200D", "U+1F527"], "🧑🔧", "mechanic"], [["U+1F468", "U+200D", "U+1F527"], "👨🔧", "man mechanic"], [["U+1F469", "U+200D", "U+1F527"], "👩🔧", "woman mechanic"], [["U+1F9D1", "U+200D", "U+1F3ED"], "🧑🏭", "factory worker"], [["U+1F468", "U+200D", "U+1F3ED"], "👨🏭", "man factory worker"], [["U+1F469", "U+200D", "U+1F3ED"], "👩🏭", "woman factory worker"], [["U+1F9D1", "U+200D", "U+1F4BC"], "🧑💼", "office worker"], [["U+1F468", "U+200D", "U+1F4BC"], "👨💼", "man office worker"], [["U+1F469", "U+200D", "U+1F4BC"], "👩💼", "woman office worker"], [["U+1F9D1", "U+200D", "U+1F52C"], "🧑🔬", "scientist"], [["U+1F468", "U+200D", "U+1F52C"], "👨🔬", "man scientist"], [["U+1F469", "U+200D", "U+1F52C"], "👩🔬", "woman scientist"], [["U+1F9D1", "U+200D", "U+1F4BB"], "🧑💻", "technologist"], [["U+1F468", "U+200D", "U+1F4BB"], "👨💻", "man technologist"], [["U+1F469", "U+200D", "U+1F4BB"], "👩💻", "woman technologist"], [["U+1F9D1", "U+200D", "U+1F3A4"], "🧑🎤", "singer"], [["U+1F468", "U+200D", "U+1F3A4"], "👨🎤", "man singer"], [["U+1F469", "U+200D", "U+1F3A4"], "👩🎤", "woman singer"], [["U+1F9D1", "U+200D", "U+1F3A8"], "🧑🎨", "artist"], [["U+1F468", "U+200D", "U+1F3A8"], "👨🎨", "man artist"], [["U+1F469", "U+200D", "U+1F3A8"], "👩🎨", "woman artist"], [["U+1F9D1", "U+200D", "U+2708", "U+FE0F"], "🧑✈️", "pilot"], [["U+1F468", "U+200D", "U+2708", "U+FE0F"], "👨✈️", "man pilot"], [["U+1F469", "U+200D", "U+2708", "U+FE0F"], "👩✈️", "woman pilot"], [["U+1F9D1", "U+200D", "U+1F680"], "🧑🚀", "astronaut"], [["U+1F468", "U+200D", "U+1F680"], "👨🚀", "man astronaut"], [["U+1F469", "U+200D", "U+1F680"], "👩🚀", "woman astronaut"], [["U+1F9D1", "U+200D", "U+1F692"], "🧑🚒", "firefighter"], [["U+1F468", "U+200D", "U+1F692"], "👨🚒", "man firefighter"], [["U+1F469", "U+200D", "U+1F692"], "👩🚒", "woman firefighter"], [["U+1F46E"], "👮", "police officer"], [["U+1F46E", "U+200D", "U+2642", "U+FE0F"], "👮♂️", "man police officer"], [["U+1F46E", "U+200D", "U+2640", "U+FE0F"], "👮♀️", "woman police officer"], [["U+1F575"], "🕵", "detective"], [["U+1F575", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "🕵️♂️", "man detective"], [["U+1F575", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "🕵️♀️", "woman detective"], [["U+1F482"], "💂", "guard"], [["U+1F482", "U+200D", "U+2642", "U+FE0F"], "💂♂️", "man guard"], [["U+1F482", "U+200D", "U+2640", "U+FE0F"], "💂♀️", "woman guard"], [["U+1F977"], "🥷", "⊛ ninja"], [["U+1F477"], "👷", "construction worker"], [["U+1F477", "U+200D", "U+2642", "U+FE0F"], "👷♂️", "man construction worker"], [["U+1F477", "U+200D", "U+2640", "U+FE0F"], "👷♀️", "woman construction worker"], [["U+1F934"], "🤴", "prince"], [["U+1F478"], "👸", "princess"], [["U+1F473"], "👳", "person wearing turban"], [["U+1F473", "U+200D", "U+2642", "U+FE0F"], "👳♂️", "man wearing turban"], [["U+1F473", "U+200D", "U+2640", "U+FE0F"], "👳♀️", "woman wearing turban"], [["U+1F472"], "👲", "person with skullcap"], [["U+1F9D5"], "🧕", "woman with headscarf"], [["U+1F935"], "🤵", "person in tuxedo"], [["U+1F935", "U+200D", "U+2642", "U+FE0F"], "🤵♂️", "⊛ man in tuxedo"], [["U+1F935", "U+200D", "U+2640", "U+FE0F"], "🤵♀️", "⊛ woman in tuxedo"], [["U+1F470"], "👰", "person with veil"], [["U+1F930"], "🤰", "pregnant woman"], [["U+1F931"], "🤱", "breast-feeding"]]], ["person-fantasy", [[["U+1F47C"], "👼", "baby angel"], [["U+1F385"], "🎅", "Santa Claus"], [["U+1F936"], "🤶", "Mrs. Claus"], [["U+1F9B8"], "🦸", "superhero"], [["U+1F9B8", "U+200D", "U+2642", "U+FE0F"], "🦸♂️", "man superhero"], [["U+1F9B8", "U+200D", "U+2640", "U+FE0F"], "🦸♀️", "woman superhero"], [["U+1F9B9"], "🦹", "supervillain"], [["U+1F9B9", "U+200D", "U+2642", "U+FE0F"], "🦹♂️", "man supervillain"], [["U+1F9B9", "U+200D", "U+2640", "U+FE0F"], "🦹♀️", "woman supervillain"], [["U+1F9D9"], "🧙", "mage"], [["U+1F9D9", "U+200D", "U+2642", "U+FE0F"], "🧙♂️", "man mage"], [["U+1F9D9", "U+200D", "U+2640", "U+FE0F"], "🧙♀️", "woman mage"], [["U+1F9DA"], "🧚", "fairy"], [["U+1F9DA", "U+200D", "U+2642", "U+FE0F"], "🧚♂️", "man fairy"], [["U+1F9DA", "U+200D", "U+2640", "U+FE0F"], "🧚♀️", "woman fairy"], [["U+1F9DB"], "🧛", "vampire"], [["U+1F9DB", "U+200D", "U+2642", "U+FE0F"], "🧛♂️", "man vampire"], [["U+1F9DB", "U+200D", "U+2640", "U+FE0F"], "🧛♀️", "woman vampire"], [["U+1F9DC"], "🧜", "merperson"], [["U+1F9DC", "U+200D", "U+2642", "U+FE0F"], "🧜♂️", "merman"], [["U+1F9DC", "U+200D", "U+2640", "U+FE0F"], "🧜♀️", "mermaid"], [["U+1F9DD"], "🧝", "elf"], [["U+1F9DD", "U+200D", "U+2642", "U+FE0F"], "🧝♂️", "man elf"], [["U+1F9DD", "U+200D", "U+2640", "U+FE0F"], "🧝♀️", "woman elf"], [["U+1F9DE"], "🧞", "genie"], [["U+1F9DE", "U+200D", "U+2642", "U+FE0F"], "🧞♂️", "man genie"], [["U+1F9DE", "U+200D", "U+2640", "U+FE0F"], "🧞♀️", "woman genie"], [["U+1F9DF"], "🧟", "zombie"], [["U+1F9DF", "U+200D", "U+2642", "U+FE0F"], "🧟♂️", "man zombie"], [["U+1F9DF", "U+200D", "U+2640", "U+FE0F"], "🧟♀️", "woman zombie"]]], ["person-activity", [[["U+1F486"], "💆", "person getting massage"], [["U+1F486", "U+200D", "U+2642", "U+FE0F"], "💆♂️", "man getting massage"], [["U+1F486", "U+200D", "U+2640", "U+FE0F"], "💆♀️", "woman getting massage"], [["U+1F487"], "💇", "person getting haircut"], [["U+1F487", "U+200D", "U+2642", "U+FE0F"], "💇♂️", "man getting haircut"], [["U+1F487", "U+200D", "U+2640", "U+FE0F"], "💇♀️", "woman getting haircut"], [["U+1F6B6"], "🚶", "person walking"], [["U+1F6B6", "U+200D", "U+2642", "U+FE0F"], "🚶♂️", "man walking"], [["U+1F6B6", "U+200D", "U+2640", "U+FE0F"], "🚶♀️", "woman walking"], [["U+1F9CD"], "🧍", "person standing"], [["U+1F9CD", "U+200D", "U+2642", "U+FE0F"], "🧍♂️", "man standing"], [["U+1F9CD", "U+200D", "U+2640", "U+FE0F"], "🧍♀️", "woman standing"], [["U+1F9CE"], "🧎", "person kneeling"], [["U+1F9CE", "U+200D", "U+2642", "U+FE0F"], "🧎♂️", "man kneeling"], [["U+1F9CE", "U+200D", "U+2640", "U+FE0F"], "🧎♀️", "woman kneeling"], [["U+1F9D1", "U+200D", "U+1F9AF"], "🧑🦯", "person with white cane"], [["U+1F468", "U+200D", "U+1F9AF"], "👨🦯", "man with white cane"], [["U+1F469", "U+200D", "U+1F9AF"], "👩🦯", "woman with white cane"], [["U+1F9D1", "U+200D", "U+1F9BC"], "🧑🦼", "person in motorized wheelchair"], [["U+1F468", "U+200D", "U+1F9BC"], "👨🦼", "man in motorized wheelchair"], [["U+1F469", "U+200D", "U+1F9BC"], "👩🦼", "woman in motorized wheelchair"], [["U+1F9D1", "U+200D", "U+1F9BD"], "🧑🦽", "person in manual wheelchair"], [["U+1F468", "U+200D", "U+1F9BD"], "👨🦽", "man in manual wheelchair"], [["U+1F469", "U+200D", "U+1F9BD"], "👩🦽", "woman in manual wheelchair"], [["U+1F3C3"], "🏃", "person running"], [["U+1F3C3", "U+200D", "U+2642", "U+FE0F"], "🏃♂️", "man running"], [["U+1F3C3", "U+200D", "U+2640", "U+FE0F"], "🏃♀️", "woman running"], [["U+1F483"], "💃", "woman dancing"], [["U+1F57A"], "🕺", "man dancing"], [["U+1F574"], "🕴", "person in suit levitating"], [["U+1F46F"], "👯", "people with bunny ears"], [["U+1F46F", "U+200D", "U+2642", "U+FE0F"], "👯♂️", "men with bunny ears"], [["U+1F46F", "U+200D", "U+2640", "U+FE0F"], "👯♀️", "women with bunny ears"], [["U+1F9D6"], "🧖", "person in steamy room"], [["U+1F9D6", "U+200D", "U+2642", "U+FE0F"], "🧖♂️", "man in steamy room"], [["U+1F9D6", "U+200D", "U+2640", "U+FE0F"], "🧖♀️", "woman in steamy room"], [["U+1F9D7"], "🧗", "person climbing"], [["U+1F9D7", "U+200D", "U+2642", "U+FE0F"], "🧗♂️", "man climbing"], [["U+1F9D7", "U+200D", "U+2640", "U+FE0F"], "🧗♀️", "woman climbing"]]], ["person-sport", [[["U+1F93A"], "🤺", "person fencing"], [["U+1F3C7"], "🏇", "horse racing"], [["U+26F7"], "⛷", "skier"], [["U+1F3C2"], "🏂", "snowboarder"], [["U+1F3CC"], "🏌", "person golfing"], [["U+1F3CC", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "🏌️♂️", "man golfing"], [["U+1F3CC", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "🏌️♀️", "woman golfing"], [["U+1F3C4"], "🏄", "person surfing"], [["U+1F3C4", "U+200D", "U+2642", "U+FE0F"], "🏄♂️", "man surfing"], [["U+1F3C4", "U+200D", "U+2640", "U+FE0F"], "🏄♀️", "woman surfing"], [["U+1F6A3"], "🚣", "person rowing boat"], [["U+1F6A3", "U+200D", "U+2642", "U+FE0F"], "🚣♂️", "man rowing boat"], [["U+1F6A3", "U+200D", "U+2640", "U+FE0F"], "🚣♀️", "woman rowing boat"], [["U+1F3CA"], "🏊", "person swimming"], [["U+1F3CA", "U+200D", "U+2642", "U+FE0F"], "🏊♂️", "man swimming"], [["U+1F3CA", "U+200D", "U+2640", "U+FE0F"], "🏊♀️", "woman swimming"], [["U+26F9"], "⛹", "person bouncing ball"], [["U+26F9", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "⛹️♂️", "man bouncing ball"], [["U+26F9", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "⛹️♀️", "woman bouncing ball"], [["U+1F3CB"], "🏋", "person lifting weights"], [["U+1F3CB", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "🏋️♂️", "man lifting weights"], [["U+1F3CB", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "🏋️♀️", "woman lifting weights"], [["U+1F6B4"], "🚴", "person biking"], [["U+1F6B4", "U+200D", "U+2642", "U+FE0F"], "🚴♂️", "man biking"], [["U+1F6B4", "U+200D", "U+2640", "U+FE0F"], "🚴♀️", "woman biking"], [["U+1F6B5"], "🚵", "person mountain biking"], [["U+1F6B5", "U+200D", "U+2642", "U+FE0F"], "🚵♂️", "man mountain biking"], [["U+1F6B5", "U+200D", "U+2640", "U+FE0F"], "🚵♀️", "woman mountain biking"], [["U+1F938"], "🤸", "person cartwheeling"], [["U+1F938", "U+200D", "U+2642", "U+FE0F"], "🤸♂️", "man cartwheeling"], [["U+1F938", "U+200D", "U+2640", "U+FE0F"], "🤸♀️", "woman cartwheeling"], [["U+1F93C"], "🤼", "people wrestling"], [["U+1F93C", "U+200D", "U+2642", "U+FE0F"], "🤼♂️", "men wrestling"], [["U+1F93C", "U+200D", "U+2640", "U+FE0F"], "🤼♀️", "women wrestling"], [["U+1F93D"], "🤽", "person playing water polo"], [["U+1F93D", "U+200D", "U+2642", "U+FE0F"], "🤽♂️", "man playing water polo"], [["U+1F93D", "U+200D", "U+2640", "U+FE0F"], "🤽♀️", "woman playing water polo"], [["U+1F93E"], "🤾", "person playing handball"], [["U+1F93E", "U+200D", "U+2642", "U+FE0F"], "🤾♂️", "man playing handball"], [["U+1F93E", "U+200D", "U+2640", "U+FE0F"], "🤾♀️", "woman playing handball"], [["U+1F939"], "🤹", "person juggling"], [["U+1F939", "U+200D", "U+2642", "U+FE0F"], "🤹♂️", "man juggling"], [["U+1F939", "U+200D", "U+2640", "U+FE0F"], "🤹♀️", "woman juggling"]]], ["person-resting", [[["U+1F9D8"], "🧘", "person in lotus position"], [["U+1F9D8", "U+200D", "U+2642", "U+FE0F"], "🧘♂️", "man in lotus position"], [["U+1F9D8", "U+200D", "U+2640", "U+FE0F"], "🧘♀️", "woman in lotus position"], [["U+1F6C0"], "🛀", "person taking bath"], [["U+1F6CC"], "🛌", "person in bed"]]], ["family", [[["U+1F9D1", "U+200D", "U+1F91D", "U+200D", "U+1F9D1"], "🧑🤝🧑", "people holding hands"], [["U+1F46D"], "👭", "women holding hands"], [["U+1F46B"], "👫", "woman and man holding hands"], [["U+1F46C"], "👬", "men holding hands"], [["U+1F48F"], "💏", "kiss"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F48B", "U+200D", "U+1F468"], "👩❤️💋👨", "kiss: woman, man"], [["U+1F468", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F48B", "U+200D", "U+1F468"], "👨❤️💋👨", "kiss: man, man"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F48B", "U+200D", "U+1F469"], "👩❤️💋👩", "kiss: woman, woman"], [["U+1F491"], "💑", "couple with heart"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F468"], "👩❤️👨", "couple with heart: woman, man"], [["U+1F468", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F468"], "👨❤️👨", "couple with heart: man, man"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F469"], "👩❤️👩", "couple with heart: woman, woman"], [["U+1F46A"], "👪", "family"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F466"], "👨👩👦", "family: man, woman, boy"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F467"], "👨👩👧", "family: man, woman, girl"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👨👩👧👦", "family: man, woman, girl, boy"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👨👩👦👦", "family: man, woman, boy, boy"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👨👩👧👧", "family: man, woman, girl, girl"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F466"], "👨👨👦", "family: man, man, boy"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F467"], "👨👨👧", "family: man, man, girl"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👨👨👧👦", "family: man, man, girl, boy"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👨👨👦👦", "family: man, man, boy, boy"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👨👨👧👧", "family: man, man, girl, girl"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F466"], "👩👩👦", "family: woman, woman, boy"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F467"], "👩👩👧", "family: woman, woman, girl"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👩👩👧👦", "family: woman, woman, girl, boy"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👩👩👦👦", "family: woman, woman, boy, boy"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👩👩👧👧", "family: woman, woman, girl, girl"], [["U+1F468", "U+200D", "U+1F466"], "👨👦", "family: man, boy"], [["U+1F468", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👨👦👦", "family: man, boy, boy"], [["U+1F468", "U+200D", "U+1F467"], "👨👧", "family: man, girl"], [["U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👨👧👦", "family: man, girl, boy"], [["U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👨👧👧", "family: man, girl, girl"], [["U+1F469", "U+200D", "U+1F466"], "👩👦", "family: woman, boy"], [["U+1F469", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👩👦👦", "family: woman, boy, boy"], [["U+1F469", "U+200D", "U+1F467"], "👩👧", "family: woman, girl"], [["U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👩👧👦", "family: woman, girl, boy"], [["U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👩👧👧", "family: woman, girl, girl"]]], ["person-symbol", [[["U+1F5E3"], "🗣", "speaking head"], [["U+1F464"], "👤", "bust in silhouette"], [["U+1F465"], "👥", "busts in silhouette"], [["U+1FAC2"], "🫂", "⊛ people hugging"], [["U+1F463"], "👣", "footprints"]]]]], ["Component", [["hair-style", [[["U+1F9B0"], "🦰", "red hair"], [["U+1F9B1"], "🦱", "curly hair"], [["U+1F9B3"], "🦳", "white hair"], [["U+1F9B2"], "🦲", "bald"]]]]], ["Animals & Nature", [["animal-mammal", [[["U+1F435"], "🐵", "monkey face"], [["U+1F412"], "🐒", "monkey"], [["U+1F98D"], "🦍", "gorilla"], [["U+1F9A7"], "🦧", "orangutan"], [["U+1F436"], "🐶", "dog face"], [["U+1F415"], "🐕", "dog"], [["U+1F9AE"], "🦮", "guide dog"], [["U+1F415", "U+200D", "U+1F9BA"], "🐕🦺", "service dog"], [["U+1F429"], "🐩", "poodle"], [["U+1F43A"], "🐺", "wolf"], [["U+1F98A"], "🦊", "fox"], [["U+1F99D"], "🦝", "raccoon"], [["U+1F431"], "🐱", "cat face"], [["U+1F408"], "🐈", "cat"], [["U+1F981"], "🦁", "lion"], [["U+1F42F"], "🐯", "tiger face"], [["U+1F405"], "🐅", "tiger"], [["U+1F406"], "🐆", "leopard"], [["U+1F434"], "🐴", "horse face"], [["U+1F40E"], "🐎", "horse"], [["U+1F984"], "🦄", "unicorn"], [["U+1F993"], "🦓", "zebra"], [["U+1F98C"], "🦌", "deer"], [["U+1F42E"], "🐮", "cow face"], [["U+1F402"], "🐂", "ox"], [["U+1F403"], "🐃", "water buffalo"], [["U+1F404"], "🐄", "cow"], [["U+1F437"], "🐷", "pig face"], [["U+1F416"], "🐖", "pig"], [["U+1F417"], "🐗", "boar"], [["U+1F43D"], "🐽", "pig nose"], [["U+1F40F"], "🐏", "ram"], [["U+1F411"], "🐑", "ewe"], [["U+1F410"], "🐐", "goat"], [["U+1F42A"], "🐪", "camel"], [["U+1F42B"], "🐫", "two-hump camel"], [["U+1F999"], "🦙", "llama"], [["U+1F992"], "🦒", "giraffe"], [["U+1F418"], "🐘", "elephant"], [["U+1F98F"], "🦏", "rhinoceros"], [["U+1F99B"], "🦛", "hippopotamus"], [["U+1F42D"], "🐭", "mouse face"], [["U+1F401"], "🐁", "mouse"], [["U+1F400"], "🐀", "rat"], [["U+1F439"], "🐹", "hamster"], [["U+1F430"], "🐰", "rabbit face"], [["U+1F407"], "🐇", "rabbit"], [["U+1F43F"], "🐿", "chipmunk"], [["U+1F994"], "🦔", "hedgehog"], [["U+1F987"], "🦇", "bat"], [["U+1F43B"], "🐻", "bear"], [["U+1F43B", "U+200D", "U+2744", "U+FE0F"], "🐻❄️", "⊛ polar bear"], [["U+1F428"], "🐨", "koala"], [["U+1F43C"], "🐼", "panda"], [["U+1F9A5"], "🦥", "sloth"], [["U+1F9A6"], "🦦", "otter"], [["U+1F9A8"], "🦨", "skunk"], [["U+1F998"], "🦘", "kangaroo"], [["U+1F9A1"], "🦡", "badger"], [["U+1F43E"], "🐾", "paw prints"]]], ["animal-bird", [[["U+1F983"], "🦃", "turkey"], [["U+1F414"], "🐔", "chicken"], [["U+1F413"], "🐓", "rooster"], [["U+1F423"], "🐣", "hatching chick"], [["U+1F424"], "🐤", "baby chick"], [["U+1F425"], "🐥", "front-facing baby chick"], [["U+1F426"], "🐦", "bird"], [["U+1F427"], "🐧", "penguin"], [["U+1F54A"], "🕊", "dove"], [["U+1F985"], "🦅", "eagle"], [["U+1F986"], "🦆", "duck"], [["U+1F9A2"], "🦢", "swan"], [["U+1F989"], "🦉", "owl"], [["U+1FAB6"], "🪶", "⊛ feather"], [["U+1F9A9"], "🦩", "flamingo"], [["U+1F99A"], "🦚", "peacock"], [["U+1F99C"], "🦜", "parrot"]]], ["animal-amphibian", [[["U+1F438"], "🐸", "frog"]]], ["animal-reptile", [[["U+1F40A"], "🐊", "crocodile"], [["U+1F422"], "🐢", "turtle"], [["U+1F98E"], "🦎", "lizard"], [["U+1F40D"], "🐍", "snake"], [["U+1F432"], "🐲", "dragon face"], [["U+1F409"], "🐉", "dragon"], [["U+1F995"], "🦕", "sauropod"], [["U+1F996"], "🦖", "T-Rex"]]], ["animal-marine", [[["U+1F433"], "🐳", "spouting whale"], [["U+1F40B"], "🐋", "whale"], [["U+1F42C"], "🐬", "dolphin"], [["U+1F41F"], "🐟", "fish"], [["U+1F420"], "🐠", "tropical fish"], [["U+1F421"], "🐡", "blowfish"], [["U+1F988"], "🦈", "shark"], [["U+1F419"], "🐙", "octopus"], [["U+1F41A"], "🐚", "spiral shell"]]], ["animal-bug", [[["U+1F40C"], "🐌", "snail"], [["U+1F98B"], "🦋", "butterfly"], [["U+1F41B"], "🐛", "bug"], [["U+1F41C"], "🐜", "ant"], [["U+1F41D"], "🐝", "honeybee"], [["U+1F41E"], "🐞", "lady beetle"], [["U+1F997"], "🦗", "cricket"], [["U+1F577"], "🕷", "spider"], [["U+1F578"], "🕸", "spider web"], [["U+1F982"], "🦂", "scorpion"], [["U+1F99F"], "🦟", "mosquito"], [["U+1F9A0"], "🦠", "microbe"]]], ["plant-flower", [[["U+1F490"], "💐", "bouquet"], [["U+1F338"], "🌸", "cherry blossom"], [["U+1F4AE"], "💮", "white flower"], [["U+1F3F5"], "🏵", "rosette"], [["U+1F339"], "🌹", "rose"], [["U+1F940"], "🥀", "wilted flower"], [["U+1F33A"], "🌺", "hibiscus"], [["U+1F33B"], "🌻", "sunflower"], [["U+1F33C"], "🌼", "blossom"], [["U+1F337"], "🌷", "tulip"]]], ["plant-other", [[["U+1F331"], "🌱", "seedling"], [["U+1FAB4"], "🪴", "⊛ potted plant"], [["U+1F332"], "🌲", "evergreen tree"], [["U+1F333"], "🌳", "deciduous tree"], [["U+1F334"], "🌴", "palm tree"], [["U+1F335"], "🌵", "cactus"], [["U+1F33E"], "🌾", "sheaf of rice"], [["U+1F33F"], "🌿", "herb"], [["U+2618"], "☘", "shamrock"], [["U+1F340"], "🍀", "four leaf clover"], [["U+1F341"], "🍁", "maple leaf"], [["U+1F342"], "🍂", "fallen leaf"], [["U+1F343"], "🍃", "leaf fluttering in wind"]]]]], ["Food & Drink", [["food-fruit", [[["U+1F347"], "🍇", "grapes"], [["U+1F348"], "🍈", "melon"], [["U+1F349"], "🍉", "watermelon"], [["U+1F34A"], "🍊", "tangerine"], [["U+1F34B"], "🍋", "lemon"], [["U+1F34C"], "🍌", "banana"], [["U+1F34D"], "🍍", "pineapple"], [["U+1F96D"], "🥭", "mango"], [["U+1F34E"], "🍎", "red apple"], [["U+1F34F"], "🍏", "green apple"], [["U+1F350"], "🍐", "pear"], [["U+1F351"], "🍑", "peach"], [["U+1F352"], "🍒", "cherries"], [["U+1F353"], "🍓", "strawberry"], [["U+1FAD0"], "🫐", "⊛ blueberries"], [["U+1F95D"], "🥝", "kiwi fruit"], [["U+1F345"], "🍅", "tomato"], [["U+1FAD2"], "🫒", "⊛ olive"], [["U+1F965"], "🥥", "coconut"]]], ["food-vegetable", [[["U+1F951"], "🥑", "avocado"], [["U+1F346"], "🍆", "eggplant"], [["U+1F954"], "🥔", "potato"], [["U+1F955"], "🥕", "carrot"], [["U+1F33D"], "🌽", "ear of corn"], [["U+1F336"], "🌶", "hot pepper"], [["U+1F952"], "🥒", "cucumber"], [["U+1F96C"], "🥬", "leafy green"], [["U+1F966"], "🥦", "broccoli"], [["U+1F9C4"], "🧄", "garlic"], [["U+1F9C5"], "🧅", "onion"], [["U+1F344"], "🍄", "mushroom"], [["U+1F95C"], "🥜", "peanuts"], [["U+1F330"], "🌰", "chestnut"]]], ["food-prepared", [[["U+1F35E"], "🍞", "bread"], [["U+1F950"], "🥐", "croissant"], [["U+1F956"], "🥖", "baguette bread"], [["U+1FAD3"], "🫓", "⊛ flatbread"], [["U+1F968"], "🥨", "pretzel"], [["U+1F96F"], "🥯", "bagel"], [["U+1F95E"], "🥞", "pancakes"], [["U+1F9C7"], "🧇", "waffle"], [["U+1F9C0"], "🧀", "cheese wedge"], [["U+1F356"], "🍖", "meat on bone"], [["U+1F357"], "🍗", "poultry leg"], [["U+1F969"], "🥩", "cut of meat"], [["U+1F953"], "🥓", "bacon"], [["U+1F354"], "🍔", "hamburger"], [["U+1F35F"], "🍟", "french fries"], [["U+1F355"], "🍕", "pizza"], [["U+1F32D"], "🌭", "hot dog"], [["U+1F96A"], "🥪", "sandwich"], [["U+1F32E"], "🌮", "taco"], [["U+1F32F"], "🌯", "burrito"], [["U+1FAD4"], "🫔", "⊛ tamale"], [["U+1F959"], "🥙", "stuffed flatbread"], [["U+1F9C6"], "🧆", "falafel"], [["U+1F95A"], "🥚", "egg"], [["U+1F373"], "🍳", "cooking"], [["U+1F958"], "🥘", "shallow pan of food"], [["U+1F372"], "🍲", "pot of food"], [["U+1FAD5"], "🫕", "⊛ fondue"], [["U+1F963"], "🥣", "bowl with spoon"], [["U+1F957"], "🥗", "green salad"], [["U+1F37F"], "🍿", "popcorn"], [["U+1F9C8"], "🧈", "butter"], [["U+1F9C2"], "🧂", "salt"], [["U+1F96B"], "🥫", "canned food"]]], ["food-asian", [[["U+1F371"], "🍱", "bento box"], [["U+1F358"], "🍘", "rice cracker"], [["U+1F359"], "🍙", "rice ball"], [["U+1F35A"], "🍚", "cooked rice"], [["U+1F35B"], "🍛", "curry rice"], [["U+1F35C"], "🍜", "steaming bowl"], [["U+1F35D"], "🍝", "spaghetti"], [["U+1F360"], "🍠", "roasted sweet potato"], [["U+1F362"], "🍢", "oden"], [["U+1F363"], "🍣", "sushi"], [["U+1F364"], "🍤", "fried shrimp"], [["U+1F365"], "🍥", "fish cake with swirl"], [["U+1F96E"], "🥮", "moon cake"], [["U+1F361"], "🍡", "dango"], [["U+1F95F"], "🥟", "dumpling"], [["U+1F960"], "🥠", "fortune cookie"], [["U+1F961"], "🥡", "takeout box"]]], ["food-marine", [[["U+1F980"], "🦀", "crab"], [["U+1F99E"], "🦞", "lobster"], [["U+1F990"], "🦐", "shrimp"], [["U+1F991"], "🦑", "squid"], [["U+1F9AA"], "🦪", "oyster"]]], ["food-sweet", [[["U+1F366"], "🍦", "soft ice cream"], [["U+1F367"], "🍧", "shaved ice"], [["U+1F368"], "🍨", "ice cream"], [["U+1F369"], "🍩", "doughnut"], [["U+1F36A"], "🍪", "cookie"], [["U+1F382"], "🎂", "birthday cake"], [["U+1F370"], "🍰", "shortcake"], [["U+1F9C1"], "🧁", "cupcake"], [["U+1F967"], "🥧", "pie"], [["U+1F36B"], "🍫", "chocolate bar"], [["U+1F36C"], "🍬", "candy"], [["U+1F36D"], "🍭", "lollipop"], [["U+1F36E"], "🍮", "custard"], [["U+1F36F"], "🍯", "honey pot"]]], ["drink", [[["U+1F37C"], "🍼", "baby bottle"], [["U+1F95B"], "🥛", "glass of milk"], [["U+2615"], "☕", "hot beverage"], [["U+1F375"], "🍵", "teacup without handle"], [["U+1F376"], "🍶", "sake"], [["U+1F37E"], "🍾", "bottle with popping cork"], [["U+1F377"], "🍷", "wine glass"], [["U+1F378"], "🍸", "cocktail glass"], [["U+1F379"], "🍹", "tropical drink"], [["U+1F37A"], "🍺", "beer mug"], [["U+1F37B"], "🍻", "clinking beer mugs"], [["U+1F942"], "🥂", "clinking glasses"], [["U+1F943"], "🥃", "tumbler glass"], [["U+1F964"], "🥤", "cup with straw"], [["U+1F9CB"], "🧋", "⊛ bubble tea"], [["U+1F9C3"], "🧃", "beverage box"], [["U+1F9C9"], "🧉", "mate"], [["U+1F9CA"], "🧊", "ice"]]], ["dishware", [[["U+1F962"], "🥢", "chopsticks"], [["U+1F37D"], "🍽", "fork and knife with plate"], [["U+1F374"], "🍴", "fork and knife"], [["U+1F944"], "🥄", "spoon"], [["U+1F52A"], "🔪", "kitchen knife"], [["U+1F3FA"], "🏺", "amphora"]]]]], ["Travel & Places", [["place-map", [[["U+1F30D"], "🌍", "globe showing Europe-Africa"], [["U+1F30E"], "🌎", "globe showing Americas"], [["U+1F30F"], "🌏", "globe showing Asia-Australia"], [["U+1F310"], "🌐", "globe with meridians"], [["U+1F5FA"], "🗺", "world map"], [["U+1F5FE"], "🗾", "map of Japan"], [["U+1F9ED"], "🧭", "compass"]]], ["place-geographic", [[["U+1F3D4"], "🏔", "snow-capped mountain"], [["U+26F0"], "⛰", "mountain"], [["U+1F30B"], "🌋", "volcano"], [["U+1F5FB"], "🗻", "mount fuji"], [["U+1F3D5"], "🏕", "camping"], [["U+1F3D6"], "🏖", "beach with umbrella"], [["U+1F3DC"], "🏜", "desert"], [["U+1F3DD"], "🏝", "desert island"], [["U+1F3DE"], "🏞", "national park"]]], ["place-building", [[["U+1F3DF"], "🏟", "stadium"], [["U+1F3DB"], "🏛", "classical building"], [["U+1F3D7"], "🏗", "building construction"], [["U+1F9F1"], "🧱", "brick"], [["U+1FAA8"], "🪨", "⊛ rock"], [["U+1FAB5"], "🪵", "⊛ wood"], [["U+1F3D8"], "🏘", "houses"], [["U+1F3DA"], "🏚", "derelict house"], [["U+1F3E0"], "🏠", "house"], [["U+1F3E1"], "🏡", "house with garden"], [["U+1F3E2"], "🏢", "office building"], [["U+1F3E3"], "🏣", "Japanese post office"], [["U+1F3E4"], "🏤", "post office"], [["U+1F3E5"], "🏥", "hospital"], [["U+1F3E6"], "🏦", "bank"], [["U+1F3E8"], "🏨", "hotel"], [["U+1F3E9"], "🏩", "love hotel"], [["U+1F3EA"], "🏪", "convenience store"], [["U+1F3EB"], "🏫", "school"], [["U+1F3EC"], "🏬", "department store"], [["U+1F3ED"], "🏭", "factory"], [["U+1F3EF"], "🏯", "Japanese castle"], [["U+1F3F0"], "🏰", "castle"], [["U+1F492"], "💒", "wedding"], [["U+1F5FC"], "🗼", "Tokyo tower"], [["U+1F5FD"], "🗽", "Statue of Liberty"]]], ["place-religious", [[["U+26EA"], "⛪", "church"], [["U+1F54C"], "🕌", "mosque"], [["U+1F6D5"], "🛕", "hindu temple"], [["U+1F54D"], "🕍", "synagogue"], [["U+26E9"], "⛩", "shinto shrine"], [["U+1F54B"], "🕋", "kaaba"]]], ["place-other", [[["U+26F2"], "⛲", "fountain"], [["U+26FA"], "⛺", "tent"], [["U+1F301"], "🌁", "foggy"], [["U+1F303"], "🌃", "night with stars"], [["U+1F3D9"], "🏙", "cityscape"], [["U+1F304"], "🌄", "sunrise over mountains"], [["U+1F305"], "🌅", "sunrise"], [["U+1F306"], "🌆", "cityscape at dusk"], [["U+1F307"], "🌇", "sunset"], [["U+1F309"], "🌉", "bridge at night"], [["U+2668"], "♨", "hot springs"], [["U+1F3A0"], "🎠", "carousel horse"], [["U+1F3A1"], "🎡", "ferris wheel"], [["U+1F3A2"], "🎢", "roller coaster"], [["U+1F488"], "💈", "barber pole"], [["U+1F3AA"], "🎪", "circus tent"]]], ["transport-ground", [[["U+1F682"], "🚂", "locomotive"], [["U+1F683"], "🚃", "railway car"], [["U+1F684"], "🚄", "high-speed train"], [["U+1F685"], "🚅", "bullet train"], [["U+1F686"], "🚆", "train"], [["U+1F687"], "🚇", "metro"], [["U+1F688"], "🚈", "light rail"], [["U+1F689"], "🚉", "station"], [["U+1F68A"], "🚊", "tram"], [["U+1F69D"], "🚝", "monorail"], [["U+1F69E"], "🚞", "mountain railway"], [["U+1F68B"], "🚋", "tram car"], [["U+1F68C"], "🚌", "bus"], [["U+1F68D"], "🚍", "oncoming bus"], [["U+1F68E"], "🚎", "trolleybus"], [["U+1F690"], "🚐", "minibus"], [["U+1F691"], "🚑", "ambulance"], [["U+1F692"], "🚒", "fire engine"], [["U+1F693"], "🚓", "police car"], [["U+1F694"], "🚔", "oncoming police car"], [["U+1F695"], "🚕", "taxi"], [["U+1F696"], "🚖", "oncoming taxi"], [["U+1F697"], "🚗", "automobile"], [["U+1F698"], "🚘", "oncoming automobile"], [["U+1F699"], "🚙", "sport utility vehicle"], [["U+1F69A"], "🚚", "delivery truck"], [["U+1F69B"], "🚛", "articulated lorry"], [["U+1F69C"], "🚜", "tractor"], [["U+1F3CE"], "🏎", "racing car"], [["U+1F3CD"], "🏍", "motorcycle"], [["U+1F6F5"], "🛵", "motor scooter"], [["U+1F9BD"], "🦽", "manual wheelchair"], [["U+1F9BC"], "🦼", "motorized wheelchair"], [["U+1F6FA"], "🛺", "auto rickshaw"], [["U+1F6B2"], "🚲", "bicycle"], [["U+1F6F4"], "🛴", "kick scooter"], [["U+1F6F9"], "🛹", "skateboard"], [["U+1F6FC"], "🛼", "⊛ roller skate"], [["U+1F68F"], "🚏", "bus stop"], [["U+1F6E3"], "🛣", "motorway"], [["U+1F6E4"], "🛤", "railway track"], [["U+1F6E2"], "🛢", "oil drum"], [["U+26FD"], "⛽", "fuel pump"], [["U+1F6A8"], "🚨", "police car light"], [["U+1F6A5"], "🚥", "horizontal traffic light"], [["U+1F6A6"], "🚦", "vertical traffic light"], [["U+1F6D1"], "🛑", "stop sign"], [["U+1F6A7"], "🚧", "construction"]]], ["transport-water", [[["U+2693"], "⚓", "anchor"], [["U+26F5"], "⛵", "sailboat"], [["U+1F6F6"], "🛶", "canoe"], [["U+1F6A4"], "🚤", "speedboat"], [["U+1F6F3"], "🛳", "passenger ship"], [["U+26F4"], "⛴", "ferry"], [["U+1F6E5"], "🛥", "motor boat"], [["U+1F6A2"], "🚢", "ship"]]], ["transport-air", [[["U+2708"], "✈", "airplane"], [["U+1F6E9"], "🛩", "small airplane"], [["U+1F6EB"], "🛫", "airplane departure"], [["U+1F6EC"], "🛬", "airplane arrival"], [["U+1FA82"], "🪂", "parachute"], [["U+1F4BA"], "💺", "seat"], [["U+1F681"], "🚁", "helicopter"], [["U+1F69F"], "🚟", "suspension railway"], [["U+1F6A0"], "🚠", "mountain cableway"], [["U+1F6A1"], "🚡", "aerial tramway"], [["U+1F6F0"], "🛰", "satellite"], [["U+1F680"], "🚀", "rocket"], [["U+1F6F8"], "🛸", "flying saucer"]]], ["hotel", [[["U+1F6CE"], "🛎", "bellhop bell"], [["U+1F9F3"], "🧳", "luggage"]]], ["time", [[["U+231B"], "⌛", "hourglass done"], [["U+23F3"], "⏳", "hourglass not done"], [["U+231A"], "⌚", "watch"], [["U+23F0"], "⏰", "alarm clock"], [["U+23F1"], "⏱", "stopwatch"], [["U+23F2"], "⏲", "timer clock"], [["U+1F570"], "🕰", "mantelpiece clock"], [["U+1F55B"], "🕛", "twelve o’clock"], [["U+1F567"], "🕧", "twelve-thirty"], [["U+1F550"], "🕐", "one o’clock"], [["U+1F55C"], "🕜", "one-thirty"], [["U+1F551"], "🕑", "two o’clock"], [["U+1F55D"], "🕝", "two-thirty"], [["U+1F552"], "🕒", "three o’clock"], [["U+1F55E"], "🕞", "three-thirty"], [["U+1F553"], "🕓", "four o’clock"], [["U+1F55F"], "🕟", "four-thirty"], [["U+1F554"], "🕔", "five o’clock"], [["U+1F560"], "🕠", "five-thirty"], [["U+1F555"], "🕕", "six o’clock"], [["U+1F561"], "🕡", "six-thirty"], [["U+1F556"], "🕖", "seven o’clock"], [["U+1F562"], "🕢", "seven-thirty"], [["U+1F557"], "🕗", "eight o’clock"], [["U+1F563"], "🕣", "eight-thirty"], [["U+1F558"], "🕘", "nine o’clock"], [["U+1F564"], "🕤", "nine-thirty"], [["U+1F559"], "🕙", "ten o’clock"], [["U+1F565"], "🕥", "ten-thirty"], [["U+1F55A"], "🕚", "eleven o’clock"], [["U+1F566"], "🕦", "eleven-thirty"]]], ["sky & weather", [[["U+1F311"], "🌑", "new moon"], [["U+1F312"], "🌒", "waxing crescent moon"], [["U+1F313"], "🌓", "first quarter moon"], [["U+1F314"], "🌔", "waxing gibbous moon"], [["U+1F315"], "🌕", "full moon"], [["U+1F316"], "🌖", "waning gibbous moon"], [["U+1F317"], "🌗", "last quarter moon"], [["U+1F318"], "🌘", "waning crescent moon"], [["U+1F319"], "🌙", "crescent moon"], [["U+1F31A"], "🌚", "new moon face"], [["U+1F31B"], "🌛", "first quarter moon face"], [["U+1F31C"], "🌜", "last quarter moon face"], [["U+1F321"], "🌡", "thermometer"], [["U+2600"], "☀", "sun"], [["U+1F31D"], "🌝", "full moon face"], [["U+1F31E"], "🌞", "sun with face"], [["U+1FA90"], "🪐", "ringed planet"], [["U+2B50"], "⭐", "star"], [["U+1F31F"], "🌟", "glowing star"], [["U+1F320"], "🌠", "shooting star"], [["U+1F30C"], "🌌", "milky way"], [["U+2601"], "☁", "cloud"], [["U+26C5"], "⛅", "sun behind cloud"], [["U+26C8"], "⛈", "cloud with lightning and rain"], [["U+1F324"], "🌤", "sun behind small cloud"], [["U+1F325"], "🌥", "sun behind large cloud"], [["U+1F326"], "🌦", "sun behind rain cloud"], [["U+1F327"], "🌧", "cloud with rain"], [["U+1F328"], "🌨", "cloud with snow"], [["U+1F329"], "🌩", "cloud with lightning"], [["U+1F32A"], "🌪", "tornado"], [["U+1F32B"], "🌫", "fog"], [["U+1F32C"], "🌬", "wind face"], [["U+1F300"], "🌀", "cyclone"], [["U+1F308"], "🌈", "rainbow"], [["U+1F302"], "🌂", "closed umbrella"], [["U+2602"], "☂", "umbrella"], [["U+2614"], "☔", "umbrella with rain drops"], [["U+26F1"], "⛱", "umbrella on ground"], [["U+26A1"], "⚡", "high voltage"], [["U+2744"], "❄", "snowflake"], [["U+2603"], "☃", "snowman"], [["U+26C4"], "⛄", "snowman without snow"], [["U+2604"], "☄", "comet"], [["U+1F525"], "🔥", "fire"], [["U+1F4A7"], "💧", "droplet"], [["U+1F30A"], "🌊", "water wave"]]]]], ["Activities", [["event", [[["U+1F383"], "🎃", "jack-o-lantern"], [["U+1F384"], "🎄", "Christmas tree"], [["U+1F386"], "🎆", "fireworks"], [["U+1F387"], "🎇", "sparkler"], [["U+1F9E8"], "🧨", "firecracker"], [["U+2728"], "✨", "sparkles"], [["U+1F388"], "🎈", "balloon"], [["U+1F389"], "🎉", "party popper"], [["U+1F38A"], "🎊", "confetti ball"], [["U+1F38B"], "🎋", "tanabata tree"], [["U+1F38D"], "🎍", "pine decoration"], [["U+1F38E"], "🎎", "Japanese dolls"], [["U+1F38F"], "🎏", "carp streamer"], [["U+1F390"], "🎐", "wind chime"], [["U+1F391"], "🎑", "moon viewing ceremony"], [["U+1F9E7"], "🧧", "red envelope"], [["U+1F380"], "🎀", "ribbon"], [["U+1F381"], "🎁", "wrapped gift"], [["U+1F397"], "🎗", "reminder ribbon"], [["U+1F39F"], "🎟", "admission tickets"], [["U+1F3AB"], "🎫", "ticket"]]], ["award-medal", [[["U+1F396"], "🎖", "military medal"], [["U+1F3C6"], "🏆", "trophy"], [["U+1F3C5"], "🏅", "sports medal"], [["U+1F947"], "🥇", "1st place medal"], [["U+1F948"], "🥈", "2nd place medal"], [["U+1F949"], "🥉", "3rd place medal"]]], ["sport", [[["U+26BD"], "⚽", "soccer ball"], [["U+26BE"], "⚾", "baseball"], [["U+1F94E"], "🥎", "softball"], [["U+1F3C0"], "🏀", "basketball"], [["U+1F3D0"], "🏐", "volleyball"], [["U+1F3C8"], "🏈", "american football"], [["U+1F3C9"], "🏉", "rugby football"], [["U+1F3BE"], "🎾", "tennis"], [["U+1F94F"], "🥏", "flying disc"], [["U+1F3B3"], "🎳", "bowling"], [["U+1F3CF"], "🏏", "cricket game"], [["U+1F3D1"], "🏑", "field hockey"], [["U+1F3D2"], "🏒", "ice hockey"], [["U+1F94D"], "🥍", "lacrosse"], [["U+1F3D3"], "🏓", "ping pong"], [["U+1F3F8"], "🏸", "badminton"], [["U+1F94A"], "🥊", "boxing glove"], [["U+1F94B"], "🥋", "martial arts uniform"], [["U+1F945"], "🥅", "goal net"], [["U+26F3"], "⛳", "flag in hole"], [["U+26F8"], "⛸", "ice skate"], [["U+1F3A3"], "🎣", "fishing pole"], [["U+1F93F"], "🤿", "diving mask"], [["U+1F3BD"], "🎽", "running shirt"], [["U+1F3BF"], "🎿", "skis"], [["U+1F6F7"], "🛷", "sled"], [["U+1F94C"], "🥌", "curling stone"]]], ["game", [[["U+1F3AF"], "🎯", "direct hit"], [["U+1FA80"], "🪀", "yo-yo"], [["U+1FA81"], "🪁", "kite"], [["U+1F3B1"], "🎱", "pool 8 ball"], [["U+1F52E"], "🔮", "crystal ball"], [["U+1FA84"], "🪄", "⊛ magic wand"], [["U+1F9FF"], "🧿", "nazar amulet"], [["U+1F3AE"], "🎮", "video game"], [["U+1F579"], "🕹", "joystick"], [["U+1F3B0"], "🎰", "slot machine"], [["U+1F3B2"], "🎲", "game die"], [["U+1F9E9"], "🧩", "puzzle piece"], [["U+1F9F8"], "🧸", "teddy bear"], [["U+1FA85"], "🪅", "⊛ piñata"], [["U+1FA86"], "🪆", "⊛ nesting dolls"], [["U+2660"], "♠", "spade suit"], [["U+2665"], "♥", "heart suit"], [["U+2666"], "♦", "diamond suit"], [["U+2663"], "♣", "club suit"], [["U+265F"], "♟", "chess pawn"], [["U+1F0CF"], "🃏", "joker"], [["U+1F004"], "🀄", "mahjong red dragon"], [["U+1F3B4"], "🎴", "flower playing cards"]]], ["arts & crafts", [[["U+1F3AD"], "🎭", "performing arts"], [["U+1F5BC"], "🖼", "framed picture"], [["U+1F3A8"], "🎨", "artist palette"], [["U+1F9F5"], "🧵", "thread"], [["U+1FAA1"], "🪡", "⊛ sewing needle"], [["U+1F9F6"], "🧶", "yarn"], [["U+1FAA2"], "🪢", "⊛ knot"]]]]], ["Objects", [["clothing", [[["U+1F453"], "👓", "glasses"], [["U+1F576"], "🕶", "sunglasses"], [["U+1F97D"], "🥽", "goggles"], [["U+1F97C"], "🥼", "lab coat"], [["U+1F9BA"], "🦺", "safety vest"], [["U+1F454"], "👔", "necktie"], [["U+1F455"], "👕", "t-shirt"], [["U+1F456"], "👖", "jeans"], [["U+1F9E3"], "🧣", "scarf"], [["U+1F9E4"], "🧤", "gloves"], [["U+1F9E5"], "🧥", "coat"], [["U+1F9E6"], "🧦", "socks"], [["U+1F457"], "👗", "dress"], [["U+1F458"], "👘", "kimono"], [["U+1F97B"], "🥻", "sari"], [["U+1FA71"], "🩱", "one-piece swimsuit"], [["U+1FA72"], "🩲", "briefs"], [["U+1FA73"], "🩳", "shorts"], [["U+1F459"], "👙", "bikini"], [["U+1F45A"], "👚", "woman’s clothes"], [["U+1F45B"], "👛", "purse"], [["U+1F45C"], "👜", "handbag"], [["U+1F45D"], "👝", "clutch bag"], [["U+1F6CD"], "🛍", "shopping bags"], [["U+1F392"], "🎒", "backpack"], [["U+1FA74"], "🩴", "⊛ thong sandal"], [["U+1F45E"], "👞", "man’s shoe"], [["U+1F45F"], "👟", "running shoe"], [["U+1F97E"], "🥾", "hiking boot"], [["U+1F97F"], "🥿", "flat shoe"], [["U+1F460"], "👠", "high-heeled shoe"], [["U+1F461"], "👡", "woman’s sandal"], [["U+1FA70"], "🩰", "ballet shoes"], [["U+1F462"], "👢", "woman’s boot"], [["U+1F451"], "👑", "crown"], [["U+1F452"], "👒", "woman’s hat"], [["U+1F3A9"], "🎩", "top hat"], [["U+1F393"], "🎓", "graduation cap"], [["U+1F9E2"], "🧢", "billed cap"], [["U+1FA96"], "🪖", "⊛ military helmet"], [["U+26D1"], "⛑", "rescue worker’s helmet"], [["U+1F4FF"], "📿", "prayer beads"], [["U+1F484"], "💄", "lipstick"], [["U+1F48D"], "💍", "ring"], [["U+1F48E"], "💎", "gem stone"]]], ["sound", [[["U+1F507"], "🔇", "muted speaker"], [["U+1F508"], "🔈", "speaker low volume"], [["U+1F509"], "🔉", "speaker medium volume"], [["U+1F50A"], "🔊", "speaker high volume"], [["U+1F4E2"], "📢", "loudspeaker"], [["U+1F4E3"], "📣", "megaphone"], [["U+1F4EF"], "📯", "postal horn"], [["U+1F514"], "🔔", "bell"], [["U+1F515"], "🔕", "bell with slash"]]], ["music", [[["U+1F3BC"], "🎼", "musical score"], [["U+1F3B5"], "🎵", "musical note"], [["U+1F3B6"], "🎶", "musical notes"], [["U+1F399"], "🎙", "studio microphone"], [["U+1F39A"], "🎚", "level slider"], [["U+1F39B"], "🎛", "control knobs"], [["U+1F3A4"], "🎤", "microphone"], [["U+1F3A7"], "🎧", "headphone"], [["U+1F4FB"], "📻", "radio"]]], ["musical-instrument", [[["U+1F3B7"], "🎷", "saxophone"], [["U+1FA97"], "🪗", "⊛ accordion"], [["U+1F3B8"], "🎸", "guitar"], [["U+1F3B9"], "🎹", "musical keyboard"], [["U+1F3BA"], "🎺", "trumpet"], [["U+1F3BB"], "🎻", "violin"], [["U+1FA95"], "🪕", "banjo"], [["U+1F941"], "🥁", "drum"], [["U+1FA98"], "🪘", "⊛ long drum"]]], ["phone", [[["U+1F4F1"], "📱", "mobile phone"], [["U+1F4F2"], "📲", "mobile phone with arrow"], [["U+260E"], "☎", "telephone"], [["U+1F4DE"], "📞", "telephone receiver"], [["U+1F4DF"], "📟", "pager"], [["U+1F4E0"], "📠", "fax machine"]]], ["computer", [[["U+1F50B"], "🔋", "battery"], [["U+1F50C"], "🔌", "electric plug"], [["U+1F4BB"], "💻", "laptop"], [["U+1F5A5"], "🖥", "desktop computer"], [["U+1F5A8"], "🖨", "printer"], [["U+2328"], "⌨", "keyboard"], [["U+1F5B1"], "🖱", "computer mouse"], [["U+1F5B2"], "🖲", "trackball"], [["U+1F4BD"], "💽", "computer disk"], [["U+1F4BE"], "💾", "floppy disk"], [["U+1F4BF"], "💿", "optical disk"], [["U+1F4C0"], "📀", "dvd"], [["U+1F9EE"], "🧮", "abacus"]]], ["light & video", [[["U+1F3A5"], "🎥", "movie camera"], [["U+1F39E"], "🎞", "film frames"], [["U+1F4FD"], "📽", "film projector"], [["U+1F3AC"], "🎬", "clapper board"], [["U+1F4FA"], "📺", "television"], [["U+1F4F7"], "📷", "camera"], [["U+1F4F8"], "📸", "camera with flash"], [["U+1F4F9"], "📹", "video camera"], [["U+1F4FC"], "📼", "videocassette"], [["U+1F50D"], "🔍", "magnifying glass tilted left"], [["U+1F50E"], "🔎", "magnifying glass tilted right"], [["U+1F56F"], "🕯", "candle"], [["U+1F4A1"], "💡", "light bulb"], [["U+1F526"], "🔦", "flashlight"], [["U+1F3EE"], "🏮", "red paper lantern"], [["U+1FA94"], "🪔", "diya lamp"]]], ["book-paper", [[["U+1F4D4"], "📔", "notebook with decorative cover"], [["U+1F4D5"], "📕", "closed book"], [["U+1F4D6"], "📖", "open book"], [["U+1F4D7"], "📗", "green book"], [["U+1F4D8"], "📘", "blue book"], [["U+1F4D9"], "📙", "orange book"], [["U+1F4DA"], "📚", "books"], [["U+1F4D3"], "📓", "notebook"], [["U+1F4D2"], "📒", "ledger"], [["U+1F4C3"], "📃", "page with curl"], [["U+1F4DC"], "📜", "scroll"], [["U+1F4C4"], "📄", "page facing up"], [["U+1F4F0"], "📰", "newspaper"], [["U+1F5DE"], "🗞", "rolled-up newspaper"], [["U+1F4D1"], "📑", "bookmark tabs"], [["U+1F516"], "🔖", "bookmark"], [["U+1F3F7"], "🏷", "label"]]], ["money", [[["U+1F4B0"], "💰", "money bag"], [["U+1FA99"], "🪙", "⊛ coin"], [["U+1F4B4"], "💴", "yen banknote"], [["U+1F4B5"], "💵", "dollar banknote"], [["U+1F4B6"], "💶", "euro banknote"], [["U+1F4B7"], "💷", "pound banknote"], [["U+1F4B8"], "💸", "money with wings"], [["U+1F4B3"], "💳", "credit card"], [["U+1F9FE"], "🧾", "receipt"], [["U+1F4B9"], "💹", "chart increasing with yen"]]], ["mail", [[["U+2709"], "✉", "envelope"], [["U+1F4E7"], "📧", "e-mail"], [["U+1F4E8"], "📨", "incoming envelope"], [["U+1F4E9"], "📩", "envelope with arrow"], [["U+1F4E4"], "📤", "outbox tray"], [["U+1F4E5"], "📥", "inbox tray"], [["U+1F4E6"], "📦", "package"], [["U+1F4EB"], "📫", "closed mailbox with raised flag"], [["U+1F4EA"], "📪", "closed mailbox with lowered flag"], [["U+1F4EC"], "📬", "open mailbox with raised flag"], [["U+1F4ED"], "📭", "open mailbox with lowered flag"], [["U+1F4EE"], "📮", "postbox"], [["U+1F5F3"], "🗳", "ballot box with ballot"]]], ["writing", [[["U+270F"], "✏", "pencil"], [["U+2712"], "✒", "black nib"], [["U+1F58B"], "🖋", "fountain pen"], [["U+1F58A"], "🖊", "pen"], [["U+1F58C"], "🖌", "paintbrush"], [["U+1F58D"], "🖍", "crayon"], [["U+1F4DD"], "📝", "memo"]]], ["office", [[["U+1F4BC"], "💼", "briefcase"], [["U+1F4C1"], "📁", "file folder"], [["U+1F4C2"], "📂", "open file folder"], [["U+1F5C2"], "🗂", "card index dividers"], [["U+1F4C5"], "📅", "calendar"], [["U+1F4C6"], "📆", "tear-off calendar"], [["U+1F5D2"], "🗒", "spiral notepad"], [["U+1F5D3"], "🗓", "spiral calendar"], [["U+1F4C7"], "📇", "card index"], [["U+1F4C8"], "📈", "chart increasing"], [["U+1F4C9"], "📉", "chart decreasing"], [["U+1F4CA"], "📊", "bar chart"], [["U+1F4CB"], "📋", "clipboard"], [["U+1F4CC"], "📌", "pushpin"], [["U+1F4CD"], "📍", "round pushpin"], [["U+1F4CE"], "📎", "paperclip"], [["U+1F587"], "🖇", "linked paperclips"], [["U+1F4CF"], "📏", "straight ruler"], [["U+1F4D0"], "📐", "triangular ruler"], [["U+2702"], "✂", "scissors"], [["U+1F5C3"], "🗃", "card file box"], [["U+1F5C4"], "🗄", "file cabinet"], [["U+1F5D1"], "🗑", "wastebasket"]]], ["lock", [[["U+1F512"], "🔒", "locked"], [["U+1F513"], "🔓", "unlocked"], [["U+1F50F"], "🔏", "locked with pen"], [["U+1F510"], "🔐", "locked with key"], [["U+1F511"], "🔑", "key"], [["U+1F5DD"], "🗝", "old key"]]], ["tool", [[["U+1F528"], "🔨", "hammer"], [["U+1FA93"], "🪓", "axe"], [["U+26CF"], "⛏", "pick"], [["U+2692"], "⚒", "hammer and pick"], [["U+1F6E0"], "🛠", "hammer and wrench"], [["U+1F5E1"], "🗡", "dagger"], [["U+2694"], "⚔", "crossed swords"], [["U+1F52B"], "🔫", "pistol"], [["U+1FA83"], "🪃", "⊛ boomerang"], [["U+1F3F9"], "🏹", "bow and arrow"], [["U+1F6E1"], "🛡", "shield"], [["U+1F527"], "🔧", "wrench"], [["U+1FA9B"], "🪛", "⊛ screwdriver"], [["U+1F529"], "🔩", "nut and bolt"], [["U+2699"], "⚙", "gear"], [["U+1F5DC"], "🗜", "clamp"], [["U+2696"], "⚖", "balance scale"], [["U+1F9AF"], "🦯", "white cane"], [["U+1F517"], "🔗", "link"], [["U+26D3"], "⛓", "chains"], [["U+1FA9D"], "🪝", "⊛ hook"], [["U+1F9F0"], "🧰", "toolbox"], [["U+1F9F2"], "🧲", "magnet"], [["U+1FA9C"], "🪜", "⊛ ladder"]]], ["science", [[["U+2697"], "⚗", "alembic"], [["U+1F9EA"], "🧪", "test tube"], [["U+1F9EB"], "🧫", "petri dish"], [["U+1F9EC"], "🧬", "dna"], [["U+1F52C"], "🔬", "microscope"], [["U+1F52D"], "🔭", "telescope"], [["U+1F4E1"], "📡", "satellite antenna"]]], ["medical", [[["U+1F489"], "💉", "syringe"], [["U+1FA78"], "🩸", "drop of blood"], [["U+1F48A"], "💊", "pill"], [["U+1FA79"], "🩹", "adhesive bandage"], [["U+1FA7A"], "🩺", "stethoscope"]]], ["household", [[["U+1F6AA"], "🚪", "door"], [["U+1F6D7"], "🛗", "⊛ elevator"], [["U+1F6CF"], "🛏", "bed"], [["U+1F6CB"], "🛋", "couch and lamp"], [["U+1FA91"], "🪑", "chair"], [["U+1F6BD"], "🚽", "toilet"], [["U+1FAA0"], "🪠", "⊛ plunger"], [["U+1F6BF"], "🚿", "shower"], [["U+1F6C1"], "🛁", "bathtub"], [["U+1FA92"], "🪒", "razor"], [["U+1F9F4"], "🧴", "lotion bottle"], [["U+1F9F7"], "🧷", "safety pin"], [["U+1F9F9"], "🧹", "broom"], [["U+1F9FA"], "🧺", "basket"], [["U+1F9FB"], "🧻", "roll of paper"], [["U+1FAA3"], "🪣", "⊛ bucket"], [["U+1F9FC"], "🧼", "soap"], [["U+1FAA5"], "🪥", "⊛ toothbrush"], [["U+1F9FD"], "🧽", "sponge"], [["U+1F9EF"], "🧯", "fire extinguisher"], [["U+1F6D2"], "🛒", "shopping cart"]]], ["other-object", [[["U+1F6AC"], "🚬", "cigarette"], [["U+26B0"], "⚰", "coffin"], [["U+26B1"], "⚱", "funeral urn"], [["U+1F5FF"], "🗿", "moai"], [["U+1FAA7"], "🪧", "⊛ placard"]]]]], ["Symbols", [["transport-sign", [[["U+1F3E7"], "🏧", "ATM sign"], [["U+1F6AE"], "🚮", "litter in bin sign"], [["U+1F6B0"], "🚰", "potable water"], [["U+267F"], "♿", "wheelchair symbol"], [["U+1F6B9"], "🚹", "men’s room"], [["U+1F6BA"], "🚺", "women’s room"], [["U+1F6BB"], "🚻", "restroom"], [["U+1F6BC"], "🚼", "baby symbol"], [["U+1F6BE"], "🚾", "water closet"], [["U+1F6C2"], "🛂", "passport control"], [["U+1F6C3"], "🛃", "customs"], [["U+1F6C4"], "🛄", "baggage claim"], [["U+1F6C5"], "🛅", "left luggage"]]], ["warning", [[["U+26A0"], "⚠", "warning"], [["U+1F6B8"], "🚸", "children crossing"], [["U+26D4"], "⛔", "no entry"], [["U+1F6AB"], "🚫", "prohibited"], [["U+1F6B3"], "🚳", "no bicycles"], [["U+1F6AD"], "🚭", "no smoking"], [["U+1F6AF"], "🚯", "no littering"], [["U+1F6B1"], "🚱", "non-potable water"], [["U+1F6B7"], "🚷", "no pedestrians"], [["U+1F4F5"], "📵", "no mobile phones"], [["U+1F51E"], "🔞", "no one under eighteen"], [["U+2622"], "☢", "radioactive"], [["U+2623"], "☣", "biohazard"]]], ["arrow", [[["U+2B06"], "⬆", "up arrow"], [["U+2197"], "↗", "up-right arrow"], [["U+27A1"], "➡", "right arrow"], [["U+2198"], "↘", "down-right arrow"], [["U+2B07"], "⬇", "down arrow"], [["U+2199"], "↙", "down-left arrow"], [["U+2B05"], "⬅", "left arrow"], [["U+2196"], "↖", "up-left arrow"], [["U+2195"], "↕", "up-down arrow"], [["U+2194"], "↔", "left-right arrow"], [["U+21A9"], "↩", "right arrow curving left"], [["U+21AA"], "↪", "left arrow curving right"], [["U+2934"], "⤴", "right arrow curving up"], [["U+2935"], "⤵", "right arrow curving down"], [["U+1F503"], "🔃", "clockwise vertical arrows"], [["U+1F504"], "🔄", "counterclockwise arrows button"], [["U+1F519"], "🔙", "BACK arrow"], [["U+1F51A"], "🔚", "END arrow"], [["U+1F51B"], "🔛", "ON! arrow"], [["U+1F51C"], "🔜", "SOON arrow"], [["U+1F51D"], "🔝", "TOP arrow"]]], ["religion", [[["U+1F6D0"], "🛐", "place of worship"], [["U+269B"], "⚛", "atom symbol"], [["U+1F549"], "🕉", "om"], [["U+2721"], "✡", "star of David"], [["U+2638"], "☸", "wheel of dharma"], [["U+262F"], "☯", "yin yang"], [["U+271D"], "✝", "latin cross"], [["U+2626"], "☦", "orthodox cross"], [["U+262A"], "☪", "star and crescent"], [["U+262E"], "☮", "peace symbol"], [["U+1F54E"], "🕎", "menorah"], [["U+1F52F"], "🔯", "dotted six-pointed star"]]], ["zodiac", [[["U+2648"], "♈", "Aries"], [["U+2649"], "♉", "Taurus"], [["U+264A"], "♊", "Gemini"], [["U+264B"], "♋", "Cancer"], [["U+264C"], "♌", "Leo"], [["U+264D"], "♍", "Virgo"], [["U+264E"], "♎", "Libra"], [["U+264F"], "♏", "Scorpio"], [["U+2650"], "♐", "Sagittarius"], [["U+2651"], "♑", "Capricorn"], [["U+2652"], "♒", "Aquarius"], [["U+2653"], "♓", "Pisces"], [["U+26CE"], "⛎", "Ophiuchus"]]], ["av-symbol", [[["U+1F500"], "🔀", "shuffle tracks button"], [["U+1F501"], "🔁", "repeat button"], [["U+1F502"], "🔂", "repeat single button"], [["U+25B6"], "▶", "play button"], [["U+23E9"], "⏩", "fast-forward button"], [["U+23ED"], "⏭", "next track button"], [["U+23EF"], "⏯", "play or pause button"], [["U+25C0"], "◀", "reverse button"], [["U+23EA"], "⏪", "fast reverse button"], [["U+23EE"], "⏮", "last track button"], [["U+1F53C"], "🔼", "upwards button"], [["U+23EB"], "⏫", "fast up button"], [["U+1F53D"], "🔽", "downwards button"], [["U+23EC"], "⏬", "fast down button"], [["U+23F8"], "⏸", "pause button"], [["U+23F9"], "⏹", "stop button"], [["U+23FA"], "⏺", "record button"], [["U+23CF"], "⏏", "eject button"], [["U+1F3A6"], "🎦", "cinema"], [["U+1F505"], "🔅", "dim button"], [["U+1F506"], "🔆", "bright button"], [["U+1F4F6"], "📶", "antenna bars"], [["U+1F4F3"], "📳", "vibration mode"], [["U+1F4F4"], "📴", "mobile phone off"]]], ["gender", [[["U+2640"], "♀", "female sign"], [["U+2642"], "♂", "male sign"], [["U+26A7"], "⚧", "⊛ transgender symbol"]]], ["math", [[["U+2716"], "✖", "multiply"], [["U+2795"], "➕", "plus"], [["U+2796"], "➖", "minus"], [["U+2797"], "➗", "divide"], [["U+267E"], "♾", "infinity"]]], ["punctuation", [[["U+203C"], "‼", "double exclamation mark"], [["U+2049"], "⁉", "exclamation question mark"], [["U+2753"], "❓", "question mark"], [["U+2754"], "❔", "white question mark"], [["U+2755"], "❕", "white exclamation mark"], [["U+2757"], "❗", "exclamation mark"], [["U+3030"], "〰", "wavy dash"]]], ["currency", [[["U+1F4B1"], "💱", "currency exchange"], [["U+1F4B2"], "💲", "heavy dollar sign"]]], ["other-symbol", [[["U+2695"], "⚕", "medical symbol"], [["U+267B"], "♻", "recycling symbol"], [["U+269C"], "⚜", "fleur-de-lis"], [["U+1F531"], "🔱", "trident emblem"], [["U+1F4DB"], "📛", "name badge"], [["U+1F530"], "🔰", "Japanese symbol for beginner"], [["U+2B55"], "⭕", "hollow red circle"], [["U+2705"], "✅", "check mark button"], [["U+2611"], "☑", "check box with check"], [["U+2714"], "✔", "check mark"], [["U+274C"], "❌", "cross mark"], [["U+274E"], "❎", "cross mark button"], [["U+27B0"], "➰", "curly loop"], [["U+27BF"], "➿", "double curly loop"], [["U+303D"], "〽", "part alternation mark"], [["U+2733"], "✳", "eight-spoked asterisk"], [["U+2734"], "✴", "eight-pointed star"], [["U+2747"], "❇", "sparkle"], [["U+00A9"], "©", "copyright"], [["U+00AE"], "®", "registered"], [["U+2122"], "™", "trade mark"]]], ["keycap", [[["U+0023", "U+FE0F", "U+20E3"], "#️⃣", "keycap: #"], [["U+002A", "U+FE0F", "U+20E3"], "*️⃣", "keycap: *"], [["U+0030", "U+FE0F", "U+20E3"], "0️⃣", "keycap: 0"], [["U+0031", "U+FE0F", "U+20E3"], "1️⃣", "keycap: 1"], [["U+0032", "U+FE0F", "U+20E3"], "2️⃣", "keycap: 2"], [["U+0033", "U+FE0F", "U+20E3"], "3️⃣", "keycap: 3"], [["U+0034", "U+FE0F", "U+20E3"], "4️⃣", "keycap: 4"], [["U+0035", "U+FE0F", "U+20E3"], "5️⃣", "keycap: 5"], [["U+0036", "U+FE0F", "U+20E3"], "6️⃣", "keycap: 6"], [["U+0037", "U+FE0F", "U+20E3"], "7️⃣", "keycap: 7"], [["U+0038", "U+FE0F", "U+20E3"], "8️⃣", "keycap: 8"], [["U+0039", "U+FE0F", "U+20E3"], "9️⃣", "keycap: 9"], [["U+1F51F"], "🔟", "keycap: 10"]]], ["alphanum", [[["U+1F520"], "🔠", "input latin uppercase"], [["U+1F521"], "🔡", "input latin lowercase"], [["U+1F522"], "🔢", "input numbers"], [["U+1F523"], "🔣", "input symbols"], [["U+1F524"], "🔤", "input latin letters"], [["U+1F170"], "🅰", "A button (blood type)"], [["U+1F18E"], "🆎", "AB button (blood type)"], [["U+1F171"], "🅱", "B button (blood type)"], [["U+1F191"], "🆑", "CL button"], [["U+1F192"], "🆒", "COOL button"], [["U+1F193"], "🆓", "FREE button"], [["U+2139"], "ℹ", "information"], [["U+1F194"], "🆔", "ID button"], [["U+24C2"], "Ⓜ", "circled M"], [["U+1F195"], "🆕", "NEW button"], [["U+1F196"], "🆖", "NG button"], [["U+1F17E"], "🅾", "O button (blood type)"], [["U+1F197"], "🆗", "OK button"], [["U+1F17F"], "🅿", "P button"], [["U+1F198"], "🆘", "SOS button"], [["U+1F199"], "🆙", "UP! button"], [["U+1F19A"], "🆚", "VS button"], [["U+1F201"], "🈁", "Japanese “here” button"], [["U+1F202"], "🈂", "Japanese “service charge” button"], [["U+1F237"], "🈷", "Japanese “monthly amount” button"], [["U+1F236"], "🈶", "Japanese “not free of charge” button"], [["U+1F22F"], "🈯", "Japanese “reserved” button"], [["U+1F250"], "🉐", "Japanese “bargain” button"], [["U+1F239"], "🈹", "Japanese “discount” button"], [["U+1F21A"], "🈚", "Japanese “free of charge” button"], [["U+1F232"], "🈲", "Japanese “prohibited” button"], [["U+1F251"], "🉑", "Japanese “acceptable” button"], [["U+1F238"], "🈸", "Japanese “application” button"], [["U+1F234"], "🈴", "Japanese “passing grade” button"], [["U+1F233"], "🈳", "Japanese “vacancy” button"], [["U+3297"], "㊗", "Japanese “congratulations” button"], [["U+3299"], "㊙", "Japanese “secret” button"], [["U+1F23A"], "🈺", "Japanese “open for business” button"], [["U+1F235"], "🈵", "Japanese “no vacancy” button"]]], ["geometric", [[["U+1F534"], "🔴", "red circle"], [["U+1F7E0"], "🟠", "orange circle"], [["U+1F7E1"], "🟡", "yellow circle"], [["U+1F7E2"], "🟢", "green circle"], [["U+1F535"], "🔵", "blue circle"], [["U+1F7E3"], "🟣", "purple circle"], [["U+1F7E4"], "🟤", "brown circle"], [["U+26AB"], "⚫", "black circle"], [["U+26AA"], "⚪", "white circle"], [["U+1F7E5"], "🟥", "red square"], [["U+1F7E7"], "🟧", "orange square"], [["U+1F7E8"], "🟨", "yellow square"], [["U+1F7E9"], "🟩", "green square"], [["U+1F7E6"], "🟦", "blue square"], [["U+1F7EA"], "🟪", "purple square"], [["U+1F7EB"], "🟫", "brown square"], [["U+2B1B"], "⬛", "black large square"], [["U+2B1C"], "⬜", "white large square"], [["U+25FC"], "◼", "black medium square"], [["U+25FB"], "◻", "white medium square"], [["U+25FE"], "◾", "black medium-small square"], [["U+25FD"], "◽", "white medium-small square"], [["U+25AA"], "▪", "black small square"], [["U+25AB"], "▫", "white small square"], [["U+1F536"], "🔶", "large orange diamond"], [["U+1F537"], "🔷", "large blue diamond"], [["U+1F538"], "🔸", "small orange diamond"], [["U+1F539"], "🔹", "small blue diamond"], [["U+1F53A"], "🔺", "red triangle pointed up"], [["U+1F53B"], "🔻", "red triangle pointed down"], [["U+1F4A0"], "💠", "diamond with a dot"], [["U+1F518"], "🔘", "radio button"], [["U+1F533"], "🔳", "white square button"], [["U+1F532"], "🔲", "black square button"]]]]], ["Flags", [["flag", [[["U+1F3C1"], "🏁", "chequered flag"], [["U+1F6A9"], "🚩", "triangular flag"], [["U+1F38C"], "🎌", "crossed flags"], [["U+1F3F4"], "🏴", "black flag"], [["U+1F3F3"], "🏳", "white flag"], [["U+1F3F3", "U+FE0F", "U+200D", "U+1F308"], "🏳️🌈", "rainbow flag"], [["U+1F3F3", "U+FE0F", "U+200D", "U+26A7", "U+FE0F"], "🏳️⚧️", "⊛ transgender flag"], [["U+1F3F4", "U+200D", "U+2620", "U+FE0F"], "🏴☠️", "pirate flag"]]], ["country-flag", [[["U+1F1E6", "U+1F1E8"], "🇦🇨", "flag: Ascension Island"], [["U+1F1E6", "U+1F1E9"], "🇦🇩", "flag: Andorra"], [["U+1F1E6", "U+1F1EA"], "🇦🇪", "flag: United Arab Emirates"], [["U+1F1E6", "U+1F1EB"], "🇦🇫", "flag: Afghanistan"], [["U+1F1E6", "U+1F1EC"], "🇦🇬", "flag: Antigua & Barbuda"], [["U+1F1E6", "U+1F1EE"], "🇦🇮", "flag: Anguilla"], [["U+1F1E6", "U+1F1F1"], "🇦🇱", "flag: Albania"], [["U+1F1E6", "U+1F1F2"], "🇦🇲", "flag: Armenia"], [["U+1F1E6", "U+1F1F4"], "🇦🇴", "flag: Angola"], [["U+1F1E6", "U+1F1F6"], "🇦🇶", "flag: Antarctica"], [["U+1F1E6", "U+1F1F7"], "🇦🇷", "flag: Argentina"], [["U+1F1E6", "U+1F1F8"], "🇦🇸", "flag: American Samoa"], [["U+1F1E6", "U+1F1F9"], "🇦🇹", "flag: Austria"], [["U+1F1E6", "U+1F1FA"], "🇦🇺", "flag: Australia"], [["U+1F1E6", "U+1F1FC"], "🇦🇼", "flag: Aruba"], [["U+1F1E6", "U+1F1FD"], "🇦🇽", "flag: Åland Islands"], [["U+1F1E6", "U+1F1FF"], "🇦🇿", "flag: Azerbaijan"], [["U+1F1E7", "U+1F1E6"], "🇧🇦", "flag: Bosnia & Herzegovina"], [["U+1F1E7", "U+1F1E7"], "🇧🇧", "flag: Barbados"], [["U+1F1E7", "U+1F1E9"], "🇧🇩", "flag: Bangladesh"], [["U+1F1E7", "U+1F1EA"], "🇧🇪", "flag: Belgium"], [["U+1F1E7", "U+1F1EB"], "🇧🇫", "flag: Burkina Faso"], [["U+1F1E7", "U+1F1EC"], "🇧🇬", "flag: Bulgaria"], [["U+1F1E7", "U+1F1ED"], "🇧🇭", "flag: Bahrain"], [["U+1F1E7", "U+1F1EE"], "🇧🇮", "flag: Burundi"], [["U+1F1E7", "U+1F1EF"], "🇧🇯", "flag: Benin"], [["U+1F1E7", "U+1F1F1"], "🇧🇱", "flag: St. Barthélemy"], [["U+1F1E7", "U+1F1F2"], "🇧🇲", "flag: Bermuda"], [["U+1F1E7", "U+1F1F3"], "🇧🇳", "flag: Brunei"], [["U+1F1E7", "U+1F1F4"], "🇧🇴", "flag: Bolivia"], [["U+1F1E7", "U+1F1F6"], "🇧🇶", "flag: Caribbean Netherlands"], [["U+1F1E7", "U+1F1F7"], "🇧🇷", "flag: Brazil"], [["U+1F1E7", "U+1F1F8"], "🇧🇸", "flag: Bahamas"], [["U+1F1E7", "U+1F1F9"], "🇧🇹", "flag: Bhutan"], [["U+1F1E7", "U+1F1FB"], "🇧🇻", "flag: Bouvet Island"], [["U+1F1E7", "U+1F1FC"], "🇧🇼", "flag: Botswana"], [["U+1F1E7", "U+1F1FE"], "🇧🇾", "flag: Belarus"], [["U+1F1E7", "U+1F1FF"], "🇧🇿", "flag: Belize"], [["U+1F1E8", "U+1F1E6"], "🇨🇦", "flag: Canada"], [["U+1F1E8", "U+1F1E8"], "🇨🇨", "flag: Cocos (Keeling) Islands"], [["U+1F1E8", "U+1F1E9"], "🇨🇩", "flag: Congo - Kinshasa"], [["U+1F1E8", "U+1F1EB"], "🇨🇫", "flag: Central African Republic"], [["U+1F1E8", "U+1F1EC"], "🇨🇬", "flag: Congo - Brazzaville"], [["U+1F1E8", "U+1F1ED"], "🇨🇭", "flag: Switzerland"], [["U+1F1E8", "U+1F1EE"], "🇨🇮", "flag: Côte d’Ivoire"], [["U+1F1E8", "U+1F1F0"], "🇨🇰", "flag: Cook Islands"], [["U+1F1E8", "U+1F1F1"], "🇨🇱", "flag: Chile"], [["U+1F1E8", "U+1F1F2"], "🇨🇲", "flag: Cameroon"], [["U+1F1E8", "U+1F1F3"], "🇨🇳", "flag: China"], [["U+1F1E8", "U+1F1F4"], "🇨🇴", "flag: Colombia"], [["U+1F1E8", "U+1F1F5"], "🇨🇵", "flag: Clipperton Island"], [["U+1F1E8", "U+1F1F7"], "🇨🇷", "flag: Costa Rica"], [["U+1F1E8", "U+1F1FA"], "🇨🇺", "flag: Cuba"], [["U+1F1E8", "U+1F1FB"], "🇨🇻", "flag: Cape Verde"], [["U+1F1E8", "U+1F1FC"], "🇨🇼", "flag: Curaçao"], [["U+1F1E8", "U+1F1FD"], "🇨🇽", "flag: Christmas Island"], [["U+1F1E8", "U+1F1FE"], "🇨🇾", "flag: Cyprus"], [["U+1F1E8", "U+1F1FF"], "🇨🇿", "flag: Czechia"], [["U+1F1E9", "U+1F1EA"], "🇩🇪", "flag: Germany"], [["U+1F1E9", "U+1F1EC"], "🇩🇬", "flag: Diego Garcia"], [["U+1F1E9", "U+1F1EF"], "🇩🇯", "flag: Djibouti"], [["U+1F1E9", "U+1F1F0"], "🇩🇰", "flag: Denmark"], [["U+1F1E9", "U+1F1F2"], "🇩🇲", "flag: Dominica"], [["U+1F1E9", "U+1F1F4"], "🇩🇴", "flag: Dominican Republic"], [["U+1F1E9", "U+1F1FF"], "🇩🇿", "flag: Algeria"], [["U+1F1EA", "U+1F1E6"], "🇪🇦", "flag: Ceuta & Melilla"], [["U+1F1EA", "U+1F1E8"], "🇪🇨", "flag: Ecuador"], [["U+1F1EA", "U+1F1EA"], "🇪🇪", "flag: Estonia"], [["U+1F1EA", "U+1F1EC"], "🇪🇬", "flag: Egypt"], [["U+1F1EA", "U+1F1ED"], "🇪🇭", "flag: Western Sahara"], [["U+1F1EA", "U+1F1F7"], "🇪🇷", "flag: Eritrea"], [["U+1F1EA", "U+1F1F8"], "🇪🇸", "flag: Spain"], [["U+1F1EA", "U+1F1F9"], "🇪🇹", "flag: Ethiopia"], [["U+1F1EA", "U+1F1FA"], "🇪🇺", "flag: European Union"], [["U+1F1EB", "U+1F1EE"], "🇫🇮", "flag: Finland"], [["U+1F1EB", "U+1F1EF"], "🇫🇯", "flag: Fiji"], [["U+1F1EB", "U+1F1F0"], "🇫🇰", "flag: Falkland Islands"], [["U+1F1EB", "U+1F1F2"], "🇫🇲", "flag: Micronesia"], [["U+1F1EB", "U+1F1F4"], "🇫🇴", "flag: Faroe Islands"], [["U+1F1EB", "U+1F1F7"], "🇫🇷", "flag: France"], [["U+1F1EC", "U+1F1E6"], "🇬🇦", "flag: Gabon"], [["U+1F1EC", "U+1F1E7"], "🇬🇧", "flag: United Kingdom"], [["U+1F1EC", "U+1F1E9"], "🇬🇩", "flag: Grenada"], [["U+1F1EC", "U+1F1EA"], "🇬🇪", "flag: Georgia"], [["U+1F1EC", "U+1F1EB"], "🇬🇫", "flag: French Guiana"], [["U+1F1EC", "U+1F1EC"], "🇬🇬", "flag: Guernsey"], [["U+1F1EC", "U+1F1ED"], "🇬🇭", "flag: Ghana"], [["U+1F1EC", "U+1F1EE"], "🇬🇮", "flag: Gibraltar"], [["U+1F1EC", "U+1F1F1"], "🇬🇱", "flag: Greenland"], [["U+1F1EC", "U+1F1F2"], "🇬🇲", "flag: Gambia"], [["U+1F1EC", "U+1F1F3"], "🇬🇳", "flag: Guinea"], [["U+1F1EC", "U+1F1F5"], "🇬🇵", "flag: Guadeloupe"], [["U+1F1EC", "U+1F1F6"], "🇬🇶", "flag: Equatorial Guinea"], [["U+1F1EC", "U+1F1F7"], "🇬🇷", "flag: Greece"], [["U+1F1EC", "U+1F1F8"], "🇬🇸", "flag: South Georgia & South Sandwich Islands"], [["U+1F1EC", "U+1F1F9"], "🇬🇹", "flag: Guatemala"], [["U+1F1EC", "U+1F1FA"], "🇬🇺", "flag: Guam"], [["U+1F1EC", "U+1F1FC"], "🇬🇼", "flag: Guinea-Bissau"], [["U+1F1EC", "U+1F1FE"], "🇬🇾", "flag: Guyana"], [["U+1F1ED", "U+1F1F0"], "🇭🇰", "flag: Hong Kong SAR China"], [["U+1F1ED", "U+1F1F2"], "🇭🇲", "flag: Heard & McDonald Islands"], [["U+1F1ED", "U+1F1F3"], "🇭🇳", "flag: Honduras"], [["U+1F1ED", "U+1F1F7"], "🇭🇷", "flag: Croatia"], [["U+1F1ED", "U+1F1F9"], "🇭🇹", "flag: Haiti"], [["U+1F1ED", "U+1F1FA"], "🇭🇺", "flag: Hungary"], [["U+1F1EE", "U+1F1E8"], "🇮🇨", "flag: Canary Islands"], [["U+1F1EE", "U+1F1E9"], "🇮🇩", "flag: Indonesia"], [["U+1F1EE", "U+1F1EA"], "🇮🇪", "flag: Ireland"], [["U+1F1EE", "U+1F1F1"], "🇮🇱", "flag: Israel"], [["U+1F1EE", "U+1F1F2"], "🇮🇲", "flag: Isle of Man"], [["U+1F1EE", "U+1F1F3"], "🇮🇳", "flag: India"], [["U+1F1EE", "U+1F1F4"], "🇮🇴", "flag: British Indian Ocean Territory"], [["U+1F1EE", "U+1F1F6"], "🇮🇶", "flag: Iraq"], [["U+1F1EE", "U+1F1F7"], "🇮🇷", "flag: Iran"], [["U+1F1EE", "U+1F1F8"], "🇮🇸", "flag: Iceland"], [["U+1F1EE", "U+1F1F9"], "🇮🇹", "flag: Italy"], [["U+1F1EF", "U+1F1EA"], "🇯🇪", "flag: Jersey"], [["U+1F1EF", "U+1F1F2"], "🇯🇲", "flag: Jamaica"], [["U+1F1EF", "U+1F1F4"], "🇯🇴", "flag: Jordan"], [["U+1F1EF", "U+1F1F5"], "🇯🇵", "flag: Japan"], [["U+1F1F0", "U+1F1EA"], "🇰🇪", "flag: Kenya"], [["U+1F1F0", "U+1F1EC"], "🇰🇬", "flag: Kyrgyzstan"], [["U+1F1F0", "U+1F1ED"], "🇰🇭", "flag: Cambodia"], [["U+1F1F0", "U+1F1EE"], "🇰🇮", "flag: Kiribati"], [["U+1F1F0", "U+1F1F2"], "🇰🇲", "flag: Comoros"], [["U+1F1F0", "U+1F1F3"], "🇰🇳", "flag: St. Kitts & Nevis"], [["U+1F1F0", "U+1F1F5"], "🇰🇵", "flag: North Korea"], [["U+1F1F0", "U+1F1F7"], "🇰🇷", "flag: South Korea"], [["U+1F1F0", "U+1F1FC"], "🇰🇼", "flag: Kuwait"], [["U+1F1F0", "U+1F1FE"], "🇰🇾", "flag: Cayman Islands"], [["U+1F1F0", "U+1F1FF"], "🇰🇿", "flag: Kazakhstan"], [["U+1F1F1", "U+1F1E6"], "🇱🇦", "flag: Laos"], [["U+1F1F1", "U+1F1E7"], "🇱🇧", "flag: Lebanon"], [["U+1F1F1", "U+1F1E8"], "🇱🇨", "flag: St. Lucia"], [["U+1F1F1", "U+1F1EE"], "🇱🇮", "flag: Liechtenstein"], [["U+1F1F1", "U+1F1F0"], "🇱🇰", "flag: Sri Lanka"], [["U+1F1F1", "U+1F1F7"], "🇱🇷", "flag: Liberia"], [["U+1F1F1", "U+1F1F8"], "🇱🇸", "flag: Lesotho"], [["U+1F1F1", "U+1F1F9"], "🇱🇹", "flag: Lithuania"], [["U+1F1F1", "U+1F1FA"], "🇱🇺", "flag: Luxembourg"], [["U+1F1F1", "U+1F1FB"], "🇱🇻", "flag: Latvia"], [["U+1F1F1", "U+1F1FE"], "🇱🇾", "flag: Libya"], [["U+1F1F2", "U+1F1E6"], "🇲🇦", "flag: Morocco"], [["U+1F1F2", "U+1F1E8"], "🇲🇨", "flag: Monaco"], [["U+1F1F2", "U+1F1E9"], "🇲🇩", "flag: Moldova"], [["U+1F1F2", "U+1F1EA"], "🇲🇪", "flag: Montenegro"], [["U+1F1F2", "U+1F1EB"], "🇲🇫", "flag: St. Martin"], [["U+1F1F2", "U+1F1EC"], "🇲🇬", "flag: Madagascar"], [["U+1F1F2", "U+1F1ED"], "🇲🇭", "flag: Marshall Islands"], [["U+1F1F2", "U+1F1F0"], "🇲🇰", "flag: North Macedonia"], [["U+1F1F2", "U+1F1F1"], "🇲🇱", "flag: Mali"], [["U+1F1F2", "U+1F1F2"], "🇲🇲", "flag: Myanmar (Burma)"], [["U+1F1F2", "U+1F1F3"], "🇲🇳", "flag: Mongolia"], [["U+1F1F2", "U+1F1F4"], "🇲🇴", "flag: Macao SAR China"], [["U+1F1F2", "U+1F1F5"], "🇲🇵", "flag: Northern Mariana Islands"], [["U+1F1F2", "U+1F1F6"], "🇲🇶", "flag: Martinique"], [["U+1F1F2", "U+1F1F7"], "🇲🇷", "flag: Mauritania"], [["U+1F1F2", "U+1F1F8"], "🇲🇸", "flag: Montserrat"], [["U+1F1F2", "U+1F1F9"], "🇲🇹", "flag: Malta"], [["U+1F1F2", "U+1F1FA"], "🇲🇺", "flag: Mauritius"], [["U+1F1F2", "U+1F1FB"], "🇲🇻", "flag: Maldives"], [["U+1F1F2", "U+1F1FC"], "🇲🇼", "flag: Malawi"], [["U+1F1F2", "U+1F1FD"], "🇲🇽", "flag: Mexico"], [["U+1F1F2", "U+1F1FE"], "🇲🇾", "flag: Malaysia"], [["U+1F1F2", "U+1F1FF"], "🇲🇿", "flag: Mozambique"], [["U+1F1F3", "U+1F1E6"], "🇳🇦", "flag: Namibia"], [["U+1F1F3", "U+1F1E8"], "🇳🇨", "flag: New Caledonia"], [["U+1F1F3", "U+1F1EA"], "🇳🇪", "flag: Niger"], [["U+1F1F3", "U+1F1EB"], "🇳🇫", "flag: Norfolk Island"], [["U+1F1F3", "U+1F1EC"], "🇳🇬", "flag: Nigeria"], [["U+1F1F3", "U+1F1EE"], "🇳🇮", "flag: Nicaragua"], [["U+1F1F3", "U+1F1F1"], "🇳🇱", "flag: Netherlands"], [["U+1F1F3", "U+1F1F4"], "🇳🇴", "flag: Norway"], [["U+1F1F3", "U+1F1F5"], "🇳🇵", "flag: Nepal"], [["U+1F1F3", "U+1F1F7"], "🇳🇷", "flag: Nauru"], [["U+1F1F3", "U+1F1FA"], "🇳🇺", "flag: Niue"], [["U+1F1F3", "U+1F1FF"], "🇳🇿", "flag: New Zealand"], [["U+1F1F4", "U+1F1F2"], "🇴🇲", "flag: Oman"], [["U+1F1F5", "U+1F1E6"], "🇵🇦", "flag: Panama"], [["U+1F1F5", "U+1F1EA"], "🇵🇪", "flag: Peru"], [["U+1F1F5", "U+1F1EB"], "🇵🇫", "flag: French Polynesia"], [["U+1F1F5", "U+1F1EC"], "🇵🇬", "flag: Papua New Guinea"], [["U+1F1F5", "U+1F1ED"], "🇵🇭", "flag: Philippines"], [["U+1F1F5", "U+1F1F0"], "🇵🇰", "flag: Pakistan"], [["U+1F1F5", "U+1F1F1"], "🇵🇱", "flag: Poland"], [["U+1F1F5", "U+1F1F2"], "🇵🇲", "flag: St. Pierre & Miquelon"], [["U+1F1F5", "U+1F1F3"], "🇵🇳", "flag: Pitcairn Islands"], [["U+1F1F5", "U+1F1F7"], "🇵🇷", "flag: Puerto Rico"], [["U+1F1F5", "U+1F1F8"], "🇵🇸", "flag: Palestinian Territories"], [["U+1F1F5", "U+1F1F9"], "🇵🇹", "flag: Portugal"], [["U+1F1F5", "U+1F1FC"], "🇵🇼", "flag: Palau"], [["U+1F1F5", "U+1F1FE"], "🇵🇾", "flag: Paraguay"], [["U+1F1F6", "U+1F1E6"], "🇶🇦", "flag: Qatar"], [["U+1F1F7", "U+1F1EA"], "🇷🇪", "flag: Réunion"], [["U+1F1F7", "U+1F1F4"], "🇷🇴", "flag: Romania"], [["U+1F1F7", "U+1F1F8"], "🇷🇸", "flag: Serbia"], [["U+1F1F7", "U+1F1FA"], "🇷🇺", "flag: Russia"], [["U+1F1F7", "U+1F1FC"], "🇷🇼", "flag: Rwanda"], [["U+1F1F8", "U+1F1E6"], "🇸🇦", "flag: Saudi Arabia"], [["U+1F1F8", "U+1F1E7"], "🇸🇧", "flag: Solomon Islands"], [["U+1F1F8", "U+1F1E8"], "🇸🇨", "flag: Seychelles"], [["U+1F1F8", "U+1F1E9"], "🇸🇩", "flag: Sudan"], [["U+1F1F8", "U+1F1EA"], "🇸🇪", "flag: Sweden"], [["U+1F1F8", "U+1F1EC"], "🇸🇬", "flag: Singapore"], [["U+1F1F8", "U+1F1ED"], "🇸🇭", "flag: St. Helena"], [["U+1F1F8", "U+1F1EE"], "🇸🇮", "flag: Slovenia"], [["U+1F1F8", "U+1F1EF"], "🇸🇯", "flag: Svalbard & Jan Mayen"], [["U+1F1F8", "U+1F1F0"], "🇸🇰", "flag: Slovakia"], [["U+1F1F8", "U+1F1F1"], "🇸🇱", "flag: Sierra Leone"], [["U+1F1F8", "U+1F1F2"], "🇸🇲", "flag: San Marino"], [["U+1F1F8", "U+1F1F3"], "🇸🇳", "flag: Senegal"], [["U+1F1F8", "U+1F1F4"], "🇸🇴", "flag: Somalia"], [["U+1F1F8", "U+1F1F7"], "🇸🇷", "flag: Suriname"], [["U+1F1F8", "U+1F1F8"], "🇸🇸", "flag: South Sudan"], [["U+1F1F8", "U+1F1F9"], "🇸🇹", "flag: São Tomé & Príncipe"], [["U+1F1F8", "U+1F1FB"], "🇸🇻", "flag: El Salvador"], [["U+1F1F8", "U+1F1FD"], "🇸🇽", "flag: Sint Maarten"], [["U+1F1F8", "U+1F1FE"], "🇸🇾", "flag: Syria"], [["U+1F1F8", "U+1F1FF"], "🇸🇿", "flag: Eswatini"], [["U+1F1F9", "U+1F1E6"], "🇹🇦", "flag: Tristan da Cunha"], [["U+1F1F9", "U+1F1E8"], "🇹🇨", "flag: Turks & Caicos Islands"], [["U+1F1F9", "U+1F1E9"], "🇹🇩", "flag: Chad"], [["U+1F1F9", "U+1F1EB"], "🇹🇫", "flag: French Southern Territories"], [["U+1F1F9", "U+1F1EC"], "🇹🇬", "flag: Togo"], [["U+1F1F9", "U+1F1ED"], "🇹🇭", "flag: Thailand"], [["U+1F1F9", "U+1F1EF"], "🇹🇯", "flag: Tajikistan"], [["U+1F1F9", "U+1F1F0"], "🇹🇰", "flag: Tokelau"], [["U+1F1F9", "U+1F1F1"], "🇹🇱", "flag: Timor-Leste"], [["U+1F1F9", "U+1F1F2"], "🇹🇲", "flag: Turkmenistan"], [["U+1F1F9", "U+1F1F3"], "🇹🇳", "flag: Tunisia"], [["U+1F1F9", "U+1F1F4"], "🇹🇴", "flag: Tonga"], [["U+1F1F9", "U+1F1F7"], "🇹🇷", "flag: Turkey"], [["U+1F1F9", "U+1F1F9"], "🇹🇹", "flag: Trinidad & Tobago"], [["U+1F1F9", "U+1F1FB"], "🇹🇻", "flag: Tuvalu"], [["U+1F1F9", "U+1F1FC"], "🇹🇼", "flag: Taiwan"], [["U+1F1F9", "U+1F1FF"], "🇹🇿", "flag: Tanzania"], [["U+1F1FA", "U+1F1E6"], "🇺🇦", "flag: Ukraine"], [["U+1F1FA", "U+1F1EC"], "🇺🇬", "flag: Uganda"], [["U+1F1FA", "U+1F1F2"], "🇺🇲", "flag: U.S. Outlying Islands"], [["U+1F1FA", "U+1F1F3"], "🇺🇳", "flag: United Nations"], [["U+1F1FA", "U+1F1F8"], "🇺🇸", "flag: United States"], [["U+1F1FA", "U+1F1FE"], "🇺🇾", "flag: Uruguay"], [["U+1F1FA", "U+1F1FF"], "🇺🇿", "flag: Uzbekistan"], [["U+1F1FB", "U+1F1E6"], "🇻🇦", "flag: Vatican City"], [["U+1F1FB", "U+1F1E8"], "🇻🇨", "flag: St. Vincent & Grenadines"], [["U+1F1FB", "U+1F1EA"], "🇻🇪", "flag: Venezuela"], [["U+1F1FB", "U+1F1EC"], "🇻🇬", "flag: British Virgin Islands"], [["U+1F1FB", "U+1F1EE"], "🇻🇮", "flag: U.S. Virgin Islands"], [["U+1F1FB", "U+1F1F3"], "🇻🇳", "flag: Vietnam"], [["U+1F1FB", "U+1F1FA"], "🇻🇺", "flag: Vanuatu"], [["U+1F1FC", "U+1F1EB"], "🇼🇫", "flag: Wallis & Futuna"], [["U+1F1FC", "U+1F1F8"], "🇼🇸", "flag: Samoa"], [["U+1F1FD", "U+1F1F0"], "🇽🇰", "flag: Kosovo"], [["U+1F1FE", "U+1F1EA"], "🇾🇪", "flag: Yemen"], [["U+1F1FE", "U+1F1F9"], "🇾🇹", "flag: Mayotte"], [["U+1F1FF", "U+1F1E6"], "🇿🇦", "flag: South Africa"], [["U+1F1FF", "U+1F1F2"], "🇿🇲", "flag: Zambia"], [["U+1F1FF", "U+1F1FC"], "🇿🇼", "flag: Zimbabwe"]]], ["subdivision-flag", [[["U+1F3F4", "U+E0067", "U+E0062", "U+E0065", "U+E006E", "U+E0067", "U+E007F"], "🏴", "flag: England"], [["U+1F3F4", "U+E0067", "U+E0062", "U+E0073", "U+E0063", "U+E0074", "U+E007F"], "🏴", "flag: Scotland"], [["U+1F3F4", "U+E0067", "U+E0062", "U+E0077", "U+E006C", "U+E0073", "U+E007F"], "🏴", "flag: Wales"]]]]]]; /* harmony default export */ var js_EmojiChars = (EmojiChars); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiAnims.js var EmojiAnims = [ [ "(heart)", "heart.png", "Heart" ], [ "(cool)", "cool.png", "Cool" ], [ "(hearteyes)", "hearteyes.png", "Heart eyes" ], [ "(stareyes)", "stareyes.png", "Star eyes" ], [ "(like)", "like.png", "Like" ], [ "(unamused)", "unamused.png", "Unamused" ], [ "(cwl)", "cwl.png", "Crying with laughter" ], [ "(xd)", "xd.png", "XD smiley" ], [ ":)", "smile.png", "Smile" ], [ ":(", "sad.png", "Sad" ], [ ":D", "laugh.png", "Laugh" ], [ ":O", "surprised.png", "Surprised" ], [ ";)", "wink.png", "Wink" ], [ ";(", "cry.png", "Crying" ], [ "(shivering)", "shivering.png", "Cold shivering" ], [ "(:|", "sweat.png", "Sweating" ], [ ":|", "speechless.png", "Speechless" ], [ ":P", "tongueout.png", "Cheeky" ], [ ":$", "blush.png", "Blushing" ], [ "(inlove)", "inlove.png", "In love" ], [ "(kiss)", "kiss.png", "Kiss" ], [ ":^)", "wonder.png", "Wondering" ], [ "|-)", "sleepy.png", "Sleepy" ], [ "|-(", "dull.png", "Dull" ], [ "(yawn)", "yawn.png", "Yawn" ], [ "(puke)", "puke.png", "Vomiting" ], [ "(doh)", "doh.png", "Doh!" ], [ "(angry)", "angry.png", "Angry" ], [ "(wasntme)", "wasntme.png", "It wasn't me!" ], [ "(worry)", "worry.png", "Worried" ], [ "(mm)", "mmm.png", "Mmmmm…" ], [ "(nerd)", "nerdy.png", "Nerdy" ], [ "(rainbowsmile)", "rainbowsmile.png", "Rainbow smile" ], [ ":x", "lipssealed.png", "My lips are sealed" ], [ "(devil)", "devil.png", "Devil" ], [ "(angel)", "angel.png", "Angel" ], [ "(envy)", "envy.png", "Envy" ], [ "(makeup)", "makeup.png", "Make-up" ], [ "(think)", "think.png", "Thinking" ], [ "(rofl)", "rofl.png", "Rolling on the floor laughing" ], [ "(happy)", "happy.png", "Happy" ], [ "(smirk)", "smirk.png", "Smirking" ], [ "(nod)", "nod.png", "Nodding" ], [ "(shake)", "shake.png", "Shake" ], [ "(waiting)", "waiting.png", "Waiting" ], [ "(emo)", "emo.png", "Emo" ], [ "(donttalk)", "donttalktome.png", "Don't talk to me" ], [ "(idea)", "idea.png", "Idea" ], [ "(talk)", "talk.png", "Talking" ], [ "(swear)", "swear.png", "Swearing" ], [ "]:)", "evilgrin.png", "Evil grin" ], [ "(headbang)", "headbang.png", "Banging head on wall" ], [ "(learn)", "learn.png", "Global Learning" ], [ "(headphones)", "headphones.png", "Listening to headphones" ], [ "(morningafter)", "hungover.png", "Morning after party" ], [ "(selfie)", "selfie.png", "Selfie" ], [ "(shock)", "shock.png", "Spoiler alert" ], [ "(llsshock)", "llsshock.png", "Spoiler alert" ], [ "(ttm)", "ttm.png", "Talking too much" ], [ "(dream)", "dream.png", "Dreaming" ], [ "(ill)", "ill.png", "Ill" ], [ "(tired)", "tired.png", "Tired" ], [ "(party)", "party.png", "Party" ], [ "(bandit)", "bandit.png", "Bandit" ], [ "(tauri)", "tauri.png", "Bald man with glasses" ], [ "(nazar)", "nazar.png", "Blessing" ], [ "(movember)", "movember.png", "Movember" ], [ "(mysteryskype)", "mysteryskype.png", "Mystery Skype" ], [ "(dotdfemale)", "dotdfemale.png", "Day of the dead" ], [ "(dotdmale)", "dotdmale.png", "Day of the dead" ], [ "(selfiediwali)", "selfiediwali.png", "Selfie Diwali" ], [ "(diwaliselfie)", "diwaliselfie.png", "Diwali selfie" ], [ "(steveaoki)", "steveaoki.png", "Steve Aoki" ], [ "(aokijump)", "aokijump.png", "Aoki jump" ], [ "(cakethrow)", "cakethrow.png", "Cake throw" ], [ "(kolony)", "kolony.png", "Kolony" ], [ "(joy)", "joy.png", "Joy" ], [ "(anger)", "anger.png", "Anger" ], [ "(sadness)", "sadness.png", "Sadness" ], [ "(disgust)", "disgust.png", "Disgust" ], [ "(fear)", "fear.png", "Fear" ], [ "(hestonfacepalm)", "hestonfacepalm.png", "Heston facepalm" ], [ "(heston)", "heston.png", "Heston Blumenthal" ], [ "(stormtrooper)", "stormtrooper.png", "Storm trooper" ], [ "(kyloren)", "kyloren.png", "Kylo Ren" ], [ "(captainphasma)", "captainphasma.png", "Captain Phasma" ], [ "(malthe)", "malthe.png", "Smiling man with glasses" ], [ "(ladyvamp)", "ladyvampire.png", "Lady vampire" ], [ "(vampire)", "vampire.png", "Vampire" ], [ "(ghost)", "ghost.png", "Ghost" ], [ "(skull)", "skull.png", "Skull" ], [ "(pumpkin)", "pumpkin.png", "Pumpkin" ], [ "(santa)", "santa.png", "Santa" ], [ "(xmascwl)", "xmascwl.png", "Xmas crying with laughter" ], [ "(festiveparty)", "festiveparty.png", "Festive party" ], [ "(holidayspirit)", "holidayspirit.png", "Holiday spirit" ], [ "(rudolfsurprise)", "rudolfsurprise.png", "Surprised Rudolf" ], [ "(rudolfidea)", "rudolfidea.png", "Rudolf idea" ], [ "(wtf)", "wtf.png", "WTF…" ], [ "(smoking)", "smoke.png", "Smoking" ], [ "(drunk)", "drunk.png", "Drunk" ], [ "(finger)", "finger.png", "Finger" ], [ "(oliver)", "oliver.png", "Man saying come on" ], [ "(xmassarcastic)", "xmassarcastic.png", "Xmas sarcastic" ], [ "(xmascry)", "xmascry.png", "Xmas cry" ], [ "(wave)", "hi.png", "Hi" ], [ "(highfive)", "highfive.png", "High five" ], [ "(clap)", "clap.png", "Clapping" ], [ "(sarcastic)", "sarcastic.png", "Sarcastic" ], [ "(chuckle)", "giggle.png", "Giggle" ], [ "(facepalm)", "facepalm.png", "Facepalm" ], [ "(rock)", "rock.png", "Rock" ], [ "(yn)", "fingerscrossed.png", "Fingers crossed" ], [ "(listening)", "listening.png", "Listening" ], [ "(wait)", "wait.png", "Wait" ], [ "(whew)", "whew.png", "Relieved" ], [ "(tmi)", "tmi.png", "Too much information" ], [ "(call)", "call.png", "Call" ], [ "(punch)", "punch.png", "Punch" ], [ "(talktothehand)", "talktothehand.png", "Talk to the hand" ], [ "(whistle)", "whistle.png", "Whistle" ], [ "(slap)", "slap.png", "Slap" ], [ "(lalala)", "lalala.png", "Lalala" ], [ "(y)", "yes.png", "Yes" ], [ "(n)", "no.png", "No" ], [ "(handshake)", "handshake.png", "Handshake" ], [ "(fistbump)", "fistbump.png", "Fist bump" ], [ "(poke)", "poke.png", "Poke" ], [ "(celebrate)", "handsinair.png", "Hands celebrating" ], [ "(hearthands)", "hearthands.png", "Heart hands" ], [ "(victory)", "victory.png", "Victory sign" ], [ "(noworries)", "noworries.png", "No worries" ], [ "(ok)", "ok.png", "OK" ], [ "(pray)", "praying.png", "Praying" ], [ "(flex)", "muscle.png", "Muscle" ], [ "(ek)", "naturescall.png", "Nature's call" ], [ "(woty)", "woty.png", "Woman of the year" ], [ "(glassceiling)", "glassceiling.png", "Glass ceiling" ], [ "(deadyes)", "deadyes.png", "Dead yes" ], [ "(xmasyes)", "xmasyes.png", "Xmas yes" ], [ "(dropthemic)", "dropthemic.png", "Drop the mic" ] ]; /* harmony default export */ var js_EmojiAnims = (EmojiAnims); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/autocompleteinput.css var autocompleteinput = __webpack_require__(59); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/adapter/SearchStringArrayAdapter.js /** * @typedef {Object} SearchArrayAdapterOption * @property {function} searchFuntion * * * * @param {Array<String>} arr * @param {SearchArrayAdapterOption} options not implement yet */ function SearchStringArrayAdapter(texts, options) { if (!this.queryItems) return new SearchStringArrayAdapter(texts, options); this.texts = texts; } SearchStringArrayAdapter.prototype.queryItems = function (query, mInput) { var query = query.toLocaleLowerCase(); return this.texts.map(function (text) { var start = text.toLocaleLowerCase().indexOf(query); if (start >= 0) { var hightlightedText = text.substr(0, start) + '<strong style="color:red">' + text.substr(start, query.length) + '</strong>' + text.substr(start + query.length); return { text: text, hightlightedText: hightlightedText } } else return null; }).filter(function (it) { return it !== null; }) }; SearchStringArrayAdapter.onAttached = function(parent){ this.parent = parent; }; SearchStringArrayAdapter.prototype.getItemText = function (item, mInput) { return item.text; }; SearchStringArrayAdapter.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) { if (reuseItem) { reuseItem.childNodes[0].innerHTML = item.hightlightedText; return reuseItem; } else return _({ tag: 'div', child: { tag: 'span', class: 'absol-autocomplete-input-item-text', props: { innerHTML: item.hightlightedText } } }) } /* harmony default export */ var adapter_SearchStringArrayAdapter = (SearchStringArrayAdapter); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/adapter/SearchObjectArrayAdapter.js /** * @typedef {Object} SearchObjectArrayAdapter * @property {function} getItemText * * * * @param {Array<Object>} arr * @param {SearchArrayAdapterOption} options */ function SearchObjectArrayAdapter(objects, options) { if (!this.queryItems) return new SearchObjectArrayAdapter(texts, options); this.objects = objects; this.options = options; } SearchObjectArrayAdapter.prototype.queryItems = function (query, mInput) { var query = query.toLocaleLowerCase(); return this.objects.map(function (object) { var text = this.getItemText(object); var start = text.toLocaleLowerCase().indexOf(query); if (start >= 0) { var hightlightedText = text.substr(0, start) + '<strong style="color:red">' + text.substr(start, query.length) + '</strong>' + text.substr(start + query.length); return Object.assign(object, { __hightlightedText__: hightlightedText }); } else return null; }.bind(this)).filter(function (it) { return it !== null; }) }; SearchObjectArrayAdapter.prototype.onAttached = function (parent) { this.parent = parent; parent.getSelectedObject = function () { if (this._selectedIndex >= 0) { return this.$poolItems[this._selectedIndex]._holderItem; } else { return null; } } }; SearchObjectArrayAdapter.prototype.getItemText = function (item, mInput) { if (this.options && this.options.getItemText) return this.options.getItemText.call(this, item, mInput); else if (typeof item.text == 'string') { return item.text; } else return item.toString(); }; SearchObjectArrayAdapter.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) { if (reuseItem) { reuseItem.childNodes[0].innerHTML = item.__hightlightedText__; return reuseItem; } else return _({ tag: 'div', child: { tag: 'span', props: { innerHTML: item.__hightlightedText__ } } }) } /* harmony default export */ var adapter_SearchObjectArrayAdapter = (SearchObjectArrayAdapter); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/AutoCompleteInput.js var AutoCompleteInput_ = ACore["c" /* default */]._; var AutoCompleteInput_$ = ACore["c" /* default */].$; function AutoCompleteInput() { this.$input = AutoCompleteInput_$('input', this) .on('keyup', this.eventHandler.keyup) .on('keydown', this.eventHandler.keydown) .on('focus', this.eventHandler.focus) .on('blur', this.eventHandler.blur); this.$dropdown = AutoCompleteInput_$('.absol-autocomplete-input-dropdown', this); this.$vscroller = AutoCompleteInput_$('bscroller', this).on('click', this.eventHandler.vscrollerClick); this.$poolItems = []; this._currentData = []; this._sessionIndex = 0; this._updatedSession = -1; this._cache = {}; OOP["a" /* default */].drillProperty(this, this.$input, 'value'); return this; } AutoCompleteInput.tag = 'AutoCompleteInput'; AutoCompleteInput.render = function () { return AutoCompleteInput_({ extendEvent: 'change', class: 'absol-autocomplete-input', child: [ 'input[type="text"].absol-autocomplete-input-text', { class: 'absol-autocomplete-input-dropdown', style: { display: 'none' }, child: { tag: 'bscroller', style: { 'max-height': '500px' } } } ] }); }; AutoCompleteInput.eventHandler = {}; AutoCompleteInput.eventHandler.keyup = function (event) { if (this._keyTimeout) { clearTimeout(this._keyTimeout); this._keyTimeout = 0; } var cTimeout = setTimeout(function () { clearTimeout(cTimeout); this.find(); }.bind(this), 300); if (this._cacheTimeout) { clearTimeout(this._cacheTimeout); this._cacheTimeout = 0; } var cacheTimeout = setTimeout(function () { clearTimeout(cacheTimeout); this.clearCache(); }.bind(this), 300); this._cacheTimeout = cacheTimeout; this._keyTimeout = cTimeout; }; AutoCompleteInput.eventHandler.blur = function () { this.removeClass('focus'); }; AutoCompleteInput.eventHandler.focus = function () { this.addClass('focus'); AutoCompleteInput_$(document.body).on('mousedown', this.eventHandler.clickOut); //todo } AutoCompleteInput.eventHandler.clickOut = function (event) { if (EventEmitter["b" /* default */].hitElement(this, event)) return; AutoCompleteInput_$(document.body).off('mousedown', this.eventHandler.clickOut); var text = this.$input.value; if (this._lastValue != text) { this._lastValue = text; this.$dropdown.addStyle('display', 'none'); this._lastValue = text; this.emit('change', { target: this, value: text }, this); } } AutoCompleteInput.eventHandler.vscrollerClick = function (event) { var current = event.target; while (current && !current.containsClass('absol-autocomplete-input-item') && current != this.$vscroller) { current = current.parentElement; } if (current && current._holderItem) { var text = this.getItemText(current._holderItem); this.$input.value = text; this._lastQuery = text; this._selectedIndex = current._holderIndex; this.$dropdown.addStyle('display', 'none'); this._lastValue = text; this.emit('change', { target: this, value: text }, this); } }; AutoCompleteInput.eventHandler.keydown = function (event) { var key = event.key; if (key == 'ArrowDown') { if (this._selectedIndex + 1 < this._currentData.length) { if (this.$poolItems[this._selectedIndex]) { this.$poolItems[this._selectedIndex].removeClass('active'); } this._selectedIndex += 1; if (this.$poolItems[this._selectedIndex]) { this.$poolItems[this._selectedIndex].addClass('active'); this.$vscroller.scrollInto(this.$poolItems[this._selectedIndex]); } } event.preventDefault(); } else if (key == 'ArrowUp') { if (this._selectedIndex - 1 >= 0) { if (this.$poolItems[this._selectedIndex]) { this.$poolItems[this._selectedIndex].removeClass('active'); } this._selectedIndex -= 1; if (this.$poolItems[this._selectedIndex]) { this.$poolItems[this._selectedIndex].addClass('active'); this.$vscroller.scrollInto(this.$poolItems[this._selectedIndex]); } } event.preventDefault(); } else if (key == 'Enter') { var text; if (this._currentData[this._selectedIndex] === undefined) { text = this.$input.value; } else { text = this.getItemText(this._currentData[this._selectedIndex]); this.$input.value = text; } this._lastQuery = text; this.$dropdown.addStyle('display', 'none'); this._lastValue = text; this.emit('change', { target: this, value: text }, this); } }; AutoCompleteInput.prototype.focus = function () { if (this.disabled) return; this.$input.focus.apply(this.$input, arguments); }; AutoCompleteInput.prototype.blur = function () { this.$input.blur.apply(this.$input, arguments); }; AutoCompleteInput.prototype.select = function () { this.$input.select.apply(this.$input, arguments); } AutoCompleteInput.prototype.find = function () { var query = this.$input.value; if (query == this._lastQuery) return; this._lastQuery = query; var currentSession = ++this._sessionIndex; if (!query) { this.pushData([], currentSession, query) return; } if (this.disableCache) { var onReciveData = function (data) { cacheHolder.data = data; this.pushData(data, currentSession, query);//sessionIndex may be change }.bind(this); var result = this.queryItems(query); if (typeof result.then == 'function') result.then(onReciveData); else onReciveData(result) } else { if (this._cache[query]) { this._cache[query].sessionIndex = currentSession; if (!this._cache[query].pending) { var data = this._cache[query].data; this.pushData(data, currentSession); } } else { var cacheHolder = { pending: true, sessionIndex: currentSession }; var onReciveData = function (data) { cacheHolder.data = data; cacheHolder.pending = false; this.pushData(data, cacheHolder.sessionIndex, query);//sessionIndex may be change }.bind(this); var result = this.queryItems(query); if (typeof result.then == 'function') result.then(onReciveData); else onReciveData(result) this._cache[query] = cacheHolder; } } }; AutoCompleteInput.prototype.pushData = function (data, sessionIndex, query) { if (sessionIndex > this._updatedSession) { this._updatedSession = sessionIndex; this.$vscroller.clearChild(); this._currentData = data; if (data && data.length > 0) { this.$dropdown.removeStyle('display'); } else { this.$dropdown.addStyle('display', 'none'); } var maxHeight = this.getComputedStyleValue('max-height'); if (maxHeight == 'none' || !maxHeight) { maxHeight = 10000; } else { maxHeight = parseFloat(maxHeight.replace('px', '')); } var outBound = Dom["b" /* default */].traceOutBoundingClientRect(this); var bound = this.$input.getBoundingClientRect(); var aTop = bound.top - outBound.top; var aBotom = outBound.bottom - bound.bottom; this.$dropdown.removeClass('top'); if (aTop > aBotom) { maxHeight = Math.min(maxHeight, aTop - 10); } else { maxHeight = Math.min(maxHeight, aBotom - 10); } this.$vscroller.addStyle('max-height', maxHeight + 'px'); this._selectedIndex = -1; data.reduce(function (sync, item, i, arr) { return sync.then(function () { if (this._updatedSession != sessionIndex) return; return new Promise(function (rs) { if (this._updatedSession != sessionIndex) return; var reuseItem = this.$poolItems.length > i ? this.$poolItems[i] : undefined; if (reuseItem) { reuseItem.removeClass('active'); } var newView = this.getItemView(item, i, AutoCompleteInput_, AutoCompleteInput_$, query, reuseItem, this); newView.addClass('absol-autocomplete-input-item'); newView._holderItem = item; newView._holderIndex = i; if (i == this._selectedIndex) newView.addClass('active'); if (this.$poolItems.length <= i) { this.$poolItems.push(newView); } else { this.$poolItems[i] = newView; } this.$vscroller.addChild(newView); if (i == 0) { var estimateHeight = newView.getBoundingClientRect().height * arr.length; if (aTop > aBotom && estimateHeight > aBotom) { this.$dropdown.addClass('top'); } } if (i >= 50 && i % 50 == 0) setTimeout(rs, 0); else rs(); }.bind(this)); }.bind(this)) }.bind(this), Promise.resolve()); } }; AutoCompleteInput.prototype.getItemText = function (item) { if (this.adapter && this.adapter.getItemText) { return this.adapter.getItemText(item, this); } else if (typeof item == 'string') { return item; } else { throw Error('You need adapter.getItemText(item, mAutoCompleteInput) to handle your item text!'); } } AutoCompleteInput.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent) { if (this.adapter && this.adapter.getItemView) { return this.adapter.getItemView(item, index, _, $, query, reuseItem, refParent, this); } else { var text = this.getItemText(item); if (reuseItem) { reuseItem.childNodes[0].innerHTML = text; return reuseItem; } return _({ child: { tag: 'span', class: 'absol-autocomplete-input-item-text', child: { text: text } } }); } }; /** * @param {String} query * @returns {Array} */ AutoCompleteInput.prototype.queryItems = function (query) { if (this.adapter && this.adapter.queryItems) { return this.adapter.queryItems(query, this); } else { throw new Error('Invalid adapter: queryItems(query, mAutoCompleteInput) not found!'); } }; AutoCompleteInput.prototype.clearCache = function (old) { if (typeof old != "number") old = 30; for (var key in this._cache) { var cacheHolder = this._cache[key]; if (this._sessionIndex - cacheHolder.sessionIndex > old) { delete this._cache[key]; } } } AutoCompleteInput.property = {}; AutoCompleteInput.property.adapter = { set: function (value) { if (value instanceof Array) { if (value[0] == 'SearchStringArray') { this._adapter = new adapter_SearchStringArrayAdapter(value[1], value[2]); } else if (value[0] == 'SearchObjectArray') { this._adapter = new adapter_SearchObjectArrayAdapter(value[1], value[2]); } else { throw new Error("Unknown adapter type name"); } } else { this._adapter = value; } if (this.adapter && this.adapter.onAttached) { this.adapter.onAttached(this); } }, get: function () { return this._adapter; } }; AutoCompleteInput.property.disabled = { set: function (value) { if (value) { this.addClass('absol-disabled'); } else { this.removeClass('absol-disabled'); } }, get: function () { return this.containsClass('absol-disabled'); } }; AutoCompleteInput.attribute = {}; AutoCompleteInput.attribute.disabled = { set: function (value) { if (value === true || value === 'true' || value === null) { this.disabled = true; } else { this.disabled = false; } }, get: function () { return this.disabled ? 'true' : 'false' }, remove: function () { this.disabled = false; } }; ACore["c" /* default */].install('AutoCompleteInput'.toLowerCase(), AutoCompleteInput); /* harmony default export */ var js_AutoCompleteInput = (AutoCompleteInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/boardtable.css var boardtable = __webpack_require__(30); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Board.js var Board_ = ACore["c" /* default */]._; var Board_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function Board() { } Board.tag = "board"; Board.render = function () { return Board_({ class: 'as-board', extendEvent: ['sizechange', 'changeposition'] }); }; Board.prototype.getParent = function () { var parent = this.parentElement; while (parent) { if (parent.classList.contains('ac-board-table')) return parent; parent = parent.parentElement; } return null; }; ACore["c" /* default */].install(Board); /* harmony default export */ var js_Board = (Board); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/utils.js function insertTextAtCursor(text) { var sel, range; if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); range.insertNode(document.createTextNode(text)); } } else if (document.selection && document.selection.createRange) { document.selection.createRange().text = text; } } function contenteditableTextOnly(element, processText) { if (element.__contenteditableTextOnly__) return; element.__contenteditableTextOnly__ = true; element.addEventListener("paste", function (e) { e.preventDefault(); if (e.clipboardData && e.clipboardData.getData) { var text = e.clipboardData.getData("text/plain"); if (processText) text = processText(text) document.execCommand("insertHTML", false, text); } else if (window.clipboardData && window.clipboardData.getData) { var text = window.clipboardData.getData("Text"); if (processText) text = processText(text) insertTextAtCursor(text); } }); } function getSelectionText() { var text = ""; var activeEl = document.activeElement; var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null; if ( (activeElTagName == "textarea") || (activeElTagName == "input" && /^(?:text|search|password|tel|url)$/i.test(activeEl.type)) && (typeof activeEl.selectionStart == "number") ) { text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd); } else if (window.getSelection) { text = window.getSelection().toString(); } return text; } /*** * * @param num * @param maxVal * @return {number} */ function positiveIntMod(num, maxVal) { if (maxVal <= 0) return 0; if (num >= 0 && num < maxVal) { return Math.floor(num); } else if (num === Infinity) { if (maxVal === Infinity) return Infinity; else return 0; } else if (num < 0) { return (num + (Math.ceil(-num / maxVal) * maxVal)) % maxVal; } else if (num >= maxVal) { return Math.floor(num) % maxVal } else return 0; } function utils_measureText(text, font) { // re-use canvas object for better performance var canvas = utils_measureText.canvas || (utils_measureText.canvas = document.createElement("canvas")); var context = canvas.getContext("2d"); if (font) context.font = font; var metrics = context.measureText(text); return metrics; } function utils_getCaretPosition(oField) { var iCaretPos = 0; if (document.selection) { oField.focus(); var oSel = document.selection.createRange(); oSel.moveStart('character', -oField.value.length); iCaretPos = oSel.text.length; } else if (oField.selectionStart || oField.selectionStart == '0') iCaretPos = oField.selectionDirection == 'backward' ? oField.selectionStart : oField.selectionEnd; return iCaretPos; } /** * * @param {AElement} elt */ function preventNotNumberInput(elt) { elt.addEventListener('keyup', function () { var lastValue = (elt.tagName === "DIV" || elt.tagName === "SPAN") ? elt.innerHTML : elt.attributes.value; var cValue = parseFloat(this.value); if (this.value != lastValue) { elt.attributes.value = cValue; elt.emit('change', cValue, elt); } }); elt.addEventListener("paste", function (e) { e.preventDefault(); var text = ""; if (e.clipboardData && e.clipboardData.getData) { text = e.clipboardData.getData("text/plain"); } else if (window.clipboardData && window.clipboardData.getData) { text = window.clipboardData.getData("Text"); } var matched = text.match(/[+-]?([0-9]*[.])?[0-9]+/); if (matched) { this.value = matched[0]; } }); elt.addEventListener('keydown', function (event) { var key = event.key; if (key && key.length == 1 && !event.ctrlKey && !event.altKey) { if (key.match(/[0-9.\-\+]/)) { if (key == '.' && this.value.indexOf('.') >= 0) event.preventDefault(); if ((key == '+' || key == '-') && (this.value.indexOf('+') >= 0 || this.value.indexOf('-') >= 0 || utils_getCaretPosition(this) > 0)) event.preventDefault(); } else event.preventDefault(); } }); } function buildCss(StyleSheet) { ACore["c" /* default */]._({ tag: 'style', props: { innerHTML: Object.keys(StyleSheet).map(function (key) { var style = StyleSheet[key]; return key + ' {\n' + Object.keys(style).map(function (propName) { return propName + ': ' + style[propName] + ';'; }).join('\n') + '}'; }).join('\n') } }).addTo(document.head); } /*** * * @param {"camera"|"microphone"|"camcorder"|{accept:("image/*"|"audio/*"|"video/*"|undefined), capture:boolean|undefined, multiple:boolean|undefined}|{}} props * @return {Promise<File[]>} */ function openFileDialog(props, unSafe) { return new Promise(function (resolve) { var input = ACore["c" /* default */]._({ tag: 'input', style: { display: 'none' }, attr: { type: 'file' } }).addTo(document.body); props = props || {}; if (props === 'camera') { props = { accept: 'image/*', capture: 'camera' } } else if (props === 'microphone') { props = { accept: 'audio/*', capture: "microphone" } } else if (props === 'camcorder') { props = { accept: 'video/*', capture: 'camcorder' } } if (props.accept) { if (props.accept instanceof Array) input.attr('accept', props.accept.join(',')); else input.attr('accept', props.accept); } else { input.attr('accept', null); } if (props.capture) { input.attr('capture', props.capture); } if (props.multiple) { input.attr('multiple', 'true'); } else { input.attr('multiple'); } input.value = null; function focusHandler() { setTimeout(function () { window.removeEventListener('focus', focusHandler); if (unSafe) { input.off('change', changeHandler); input.remove(); resolve([]); } }, 1000); } function changeHandler() { input.off('change', changeHandler); window.removeEventListener('focus', focusHandler); var files = Array.prototype.slice.call(input.files) resolve(files); input.remove(); } input.on('change', changeHandler); input.click(); setTimeout(function () { window.addEventListener('focus', focusHandler); }, 10); }); } var charWidth = { "A": 9.337890625, "a": 7.7861328125, "Ă": 9.337890625, "ă": 7.7861328125, "Â": 9.337890625, "â": 7.7861328125, "B": 9.337890625, "b": 7.7861328125, "C": 10.1103515625, "c": 7, "D": 10.1103515625, "d": 7.7861328125, "Đ": 10.1103515625, "đ": 7.7861328125, "E": 9.337890625, "e": 7.7861328125, "Ê": 9.337890625, "ê": 7.7861328125, "G": 10.8896484375, "g": 7.7861328125, "H": 10.1103515625, "h": 7.7861328125, "I": 3.8896484375, "i": 3.1103515625, "K": 9.337890625, "k": 7, "L": 7.7861328125, "l": 3.1103515625, "M": 11.662109375, "m": 11.662109375, "N": 10.1103515625, "n": 7.7861328125, "O": 10.8896484375, "o": 7.7861328125, "Ô": 10.8896484375, "ô": 7.7861328125, "Ơ": 12.00390625, "ơ": 9.1806640625, "P": 9.337890625, "p": 7.7861328125, "Q": 10.8896484375, "q": 7.7861328125, "R": 10.1103515625, "r": 4.662109375, "S": 9.337890625, "s": 7, "T": 8.5517578125, "t": 3.8896484375, "U": 10.1103515625, "u": 7.7861328125, "Ư": 11.9560546875, "ư": 9.3720703125, "V": 9.337890625, "v": 7, "X": 9.337890625, "x": 7, "Y": 9.337890625, "y": 7, " ": 3.8896484375 }; function estimateWidth14(text) { // return absol.text.measureText(text, '14px arial').width var l = 0; for (var j = 0; j < text.length; ++j) { l += (charWidth[text.charAt(j)]) || 9.337890625; } return l; } /*** * * @param {number} v * @returns {number} */ function absCeil(v) { var a = Math.ceil(Math.abs(v)); return v < 0 ? -a : a; } var propertyFilter = ["$trigger", "$content", "_isShow", "defineEvent", "isSupportedEvent", "emit", "fire", "eventEmittorOnWithTime", "on", "once", "off", "init", "eventHandler", "super", "defineAttribute", "defineAttributes", "attr", "addStyle", "removeStyle", "addChild", "addTo", "selfRemove", "selfReplace", "clearChild", "containsClass", "addClass", "removeClass", "getComputedStyleValue", "getFontSize", "findChildAfter", "findChildBefore", "addChildBefore", "addChildAfter", "getBoundingRecursiveRect", "isDescendantOf", "getCSSRules", "afterAttached", "afterDisplayed", "_azar_extendEvents", "__azar_force", "_azar_extendAttributes", "_azar_extendTags", "findAvailablePosition", "$container", "autoFixParrentSize", "sync", "$dropper", "$vmenu", "$button", "$text", "$key", "$arrow", "$iconCtn", "_textMarginRight", "_tabIndex", '$icon', '_icon', '$textNode', '$primaryBtn', '$extendBtn', '_menuHolder', '_items'].reduce(function (ac, cr) { ac[cr] = true; return ac; }, {}); /** * This is a solution for menu, before a better one. * @param obj * @returns {{}} */ function cleanMenuItemProperty(obj) { var res = {}; var keys = Object.keys(obj); var key; for (var i = 0; i < keys.length; ++i) { key = keys[i]; if (!propertyFilter[key]) { res[key] = obj[key]; } } res.text = obj.text; if (obj.icon) { res.icon = obj.icon; } if (obj.items) { res.items = obj.items; } return res; } /*** * * @param {AElement} e1 * @param {AElement} e2 */ function swapElt(e1, e2) { var temp = _('div'); e1.parentElement.replaceChild(temp, e1); e2.parentElement.replaceChild(e1, e2); temp.parentElement.replaceChild(e2, temp); } /** * * @param {HTMLElement} elt */ function vScrollIntoView(elt) { var parent = elt.parentElement; var overflowStyle; while (parent) { overflowStyle = window.getComputedStyle(parent)['overflow']; if ((overflowStyle === 'auto' || overflowStyle === 'hidden auto' || overflowStyle === 'scroll' || parent.tagName === 'HTML') && (parent.clientHeight < parent.scrollHeight)) { break; } parent = parent.parentElement; } if (!parent) return; var eBound = elt.getBoundingClientRect(); var viewportBound = parent.getBoundingClientRect(); var currentScrollTop = parent.scrollTop; var newScrollTop = currentScrollTop; if (eBound.bottom > viewportBound.bottom) { newScrollTop = currentScrollTop + (eBound.bottom - viewportBound.bottom); } if (eBound.top < viewportBound.top) { newScrollTop = currentScrollTop - (viewportBound.top - eBound.top); } if (newScrollTop != currentScrollTop) { parent.scrollTop = newScrollTop; } } // EXTERNAL MODULE: ./node_modules/absol-acomp/css/hanger.css var hanger = __webpack_require__(62); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Hanger.js var Hanger_ = ACore["c" /* default */]._; var Hanger_$ = ACore["c" /* default */].$; /**** * @extends AElement * @constructor */ function Hanger() { this.addClass('as-hanger'); this.defineEvent(['predrag', 'dragstart', 'drag', 'dragend']); this._hangOn = 0; this._hangerPointerData = null; this.on2({ mousedown: this.eventHandler.hangerPointerDown, touchstart: this.eventHandler.hangerPointerDown, }); this._touchEvents = { touchend: this.eventHandler.hangerPointerFinish, touchcancel: this.eventHandler.hangerPointerFinish, touchmove: this.eventHandler.hangerPointerMove } this._mouseEvents = { mouseup: this.eventHandler.hangerPointerFinish, mouseleave: this.eventHandler.hangerPointerFinish, mousemove: this.eventHandler.hangerPointerMove }; } Hanger.tag = 'hanger'; Hanger.render = function () { return Hanger_('div'); }; Hanger.prototype.on2 = function () { if (arguments.length == 1) { for (var name in arguments[0]) { Hanger.prototype.on2.call(this, name, arguments[0][name]); } } else if (arguments.length == 2) { this.addEventListener(arguments[0], arguments[1], BrowserDetector["a" /* default */].supportPassiveEvent ? { passive: false } : true); } }; Hanger.prototype.off2 = function () { if (arguments.length == 1) { for (var name in arguments[0]) { Hanger.prototype.off2.call(this, name, arguments[0][name]); } } else if (arguments.length == 2) { this.removeEventListener(arguments[0], arguments[1], BrowserDetector["a" /* default */].supportPassiveEvent ? { passive: false } : true); } }; Hanger.property = {}; /** * @type {Hanger} */ Hanger.property.hangOn = { set: function (value) { if (!(value > 0)) value = 0; this._hangOn = value; }, get: function () { return this._hangOn; } }; /** * @type {Hanger} */ Hanger.eventHandler = {}; Hanger.eventHandler.hangerPointerDown = function (event) { if (this._hangerPointerData) return; var bound = this.getBoundingClientRect(); var startingPoint; var isTouch = event.type === 'touchstart'; var pointerIdent = -1; var target; if (isTouch) { var touch = event.changedTouches[0]; target = touch.target; pointerIdent = touch.identifier; startingPoint = new Math_Vec2(touch.clientX, touch.clientY); } else { startingPoint = new Math_Vec2(event.clientX, event.clientY); target = event.target; } var offsetVec = startingPoint.sub(new Math_Vec2(bound.left, bound.top)); this._hangerPointerData = { state: 0, isTouch: isTouch, bound: bound, startingPoint: startingPoint, offsetVec: offsetVec, pointerIdent: pointerIdent, target: target }; var preDragEvent = { type: 'predrag', originEvent: event, isTouch: isTouch, bound: bound, startingPoint: startingPoint, currentPoint: startingPoint, offsetVec: offsetVec, pointerIdent: pointerIdent, canceled: false, cancel: function () { this.canceled = true; }, clientX: startingPoint.x, clientY: startingPoint.y, target: target, preventDefault: function () { event.preventDefault(); } }; this.emit('predrag', preDragEvent, this); if (preDragEvent.canceled) { this._hangerPointerData = null; return; } ; if (isTouch) this.on2.call(document.body, this._touchEvents) else this.on2.call(document.body, this._mouseEvents); }; Hanger.eventHandler.hangerPointerMove = function (event) { var pointerData = this._hangerPointerData; var isTouch = pointerData.isTouch; var pointerIdent = -2; var currentPoint; if (isTouch) { var touch = Object(EventEmitter["c" /* findChangedTouchByIdent */])(event, pointerData.pointerIdent); if (touch) { pointerIdent = touch.identifier; currentPoint = new Math_Vec2(touch.clientX, touch.clientY); } } else { currentPoint = new Math_Vec2(event.clientX, event.clientY); pointerIdent = -1; } if (pointerIdent != pointerData.pointerIdent) return; pointerData.currentPoint = currentPoint; if (pointerData.state == 0) { var distance = currentPoint.sub(pointerData.startingPoint).abs(); if (distance >= this._hangOn) { var dragStartEvent = { type: 'dragstart', originEvent: event, isTouch: isTouch, bound: pointerData.bound, startingPoint: pointerData.startingPoint, offsetVec: pointerData.offsetVec, pointerIdent: pointerIdent, currentPoint: currentPoint, target: pointerData.target, clientX: currentPoint.x, clientY: currentPoint.y, preventDefault: function () { event.preventDefault(); } }; pointerData.state = 1; this.emit('dragstart', dragStartEvent, this); } } if (pointerData.state === 1) { var dragEvent = { type: 'drag', originEvent: event, isTouch: isTouch, bound: pointerData.bound, startingPoint: pointerData.startingPoint, offsetVec: pointerData.offsetVec, pointerIdent: pointerIdent, currentPoint: currentPoint, target: pointerData.target, clientX: currentPoint.x, clientY: currentPoint.y, preventDefault: function () { event.preventDefault(); } }; this.emit('drag', dragEvent, this); } }; Hanger.eventHandler.hangerPointerFinish = function (event) { var pointerData = this._hangerPointerData; var isTouch = event.type === 'touchend'; if (pointerData.isTouch !== isTouch) return; var pointerIdent = -2; var currentPoint; if (isTouch) { var touch = Object(EventEmitter["c" /* findChangedTouchByIdent */])(event, pointerData.pointerIdent); if (touch) { pointerIdent = touch.identifier; currentPoint = new Math_Vec2(touch.clientX, touch.clientY); } } else { currentPoint = new Math_Vec2(event.clientX, event.clientY); pointerIdent = -1; } if (pointerIdent !== pointerData.pointerIdent) return; if (pointerData.state === 1) { var dragEndEvent = { type: 'dragend', originEvent: event, isTouch: isTouch, bound: pointerData.bound, startingPoint: pointerData.startingPoint, offsetVec: pointerData.offsetVec, pointerIdent: pointerIdent, currentPoint: currentPoint, target: pointerData.target, clientX: currentPoint.x, clientY: currentPoint.y, preventDefault: function () { event.preventDefault(); } }; this.emit('dragend', dragEndEvent, this); } this._hangerPointerData = null; if (isTouch) this.off2.call(document.body, this._touchEvents) else this.off2.call(document.body, this._mouseEvents); }; ACore["c" /* default */].install(Hanger); /* harmony default export */ var js_Hanger = (Hanger); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/BoardTable.js var BoardTable_ = ACore["c" /* default */]._; var BoardTable_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function BoardTable() { var events = { touchstart: this.eventHandler.mousedown, mousedown: this.eventHandler.mousedown }; js_Hanger.prototype.on2.call(this, events); this._childHolders = []; this._dragEventData = null; this._friends = []; this._longPressEventData = null; } BoardTable.tag = 'boardtable'; BoardTable.render = function () { return BoardTable_({ class: 'as-board-table', extendEvent: ['sizechange', 'orderchange', 'itemleave', 'itementer', 'dragitemstart', 'dragitemend'] }); }; var EFFECT_ZONE_CLASS_NAME = 'as-board-table-effect-zone'; var DRAG_ZONE_CLASS_NAME = 'as-board-drag-zone'; var FREE_ZONE_CLASS_NAME = 'as-board-free-zone'; BoardTable.EFFECT_ZONE_CLASS_NAME = EFFECT_ZONE_CLASS_NAME; BoardTable.DRAG_ZONE_CLASS_NAME = DRAG_ZONE_CLASS_NAME; BoardTable.FREE_ZONE_CLASS_NAME = FREE_ZONE_CLASS_NAME; BoardTable.prototype.$preventContext = BoardTable_({ tag: 'textarea', class: 'as-board-table-prevent-context', props: { readOnly: true } }); BoardTable.prototype.maxScrollSpeed = 300; BoardTable.prototype.findDomChildBefore = function (elt) { var nodes = this.childNodes; for (var i = 0; i < nodes.length; ++i) { if (nodes[i] == elt) return nodes[i - 1]; } return null; }; BoardTable.prototype.findDomChildAfter = function (elt) { var nodes = this.childNodes; for (var i = 0; i < nodes.length; ++i) { if (nodes[i] == elt) return nodes[i + 1]; } return null; }; BoardTable.prototype.addChild = function (elt) { if (elt.classList.contains('as-board')) { elt.selfRemove(); var atElt; if (this._childHolders.length > 0) { atElt = this.findDomChildAfter(this._childHolders[this._childHolders.length - 1].elt); if (atElt) { if (atElt != -1) this.insertBefore(elt, atElt); else throw new Error("Violation data!"); } else { this.appendChild(elt); } } else { this.appendChild(elt); } var holder = { elt: elt, }; elt.on('sizechange', holder.onsizechange); this._childHolders.push(holder); } else { this.appendChild(elt); } return this; }; BoardTable.prototype.removeChild = function (elt) { var holderIndex = this.findChildHolderIndex(elt); if (holderIndex >= 0) { var holder = this._childHolders[holderIndex]; holder.elt.off('sizechange', holder.onsizechange); this._childHolders.splice(holderIndex, 1); holder.elt.remove(); } else { this.super(elt); } }; BoardTable.prototype.findChildBefore = function (elt) { var holderIndex = this.findChildHolderIndex(elt); if (holderIndex < 0) return holderIndex; if (holderIndex < 1) return null; return this._childHolders[holderIndex - 1]; }; BoardTable.prototype.findChildAfter = function (elt) { var holderIndex = this.findChildHolderIndex(elt); if (holderIndex < 0) return holderIndex; if (holderIndex <= this._childHolders.length) return null; return this._childHolders[holderIndex + 1]; }; BoardTable.prototype.addChildBefore = function (elt, at) { elt.selfRemove(); var atIndex = this.findChildHolderIndex(at); if (elt.classList.contains('as-board')) { if (atIndex < 0) { if (this._childHolders.length > 0) { if (this.findDomChildAfter(this._childHolders[this._childHolders.length - 1].elt) == at) { atIndex = this._childHolders.length; } else { throw new Error("Invalid position, you must insert board next to other board!"); } } } this.insertBefore(elt, at); var holder = { elt: elt }; this._childHolders.splice(atIndex, 0, holder); } else { if (atIndex > 0) { throw new Error("Invalid position, you can not insert othert type between two board!"); } else { this.insertBefore(elt, at); } } return this; }; BoardTable.prototype.addChildAfter = function (elt, at) { elt.selfRemove(); var atIndex = this.findChildHolderIndex(at); var afterAt = this.findDomChildAfter(at); if (elt.classList.contains('as-board')) { if (atIndex < 0) { if (this._childHolders.length > 0) { if (this.findDomChildBefore(this._childHolders[0].elt) == at) { atIndex = -1; } else throw new Error("Invalid position, you must insert board next to other board!"); } } var holder = { elt: elt }; if (!afterAt) { this.appendChild(elt); } else { this.insertBefore(elt, afterAt); } this._childHolders.splice(atIndex + 1, 0, holder); } else { if (this._childHolders.length > 1 && atIndex >= 0 && atIndex + 1 < this._childHolders.length) { throw new Error("Invalid position, you can not insert othert type between two board!"); } else { if (!afterAt) { this.appendChild(elt); } else { this.insertBefore(elt, afterAt); } } } return this; }; BoardTable.prototype.clearChild = function () { this._childHolders = []; return Element["a" /* default */].prototype.clearChild.call(this); }; BoardTable.prototype.findChildHolder = function (elt) { return this._childHolders[this.findChildHolderIndex(elt)]; }; BoardTable.prototype.findChildHolderIndex = function (elt) { for (var i = 0; i < this._childHolders.length; ++i) { if (this._childHolders[i].elt == elt) return i; } return -1; }; BoardTable.prototype.getEffectZone = function () { var ez = this; while (ez) { if (ez.classList.contains(EFFECT_ZONE_CLASS_NAME)) { return ez; } ez = ez.parentElement; } return this; }; BoardTable.prototype._findDragZone = function (elt) { var res = null; while (elt != this && elt) { if (elt.classList.contains('as-board-table')) return null;//maybe in other if (!res && elt.classList.contains(DRAG_ZONE_CLASS_NAME)) { res = elt; } if (!res && elt.classList.contains(FREE_ZONE_CLASS_NAME)) return null;// do not drag elt = elt.parentElement; } return res; }; BoardTable.prototype._findBoard = function (elt) { while (elt != this && elt) { if (elt.classList.contains('as-board')) return elt; elt = elt.parentElement; } return null; }; BoardTable.prototype.getAllFriends = function () { var thisBT = this; var res = []; var friendQR; for (var i = 0; i < this._friends.length; ++i) { friendQR = this._friends[i]; if (friendQR != this && friendQR && friendQR.classList && friendQR.classList.contains('as-board-table')) { res.push(friendQR); } else if (typeof friendQR == 'string') {// query BoardTable_$(friendQR, false, function (elt) { if (thisBT != elt && elt.classList && elt.classList.contains('as-board-table')) { res.push(elt); } return false; }); } } return res; }; BoardTable.prototype._findHoverBoardIndex = function (clientX, clientY, excludes) { var cli = new Math_Vec2(clientX, clientY); var bound; for (var i = 0; i < this._childHolders.length; ++i) { // holder = if (excludes && excludes.indexOf(this._childHolders[i].elt) >= 0) continue; bound = Math_Rectangle.fromClientRect(this._childHolders[i].elt.getBoundingClientRect()); if (bound.containsPoint(cli)) return i; } return -1; }; /** * @type {BoardTable} */ BoardTable.eventHandler = {}; BoardTable.eventHandler.mousedown = function (event) { if (this._dragEventData) return; var mousePos; var pointerIdent = -1; var target; var isTouch = event.type === 'touchstart'; if (isTouch) { var touch = event.changedTouches[0]; target = touch.target; pointerIdent = touch.identifier; mousePos = new Math_Vec2(touch.clientX, touch.clientY); } else { mousePos = new Math_Vec2(event.clientX, event.clientY); target = event.target; } var dragzone = this._findDragZone(target); if (dragzone) { var boardElt = this._findBoard(dragzone); var holderIndex = this.findChildHolderIndex(boardElt); if (holderIndex < 0) return;// can not move var cBound = boardElt.getBoundingClientRect(); var mouseBoardOffset = mousePos.sub(new Math_Vec2(cBound.left, cBound.top)); this._dragEventData = { boardElt: boardElt, state: 'WAIT', mouseStartPos: mousePos, mousePos: mousePos, mouseBoardOffset: mouseBoardOffset, holderIndex: holderIndex, boardBound: cBound, isTouch: isTouch, pointerIdent: pointerIdent }; var cEvent = EventEmitter["b" /* default */].copyEvent(event); if (isTouch) { js_Hanger.prototype.on2.call(document.body, { touchend: this.eventHandler.touchFinishBeforeReadyDrag, touchcancel: this.eventHandler.touchFinishBeforeReadyDrag, touchmove: this.eventHandler.touchMoveBeforeReadyDrag }); this.$preventContext.off('contextmenu', this.eventHandler.contextMenu);//event maybe not remove because of double click this.$preventContext.on('contextmenu', this.eventHandler.contextMenu); var thisBT = this; this._dragEventData._longPressTimeout = setTimeout(function () { thisBT._longPressEventData = -1; thisBT.$preventContext.addStyle({ '--x': mousePos.x + 'px', '--y': mousePos.y + 'px' }).addTo(document.body); thisBT.eventHandler.readyDrag(cEvent); }, 400); } else { this.eventHandler.readyDrag(event); } } }; BoardTable.eventHandler.touchFinishBeforeReadyDrag = function (event) { var thisBT = this; var dragEventData = this._dragEventData; if (!dragEventData) return; js_Hanger.prototype.off2.call(document.body, { touchend: this.eventHandler.touchFinishBeforeReadyDrag, touchcancel: this.eventHandler.touchFinishBeforeReadyDrag, touchmove: this.eventHandler.touchMoveBeforeReadyDrag }) if (this._dragEventData._longPressTimeout > 0) { clearTimeout(this._dragEventData._longPressTimeout); } if (dragEventData.state === 'WAIT') { this._dragEventData = null;// canceled } else { setTimeout(function () { thisBT.$preventContext.off('contextmenu', thisBT.eventHandler.contextMenu); thisBT.$preventContext.remove(); }, 60); } }; BoardTable.eventHandler.contextMenu = function (event) { event.preventDefault(); this.$preventContext.off('contextmenu', this.eventHandler.contextMenu); this.$preventContext.remove(); this.eventHandler.touchFinishBeforeReadyDrag(event); } BoardTable.eventHandler.touchMoveBeforeReadyDrag = function (event) { var dragEventData = this._dragEventData; var touch = Object(EventEmitter["c" /* findChangedTouchByIdent */])(event, dragEventData.pointerIdent); if (!touch) return; var mousePos = new Math_Vec2(touch.clientX, touch.clientY); if (dragEventData.state === 'WAIT') { var dv = mousePos.sub(dragEventData.mouseStartPos); if (dv.abs() > 8) { this.eventHandler.touchFinishBeforeReadyDrag(event); this._dragEventData = null;// cancel } } else { this.$preventContext.addStyle({ '--x': mousePos.x + 'px', '--y': mousePos.y + 'px' }); } }; BoardTable.eventHandler.readyDrag = function (event) { var dragEventData = this._dragEventData; dragEventData.state = "PRE_DRAG"; var bodyEvents = {}; if (dragEventData.isTouch) { bodyEvents.touchmove = this.eventHandler.mousemove; bodyEvents.touchcancel = this.eventHandler.mousefinish; bodyEvents.touchend = this.eventHandler.mousefinish; } else { bodyEvents.mousemove = this.eventHandler.mousemove; bodyEvents.mouseup = this.eventHandler.mousefinish; bodyEvents.mouseleave = this.eventHandler.mousefinish; } js_Hanger.prototype.on2.call(document.body, bodyEvents); if (dragEventData.isTouch) { this.eventHandler.mousemove(event); } }; BoardTable.eventHandler.mousemovePredrag = function (event) { var dragEventData = this._dragEventData; var mousePos = dragEventData.mousePos; var thisBT = this; event.preventDefault(); var cBound = dragEventData.boardElt.getBoundingClientRect(); if (mousePos.sub(dragEventData.mouseStartPos).abs() > 8 || dragEventData.isTouch) { dragEventData.placeHolderElt = BoardTable_$(dragEventData.boardElt.cloneNode(false)) .addClass('as-board-place-holder') .addStyle({ width: cBound.width + 'px', height: cBound.height + 'px' }); dragEventData.friendHolders = this.getAllFriends().concat([this]).map(function (elt) { //include itself var effectZone = elt.getEffectZone(); var res = { elt: elt, effectZone: effectZone } if (!dragEventData.isTouch) { var enterEvent = thisBT.eventHandler.enterFriendEffectZone.bind(thisBT, elt); js_Hanger.prototype.on2.call(effectZone, dragEventData.isTouch ? 'touchmove' : 'mouseenter', enterEvent); res.enterEvent = enterEvent; } else { // use move event to detect } return res; }); dragEventData.inEffectZoneOf = this dragEventData.cardStyle = { width: dragEventData.boardElt.style.width, height: dragEventData.boardElt.style.height }; dragEventData.boardElt.addStyle({ width: cBound.width + 'px', height: cBound.height + 'px' }); this.insertBefore(dragEventData.placeHolderElt, dragEventData.boardElt); dragEventData.state = "DRAG"; BoardTable_$(document.body).addClass('as-has-board-table-drag'); dragEventData.boardElt.addClass('as-board-moving'); dragEventData.boardAt = dragEventData.holderIndex; dragEventData.boardIn = thisBT; this.emit('dragitemstart', { type: 'dragitemstart', target: this, boardElt: this._dragEventData.boardElt }, this); } }; BoardTable.eventHandler.mousemoveDragInSelf = function (event) { var dragEventData = this._dragEventData; var mousePos = dragEventData.mousePos; if (this._childHolders.length < 2) { if (dragEventData.boardIn != this) { this.insertBefore(dragEventData.placeHolderElt, this._childHolders[0].elt); dragEventData.boardIn = this; dragEventData.boardAt = 0; } } else { // bản thân chỉ có 1, hoặc nhiều hơn var i = this._findHoverBoardIndex(mousePos.x, mousePos.y, [dragEventData.boardElt]); if (i >= 0) { if (dragEventData.boardIn != this) { dragEventData.boardIn = this; } var viewIndex; if ((i < dragEventData.holderIndex && i < dragEventData.boardAt) || (i > dragEventData.holderIndex && i > dragEventData.boardAt) || dragEventData.holderIndex == dragEventData.boardAt) { viewIndex = i; } else { if (dragEventData.holderIndex > dragEventData.boardAt) { viewIndex = i + 1; } else { viewIndex = i - 1; } } var fbound = this._childHolders[i].elt.getBoundingClientRect(); var displayStyple = this._childHolders[i].elt.getComputedStyleValue('display'); if (mousePos.x > fbound.left && mousePos.x < fbound.right && mousePos.y > fbound.top && mousePos.y < fbound.bottom) { if (displayStyple.startsWith('inline')) { if (dragEventData.boardBound.width < fbound.width) { if (dragEventData.boardAt > viewIndex && mousePos.x > fbound.left + dragEventData.boardBound.width) { viewIndex += 1; } else if (dragEventData.boardAt < viewIndex && mousePos.x < fbound.left + fbound.width - dragEventData.boardBound.width) { viewIndex -= 1; } } } else { if (dragEventData.boardBound.height < fbound.height) { if (dragEventData.boardAt > viewIndex && mousePos.y >= fbound.top + dragEventData.boardBound.height) { viewIndex += 1; } else if (dragEventData.boardAt < viewIndex && mousePos.y <= fbound.top + fbound.height - dragEventData.boardBound.height) { viewIndex -= 1; } } } viewIndex = Math.max(0, Math.min(this._childHolders.length, viewIndex)); if (viewIndex != dragEventData.boardAt) { dragEventData.boardAt = viewIndex; if (dragEventData.holderIndex >= viewIndex) { this.insertBefore(dragEventData.placeHolderElt, this._childHolders[viewIndex].elt); } else { var bf = Element["a" /* default */].prototype.findChildAfter.call(this, this._childHolders[viewIndex].elt); if (bf) this.insertBefore(dragEventData.placeHolderElt, bf); else { this.appendChild(dragEventData.placeHolderElt); } } } } } } }; BoardTable.eventHandler.mousemoveDragInOther = function (event) { var dragEventData = this._dragEventData; var mousePos = dragEventData.mousePos; var other = dragEventData.inEffectZoneOf; if (other._childHolders.length == 0) { if (dragEventData.boardIn != other) { dragEventData.boardIn = other; dragEventData.boardAt = 0; other.appendChild(dragEventData.placeHolderElt); } } else { var i = other._findHoverBoardIndex(mousePos.x, mousePos.y); if (i >= 0) { if (dragEventData.boardIn != other) { dragEventData.boardIn = other; } var displayStyple = other._childHolders[i].elt.getComputedStyleValue('display'); var di = 0; var bbound = other._childHolders[i].elt.getBoundingClientRect(); if (displayStyple.startsWith('inline')) { if (mousePos.x > bbound.left + bbound.width / 2) di++; } else { if (mousePos.y > bbound.top + bbound.height / 2) di++; } i += di; if (i < other._childHolders.length) { other.insertBefore(dragEventData.placeHolderElt, other._childHolders[i].elt); } else { var bf = other.findChildAfter(other._childHolders[other._childHolders.length - 1].elt); if (bf) { other.insertBefore(dragEventData.placeHolderElt, bf); } else { other.appendChild(dragEventData.placeHolderElt) } } dragEventData.boardAt = i; } } }; BoardTable.eventHandler.mousemoveDrag = function (event) { var dragEventData = this._dragEventData; if (dragEventData.inEffectZoneOf == this) { this.eventHandler.mousemoveDragInSelf(event); } else { this.eventHandler.mousemoveDragInOther(event); } }; BoardTable.eventHandler.boarDrag = function (event) { var dragEventData = this._dragEventData; var mousePos = dragEventData.mousePos; var boardPos = mousePos.sub(dragEventData.mouseBoardOffset); dragEventData.boardElt.addStyle({ left: boardPos.x + 'px', top: boardPos.y + 'px' }); }; BoardTable.eventHandler.dragOnEffectZone = function (event) { var dragEventData = this._dragEventData; var mousePos = dragEventData.mousePos; var friendHolders = dragEventData.friendHolders; var bound; for (var i = 0; i < friendHolders.length; ++i) { bound = Math_Rectangle.fromClientRect(friendHolders[i].effectZone.getBoundingClientRect()); if (bound.containsPoint(mousePos)) { dragEventData.inEffectZoneOf = friendHolders[i].elt; break; } } }; BoardTable.eventHandler.mousemoveOverflow = function (event) { if (!this._dragEventData) return; var dragEventData = this._dragEventData; var scrollerX = this._dragEventData.boardIn; var overflowStyle; while (scrollerX) { overflowStyle = window.getComputedStyle(scrollerX)['overflow']; if ((overflowStyle === 'auto' || overflowStyle === 'auto hidden' || overflowStyle === 'scroll' || scrollerX.tagName === 'HTML') && (scrollerX.clientWidth < scrollerX.scrollWidth)) break; scrollerX = scrollerX.parentElement; } var scrollerY = this._dragEventData.boardIn; while (scrollerY) { overflowStyle = window.getComputedStyle(scrollerY)['overflow']; if ((overflowStyle === 'auto' || overflowStyle === 'hidden auto' || overflowStyle === 'scroll' || scrollerY.tagName === 'HTML') && (scrollerY.clientHeight < scrollerY.scrollHeight)) break; scrollerY = scrollerY.parentElement; } var outBound; var bBound; var screenSize = Dom["b" /* default */].getScreenSize(); var vx = 0; var vy = 0; bBound = this._dragEventData.boardElt.getBoundingClientRect(); if (scrollerX) { if (dragEventData.$scrollerX !== scrollerX) { dragEventData.scrollerXValue = scrollerX.scrollLeft; dragEventData.$scrollerX = scrollerX; } outBound = scrollerX.getBoundingClientRect(); outBound = { left: Math.max(outBound.left, 0), top: Math.max(outBound.top, 0), bottom: Math.min(outBound.bottom, screenSize.height), right: Math.min(outBound.right, screenSize.width) } if (bBound.left < outBound.left) { vx = bBound.left - outBound.left; } else if (bBound.right > outBound.right) { vx = bBound.right - outBound.right; } } else { dragEventData.$scrollerX = null; } if (scrollerY) { if (dragEventData.$scrollerY !== scrollerY) { dragEventData.scrollerYValue = scrollerY.scrollTop; dragEventData.$scrollerY = scrollerY; } outBound = scrollerY.getBoundingClientRect(); outBound = { left: Math.max(outBound.left, 0), top: Math.max(outBound.top, 0), bottom: Math.min(outBound.bottom, screenSize.height), right: Math.min(outBound.right, screenSize.width) } if (bBound.top < outBound.top) { vy = bBound.top - outBound.top; } else if (bBound.bottom > outBound.bottom) { vy = bBound.bottom - outBound.bottom; } } else { dragEventData.$scrollerY = null; } vx = Math.max(-this.maxScrollSpeed, Math.min(this.maxScrollSpeed, vx * Math.sqrt(Math.abs(vx)))); vy = Math.max(-this.maxScrollSpeed, Math.min(this.maxScrollSpeed, vy * Math.sqrt(Math.abs(vy)))); if (vx !== 0 || vy !== 0) { var copyEvent = { type: event.type, preventDefault: function () {/* noop */ }, target: event.target }; if (event.type === 'touchmove') { copyEvent.changedTouches = Array.prototype.map.call(event.changedTouches, function (it) { return { identifier: it.identifier, clientX: it.clientX, clientY: it.clientY, target: it.target } }); copyEvent.touches = Array.prototype.map.call(event.touches, function (it) { return { identifier: it.identifier, clientX: it.clientX, clientY: it.clientY, target: it.target } }); } else { copyEvent.clientX = event.clientX; copyEvent.clientY = event.clientY } var thisBT = this; var now = new Date().getTime(); if (dragEventData.requestAnimationFrameId >= 0) { cancelAnimationFrame(dragEventData.requestAnimationFrameId); } dragEventData.requestAnimationFrameId = requestAnimationFrame(function () { dragEventData.requestAnimationFrameId = -1; var dt = (new Date().getTime() - now) / 1000; if (dragEventData.$scrollerY) { dragEventData.scrollerYValue += vy * dt; dragEventData.scrollerYValue = Math.max(0, Math.min(dragEventData.$scrollerY.scrollHeight - dragEventData.$scrollerY.clientHeight, dragEventData.scrollerYValue)) dragEventData.$scrollerY.scrollTop = dragEventData.scrollerYValue; } if (dragEventData.$scrollerX) { dragEventData.scrollerXValue += vx * dt; dragEventData.scrollerXValue = Math.max(0, Math.min(dragEventData.$scrollerX.scrollWidth - dragEventData.$scrollerX.clientWidth, dragEventData.scrollerXValue)) dragEventData.$scrollerX.scrollLeft = dragEventData.scrollerXValue; } if (thisBT._dragEventData && thisBT._dragEventData.state === "DRAG") { thisBT.eventHandler.mousemoveOverflow(copyEvent); } }); } }; BoardTable.eventHandler.mousemove = function (event) { var dragEventData = this._dragEventData; var isTouch = event.type === 'touchmove' || event.type === 'touchstart';// call from timeout if (dragEventData.isTouch !== isTouch) return; var mousePos; var pointerIdent; var touch = -2; if (isTouch) { touch = Object(EventEmitter["c" /* findChangedTouchByIdent */])(event, dragEventData.pointerIdent); if (touch) { pointerIdent = touch.identifier; mousePos = new Math_Vec2(touch.clientX, touch.clientY); } } else { pointerIdent = -1; mousePos = new Math_Vec2(event.clientX, event.clientY); } if (dragEventData.pointerIdent !== pointerIdent) return; dragEventData.mousePos = mousePos; event.preventDefault(); if (dragEventData.isTouch && dragEventData.state === 'DRAG') { this.eventHandler.dragOnEffectZone(event);//because touch not have mouseenter event } if (dragEventData.state === 'PRE_DRAG') { this.eventHandler.mousemovePredrag(event); } if (dragEventData.state === 'DRAG') { this.eventHandler.mousemoveDrag(event); this.eventHandler.boarDrag(event); this.eventHandler.mousemoveOverflow(event); } }; BoardTable.eventHandler.mousefinish = function (event) { var dragEventData = this._dragEventData; var isTouch = event.type === 'touchend'; if (dragEventData.isTouch !== isTouch) return; var mousePos; var pointerIdent; var touch = -2; if (isTouch) { touch = Object(EventEmitter["c" /* findChangedTouchByIdent */])(event, dragEventData.pointerIdent); if (touch) { pointerIdent = touch.identifier; mousePos = new Math_Vec2(touch.clientX, touch.clientY); } } else { pointerIdent = -1; mousePos = new Math_Vec2(event.clientX, event.clientY); } if (dragEventData.pointerIdent !== pointerIdent) return; dragEventData.mousePos = mousePos; var changed; if (dragEventData.state == 'DRAG') { setTimeout(function () { BoardTable_$(document.body).removeClass('as-has-board-table-drag'); }, 1) dragEventData.boardElt.removeClass('as-board-moving') .removeStyle('left') .removeStyle('top'); dragEventData.boardElt.addStyle(dragEventData.cardStyle); dragEventData.placeHolderElt.remove(); dragEventData.state = "FINISH"; if (!dragEventData.isTouch) dragEventData.friendHolders.forEach(function (holder) { js_Hanger.prototype.off2.call(holder.effectZone, 'mouseenter', holder.enterEvent); }); if (dragEventData.boardIn == this) { if (dragEventData.holderIndex != dragEventData.boardAt) { if (dragEventData.holderIndex > dragEventData.boardAt) { this.insertBefore(dragEventData.boardElt, this._childHolders[dragEventData.boardAt].elt); } else if (dragEventData.holderIndex < dragEventData.boardAt) { var bf = Element["a" /* default */].prototype.findChildAfter.call(this, this._childHolders[dragEventData.boardAt].elt); if (bf) this.insertBefore(dragEventData.boardElt, bf); else { this.appendChild(dragEventData.boardElt); } } var holder = this._childHolders.splice(dragEventData.holderIndex, 1)[0]; this._childHolders.splice(dragEventData.boardAt, 0, holder); changed = 'orderchange'; this.emit('orderchange', { type: 'orderchange', boardElt: holder.elt, action: 'move', from: dragEventData.holderIndex, to: dragEventData.boardAt, target: this, }, this); } } else { var holder = this._childHolders.splice(dragEventData.holderIndex, 1)[0]; holder.elt.remove(); ///remove all event var other = dragEventData.boardIn; changed = 'itemleave'; this.emit('itemleave', { type: 'itemleave', item: holder.elt, from: { index: dragEventData.holderIndex, table: this }, to: { index: dragEventData.boardAt, table: other }, target: this }, this); if (other._childHolders.length == 0) { other.appendChild(holder.elt); other._childHolders.push(holder); } else { if (dragEventData.boardAt < other._childHolders.length) { other.insertBefore(holder.elt, other._childHolders[dragEventData.boardAt].elt); other._childHolders.splice(dragEventData.boardAt, 0, holder); } else { var bf = other.findDomChildAfter(other._childHolders.elt); if (bf) { other.insertBefore(holder.elt, bf); } else { other.appendChild(holder.elt); } other._childHolders.push(holder); } } other.emit('itementer', { type: 'itementer', item: holder.elt, target: other, from: { index: dragEventData.holderIndex, table: this }, to: { index: dragEventData.boardAt, table: other } }, other); } this.emit('dragitemend', { type: 'dragitemend', target: this, changed: changed, boardElt: this._dragEventData.boardElt }, this); } var bodyEvents = {}; if (dragEventData.isTouch) { bodyEvents.touchmove = this.eventHandler.mousemove; bodyEvents.touchcancel = this.eventHandler.mousefinish; bodyEvents.touchend = this.eventHandler.mousefinish; } else { bodyEvents.mousemove = this.eventHandler.mousemove; bodyEvents.mouseup = this.eventHandler.mousefinish; bodyEvents.mouseleave = this.eventHandler.mousefinish; } js_Hanger.prototype.off2.call(document.body, bodyEvents); this._dragEventData = null; }; BoardTable.eventHandler.enterFriendEffectZone = function (friendElt, event) { this._dragEventData.inEffectZoneOf = friendElt; }; BoardTable.prototype.getAllBoards = function () { return this._childHolders.map(function (holder) { return holder.elt; }); }; BoardTable.property = {}; BoardTable.property.friends = { set: function (value) { value = value || []; if (!(value instanceof Array)) value = [value]; this._friends = value; }, get: function () { return this._friends; } }; ACore["c" /* default */].install(BoardTable); /* harmony default export */ var js_BoardTable = (BoardTable); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/bscroller.css var bscroller = __webpack_require__(64); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/BScroller.js var BScroller_ = ACore["c" /* default */]._; var BScroller_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function BScroller() { this.addClass('as-bscroller'); } BScroller.tag = "bscroller"; BScroller.render = function (data) { if (data && data.elt) { return BScroller_$(data.elt) } else return BScroller_('div'); }; BScroller.prototype.scrollInto = function (element) { if (Element["a" /* default */].prototype.isDescendantOf.call(element, this)) { var elementBound = element.getBoundingClientRect(); var viewportBound = this.getBoundingClientRect(); var currentScrollTop = this.scrollTop; var newScrollTop = currentScrollTop; if (elementBound.bottom > viewportBound.bottom) { newScrollTop = currentScrollTop + (elementBound.bottom - viewportBound.bottom); } if (elementBound.top < viewportBound.top) { newScrollTop = currentScrollTop - (viewportBound.top - elementBound.top); } if (newScrollTop != currentScrollTop) { this.scrollTop = newScrollTop; } var currentScrollLeft = this.scrollLeft; var newScrollLeft = currentScrollLeft; if (elementBound.right > viewportBound.right) { newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right); } if (elementBound.left < viewportBound.left) { newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left); } if (newScrollLeft != currentScrollLeft) { this.scrollLeft = newScrollLeft; } } } ACore["c" /* default */].install(BScroller); /* harmony default export */ var js_BScroller = (BScroller); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/buttonarray.css var buttonarray = __webpack_require__(66); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/ButtonArray.js var ButtonArray_ = ACore["c" /* default */]._; var ButtonArray_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function ButtonArray() { this._dict = {}; this._pool = []; this._items = []; this.$lastActiveBtn = null; this._value = undefined; this._lastValue = this._value; } ButtonArray.tag = 'buttonarray'; ButtonArray.render = function () { return ButtonArray_({ extendEvent: ['change'], class: 'as-button-array' }); }; ButtonArray.prototype._newButton = function () { var button = ButtonArray_({ tag: 'button', class: 'as-button-array-item', child: { text: 'null' } }); button.on('click', this.eventHandler.clickItem.bind(this, button)); return button; }; ButtonArray.prototype._requestButton = function (items) { var button; if (this._pool.length > 0) { button = this._pool.pop(); } else { button = this._newButton(); } return button; }; ButtonArray.prototype._assignButton = function (button, data) { button._data = data; button.childNodes[0].data = data.text; }; ButtonArray.prototype._releaseButton = function (button) { this._pool.push(button); }; ButtonArray.prototype._getFullFormat = function (item) { var res = {}; if ((typeof item == 'string') || (typeof item == 'number') || (typeof item == 'boolean') || (item === null) || (item === undefined)) { res.ident = item; res.value = item; res.text = item + ''; } else if (item && (typeof item == 'object')) { res.value = item.value; res.ident = res.value + ''; res.text = item.text; } return res; }; ButtonArray.property = {}; /** * @type {ButtonArray} */ ButtonArray.property.items = { set: function (items) { items = items || []; this._items = items; var child; while (this.childNodes.length > items.length) { child = this.lastChild; this._releaseButton(child); this.removeChild(child); } while (this.childNodes.length < items.length) { this.addChild(this._requestButton()); } var item; for (var i = 0; i < items.length; ++i) { item = this._getFullFormat(items[i]); this._assignButton(this.childNodes[i], item); this._dict[item.ident] = { elt: this.childNodes[i], data: item } } if (items.length > 0) { if (!this._dict[this._value + '']) { this._value = this._getFullFormat(items[0]).value; } } this.value = this._value; }, get: function () { return this._items; } }; ButtonArray.property.value = { set: function (value) { this._value = value; this._lastValue = this._value; if (this.$lastActiveBtn) { this.$lastActiveBtn.removeClass('as-active'); this.$lastActiveBtn = null; } var hodler = this._dict[value + '']; if (hodler) { hodler.elt.addClass('as-active'); this.$lastActiveBtn = hodler.elt; } }, get: function () { return this._value; } }; ButtonArray.eventHandler = {}; ButtonArray.eventHandler.clickItem = function (item, event) { if (this._lastValue != item._data.value) { this.value = item._data.value; this.emit('change', { target: this, value: this.value, type: 'change' }, this); } }; ACore["c" /* default */].install(ButtonArray); /* harmony default export */ var js_ButtonArray = (ButtonArray); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/calendarinput.css var calendarinput = __webpack_require__(68); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/chromecalendar.css var chromecalendar = __webpack_require__(70); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/scroller.css var css_scroller = __webpack_require__(72); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Scroller.js var Scroller_ = ACore["c" /* default */]._; var Scroller_$ = ACore["c" /* default */].$; ACore["c" /* default */].$scrollStyle = (function () { var element = Scroller_('style#vscroller-style'); element.innerHTML = [ '.absol-vscroller-viewport{ margin-right: ' + (-17) + 'px; min-width: calc(100% + ' + (17) + 'px);}', '.absol-hscroller-viewport{ margin-bottom: ' + (-17) + 'px; min-height: calc(100% + ' + (17) + 'px);}' ].join('\n'); document.head.appendChild(element); Dom["b" /* default */].getScrollSize().then(function (size) { element.innerHTML = [ '.absol-vscroller-viewport{ margin-right: ' + (-size.width) + 'px; min-width: calc(100% + ' + (size.width) + 'px);}', '.absol-hscroller-viewport{ margin-bottom: ' + (-size.height) + 'px; min-height: calc(100% + ' + (size.height) + 'px);}' ].join('\n'); }); return element; } )(); function VScroller() { var thisVS = this; this.$attachHook = Scroller_$('attachhook', this); this.sync = new Promise(function (rs) { thisVS.$attachHook.once('error', function () { rs(); }); }); this.$attachHook.on('error', function () { thisVS.requestUpdateSize(); }); this.$vscrollbar = Scroller_$('vscrollbar', this).on('scroll', this.eventHandler.scrollScrollbar); this.$viewport = Scroller_$('.absol-vscroller-viewport', this) .on('scroll', this.eventHandler.scrollViewport); OOP["a" /* default */].extends(thisVS.$viewport, { removeChild: function () { this.super.apply(this, arguments); thisVS.requestUpdateSize(); return thisVS; } }) } VScroller.tag = 'vscroller'; VScroller.render = function () { return Scroller_({ class: 'absol-vscroller', child: ['.absol-vscroller-viewport', { class: ['absol-scrollbar-container', 'vertical'], child: 'vscrollbar' }, 'attachhook' ] }); }; VScroller.prototype.requestUpdateSize = function () { // return; if (this._isRequestingUpdateSize) return this.sync; this._isRequestingUpdateSize = true; this.sync = this.sync.then(function () { this.$vscrollbar.outerHeight = this.$viewport.clientHeight; this.$vscrollbar.innerHeight = this.$viewport.scrollHeight - 2; this.$vscrollbar.innerOffset = this.$viewport.scrollTop; if (this.$vscrollbar.innerHeight <= this.$vscrollbar.outerHeight) { this.$vscrollbar.hidden = true; this.addClass('disabled'); } else { this.removeClass('disabled'); this.$vscrollbar.hidden = false; } this._isRequestingUpdateSize = false; }.bind(this)); return this.sync; }; VScroller.prototype.init = function (props) { this.super(props); this.requestUpdateSize(); }; VScroller.prototype.addChild = function () { var res = this.$viewport.addChild.apply(this.$viewport, arguments); this.requestUpdateSize(); return res; }; VScroller.prototype.clearChild = function () { var res = this.$viewport.clearChild.apply(this.$viewport, arguments); this.requestUpdateSize(); return res; }; VScroller.prototype.addChildBefore = function () { var res = this.$viewport.addChildBefore.apply(this.$viewport, arguments); this.requestUpdateSize(); return res; }; VScroller.prototype.addChildAfter = function () { var res = this.$viewport.addChildAfter.apply(this.$viewport, arguments); this.requestUpdateSize(); return res; }; VScroller.prototype.findChildAfter = function () { return this.$viewport.findChildAfter.apply(this.$viewport, arguments); }; VScroller.prototype.findChildBefore = function () { return this.$viewport.findChildBefore.apply(this.$viewport, arguments); }; VScroller.prototype.removeChild = function () { var res = this.$viewport.removeChild.apply(this.$viewport, arguments); this.requestUpdateSize(); return res; }; VScroller.prototype.scrollInto = function (element, padding, scrollTime, beforFrame, afterFrame) { padding = padding || 0; scrollTime = scrollTime || 0; var frameCount = Math.ceil(scrollTime / 15 + 1); var self = this; function onFrame() { beforFrame && beforFrame(); var elementBound = element.getBoundingClientRect(); var viewportBound = self.$viewport.getBoundingClientRect(); var currentScrollTop = self.$viewport.scrollTop; var newScrollTop = currentScrollTop; if (elementBound.bottom + padding > viewportBound.bottom) { newScrollTop = currentScrollTop + ((elementBound.bottom + padding) - viewportBound.bottom) / (Math.log(frameCount) + 1); } if (elementBound.top - padding < viewportBound.top) { newScrollTop = currentScrollTop - (viewportBound.top - (elementBound.top - padding)) / (Math.log(frameCount) + 1); } if (newScrollTop != currentScrollTop) { self.$viewport.scrollTop = newScrollTop; } afterFrame && afterFrame(); frameCount--; if (frameCount > 0) setTimeout(onFrame, 15) } if (Element["a" /* default */].prototype.isDescendantOf.call(element, this.$viewport)) { onFrame(); } }; VScroller.prototype.scrollBy = function (dy, duration) { duration = duration || 0; var frameCount = Math.ceil(duration / 20); var timeOut = duration / frameCount; var i = 0; var self = this; var start = self.$viewport.scrollTop; var end = start + dy; function onFrame() { self.$viewport.scrollTop = Math.max(int_map(i, 0, frameCount, start, end), 0); ++i; if (i <= frameCount) setTimeout(onFrame, timeOut); } onFrame(); }; VScroller.eventHandler = {}; VScroller.eventHandler.scrollViewport = function (event) { this.$vscrollbar.outerHeight = this.$viewport.clientHeight; this.$vscrollbar.innerHeight = this.$viewport.scrollHeight; this.$vscrollbar.innerOffset = this.$viewport.scrollTop; }; VScroller.eventHandler.scrollScrollbar = function (event) { this.$viewport.scrollTop = this.$vscrollbar.innerOffset; }; function HScroller() { var thisHS = this; this.$attachHook = Scroller_$('attachhook', this) .on('error', function () { this.requestUpdateSize = this.requestUpdateSize || thisHS.requestUpdateSize.bind(thisHS); Dom["b" /* default */].addToResizeSystem(this); }); this.sync = new Promise(function (rs, rj) { thisHS.$attachHook.once('error', rs); }); this.$hscrollbar = Scroller_$('hscrollbar', this).on('scroll', this.eventHandler.scrollScrollbar); this.$viewport = Scroller_$('.absol-hscroller-viewport', this) .on('scroll', this.eventHandler.scrollViewport); OOP["a" /* default */].extends(this.$viewport, { removeChild: function () { this.super.apply(this, arguments); thisHS.requestUpdateSize(); return thisHS; } }); } HScroller.tag = 'hscroller'; HScroller.render = function () { return Scroller_({ class: 'absol-hscroller', child: ['.absol-hscroller-viewport', { class: ['absol-scrollbar-container', 'horizontal'], child: 'hscrollbar' }, 'attachhook' ] }); }; HScroller.eventHandler = {}; HScroller.eventHandler.scrollViewport = function (event) { this.$hscrollbar.outerWidth = this.$viewport.clientWidth; this.$hscrollbar.innerWidth = this.$viewport.scrollWidth; this.$hscrollbar.innerOffset = this.$viewport.scrollLeft; }; HScroller.eventHandler.scrollScrollbar = function (event) { this.$viewport.scrollLeft = this.$hscrollbar.innerOffset; }; Object.assign(HScroller.prototype, VScroller.prototype); HScroller.prototype.requestUpdateSize = function () { // return; if (this._isRequestingUpdateSize) return this.sync; this._isRequestingUpdateSize = true; this.sync = this.sync.then(function () { this.$hscrollbar.outerWidth = this.$viewport.clientWidth; this.$hscrollbar.innerWidth = this.$viewport.scrollWidth; this.$hscrollbar.innerOffset = this.$viewport.scrollLeft; if (this.$hscrollbar.innerWidth <= this.$hscrollbar.outerWidth) { this.$hscrollbar.hidden = true; this.addClass('disabled'); } else { this.removeClass('disabled'); this.$hscrollbar.hidden = false; } this._isRequestingUpdateSize = false; }.bind(this)); return this.sync; }; HScroller.prototype.scrollInto = function (element) { if (Element["a" /* default */].prototype.isDescendantOf.call(element, this.$viewport)) { var elementBound = element.getBoundingClientRect(); var viewportBound = this.$viewport.getBoundingClientRect(); var currentScrollLeft = this.$viewport.scrollLeft; var newScrollLeft = currentScrollLeft; if (elementBound.right > viewportBound.right) { newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right); } if (elementBound.left < viewportBound.left) { newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left); } if (newScrollLeft != currentScrollLeft) { this.$viewport.scrollLeft = newScrollLeft; } } } function Scrollbar() { var thisSB = this; this.$button = Scroller_$('.absol-scrollbar-button', this); this.on('active', function () { if (!thisSB.$forceModal) thisSB.$forceModal = Scroller_('.absol-scrollbar-force-modal'); thisSB.$forceModal.addTo(document.body); }).on('deactive', function () { setTimeout(function () { thisSB.$forceModal.remove(); }, 30); }); } Scrollbar.tag = 'scrollbar'; Scrollbar.render = function () { return Scroller_({ class: ['absol-scrollbar'], extendEvent: ['scroll', 'active', 'deactive'], child: '.absol-scrollbar-button' }); }; Scrollbar.property = {}; Scrollbar.property.hidden = { set: function (value) { value = !!value; if (value != this._hidden) { this._hidden = value; if (value) this.addClass('absol-hidden'); else this.removeClass('absol-hidden'); } }, get: function () { return this.containsClass('absol-hidden') } }; function VScrollbar() { var thisVS = this; var top0, innerOffset0; var pointerMoveEventHandler = function (event) { event.preventDefault(); var dy = event.clientY - top0; var newInnerOffset = innerOffset0 + dy * (thisVS.innerHeight / thisVS.outerHeight) * (thisVS.outerHeight / thisVS.getBoundingClientRect().height); if (newInnerOffset + thisVS.outerHeight > thisVS.innerHeight) newInnerOffset = thisVS.innerHeight - thisVS.outerHeight; if (newInnerOffset < 0) newInnerOffset = 0; thisVS.innerOffset = newInnerOffset; //todo event.innerOffset = newInnerOffset; thisVS.emit('scroll', event); }; var finishEventHandler = function (event) { var body = Scroller_$(document.body); body.off('pointerleave', finishEventHandler); body.off('pointerup', finishEventHandler); body.off('pointermove', pointerMoveEventHandler); thisVS.removeClass('absol-active'); thisVS.emit('deactive', { type: 'deactive', originEvent: event, tagert: thisVS }); }; var pointerDownEventHandler = function (event) { var boundRes = thisVS.getBoundingClientRect(); var boundButton = thisVS.$button.getBoundingClientRect(); top0 = event.clientY; if (event.target == thisVS.$button) { innerOffset0 = thisVS.innerOffset; } else { var newInnerOffset = int_map(top0 - boundButton.height / 2 - boundRes.top, 0, boundRes.height, 0, thisVS.innerHeight); if (newInnerOffset + thisVS.outerHeight > thisVS.innerHeight) newInnerOffset = thisVS.innerHeight - thisVS.outerHeight; if (newInnerOffset < 0) newInnerOffset = 0; thisVS.innerOffset = newInnerOffset; //todo event.innerOffset = newInnerOffset; innerOffset0 = newInnerOffset; thisVS.emit('scroll', event); } var body = Scroller_$(document.body); body.on('pointerleave', finishEventHandler); body.on('pointerup', finishEventHandler); body.on('pointermove', pointerMoveEventHandler); thisVS.addClass('absol-active'); thisVS.emit('active', { type: 'active', originEvent: event, tagert: thisVS }); }; this.on('pointerdown', pointerDownEventHandler, true); } VScrollbar.tag = 'vscrollbar'; VScrollbar.render = function () { return Scroller_({ tag: 'scrollbar', class: 'absol-vscrollbar' }, true); }; VScrollbar.prototype.updateValue = function () { this.$button.addStyle('height', Math.min(this.outerHeight / this.innerHeight, 1) * 100 + '%'); this.$button.addStyle('top', this.innerOffset / this.innerHeight * 100 + '%'); }; VScrollbar.property = { innerOffset: { set: function (value) { value = value || 0; if (this._innerOffset != value) { this._innerOffset = value; this.updateValue(); } }, get: function () { return this._innerOffset || 0; } }, innerHeight: { set: function (value) { value = value || 1; value = Math.max(value, 1); if (this._innerHeight != value) { this._innerHeight = value; this.updateValue(); } }, get: function () { return this._innerHeight || 1; } }, outerHeight: { set: function (value) { value = value || 0; value = Math.max(value, 0); if (this._outerHeight != value) { this._outerHeight = value; this.updateValue(); } }, get: function () { return this._outerHeight || 0; } } }; function HScrollbar() { var thisHS = this; var left0, innerOffset0; var pointerMoveEventHandler = function (event) { event.preventDefault(); var dy = event.clientX - left0; var newInnerOffset = innerOffset0 + dy * (thisHS.innerWidth / thisHS.outerWidth) * (thisHS.outerWidth / thisHS.getBoundingClientRect().width); if (newInnerOffset + thisHS.outerWidth > thisHS.innerWidth) newInnerOffset = thisHS.innerWidth - thisHS.outerWidth; if (newInnerOffset < 0) newInnerOffset = 0; thisHS.innerOffset = newInnerOffset; //todo event.innerOffset = newInnerOffset; thisHS.emit('scroll', event); }; var finishEventHandler = function (event) { var body = Scroller_$(document.body); body.off('pointerleave', finishEventHandler); body.off('pointerup', finishEventHandler); body.off('pointermove', pointerMoveEventHandler); thisHS.removeClass('absol-active'); thisHS.emit('deactive', { type: 'deactive', originEvent: event, tagert: thisHS }); }; var pointerDownEventHandler = function (event) { var boundRes = thisHS.getBoundingClientRect(); var boundButton = thisHS.$button.getBoundingClientRect(); left0 = event.clientX; if (event.target == thisHS.$button) { innerOffset0 = thisHS.innerOffset; } else { var newInnerOffset = int_map(left0 - boundButton.width / 2 - boundRes.left, 0, boundRes.width, 0, thisHS.innerWidth); if (newInnerOffset + thisHS.outerWidth > thisHS.innerWidth) newInnerOffset = thisHS.innerWidth - thisHS.outerWidth; if (newInnerOffset < 0) newInnerOffset = 0; thisHS.innerOffset = newInnerOffset; //todo event.innerOffset = newInnerOffset; innerOffset0 = newInnerOffset; thisHS.emit('scroll', event); } var body = Scroller_$(document.body); body.on('pointerleave', finishEventHandler); body.on('pointerup', finishEventHandler); body.on('pointermove', pointerMoveEventHandler); thisHS.addClass('absol-active'); thisHS.emit('active', { type: 'deactive', originEvent: event, tagert: thisHS }); }; this.on('pointerdown', pointerDownEventHandler, true); } HScrollbar.tag = 'hscrollbar'; HScrollbar.render = function () { return Scroller_({ tag: 'scrollbar', class: 'absol-hscrollbar' }, true); } HScrollbar.prototype.updateValue = function () { this.$button.addStyle('width', Math.min(this.outerWidth / this.innerWidth, 1) * 100 + '%'); this.$button.addStyle('left', this.innerOffset / this.innerWidth * 100 + '%'); }; HScrollbar.property = { innerOffset: { set: function (value) { value = value || 0; if (this._innerOffset != value) { this._innerOffset = value; this.updateValue(); } }, get: function () { return this._innerOffset || 0; } }, innerWidth: { set: function (value) { value = value || 1; value = Math.max(value, 1); if (this._innerWidth != value) { this._innerWidth = value; this.updateValue(); } }, get: function () { return this._innerWidth || 1; } }, outerWidth: { set: function (value) { value = value || 0; value = Math.max(value, 0); if (this._outerWidth != value) { this._outerWidth = value; this.updateValue(); } }, get: function () { return this._outerWidth || 0; } } }; ACore["c" /* default */].install([VScrollbar, HScrollbar, Scrollbar, VScroller, HScroller]); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/ChromeCalendar.js var ChromeCalendar_ = ACore["c" /* default */]._; var ChromeCalendar_$ = ACore["c" /* default */].$; /** * @extends AElement * @constructor */ function ChromeCalendar() { var thisCal = this; this.$years = ChromeCalendar_$('.absol-chrome-calendar-years', this); ChromeCalendar_({ child: Array(200).fill(0).map(function (u, i) { return { class: 'absol-chrome-calendar-year', child: [ { class: 'absol-chrome-calendar-year-head', child: { text: i + 1890 + '' }, } ], props: { __year__: i + 1890 }, on: { click: function () { thisCal.expandYear(this.__year__); } } }; }) }).addTo(this.$years); this.$title = ChromeCalendar_$('.absol-chrome-calendar-title', this) .on('click', function () { thisCal.viewYear(); }); this.$titleTime = ChromeCalendar_$('.absol-chrome-calendar-title > .title-time', this); this.$instance = ChromeCalendar_$('.absol-chrome-calendar-instance', this); this.$month = ChromeCalendar_$('.absol-chrome-calendar-month', this); this._minLimitDate = new Date(1890, 0, 1, 0, 0, 0, 0, 0); this._maxLimitDate = new Date(2090, 0, 1, 0, 0, 0, 0, 0); this._selectedDates = [beginOfDay(new Date())]; this._viewDate = new Date(); this.$prevBtn = ChromeCalendar_$('.absol-chrome-calendar-header-buttons > button.prev-btn', this) .on('click', function () { thisCal.viewPrevMonth(); }); this.$todayBtn = ChromeCalendar_$('.absol-chrome-calendar-header-buttons > button.today-btn', this) .on('click', function () { thisCal.viewToday(); thisCal.pickDate(new Date()); }); this.$nextBtn = ChromeCalendar_$('.absol-chrome-calendar-header-buttons > button.next-btn', this) .on('click', function () { thisCal.viewNexMounth(); }); /*** * * @type {VScroller} */ this.$yearScroller = ChromeCalendar_$('vscroller.absol-chrome-calendar-years', this); this.$yearItems = []; ChromeCalendar_$('.absol-chrome-calendar-year', this.$yearScroller, function (e) { thisCal.$yearItems.push(e); }); this.$attachHook = ChromeCalendar_('attachhook').addTo(this) .on('error', function () { thisCal.$yearScroller.requestUpdateSize(); thisCal.expandYear(thisCal._viewDate.getFullYear()); }); this.sync = new Promise(function (rs) { thisCal.$attachHook.on('error', rs); }); return this; } ChromeCalendar.tag = 'ChromeCalendar'.toLowerCase(); ChromeCalendar.render = function () { return ChromeCalendar_({ class: 'absol-chrome-calendar', extendEvent: 'pick', child: [ { class: 'absol-chrome-calendar-header', child: [ { class: 'absol-chrome-calendar-title', child: [ { tag: 'span', class: 'title-time', child: { text: 'Septemper, 2019' } }, { tag: 'span', child: { text: '\u25bc' } } ] }, { class: 'absol-chrome-calendar-header-buttons', child: [ { tag: 'button', class: 'prev-btn', child: 'span.mdi.mdi-menu-left', attr: { title: 'Previous Month' } }, { tag: 'button', class: 'today-btn', child: 'span.mdi.mdi-circle-medium', attr: { title: 'Today' } }, { tag: 'button', class: 'next-btn', child: 'span.mdi.mdi-menu-right', attr: { title: 'Next Month' } } ] } ] }, { class: 'absol-chrome-calendar-instance', child: [ { class: 'absol-chrome-calendar-dayofweek', child: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'].map(function (text) { return { child: { text: text } } }) }, { class: 'absol-chrome-calendar-month', child: Array(6).fill(0).map(function (u, i) { return { class: 'absol-chrome-calendar-week-in-mounth', child: Array(7).fill(0).map(function (v, j) { return { child: { text: i * 7 + j + '' } } }) } }) }, { tag: 'vscroller', class: 'absol-chrome-calendar-years', child: {} } ] } ] }); } /** * @param {Date} date * @returns {Boolean} */ ChromeCalendar.prototype._isSelectedDate = function (date) { for (var i = 0; i < this._selectedDates.length; ++i) { if (compareDate(date, this._selectedDates[i]) == 0) return true; } return false; }; /** * @param {Date} date * @returns {Boolean} */ ChromeCalendar.prototype._isSelectedMonth = function (date) { for (var i = 0; i < this._selectedDates.length; ++i) { if (compareMonth(date, this._selectedDates[i]) == 0) return true; } return false; }; ChromeCalendar.prototype.pickDate = function (date, event) { this._selectedDates = [date]; this._updateMonth(this.$month); if (this.$lastOpenYearItem) this.$lastOpenYearItem.$months.updateActiveMonth(); this.emit('pick', { type: 'pick', value: date, isTrusted: event && event.isTrusted, originEvent: event, selectedDates: this.selectedDates }); }; /** * @param {Element} monthElt * @param {Date} date */ ChromeCalendar.prototype._fillMonth = function (monthElt, date) { var self = this; if (monthElt.$cells === undefined) {//for faster, attach event to element monthElt.$cells = []; ChromeCalendar_$('.absol-chrome-calendar-week-in-mounth > div', this.$month, function (elt) { monthElt.$cells.push(elt); elt.on('click', function (event) { self.pickDate(this.__date__, event); if (elt.containsClass('absol-chrome-calendar-not-in-month')) { if (this.__date__.getDate() < 15) { self.viewNexMounth(); } else { self.viewPrevMonth(); } } }); }); } var currentDate = beginOfWeek(datetime_beginOfMonth(date)); var d; var cell; for (var i = 0; i < monthElt.$cells.length; ++i) { var cell = monthElt.$cells[i]; d = currentDate.getDate(); cell.innerHTML = '' + d; cell.__date__ = beginOfDay(currentDate); currentDate = nextDate(currentDate); } }; ChromeCalendar.prototype._updateMonth = function (monthElt) { if (!monthElt.$cells) return; // days weren't filled var now = new Date(); var viewM = this._viewDate.getMonth(); var m; var cell; var currentDate; for (var i = 0; i < monthElt.$cells.length; ++i) { cell = monthElt.$cells[i]; currentDate = cell.__date__; m = currentDate.getMonth(); if (m != viewM) cell.addClass('absol-chrome-calendar-not-in-month'); else cell.removeClass('absol-chrome-calendar-not-in-month'); if (compareDate(currentDate, now) == 0) cell.addClass('absol-chrome-calendar-today'); else cell.removeClass('absol-chrome-calendar-today'); if (this._isSelectedDate(currentDate)) cell.addClass('absol-chrome-calendar-selected'); else cell.removeClass('absol-chrome-calendar-selected'); if (compareDate(this._minLimitDate, currentDate) > 0 || compareDate(currentDate, this._maxLimitDate) > 0) { cell.addClass('absol-chrome-calendar-date-disabled'); } else { cell.removeClass('absol-chrome-calendar-date-disabled'); } } }; ChromeCalendar.prototype.viewNexMounth = function () { var self = this; this.sync = this.sync.then(function () { return new Promise(function (rs) { var oldBound = self.$month.getBoundingClientRect(); var oldMonth = self.$month.cloneNode(true); var instanceBound = self.$instance.getBoundingClientRect(); if (self.$lastAnimationCtn) { self.$lastAnimationCtn.removeClass('new').addClass('old'); } var oldMonthCnt = ChromeCalendar_({ class: ['absol-chrome-calendar-month-animation-container', 'old'], style: { top: oldBound.top - instanceBound.top + 'px', height: oldBound.height + 'px', width: oldBound.width + 'px' }, child: oldMonth }).addTo(self.$instance); self._viewDate = nextMonth(self._viewDate); self.viewMonth(); var newMonth = self.$month.cloneNode(true); var overlap = 0; var j = 41; while (j >= 0 && self.$month.$cells[j].containsClass('absol-chrome-calendar-not-in-month')) { overlap += oldBound.height / 6; j -= 7; } var newMonthCtn = ChromeCalendar_({ class: ['absol-chrome-calendar-month-animation-container', 'new'], style: { top: oldBound.top + oldBound.height - instanceBound.top - overlap + 'px', height: oldBound.height + 'px', width: oldBound.width + 'px' }, child: newMonth }).addTo(self.$instance); self.$lastAnimationCtn = newMonthCtn; setTimeout(function () { oldMonthCnt.addStyle('top', oldBound.top - oldBound.height + overlap - instanceBound.top + 'px'); newMonthCtn.addStyle('top', oldBound.top - instanceBound.top + 'px'); }, 20); setTimeout(function () { self.$lastAnimationCtn = undefined; oldMonthCnt.remove(); newMonthCtn.remove(); }, 220); setTimeout(rs, 22); }); }); return this.sync; }; ChromeCalendar.prototype.viewPrevMonth = function () { var self = this; this.sync = this.sync.then(function () { return new Promise(function (rs) { var oldBound = self.$month.getBoundingClientRect(); var oldMonth = self.$month.cloneNode(true); var instanceBound = self.$instance.getBoundingClientRect(); if (self.$lastAnimationCtn) { self.$lastAnimationCtn.removeClass('new').addClass('old'); } var oldMonthCnt = ChromeCalendar_({ class: ['absol-chrome-calendar-month-animation-container', 'old'], style: { top: oldBound.top - instanceBound.top + 'px', height: oldBound.height + 'px', width: oldBound.width + 'px' }, child: oldMonth }).addTo(self.$instance); self._viewDate = prevMonth(self._viewDate); self.viewMonth(); var newMonth = self.$month.cloneNode(true); var overlap = 0; var j = 0; while (j < 42 && self.$month.$cells[j].containsClass('absol-chrome-calendar-not-in-month')) { overlap += oldBound.height / 6; j += 7; } var newMonthCtn = ChromeCalendar_({ class: ['absol-chrome-calendar-month-animation-container', 'new'], style: { top: oldBound.top - oldBound.height + overlap - instanceBound.top + 'px', height: oldBound.height + 'px', width: oldBound.width + 'px' }, child: newMonth }).addTo(self.$instance); self.$lastAnimationCtn = newMonthCtn; setTimeout(function () { oldMonthCnt.addStyle('top', oldBound.top + oldBound.height - overlap - instanceBound.top + 'px'); newMonthCtn.addStyle('top', oldBound.top - instanceBound.top + 'px'); }, 20); setTimeout(function () { self.$lastAnimationCtn = undefined; oldMonthCnt.remove(); newMonthCtn.remove(); }, 220); setTimeout(rs, 22); }) }); return this.sync; }; ChromeCalendar.prototype.viewToday = function () { this._viewDate = new Date(); this.viewMonth(); }; ChromeCalendar.prototype.viewMonth = function () { this._updateButtons(); this.removeClass('view-year').addClass('view-month'); this._fillMonth(this.$month, this._viewDate); this._updateMonth(this.$month); this.$titleTime.innerHTML = formatDateString(this._viewDate, 'mmmm, yyyy'); }; ChromeCalendar.prototype.viewYear = function () { this.removeClass('view-month') .addClass('view-year'); this.expandYear(this._viewDate.getFullYear()); this.$yearScroller.requestUpdateSize(); }; ChromeCalendar.prototype.expandYear = function (year) { var fontSize = this.getFontSize(); var self = this; var lastItemElt = this.$lastOpenYearItem; var itemElt = this.$yearItems[year - 1890]; var lastYear = 100000000; if (lastItemElt && lastItemElt.__year__ != year) { lastYear = lastItemElt.__year__; lastItemElt.addClass('start-closing'); setTimeout(function () { lastItemElt.removeClass('start-closing').addClass('closing'); }, 0); setTimeout(function () { lastItemElt.removeClass('closing'); lastItemElt.$months.remove(); lastItemElt.$months = undefined; }, 100); } if (lastItemElt != itemElt) { if (!itemElt.$months) { itemElt.$months = this._createMonths(year).addTo(itemElt); itemElt.addClass('start-opening'); setTimeout(function () { itemElt.removeClass('start-opening').addClass('opening'); }, 1); setTimeout(function () { itemElt.removeClass('opening'); }, 100); } } var dy = itemElt.getBoundingClientRect().top - self.$yearScroller.getBoundingClientRect().top - fontSize * 0.45; if (itemElt.__year__ > lastYear) { dy -= 6 * fontSize; } self.$yearScroller.scrollBy(dy, 100); this.$lastOpenYearItem = itemElt; itemElt.$months.updateActiveMonth(); }; ChromeCalendar.prototype._updateButtons = function () { var endOfPrevMonth = prevDate(datetime_beginOfMonth(this._viewDate)); if (compareDate(endOfPrevMonth, this._minLimitDate) < 0) { this.$prevBtn.addClass('absol-chrome-calendar-button-disabled'); } else { this.$prevBtn.removeClass('absol-chrome-calendar-button-disabled'); } var beginOfNextMonth = nextMonth(this._viewDate); if (compareDate(beginOfNextMonth, this._maxLimitDate) > 0) { this.$nextBtn.addClass('absol-chrome-calendar-button-disabled'); } else { this.$nextBtn.removeClass('absol-chrome-calendar-button-disabled'); } var now = new Date(); if (compareDate(now, this._maxLimitDate) > 0 || compareDate(now, this._minLimitDate) < 0) { this.$todayBtn.addClass('absol-chrome-calendar-button-disabled'); } else { this.$todayBtn.removeClass('absol-chrome-calendar-button-disabled'); } }; ChromeCalendar.prototype._createMonths = function (year) { var now = new Date(); var self = this; var res = ChromeCalendar_({ class: 'absol-chrome-calendar-year-mounths', child: Array(3).fill('').map(function (u, i) { return { class: 'absol-chrome-calendar-year-row-months', child: Array(4).fill(0).map(function (v, j) { var date = new Date(year, i * 4 + j, 1, 0, 0, 0, 0, 0); return { class: ['absol-chrome-calendar-year-month'] .concat((year == now.getFullYear() && now.getMonth() == i * 4 + j) ? ['absol-chrome-calendar-today'] : []) .concat(self._isSelectedMonth(date) ? ['absol-chrome-calendar-selected'] : []) , child: { text: monthNames[i * 4 + j].substr(0, 3) }, on: { click: function () { self._viewDate = date; self.viewMonth(); } }, props: { __date__: date } } }) } }) }); res.$monthList = []; ChromeCalendar_$('.absol-chrome-calendar-year-month', res, function (e) { res.$monthList.push(e); }); res.updateActiveMonth = function () { res.$monthList.forEach(function (e) { now = new Date(); if (compareMonth(e.__date__, now) == 0) { e.addClass('absol-chrome-calendar-today'); } else { e.removeClass('absol-chrome-calendar-today'); } if (self._isSelectedMonth(e.__date__)) { e.addClass('absol-chrome-calendar-selected'); } else { e.removeClass('absol-chrome-calendar-selected'); } var beginOfMonth = datetime_beginOfMonth(e.__date__); var endOfMonth = prevDate(nextMonth(e.__date__)); if (compareDate(self._minLimitDate, endOfMonth) > 0 || compareDate(beginOfMonth, self._maxLimitDate) > 0) { e.addClass('absol-chrome-calendar-date-disabled'); } else { e.removeClass('absol-chrome-calendar-date-disabled'); } }); } return res; }; ChromeCalendar.prototype.init = function (props) { props = props || {}; this.super(props); this.viewToday(); }; ChromeCalendar.property = {}; ChromeCalendar.property.selectedDates = { set: function (value) { value = value || []; if (value instanceof Date) value = [value]; this._selectedDates = value; this.sync = this.sync.then(function () { this._viewDate = this._selectedDates[0] || new Date();//default is today this.viewMonth(); }.bind(this)); }, get: function () { return this._selectedDates; } }; ChromeCalendar.property.minLimitDate = { set: function (value) { if (!value) value = new Date(1890, 0, 1, 0, 0, 0, 0, 0); if (typeof value == 'number') value = new Date(value); this._minLimitDate = value; //todo this._updateButtons(); this.sync = this.sync.then(function () { this._updateMonth(this.$month); if (this.$lastOpenYearItem) { this.$lastOpenYearItem.$months.updateActiveMonth(); } }.bind(this)); }, get: function () { return this._minLimitDate; } }; ChromeCalendar.property.maxLimitDate = { set: function (value) { if (!value) value = new Date(2090, 0, 1, 0, 0, 0, 0, 0); if (typeof value == 'number') value = new Date(value); this._maxLimitDate = value; this._updateButtons(); this.sync = this.sync.then(function () { this._updateMonth(this.$month); if (this.$lastOpenYearItem) { this.$lastOpenYearItem.$months.updateActiveMonth(); } }.bind(this)); }, get: function () { return this._minLimitDate; } }; ChromeCalendar.property.minDateLimit = ChromeCalendar.property.minLimitDate; ChromeCalendar.property.maxDateLimit = ChromeCalendar.property.maxLimitDate; ChromeCalendar.property.multiSelect = { set: function (value) { throw new Error('Not support yet!') var lastValue = this.multiSelect; value = !!value; if (lastValue != value) { if (value) { this.addClass('multi-select') } else { this.removeClass('multi-select'); } this._updateMonth(this.$month); } }, get: function () { return this.containsClass('multi-select'); } }; ACore["c" /* default */].install(ChromeCalendar); ChromeCalendar._session = Math.random() * 10000000000 >> 0; ChromeCalendar._listener = undefined; ChromeCalendar.showWhenClick = function (element, calendarProps, anchor, calendarPickListener, darkTheme) { var res = { calendarProps: Object.assign({ maxDateLimit: null, minDateLimit: null }, calendarProps), anchor: anchor, currentSession: undefined, element: element, calendarPickListener: calendarPickListener, darkTheme: darkTheme, setDateValue: function (value) { if (this.currentSession == ChromeCalendar._session) { ChromeCalendar.$calendar.selectedDates = [value]; } }, cancel: function () { } }; var clickHandler = function () { if (ChromeCalendar._session == res.currentSession) return; res.currentSession = ChromeCalendar.show(res.element, res.calendarProps, res.anchor, res.calendarPickListener, res.darkTheme); var finish = function (event) { if (event && event.target && EventEmitter["b" /* default */].hitElement(ChromeCalendar.$calendar, event)) return; document.body.removeEventListener('click', finish, false); ChromeCalendar.close(res.currentSession); ChromeCalendar.$calendar.off('pick', finish); res.currentSession = undefined; res.cancel = function () { }; }; setTimeout(function () { document.body.addEventListener('click', finish, false); ChromeCalendar.$calendar.on('pick', finish); res.cancel = finish; }, 10) }; res.remove = function () { element.removeEventListener('click', clickHandler, false); }; element.addEventListener('click', clickHandler, false); return res; }; ChromeCalendar.show = function (element, calendarProps, anchor, calendarPickListener, darkTheme) { ChromeCalendar._session = Math.random() * 10000000000 >> 0; function exec() { if (!ChromeCalendar.$ctn) { ChromeCalendar.$ctn = ChromeCalendar_('.absol-context-hinge-fixed-container'); ChromeCalendar.$follower = ChromeCalendar_('follower').addTo(ChromeCalendar.$ctn); ChromeCalendar.$calendar = ChromeCalendar_('chromecalendar') .on('pick', function (event) { if (typeof ChromeCalendar._listener == 'function') { ChromeCalendar._listener(event.value); } }).addTo(ChromeCalendar.$follower); } ChromeCalendar.$ctn.addTo(document.body); // only one value need if (calendarProps instanceof Date) calendarProps = { selectedDates: [calendarProps] }; if (calendarProps instanceof Array) calendarProps = { selectedDates: calendarProps }; Object.assign(ChromeCalendar.$calendar, calendarProps); if (darkTheme) ChromeCalendar.$ctn.addClass('dark'); else ChromeCalendar.$ctn.removeClass('dark'); ChromeCalendar.$follower.followTarget = element; ChromeCalendar.$follower.anchor = anchor; ChromeCalendar.$calendar.addStyle('visibility', 'hidden');//for prevent size change blink ChromeCalendar._listener = calendarPickListener; setTimeout(function () { ChromeCalendar.$follower.updatePosition(); ChromeCalendar.$calendar.removeStyle('visibility'); }, 2); } if (document.body) exec(); else Dom["b" /* default */].documentReady.then(exec); return ChromeCalendar._session; }; ChromeCalendar.close = function (session) { if (session !== true && session != ChromeCalendar._session) return; function exec() { ChromeCalendar.followTarget = undefined; ChromeCalendar._listener = undefined; ChromeCalendar.$ctn.remove(); } if (document.body) exec(); else Dom["b" /* default */].documentReady.then(exec); }; /* harmony default export */ var js_ChromeCalendar = (ChromeCalendar); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/CalendarInput.js var CalendarInput_ = ACore["c" /* default */]._; var CalendarInput_$ = ACore["c" /* default */].$; /** * @extends AElement * @constructor */ function CalendarInput() { var thisCI = this; this.$input = CalendarInput_$('input', this); this._value = null; this._quickOption = js_ChromeCalendar.showWhenClick(this, { minLimitDate: this.minLimitDate || this.minDateLimit, maxLimitDate: this.maxLimitDate || this.maxDateLimit, selectedDates: [new Date()] }, 'auto', function (value) { thisCI._value = value; thisCI.$input.value = thisCI.formatDateString(value); thisCI._quickOption.calendarProps.selectedDates = [value];//change new option thisCI.emit('change', { target: thisCI, value: value }, thisCI); }); OOP["a" /* default */].drillProperty(this, this._quickOption.calendarProps, { minLimitDate: 'minLimitDate', maxLimitDate: 'maxLimitDate', minDateLimit: 'minLimitDate', maxDateLimit: 'maxLimitDate' }); } CalendarInput.tag = 'CalendarInput'.toLowerCase(); CalendarInput.render = function () { return CalendarInput_({ extendEvent: ['change'], class: 'absol-calendar-input', child: 'input[type="text"][readonly="true"][value="dd/mm/yyyy"]' }); }; CalendarInput.property = {}; CalendarInput.property.value = { set: function (value) { if (value === null || value === undefined) { this.$input.value = this.formatDateString(value); this._quickOption.calendarProps.selectedDates = []; this._value = value; this._quickOption.calendarProps.selectedDates = [new Date()] } else { if (typeof value == 'number') value = new Date(value); this._value = value; this.$input.value = this.formatDateString(value); this._quickOption.calendarProps.selectedDates = [value]; } }, get: function () { return this._value; } }; CalendarInput.property.disabled = { set: function (value) { this.$input.disabled = !!value; if (value) { this.addClass('absol-disabled'); } else { this.removeClass('absol-disabled'); } }, get: function () { return this.$input.disabled; } }; CalendarInput.attribute = { disabled: { set: function (value) { this.$input.attr('disabled', value); if (this.$input.disabled) this.addClass('absol-disabled'); }, get: function () { return this.$input.attr('disabled'); }, remove: function () { this.$input.attr('disabled', undefined); this.removeClass('absol-disabled'); } } }; CalendarInput.property.dateToString = { set: function (value) { this._dateToString = value; this.$input.value = this.formatDateString(this.value); }, get: function () { return this._dateToString; } }; CalendarInput.prototype.formatDateString = function (date) { if (!date) { return { 'undefined': 'dd/mm/yyyy', 'function': '--/--/--', 'object': 'dd/mm/yyyy', 'string': typeof this.dateToString }[typeof this.dateToString] || '--/--/--'; } if (!this.dateToString) { return formatDateString(date); } else if (typeof this.dateToString == 'string') { return formatDateString(date, this.dateToString); } else if (typeof this.dateToString == 'function') { return this.dateToString(date); } }; ACore["c" /* default */].install(CalendarInput); function OldCalendarInput(){ } OldCalendarInput.tag = 'calendar-input'; OldCalendarInput.render = function(data){ return CalendarInput_({ tag: 'calendarinput', extendEvent: 'changed', props: data, on: { change: function (ev) { this.emit('changed', ev.value); } } }); }; ACore["c" /* default */].install(OldCalendarInput); /* harmony default export */ var js_CalendarInput = (CalendarInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checkboxinput.css var checkboxinput = __webpack_require__(74); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckBoxInput.js var CheckBoxInput_ = ACore["c" /* default */]._; var CheckBoxInput_$ = ACore["c" /* default */].$; var tickIcon = CheckBoxInput_(['<svg class="as-checkbox-input-check-icon" width="18px" height="18px" version="1.1" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg" >', ' <g transform="translate(0 -279)">', ' <path class="bound" d="m3 279.69h12c1.3434 0.0111 2.3298 1.5259 2.3131 2.4775v11.836c0.05005 0.89373-1.1834 2.2964-2.3131 2.3131h-12c-0.82692 0.0166-2.3131-1.1834-2.3131-2.3131v-12.237c0.0022374-1.171 0.3775-2.0759 2.3131-2.0759z" style="stroke-linejoin:round; stroke-width: 1"/>', ' <path class="tick" d="m3.1656 288.66c-0.10159 0.0612-0.11743 0.12506-0.12993 0.18899l3.7473 4.3467c0.066638 0.0459 0.11813 0.0263 0.16832 1e-3 0 0 1.7699-4.2166 4.7251-7.4568 1.4783-1.6208 3.2406-3.3659 3.2406-3.3659 0.0054-0.14125-0.10946-0.15807-0.1754-0.22551 0 0-2.5832 1.6364-4.7524 3.8336-1.8697 1.8939-3.6666 4.4016-3.6666 4.4016z"/>', ' </g>', '</svg>' ].join('') ); /*** * @extends AElement * @constructor */ function CheckboxInput() { this.$input = CheckBoxInput_$('input', this) .on('change', this.notifyChange.bind(this)); this.checked = false; this.disabled = false; this.on('click', this.eventHandler.click); this.onchange = null; } CheckboxInput.tag = "CheckboxInput".toLowerCase(); CheckboxInput.render = function (data) { return CheckBoxInput_({ tag: 'label', extendEvent: 'change', class: 'as-checkbox-input', child: [ { elt: data && data.$input, tag: 'input', class: 'as-checkbox-input-value', attr: { type: 'checkbox' } }, tickIcon.cloneNode(true) ] } ) }; /*** * as normal, change event will be fired when checkbox change by system */ CheckboxInput.prototype.notifyChange = function () { var event = { checked: this.checked }; this.emit('change', event, this); }; CheckboxInput.prototype._updateCheckedClass = function () { if (this.checked) { this.addClass('as-checked'); } else { this.removeClass('as-checked'); } }; CheckboxInput.property = {}; CheckboxInput.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } this.$input.disabled = !!value; }, get: function () { return this.$input.disabled; } }; /*** * * @type {CheckboxInput} */ CheckboxInput.property.checked = { set: function (value) { this.$input.checked = !!value; this._updateCheckedClass(); }, get: function () { return this.$input.checked; } } CheckboxInput.attribute = { checked: { set: function (value) { if (value === 'false' || value === null) { this.checked = false; } else { this.checked = true; } }, get: function () { return this.checked ? 'true' : 'false' }, remove: function () { this.checked = false; } }, disabled: { set: function (value) { if (value === 'false' || value === null) { this.disabled = false; } else { this.disabled = true; } }, get: function () { return this.disabled ? 'true' : 'false' }, remove: function () { this.disabled = false; } } }; /*** * * @type {CheckboxInput} */ CheckboxInput.eventHandler = {}; CheckboxInput.eventHandler.click = function () { this._updateCheckedClass(); }; ACore["c" /* default */].install(CheckboxInput); CheckboxInput.autoReplace = function () { var placeHolders = Array.prototype.slice.call(document.getElementsByTagName(this.tag)); var ph; var attOfPH; var attrs; var style; var classList; var attNode; var attrName, attrValue; var props; for (var i = 0; i < placeHolders.length; ++i) { ph = placeHolders[i]; attOfPH = ph.attributes; classList = []; style = {}; attrs = {}; props = {}; for (var j = 0; j < attOfPH.length; ++j) { attNode = attOfPH[j]; attrName = attNode.nodeName; attrValue = attNode.nodeValue; if (attrName == 'style') { attrValue.trim().split(';').reduce(function (style, prop) { var p = prop.split(':'); if (p.length == 2) { style[p[0].trim()] = p[1].trim(); } return style; }, style); } else if (attrName == 'class') { classList = attrValue.trim().split(/\s+/); } else if (attrName == 'onchange') { props.onchange = new Function('event', 'sender', attrValue); } else { attrs[attrName] = attrValue; } } var newElt = CheckBoxInput_({ tag: this.tag, attr: attrs, class: classList, style: style, props: props }); CheckBoxInput_$(ph).selfReplace(newElt); } }; CheckboxInput.initAfterLoad = function () { Dom["b" /* default */].documentReady.then(function () { CheckboxInput.autoReplace(); }) }; /* harmony default export */ var CheckBoxInput = (CheckboxInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checkbox.css var css_checkbox = __webpack_require__(76); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckBox.js var CheckBox_ = ACore["c" /* default */]._; var CheckBox_$ = ACore["c" /* default */].$; var $$ = ACore["c" /* default */].$$; /*** * @extends AElement * @constructor */ function CheckBox() { this.defineEvent('change'); /*** * * @type {CheckboxInput} */ this.$input = CheckBox_$('checkboxinput', this).on('change', this.notifyChange.bind(this) ); this.$labels = $$('span', this); this.on('click', this.eventHandler.click); OOP["a" /* default */].drillProperty(this, this.$input, ['checked']) } CheckBox.tag = 'checkbox'; CheckBox.render = function () { return CheckBox_({ class: ['absol-checkbox','as-no-label'], child: [ { tag: 'span', class: ['absol-checkbox-label', 'as-left'], child: { text: '' } }, 'checkboxinput', { tag: 'span', class: ['absol-checkbox-label', 'as-right'], child: { text: '' } } ] }); }; CheckBox.prototype.notifyChange = function () { this.emit('change', { type: 'change', checked: this.checked, target: this }, this); }; //v, labelText, checked CheckBox.attribute = { checked: { set: function (value) { if (value === 'false' || value == null) { this.checked = false; } else { this.checked = true; } }, get: function () { return this.checked ? 'true' : 'false' }, remove: function () { this.checked = false; } }, disabled: { set: function (value) { if (value === 'false' || value === null) { this.disabled = false; } else { this.disabled = true; } }, get: function () { return this.disabled ? 'true' : 'false' }, remove: function () { this.disabled = false; } } }; CheckBox.property = {}; CheckBox.property.text = { get: function () { return this._text; }, set: function (value) { value = value || ''; if (value.length === 0){ this.addClass('as-no-label'); } else{ this.removeClass('as-no-label'); } this._text = value; this.$labels[0].firstChild.data = value; this.$labels[1].firstChild.data = value; } }; CheckBox.property.disabled = { get: function (){ return this.$input.disabled; }, set: function (value){ value = !!value; this.$input.disabled = value; if (value){ this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } } }; /*** * * @type {{}|CheckBox} */ CheckBox.eventHandler = {}; CheckBox.eventHandler.click = function (event){ if (!EventEmitter["b" /* default */].hitElement(this.$input, event)){ this.$input.click(); } }; ACore["c" /* default */].install(CheckBox); /* harmony default export */ var js_CheckBox = (CheckBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/circlesectionlabel.css var circlesectionlabel = __webpack_require__(78); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/CircleSectionLabel.js var CircleSectionLabel_ = ACore["c" /* default */]._; var CircleSectionLabel_$ = ACore["c" /* default */].$; var _g = Svg["a" /* default */].ShareInstance._; var $g = Svg["a" /* default */].ShareInstance.$; var Design = { circleHeight: 218 - 36, borderWidth: 36, textBoxHeight: 146, textHeight: 48, indexHeight: 54, textBoxPaddingLeft: 80, indexArrowRadius: (172 - 18) / 2, indexArrowStrokeWidth: 18, indexArrowStartAngle: -Math.PI / 6, indexArrowEndAngle: -7 * Math.PI / 12 }; var CircleSectionLabel_StyleSheet = { '.as-circle-section-label-text': { height: Design.textBoxHeight / Design.textHeight + 'em', 'padding-left': Design.textBoxPaddingLeft / Design.textHeight + 'em', 'line-height': Design.textBoxHeight / Design.textHeight + 'em' }, '.as-circle-section-label-index': { 'font-size': Design.indexHeight / Design.textHeight + 'em', height: (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em', 'line-height': (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em', width: (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em' }, }; CircleSectionLabel_({ tag: 'style', id: 'circle-section-label-style', props: { innerHTML: Object.keys(CircleSectionLabel_StyleSheet).map(function (key) { var style = CircleSectionLabel_StyleSheet[key]; return key + ' {\n' + Object.keys(style).map(function (propName) { return propName + ': ' + style[propName] + ';'; }).join('\n') + '}'; }).join('\n') } }).addTo(document.head); /** * @extends AElement * @constructor */ function CircleSectionLabel() { this._ident = (Math.random() + '').replace(/[^0-9]/g, '_'); this.$background = CircleSectionLabel_$('.as-circle-section-label-background', this); this.$index = CircleSectionLabel_$('.as-circle-section-label-index', this); this.$text = CircleSectionLabel_$('.as-circle-section-label-text', this); this.$attachhook = CircleSectionLabel_('attachhook').addTo(this).on('error', function () { Dom["b" /* default */].addToResizeSystem(this); this.requestUpdateSize(); }); this.$attachhook.requestUpdateSize = this.redrawBackground.bind(this); this.$svg = _g({ tag: 'svg', attr: { width: '0', height: '0' }, child: [ { tag: 'defs', child: [ { tag: 'marker', id: 'marker_' + this._ident, attr: { markerWidth: "4", markerHeight: "4", refX: "0", refY: "1", orient: "auto", markerUnits: "strokeWidth", viewBox: "0 0 4 4" }, child: { tag: 'path', class: 'as-circle-section-label-arrow-marker-path', attr: { d: 'M0,0 L0,2 L2,1 z' } } } ] }, 'rect.as-circle-section-label-text-box', 'circle.as-circle-section-label-index-box', 'path.as-circle-section-label-arrow' ] }).addTo(this.$background); this.$indexBox = $g('circle.as-circle-section-label-index-box', this.$svg); this.$textBox = $g('rect.as-circle-section-label-text-box', this.$svg); // this.$marker = $g('defs marker', this.$svg); // this.$markerPath = $g(' path', this.$marker); this.$arrow = $g('path.as-circle-section-label-arrow', this.$svg) .attr({ 'marker-end': "url(" + '#marker_' + this._ident + ")" }); }; CircleSectionLabel.prototype.redrawBackground = function () { var indexBound = this.$index.getBoundingClientRect(); var textBound = this.$text.getBoundingClientRect(); var cHeight = indexBound.height; var cWidth = textBound.right - indexBound.left; this.$svg.attr({ height: cHeight + '', width: cWidth + '', viewBox: [0, 0, cWidth, cHeight].join(' ') }); var borderWidth = cHeight * Design.borderWidth / (Design.circleHeight + Design.borderWidth); var radius = cHeight * Design.circleHeight / (Design.circleHeight + Design.borderWidth) / 2; var x0 = indexBound.width / 2; var y0 = cHeight / 2; this.$indexBox.attr({ r: radius + '', cx: x0, cy: y0 }) .addStyle({ strokeWidth: borderWidth + '' }); var textBoxHeight = textBound.height; this.$textBox.attr( { x: x0 / 2, y: (cHeight - textBoxHeight) / 2, width: cWidth - x0 - 1, height: textBoxHeight, rx: textBoxHeight / 2, ry: textBoxHeight / 2 } ); var arrowRadius = cHeight * Design.indexArrowRadius / (Design.circleHeight + Design.borderWidth); this.$arrow.attr({ d: [ 'M', x0 + arrowRadius * Math.cos(Design.indexArrowStartAngle), y0 + arrowRadius * Math.sin(Design.indexArrowStartAngle), 'A', arrowRadius, arrowRadius, 0, 1, 1, x0 + arrowRadius * Math.cos(Design.indexArrowEndAngle), y0 + arrowRadius * Math.sin(Design.indexArrowEndAngle) ].join(' ') }).addStyle('stroke-width', cHeight * Design.indexArrowStrokeWidth / (Design.circleHeight + Design.borderWidth)) }; CircleSectionLabel.tag = 'CircleSectionLabel'.toLowerCase(); CircleSectionLabel.render = function () { return CircleSectionLabel_({ class: 'as-circle-section-label', child: [ { class: 'as-circle-section-label-background' }, '.as-circle-section-label-index', '.as-circle-section-label-text' ] }); }; CircleSectionLabel.property = {}; CircleSectionLabel.property.index = { set: function (value) { this._index = value; this.$index.clearChild().addChild(CircleSectionLabel_({ text: value + '' })) }, get: function () { return this._index; } }; CircleSectionLabel.property.text = { set: function (value) { this._text = value; this.$text.clearChild().addChild(CircleSectionLabel_({ text: value + '' })) }, get: function () { return this._text; } } ACore["c" /* default */].install(CircleSectionLabel); /* harmony default export */ var js_CircleSectionLabel = (CircleSectionLabel); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/contextmenu.css var contextmenu = __webpack_require__(80); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/menu.css var css_menu = __webpack_require__(82); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/follower.css var follower = __webpack_require__(84); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Follower.js var Follower_ = ACore["c" /* default */]._; var Follower_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function Follower() { this.$attachhook = Follower_('attachhook', this) .addTo(this) .on('attached', function () { this.requestUpdateSize(); Dom["b" /* default */].addToResizeSystem(this); }); this.$attachhook.requestUpdateSize = this.updatePosition.bind(this); this.$followTarget = undefined; this.$scrollTrackElts = []; this._scrollTrackEventHandler = undefined; this._anchor = Follower.ANCHOR_PRIORITY; this.defineEvent(['updateposition', 'preupdateposition']); } Follower.tag = 'Follower'.toLowerCase(); Follower.render = function () { return Follower_('.absol-follower'); }; Follower.prototype.clearChild = function () { var children = Array.prototype.slice.call(this.children); var attachhookElt = this.$attachhook; children.forEach(function (elt) { if (elt != attachhookElt) elt.remove(); }); } //Todo: remove child, find child.... /** * X = $target.x + F[anchor_index][0] * $target.width + F[anchor_index][1] * $content.width * Y = $target.y + F[anchor_index][2] * $target.height + F[anchor_index][3] * $content.height */ Follower.ANCHOR_FACTORS = [ [1, 0, 0, 0],//0 [0, 0, 1, 0],//1 [1, -1, 1, 0],//2 [0, -1, 0, 0],//3 [0, -1, 1, -1],//4 [1, -1, 0, -1],//5 [0, 0, 0, -1],//6 [1, 0, 1, -1],//7 [1, 0, 0.5, -0.5],//8 [0.5, -0.5, 1, 0],//9 [0, -1, 0.5, -0.5],//10 [0.5, -0.5, 0, -1],//11 [1, 0, 1, 0],//12 [0, -1, 1, 0],//13 [0, -1, 0, -1],//14 [1, 0, 0, -1],//15 ]; Follower.ANCHOR_PRIORITY = [1, 6, 2, 5, 0, 7, 3, 4, 9, 11, 8, 10, 12, 15, 13, 14]; Follower.prototype.updatePosition = function () { if (!this.$followTarget) return; this.emit('preupdateposition', { target: this }, this); var targetBound = this.$followTarget.getBoundingClientRect(); var screenSize = Dom["b" /* default */].getScreenSize(); var outRect = new Math_Rectangle(0, 0, screenSize.width, screenSize.height); var bound = this.getBoundingClientRect(); var x = 0; var y = 0; var score; var anchors = this._lastAnchor === undefined ? this.anchor : [this._lastAnchor].concat(this.anchor); var factor; var bestX, bestY, bestScore = -100000; var newContentRect; var bestAnchor; for (var i = 0; i < anchors.length; ++i) { factor = Follower.ANCHOR_FACTORS[anchors[i]]; x = targetBound.left + factor[0] * targetBound.width + factor[1] * bound.width; y = targetBound.top + factor[2] * targetBound.height + factor[3] * bound.height; newContentRect = new Math_Rectangle(x, y, bound.width, bound.height); score = newContentRect.collapsedSquare(outRect); if (score - 10 > bestScore) { bestAnchor = anchors[i]; bestScore = score; bestX = x; bestY = y; } } if (this._lastAnchor !==bestAnchor){ this.removeClass('as-anchor-'+ this._lastAnchor); this._lastAnchor = bestAnchor; this.addClass('as-anchor-'+ this._lastAnchor); } this.addStyle({ left: bestX + 'px', top: bestY + 'px' }); this.emit('updateposition', { target: this }, this); }; Follower.prototype.refollow = function () { if (!this.$followTarget) return; this.updatePosition(); this.addClass('following'); if (this._scrollTrackEventHandler) this.unfollow(); this._scrollTrackEventHandler = this.updatePosition.bind(this); this.$scrollTrackElts = []; var trackElt = this.$followTarget; while (trackElt) { if (trackElt.addEventListener) trackElt.addEventListener('scroll', this._scrollTrackEventHandler, false); else trackElt.attachEvent('onscroll', this._scrollTrackEventHandler, false); this.$scrollTrackElts.push(trackElt); trackElt = trackElt.parentElement; } if (document.addEventListener) { document.addEventListener('scroll', this._scrollTrackEventHandler, false); } else { document.attachEvent('onscroll', this._scrollTrackEventHandler, false); } this.$scrollTrackElts.push(document); }; Follower.prototype.unfollow = function () { if (!this._scrollTrackEventHandler) return;// nothing to do this.removeClass('following'); var trackElt; for (var i = 0; i < this.$scrollTrackElts.length; ++i) { trackElt = this.$scrollTrackElts[i]; if (trackElt.removeEventListener) trackElt.removeEventListener('scroll', this._scrollTrackEventHandler, false); else trackElt.dettachEvent('onscroll', this._scrollTrackEventHandler, false); } this.$scrollTrackElts = []; this._scrollTrackEventHandler = undefined; }; Follower.property = {}; Follower.property.followTarget = { set: function (elt) { if (elt === null || elt === undefined || !elt) { this.unfollow(); this.$followTarget = undefined; return; } else if (typeof elt == 'string') { elt = Follower_$(elt) || document.getElementById(elt); } if (Dom["b" /* default */].isDomNode(elt)) { this.$followTarget = elt; this._lastAncho = undefined; this.refollow(); } else throw new Error("Invalid element"); }, get: function () { return this.$followTarget; } } Follower.property.anchor = { set: function (value) { value = value || Follower.ANCHOR_PRIORITY; if (value == 'auto') value = Follower.ANCHOR_PRIORITY; if (typeof value == null) value = [value]; if (!(value instanceof Array)) throw new Error('Invalid anchor ' + value); value = value.map(function (x) { x = Math.floor(x); if (x >= 0 && x < Follower.ANCHOR_FACTORS.length) { return x; } else throw new Error("Invalid anchor: " + x); }); this._anchor = value; this._lastAnchor = undefined; this.updatePosition(); }, get: function () { return this._anchor; } } ACore["c" /* default */].install(Follower); /* harmony default export */ var js_Follower = (Follower); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Menu.js var Menu_ = ACore["c" /* default */]._; var Menu_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function MenuButton() { this.$text = Menu_$('.absol-vmenu-button-text', this); this.$key = Menu_$('.absol-vmenu-button-key', this); this.$arrow = Menu_$('.absol-vmenu-arrow', this); this.$iconCtn = Menu_$('.absol-vmenu-button-ext-icon-container', this); OOP["a" /* default */].drillProperty(this, this.$text, 'text', 'innerHTML'); OOP["a" /* default */].drillProperty(this, this.$key, 'key', 'innerHTML'); } MenuButton.tag = 'menubutton'; MenuButton.render = function () { return Menu_({ tag: 'button', class: 'absol-vmenu-button', child: [ { class: 'absol-vmenu-button-ext-icon-container', child: 'img.absol-vmenu-button-icon' }, '.absol-vmenu-button-text', '.absol-vmenu-button-key', { class: 'absol-vmenu-arrow-container', child: 'span.absol-vmenu-arrow' } ] }); }; MenuButton.property = {}; MenuButton.property.extendClasses = { set: function (value) { var self = this; this.extendClasses.forEach(function (className) { self.removeClass(className); }); this._extendClass = []; if (!value) return; if (typeof value == 'string') { value = value.split(/\s+/).filter(function (c) { return c.length > 0 }); } if (value instanceof Array) { this._extendClass = value; this._extendClass.forEach(function (className) { self.addClass(className); }); } else { throw new Error('Invalid extendClasses'); } }, get: function () { return this._extendClass || []; } }; MenuButton.property.icon = { set: function (value) { this.$iconCtn.clearChild(); this._icon = value; if (value) { Menu_(value).addTo(this.$iconCtn); } }, get: function () { return this._icon; } }; MenuButton.property.iconSrc = { set: function (value) { if (value) this.icon = { tag: 'img', props: { src: value } }; else this.icon = value; }, get: function () { return this.icon && this.icon.props && this.icon.props.src; } }; MenuButton.property.extendStyle = { set: function (value) { this.removeStyle(this._extendStyle || {}); this._extendStyle = value || {}; this.addStyle(this.extendStyle); }, get: function () { return this._extendStyle || {}; } }; ACore["c" /* default */].install(MenuButton); /*** * * @extends Follower * @constructor */ function Dropdown() { this.$container = Menu_$('.absol-dropdown-content', this); this.$container.followTarget = this; this.$container.anchor = [1, 2, 6, 5]; } Dropdown.tag = 'dropdown'; Dropdown.render = function () { return Menu_({ class: ['absol-drop-hidden', 'absol-dropdown'], child: 'follower.absol-dropdown-content.as-bscroller' }); }; Dropdown.property = {}; Dropdown.property.show = { set: function (value) { if (value) { this.removeClass('absol-drop-hidden'); if (this.$container.lastChild && this.$container.lastChild.$items) { this.$container.lastChild.$items.forEach(function (itemElt) { if (itemElt.autoFixParrentSize) { itemElt.autoFixParrentSize(); } }); } var aPst = this.findAvailablePosition(); if (aPst.crampedHeight) { this.removeClass('overlap-top'); this.$container.followTarget = null; this.$container.addStyle({ 'max-height': aPst.maxHeight + 'px' }); this.$container.refollow(); this.$container.updatePosition(); this.$container.addStyle('top', this.getBoundingClientRect().top + aPst.posTop + 'px'); } else { this.$container.removeStyle('max-height') .removeStyle('top'); this.$container.refollow(); this.$container.updatePosition(); } } else { this.addClass('absol-drop-hidden'); } }, get: function () { return !this.containsClass('absol-drop-hidden'); } }; Dropdown.prototype.findAvailablePosition = function () { var outBound = Dom["b" /* default */].traceOutBoundingClientRect(document.body); var containerBound = this.$container.getBoundingClientRect(); var bound = this.getBoundingClientRect(); var distTop = bound.top - outBound.top; var distLeft = bound.left - outBound.left; var distRight = -bound.right + outBound.right; var distBottom = -bound.bottom + outBound.bottom; var result = {}; if (distLeft >= containerBound.width) result.left = true; if (distTop >= containerBound.height) result.top = true; if (distRight >= containerBound.width) result.right = true; if (distBottom >= containerBound.height) result.bottom = true; if (distRight + bound.width >= containerBound.width) result.overlapRight = true; if (distLeft + bound.width >= containerBound.width) result.overlapLeft = true; if (distBottom + bound.height >= containerBound.height) result.overlapBottom = true; if (distTop + bound.height >= containerBound.height) result.overlapTop = true; if (!result.overlapTop && !result.overlapBottom) { result.crampedHeight = true; result.maxHeight = outBound.height - 20; result.posTop = distBottom - Math.min(containerBound.height, result.maxHeight) + bound.height - 10; } return result; }; Dropdown.prototype.addChild = function (child) { if (child instanceof Array) { for (var i = 0; i < child.length; ++i) this.addChild(child[i]); } else { if (!this.$trigger) { this.super(child); this.$trigger = child; } else { this.$container.addChild(child); } } }; Dropdown.prototype.clearChild = function () { if (this.$trigger) { this.$trigger.selfRemove(); this.$trigger = undefined; } this.$container.clearChild(); }; Dropdown.prototype.init = function (props) { props = props || {}; Object.assign(this, props); }; function Dropright() { this.$container = Menu_$('.absol-dropright-content', this); this.$container.followTarget = this; this.$container.anchor = [0, 3, 7, 4]; } Dropright.tag = 'dropright'; Dropright.render = function () { return Menu_({ class: ['absol-drop-hidden', 'absol-dropright'], child: 'follower.absol-dropright-content.as-bscroller', data: { $trigger: undefined, $content: undefined, _isShow: false } }); } Object.assign(Dropright.prototype, Dropdown.prototype); //is the same Dropright.prototype.addChild = Dropdown.prototype.addChild; Dropright.prototype.clearChild = Dropdown.prototype.clearChild; Dropright.property = Object.assign({}, Dropdown.property); function VMenuLine() { return Menu_('<div class="absol-vmenu-line"><div></div></div>'); } VMenuLine.tag = 'VMenuLine'.toLowerCase(); function VMenuItem() { var thisVM = this; this.sync = new Promise(function (rs) { Menu_('attachhook').addTo(thisVM).on('error', function () { this.remove(); rs(); }) }); this.$dropper = Menu_$('dropright', this); this.$vmenu = Menu_$('vmenu', this); this.$button = Menu_$('menubutton', this); this.$text = thisVM.$button.$text; this.$key = thisVM.$button.$key; this.$arrow = thisVM.$button.$arrow; this.$iconCtn = thisVM.$button.$iconCtn; OOP["a" /* default */].drillProperty(this, this.$button, ['text', 'extendClasses', 'extendStyle', 'key', 'icon', 'iconSrc']); OOP["a" /* default */].drillProperty(this, this.$vmenu, ['activeTab']); this.eventHandler = OOP["a" /* default */].bindFunctions(this, VMenuItem.eventHandler); this.$vmenu.on('press', this.eventHandler.pressItem, true); this.$button.on('click', this.eventHandler.clickButton, true); this.$button.on('mouseenter', this.eventHandler.enterButton, true); this._textMarginRight = 0; } VMenuItem.tag = 'VMenuItem'.toLowerCase(); VMenuItem.render = function () { return Menu_({ tag: 'dropright', extendEvent: ['press', 'enter'], child: ['menubutton', { tag: 'vmenu', }] }); }; VMenuItem.prototype.init = function (props) { Object.assign(this, props || {}); this.sync = this.sync.then(this.autoFixParrentSize.bind(this)); }; VMenuItem.prototype.autoFixParrentSize = function () { var parentWidth = this.$dropper.getBoundingClientRect().width;// dropper is fixed parent content size if (!parentWidth) return; var buttonWidth = this.$button.getBoundingClientRect().width; var fontSize = this.$text.getFontSize(); this._textMarginRight = parentWidth - buttonWidth + this._textMarginRight; this.$text.addStyle('margin-right', this._textMarginRight / fontSize + 'em'); }; VMenuItem.eventHandler = {}; VMenuItem.eventHandler.enterButton = function (event) { event.menuItem = this; var newEvent = EventEmitter["b" /* default */].copyEvent(event); this.emit('enter', newEvent, this); }; VMenuItem.eventHandler.pressItem = function (event) { var newEvent = EventEmitter["b" /* default */].copyEvent(event, { target: this }); this.emit('press', newEvent, this); }; VMenuItem.eventHandler.clickButton = function (event) { event.menuDontHide = this.items && this.items.length > 0; event.menuItem = this; event.vmenuItem = this; var newEvent = EventEmitter["b" /* default */].copyEvent(event, { target: this }); this.emit('press', newEvent, this); }; VMenuItem.property = {}; VMenuItem.property.items = { set: function (items) { items = items || []; if (items.length > 0) { this.$arrow.addClass(['mdi', 'mdi-chevron-right']); } else { this.$arrow.removeClass(['mdi', 'mdi-chevron-right']); } this.$vmenu.items = items; }, get: function () { return this.$vmenu.items; } }; VMenuItem.property.disable = { set: function (value) { if (value) { this.addClass('absol-menu-item-disable'); } else { this.removeClass('absol-menu-item-disable'); } }, get: function () { return this.containsClass('absol-menu-item-disable'); } }; function VMenu() { var thisVM = this; this.sync = new Promise(function (rs) { Menu_('attachhook').addTo(thisVM).on('error', function () { this.remove(); rs(); }) }); } VMenu.tag = 'vmenu'; VMenu.render = function () { return Menu_({ class: 'absol-vmenu', extendEvent: 'press' }); }; VMenu.property = {}; VMenu.property.activeTab = { set: function (tabIndex) { this._activeTab = tabIndex; if (this.$items) { for (var i = 0; i < this.$items.length; ++i) { var item = this.$items[i]; item.show = i == tabIndex && !item.disable; item.activeTab = -1; if (i == tabIndex && !item.disable) { item.$button && item.items && item.items.length > 0 && item.$button.addClass('absol-vmenu-button-hover'); } else { item.$button && item.$button.removeClass('absol-vmenu-button-hover'); } } } }, get: function () { return this._activeTab; } }; VMenu.property.extendStyle = { set: function (value) { this.removeStyle(this._extendStyle || {}); this._extendStyle = value || {}; this.addStyle(this.extendStyle); }, get: function () { return this._extendStyle || {}; } }; VMenu.property.extendClasses = { set: function (value) { var self = this; this.extendClasses.forEach(function (className) { self.removeClass(className); }); this._extendClass = []; if (!value) return; if (typeof value == 'string') { value = value.split(/\s+/).filter(function (c) { return c.length > 0 }); } if (value instanceof Array) { this._extendClass = value; this._extendClass.forEach(function (className) { self.addClass(className); }); } else { throw new Error('Invalid extendClasses'); } }, get: function () { return this._extendClass || []; } }; VMenu.eventHandler = {}; VMenu.eventHandler.enterItem = function (event) { var tabIndex = event.menuItem._tabIndex; this.activeTab = tabIndex; }; VMenu.eventHandler.pressItem = function (event) { this.emit('press', EventEmitter["b" /* default */].copyEvent(event, { target: this }), this); }; VMenu.property.items = { set: function (items) { this._childFromItems(items || []); }, get: function () { return this.$items; } } VMenu.prototype.init = function (props) { Object.assign(this, props || {}); }; VMenu.prototype._childFromItems = function (items) { this.clearChild(); this.$items = items.map(function (item, index) { var itemElt; if (typeof item === 'string' && (item.substr(0, 1) === '-' || item.substr(0, 1) === '=')) { itemElt = Menu_('vmenuline'); } else if (Object(Dom["e" /* isDomNode */])(item)) { itemElt = item; } else if (item.child || item.class || item.tag || item.style || typeof item === 'string') { itemElt = Menu_(item); } else { itemElt = Menu_({ tag: 'vmenuitem', props: Object.assign({ _tabIndex: index }, item), on: { enter: { callback: this.eventHandler.enterItem, cap: true }, press: { callback: this.eventHandler.pressItem, cap: true } } }); } this.addChild(itemElt); return itemElt; }.bind(this)); //todo }; function HMenuItem() { this.$vmenu = Menu_$('vmenu', this); this.$dropDown = this; this.$button = Menu_$('button.absol-hmenu-button', this); OOP["a" /* default */].drillProperty(this, this.$button, 'text', 'innerHTML'); OOP["a" /* default */].drillProperty(this, this.$vmenu, 'items'); OOP["a" /* default */].drillProperty(this, this.$vmenu, 'activeTab'); this.$button.on('click', this.eventHandler.clickButton); this.$button.on('mouseenter', this.eventHandler.enterButton, true); this.$vmenu.on('press', this.eventHandler.pressItem, true); //property show not need because dropdown is itself return this; } HMenuItem.tag = 'HMenuItem'.toLowerCase(); HMenuItem.render = function () { return Menu_({ tag: 'dropdown', extendEvent: ['press', 'enter'], child: ['button.absol-hmenu-button', 'vmenu' ] }); }; HMenuItem.eventHandler = {}; HMenuItem.eventHandler.clickButton = function (event) { event.menuItem = this; event.hmenuItem = this; this.emit('press', EventEmitter["b" /* default */].copyEvent(event, { target: this }), this); }; HMenuItem.eventHandler.enterButton = function (event) { event.menuItem = this; this.emit('enter', EventEmitter["b" /* default */].copyEvent(event, { target: this }), this); }; HMenuItem.eventHandler.pressItem = function (event) { this.emit('press', EventEmitter["b" /* default */].copyEvent(event, { target: this }), this); }; HMenuItem.prototype = {}; HMenuItem.prototype.disable = VMenuItem.prototype.disable; HMenuItem.prototype.init = function (props) { props = props || {}; Object.assign(this, props); }; /*** * @extends AElement * @constructor */ function HMenu() { } HMenu.tag = 'hmenu'; HMenu.render = function () { return Menu_({ class: 'absol-hmenu', extendEvent: ['press', 'enter', 'activetab', 'cancel'] }); }; HMenu.eventHandler = {}; HMenu.eventHandler.pressItem = function (event) { /** * this.activeTab can be undefined * undefine >= 0 => false * undefine < 0 => false */ if (event.menuItem.items && event.menuItem.items.length > 0 && !(this.activeTab >= 0)) { this.activeTab = event.menuItem._tabIndex; } else { event.isLeaf = (!event.menuItem.items || !event.menuItem.items.length); this.emit('press', event, this); } }; HMenu.eventHandler.enterItem = function (event) { if (this.activeTab >= 0) { this.activeTab = event.menuItem._tabIndex; } }; HMenu.eventHandler.clickSomewhere = function (event) { if (EventEmitter["b" /* default */].hitElement(this, event)) return; this.activeTab = -1; window.removeEventListener('blur', this.eventHandler.clickSomewhere); }; HMenu.prototype._childFromItems = function (items) { this.clearChild(); this.$items = items.map(function (item, index) { var res = Menu_({ tag: 'hmenuitem', props: Object.assign({ _tabIndex: index }, item), on: { press: { callback: this.eventHandler.pressItem, cap: true }, enter: { callback: this.eventHandler.enterItem, cap: true } } }); this.addChild(res); return res; }.bind(this)); }; HMenu.prototype.init = function (props) { Object.assign(this, props || {}); }; HMenu.property = {}; HMenu.property.items = { set: function (items) { this._childFromItems(items || []); }, get: function () { return this.$items; } }; HMenu.property.activeTab = { set: function (tabIndex) { var lastValue = this._activeTab; this._activeTab = tabIndex; for (var i = 0; i < this.$items.length; ++i) { var item = this.$items[i]; item.show = i == tabIndex && !item.disable; item.activeTab = -1; if (i == tabIndex && !item.disable) { item.$button && item.items && item.items.length > 0 && item.$button.addClass('absol-hmenu-button-hover'); } else { item.$button && item.$button.removeClass('absol-hmenu-button-hover'); } } if (!(lastValue >= 0) && (this._activeTab >= 0)) { setTimeout(function () { Menu_$(document.body).on('click', this.eventHandler.clickSomewhere, false); window.addEventListener('blur', this.eventHandler.clickSomewhere); }.bind(this), 100); } else if ((lastValue >= 0) && !(this._activeTab >= 0)) { Menu_$(document.body).off('click', this.eventHandler.clickSomewhere, false); } if (lastValue >= 0) { if (tabIndex >= 0 && tabIndex != lastValue) { this.emit('activetab', { type: 'activetab', tabIndex: tabIndex, target: this }, this); } else if (!(tabIndex >= 0)) { this.emit('cancel', { type: 'cancel', lastActiveIndex: lastValue, target: this }, this); } } else { if (tabIndex >= 0) { this.emit('activetab', { type: 'activetab', tabIndex: tabIndex, target: this }, this); } } }, get: function () { return this._activeTab; } }; /*** * @extends AElement * @constructor */ function VRootMenu() { this._items = []; this.items = []; } VRootMenu.tag = 'VRootMenu'.toLowerCase(); VRootMenu.render = function () { return Menu_({ class: 'as-v-root-menu', extendEvent: ['press', 'enter', 'activetab', 'cancel'] }); }; VRootMenu.prototype._childFromItems = function (items) { var thisM = this; this.clearChild(); this.$items = items.map(function (item, i) { var itemElt; if (typeof item === 'string' && (item.substr(0, 1) === '-' || item.substr(0, 1) === '=')) { itemElt = Menu_('vmenuline'); } else if (Object(Dom["e" /* isDomNode */])(item)) { itemElt = item; } else if (item.child || item.class || item.tag || item.style || typeof item === 'string') { itemElt = Menu_(item); } else { itemElt = Menu_({ tag: 'vmenuitem', props: item, on: { enter: thisM.eventHandler.enterItem, press: thisM.eventHandler.pressItem } }); } itemElt._tabIndex = i; thisM.addChild(itemElt); return itemElt; }); }; VRootMenu.property = Object.assign({}, HMenu.property); VRootMenu.eventHandler = Object.assign({}, HMenu.eventHandler); ACore["c" /* default */].install([HMenu, VMenuItem, VMenu, Dropright, VMenuLine, Dropdown, HMenuItem, VRootMenu]); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/ContextMenu.js var ContextMenu_ = ACore["c" /* default */]._; var ContextMenu_$ = ACore["c" /* default */].$; var supportContextEvent = false; var isMobile = BrowserDetector["a" /* default */].isMobile; /** * @extends AElement * @constructor */ function ContextCaptor() { this.attachedElt = null; this.$textarea = ContextMenu_$('textarea', this) .on('contextmenu', this.eventHandler.contextmenu, true); this._ss = 0; this._isTouch = false; /** this._target = null; * @type {Vec2} */ this._posStart = null; /** * @type {Vec2} */ this._posCurrent = null; this._touchId = -100; this._longPressTimeout = -1; this._removeTimeout = -1; this._fireContextMenuTimeout = -1; this.$target = null; this._pointerSession = 0; this._lastContextSession = 0; this.mousedownEvent = null; this.sync = Promise.resolve(); }; ContextCaptor.prototype.attachTo = function (elt) { if (this.attachedElt) { this.attachedElt.removeEventListener('mousedown', this.eventHandler.mousedown); this.attachedElt.removeEventListener('touchstart', this.eventHandler.mousedown); this.attachedElt = null; } this.attachedElt = elt; if (this.attachedElt) { this.attachedElt.addEventListener('mousedown', this.eventHandler.mousedown); this.attachedElt.addEventListener('touchstart', this.eventHandler.mousedown); } return this; }; ContextCaptor.tag = 'ContextCaptor'.toLowerCase(); ContextCaptor.render = function () { return ContextMenu_({ class: ['absol-context-menu-anchor'], extendEvent: 'requestcontextmenu', child: [ 'textarea' ] }); }; ContextCaptor.prototype.showContextMenu = function (x, y, props, onSelectItems) { var self = this; var anchor = ContextMenu_('.as-context-menu-ctn.absol-context-menu-anchor' + (isMobile ? '.as-anchor-modal' : '')).addTo(document.body); var finish = function (event) { (document.body).off('click', finish) .off('touchcancel', finish) .off('touchend', finish) .off('contextmenu', finish); self.off('requestcontextmenu', finish); setTimeout(function () { anchor.selfRemove();// }, 10); }; var vmenu = ContextMenu_({ tag: 'vmenu', props: props, on: { press: onSelectItems || function () { } } }).addTo(anchor); setTimeout(function () { if (!isMobile) { var screenSize = Dom["b" /* default */].getScreenSize(); var menuBound = vmenu.getBoundingClientRect(); if (x + menuBound.width > screenSize.width - 17) { x -= menuBound.width; } if (y + menuBound.height > screenSize.height - 17) { y -= menuBound.height; } anchor.addStyle({ left: x + 'px', top: y + 'px' }); } anchor.addClass('absol-active'); }, 30); setTimeout(function () { ContextMenu_$(document.body).on('click', finish) .on('contextmenu', finish); self.on('requestcontextmenu', finish); }, 10) }; ContextCaptor.prototype._checkNeedHandle = function (target) { var current = target; var needHandle = false; while (current && !needHandle && !current.classList.contains('as-system-context-menu')) { if (current.isSupportedEvent && current.isSupportedEvent('contextmenu')) needHandle = true; current = current.parentElement; } return needHandle; }; ContextCaptor.prototype._fireContextMenuEvent = function () { if (this._lastContextSession >= this._pointerSession) return false;// prevent fire multi-times in a pointer session var showed = false; this._lastContextSession = this._pointerSession; var baseEventData = { clientX: this._posCurrent.x, clientY: this._posCurrent.y, target: this.$target }; this.emit('requestcontextmenu', baseEventData, this); var self = this; var propagation = true; var localEvent = Object.assign({ clientX: this._posCurrent.x, clientY: this._posCurrent.y, target: this.$target, showContextMenu: function (props, onSelectItems) { showed = true; self.sync = self.sync.then(function () { return new Promise(function (rs) { setTimeout(function () { self.showContextMenu(self._posCurrent.x, self._posCurrent.y, props, onSelectItems); rs(); }, 30) }); }) }, stopPropagation: function () { propagation = false; } }, baseEventData); Object.defineProperty(localEvent, 'selectedText', { get: function () { return getSelectionText(); } }); var current = this.$target; while (current && propagation) { if (current.isSupportedEvent && current.isSupportedEvent('contextmenu')) { current.emit('contextmenu', localEvent, current, this); } current = current.parentElement; } return showed; }; /** * @type {ContextCaptor} */ ContextCaptor.eventHandler = {}; ContextCaptor.eventHandler.mousedown = function (event) { if (this._touchId != -100) return; this._pointerSession++; var target; var isTouch; var touchId; var posCurrent; var pointer; if (event.type == 'touchstart') { isTouch = true; pointer = event.changedTouches[0]; touchId = pointer.identifier; } else { isTouch = false; touchId = -1; pointer = event; } target = pointer.target; posCurrent = new Math_Vec2(pointer.clientX, pointer.clientY); if (isTouch) { var dragzone = js_BoardTable.prototype._findDragZone(target); if (dragzone) return; var thisCT = this; this._longPressTimeout = setTimeout(function () { if (!thisCT._checkNeedHandle(target)) return; if (thisCT._removeTimeout > 0) { clearTimeout(thisCT._removeTimeout); thisCT._removeTimeout = -1; } thisCT._ss++; thisCT.moveTo(thisCT._posCurrent); thisCT.active(true); thisCT._longPressTimeout = -1; if (thisCT._fireContextMenuTimeout >= 0) { clearTimeout(thisCT._fireContextMenuTimeout); } // show if device not support contextmenu event (after 700ms) thisCT._fireContextMenuTimeout = setTimeout(function () { if (!supportContextEvent) { thisCT._fireContextMenuEvent(); } }, 300); }, 400); this.$target = target; this._isTouch = isTouch; this._touchId = touchId; this._posCurrent = posCurrent; this._posStart = posCurrent; ContextMenu_$(document.body).on('touchmove', thisCT.eventHandler.mousemove) .on('touchend', thisCT.eventHandler.mousefinish) .on('touchcancel', thisCT.eventHandler.mousefinish); } else { if (EventEmitter["b" /* default */].isMouseRight(event) && this._checkNeedHandle(target)) { if (this._removeTimeout > 0) { clearTimeout(this._removeTimeout); this._removeTimeout = -1; } this.$target = target; this._isTouch = isTouch; this._posCurrent = posCurrent; this._posStart = posCurrent; this._touchId = touchId; this._ss++; this.moveTo(this._posCurrent); this.active(true); ContextMenu_$(document.body).on('mousemove', this.eventHandler.mousemove) .on('mouseup', this.eventHandler.mousefinish) .on('mouseleave', this.eventHandler.mousefinish); } } }; /** * @param {Vec2} pos */ ContextCaptor.prototype.moveTo = function (pos) { this.addStyle({ left: pos.x - 80 + 'px', top: pos.y - 80 + 'px' }); }; ContextCaptor.prototype.active = function (flag) { if (flag) this.addClass('absol-active'); else this.removeClass('absol-active'); }; ContextCaptor.eventHandler.mousemove = function (event) { var isTouch = this._isTouch; var touchId; var pointer; var posCurrent; if (isTouch) { pointer = event.changedTouches[0]; touchId = pointer.identifier; } else { isTouch = false; touchId = -1; pointer = event; } if (touchId != this._touchId) return; posCurrent = new Math_Vec2(pointer.clientX, pointer.clientY); this._posCurrent = posCurrent; if (isTouch) { if (this._posStart.sub(posCurrent).abs() > 10) this.eventHandler.mousefinish(event); } this.moveTo(posCurrent); }; ContextCaptor.eventHandler.mousefinish = function (event) { var isTouch = this._isTouch; var touchId; var pointer; if (isTouch) { pointer = event.changedTouches[0]; touchId = pointer.identifier; } else { isTouch = false; touchId = -1; pointer = event; } if (touchId != this._touchId) return; if (isTouch) { ContextMenu_$(document.body).off('touchmove', this.eventHandler.mousemove) .off('touchend', this.eventHandler.mousefinish) .off('touchcancel', this.eventHandler.mousefinish); if (this._longPressTimeout > 0) { clearTimeout(this._longPressTimeout); this._longPressTimeout = -1; } } else { ContextMenu_$(document.body).off('mousemove', this.eventHandler.mousemove) .off('mouseup', this.eventHandler.mousefinish) .off('mouseleave', this.eventHandler.mousefinish); } this._touchId = -100; if (this._fireContextMenuTimeout >= 0) { clearTimeout(this._fireContextMenuTimeout); } var thisCT = this; this._removeTimeout = setTimeout(function () { thisCT.active(false); thisCT._removeTimeout = -1; }, 1); }; ContextCaptor.eventHandler.contextmenu = function (event) { supportContextEvent = true; event.preventDefault(); this._fireContextMenuEvent(); }; ContextCaptor.auto = function () { if (ContextCaptor.$elt) return; ContextCaptor.$elt = ContextMenu_('contextcaptor'); Dom["b" /* default */].documentReady.then(function () { ContextCaptor.$elt.addTo(document.body); ContextCaptor.$elt.attachTo(document.body); }); }; ACore["c" /* default */].install(ContextCaptor); /* harmony default export */ var ContextMenu = (ContextCaptor); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dateinput.css var dateinput = __webpack_require__(31); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/DateInput.js var DateInput_ = ACore["c" /* default */]._; var DateInput_$ = ACore["c" /* default */].$; /** * @extends AElement * @constructor */ function DateInput() { this._lastValue = null; this._value = null; this._format = 'dd/mm/yyyy'; this.$input = DateInput_$('input', this) .on('mouseup', this.eventHandler.mouseup) .on('keydown', this.eventHandler.keydown) .on('paste', this.eventHandler.paste) .on('cut', this.eventHandler.cut) .on('focus', this.eventHandler.focus); this._minLimitDate = new Date(1890, 0, 1, 0, 0, 0, 0); this._maxLimitDate = new Date(2090, 0, 1, 0, 0, 0, 0); this.$calendarBtn = DateInput_$('.as-date-input-icon-ctn', this) .on('mousedown', this.eventHandler.mousedownCalendarBtn); this._calendarHolder = js_ChromeCalendar.showWhenClick(this.$calendarBtn, { minLimitDate: this._minLimitDate, maxLimitDate: this._maxLimitDate, selectedDates: [new Date()], }, 'auto', this.eventHandler.calendarSelect); this._calendarHolder.element = this; this._formater = DateInput.formaters[this._format]; OOP["a" /* default */].drillProperty(this, this._calendarHolder.calendarProps, ['minLimitDate', 'maxLimitDate']); this.value = null; } DateInput.formaters = { 'dd/mm/yyyy': { separator: '/', nan: ['dd', 'mm', 'yyyy'], dayIdx: 0, monthIdx: 1, yearIdx: 2 }, 'dd-mm-yyyy': { separator: '-', nan: ['dd', 'mm', 'yyyy'], dayIdx: 0, monthIdx: 1, yearIdx: 2 }, 'dd.mm.yyyy': { separator: '.', nan: ['dd', 'mm', 'yyyy'], dayIdx: 0, monthIdx: 1, yearIdx: 2 }, 'yyyy/mm/dd': { separator: '/', nan: ['yyyy', 'mm', 'dd'], dayIdx: 2, monthIdx: 1, yearIdx: 0 }, 'yyyy-mm-dd': { separator: '-', nan: ['yyyy', 'mm', 'dd'], dayIdx: 2, monthIdx: 1, yearIdx: 0 }, 'mm/dd/yyyy': { separator: '/', nan: ['mm', 'dd', 'yyyy'], dayIdx: 1, monthIdx: 0, yearIdx: 2 }, }; DateInput.tag = 'dateinput'; DateInput.render = function () { //only support dd/mm/yyyy return DateInput_({ class: 'as-date-input', extendEvent: ['change'], child: [{ tag: 'input', props: { value: '__/__/____' } }, { class: 'as-date-input-icon-ctn', child: 'span.mdi.mdi-calendar' } ] }); }; DateInput.prototype._autoSelect = function () { var slEnd = this.$input.selectionEnd; var slStart = this.$input.selectionStart; var texts = this.$input.value.split(this._formater.separator); var lTexts = texts.reduce(function (ac, cr) { ac.push(ac[ac.length - 1] + cr.length + 1); return ac; }, [0]); function indexOf(offset) { var l; for (var i = 0; i < lTexts.length; ++i) { l = lTexts[i]; if (l > offset) return i; } return texts.length; } var i0 = indexOf(slStart); var i1 = indexOf(slEnd); if (i0 == i1) { this.$input.selectionStart = lTexts[i0 - 1]; this.$input.selectionEnd = lTexts[i0] - 1; } else { this.$input.selectionStart = 0; this.$input.selectionEnd = lTexts[lTexts.length - 1]; } }; DateInput.prototype.notifyChange = function () { this.emit('change', { type: 'change', target: this, value: this._value }, this); } DateInput.prototype._countSeparator = function (text) { return text.replace(new RegExp('[^\\' + this._formater.separator + ']', 'g'), '').length }; DateInput.prototype._cleanCharacter = function (text) { return text.replace(new RegExp('[^0-9\\' + this._formater.separator + ']', 'g'), ''); }; DateInput.prototype._splitBySeparator = function (text) { return text.split(this._formater.separator); }; DateInput.prototype._onlySeparator = function (text) { return text.replace(new RegExp('[^\\' + this._formater.separator + ']', 'g'), '') }; DateInput.prototype._isAcceptKey = function (key) { return !!key.match(new RegExp('[0-9\\' + this._formater.separator + ']', 'i')); }; /** * @type {DateInput} */ DateInput.eventHandler = {}; DateInput.eventHandler.paste = function (event) { var paste = (event.clipboardData || window.clipboardData).getData('text'); event.preventDefault(); paste = this._cleanCharacter(paste); var slEnd = this.$input.selectionEnd; var slStart = this.$input.selectionStart; var sStart = Math.min(slStart, slEnd); var sEnd = Math.max(slEnd, slStart); var value = this.$input.value; var slashPasteCount = this._countSeparator(paste) var slashSelectedCount = this._countSeparator(value.substr(sStart, sEnd - sStart)); if (slashPasteCount < 2) { if (slashPasteCount > slashSelectedCount) { paste = this._splitBySeparator(paste).slice(0, slashSelectedCount + 1).join(this._formater.separator); } else if (slashPasteCount < slashSelectedCount) { paste += this._formater.separator.repeat(slashSelectedCount - slashPasteCount); } slStart = (value.substr(0, sStart) + paste).length; slEnd = slStart; value = value.substr(0, sStart) + paste + value.substr(sEnd); } else { value = this._splitBySeparator(paste).slice(0, 3).join(this._formater.separator); slStart = value.length; slEnd = value.length; } this.$input.value = value; this.$input.selectionStart = slStart; this.$input.selectionEnd = slEnd; }; DateInput.eventHandler.cut = function (event) { event.preventDefault(); var slEnd = this.$input.selectionEnd; var slStart = this.$input.selectionStart; var sStart = Math.min(slStart, slEnd); var sEnd = Math.max(slEnd, slStart); var value = this.$input.value; this.$input.value = value.substr(0, sStart) + this._onlySeparator(value.substr(sStart, sEnd - sStart)) + value.substr(sEnd); this.$input.selectionStart = slStart; this.$input.selectionEnd = slStart; }; DateInput.eventHandler.mouseup = function () { setTimeout(this._autoSelect.bind(this), 1); }; DateInput.eventHandler.focus = function () { this.$input.on('blur', this.eventHandler.blur); }; DateInput.eventHandler.blur = function () { var thisIp = this; this.$input.off('blur', this.eventHandler.blur); var value = this.$input.value; var slashValueCount = this._countSeparator(value).length; for (var i = slashValueCount; i < 2; ++i) value += this._formater.separator; var texts = value.split(this._formater.separator).slice(0, 3); var day = parseInt(texts[this._formater.dayIdx]); var month = parseInt(texts[this._formater.monthIdx]); var year = parseInt(texts[this._formater.yearIdx]); if (!isNaN(year)) year = Math.min(2090, Math.max(year, 1890)); if (!isNaN(month)) month = Math.max(1, Math.min(12, month)); if (!isNaN(day)) { day = Math.max(1, Math.min(31, day)); if (!isNaN(month)) { day = Math.min(daysInMonth(2000, month), day); if (!isNaN(year)) day = Math.min(daysInMonth(year, month), day); } } if (!isNaN(year) && !isNaN(month) && !isNaN(day)) { var dateValue = new Date(year, month - 1, day, 0, 0, 0, 0); if (this._lastValue == null || compareDate(dateValue, this._lastValue) != 0) { this.value = dateValue; this.notifyChange(); } } else { var values = this._formater.nan.slice(); values[this._formater.dayIdx] = day; values[this._formater.monthIdx] = month; values[this._formater.yearIdx] = year; this.$input.value = values.map(function (e, i) { if (isNaN(e)) return thisIp._formater.nan[i]; e = e + ''; while (e.length < thisIp._formater.nan[i].length) e = '0' + e; return e; }).join(this._formater.separator); if (this._lastValue != null) { this._value = null; this.notifyChange(); } } }; DateInput.eventHandler.calendarSelect = function (value) { this.value = value; this.notifyChange(); }; DateInput.eventHandler.keydown = function (event) { var slEnd = this.$input.selectionEnd; var slStart = this.$input.selectionStart; var value = this.$input.value; var sStart = Math.min(slStart, slEnd); var sEnd = Math.max(slEnd, slStart); var selectedValue = value.substr(sStart, sEnd - sStart); var slashValueCount = this._countSeparator(value); var slashSelectedCount = this._countSeparator(selectedValue); var texts = this._splitBySeparator(value); var lTexts = texts.reduce(function (ac, cr) { ac.push(ac[ac.length - 1] + cr.length + 1); return ac; }, [0]); function indexOf(offset) { var l; for (var i = 0; i < lTexts.length; ++i) { l = lTexts[i]; if (l > offset) return i; } return texts.length; } var i0 = indexOf(slStart); var i1 = indexOf(slEnd); if (event.key == 'Enter') { event.preventDefault(); this.$input.blur(); } else if (event.key == 'Meta') { event.preventDefault(); } else if (event.key == 'Backspace') { if (slStart == slEnd) { if (slStart > 0) { if (value.charAt(slStart - 1) == this._formater.separator) { event.preventDefault(); this.$input.value = value; this.$input.selectionStart = slStart - 1; this.$input.selectionEnd = slStart - 1; } } } else if (i0 != i1) { event.preventDefault(); this.$input.value = value.substr(0, sStart) + this._onlySeparator(selectedValue) + value.substr(sEnd); this.$input.selectionStart = slStart; this.$input.selectionEnd = slStart; } } else if (event.key == 'Delete') { if (slStart == slEnd) { if (slStart < value.length) { if (value.charAt(slStart) == this._formater.separator) { event.preventDefault(); this.$input.value = value; this.$input.selectionStart = slStart + 1; this.$input.selectionEnd = slStart + 1; } } } else if (i0 != i1) { event.preventDefault(); this.$input.value = value.substr(0, sStart) + this._onlySeparator(selectedValue) + value.substr(sEnd); this.$input.selectionStart = slStart; this.$input.selectionEnd = slStart; } } else if (!event.ctrlKey && !event.altKey && event.key && event.key.length == 1) { if (this._isAcceptKey(event.key)) { if (event.key == this._formater.separator) { if (slashSelectedCount == 0 && slashValueCount >= 2 && value.charAt(slEnd) != this._formater.separator) { event.preventDefault(); } else if (value.charAt(slEnd) == this._formater.separator) { event.preventDefault(); this.$input.selectionStart = lTexts[i1]; this.$input.selectionEnd = lTexts[i1 + 1] - 1; } } } else { event.preventDefault(); } } else if (!event.ctrlKey && !event.altKey && event.key == "Tab") { if (event.shiftKey) { if (i0 > 1) { event.preventDefault(); this.$input.selectionStart = lTexts[i1 - 2]; this.$input.selectionEnd = lTexts[i1 - 1] - 1; } } else { if (i1 < texts.length) { event.preventDefault(); this.$input.selectionStart = lTexts[i1]; this.$input.selectionEnd = lTexts[i1 + 1] - 1; } } } }; DateInput.property = {}; DateInput.property.value = { set: function (value) { if (value === false || value === null || value === undefined) { this.$input.value = this._format; this._value = null; } else if ((typeof value == 'string') || (typeof value == 'number')) { this._value = beginOfDay(new Date(value)); this.$input.value = formatDateString(this._value, this._format); } else if (value.getTime) { this._value = beginOfDay(value); this.$input.value = formatDateString(this._value, this._format); } this._lastValue = this._value; this._calendarHolder.calendarProps.selectedDates = [this._value || new Date()]; }, get: function () { return this._value; } }; DateInput.property.format = { set: function (value) { value = value || 'dd/mm/yyyy'; if (value == this._format) return; if (DateInput.formaters[value]) { this._formater = DateInput.formaters[value]; this._format = value; this.value = this.value; } else { throw new Error("Not support format " + value); } }, get: function () { return this._format; } }; DateInput.property.disabled = { set: function (value) { value = !!value; this.$input.disabled = value; if (value) this.addClass('as-disabled'); else this.removeClass('as-disabled'); }, get: function () { return this.$input.disabled; } }; ACore["c" /* default */].install(DateInput); /* harmony default export */ var js_DateInput = (DateInput); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/DateInput2.js var DateInput2_ = ACore["c" /* default */]._; var DateInput2_$ = ACore["c" /* default */].$; /** * @extends AElement * @constructor */ function DateInput2() { this._lastValue = null; this._value = null; this._format = 'dd/mm/yyyy'; this.$input = DateInput2_$('input', this) .on('keydown', this.eventHandler.keydown) .on('focus', this.eventHandler.focus); this._minLimitDate = new Date(1890, 0, 1, 0, 0, 0, 0); this._maxLimitDate = new Date(2090, 0, 1, 0, 0, 0, 0); this.$calendarBtn = DateInput2_$('.as-date-input-icon-ctn', this) .on('mousedown', this.eventHandler.mousedownCalendarBtn); this._calendarHolder = js_ChromeCalendar.showWhenClick(this.$calendarBtn, { minLimitDate: this._minLimitDate, maxLimitDate: this._maxLimitDate, selectedDates: [new Date()], }, 'auto', this.eventHandler.calendarSelect); this._calendarHolder.element = this; this._formater = js_DateInput.formaters[this._format]; OOP["a" /* default */].drillProperty(this, this._calendarHolder.calendarProps, { minLimitDate: 'minLimitDate', maxLimitDate: 'maxLimitDate', minDateLimit: 'minLimitDate', maxDateLimit: 'maxLimitDate' }); this.value = null; } DateInput2.tag = 'dateinput'; DateInput2.render = js_DateInput.render; DateInput2.prototype._autoSelect = function () { var slEnd = this.$input.selectionEnd; var slStart = this.$input.selectionStart; var texts = this.$input.value.split(this._formater.separator); var lTexts = texts.reduce(function (ac, cr) { ac.push(ac[ac.length - 1] + cr.length + 1); return ac; }, [0]); function indexOf(offset) { var l; for (var i = 0; i < lTexts.length; ++i) { l = lTexts[i]; if (l > offset) return i; } return texts.length; } var i0 = indexOf(slStart); var i1 = indexOf(slEnd); if (i0 == i1) { this.$input.selectionStart = lTexts[i0 - 1]; this.$input.selectionEnd = lTexts[i0] - 1; } else { this.$input.selectionStart = 0; this.$input.selectionEnd = lTexts[lTexts.length - 1]; } }; /** * @param {String} text */ DateInput2.prototype._verifyFormat = function (text) { var regex = /([,\.\-\/])|([a-zA-Z0-9]+)/g; var tokens = text.match(regex); var count = [['dd', 'd'], ['m', 'mm', 'mmm', 'mmmm'], ['yy', 'yyyy']].map(function (list) { return list.reduce(function (ac, cr) { if (tokens.indexOf(cr) >= 0) return ac + 1; return ac; }, 0); }); return count[0] == 1 && count[1] == 1 && count[2] == 1; }; DateInput2.prototype.notifyChange = function () { this.emit('change', { type: 'change', target: this, value: this._value }, this); }; DateInput2.prototype.focus = function () { this.$input.focus(); }; DateInput2.prototype.blur = function () { this.$input.blur(); }; /** * @type {DateInput2} */ DateInput2.eventHandler = {}; DateInput2.eventHandler.focus = function () { this.$input.on('blur', this.eventHandler.blur); }; DateInput2.eventHandler.blur = function () { try { var newVal = parseDateString(this.$input.value, this._format); if (!this._value || compareDate(newVal, this._value)) { this.value = newVal; this.notifyChange(); } } catch (error) { this.value = this._value; } this.$input.off('blur', this.eventHandler.blur); }; DateInput2.eventHandler.keydown = function (event) { if (event.key == "Enter") { this.$input.blur(); } }; DateInput2.eventHandler.calendarSelect = function (value) { this.value = value; this.notifyChange(); }; DateInput2.property = {}; DateInput2.property.value = { set: function (value) { if (value === false || value === null || value === undefined) { this.$input.value = this.format; this._value = null; } else if ((typeof value == 'string') || (typeof value == 'number')) { this._value = beginOfDay(new Date(value)); this.$input.value = formatDateString(this._value, this._format); } else if (value.getTime) { this._value = beginOfDay(value); this.$input.value = formatDateString(this._value, this._format); } this._lastValue = this._value; this._calendarHolder.calendarProps.selectedDates = [this._value || new Date()]; }, get: function () { return this._value; } }; /** * @type {DateInput2} */ DateInput2.property.format = { set: function (value) { value = value || 'dd/mm/yyyy'; if (!this._verifyFormat(value)) { value = 'dd/mm/yyyy'; console.error("Invalid date format: " + value); } this._format = value; this.value = this.value;//update }, get: function () { return this._format; } }; DateInput2.property.disabled = { set: function (value) { value = !!value; this.$input.disabled = value; if (value) this.addClass('as-disabled'); else this.removeClass('as-disabled'); }, get: function () { return this.$input.disabled; } } ACore["c" /* default */].install(DateInput2); /* harmony default export */ var js_DateInput2 = (DateInput2); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/draggablestack.css var draggablestack = __webpack_require__(32); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/PositionTracker.js /*** * @extends {AElement} * @constructor */ function PositionTracker() { this.defineEvent('positionchange'); this.$trackScrollParents = []; this._scrollTrackEventHandler = this.notifyPositionChange.bind(this); } PositionTracker.tag = 'PositionTracker'.toLowerCase(); /*** * * @return {AElement} */ PositionTracker.render = function () { return _('div'); }; PositionTracker.prototype.notifyPositionChange = function (event) { this.emit('positionchange', { type: 'positionchange', originEvent: event }); }; PositionTracker.prototype.startTrackPosition = function () { if (this.$trackScrollParents.length > 0) this.stopTrackPosition(); var trackElt = this; while (trackElt) { if (trackElt.addEventListener) trackElt.addEventListener('scroll', this._scrollTrackEventHandler, false); else trackElt.attachEvent('onscroll', this._scrollTrackEventHandler, false); this.$trackScrollParents.push(trackElt); trackElt = trackElt.parentElement; } if (document.addEventListener) { document.addEventListener('scroll', this._scrollTrackEventHandler, false); } else { document.attachEvent('onscroll', this._scrollTrackEventHandler, false); } this.$trackScrollParents.push(document); }; PositionTracker.prototype.stopTrackPosition = function () { var trackElt; for (var i = 0; i < this.$trackScrollParents.length; ++i) { trackElt = this.$trackScrollParents[i]; if (trackElt.removeEventListener) trackElt.removeEventListener('scroll', this._scrollTrackEventHandler, false); else trackElt.dettachEvent('onscroll', this._scrollTrackEventHandler, false); } this.$trackScrollParents = []; }; ACore["c" /* default */].install(PositionTracker); /* harmony default export */ var js_PositionTracker = (PositionTracker); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/DraggableVStack.js var DraggableVStack_ = ACore["c" /* default */]._; var DraggableVStack_$ = ACore["c" /* default */].$; /*** * @augments Hanger * @augments PositionTracker * @constructor */ function DraggableVStack() { DraggableVStack_({ tag: 'PositionTracker'.toLowerCase(), elt: this }); this.$cloneContainer = DraggableVStack_('.absol-draggable-stack-clone-container'); this.on('predrag', this.eventHandler.predrag) .on('dragstart', this.eventHandler.dragstart) .on('drag', this.eventHandler.drag) .on('dragend', this.eventHandler.dragend); this._state = 0; this.friends = []; this.$friends = []; this._privateDraggableVStackIdent = randomIdent(35); this._dragData = null; this.on('positionchange', this.eventHandler.scroll); } DraggableVStack.tag = 'DraggableVStack'.toLowerCase(); DraggableVStack.render = function () { return DraggableVStack_({ tag: 'hanger', extendEvent: ['change', 'orderchange', 'itemleave', 'itementer'], class: ['absol-draggable-stack', 'absol-draggable-vstack'] }); }; DraggableVStack.prototype._updateFriends = function () { var dict = {}; dict[this._privateDraggableVStackIdent] = this; this.$friends = this.friends.reduce(function (ac, cr) { if (Dom["b" /* default */].isDomNode(cr)) { if (cr._privateDraggableVStackIdent) { ac.result.push(cr); ac.dict[cr._privateDraggableVStackIdent] = cr; } } else if (typeof cr === 'string') { DraggableVStack_$(cr, false, function (elt) { if (elt._privateDraggableVStackIdent) { if (!ac.dict[elt._privateDraggableVStackIdent]) { ac.result.push(elt); ac.dict[elt._privateDraggableVStackIdent] = elt; } } }) } return ac; }, { dict: dict, result: [] }).result; }; DraggableVStack.prototype._findIndex = function (clientY) { var childBounds = Array.prototype.map.call(this.childNodes, function (elt) { return elt.getBoundingClientRect() }); var childTops = childBounds.map(function (b) { return b.top; }); childTops.push((childBounds[childBounds.length - 1] || this.getBoundingClientRect()).bottom); var nearestIdx = 0; var nearestVal = 10000000; var val; for (var i = 0; i < childTops.length; ++i) { val = Math.abs(clientY - childTops[i]); if (val < nearestVal) { nearestVal = val; nearestIdx = i; } } return nearestIdx; }; /*** * * @type {DraggableVStack|{}} */ DraggableVStack.eventHandler = {}; DraggableVStack.eventHandler.predrag = function (event) { var dragzone = this._findDragzone(event.target); if (!dragzone) { event.cancel(); } }; DraggableVStack.eventHandler.dragstart = function (event) { this.startTrackPosition(); event.preventDefault(); this._updateFriends(); this._state = 1; this.addClass('as-state-drag'); this._dragData = { mouseStartPos: new Math_Vec2(event.clientX, event.clientY), elt: this._findDirectChild(event.target), rootBound: this.getBoundingClientRect(), dest: this }; this._dragData.mouseCurrentPos = this._dragData.mouseStartPos; this._updateDestChildrenBound(); this._dragData.idx = Array.prototype.indexOf.call(this.childNodes, this._dragData.elt); this._dragData.eltBound = this._dragData.destChildBounds[this._dragData.idx]; this._dragData.offsetPos = this._dragData.mouseStartPos.sub(new Math_Vec2(this._dragData.eltBound.left, this._dragData.eltBound.top)); this._dragData.eltRelative = new Math_Vec2(this._dragData.eltBound.left, this._dragData.eltBound.top).sub(new Math_Vec2(this._dragData.rootBound.left, this._dragData.rootBound.top)); this.$cloneContainer.addTo(document.body); this.$cloneContainer.clearChild().addChild(DraggableVStack_$(this._dragData.elt.cloneNode(true)).addStyle({ boxSizing: 'border-box', width: this._dragData.eltBound.width + 'px', height: this._dragData.eltBound.height + 'px' })); this.$cloneContainer.addStyle({ left: this._dragData.eltBound.left + 'px', top: this._dragData.eltBound.top + 'px', }); this._dragData.elt.addClass('dragging'); }; DraggableVStack.eventHandler.drag = function (event) { event.preventDefault(); this._dragData.mouseCurrentPos = new Math_Vec2(event.clientX, event.clientY); this._updateHoverDest(); this._updateDraggingPosition(); this.eventHandler.dragOverflow(event); }; DraggableVStack.prototype.getClientY = function () { var top = 1000000; var bottom = -10000000; var child; var childBound; for (var i = 0; i < this.childNodes.length; ++i) { child = this.childNodes[i]; if (child === this.$cloneContainer) continue; if (child.getBoundingClientRect) { childBound = child.getBoundingClientRect(); top = Math.min(top, childBound.top); bottom = Math.max(bottom, childBound.bottom); } } return { top: top, bottom: bottom }; }; DraggableVStack.eventHandler.dragOverflow = function (event) { var scroller = this; while (scroller) { var overflowStyle = window.getComputedStyle(scroller)['overflow']; if ((overflowStyle === 'auto' || overflowStyle === 'scroll' || scroller.tagName === 'HTML') && (scroller.clientHeight < scroller.scrollHeight)) break; scroller = scroller.parentElement; } if (!scroller) return; var outBound = scroller.getBoundingClientRect(); var bBound = this.$cloneContainer.getBoundingClientRect(); var screenSize = Dom["b" /* default */].getScreenSize(); if (scroller.tagName !== "HTML") { outBound = { top: Math.max(outBound.top, 0), bottom: Math.min(outBound.bottom, screenSize.height) } } else { outBound = { top: 0, bottom: screenSize.height } } var vy = 0; if (bBound.top < outBound.top) { vy = bBound.top - outBound.top; } else if (bBound.bottom > outBound.bottom) { vy = bBound.bottom - outBound.bottom; } var dt = 1 / 30; if (vy !== 0) { var copyEvent = { type: event.type, preventDefault: function () {/* noop */ }, target: event.target }; copyEvent.clientX = event.clientX; copyEvent.clientY = event.clientY var thisBT = this; setTimeout(function () { if (scroller.scrollHeight > scroller.clientHeight) { scroller.scrollTop += absCeil(vy * dt); } if (thisBT._state === 1) { thisBT.eventHandler.dragOverflow(copyEvent); } }, dt * 1000); } }; DraggableVStack.eventHandler.scroll = function (event) { this._updateDraggingPosition(); }; DraggableVStack.eventHandler.dragend = function (event) { this.stopTrackPosition(); event.preventDefault(); this._dragData.dest.removeClass('as-state-drag'); this.$cloneContainer.remove(); this._dragData.elt.removeClass('dragging'); this.removeClass('as-state-no-change'); this._state = 0; var beforeElt; if (this._dragData.dest === this) { if (this._dragData.idx === this._dragData.destIdx || (this._dragData.idx + 1 === this._dragData.destIdx)) { //todo } else { if (this._dragData.destIdx === this.childNodes.length) { this._dragData.elt.remove(); this.addChild(this._dragData.elt); this.emit('change', { type: 'change', fromStack: this, toStack: this, elt: this._dragData.elt, sourceIndex: this._dragData.idx, destIndex: this.childNodes.length, oldIdx: this._dragData.idx, newIdx: this.childNodes.length - 1, desc: "Move element to end of stack." }, this); this.emit('orderchange', { type: 'orderchange', fromStack: this, toStack: this, elt: this._dragData.elt, oldIdx: this._dragData.idx, newIdx: this.childNodes.length - 1, desc: "Move element to end of stack." }, this); } else { beforeElt = this.childNodes[this._dragData.destIdx]; this._dragData.elt.remove(); this.addChildBefore(this._dragData.elt, beforeElt); this.emit('change', { type: 'change', fromStack: this, toStack: this, elt: this._dragData.elt, sourceIndex: this._dragData.idx, destIndex: this._dragData.destIdx, oldIdx: this._dragData.idx, newIdx: this._dragData.destIdx > this._dragData.idx ? this._dragData.destIdx - 1 : this._dragData.destIdx, desc: "Move element to before this.childNodes[" + this._dragData.destIdx + "]" }, this); this.emit('orderchange', { type: 'orderchange', fromStack: this, toStack: this, elt: this._dragData.elt, oldIdx: this._dragData.idx, newIdx: this._dragData.destIdx > this._dragData.idx ? this._dragData.destIdx - 1 : this._dragData.destIdx, desc: "Move element to before this.childNodes[" + this._dragData.destIdx + "]" }, this); } } } else { if (this._dragData.destIdx === this._dragData.dest.childNodes.length) { this.emit('orderchange', { type: 'itemleave', fromStack: this, toStack: this._dragData.dest, oldIdx: this._dragData.idx, newIdx: this.childNodes.length - 1, desc: "Move element to end of friend stack." }, this); this._dragData.elt.remove(); this._dragData.dest.addChild(this._dragData.elt); this._dragData.dest.emit('orderchange', { type: 'itementer', fromStack: this, toStack: this._dragData.dest, oldIdx: this._dragData.idx, newIdx: this.childNodes.length - 1, desc: "Move element to end of friend stack." }, this._dragData.dest); this.emit('change', { type: 'change', fromStack: this, toStack: this._dragData.dest, elt: this._dragData.elt, sourceIndex: this._dragData.idx, destIndex: this.childNodes.length, oldIdx: this._dragData.idx, newIdx: this.childNodes.length - 1, desc: "Move element to end of friend stack." }); } else { beforeElt = this._dragData.dest.childNodes[this._dragData.destIdx]; this._dragData.elt.remove(); this.emit('itemleave', { type: 'itemleave', fromStack: this, toStack: this._dragData.dest, elt: this._dragData.elt, oldIdx: this._dragData.idx, newIdx: this._dragData.destIdx, desc: "Move element to before friend.childNodes[" + this._dragData.destIdx + "]" }, this); this._dragData.dest.addChildBefore(this._dragData.elt, beforeElt); this._dragData.dest.emit('itementer', { type: 'itementer', fromStack: this, toStack: this._dragData.dest, elt: this._dragData.elt, oldIdx: this._dragData.idx, newIdx: this._dragData.destIdx, desc: "Move element to before friend.childNodes[" + this._dragData.destIdx + "]" }, this._dragData.dest); this.emit('change', { type: 'change', fromStack: this, toStack: this._dragData.dest, elt: this._dragData.elt, sourceIndex: this._dragData.idx, destIndex: this._dragData.destIdx, oldIdx: this._dragData.idx, newIdx: this._dragData.destIdx, desc: "Move element to before friend.childNodes[" + this._dragData.destIdx + "]" }, this); } } }; DraggableVStack.prototype._updateDestChildrenBound = function () { var top0 = this._dragData.dest.getBoundingClientRect().top; this._dragData.destChildBounds = Array.prototype.map.call(this._dragData.dest.childNodes, function (elt) { return elt.getBoundingClientRect() }); this._dragData.destChildTops = this._dragData.destChildBounds.map(function (bound) { return bound.top - top0; }).concat([(this._dragData.destChildBounds[this._dragData.destChildBounds.length - 1] || this.getBoundingClientRect()).bottom - top0]); } DraggableVStack.prototype._updateHoverDest = function () { var bound; var newDest; var friendElt; var friendList = this.$friends.concat([this]); var top0; for (var i = 0; i < friendList.length; ++i) { friendElt = friendList[i]; bound = Math_Rectangle.fromClientRect(friendElt.getBoundingClientRect()); if (bound.containsPoint(this._dragData.mouseCurrentPos)) { top0 = bound.y; newDest = friendElt; break; } } if (newDest && this._dragData.dest !== newDest) { this._dragData.dest.removeClass('as-state-drag'); this._dragData.dest = newDest; this._dragData.dest.addClass('as-state-drag'); this._dragData.dest.addStyle('--dest-y', 'unset'); this._updateDestChildrenBound(); } }; DraggableVStack.prototype._updateDraggingPosition = function () { var bound = this.getBoundingClientRect(); var clonePos = this._dragData.mouseCurrentPos.sub(this._dragData.offsetPos); this.$cloneContainer.addStyle({ top: clonePos.y + 'px', left: bound.left + 'px' }); this._dragData.destIdx = this._dragData.dest._findIndex(clonePos.y + this._dragData.eltBound.height / 2); this._dragData.dest.addStyle('--dest-y', this._dragData.destChildTops[this._dragData.destIdx] + 'px'); if (this._dragData.dest === this) { if (this._dragData.idx === this._dragData.destIdx || (this._dragData.idx + 1 === this._dragData.destIdx)) { this.addClass('as-state-no-change'); } else { this.removeClass('as-state-no-change'); } } }; DraggableVStack.prototype._autoScrollParentIfNeed = function (delta) { //todo: choose which element should be scroll if (!(delta > 0)) delta = 10000; var bound = this.getBoundingClientRect(); var cloneBound = this.$cloneContainer.getBoundingClientRect(); var outBound = Dom["b" /* default */].traceOutBoundingClientRect(this.$cloneContainer); if (outBound.bottom >= cloneBound.bottom && outBound.top <= cloneBound.top) return; var scrollables = []; var current = this; while (current) { var oy = window.getComputedStyle(current); oy = oy['overflow-y'] || oy['overflowY']; if (oy == 'auto' || oy == 'scroll') { scrollables.push(current); } current = current.parentElement; } scrollables.push(document.body.parentElement); }; DraggableVStack.prototype._findDragzone = function (elt) { var result = null; while (elt && elt != this) { if (elt.classList && elt.classList.contains('drag-zone')) { result = elt; break; } elt = elt.parentNode; } if (result) { elt = result; while (elt && elt != this) { if (elt.classList && (elt.classList.contains('absol-draggable-stack'))) { result = null; break; } elt = elt.parentNode; } } return result; }; DraggableVStack.prototype._findDirectChild = function (elt) { while (elt && elt != this) { if (elt.parentNode == this) return elt; elt = elt.parentNode; } return undefined; }; DraggableVStack.property = {}; DraggableVStack.property.friends = { set: function (value) { if (!(value instanceof Array)) value = [value]; this._friends = value; }, get: function () { return this._friends; } }; ACore["c" /* default */].install(DraggableVStack); /* harmony default export */ var js_DraggableVStack = (DraggableVStack); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/DraggableHStack.js var DraggableHStack_ = ACore["c" /* default */]._; var DraggableHStack_$ = ACore["c" /* default */].$; /*** * @augments DraggableVStack * @augments PositionTracker * @constructor */ function DraggableHStack() { this._dragData = null; this.$cloneContainer = DraggableHStack_('.absol-draggable-stack-clone-container'); this.on('predrag', this.eventHandler.predrag) .on('dragstart', this.eventHandler.dragstart) .on('drag', this.eventHandler.drag) .on('dragend', this.eventHandler.dragend); DraggableHStack_({ elt: this, tag: js_PositionTracker }) .on('positionchange', this._updateDraggingPosition.bind(this)); } DraggableHStack.tag = "DraggableHStack".toLowerCase(); DraggableHStack.render = function () { return DraggableHStack_({ tag: 'hanger', extendEvent: 'change', class: ['absol-draggable-stack', 'absol-draggable-hstack'] }); }; /*** * * @param {Rectangle} rect * @returns {number} * @private */ DraggableHStack.prototype._findDropIdx = function (rect) { if (!this._dragData) return -1; var centerX = rect.x + rect.width / 2; var currentBound = Math_Rectangle.fromClientRect(this.getBoundingClientRect()); var nearestDistance = Math.abs(centerX - currentBound.width);//end of stack var cDist; var nearestIndex = this._dragData.childBounds.length; var childX; for (var i = 0; i < this._dragData.childBounds.length; ++i) { childX = this._dragData.childBounds[i].x + currentBound.x - this._dragData.bound.x; cDist = Math.abs(centerX - childX); if (cDist < nearestDistance) { nearestDistance = cDist; nearestIndex = i; } } return nearestIndex; }; /*** * * @type {DraggableHStack|{}} */ DraggableHStack.eventHandler = {}; DraggableHStack.eventHandler.predrag = js_DraggableVStack.eventHandler.predrag; DraggableHStack.eventHandler.dragstart = function (event) { this.addClass('as-has-dragging'); this.startTrackPosition(); var mousePos = new Math_Vec2(event.clientX, event.clientY); var elt = this._findDirectChild(event.target); var childBounds = Array.prototype.map.call(this.childNodes, function (e) { return Math_Rectangle.fromClientRect(e.getBoundingClientRect()); }); var eltIdx = Array.prototype.indexOf.call(this.childNodes, elt); var eltBound = childBounds[eltIdx]; var eltMouseOffset = mousePos.sub(new Math_Vec2(eltBound.x, eltBound.y)); this._dragData = { mouseStartPos: mousePos, mousePos: mousePos, bound: Math_Rectangle.fromClientRect(this.getBoundingClientRect()), childBounds: childBounds, elt: elt, eltIdx: eltIdx, eltBound: eltBound, eltMouseOffset: eltMouseOffset }; this.$cloneContainer.addStyle({ left: eltBound.x + 'px', top: eltBound.y + 'px', width: eltBound.width + 'px', height: eltBound.height + 'px', }).clearChild() .addChild(DraggableHStack_$(elt.cloneNode(true))) .addTo(document.body); elt.addClass('as-dragging'); this._updateDraggingPosition(); }; DraggableHStack.eventHandler.drag = function (event) { event.preventDefault(); this._dragData.mousePos = new Math_Vec2(event.clientX, event.clientY); this._updateDraggingPosition(); }; DraggableHStack.eventHandler.dragend = function (event) { var thisS = this; this.stopTrackPosition(); this.removeClass('as-has-dragging'); this._dragData.elt.removeClass('as-dragging'); if (this._dragData.destIdx == this._dragData.eltIdx || this._dragData.destIdx == this._dragData.eltIdx + 1) { this.$cloneContainer.addClass('as-home-going'); this._updateDraggingPosition(); setTimeout(function () { thisS.$cloneContainer.selfRemove() .removeClass('as-home-going'); }, 100); } else { if (this._dragData.destIdx === this._dragData.childBounds.length) { this._dragData.elt.remove(); this.addChild(this._dragData.elt); this.emit('change', { type: 'change', elt: this._dragData.elt, sourceIndex: this._dragData.eltIdx, destIndex: this._dragData.childBounds.length, oldIdx: this._dragData.eltIdx, newIdx: this._dragData.childBounds.length - 1, desc: "Move element to end of stack." }, this); } else { var beforeElt = this.childNodes[this._dragData.destIdx]; this._dragData.elt.remove(); this.addChildBefore(this._dragData.elt, beforeElt); this.emit('change', { type: 'change', elt: this._dragData.elt, sourceIndex: this._dragData.eltIdx, destIndex: this._dragData.destIdx, oldIdx: this._dragData.eltIdx, newIdx: this._dragData.destIdx > this._dragData.eltIdx ? this._dragData.destIdx - 1 : this._dragData.destIdx, desc: "Move element to before this.childNodes[" + this._dragData.destIdx + "]" }, this); } this.$cloneContainer.selfRemove() .removeClass('as-home-going'); } this.removeClass('as-no-change'); }; DraggableHStack.prototype._findDragzone = js_DraggableVStack.prototype._findDragzone; DraggableHStack.prototype._findDirectChild = js_DraggableVStack.prototype._findDirectChild; DraggableHStack.prototype._updateDraggingPosition = function () { var bound = this.getBoundingClientRect(); var x, y; if (this.$cloneContainer.containsClass('as-home-going')) { x = this._dragData.eltBound.x - this._dragData.bound.x + bound.left; y = this._dragData.eltBound.y - this._dragData.bound.y + bound.top; } else { y = bound.top + (this._dragData.eltBound.y - this._dragData.bound.y); var newPos = this._dragData.mousePos.sub(this._dragData.eltMouseOffset); x = newPos.x; } this.$cloneContainer.addStyle({ left: x + 'px', top: y + 'px' }); var cBound = this._dragData.eltBound.clone(); cBound.x = x; cBound.y = y; var destIdx = this._findDropIdx(cBound); this._dragData.destIdx = destIdx; var destX; if (destIdx >= this._dragData.childBounds.length) { var lastRect = this._dragData.childBounds[this._dragData.childBounds.length - 1]; destX = lastRect.x + lastRect.width - this._dragData.bound.x; } else { destX = this._dragData.childBounds[destIdx].x - this._dragData.bound.x; } this.addStyle('--dest-x', destX + 'px'); if (destIdx == this._dragData.eltIdx || destIdx == this._dragData.eltIdx + 1) { this.addClass('as-no-change'); } else { this.removeClass('as-no-change'); } }; ACore["c" /* default */].install(DraggableHStack); /* harmony default export */ var js_DraggableHStack = (DraggableHStack); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/droppanel.css var droppanel = __webpack_require__(33); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/exptree.css var exptree = __webpack_require__(89); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/ExpTree.js var ExpTree_ = ACore["c" /* default */]._; var ExpTree_$ = ACore["c" /* default */].$; ACore["c" /* default */].install('toggler-ico', function () { var res = ExpTree_( '<svg class="toggler-ico" width="14" height="14" version="1.1" viewBox="0 0 3.7042 3.7042" xmlns="http://www.w3.org/2000/svg" >' + ' <rect style="fill: transparent; stroke: none" x="0" y="0" width="3.7042" height="3.7042"></rect>' + ' <g transform="translate(0 -293.3)" class="toggle-close">' + ' <path d="m0.52917 293.82v2.6458l2.6458-1.3229z" />' + ' </g>' + ' <g transform="translate(0 -293.3)" class="toggle-open">' + ' <path d="m3.175 294.09-2.6458 2.1167h2.6458z"/>' + ' </g>' + '</svg>' ); return res; }); ACore["c" /* default */].install('remove-ico', function () { return ExpTree_('<svg class="remove-ico" width="24" height="24" viewBox="0 0 24 24">\ <rect style="fill: transparent; stroke: none" x="0" y="0" width="24" height="24"></rect>\ <path class="close" d="M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74" />\ <circle class="modified" cx="12" cy="12" r="10" />\ </svg>'); }); /*** * @extends AElement * @constructor */ function ExpNode() { var thisEN = this; this.$level = ExpTree_$('.absol-exp-node-level', this); this.$removeIcon = ExpTree_$('remove-ico', this) .on('click', function (event) { thisEN.emit('pressremove', { target: thisEN, type: 'pressremove' }, this); }); this.on('keydown', this.eventHandler.buttonKeydown); this.$toggleIcon = ExpTree_$('toggler-ico', this) .on('click', function (event) { thisEN.emit('presstoggle', Object(EventEmitter["a" /* copyEvent */])(event, { target: thisEN, type: 'pressremove' }), this); }); this.on('click', function (event) { if (!EventEmitter["b" /* default */].hitElement(thisEN.$removeIcon, event) && !EventEmitter["b" /* default */].hitElement(thisEN.$toggleIcon, event)) thisEN.emit('press', Object(EventEmitter["a" /* copyEvent */])(event, { target: thisEN, type: 'press' }), this); }) this.$iconCtn = ExpTree_$('div.absol-exp-node-ext-icon', this); this.$extIcon = ExpTree_$('img.absol-exp-node-ext-icon', this); this.$name = ExpTree_$('span.absol-exp-node-name', this); this.$desc = ExpTree_$('span.absol-exp-node-desc', this); contenteditableTextOnly(this.$name, function (text) { return text.replace(/[\\\/\|\?\:\<\>\*\r\n]/, '').trim(); }); OOP["a" /* default */].drillProperty(thisEN, thisEN.$extIcon, 'extSrc', 'src'); this._level = 0; this.__isExpNode__ = true; return thisEN; } ExpNode.tag = 'expnode'; ExpNode.render = function () { return ExpTree_({ tag: 'button', extendEvent: ['pressremove', 'press', 'presstoggle'], class: 'absol-exp-node', child: [ '.absol-exp-node-level', 'remove-ico', 'toggler-ico', 'img.absol-exp-node-ext-icon', 'div.absol-exp-node-ext-icon', 'span.absol-exp-node-name', 'span.absol-exp-node-desc' ] }); }; ExpNode.property = {}; ExpNode.property.icon = { set: function (value) { if (this.$iconP) { this.$iconP.remove(); this.$iconP = undefined; } if (value && value != null) { var newE; if (!Dom["b" /* default */].isDomNode(value)) { newE = ExpTree_(value); } this.$iconCtn.addChild(newE); this._icon = value; } else { this._icon = undefined; } }, get: function () { return this._icon; } }; ExpNode.property.level = { set: function (value) { value = value || 0; if (value != this.level) { this._level = value || 0; this.$level.innerHTML = ' '.repeat(this._level * 4); } }, get: function () { return this._level || 0; } }; ExpNode.property.name = { set: function (value) { this._name = value + ''; this.$name.clearChild(); if (this.name && this.name.length > 0) this.$name.addChild(ExpTree_({ text: this._name })) }, get: function () { return this._name || ''; } }; ExpNode.property.desc = { set: function (value) { this._desc = value + ''; this.$desc.clearChild(); this.$desc.addChild(ExpTree_({ text: this._desc })) }, get: function () { return this._desc || ''; } }; ExpNode.property.status = { set: function (value) { this.removeClass('status-open') .removeClass('status-close') .removeClass('status-modified') .removeClass('status-removable'); if (!value || value == 'none') { //todo } else if (value == 'close') { this.addClass('status-close') } else if (value == 'open') { this.addClass('status-open'); } else if (value == 'removable') { this.addClass('status-removable'); } else if (value == 'modified') { this.addClass('status-modified'); } else { throw new Error('Invalid status ' + value) } this._status = value; }, get: function () { return this._status; } } ExpNode.property.active = { set: function (value) { if (value) { this.addClass('as-active'); this.addClass('active'); } else { this.removeClass('as-active'); this.removeClass('active'); } }, get: function () { return this.containsClass('as-active'); } }; ExpNode.prototype.rename = function (resolveCallback, rejectCallback) { var self = this; var span = this.$name; var lastName = span.innerHTML; span.attr('contenteditable', 'true'); span.focus(); document.execCommand('selectAll', false, null); function keydowEventHandle(event) { var key = event.key; if (key == 'Enter') { event.preventDefault(); span.blur(); span.attr('contenteditable', undefined); } else if (key == "ESC") { event.preventDefault(); span.innerHTML = lastName; span.blur(); span.attr('contenteditable', undefined); } } function blurEventHandle(event) { finish(); var curentName = span.innerHTML.replace(/[\\\/\|\?\:\<\>\*\r\n]/, '').trim(); if (curentName == lastName) { rejectCallback && rejectCallback(); } else { if (curentName.length == 0) { span.innerHTML = lastName; rejectCallback && rejectCallback(); } else { var res = resolveCallback && resolveCallback(curentName); if (res === false) { span.innerHTML = lastName; } else if (res && res.then) { res.then(function (result) { if (result === false) { span.innerHTML = lastName; //faile } else { //success } }, function () { //reject value span.innerHTML = lastName; }) } else { //success } } } } function finish() { span.off('keydown', keydowEventHandle); span.off('blur', blurEventHandle); ExpTree_$(document.body).once('click', function () { setTimeout(function () { span.attr('contenteditable', undefined); }, 2); }); } span.on('keydown', keydowEventHandle); span.on('blur', blurEventHandle); }; ExpNode.prototype.findNodeBefore = function () { var tree = this.parentElement; var root; var prevTree; var res = null; if (tree.__isExpTree__) { root = tree.getRoot(); root.visitRecursive(function (cTree) { if (cTree === tree) { res = prevTree; } prevTree = cTree; }) } return res && res.getNode(); }; ExpNode.prototype.findNodeAfter = function () { var tree = this.parentElement; var root; var prevTree; var res = null; if (tree.__isExpTree__) { root = tree.getRoot(); root.visitRecursive(function (cTree) { if (prevTree === tree) { res = cTree; } prevTree = cTree; }) } return res && res.getNode(); }; ExpNode.eventHandler = {}; /**** * * @param {KeyboardEvent} event */ ExpNode.eventHandler.buttonKeydown = function (event) { if (event.target === this) { if (!event.metaKey && !event.shiftKey && !event.ctrlKey && !event.altKey) { var destNode; var tree = this.parentElement; var parentTree = tree && tree.getParent(); switch (event.key) { case 'ArrowLeft': if (tree.status === 'open') { tree.status = 'close'; tree.notifyStatusChange(); } else { destNode = parentTree && parentTree.getNode(); } break; case 'ArrowRight': if (tree.status === 'close') { tree.status = 'open'; tree.notifyStatusChange(); } else { destNode = this.findNodeAfter(); } break; case 'ArrowUp': destNode = this.findNodeBefore(); break; case 'ArrowDown': destNode = this.findNodeAfter(); break; case 'Space': this.click(); break; } if (destNode) { destNode.focus(); event.preventDefault(); } } } }; /*** * @extends AElement * @constructor */ function ExpTree() { var thisET = this; this.$node = ExpTree_$('expnode', this) .on('press', function (event) { thisET.emit('press', Object.assign({}, { target: thisET, node: this, type: 'press' }, event), this); }) .on('pressremove', function (event) { thisET.emit('pressremove', Object.assign({}, { target: thisET, node: this, type: 'pressremove' }, event), this); }) .on('presstoggle', this.eventHandler.nodePressToggle); this.$itemsContainer = ExpTree_$('.absol-exp-items', thisET); OOP["a" /* default */].drillProperty(this, this.$node, ['desc', 'name', 'title', 'extSrc', 'active', 'icon']); this.__isExpTree__ = true; this._level = 0; } ExpTree.tag = 'ExpTree'.toLowerCase(); ExpTree.render = function () { return ExpTree_({ class: 'absol-exp-tree', extendEvent: ['press', 'pressremove', 'statuschange'], child: [ 'expnode', '.absol-exp-items' ] }); }; ExpTree.property = {}; ExpTree.property.level = { set: function (value) { value = value || 0; if (value != this.level) { this.$node.level = value; Array.prototype.forEach.call(this.$itemsContainer.childNodes, function (e) { e.level = value + 1; }) } }, get: function () { return this.$node.level; } }; ExpTree.property.status = { set: function (value) { this.$node.status = value; if (value != 'open') { this.addClass('hide-children'); } else { this.removeClass('hide-children'); } }, get: function () { return this.$node.status; } }; ['findChildBefore', 'findChildAfter', 'removeChild', 'clearChild'] .forEach(function (key) { ExpTree.prototype[key] = function () { this.$itemsContainer[key].apply(this.$itemsContainer, arguments); } }); ExpTree.prototype.addChild = function (child) { if (!child.__isExpTree__) throw new Error('Child node must be a ExpTree'); child.level = this.level + 1; this.$itemsContainer.addChild(child); }; ExpTree.prototype.addChildBefore = function (child, at) { child.level = this.level + 1; this.$itemsContainer.addChildBefore(child, at); }; ExpTree.prototype.addChildAfter = function (child, at) { child.level = this.level + 1; this.$itemsContainer.addChildAfter(child, at); }; /**** * * @return {ExpTree} */ ExpTree.prototype.getParent = function () { var current = this.parentNode; while (current) { if (current.__isExpTree__) break; current = current.parentNode; } return current; }; /*** * * @return {ExpTree} */ ExpTree.prototype.getRoot = function () { var parent = this.getParent(); if (!parent) return this; return parent.getRoot(); } ExpTree.prototype.getNode = function () { return this.$node; }; ExpTree.prototype.getChildren = function () { return Array.apply(null, this.$itemsContainer.childNodes); }; /*** * * @param {function(tree: ExpTree): void} cb */ ExpTree.prototype.visitRecursive = function (cb) { cb(this); if (this.status === 'open') Array.prototype.forEach.call(this.$itemsContainer.childNodes, function (child) { child.visitRecursive(cb); }); }; ExpTree.prototype.getPath = function () { var path = []; var current = this; while (current) { path.push(current.name); current = current.getParent(); } return path.reverse(); }; ExpTree.prototype.accessByPath = function (path) { if (path.length == 0) return this; var childs = this.getChildren(); var res; for (var i = 0; i < childs.length; ++i) { if (childs[i].name == path[0]) { res = childs[i].accessByPath(path.slice(1)); break; } } return res; }; ExpTree.prototype.toggle = function () { switch (this.status) { case 'close': this.status = 'open'; break; case 'open': this.status = 'close'; break; } }; ExpTree.prototype.notifyStatusChange = function (props) { this.emit('statuschange', Object.assign({ type: 'statuschange', target: this }, props), this); }; ExpTree.eventHandler = {}; ExpTree.eventHandler.nodePressToggle = function (event) { this.toggle(); this.notifyStatusChange({ originEvent: event }); }; /*** * @extends ExpTree * @constructor */ function ExpGroup() { this.addClass('as-exp-group'); this.__isExpTree__ = true; } ExpGroup.tag = 'ExpGroup'.toLowerCase(); ExpGroup.render = function () { return ExpTree_('div'); }; /*** * * @param {function(tree: ExpTree): void} cb */ ExpGroup.prototype.visitRecursive = function (cb) { Array.prototype.forEach.call(this.childNodes, function (child) { child.visitRecursive(cb); }); }; ExpGroup.prototype.getParent = function () { return null; }; ExpGroup.prototype.getRoot = function () { return this; }; ExpGroup.prototype.getNode = function () { return null; }; ACore["c" /* default */].install(ExpNode); ACore["c" /* default */].install(ExpTree); ACore["c" /* default */].install(ExpGroup); /* harmony default export */ var js_ExpTree = (ExpTree); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/DropPanel.js var DropPanel_ = ACore["c" /* default */]._; var DropPanel_$ = ACore["c" /* default */].$; /** * @extends AElement * @constructor */ function DropPanel() { var thisDP = this; /*** * * @type {ExpGroup} */ this.$body = DropPanel_$('.absol-drop-panel-body', this); this.$head = DropPanel_$('.absol-drop-panel-head', this) .on('click', thisDP.eventHandler.clickHead); this.$name = DropPanel_$('.absol-drop-panel-name', thisDP); OOP["a" /* default */].drillProperty(this, this.$name, 'name', 'innerHTML'); return thisDP; } DropPanel.tag = 'DropPanel'.toLowerCase(); DropPanel.render = function () { return DropPanel_({ class: 'absol-drop-panel', extendEvent: ['toggle'], child: [ { class: 'absol-drop-panel-head', child: [ 'toggler-ico', { tag: 'span', class: "absol-drop-panel-name" } ] }, { tag:'expgroup', class: ['absol-drop-panel-body', 'absol-bscroller'] } ] }); }; DropPanel.eventHandler = {}; DropPanel.eventHandler.clickHead = function (event) { if (!this._childOfButton(event.target)) { var event = { target: this, isShowed: this.show, preventDefault: function () { this.prevented = true; } }; this.emit('toggle', event, this); if (!event.prevented) { this.toggle(); } } }; ['findChildBefore', 'findChildAfter', 'removeChild', 'clearChild', 'addChild'] .forEach(function (key) { DropPanel.prototype[key] = function () { this.$body[key].apply(this.$body, arguments); } }); DropPanel.prototype._childOfButton = function (elt) { while (elt && elt != this) { if (elt.tagName == "BUTTON") { return true; } elt = elt.parentElement } return false; }; DropPanel.prototype.toggle = function () { this.show = !this.show; }; DropPanel.property = {}; DropPanel.property.show = { set: function (value) { if (value) { var maxHeight = parseFloat(this.getComputedStyleValue('max-height').replace('px', '')); var headBound = this.$head.getBoundingClientRect(); if (maxHeight != 'none' && maxHeight != 'auto') { this.$body.addStyle('max-height', maxHeight - headBound.height + 'px'); } this.$body.addStyle('height', this.$body.scrollHeight + 'px'); setTimeout(function () { this.$body.removeStyle('height'); window.dispatchEvent(new Event('resize')); }.bind(this), 200); this.addClass('show'); } else { this.$body.addStyle('height', this.$body.scrollHeight + 'px'); setTimeout(function () { this.$body.addStyle('height', '0'); }.bind(this), 0); setTimeout(function () { this.$body.removeStyle('height'); window.dispatchEvent(new Event('resize')); }.bind(this), 200); this.removeClass('show'); } }, get: function () { return this.containsClass('show'); } }; ACore["c" /* default */].install(DropPanel); /* harmony default export */ var js_DropPanel = (DropPanel); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/DropPanelStack.js var DropPanelStack_ = ACore["c" /* default */]._; var DropPanelStack_$ = ACore["c" /* default */].$; /** * @extends AElement * @constructor */ function DropPanelStack() { var res = this; this.$attachHook = DropPanelStack_('attachhook').on('error', function () { Dom["b" /* default */].addToResizeSystem(this); this.updateSize = res.updateSize.bind(res); }); this.sync = new Promise(function (rs) { res.$attachHook.once('error', rs); }); } DropPanelStack.tag = 'DropPanelStack'.toLowerCase(); DropPanelStack.render = function () { return DropPanelStack_({ class: 'absol-drop-panel-stack', child: ['attachhook'] }); }; DropPanelStack.prototype.updateSize = function () { }; DropPanelStack.prototype.getFreeHeight = function () { var childNodes = this.childNodes; var sumHeight = 0; var bound = this.getBoundingClientRect(); var childBound; for (var i = 0; i < childNodes.length; ++i) { var child = childNodes[i]; if (child.containsClass && child.containsClass('absol-drop-panel')) { childBound = child.getBoundingClientRect(); sumHeight += childBound.height; } } return bound.height - sumHeight; }; DropPanelStack.prototype.addChild = function (child) { var self = this; if (child.containsClass('absol-drop-panel')) { //remove last event listener off other parent if (child.__drop_panel_toggle_listener__) { child.off('toggle', child.__drop_panel_toggle_listener__); } child.__drop_panel_toggle_listener__ = function (event) { event.preventDefault(); self.sync = self.sync.then(function () { if (event.isShowed) { setTimeout(function () { child.removeStyle('max-height'); }, 200); child.toggle(); } else { var headBound = child.$head.getBoundingClientRect(); var vailableHeight = self.getFreeHeight(); if (vailableHeight > 3) { child.addStyle('max-height', self.getFreeHeight() + headBound.height + 'px'); child.toggle(); } } return new Promise(function (rs) { setTimeout(rs, 200); }); }) }; child.on('toggle', child.__drop_panel_toggle_listener__); this.super(child); } else { throw new Error('Child element must be a DropPanel'); } }; ACore["c" /* default */].install('droppanelstack', DropPanelStack); /* harmony default export */ var js_DropPanelStack = (DropPanelStack); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/editabletext.css var editabletext = __webpack_require__(91); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EditableText.js var EditableText_ = ACore["c" /* default */]._; var EditableText_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function EditableText() { var thisET = this; this.$span = EditableText_$('span', this); this.$text = document.createTextNode(''); this.$span.addChild(this.$text); this.$higne = EditableText_$('.absol-editabe-text-higne', this); this.$input = EditableText_$('input', this); OOP["a" /* default */].drillProperty(this, this.$input, ['selectionStart', 'selectionEnd']); this.sync = new Promise(function (rs) { EditableText_('attachhook').addTo(thisET).once('error', rs); }); this.$input.on('keydown', this.eventHandler.inputKeyDown, true); this.$input.on('change', this.eventHandler.inputChange); this.$input.on('blur', this.eventHandler.inputBlur); }; EditableText.tag = 'EditableText'.toLowerCase(); EditableText.render = function () { return EditableText_({ class: 'absol-editabe-text', extendEvent: ['blur', 'focus', 'change', 'modify'], child: [ { class: 'absol-editabe-text-higne', child: '<input type="text">' }, 'span' ] }); }; EditableText.prototype.focus = function () { this.$input.focus(); }; EditableText.prototype.blur = function () { this.$input.blur(); }; EditableText.prototype.select = function () { this.$input.select(); }; EditableText.prototype.edit = function (flag, select) { this.editing = !!flag; this.sync = this.sync.then(function () { if (flag) { this.focus(); if (select) this.select(); } else this.blur(); }.bind(this)); return this.sync; } EditableText.prototype._update = function () { this.sync = this.sync.then(function () { return new Promise(function (rs) { // setTimeout(function () { var bound = this.getBoundingClientRect(); var higneBound = this.$higne.getBoundingClientRect(); var fsize = this.getFontSize(); this.$input.addStyle('width', bound.width + 4 + fsize * 0 + 'px'); this.$input.addStyle('height', bound.height + 4 + 'px'); this.$input.addStyle('left', bound.left - higneBound.left - 2 + 'px'); this.$input.addStyle('top', bound.top - higneBound.top + 'px'); rs(); }.bind(this)); }.bind(this)); } EditableText.property = {}; EditableText.property.text = { set: function (value) { this.$text.textContent = value; this.$input.value = value; }, get: function () { return this.$text.textContent; } } EditableText.property.editing = { set: function (value) { if (this._editting === value) return; this._editting = !!value; if (value) { this.$input.value = this.text; this._update(); this.sync = this.sync.then(function () { this.addClass('editing'); this.$input.value = this.text; this.$input.addStyle('font', this.$span.getComputedStyleValue('font')); this.$input.addStyle('font-style', this.$span.getComputedStyleValue('font-style')); this.$input.addStyle('color', this.$span.getComputedStyleValue('color')); }.bind(this)); } else { this.removeClass('editing'); } }, get: function () { return !!this._editting; } }; EditableText.eventHandler = {}; EditableText.eventHandler.inputKeyDown = function (event) { requestAnimationFrame(function () { this.text = this.$input.value; this._update(); event.text = this.text; this.emit('modify', event); }.bind(this)); }; EditableText.eventHandler.inputChange = function (event) { this.editing = false; this.emit('change', event); }; EditableText.eventHandler.inputBlur = function (event) { this.editing = false; this.emit('blur', event); }; ACore["c" /* default */].install(EditableText); /* harmony default export */ var js_EditableText = (EditableText); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/emojipicker.css var emojipicker = __webpack_require__(93); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Sprite.js var Sprite_ = ACore["c" /* default */]._; var Sprite_$ = ACore["c" /* default */].$; var NOT_READY = 0; var READY = 1; var START = 2; var RUNNING = 3; var PAUSE = 4; var STOP = 5; var ERROR = 6; var STATE_TO_STRING = ['NOT_READY', 'READY', 'START', 'RUNNING', 'PAUSE', 'STOP', 'ERROR']; /** * @augments AElement * @augments HTMLCanvasElement * @constructor */ function Sprite() { this.loadTextureTimeout = 5000; this._textureLoaded = false; this._state = NOT_READY; this.defineEvent(['ready', 'srcerror', 'play', 'resume', 'pause', 'stop', 'reset', 'end', 'frame']); this._length = 60; this._lastDrawFrame = -1; this._frameIndex = 0; this._timeout = -1; this.ctx = this.getContext('2d'); this._fps = 10; this._lastDrawMilis = 0; this._overTime = 0; this.draw = this.draw.bind(this); this.texture = null; this._frames = { type: 'grid', col: 1, row: 1 }; this._loop = false; } Sprite.cache = {}; Sprite.prototype.draw = function () { //todo var now = new Date().getTime(); var dt = this._overTime + now - this._lastDrawMilis; var di = Math.floor(dt / 1000 * this._fps); var frameIndex = (this._frameIndex + di); if (this._loop) { frameIndex = frameIndex % this._length; } else { frameIndex = Math.min(this._length - 1, frameIndex); } if (!isNaN(this._frameIndex) && frameIndex != this._frameIndex) { this.drawFrame(this._frameIndex); } this._overTime = dt - di * 1000 / this._fps; var nextTime = now + 1000 / this._fps - this._overTime - new Date().getTime(); this._lastDrawMilis = now; this._frameIndex = frameIndex; this._timeout = -1; if (this._loop || frameIndex + 1 < this._length) { if (this._state == RUNNING) this._timeout = setTimeout(this.draw, nextTime); } else this.stop(); }; Sprite.prototype.drawFrame = function (index) { if (this._lastDrawFrame == index) return; this._lastDrawFrame = index; this.ctx.clearRect(0, 0, this.width, this.height); if (this._frames.type == 'grid') { var imgWidth = this.texture.naturalWidth; var imgHeight = this.texture.naturalHeight; var sHeight = imgHeight / this._frames.row; var sWidth = imgWidth / this._frames.col; var sx = (index % this._frames.col) * sWidth; var sy = Math.floor(index / this._frames.col) * sHeight; this.ctx.drawImage(this.texture, sx, sy, sWidth, sHeight, 0, 0, this.width, this.height) } else { } this.emit('frame', { name: 'frame', target: this, frameIndex: index }, this); }; Sprite.prototype.stop = function () { this.pause(); if (this._state != PAUSE) return this; this._state = STOP; this.emit('stop', { name: 'stop', target: this }, this); return this; }; Sprite.prototype.pause = function () { if (this._state != RUNNING) return this; this._state = PAUSE; if (this._timeout > 0) { clearTimeout(this._timeout); this._timeout = -1; } var now = new Date().getTime(); this._overTime += now - this._lastDrawMilis; this.emit('pause', { name: 'pause', target: this }, this); }; Sprite.prototype.resume = function () { if (this._state != START && this._state != PAUSE) return this; if (this._state == RUNNING) return this; this._state = RUNNING; var now = new Date().getTime(); this._lastDrawMilis = now; this.draw(); this.emit('resume', { name: 'pause', target: this }, this); }; Sprite.prototype.reset = function () { this._frameIndex = 0; this._overTime = 0; } Sprite.prototype.play = function () { if (this._state == ERROR) return this; if (this._state == RUNNING) return this; if (this._state == READY || this._state == STOP) { this.reset(); } this._state = START; this.emit('play', { name: 'start', target: this }, this); this.resume(); return this; }; Sprite.prototype.afterReady = function () { var thisSprite = this; if (this._state != NOT_READY && this._state != ERROR) return Promise.resolve(); else return new Promise(function (rs, rj) { thisSprite.once('ready', rs); thisSprite.once('srcerror', rj); }); }; Sprite.tag = 'sprite'; Sprite.render = function () { return Sprite_('canvas.as-sprite'); }; Sprite.property = {}; Sprite.property.frames = { set: function (value) { this.stop(); this._lastDrawFrame = -1; if (value && value.type == 'grid') { this._length = value.col * value.row; } this._frames = value; if (this._textureLoaded && this._frames && this._state == NOT_READY) {//todo: verify frame this._state = READY; this.emit('ready', { target: this, name: 'ready' }, this); } }, get: function () { return this._frames; } }; Sprite.property.frameIndex = { set: function (value) { value = value || 0; if (value < 0) value = this._length - 1; if (this._loop) { this._frameIndex = value % this._length; this._overTime = 0; } else { this._frameIndex = Math.max(this._length - 1, value); this._overTime = 0; } this.drawFrame(this._frameIndex); }, get: function () { return this._frameIndex; } }; Sprite.property.src = { set: function (value) { this.stop(); this._lastDrawFrame = -1;//did not draw any thing value = value || []; var lastSrc = this._src; this._src = value || null; if (lastSrc == this._src) return; if (!value) this.texture = null; else { var cImage; if (!Sprite.cache[this._src]) { cImage = new Image(); Sprite.cache[this._src] = cImage; cImage.src = this._src; } else { cImage = Sprite.cache[this._src]; } this.texture = cImage; this._state = NOT_READY; var thisSprite = this; this._textureLoaded = false; Dom["b" /* default */].waitImageLoaded(this.texture, this.loadTextureTimeout).then(function (rs) { if (thisSprite.texture == cImage) { thisSprite._textureLoaded = true; if (thisSprite._frames) { thisSprite._lastDrawFrame = -1; thisSprite._state = READY; thisSprite.emit('ready', { target: thisSprite, name: 'ready' }, thisSprite); } } }, function () { if (thisSprite.texture == cImage) { thisSprite._state = ERROR; thisSprite.emit('srcerror', { target: thisSprite, name: 'srcerror' }, thisSprite); } }); } }, get: function () { return this._src; } } Sprite.property.state = { get: function () { return STATE_TO_STRING[this._state]; } }; Sprite.property.length = { get: function () { return this._length; } }; Sprite.property.fps = { set: function (value) { value = Math.max(value || 0, 0); this._fps = value; if (this._state == RUNNING) { clearTimeout(this._timeout); this._timeout = -1; var now = new Date().getTime(); this._overTime += now - this._lastDrawMilis; this._overTime = Math.min(1000 / this._fps, this._overTime); this.draw(); } }, get: function () { return this._fps; } }; Sprite.property.loop = { set: function (value) { value = !!value; this._loop = value; }, get: function () { return this._loop; } } ACore["c" /* default */].install(Sprite); /* harmony default export */ var js_Sprite = (Sprite); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiPicker.js var EmojiPicker_ = ACore["c" /* default */]._; var EmojiPicker_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function EmojiPicker() { var thisPicker = this; this._aliveTimeout = 90; this._assetRoot = this.attr('data-asset-root'); /*** * * @type {Sprite} */ this.$previewAnim = EmojiPicker_$('sprite.as-emoji-picker-preview-anim', this) .on('ready', this.eventHandler.previewAnimReady) .on('frame', this.eventHandler.previewAnimFrame); this.$previewAnim.loop = true; this.$previewAnim.src = this._assetRoot + '/anim/x120/' + js_EmojiAnims[0][1]; this.$previewAnim.fps = 30; this.$desc = EmojiPicker_$('.as-emoji-picker-preview-desc', this); this.$shortcut = EmojiPicker_$('.as-emoji-picker-preview-shortcut', this); this.$desc.clearChild().addChild(EmojiPicker_({ text: js_EmojiAnims[0][2] })); this.$shortcut.clearChild().addChild(EmojiPicker_({ text: js_EmojiAnims[0][0] })); this.$list = EmojiPicker_$('.as-emoji-picker-list', this); this.$items = js_EmojiAnims.reduce(function (ac, it) { var itemElt = EmojiPicker_({ tag: 'img', class: 'as-emoji-picker-item', props: { src: thisPicker._assetRoot + '/static/x20/' + it[1] } }).addTo(thisPicker.$list); itemElt.on('mouseenter', thisPicker.eventHandler.mouseenterItem.bind(thisPicker, it, itemElt)); itemElt.on('click', thisPicker.eventHandler.clickItem.bind(thisPicker, it)); ac[it[0]] = itemElt; return ac; }, {}); this.$attachook = EmojiPicker_('attachhook').addTo(this).on('error', this.eventHandler.attach); } EmojiPicker.assetRoot = (function (){ if (location.hostname.match(/^.+\.absol.cf$/)) return 'https://absol.cf/emoji'; return '/emoji'; })(); EmojiPicker.tag = 'EmojiPicker'.toLowerCase(); EmojiPicker.render = function (data) { data = data || {}; data.assetRoot = data.assetRoot || EmojiPicker.assetRoot; return EmojiPicker_({ class: 'as-emoji-picker', extendEvent: 'pick', attr: { 'data-asset-root': data.assetRoot }, child: [ { class: 'as-emoji-picker-preview', child: [ { class: '.as-emoji-picker-preview-anim-ctn', child: 'sprite.as-emoji-picker-preview-anim' }, '.as-emoji-picker-preview-desc', '.as-emoji-picker-preview-shortcut' ] }, { tag: 'bscroller', class: 'as-emoji-picker-list' } ] }); }; /** * @type {EmojiPicker} */ EmojiPicker.eventHandler = {}; EmojiPicker.eventHandler.attach = function () { this._aliveTimeout = 90; setTimeout(this.$previewAnim.play.bind(this.$previewAnim), 1); }; EmojiPicker.eventHandler.previewAnimReady = function () { this.$previewAnim.frames = { type: 'grid', col: 1, row: this.$previewAnim.texture.naturalHeight / this.$previewAnim.texture.naturalWidth }; this.$previewAnim.play(); }; EmojiPicker.eventHandler.previewAnimFrame = function () { if (this._aliveTimeout == 0) { var bound = this.getBoundingClientRect(); if (bound.width == 0) { this.$previewAnim.stop(); } else { this._aliveTimeout = 90; } } this._aliveTimeout--; }; EmojiPicker.eventHandler.mouseenterItem = function (itemData, itemElt, event) { if (this.$lastHoverItem == itemElt) return; this.$lastHoverItem = itemElt; this.$previewAnim.src = this._assetRoot + '/anim/x120/' + itemData[1]; this.$desc.clearChild().addChild(EmojiPicker_({ text: itemData[2] })); this.$shortcut.clearChild().addChild(EmojiPicker_({ text: itemData[0] })); }; EmojiPicker.eventHandler.clickItem = function (itemData, event) { this.emit('pick', { name: 'pick', key: itemData[0], target: this }, this); }; ACore["c" /* default */].install(EmojiPicker); /* harmony default export */ var js_EmojiPicker = (EmojiPicker); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/flexiconbutton.css var flexiconbutton = __webpack_require__(95); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/FlexiconButton.js var FlexiconButton_ = ACore["c" /* default */]._; var FlexiconButton_$ = ACore["c" /* default */].$; /** * @extends AElement * @constructor */ function FlexiconButton() { this._icon = null; this.$content = FlexiconButton_$('.as-flexicon-button-content', this); this.$iconCtn = FlexiconButton_$('.as-flexicon-button-icon-container', this); this.$textCtn = FlexiconButton_$('.as-flexicon-button-text-container', this); } FlexiconButton.tag = 'FlexiconButton'.toLowerCase(); FlexiconButton.render = function () { return FlexiconButton_({ tag: 'button', class: 'as-flexicon-button', child: { class: 'as-icon-button-table-box', child: { class: 'as-flexicon-button-content', child: [ '.as-flexicon-button-icon-container', '.as-flexicon-button-text-container', ] } } }); }; FlexiconButton.property = {}; FlexiconButton.property.icon = { set: function (value) { value = value || null; this._icon = value; this.$iconCtn.clearChild(); if (value !== null) { this.$iconCtn.addChild(FlexiconButton_(value)); } }, get: function () { return this._icon; } }; FlexiconButton.property.text = { set: function (value) { value = value || null; this._text = value; this.$textCtn.clearChild(); if (value !== null) { this.$textCtn.addChild(FlexiconButton_({ text: value })); } }, get: function () { this._text; } }; ACore["c" /* default */].install(FlexiconButton); /* harmony default export */ var js_FlexiconButton = (FlexiconButton); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/flexiconinput.css var flexiconinput = __webpack_require__(97); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/FlexiconInput.js var FlexiconInput_ = ACore["c" /* default */]._; var FlexiconInput_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function FlexiconInput() { this.$input = FlexiconInput_$('.as-flexicon-input-text-input', this); this.$iconCtn = FlexiconInput_$('.as-flexicon-input-icon-ctn', this); this.$unitCtn = FlexiconInput_$('.as-flexicon-input-unit-ctn', this); OOP["a" /* default */].drillProperty(this, this.$input, ['value', 'readonly']); this.on('click', function (event) { if (event.target != this.$input) this.$input.focus(); }.bind(this)); } FlexiconInput.prototype.on = function () { return this.$input.on.apply(this.$input, arguments); }; FlexiconInput.prototype.once = function () { return this.$input.once.apply(this.$input, arguments); }; FlexiconInput.prototype.off = function () { return this.$input.off.apply(this.$input, arguments); }; FlexiconInput.tag = 'FlexiconInput'.toLowerCase(); FlexiconInput.render = function () { return FlexiconInput_({ class: 'as-flexicon-input', child: [ { class: 'as-flexicon-input-icon-ctn' }, { tag: 'input', class: 'as-flexicon-input-text-input', attr: { type: 'text' }, }, { class: 'as-flexicon-input-unit-ctn' } ] }); }; FlexiconInput.property = {}; FlexiconInput.property.icon = { set: function (value) { value = value || null; this._icon = value; this.$iconCtn.clearChild(); if (value == null) { this.removeClass('as-flexicon-input-has-icon'); } else { this.addClass('as-flexicon-input-has-icon'); this.$iconCtn.addChild(FlexiconInput_(value)); } }, get: function () { return this._icon; } }; FlexiconInput.property.unit = { set: function (value) { this._unit = value; if (this._unit) { this.addClass('as-flexicon-input-has-unit'); this.$unitCtn.clearChild().addChild(FlexiconInput_({ text: value + '' })); } else { this.removeClass('as-flexicon-input-has-unit'); this.$unitCtn.clearChild(); } }, get: function () { return this._unit; } }; FlexiconInput.property.disabled = { set: function (value) { value = !!value; this.$input.disabled = value; if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.$input.disabled; } }; ACore["c" /* default */].install(FlexiconInput); /* harmony default export */ var js_FlexiconInput = (FlexiconInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/frame.css var css_frame = __webpack_require__(99); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Frame.js var Frame_ = ACore["c" /* default */]._; var Frame_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function Frame() { this.$parent = null;// FrameView or TabView } Frame.tag = 'frame'; Frame.render = function () { return Frame_({ class: 'absol-frame', attr: { id: randomIdent(12), }, extendEvent: ['attached', 'detached', 'deactive', 'active']// deactive and active event will be send by parent }); }; Frame.prototype.notifyAttached = function (parentElt) { this.$parent = parentElt; this.emit('attached', { type: 'attached', target: this, parentElt: parentElt }, this); }; Frame.prototype.notifyDetached = function () { this.emit('detached', { type: 'detached', target: this, parentElt: this.$parent }, this); this.$parent = undefined; }; Frame.prototype.selfRemove = function () { if (this.$parent) this.$parent.removeChild(this); else this.super();// normal remove }; Frame.prototype.getParent = function () { return this.$parent; }; Frame.prototype.requestActive = function () { if (this.$parent) { this.$parent.activeFrame(this); } }; ACore["c" /* default */].install(Frame); /* harmony default export */ var js_Frame = (Frame); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/frameview.css var frameview = __webpack_require__(101); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/FrameView.js var FrameView_ = ACore["c" /* default */]._; var FrameView_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function FrameView() { this.$containers = []; } FrameView.tag = 'frameview'; FrameView.render = function () { return FrameView_({ class: 'absol-frame-view', extendEvent: ['activeframe', 'deactiveframe'] }); }; FrameView.prototype.addChild = function (elt) { if (elt.containsClass && elt.containsClass('absol-frame')) { elt.selfRemove(); var containerElt = FrameView_({ class: 'absol-frame-view-frame-container', child: elt, props: { __elt__: elt } }); this.$containers.push(containerElt); this.appendChild(containerElt); elt.notifyAttached(this); } else { throw new Error('Children must be a frame'); } }; FrameView.prototype.addLast = function (elt) { this.addChild(elt); this.activeFrame(elt); }; FrameView.prototype.removeLast = function () { if (this.$containers.length > 0) { this.removeChild(this.$containers[this.$containers.length - 1].__elt__); } if (this.$containers.length > 0) { this.activeFrame(this.$containers[this.$containers.length - 1].__elt__); } }; FrameView.prototype.getLength = function () { return this.$containers.length; }; FrameView.prototype.getAllChild = function () { return this.$containers.map(function (ctn) { return ctn.__elt__; }); }; FrameView.prototype.getLast = function () { if (this.$containers.length > 0) { return (this.$containers[this.$containers.length - 1].__elt__); } return null; }; FrameView.prototype.addChildBefore = function (elt, at) { if (elt.containsClass && elt.containsClass('absol-frame')) { elt.selfRemove(); var index = this.childIndexOf(at); if (index < 0) { throw new Error('Second param is not a child'); } var index = this.childIndexOf(at); var atCtnElt = this.$containers[index]; var containerElt = FrameView_({ class: 'absol-frame-view-frame-container', child: elt, props: { __elt__: elt } }); this.$containers.splice(index, 0, containerElt); this.super(containerElt, atCtnElt); elt.notifyAttached(this); } else { throw new Error('Children must be a frame'); } }; FrameView.prototype.addChildAfter = function (elt, at) { if (elt.containsClass && elt.containsClass('absol-frame')) { elt.selfRemove(); var index = this.childIndexOf(at); if (index < 0) { throw new Error('Second param is not a child'); } var index = this.childIndexOf(at); var atCtnElt = this.$containers[index]; var containerElt = FrameView_({ class: 'absol-frame-view-frame-container', child: elt, props: { __elt__: elt } }); this.$containers.splice(index + 1, 0, containerElt); this.super(containerElt, atCtnElt); elt.notifyAttached(this); } else { throw new Error('Children must be a frame'); } }; FrameView.prototype.removeChild = function (elt) { var ctnEltIndex = this.childIndexOf(elt) if (ctnEltIndex >= 0) { var ctnElt = this.$containers[ctnEltIndex]; this.$containers.splice(ctnEltIndex, 1); this.super(ctnElt); } else { throw new Error('Removed element is not a child!'); } }; FrameView.prototype.childIndexOf = function (elt) { for (var i = 0; i < this.$containers.length; ++i) { if (this.$containers[i].__elt__ == elt) return i; } return -1; }; FrameView.prototype.findChildBefore = function (elt) { var eltIndex = this.childIndexOf(elt); if (eltIndex < 0) return -1; return this.$containers[eltIndex - 1]; }; FrameView.prototype.findChildAfter = function (elt) { var eltIndex = this.childIndexOf(elt); if (eltIndex < 0) return -1; return this.$containers[eltIndex + 1]; }; FrameView.prototype.clearChild = function () { while (this.$containers.length > 0) { this.removeChild(this.$containers[0].__elt__); } return this; }; FrameView.prototype.findChildById = function (id) { var elt; for (var i = 0; i < this.$containers.length; ++i) { elt = this.$containers[i].__elt__; if (elt.getAttribute('id') == id) return elt; } return undefined; }; FrameView.prototype.getAllChild = function () { return this.$containers.map(function (ctnElt) { return ctnElt.__elt__; }); }; FrameView.prototype.activeFrame = function (frameElt) { var ctnElt, elt; for (var i = 0; i < this.$containers.length; ++i) { ctnElt = this.$containers[i]; elt = ctnElt.__elt__; if (frameElt == elt) { if (!ctnElt.containsClass('absol-active')) { ctnElt.addClass('absol-active'); this.notifyActiveFrame(elt); } // else do nothing } else { if (ctnElt.containsClass('absol-active')) { ctnElt.removeClass('absol-active'); this.notifyDeactiveFrame(elt); } // else do nonthing } } return this; }; FrameView.prototype.notifyActiveFrame = function (frameElt, originEvent) { frameElt.emit('active', { target: frameElt, type: 'active', originEvent: originEvent }); this.emit('activeframe', { type: 'activeframe', target: this, frameElt: frameElt, originEvent: originEvent }, this); }; FrameView.prototype.notifyDeactiveFrame = function (frameElt, originEvent) { this.emit('deactiveframe', { type: 'deactiveframe', target: this, frameElt: frameElt, originEvent: originEvent }, this); }; FrameView.prototype.activeFrameById = function (id) { var frameElt = this.findChildById(id); if (frameElt) this.activeFrame(frameElt); return this; }; ACore["c" /* default */].install('frameview', FrameView); /* harmony default export */ var js_FrameView = (FrameView); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabFrame.js var TabFrame_$ = ACore["c" /* default */].$; var TabFrame_ = ACore["c" /* default */]._; function TabFrame() { } TabFrame.tag = 'tabframe'; TabFrame.render = function () { return TabFrame_({ tag: 'frame', class: 'absol-tab-frame', extendEvent: ['requestremove', 'remove'] }, true); } TabFrame.property = {}; TabFrame.property.name = { set: function (value) { if (typeof name == "undefined") { this._name = undefined; } else { this._name = value + ''; } if (this.$parent) { if (this.$parent.notifyUpdateName) this.$parent.notifyUpdateName(this); } }, get: function () { return this._name; } }; TabFrame.property.modified = { set: function (value) { this._modified = !!value; if (this.$parent) { if (this.$parent.notifyUpdateModified) this.$parent.notifyUpdateModified(this); } }, get: function () { return !!this._modified; } }; TabFrame.property.desc = { set: function (value) { if (typeof value == "undefined") { this._desc = undefined; } else { this._desc = value + ''; } if (this.$parent) { if (this.$parent.notifyUpdateDesc) this.$parent.notifyUpdateDesc(this); } }, get: function () { return this._desc; } } TabFrame.attribute = {}; TabFrame.attribute.name = { set: function (value) { this.name = value; }, get: function () { return this.name; }, remove: function () { this.name = undefined; } }; TabFrame.attribute.desc = { set: function (value) { this.desc = value; }, get: function () { return this.desc; }, remove: function () { this.desc = undefined; } }; TabFrame.attribute.modified = { set: function (value) { this.modified = value == 'true' || value == '1' || value === true; }, get: function () { return this.modified ? 'true' : undefined; }, remove: function () { this.desc = false; } }; TabFrame.prototype.requestRemove = function () { if (this.$parent && this.$parent.removeTab) { this.$parent.removeTab(this.id, false); } else { this.selfRemove(); } }; ACore["c" /* default */].install(TabFrame); /* harmony default export */ var js_TabFrame = (TabFrame); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tabview.css var tabview = __webpack_require__(26); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabButton.js var TabButton_ = ACore["c" /* default */]._; var TabButton_$ = ACore["c" /* default */].$; function TabButton() { var thisTB = this; this.$close = TabButton_$('.absol-tabbar-button-close', this) this.$iconCtn = TabButton_$('.absol-tabbar-button-icon-container', this).on('click', function (event) { event.tabButtonEventName = 'delete'; thisTB.emit('close', event); }); this.$modifiedFlag = TabButton_$('.absol-tabbar-button-modified-flag', this) .on('click', function (event) { event.tabButtonEventName = 'delete'; thisTB.emit('close', event); }); this.$textView = TabButton_$('.absol-tabbar-button-text', this); this.on({ click: function (event) { if (event.tabButtonEventName) return; event.tabButtonEventName = 'active'; thisTB.emit('active', event); } }); } TabButton.tag = 'TabButton'; TabButton.render = function () { return TabButton_({ tag: 'button', class: 'absol-tabbar-button', extendEvent: ['close', 'active'], id: randomIdent(20), child: [{ class: 'absol-tabbar-button-text', }, { class: 'absol-tabbar-button-icon-container', child: [ { tag: 'span', class: ['absol-tabbar-button-close', 'mdi-close', 'mdi'], attr: { title: 'Close' } }, { tag: 'span', class: ['absol-tabbar-button-close-circle', 'mdi-close-circle', 'mdi'], attr: { title: 'Close' } }, { tag: 'span', class: ['absol-tabbar-button-modified-flag', 'mdi', 'mdi-checkbox-blank-circle'] } ] } ] }); }; TabButton.property = {}; TabButton.property.active = { set: function (value) { this._active = value; if (value) this.addClass('absol-tabbar-button-active'); else this.removeClass('absol-tabbar-button-active'); }, get: function () { return this._active; } }; TabButton.property.name = { set: function (value) { this._name = value || ''; this.$textView.innerHTML = this._name; }, get: function () { return this._name; } }; TabButton.property.desc = { set: function (value) { this.attr('title', value); }, get: function () { return this.attr('title'); } }; TabButton.property.modified = { set: function (value) { if (value) { this.addClass('absol-tabbar-button-modified'); } else { this.removeClass('absol-tabbar-button-modified'); } }, get: function () { return this.containsClass('absol-tabbar-button-modified'); } }; ACore["c" /* default */].install(TabButton); /* harmony default export */ var js_TabButton = (TabButton); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabBar.js var TabBar_ = ACore["c" /* default */]._; var TabBar_$ = ACore["c" /* default */].$; function TabBar() { this.defineEvent(['active', 'close']); this.on('wheel', function (event) { var lastLeft = this.$viewport.scrollLeft; if (event.deltaY > 1) { this.$viewport.scrollLeft += 50; } else if (event.deltaY < -1) { this.$viewport.scrollLeft -= 50; } if (lastLeft != this.$viewport.scrollLeft) event.preventDefault(); }); this._tabs = []; } TabBar.tag = 'tabbar'; TabBar.render = function (){ return TabBar_('hscroller.absol-tabbar'); }; TabBar.prototype.getAllTabButtons = function () { var buttons = []; TabBar_$('tabbutton', this, function (e) { buttons.push(e); }); return buttons; }; /*** * * @param {string} ident * @return {TabButton} */ TabBar.prototype.getButtonByIdent = function (ident) { return TabBar_$('tabbutton#tabbuton-' + ident, this); }; TabBar.property = {}; TabBar.property.tabs = { set: function (value) { this.clearChild(); this._tabs = []; (value || []).forEach(this.addTab.bind(this)); }, get: function () { //each hold item data return this._tabs || []; } }; /*** * * @param {{text}} * @return {tabbar} */ TabBar.prototype.addTab = function (value) { var self = this; var props = {}; if (typeof value == "string") { props.name = value; } else { if (value.name) { props.name = value.name; } else { throw new Error('Tab must has name attribute'); } if (value.desc) props.desc = value.desc; } var tabButton = TabBar_({ tag: 'tabbutton', props: props, on: { active: function (event, sender) { var prevented = false; self.emit('active', { target: this, value: value, preventDefault: function () { prevented = true; } }, self); if (!prevented) { self.getAllTabButtons().forEach(function (e) { e.active = false; }); this.active = true; } }, close: function (event, sender) { var prevented = false; self.emit('close', { target: this, value: value, preventDefault: function () { prevented = true; } }, self); if (!prevented) { //todo:active other this.remove(); } } } }).addTo(this); if (value.id) tabButton.attr('id', 'tabbuton-' + value.id); this._tabs.push(tabButton); this.requestUpdateSize(); return tabButton; }; TabBar.prototype.removeTab = function (id) { this._tabs = this._tabs.filter(function (value) { return value == id; }); TabBar_$('#tabbuton-' + id, this).remove(); this.requestUpdateSize(); }; TabBar.prototype.activeTab = function (id) { var self = this; var activedbtn = TabBar_$('.absol-tabbar-button-active', this); if (activedbtn && activedbtn.attr('id') != id) { activedbtn.active = false; } var mButton = TabBar_$('#tabbuton-' + id, this); if (mButton) { mButton.active = true; setTimeout(function () { self.scrollInto(mButton); }, 30) } }; TabBar.prototype.setModified = function (ident, flag) { var bt = this.getButtonByIdent(ident); if (bt) { bt.modified = flag; } }; ACore["c" /* default */].install(TabBar); /* harmony default export */ var js_TabBar = (TabBar); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabView.js var TabView_ = ACore["c" /* default */]._; var TabView_$ = ACore["c" /* default */].$; function TabView() { var thisTV = this; /*** * * @type {TabBar} */ this.$tabbar = TabView_$('tabbar', this); this.$tabbar.on({ close: TabView.eventHandler.closeTab.bind(thisTV), active: TabView.eventHandler.activeTab.bind(thisTV) }); this._frameHolders = []; this._history = []; } TabView.tag = 'TabView'.toLowerCase(); TabView.render = function () { return TabView_({ class: 'absol-tabview', extendEvent: ['activetab', 'deactivetab', 'removetab', 'requestremovetab'], child: [ 'tabbar' ] }); }; TabView.eventHandler = {}; TabView.eventHandler.closeTab = function (event) { event.preventDefault(); var id = event.value.id; this.removeTab(id, true); }; TabView.eventHandler.activeTab = function (event) { event.preventDefault(); var id = event.value.id; this.activeTab(id, true); }; TabView.prototype.activeTab = function (id, userActive) { var self = this; var resPromise = []; var needDeactiveHolder = []; var needActiveHolder = []; this._frameHolders.forEach(function (holder) { if (holder.containerElt.containsClass('absol-tabview-container-hidden')) { if (holder.id == id) { needActiveHolder.push(holder); } } else { if (holder.id != id) { needDeactiveHolder.push(holder); } } }); needDeactiveHolder.forEach(function (holder) { holder.containerElt.addClass('absol-tabview-container-hidden'); holder.tabFrame.emit('deactive', { type: 'deactive', target: holder.tabFrame, id: holder.id, userActive: !!userActive, tabButton: holder.tabButton, holder: holder }, holder.tabFrame); }); needActiveHolder.forEach(function (holder) { self._history.push(holder.id); holder.containerElt.removeClass('absol-tabview-container-hidden'); self.$tabbar.activeTab(holder.id); holder.tabFrame.emit('active', { type: 'active', target: holder.tabFrame, id: holder.id, userActive: !!userActive, tabButton: holder.tabButton, holder: holder }, holder.tabFrame); self.emit('activetab', { type: 'activetab', target: self, id: holder.id, userActive: !!userActive, tabButton: holder.tabButton, holder: holder }, self); }); }; TabView.prototype.removeTab = function (id, userActive) { var self = this; var resPromise = []; this._frameHolders.forEach(function (holder) { if (holder.id == id) { var eventData = { type: 'requestremove', id: id, userActive: !!userActive, target: holder.tabFrame, tabFrame: holder.tabFrame, tabButton: holder.tabButton, holder: holder, __promise__: Promise.resolve(), waitFor: function (promise) { this.__promise__ = promise; } }; holder.tabFrame.emit('requestremove', eventData, holder.tabFrame); eventData.type = 'requestremovetab'; eventData.target = self; self.emit('requestremovetab', eventData, self); resPromise.push( eventData.__promise__.then(function () { //if ok var eventData2 = { type: 'deactive', target: holder.tabFrame, id: holder.id, userActive: !!userActive, tabButton: holder.tabButton, holder: holder }; if (!holder.containerElt.containsClass('absol-tabview-container-hidden')) holder.tabFrame.emit('deactive', eventData2, holder.tabFrame); eventData2.type = 'deactivetab'; eventData2.target = self; if (!holder.containerElt.containsClass('absol-tabview-container-hidden')) self.emit('deactivetab', eventData2, self); self._frameHolders = self._frameHolders.filter(function (x) { return x.id != id; }); holder.tabFrame.notifyDetached(); self.$tabbar.removeTab(holder.id); holder.containerElt.remove(); eventData2.type = 'remove'; eventData2.target = holder.tabFrame; holder.tabFrame.emit('remove', eventData2, holder.tabFrame); eventData2.type = 'removetab'; eventData2.target = self; self.emit('removetab', eventData2, self); self.activeLastTab(); }, function () { //if reject }) ); } }); return Promise.all(resPromise); }; TabView.prototype.notifyUpdateDesc = function (elt) { var holder = this.findHolder(elt); if (holder) { holder.tabButton.desc = elt.desc; } }; TabView.prototype.notifyUpdateName = function (elt) { var holder = this.findHolder(elt); if (holder) { holder.tabButton.name = elt.name; } }; TabView.prototype.notifyUpdateModified = function (elt) { var holder = this.findHolder(elt); if (holder) { holder.tabButton.modified = elt.modified; } }; TabView.prototype.findHolder = function (elt) { for (var i = 0; i < this._frameHolders.length; ++i) { var holder = this._frameHolders[i]; if (holder.tabFrame == elt) { return holder; } } }; TabView.prototype.addChild = function () { var self = this; Array.prototype.forEach.call(arguments, function (elt) { if (!elt.notifyAttached || !elt.notifyDetached) { throw new Error('element is not a tabframe'); } var containerElt = TabView_('.absol-tabview-container.absol-tabview-container-hidden'); self.appendChild(containerElt);//origin function elt.selfRemove(); var id = elt.attr('id'); var desc = elt.attr('desc') || undefined; var name = elt.attr('name') || 'NoName'; var modified = elt.modified; var tabButton = self.$tabbar.addTab({ name: name, id: id, desc: desc, modified: modified }); containerElt.addChild(elt); elt.notifyAttached(self); var holder = {}; OOP["a" /* default */].drillProperty(holder, elt, 'id'); OOP["a" /* default */].drillProperty(holder, elt, 'desc'); OOP["a" /* default */].drillProperty(holder, elt, 'name'); Object.defineProperties(holder, { tabButton: { value: tabButton, writable: false }, tabFrame: { value: elt, writable: false }, containerElt: { value: containerElt, writable: false } }); self._frameHolders.push(holder); self.activeTab(id); }); }; TabView.prototype.activeLastTab = function () { var dict = this._frameHolders.reduce(function (ac, holder) { ac[holder.id] = true; return ac; }, {}); while (this._history.length > 0) { var id = this._history[this._history.length - 1]; if (dict[id]) { this.activeTab(id); break; } else { this._history.pop(); } } }; TabView.prototype.getChildAt = function (index) { return this._frameHolders[index].tabFrame; }; TabView.prototype.getAllChild = function () { return this._frameHolders.map(function (holder) { return holder.tabFrame; }); }; TabView.prototype.getActiveTabHolder = function () { var holder = null; for (var i = 0; i < this._frameHolders.length; ++i) { holder = this._frameHolders[i]; if (!holder.containerElt.containsClass('absol-tabview-container-hidden')) { return holder; } } return null; }; TabView.prototype.getActiveTab = function () { var holder = this.getActiveTabHolder(); return holder && holder.tabFrame; }; TabView.prototype.getActiveTabId = function () { var holder = this.getActiveTabHolder(); return holder && holder.id; }; TabView.prototype.getTabById = function (id) { var holder = this.getTabHolderById(id); return holder && holder.tabFrame; }; TabView.prototype.getTabHolderById = function (id) { var holder = null; for (var i = 0; i < this._frameHolders.length; ++i) { holder = this._frameHolders[i]; if (holder.id === id) { return holder; } } return null; } TabView.prototype.activeFrame = function (elt) { if (typeof elt == "string") { return this.activeTab(elt); } else if (elt && elt.attr) { return this.activeTab(elt.attr('id')); } else { throw new Error("Invalid param, must be id or elt!"); } }; TabView.property = {}; TabView.property.historyOfTab = { get: function () { return this._history.slice(); } }; ACore["c" /* default */].install('tabview', TabView); /* harmony default export */ var js_TabView = (TabView); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/singlepage.css var singlepage = __webpack_require__(104); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SinglePage.js var SinglePage_ = ACore["c" /* default */]._; var SinglePage_$ = ACore["c" /* default */].$; var warned = false; /*** * @extends AElement * @constructor */ function SinglePage() { var thisSP = this; this._updateIntv = -1; this._tick = function () { if (this.isDescendantOf(document.body)) { if (this.$header){ var headerHeight = this.$header.getBoundingClientRect().height; if (this._prevHeaderHeight !== headerHeight){ ResizeSystem["a" /* default */].update(); } } } else { clearInterval(this._updateIntv); this._updateIntv = -1; } }.bind(this); this.$attachhook = SinglePage_$('attachhook', this) .on('attached', function () { this.updateSize(); setTimeout(this.updateSize, 20); Dom["b" /* default */].addToResizeSystem(this); if (thisSP._updateIntv < 0) { thisSP._updateIntv = setInterval(thisSP._tick, 200); } }); this.$attachhook.updateSize = this.updateSize.bind(this); this.$header = null; this.$footer = null; this.$viewport = SinglePage_$('.absol-single-page-scroller-viewport', this); this.$scroller = SinglePage_$('.absol-single-page-scroller', this); } SinglePage.tag = 'SinglePage'.toLowerCase(); SinglePage.render = function () { return SinglePage_({ tag: 'tabframe', extendEvent: ['sizechange'], class: 'absol-single-page', child: [{ class: 'absol-single-page-scroller', child: { class: 'absol-single-page-scroller-viewport' } }, 'attachhook'] }); }; SinglePage.prototype.updateSize = function () { if (!this.isDescendantOf(document.body)) return; var paddingTop = parseFloat(this.getComputedStyleValue('padding-top').replace('px', '')) || 0; if (this.$header) { var headerBound = this.$header.getBoundingClientRect(); var headerMarginTop = parseFloat(this.$header.getComputedStyleValue('margin-top').replace('px', '')) || 0; var headerMarginBottom = parseFloat(this.$header.getComputedStyleValue('margin-bottom').replace('px', '')) || 0; this.$scroller.addStyle('top', (headerBound.height + headerMarginTop + headerMarginBottom + paddingTop) + 'px'); this._prevHeaderHeight = headerBound.height; } if (this.$footer) { var footerBound = this.$footer.getBoundingClientRect(); this.$viewport.addStyle('padding-bottom', footerBound.height + 'px'); } if (this.isSupportedEvent('sizechange')) this.emit('sizechange', { type: 'sizechange', target: this }, this); }; SinglePage.prototype.addChild = function (elt) { if (elt.classList.contains('absol-single-page-header')) { if (this.firstChild) { this.addChildBefore(elt, this.firstChild); } else { this.appendChild(elt); } this.$header = SinglePage_$(elt); this.updateSize(); } else if (elt.classList.contains('absol-single-page-footer')) { this.$viewport.addChild(elt); this.$footer = SinglePage_$(elt); this.updateSize(); } else { this.$viewport.addChild(elt); } }; SinglePage.prototype.removeChild = function (elt) { if (elt == this.$footer) { this.$viewport.removeChild(elt); this.$footer = undefined; this.updateSize(); } else if (elt == this.$header) { this.super(elt); this.$header = undefined; this.updateSize(); } else { this.$viewport.removeChild(elt); } }; ACore["c" /* default */].install(SinglePage); /* harmony default export */ var js_SinglePage = (SinglePage); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/hexasectionlabel.css var hexasectionlabel = __webpack_require__(106); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/HexaSectionLabel.js var HexaSectionLabel_ = ACore["c" /* default */]._; var HexaSectionLabel_$ = ACore["c" /* default */].$; var HexaSectionLabel_g = Svg["a" /* default */].ShareInstance._; var HexaSectionLabel_$g = Svg["a" /* default */].ShareInstance.$; var HexaSectionLabel_Design = { hexaHeight: 425, textBoxHeight: 286, textHeight: 96, indexHeight: 110, textBoxPaddingLeft: 127, borderWidth: 38 }; var HexaSectionLabel_StyleSheet = { '.as-hexa-section-label-text': { height: HexaSectionLabel_Design.textBoxHeight / HexaSectionLabel_Design.textHeight + 'em', 'padding-left': HexaSectionLabel_Design.textBoxPaddingLeft / HexaSectionLabel_Design.textHeight + 'em', 'line-height': HexaSectionLabel_Design.textBoxHeight / HexaSectionLabel_Design.textHeight + 'em' }, '.as-hexa-section-label-index': { 'font-size': HexaSectionLabel_Design.indexHeight / HexaSectionLabel_Design.textHeight + 'em', height: HexaSectionLabel_Design.hexaHeight / HexaSectionLabel_Design.indexHeight + 'em', 'line-height': HexaSectionLabel_Design.hexaHeight / HexaSectionLabel_Design.indexHeight + 'em', width: ((HexaSectionLabel_Design.hexaHeight + HexaSectionLabel_Design.borderWidth) / Math.cos(Math.PI / 6)) / HexaSectionLabel_Design.indexHeight + 'em' }, }; HexaSectionLabel_({ tag: 'style', id: 'hexa-section-label-style', props: { innerHTML: Object.keys(HexaSectionLabel_StyleSheet).map(function (key) { var style = HexaSectionLabel_StyleSheet[key]; return key + ' {\n' + Object.keys(style).map(function (propName) { return propName + ': ' + style[propName] + ';'; }).join('\n') + '}'; }).join('\n') } }).addTo(document.head); /*** * @extends AElement * @constructor */ function HexaSectionLabel() { this.$background = HexaSectionLabel_$('.as-hexa-section-label-background', this); this.$index = HexaSectionLabel_$('.as-hexa-section-label-index', this); this.$text = HexaSectionLabel_$('.as-hexa-section-label-text', this); this.$attachhook = HexaSectionLabel_('attachhook').addTo(this).on('error', function () { Dom["b" /* default */].addToResizeSystem(this); this.requestUpdateSize(); }); this.$attachhook.requestUpdateSize = this.redrawBackground.bind(this); this.$svg = HexaSectionLabel_g({ tag: 'svg', attr: { width: '0', height: '0' }, child: [ 'path.as-hexa-section-label-text-box', 'path.as-hexa-section-label-index-box' ] }).addTo(this.$background); this.$indexBox = HexaSectionLabel_$g('path.as-hexa-section-label-index-box', this.$svg); this.$textBox = HexaSectionLabel_$g('path.as-hexa-section-label-text-box', this.$svg); } HexaSectionLabel.prototype.redrawBackground = function () { var indexBound = this.$index.getBoundingClientRect(); var textBound = this.$text.getBoundingClientRect(); var cHeight = indexBound.height; var cWidth = textBound.right - indexBound.left; this.$svg.attr({ height: cHeight + '', width: cWidth + '', viewBox: [0, 0, cWidth, cHeight].join(' ') }); var borderWidth = cHeight * HexaSectionLabel_Design.borderWidth / HexaSectionLabel_Design.hexaHeight; var radius = (cHeight / Math.cos(Math.PI / 6) / 2) - borderWidth / 2; var x0 = indexBound.width / 2; var y0 = cHeight / 2; this.$indexBox.attr('d', Array(6).fill(0).map(function (u, i) { var angle = Math.PI / 3 + i * Math.PI / 3; var x = radius * Math.cos(angle) + x0; var y = radius * Math.sin(angle) + y0; return (i == 0 ? 'M' : 'L') + x + ' ' + y; }).join(' ') + 'Z') .addStyle({ strokeWidth: borderWidth + '' }); var skewX = 18 / 45; var textBoxHeight = textBound.height; this.$textBox.attr('d', [ [x0, (cHeight - textBoxHeight) / 2], [cWidth - 1, (cHeight - textBoxHeight) / 2], [cWidth - 1 - textBoxHeight * skewX, (cHeight - textBoxHeight) / 2 + textBoxHeight], [x0, (cHeight - textBoxHeight) / 2 + textBoxHeight], ].map(function (point, i) { return (i == 0 ? 'M' : 'L') + point.join(' ') }).join(' ') + 'Z') }; HexaSectionLabel.tag = 'HexaSectionLabel'.toLowerCase(); HexaSectionLabel.render = function () { return HexaSectionLabel_({ class: 'as-hexa-section-label', child: [ { class: 'as-hexa-section-label-background' }, '.as-hexa-section-label-index', '.as-hexa-section-label-text' ] }); }; HexaSectionLabel.property = {}; HexaSectionLabel.property.index = { set: function (value) { this._index = value; this.$index.clearChild().addChild(HexaSectionLabel_({ text: value + '' })) }, get: function () { return this._index; } }; HexaSectionLabel.property.text = { set: function (value) { this._text = value; this.$text.clearChild().addChild(HexaSectionLabel_({ text: value + '' })) }, get: function () { return this._text; } }; ACore["c" /* default */].install(HexaSectionLabel); /* harmony default export */ var js_HexaSectionLabel = (HexaSectionLabel); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/vruler.css var vruler = __webpack_require__(108); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/VRuler.js var VRuler_ = ACore["c" /* default */]._; var VRuler_$ = ACore["c" /* default */].$; function VRuler() { var self = this; this.$attachHook = VRuler_('attachhook').on('error', function () { this.updateSize = self.update.bind(self); Dom["b" /* default */].addToResizeSystem(this); this.updateSize(); }).addTo(this); this.$lines = []; this.$numbers = []; this.$measureTarget = undefined; this._viewingNumberCount = 0; this._viewingLineCount = 0; this._spacing = 10; this._major = 10; this._valueFloat = 'top'; } VRuler.tag = 'vruler'; VRuler.render = function () { return VRuler_({ class: 'as-vruler' }); }; VRuler.prototype.measureElement = function (elt) { if (typeof elt == "string") elt = VRuler_$(elt); this.$measureTarget = elt; this.update(); }; VRuler.prototype.update = function () { var fontSize = this.getFontSize(); var measureBound; var bound = this.getBoundingClientRect(); var contentBound = { left: bound.left + 1, right: bound.right - 1, top: bound.top + 1, bottom: bound.bottom - 1, width: bound.width - 2, height: bound.height - 2 }; if (this.$measureTarget) { measureBound = this.$measureTarget.getBoundingClientRect(); } else { measureBound = contentBound; } var startOfset = (measureBound[this._valueFloat] - contentBound[this._valueFloat]) * (this.inverse ? -1 : 1) % this._spacing; if (startOfset < 0) startOfset += this._spacing; var lineIndexOfset = Math.round(((contentBound[this._valueFloat] - measureBound[this._valueFloat]) * (this.inverse ? -1 : 1) + startOfset) / this._spacing); var lineCount = Math.floor((contentBound.height - startOfset) / this._spacing) + 1; while (this.$lines.length < lineCount) { this.$lines.push(VRuler_('.as-vruler-line')); } var i; var lineElt; for (i = 0; i < lineCount; ++i) { lineElt = this.$lines[i]; if ((i + lineIndexOfset) % this._major == 0) { lineElt.addClass('major'); } else { lineElt.removeClass('major'); } lineElt.addStyle(this._valueFloat, startOfset + this._spacing * i - 0.5 + 'px'); } while (this._viewingLineCount < lineCount) { this.$lines[this._viewingLineCount++].addTo(this); } while (this._viewingLineCount > lineCount) { this.$lines[--this._viewingLineCount].remove(); } var numberCount = Math.floor((lineCount + lineIndexOfset - 1) / this._major) - Math.ceil(lineIndexOfset / this._major) + 1; while (this.$numbers.length < numberCount) { this.$numbers.push(VRuler_('.as-vruler-major-number')); } var numberElt; var number; var majorStartOfset = startOfset; if (lineIndexOfset > 0) { majorStartOfset += (this._major - lineIndexOfset % this._spacing) * this._spacing; } else { majorStartOfset += (this._major - (this._spacing + lineIndexOfset % this._spacing)) * this._spacing; } for (i = 0; i < numberCount; ++i) { number = (Math.ceil(lineIndexOfset / this._major) + i) * this._spacing * this._major; numberElt = this.$numbers[i]; if (numberElt.__cacheNumber__ != number) { numberElt.__cacheNumber__ = number; numberElt.innerHTML = number + ''; } numberElt.addStyle(this._valueFloat, majorStartOfset + this._major * i * this._spacing - 0.7 * 0.5 * fontSize + 'px') } while (this._viewingNumberCount < numberCount) { this.$numbers[this._viewingNumberCount++].addTo(this); } while (this._viewingNumberCount > numberCount) { this.$numbers[--this._viewingNumberCount].remove(); } }; VRuler.property = {}; VRuler.property.major = { set: function (value) { if (value > 0) { this._major = value; this.update(); } }, get: function () { return this._major; } }; VRuler.property.spacing = { set: function (value) { if (value > 0) { this._spacing = value; this.update(); } }, get: function () { return this._spacing; } }; VRuler.property.inverse = { set: function (value) { this._valueFloat = value ? 'bottom' : 'top'; this.update(); }, get: function () { return this._valueFloat == 'bottom'; } }; ACore["c" /* default */].install('vruler', VRuler); /* harmony default export */ var js_VRuler = (VRuler); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/hruler.css var hruler = __webpack_require__(110); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/HRuler.js var HRuler_ = ACore["c" /* default */]._; var HRuler_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function HRuler() { var self = this; this.$attachHook = HRuler_('attachhook').on('error', function () { this.updateSize = self.update.bind(self); Dom["b" /* default */].addToResizeSystem(this); this.updateSize(); }).addTo(self); this.$lines = []; this.$numbers = []; this._viewingNumberCount = 0; this._viewingLineCount = 0; this._spacing = 10; this._major = 10; this.$measureTarget = null; this._valueFloat = 'left'; } HRuler.tag = 'hruler'; HRuler.render = function () { return HRuler_({ class: 'as-hruler' }); }; HRuler.prototype.measureElement = function (elt) { if (typeof elt == "string") elt = HRuler_$(elt); this.$measureTarget = elt; this.update(); }; HRuler.prototype.update = function () { var fontSize = this.getFontSize(); var measureBound; var bound = this.getBoundingClientRect(); var contentBound = { left: bound.left + 1, right: bound.right - 1, top: bound.top + 1, bottom: bound.bottom - 1, width: bound.width - 2, height: bound.height - 2 }; if (this.$measureTarget) { measureBound = this.$measureTarget.getBoundingClientRect(); } else { measureBound = contentBound; } var startOfset = (measureBound[this._valueFloat] - contentBound[this._valueFloat]) * (this.inverse ? -1 : 1) % this._spacing; if (startOfset < 0) startOfset += this._spacing; var lineIndexOfset = Math.round(((contentBound[this._valueFloat] - measureBound[this._valueFloat]) * (this.inverse ? -1 : 1) + startOfset) / this._spacing); var lineCount = Math.floor((contentBound.width - startOfset) / this._spacing) + 1; while (this.$lines.length < lineCount) { this.$lines.push(HRuler_('.as-hruler-line')); } var i; var lineElt; for (i = 0; i < lineCount; ++i) { lineElt = this.$lines[i]; if ((i + lineIndexOfset) % this._major == 0) { lineElt.addClass('major'); } else { lineElt.removeClass('major'); } lineElt.addStyle(this._valueFloat, startOfset + this._spacing * i - 0.5 + 'px'); } while (this._viewingLineCount < lineCount) { this.$lines[this._viewingLineCount++].addTo(this); } while (this._viewingLineCount > lineCount) { this.$lines[--this._viewingLineCount].remove(); } var numberCount = Math.floor((lineCount + lineIndexOfset - 1) / this._major) - Math.ceil(lineIndexOfset / this._major) + 1; while (this.$numbers.length < numberCount) { this.$numbers.push(HRuler_('.as-hruler-major-number')); } var numberElt; var number; var majorStartOfset = startOfset; if (lineIndexOfset > 0) { majorStartOfset += (this._major - lineIndexOfset % this._spacing) * this._spacing; } else { majorStartOfset += (this._major - (this._spacing + lineIndexOfset % this._spacing)) * this._spacing; } for (i = 0; i < numberCount; ++i) { number = (Math.ceil(lineIndexOfset / this._major) + i) * this._spacing * this._major; numberElt = this.$numbers[i]; if (numberElt.__cacheNumber__ != number) { numberElt.__cacheNumber__ = number; numberElt.innerHTML = number + ''; } numberElt.addStyle(this._valueFloat, majorStartOfset + this._major * i * this._spacing - 0.7 * 2.5 * fontSize + 'px') } while (this._viewingNumberCount < numberCount) { this.$numbers[this._viewingNumberCount++].addTo(this); } while (this._viewingNumberCount > numberCount) { this.$numbers[--this._viewingNumberCount].remove(); } }; HRuler.property = {}; HRuler.property.major = { set: function (value) { if (value > 0) { this._major = value; this.update(); } }, get: function () { return this._major; } }; HRuler.property.spacing = { set: function (value) { if (value > 0) { this._spacing = value; this.update(); } }, get: function () { return this._spacing; } }; HRuler.property.inverse = { set: function (value) { this._valueFloat = value ? 'right' : 'left'; this.update(); }, get: function () { return this._valueFloat == 'right'; } }; ACore["c" /* default */].install(HRuler); /* harmony default export */ var js_HRuler = (HRuler); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/IconSprite.js var IconSprite_ = ACore["c" /* default */]._; var IconSprite_$ = ACore["c" /* default */].$; function IconSprite() { this.$attachhook = IconSprite_('attachhook').addTo(this).on('error', this.eventHandler.attached); this.on('frame', this.eventHandler.frame); this._checkRootTimeout = 30; this.loop = true; } IconSprite.tag = 'iconsprite'; IconSprite.render = function () { return IconSprite_('sprite', true); }; /** * @type {IconSprite} */ IconSprite.eventHandler = {}; IconSprite.eventHandler.attached = function () { var thisAS = this; this._checkRootTimeout = 30; this.afterReady().then(function () { thisAS.width = thisAS.texture.naturalWidth; thisAS.height = thisAS.width; thisAS.frames = { type: 'grid', col: 1, row: thisAS.texture.naturalHeight / thisAS.texture.naturalWidth } thisAS.drawFrame(0); thisAS.play(); }); }; IconSprite.eventHandler.frame = function () { this._checkRootTimeout--; if (this._checkRootTimeout == 0){ if (this.isDescendantOf(document.body)){ this._checkRootTimeout = 30; } else{ this.stop(); this.remove(); } } }; ACore["c" /* default */].install(IconSprite); /* harmony default export */ var js_IconSprite = (IconSprite); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/linearcolorbar.css var linearcolorbar = __webpack_require__(112); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/LinearColorBar.js var LinearColorBar_ = ACore["c" /* default */]._; var LinearColorBar_$ = ACore["c" /* default */].$; var LinearColorBar_g = Svg["a" /* default */].ShareInstance._; var LinearColorBar_$g = Svg["a" /* default */].ShareInstance.$; var LinearColorBar_Design = { textHeight: 56, barHeight: 97, barBlockWidth: 79, barBlockMargin: 19, valueTextHeight: 70, valueStrokeWidth: 5, valueHeight: 99, valueWidth: 52, valueTripHeight: 32, height: 430, barY: 201 }; var SyleSheet = { '.as-linear-color-bar': { height: LinearColorBar_Design.height / LinearColorBar_Design.textHeight + 'em' }, '.as-linear-color-value-text': { 'font-size': LinearColorBar_Design.valueTextHeight / LinearColorBar_Design.textHeight + 'em' } }; buildCss(SyleSheet); function LinearColorBar() { this._indent = (Math.random() + '').replace(/[^0-9]/g, '_'); this._extendValue = 0; this._value = 0; this._valueText = ''; this.$valueText = LinearColorBar_$('.as-linear-color-value-text', this); this.$minValueText = LinearColorBar_$('.as-linear-color-min-value-text', this); this.$maxValueText = LinearColorBar_$('.as-linear-color-max-value-text', this); this.$background = LinearColorBar_$('svg.as-linear-color-background', this); this._attached = false; var thisBar = this; this.$attachhook = LinearColorBar_('attachhook').addTo(this).on('error', function () { thisBar._attached = true; Dom["b" /* default */].addToResizeSystem(this); this.requestUpdateSize(); }); this.$background.attr({ height: 0, width: 0, }); this.$attachhook.requestUpdateSize = this.redraw.bind(this); this.$defs = LinearColorBar_g('defs').addTo(this.$background); this.$gradient = LinearColorBar_g('linearGradient#gradient_' + this._indent) .attr({ x1: "0%", y1: "0%", x2: "100%", y2: "0%" }).addTo(this.$defs); this.$rect = LinearColorBar_g('rect.as-linear-color-bar-rect') .attr({ fill: 'url(#gradient_' + this._indent + ')' }) .addTo(this.$background); this.$splitLine = LinearColorBar_g('path.as-linear-color-split-line').addTo(this.$background) this.$valueArrow = LinearColorBar_g('path.as-linear-color-value-arrow').addTo(this.$background); this.colorMapping = 'rainbow'; } LinearColorBar.prototype.redraw = function () { var bBound = this.getBoundingClientRect(); var cWidth = bBound.width; var cHeight = bBound.height; var maxTextBound = this.$maxValueText.getBoundingClientRect(); var minTextBound = this.$minValueText.getBoundingClientRect(); var valueTextBound = this.$valueText.getBoundingClientRect(); var valueWidth = LinearColorBar_Design.valueWidth / LinearColorBar_Design.height * cHeight; var minValueX = valueWidth / 1.5; this.$minValueText.addStyle('left', Math.max((minValueX - minTextBound.width) / 2, 0) + 'px'); var maxValueX = (cWidth - LinearColorBar_Design.valueWidth) / (1 + this._extendValue); var extendX = cWidth - valueWidth / 1.5; var valueX = minValueX + this._value * (maxValueX - minValueX); this.$valueText.addStyle('left', valueX - valueTextBound.width / 2 + 'px'); this.$maxValueText.addStyle('left', maxValueX - maxTextBound.width / 2 + 'px'); var barY = LinearColorBar_Design.barY / LinearColorBar_Design.height * cHeight; var barHeight = LinearColorBar_Design.barHeight / LinearColorBar_Design.height * cHeight; this.$rect.attr({ x: '' + minValueX, y: '' + barY, width: extendX - minValueX + '', height: barHeight }); this.$background.attr({ height: cHeight + '', width: cWidth + '', viewBox: [0, 0, cWidth, cHeight].join(' ') }); var valueTripHeight = LinearColorBar_Design.valueTripHeight / LinearColorBar_Design.height * cHeight; var valueHeight = LinearColorBar_Design.valueHeight / LinearColorBar_Design.height * cHeight; this.$valueArrow .addStyle('stroke-width', LinearColorBar_Design.valueStrokeWidth / LinearColorBar_Design.height * cHeight + '') .attr('d', [ [ [valueX, barY], [valueX - valueWidth / 2, barY - valueTripHeight], [valueX - valueWidth / 2, barY - valueHeight], [valueX + valueWidth / 2, barY - valueHeight], [valueX + valueWidth / 2, barY - valueTripHeight] ] ].map(function (point, i) { return (i == 0 ? 'M' : 'L') + point.join(' ') }).join(' ') + 'Z'); var splitDistMin = (LinearColorBar_Design.barBlockWidth + LinearColorBar_Design.barBlockMargin) / LinearColorBar_Design.height * cHeight; var splitCounts = [100, 50, 20, 10, 5, 2, 1]; var splitDist = maxValueX - minValueX; var splitCount = 1; for (var i = 0; i < splitCounts.length; ++i) { splitDist = (maxValueX - minValueX) / splitCounts[i]; if (splitDist >= splitDistMin) { splitCount = splitCounts[i]; break; } } this.$splitLine.addStyle('stroke-width', LinearColorBar_Design.barBlockMargin / LinearColorBar_Design.height * cHeight + '') .attr({ d: Array(splitCount + 1).fill(0).map(function (u, i) { return 'M' + (maxValueX - i * splitDist) + ' ' + (barY - 1) + 'v' + (barHeight + 2); }).join(' ') }) }; LinearColorBar.prototype._updateGradient = function () { var barMax = 1 + this._extendValue; var gradientElt = this.$gradient.clearChild(); this._colorMapping.forEach(function (it) { LinearColorBar_g({ tag: 'stop', attr: { offset: (it.value <= 1 ? it.value / barMax * 100 : 100) + '%' }, style: { 'stop-color': it.color + '', 'stop-opacity': '1' } }).addTo(gradientElt); }); }; LinearColorBar.prototype.BUILDIN_COLORS_RANGE = { 'rainbow': [ { value: 0, color: 'red' }, { value: 1 / 6, color: 'orange' }, { value: 1 / 3, color: 'yellow' }, { value: 1 / 2, color: 'green' }, { value: 2 / 3, color: 'blue' }, { value: 5 / 6, color: 'indigo' }, { value: 1, color: 'violet' }, { value: Infinity, color: 'violet' } ], 'rainbow-invert': [ { value: 0, color: 'violet' }, { value: 1 / 6, color: 'indigo' }, { value: 1 / 3, color: 'blue' }, { value: 1 / 2, color: 'green' }, { value: 2 / 3, color: 'yellow' }, { value: 5 / 6, color: 'orange' }, { value: 1, color: 'red' }, { value: Infinity, color: 'violet' } ], 'performance': [ { value: 0, color: 'red' }, { value: 0.5, color: 'orange' }, { value: 1, color: 'green' }, { value: Infinity, color: 'green' } ], 'performance-invert': [ { value: 0, color: 'green' }, { value: 0.5, color: 'orange' }, { value: 1, color: 'red' }, { value: Infinity, color: 'red' } ] } LinearColorBar.tag = 'LinearColorBar'.toLowerCase(); LinearColorBar.render = function () { return LinearColorBar_({ class: 'as-linear-color-bar', child: [ 'svg.as-linear-color-background', '.as-linear-color-value-text', '.as-linear-color-min-value-text', '.as-linear-color-max-value-text' ] }); }; LinearColorBar.property = {}; LinearColorBar.property.valueText = { set: function (value) { value = value + ''; this._valueText = value; this.$valueText.clearChild().addChild(LinearColorBar_({ text: value })); }, get: function () { return this._valueText; } }; LinearColorBar.property.minValueText = { set: function (value) { value = value + ''; this._minValueText = value; this.$minValueText.clearChild().addChild(LinearColorBar_({ text: value })); }, get: function () { return this._valueText; } }; LinearColorBar.property.maxValueText = { set: function (value) { value = value + ''; this._maxValueText = value; this.$maxValueText.clearChild().addChild(LinearColorBar_({ text: value })); }, get: function () { return this._valueText; } }; LinearColorBar.property.value = { set: function (value) { this._value = value; }, get: function () { return this._value; } }; LinearColorBar.property.extendValue = { set: function (value) { this._extendValue = value; this._updateGradient(); }, get: function () { return this._extendValue; } }; LinearColorBar.property.colorMapping = { set: function (value) { if (typeof (value) == "string") value = this.BUILDIN_COLORS_RANGE[value]; this._colorMapping = value.slice(); this._colorMapping.sort(function (a, b) { return a.value - b.value; }) this._updateGradient(); }, get: function () { return this._colorMapping; } }; ACore["c" /* default */].install(LinearColorBar); /* harmony default export */ var js_LinearColorBar = (LinearColorBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/mediainput.css var mediainput = __webpack_require__(114); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/MediaInput.js var MediACore = new Dom["b" /* default */](); MediACore.install(ACore["c" /* default */]); var MediaInput_ = MediACore._; var MediaInput_$ = MediACore.$; function MediaInput_openFileDialog(props) { if (!MediACore.$fileInput) { MediACore.$fileInput = MediaInput_({ tag: 'input', class: 'vmedia-no-show', attr: { type: 'file' }, props: {} }).addTo(document.body); } props = props || {}; if (props.accept) { if (props.accept instanceof Array) MediACore.$fileInput.attr('accept', props.accept.join(',')); else MediACore.$fileInput.attr('accept', props.accept); } else { MediACore.$fileInput.attr('accept', null); } if (props.multiple) { MediACore.$fileInput.attr('multiple', 'true'); } else { MediACore.$fileInput.attr('multiple'); } MediACore.$fileInput.value = null; MediACore.$fileInput.click(); return new Promise(function (resolve, reject) { var finish = false; var body = MediaInput_$('body'); MediACore.$fileInput.once('change', function () { finish = true; resolve(Array.prototype.map.call(this.files, function (file) { return file; })); }); body.once('mousedown', function () { if (finish) return; resolve(); }); }); } function MediaInput() { this.$editor = MediaInput_$('.vmedia-media-input-text-container-editor', this); this.$editor.on('paste', this.eventHandler.paste); this.$editor.on('keydown', this.eventHandler.keydown, true); this.$addImagebtn = MediaInput_$('#add-image-btn', this); this.$addImagebtn.on('click', this.eventHandler.clickAddImage); this.$addFilebtn = MediaInput_$('#add-file-btn', this); this.$addFilebtn.on('click', this.eventHandler.clickAddFile); this.$imagePreviewContainer = MediaInput_$('.vmedia-media-input-imagepreview-container', this); this.on('dragover', this.eventHandler.dragOver); this.on('drop', this.eventHandler.drop); this.$sendbtn = MediaInput_$('#send-btn', this); this.$sendbtn.on('click', this.eventHandler.send); this.$toolLeftCtn = MediaInput_$('.vmedia-media-input-tool-container-left', this); this.$pluginContentCtn = MediaInput_$('.vmedia-media-input-plugin-content-container', this); this.snapData = []; this.snapDataHead = 0; this.sync = this.afterAttached(); this.snapText(); } MediaInput.tag = 'MediaInput'.toLowerCase(); MediaInput.render = function () { return MediaInput_({ class: 'vmedia-media-input', extendEvent: ['send', 'update', 'releaseplugin'], child: { class: 'vmedia-media-input-text-container', child: [{ class: 'vmedia-media-input-imagepreview-container', child: { class: 'vmedia-media-input-dropover', child: 'download-ico' } }, { class: 'vmedia-media-input-text-container-editor', attr: { contenteditable: 'true' }, on: {} }, { class: 'vmedia-media-input-text-container-buttons', attr: { title: 'Send' } }, { class: 'vmedia-media-input-tool-container', child: [ { class: 'vmedia-media-input-tool-container-left', child: [ { tag: 'button', attr: { id: 'add-image-btn', title: 'Add image' }, child: 'add-image-ico' }, { tag: 'button', attr: { id: 'add-file-btn', title: 'Add file' }, child: 'add-file-ico' }, ] }, { class: 'vmedia-media-input-tool-container-right', child: [{ tag: 'button', id: 'send-btn', attr: { title: 'Send' }, child: 'send-ico' }] } ], }, '.vmedia-media-input-plugin-content-container.blur', ] } }); }; MediaInput.prototype.addImage = function (url, title, data) { MediaInput_({ tag: 'imagepreview', attr: { title: title }, props: { data: data, imgSrc: url }, on: { pressremove: function () { this.selfRemove(); } } }).addTo(this.$imagePreviewContainer); }; MediaInput.prototype.addFile = function (url, ext, title, data) { MediaInput_({ tag: 'filepreview', attr: { title: title }, props: { fileSrc: url, ext: ext, data: data }, on: { pressremove: function () { this.selfRemove(); } } }).addTo(this.$imagePreviewContainer); }; MediaInput.property = {}; MediaInput.property.text = { set: function (value) { this.$editor.clearChild(); value = value || ''; var lines = value.split(/\r*\n/); if (lines.length < 1) return; this.$editor.addChild(document.createTextNode(lines[0])); lines.shift(); lines.forEach(function (line) { this.$editor.addChild(MediaInput_({ child: document.createTextNode(line) })); }.bind(this)); this.snapText(); }, get: function () { return this.getTextFromElements(this.$editor); } }; MediaInput.property.files = { get: function () { return Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) { return e._azar_extendTags && e._azar_extendTags.filepreview; }).map(function (e) { return e.data; }); } }; MediaInput.property.images = { get: function () { return Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) { return e._azar_extendTags && e._azar_extendTags.imagepreview; }).map(function (e) { return e.data; }); } }; // MediaInput.property MediaInput.property.plugins = { set: function (value) { this.sync = this.sync.then(this._dettachPlugins.bind(this, this._plugins)); if (value) { if (!(value instanceof Array)) value = [value]; this._plugins = value; this.addClass('has-plugin'); } else { //remove plugin this.sync.then(this._dettachPlugins.bind(this)); this._plugins = null; this.removeClass('has-plugin'); } this.sync = this.sync.then(this._attachPlugins.bind(this, this._plugins)); }, get: function () { return this._plugins || null; } } MediaInput.prototype.appendText = function (text) { var lastBr = null; if (this.$editor.childNodes && this.$editor.childNodes.length > 0 && this.$editor.childNodes[this.$editor.childNodes.length - 1].tagName && this.$editor.childNodes[this.$editor.childNodes.length - 1].tagName.toLowerCase() == 'br') { lastBr = this.$editor.childNodes[this.$editor.childNodes.length - 1]; } var lines = text.split(/\r?\n/); if (lastBr) { for (var i = 0; i < lines.length; ++i) { if (i > 0) this.$editor.addChild(MediaInput_('br')); var e = MediaInput_({ text: lines[i] }); this.$editor.addChild(e); } } else { for (var i = 0; i < lines.length; ++i) { if (i > 0) this.$editor.addChildBefore(MediaInput_('br'), lastBr); var e = MediaInput_({ text: lines[i] }); } this.$editor.addChildBefore(e, lastBr); } setSelectionRange(this.$editor, Infinity); }; MediaInput.prototype._attachPlugins = function (plugins) { if (!plugins) return; var self = this; plugins.forEach(function (plugin) { var oldContent = null; var $button = MediaInput_('button').addTo(self.$toolLeftCtn).on('click', function () { if (self._lastActivePlugin == plugin) return; self.releasePlugin(); self._lastActivePlugin = plugin; self.$pluginContentCtn.removeClass('blur'); self.$pluginContentCtn.clearChild(); if (plugin.getContent) { var newContent = plugin.getContent(self, MediaInput_, MediaInput_$, self.$pluginContentCtn, oldContent); oldContent = newContent; self.$pluginContentCtn.addChild(newContent); } var buttonBound = $button.getBoundingClientRect(); var rootBound = self.$pluginContentCtn.parentNode.getBoundingClientRect(); self.$pluginContentCtn.addStyle({ left: buttonBound.left + buttonBound.width / 2 - rootBound.left + 'px', bottom: rootBound.bottom - buttonBound.top + 'px' }); if (plugin.onActive) plugin.onActive(self); setTimeout(function () { var outListener = function (event) { if (EventEmitter["b" /* default */].hitElement(self.$pluginContentCtn, event)) { } else if (self._lastActivePlugin == plugin) { var prevented = true; if (plugin.onBlur) plugin.onBlur({ preventDefault: function () { prevented = false; } }); if (prevented) { self.releasePlugin(); MediaInput_$(document.body).off('click', outListener); } } else { MediaInput_$(document.body).off('click', outListener); } }; MediaInput_$(document.body).on('click', outListener); self.once('releaseplugin', function (ev) { if (ev.plugin == plugin) { MediaInput_$(document.body).off('click', outListener); } }); }, 100); }); var btnInners = plugin.getTriggerInner(self, MediaInput_, MediaInput_$, $button); if (!(btnInners instanceof Array)) btnInners = [btnInners]; btnInners.forEach(function (e) { if (typeof e == 'string') { e = MediaInput_({ text: e }); } $button.addChild(e); }); if (plugin.onAttached) plugin.onAttached(self); }); //todo return true; }; MediaInput.prototype.releasePlugin = function () { if (this._lastActivePlugin) { var plugin = this._lastActivePlugin; plugin.onDeactived && plugin.onDeactived(self); this.$pluginContentCtn.addClass('blur'); this.emit('releaseplugin', { target: this, plugin: plugin }, this); this._lastActivePlugin = null; } } MediaInput.prototype._dettachPlugins = function (plugins) { if (!plugins) return; var self = this; plugins.forEach(function (plugin) { if (plugin.onAttached) plugin.onAttached(self); }); //todo this._lastActivePlugin = null; return true; }; MediaInput.prototype.focus = function () { this.$editor.focus(); setSelectionRange(this.$editor, Infinity); }; MediaInput.prototype.clear = function () { Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) { return e._azar_extendTags && e._azar_extendTags.imagepreview; }).forEach(function (e) { e.selfRemove(); }); Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) { return e._azar_extendTags && e._azar_extendTags.filepreview; }).forEach(function (e) { return e.selfRemove(); }); this.$editor.innerHTML = ""; this.emit('update', { target: this }, this); }; MediaInput.prototype.escapeSpace = function (s) { return s.replace(/\s/g, ' '); }; MediaInput.prototype.unescapeSpace = function (s) { return s.replace(/ /g, ' '); }; MediaInput.prototype.getTextFromElements = function (element) { return getTextIn(element); // var self = this; // function visit(e, prevE) { // var ac = ''; // var isNewLine = false; // if (prevE && prevE.nodeType != Node.TEXT_NODE) { // if (prevE.tagName && prevE.tagName.toLowerCase() == 'br') { // isNewLine = true; // } // else if (Element.prototype.getComputedStyleValue.call(prevE, 'display') == 'block') { // isNewLine = true; // } // } // if (e.nodeType == Node.TEXT_NODE) { // if (isNewLine) ac += '\n'; // ac += e.data; // } // else { // var lastE = undefined; // for (var i = 0; i < e.childNodes.length; ++i) { // ac += visit(e.childNodes[i], i > 0 ? e.childNodes[i - 1] : null); // } // } // return ac; // } // return visit(element); }; MediaInput.prototype.getElementsFromText = function (text) { var newElements = text.split('\n') .map(function (text) { return document.createTextNode(text); }) .reduce(function (ac, cr, i, arr) { if (i > 0) ac.push(MediaInput_('br')); ac.push(cr); return ac; }, []); return newElements; }; // MediaInput.prototype.textOnly = function(e) { // if (e.nodeType == Node.TEXT_NODE) return e.textContent; // if (!e.tagName) return ''; // if (e.tagName.toLowerCase() == 'br') return '\n'; // return ($(e).getComputedStyleValue('display') == 'block' ? '\n' : '') + Array.prototype.map.call(e.childNodes, this.textOnly.bind(this)).join('') // }; MediaInput.prototype.makeTextOnly = function () { var self = this; var editor = this.$editor; Array.apply(null, this.$editor.childNodes).forEach(function (e) { e = MediaInput_$(e); if (e.nodeType == Node.TEXT_NODE) return; if (e.tagName) { var tagName = e.tagName.toLowerCase(); if (tagName == 'br') return; if (tagName.match(/img|script|svg|button|iframe|hr|video|canvas/)) { e.selfRemove(e); } if (tagName.match(/select|input|textarea/)) { e.selfReplace(document.createTextNode(e.value)); return; } var newElements = self.getElementsFromText(self.getTextFromElements(e)); var lastElement; if (e.getComputedStyleValue('display') == 'block') { lastElement = MediaInput_('br'); } else { lastElement = newElements.pop(); } e.selfReplace(lastElement); newElements.forEach(function (nE) { editor.addChildBefore(nE, lastElement); }); } }); this.emit('update', { target: editor }, this); }; MediaInput.eventHandler = {}; MediaInput.eventHandler.keydown = function (event) { if (event.key == "Enter") { if (!event.ctrlKey && !event.altKey && !event.shiftKey) { event.preventDefault(); this.eventHandler.send(event); this.snapText(); } } if (event.ctrlKey && event.key == 'z') { event.preventDefault(); this.undoText(); } if (event.ctrlKey && event.key == 'x') { setTimeout(this.snapText.bind(this), 100) } setTimeout(this.emit.bind(this, 'update', event, this), 1); }; MediaInput.eventHandler.send = function (event) { if (this.images.length == 0 && this.text.trim().length == 0 && this.files.length == 0) { return; } this.emit('send', event, this); this.snapText(); }; MediaInput.eventHandler.clickAddImage = function (event) { MediaInput_openFileDialog({ accept: 'image/*', multiple: true }).then(function (files) { if (!files) return; files.map(function (file) { var url = (window.URL || window.webkitURL).createObjectURL(file); this.addImage(url, file.name, { file: file, name: file.name, url: url }); this.emit('update', event, this); }.bind(this)); }.bind(this)); }; MediaInput.eventHandler.clickAddFile = function (event) { MediaInput_openFileDialog({ multiple: true }).then(function (files) { if (!files) return; files.map(function (file) { var url = (window.URL || window.webkitURL).createObjectURL(file); if (file.type.match(/^image/)) { this.addImage(url, file.name, { file: file, name: file.name, url: url }); } else { var p = file.name.split('.'); var ext = p.length > 1 ? p[p.length - 1] : ''; this.addFile(url, ext.toUpperCase(), file.name, { file: file, name: file.name, url: url }); } }.bind(this)); this.emit('update', event, this); }.bind(this)); }; MediaInput.eventHandler.dragOver = function (event) { event.preventDefault(); this._lastDragOver = new Date().getTime(); var currentDragOver = this._lastDragOver; if (!this.dragOver) { this.dragOver = true; this.addClass('dragover'); this.emit('update', event, this); } setTimeout(function () { this._waitDragFileOut if (this._lastDragOver == currentDragOver) { this.removeClass('dragover'); this.dragOver = false; this.emit('update', event, this); } }.bind(this), 200); }; MediaInput.eventHandler.drop = function (event) { event.preventDefault(); if (event.dataTransfer.items) { for (var i = 0; i < event.dataTransfer.items.length; i++) { if (event.dataTransfer.items[i].kind === 'file') { var file = event.dataTransfer.items[i].getAsFile(); if (!file.type && file.size % 4096 == 0) { //todo: folder } else { this.addSystemFile(file); this.emit('update', event, this); } } } } else { for (var i = 0; i < event.dataTransfer.files.length; i++) { var file = event.dataTransfer.files[i]; if (!file.type && file.size % 4096 == 0) { } else { this.addSystemFile(file); this.emit('update', event, this); } } } }; MediaInput.prototype.addSystemFile = function (file) { var url = (window.URL || window.webkitURL).createObjectURL(file); if (file.type.match(/^image/)) { this.addImage(url, file.name, { file: file, name: file.name, url: url }); } else { var p = file.name.split('.'); var ext = p.length > 1 ? p[p.length - 1] : ''; this.addFile(url, ext.toUpperCase(), file.name, { file: file, name: file.name, url: url }); } } MediaInput.eventHandler.paste = function (event) { var pasteData = (event.clipboardData || window.clipboardData); var beforePasteElement = []; var self = this; function visit(e, ac) { ac.push(e); if (e.childNodes) { for (var i = 0; i < e.childNodes.length; ++i) { visit(e.childNodes[i], ac) } } } visit(this.$editor, beforePasteElement); function relocalCursor() { var afterPasteElement = []; visit(self.$editor, afterPasteElement); var diffElts = afterPasteElement.filter(function (e) { return beforePasteElement.indexOf(e) < 0; }); if (diffElts.length > 0) { var last = diffElts.pop(); if (last.nodeType == Node.TEXT_NODE) { var range = document.createRange(); range.selectNodeContents(last); range.setStart(last, last.data.length); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } else { setSelectionRange(last, Infinity); } } } /**Safari bug */ if (pasteData && pasteData.items) { var items = pasteData.items; var isAddImage = false; for (var i = 0; i < items.length; i++) { if (items[i].type.indexOf('image') !== -1) { var blob = items[i].getAsFile(); var URLObj = (window.URL || window.webkitURL); var source = URLObj.createObjectURL(blob); var file = blobToFile(blob); var buffer = blobToArrayBuffer(blob).then(function (arrayBuffer) { this.addImage(source, 'Clipboard', { file: blob, name: null, url: source, blob: blob, arrayBuffer: arrayBuffer }); this.emit('update', event, this); }.bind(this)); isAddImage = true; this.emit('update', event, this); } } if (isAddImage) event.preventDefault(); requestAnimationFrame(function () { self.makeTextOnly(); relocalCursor(); }); } else { requestAnimationFrame(function () { var img = MediaInput_$('img', this.$editor, function (img) { if (img) { img = MediaInput_$(img); var source = img.getAttribute('src'); img.selfRemove(); Dom["b" /* default */].imageToCanvas(img).then(function (canvas) { var dataURI = canvas.toDataURL(); var blob = dataURItoBlob(dataURI); var file = blobToFile(blob); var buffer = blobToArrayBuffer(blob).then(function (arrayBuffer) { this.addImage(source, 'Clipboard', { dataURI: dataURI, file: blob, name: null, url: source, blob: blob, arrayBuffer: arrayBuffer }); this.emit('update', event, this); }.bind(this)); }.bind(this), function (e) { }).catch(function (e) { }); } }.bind(this)); this.makeTextOnly(); relocalCursor(); }.bind(this)); } }; MediaInput.prototype.undoText = function () { if (this.snapDataHead <= 1) return; this.snapDataHead--; if (this.snapDataHead <= 0) return; var newText = this.snapData[this.snapDataHead - 1]; this.text = newText; setSelectionRange(this.$editor, Infinity); }; MediaInput.prototype.redoText = function () { if (this.snapData.length <= this.snapDataHead) return; this.snapDataHead++; var newText = this.snapData[this.snapDataHead - 1]; var currentText = this.text; this.text = newText; setSelectionRange(this.$editor, Infinity); }; MediaInput.prototype.snapText = function () { while (this.snapData.length > this.snapDataHead && this.snapData.length > 0) this.snapData.pop(); var oldText = this.snapData[this.snapDataHead - 1]; var newText = this.text; if (newText == oldText) return; this.snapData.push(this.text); this.snapDataHead++; } function ImagePreview() { var res = MediaInput_({ extendEvent: 'pressremove', class: ['vmedia-media-input-imagepreview', 'vmedia-no-select'], child: ['img', 'times-ico'] }); res.$img = MediaInput_$('img', res); res.$timesIco = MediaInput_$('times-ico', res); res.$timesIco.on('click', function (event) { res.emit('pressremove', event, res); }); OOP["a" /* default */].drillProperty(res, res.$img, 'imgSrc', 'src'); return res; }; function FilePreview() { var res = MediaInput_({ extendEvent: 'pressremove', class: ['vmedia-media-input-filepreview', 'vmedia-no-select'], child: ['attachment-ico', 'times-ico'] }); res.$img = MediaInput_$('attachment-ico', res); OOP["a" /* default */].drillProperty(res, res.$img, 'ext'); res.$timesIco = MediaInput_$('times-ico', res); res.$timesIco.on('click', function (event) { res.emit('pressremove', event, res); }); return res; }; MediACore.creator.mediainput = MediaInput; MediACore.creator.imagepreview = ImagePreview; MediACore.creator.filepreview = FilePreview; MediACore.creator['send-ico'] = function () { return MediaInput_( [ '<svg class="send" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458">', ' <g transform="translate(0 -270.54)">', ' <path d="m0.64298 272.44 3.1712 9.5402 22.152 1.7742-22.152 1.7482-3.1712 9.4749 25.323-11.223z" />', ' </g>', '</svg>' ].join('') ); }; MediACore.creator['add-file-ico'] = function () { return MediaInput_( [ '<svg class="add-file" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458" xmlns="http://www.w3.org/2000/svg">', ' <g transform="translate(0 -270.54)">', ' <path d="m4.2431 295.69c-0.74006-0.0759-1.4136-0.33772-2.0047-0.77942-0.19965-0.14919-0.60549-0.55475-0.75233-0.75182-0.45099-0.60524-0.7154-1.2913-0.77699-2.016-0.01275-0.15007-0.01628-2.6111-0.01252-8.7468 0.0049-8.0504 0.0068-8.5472 0.03338-8.6986 0.0883-0.50391 0.22692-0.91024 0.44705-1.3104 0.52794-0.95973 1.452-1.6645 2.5119-1.9158 0.44319-0.10508 0.12729-0.0972 4.1445-0.10308 2.5538-4e-3 3.6864-1e-4 3.7795 0.0121 0.38853 0.0508 0.80777 0.24687 1.2709 0.59434 0.44102 0.33085 0.68272 0.55272 1.7227 1.5813 0.46507 0.45998 1.2812 1.2664 1.8136 1.7921 0.96172 0.94958 1.3847 1.3824 1.696 1.7354 0.61073 0.69257 0.92 1.2063 1.0441 1.7344 0.02613 0.11122 0.02875 0.28598 0.03409 2.2731 0.0047 1.7451 0.0018 2.1574-0.01502 2.178-0.01424 0.0174-0.10685 0.0394-0.2936 0.0699-0.45695 0.0745-1.0078 0.22363-1.4356 0.38862-0.10025 0.0387-0.1888 0.0663-0.19678 0.0613-0.0085-5e-3 -0.01461-0.7983-0.01475-1.9156-2.09e-4 -1.6438-0.0036-1.9208-0.0245-2.0096-0.06972-0.29578-0.28642-0.50043-0.63767-0.60222-0.32942-0.0955-0.31104-0.0947-2.4299-0.10482l-1.9437-9e-3 -0.12495-0.0442c-0.25474-0.0901-0.45899-0.26526-0.5666-0.48578-0.10853-0.22238-0.10356-0.127-0.10407-1.9994-4.63e-4 -1.7153-0.01031-2.1544-0.05446-2.4288-0.06935-0.43095-0.22893-0.69171-0.5027-0.82138l-0.10904-0.0516h-3.1807c-3.4262 0-3.27-4e-3 -3.5482 0.0835-0.68034 0.21325-1.1718 0.754-1.3329 1.4666l-0.0345 0.15261v8.5059c0 8.1045 0.0014 8.5125 0.02871 8.6468 0.08088 0.39719 0.25808 0.72858 0.53956 1.0091 0.28082 0.27984 0.576 0.44186 0.98191 0.53896 0.11389 0.0273 0.36156 0.0293 4.5294 0.0374l4.409 9e-3 0.02019 0.0402c0.0111 0.0221 0.07695 0.15943 0.14632 0.30521s0.17519 0.3518 0.23515 0.45783c0.14341 0.25357 0.43703 0.69284 0.61725 0.92343 0.0793 0.10148 0.14077 0.19003 0.13659 0.19679-0.0073 0.0118-9.9306 0.0132-10.046 1e-3z" />', ' <path transform="matrix(.26458 0 0 .26458 0 270.54)" d="m72.469 65.742v7.4062h-7.4062v7.2852h7.4062v7.2812h7.2793v-7.2812h7.3535v-7.2852h-7.3535v-7.4062zm24.948 11.119a21.371 21.371 0 0 1-21.371 21.371 21.371 21.371 0 0 1-21.371-21.371 21.371 21.371 0 0 1 21.371-21.371 21.371 21.371 0 0 1 21.371 21.371z" style="fill-rule:evenodd;" />', ' <path d="m17.256 283.76 1.921-0.47607-0.04725-4.2884c0-0.50159-0.29516-1.2441-1.0789-2.0168l-4.6989-4.6324c-0.73814-0.72769-1.5947-0.97084-2.1519-0.97084h-7.0235c-2.1533 0.0144-3.4601 2.6226-3.4778 3.4778v17.284c0 2.121 2.2409 3.5346 3.5346 3.5346h10.058l-1.1146-1.9305h-8.6658c-1.1271 0-1.8503-1.1115-1.8503-1.8503v-16.867c0-1.0721 1.1373-1.6977 1.6977-1.6977h6.2175c0.43142 0 0.8103 0.28958 0.8103 1.1742v3.714c0 0.24768 0.36442 0.90967 0.90968 0.90967h3.2537c1.2453 0 1.6905 0.32876 1.6905 1.1613z" />', ' </g>', '</svg>' ].join('') ); }; MediACore.creator['add-image-ico'] = function () { return MediaInput_( [ '<svg class="add-image" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="absol/src/HTML5/Elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">', ' <g transform="translate(0 -270.54)">', ' <path d="m24.73 288.69a5.9808 5.9808 0 0 1-5.9808 5.9808 5.9808 5.9808 0 0 1-5.9808-5.9808 5.9808 5.9808 0 0 1 5.9808-5.9808 5.9808 5.9808 0 0 1 5.9808 5.9808zm1.503-0.037a7.5843 7.5843 0 0 1-7.5843 7.5843 7.5843 7.5843 0 0 1-7.5843-7.5843 7.5843 7.5843 0 0 1 7.5843-7.5843 7.5843 7.5843 0 0 1 7.5843 7.5843z" style="fill-rule:evenodd;fill:#414141"/>', ' <path d="m17.869 284.42v3.4127h-3.4081v1.6066h3.4081v3.438h1.6061v-3.438h3.4432v-1.6066h-3.4432v-3.4127z" style="fill-rule:evenodd;fill:#414141"/>', ' <path d="m24.614 281.39v-6.1305c0-1.6957-1.2841-2.6602-2.6602-2.6602h-18.412c-1.4547 0-2.7249 1.0223-2.7249 2.7249v14.986c0 1.2346 0.99768 2.6028 2.586 2.586h6.9542c-0.36184-0.63963-0.51495-1.0286-0.69323-1.6506h-6.4562c-0.29938 0-0.72246-0.40379-0.72246-0.72247v-1.8082l6.0428-6.7569 2.0296 2.0129 0.9605-1.3029-2.9734-3.1488-5.9885 6.7736v-11.426c0-0.24935 0.30766-0.63476 0.63476-0.63476h18.934c0.3592 0 0.84357 0.19284 0.84357 0.84357v5.2285c0.61147 0.22444 1.1564 0.59412 1.6454 1.0858z" style="fill:#414141"/>', ' <circle cx="17.869" cy="277.61" r="1.6891" style="fill-rule:evenodd;fill:#414141"/>', ' </g>', '</svg>' ].join('') ); }; MediACore.creator['attachment-ico'] = function () { return MediaInput_( [ '<svg class="attachment" width="1024" height="1024" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" >', ' <path d="M145.6 0C100.8 0 64 35.2 64 80v862.4C64 987.2 100.8 1024 145.6 1024h732.8c44.8 0 81.6-36.8 81.6-81.6V324.8L657.6 0h-512z" fill="#8199AF"/>', ' <path d="M960 326.4v16H755.2s-100.8-20.8-99.2-108.8c0 0 4.8 92.8 97.6 92.8H960z" fill="#617F9B"/>', ' <path d="M657.6 0v233.6c0 25.6 17.6 92.8 97.6 92.8H960L657.6 0z" fill="#fff"/>', ' <path d="m491.77 770.31c17.6-19.2 17.6-48 0-67.2s-48-17.6-65.6 0l-147.2 147.2c-17.6 17.6-17.6 48 0 65.6s48 19.2 65.6 0l91.2-89.6c4.8-4.8 4.8-12.8 0-17.6s-14.4-6.4-19.2 0l-57.6 56c-8 8-19.2 8-27.2 0s-8-20.8 0-28.8l56-56c20.8-20.8 54.4-20.8 75.2 0s20.8 54.4 0 75.2l-89.6 89.6c-33.6 33.6-88 33.6-123.2 0-33.6-33.6-33.6-88 0-121.6l147.2-147.2c33.6-33.6 89.6-33.6 123.2 0s33.6 88 0 121.6l-14.4 14.4c-1.6-14.4-6.4-28.8-16-41.6z" style="fill:#fff"/>', ' <path d="m130.09 23.864h504.75v182.93h-545.65v-140.08c0.34155-16.845 13.608-42.414 40.9-42.847z" style="fill-opacity:.29648;fill-rule:evenodd;fill:#fff"/>', '</svg>' ] .join('') ); }; MediACore.creator['attachment-ico'].property = { ext: { set: function (value) { value = value || ''; if (this.$ext) { this.$ext.selfRemove(); } this.$ext = Svg["a" /* default */].ShareInstance._('<text text-anchor="middle" x="321.39" y="170" font-size="145.76" style="fill:white;" >' + value + '</text>').addTo(this); }, get: function () { return this._ext || ''; } } }; MediACore.creator['times-ico'] = function () { return MediaInput_( [ '<svg class="times" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458" xmlns="http://www.w3.org/2000/svg">', ' <g transform="translate(0 -270.54)">', ' <path d="m7.7013 276.49 5.4832 5.4832 5.5494-5.5494 1.7874 1.7874-5.5291 5.5291 5.4957 5.4957-1.754 1.754-5.5124-5.5124-5.5542 5.5542-1.7623-1.7623 5.5375-5.5375-5.5208-5.5208zm17.103 7.3351a11.558 11.558 0 0 1-11.558 11.558 11.558 11.558 0 0 1-11.558-11.558 11.558 11.558 0 0 1 11.558-11.558 11.558 11.558 0 0 1 11.558 11.558z" style="fill-rule:evenodd;"/>', ' </g>' ].join('') ); }; MediACore.creator['download-ico'] = function () { return MediaInput_( [ '<svg class="download" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">', ' <g transform="translate(0,-197)">', ' <path d="m44.888 209.14h13.982c1.1087 0.0459 2.2328 0.74137 2.317 2.3612v23.694h13.622c1.9742-0.18801 3.004 2.6244 1.9175 4.1118l-23.469 23.918c-0.876 0.77477-1.9993 0.77232-2.9362 0l-23.559-24.009c-0.86532-1.0422 0.11658-4.1953 2.3821-4.2047h13.268v-22.939c-0.08167-1.1772 0.78292-2.9507 2.4768-2.9312z" style="fill:#00c3e5"/>', ' <path d="m86.97 276.99a3.5027 3.5696 0 0 1-3.5027 3.5696 3.5027 3.5696 0 0 1-3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027 3.5696zm-12.768 0a3.5027 3.5696 0 0 1-3.5027 3.5696 3.5027 3.5696 0 0 1-3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027 3.5696zm-60.003-16.135h24.609c9.1206 13.508 17.573 12.942 26.609 0h23.839c2.8529 5e-3 3.5087 2.3205 3.4679 3.8227v18.953c0.04867 1.3083-1.5145 2.9901-2.7505 2.9832h-76.253c-1.049 0.0441-2.6554-1.4851-2.6306-3.1451l-1.56e-4 -18.792c0.0024-1.3549 0.50958-3.7927 3.1091-3.8227z" style="fill-rule:evenodd;fill:#00c3e5"/>', ' </g>', '</svg>' ].join('') ); }; MediACore.creator['plus-ico'] = function () { return MediaInput_( '<svg class="_7oal" height="24" width="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><polygon points="-6,30 30,30 30,-6 -6,-6 "></polygon><path d="m18,11l-5,0l0,-5c0,-0.552 -0.448,-1 -1,-1c-0.5525,0 -1,0.448 -1,1l0,5l-5,0c-0.5525,0 -1,0.448 -1,1c0,0.552 0.4475,1 1,1l5,0l0,5c0,0.552 0.4475,1 1,1c0.552,0 1,-0.448 1,-1l0,-5l5,0c0.552,0 1,-0.448 1,-1c0,-0.552 -0.448,-1 -1,-1m-6,13c-6.6275,0 -12,-5.3725 -12,-12c0,-6.6275 5.3725,-12 12,-12c6.627,0 12,5.3725 12,12c0,6.6275 -5.373,12 -12,12" ></path></g></svg>' ); }; ACore["c" /* default */].install(MediaInput); /* harmony default export */ var js_MediaInput = (MediaInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/messageinput.css var messageinput = __webpack_require__(116); // CONCATENATED MODULE: ./node_modules/absol/src/Input/keyboard.js function isFnKey(name) { return name.match(/^[fF]([2-9]|(1([0-2]?)))$/) } function isSpaceKey(name) { return name === ' ' || name.match(/^[sS]pace$/); } function isCtrlKey(name) { return name.match(/(^([cC]ontrol)|ctrl)$/); } function isAltKey(name) { return name.match(/^[aA]lt$/); } function isShiftKey(name) { return name.match(/^[sS]hift$/); } function isMetaKey(name) { return name.toLowerCase().match(/^(command|windows|meta)$/); } /*** * * @param {string} text * @return {string} */ function normalizeKeyBindingIdent(text) { var keys = text.trim().toLowerCase().split(/[-+\s_.]+/) .filter(function (w) { return w.length > 0; }); var values = { meta: 1, ctrl: 2, alt: 3, shift: 4 }; keys.sort(function (a, b) { var va, vb; va = values[a] || 100; vb = values[b] || 100; return va - vb; }); return keys.join('-'); } /*** * * @param {KeyboardEvent} event * @return {string} */ function keyboardEventToKeyBindingIdent(event) { var keys = []; if (event.metaKey) { keys.push('meta'); } if (event.ctrlKey) keys.push('ctrl'); if (event.altKey) keys.push('alt'); if (event.shiftKey) keys.push('shift'); if (isSpaceKey(event.key)) { keys.push('space'); } else if (isFnKey(event.key)) { keys.push(event.key.toLowerCase()) } else if (!isMetaKey(event.key) && !isAltKey(event.key) && !isCtrlKey(event.key) && !isShiftKey(event.key)) keys.push(event.key.toLowerCase()); return keys.join('-'); } // CONCATENATED MODULE: ./node_modules/absol-acomp/js/MessageInput.js var MessageInput_ = ACore["c" /* default */]._; var MessageInput_$ = ACore["c" /* default */].$; var MessageInput_$$ = ACore["c" /* default */].$$; /*** * * @typedef {{text:string, desc: string, img?:string, file?:string}|string} MessageInputQuote */ var iconCatalogCaches = {}; var MODE_NEW = 0; var MODE_EDIT = 1; var MessageInput_isMobile = BrowserDetector["a" /* default */].isMobile; /*** * @extends AElement * @constructor */ function MessageInput() { this._cmdRunner = new AppPattern_CMDRunner(this); this._keyMaps = {}; this._plugins = []; this._mode = MODE_NEW;//edit this._editingText = ""; prepareIcon(); /** * @type {import('./PreInput').default} */ this.$preInput = MessageInput_$('preinput', this); this.$preInput.on('change', this.eventHandler.preInputChange) .on('keyup', this.eventHandler.preInputKeyUp) .on('keydown', this.eventHandler.preInputKeyDown) .on('pasteimg', this.eventHandler.preInputPasteImg) .on('focus', this.eventHandler.preInputFocus) .on('blur', this.eventHandler.preInputBlur); // //every can make size change this._imageFiles = []; this._files = []; this._latBound = {}; this.$quote = MessageInput_$('messagequote.as-message-input-quote', this) .on('pressremove', this.eventHandler.clickQuoteRemoveBtn); this.$right = MessageInput_$('.as-message-input-right', this); this.$attachmentCtn = MessageInput_$('.as-message-input-attachment-ctn', this); this.$emojiBtn = MessageInput_$('.as-message-input-plugin-emoji', this) .on('click', this.eventHandler.clickEmojiBtn); this.$fileBtn = MessageInput_$('.as-message-input-plugin-file', this) .on('click', this.openFileDialog.bind(this)); this.$attachmentAddBtn = MessageInput_$('.as-message-input-attachment-add-btn', this) .on('click', this.openFileDialog.bind(this)); this.$sendBtn = MessageInput_$('.as-message-input-plugin-send', this) .on('click', this.notifySend.bind(this)); this.$cancelBtn = MessageInput_$('.as-message-input-plugin-cancel', this) .on('click', this.notifyCancel.bind(this)); this.$emojiPickerCtn = MessageInput_('.as-message-input-external-tools-popup'); this.$emojiPicker = MessageInput_('emojipicker').addTo(this.$emojiPickerCtn) .on('pick', this.eventHandler.pickEmoji); this.$attachhook = MessageInput_('attachhook').addTo(this).on('error', this.notifySizeChange.bind(this)); this.on('drop', this.eventHandler.drop) .on('dragover', this.eventHandler.dragover); this.autoSend = false; /*** * * @type {MessageInputQuote|null} */ this.quote = null; } MessageInput.MODE_EDIT = MODE_EDIT; MessageInput.MODE_NEW = MODE_NEW; MessageInput.iconAssetRoot = (function () { if (location.hostname.match(/^.+\.absol.cf$/)) return 'https://absol.cf/exticons/vivid'; return '/vivid_exticons'; })(); MessageInput.tag = 'MessageInput'.toLowerCase(); MessageInput.render = function (data) { data = data || {}; data.iconAssetRoot = data.iconAssetRoot || MessageInput.iconAssetRoot; return MessageInput_({ attr: { 'data-icon-asset-root': MessageInput.iconAssetRoot }, class: 'as-message-input', extendEvent: ['sendtext', 'sendimage', 'sendfile', 'sendquote', 'cancel', 'change', 'sizechange', 'send'], child: [ { class: 'as-message-input-right', child: [ { tag: 'button', class: ['as-message-input-plugin-btn', 'as-message-input-plugin-file'], child: 'span.mdi.mdi-attachment.mdi-rotate-90' }, { tag: 'button', class: ['as-message-input-plugin-btn', 'as-message-input-plugin-send'], child: 'span.mdi.mdi-send' }, { tag: 'button', class: ['as-message-input-plugin-btn', 'as-message-input-plugin-cancel'], child: 'span.mdi.mdi-close' } ] }, { class: 'as-message-input-pre-ctn', child: [ 'messagequote.as-message-input-quote.as-removable.as-shorten-text', { class: 'as-message-input-emoji-btn-ctn', child: { tag: 'button', class: ['as-message-input-plugin-btn', 'as-message-input-plugin-emoji'], child: 'span.mdi.mdi-emoticon-happy-outline' } }, { class: ['as-message-input-attachment-ctn', 'as-bscroller'], child: [{ tag: 'button', class: 'as-message-input-attachment-add-btn', child: [ 'span.mdi.mdi-arrow-down-bold.as-message-input-attachment-add-btn-drop', { tag: 'span', class: 'as-message-input-attachment-add-btn-plus', child: { text: "+" } } ] }] }, 'preinput.as-message-input-pre.absol-bscroller' ] } ] }); }; MessageInput.prototype.toggleEmoji = function () { if (this.containsClass('as-message-input-show-emoji')) this.closeEmoji(); else this.showEmoji(); }; MessageInput.prototype.showEmoji = function () { if (this.containsClass('as-message-input-show-emoji')) return; var value = this.$preInput.value; this._lastInputSelectPosion = this.$preInput.getSelectPosition() || { start: value.length, end: value.length }; this.addClass('as-message-input-show-emoji'); this.addChild(this.$emojiPickerCtn); var thisMi = this; setTimeout(function () { MessageInput_$(document.body).on('mousedown', thisMi.eventHandler.mousedownOutEmoji); }, 100); this.$preInput.focus(); }; MessageInput.prototype.notifyChange = function () { this.emit('change', { name: 'change', target: this }, this); if (this.autoSend) { if (this.files.length > 0 || this.images.length > 0) this.notifySend(); } }; MessageInput.prototype.notifySend = function () { var eventData = { imageRemovePrevented: false, fileRemovePrevented: false, textRemovePrevented: false, quoteRemovePrevented: false, target: this, files: this.files, images: this.images, text: this.text }; if (eventData.files.length > 0) { this.emit('sendfile', Object.assign(eventData, { type: 'sendfile', preventDefault: function () { this.fileRemovePrevented = true; } }), this); } if (eventData.images.length > 0) { this.emit('sendimage', Object.assign(eventData, { type: 'sendimage', preventDefault: function () { this.imageRemovePrevented = true; } }), this); } if ((typeof this.quote === "string") || this.quote) { this.emit('sendquote', Object.assign(eventData, { type: 'sendquote', preventDefault: function () { this.quoteRemovePrevented = true; } }), this); } if (this.files.length > 0 || eventData.images.length > 0 || eventData.text || ((typeof this.quote === "string") || this.quote)) { if (eventData.text) this.$preInput.focus(); this.emit('send', Object.assign(eventData, { type: 'send', preventDefault: function () { this.imageRemovePrevented = true; this.fileRemovePrevented = true; this.imageRemovePrevented = true; this.quoteRemovePrevented = true; } }), this); } if (!eventData.fileRemovePrevented) this.files = []; if (!eventData.imageRemovePrevented) this.images = []; if (!eventData.textRemovePrevented) this.text = ''; if (!eventData.quoteRemovePrevented) this.quote = null; }; MessageInput.prototype.notifyCancel = function () { this.emit('cancel', { type: 'cancel', name: 'send', target: this, clearAllContent: this.clearAllContent.bind(this) }, this); }; MessageInput.prototype.clearAllContent = function () { this.text = ''; this.quote = null; this.files = []; this.images = []; }; MessageInput.prototype.focus = function () { var value = this.$preInput.value; var range = this.$preInput.getSelectPosition() || { start: value.length, end: value.length }; this.$preInput.focus(); this.$preInput.applyData(value, range); }; MessageInput.prototype.blur = function () { this.$preInput.blur(); }; MessageInput.prototype._updateAttachmentClass = function () { if (this._imageFiles.length + this._files.length) { this.addClass("as-has-attachment"); } else { this.removeClass("as-has-attachment"); } }; MessageInput.prototype.addImageFiles = function (imageFiles, urls) { var thisMi = this; Array.prototype.forEach.call(imageFiles, function (file, index) { thisMi._imageFiles.push(file); var src; if (urls) { src = urls[index]; } if (!src) { src = URL.createObjectURL(file); } var itemElt = MessageInput_({ class: ['as-message-input-attach-preview', 'as-image'], attr: { title: file.name }, child: [ { class: 'as-message-input-attach-preview-image', style: { backgroundImage: 'url(' + src + ')' } }, { tag: 'button', class: 'as-message-input-attach-preview-close-btn', child: 'span.mdi.mdi-close', attr: { title: 'remove' }, on: { click: function () { thisMi._imageFiles = thisMi._imageFiles.filter(function (it) { return it !== file; }); itemElt.remove(); thisMi._updateAttachmentClass(); thisMi.notifySizeChange(); thisMi.notifyChange(); } } }, { class: ['as-message-input-attach-preview-name'], child: { text: file.name } } ] }).addTo(thisMi.$attachmentCtn); thisMi.$attachmentCtn.addChildBefore(itemElt, thisMi.$attachmentAddBtn); }); this._updateAttachmentClass(); this.notifySizeChange(); }; MessageInput.prototype.addFiles = function (files) { var thisMi = this; Array.prototype.forEach.call(files, function (file, index) { thisMi._files.push(file); MessageInput.iconSupportAsync.then(function (ExtensionIcons) { var src; var ext = file.name.split('.').pop().toLowerCase(); if (ExtensionIcons.indexOf(ext) > 0) { src = MessageInput.iconAssetRoot + '/' + ext + '.svg' } else { src = MessageInput.iconAssetRoot + '/' + 'default' + '.svg' } var itemElt = MessageInput_({ class: ['as-message-input-attach-preview', 'as-file'], attr: { title: file.name }, child: [ { tag: 'img', class: 'as-message-input-attach-preview-file', props: { src: src } }, { tag: 'button', class: 'as-message-input-attach-preview-close-btn', child: 'span.mdi.mdi-close', attr: { title: 'remove' }, on: { click: function () { thisMi._files = thisMi._files.filter(function (it) { return it !== file; }); itemElt.remove(); thisMi._updateAttachmentClass(); thisMi.notifySizeChange(); thisMi.notifyChange(); } } }, { class: 'as-message-input-attach-preview-name', child: { text: file.name } } ] }); thisMi.$attachmentCtn.addChildBefore(itemElt, thisMi.$attachmentAddBtn); }); }); this._updateAttachmentClass(); thisMi.notifySizeChange(); }; MessageInput.prototype.closeEmoji = function () { if (!this.containsClass('as-message-input-show-emoji')) return; this.removeClass('as-message-input-show-emoji'); this.removeChild(this.$emojiPickerCtn); MessageInput_$(document.body).off('mousedown', this.eventHandler.mousedownOutEmoji); }; MessageInput.prototype.openFileDialog = function () { var thisMi = this; openFileDialog({ multiple: true }).then(function (file) { if (!thisMi.autoSend) thisMi.$preInput.focus(); thisMi.handleAddingFileByType(file); }); }; MessageInput.prototype.handleAddingFileByType = function (files) { if (files.length > 0) { var imageFiles = []; var otherFiles = []; var file; for (var i = 0; i < files.length; ++i) { file = files[i]; if (!!file.type && file.type.match && file.type.match(/^image\//)) { imageFiles.push(file); } else { otherFiles.push(file); } } this.addImageFiles(imageFiles); this.addFiles(otherFiles); this.notifyChange(); } }; MessageInput.prototype.notifySizeChange = function () { var bound = this.getBoundingClientRect(); if (this._latBound.width != bound.width || this._latBound.height != bound.height) { this._latBound.width = bound.width; this._latBound.height = bound.height; this.emit('sizechange', { name: 'sizechange', bound: bound, target: this }, this); } }; MessageInput.prototype.addPlugin = function (option) { var plugin = new this.PluginConstructor(this, option); this._plugins.push(plugin); this.addStyle('--plugin-buttons-width', this._plugins.length * 45 + 'px'); return plugin; }; /*** * * @param {{name?:string, exec:function(_this:MessageInput):void, keyBiding?:string}} option */ MessageInput.prototype.addCommand = function (option) { option.name = option.name || randomIdent(20); this._cmdRunner.add(option.name, option.exec); if (option.keyBiding && option.keyBiding.trim) { var keyBindingIdent = normalizeKeyBindingIdent(option.keyBiding); this._keyMaps[keyBindingIdent] = option.name; } }; MessageInput.prototype.exeCmd = function (name) { var args = Array.prototype.slice.call(arguments); args[0] = this; args.unshift(name); this._cmdRunner.invoke.apply(this._cmdRunner, args); }; MessageInput.prototype._updateQuote = function () { this.$quote.data = this._quote; if (this._quote) this.addClass('as-has-quote'); else this.removeClass('as-has-quote'); this.notifySizeChange(); }; /** * @type {MessageInput} */ MessageInput.eventHandler = {}; MessageInput.eventHandler.preInputChange = function (event) { var text = this.$preInput.value; if (text.length > 0) { this.addClass('as-has-text'); } else { this.removeClass('as-has-text'); } if (text === this._editingText) { this.removeClass('as-text-changed'); } else { this.addClass('as-text-changed'); } this.notifySizeChange(); this.notifyChange(); }; MessageInput.eventHandler.preInputKeyDown = function (event) { if (!(event.shiftKey || event.ctrlKey || event.altKey) && event.key === 'Enter') { this.notifySend(); event.preventDefault(); } else if ((event.shiftKey || event.ctrlKey || event.altKey) && event.key === 'Enter') { event.preventDefault(); var text = this.$preInput.value; var selectedPos = this.$preInput.getSelectPosition(); var newText = text.substr(0, selectedPos.start) + '\n' + text.substr(selectedPos.end); this.$preInput.applyData(newText, selectedPos.start + 1); this.notifySizeChange(); this.$preInput.commitChange(newText, selectedPos.start + 1); } else if (event.key === "Escape" && this._mode === MODE_EDIT) { this.notifyCancel(); event.preventDefault(); } var keyBindingIdent = keyboardEventToKeyBindingIdent(event); if (this._keyMaps[keyBindingIdent]) { event.preventDefault(); this.exeCmd(this._keyMaps[keyBindingIdent]); } setTimeout(this.notifySizeChange.bind(this), 1); }; MessageInput.eventHandler.preInputKeyUp = function (event) { var value = this.$preInput.value; this._lastInputSelectPosion = this.$preInput.getSelectPosition() || { start: value.length, end: value.length }; this.notifySizeChange(); }; MessageInput.eventHandler.preInputPasteImg = function (event) { if (this._mode == 'edit') return; this.addImageFiles(event.imageFiles, event.urls); this.notifyChange(); }; MessageInput.eventHandler.preInputFocus = function () { this.addClass('as-focus'); }; MessageInput.eventHandler.preInputBlur = function () { this.removeClass('as-focus'); }; MessageInput.eventHandler.clickEmojiBtn = function () { this.toggleEmoji(); }; MessageInput.eventHandler.mousedownOutEmoji = function (event) { if (EventEmitter["b" /* default */].hitElement(this.$emojiPicker, event) || EventEmitter["b" /* default */].hitElement(this.$emojiBtn, event)) return; this.closeEmoji(); }; MessageInput.eventHandler.pickEmoji = function (event) { var text = this.$preInput.value; var newText = text.substr(0, this._lastInputSelectPosion.start) + event.key + text.substr(this._lastInputSelectPosion.end); var selected = this._lastInputSelectPosion; var newOffset = selected.start + event.key.length; this._lastInputSelectPosion = { start: newOffset, end: newOffset }; this.$preInput.focus(); this.$preInput.applyData(newText, newOffset); this.$preInput.commitChange(newText, newOffset); this.notifySizeChange(); this.$preInput.focus();//older firefox version will be lost focus // this.notifyChange();//not need }; MessageInput.eventHandler.dragover = function (event) { event.preventDefault(); this.addClass('as-drag-hover'); this.notifySizeChange(); if (this._hoverTimeout > 0) clearTimeout(this._hoverTimeout); var thisMi = this; this._hoverTimeout = setTimeout(function () { thisMi._hoverTimeout = -1; thisMi.removeClass('as-drag-hover'); thisMi.notifySizeChange(); }, 200); //todo: }; MessageInput.eventHandler.drop = function (event) { event.preventDefault(); var imageFiles = []; var otherFiles = []; if (event.dataTransfer.items) { for (var i = 0; i < event.dataTransfer.items.length; i++) { if (event.dataTransfer.items[i].kind === 'file') { var file = event.dataTransfer.items[i].getAsFile(); if (!file.type && file.size % 4096 == 0) { //todo: folder } else { if (!!file.type && file.type.match && file.type.match(/^image\//)) { imageFiles.push(file); } else { otherFiles.push(file); } } } } } else { for (var i = 0; i < event.dataTransfer.files.length; i++) { var file = event.dataTransfer.files[i]; if (!file.type && file.size % 4096 == 0) { } else { if (!!file.type && file.type.match && file.type.match(/^image\//)) { imageFiles.push(file); } else { otherFiles.push(file); } } } } this.addImageFiles(imageFiles); this.addFiles(otherFiles); this.notifyChange(); }; MessageInput.eventHandler.clickQuoteRemoveBtn = function () { this.quote = null; this.notifyChange(); } MessageInput.property = {}; MessageInput.property.files = { set: function (value) { MessageInput_$$('.as-file', this.$attachmentCtn).forEach(function (elt) { elt.remove(); }); value = value || []; this._files = []; this.addFiles(value); }, get: function () { return this._files; } }; MessageInput.property.images = { set: function (value) { MessageInput_$$('.as-image', this.$attachmentCtn).forEach(function (elt) { elt.remove(); }); value = value || []; this._imageFiles = []; this.addImageFiles(value); }, get: function () { return this._imageFiles; } }; MessageInput.property.text = { set: function (text) { this.$preInput.value = '' + text; if (text.length > 0) { this.addClass('as-has-text'); } else { this.removeClass('as-has-text'); } if (this._mode === MODE_EDIT) { this._editingText = text; } this.removeClass('as-text-changed'); }, get: function () { return this.$preInput.value; } }; /** * @type {MessageInput} */ MessageInput.property.mode = { set: function (value) { value = value || MODE_NEW; if (value === MODE_EDIT || (value.toLowerCase && value.toLowerCase() === 'edit')) { this.addClass('as-mode-edit'); value = MODE_EDIT; this._editingText = this.$preInput.value; } else { value = MODE_NEW; this._editingText = ''; this.removeClass('as-mode-edit'); } this.removeClass('as-text-changed'); this._mode = value; }, get: function () { return this._mode === MODE_EDIT ? 'edit' : 'new'; } }; MessageInput.property.autoSend = { set: function (value) { if (value) { this.addClass('as-auto-send'); } else { this.removeClass('as-auto-send'); } }, get: function () { return this.containsClass('as-auto-send'); } }; MessageInput.property.quote = { set: function (quote) { this._quote = quote; this._updateQuote(); }, get: function () { return this._quote; } } ACore["c" /* default */].install(MessageInput); /* harmony default export */ var js_MessageInput = (MessageInput); var urlRex = /^(firefox|opera|chrome|https|http|wss|ws):\/\/[^\s]+$/; function parseMessage(text, data) { data = data || {}; data.emojiAssetRoot = data.emojiAssetRoot || js_EmojiPicker.assetRoot; data.staticSize = data.staticSize || 20; data.animSize = data.animSize || 60; var textLines = text.split(/\r?\n/); var lines = textLines.map(function (textLine) { var longTokenTexts = textLine.split(/\s/); var tokenGroups = longTokenTexts.map(function (longTokenText, longTokenIndex) { var tokens = []; if (longTokenIndex > 0) tokens.push({ type: 'text', value: ' ' }); var emojiKey, emojiKeyTemp; var subIndex, subIndexTemp; var leftToken; var found; var emoji; while (longTokenText.length > 0) { found = false; subIndex = 10000000; for (var i = 0; i < js_EmojiAnims.length; ++i) { emojiKeyTemp = js_EmojiAnims[i][0]; subIndexTemp = longTokenText.indexOf(emojiKeyTemp); if (subIndexTemp >= 0 && subIndexTemp < subIndex) { subIndex = subIndexTemp; emojiKey = emojiKeyTemp; emoji = js_EmojiAnims[i]; found = true; } } if (found) { if (subIndex >= 0) { leftToken = longTokenText.substr(0, subIndex); longTokenText = longTokenText.substr(subIndex + emojiKey.length); if (leftToken.length > 0) { tokens.push({ type: 'text', value: leftToken }); } tokens.push({ type: 'emoji', value: emoji }); found = true; } } else { tokens.push({ type: 'text', value: longTokenText }); longTokenText = ''; } } tokens.forEach(function (token) { if (token.type == 'text') { var urlMatched = token.value.match(urlRex); if (urlMatched) { token.type = 'url'; token.protocal = urlMatched[1] } } }) return tokens; }); var tokens = []; for (var i = 0; i < tokenGroups.length; ++i) { tokens.push.apply(tokens, tokenGroups[i]); } return tokens.reduce(function (ac, token) { if (token.type == 'text' && ac.last.type == 'text') { ac.last.value += token.value; } else { ac.last = token; ac.result.push(token); } return ac; }, { result: [], last: { type: 'null' } }) .result; }); var res = lines.reduce(function (ac, line, lineIndex, lines) { line.reduce(function (ac, token) { if (token.type == 'text') { ac.push({ tag: 'span', child: { text: token.value } }) } else if (token.type == 'url') { ac.push({ tag: 'a', class: 'as-protocal-' + token.protocal, child: { text: token.value }, props: { href: token.value } }) } else if (token.type == 'emoji') { ac.push({ tag: 'span', class: 'as-emoji-text', child: { text: token.value[0] } }); ac.push({ tag: 'img', class: 'as-emoji', props: { src: data.emojiAssetRoot + '/static/x' + data.staticSize + '/' + token.value[1] } }) } return ac; }, ac); if (lineIndex < lines.length - 1 || line.length == 0) ac.push('br'); return ac; }, []); if (res.length == 2 && res[1].class == 'as-emoji') { res[1].tag = 'iconsprite', res[1].props.fps = 30; res[1].props.src = res[1].props.src.replace('/static/x' + data.staticSize, '/anim/x' + data.animSize); } return res; } MessageInput.parseMessage = parseMessage; function prepareIcon() { if (!MessageInput.iconSupportAsync) { var catalogiUrl = MessageInput.iconAssetRoot + '/catalog.json'; MessageInput.iconSupportAsync = MessageInput.iconSupportAsync || iconCatalogCaches[catalogiUrl] ? Promise.resolve(iconCatalogCaches[catalogiUrl]) : Network_XHR.getRequest(catalogiUrl).then(function (result) { iconCatalogCaches[catalogiUrl] = JSON.parse(result); return iconCatalogCaches[catalogiUrl]; }); } return MessageInput.iconSupportAsync; } /*** * @typedef MessageInputPluginOption * @property {string} [id] * @property {string|Object|AElement} icon * @property {function(_thisAdapter: MessageInputPlugin, _:Dom._, Dom.$):AElement} createContent * @property {function(_thisAdapter:MessageInputPlugin):void} onPressTrigger */ function MessageQuote() { prepareIcon(); /*** * * @type {null|MessageInputQuote} * @private */ this._data = null; this.$img = MessageInput_$('.as-message-quote-img', this); this.$text = MessageInput_$('.as-message-quote-text', this); this.$desc = MessageInput_$('.as-message-quote-desc', this); this.$removeBtn = MessageInput_$('.as-message-quote-remove-btn', this) .on('click', this.eventHandler.clickRemoveBtn); Object.defineProperty(this, '$text', { set: function () { console.trace(); }, get: function () { return MessageInput_$('.as-message-quote-text', this); } }) } MessageQuote.tag = 'MessageQuote'.toLowerCase(); MessageQuote.render = function () { return MessageInput_({ extendEvent: 'pressremove', class: 'as-message-quote-box', child: [ { class: 'as-message-quote-img' }, { class: 'as-message-quote-sym', child: 'span.mdi.mdi-format-quote-open-outline' }, { class: 'as-message-quote-content', child: [ { class: 'as-message-quote-text', child: { text: '' } }, { class: 'as-message-quote-desc', child: { text: '' } } ] }, { tag: 'button', class: 'as-message-quote-remove-btn', child: 'span.mdi.mdi-close' } ] }); }; MessageQuote.property = {}; MessageQuote.eventHandler = {}; MessageQuote.property.removable = { set: function (val) { if (val) { this.addClass('as-removable'); } else { this.removeClass('as-removable'); } }, get: function () { return this.containsClass('as-removable'); } }; MessageQuote.property.shortenText = { set: function (val) { if (val) { this.addClass('as-shorten-text'); } else { this.removeClass('as-shorten-text'); } }, get: function () { return this.containsClass('as-shorten-text'); } }; MessageQuote.property.data = { set: function (quote) { this._data = quote; var text, desc; var file, img; if (typeof quote === "string") { text = quote; desc = '' } else if (quote && (typeof quote === "object")) { text = quote.text; desc = quote.desc; file = quote.file; img = quote.img; } if (text === undefined) { this.$text.clearChild(); this.$desc.firstChild.data = ''; this.removeClass('as-has-file'); this.removeClass('as-has-img'); } else { if (file) { file = file.toLowerCase().split('.').pop(); MessageInput.iconSupportAsync.then(function (iconSupport) { if (iconSupport.indexOf(file) < 0) file = 'default'; this.$img.addStyle('background-image', 'url(' + MessageInput.iconAssetRoot + '/' + file + '.svg)'); }.bind(this)); this.addClass('as-has-file'); } else this.removeClass('as-has-file'); if (img) { this.$img.addStyle('background-image', 'url(' + img + ')'); this.addClass('as-has-img'); } else this.removeClass('as-has-img'); if (this.shortenText) text = text.split(/\r?\n/).shift(); var parsedText = parseMessage(text); var textEltChain = parsedText.map(function (c) { return MessageInput_(c); }); this.$text.clearChild().addChild(textEltChain); this.$desc.firstChild.data = desc; } }, get: function () { return this.data; } }; MessageQuote.eventHandler.clickRemoveBtn = function () { this.emit('pressremove', { target: this, type: 'pressclose' }, this); }; ACore["c" /* default */].install(MessageQuote); /*** * * @param {MessageInput} inputElt * @param {MessageInputPluginOption} option * @constructor */ function MessageInputPlugin(inputElt, option) { this.inputElt = inputElt; this.icon = option.icon; this.id = option.id || randomIdent(16); this.$icon = null; this.$triggerBtn = null; this.$content = null; this.$popup = null; if (option.createContent) this.createContent = option.createContent; if (option.onPressTrigger) this.onPressTrigger = option.onPressTrigger; this.ev_pressTrigger = this.ev_pressTrigger.bind(this); this.ev_pressOut = this.ev_pressOut.bind(this); this.attach(); } MessageInputPlugin.prototype.attach = function () { this.inputElt.$right.addChildBefore(this.getTriggerButton(), this.inputElt.$right.firstChild); }; MessageInputPlugin.prototype.ev_pressTrigger = function (event) { var value = this.inputElt.$preInput.value; this._lastInputSelectPosion = this.inputElt.$preInput.getSelectPosition() || { start: value.length, end: value.length }; if (this.onPressTrigger) { this.onPressTrigger(this); } else { if (this.isPopupOpened()) { this.closePopup(); } else { this.openPopup(); } } }; MessageInputPlugin.prototype.insertText = function (itext) { if (!this._lastInputSelectPosion) { throw new Error('Invalid call'); } var text = this.inputElt.$preInput.value; var newText = text.substr(0, this._lastInputSelectPosion.start) + itext + text.substr(this._lastInputSelectPosion.end); var selected = this._lastInputSelectPosion; var newOffset = selected.start + itext.length; this.inputElt.$preInput.focus(); this.inputElt.$preInput.applyData(newText, newOffset); this.inputElt.$preInput.commitChange(newText, newOffset); this.inputElt.notifySizeChange(); this.inputElt.$preInput.focus(); }; MessageInputPlugin.prototype.appendText = function (itext) { if (!this._lastInputSelectPosion) { throw new Error('Invalid call'); } var text = this.inputElt.$preInput.value; var newText = text + itext; var newOffset = newText.length; this.inputElt.$preInput.focus(); this.inputElt.$preInput.applyData(newText, newOffset); this.inputElt.$preInput.commitChange(newText, newOffset); this.inputElt.notifySizeChange(); this.inputElt.$preInput.focus(); } MessageInputPlugin.prototype.replaceText = function (itext) { if (!this._lastInputSelectPosion) { throw new Error('Invalid call'); } var newText = itext; var newOffset = newText.length; this.inputElt.$preInput.focus(); this.inputElt.$preInput.applyData(newText, newOffset); this.inputElt.$preInput.commitChange(newText, newOffset); this.inputElt.notifySizeChange(); this.inputElt.$preInput.focus(); } MessageInputPlugin.prototype.ev_pressOut = function (event) { if (EventEmitter["b" /* default */].hitElement(this.getTriggerButton(), event)) return; if (EventEmitter["b" /* default */].hitElement(this.getPopup(), event)) return; this.closePopup(); }; MessageInputPlugin.prototype.getIconElt = function () { if (!this.$icon) this.$icon = MessageInput_(this.icon); return this.$icon; }; MessageInputPlugin.prototype.getTriggerButton = function () { if (!this.$triggerBtn) { this.$triggerBtn = MessageInput_({ tag: 'button', class: ['as-message-input-plugin-btn', 'as-message-input-plugin-' + this.id], child: this.getIconElt(), on: { click: this.ev_pressTrigger } }); } return this.$triggerBtn; }; MessageInputPlugin.prototype.createContent = function (_thisAdapter, _, $) { throw new Error("Not implement!"); }; /*** * * @type {null|function(_thisAdapter:MessageInputPlugin):void} */ MessageInputPlugin.prototype.onPressTrigger = null; MessageInputPlugin.prototype.getContent = function () { if (!this.$content) this.$content = this.createContent(this.inputElt, MessageInput_, MessageInput_$); return this.$content; }; MessageInputPlugin.prototype.getPopup = function () { if (!this.$popup) { this.$popup = MessageInput_({ class: 'as-message-input-external-tools-popup', child: this.getContent() }); } return this.$popup; }; MessageInputPlugin.prototype.openPopup = function () { if (this.isPopupOpened()) return; this.inputElt.appendChild(this.getPopup()); document.body.addEventListener('click', this.ev_pressOut); }; MessageInputPlugin.prototype.closePopup = function () { if (!this.isPopupOpened()) return; this.getPopup().remove(); document.body.removeEventListener('click', this.ev_pressOut); }; MessageInputPlugin.prototype.isPopupOpened = function () { return !!this.getPopup().parentElement; }; MessageInput.prototype.PluginConstructor = MessageInputPlugin; // EXTERNAL MODULE: ./node_modules/absol-acomp/css/numberinput.css var numberinput = __webpack_require__(118); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/NumberInput.js var NumberInput_ = ACore["c" /* default */]._; var NumberInput_$ = ACore["c" /* default */].$; function NumberInput() { this.eventHandler = OOP["a" /* default */].bindFunctions(this, NumberInput.eventHandler); this.$input = NumberInput_$('input', this) .on('keydown', this.eventHandler.keydown) .on('keyup', this.eventHandler.keyup) .on('paste', this.eventHandler.paste) .on('change', this.eventHandler.change); this.$input.value = 0; this._previusValue = 0;//to kwnow whenever the value changed this._value = 0; this._max = Infinity; this._min = -Infinity; this.$upBtn = NumberInput_$('.absol-number-input-button-up-container button', this) .on('mousedown', this.eventHandler.mouseDownUpBtn); this.$downBtn = NumberInput_$('.absol-number-input-button-down-container button', this) .on('mousedown', this.eventHandler.mouseDownDownBtn); this._decimalSeparator = '.'; this._thousandsSeparator = ''; this._floatFixed = -1;// unset this._decimalPadding = -1;//unset } NumberInput.tag = 'NumberInput'.toLowerCase(); NumberInput.render = function () { return NumberInput_({ class: 'absol-number-input', extendEvent: ['change'], child: [ { class: 'absol-number-input-text-container', child: 'input[type="text"]' }, { class: 'absol-number-input-button-up-container', child: { tag: 'button', child: 'span.mdi.mdi-menu-up' } }, { class: 'absol-number-input-button-down-container', child: { tag: 'button', child: 'span.mdi.mdi-menu-down' } } ] }); }; NumberInput.eventHandler = {}; NumberInput.eventHandler.mouseDownUpBtn = function (event) { if (EventEmitter["b" /* default */].isMouseRight(event)) return; var self = this; var body = NumberInput_$(document.body); var pressing = true; var timeout = -1; var i = 0; function tick() { if (pressing) { if (i == 0 || i >= 4) { self.value = Math.floor(self.value) + 1; self.notifyChanged({ by: 'long_press_button' }); } ++i; self.__pressingUpTimeout__ = setTimeout(tick, 100); } } function finish(event) { pressing = false; if (timeout >= 0) { clearTimeout(timeout); timeout = -1; } body.off('mouseup', finish); body.off('mouseleave', finish); if (event.type == 'mouseup') { self.$input.focus(); } self.notifyChanged({ originEvent: event, by: 'press_button' }); } body.on('mouseup', finish); body.on('mouseleave', finish); tick(); }; NumberInput.eventHandler.mouseDownDownBtn = function (event) { if (EventEmitter["b" /* default */].isMouseRight(event)) return; var self = this; var body = NumberInput_$(document.body); var pressing = true; var timeout = -1; var i = 0; function tick() { if (pressing) { if (i == 0 || i >= 4) { self.value = Math.ceil(self.value) - 1; self.notifyChanged({ by: 'long_press_button' }); } ++i; self.__pressingUpTimeout__ = setTimeout(tick, 100); } } function finish(event) { pressing = false; if (timeout >= 0) { clearTimeout(timeout); timeout = -1; } body.off('mouseup', finish); body.off('mouseleave', finish); if (event.type == 'mouseup') { self.$input.focus(); } self.notifyChanged({ originEvent: event, by: 'press_button' }); } body.on('mouseup', finish); body.on('mouseleave', finish); tick(); }; NumberInput.eventHandler.keyup = function (event) { var cValue = parseFloat(this.$input.value); if (!isNaN(cValue)) { this._value = cValue; this.notifyChanged({ originEvent: event, by: 'keyup' }); } }; NumberInput.eventHandler.keydown = function () { var key = event.key; var text = this.$input.value; if (key && key.length == 1 && !event.ctrlKey) { if (key.match(/[0-9.\-\+]/)) { if (key == '.' && text.indexOf('.') >= 0) event.preventDefault(); if ((key == '+' || key == '-') && (text.indexOf('+') >= 0 || text.indexOf('-') >= 0 || Text_getCaretPosition(this.$input) > 0)) event.preventDefault(); } else event.preventDefault(); } }; NumberInput.eventHandler.change = function (event) { this.value = parseFloat(this.$input.value); this.notifyChanged({ originEvent: event, by: 'input_change' }); }; NumberInput.eventHandler.paste = function (e) { e.preventDefault(); var text = ""; if (e.clipboardData && e.clipboardData.getData) { text = e.clipboardData.getData("text/plain"); } else if (window.clipboardData && window.clipboardData.getData) { text = window.clipboardData.getData("Text"); } var oldText = this.$input.value; var caretPos = Text_getCaretPosition(this.$input); var newText = oldText.substr(0, caretPos) + text + oldText.substr(caretPos); var matched = newText.match(/[+-]?([0-9]*[.])?[0-9]+/); if (matched) { this.value = parseFloat(matched[0]); } }; NumberInput.prototype.notifyChanged = function (option) { option = option || {}; if (this._previusValue != this.value || this._prevBy !== option.by) { this.emit('change', Object.assign({ target: this, value: this.value }, option || {}), this); this._previusValue = this.value; this._prevBy = option.by; } } NumberInput.prototype.numberToString = function (number) { return numberToString(this._value, this._floatFixed, this._decimalSeparator, this._thousandsSeparator, this._decimalPadding); }; NumberInput.prototype.updateTextValue = function () { if (this._value == Infinity || this._value == -Infinity) this.$input.value = this._value + ""; this.$input.value = this.numberToString(this._value); } NumberInput.prototype.stringToNumber = function (string) { var matchedInf = string.toLowerCase().match('/([+-])?infinity/'); if (matchedInf) { if (matchedInf[1] == '-') return Infinity; return -Infinity; } else if (this._thousandsSeparator == '.') { string = string.replace(/\./g, '').replace(/\,/, '.'); } else if (this._thousandsSeparator == ',') { string = string.replace(/\,/g, ''); } return parseFloat(string); }; NumberInput.property = {}; NumberInput.property.value = { set: function (value) { if (typeof (value) != 'number' || isNaN(value)) value = 0; this._value = Math.max(this._min, Math.min(this._max, value)); this.updateTextValue(); }, get: function () { return this._value; } }; NumberInput.property.max = { set: function (value) { if (!(typeof value == 'number') || isNaN(value)) { value = Infinity; } this._max = value; this._value = Math.min(value, this._value); this._min = Math.min(this._min, this._value); this.updateTextValue(); }, get: function () { return this._max; } }; NumberInput.property.min = { set: function (value) { if (!(typeof value == 'number') || isNaN(value)) { value = -Infinity; } this._min = value; this._value = Math.max(value, this._value); this._max = Math.max(this._max, this._value); this.updateTextValue(); }, get: function () { return this._min; } }; NumberInput.property.decimalSeparator = { set: function (value) { if (value == ',') { if (this._thousandsSeparator == ',') this._thousandsSeparator = '.'; } else if (value == '.') { if (this._thousandsSeparator == '.') this._thousandsSeparator = ','; } else { value = ''; } this._decimalSeparator = value; this.updateTextValue(); }, get: function () { return this._decimalSeparator; } }; NumberInput.property.thousandsSeparator = { set: function (value) { if (value == ',') { if (this._decimalSeparator == ',') this._decimalSeparator = '.'; } else if (value == '.') { if (this._decimalSeparator == '.') this._decimalSeparator = ','; } else { value = ''; } this._thousandsSeparator = value; this.updateTextValue(); }, get: function () { return this._thousandsSeparator; } }; NumberInput.property.floatFixed = { set: function (value) { if (typeof value == "number") { if (isNaN(value)) { value = -1; } else { value = Math.round(Math.max(-1, Math.min(100, value))); } } else { value = -1; } this._floatFixed = value; this.updateTextValue(); }, get: function () { return this._floatFixed; } }; NumberInput.property.decimalPadding = { set: function (value) { if (typeof value == "number") { if (isNaN(value)) { value = 0; } else { value = Math.round(Math.max(-1, Math.min(100, value))); } } else { value = 0; } this._decimalPadding = value; this.updateTextValue(); }, get: function () { return this._decimalPadding; } }; NumberInput.property.disabled = { set: function (value) { this.$input.disabled = !!value; this.$upBtn.disabled = !!value; this.$downBtn.disabled = !!value; if (value) this.addClass('absol-disabled'); else this.removeClass('absol-disabled'); }, get: function () { return this.$input.disabled; } }; ACore["c" /* default */].install('NumberInput'.toLowerCase(), NumberInput); /* harmony default export */ var js_NumberInput = (NumberInput); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/NumberSpanInput.js var NumberSpanInput_ = ACore["c" /* default */]._; var NumberSpanInput_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function NumberSpanInput() { this.ev_keydown = this.ev_keydown.bind(this); this.on('keydown', this.ev_keydown, true); this.readOnly = false; this.value = 0; this.on('paste', function (event) { event.preventDefault(); }) } NumberSpanInput.tag = 'NumberSpanInput'.toLowerCase(); NumberSpanInput.render = function () { return NumberSpanInput_({ tag: 'span', child: { text: '' } }); }; NumberSpanInput.prototype.selectAll = function(){ var sel; if (window.getSelection) { sel = window.getSelection(); sel.removeAllRanges(); var range = document.createRange(); range.selectNode(this.childNodes[this.childNodes.length - 1]); sel.addRange(range); } else { console.error("TimePicker: Not support!") } }; NumberSpanInput.prototype.selectEnd = function(){ var sel; if (window.getSelection) { sel = window.getSelection(); sel.removeAllRanges(); this._autoAddZero(); var length = this.firstChild.data.length; var range = document.createRange(); range.setStart(this.firstChild, length); range.setEnd(this.firstChild, length); sel.addRange(range); } else { console.error("TimePicker: Not support!") } }; NumberSpanInput.prototype.selectNone = function(){ var sel; if (document.activeElement === this){ sel = window.getSelection(); sel.removeAllRanges(); } } NumberSpanInput.prototype._autoAddZero = function (){ if (!this.firstChild){ this.addChild(NumberSpanInput_({text:'0'})); } } /*** * * @param {KeyboardEvent} event */ NumberSpanInput.prototype.ev_keydown = function (event) { if (event.key && event.key.length == 1 && !event.ctrlKey && !event.altKey) { if (event.key.match(/[0-9]/)) { } else { event.preventDefault(); } } else if (event.key == 'Enter'){ event.preventDefault(); } }; NumberSpanInput.property = {}; NumberSpanInput.property.readOnly = { set: function (value) { this.contentEditable = !value; }, get: function () { return this.contentEditable === false|| this.contentEditable === 'false'; } }; /*** * * @type {NumberSpanInput} */ NumberSpanInput.property.value = { set: function (value) { this._autoAddZero(); this.firstChild.data = value + ''; }, get: function () { return (this.firstChild && this.firstChild.data)||''; } } ACore["c" /* default */].install(NumberSpanInput); /* harmony default export */ var js_NumberSpanInput = (NumberSpanInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/onscreenwindow.css var onscreenwindow = __webpack_require__(120); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/OnsScreenWindow.js var OnsScreenWindow_ = ACore["c" /* default */]._; var OnsScreenWindow_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function OnScreenWindow() { var res = this; this._lastSize = { width: 0, height: 0 } res.$headerbar = OnsScreenWindow_$('.absol-onscreen-window-head-bar', res) .on('dragstart', res.eventHandler.beginDragHeaderbar); res.$bottomResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom', res) .on('dragstart', res.eventHandler.beginDragBottom); res.$rightResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-right', res) .on('dragstart', res.eventHandler.beginDragRight); res.$topResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top', res) .on('dragstart', res.eventHandler.beginDragTop); res.$leftResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-left', res) .on('dragstart', res.eventHandler.beginDragLeft); res.$bottomRightResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-right', res) .on('dragstart', res.eventHandler.beginDragButtonRight); res.$bottomLeftResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-left', res) .on('dragstart', res.eventHandler.beginDragBottomLeft); res.$topLeftResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-left', res) .on('dragstart', res.eventHandler.beginDragTopLeft); res.$topRightResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-right', res) .on('dragstart', res.eventHandler.beginDragTopRight); res.$headerButtonCtn = OnsScreenWindow_$('.absol-onscreen-window-head-bar-buttons', res.$headerbar); res.$windowIcon = OnsScreenWindow_$('span.absol-onscreen-window-head-bar-icon.mdi.mdi-settings', res); res.$windowTitle = OnsScreenWindow_$('.absol-onscreen-window-head-bar-title', res); res._windowIcon = 'span.absol-onscreen-window-head-bar-icon.mdi.mdi-settings'; res._windowTitle = ''; res.$bodyContainer = OnsScreenWindow_$('.absol-onscreen-window-body-container', res); res.$attachhook = OnsScreenWindow_('attachhook').addTo(res) .on('error', function () { this.updateSize = this.updateSize || res.relocation.bind(res); Dom["b" /* default */].addToResizeSystem(this); }); res.$minimizeBtn = OnsScreenWindow_$('button.absol-onscreen-window-head-bar-button-minimize', res); res.$closeBtn = OnsScreenWindow_$('button.absol-onscreen-window-head-bar-button-close', res); res.$dockBtn = OnsScreenWindow_$('button.absol-onscreen-window-head-bar-button-dock', res); } OnScreenWindow.tag = 'OnScreenWindow'.toLowerCase(); OnScreenWindow.render = function () { return OnsScreenWindow_({ extendEvent: ['sizechange', 'drag', 'relocation'], class: 'absol-onscreen-window', child: { class: 'absol-onscreen-window-content', child: [ { tag: 'hanger', class: 'absol-onscreen-window-head-bar', child: [ 'span.absol-onscreen-window-head-bar-icon.mdi.mdi-settings', { tag: 'span', class: 'absol-onscreen-window-head-bar-title', child: { text: '' } }, { class: "absol-onscreen-window-head-bar-buttons", child: [ { tag: 'button', class: 'absol-onscreen-window-head-bar-button-minimize', child: 'span.mdi.mdi-window-minimize' }, { tag: 'button', class: 'absol-onscreen-window-head-bar-button-dock', child: 'span.mdi.mdi-dock-window' }, { tag: 'button', class: 'absol-onscreen-window-head-bar-button-close', child: 'span.mdi.mdi-close' } ] } ] }, { class: 'absol-onscreen-window-body-container' }, 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-top', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-left', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-right', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-right', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-left', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-left', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-right' ] } }); }; OnScreenWindow.prototype.maybeSizeChange = function () { var bound = this.getBoundingClientRect(); if (this._lastSize.width !== bound.width || this._lastSize.height !== bound.height) { this._lastSize = bound; window.dispatchEvent(new Event('resize')); this.emit('sizechange', {size: bound, target: this, type: 'sizechange'}, this); } }; OnScreenWindow.eventHandler = {}; OnScreenWindow.eventHandler.beginDragHeaderbar = function (event) { if (!EventEmitter["b" /* default */].hitElement(this.$headerButtonCtn, event)) { this.$headerbar.on('drag', this.eventHandler.dragHeaderbar); this.$headerbar.on('dragend', this.eventHandler.endDragHeaderbar); var screenSize = Dom["b" /* default */].getScreenSize(); var bound = this.getBoundingClientRect(); this.__moveData__ = { bound: bound, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal').addTo(document.body), maxLeft: screenSize.width - bound.width - 1, maxY: screenSize.height - bound.height - 1, }; } }; OnScreenWindow.eventHandler.dragHeaderbar = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dx = d.x; var dy = d.y; var newX = Math.max(0, Math.min(this.__moveData__.maxLeft, this.__moveData__.bound.left + dx)); var newY = Math.max(0, Math.min(this.__moveData__.maxY, this.__moveData__.bound.top + dy)); this.addStyle({ top: newY + 'px', left: newX + 'px' }); this.emit('drag', event, this); }; OnScreenWindow.eventHandler.endDragHeaderbar = function (event) { this.$headerbar.off('drag', this.eventHandler.dragHeaderbar); this.$headerbar.off('dragend', this.eventHandler.endDragHeaderbar); this.__moveData__.modal.remove(); this.__moveData__ = undefined; this.emit('relocation', { type: 'relocation', target: this }, this); }; OnScreenWindow.eventHandler.beginDragBottom = function (event) { if (event.target != this.$bottomResizer) return; this.$bottomResizer.on('drag', this.eventHandler.dragBottom); this.$bottomResizer.on('dragend', this.eventHandler.endDragBottom); var screenSize = Dom["b" /* default */].getScreenSize(); var bound = this.getBoundingClientRect(); this.__moveData__ = { bound: bound, minHeight: this.getFontSize() * 1.4, maxHeight: screenSize.height - bound.top, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-bottom').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragBottom = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dy = d.y; var newHeight = Math.max(this.__moveData__.minHeight, Math.min(this.__moveData__.maxHeight, this.__moveData__.bound.height + dy)); this.addStyle('height', newHeight + 'px'); this.maybeSizeChange(); }; OnScreenWindow.eventHandler.endDragBottom = function (event) { this.$bottomResizer.off('drag', this.eventHandler.dragBottom); this.$bottomResizer.off('dragend', this.eventHandler.endDragBottom); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; OnScreenWindow.eventHandler.beginDragRight = function (event) { if (event.target != this.$rightResizer) return; this.$rightResizer.on('drag', this.eventHandler.dragRight); this.$rightResizer.on('dragend', this.eventHandler.endDragRight); var screenSize = Dom["b" /* default */].getScreenSize(); var bound = this.getBoundingClientRect(); var minWidth = this.$windowTitle.getBoundingClientRect().right - bound.left + this.$headerButtonCtn.getBoundingClientRect().width; this.__moveData__ = { minWidth: minWidth, bound: bound, maxWidth: screenSize.width - bound.left, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-right').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragRight = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dx = d.x; var newWidth = Math.max(this.__moveData__.minWidth, Math.min(this.__moveData__.maxWidth, this.__moveData__.bound.width + dx)); this.addStyle('width', newWidth + 'px'); this.maybeSizeChange(); }; OnScreenWindow.eventHandler.endDragRight = function (event) { this.$rightResizer.off('drag', this.eventHandler.dragRight); this.$rightResizer.off('dragend', this.eventHandler.endDragRight); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; OnScreenWindow.eventHandler.beginDragTop = function (event) { if (event.target != this.$topResizer) return; this.$topResizer.on('drag', this.eventHandler.dragTop); this.$topResizer.on('dragend', this.eventHandler.endDragTop); // var screenSize = Dom.getScreenSize(); var bound = this.getBoundingClientRect(); var fontSize = this.getFontSize(); this.__moveData__ = { fontSize: fontSize, bound: bound, maxTop: bound.bottom - 1.4 * fontSize, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-top').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragTop = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dy = d.y; var newTop = Math.max(0, Math.min(this.__moveData__.maxTop, this.__moveData__.bound.top + dy)); var newHeight = this.__moveData__.bound.bottom - newTop; this.addStyle({ 'top': newTop + 'px', 'height': newHeight + 'px', }); this.emit('relocation', { type: 'relocation', target: this }, this); this.maybeSizeChange(); }; OnScreenWindow.eventHandler.endDragTop = function (event) { this.$topResizer.off('drag', this.eventHandler.dragTop); this.$topResizer.off('dragend', this.eventHandler.endDragTop); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; OnScreenWindow.eventHandler.beginDragLeft = function (event) { if (event.target != this.$leftResizer) return; this.$leftResizer.on('drag', this.eventHandler.dragLeft); this.$leftResizer.on('dragend', this.eventHandler.endDragLeft); var bound = this.getBoundingClientRect(); var minWidth = this.$windowTitle.getBoundingClientRect().right - bound.left + this.$headerButtonCtn.getBoundingClientRect().width; this.__moveData__ = { maxLeft: bound.right - minWidth, bound: bound, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-left').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragLeft = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dx = d.x; var newLeft = Math.max(0, Math.min(this.__moveData__.maxLeft, this.__moveData__.bound.left + dx)); var newWidth = this.__moveData__.bound.right - newLeft; this.addStyle({ width: newWidth + 'px', left: newLeft + 'px' }); this.emit('relocation', { type: 'relocation', target: this }, this); this.maybeSizeChange(); }; OnScreenWindow.eventHandler.endDragLeft = function (event) { this.$leftResizer.off('drag', this.eventHandler.dragLeft); this.$leftResizer.off('dragend', this.eventHandler.endDragLeft); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; //todo OnScreenWindow.eventHandler.beginDragButtonRight = function (event) { if (event.target != this.$bottomRightResizer) return; this.$bottomRightResizer.on('drag', this.eventHandler.dragButtonRight); this.$bottomRightResizer.on('dragend', this.eventHandler.endDragButtonRight); var screenSize = Dom["b" /* default */].getScreenSize(); var bound = this.getBoundingClientRect(); var minWidth = this.$windowTitle.getBoundingClientRect().right - bound.left + this.$headerButtonCtn.getBoundingClientRect().width; this.__moveData__ = { minHeight: this.getFontSize() * 1.4, minWidth: minWidth, bound: bound, maxWidth: screenSize.width - bound.left, maxHeight: screenSize.height - bound.top, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-bottom-right').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragButtonRight = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dx = d.x; var dy = d.y; var newWidth = Math.max(this.__moveData__.minWidth, Math.min(this.__moveData__.maxWidth, this.__moveData__.bound.width + dx)); var newHeight = Math.max(this.__moveData__.minHeight, Math.min(this.__moveData__.maxHeight, this.__moveData__.bound.height + dy)); this.addStyle('width', newWidth + 'px'); this.addStyle('height', newHeight + 'px'); this.maybeSizeChange(); }; OnScreenWindow.eventHandler.endDragButtonRight = function (event) { this.$bottomRightResizer.off('drag', this.eventHandler.dragButtonRight); this.$bottomRightResizer.off('dragend', this.eventHandler.endDragButtonRight); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; OnScreenWindow.eventHandler.beginDragBottomLeft = function (event) { if (event.target != this.$bottomLeftResizer) return; this.$bottomLeftResizer.on('drag', this.eventHandler.dragBottomLeft); this.$bottomLeftResizer.on('dragend', this.eventHandler.endDragBottomLeft); var bound = this.getBoundingClientRect(); var minWidth = this.$windowTitle.getBoundingClientRect().right - bound.left + this.$headerButtonCtn.getBoundingClientRect().width; var screenSize = Dom["b" /* default */].getScreenSize(); this.__moveData__ = { maxLeft: bound.right - minWidth, bound: bound, minHeight: this.getFontSize() * 1.4, maxHeight: screenSize.height - bound.top, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-bottom-left').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragBottomLeft = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dx = d.x; var dy = d.y; var newLeft = Math.max(0, Math.min(this.__moveData__.maxLeft, this.__moveData__.bound.left + dx)); var newWidth = this.__moveData__.bound.right - newLeft; var newHeight = Math.max(this.__moveData__.minHeight, Math.min(this.__moveData__.maxHeight, this.__moveData__.bound.height + dy)); this.addStyle('height', newHeight + 'px'); this.addStyle({ width: newWidth + 'px', left: newLeft + 'px' }); this.emit('relocation', { type: 'relocation', target: this }, this); }; OnScreenWindow.eventHandler.endDragBottomLeft = function (event) { this.$bottomLeftResizer.off('drag', this.eventHandler.dragLeft); this.$bottomLeftResizer.off('dragend', this.eventHandler.endDragLeft); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; OnScreenWindow.eventHandler.beginDragTopLeft = function (event) { if (event.target != this.$topLeftResizer) return; this.$topLeftResizer.on('drag', this.eventHandler.dragTopLeft); this.$topLeftResizer.on('dragend', this.eventHandler.endDragTopLeft); var bound = this.getBoundingClientRect(); var fontSize = this.getFontSize(); var minWidth = this.$windowTitle.getBoundingClientRect().right - bound.left + this.$headerButtonCtn.getBoundingClientRect().width; this.__moveData__ = { maxLeft: bound.right - minWidth, fontSize: fontSize, bound: bound, maxTop: bound.bottom - 1.4 * fontSize, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-top-left').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragTopLeft = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dx = d.x; var dy = d.y; var newTop = Math.max(0, Math.min(this.__moveData__.maxTop, this.__moveData__.bound.top + dy)); var newHeight = this.__moveData__.bound.bottom - newTop; var newLeft = Math.max(0, Math.min(this.__moveData__.maxLeft, this.__moveData__.bound.left + dx)); var newWidth = this.__moveData__.bound.right - newLeft; this.addStyle({ top: newTop + 'px', height: newHeight + 'px', width: newWidth + 'px', left: newLeft + 'px' }); this.emit('relocation', { type: 'relocation', target: this }, this); this.maybeSizeChange(); }; OnScreenWindow.eventHandler.endDragTopLeft = function (event) { this.$topLeftResizer.off('drag', this.eventHandler.dragTopLeft); this.$topLeftResizer.off('dragend', this.eventHandler.endDragTopLeft); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; OnScreenWindow.eventHandler.beginDragTopRight = function (event) { if (event.target != this.$topRightResizer) return; this.$topRightResizer.on('drag', this.eventHandler.dragTopRight); this.$topRightResizer.on('dragend', this.eventHandler.endDragTopRight); var screenSize = Dom["b" /* default */].getScreenSize(); var bound = this.getBoundingClientRect(); var fontSize = this.getFontSize(); var minWidth = this.$windowTitle.getBoundingClientRect().right - bound.left + this.$headerButtonCtn.getBoundingClientRect().width; this.__moveData__ = { minWidth: minWidth, fontSize: fontSize, bound: bound, maxWidth: screenSize.width - bound.left, maxTop: bound.bottom - 1.4 * fontSize, modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal.absol-onscreen-window-resize-top-right').addTo(document.body) }; }; OnScreenWindow.eventHandler.dragTopRight = function (event) { var d = event.currentPoint.sub(event.startingPoint); var dx = d.x; var dy = d.y; var newWidth = Math.max(this.__moveData__.minWidth, Math.min(this.__moveData__.maxWidth, this.__moveData__.bound.width + dx)); var newTop = Math.max(0, Math.min(this.__moveData__.maxTop, this.__moveData__.bound.top + dy)); var newHeight = this.__moveData__.bound.bottom - newTop; this.addStyle({ 'top': newTop + 'px', 'height': newHeight + 'px', width: newWidth + 'px' }); this.emit('relocation', { type: 'relocation', target: this }, this); this.maybeSizeChange(); }; OnScreenWindow.eventHandler.endDragTopRight = function (event) { this.$topRightResizer.off('drag', this.eventHandler.dragTopRight); this.$topRightResizer.off('dragend', this.eventHandler.endDragTopRight); this.__moveData__.modal.remove(); this.__moveData__ = undefined; }; ['addChild', 'addChildBefore', 'addChildAfter', 'clearChild', 'findChildBefore', 'findChildAfter'].forEach(function (key) { OnScreenWindow.prototype[key] = function () { return this.$bodyContainer[key].apply(this.$bodyContainer, arguments); }; }); OnScreenWindow.property = {}; OnScreenWindow.property.windowIcon = { set: function (value) { this._windowIcon = value; if (this.$windowIcon) { this.$windowIcon.remove(); this.$windowIcon = undefined; } if (value) { this.$windowIcon = OnsScreenWindow_(value).addClass('absol-onscreen-window-head-bar-icon'); this.$headerbar.addChildBefore(this.$windowIcon, this.$headerbar.childNodes[0]); } }, get: function () { return this._windowIcon; } }; OnScreenWindow.property.windowTitle = { set: function (value) { this._windowTitle = value; this.$windowTitle .clearChild() .addChild(OnsScreenWindow_({ text: '' + value })); }, get: function () { return this._windowTitle; } }; OnScreenWindow.prototype.relocation = function () { var bound = this.getBoundingClientRect(); var screenSize = Dom["b" /* default */].getScreenSize(); var isRelocated = false; if (bound.bottom >= screenSize.height) { this.addStyle('top', Math.max(0, screenSize.height - bound.height) + 'px'); isRelocated = true; } if (bound.right >= screenSize.width) { this.addStyle('left', Math.max(0, screenSize.width - bound.width) + 'px'); isRelocated = true; } if (isRelocated) { this.emit('relocation', { type: 'relocation', target: this }, this) } }; ACore["c" /* default */].install(OnScreenWindow); /* harmony default export */ var OnsScreenWindow = (OnScreenWindow); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/pageselector.css var pageselector = __webpack_require__(122); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/PageSelector.js var PageSelector_ = ACore["c" /* default */]._; var PageSelector_$ = ACore["c" /* default */].$; function PageSelector() { this.$pageInput = PageSelector_$('.absol-page-number-input input', this); this.$pageInput.on('keyup', this.eventHandler.pressEnterKey); this.$prevBtn = PageSelector_$('li.page-previous', this); this.$nextBtn = PageSelector_$('li.page-next', this); this.$firstBtn = PageSelector_$('li.page-first', this); this.$lastBtn = PageSelector_$('li.page-last', this); this.$nextBtn.on('click', this.eventHandler.clickNext); this.$prevBtn.on('click', this.eventHandler.clickPrev); this.$firstBtn.on('click', this.eventHandler.clickFirst); this.$lastBtn.on('click', this.eventHandler.clickLast); this.$buttonContainer = PageSelector_$('.absol-page-number-buttons', this); this._buttons = []; this._pageOffset = 1; this._selectedIndex = 1; this._pageCount = 1; this._pageRange = 1; this.$pageInput.value = this._selectedIndex; } PageSelector.tag = 'PageSelector'.toLowerCase(); PageSelector.render = function (){ return PageSelector_({ class: ['absol-page-selector'], extendEvent: ['change'], child: [ { class: 'absol-page-number-input', child: [{ tag: 'label', child: { text: "Page" } }, { tag:'input', attr:{ type:'text' } }] }, { tag: 'ul', class: 'absol-page-number-buttons', child: [ ' <li class="page-first">\ <a aria-controls="dtBasicExample" data-dt-idx="0" tabindex="0" class="absol-page-link">First</a>\ </li>', ' <li class="page-previous">\ <a aria-controls="dtBasicExample" data-dt-idx="0" tabindex="0" class="absol-page-link">Previous</a>\ </li>', '<li class="page-next" >\ <a aria-controls="dtBasicExample" data-dt-idx="7" tabindex="0" class="absol-page-link">Next</a>\ </li>', ' <li class="page-last">\ <a aria-controls="dtBasicExample" data-dt-idx="0" tabindex="0" class="absol-page-link">Last</a>\ </li>', ] } ] }); } PageSelector.eventHandler = {}; PageSelector.eventHandler.pressEnterKey = function(event){ if (event.keyCode != 13) return; var index = parseInt(this.$pageInput.value.trim(), 10); if ((index < 1) || (index > this._pageCount)) { this.$pageInput.value = this._selectedIndex; return; } this.selectPage(index, true); } PageSelector.eventHandler.clickLast = function (event) { this.selectPage(this._pageCount, true); }; PageSelector.eventHandler.clickFirst = function (event) { this.selectPage(1, true); }; PageSelector.eventHandler.clickNext = function (event) { if (this._selectedIndex == this._pageCount) return; this.selectPage(this._selectedIndex + 1, true); }; PageSelector.eventHandler.clickPrev = function (event) { if (this._selectedIndex == 1) return; this.selectPage(this._selectedIndex - 1, true); } PageSelector.eventHandler.clickIndex = function (index, event) { this.selectPage(index + this._pageOffset, true); }; PageSelector.prototype._createButton = function (index) { var button = PageSelector_({ tag: 'li', class: 'absol-page-number', child: { tag: 'a', attr: { 'data-index': index }, child: { text: '' + index } }, on: { click: PageSelector.eventHandler.clickIndex.bind(this, index) } }); this.$buttonContainer.addChildBefore(button, this.$nextBtn); return button; }; PageSelector.prototype.setPageRange = function (pageCount) { this._pageRange = pageCount; if (this._buttons.length > 0) throw new Error("Not implement change pageCount"); while (this._buttons.length < pageCount) { this._buttons.push(this._createButton(this._buttons.length)); } }; PageSelector.prototype.setStartPage = function (index) { this._buttons.forEach(function (e, i) { e.childNodes[0].innerHTML = i + index + ''; }); this._pageOffset = index; }; PageSelector.prototype.selectPage = function (index, userActive) { if (index == this._selectedIndex) this.setStartPage(index - parseInt(this._pageRange / 2)); if (index > this._selectedIndex){ if (index == (this._pageOffset + this._pageRange - 1)) this.setStartPage(index - parseInt(this._pageRange / 2)); } if (index < this._selectedIndex){ if (index == this._pageOffset) this.setStartPage(index - parseInt(this._pageRange / 2)); } if (index > (this._pageCount - parseInt(this._pageRange / 2))) this.setStartPage(this._pageCount - this._pageRange + 1); if (index <= (parseInt(this._pageRange / 2))) this.setStartPage(1); var pageOffset = this._pageOffset; this._buttons.forEach(function (e, i) { if (i + pageOffset == index) { e.addClass('active'); } else { e.removeClass('active'); } }); if (this._selectedIndex != index) { this._selectedIndex = index; this.$pageInput.value = index; this.emit('change', { target: this, selectedIndex: index, userActive: !!userActive }, this); } }; PageSelector.prototype.getSelectedPage = function () { return this._selectedIndex; } PageSelector.prototype.setPageCount = function (count) { this._pageCount = count; }; PageSelector.property = {}; PageSelector.prototype.init = function (props) { props = props || {}; props.pageOffset = props.pageOffset || 1; props.pageRange = props.pageRange || 5; props.pageCount = props.pageCount || 15; props.selectedIndex = typeof (props.selectedIndex) == "number" ? props.selectedIndex : props.pageOffset; if (props.pageCount < props.pageRange) props.pageRange = props.pageCount; this.setPageCount(props.pageCount); this.setPageRange(props.pageRange); this.setStartPage(props.pageOffset); this.selectPage(props.selectedIndex); }; ACore["c" /* default */].install(PageSelector); /* harmony default export */ var js_PageSelector = (PageSelector); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/preinput.css var preinput = __webpack_require__(124); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/PreInput.js var PreInput_ = ACore["c" /* default */]._; var PreInput_$ = ACore["c" /* default */].$; var textDelay = BrowserDetector["a" /* default */].isSafari ? 100 : 1; /*** * @extends AElement * @constructor */ function PreInput() { this.defineEvent(['pasteimg', 'pastetext', 'change']); this.on('paste', this.eventHandler.paste); this.on('keydown', this.eventHandler.keydown); this.history = []; this.historyIndex = -1; this.commitChange('', 0); } PreInput.tag = 'preinput'; PreInput.render = function () { return PreInput_({ tag: 'pre', class: 'as-preinput', attr: { contenteditable: 'true' }, child: 'br' }); }; PreInput.prototype.applyData = function (text, offset) { var textNode = PreInput_({ text: text }); this.clearChild() .addChild(textNode).addChild(PreInput_('br')); if (document.activeElement == this && this.isDescendantOf(document.body)) { if (document.getSelection) { var sel = document.getSelection(); sel.removeAllRanges(); var range = document.createRange(); if (typeof offset == 'number') { range.setStart(textNode, Math.min(text.length, offset)); } else { range.setStart(textNode, Math.min(text.length, offset.start)); range.setEnd(textNode, Math.min(text.length, offset.end)); } sel.addRange(range); this.scrollIntoRange(range); } else { console.error("PreInput: Not support!"); } } }; PreInput.prototype.scrollIntoRange = function (range) { var elementBound = range.getBoundingClientRect(); var viewportBound = this.getBoundingClientRect(); var dBottom = 0; if (range.startContainer && range.startContainer.data && range.startContainer.data.charAt(range.startContainer.data.length - 1) == '\n') dBottom += this.getFontSize() * 1.5; var currentScrollTop = this.scrollTop; var newScrollTop = currentScrollTop; if (elementBound.bottom + dBottom > viewportBound.bottom) { newScrollTop = currentScrollTop + (elementBound.bottom + dBottom - viewportBound.bottom); } if (elementBound.top < viewportBound.top) { newScrollTop = currentScrollTop - (viewportBound.top - elementBound.top); } if (newScrollTop != currentScrollTop) { this.scrollTop = newScrollTop; } var currentScrollLeft = this.scrollLeft; var newScrollLeft = currentScrollLeft; if (elementBound.right > viewportBound.right) { newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right); } if (elementBound.left < viewportBound.left) { newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left); } if (newScrollLeft != currentScrollLeft) { this.scrollLeft = newScrollLeft; } }; PreInput.prototype.undo = function () { if (this.historyIndex <= 0) return; this.historyIndex--; var record = this.history[this.historyIndex]; this.applyData(record.text, record.offset); this.emit('change', { target: this, value: record.text, action: 'undo', record: record, type: 'change' }, this); }; PreInput.prototype.redo = function () { if (this.historyIndex + 1 >= this.history.length) return; this.historyIndex++; var record = this.history[this.historyIndex]; this.applyData(record.text, record.offset); this.emit('change', { target: this, value: record.text, action: 'redo', record: record, type: 'change' }, this); }; PreInput.prototype.commitChange = function (text, offset) { while (this.historyIndex < this.history.length - 1) { this.history.pop(); } var lastText = this.history.length > 0 ? this.history[this.history.length - 1].text : null; if (text === lastText) { if (this.history[this.history.length - 1].offset != offset) this.history[this.history.length - 1].offset = offset; } else { this.historyIndex = this.history.length; var record = { text: text, offset: offset }; this.history.push(record); this.emit('change', { target: this, value: record.text, action: 'commit', record: record, type: 'change' }, this); } }; PreInput.prototype.waitToCommit = function (text, offset) { var thisInput = this; if (this._commitTimeout > 0) clearTimeout(this._commitTimeout); this._commitTimeout = setTimeout(function () { thisInput.commitChange(text, offset); }, textDelay); }; PreInput.prototype.getPosition = function (node, offset) { if (!node) return NaN; if (node == this) return offset; var parent = node.parentElement; if (!parent) return NaN; var text = ''; var child; var lastBr = false; for (var i = 0; i < parent.childNodes.length; ++i) { child = parent.childNodes[i]; if (child == node) break; text += this.stringOf(child); } return this.getPosition(parent, text.length + offset); }; PreInput.prototype.getSelectPosition = function () { if (window.getSelection) { var sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { var range = sel.getRangeAt(0); var startOffset = this.getPosition(range.startContainer, range.startOffset); var endOffset = this.getPosition(range.endContainer, range.endOffset); if (isNaN(startOffset)) return null; return { start: startOffset, end: endOffset } } } else if (document.selection) { console.error('May not support!'); } }; PreInput.prototype.stringOf = function (node) { if (!node) return ''; if (node.nodeType == 3) { return node.data; } if (node.tagName == 'BR' || node.tagName == 'br') { return '\n'; } var thisInput = this; return Array.prototype.map.call(node.childNodes, function (cNode, index, arr) { if ((cNode.tagName == 'BR' || cNode.tagName == 'br') && (index + 1 >= arr.length)) return ''; return thisInput.stringOf(cNode); }).join(''); } PreInput.prototype._pasteText = function (text) { var sel = window.getSelection(); var range; if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { try { range = sel.getRangeAt(0); range.deleteContents(); var textNode = PreInput_({ text: text }); range.insertNode(textNode); if (sel.removeRange) { sel.removeRange(range); } else { sel.removeAllRanges(); } range = document.createRange(); range.setStart(textNode, text.length); sel.addRange(range); this.scrollIntoRange(range); this.commitChange(this.stringOf(this), this.getPosition(textNode, text.length)); } catch (error) { alert(error.message) } } } else if (document.selection && document.selection.createRange) { document.selection.createRange().text = text; this.commitChange(this.stringOf(this), this.getPosition(textNode, text.length)); console.error('May not support!'); } }; /** * @type {PreInput} */ PreInput.eventHandler = {}; PreInput.eventHandler.paste = function (event) { var thisIp = this; var clipboardData = (event.clipboardData || window.clipboardData); /**Safari bug */ if (clipboardData) { if (clipboardData.items) { var items = Array.prototype.slice.call(clipboardData.items); var imgItems = items.filter(function (item) { return item.type.indexOf('image') >= 0; }); var plainTextItems = items.filter(function (item) { return item.type.indexOf('text/plain') >= 0; }); if (imgItems.length > 0) { var imgFiles = imgItems.map(function (it) { return it.getAsFile(); }); this.emit('pasteimg', { target: this, imageFile: imgFiles[0], imageFiles: imgFiles, orginEvent: event }, this); } else if (plainTextItems.length > 0) { var plainTextItem = plainTextItems[0];//only one item plainTextItem.getAsString(function (text) { thisIp._pasteText(text); }); } else { window.ABSOL_DEBUG && console.error("Can not handle clipboard data"); } event.preventDefault(); } else { var text = event.clipboardData.getData('text/plain'); if (text) { event.preventDefault(); this._pasteText(text); } else { var currentText = this.stringOf(this); var currentSelection = this.getSelectPosition(); setTimeout(function () { var images = []; PreInput_$('img', thisIp, function (elt) { images.push(elt); }); Promise.all(images.map(function (img) { return Dom["b" /* default */].imageToCanvas(img).then(function (canvas) { var dataURI = canvas.toDataURL(); var blob = dataURItoBlob(dataURI); var file = blobToFile(blob); return { file: file, blob: blob, url: dataURI } }, function (error) { console.error(error) }).catch(function (error) { console.error(error) }); })).then(function (results) { results = results.filter(function (it) { return !!it; }); if (results.length > 0) { var imgFiles = results.map(function (it) { return it.file }); var urls = results.map(function (it) { return it.url }); thisIp.emit('pasteimg', { target: this, imageFile: imgFiles[0], imageFiles: imgFiles, urls: urls, url: urls[0], orginEvent: event }, thisIp); } }); thisIp.applyData(currentText, currentSelection); }, textDelay); } } } else { setTimeout(function () { if (window.getSelection) { var sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { var range = sel.getRangeAt(0); var text = this.stringOf(this); var offset = this.getPosition(range.startContainer, range.startOffset); this.waitToCommit(text, offset); } } else if (document.selection) { console.error('May not support!'); } }.bind(this), textDelay); } }; PreInput.eventHandler.keydown = function (event) { if (event.ctrlKey) { switch (event.key) { case 'z': this.undo(); event.preventDefault(); break; case 'y': this.redo(); event.preventDefault(); break; default: break; } } if (!event.ctrlKey && !event.altKey) { setTimeout(function () { if (window.getSelection) { var sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { var range = sel.getRangeAt(0); var text = this.stringOf(this); var offset = this.getPosition(range.startContainer, range.startOffset); this.waitToCommit(text, offset); } } else if (document.selection) { console.error('May not support!'); } }.bind(this), textDelay); } }; PreInput.property = {}; PreInput.property.value = { set: function (value) { value = value || ''; this.applyData(value, value.length); this.commitChange(value, value.length); }, get: function () { return this.stringOf(this); } }; ACore["c" /* default */].install(PreInput); /* harmony default export */ var js_PreInput = (PreInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/progressbar.css var progressbar = __webpack_require__(126); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/ProgressBar.js var ProgressBar_ = ACore["c" /* default */]._; var ProgressBar_$ = ACore["c" /* default */].$; function ProgressBar() { this._value = 0; this._variant = null; this.$value = ProgressBar_$('.as-progress-bar-value', this); this._striped = false; this._animated = false; } ProgressBar.tag = 'ProgressBar'.toLowerCase(); ProgressBar.render = function () { return ProgressBar_({ class: 'as-progress-bar', child: { class: 'as-progress-bar-value' } }); }; ProgressBar.property = {}; /** * @type {ProgressBar} */ ProgressBar.property.variant = { set: function (value) { if (this._variant) { this.removeClass('as-variant-' + this._variant); } if (value) { this.addClass('as-variant-' + value) } else { value = null; } this._variant = value; }, get: function () { return this._variant; } }; /** * @type {ProgressBar} */ ProgressBar.property.value = { set: function (value) { value = Math.max(0, Math.min(1, value || 0)); this._value = value; this.$value.addStyle('width', value * 100 + '%'); }, get: function () { return this._value; } }; ProgressBar.property.animated = { set: function (value) { value = !!value; this._striped = value; if (value) { this.addClass('as-animated'); } else { this.removeClass('as-animated'); } }, get: function () { return this._animated; } } ProgressBar.property.striped = { set: function (value) { value = !!value; this._striped = value; if (value) { this.addClass('as-striped'); } else { this.removeClass('as-striped'); } }, get: function () { return this._striped; } } ACore["c" /* default */].install(ProgressBar); /* harmony default export */ var js_ProgressBar = (ProgressBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/quicklistbutton.css var quicklistbutton = __webpack_require__(128); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/FollowerToggler.js var FollowerToggler_ = ACore["c" /* default */]._; var FollowerToggler_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function FollowerToggler() { this.defineEvent(['close', 'open', 'preopen']); this.on('click', this.eventHandler.click); this.addClass('as-follower-trigger'); this.$follower = null; this._opened = false; } FollowerToggler.tag = 'FollowerToggler'.toLowerCase(); FollowerToggler.render = function () { return FollowerToggler_('div'); }; FollowerToggler.prototype.toggle = function () { if (this._opened) this.close(); else this.open(); }; FollowerToggler.prototype.open = function () { if (this._opened) return; this._opened = true; this.addClass('as-follower-trigger-open'); if (!this.$follower) return; this.emit('preopen', { name: 'preopen', target: this }, this); var thisTg = this; setTimeout(function () { thisTg.$follower.refollow(); thisTg.$follower.removeClass('absol-follower-hidden'); document.body.addEventListener('click', thisTg.eventHandler.clickBody); thisTg.emit('open', { name: 'open', target: this }, this); }, 1); }; FollowerToggler.prototype.close = function () { if (!this._opened) return; this._opened = false; this.removeClass('as-follower-trigger-open'); if (!this.$follower) return; this.$follower.unfollow(); this.$follower.addClass('absol-follower-hidden'); document.body.removeEventListener('click', this.eventHandler.clickBody); this.emit('close', { name: 'close', target: this }, this); }; FollowerToggler.prototype.bindFollower = function (elt) { if (this.$follower) { this.$follower.followTarget = null; } if (elt && elt.refollow) { if (this._opened) elt.removeClass('absol-follower-hidden'); else elt.addClass('absol-follower-hidden'); elt.followTarget = this; this.$follower = elt; } else { throw new Error("Must be a follower!"); } } FollowerToggler.eventHandler = {}; FollowerToggler.eventHandler.clickBody = function (event) { if (EventEmitter["b" /* default */].hitElement(this, event) || EventEmitter["b" /* default */].hitElement(this.$follower, event)) return; this.close(); }; FollowerToggler.eventHandler.click = function () { this.toggle(); }; ACore["c" /* default */].install(FollowerToggler); /* harmony default export */ var js_FollowerToggler = (FollowerToggler); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/QuickListButton.js var QuickListButton_ = ACore["c" /* default */]._; var QuickListButton_$ = ACore["c" /* default */].$; /**** * @extends FollowerToggler * @constructor */ function QuickListButton() { this.$shareFollower = QuickListButton.getFollower(); QuickListButton_({ tag: 'followertoggler', elt: this, on: { preopen: this.eventHandler.preopen, close: this.eventHandler.closeFollower } }); this.bindFollower(this.$shareFollower); this.$iconCtn.remove(); this.$content.addChild(this.$iconCtn); this._items = this._items; this._anchor = []; this.$list = null; this._listUpdated = true; this._opened = false; this.anchor = [12, 13, 15, 14];//todo: add property } QuickListButton.$follower = QuickListButton_('follower.as-quick-list-button-follower'); QuickListButton.getFollower = function () { if (!QuickListButton.$follower) QuickListButton.$follower = QuickListButton_('follower.as-quick-list-button-follower'); return QuickListButton.$follower; }; QuickListButton.tag = 'QuickListButton'.toLowerCase(); QuickListButton.render = function () { return QuickListButton_({ tag: 'flexiconbutton', class: 'as-quick-list-button', extendEvent: 'select', props: { text: "+ Thêm", icon: 'span.mdi.mdi-menu-down' } }); }; QuickListButton.property = {}; QuickListButton.property.items = { set: function (value) { value = value || []; this._items = value; this._listUpdated = false; }, get: function () { return this._items; } }; /** * @type {QuickListButton} */ QuickListButton.eventHandler = {}; QuickListButton.eventHandler.preopen = function () { this.$shareFollower.addTo(document.body); this.$shareFollower.anchor = this.anchor; if (this.$list == null) { this.$list = QuickListButton_('selectlist.absol-bscroller') .on('pressitem', this.eventHandler.pressitem); } if (!this._listUpdated) { this._listUpdated = true; this.$list.items = this._items; } this.$shareFollower.addChild(this.$list); this.$shareFollower.on({ preupdateposition: this.eventHandler.preUpdatePosition, }); }; QuickListButton.eventHandler.preUpdatePosition = function () { var bound = this.getBoundingClientRect(); var screenSize = Dom["b" /* default */].getScreenSize(); var maxHeight = Math.max(screenSize.height - bound.bottom, bound.top) - 10; this.$list.addStyle('max-height', maxHeight + 'px'); }; QuickListButton.eventHandler.closeFollower = function () { this.$shareFollower.off({ preupdateposition: this.eventHandler.preUpdatePosition }); }; QuickListButton.eventHandler.pressitem = function (event) { this.close(); this.emit('select', Object.assign({}, event, { type: 'select', target: this })); }; ACore["c" /* default */].install(QuickListButton); /* harmony default export */ var js_QuickListButton = (QuickListButton); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selectlist.css var selectlist = __webpack_require__(34); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectListItem.js var SelectListItem_ = ACore["c" /* default */]._; var SelectListItem_$ = ACore["c" /* default */].$; function SelectListItem() { var res = SelectListItem_({ class: 'absol-selectlist-item', child: [ { tag: 'span', class: 'absol-selectlist-item-text', child: { text: '' } }, { class: 'absol-selectlist-item-desc-container', child: { tag: 'span', class: 'absol-selectlist-item-desc', child: { text: '' } } } ] }); res.$text = SelectListItem_$('span.absol-selectlist-item-text', res); res.$textValue = res.$text.childNodes[0]; res.$descCtn = SelectListItem_$('.absol-selectlist-item-desc-container', res); res.$desc = SelectListItem_$('span.absol-selectlist-item-desc', res.$descCtn); res.$descValue = res.$desc.childNodes[0]; res._extendClasses = []; res._extendStyle = {}; res._data = ""; res._level = 0; return res; } //bold 14pt arial SelectListItem.property = {}; SelectListItem.property.extendClasses = { set: function (value) { var i; for (i = 0; i < this._extendClasses.length; ++i) { this.removeClass(this._extendClasses[i]); } this._extendClasses = []; if (typeof value == 'string') value = value.trim().split(/\s+/); value = value || []; for (i = 0; i < value.length; ++i) { this._extendClasses.push(value[i]); this.addClass(value[i]); } }, get: function () { return this._extendClasses; } }; SelectListItem.property.extendStyle = { set: function (value) { this.removeStyle(this._extendStyle); this._extendStyle = Object.assign({}, value || {}); this.addStyle(this._extendStyle); }, get: function () { return this._extendClasses; } }; SelectListItem.property.data = { set: function (value) { this._data = value; if (typeof value == 'string') { this.$textValue.data = value; this.$descValue.data = ''; this.level = 0; this.extendClasses = ''; this.extendStyle = {}; this.lastInGroup = false; this.isLeaf = false; this.selected = false; } else { this.$textValue.data = value.text || ''; this.$descValue.data = value.desc || ''; this.level = value.level || 0; this.extendClasses = value.extendClasses; this.extendStyle = value.extendStyle; this.lastInGroup = !!(value.lastInGroup); this.isLeaf = !!(value.isLeaf); this.selected = !!(value.selected); } }, get: function () { return this._data; } }; SelectListItem.property.value = { get: function () { return (typeof this._data == "string") ? this._data : this._data.value; } }; SelectListItem.property.text = { get: function () { return (typeof this._data == "string") ? this._data : this._data.text; } }; SelectListItem.property.desc = { get: function () { return (typeof this._data == "string") ? undefined : this._data.desc; } }; SelectListItem.property.level = { set: function (value) { value = value || 0; this._level = value; this.$text.addStyle('margin-left', value * 0.9 + 'em'); }, get: function () { return this._level; } }; SelectListItem.property.lastInGroup = { set: function (value) { if (value) { this.addClass('as-last-in-group'); } else { this.removeClass('as-last-in-group'); } }, get: function () { return this.containsClass('as-last-in-group'); } }; SelectListItem.property.isLeaf = { set: function (value) { if (value) { this.addClass('as-is-leaf'); } else { this.removeClass('as-is-leaf'); } }, get: function () { return this.containsClass('as-is-leaf'); } }; SelectListItem.property.selected = { set: function (value) { if (value) { this.addClass('as-selected'); } else { this.removeClass('as-selected'); } }, get: function () { return this.containsClass('as-selected'); } }; ACore["c" /* default */].install('SelectListItem'.toLowerCase(), SelectListItem); /* harmony default export */ var js_SelectListItem = (SelectListItem); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectList.js var SelectList_ = ACore["c" /* default */]._; var SelectList_$ = ACore["c" /* default */].$; var isSupportedVar = window.CSS && window.CSS.supports && window.CSS.supports('--fake-var', 'red'); /** * Setup css */ if (isSupportedVar) { SelectList.$dynamicStyle = (function () { var cssElt = SelectList_('style#selectlist-dynamic-style'); var cssCode = [ '.absol-selectlist-item>span {', ' margin-right: calc(0.35em + var(--select-list-desc-width));', '}', '.absol-selectlist-item-desc-container {', ' width: var(--select-list-desc-width);', '}' ]; cssElt.innerHTML = cssCode.join('\n'); cssElt.addTo(document.head); return cssElt; })(); } var itemPool = []; function onMousedownItem(event) { if (EventEmitter["b" /* default */].isMouseRight(event)) return; var thisSL = this.$parent; if (thisSL) { thisSL.value = this.value; thisSL.emit('pressitem', { type: 'pressitem', target: thisSL, itemElt: this, value: this.value, data: this.data }); } } function SelectList_makeItem() { return SelectList_({ tag: 'selectlistitem', on: { mousedown: onMousedownItem } }); } function requireItem($parent) { var item; if (itemPool.length > 0) { item = itemPool.pop(); } else { item = SelectList_makeItem(); } item.$parent = $parent; return item; } function releaseItem(item) { item.$parent = null; item.removeClass('selected'); itemPool.push(item); }; function measureMaxDescriptionWidth(items) { var maxDescWidth = 0; var maxText = 0; var maxEst = 0; var est; for (var i = 0; i < items.length; ++i) { if (items[i].desc) { est = estimateWidth14(items[i].desc); if (est > maxEst) { maxEst = est; maxText = items[i].desc; } } } if (maxText) maxDescWidth = utils_measureText(maxText, 'italic 14px sans-serif').width; return maxDescWidth; }; function measureMaxTextWidth(items) { var maxTextWidth = 0; var maxText = 0; var maxEst = 0; var maxLv = 0; var est; var text; var item; for (var i = 0; i < items.length; ++i) { item = items[i]; if (item.text) { text = item.text; est = estimateWidth14(text) + 14 * 0.9 * (item.level || 0); if (est > maxEst) { maxEst = est; maxText = text; maxLv = item.level||0; } } } if (maxText) maxTextWidth = 14 * 0.9 * maxLv + utils_measureText(maxText, '14px Arial, Helvetica, sans-serif').width + 14;//padding left, right 7px return maxTextWidth; } function measureListHeight(items) { var border = 0; var n = items.length - 1; return items.length * 20 + border; } function measureListSize(items) { var descWidth = measureMaxDescriptionWidth(items); var textWidth = measureMaxTextWidth(items); var width = textWidth; if (descWidth > 0) { width += descWidth + 14; } var height = measureListHeight(items); return { width: width, height: height, descWidth: descWidth, textWidth: textWidth }; } /*global absol*/ /*** * @extends AElement * @constructor */ function SelectList() { var thisSL = this; this.defineEvent(['pressitem', 'cancelasync', 'valuevisibilityasync', 'finishasync', 'sizechangeasync']); this.$attachhook = SelectList_('attachhook').addTo(this); this.sync = new Promise(function (rs) { thisSL.$attachhook.once('error', rs); }); this.$items = []; this.$itemByValue = {};//quick find element this.$selectedItem = undefined; this.measuredSize = { width: 0, height: 0, descWidth: 0, textWidth: 0 }; this._itemSession = 0; this._finished = true; }; SelectList.tag = "SelectList".toLowerCase(); SelectList.render = function () { return SelectList_('.absol-selectlist'); }; SelectList.prototype._updateSelectedItem = function () { var newSelectedItemElt = this.$itemByValue[this._selectValue]; if (newSelectedItemElt != this.$selectedItem) { if (this.$selectedItem) { this.$selectedItem.removeClass('selected'); } if (newSelectedItemElt) { newSelectedItemElt.addClass('selected'); this.$selectedItem = newSelectedItemElt; } } }; SelectList.prototype._requireItems = function (itemCout) { var item; while (this.$items.length < itemCout) { item = requireItem(this); this.$items.push(item); this.addChild(item); } while (this.$items.length > itemCout) { item = this.$items.pop(); item.remove(); releaseItem(item); } }; SelectList.prototype._assignItems = function (from, to) { var foundSelected = false; var itemElt; var item; for (var i = from; i < to; ++i) { itemElt = this.$items[i]; item = this._items[i]; itemElt.data = item; itemElt.__index__ = i; if (this.$itemByValue[item.value]) { console.warn('Value ' + this.$items[i].value + ' is duplicated!'); } else { this.$itemByValue[item.value] = itemElt; if (this._selectValue == item.value) { itemElt.addClass('selected'); this.$selectedItem = itemElt; foundSelected = true; } else { itemElt.removeClass('selected'); } } } return foundSelected; }; SelectList.prototype.setItemsAsync = function (items) { //start process this._finished = false; var session = Math.floor(Math.random() * 1000000); this._itemSession = session; this._items = items || []; this.$itemByValue = {}; this.measuredSize = measureListSize(items); this.style.setProperty('--select-list-desc-width', this.measuredSize.descWidth + 'px'); //addStyle notWork because of convert to cameCase var thisSL = this; var i = 0; var limit = 20; function tick() { if (thisSL._itemSession != session) { thisSL.emit('cancelasync', { session: session, type: 'cancelasync' }, this); return; } if (i >= items.length) { thisSL._updateSelectedItem(); thisSL._finished = false; thisSL.emit('finishasync', { session: session, type: 'finishasync' }, this); return; } var n = Math.min(items.length - i, limit); var itemCout = i + n; thisSL._requireItems(itemCout); i = itemCout; var foundSelected = thisSL._assignItems(itemCout - n, itemCout); if (foundSelected) { thisSL.emit('valuevisibilityasync', { session: session, type: 'valuevisibilityasync', itemElt: thisSL.$items[i] }, thisSL); } thisSL.emit('sizechangeasync', { session: session, type: 'sizechangeasync' }, this); setTimeout(tick, 2); } setTimeout(tick, 2); return Object.assign({ session: session }, this.measuredSize); }; SelectList.prototype.setItems = function (items) { this._finished = false; var session = Math.floor(Math.random() * 1000000); this._itemSession = session; this._items = items || []; this.$itemByValue = {}; this.measuredSize = measureListSize(items); this.style.setProperty('--select-list-desc-width', this.measuredSize.descWidth + 'px'); //addStyle notWork because of convert to cameCase var itemCount = items.length; this._requireItems(itemCount); this._assignItems(0, itemCount); this._finished = true; return { session: this._itemSession, width: this._descWidth + this._textWidth + 14, height: this._height } }; SelectList.property = {}; /** * @type {SelectList} */ SelectList.property.items = { set: function (value) { value = value || []; this.setItems(value); }, get: function () { return this._items || []; } }; SelectList.property.value = { set: function (value) { this._selectValue = value; this._updateSelectedItem(); }, get: function () { return this._selectValue; } }; SelectList.property.item = { get: function () { if (this.$selectedItem) return this.$selectedItem.data; return undefined; } }; SelectList.property.selectedIndex = { get: function () { throw new Error("selectedIndex getter is deprecated"); } }; SelectList.prototype.init = function (props) { props = props || {}; var value = props.value; delete props.value; this.super(props); if (value !== undefined) this.value = value; }; SelectList.eventHandler = {}; ACore["c" /* default */].install(SelectList); /* harmony default export */ var js_SelectList = (SelectList); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/QuickMenu.js var QuickMenu_isMobile = BrowserDetector["a" /* default */].isMobile; var QuickMenu_ = ACore["c" /* default */]._; var QuickMenu_$ = ACore["c" /* default */].$; function QuickMenu() { //like context menu without right-click this._contextMenuSync = Promise.resolve(); } QuickMenu.tag = 'QuickMenu'.toLowerCase(); QuickMenu.render = function () { return QuickMenu_({ tag: 'vmenu', extendEvent: 'requestcontextmenu', class: [ 'as-quick-menu', 'as-bscroller' ], style: { 'overflow-y': 'auto', 'box-sizing': 'border-box' } }); }; ACore["c" /* default */].install(QuickMenu); QuickMenu.PRIORITY_ANCHORS = [0, 3, 7, 4, 1, 2, 6, 5]; QuickMenu.DEFAULT_ANCHOR = 0; QuickMenu.$elt = QuickMenu_('quickmenu'); QuickMenu.$element = undefined; QuickMenu.$anchor = QuickMenu_('.absol-context-menu-anchor.as-context-menu-ctn'); QuickMenu.$anchor.addChild(QuickMenu.$elt); QuickMenu._acceptAnchors = 0; QuickMenu._previewAnchor = QuickMenu.DEFAULT_ANCHOR; QuickMenu._session = Math.random() * 10000000000 >> 0; QuickMenu._menuListener = undefined; QuickMenu._scrollOutListener = undefined; QuickMenu.$elt.on('press', function (event) { if (QuickMenu._menuListener) QuickMenu._menuListener(cleanMenuItemProperty(event.menuItem)); }); QuickMenu.updatePosition = function () { if (!QuickMenu.$element) return; var menu = QuickMenu.$elt; var anchor = QuickMenu.$anchor; var eBound = QuickMenu.$element.getBoundingClientRect(); var outBound = Object(Dom["f" /* traceOutBoundingClientRect */])(QuickMenu.$element); if (eBound.bottom < outBound.top || eBound.left > outBound.right || eBound.top > outBound.bottom || eBound.right < outBound.left) { QuickMenu._scrollOutListener && QuickMenu._scrollOutListener(); } var qBound = menu.getBoundingClientRect(); outBound = Object(Dom["d" /* getScreenSize */])(); outBound.left = 0; outBound.right = outBound.width; outBound.top = 0; outBound.bottom = outBound.height; //padding outBound.left += 2; outBound.top += 2; outBound.bottom -= 2; outBound.right -= 2; outBound.height -= 4; outBound.width -= 4; var getPos = function (anchor) { anchor = anchor % 8; var x = 0; var y = 0; if (anchor == 0 || anchor == 3) { y = eBound.top; } if (anchor == 0 || anchor == 7) { x = eBound.right; } if (anchor == 1 || anchor == 6) { x = eBound.left; } if (anchor == 1 || anchor == 2) { y = eBound.bottom; } if (anchor == 2 || anchor == 5) { x = eBound.right - qBound.width; } if (anchor == 3 || anchor == 4) { x = eBound.left - qBound.width; } if (anchor == 4 || anchor == 7) { y = eBound.bottom - qBound.height; } if (anchor == 5 || anchor == 6) { y = eBound.top - qBound.height; } return { x: x, y: y }; }; var pos; var bestSquare = -1; var bestRect; var priority = ((typeof QuickMenu._previewAnchor === 'number') ? [QuickMenu._previewAnchor] : []).concat(QuickMenu._acceptAnchors); if (priority.length) { var cAnchor; var outRect = new Math_Rectangle(outBound.left, outBound.top, outBound.width, outBound.height); var menuRect; var viewSquare; var cPos; for (var i = 0; i < priority.length; ++i) { cAnchor = priority[i]; cPos = getPos(cAnchor); menuRect = new Math_Rectangle(cPos.x, cPos.y, qBound.width, qBound.height); viewSquare = outRect.collapsedSquare(menuRect); if (viewSquare - 0.01 > bestSquare) { bestSquare = viewSquare; pos = cPos; QuickMenu._previewAnchor = cAnchor; bestRect = outRect.collapsedRect(menuRect); } } anchor.addStyle({ left: pos.x + 'px', top: pos.y + 'px' }); } else { anchor.removeStyle({ left: null, top: null }); } }; QuickMenu._scrollEventHandler = QuickMenu.updatePosition.bind(QuickMenu); QuickMenu.$scrollTrackElements = []; QuickMenu.show = function (element, menuProps, anchor, menuListener, darkTheme) { var menuElt = QuickMenu.$elt; var anchorElt = QuickMenu.$anchor; //untrack all element QuickMenu.$scrollTrackElements.forEach(function (e) { if (e.removeEventListener) e.removeEventListener('scroll', QuickMenu._scrollEventHandler, false); else e.dettachEvent('onscroll', QuickMenu._scrollEventHandler, false); }); QuickMenu.$scrollTrackElements = []; if (typeof anchor == 'number') { QuickMenu._acceptAnchors = [anchor]; } else if (anchor instanceof Array) { QuickMenu._acceptAnchors = anchor; } else if (anchor === 'modal') { QuickMenu._acceptAnchors = []; } else { QuickMenu._acceptAnchors = QuickMenu.PRIORITY_ANCHORS; } if (anchor === 'modal') { QuickMenu.$anchor.addClass('as-anchor-modal'); } else { QuickMenu.$anchor.removeClass('as-anchor-modal'); } QuickMenu._previewAnchor = QuickMenu._acceptAnchors[0]; QuickMenu._session = Math.random() * 10000000000 >> 0; QuickMenu.$anchor.addTo(document.body) Dom["b" /* default */].addToResizeSystem(QuickMenu.$elt); QuickMenu.$elt.updateSize = QuickMenu.updatePosition.bind(QuickMenu); QuickMenu.$element = element; QuickMenu.$element.classList.add('as-quick-menu-attached'); QuickMenu._menuListener = menuListener; Object.assign(menuElt, menuProps); if (darkTheme) anchorElt.addClass('dark'); else anchorElt.removeClass('dark'); menuElt.addStyle('visibility', 'hidden');//for prevent size change blink QuickMenu.$anchor.addClass('absol-active'); QuickMenu.updatePosition(); setTimeout(function () { menuElt.addStyle('visibility', 'visible'); }, QuickMenu_isMobile ? 33 : 2); //track element var trackElt = element.parentElement; while (trackElt) { // trackElt.addEventListener('scroll', QuickMenu._scrollEventHandler, false); if (trackElt.addEventListener) trackElt.addEventListener('scroll', QuickMenu._scrollEventHandler, false); else trackElt.attachEvent('onscroll', QuickMenu._scrollEventHandler, false); QuickMenu.$scrollTrackElements.push(trackElt); trackElt = trackElt.parentElement; } if (document.addEventListener) { document.addEventListener('scroll', QuickMenu._scrollEventHandler, false); } else { document.attachEvent('onscroll', QuickMenu._scrollEventHandler, false); } QuickMenu.$scrollTrackElements.push(document); return QuickMenu._session; }; QuickMenu.close = function (session) { if (session !== true && session !== QuickMenu._session) return; QuickMenu._session = Math.random() * 10000000000 >> 0; if (QuickMenu.$element) QuickMenu.$element.classList.remove('as-quick-menu-attached'); QuickMenu.$element = undefined; QuickMenu._menuListener = undefined; QuickMenu._previewAnchor = QuickMenu.DEFAULT_ANCHOR; //untrack all element QuickMenu.$scrollTrackElements.forEach(function (e) { e.removeEventListener('scroll', QuickMenu._scrollEventHandler, false); }); QuickMenu.$scrollTrackElements = []; var menuElt = QuickMenu.$elt; menuElt.removeStyle('visibility');//for prevent size change blink menuElt.removeStyle({ left: true, top: true }); QuickMenu.$anchor.removeClass('absol-active'); QuickMenu.$anchor.remove(); }; QuickMenu.showWhenClick = function (element, menuProps, anchor, menuListener, darkTheme) { var res = { menuProps: menuProps, anchor: anchor, currentSession: undefined, element: element, menuListener: menuListener, darkTheme: darkTheme }; var clickHandler = function () { if (QuickMenu._session === res.currentSession) return; res.currentSession = QuickMenu.show(res.element, res.menuProps, res.anchor, res.menuListener, res.darkTheme); var finish = function () { document.body.removeEventListener('click', finish, false); QuickMenu.close(res.currentSession); res.currentSession = undefined; if (QuickMenu._scrollOutListener === finish) QuickMenu._scrollOutListener = undefined; }; QuickMenu._scrollOutListener = finish; setTimeout(function () { document.body.addEventListener('click', finish, false); }, 10) }; res.remove = function () { element.removeEventListener('click', clickHandler, false); element.classList.remove('as-quick-menu-trigger'); }; element.addEventListener('click', clickHandler, false); element.classList.add('as-quick-menu-trigger'); return res; }; /** * @typedef {Object} QuickMenuAdaptor * @property {Function} getFlowedElement default is trigger * @property {Function} getMenuProps define menuProps if un-change * @property {Function} getAnchor default is 'auto', define anchor if un-change * @property {Function} onClose callback * @property {Function} onOpen callback * @property {Function} onSelect calback * @property {Function} isDarkTheme default is false, define darkThem if un-change * * * @typedef {Object} QuickMenuDataHolder * @property {Function} remove * * @param {Element} trigger * @param {QuickMenuAdaptor} adaptor * @returns {QuickMenuDataHolder} */ QuickMenu.toggleWhenClick = function (trigger, adaptor) { var res = { trigger: trigger, adaptor: adaptor, currentSession: undefined, }; var clickHandler = function () { if (QuickMenu._session === res.currentSession) return; res.currentSession = QuickMenu.show(res.adaptor.getFlowedElement ? res.adaptor.getFlowedElement() : trigger, res.adaptor.getMenuProps ? res.adaptor.getMenuProps() : (adaptor.menuProps || []), res.adaptor.getAnchor ? res.adaptor.getAnchor() : (adaptor.anchor || 'auto'), res.adaptor.onSelect, res.adaptor.isDarkTheme ? res.adaptor.isDarkTheme() : !!res.adaptor.darkTheme); if (res.adaptor.onOpen) res.adaptor.onOpen(); var finish = function () { document.body.removeEventListener('click', finish, false); QuickMenu.close(res.currentSession); if (adaptor.onClose) adaptor.onClose(); res.currentSession = undefined; if (QuickMenu._scrollOutListener === finish) QuickMenu._scrollOutListener = undefined; }; QuickMenu._scrollOutListener = finish; setTimeout(function () { document.body.addEventListener('click', finish, false); }, 10); }; res.remove = function () { trigger.removeEventListener('click', clickHandler, false); trigger.classList.remove('as-quick-menu-trigger'); }; trigger.addEventListener('click', clickHandler, false); trigger.classList.add('as-quick-menu-trigger'); return res; }; /* harmony default export */ var js_QuickMenu = (QuickMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/quickpath.css var quickpath = __webpack_require__(131); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/QuickPath.js var QuickPath_ = ACore["c" /* default */]._; var QuickPath_$ = ACore["c" /* default */].$; function QuickPath() { this._holders = []; } /** * @type {QuickPath} */ QuickPath.eventHandler = {}; QuickPath.eventHandler.click = function (event) { var button = this._fileButton(event.target) if (button) this.pressButton(button); }; QuickPath.tag = 'QuickPath'.toLowerCase(); /** * @returns {QuickPath} */ QuickPath.render = function () { return QuickPath_({ class: 'absol-quick-path', extendEvent: ['change', 'press'] }); }; QuickPath.prototype.updatePath = function () { this.clearChild(); var self = this; this._holders = this._path.map(function (data, index) { var holder = self._createButton(data, index); holder.buttom.addTo(self); return holder; }) }; QuickPath.prototype._createButton = function (pathItem, index) { var buttom = QuickPath_({ tag: 'expnode', class: 'absol-quick-path-btn', attr: { 'data-index': '' + index } }); buttom.status = 'close'; buttom.name = pathItem.name; if (pathItem.icon) { buttom.icon = pathItem.icon; } if (pathItem.iconSrc) { buttom.icon = { tag: 'img', props: { src: pathItem.iconSrc } }; } var thisQuickpath = this; if (pathItem.items) { js_QuickMenu.toggleWhenClick(buttom, { getAnchor: function () { return [1, 2, 6, 5]; }, getMenuProps: function () { return { extendStyle: { fontSize: buttom.getComputedStyleValue('font-size') }, items: pathItem.items.map(function (it, menuIndex) { var res = { text: it.name, menuIndex: menuIndex, icon: it.iconSrc ? { tag: 'img', props: { src: it.iconSrc } } : (it.icon || undefined), extendStyle: it.extendStyle || {}, extendClass: it.extendClass || [], } return res; }) } }, onOpen: function () { buttom.status = 'open'; thisQuickpath.emit('press', { target: thisQuickpath, pathItem: pathItem, index: index }, thisQuickpath); }, onClose: function () { buttom.status = 'close'; }, onSelect: function (item) { var dataItem = pathItem.items[item.menuIndex]; thisQuickpath.emit('change', { target: thisQuickpath, pathItem: pathItem, item: dataItem, index: index }, thisQuickpath); thisQuickpath.status = 'close'; } }) } else { buttom.on('click', function () { this.emit('press', { target: thisQuickpath, pathItem: pathItem, index: index }, thisQuickpath); }); } return { buttom: buttom }; } QuickPath.prototype.push = function (item) { this.path.push(item); var holder = this._createButton(item, this.path.length - 1); this.addChild(holder, buttom); this._holders.push(holder); }; QuickPath.prototype.clear = function () { this.path = []; this._holders = []; } QuickPath.prototype.pop = function () { //todo var res = this.path.pop(); var button = QuickPath_$('button[data-index="' + this.path.length + '"]'); if (button) button.remove(); return res; }; QuickPath.property = {}; /** * @typedef PathElement * @property {String} name * @property {String} icon * @property {Array<String>} items * */ QuickPath.property.path = { /** * @param {Array<PathElement>} value */ set: function (value) { this._path = value || []; this.updatePath(); }, get: function () { return this._path || []; } }; QuickPath.property.textPath = { get: function () { return this.path.join('/'); } }; ACore["c" /* default */].install('quickpath', QuickPath); /* harmony default export */ var js_QuickPath = (QuickPath); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/radiobutton.css var radiobutton = __webpack_require__(133); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/RadioButton.js var RadioButton_ = ACore["c" /* default */]._; var RadioButton_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function RadioButton() { var thisRB = this; this.defineEvent('change'); this.$input = RadioButton_$('input', this).on('change', this.notifyChange.bind(this)); OOP["a" /* default */].drillProperty(this, this.$input, ['value', 'checked']); } RadioButton.tag = 'radiobutton'; RadioButton.radioProto = RadioButton_( '<svg class="absol-radio-icon" width="20" height="20" version="1.1" viewBox="0 0 5.2917 5.2917"' + ' xmlns="http://www.w3.org/2000/svg">' + ' <g transform="translate(0 -291.71)">' + ' <circle class="bound" cx="2.6458" cy="294.35" r="2.4626" style="stroke-opacity:.99497;stroke-width:.26458;" />' + ' <circle class="dot" cx="2.6458" cy="294.35" r= "0.92604" style="fill-rule:evenodd;" />' + ' </g>' + '</svg>' ) RadioButton.render = function () { return RadioButton_({ tag:'label', class: 'absol-radio-button', child: [ { tag: 'input', attr: { type: 'radio' } }, RadioButton.radioProto.cloneNode(true) ] }); }; RadioButton.prototype.notifyChange = function () { this.emit('change', { type: 'change', checked: this.checked, target: this }, this); }; RadioButton.prototype.getAllFriend = function () { return Radio.getAllByName(this.name); }; RadioButton.attribute = { checked: { set: function (value) { if (value == 'false' || value == null) { this.checked = false; } else { this.checked = true; } }, get: function () { return this.checked ? 'true' : 'false' }, remove: function () { this.checked = false; } }, disabled: { set: function (value) { if (value == 'false' || value == null) { this.disabled = false; } else { this.disabled = true; } }, get: function () { return this.disabled ? 'true' : 'false' }, remove: function () { this.disabled = false; } }, name: { set: function (value) { this.name = value; }, get: function () { return this.name; }, remove: function () { this.name = null; } } } RadioButton.property = { name: { set: function (name) { if (name == null) this.$input.removeAttribute('name'); else this.$input.setAttribute('name', name); }, get: function () { return this.$input.getAttribute('name'); } }, disabled: { set: function (value) { this.$input.disabled = !!value; if (value) { this.addClass('disabled'); } else { this.removeClass('disabled'); } }, get: function () { return this.$input.disabled; } } }; RadioButton.getAllByName = function (name) { return (document.getElementsByTagName('input') || []).filter(function (elt) { return elt.getAttribute('type') == 'radio' && elt.getAttribute('name') == name; }); }; RadioButton.getValueByName = function (name) { var inputs = RadioButton.getAllByName(name); var res = null; var input; for (var i = 0; i < inputs.length; ++i) { input = inputs[i]; if (input.checked) { res = input.value; } } return res; }; RadioButton.autoReplace = function () { var placeHolders = Array.prototype.slice.call(document.getElementsByTagName(this.tag)); var ph; var attOfPH; var attrs; var style; var classList; var attNode; var attrName, attrValue; var props; for (var i = 0; i < placeHolders.length; ++i) { ph = placeHolders[i]; attOfPH = ph.attributes; classList = []; style = {}; attrs = {}; props = {}; for (var j = 0; j < attOfPH.length; ++j) { attNode = attOfPH[j]; attrName = attNode.nodeName; attrValue = attNode.nodeValue; if (attrName == 'style') { attrValue.trim().split(';').reduce(function (style, prop) { var p = prop.split(':'); if (p.length == 2) { style[p[0].trim()] = p[1].trim(); } return style; }, style); } else if (attrName == 'class') { classList = attrValue.trim().split(/\s+/); } else if (attrName == 'onchange') { props.onchange = new Function('event', 'sender', attrValue); } else { attrs[attrName] = attrValue; } } var newElt = RadioButton_({ tag: this.tag, attr: attrs, class: classList, style: style, props: props }); RadioButton_$(ph).selfReplace(newElt); } }; RadioButton.initAfterLoad = function (){ Dom["b" /* default */].documentReady.then(function (){ RadioButton.autoReplace(); }) }; ACore["c" /* default */].install('RadioButton'.toLowerCase(), RadioButton); /* harmony default export */ var js_RadioButton = (RadioButton); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/radio.css var css_radio = __webpack_require__(135); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Radio.js var Radio_ = ACore["c" /* default */]._; var Radio_$ = ACore["c" /* default */].$; var Radio_$$ = ACore["c" /* default */].$$; var _svg = Svg["a" /* default */].ShareInstance._; /*** * @extends AElement * @constructor */ function Radio_Radio() { var thisR = this; this.defineEvent('change'); this.$input = Radio_$('input', this) .on('change', this.notifyChange.bind(this)); this.$labels = Radio_$$('span', this); OOP["a" /* default */].drillProperty(this, this.$input, ['value', 'checked']); } Radio_Radio.tag = 'radio'; Radio_Radio.radioProto = Radio_( '<svg class="absol-radio-icon" width="20" height="20" version="1.1" viewBox="0 0 5.2917 5.2917"' + ' xmlns="http://www.w3.org/2000/svg">' + ' <g transform="translate(0 -291.71)">' + ' <circle class="bound" cx="2.6458" cy="294.35" r="2.4626" style="stroke-opacity:.99497;stroke-width:.26458;" />' + ' <circle class="dot" cx="2.6458" cy="294.35" r= "0.92604" style="fill-rule:evenodd;" />' + ' </g>' + '</svg>' ) Radio_Radio.render = function () { return Radio_({ tag: 'label', class: 'absol-radio', child: [ { tag: 'input', attr: { type: 'radio' } }, { tag: 'span', class: 'absol-radio-left-label' }, Radio_Radio.radioProto.cloneNode(true), { tag: 'span', class: 'absol-radio-right-label' } ] }); }; Radio_Radio.prototype.notifyChange = function () { this.emit('change', { type: 'change', checked: this.checked, target: this }, this); }; Radio_Radio.prototype.getAllFriend = function () { return Radio_Radio.getAllByName(this.name); }; Radio_Radio.attribute = js_RadioButton.attribute; Radio_Radio.property = { name: { set: function (name) { this.$input.setAttribute('name', name); }, get: function () { return this.$input.getAttribute('name'); } }, text: { set: function (value) { value = (value || '').trim(); this.$labels[0].clearChild(); this.$labels[1].clearChild(); if (value) { this.$labels[0].addChild(Radio_({ text: value })); this.$labels[1].addChild(Radio_({ text: value })); } }, get: function () { return this.$labels[0].firstChild.data; } }, disabled: { set: function (value) { this.$input.disabled = !!value; if (value) { this.addClass('disabled'); } else { this.removeClass('disabled'); } }, get: function () { return this.$input.disabled; } } }; Radio_Radio.getAllByName = function (name) { return (Array.apply(null, document.getElementsByTagName('input')) || []).filter(function (elt) { return elt.getAttribute('type') == 'radio' && elt.getAttribute('name') == name; }); }; Radio_Radio.getValueByName = function (name) { var inputs = Radio_Radio.getAllByName(name); var res = null; var input; for (var i = 0; i < inputs.length; ++i) { input = inputs[i]; if (input.checked) { res = input.value; } } return res; }; ACore["c" /* default */].install(Radio_Radio); /* harmony default export */ var js_Radio = (Radio_Radio); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/RemoteSvg.js var RemoteSvg_ = ACore["c" /* default */]._; var RemoteSvg_$ = ACore["c" /* default */].$; function RemoteSvg() { } RemoteSvg.tag = 'RemoteSvg'.toLowerCase(); RemoteSvg.render = function () { return RemoteSvg_('svg').defineEvent('load'); }; RemoteSvg.property = { src: { set: function (value) { this._src = value; var self = this; RemoteSvg.loadIcon(value).then(function (data) { self.emit('load', { target: self, src: value, data: data }, self); self.attr(data.attr); self.init(data.props); }); }, get: function () { return this._name; } } }; RemoteSvg.attribute = { src: { set: function (value) { }, get: function () { }, remove: function () { } } }; RemoteSvg.__cache__ = {}; RemoteSvg.__div_parser__ = document.createElement('div'); RemoteSvg.loadIcon = function (path) { if (RemoteSvg.__cache__[path]) { return RemoteSvg.__cache__[path]; } else { RemoteSvg.__cache__[path] = Network_XHR.getRequest(path, 'text').then(function (result) { RemoteSvg.__div_parser__.innerHTML = result; var svgElt = RemoteSvg_$('svg', RemoteSvg.__div_parser__); var res = { attr: {}, props: {} }; if (svgElt) { Array.prototype.forEach.call(svgElt.attributes, function (attribute) { res.attr[attribute.name] = attribute.value; }); res.props.innerHTML = svgElt.innerHTML; } return res; }, function () { return {}; }); return RemoteSvg.__cache__[path]; } }; ACore["c" /* default */].install(RemoteSvg); /* harmony default export */ var js_RemoteSvg = (RemoteSvg); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/resizebox.css var resizebox = __webpack_require__(137); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/ResizeBox.js var ResizeBox_ = ACore["c" /* default */]._; var ResizeBox_$ = ACore["c" /* default */].$; function ResizeBox() { this.on('mousedown', this.eventHandler.mouseDownBody); this._mousedownEventData = undefined; this._mousemoveEventData = undefined; this._lastClickTime = 0; } ResizeBox.tag = 'ResizeBox'.toLowerCase(); ResizeBox.render = function () { return ResizeBox_({ class: 'as-resize-box', extendEvent: ['beginmove', 'endmove', 'moving', 'click', 'dblclick'],//override click event child: { class: 'as-resize-box-body', child: [ '.as-resize-box-dot.left-top', '.as-resize-box-dot.top', '.as-resize-box-dot.right-top', '.as-resize-box-dot.right', '.as-resize-box-dot.right-bottom', '.as-resize-box-dot.bottom', '.as-resize-box-dot.left-bottom', '.as-resize-box-dot.left' ] } }); }; ResizeBox.eventHandler = {}; ResizeBox.eventHandler.mouseDownBody = function (event) { if (EventEmitter["b" /* default */].isMouseRight(event)) return; event.preventDefault(); this._optionNames = event.target.attr('class').match(/body|left|top|right|bottom/g); var option = this._optionNames.reduce(function (ac, key) { ac[key] = true; return ac; }, {}); this._mousedownEventData = { clientX: event.clientX, clientY: event.clientY, target: this, originEvent: event, prevented: false, preventDefault: function () { this.prevented = true; }, option: option, begin: false, type: 'beginmove' }; ResizeBox_$(document.body).on('mousemove', this.eventHandler.mouseMoveBody); ResizeBox_$(document.body) .on('mouseup', this.eventHandler.mouseFinishBody) .on('mouseleave', this.eventHandler.mouseFinishBody); }; ResizeBox.eventHandler.mouseMoveBody = function (event) { if (this._mousedownEventData.option.body && !this.canMove) return; if (this._mousedownEventData && !this._mousedownEventData.begin && !this._mousedownEventData.prevented) { this.emit('beginmove', this._mousedownEventData, this); if (this._mousedownEventData.prevented) { ResizeBox_$(document.body).off('mousemove', this.eventHandler.mouseMoveBody); } else { this._mousedownEventData.begin = true; ResizeBox_$(document.body) .addClass('as-resize-box-overiding') .addClass(this._optionNames.join('-')); } } if (this._mousedownEventData.begin) { event.preventDefault(); this._mousemoveEventData = { clientX: event.clientX, clientY: event.clientY, clientX0: this._mousedownEventData.clientX, clientY0: this._mousedownEventData.clientY, clientDX: event.clientX - this._mousedownEventData.clientX, clientDY: event.clientY - this._mousedownEventData.clientY, target: this, originEvent: event, option: this._mousedownEventData.option, type: 'moving' }; this.emit('moving', this._mousemoveEventData, this); } }; ResizeBox.eventHandler.mouseFinishBody = function (event) { ResizeBox_$(document.body).off('mousemove', this.eventHandler.mouseMoveBody) .off('mouseup', this.eventHandler.mouseFinishBody) .off('mouseleave', this.eventHandler.mouseFinishBody) .removeClass('as-resize-box-overiding') .removeClass(this._optionNames.join('-')); this._optionNames = undefined; if (this._mousedownEventData.begin) { this._mousefinishEventData = { clientX: event.clientX, clientY: event.clientY, clientX0: this._mousedownEventData.clientX, clientY0: this._mousedownEventData.clientY, clientDX: event.clientX - this._mousedownEventData.clientX, clientDY: event.clientY - this._mousedownEventData.clientY, target: this, originEvent: event, option: this._mousedownEventData.option, type: 'endmove' }; this.emit('endmove', this._mousefinishEventData, this); } else { if (EventEmitter["b" /* default */].hitElement(this, event)) { this.emit('click', event, this); var now = new Date().getTime(); if (now - this._lastClickTime < 500) { this.emit('dblclick', event, this); this._lastClickTime = 0; } this._lastClickTime = now; } } }; ResizeBox.property = {}; ResizeBox.property.canMove = { set: function (value) { if (value) { this.addClass('as-can-move'); } else { this.removeClass('as-can-move'); } }, get: function () { return this.containsClass('as-can-move'); } }; ResizeBox.property.canResize = { set: function (value) { if (value) { this.addClass('as-can-resize'); } else { this.removeClass('as-can-resize'); } }, get: function () { return this.containsClass('as-can-resize'); } }; ResizeBox.property.canClick = { set: function (value) { if (value) { this.addClass('as-can-click'); } else { this.removeClass('as-can-click'); } }, get: function () { return this.containsClass('as-can-click'); } }; ACore["c" /* default */].install(ResizeBox); /* harmony default export */ var js_ResizeBox = (ResizeBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/searcher.css var searcher = __webpack_require__(139); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Searcher.js var Searcher_ = ACore["c" /* default */]._; var Searcher_$ = ACore["c" /* default */].$; ACore["c" /* default */].creator['find-ico'] = function () { var res = Searcher_( '<svg class="find" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' + ' <g transform="matrix(-1 0 0 1 99.478 -193.73)">' + ' <path d="m62.128 199.18c-18.859 0-34.148 15.289-34.148 34.148 0 5.4138 1.26 10.533 3.5026 15.081 0.6886 1.3965 1.4698 2.7392 2.3357 4.02-1.9962 2.1685-31.467 31.596-31.404 33.295 0.21757 5.8346 4.9404 8.7289 9.464 7.855 1.3264-0.25627 30.938-30.639 31.774-31.529 1.3906 0.89633 2.8508 1.6948 4.3702 2.3848 4.2995 1.9526 9.0756 3.04 14.105 3.04 18.859 0 34.147-15.288 34.147-34.147 3e-6 -18.859-15.288-34.148-34.147-34.148zm0.49444 8.2454a26.067 26.067 0 0 1 26.068 26.067 26.067 26.067 0 0 1-26.068 26.068 26.067 26.067 0 0 1-26.067-26.068 26.067 26.067 0 0 1 26.067-26.067z"/>' + ' </g>' + '</svg>' ); return res; }; ACore["c" /* default */].creator['times-circle-ico'] = function () { var res = Searcher_( '<svg class="times" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">\ <g transform="translate(0,-197)">\ <path d="m49.979 236.2-14.231-14.231-10.696 10.696 14.257 14.257-14.351 14.351 10.737 10.737 14.292-14.292 14.292 14.292 10.761-10.761-14.257-14.257 14.316-14.316-10.725-10.725zm50.021 10.804a50 50 0 0 1-50 50 50 50 0 0 1-50-50 50 50 0 0 1 50-50 50 50 0 0 1 50 50z" />\ </g>\ </svg>' ); return res; }; /** * @extends {AElement} * @constructor */ function SearchTextInput() { var thisSTI = this; this.defineEvent(['change', 'modify', 'stoptyping']); this.eventHandler = OOP["a" /* default */].bindFunctions(this, SearchTextInput.eventHandler); this.$button = Searcher_$('button', this); this.$input = Searcher_$('input', this); ['keyup', 'keydown', 'focus', 'blur'].forEach(function (evName){ thisSTI.defineEvent(evName); thisSTI.$input.on(evName, function (event){ thisSTI.emit(evName, event, thisSTI); }); }); this.$input.on('change', this.eventHandler.inputChange); this.$input.on('keyup', this.eventHandler.inputKeyUp); this.$button.on('click', function (event) { thisSTI.$input.value = ''; thisSTI.eventHandler.inputKeyUp(event); setTimeout(function () { thisSTI.focus(); }, 50); }); } SearchTextInput.tag = 'SearchTextInput'.toLowerCase(); SearchTextInput.render = function () { return Searcher_( { class: 'absol-search-text-input', child: [ { class: 'absol-search-text-input-container', child: { tag: 'input', attr: { type: 'search', placeholder: 'search...' } } }, { class: 'absol-search-text-button-container', child: { tag: 'button', child: ['find-ico', 'times-circle-ico'] } } ] } ); }; SearchTextInput.property = { value: { set: function (value) { value = value || ''; this.$input.value = value; this._lastTextModified = value; if (this.value.length > 0) { this.addClass('searching'); } else { this.removeClass('searching'); } }, get: function () { return this.$input.value; } }, placeholder: { set: function (value) { this.$input.attr('placeholder', value); }, get: function () { return this.$placeholder.getAttribute('placeholder'); } } }; SearchTextInput.prototype.focus = function () { this.$input.focus(); }; SearchTextInput.prototype.blur = function () { this.$input.blur(); }; SearchTextInput.eventHandler = {}; SearchTextInput.eventHandler.inputChange = function (event) { event.value = this.value; if (typeof this.onchange == 'function') { this.onchange(event, this); } this.emit('change', event); }; SearchTextInput.eventHandler.inputKeyUp = function (event) { if (this._lastTextModified != this.value) { if (this.value.length > 0) { this.addClass('searching'); } else { this.removeClass('searching'); } event.value = this.value; if (typeof this.onchange == 'function') { this.onchange(event, this); } this.emit('modify', event); if (this._updateTimeOut !== undefined) { clearTimeout(this._updateTimeOut); this._updateTimeOut = undefined; } this._updateTimeOut = setTimeout(function () { this.emit('stoptyping', event); }.bind(this), 500); this._lastTextModified = this.value; } }; ACore["c" /* default */].creator.searchcrosstextinput = function () { var res = Searcher_('searchtextinput', true); return res; }; ACore["c" /* default */].creator.searchtextinput = SearchTextInput; /* harmony default export */ var Searcher = (SearchTextInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selectbox.css var selectbox = __webpack_require__(141); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selectmenu.css var selectmenu = __webpack_require__(35); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selectlistbox.css var selectlistbox = __webpack_require__(144); // CONCATENATED MODULE: ./node_modules/absol/src/String/stringMatching.js /** * * @param {String} a * @param {String} b */ function wordLike(a, b) { var m = a.length; var n = b.length; function map(i, j) { return i * (n + 1) + j; } var Q = Array((m + 1) * (n + 1)).fill(0); for (var i = 0; i < m; ++i) for (var j = 0; j < n; ++j) if (a.charAt(i) == b.charAt(j)) { if (Q[map(i + 1, j + 1)]) { if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + 1) Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1; } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1; } else Q[map(i + 1, j + 1)] = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]); return Q[map(m, n)] / harmonicMean(m, n); } /** * * @param {Array<String>} sq1 * @param {Array<String>} sq2 */ function wordsMatch(sq1, sq2, matchWordPow) { matchWordPow = matchWordPow === undefined ? 1 : matchWordPow; var m = sq1.length; var n = sq2.length; function map(i, j) { return i * (n + 1) + j; } var Q = Array((m + 1) * (n + 1)).fill(0); var e = 0.0; for (var i = 0; i < m; ++i) for (var j = 0; j < n; ++j) { e = Math.pow(wordLike(sq1[i], sq2[j]), matchWordPow); if (Q[map(i + 1, j + 1)]) { if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + e) Q[map(i + 1, j + 1)] = Q[map(i, j)] + e; } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + e; e = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]); if (e > Q[map(i + 1, j + 1)]) Q[map(i + 1, j + 1)] = e; } return Q[map(m, n)]; } function phraseMatch(a, b, matchWordPow) { matchWordPow = matchWordPow || 1; var spliter = /[\s,-\.+?\_]+/; var notEmp = function (e) { return e.length > 0; }; var sq1 = a.toLowerCase().split(spliter).filter(notEmp); var sq2 = b.toLowerCase().split(spliter).filter(notEmp); var wordsMatchScore = wordsMatch(sq1, sq2); var m = sq1.length; var n = sq2.length; return wordsMatchScore / Math.max(harmonicMean(m, n), 1); }; function phraseLike(a, b, matchWordPow) { matchWordPow = matchWordPow || 1; var spliter = /[\s,-\.+?\_]+/; var notEmp = function (e) { return e.length > 0; }; var sq1 = a.toLowerCase().split(spliter).filter(notEmp); var sq2 = b.toLowerCase().split(spliter).filter(notEmp); var m = sq1.length; var n = sq2.length; var wordsMatchScore = wordsMatch(sq1, sq2); return wordsMatchScore / Math.max(harmonicMean(m, n), 1); } // CONCATENATED MODULE: ./node_modules/absol-acomp/js/list/search.js var EXTRA_MATCH_SCORE = 7; var UNCASE_MATCH_SCORE = 4; var UVN_MATCH_SCORE = 3; var EQUAL_MATCH_SCORE = 4; var WORD_MATCH_SCORE = 3; /*** * * @param {SelectionItem} item * @returns {*} */ function prepareSearchForItem(item) { if (!item.text || !item.text.charAt) item.text = item.text + ''; var spliter = /\s+/; item.__text__ = item.text.replace(/([\s\b\-()\[\]]| | | |\s)+/g, ' ').trim(); item.__words__ = item.__text__.split(spliter); item.__textNoneCase__ = item.__text__.toLowerCase(); item.__wordsNoneCase__ = item.__textNoneCase__.split(spliter); item.__nvnText__ = nonAccentVietnamese(item.__text__); item.__nvnWords__ = item.__nvnText__.split(spliter); item.__nvnTextNoneCase__ = item.__nvnText__.toLowerCase(); item.__nvnWordsNoneCase__ = item.__nvnTextNoneCase__.split(spliter); return item; } function prepareSearchForList(items) { var item; for (var i = 0; i < items.length; ++i) { if (typeof items[i] == 'string') { items[i] = { text: items[i], value: items[i] }; } item = items[i]; prepareSearchForItem(item); if (item.items) prepareSearchForList(item.items); } return items; } function calcItemMatchScore(queryItem, item) { var score = 0; if (item.__text__ == queryItem.__text__) score += EQUAL_MATCH_SCORE * queryItem.__text__.length; var extraIndex = item.__text__.indexOf(queryItem.__text__); if (extraIndex >= 0) { score += EXTRA_MATCH_SCORE * queryItem.__text__.length - extraIndex / item.__text__.length; } extraIndex = item.__textNoneCase__.indexOf(queryItem.__textNoneCase__); if (extraIndex >= 0) { score += UNCASE_MATCH_SCORE * queryItem.__text__.length - extraIndex / item.__text__.length; } extraIndex = item.__nvnTextNoneCase__.indexOf(queryItem.__nvnTextNoneCase__); if (extraIndex >= 0) { score += UNCASE_MATCH_SCORE * queryItem.__text__.length - extraIndex / item.__text__.length; } score += wordsMatch(queryItem.__nvnWordsNoneCase__, item.__nvnWordsNoneCase__) / (queryItem.__nvnWordsNoneCase__.length + 1 + item.__nvnWordsNoneCase__.length) * 2 * WORD_MATCH_SCORE; score += wordsMatch(queryItem.__wordsNoneCase__, item.__wordsNoneCase__) / (queryItem.__wordsNoneCase__.length + 1 + item.__wordsNoneCase__.length) * 2 * WORD_MATCH_SCORE; return score; } /*** * * @param {String} query * @param {Array<SelectionItem>} items */ function searchListByText(query, items) { query = (query || '').trim(); if (query.length == 0 || items.length == 0) return items; var queryItem = prepareSearchForItem({ text: query }); var its = items.map(function (item) { return { item: item, score: calcItemMatchScore(queryItem, item) } }); its.sort(function (a, b) { if (b.score - a.score == 0) { if (b.item.__nvnText__ > a.item.__nvnText__) return -1 return 1; } return b.score - a.score; }); var midValue = (its[0].score + its[its.length - 1].score) / 2; if (midValue === 0) midValue += 0.1; if (midValue < 1) midValue = 1; return its.filter(function (it) { return it.score >= midValue; }).map(function (it) { return it.item; }); } /*** * * @param {String} query * @param {Array<SelectionItem>} items */ function searchTreeListByText(query, items) { query = (query || '').trim(); if (query.length == 0 || items.length == 0) return items; var queryItem = prepareSearchForItem({ text: query }); var gmaxScore = 0; var gminScore = 1000; function makeScoreRecursive(item) { var score = calcItemMatchScore(queryItem, item); gmaxScore = Math.max(score, gmaxScore); gminScore = Math.min(score, gminScore); var children = (item.items || []).map(function (item) { return makeScoreRecursive(item); }); var maxScore = children.reduce(function (ac, cr) { return Math.max(ac, cr.maxScore); }, score); return { score: score, maxScore: maxScore, item: item, children: children } } function sortcmp(a, b) { return b.maxScore - a.maxScore; } function filterItems(nodes, medScore) { nodes.sort(sortcmp); return nodes.filter(function (node) { return node.maxScore >= medScore; }).map(function (node) { var res; if (typeof node.item == 'string') { res = node.item; } else { res = Object.assign({}, node.item); if (node.children && node.children.length > 0) { res.items = filterItems(node.children, medScore); if (res.items.length == 0) delete res.items; } } return res; }); } var scoredItems = items.map(makeScoreRecursive); var medianScore = (gminScore + gmaxScore) / 2; var items = filterItems(scoredItems, medianScore); return items; } // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectListBox.js var SelectListBox_ = ACore["c" /* default */]._; var SelectListBox_$ = ACore["c" /* default */].$; var SelectListBox_$$ = ACore["c" /* default */].$$; var VALUE_HIDDEN = -1; var VALUE_NORMAL = 1; /*** * @extends Follower * @constructor */ function SelectListBox() { this._initDomHook(); this._initControl(); this._initScroller(); this._initProperty(); } SelectListBox.tag = 'SelectListBox'.toLowerCase(); SelectListBox.render = function () { return SelectListBox_({ tag: 'follower', attr: { tabindex: 0 }, class: 'as-select-list-box', extendEvent: ['pressitem'], child: [ { class: 'as-select-list-box-search-ctn', child: 'searchtextinput' }, { class: ['as-bscroller', 'as-select-list-box-scroller'], child: [ { class: ['as-select-list-box-content'], child: Array(SelectListBox.prototype.preLoadN).fill('.as-select-list-box-page') } ] }, 'attachhook.as-dom-signal' ] }); }; SelectListBox.prototype.toLoadNextY = 200; SelectListBox.prototype.preLoadN = 3; SelectListBox.prototype._initDomHook = function () { this.$domSignal = SelectListBox_$('attachhook.as-dom-signal', this); this.domSignal = new HTML5_DomSignal(this.$domSignal); this.domSignal.on('viewListAt', this.viewListAt.bind(this)); this.domSignal.on('viewListAtFirstSelected', this.viewListAtFirstSelected.bind(this)); this.domSignal.on('viewListAtCurrentScrollTop', this.viewListAtCurrentScrollTop.bind(this)); }; SelectListBox.prototype._initControl = function () { this._currentOffset = 0; this._startItemIdx = 0; this.$searchInput = SelectListBox_$('searchtextinput', this) .on('stoptyping', this.eventHandler.searchModify); }; SelectListBox.prototype._initScroller = function () { this.$content = SelectListBox_$('.as-select-list-box-content', this); this._estimateHeight = 0; this._pageOffsets = Array(this.preLoadN + 1).fill(0); this.$listPages = SelectListBox_$$('.as-select-list-box-page', this); this.$listScroller = SelectListBox_$('.as-select-list-box-scroller', this) .on('scroll', this.eventHandler.scroll); }; SelectListBox.prototype._initProperty = function () { /*** * items =(search, filler)=> filteredItems =(list to list, tree to list)=> preDisplayItems =(remove hidden item)=> displayItem * */ this._items = []; this._itemNodeList = [];// use for tree this._values = []; this._valueDict = {}; this._itemNodeHolderByValue = {}; // this._filteredItems = [];// not need , only use when search this._preDisplayItems = []; this._displayItems = []; this._searchCache = {}; this._displayValue = VALUE_NORMAL; this.displayValue = VALUE_NORMAL; this.items = []; }; SelectListBox.prototype._requireItem = function (pageElt, n) { var itemElt; while (pageElt.childNodes.length > n) { itemElt = pageElt.lastChild; itemElt.selfRemove(); releaseItem(itemElt); } while (pageElt.childNodes.length < n) { itemElt = requireItem(this); pageElt.addChild(itemElt); } }; SelectListBox.prototype._assignItems = function (pageElt, offset) { var n = Math.min(this._displayItems.length - offset, pageElt.childNodes.length); var itemElt, value; for (var i = 0; i < n; ++i) { itemElt = pageElt.childNodes[i]; itemElt.data = this._displayItems[offset + i]; value = itemElt.value + ''; } }; SelectListBox.prototype._itemsToNodeList = function (items) { return items; }; /*** * * @param {Array<{value:String|Number}>} items * @return {Array<{value:String|Number}>} */ SelectListBox.prototype._filterDisplayItems = function (items) { if (this._displayValue === VALUE_NORMAL) return items; var dict = this._valueDict; return items.filter(function (item) { return !dict[item.value + '']; }); }; SelectListBox.prototype._updateSelectedItem = function () { var valueDict = this._valueDict; this.$listPages.forEach(function (pageElt) { Array.prototype.forEach.call(pageElt.childNodes, function (itemElt) { var value = itemElt.value + ''; if (valueDict[value]) { itemElt.selected = true; } else { itemElt.selected = false; } }); }); }; /*** * * @param {number} offset */ SelectListBox.prototype.viewListAt = function (offset) { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('viewListAt', offset); return; } var fontSize = this.$listScroller.getFontSize() || 14; offset = Math.max(0, Math.min(offset, this._displayItems.length - 1)); var screenSize = Object(Dom["d" /* getScreenSize */])(); var maxItem = Math.ceil(Math.max(window.screen.height, screenSize.height) / 20); var contentBound = this.$content.getBoundingClientRect(); this._pageOffsets[0] = Math.max(offset - maxItem, 0); for (var i = 1; i <= this.preLoadN; ++i) { this._pageOffsets[i] = Math.min(this._pageOffsets[i - 1] + maxItem, this._displayItems.length); } var sIdx, nItem, pageBound; var pageElt; for (var pageIndex = 0; pageIndex < this.preLoadN; ++pageIndex) { sIdx = this._pageOffsets[pageIndex]; nItem = this._pageOffsets[pageIndex + 1] - sIdx; pageElt = this.$listPages[pageIndex]; pageElt.addStyle('top', this._pageOffsets[pageIndex] * 20 + 'px'); this._requireItem(pageElt, nItem); this._assignItems(pageElt, sIdx); pageBound = pageElt.getBoundingClientRect(); } this._updateSelectedItem(); }; SelectListBox.prototype.viewListAtFirstSelected = function () { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('viewListAtFirstSelected'); return; } if (this._displayValue == VALUE_HIDDEN) { return false; } else if (this._values.length > 0) { var value = this._values[0]; var itemHolders = this._displayItemHolderByValue[value + '']; if (itemHolders) { this.domSignal.once('scrollIntoSelected', function () { var holder = itemHolders[0]; this.viewListAt(holder.idx); var itemElt = SelectListBox_$('.as-selected', this.$listScroller); if (itemElt) { var scrollBound = this.$listScroller.getBoundingClientRect(); var itemBound = itemElt.getBoundingClientRect(); this.$listScroller.scrollTop += itemBound.top - scrollBound.top; } }.bind(this)); this.domSignal.emit('scrollIntoSelected'); return true; } else return false; } else return false; }; SelectListBox.prototype.viewListAtCurrentScrollTop = function () { if (!this.isDescendantOf(document.body)) { this.emit('viewListAtCurrentScrollTop'); return; } this.viewListAt(Math.floor(this.$listScroller.scrollTop / 20)); }; SelectListBox.prototype.searchItemByText = function (text) { text = text.trim(); if (text.length == 0) return this._items; if (this._searchCache[text]) return this._searchCache[text]; this._searchCache[text] = searchListByText(text, this._items); return this._searchCache[text]; }; SelectListBox.prototype.resetSearchState = function () { this.$searchInput.value = ''; this._preDisplayItems = this._itemsToNodeList(this._items); this._updateDisplayItem(); this.domSignal.emit('viewListAt', 0); this.$listScroller.scrollTop = 0; }; SelectListBox.prototype.notifyPressOut = function () { this.emit('pressout', { target: this, type: 'pressout' }, this); }; SelectListBox.prototype.notifyPressClose = function () { this.emit('pressclose', { target: this, type: 'pressclose' }, this); }; SelectListBox.prototype._findFirstPageIdx = function () { for (var i = 0; i < this.preLoadN; ++i) { if (this._pageOffsets[i + 1] - this._pageOffsets[i] > 0) { return i; } } return -1; }; SelectListBox.prototype._findLastPageIdx = function () { for (var i = this.preLoadN - 1; i >= 0; --i) { if (this._pageOffsets[i + 1] - this._pageOffsets[i] > 0) { return i; } } return -1; }; SelectListBox.prototype._indexingByValue = function (items, dict) { var thisS = this; return items.reduce(function (ac, cr, idx) { var value = typeof cr === "string" ? cr : cr.value + ''; ac[value] = ac[value] || []; ac[value].push({ idx: idx, item: cr }); return ac; }, dict || {}); }; SelectListBox.prototype._depthIndexingByValue = function (items, context) { context = context ||{idx: 0, dict: {}}; var thisS = this; return items.reduce(function (ac, cr, idx) { var value = typeof cr === "string" ? cr : cr.value + ''; ac[value] = ac[value] || []; ac[value].push({ idx: context.idx++, item: cr }); if (cr && cr.items && cr.items.length >0){ thisS._depthIndexingByValue(cr.items, context); } return ac; }, context.dict); }; SelectListBox.prototype._updateDisplayItemIndex = function () { this._displayItemHolderByValue = this._indexingByValue(this._displayItems, {}); }; SelectListBox.prototype._updateItemNodeIndex = function () { this._itemNodeHolderByValue = this._depthIndexingByValue(this._items) }; SelectListBox.prototype._updateDisplayItem = function () { this._displayItems = this._filterDisplayItems(this._preDisplayItems); this._updateDisplayItemIndex(); this.$content.addStyle({ 'height': this._displayItems.length * 20 + 'px' }); }; SelectListBox.prototype._updateItems = function () { this._preDisplayItems = this._itemsToNodeList(this._items); this._searchCache = {}; var estimateSize = measureListSize(this._itemNodeList); this._estimateSize = estimateSize; this._estimateWidth = estimateSize.width; this._estimateDescWidth = estimateSize.descWidth; this.addStyle('--select-list-estimate-width', estimateSize.width + 'px'); this.addStyle('--select-list-desc-width', estimateSize.descWidth + 'px') this._updateDisplayItem(); }; /*** * * @param value * @returns {{idx: number, item:{text:string, value:number|string}}[]} */ SelectListBox.prototype.findDisplayItemsByValue = function (value) { return (this._displayItemHolderByValue[value] || []).slice(); }; /*** * * @param value * @returns {{idx: number, item:{text:string, value:number|string}}[]} */ SelectListBox.prototype.findItemsByValue = function (value) { return (this._itemNodeHolderByValue[value] || []).slice(); }; SelectListBox.property = {}; /*** * * @type {SelectListBox|{}} */ SelectListBox.property.items = { set: function (items) { items = items || []; prepareSearchForList(items); this._items = items; this._itemNodeList = this._itemsToNodeList(this._items); this._updateItemNodeIndex(); this._updateItems(); this.viewListAt(0); }, get: function () { return this._items; } } SelectListBox.property.values = { set: function (values) { values = values || []; this._values = values; this._valueDict = values.reduce(function (ac, cr) { ac[cr + ''] = true; return ac; }, {}); this._updateDisplayItem(); this.viewListAtCurrentScrollTop(); //todo if (this._pageOffsets[this.preLoadN] > this._pageOffsets[0]) this._updateSelectedItem(); }, get: function () { return this._values; } }; SelectListBox.property.displayValue = { set: function (value) { this._displayValue = value; this._displayItems = this._filterDisplayItems(this._preDisplayItems); this._updateItemNodeIndex(); if (value === VALUE_HIDDEN) { this.addClass('as-value-hidden'); } else { this.removeClass('as-value-hidden'); } }, get: function () { return this._displayValue; } } SelectListBox.property.enableSearch = { set: function (value) { if (value) this.addClass('as-enable-search'); else this.removeClass('as-enable-search'); }, get: function () { return this.containsClass('as-enable-search'); } }; /*** * * @type {SelectListBox|{}} */ SelectListBox.eventHandler = {}; /* * * @param {MouseEvent} event */ SelectListBox.eventHandler.click = function (event) { if (event.target === this) this.notifyPressOut(); }; SelectListBox.eventHandler.searchModify = function () { var text = this.$searchInput.value; var searchedItems = this.searchItemByText(text); this._preDisplayItems = this._itemsToNodeList(searchedItems); this._displayItems = this._filterDisplayItems(this._preDisplayItems); this.$content.addStyle({ 'height': this._displayItems.length * 20 + 'px' }); this._updateItemNodeIndex(); this.viewListAt(0); this.$listScroller.scrollTop = 0; this.updatePosition(); }; SelectListBox.eventHandler.scroll = function () { var scrollerBound = this.$listScroller.getBoundingClientRect(); var topIdx = this._findFirstPageIdx(); var screenSize = Object(Dom["d" /* getScreenSize */])(); var maxItem = Math.ceil(Math.max(window.screen.height, screenSize.height) / 20); var topBound = this.$listPages[topIdx].getBoundingClientRect(); var botIdx = this._findLastPageIdx(); var botBound; botBound = this.$listPages[botIdx].getBoundingClientRect(); if (topBound.top > scrollerBound.top || topBound.bottom < scrollerBound.bottom) { this.viewListAt(Math.floor(this.$listScroller.scrollTop / 20)) return; } if (this._pageOffsets[topIdx] > 0) { if (topBound.top + this.toLoadNextY > scrollerBound.top) { this._pageOffsets.unshift(this._pageOffsets.pop()); this.$listPages.unshift(this.$listPages.pop()); this._pageOffsets[topIdx] = Math.max(0, this._pageOffsets[topIdx + 1] - maxItem); this._requireItem(this.$listPages[topIdx], this._pageOffsets[topIdx + 1] - this._pageOffsets[topIdx]); this._assignItems(this.$listPages[topIdx], this._pageOffsets[topIdx]); this._updateSelectedItem(); this.$listPages[topIdx].addStyle('top', this._pageOffsets[topIdx] * 20 + 'px'); } } if (this._pageOffsets[botIdx + 1] < this._displayItems.length) { if (botBound.bottom - this.toLoadNextY < scrollerBound.bottom) { this._pageOffsets.push(this._pageOffsets.shift()); this.$listPages.push(this.$listPages.shift()); this._pageOffsets[botIdx + 1] = Math.min(this._displayItems.length, this._pageOffsets[botIdx] + maxItem); this.$listPages[botIdx].addStyle('top', this._pageOffsets[botIdx] * 20 + 'px'); this._requireItem(this.$listPages[botIdx], this._pageOffsets[botIdx + 1] - this._pageOffsets[botIdx]); this._assignItems(this.$listPages[botIdx], this._pageOffsets[botIdx]); this._updateSelectedItem(); } } } ; ACore["c" /* default */].install(SelectListBox); /* harmony default export */ var js_SelectListBox = (SelectListBox); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectMenu2.js /*global absol*/ var SelectMenu2_ = ACore["c" /* default */]._; var SelectMenu2_$ = ACore["c" /* default */].$; ACore["c" /* default */].creator['dropdown-ico'] = function () { return SelectMenu2_([ '<svg class="dropdown" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">', '<g transform="translate(0,-197)">', '<path d="m6.3152 218.09a4.5283 4.5283 0 0 0-3.5673 7.3141l43.361 55.641a4.5283 4.5283 0 0 0 7.1421 7e-3l43.496-55.641a4.5283 4.5283 0 0 0-3.5673-7.3216z" />', '</g>', '</svg>' ].join('')); }; /*** * @extends AElement * @constructor */ function SelectMenu() { var thisSM = this; this._items = []; this._value = null; this._lastValue = null; this.$holderItem = SelectMenu2_$('.absol-selectmenu-holder-item', this); this.$viewItem = SelectMenu2_$('.absol-selectmenu-holder-item selectlistitem', this); /*** * * @type {SelectListBox} */ this.$selectlistBox = SelectMenu2_({ tag: 'selectlistbox', props: { anchor: [1, 6, 2, 5] }, on: { preupdateposition: this.eventHandler.preUpdateListPosition } }); this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem); this.$selectlistBox.followTarget = this; OOP["a" /* default */].drillProperty(this, this.$selectlistBox, 'enableSearch'); this._lastValue = "NOTHING_VALUE"; this._isFocus = false; this.isFocus = false; this.on('mousedown', this.eventHandler.click, true); } SelectMenu.tag = 'selectmenu'; SelectMenu.render = function () { return SelectMenu2_({ class: ['absol-selectmenu', 'as-select-menu'], extendEvent: ['change'], attr: { tabindex: '1' }, child: [ { class: 'absol-selectmenu-holder-item', child: 'selectlistitem' }, { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] } ] }); }; SelectMenu.prototype.init = function (props) { props = props || {}; Object.keys(props).forEach(function (key) { if (props[key] === undefined) delete props[key]; }); if (!('value' in props)) { if (props.items && props.items.length > 0) props.value = typeof props.items[0] == 'string' ? props.items[0] : props.items[0].value; } var value = props.value; delete props.value; this.super(props); this.value = value; }; SelectMenu.prototype.updateItem = function () { var selectedItems = this.$selectlistBox.findDisplayItemsByValue(this._value); if (selectedItems.length >= 1) { this.$viewItem.data = selectedItems[0].item; } else { this.$viewItem.data = { text: '', value: null } } }; SelectMenu.property = {}; SelectMenu.property.items = { set: function (items) { this.$selectlistBox.items = items || []; this.addStyle('--select-list-estimate-width', this.$selectlistBox._estimateWidth + 'px'); this.addStyle( '--select-list-desc-width', this.$selectlistBox._estimateDescWidth + 'px'); if (items.length == 0) return; var selectedItems = this.$selectlistBox.findDisplayItemsByValue(this._value); if (selectedItems.length === 0) { this.value = items[0].value; } else if (selectedItems.length > 1) { console.warn(this, 'has duplicate item value'); } else { this.updateItem(); } }, get: function () { return this.$selectlistBox.items; } }; SelectMenu.property.value = { set: function (value) { this.$selectlistBox.values = [value]; this._lastValue = value; this._value = value; this.updateItem(); }, get: function () { return this._value; //todo } }; /*** * * @type {SelectMenu|{}} */ SelectMenu.property.isFocus = { set: function (value) { var thisSM = this; if (!this.items || this.items.length === 0) value = false;//prevent focus if (this._isFocus === value) return; this._isFocus = !!value; if (this._isFocus) { document.body.appendChild(this.$selectlistBox); this.$selectlistBox.domSignal.$attachhook.emit('attached'); var bound = this.getBoundingClientRect(); this.$selectlistBox.addStyle('min-width', bound.width + 'px'); this.$selectlistBox.refollow(); this.$selectlistBox.updatePosition(); setTimeout(function () { if (thisSM.enableSearch) { thisSM.$selectlistBox.$searchInput.focus(); } else { thisSM.$selectlistBox.focus(); } SelectMenu2_$(document.body).on('click', thisSM.eventHandler.bodyClick); }, 100); this.$selectlistBox.viewListAtFirstSelected(); } else { SelectMenu2_$(document.body).off('click', thisSM.eventHandler.bodyClick); this.$selectlistBox.selfRemove(); this.$selectlistBox.unfollow(); this.$selectlistBox.resetSearchState(); } }, get: function () { return this._isFocus; } }; SelectMenu.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.containsClass('as-disabled'); } }; SelectMenu.property.hidden = { set: function (value) { if (value) { this.addClass('as-hidden'); } else { this.removeClass('as-hidden'); } }, get: function () { return this.addClass('as-hidden'); } }; SelectMenu.property.selectedIndex = { get: function () { var selectedItems = this.$selectlistBox.findDisplayItemsByValue(this._value); if (selectedItems.length > 0) { return selectedItems[0].idx; } return -1; } }; /** * @type {SelectMenu|{}} */ SelectMenu.eventHandler = {}; SelectMenu.eventHandler.click = function (event) { if (EventEmitter["b" /* default */].isMouseRight(event)) return; if (EventEmitter["b" /* default */].hitElement(this.$selectlistBox, event)) return; this.isFocus = !this.isFocus; }; SelectMenu.eventHandler.bodyClick = function (event) { if (!EventEmitter["b" /* default */].hitElement(this, event) && !EventEmitter["b" /* default */].hitElement(this.$selectlistBox, event)) { setTimeout(function () { this.isFocus = false; }.bind(this), 5) } }; SelectMenu.eventHandler.selectListBoxPressItem = function (event) { this._value = event.data.value; this.$selectlistBox.values = [this._value]; this.updateItem(); if (this._lastValue !== this.value) { event.lastValue = this._lastValue; event.value = this.value; setTimeout(function () { this.emit('change', event, this); }.bind(this), 1) this._lastValue = this.value; } setTimeout(function () { this.isFocus = false; }.bind(this), 50) }; SelectMenu.eventHandler.preUpdateListPosition = function () { var bound = this.getBoundingClientRect(); var screenSize = Object(Dom["d" /* getScreenSize */])(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = Object(Dom["f" /* traceOutBoundingClientRect */])(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { this.isFocus = false; } }; ACore["c" /* default */].install(SelectMenu); /* harmony default export */ var SelectMenu2 = (SelectMenu); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectBoxItem.js var SelectBoxItem_ = ACore["c" /* default */]._; var SelectBoxItem_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function SelectBoxItem() { this._themeClassName = null; this.$text = SelectBoxItem_$('.absol-selectbox-item-text', this); this.$close = SelectBoxItem_$('.absol-selectbox-item-close', this); this.$close.on('click', this.eventHandler.clickClose); this.on('click', this.eventHandler.click); }; SelectBoxItem.tag = 'SelectBoxItem'.toLowerCase(); SelectBoxItem.render = function () { return SelectBoxItem_({ class: ['absol-selectbox-item'], extendEvent: ['close', 'press'], child: [ '.absol-selectbox-item-text', { class: 'absol-selectbox-item-close', child: '<span class="mdi mdi-close"></span>' } ] }); }; SelectBoxItem.eventHandler = {}; SelectBoxItem.eventHandler.clickClose = function (event) { this.emit('close', event); }; SelectBoxItem.eventHandler.click = function (event){ if (!EventEmitter["b" /* default */].hitElement(this.$close, event)){ this.emit('press', event, this); } }; SelectBoxItem.property = {}; SelectBoxItem.property.data = { set: function (value) { this._data = value; this.$text.clearChild(); this.$text.addChild(SelectBoxItem_('<span>' + this.text + '</span>')); if (this._themeClassName) this.removeClass(this._themeClassName); this._themeClassName = null; if (this.theme) { this._themeClassName = 'as-theme-' + this.theme; this.addClass(this._themeClassName); } }, get: function () { return this._data; } }; SelectBoxItem.property.text = { get: function () { if (typeof this._data == 'string') return this._data; else return this._data.text; } }; SelectBoxItem.property.value = { get: function () { if (typeof this._data == 'string') return this._data; else return this._data.value; } }; SelectBoxItem.property.theme = { get: function () { return this._data.theme || null; } }; SelectBoxItem.property.active = { set: function (value) { if (value) { this.addClass('as-active'); } else { this.removeClass('as-active'); } }, get: function () { return this.containsClass('as-active'); } }; ACore["c" /* default */].install(SelectBoxItem); /* harmony default export */ var js_SelectBoxItem = (SelectBoxItem); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectBox.js var SelectBox_ = ACore["c" /* default */]._; var SelectBox_$ = ACore["c" /* default */].$; function pressCloseEventHandler(event) { var parentElt = this.$parent; if (!parentElt) return; var value = this.value; var data = this.data; var currentValues = parentElt.$selectlistBox.values; var index = currentValues.indexOf(value); if (index >= 0) { currentValues.splice(index, 1); } parentElt.$selectlistBox.values = currentValues; parentElt.$selectlistBox.updatePosition(); parentElt._updateItems(); parentElt.emit('remove', Object.assign({}, event, { type: 'change', target: parentElt, data: data, value: value, itemData: data }), parentElt); parentElt.emit('change', Object.assign({}, event, { type: 'change', action: 'remove', target: parentElt, data: data, value: value, itemData: data }), parentElt); } function pressHandler(event) { var parentElt = this.$parent; if (!parentElt) return; var value = this.value; if (parentElt.itemFocusable) { var prevActiveValue = parentElt.activeValue; if (value !== prevActiveValue) { parentElt.activeValue = value; parentElt.emit('activevaluechange', { target: parentElt, originEvent: event, prevActiveValue: prevActiveValue, activeValue: value }, parentElt); } } } /*** * * @returns {SelectBoxItem} */ function SelectBox_makeItem() { return SelectBox_({ tag: 'selectboxitem', on: { close: pressCloseEventHandler, press: pressHandler } }); } var SelectBox_itemPool = []; function SelectBox_requireItem($parent) { var item; if (SelectBox_itemPool.length > 0) { item = SelectBox_itemPool.pop(); } else { item = SelectBox_makeItem(); } item.$parent = $parent; return item; } function SelectBox_releaseItem(item) { item.$parent = null; SelectBox_itemPool.push(item); } /*** * @extends PositionTracker * @return {SelectBox} * @constructor */ function SelectBox() { this.on('click', this.eventHandler.click); this.$selectlistBox = SelectBox_({ tag: 'selectlistbox', props: { anchor: [1, 6, 2, 5], displayValue: VALUE_HIDDEN }, on: { preupdateposition: this.eventHandler.preUpdateListPosition, pressitem: this.eventHandler.selectListBoxPressItem } }); OOP["a" /* default */].drillProperty(this, this.$selectlistBox, 'enableSearch'); this.$items = []; this._values = []; this.items = []; this.values = []; this.$selectlistBox.followTarget = this; this.disableClickToFocus = false; this.orderly = true; this.itemFocusable = false; this._activeValue = undefined; return this; } SelectBox.tag = 'selectbox'; SelectBox.render = function () { return SelectBox_({ tag: 'bscroller', class: ['absol-selectbox', 'absol-bscroller'], extendEvent: ['change', 'add', 'remove', 'activevaluechange'], attr: { tabindex: '1' } }, true); }; SelectBox.prototype._requireItem = function (n) { var itemElt; while (this.$items.length < n) { itemElt = SelectBox_requireItem(this); this.addChild(itemElt); this.$items.push(itemElt); } while (this.$items.length > n) { itemElt = this.$items.pop(); this.removeChild(itemElt); SelectBox_releaseItem(itemElt); } }; SelectBox.prototype._assignItems = function (items) { for (var i = 0; i < this.$items.length && i < items.length; ++i) { this.$items[i].data = items[i]; } }; /*** * * @param {string[] | number[]} values * @private */ SelectBox.prototype._getItemsByValues = function (values) { var selectListBoxElt = this.$selectlistBox; var itemHolders = values.reduce(function (ac, cr) { ac.push.apply(ac, selectListBoxElt.findItemsByValue(cr)); return ac; }, []); if (this.orderly) { itemHolders.sort(function (a, b) { return a.idx - b.idx; }); } return itemHolders.map(function (holder) { return holder.item; }) }; SelectBox.prototype._updateItems = function () { var cBound = this.getBoundingClientRect(); var items = this._getItemsByValues(this._values); this._requireItem(items.length); this._assignItems(items); if (this.itemFocusable) { this._updateFocusItem(); } var nBound = this.getBoundingClientRect(); if (nBound.width != cBound.width || nBound.height != cBound.height) { ResizeSystem["a" /* default */].updateUp(this); } }; SelectBox.property = {}; SelectBox.property.disabled = SelectMenu2.property.disabled; SelectBox.property.hidden = SelectMenu2.property.hidden; SelectBox.property.isFocus = SelectMenu2.property.isFocus; SelectBox.prototype.init = function (props) { props = props || []; Object.keys(props).forEach(function (key) { if (props[key] === undefined) delete props[key]; }); this.super(props); }; SelectBox.prototype._updateFocusItem = function () { for (var i = 0; i < this.$items.length; ++i) { this.$items[i].active = this.$items[i].value == this._activeValue; } }; SelectBox.prototype.init = SelectMenu2.prototype.init; SelectBox.property.items = { set: function (items) { items = items || []; this.$selectlistBox.items = items; this.addStyle('--list-min-width', this.$selectlistBox._estimateWidth + 'px'); this._updateItems(); }, get: function () { return this.$selectlistBox.items } }; SelectBox.property.values = { set: function (values) { values = values || []; values = (values instanceof Array) ? values : [values]; this._values = values; this.$selectlistBox.values = values; this._updateItems(); }, get: function () { return this._values || []; } }; SelectBox.property.orderly = { set: function (value) { var needUpdate = this._orderly === this._orderly; if (typeof value === 'function'){ this._orderly; } else this._orderly = !!value; if (needUpdate) { this.values = this.values; } }, get: function () { return !!this._orderly; } }; SelectBox.property.disableClickToFocus = { set: function (value) { if (value) { this.addClass('as-disable-click-to-focus'); } else { this.removeClass('as-disable-click-to-focus'); } }, get: function () { return this.containsClass('as-disable-click-to-focus'); } }; SelectBox.property.itemFocusable = { set: function (value) { if (value) { this.addClass('as-item-focusable'); } else { this.removeClass('as-item-focusable'); } this._updateFocusItem(); }, get: function () { return this.containsClass('as-item-focusable'); } }; SelectBox.property.activeValue = { set: function (value) { this._activeValue = value; if (this.itemFocusable) { this._updateFocusItem(); //todo } }, get: function () { return this._activeValue; } }; SelectBox.eventHandler = Object.assign({}, SelectMenu2.eventHandler); SelectBox.eventHandler.click = function (event) { if (event.target === this && !this.disableClickToFocus) { this.isFocus = !this.isFocus; } }; SelectBox.eventHandler.bodyClick = function (event) { if (!EventEmitter["b" /* default */].hitElement(this.$selectlistBox, event) && event.target !== this) { this.isFocus = false; } }; SelectBox.eventHandler.selectListBoxPressItem = function (event) { var data = event.data; var currentValues = this.$selectlistBox.values; currentValues.push(data.value); this.$selectlistBox.values = currentValues; this.$selectlistBox.updatePosition(); this._activeValue = data.value; this._updateItems(); this.isFocus = false; this.emit('add', Object.assign({}, event, { type: 'add', target: this, value: data.value, data: data, itemData: data }), this); this.emit('change', Object.assign({}, event, { type: 'change', action: 'add', target: this, value: data.value, data: data, values: this.values }), this); }; ACore["c" /* default */].install(SelectBox); /* harmony default export */ var js_SelectBox = (SelectBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selecttable.css var selecttable = __webpack_require__(36); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTable.js var privateDom = new Dom["b" /* default */]().install(ACore["c" /* default */]); var SelectTable_$ = privateDom.$; var SelectTable_ = privateDom._; function SelectTable() { var thisST = this; this.$attachhook = SelectTable_('attachhook').addTo(this); this.sync = new Promise(function (rs) { thisST.$attachhook.on('error', rs); }); this.$buttonsContainer = SelectTable_$('.absol-select-table-buttons-container', this); this.$searchContainer = SelectTable_$('.absol-select-table-searchtextinput-container', this); this.$nonselectedItemsContainer = SelectTable_$('.absol-select-table-nonselected-items-container', this); this.$selectedItemsContainer = SelectTable_$('.absol-select-table-selected-items-container', this); this.$nonselectedSearchItemsContainer = SelectTable_$('.absol-select-table-nonselected-search-items-container', this); this.$selectedSearchItemsContainer = SelectTable_$('.absol-select-table-selected-search-items-container', this); this.$removeAllBtn = SelectTable_$('button.remove-all', this).on('click', this.eventHandler.removeAllBtnClick); this.$addAllBtn = SelectTable_$('button.add-all', this).on('click', this.eventHandler.addAllBtnClick); this.$vscrollerSelected = SelectTable_$('bscroller#selected', this) this.$vscrollerNonselected = SelectTable_$('bscroller#nonselected', this); this.$body = SelectTable_$('.absol-select-table-body', this); this.$header = SelectTable_$('.absol-select-table-header', this); /*** * * @type {SearchTextInput} */ this.$searchTextInput = SelectTable_$('searchtextinput', this).on('stoptyping', this.eventHandler.searchTextInputModify); this.$addAllBtn.updateSize = function () { thisST.updateScroller && thisST.updateScroller(); }; Dom["b" /* default */].addToResizeSystem(this.$addAllBtn); return this; } SelectTable.tag = 'SelectTable'.toLowerCase(); SelectTable.render = function () { return SelectTable_({ class: 'absol-select-table', extendEvent: ['change', 'addall', 'removeall', 'add', 'remove'], child: [ { class: 'absol-select-table-header', child: [ { class: 'absol-select-table-searchtextinput-container', child: 'searchtextinput' }, { class: 'absol-select-table-buttons-container', child: [ { tag: 'button', class: 'add-all', props: { innerHTML: 'Add All' } }, { tag: 'button', class: 'remove-all', props: { innerHTML: 'Remove All' } } ] } ] }, { class: 'absol-select-table-body', child: [ { tag: 'bscroller', attr: { id: 'nonselected' }, class: ['absol-select-table-items-scroller'], child: { child: ['.absol-select-table-nonselected-items-container', '.absol-select-table-nonselected-search-items-container'] } }, { tag: 'bscroller', attr: { id: 'selected' }, class: ['absol-select-table-items-scroller'], child: { child: ['.absol-select-table-selected-items-container', '.absol-select-table-selected-search-items-container'] } } ] } ] }); } SelectTable.prototype.updateButtonsContainerSize = function () { var rootBound = this.$buttonsContainer.getBoundingClientRect(); var containBound = this.$buttonsContainer.getBoundingRecursiveRect(); var fontSize = this.getFontSize(); this.$buttonsContainer.addStyle('width', (containBound.width + 1) / fontSize + 'em'); this.$searchContainer.addStyle('right', (containBound.width + 5) / fontSize + 'em'); }; SelectTable.prototype.addAll = function () { Array.apply(null, this.$nonselectedItemsContainer.childNodes).forEach(function (e) { e.addTo(this.$selectedItemsContainer); }.bind(this)); this.requestSort(); }; SelectTable.prototype.removeAll = function () { Array.apply(null, this.$selectedItemsContainer.childNodes).forEach(function (e) { e.addTo(this.$nonselectedItemsContainer); }.bind(this)) this.requestSort(); }; SelectTable.prototype.updateScroller = function () { var update = function () { if (this.style.height) { var height = parseFloat(this.getComputedStyleValue('height').replace('px', '')); var headerHeight = parseFloat(this.$header.getComputedStyleValue('height').replace('px', '')); var bodyMargin = parseFloat(this.$body.getComputedStyleValue('margin-top').replace('px', '')); var borderWidth = 1; var availableHeight = height - headerHeight - bodyMargin * 2 - borderWidth * 2; this.$vscrollerNonselected.addStyle('max-height', availableHeight + 'px'); this.$vscrollerSelected.addStyle('max-height', availableHeight + 'px'); } }.bind(this); setTimeout(update, 1); }; SelectTable.prototype.getAllItemElement = function () { var selectedItemElements = Array.apply(null, this.$selectedItemsContainer.childNodes); var nonselectedItemElements = Array.apply(null, this.$nonselectedItemsContainer.childNodes); return selectedItemElements.concat(nonselectedItemElements); }; SelectTable.prototype.init = function (props) { this.super(props); this.sync = this.sync.then(this.updateButtonsContainerSize.bind(this)); }; SelectTable.eventHandler = {}; SelectTable.eventHandler.addAllBtnClick = function (event) { this.addAll(); if (this.searching) { this.eventHandler.searchTextInputModify(event); } this.emit('addall', EventEmitter["b" /* default */].copyEvent(event, {}), this); this.updateScroller(); }; SelectTable.eventHandler.removeAllBtnClick = function (event) { this.removeAll(); if (this.searching) { this.eventHandler.searchTextInputModify(event); } this.emit('removeall', EventEmitter["b" /* default */].copyEvent(event, {}), this); this.updateScroller(); }; SelectTable.prototype._filter = function (items, filterText) { var result = []; if (filterText.length == 1) { result = items.map(function (item) { var res = { item: item, text: typeof item === 'string' ? item : item.text }; return res; }).map(function (it) { it.score = 0; var text = it.text.replace(/((\ )|(\s))+/g, ' ').trim(); it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0; text = nonAccentVietnamese(text); it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0; return it; }); result.sort(function (a, b) { if (b.score - a.score == 0) { if (nonAccentVietnamese(b.text) > nonAccentVietnamese(a.text)) return -1; return 1; } return b.score - a.score; }); result = result.filter(function (x) { return x.score > 0; }); } else { var its = items.map(function (item) { var res = { item: item, text: typeof item === 'string' ? item : item.text }; var text = res.text.replace(/((\ )|(\s))+/g, ' ').trim(); res.score = (phraseMatch(text, filterText) + phraseMatch(nonAccentVietnamese(text), nonAccentVietnamese(filterText))) / 2; if (nonAccentVietnamese(text).replace(/s/g, '').toLowerCase().indexOf(nonAccentVietnamese(filterText).toLowerCase().replace(/s/g, '')) > -1) res.score = 100; return res; }); if (its.length == 0) return; its.sort(function (a, b) { if (b.score - a.score == 0) { if (nonAccentVietnamese(b.text) > nonAccentVietnamese(a.text)) return -1; return 1; } return b.score - a.score; }); var result = its.filter(function (x) { return x.score > 0.5; }); if (result.length == 0) { var bestScore = its[0].score; result = its.filter(function (it) { return it.score + 0.001 >= bestScore; }); } if (result[0].score == 0) result = []; } result = result.map(function (e) { return e.item; }); return result; }; SelectTable.prototype._stringcmp = function (s0, s1) { if (s0 == s1) return 0; if (s0 > s1) return 1; return -1; }; SelectTable.prototype._getString = function (item) { if (typeof item == "string") return item; return item.text; }; SelectTable.prototype._equalArr = function (a, b) { if (a.length != b.length) return false; for (var i = 0; i < a.length; ++i) { if (a[i] != b[i] && a[i].text != b[i].text && a[i].value != b[i].value) return false; } return true; }; SelectTable.prototype._applySort = function (items, sortFlag) { var res = items.slice(); if (sortFlag == 1 || sortFlag === true) { res.sort(function (a, b) { return this._stringcmp(this._getString(a), this._getString(b)) }.bind(this)) } else if (sortFlag == -1) { res.sort(function (a, b) { return -this._stringcmp(this._getString(a), this._getString(b)) }.bind(this)) } else if (typeof sortFlag == 'function') { res.sort(function (a, b) { return sortFlag(a, b) }.bind(this)) } return res; }; SelectTable.prototype.requestSort = function () { if (!this.sorted || this.sorted == 0) return; var selectedItems = this.selectedItems; var selectedItemsNew = this._applySort(selectedItems, this.sorted); if (!this._equalArr(selectedItems, selectedItemsNew)) { this.selectedItems = selectedItemsNew; } var nonselectedItems = this.nonselectedItems; var nonselectedItemsNew = this._applySort(nonselectedItems, this.sorted); if (!this._equalArr(nonselectedItems, nonselectedItemsNew)) { this.nonselectedItems = nonselectedItemsNew; } }; SelectTable.eventHandler.searchTextInputModify = function (event) { var filterText = this.$searchTextInput.value.trim(); if (filterText.length > 0) { var selectedItems = this.selectedItems; var nonselectedItems = this.nonselectedItems; this.selectedSearchItems = selectedItems; this.nonselectedSearchItems = this._filter(nonselectedItems, filterText); this.selectedSearchItems = this._filter(selectedItems, filterText); } else { } this.searching = filterText.length > 0; }; SelectTable.property = {}; SelectTable.property.disableMoveAll = { set: function (value) { if (value) this.addClass('disable-move-all'); else this.removeClass('disable-move-all'); }, get: function () { return this.containsClass('disable-move-all'); } }; SelectTable.property.removeAllText = { set: function (text) { this._removeAllText = text; //todo: update remove all text if (!text) this.$removeAllBtn.addStyle('display', 'none'); else { this.$removeAllBtn.removeStyle('display'); this.$removeAllBtn.innerHTML = this.removeAllText; this.updateButtonsContainerSize(); } }, get: function () { return this._removeAllText || 'Remove All' } }; SelectTable.property.addAllText = { set: function (text) { this._addAllText = text; if (!text) this.$addAllBtn.addStyle('display', 'none'); else { this.$addAllBtn.removeStyle('display'); this.$addAllBtn.innerHTML = this.removeAllText; this.updateButtonsContainerSize(); } }, get: function () { return this._addAllText || 'Add All' } }; SelectTable.property.searching = { set: function (value) { if (value) { this.addClass('searching'); } else { this.removeClass('searching'); } this.updateScroller(); }, get: function () { return this.containsClass('searching'); } }; SelectTable.property.sorted = { set: function (value) { this._sort = value; this.requestSort(); }, get: function () { return this._sort; } }; SelectTable.property.selectedItems = { set: function (items) { this.$selectedItemsContainer.clearChild(); var $nonselectedItemsContainer = this.$nonselectedItemsContainer; var $selectedItemsContainer = this.$selectedItemsContainer; var self = this; if (items instanceof Array) { items.map(function (item) { return SelectTable_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedItemsContainer) { this.addTo($nonselectedItemsContainer); self.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } self.updateScroller(); self.requestSort(); } } }).addTo(this.$selectedItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); this.requestSort(); }, get: function () { return Array.prototype.map.call(this.$selectedItemsContainer.childNodes, function (e) { return e.data; }); } } SelectTable.property.nonselectedItems = { set: function (items) { this.$nonselectedItemsContainer.clearChild(); var $nonselectedItemsContainer = this.$nonselectedItemsContainer; var $selectedItemsContainer = this.$selectedItemsContainer; var self = this; if (items instanceof Array) { items.map(function (item) { return SelectTable_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedItemsContainer) { this.addTo($nonselectedItemsContainer); self.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } self.updateScroller(); self.requestSort(); } } }).addTo(this.$nonselectedItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); this.requestSort(); }, get: function () { return Array.prototype.map.call(this.$nonselectedItemsContainer.childNodes, function (e) { return e.data; }); } }; SelectTable.property.selectedSearchItems = { set: function (items) { this.$selectedSearchItemsContainer.clearChild(); var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer; var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer; var table = this; if (items instanceof Array) { items.map(function (item) { return SelectTable_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedSearchItemsContainer) { this.addTo($nonselectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$nonselectedItemsContainer); return true; } return false; }.bind(this)); table.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } else { this.addTo($selectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$selectedItemsContainer); return true; } return false; }.bind(this)); table.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } table.updateScroller(); table.requestSort(); } } }).addTo(this.$selectedSearchItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); }, get: function () { return Array.prototype.map.call(this.$selectedSearchItemsContainer.childNodes, function (e) { return e.data; }); } } SelectTable.property.nonselectedSearchItems = { set: function (items) { this.$nonselectedSearchItemsContainer.clearChild(); var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer; var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer; var table = this; if (items instanceof Array) { items.map(function (item) { return SelectTable_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedSearchItemsContainer) { this.addTo($nonselectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$nonselectedItemsContainer); return true; } return false; }.bind(this)); table.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } else { this.addTo($selectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$selectedItemsContainer); return true; } return false; }.bind(this)); table.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } table.updateScroller(); table.requestSort(); } } }).addTo(this.$nonselectedSearchItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); }, get: function () { return Array.prototype.map.call(this.$nonselectedSearchItemsContainer.childNodes, function (e) { return e.data; }); } }; /* namespace of selecttable */ function Item() { var res = SelectTable_({ extendEvent: ['requestmove'], class: 'absol-select-table-item', child: ['span.absol-select-table-item-text', { class: 'absol-select-table-item-right-container', child: { class: 'absol-select-table-item-right-container-table', child: { class: 'absol-select-table-item-right-container-cell', child: ['addicon', 'subicon'] } } } ] }); res.$text = SelectTable_$('span', res); res.eventHandler = OOP["a" /* default */].bindFunctions(res, Item.eventHandler); res.$rightBtn = SelectTable_$('.absol-select-table-item-right-container', res); res.on('dblclick', res.eventHandler.dblclick); res.$rightBtn.on('click', res.eventHandler.rightBtClick); return res; }; Item.eventHandler = {}; Item.eventHandler.dblclick = function (event) { event.preventDefault(); if (!EventEmitter["b" /* default */].hitElement(this.$rightBtn, event)) this.emit('requestmove', event, this); }; Item.eventHandler.rightBtClick = function (event) { this.emit('requestmove', event, this); }; Item.property = {}; Item.property.data = { set: function (value) { this._data = value; if (value) { var text; if (typeof value == "string") { text = value; } else { text = value.text; } this.$text.innerHTML = text; } }, get: function () { return this._data; } }; Item.property.text = { get: function () { return this._data ? (typeof this._data == 'string' ? this._data : this._data.text) : ''; } }; /** * * <svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <g transform="translate(0,-197)"> <path d="m39.873 198.21v38.668h-38.668v20.252h38.668v38.668h20.253v-38.668h38.668v-20.252h-38.668v-38.668z" style="fill-rule:evenodd;fill:#5fbbc2;stroke-linejoin:round;stroke-width:2.4109;stroke:#002eea"/> </g> </svg> */ function AddIcon() { return Svg["a" /* default */].ShareInstance.buildSvg( '<svg class="add-icon" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' + '<g transform="translate(0,-197)">' + '<path d="m39.873 198.21v38.668h-38.668v20.252h38.668v38.668h20.253v-38.668h38.668v-20.252h-38.668v-38.668z" style="fill-rule:evenodd;stroke-linejoin:round;stroke-width:2.4109;" />' + '</g>' + '</svg>' ); }; function SubIcon() { return Svg["a" /* default */].ShareInstance.buildSvg( '<svg class="sub-icon" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' + ' <g transform="translate(0,-197)">' + ' <path d="m98.795 236.87v20.253h-97.589v-20.253z" style="fill-rule:evenodd;stroke-linejoin:round;stroke-width:2.411;"/>' + ' </g>' + '</svg>' ); }; privateDom.install({ subicon: SubIcon, addicon: AddIcon, item: Item }); SelectTable.privateDom = privateDom; ACore["c" /* default */].install(SelectTable); /* harmony default export */ var js_SelectTable = (SelectTable); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTable2.js var SelectTable2_privateDom = new Dom["b" /* default */]().install(ACore["c" /* default */]).install(js_SelectTable.privateDom); var SelectTable2_$ = SelectTable2_privateDom.$; var SelectTable2_ = SelectTable2_privateDom._; function SelectTable2() { var thisST = this; this.$attachhook = SelectTable2_('attachhook').addTo(this); this.sync = new Promise(function (rs) { thisST.$attachhook.on('error', rs); }); this.$buttonsContainer = SelectTable2_$('.absol-select-table-buttons-container', this); this.$searchContainer = SelectTable2_$('.absol-select-table-searchtextinput-container', this); this.$nonselectedItemsContainer = SelectTable2_$('.absol-select-table-nonselected-items-container', this); this.$selectedItemsContainer = SelectTable2_$('.absol-select-table-selected-items-container', this); this.$nonselectedSearchItemsContainer = SelectTable2_$('.absol-select-table-nonselected-search-items-container', this); this.$selectedSearchItemsContainer = SelectTable2_$('.absol-select-table-selected-search-items-container', this); this.$removeAllBtn = SelectTable2_$('button.remove-all', this).on('click', this.eventHandler.removeAllBtnClick); this.$addAllBtn = SelectTable2_$('button.add-all', this).on('click', this.eventHandler.addAllBtnClick); this.$vscrollerSelected = SelectTable2_$('vscroller#selected', this) this.$vscrollerNonselected = SelectTable2_$('vscroller#nonselected', this); this.$body = SelectTable2_$('.absol-select-table-body', this); this.$searchTextInput = SelectTable2_$('searchtextinput', this).on('stoptyping', this.eventHandler.searchTextInputModify); }; SelectTable2.tag = 'SelectTable2'.toLowerCase(); SelectTable2.render = function () { return SelectTable2_({ class: ['absol-select-table', 'exclude'], extendEvent: ['change', 'addall', 'removeall', 'add', 'remove'], child: [ { class: 'absol-select-table-header', child: [ { class: 'absol-select-table-searchtextinput-container', child: 'searchtextinput' }, { class: 'absol-select-table-buttons-container', child: [ { tag: 'button', class: 'add-all', props: { innerHTML: 'Add All' } }, { tag: 'button', class: 'remove-all', props: { innerHTML: 'Remove All' } } ] } ] }, { class: 'absol-select-table-body', child: [ { tag: 'vscroller', attr: { id: 'nonselected' }, class: 'absol-select-table-items-scroller', child: { child: ['.absol-select-table-nonselected-items-container', '.absol-select-table-nonselected-search-items-container'] } }, { tag: 'vscroller', attr: { id: 'selected' }, class: 'absol-select-table-items-scroller', child: { child: ['.absol-select-table-selected-items-container', '.absol-select-table-selected-search-items-container'] } } ] } ] }); }; SelectTable2.prototype.updateButtonsContainerSize = function () { var rootBound = this.$buttonsContainer.getBoundingClientRect(); var containBound = this.$buttonsContainer.getBoundingRecursiveRect(); var fontSize = this.getFontSize(); this.$buttonsContainer.addStyle('width', (containBound.width + 1) / fontSize + 'em'); this.$searchContainer.addStyle('right', (containBound.width + 5) / fontSize + 'em'); }; SelectTable2.prototype.addAll = function () { Array.apply(null, this.$nonselectedItemsContainer.childNodes).forEach(function (e) { e.addTo(this.$selectedItemsContainer); }.bind(this)); this.requestSort(); }; SelectTable2.prototype.removeAll = function () { Array.apply(null, this.$selectedItemsContainer.childNodes).forEach(function (e) { e.addTo(this.$nonselectedItemsContainer); }.bind(this)) this.requestSort(); }; SelectTable2.prototype.updateScroller = function () { var update = function () { if (this.style.height) { var bodyMargin = parseFloat(this.$body.getComputedStyleValue('margin-top').replace('px', '') || (0.14285714285 * 14 + '')); var bound = this.getBoundingClientRect(); var bodyBound = this.$body.getBoundingClientRect(); var bodyRBound = this.$body.getBoundingRecursiveRect(); var availableHeight = bound.bottom - bodyMargin - bodyBound.top; var isOverflowHeight = availableHeight < bodyRBound.height; if (isOverflowHeight) { this.$vscrollerNonselected.addStyle('max-height', availableHeight + 'px'); this.$vscrollerSelected.addStyle('max-height', availableHeight + 'px'); this.$vscrollerSelected.addClass('limited-height'); this.$vscrollerNonselected.addClass('limited-height'); } else { this.$vscrollerNonselected.removeStyle('max-height'); this.$vscrollerSelected.removeStyle('max-height'); this.$vscrollerSelected.removeClass('limited-height'); this.$vscrollerSelected.removeClass('limited-height'); this.$vscrollerNonselected.removeClass('limited-height'); } } requestAnimationFrame(this.$vscrollerNonselected.requestUpdateSize.bind(this.$vscrollerNonselected)); requestAnimationFrame(this.$vscrollerSelected.requestUpdateSize.bind(this.$vscrollerSelected)); }.bind(this); setTimeout(update, 1); }; SelectTable2.prototype.getAllItemElement = function () { var selectedItemElements = Array.apply(null, this.$selectedItemsContainer.childNodes); var nonselectedItemElements = Array.apply(null, this.$nonselectedItemsContainer.childNodes); return selectedItemElements.concat(nonselectedItemElements); }; SelectTable2.prototype.init = function (props) { this.super(props); this.sync = this.sync.then(this.updateButtonsContainerSize.bind(this)); }; SelectTable2.eventHandler = {}; SelectTable2.eventHandler.addAllBtnClick = function (event) { this.addAll(); if (this.searching) { this.eventHandler.searchTextInputModify(event); } this.emit('addall', EventEmitter["b" /* default */].copyEvent(event, {}), this); this.updateScroller(); }; SelectTable2.eventHandler.removeAllBtnClick = function (event) { this.removeAll(); if (this.searching) { this.eventHandler.searchTextInputModify(event); } this.emit('removeall', EventEmitter["b" /* default */].copyEvent(event, {}), this); this.updateScroller(); }; SelectTable2.prototype._filter = function (items, filterText) { var result = []; if (filterText.length == 1) { result = items.map(function (item) { var res = { item: item, text: typeof item === 'string' ? item : item.text }; return res; }).map(function (it) { it.score = 0; var text = it.text.replace(/((\ )|(\s))+/g, ' ').trim(); it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0; text = nonAccentVietnamese(text); it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0; return it; }); result.sort(function (a, b) { if (b.score - a.score == 0) { if (nonAccentVietnamese(b.text) > nonAccentVietnamese(a.text)) return -1; return 1; } return b.score - a.score; }); result = result.filter(function (x) { return x.score > 0; }); } else { var its = items.map(function (item) { var res = { item: item, text: typeof item === 'string' ? item : item.text }; var text = res.text.replace(/((\ )|(\s))+/g, ' ').trim(); res.score = (phraseMatch(text, filterText) + phraseMatch(nonAccentVietnamese(text), nonAccentVietnamese(filterText))) / 2; if (nonAccentVietnamese(text).replace(/s/g, '').toLowerCase().indexOf(nonAccentVietnamese(filterText).toLowerCase().replace(/s/g, '')) > -1) res.score = 100; return res; }); if (its.length == 0) return; its.sort(function (a, b) { if (b.score - a.score == 0) { if (nonAccentVietnamese(b.text) > nonAccentVietnamese(a.text)) return -1; return 1; } return b.score - a.score; }); var result = its.filter(function (x) { return x.score > 0.5; }); if (result.length == 0) { var bestScore = its[0].score; result = its.filter(function (it) { return it.score + 0.001 >= bestScore; }); } if (result[0].score == 0) result = []; } result = result.map(function (e) { return e.item; }); return result; }; SelectTable2.prototype._stringcmp = function (s0, s1) { if (s0 == s1) return 0; if (s0 > s1) return 1; return -1; }; SelectTable2.prototype._getString = function (item) { if (typeof item == "string") return item; return item.text; }; SelectTable2.prototype._equalArr = function (a, b) { if (a.length != b.length) return false; for (var i = 0; i < a.length; ++i) { if (a[i] != b[i]) return false; } return true; }; SelectTable2.prototype._applySort = function (items, sortFlag) { var res = items.slice(); if (sortFlag == 1 || sortFlag === true) { res.sort(function (a, b) { return this._stringcmp(this._getString(a), this._getString(b)) }.bind(this)) } else if (sortFlag == -1) { res.sort(function (a, b) { return -this._stringcmp(this._getString(a), this._getString(b)) }.bind(this)) } else if (typeof sortFlag == 'function') { res.sort(function (a, b) { return sortFlag(a, b) }.bind(this)) } return res; }; SelectTable2.prototype.requestSort = function () { if (!this.sorted || this.sorted == 0) return; var selectedItems = this.selectedItems; var selectedItemsNew = this._applySort(selectedItems, this.sorted); if (!this._equalArr(selectedItems, selectedItemsNew)) { this.selectedItems = selectedItemsNew; } var nonselectedItems = this.nonselectedItems; var nonselectedItemsNew = this._applySort(nonselectedItems, this.sorted); if (!this._equalArr(nonselectedItems, nonselectedItemsNew)) { this.nonselectedItems = nonselectedItemsNew; } }; SelectTable2.eventHandler.searchTextInputModify = function (event) { var filterText = this.$searchTextInput.value.trim(); if (filterText.length > 0) { var selectedItems = this.selectedItems; var nonselectedItems = this.nonselectedItems; this.selectedSearchItems = selectedItems; this.nonselectedSearchItems = this._filter(nonselectedItems, filterText); this.selectedSearchItems = this._filter(selectedItems, filterText); } else { } this.searching = filterText.length > 0; }; SelectTable2.property = {}; SelectTable2.property.disableMoveAll = { set: function (value) { if (value) this.addClass('disable-move-all'); else this.removeClass('disable-move-all'); }, get: function () { return this.containsClass('disable-move-all'); } }; SelectTable2.property.removeAllText = { set: function (text) { this._removeAllText = text; //todo: update remove all text if (!text) this.$removeAllBtn.addStyle('display', 'none'); else { this.$removeAllBtn.removeStyle('display'); this.$removeAllBtn.innerHTML = this.removeAllText; this.updateButtonsContainerSize(); } }, get: function () { return this._removeAllText || 'Remove All' } }; SelectTable2.property.addAllText = { set: function (text) { this._addAllText = text; if (!text) this.$addAllBtn.addStyle('display', 'none'); else { this.$addAllBtn.removeStyle('display'); this.$addAllBtn.innerHTML = this.removeAllText; this.updateButtonsContainerSize(); } }, get: function () { return this._addAllText || 'Add All' } }; SelectTable2.property.searching = { set: function (value) { if (value) { this.addClass('searching'); } else { this.removeClass('searching'); } this.updateScroller(); }, get: function () { return this.containsClass('searching'); } }; SelectTable2.property.sorted = { set: function (value) { this._sort = value; this.requestSort(); }, get: function () { return this._sort; } }; SelectTable2.property.selectedItems = { set: function (items) { this.$selectedItemsContainer.clearChild(); var $nonselectedItemsContainer = this.$nonselectedItemsContainer; var $selectedItemsContainer = this.$selectedItemsContainer; var self = this; if (items instanceof Array) { items.map(function (item) { return SelectTable2_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedItemsContainer) { this.addTo($nonselectedItemsContainer); self.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } self.updateScroller(); self.requestSort(); } } }).addTo(this.$selectedItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); this.requestSort(); }, get: function () { return Array.prototype.map.call(this.$selectedItemsContainer.childNodes, function (e) { return e.data; }); } } SelectTable2.property.nonselectedItems = { set: function (items) { this.$nonselectedItemsContainer.clearChild(); var $nonselectedItemsContainer = this.$nonselectedItemsContainer; var $selectedItemsContainer = this.$selectedItemsContainer; var self = this; if (items instanceof Array) { items.map(function (item) { return SelectTable2_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedItemsContainer) { this.addTo($nonselectedItemsContainer); self.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), self); } self.updateScroller(); self.requestSort(); } } }).addTo(this.$nonselectedItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); this.requestSort(); }, get: function () { return Array.prototype.map.call(this.$nonselectedItemsContainer.childNodes, function (e) { return e.data; }); } }; SelectTable2.property.selectedSearchItems = { set: function (items) { this.$selectedSearchItemsContainer.clearChild(); var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer; var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer; var table = this; if (items instanceof Array) { items.map(function (item) { return SelectTable2_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedSearchItemsContainer) { this.addTo($nonselectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$nonselectedItemsContainer); return true; } return false; }.bind(this)); table.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } else { this.addTo($selectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$selectedItemsContainer); return true; } return false; }.bind(this)); table.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } table.updateScroller(); table.requestSort(); } } }).addTo(this.$selectedSearchItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); }, get: function () { return Array.prototype.map.call(this.$selectedSearchItemsContainer.childNodes, function (e) { return e.data; }); } } SelectTable2.property.nonselectedSearchItems = { set: function (items) { this.$nonselectedSearchItemsContainer.clearChild(); var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer; var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer; var table = this; if (items instanceof Array) { items.map(function (item) { return SelectTable2_({ tag: 'item', props: { data: item }, on: { requestmove: function (event) { if (this.parentElement == $selectedSearchItemsContainer) { this.addTo($nonselectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$nonselectedItemsContainer); return true; } return false; }.bind(this)); table.emit('remove', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } else { this.addTo($selectedSearchItemsContainer); table.getAllItemElement().filter(function (itemElement) { if (itemElement.data == this.data) { itemElement.addTo(table.$selectedItemsContainer); return true; } return false; }.bind(this)); table.emit('add', EventEmitter["b" /* default */].copyEvent(event, { item: item }), table); } table.updateScroller(); table.requestSort(); } } }).addTo(this.$nonselectedSearchItemsContainer); }.bind(this)) } else { // error } this.updateScroller(); }, get: function () { return Array.prototype.map.call(this.$nonselectedSearchItemsContainer.childNodes, function (e) { return e.data; }); } }; /* namespace of selecttable */ function SelectTable2_Item() { var res = SelectTable2_({ extendEvent: ['requestmove', 'clickadd', 'clickremove', 'clickexclude'], class: 'absol-select-table-item', child: ['span.absol-select-table-item-text', { class: 'absol-select-table-item-right-container', child: { class: 'absol-select-table-item-right-container-table', child: { class: 'absol-select-table-item-right-container-row', child: [ { attr: { title: 'Add' }, class: ['absol-select-table-item-right-container-cell', 'add'], child: 'addicon' }, { attr: { title: 'Remove' }, class: ['absol-select-table-item-right-container-cell', 'remove'], child: 'subicon' }, { attr: { title: 'Exclude' }, class: ['absol-select-table-item-right-container-cell', 'exclude'], child: 'excludeico' }, ] } } } ] }); res.$text = SelectTable2_$('span', res); res.eventHandler = OOP["a" /* default */].bindFunctions(res, SelectTable2_Item.eventHandler); res.$rightBtn = SelectTable2_$('.absol-select-table-item-right-container', res); res.on('dblclick', res.eventHandler.dblclick); res.$addBtn = SelectTable2_$('.absol-select-table-item-right-container-cell.add', res).on('click', res.eventHandler.addBtClick); res.$removeBtn = SelectTable2_$('.absol-select-table-item-right-container-cell.remove', res).on('click', res.eventHandler.removeBtClick); res.$excludeBtn = SelectTable2_$('.absol-select-table-item-right-container-cell.exclude', res).on('click', res.eventHandler.excludeBtClick); return res; }; SelectTable2_Item.eventHandler = {}; SelectTable2_Item.eventHandler.dblclick = function (event) { event.preventDefault(); if (!EventEmitter["b" /* default */].hitElement(this.$rightBtn, event)) this.emit('requestmove', event, this); }; SelectTable2_Item.eventHandler.rightBtClick = function (event) { this.emit('requestmove', event, this); }; SelectTable2_Item.eventHandler.removeBtClick = function (event) { this.emit('clickremove', event, this); }; SelectTable2_Item.eventHandler.addBtClick = function (event) { this.emit('clickadd', event, this); }; SelectTable2_Item.eventHandler.excludeBtClick = function (event) { this.emit('clickexclude', event, this); }; SelectTable2_Item.property = {}; SelectTable2_Item.property.data = { set: function (value) { this._data = value; if (value) { var text; if (typeof value == "string") { text = value; } else { text = value.text; } this.$text.innerHTML = text; } }, get: function () { return this._data; } }; SelectTable2_Item.property.text = { get: function () { return this._data ? (typeof this._data == 'string' ? this._data : this._data.text) : ''; } }; function ExcludeIco() { return SelectTable2_( '<svg class="exclude-icon" width="24" height="24" viewBox="0 0 24 24">\ <path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M11,15H13V17H11V15M11,7H13V13H11V7" />\ </svg>'); } SelectTable2_privateDom.install({ item: SelectTable2_Item, excludeico: ExcludeIco }); // not completed yet ACore["c" /* default */].install('selecttable2', SelectTable2); /* harmony default export */ var js_SelectTable2 = (SelectTable2); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/spaninput.css var spaninput = __webpack_require__(147); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SpanInput.js var SpanInput_ = ACore["c" /* default */]._; var SpanInput_$ = ACore["c" /* default */].$; function SpanInput() { this.defineEvent(['change']); this._inputType = 0; this._lastValue = null; this.on('paste', this.eventHandler.paste) .on('keyup', this.eventHandler.keyup) .on('keydown', this.eventHandler.keydown) .on('blur', this.eventHandler.blur); } SpanInput.prototype.notifyValueChange = function (event) { var cValue = this.value; if (this._lastValue != cValue && (this._inputType != 1 || !isNaN(this._lastValue) || !isNaN(cValue))) { this._lastValue = cValue; this.emit('change', { type: 'change', value: cValue, originEvent: event }, this); } } SpanInput.eventHandler = {}; SpanInput.eventHandler.keyup = function (event) { if (this._inputType == 0) { this.notifyValueChange(event); } else if (this._inputType == 1) { this.eventHandler.numberKeyup(event) } }; SpanInput.eventHandler.keydown = function (event) { if (this._inputType == 0) { } else if (this._inputType == 1) { this.eventHandler.numberKeydown(event) } }; SpanInput.eventHandler.numberBlur = function (value) { this.notifyValueChange(event); }; SpanInput.eventHandler.textBlur = function (event) { this.notifyValueChange(event); }; SpanInput.eventHandler.blur = function (event) { if (this._inputType == 0) { this.eventHandler.textBlur(event); } else if (this._inputType == 1) { this.eventHandler.numberKeydown(event) } } SpanInput.eventHandler.numberKeyup = function (event) { this.notifyValueChange(); }; SpanInput.eventHandler.numberKeydown = function (event) { var key = event.key; if (key == 'Enter') { event.preventDefault(); this.blur(); this.notifyValueChange(); return; } if (key && key.length == 1 && !event.ctrlKey && !event.altKey) { if (key.match(/[0-9.\-\+]/)) { if (key == '.' && this.text.indexOf('.') >= 0) event.preventDefault(); if ((key == '+' || key == '-') && (this.text.indexOf('+') >= 0 || this.text.indexOf('-') >= 0 || getCaretPosition(this) > 0)) event.preventDefault(); } else event.preventDefault(); } }; SpanInput.eventHandler.paste = function (event) { event.preventDefault(); if (event.clipboardData && event.clipboardData.getData) { var text = event.clipboardData.getData("text/plain"); if (this._inputType == 1) text = text.replace(/[^0-9.\-+]/g, ''); document.execCommand("insertHTML", false, text); if (this._inputType == 1) { if (isNaN(this.value)) { this.value = NaN; } } } else if (window.clipboardData && window.clipboardData.getData) { var text = window.clipboardData.getData("Text"); if (this._inputType == 1) text = text.replace(/[^0-9.\-+]/g, ''); insertTextAtCursor(text); if (this._inputType == 1) { if (isNaN(this.value)) { this.value = NaN; } } } }; SpanInput.property = {}; SpanInput.property.value = { set: function (value) { if (this._inputType == 1 && isNaN(value)) value = null; this.clearChild(); if (value !== null) this.addChild(SpanInput_({ text: value + '' })); }, get: function () { if (this._inputType == 1) { return parseFloat(this.text); } else { return this.text; } } }; SpanInput.property.type = { set: function (value) { var index = ['text', 'number'].indexOf(value); if (index < 0) index = 0; this._inputType = index; if (index == 1) { this.addClass('absol-span-input-empty-minus'); } else { this.removeClass('absol-span-input-empty-minus'); } }, get: function () { return ['text', 'number'][this._inputType]; } }; SpanInput.property.text = { get: function () { return getTextIn(this); } } SpanInput.tag = 'spaninput'; SpanInput.render = function () { return SpanInput_('span.absol-span-input[contenteditable="true"]'); }; ACore["c" /* default */].install(SpanInput); /* harmony default export */ var js_SpanInput = (SpanInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/statictabbar.css var statictabbar = __webpack_require__(149); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/StaticTabbar.js var StaticTabbar_$ = ACore["c" /* default */].$; var StaticTabbar_ = ACore["c" /* default */]._; function StaticTabbar() { var thisST = this; this.$activeBox = StaticTabbar_$('.absol-static-tabbar-active-box', this) this.$hline = StaticTabbar_$('.absol-static-tabbar-hline', this); this.$buttons = []; this._btDict = {}; this._activedButton = undefined; this.sync = new Promise(function (resolve) { StaticTabbar_('attachhook').on('error', function () { this.remove(); resolve(); }).addTo(thisST); }); return this; } StaticTabbar.tag = 'StaticTabbar'.toLowerCase(); StaticTabbar.render = function () { return StaticTabbar_({ class: 'absol-static-tabbar', extendEvent: 'change', child: [ { class: 'absol-static-tabbar-active-box', child: '.absol-static-tabbar-hline' } ] }); }; StaticTabbar.prototype.fireChange = function (data) { this.emit('change', { target: this, data, value: this.value }, self); } StaticTabbar.property = {}; StaticTabbar.property.items = { set: function (value) { this.$buttons.forEach(function (e) { e.remove() }); this._items = value; var self = this; this.$buttons = this.items.map(function (tab) { var ident = (tab.value || randomIdent()); var button = StaticTabbar_({ tag: 'button', class: 'absol-static-tabbar-button', id: 'tab-' + ident, child: { tag: 'span', child: { text: tab.text } }, on: { click: function (event) { if (self.value != tab.value) { self.value = ident; self.fireChange(tab); } } } }).addTo(self); self._btDict[ident] = button; return button; }); if (this.value !== undefined) { this.sync.then(this.activeTab.bind(this, this.value)); } }, get: function () { return this._items || []; } }; StaticTabbar.property.value = { set: function (value) { this._value = value; if (this.$buttons.length > 0) { this.sync.then(this.activeTab.bind(this, value)); } }, get: function () { return this._value; } }; StaticTabbar.prototype.activeTab = function (ident) { if (this._activedButton) this._activedButton.removeClass('active'); var button = this._btDict[ident]; this._activedButton = button; if (button) { button.addClass('active'); var bound = this.getBoundingClientRect(); var buttonBound = button.getBoundingClientRect(); var dx = buttonBound.left - bound.left; var fontSize = this.getFontSize(); this.$activeBox.addStyle({ left: dx / fontSize + 'em', width: buttonBound.width / fontSize + 'em' }); } else { this.$activeBox.addStyle({ left: '0', width: '0' }); } }; ACore["c" /* default */].install('statictabbar', StaticTabbar); /* harmony default export */ var js_StaticTabbar = (StaticTabbar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/switch.css var css_switch = __webpack_require__(151); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Switch.js var Switch_ = ACore["c" /* default */]._; var Switch_$ = ACore["c" /* default */].$; function Switch() { var thisS = this; this.$input = Switch_$('input', this); this.$input.on('click', function (event) { thisS.emit('change', event, thisS); }); OOP["a" /* default */].drillProperty(this, this.$input, 'checked'); OOP["a" /* default */].drillProperty(this, this.$input, 'isOn', 'checked'); } Switch.tag = 'switch'; Switch.render = function () { return Switch_({ tag: 'label', class: 'absol-switch', extendEvent: 'change', child: [ 'input[type="checkbox"]', 'span.absol-switch-slider' ] }); }; Switch.attribute = { checked: { set: function (value) { if (value == 'false' || value == null) { this.checked = false; } else { this.checked = true; } }, get: function () { return this.checked ? 'true' : 'false' }, remove: function () { this.checked = false; } }, disabled: { set: function (value) { if (value == 'false' || value == null) { this.disabled = false; } else { this.disabled = true; } }, get: function () { return this.disabled ? 'true' : 'false' }, remove: function () { this.disabled = false; } } }; Switch.property = { disabled: { set: function (value) { this.$input.disabled = !!value; if (value) { this.addClass('disabled'); } else { this.removeClass('disabled'); } }, get: function () { return this.$input.disabled; } } }; ACore["c" /* default */].install('switch', Switch); /* harmony default export */ var js_Switch = (Switch); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checkboxbutton.css var checkboxbutton = __webpack_require__(153); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckboxButton.js ACore["c" /* default */].install('checkboxbutton', CheckBoxInput); /* harmony default export */ var CheckboxButton = (CheckBoxInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tablescroller.css var tablescroller = __webpack_require__(155); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TableScroller.js var TableScroller_$ = ACore["c" /* default */].$; var TableScroller_ = ACore["c" /* default */]._; function TableScroller() { var thisTS = this; this.$content = undefined; this.$fixedViewport = TableScroller_$('.absol-table-scroller-fixed-viewport', this); this.$leftScroller = TableScroller_$('.absol-table-scroller-left-vscroller', this); this.$leftViewport = TableScroller_$('.absol-table-scroller-left-vscroller-viewport', this) .on('scroll', thisTS.eventHandler.scrollLeftScrollerViewport); ; this.$headScroller = TableScroller_$('.absol-table-scroller-header-hscroller', this); this.$headScrollerViewport = TableScroller_$('.absol-table-scroller-header-hscroller-viewport', this) .on('scroll', this.eventHandler.scrollHeadScrollerViewport); this.$attachHook = TableScroller_$('attachhook', this); this.$attachHook.requestUpdateSize = this._updateContentSize.bind(this); this.$attachHook.on('error', function () { Dom["b" /* default */].addToResizeSystem(this); }); this.sync = new Promise(function (rs) { thisTS.$attachHook.once('error', rs) }); this.$viewport = TableScroller_$('.absol-table-scroller-viewport', this) .on('scroll', this.eventHandler.scrollViewport); this.$viewport.scrollInto = js_BScroller.prototype.scrollInto; this.$leftLine = TableScroller_$('.absol-table-scroller-left-line', this); this.$headLine = TableScroller_$('.absol-table-scroller-head-line', this); this.$vscrollbarCtn = TableScroller_$('.absol-table-scroller-vscrollbar-container', this); this.$vscrollbar = TableScroller_$('.absol-table-scroller-vscrollbar-container vscrollbar', this) .on('scroll', function () { thisTS.$viewport.scrollTop = this.innerOffset; }); this.$hscrollbarCtn = TableScroller_$('.absol-table-scroller-hscrollbar-container', this); this.$hscrollbar = TableScroller_$('.absol-table-scroller-hscrollbar-container hscrollbar', this) .on('scroll', function () { thisTS.$viewport.scrollLeft = this.innerOffset; }); this.$vscrollbar.hidden = false; this.$hscrollbar.hidden = false; this._fixedTableThsVisible = []; this._fixedTableTr = []; this._fixedTableThs = []; } TableScroller.tag = 'TableScroller'.toLowerCase(); TableScroller.render = function () { return TableScroller_({ class: 'absol-table-scroller', child: [ '.absol-table-scroller-viewport', '.absol-table-scroller-fixed-viewport',//place holder { class: 'absol-table-scroller-header-hscroller', child: '.absol-table-scroller-header-hscroller-viewport' }, { class: 'absol-table-scroller-left-vscroller', child: '.absol-table-scroller-left-vscroller-viewport' }, '.absol-table-scroller-head-line', '.absol-table-scroller-left-line', { class: 'absol-table-scroller-vscrollbar-container', child: { tag: 'vscrollbar' } }, { class: 'absol-table-scroller-hscrollbar-container', child: { tag: 'hscrollbar' } }, 'attachhook' ] }); }; TableScroller.scrollSize = 17;//default Dom["b" /* default */].getScrollSize().then(function (size) { TableScroller.scrollSize = size.width;//default scroller TableScroller.$style = TableScroller_('style[id="table-scroller-css"]').addTo(document.head); TableScroller.$style.innerHTML = [ '.absol-table-scroller .absol-table-scroller-viewport {',// ' width: calc(100% + ' + size.width + 'px);', ' height: calc(100% + ' + size.width + 'px);', '}', '.absol-table-scroller .absol-table-scroller-header-hscroller-viewport {', ' margin-bottom: -' + size.width + 'px;/*default*/', '}' ].join('\n'); Dom["b" /* default */].updateResizeSystem(); setTimeout(Dom["b" /* default */].updateResizeSystem.bind(Dom["b" /* default */]), 30);// css load delay }); TableScroller.eventHandler = {}; TableScroller.eventHandler.scrollViewport = function (event) { if (!this.__scrollingElement__ || this.__scrollingElement__ == this.$viewport) { this.__scrollingElement__ = this.$viewport; this.$headScrollerViewport.scrollLeft = this.$viewport.scrollLeft; this.$leftViewport.scrollTop = this.$viewport.scrollTop; this.$vscrollbar.innerOffset = this.$viewport.scrollTop; this.$hscrollbar.innerOffset = this.$viewport.scrollLeft; if (this.__scrollTimer__ > 0) { clearTimeout(this.__scrollTimer__); } this.__scrollTimer__ = setTimeout(function () { this.__scrollingElement__ = undefined; this.__scrollTimer__ = -1; }.bind(this), 300); } }; TableScroller.eventHandler.scrollHeadScrollerViewport = function (event) { if (!this.__scrollingElement__ || this.__scrollingElement__ == this.$headScrollerViewport) { this.__scrollingElement__ = this.$headScrollerViewport; this.$viewport.scrollLeft = this.$headScrollerViewport.scrollLeft; if (this.__scrollTimer__ > 0) { clearTimeout(this.__scrollTimer__); } this.__scrollTimer__ = setTimeout(function () { this.__scrollingElement__ = undefined; this.__scrollTimer__ = -1; }.bind(this), 100); } }; TableScroller.eventHandler.scrollLeftScrollerViewport = function () { if (!this.__scrollingElement__ || this.__scrollingElement__ == this.$leftViewport) { this.__scrollingElement__ = this.$leftViewport; this.$viewport.scrollTop = this.$leftViewport.scrollTop; if (this.__scrollTimer__ > 0) { clearTimeout(this.__scrollTimer__); } this.__scrollTimer__ = setTimeout(function () { this.__scrollingElement__ = undefined; this.__scrollTimer__ = -1; }.bind(this), 100); } } TableScroller.prototype.clearChild = function () { this.$viewport.clearChild(); this.$fixedViewport.clearChild(); this.$headScrollerViewport.clearChild(); this.$leftViewport.clearChild(); this.$content = null; return this; }; TableScroller.prototype.addChild = function (elt) { if (this.$viewport.childNodes.length == 0) { if (elt.tagName && elt.tagName.toLowerCase() == 'table') { elt.classList.add('absol-table-scroller-origin'); this.$viewport.addChild(elt); this.$content = elt; this._updateContent(); this.sync.then(this._updateContentSize.bind(this)).then(function () { setTimeout(this._updateContentSize.bind(this), 30); }.bind(this)); } else { throw new Error('Element must be a table!'); } } else { throw new Error("Only 1 table accepted!"); } }; TableScroller.prototype._updateFixedTable = function () { var fixedCol = this.fixedCol; this.$fixedViewport.clearChild(); this.$fixedTable = TableScroller_$(this.$content.cloneNode(false)).addClass('absol-table-scroller-fixed-table') .removeClass('absol-table-scroller-origin').addTo(this.$fixedViewport); this.$fixedTableThead = TableScroller_$(this.$contentThead.cloneNode(false)).addTo(this.$fixedTable); this.$fixedTableThead.clearChild(); this._fixedTableThsVisible = []; var self = this; this._fixedTableTr = Array.prototype.filter.call(this.$contentThead.childNodes, function (elt) { return elt.tagName == "TR"; }).map(function (tr) { var cloneTr = TableScroller_$(tr.cloneNode(false)); cloneTr.__originElement__ = tr; self.$fixedTableThead.appendChild(cloneTr); return cloneTr; }); this._fixedTableThs = this._fixedTableTr.map(function (tr) { return Array.prototype.filter.call(tr.__originElement__.childNodes, function (elt1) { return elt1.tagName == "TH" || elt1.tagName == "TD"; }).reduce(function (ac, th) { var colspan = th.getAttribute('colspan'); if (colspan) { colspan = parseInt(colspan); } else { colspan = 1; } ac.colspanSum += colspan; var cloneTh = TableScroller_$(th.cloneNode(true)); tr.appendChild(cloneTh); cloneTh.__originElement__ = th; ac.result.push(cloneTh); if (ac.colspanSum <= fixedCol) { self._fixedTableThsVisible.push(th); } return ac; }, { result: [], colspanSum: 0 }).result; }); }; TableScroller.prototype._updateHeaderScroller = function () { var self = this; this.$headScrollerViewport.clearChild(); this.$headScrollerTable = TableScroller_$(this.$content.cloneNode(false)) .removeClass('absol-table-scroller-origin') .addTo(this.$headScrollerViewport); this.$headScrollerThead = TableScroller_$(this.$contentThead.cloneNode(false)) .addTo(this.$headScrollerTable); this._headScrollerTr = Array.prototype.filter.call(this.$contentThead.childNodes, function (elt) { return elt.tagName == "TR"; }).map(function (tr) { var cloneTr = TableScroller_$(tr.cloneNode(false)); cloneTr.__originElement__ = tr; self.$headScrollerThead.appendChild(cloneTr); return cloneTr; }); this._headScrollerTds = this._headScrollerTr.map(function (tr) { return Array.prototype.filter.call(tr.__originElement__.childNodes, function (elt1) { return elt1.tagName == "TH"; }).map(function (th) { var cloneTh = TableScroller_$(th.cloneNode(true)).addTo(tr); cloneTh.__originElement__ = th; return cloneTh; }); }); }; TableScroller.prototype._updateLeftTable = function () { this.$leftViewport.clearChild(); this.$leftTable = TableScroller_$(this.$content.cloneNode(true)).addTo(this.$leftViewport); }; TableScroller.prototype._updateContent = function () { this.$contentThead = TableScroller_$('thead', this.$content); this._updateFixedTable(); this._updateHeaderScroller(); this._updateLeftTable(); }; TableScroller.prototype._updateFixedTableSize = function () { var l = 1000; var r = -1000; this._fixedTableThsVisible.forEach(function (elt) { var b = elt.getBoundingClientRect(); l = Math.min(l, b.left); r = Math.max(r, b.right); }); this._leftWidth = Math.max(r - l, 0); this.$fixedViewport.addStyle('width', this._leftWidth + 2 + 'px'); this._fixedTableTr.forEach(function (elt) { var styleHeight = elt.__originElement__.getBoundingClientRect().height + 'px'; elt.addStyle('height', styleHeight); }); this._fixedTableThs.forEach(function (row) { row.forEach(function (elt) { var styleWidth = elt.__originElement__.getBoundingClientRect().width + 'px'; elt.addStyle('width', styleWidth); }); }); this.$fixedTable.addStyle({ height: this.$contentThead.getBoundingClientRect().height + 'px', width: this.$content.getBoundingClientRect().width + 'px', }); }; TableScroller.prototype._updateHeaderScrollerSize = function () { var headHeight = this.$contentThead.getBoundingClientRect().height + 'px'; this.$headScrollerTable.addStyle('height', headHeight); this.$headScrollerTable.addStyle('width', this.$content.getBoundingClientRect().width + 'px'); this._headScrollerTr.forEach(function (elt) { var styleHeight = elt.__originElement__.getBoundingClientRect().height + 'px'; elt.addStyle('height', styleHeight); }); this._headScrollerTds.forEach(function (row) { row.forEach(function (elt) { var styleWidth = elt.__originElement__.getBoundingClientRect().width + 'px'; elt.addStyle('width', styleWidth); }); }); }; TableScroller.prototype._updateLeftTableSize = function () { this.$leftTable.addStyle('width', this.$content.getBoundingClientRect().width + 'px'); this.$leftTable.addStyle('height', this.$content.getBoundingClientRect().height + 'px'); this.$leftScroller.addStyle('width', this._leftWidth + 2 + 'px'); }; TableScroller.prototype._updateLinesSize = function () { if (this.$viewport.clientHeight < this.$viewport.scrollHeight) { this.addClass('scroll-v'); } else { this.removeClass('scroll-v'); } if (this.$viewport.clientWidth < this.$viewport.scrollWidth) { this.addClass('scroll-h'); } else { this.removeClass('scroll-h'); } this.$leftLine.addStyle({ maxHeight: this.$content.getBoundingClientRect().height + 'px', left: this._leftWidth + 'px' }); this.$headLine.addStyle({ top: this.$contentThead.getBoundingClientRect().height + 'px', maxWidth: this.$content.getBoundingClientRect().width + 'px' }); }; TableScroller.prototype._updateScrollBarSize = function () { var viewportBound = this.$viewport.getBoundingClientRect(); var tableBound = this.$content.getBoundingClientRect(); this.$vscrollbar.innerHeight = this.$viewport.scrollHeight; this.$vscrollbar.outerHeight = viewportBound.height - TableScroller.scrollSize; this.$hscrollbar.innerWidth = this.$viewport.scrollWidth; this.$hscrollbar.outerWidth = viewportBound.width - TableScroller.scrollSize; var overHeight = this.$viewport.clientHeight < this.$viewport.scrollHeight; var overWidth = this.$viewport.clientWidth < this.$viewport.scrollWidth; if (overHeight) { if (overWidth) { this.$hscrollbarCtn.removeStyle('bottom'); this.$vscrollbarCtn.removeStyle('right'); } else { this.$vscrollbarCtn.addStyle('right', viewportBound.width - TableScroller.scrollSize - tableBound.width + 'px'); } } else { if (overWidth) { this.$hscrollbarCtn.addStyle('bottom', viewportBound.height - TableScroller.scrollSize - tableBound.height + 'px'); } } }; TableScroller.prototype._updateContentSize = function () { if (!this.$fixedTable) return; this._updateFixedTableSize(); this._updateHeaderScrollerSize(); this._updateLeftTableSize(); this._updateLinesSize(); this._updateScrollBarSize(); }; TableScroller.property = {}; TableScroller.property.fixedCol = { set: function (value) { value = value || 0; this._fixedCol = value; if (this.$content) { this._updateContent(); this.sync.then(this._updateContentSize.bind(this)).then(function () { setTimeout(this._updateContentSize.bind(this), 30) }.bind(this)); } }, get: function () { return this._fixedCol || 0; } }; ACore["c" /* default */].install(TableScroller); /* harmony default export */ var js_TableScroller = (TableScroller); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tablevscroller.css var tablevscroller = __webpack_require__(157); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TableVScroller.js var TableVScroller_ = ACore["c" /* default */]._; var TableVScroller_$ = ACore["c" /* default */].$; function TableVScroller() { var thisTS = this; this.$attachHook = TableVScroller_$('attachhook', this); this.$attachHook.updateSize = this.update.bind(this); this.sync = new Promise(function (rs) { thisTS.$attachHook.on('error', rs) }); this.$viewport = TableVScroller_$('.absol-table-vscroller-viewport', this); this.$attachHook.on('error', function () { Dom["b" /* default */].addToResizeSystem(thisTS.$attachHook); this.updateSize(); }); this.$topTable = TableVScroller_$('.absol-table-vscroller-head', this); this.$headLine = TableVScroller_$('.absol-table-vscroller-head-line', this); } TableVScroller.tag = 'TableVScroller'.toLowerCase(); TableVScroller.render = function () { return TableVScroller_( { class: 'absol-table-vscroller', child: [ '.absol-table-vscroller-viewport', 'table.absol-table-vscroller-head', '.absol-table-vscroller-head-line', 'attachhook' ] } ); }; TableVScroller.prototype.clearChild = function () { this.$viewport.clearChild(); this.$topTable.clearChild(); }; TableVScroller.prototype.addChild = function (elt) { if (this.$viewport.childNodes.length == 0) { if (elt.tagName && elt.tagName.toLowerCase() == 'table') { this.$viewport.addChild(elt); this.$table = TableVScroller_$(elt); this.$thead = TableVScroller_$('thead', elt); this.$tr = TableVScroller_$('tr', this.$thead); this.$topThead = this.$thead.cloneNode(true); this.$topTr = TableVScroller_$('tr', this.$topThead); this.$topTable.addChild(this.$topThead).addStyle('display', 'none'); this.update(); } else { throw new Error('Element must be a table!'); } } else { throw new Error("Only 1 table accepted!"); } }; TableVScroller.prototype._trackBackgroundColor = function (element) { var current = this.$thead; var res; while (current && !res && res != 'rgba(0, 0, 0, 0)') { res = window.getComputedStyle(element).getPropertyValue('background-color'); current = current.parentNode; } if (res == 'rgba(0, 0, 0, 0)') return 'white'; return res; } TableVScroller.prototype.updateStyle = function () { if (!this.$thead) return; var clazz = this.$table.attr('class'); if (clazz) { clazz = clazz.trim().split(/\s+/); for (var i = 0; i < clazz.length; ++i) { this.$topTable.addClass(clazz[i]); } } var bgColor = this._trackBackgroundColor(this.$thead); this.$topTable.addStyle('background-color', bgColor); }; TableVScroller.prototype.updateSize = function () { var theadBound = this.$thead.getBoundingClientRect(); var tableBound = this.$table.getBoundingClientRect(); this.$topTable.addStyle({ width: tableBound.width + 'px', height: theadBound.height + 'px' }); this.$headLine.addStyle({ top: theadBound.height + 'px', maxWidth: tableBound.width + 'px' }); if (this.$viewport.clientHeight < this.$viewport.scrollHeight) { this.addClass('scroll-v'); } else { this.removeClass('scroll-v'); } var realNodes = this.$tr.childNodes; var topNodes = this.$topTr.childNodes; for (var i = 0; i < realNodes.length; ++i) { if (!realNodes[i].tagName) continue; var wstyle = window.getComputedStyle(TableVScroller_$(realNodes[i])).getPropertyValue('width'); TableVScroller_$(topNodes[i]).attr('style', realNodes[i].attr('style')).addStyle('width', wstyle); } this.$topTable.removeStyle('display'); } TableVScroller.prototype.update = function () { if (!this.$thead) return; this.updateStyle(); this.updateSize(); }; ACore["c" /* default */].install(TableVScroller); /* harmony default export */ var js_TableVScroller = (TableVScroller); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/textarea2.css var textarea2 = __webpack_require__(159); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectMenu.js /*global absol*/ var SelectMenu_ = ACore["c" /* default */]._; var SelectMenu_$ = ACore["c" /* default */].$; ACore["c" /* default */].creator['dropdown-ico'] = function () { return SelectMenu_([ '<svg class="dropdown" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">', '<g transform="translate(0,-197)">', '<path d="m6.3152 218.09a4.5283 4.5283 0 0 0-3.5673 7.3141l43.361 55.641a4.5283 4.5283 0 0 0 7.1421 7e-3l43.496-55.641a4.5283 4.5283 0 0 0-3.5673-7.3216z" />', '</g>', '</svg>' ].join('')); }; function SelectMenu_SelectMenu() { var thisSM = this; this._items = []; this._value = null; this._lastValue = null; this.$holderItem = SelectMenu_$('.absol-selectmenu-holder-item', this); this.$anchorCtn = SelectMenu_SelectMenu.getAnchorCtn(); this.$anchor = SelectMenu_('.absol-selectmenu-anchor.absol-disabled').addTo(this.$anchorCtn); this.$anchorContentCtn = SelectMenu_('.absol-selectmenu-anchor-content-container').addTo(this.$anchor); this.$dropdownBox = SelectMenu_('.absol-selectmenu-dropdown-box').addTo(this.$anchorContentCtn); this.$searchTextInput = SelectMenu_('searchtextinput').addStyle('display', 'none').addTo(this.$dropdownBox); this.$vscroller = SelectMenu_('bscroller').addTo(this.$dropdownBox); this.$selectlist = SelectMenu_('selectlist', this).addTo(this.$vscroller) .on('sizechangeasync', this.eventHandler.listSizeChangeAsync) .on('valuevisibilityasync', this.eventHandler.listValueVisibility); this.$scrollTrackElts = []; this.$removableTrackElts = []; this._itemsByValue = {}; this.$searchTextInput.on('stoptyping', this.eventHandler.searchModify); this._searchCache = {}; this.$selectlist.on('pressitem', this.eventHandler.selectlistPressItem, true); this.$selectlist.on('pressitem', function () { thisSM.isFocus = false; }, true); this._lastValue = "NOTHING_VALUE"; this._resourceReady = true; this.on('mousedown', this.eventHandler.click, true); this.on('blur', this.eventHandler.blur); this.selectListBound = { height: 0, width: 0 }; this.$attachhook = SelectMenu_$('attachhook', this) .on('error', this.eventHandler.attached); this.sync = new Promise(function (rs) { SelectMenu_$('attachhook', this).once('error', function () { rs(); }); }); this._selectListScrollSession = null; this._itemIdxByValue = null; return this; } SelectMenu_SelectMenu.tag = 'selectmenu-old'; SelectMenu_SelectMenu.render = function () { return SelectMenu_({ class: ['absol-selectmenu'], extendEvent: ['change', 'minwidthchange'], attr: { tabindex: '1' }, child: [ '.absol-selectmenu-holder-item', { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] }, 'attachhook', ] }); }; SelectMenu_SelectMenu.optimizeResource = true; // //will remove after SelectMenu completed SelectMenu_SelectMenu.getRenderSpace = function () { if (!SelectMenu_SelectMenu.getRenderSpace.warned) { console.warn('SelectMenu.getRenderSpace() will be removed in next version'); } SelectMenu_SelectMenu.getRenderSpace.warned = true; if (!SelectMenu_SelectMenu.$renderSpace) { SelectMenu_SelectMenu.$renderSpace = SelectMenu_('.absol-selectmenu-render-space') .addTo(document.body); } return SelectMenu_SelectMenu.$renderSpace; }; SelectMenu_SelectMenu.getAnchorCtn = function () { if (!SelectMenu_SelectMenu.$anchorCtn) { SelectMenu_SelectMenu.$anchorCtn = SelectMenu_('.absol-selectmenu-anchor-container') .addTo(document.body); } return SelectMenu_SelectMenu.$anchorCtn; }; SelectMenu_SelectMenu.prototype.updateItem = function () { this.$holderItem.clearChild(); if (this._itemsByValue[this.value]) { var elt = SelectMenu_({ tag: 'selectlistitem', props: { data: this._itemsByValue[this.value] } }).addTo(this.$holderItem); elt.$descCtn.addStyle('width', this.$selectlist._descWidth + 'px'); } }; SelectMenu_SelectMenu.prototype._dictByValue = function (items) { var dict = {}; var item; for (var i = 0; i < items.length; ++i) { item = items[i]; dict[item.value + ''] = item; } return dict; }; SelectMenu_SelectMenu.prototype.init = function (props) { props = props || {}; Object.keys(props).forEach(function (key) { if (props[key] === undefined) delete props[key]; }); if (!('value' in props)) { if (props.items && props.items.length > 0) props.value = typeof props.items[0] == 'string' ? props.items[0] : props.items[0].value; } var value = props.value; delete props.value; this.super(props); this.value = value; }; SelectMenu_SelectMenu.property = {}; SelectMenu_SelectMenu.property.items = { set: function (value) { this._searchCache = {}; this._itemIdxByValue = null; /** * verity data */ if (value) { value.forEach(function (it) { if (it && it.text) { it.text = it.text + ''; } }); } this._items = value; this._itemsByValue = this._dictByValue(value); if (!this._itemsByValue[this.value] && value.length > 0) { this.value = value[0].value; } else this.updateItem(); this.$dropdownBox.removeStyle('min-width'); this.selectListBound = this.$selectlist.setItemsAsync(value || []); this.style.setProperty('--select-list-desc-width', this.$selectlist.measuredSize.descWidth + 'px'); this._resourceReady = true; this.addStyle('min-width', this.selectListBound.width + 2 + 23 + 'px'); this.emit('minwidthchange', { target: this, value: this.selectListBound.width + 2 + 23, type: 'minwidthchange' }, this); }, get: function () { return this._items || []; } }; SelectMenu_SelectMenu.property.value = { set: function (value) { this.$selectlist.value = value; this._lastValue = value; this.updateItem(); }, get: function () { return this.$selectlist.value; } }; SelectMenu_SelectMenu.property.enableSearch = { set: function (value) { this._enableSearch = !!value; if (value) { this.$searchTextInput.removeStyle('display'); } else { this.$searchTextInput.addStyle('display', 'none'); } }, get: function () { return !!this._enableSearch; } }; SelectMenu_SelectMenu.prototype.updateDropdownPostion = function (updateAnchor) { if (!this.isFocus) { this.$anchorContentCtn .removeStyle('left') .removeStyle('top'); this.$dropdownBox.removeStyle('min-width'); return; } var bound = this.getBoundingClientRect(); if (!updateAnchor) { var outBound = Dom["b" /* default */].traceOutBoundingClientRect(this); if (!this.isFocus || bound.top > outBound.bottom || bound.bottom < outBound.top) { this.isFocus = false; return; } var anchorOutBound = Dom["b" /* default */].traceOutBoundingClientRect(this.$anchor); var searchBound = this.$searchTextInput.getBoundingClientRect(); var availableTop = bound.top - anchorOutBound.top - (this.enableSearch ? searchBound.height + 8 : 0) - 20; var availableBottom = anchorOutBound.bottom - bound.bottom - (this.enableSearch ? searchBound.height + 8 : 0) - 20; if (this.forceDown || availableBottom >= this.selectListBound.height || availableBottom > availableTop) { this.isDropdowUp = false; if (this.$dropdownBox.firstChild != this.$searchTextInput) { this.$searchTextInput.selfRemove(); this.$dropdownBox.addChildBefore(this.$searchTextInput, this.$vscroller); } this.$vscroller.addStyle('max-height', availableBottom + 'px'); } else { this.isDropdowUp = true; if (this.$dropdownBox.lastChild != this.$searchTextInput) { this.$searchTextInput.selfRemove(); this.$dropdownBox.addChild(this.$searchTextInput); } this.$vscroller.addStyle('max-height', availableTop + 'px'); } this.$dropdownBox.addStyle('min-width', bound.width + 'px'); } var anchorBound = this.$anchor.getBoundingClientRect(); if (this.isDropdowUp) { this.$anchorContentCtn.addStyle({ left: bound.left - anchorBound.left + 'px', top: bound.top - anchorBound.top - this.$dropdownBox.clientHeight - 1 + 'px', }); } else { this.$anchorContentCtn.addStyle({ left: bound.left - anchorBound.left + 'px', top: bound.bottom - anchorBound.top + 'px', }); } }; SelectMenu_SelectMenu.prototype.scrollToSelectedItem = function () { var self = this; setTimeout(function () { if (self.$selectlist.$selectedItem) { var fistChildBound = self.$selectlist.childNodes[1].getBoundingClientRect(); var lastChildBound = self.$selectlist.lastChild.getBoundingClientRect(); var listBound = { top: fistChildBound.top, height: lastChildBound.bottom - fistChildBound.top, bottom: lastChildBound.bottom } var itemBound = self.$selectlist.$selectedItem.getBoundingClientRect(); if (self.isDropdowUp) { var scrollBound = self.$vscroller.getBoundingClientRect(); self.$vscroller.scrollTop = Math.max(itemBound.bottom - scrollBound.height - listBound.top, 0); } else { self.$vscroller.scrollTop = itemBound.top - listBound.top; } } }.bind(this), 3); }; SelectMenu_SelectMenu.prototype.startTrackScroll = function () { var trackElt = this.parentElement; while (trackElt) { if (trackElt.addEventListener) { trackElt.addEventListener('scroll', this.eventHandler.scrollParent, false); } else { trackElt.attachEvent('onscroll', this.eventHandler.scrollParent, false); } this.$scrollTrackElts.push(trackElt); trackElt = trackElt.parentElement; } if (document.addEventListener) { document.addEventListener('scroll', this.eventHandler.scrollParent, false); document.addEventListener('wheel', this.eventHandler.wheelDocument, true); } else { document.attachEvent('onscroll', this.eventHandler.scrollParent, false); } this.$scrollTrackElts.push(document); }; SelectMenu_SelectMenu.prototype.stopTrackScroll = function () { var trackElt; for (var i = 0; i < this.$scrollTrackElts.length; ++i) { trackElt = this.$scrollTrackElts[i]; if (trackElt.removeEventListener) { trackElt.removeEventListener('scroll', this.eventHandler.scrollParent, false); } else { trackElt.dettachEvent('onscroll', this.eventHandler.scrollParent, false); } } this.$scrollTrackElts = []; }; SelectMenu_SelectMenu.prototype.startListenRemovable = function () { var removableElt = this.parentElement; while (removableElt) { if (removableElt.isSupportedEvent && removableElt.isSupportedEvent('remove')) { removableElt.on('remove', this.eventHandler.removeParent); } removableElt = removableElt.parentElement; } }; SelectMenu_SelectMenu.prototype.stopListenRemovable = function () { var removableElt; while (this.$removableTrackElts.length > 0) { removableElt = this.$removableTrackElts.pop(); removableElt.off('remove', this.eventHandler.removeParent); } }; SelectMenu_SelectMenu.prototype._releaseResource = function () { this.$selectlist.items = []; }; SelectMenu_SelectMenu.prototype._requestResource = function () { this.$selectlist.items = this._items || []; }; SelectMenu_SelectMenu.property.isFocus = { set: function (value) { var self = this; value = !!value; if (value == this.isFocus) return; this._isFocus = value; if (value) { this.startTrackScroll(); this.selectListScrollToken = null;//force scroll var isAttached = false; setTimeout(function () { if (isAttached) return; SelectMenu_$('body').on('mousedown', self.eventHandler.bodyClick); isAttached = true; }, 1000); SelectMenu_$('body').once('click', function () { setTimeout(function () { if (isAttached) return; SelectMenu_$('body').on('mousedown', self.eventHandler.bodyClick); isAttached = true; }, 10); }); if (this.enableSearch) { setTimeout(function () { self.$searchTextInput.focus(); }, 50); } this.updateDropdownPostion(); this.scrollToSelectedItem(); this.$anchor.removeClass('absol-disabled'); } else { this.$anchor.addClass('absol-disabled'); this.stopTrackScroll(); SelectMenu_$('body').off('mousedown', this.eventHandler.bodyClick); setTimeout(function () { if (self.$searchTextInput.value != 0) { self.$searchTextInput.value = ''; self.$selectlist.items = self.items; self._resourceReady = true; self.$selectlist.removeClass('as-searching'); } }, 100) this.updateItem(); } }, get: function () { return !!this._isFocus; } }; SelectMenu_SelectMenu.property.disabled = { set: function (value) { if (value) { this.addClass('disabled'); } else { this.removeClass('disabled'); } }, get: function () { return this.containsClass('disabled'); } }; SelectMenu_SelectMenu.property.hidden = { set: function (value) { if (value) { this.addClass('hidden'); } else { this.removeClass('hidden'); } }, get: function () { return this.addClass('hidden'); } }; SelectMenu_SelectMenu.property.selectedIndex = { get: function () { if (!this._itemIdxByValue) { this._itemIdxByValue = {}; for (var i = 0; i < this._items.length; ++i) { this._itemIdxByValue[this._items[i].value] = i; } } var idx = this._itemIdxByValue[this._value]; return idx >= 0 ? idx : -1; } }; /** * @type {SelectMenu} */ SelectMenu_SelectMenu.eventHandler = {}; SelectMenu_SelectMenu.eventHandler.attached = function () { if (this._updateInterval) return; if (!this.$anchor.parentNode) this.$anchor.addTo(this.$anchorCtn); this.$attachhook.updateSize = this.$attachhook.updateSize || this.updateDropdownPostion.bind(this); Dom["b" /* default */].addToResizeSystem(this.$attachhook); this.stopListenRemovable(); this.startListenRemovable(); if (!this._resourceReady) { this._requestResource(); this._resourceReady = true; } this._updateInterval = setInterval(function () { if (!this.isDescendantOf(document.body)) { clearInterval(this._updateInterval); this._updateInterval = undefined; this.$anchor.selfRemove(); this.stopTrackScroll(); this.stopListenRemovable(); this.eventHandler.removeParent(); } }.bind(this), 10000); }; SelectMenu_SelectMenu.eventHandler.scrollParent = function (event) { var self = this; if (this._scrollFrameout > 0) { this._scrollFrameout = 10; return; } this._scrollFrameout = this._scrollFrameout || 10; function update() { self.updateDropdownPostion(false); self.scrollToSelectedItem(); self._scrollFrameout--; if (self._scrollFrameout > 0) requestAnimationFrame(update); } update(); }; SelectMenu_SelectMenu.eventHandler.removeParent = function (event) { this._releaseResource(); this._resourceReady = false; }; SelectMenu_SelectMenu.eventHandler.click = function (event) { if (EventEmitter["b" /* default */].isMouseRight(event)) return; this.isFocus = !this.isFocus; }; SelectMenu_SelectMenu.eventHandler.bodyClick = function (event) { if (!EventEmitter["b" /* default */].hitElement(this, event) && !EventEmitter["b" /* default */].hitElement(this.$anchor, event)) { setTimeout(function () { this.isFocus = false; }.bind(this), 5) } }; SelectMenu_SelectMenu.eventHandler.selectlistPressItem = function (event) { this.updateItem(); if (this._lastValue != this.value) { event.lastValue = this._lastValue; event.value = this.value; setTimeout(function () { this.emit('change', event, this); }.bind(this), 1) this._lastValue = this.value; } }; SelectMenu_SelectMenu.eventHandler.searchModify = function (event) { var filterText = this.$searchTextInput.value.replace(/((\ )|(\s))+/g, ' ').trim(); if (filterText.length == 0) { this._resourceReady = true; this.$selectlist.items = this.items; this.scrollToSelectedItem(); this.$selectlist.removeClass('as-searching'); } else { this.$selectlist.addClass('as-searching'); var view = []; if (!this._searchCache[filterText]) { if (this._items.length > 0 && !this._items[0].__nvnText__) { prepareSearchForList(this._items); } view = searchListByText(filterText, this._items); this._searchCache[filterText] = view; } else { view = this._searchCache[filterText]; } this.$selectlist.items = view; this._resourceReady = true; this.$vscroller.scrollTop = 0; } this.selectListBound = this.$selectlist.getBoundingClientRect(); this.updateDropdownPostion(true); }; SelectMenu_SelectMenu.eventHandler.listSizeChangeAsync = function () { this.updateDropdownPostion(); }; SelectMenu_SelectMenu.eventHandler.listValueVisibility = function (event) { if (!this.isFocus) return; if (this._selectListScrollSession == event.session) return; this._selectListScrollSession = event.session; this.scrollToSelectedItem(); }; ACore["c" /* default */].install(SelectMenu_SelectMenu); /* harmony default export */ var js_SelectMenu = (SelectMenu_SelectMenu); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TextArea2.js var TextArea2_ = ACore["c" /* default */]._; var TextArea2_$ = ACore["c" /* default */].$; function TextArea2() { this.on('keydown', this.eventHandler.keydown); this.on('paste', this.eventHandler.paste); this.on('cut', this.eventHandler.paste); } TextArea2.tag = 'TextArea2'.toLowerCase(); TextArea2.render = function () { return TextArea2_('textarea.absol-textarea2'); }; TextArea2.getRenderPre = function () { if (!TextArea2.$preSpace) { TextArea2.$preSpace = TextArea2_('textarea').addStyle({ 'overflow': 'hidden', 'height': '12px', 'resize': 'none' }).addTo(js_SelectMenu.getRenderSpace()); } return TextArea2.$preSpace; }; TextArea2.eventHandler = {}; TextArea2.eventHandler.keydown = function (event) { if (event.altKey || event.ctrlKey) return; var key = event.key; var selectPost = this.getInputSelection(); var leftText = this.value.substring(0, selectPost.start); var rightText = this.value.substring(selectPost.end); var middText = ''; if (key == 'Enter') { middText = '\n'; } else if (key == 'Backspace') { if (leftText.length > 0) { leftText = leftText.substring(0, leftText.length - 1); } } else if (key == 'Delete') { if (selectPost.start < selectPost.end) { middText = ''; } else if (rightText.length > 0) { rightText = rightText.substring(1); } } else if (key.length == 1) {//char middText = key; } else { return; } var newText = leftText + middText + rightText; var heightSyle = this._measureHeight(newText); this.addStyle('height', heightSyle); }; TextArea2.eventHandler.paste = function (event) { // var text = var cl = event.clipboardData || window.clipboardData; var middText = cl.getData('Text') || ''; var selectPost = this.getInputSelection(); var leftText = this.value.substring(0, selectPost.start); var rightText = this.value.substring(selectPost.end); var newText = leftText + middText + rightText; var heightSyle = this._measureHeight(newText); this.addStyle('height', heightSyle); }; TextArea2.eventHandler.cut = function (event) { // var text = var cl = event.clipboardData || window.clipboardData; var selectPost = this.getInputSelection(); var leftText = this.value.substring(0, selectPost.start); var rightText = this.value.substring(selectPost.end); var newText = leftText + rightText; var heightSyle = this._measureHeight(newText); this.addStyle('height', heightSyle); }; TextArea2.prototype._measureHeight = function (text) { var pre = TextArea2.getRenderPre(); pre.addStyle('padding-left', this.getComputedStyleValue('padding-left')) pre.addStyle('padding-right', this.getComputedStyleValue('padding-right')) pre.addStyle('padding-top', this.getComputedStyleValue('padding-top')) pre.addStyle('padding-bottom', this.getComputedStyleValue('padding-bottom')); pre.addStyle('width', this.getComputedStyleValue('width')); pre.addStyle('height', this.getFontSize() + 'px'); pre.addStyle('boder', this.getComputedStyleValue('boder')); pre.addStyle('font-size', this.getComputedStyleValue('font-size')); pre.addStyle('font-family', this.getComputedStyleValue('font-family')); pre.value = text; var result = pre.scrollHeight + 'px'; return result; }; /** * Return an object with the selection range or cursor position (if both have the same value) * @param {DOMElement} el A dom element of a textarea or input text. * @return {Object} reference Object with 2 properties (start and end) with the identifier of the location of the cursor and selected text. **/ TextArea2.prototype.getInputSelection = function () { var start = 0, end = 0, normalizedValue, range, textInputRange, len, endRange; if (typeof this.selectionStart == "number" && typeof this.selectionEnd == "number") { start = this.selectionStart; end = this.selectionEnd; } else { range = document.selection.createRange(); if (range && range.parentElement() == this) { len = this.value.length; normalizedValue = this.value.replace(/\r\n/g, "\n"); // Create a working TextRange that lives only in the input textInputRange = this.createTextRange(); textInputRange.moveToBookmark(range.getBookmark()); // Check if the start and end of the selection are at the very end // of the input, since moveStart/moveEnd doesn't return what we want // in those cases endRange = this.createTextRange(); endRange.collapse(false); if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) { start = end = len; } else { start = -textInputRange.moveStart("character", -len); start += normalizedValue.slice(0, start).split("\n").length - 1; if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) { end = len; } else { end = -textInputRange.moveEnd("character", -len); end += normalizedValue.slice(0, end).split("\n").length - 1; } } } } return { start: start, end: end }; } ACore["c" /* default */].install(TextArea2); /* harmony default export */ var js_TextArea2 = (TextArea2); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/textclipboard.css var textclipboard = __webpack_require__(161); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TextClipboard.js var TextClipboard_ = ACore["c" /* default */]._; var TextClipboard_$ = ACore["c" /* default */].$; function TextClipboard() { this.$textarea = TextClipboard_('<textarea class="absol-text-clipboard" wrap="off" autocorrect="off"' + ' autocapitalize="off" spellcheck="false"></textarea>').addTo(this); } TextClipboard.tag = 'TextClipboard'.toLowerCase(); TextClipboard.render = function () { return TextClipboard_({ style: { positon: 'fixed', opacity: 0, width: '1px', height: '1px', top: 0, left: 0 } }); }; TextClipboard.prototype.copy = function (text) { this.$textarea.value = text; this.$textarea.select(); document.execCommand('copy'); }; TextClipboard.prototype.paste = function () { this.$textarea.select(); document.execCommand('paste'); }; ACore["c" /* default */].install(TextClipboard); /* harmony default export */ var js_TextClipboard = (TextClipboard); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/timeinput.css var timeinput = __webpack_require__(163); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/timepicker.css var timepicker = __webpack_require__(165); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TimePicker.js //todo: add this to absol var isTouchDevice = BrowserDetector["a" /* default */].hasTouch && !BrowserDetector["a" /* default */].os.type.match(/windows|X11|Ubuntu|Linux/); //todo: re select text after click var TimePicker_ = ACore["c" /* default */]._; var TimePicker_$ = ACore["c" /* default */].$; var TimePicker_$g = Svg["a" /* default */].ShareInstance.$; var TimePicker_g = Svg["a" /* default */].ShareInstance._; function TimePicker() { this._hour = 0; this._minute = 0; this._lastDayOffset = 0; this._state = 'none'; this._mode = 'CLOCK'; this._latBound = { width: 0, height: 0 }; var thisPicker = this; if (isTouchDevice) this.addClass('ac-time-picker-touch'); this.$attachook = TimePicker_('attachhook').addTo(this).on('error', function () { Dom["b" /* default */].addToResizeSystem(this); this.requestUpdateSize(); thisPicker.addStyle('font-size', thisPicker.getComputedStyleValue('font-size')); }); this.$attachook.requestUpdateSize = this.updateSize.bind(this); /*** * * @type {NumberSpanInput} */ this.$hour = TimePicker_$('.ac-time-picker-hour', this) .on({ focus: this.eventHandler.focusHour, keydown: this.eventHandler.keydownHour, blur: this.eventHandler.blurHour }); /*** * * @type {NumberSpanInput} */ this.$minute = TimePicker_$('.ac-time-picker-minute', this) .on({ keydown: this.eventHandler.keydownMinute, focus: this.eventHandler.focusMinute, blur: this.eventHandler.blurMinute, }); this.$hourInput = TimePicker_$('.ac-time-picker-hour-input', this) .on({ click: this.eventHandler.clickHourInput, keydown: this.eventHandler.keydownHourInput, blur: this.eventHandler.blurHourInput }); this.$minuteInput = TimePicker_$('.ac-time-picker-minute-input', this) .on({ click: this.eventHandler.clickMinuteInput, keydown: this.eventHandler.keydownMinuteInput, blur: this.eventHandler.blurMinuteInput }); //only support if is none touch device if (isTouchDevice) { this.$hour.readOnly = true; this.$hour.on('click', this._editHourState.bind(this)); this.$minute.readOnly = true; this.$minute.on('click', this._editMinuteState.bind(this)); } this.$clock = TimePicker_$g('.ac-time-picker-clock', this) .on(isTouchDevice ? 'touchstart' : 'mousedown', this.eventHandler.mousedownClock ); this._clockWidth = 400; this._clockHeight = 400; this._clockRadius = 150; this._clockRadiusInner = 100; this.$clockContent = TimePicker_$g('.ac-time-picker-clock-content', this); this.$clockHourCtn = TimePicker_$g('.ac-time-picker-clock-hour-ctn', this); this.$clockMinuteCtn = TimePicker_$g('.ac-time-picker-clock-minute-ctn', this); this.$hourNumbers = Array(24).fill(0).map(function (u, i) { var h = i; if (h == 0) h = 12; else if (h == 12) h = '00'; return TimePicker_g({ tag: 'text', attr: { 'text-anchor': 'middle' }, class: 'ac-time-picker-clock-hour-' + (i < 12 ? 'am' : 'pm'), child: { text: h + '' } }).addTo(thisPicker.$clockHourCtn); }); this.$minuteNumbers = Array(12).fill(0).map(function (u, i) { return TimePicker_g({ tag: 'text', attr: { 'text-anchor': 'middle' }, class: 'ac-time-picker-clock-minute', child: { text: i * 5 + '' } }).addTo(thisPicker.$clockMinuteCtn); }); this.$selectCtn = TimePicker_$g('.ac-time-picker-clock-select-ctn', this); this.$clockCenter = TimePicker_g({ tag: 'circle', class: 'ac-time-picker-clock-center', attr: { cx: "0", cy: '0' } }).addTo(this.$selectCtn); this.$clockSelectLine = TimePicker_g({ tag: 'path', class: 'ac-time-picker-clock-select-line' }).addTo(this.$selectCtn); this.$clockSelectCicle = TimePicker_g({ tag: 'circle', class: 'ac-time-picker-clock-select-circle', attr: { cx: 0, cy: 0 } }).addTo(this.$selectCtn); this.$clockSelectCenter = TimePicker_g({ tag: 'circle', class: 'ac-time-picker-clock-select-center' }).addTo(this.$selectCtn); this.$finishBtn = TimePicker_$('.ac-time-picker-finish-btn', this) .on('click', this.finishSelect.bind(this)); this.$cancelBtn = TimePicker_$('.ac-time-picker-cancel-btn', this) .on('click', this.cancelSelect.bind(this)); this.$keyboardBtn = TimePicker_$('.ac-time-picker-keyboard-btn', this) .on('click', this.timeMode.bind(this)); this.$clockBtn = TimePicker_$('.ac-time-picker-clock-btn', this) .on('click', this.clockMode.bind(this)); }; TimePicker.prototype.updateSize = function () { // var this._fontSize = this.getFontSize(); var cBound = this.$clock.getBoundingClientRect(); this._clockWidth = cBound.width; this._clockHeight = cBound.height; this.$clock.attr({ width: this._clockWidth, height: this._clockHeight, viewBox: '0 0 ' + this._clockWidth + ' ' + this._clockHeight }); this.$clockContent.attr('transform', 'translate(' + (this._clockWidth / 2) + ',' + (this._clockHeight / 2) + ')'); var clockRadius = this._clockWidth / 2 - this._fontSize; var clockRadiusInner = clockRadius - this._fontSize * 1.5; this._clockRadius = clockRadius; this._clockRadiusInner = clockRadiusInner; this.$clockCenter.attr('r', this._fontSize / 5); this.$clockSelectCicle.attr({ r: this._fontSize * 0.7, cx: clockRadius }); this.$clockSelectCenter.attr({ r: this._fontSize / 10, cx: clockRadius }); this.$hourNumbers.forEach(function (elt, i) { var angle = Math.PI * (i - 3) / 6; var r = i < 12 ? clockRadius : clockRadiusInner; var box = elt.getBBox(); var x = r * Math.cos(angle); var y = r * Math.sin(angle) + box.height / 2; elt.attr({ x: x, y: y }); }); this.$minuteNumbers.forEach(function (elt, i) { var angle = Math.PI * (i - 3) / 6; var box = elt.getBBox(); var x = clockRadius * Math.cos(angle); var y = clockRadius * Math.sin(angle) + box.height / 3; elt.attr({ x: x, y: y }); }); this.updateSelectPosition(); this.notifySizeChange(); }; TimePicker.prototype.updateSelectPosition = function () { var angle, radius; if (this._state == "EDIT_MINUTE") { angle = Math.PI * (this._minute - 15) / 30; radius = this._clockRadius } else if (this._state == "EDIT_HOUR") { angle = Math.PI * (this._hour - 3) / 6; if (this._hour > 0 && this._hour <= 12) { radius = this._clockRadius; } else { radius = this._clockRadiusInner; } } else { return; } this._drawSelect(radius, angle); }; TimePicker.prototype.editHour = function () { this.clockMode(); if (this.$hour.readOnly) { this._editHourState(); } else { this.$hour.focus(); } } TimePicker.prototype._drawSelect = function (radius, angle) { var x = radius * Math.cos(angle); var y = radius * Math.sin(angle); this.$clockSelectCicle.attr({ cx: x, cy: y }); this.$clockSelectCenter.attr({ cx: x, cy: y }); this.$clockSelectLine.attr('d', 'M0,0L' + x + ',' + y); }; TimePicker.prototype.notifyChange = function (force) { if (this._lastDayOffset != this.dayOffset || force) { this.emit('change', { target: this, hour: this.hour, minute: this.minute, dayOffset: this.dayOffset, name: 'change' }, this); this._lastDayOffset = this.dayOffset; } }; TimePicker.prototype.notifySizeChange = function () { var bound = this.getBoundingClientRect(); if (this._latBound.width != bound.width || this._latBound.height != bound.height) { this._latBound.width = bound.width; this._latBound.height = bound.height; this.emit('sizechange', { name: 'sizechange', bound: bound, target: this }, this); } }; TimePicker.tag = 'TimePicker'; TimePicker.render = function () { return TimePicker_({ extendEvent: ['change', 'finish', 'cancel', 'sizechange'], class: ['ac-time-picker', 'ac-time-picker-clock-mode'],//clock mode is default child: [ { class: 'ac-time-picker-set-clock', child: [{ class: 'ac-time-picker-set-clock-header', child: [ { tag: 'numberspaninput', class: 'ac-time-picker-hour', props: { value: 0, zeroInt: 2 } }, { tag: 'span', text: ':' }, { tag: 'numberspaninput', class: 'ac-time-picker-minute', props: { value: 0, zeroInt: 2 } } ] }, TimePicker_g( { tag: 'svg', class: 'ac-time-picker-clock', child: [ { class: 'ac-time-picker-clock-content', child: ['.ac-time-picker-clock-select-ctn', '.ac-time-picker-clock-hour-ctn', '.ac-time-picker-clock-minute-ctn'] } ] } )] }, { class: 'ac-time-picker-set-time', child: [ { class: 'ac-time-picker-set-time-header', child: { text: 'Set time' } }, { class: 'ac-time-picker-set-time-label', child: { text: 'Type in time' } }, { class: 'ac-time-picker-set-time-input-group', child: [ { class: 'ac-time-picker-set-time-input-hm', child: [ { tag: 'input', class: 'ac-time-picker-hour-input', attr: { type: 'number', placeHolder: '00', tabindex: '2', } }, { tag: 'span', child: { text: ':' } }, { tag: 'input', class: 'ac-time-picker-minute-input', attr: { type: 'number', placeHolder: '00', tabindex: '3' } } ] }, { class: 'ac-time-picker-set-time-input-label-hm', child: [ { tag: 'span', child: { text: 'hour' } }, { tag: 'span', style: { visibility: 'hidden' }, child: { text: ':' } }, { tag: 'span', child: { text: 'minute' } } ] } ] } ] }, { class: 'ac-time-picker-footer', child: [ { tag: 'button', class: 'ac-time-picker-keyboard-btn', child: 'span.mdi.mdi-keyboard-outline' }, { tag: 'button', class: 'ac-time-picker-clock-btn', child: 'span.mdi.mdi-clock-outline' }, { class: 'ac-time-picker-footer-right', child: [ { tag: 'button', class: 'ac-time-picker-cancel-btn', attr: { tabindex: '4' }, child: { text: 'CANCEL' } }, { tag: 'button', attr: { tabindex: '4' }, class: 'ac-time-picker-finish-btn', child: { text: 'OK' } } ] }] } ] }); }; TimePicker.prototype.clockMode = function () { if (this._mode == "CLOCK") return; this._mode = 'CLOCK'; this.removeClass('ac-time-picker-time-mode') .addClass('ac-time-picker-clock-mode'); this.$hour.value = this._hour < 10 ? '0' + this._hour : this._hour; this.$minute.value = this._minute < 10 ? '0' + this._minute : this._minute; this._editHourState(); this.updateSize(); this._showSelectHour(this._hour); }; TimePicker.prototype.timeMode = function () { if (this._mode == "TIME") return; this._mode = 'TIME'; this.addClass('ac-time-picker-time-mode') .removeClass('ac-time-picker-clock-mode'); this.$hourInput.value = this._hour < 10 ? '0' + this._hour : this._hour; this.$minuteInput.value = this._minute < 10 ? '0' + this._minute : this._minute; this.editHourInput(); this.updateSize(); }; TimePicker.prototype._editHourState = function () { this._state = "EDIT_HOUR"; this._preHour = this._hour; this.removeClass('ac-time-picker-edit-minute') .addClass('ac-time-picker-edit-hour') .removeClass('ac-time-picker-edit-hour-input') .removeClass('ac-time-picker-edit-minute-input'); this.updateSize(); }; TimePicker.prototype._editMinuteState = function () { this._state = "EDIT_MINUTE"; this._preMinute = this._minute; this.addClass('ac-time-picker-edit-minute') .removeClass('ac-time-picker-edit-hour') .removeClass('ac-time-picker-edit-hour-input') .removeClass('ac-time-picker-edit-minute-input'); this.updateSize(); }; TimePicker.prototype.editHourInput = function () { var thisPicker = this; this._state = "EDIT_HOUR_INPUT"; this._preHour = this._hour; this.removeClass('ac-time-picker-edit-minute') .removeClass('ac-time-picker-edit-hour') .addClass('ac-time-picker-edit-hour-input') .removeClass('ac-time-picker-edit-minute-input'); this.updateSize(); setTimeout(function () { thisPicker.$hourInput.focus(); thisPicker.$hourInput.select(); }, 10); }; TimePicker.prototype.editMinuteInput = function () { var thisPicker = this; this._state = "EDIT_MINUTE_INPUT"; this._preMinute = this._minute; this.removeClass('ac-time-picker-edit-minute') .removeClass('ac-time-picker-edit-hour') .removeClass('ac-time-picker-edit-hour-input') .addClass('ac-time-picker-edit-minute-input'); this.updateSize(); setTimeout(function () { thisPicker.$minuteInput.focus(); thisPicker.$minuteInput.select(); }, 1) }; TimePicker.prototype.finishSelect = function () { this.emit('finish', { target: this, hour: this.hour, minute: this.minute, dayOffset: this.dayOffset, name: 'finish' }, this); }; TimePicker.prototype.cancelSelect = function () { this.emit('cancel', { target: this, name: 'cancel' }, this); }; TimePicker.eventHandler = {}; TimePicker.eventHandler.focusHour = function () { this._editHourState(); this.$hour.selectAll(); }; TimePicker.eventHandler.blurHour = function () { var newText = this.$hour.value; var hour = parseFloat(newText) || 0; if (hour < 0 || hour >= 24) hour = this._preHour; this.$hour.value = hour < 10 ? '0' + hour : hour; this._hour = hour; this._showSelectHour(hour); this.notifyChange(); }; TimePicker.eventHandler.focusMinute = function () { this._editMinuteState(); this.$minute.selectAll(); }; TimePicker.eventHandler.blurMinute = function () { var newText = this.$minute.innerHTML; var minute = parseFloat(newText) || 0; if (minute < 0 || minute >= 60) minute = this._preMinute; this.$minute.value = minute < 10 ? '0' + minute : minute; this._minute = minute; this._showSelectByMinuteText(); this.notifyChange(); }; TimePicker.eventHandler.clickHourInput = function () { if (this._state != 'EDIT_HOUR') this.editHourInput(); else { this.$hourInput.focus(); this.$hourInput.select(); } }; TimePicker.eventHandler.clickMinuteInput = function () { if (this._state != 'EDIT_MINUTE_INPUT') this.editMinuteInput(); else { this.$minuteInput.focus(); this.$minuteInput.select(); } }; TimePicker.eventHandler.blurHourInput = function () { var hour = parseFloat(this.$hourInput.value) || 0; if (hour < 0 || hour >= 24) hour = this._preHour; this.hour = hour; }; TimePicker.eventHandler.blurMinuteInput = function () { var minute = parseFloat(this.$minuteInput.value) || 0; if (minute < 0 || minute >= 60) minute = this._preMinute; this.minute = minute; }; TimePicker.property = {}; TimePicker.property.hour = { set: function (value) { value = (value % 24) || 0; this._hour = value; var text = (value < 10 ? '0' : '') + value + ''; this.$hour.clearChild().addChild(TimePicker_({ text: text })); this.$hourInput.value = text; this.updateSelectPosition(); }, get: function () { return this._hour; } }; TimePicker.property.minute = { set: function (value) { value = (value % 60) || 0; this._minute = value; var text = (value < 10 ? '0' : '') + value + ''; this.$minute.value = text; this.$minuteInput.value = text; this.updateSelectPosition(); }, get: function () { return this._minute; } }; TimePicker.property.dayOffset = { set: function (value) { value = value || 0; if (value.getTime) value = value.getTime() - beginOfDay(value).getTime(); else { value = value % MILLIS_PER_DAY; } this.hour = Math.floor(value / MILLIS_PER_HOUR); this.minute = Math.floor((value % MILLIS_PER_HOUR) / MILLIS_PER_MINUTE); }, get: function () { return this._hour * MILLIS_PER_HOUR + this._minute * MILLIS_PER_MINUTE; } }; TimePicker.prototype._showSelectHour = function (hour) { var radius; var angle = Math.PI * (hour - 3) / 6; if ((hour < 24 && hour > 12) || hour == 0) { radius = this._clockRadiusInner; } else if (hour <= 12) { radius = this._clockRadius; } else { return; } this._drawSelect(radius, angle); }; TimePicker.prototype._showSelectByHourText = function () { var hour = parseFloat(this.$hour.innerHTML) || 0; if (hour < 0 || hour >= 24) return; this._showSelectHour(hour); }; TimePicker.prototype._showSelectMinute = function (minute) { var angle = Math.PI * (minute - 15) / 30; this._drawSelect(this._clockRadius, angle); } TimePicker.prototype._showSelectByMinuteText = function () { var minute = parseFloat(this.$minute.innerHTML) || 0; if (minute < 0 || minute >= 60) return; this._showSelectMinute(minute); }; /*** * * @param {KeyboardEvent} event */ TimePicker.eventHandler.keydownHour = function (event) { var thisPicker = this; if (event.key == 'Enter' || event.key == 'Tab') { event.preventDefault(); this.$hour.blur(); this._editMinuteState(); setTimeout(function () { thisPicker.$minute.focus(); thisPicker.$minute.selectAll(); }, 30); } else { setTimeout(function () { var newText = thisPicker.$hour.value; var hour = parseFloat(newText) || 0; if (hour < 0 || hour >= 24) hour = thisPicker._preHour; else { thisPicker._hour = hour; thisPicker._showSelectHour(hour); } }, 30); } }; TimePicker.eventHandler.keydownMinute = function (event) { var thisPicker = this; if (event.key == 'Enter') { this.$minute.blur(); event.preventDefault(); setTimeout(this.finishSelect.bind(this), 30); } else if (event.key == 'Tab') { this.$minute.selectNone(); this.$finishBtn.focus(); event.preventDefault(); } else { setTimeout(function () { var newText = thisPicker.$minute.value; var minute = parseFloat(newText) || 0; if (minute < 0 || minute >= 60) minute = thisPicker._preMinute; else { thisPicker._minute = minute; thisPicker._showSelectMinute(minute); } }, 30); } }; TimePicker.eventHandler.keydownHourInput = function (event) { var thisPicker = this; if ((isTouchDevice && event.key == "Unidentified") || (event.key && event.key.length == 1 && !event.ctrlKey && !event.altKey)) { if (event.key.match(/[0-9]/)) { setTimeout(this.notifyChange.bind(this), 2); } else { event.preventDefault(); } } else if (event.key == 'Enter') { event.preventDefault(); this.$hourInput.blur(); this.editMinuteInput(); } else if (!event.key && !event.key.toLowerCase().match(/arrow|back/)) { var cText = this.$hourInput.value; setTimeout(function () { var newText = thisPicker.$hourInput.value; if (cText != newText) { var hour = parseFloat(newText) || 0; if (hour < 0 || hour >= 24) hour = thisPicker._preHour; thisPicker.hour = hour; thisPicker.$hourInput.blur(); thisPicker.editMinuteInput(); thisPicker.notifyChange(); } }, 1); } }; TimePicker.eventHandler.keydownMinuteInput = function (event) { var thisPicker = this; if ((isTouchDevice && event.key == "Unidentified") || event.key.length == 1 && !event.ctrlKey && !event.altKey) { if ((isTouchDevice && event.key == "Unidentified") || event.key.match(/[0-9]/)) { setTimeout(this.notifyChange.bind(this), 2); } else { event.preventDefault(); } } else if (event.key == 'Enter') { this.$minute.blur(); this.eventHandler.blurMinuteInput(); event.preventDefault(); setTimeout(this.finishSelect.bind(this), 100); } else if (event.key == "Backspace") { } else if (event.key != 'Enter') { var cText = this.$minuteInput.value; setTimeout(function () { var newText = thisPicker.$minuteInput.value; if (cText != newText) { var minute = parseFloat(newText) || 0; if (minute < 0 || minute >= 60) minute = thisPicker._preMinute; thisPicker.minute = minute; thisPicker.$minuteInput.focus(); thisPicker.$minuteInput.select(); thisPicker.notifyChange(); } }, 1); } }; TimePicker.eventHandler.dragOnClock = function (event) { event = (event.changedTouches && event.changedTouches[0]) || event; var cBound = this.$clock.getBoundingClientRect(); var cx = (cBound.left + cBound.right) / 2; var cy = (cBound.top + cBound.bottom) / 2; var x = event.clientX - cx; var y = event.clientY - cy; var angle = Math.atan2(y, x); var radius = Math.sqrt(x * x + y * y); var index; if (this._state == "EDIT_HOUR") { angle += Math.PI * 2; index = Math.round(angle / (Math.PI / 6)); var hour = (index + (12 + 3)) % 12; if (radius < (this._clockRadiusInner + this._clockRadius) / 2) { if (hour != 0) hour += 12; } else { if (hour == 0) hour = 12; } this._hour = hour; this._showSelectHour(hour); this.$hour.value = hour < 10 ? '0' + hour : hour; this.$hour.selectEnd(); } else if (this._state == "EDIT_MINUTE") { radius = this._clockRadius; angle += Math.PI * 2; index = Math.round(angle / (Math.PI / 30)); angle = index * (Math.PI / 30); var minute = (index + (60 + 15)) % 60; this._minute = minute; this.$minute.value = minute < 10 ? '0' + minute : minute; this._showSelectMinute(minute); this.$minute.selectEnd(); this.notifyChange(); } else { return; } }; TimePicker.eventHandler.mousedownClock = function (event) { event.preventDefault(); this.eventHandler.dragOnClock(event); document.body.addEventListener(isTouchDevice ? 'touchmove' : 'mousemove', this.eventHandler.mousemoveClock); document.body.addEventListener(isTouchDevice ? 'touchend' : 'mouseup', this.eventHandler.mousefinishClock); if (!isTouchDevice) document.body.addEventListener('mouseleave', this.eventHandler.mousefinishClock); }; TimePicker.eventHandler.mousemoveClock = function (event) { event.preventDefault(); this.eventHandler.dragOnClock(event); }; TimePicker.eventHandler.mousefinishClock = function () { document.body.removeEventListener('mousemove', this.eventHandler.mousemoveClock); document.body.removeEventListener('mouseup', this.eventHandler.mousefinishClock); document.body.removeEventListener('mouseleave', this.eventHandler.mousefinishClock); if (this._state == 'EDIT_HOUR') { if (this.$minute.readOnly) { this._editMinuteState(); } else { this.$minute.focus(); } } else if (this._state == 'EDIT_MINUTE') { this.$minute.selectAll();// refocus } }; ACore["c" /* default */].install('timepicker', TimePicker); /* harmony default export */ var js_TimePicker = (TimePicker); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TimeInput.js var TimeInput_ = ACore["c" /* default */]._; var TimeInput_$ = ACore["c" /* default */].$; function TimeInput() { this._isOpenPicker = false; this._hour = null; this._minute = null; this.$hour = TimeInput_$('.ac-time-input-hour', this); this.$minute = TimeInput_$('.ac-time-input-minute', this); /*** * * @type {TimePicker} */ this.$timePicker = TimeInput.getTimePicker(); this.$timePickerCtn = TimeInput.getTimePickerContainer(); this.on('click', this.togglePicker.bind(this)); } TimeInput.getTimePicker = function () { if (!TimeInput.$timePickerCtn) { TimeInput.$timePickerCtn = TimeInput_((isTouchDevice ? '' : 'follower') + '.ac-time-input-picker-ctn.ac-time-input-picker-ctn-hidden') .addTo(document.body); TimeInput.$timePicker = TimeInput_('timepicker').addTo(TimeInput.$timePickerCtn); TimeInput.$timePicker.on('sizechange', function () { if (isTouchDevice) { var bound = TimeInput.$timePickerCtn.getBoundingClientRect(); TimeInput.$timePickerCtn.addStyle({ left: 'calc(50vw - ' + (bound.width / 2) + 'px)', top: 'calc(50vh - ' + (bound.height / 2) + 'px)' }); } else { TimeInput.$timePickerCtn.updatePosition(); } }); } return TimeInput.$timePicker; }; TimeInput.getTimePickerContainer = function () { TimeInput.getTimePicker(); return TimeInput.$timePickerCtn; } TimeInput.tag = 'timeinput'; TimeInput.render = function () { return TimeInput_({ class: 'ac-time-input', extendEvent: ['change'], child: [ { tag: 'span', class: 'ac-time-input-hour', child: { text: '--' } }, { tag: 'span', child: { text: " : " } }, { tag: 'span', class: 'ac-time-input-minute', child: { text: '--' } } ] }) }; TimeInput.prototype.togglePicker = function () { if (this._isOpenPicker) this.closePicker(); else this.openPicker(); }; TimeInput.prototype.openPicker = function () { if (this._isOpenPicker) return; this._isOpenPicker = true; if (!isTouchDevice) this.$timePickerCtn.followTarget = this; this._lastDayOfset = this.dayOffset; this.$timePickerCtn.removeClass('ac-time-input-picker-ctn-hidden'); this.$timePicker.dayOffset = this._lastDayOfset; this.$timePicker.clockMode(); this.$timePicker.editHour(); this.$timePicker .on('finish', this.eventHandler.pickerFinish) .on('cancel', this.eventHandler.pickerCancel); TimeInput_$(document.body).on('click', this.eventHandler.clickBody); }; TimeInput.prototype.closePicker = function () { if (!this._isOpenPicker) return; var thisTI = this; this._isOpenPicker = false; this.$timePickerCtn.addClass('ac-time-input-picker-ctn-hidden'); if (!isTouchDevice) this.$timePickerCtn.followTarget = null; this.$timePicker .off('finish', this.eventHandler.pickerFinish) .off('cancel', this.eventHandler.pickerCancel); setTimeout(function () { TimeInput_$(document.body).off('click', thisTI.eventHandler.clickBody); }, 100); }; TimeInput.property = {}; TimeInput.property.hour = { set: function (value) { if (typeof value == "number") { value = (value % 24) || 0; this._hour = value; var text = (value < 10 ? '0' : '') + value + ''; this.$hour.firstChild.data = text; } else { this._hour = null; this.$hour.firstChild.data = '--'; } }, get: function () { return this._hour; } }; TimeInput.property.minute = { set: function (value) { if (typeof value == "number") { value = (value % 60) || 0; this._minute = value; var text = (value < 10 ? '0' : '') + value + ''; this.$minute.firstChild.data = text; } else { this._minute = null; this.$minute.firstChild.data = '--'; } }, get: function () { return this._minute; } }; TimeInput.property.dayOffset = { set: function (value) { if (typeof value == "number" || (value && value.getTime)) { value = value || 0; if (value.getTime) value = value.getTime() - beginOfDay(value).getTime(); else { value = value % MILLIS_PER_DAY; } this.hour = Math.floor(value / MILLIS_PER_HOUR); this.minute = Math.floor((value % MILLIS_PER_HOUR) / MILLIS_PER_MINUTE); } else { this.hour = null; this.minute = null; } }, get: function () { if (this._hour === null || this._minute === null) return null; return this._hour * MILLIS_PER_HOUR + this._minute * MILLIS_PER_MINUTE; } }; TimeInput.property.disabled = { set: function (value) { value = !!value; this._disabled = value; if (value) this.addClass('as-disabled'); else this.removeClass('as-disabled'); }, get: function () { return this._disabled; } } TimeInput.eventHandler = {}; TimeInput.eventHandler.pickerFinish = function (event) { this.closePicker(); if (this._lastDayOfset != event.dayOffset) { this.dayOffset = event.dayOffset; this.emit('change', { name: 'change', target: this }, this); } }; TimeInput.eventHandler.pickerCancel = function (event) { this.closePicker(); }; TimeInput.eventHandler.clickBody = function (event) { if (EventEmitter["b" /* default */].hitElement(this.$timePicker, event) || EventEmitter["b" /* default */].hitElement(this, event)) return; this.closePicker(); }; ACore["c" /* default */].install(TimeInput); /* harmony default export */ var js_TimeInput = (TimeInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tooltip.css var tooltip = __webpack_require__(167); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Tooltip.js var Tooltip_ = ACore["c" /* default */]._; var Tooltip_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function ToolTip() { this.$content = Tooltip_$('.absol-tooltip-content', this); this.$arrow = Tooltip_$('.absol-tooltip-arrow', this); } ToolTip.tag = 'ToolTip'.toLowerCase(); ToolTip.render = function () { return Tooltip_({ class: 'absol-tooltip', child: [ { class: 'absol-tooltip-content' }, '.absol-tooltip-arrow' ] }); }; ['addChild', 'addChildBefore', 'addChildAfter', 'clearChild'].forEach(function (key) { ToolTip.prototype[key] = function () { return this.$content[key].apply(this.$content, arguments); } }); ACore["c" /* default */].install(ToolTip); function updateTooltipPosition(toolTipClass) { var element = toolTipClass.$element; if (!element) return; var orientation = toolTipClass._orientation; var tBound = toolTipClass.$tooltip.$content.getBoundingClientRect(); var ebound = element.getBoundingClientRect(); var screenSize = Object(Dom["d" /* getScreenSize */])(); var sMargin = Math.round(Math.min(5, screenSize.width/100, screenSize.height)); screenSize.width = Math.min(screenSize.width, document.body.getBoundingClientRect().width); var fontSize = toolTipClass.$tooltip.getFontSize(); var dx = 0; var dy = 0; var arrowPos = null; var aHCenter = (ebound.left + ebound.width / 2 > tBound.width / 2) && (screenSize.width - ebound.left - ebound.width / 2 > tBound.width / 2); var aVCenter = (ebound.top + ebound.height / 2 > tBound.height / 2) && (screenSize.height - ebound.top - ebound.height / 2 > tBound.height / 2); var aTop = (tBound.height < ebound.top - sMargin); var aBottom = tBound.height < screenSize.height - sMargin - ebound.bottom; var aRight = tBound.width < screenSize.width - sMargin - ebound.right; var aLeft = tBound.width < ebound.left - sMargin; var aHLeft = (ebound.left + ebound.width / 2 - tBound.width / 2 < sMargin) && (ebound.left + ebound.width / 2 >= sMargin + fontSize / 2); var aHRight = (ebound.left + ebound.width / 2 + tBound.width / 2 > screenSize.width - sMargin) && (ebound.left + ebound.width / 2 < screenSize.width - sMargin - fontSize / 2); var aVTop = (ebound.top + ebound.width / 2 - tBound.height / 2 < sMargin) && (ebound.top + ebound.height / 2 >= sMargin + fontSize / 2); var aVBottom = (ebound.top + ebound.width / 2 + tBound.height / 2 <= screenSize.height - sMargin) && (ebound.top + ebound.height / 2 > screenSize.height - sMargin - fontSize / 2); if (orientation === 'auto' && aHCenter) { if (aTop) { orientation = 'top'; } else if (aBottom) { orientation = 'bottom'; } } if (orientation === 'auto' && aVCenter) { if (aRight) { orientation = 'right'; } else if (aLeft) { orientation = 'left'; } } if ((orientation === 'auto' || orientation === 'top' || orientation === 'bottom') && aHLeft) { if (aTop || orientation === 'auto') orientation = "top"; else if (aBottom || orientation === 'auto') orientation = 'bottom'; if (aTop || aBottom) { dx += tBound.width / 2 - (ebound.left + ebound.width / 2) + sMargin; arrowPos = tBound.width / 2 - dx + 'px'; } } if ((orientation === 'auto' || orientation === 'top' || orientation === 'bottom') && aHRight) { if (aTop || orientation === 'auto') orientation = "top"; else if (aBottom || orientation === 'auto') orientation = 'bottom'; if (aTop || aBottom) { dx -= tBound.width / 2 - (screenSize.width - (ebound.left + ebound.width / 2)) + sMargin; arrowPos = tBound.width / 2 - dx + 'px'; } } if ((orientation === 'auto'|| orientation === 'left' || orientation === 'right') && aVTop) { if (aLeft || orientation === 'auto') orientation = "left"; else if (aRight || orientation === 'auto') { orientation = 'right'; } if (aLeft || aRight) { dy += tBound.height / 2 - (ebound.top + ebound.height / 2) + sMargin; arrowPos = tBound.height / 2 - dy + 'px'; } } if ((orientation === 'auto'|| orientation === 'left' || orientation === 'right') && aVBottom) { if (aLeft || orientation === 'auto') orientation = "left"; else if (aRight || orientation === 'auto') { orientation = 'right'; } if (aLeft || aRight) { dy -= tBound.height / 2 - (screenSize.height - (ebound.top + ebound.height / 2)) + sMargin; arrowPos = tBound.height / 2 - dx + 'px' } } if (orientation === 'auto') { if (aRight) { if (aTop) { orientation = 'ne'; } else if (aBottom) { orientation = 'se'; } } else if (aLeft) { if (aTop) { orientation = 'nw'; } else if (aBottom) { orientation = 'sw'; } } } if (orientation === 'auto') orientation = "error"; toolTipClass.$tooltip.removeClass('top') .removeClass('left') .removeClass('right') .removeClass('bottom') .removeClass('ne') .removeClass('nw') .removeClass('se') .removeClass('sw') .addClass(orientation); tBound = toolTipClass.$tooltip.getBoundingClientRect(); if (orientation == 'top') { dy += ebound.top - tBound.height; dx += ebound.left + ebound.width / 2 - tBound.width / 2; } else if (orientation == 'left') { dy += ebound.top + ebound.height / 2 - tBound.height / 2; dx += ebound.left - tBound.width; } else if (orientation == 'right') { dy += ebound.top + ebound.height / 2 - tBound.height / 2; dx += ebound.right; } else if (orientation == 'bottom') { dy += ebound.bottom; dx += ebound.left + ebound.width / 2 - tBound.width / 2; } else if (orientation === 'ne') { dy += ebound.top - tBound.height; dx += ebound.right; } else if (orientation === 'nw') { dy += ebound.top - tBound.height; dx += ebound.left - tBound.width; } else if (orientation === 'se') { dy += ebound.bottom; dx += ebound.right; } else if (orientation === 'sw') { dy += ebound.bottom; dx += ebound.left - tBound.width; } else { throw new Error("Invalid orientation, orientation: ['left', 'right', 'top', 'bottom', 'auto', 'nw', 'ne', 'sw', 'se']"); } if (arrowPos) { toolTipClass.$tooltip.addStyle('--tool-tip-arrow-pos', arrowPos); } else { toolTipClass.$tooltip.removeStyle('--tool-tip-arrow-pos') } toolTipClass.$holder.addStyle({ top: dy + 'px', left: dx + 'px' }); } ToolTip.$holder = Tooltip_('.absol-tooltip-root-holder') ToolTip.$tooltip = Tooltip_('tooltip.top').addTo(ToolTip.$holder); ToolTip.$element = undefined; ToolTip.$content = undefined; ToolTip._orientation = 'top'; ToolTip._session = Math.random() * 10000000000 >> 0; ToolTip.updatePosition = function () { if (!ToolTip.$element) return; updateTooltipPosition(ToolTip); }; ToolTip.$tooltip.$arrow.updateSize = ToolTip.updatePosition.bind(ToolTip); ToolTip.show = function (element, content, orientation) { orientation = orientation || 'auto'; if (typeof content == 'string') { content = Tooltip_({ tag: 'span', style: { 'white-space': 'nowrap' }, props: { innerHTML: content } }); } Tooltip_$('', content, function (elt) { if (elt.tagName == "IMG" && elt.src) { Dom["b" /* default */].waitImageLoaded(elt).then(ToolTip.updatePosition.bind(ToolTip)); } else if (elt.sync) { elt.sync.then(ToolTip.updatePosition.bind(ToolTip)); } }); var currentSession = Math.random() * 10000000000 >> 0; ToolTip.$holder.addTo(document.body); Dom["b" /* default */].addToResizeSystem(ToolTip.$tooltip.$arrow); ToolTip.$element = element; ToolTip._session = currentSession; ToolTip.$content = content; ToolTip._orientation = orientation; ToolTip.$tooltip.clearChild().addChild(content); ToolTip.$holder.removeStyle('visibility'); ToolTip.$tooltip.removeClass('top') .removeClass('left') .removeClass('right') .removeClass('bottom') .removeClass('ne') .removeClass('nw') .removeClass('auto'); ToolTip.$tooltip.addClass(orientation); ToolTip.updatePosition(); return currentSession; }; ToolTip.close = function (session) { if (session === true || session === this._session) { ToolTip.$holder.addStyle('visibility', 'hidden'); ToolTip.$tooltip.clearChild(); ToolTip.$holder.addStyle({ top: false, left: false }); } }; ToolTip.closeTooltip = ToolTip.close; ToolTip.showWhenClick = function (element, content, orientation) { var mSession = undefined; element.addEventListener('click', function () { if (mSession !== undefined) return; mSession = ToolTip.show(element, content, orientation); var finish = function (event) { if (!EventEmitter["b" /* default */].hitElement(content, event)) { Tooltip_$(document.body).off('click', finish); ToolTip.closeTooltip(mSession); mSession = undefined; } }; setTimeout(function () { Tooltip_$(document.body).on('click', finish); }, 100) }); }; /* harmony default export */ var Tooltip = (ToolTip); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/treelist.css var treelist = __webpack_require__(37); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TreeListItem.js var TreeListItem_ = ACore["c" /* default */]._; var TreeListItem_$ = ACore["c" /* default */].$; function TreeListItem() { var thisTI = this; this.$list = TreeListItem_$('treelist', this).on('press', function (event, sender) { thisTI.emit('press', event, this); }); this.$parent = TreeListItem_$('.absol-tree-list-item-parent', this).on('mousedown', this.eventHandler.clickParent); this.$text = TreeListItem_$('span.absol-tree-list-item-text', this); this.$desc = TreeListItem_$('span.absol-tree-list-item-desc', this); this.$descCtn = TreeListItem_$('.absol-tree-list-item-desc-container', this); this.$list.level = 1; OOP["a" /* default */].drillProperty(this, this.$list, 'items'); } TreeListItem.tag = 'TreeListItem'.toLowerCase(); TreeListItem.render = function () { return TreeListItem_({ extendEvent: ['press', 'clickparent'], class: 'absol-tree-list-item', child: [ { class: 'absol-tree-list-item-parent', child: ['span.absol-tree-list-item-text', { class: 'absol-tree-list-item-desc-container', child: 'span.absol-tree-list-item-desc' } ] }, 'treelist' ] }); }; TreeListItem.eventHandler = {}; TreeListItem.eventHandler.clickParent = function (event) { event.preventDefault(); var prevented = false; var self = this; this.emit('press', { target: self, preventDefault: function () { prevented = true; }, isPrevented: function () { return prevented; }, data: this.data }, this); if (!prevented) { var top = self.getTopLevelElt(); TreeListItem_$('treelistitem', top, function (e) { if (e != self) e.active = false; }) self.active = true; } }; TreeListItem.prototype.getTopLevelElt = function () { var current = this; while (current) { var parent = current.parentNode; if (!parent || (!parent.classList.contains('absol-tree-list') && !parent.classList.contains('absol-tree-list-item'))) break; current = current.parentNode; } return current; }; TreeListItem.property = { text: { set: function (value) { value = value + ''; this.$text.innerHTML = value; }, get: function () { return this.$text.innerHTML; } }, desc: { set: function (value) { value = value + ''; this.$desc.innerHTML = value; }, get: function () { return this.$desc.innerHTML } }, level: { set: function (value) { value = value || 0; if (value == this.level) return; this._level = value; this.$parent.addStyle('padding-left', this._level * 0.4 * 3 + 'em'); this.$list.level = value + 1; }, get: function () { return this._level || 0; } }, active: { set: function (value) { if (value) { this.addClass('active'); } else { this.removeClass('active'); } }, get: function () { return this.containsClass('active'); } }, data: { set: function (value) { this._data = value; }, get: function () { return this._data; } }, value: { get: function () { var data = this.data; if (typeof data == 'string') return data; if (typeof data.value == "undefined") { return data.text; } else { return data.value; } } } }; TreeListItem.property.extendClasses = { set: function (value) { var self = this; this.extendClasses.forEach(function (className) { self.$parent.removeClass(className); }); this._extendClass = []; if (!value) return; if (typeof value == 'string') { value = value.split(/\s+/).filter(function (c) { return c.length > 0 }); } if (value instanceof Array) { this._extendClass = value; this._extendClass.forEach(function (className) { self.$parent.addClass(className); }); } else { throw new Error('Invalid extendClasses'); } }, get: function () { return this._extendClass || []; } }; TreeListItem.property.extendStyle = { set: function (value) { this.$parent.removeStyle(this._extendStyle || {}); this._extendStyle = value || {}; this.$parent.addStyle(this.extendStyle); }, get: function () { return this._extendStyle || {}; } }; ACore["c" /* default */].install(TreeListItem); /* harmony default export */ var js_TreeListItem = (TreeListItem); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TreeList.js var TreeList_ = ACore["c" /* default */]._; var TreeList_$ = ACore["c" /* default */].$; function TreeList() { } TreeList.tag = 'treelist'; TreeList.render = function () { return TreeList_({ class: 'absol-tree-list', extendEvent: 'press' }); }; TreeList.prototype.realignDescription = function (extMarginLeft) { extMarginLeft = extMarginLeft || 0; var maxWidth = 0; var ctns = []; TreeList_$('.absol-tree-list-item-desc-container', this, function (elt) { ctns.push(elt); var bound = elt.getBoundingClientRect(); maxWidth = Math.max(maxWidth, bound.width); }); var fontSize = this.getFontSize(); var cntWidth = maxWidth / fontSize + 'em'; var extMarginRight = maxWidth / fontSize + extMarginLeft + 'em'; ctns.forEach(function (e) { e.addStyle('width', cntWidth); }); TreeList_$('span.absol-tree-list-item-text', this, function (elt) { elt.addStyle('margin-right', extMarginRight); }); return this; }; TreeList.prototype.clearItems = function () { this._items = []; this.clearChild(); }; TreeList.prototype.getAllItem = function () { return this._items || []; }; TreeList.prototype.getAllItemElement = function () { return Array.apply(null, this.childNodes); } TreeList.prototype.addItem = function (item) { var self = this; var props = { level: this.level, data: item }; if (typeof item == 'string') { props.text = item; } else { props.text = item.text; if (item.items) { props.items = item.items; } if (item.desc) { props.desc = item.desc; } if (item.extendClasses) { props.extendClasses = item.extendClasses; } if (item.extendStyle) { props.extendStyle = item.extendStyle; } } var elt = TreeList_({ tag: 'treelistitem', props: props, on: { press: function (event) { self.emit('press', event, this); } } }); this.addChild(elt); this._items.push(item); return this; }; TreeList.property = {}; TreeList.property.items = { set: function (value) { this.clearItems(); (value || []).forEach(this.addItem.bind(this)); }, get: function () { return this.getAllItem(); } }; TreeList.property.level = { set: function (value) { value = value || 0; if (this.level == value) return; this._level = value; this.getAllItemElement().forEach(function (e) { e.level = value; }); }, get: function () { return this._level || 0; } }; ACore["c" /* default */].install(TreeList); /* harmony default export */ var js_TreeList = (TreeList); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selecttreemenu.css var selecttreemenu = __webpack_require__(170); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/list/treeListToList.js /*** * * @param {Array<SelectionItem>} items * @returns {Array<SelectionItem>} */ function treeListToList(items) { var arr = []; function visit(level, node) { node.level = level; arr.push(node); if (node.items && node.items.length > 0) node.items.forEach(visit.bind(null, level + 1)); } items.forEach(visit.bind(null, 0)); return arr; } // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTreeBox.js var SelectTreeBox_ = ACore["c" /* default */]._; var SelectTreeBox_$ = ACore["c" /* default */].$; var SelectTreeBox_$$ = ACore["c" /* default */].$$; /*** * @extends SelectListBox * @constructor */ function SelectTreeBox() { js_SelectListBox.call(this); } SelectTreeBox.tag = 'SelectTreeBox'.toLowerCase(); SelectTreeBox.render = function () { return js_SelectListBox.render().addClass('as-select-tree-box'); }; Object.assign(SelectTreeBox.prototype, js_SelectListBox.prototype); SelectTreeBox.property = Object.assign({}, js_SelectListBox.property); SelectTreeBox.eventHandler = Object.assign({}, js_SelectListBox.eventHandler); SelectTreeBox.prototype._itemsToNodeList = function (items) { return treeListToList(items); }; //todo SelectTreeBox.prototype.searchItemByText = function (text) { text = text.trim(); if (text.length == 0) return this._items; if (this._searchCache[text]) return this._searchCache[text]; this._searchCache[text] = searchTreeListByText(text, this._items); return this._searchCache[text]; }; ACore["c" /* default */].install(SelectTreeBox); /* harmony default export */ var js_SelectTreeBox = (SelectTreeBox); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTreeMenu.js var SelectTreeMenu_ = ACore["c" /* default */]._; var SelectTreeMenu_$ = ACore["c" /* default */].$; /*** * @extends SelectMenu * @constructor */ function SelectTreeMenu() { var thisSM = this; this._items = []; this._value = null; this._lastValue = null; this.$holderItem = SelectTreeMenu_$('.absol-selectmenu-holder-item', this); this.$viewItem = SelectTreeMenu_$('.absol-selectmenu-holder-item selectlistitem', this); /*** * * @type {SelectTreeBox} */ this.$selectlistBox = SelectTreeMenu_({ tag: 'selecttreebox', props: { anchor: [1, 6, 2, 5] }, on: { preupdateposition: this.eventHandler.preUpdateListPosition } }); this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem); this.$selectlistBox.followTarget = this; OOP["a" /* default */].drillProperty(this, this.$selectlistBox, 'enableSearch'); this._lastValue = "NOTHING_VALUE"; this._isFocus = false; this.isFocus = false; this.on('mousedown', this.eventHandler.click, true); } SelectTreeMenu.tag = 'SelectTreeMenu'.toLowerCase(); SelectTreeMenu.render = function () { return SelectMenu2.render().addClass('as-select-tree-menu'); }; SelectTreeMenu.eventHandler = Object.assign({}, SelectMenu2.eventHandler); SelectTreeMenu.property = Object.assign({}, SelectMenu2.property); Object.assign(SelectTreeMenu.prototype, SelectMenu2.prototype); ACore["c" /* default */].install(SelectTreeMenu); /* harmony default export */ var js_SelectTreeMenu = (SelectTreeMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/widthheightresizer.css var widthheightresizer = __webpack_require__(172); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/WidthHeightSizer.js //can replace with other module var WidthHeightSizer_ = ACore["c" /* default */]._; var WidthHeightSizer_$ = ACore["c" /* default */].$; function WidthHeightResizer() { var res = WidthHeightSizer_({ extendEvent: 'sizechange', class: 'absol-width-height-resizer', child: ['.absol-width-height-resizer-content', '.absol-width-height-resizer-anchor-bot-right', '.absol-width-height-resizer-anchor-bot-left', '.absol-width-height-resizer-anchor-top-right', '.absol-width-height-resizer-anchor-top-left' ] }); res.eventHandler = OOP["a" /* default */].bindFunctions(res, WidthHeightResizer.eventHandler); res.$anchorBotRight = WidthHeightSizer_$('.absol-width-height-resizer-anchor-bot-right', res); res.$anchorTopRight = WidthHeightSizer_$('.absol-width-height-resizer-anchor-top-right', res); res.$anchorBotLeft = WidthHeightSizer_$('.absol-width-height-resizer-anchor-bot-left', res); res.$anchorTopLeft = WidthHeightSizer_$('.absol-width-height-resizer-anchor-top-left', res); res.$content = WidthHeightSizer_$('.absol-width-height-resizer-content', res); js_Draggable(res.$anchorBotRight).on('drag', res.eventHandler.dragBotRight).on('predrag', res.eventHandler.preDrag); js_Draggable(res.$anchorTopRight).on('drag', res.eventHandler.dragTopRight).on('predrag', res.eventHandler.preDrag); js_Draggable(res.$anchorBotLeft).on('drag', res.eventHandler.dragBotLeft).on('predrag', res.eventHandler.preDrag); js_Draggable(res.$anchorTopLeft).on('drag', res.eventHandler.dragTopLeft).on('predrag', res.eventHandler.preDrag); return res; } ['addChild', 'addChildBefore', 'addChildAfter', 'clearChild'].forEach(function (key) { WidthHeightResizer.prototype[key] = function () { return this.$content[key].apply(this.$content, arguments); } }); WidthHeightResizer.tag = 'WidthHeightResizer'.toLowerCase(); WidthHeightResizer.eventHandler = {}; WidthHeightResizer.eventHandler.preDrag = function (event) { this._whrWidth = parseFloat(this.getComputedStyleValue('width').replace('px', '')); this._whrHeight = parseFloat(this.getComputedStyleValue('height').replace('px', '')); }; WidthHeightResizer.eventHandler.dragBotRight = function (event) { var newEvent = { target: this, data: {} }; if (event.moveDX != 0) { this.addStyle('width', this._whrWidth + event.moveDX + 'px'); newEvent.data.changeWidth = true; } if (event.moveDY != 0) { this.addStyle('height', this._whrHeight + event.moveDY + 'px'); newEvent.data.changeHeight = true; } newEvent.data.height = this.getComputedStyleValue('height'); newEvent.data.width = this.getComputedStyleValue('width'); this.emit('sizechange', newEvent); }; WidthHeightResizer.eventHandler.dragTopRight = function (event) { var newEvent = { target: this, data: {} }; if (event.moveDX != 0) { this.addStyle('width', this._whrWidth + event.moveDX + 'px'); newEvent.data.changeWidth = true; } if (event.moveDY != 0) { this.addStyle('height', this._whrHeight - event.moveDY + 'px'); newEvent.data.changeHeight = true; } newEvent.data.height = this.getComputedStyleValue('height'); newEvent.data.width = this.getComputedStyleValue('width'); this.emit('sizechange', newEvent); }; WidthHeightResizer.eventHandler.dragBotLeft = function (event) { var newEvent = { target: this, data: {} }; if (event.moveDX != 0) { this.addStyle('width', this._whrWidth - event.moveDX + 'px'); newEvent.data.changeWidth = true; } if (event.moveDY != 0) { this.addStyle('height', this._whrHeight + event.moveDY + 'px'); newEvent.data.changeHeight = true; } newEvent.data.height = this.getComputedStyleValue('height'); newEvent.data.width = this.getComputedStyleValue('width'); this.emit('sizechange', newEvent); }; WidthHeightResizer.eventHandler.dragTopLeft = function (event) { var newEvent = { target: this, data: {} }; if (event.moveDX != 0) { this.addStyle('width', this._whrWidth - event.moveDX + 'px'); newEvent.data.changeWidth = true; } if (event.moveDY != 0) { this.addStyle('height', this._whrHeight - event.moveDY + 'px'); newEvent.data.changeHeight = true; } newEvent.data.height = this.getComputedStyleValue('height'); newEvent.data.width = this.getComputedStyleValue('width'); this.emit('sizechange', newEvent); }; ACore["c" /* default */].creator.widthheightresizer = WidthHeightResizer; /* harmony default export */ var WidthHeightSizer = (WidthHeightResizer); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/modal.css var modal = __webpack_require__(174); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Modal.js var Modal_$ = ACore["c" /* default */].$; var Modal_ = ACore["c" /* default */]._; function Modal() { this._contentAlign = []; this.contentAlign = 'middle center'; this.$content = Modal_$('.as-modal-content', this); } Modal.tag = 'modal'; Modal.render = function () { return Modal_({ class: 'as-modal', child: '.as-modal-content' }); }; ['findChildBefore', 'findChildAfter', 'removeChild', 'clearChild', 'addChild'].forEach(function (key) { Modal.prototype[key] = function () { this.$content[key].apply(this.$content, arguments); } }); Modal.property = {}; Modal.property.show = { set: function (value) { if (value) this.removeClass('as-hidden'); else this.addClass('as-hidden'); }, get: function () { return !this.containsClass('as-hidden'); } }; Modal.property.contentAlign = { set: function (value) { var thisM = this; this._contentAlign.forEach(function (name) { thisM.removeClass('as-' + name); }) value = value || ''; if (typeof value === 'string') { this._contentAlign = value.split(/\s+/); } else if (value instanceof Array) { this._contentAlign = value; } else { throw new Error("Invalid contentAlign!"); } var thisM = this; this._contentAlign.forEach(function (name) { thisM.addClass('as-' + name); }) }, get: function () { return this._contentAlign.join(' '); } } ACore["c" /* default */].install(Modal); /* harmony default export */ var js_Modal = (Modal); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/trackbar.css var trackbar = __webpack_require__(176); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TrackBar.js var TrackBar_ = ACore["c" /* default */]._; var TrackBar_$ = ACore["c" /* default */].$; /*** * @extends Hanger * @constructor */ function TrackBar() { this.$bar = TrackBar_$('.absol-trackbar', this); this.$button = TrackBar_$('.absol-trackbar-button', this); this.$line = TrackBar_$('.absol-trackbar-line', this); this.on('predrag', this.eventHandler.predrag) .on('drag', this.eventHandler.drag); this.leftValue = 0; this.rightValue = 1; this._dragValue = 0; } TrackBar.tag = 'trackbar'; TrackBar.render = function () { return TrackBar_({ tag: 'hanger', extendEvent: 'change', class: 'absol-trackbar', child: [{ class: 'absol-trackbar-line', child: '.absol-trackbar-button' }, 'attachhook'], }); }; TrackBar.prototype._updateValue = function () { var left = int_map(this.value, this.leftValue, this.rightValue, 0, 100); this.$button.addStyle('left', left + '%'); } TrackBar.eventHandler = {}; TrackBar.eventHandler.predrag = function (event) { if (event.target === this) { event.cancel(); } else { event.preventDefault(); var lineBound = this.$line.getBoundingClientRect(); var newValue = this.leftValue + (this.rightValue - this.leftValue) * (event.clientX - lineBound.left) / lineBound.width; newValue = Math.max(this.leftValue, Math.min(this.rightValue, newValue)); if (newValue !== this.value) { this.value = newValue; event.trackbarValue = this.value; this._dragValue = this.value; this.emit('change', event); } } }; TrackBar.eventHandler.drag = function (event) { var lineWidth = this.$line.getBoundingClientRect().width; var d = event.currentPoint.sub(event.startingPoint); var delta = d.x / lineWidth * (this.rightValue - this.leftValue); var newValue = Math.max(this.leftValue, Math.min(this.rightValue, this._dragValue + delta)); if (newValue != this.value) { this.value = newValue; event.trackbarValue = this.value; this.emit('change', event); } }; TrackBar.property = {}; TrackBar.property.value = { set: function (value) { value = parseFloat(value + ''); if (isNaN(value)) value = 0; this._value = value; this._updateValue(); }, get: function () { return Math.max(this.leftValue, Math.min(this.rightValue, this._value)); } }; TrackBar.property.leftValue = { set: function (value) { value = parseFloat(value + ''); if (isNaN(value)) value = 0; this._leftValue = value; this._updateValue(); }, get: function () { return this._leftValue || 0; } }; TrackBar.property.rightValue = { set: function (value) { value = parseFloat(value + ''); if (isNaN(value)) value = 1; this._rightValue = value; this._updateValue(); }, get: function () { return this._rightValue || 1; } }; TrackBar.property.disabled = { get: function () { return this.containsClass('as-disabled'); }, set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } } }; ACore["c" /* default */].install(TrackBar); /* harmony default export */ var js_TrackBar = (TrackBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/trackbarinput.css var trackbarinput = __webpack_require__(178); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TrackBarInput.js var TrackBarInput_ = ACore["c" /* default */]._; var TrackBarInput_$ = ACore["c" /* default */].$; /*** * * @extends {AElement} * @constructor */ function TrackBarInput() { var thisTI = this; this.$trackbarContainer = TrackBarInput_$('.absol-trackbar-input-trackbar-container', this) this.$inputContainer = TrackBarInput_$('.absol-trackbar-input-unit-input-container', this) this.$trackbar = TrackBarInput_$('trackbar', this); this.$input = TrackBarInput_$('flexiconinput', this); absol.OOP.drillProperty(this, this.$input, ['unit', 'icon']); this.$trackbar.on('change', function () { thisTI.$input.value = thisTI.value + ''; thisTI.emit('change', thisTI.value); }); this.$input.on('keyup', this.eventHandler.inputChange); this.inputTextWidth = 2; this.valueFixed = undefined; return this; } TrackBarInput.tag = 'TrackBarInput'.toLowerCase(); TrackBarInput.render = function () { return TrackBarInput_({ class: 'absol-trackbar-input', extendEvent: 'change', child: [{ class: 'absol-trackbar-input-trackbar-container', child: 'trackbar' }, { class: 'absol-trackbar-input-unit-input-container', child: 'flexiconinput' } ] }); }; TrackBarInput.prototype.init = function (props) { props = props || {}; props.leftValue = props.leftValue || 0; props.value = props.value || props.leftValue; Object.assign(this, props); this.value = props.value; }; TrackBarInput.prototype._calInputTextWidth = function () { var l = Math.max(this.leftValue.toFixed(this.valueFixed || 0).length, this.rightValue.toFixed(this.valueFixed || 0).length, 2); if (this.valueFixed > 0) { l -= 0.8; } this.inputTextWidth = l; }; // absol.OOP.drillProperty(this, this.$trackbar, ['leftValue', 'rightValue']); TrackBarInput.property = {}; TrackBarInput.property.leftValue = { set: function (value) { this.$trackbar.leftValue = value; this._calInputTextWidth(); }, get: function () { return this.$trackbar.leftValue; } }; TrackBarInput.property.rightValue = { set: function (value) { this.$trackbar.rightValue = value; this._calInputTextWidth(); }, get: function () { return this.$trackbar.rightValue; } }; TrackBarInput.property.value = { set: function (value) { this.$trackbar.value = value || 0; this.$input.value = this.value + ''; }, get: function () { return parseFloat((this.valueFixed === undefined ? this.$trackbar.value : this.$trackbar.value.toFixed(this.valueFixed)) + ''); } }; TrackBarInput.property.valueFixed = { set: function (value) { if (value === undefined || value === null) value = undefined; this._valueFixed = value; this.$input.value = this.value + ''; this._calInputTextWidth(); }, get: function () { return this._valueFixed; } }; TrackBarInput.property.inputTextWidth = { set: function (value) { if (typeof value == 'number') { this._inputTextWidth = value; this.$inputContainer.addStyle('width', 3 + (value - 2) * 0.42 + 0.3 + 'em'); this.$trackbarContainer.addStyle('right', 3.5 + (value - 2) * 0.42 + 0.3 + 'em'); } else { this._inputTextWidth = value; this.$inputContainer.addStyle('width', value); this.$trackbarContainer.addStyle('right', value); } }, get: function () { return this._inputTextWidth; } }; TrackBarInput.property.disabled = { get: function () { return this.containsClass('as-disabled'); }, set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } this.$input.disabled = !!value; this.$trackbar.disabled = !!value; } }; TrackBarInput.eventHandler = {}; TrackBarInput.eventHandler.inputChange = function (event) { var newValue = parseFloat(this.$input.value); if (!isNaN(newValue)) { newValue = Math.max(this.leftValue, Math.min(this.rightValue, newValue)); this.$trackbar.value = newValue; this.emit('change', this.value); } }; /* harmony default export */ var js_TrackBarInput = (TrackBarInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/buttonrange.css var buttonrange = __webpack_require__(180); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/ButtonRange.js var ButtonRange_ = ACore["c" /* default */]._; var ButtonRange_$ = ACore["c" /* default */].$; var ChevronLeft = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 410.258 410.258" style="enable-background:new 0 0 410.258 410.258;" xml:space="preserve">\n' + '<polygon points="298.052,24 266.052,0 112.206,205.129 266.052,410.258 298.052,386.258 162.206,205.129 "/>\n' + '</svg>'; var ChevronRight = '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n' + '\t viewBox="0 0 410.258 410.258" style="enable-background:new 0 0 410.258 410.258;" xml:space="preserve">\n' + '<polygon points="144.206,0 112.206,24 248.052,205.129 112.206,386.258 144.206,410.258 298.052,205.129 "/>\n' + '</svg>' /*** * @extends AElement * @constructor */ function ButtonRange() { this._dict = {}; this._pool = []; this._items = []; this.$lastActiveBtn = null; this._value = undefined; this._lastValue = this._value; this.$scroller = ButtonRange_$('.as-button-range-scroller', this) .on('wheel', this.eventHandler.wheel); this.$prevBtn = ButtonRange_$('.as-button-range-left-btn', this) .on('click', this.prevValue.bind(this)); this.$nextBtn = ButtonRange_$('.as-button-range-right-btn', this) .on('click', this.nextValue.bind(this)); this._scrollTimeout = -1; this._scrollToSelected = this._scrollToSelected.bind(this); this.$attachhook = ButtonRange_$('attachhook', this).on('error', this.eventHandler.attached); this.autoWidth = false; } ButtonRange.tag = 'buttonrange'; ButtonRange.render = function () { return ButtonRange_({ extendEvent: ['change'], class: 'as-button-range', child: [ { class: 'as-button-range-scroller', }, { class: 'as-button-range-left-ctn', child: { tag: 'button', class: 'as-button-range-left-btn', child: ChevronLeft } }, { class: 'as-button-range-right-ctn', child: { tag: 'button', class: 'as-button-range-right-btn', child: ChevronRight } }, 'attachhook' ] }); }; ButtonRange.prototype._updateUnderlinePosition = function () { if (!this.$lastActiveBtn) return; var scrollerFirstBound = this.$scroller.firstChild.getBoundingClientRect(); if (scrollerFirstBound.width === 0) return; var activeBound = this.$lastActiveBtn.getBoundingClientRect(); this.addStyle({ '--underline-left': activeBound.left - scrollerFirstBound.left + 'px', '--underline-width': activeBound.width + 'px' }); }; ButtonRange.prototype.updateSize = function () { if (this.autoWidth) { if (this.$scroller.childNodes.length > 0) { var left = this.$scroller.firstChild.getBoundingClientRect().left; var right = this.$scroller.lastChild.getBoundingClientRect().right; if (left < right) { var fontSize = this.getFontSize() || 14; this.addStyle('width', (right - left + 2) / fontSize + 2 + 'em') } } } this._updateUnderlinePosition(); this._scrollToSelected(); }; ButtonRange.prototype._newButton = function () { var button = ButtonRange_({ tag: 'button', class: 'as-button-range-item', child: { text: 'null' } }); button.on('click', this.eventHandler.clickItem.bind(this, button)); return button; }; ButtonRange.prototype._requestButton = function (items) { var button; if (this._pool.length > 0) { button = this._pool.pop(); } else { button = this._newButton(); } return button; }; ButtonRange.prototype._assignButton = function (button, data) { button._data = data; button.childNodes[0].data = data.text; }; ButtonRange.prototype._releaseButton = function (button) { this._pool.push(button); }; ButtonRange.prototype._requireButton = function (n) { var child; while (this.$scroller.childNodes.length > n) { child = this.$scroller.lastChild; this._releaseButton(child); this.$scroller.removeChild(child); } while (this.$scroller.childNodes.length < n) { this.$scroller.addChild(this._requestButton()); } }; ButtonRange.prototype._assignButtonList = function (items) { var item; for (var i = 0; i < items.length; ++i) { item = this._getFullFormat(items[i]); this._assignButton(this.$scroller.childNodes[i], item); this._dict[item.ident] = { elt: this.$scroller.childNodes[i], data: item } } }; ButtonRange.prototype._scrollToSelected = function () { if (this._scrollTimeout >= 0) return; if (!this.$lastActiveBtn) return; var scrollerBound = this.$scroller.getBoundingClientRect(); if (scrollerBound.width === 0) return; var activeBound = this.$lastActiveBtn.getBoundingClientRect(); var dx, speed; if (activeBound.left < scrollerBound.left - 1) { dx = activeBound.left - scrollerBound.left; if (dx < -500) dx = -500; speed = Math.sqrt(-dx * 2 + 4); this.$scroller.scrollLeft -= speed; } else if (activeBound.right - 1 > scrollerBound.right) { dx = activeBound.right - scrollerBound.right; if (dx > 500) dx = 500; speed = Math.sqrt(dx * 2 + 4); this.$scroller.scrollLeft += speed; } else { return; } var thisBR = this; this._scrollTimeout = setTimeout(function () { thisBR._scrollTimeout = -1; thisBR._scrollToSelected(); }, 20); }; ButtonRange.prototype.nextValue = function (userAction) { var currentIndex = this._findActiveIndex(); var nextIndex; var nextValue; if (currentIndex < 0) { nextIndex = 0; } else { nextIndex = Math.min(this._items.length - 1, currentIndex + 1); } if (nextIndex >= 0) { nextValue = this._getFullFormat(this._items[nextIndex]).value; this.value = nextValue; if (userAction) this.notifyChange(); } }; ButtonRange.prototype.prevValue = function (userAction) { var currentIndex = this._findActiveIndex(); var prevIndex; var prevValue; if (currentIndex < 0) { prevIndex = 0; } else { prevIndex = Math.max(0, currentIndex - 1); } if (prevIndex >= 0 && prevIndex < this._items.length && prevIndex != currentIndex) { prevValue = this._getFullFormat(this._items[prevIndex]).value; this.value = prevValue; if (userAction) this.notifyChange(); } }; ButtonRange.prototype._findActiveIndex = function () { var item; var value = this._value; for (var i = 0; i < this._items.length; ++i) { item = this._items[i]; if (item === value || (item && item.value === value)) return i; } return -1; } ButtonRange.prototype._getFullFormat = function (item) { var res = {}; if ((typeof item == 'string') || (typeof item == 'number') || (typeof item == 'boolean') || (item === null) || (item === undefined)) { res.ident = item + ''; res.value = item; res.text = item + ''; } else if (item && (typeof item == 'object')) { res.value = item.value; res.ident = res.value + ''; res.text = item.text; } return res; }; ButtonRange.prototype.notifyChange = function () { this.emit('change', { target: this, value: this.value, type: 'change' }, this); } ButtonRange.property = {}; /** * @type {ButtonRange} */ ButtonRange.property.items = { set: function (items) { items = items || []; this._items = items; this._requireButton(items.length); this._assignButtonList(items); if (items.length > 0) { if (!this._dict[this._value + '']) { this._value = this._getFullFormat(items[0]).value; } } this.value = this._value; this.updateSize(); }, get: function () { return this._items; } }; ButtonRange.property.value = { set: function (value) { this._value = value; this._lastValue = this._value; if (this.$lastActiveBtn) { this.$lastActiveBtn.removeClass('as-active'); this.$lastActiveBtn = null; } var hodler = this._dict[value + '']; if (hodler) { hodler.elt.addClass('as-active'); this.$lastActiveBtn = hodler.elt; } var activeIndex = this._findActiveIndex(); this.$prevBtn.disabled = activeIndex === 0; this.$nextBtn.disabled = activeIndex === this._items.length - 1; this._updateUnderlinePosition(); this._scrollToSelected(); }, get: function () { return this._value; } }; ButtonRange.eventHandler = {}; ButtonRange.eventHandler.clickItem = function (item, event) { if (this._lastValue != item._data.value) { this.value = item._data.value; this.notifyChange(); } }; ButtonRange.eventHandler.attached = function () { if (this.style.width === 'auto') this.autoWidth = true; Dom["b" /* default */].addToResizeSystem(this.$attachHook); this.updateSize(); }; ButtonRange.eventHandler.wheel = function (event) { var prevLeft = this.$scroller.scrollLeft; if (event.deltaY < 0) { this.$scroller.scrollLeft -= 100; } else if (event.deltaY > 0) { this.$scroller.scrollLeft += 100; } if (prevLeft !== this.$scroller.scrollLeft) event.preventDefault(); }; ACore["c" /* default */].install(ButtonRange); /* harmony default export */ var js_ButtonRange = (ButtonRange); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dropzone.css var dropzone = __webpack_require__(182); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/DropZone.js var DropZone_ = ACore["c" /* default */]._; var DropZone_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function DropZone() { this.defineEvent(['fileenter', 'fileleave', 'filedrop']); this.addClass('as-drop-zone'); this.on('dragover', this.eventHandler.dragZoneFileOver) .on('drop', this.eventHandler.dropZoneFileDrop); this._fileOverTimeout = -1; } DropZone.tag = 'dropzone'; DropZone.render = function () { return DropZone_('div'); }; DropZone.eventHandler = {}; DropZone.eventHandler.dragZoneFileOver = function (event) { event.preventDefault(); if (this._fileOverTimeout > 0) { clearTimeout(this._fileOverTimeout); } else { this.addClass('as-drag-over'); this.emit('fileenter', event, this); } this._fileOverTimeout = setTimeout(this.eventHandler.dragZoneFileOverEnd, 100); }; /*** * * @param {DragEvent} event */ DropZone.eventHandler.dropZoneFileDrop = function (event) { if (this._fileOverTimeout > 0) { clearTimeout(this._fileOverTimeout); this._fileOverTimeout = -1; } event.preventDefault(); this.removeClass('as-drag-over'); event._files = null; Object.defineProperty(event, 'files',{ get: function (){ if (this._files) return this._files; var files = []; var file; if (event.dataTransfer.items) { for (var i = 0; i < event.dataTransfer.items.length; i++) { if (event.dataTransfer.items[i].kind === 'file') { file = event.dataTransfer.items[i].getAsFile(); files.push(file); } } } else { // Use DataTransfer interface to access the file(s) for (var i = 0; i < event.dataTransfer.files.length; i++) { files.push(event.dataTransfer.files[i]); } } this._files = files; return this._files; } }); this.emit('filedrop', event, this); }; DropZone.eventHandler.dragZoneFileOverEnd = function () { this._fileOverTimeout = -1; this.removeClass('as-drag-over'); this.emit('fileleave', { type: 'fileleave' }, this); }; ACore["c" /* default */].install(DropZone); /* harmony default export */ var js_DropZone = (DropZone); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/radioinput.css var radioinput = __webpack_require__(184); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/RadioInput.js //new tech, not working version var RadioInput_ = ACore["c" /* default */]._; var RadioInput_$ = ACore["c" /* default */].$; /*** * @extends Element * @constructor */ function RadioInput() { this.$input = RadioInput_$('input', this) .on('change', this.notifyChange.bind(this)); this.checked = false; this.disabled = false; this.on('click', this.eventHandler.click); this.onchange = null; } RadioInput.tag = "RadioInput".toLowerCase(); RadioInput.render = function (data) { return RadioInput_({ tag: 'label', extendEvent: 'change', class: 'as-radio-input', child: [ { elt: data && data.$input, tag: 'input', class: 'as-radio-input-value', attr: { type: 'radio' } }, { class: ['as-radio-input-check-mark'] } ] } ) }; /*** * as normal, change event will be fired when radio change by system */ RadioInput.prototype.notifyChange = function () { var event = { checked: this.checked }; this.emit('change', event, this); }; RadioInput.prototype._updateCheckedClass = function () { if (this.checked) { this.addClass('as-checked'); } else { this.removeClass('as-checked'); } }; RadioInput.property = {}; RadioInput.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } this.$input.disabled = !!value; }, get: function () { this.$input.disabled; } }; /*** * * @type {RadioInput} */ RadioInput.property.checked = { set: function (value) { this.$input.checked = !!value; this._updateCheckedClass(); }, get: function () { return this.$input.checked; } } RadioInput.attribute = { checked: { set: function (value) { if (value === 'false' || value === null) { this.checked = false; } else { this.checked = true; } }, get: function () { return this.checked ? 'true' : 'false' }, remove: function () { this.checked = false; } }, disabled: { set: function (value) { if (value === 'false' || value === null) { this.disabled = false; } else { this.disabled = true; } }, get: function () { return this.disabled ? 'true' : 'false' }, remove: function () { this.disabled = false; } } }; /*** * * @type {RadioInput} */ RadioInput.eventHandler = {}; RadioInput.eventHandler.click = function () { this._updateCheckedClass(); }; ACore["c" /* default */].install(RadioInput); RadioInput.autoReplace = function () { var placeHolders = Array.prototype.slice.call(document.getElementsByTagName(this.tag)); var ph; var attOfPH; var attrs; var style; var classList; var attNode; var attrName, attrValue; var props; for (var i = 0; i < placeHolders.length; ++i) { ph = placeHolders[i]; attOfPH = ph.attributes; classList = []; style = {}; attrs = {}; props = {}; for (var j = 0; j < attOfPH.length; ++j) { attNode = attOfPH[j]; attrName = attNode.nodeName; attrValue = attNode.nodeValue; if (attrName == 'style') { attrValue.trim().split(';').reduce(function (style, prop) { var p = prop.split(':'); if (p.length == 2) { style[p[0].trim()] = p[1].trim(); } return style; }, style); } else if (attrName == 'class') { classList = attrValue.trim().split(/\s+/); } else if (attrName == 'onchange') { props.onchange = new Function('event', 'sender', attrValue); } else { attrs[attrName] = attrValue; } } var newElt = RadioInput_({ tag: this.tag, attr: attrs, class: classList, style: style, props: props }); RadioInput_$(ph).selfReplace(newElt); } }; RadioInput.initAfterLoad = function (){ Dom["b" /* default */].documentReady.then(function (){ RadioInput.autoReplace(); }) }; /* harmony default export */ var js_RadioInput = (RadioInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/onscreenwidget.css var onscreenwidget = __webpack_require__(186); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/OnScreenWidget.js var OnScreenWidget_ = ACore["c" /* default */]._; var OnScreenWidget_$ = ACore["c" /* default */].$; var OnScreenWidget_$$ = ACore["c" /* default */].$$; /*** * @extends Hanger * @constructor */ function OnScreenWidget() { this.id = 'unset-id-' + randomIdent(); this.on({ dragstart: this.eventHandler.widgetStartDrag, drag: this.eventHandler.widgetDrag, dragend: this.eventHandler.widgetDragEnd }); this.addEventListener('click', function (event) { if (!this._preventClick) this.emit('click', event, this); }); this.$attachhook = OnScreenWidget_('attachhook').addTo(this); this.$attachhook.on('attached', this.eventHandler.attached); this.config = null; } OnScreenWidget.tag = 'OnScreenWidget'.toLowerCase(); OnScreenWidget.render = function () { return OnScreenWidget_({ tag: 'hanger', extendEvent: 'click', class: 'as-onscreen-widget', style: { visibility: 'hidden' } }); }; OnScreenWidget.prototype.configPrefix = 'on-screen-widget-'; OnScreenWidget.prototype._genConfig = function () { this._widgetBound = this.getBoundingClientRect(); var screenSize = Object(Dom["d" /* getScreenSize */])(); return { cx: (this._widgetBound.left + this._widgetBound.width / 2) * 100 / screenSize.width, cy: (this._widgetBound.top + this._widgetBound.height / 2) * 100 / screenSize.height } } OnScreenWidget.prototype._saveConfig = function () { var id = this.id || ''; if (id.startsWith('unset-id-') || !this.config) return; localStorage.setItem(this.configPrefix + id, JSON.stringify(this.config)); }; OnScreenWidget.prototype._loadConfig = function () { var id = this.id || ''; if (id.startsWith('unset-id-')) return; var config = null; try { config = JSON.parse(localStorage.getItem(this.configPrefix + id)); if ((typeof config !== "object") || (typeof config.cx !== "number") || (typeof config.cy !== 'number')) { config = this.config || this._genConfig(); } } catch (error) { config = this.config || this._genConfig(); } var cx = config.cx || 0; var cy = config.cy || 0; this.addStyle({ '--cx': cx / 100, '--cy': cy / 100 }); this.config = config; }; OnScreenWidget.prototype._updateCSSSize = function () { var bound = this.getBoundingClientRect(); this.addStyle({ '--client-height': bound.height + 'px', '--client-width': bound.width + 'px' }); this.removeStyle('visibility'); }; /*** * * @type {OnScreenWidget|{}} */ OnScreenWidget.eventHandler = {}; OnScreenWidget.eventHandler.attached = function () { var images = OnScreenWidget_$$('img', this); var syncs = images.map(function (img) { if (img.classList.contains('absol-attachhook')) return Promise.resolve(); return Object(Dom["g" /* waitImageLoaded */])(img, 100); }); var thisW = this; Promise.all(syncs).then(function () { thisW._updateCSSSize(); thisW._loadConfig(); }); }; OnScreenWidget.eventHandler.widgetStartDrag = function (event) { this._widgetBound = this.getBoundingClientRect(); this._preventClick = true; }; OnScreenWidget.eventHandler.widgetDrag = function (event) { event.preventDefault(); var screenSize = Object(Dom["d" /* getScreenSize */])(); var p0 = new Math_Vec2(this._widgetBound.left, this._widgetBound.top); var dv = event.currentPoint.sub(event.startingPoint); var p1 = p0.add(dv); var cx = (p1.x - 2) * 100 / (screenSize.width - this._widgetBound.width - 4); var cy = (p1.y - 2) * 100 / (screenSize.height - this._widgetBound.height - 4); cx = Math.max(0, Math.min(100, cx)); cy = Math.max(0, Math.min(100, cy)); this.addStyle({ '--cx': cx / 100, '--cy': cy / 100 }); if (this.config) { this.config.cx = cx; this.config.cy = cy; } }; OnScreenWidget.eventHandler.widgetDragEnd = function () { var thisWG = this; setTimeout(function () { thisWG._preventClick = false; }, 100); this._saveConfig(); }; ACore["c" /* default */].install(OnScreenWidget); /* harmony default export */ var js_OnScreenWidget = (OnScreenWidget); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/ribbonsplitbutton.css var ribbonsplitbutton = __webpack_require__(188); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/RibbonSplitButton.js var RibbonSplitButton_ = ACore["c" /* default */]._; var RibbonSplitButton_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function RibbonSplitButton() { this.$icon = null; this._icon = null; this.$text = RibbonSplitButton_$('.as-ribbon-split-button-text', this); this.$textNode = this.$text.firstChild; this.$primaryBtn = RibbonSplitButton_$('.as-ribbon-split-button-primary', this) .on('click', this.eventHandler.clickPrimaryBtn); this.$extendBtn = RibbonSplitButton_$('.as-ribbon-split-button-extend', this); this._menuHolder = null; } RibbonSplitButton.tag = 'RibbonSplitButton'.toLowerCase(); RibbonSplitButton.render = function () { return RibbonSplitButton_({ extendEvent: ['press', 'select'], attr: { 'tabindex': '0' }, class: ['as-ribbon-split-button', 'as-no-dropdown'], child: { class: 'as-ribbon-split-button-content', child: [ { tag: 'button', attr: { 'tabindex': '-1' }, class: 'as-ribbon-split-button-primary', child: { tag: 'span', class: 'as-ribbon-split-button-text', child: { text: '' } } }, { tag: 'button', attr: { 'tabindex': '-1' }, class: 'as-ribbon-split-button-extend', child: 'span.mdi.mdi-chevron-down' } ] } }); }; RibbonSplitButton.property = {}; RibbonSplitButton.property.items = { set: function (items) { var thisB = this; this._items = items || []; if (this._items && this._items.length > 0) { if (!this._menuHolder) { this.removeClass('as-no-dropdown'); this._menuHolder = js_QuickMenu.toggleWhenClick(this.$extendBtn || this, { getMenuProps: function () { return { items: thisB._items } }, getFlowedElement: function () { return thisB; }, anchor: [1, 2, 6, 5], onSelect: function (item) { thisB.emit('select', { item: cleanMenuItemProperty(item), type: 'select', target: thisB }); } }); } } else { if (this._menuHolder) { this.addClass('as-no-dropdown'); this._menuHolder.remove(); this._menuHolder = null; } } }, get: function () { return this._items; } }; RibbonSplitButton.property.text = { set: function (value) { value = value || ''; this.$textNode.data = value; }, get: function () { return this.$textNode.data; } }; RibbonSplitButton.property.icon = { set: function (icon) { icon = icon || null; this._icon = icon; if (this.$icon) this.$primaryBtn.removeChild(this.$icon); if (icon) { this.$icon = RibbonSplitButton_(icon); this.$primaryBtn.addChildBefore(this.$icon, this.$text); if (this.$icon.addClass) this.$icon.addClass('as-ribbon-split-button-icon'); } else { this.$icon = null; } }, get: function () { return this._icon; } }; RibbonSplitButton.eventHandler = {}; RibbonSplitButton.eventHandler.clickPrimaryBtn = function () { this.emit('press', { type: 'press', target: this, item: cleanMenuItemProperty(this) }) } ACore["c" /* default */].install(RibbonSplitButton); /* harmony default export */ var js_RibbonSplitButton = (RibbonSplitButton); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/ribbonbutton.css var ribbonbutton = __webpack_require__(190); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/RibbonButton.js var RibbonButton_ = ACore["c" /* default */]._; var RibbonButton_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function RibbonButton() { this.$icon = null; this._icon = null; this.$text = RibbonButton_$('.as-ribbon-button-text', this); this.$textNode = this.$text.firstChild; this._menuHolder = null; } RibbonButton.tag = 'RibbonButton'.toLowerCase(); RibbonButton.render = function () { return RibbonButton_({ tag: 'button', extendEvent: ['select'], attr: { 'tabindex': '0' }, class: ['as-ribbon-button', 'as-no-dropdown'], child: [ { tag: 'span', class: 'as-ribbon-button-text', child: { text: '' } }, 'span.mdi.mdi-chevron-down' ] }); }; RibbonButton.property = Object.assign({}, js_RibbonSplitButton.property); RibbonButton.property.icon = { set: function (icon) { icon = icon || null; this._icon = icon; if (this.$icon) this.removeChild(this.$icon); if (icon) { this.$icon = RibbonButton_(icon); this.addChildBefore(this.$icon, this.$text); if (this.$icon.addClass) this.$icon.addClass('as-ribbon-button-icon'); } else { this.$icon = null; } }, get: function () { return this._icon; } }; RibbonButton.eventHandler = {}; ACore["c" /* default */].install(RibbonButton); /* harmony default export */ var js_RibbonButton = (RibbonButton); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/timeselectinput.css var timeselectinput = __webpack_require__(192); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TimeSelectInput.js var TimeSelectInput_ = ACore["c" /* default */]._; var TimeSelectInput_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function TimeSelectInput() { /*** * * @type {SelectListBox} */ this.$selectlistBox = TimeSelectInput_({ tag: 'selectlistbox', props: { anchor: [1, 6, 2, 5] }, on: { preupdateposition: this.eventHandler.preUpdateListPosition } }); this.$text = TimeSelectInput_$('.as-time-select-input-text', this) .on('change', this.eventHandler.textChange) .on('keyup', this.eventHandler.textKeyUp) .on('keydown', this.eventHandler.textKeyDown); this.$toggleBtn = TimeSelectInput_$('absol-selectmenu-btn', this); this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem); this.$selectlistBox.followTarget = this; this._makeTimeList(0, MILLIS_PER_DAY, MILLIS_PER_MINUTE * 15); this._hour = 0; this._minute = 0; this._lastDayOffset = 0; this.dayOffset = 0; this.on('click', this.eventHandler.click); } TimeSelectInput.tag = 'TimeSelectInput'.toLowerCase(); TimeSelectInput.render = function () { return TimeSelectInput_({ class: 'as-time-select-input', extendEvent: 'change', attr: { tabindex: 0 }, child: [ { tag: 'input', class: 'as-time-select-input-text', attr: { type: 'text' } }, { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] } ] }); }; TimeSelectInput.prototype._makeTimeList = function (start, end, step) { var items = []; for (var t = 0; t < end; t += step) { items.push({ text: this._mil2Text(t), value: t }); } this.$selectlistBox.items = items; this.addStyle('--list-min-width', this.$selectlistBox._estimateWidth + 'px'); }; TimeSelectInput.prototype.textRegx = /^((1[0-2])|[1-9]):([0-5][0-9]) (AM|PM)$/; TimeSelectInput.prototype._mil2Text = function (mil) { if (mil < 0) { mil = mil + Math.ceil(-mil / MILLIS_PER_DAY) * MILLIS_PER_DAY; } var min = Math.floor(mil / (MILLIS_PER_MINUTE)); var hour = Math.floor(min / 60) % 24; min = min % 60; return (hour % 12 == 0 ? 12 : (hour % 12)) + ':' + (min < 10 ? '0' : '') + min + ' ' + (hour < 12 ? 'AM' : 'PM'); }; /*** * * @param {string} s * @private */ TimeSelectInput.prototype._text2mil = function (s) { s = s.toLowerCase(); var nums = s.match(/[0-9]+/g) || [0, 0]; while (nums.length < 2) { nums.push(0); } var h = positiveIntMod(parseInt(nums[0]), 24); var m = positiveIntMod(parseInt(nums[1]), 60); var pm = s.indexOf('pm') > 0 || h > 12; if (pm) { if (h < 12) h += 12; } else { if (h == 12) h = 0; } return h * MILLIS_PER_HOUR + m * MILLIS_PER_MINUTE; }; TimeSelectInput.prototype.isActive = function () { return document.activeElement == this || AElement["a" /* default */].prototype.isDescendantOf.call(document.activeElement, this) || AElement["a" /* default */].prototype.isDescendantOf.call(document.activeElement, this.$selectlistBox); }; TimeSelectInput.prototype._updateValueText = function () { this.$text.value = this._mil2Text(this.dayOffset); }; TimeSelectInput.prototype.notifyCanBeChange = function () { var dayOffset = this.dayOffset; if (this._lastDayOffset !== dayOffset) { this.emit('change', { type: 'change', lastDayOffset: this._lastDayOffset, dayOffset: dayOffset, target: this }, this); this._lastDayOffset = dayOffset; } }; TimeSelectInput.property = {}; TimeSelectInput.property.isFocus = { get: function () { return this.containsClass('as-focus'); }, set: function (value) { value = !!value; if (this.isFocus == value) return; if (value) { this.addClass('as-focus'); } else { this.removeClass('as-focus'); } var thisI = this; if (value) { document.body.appendChild(this.$selectlistBox); this.$selectlistBox.domSignal.$attachhook.emit('attached'); var bound = this.getBoundingClientRect(); this.$selectlistBox.addStyle('min-width', bound.width + 'px'); this.$selectlistBox.refollow(); this.$selectlistBox.updatePosition(); setTimeout(function () { if (thisI.enableSearch) { thisI.$selectlistBox.$searchInput.focus(); } TimeSelectInput_$(document.body).on('click', thisI.eventHandler.bodyClick); }, 1); this.$selectlistBox.viewListAtFirstSelected(); } else { TimeSelectInput_$(document.body).off('click', thisI.eventHandler.bodyClick); this.$selectlistBox.selfRemove(); this.$selectlistBox.unfollow(); this.$selectlistBox.resetSearchState(); } } }; TimeSelectInput.property.hour = { set: function (value) { this._hour = positiveIntMod(value, 24); this._lastDayOffset = this.dayOffset; this._updateValueText(); }, get: function () { return this._hour; } }; TimeSelectInput.property.minute = { set: function (value) { this._minute = positiveIntMod(value, 60); this._lastDayOffset = this.dayOffset; this._updateValueText(); }, get: function () { return this._minute; } }; TimeSelectInput.property.dayOffset = js_TimeInput.property.dayOffset; TimeSelectInput.property.disabled = { set: function (value) { this.$text.disabled = !!value; if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } } , get: function () { return this.containsClass('as-disabled'); } }; /*** * * @type {{}|TimeSelectInput} */ TimeSelectInput.eventHandler = {}; TimeSelectInput.eventHandler.selectListBoxPressItem = function (event) { var lastValue = this._lastDayOffset; var value = event.value; var text = this._mil2Text(value); this.dayOffset = value; this.$selectlistBox.values = [value]; this.focus(); setTimeout(function () { this.isFocus = false; }.bind(this), 100); this._lastDayOffset = lastValue;// restore last value after set dayOffset this.notifyCanBeChange(); }; TimeSelectInput.eventHandler.preUpdateListPosition = function () { var bound = this.getBoundingClientRect(); var screenSize = Object(Dom["d" /* getScreenSize */])(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = Object(Dom["f" /* traceOutBoundingClientRect */])(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { this.isFocus = false; } }; TimeSelectInput.eventHandler.textChange = function () { setTimeout(function () { if (!this.textRegx.test(this.$text.value)) { this.$text.value = this._mil2Text(this.dayOffset); } }.bind(this), 10); }; /*** * * @param {KeyboardEvent} event */ TimeSelectInput.eventHandler.textKeyDown = function (event) { if (event.key == 'Enter') { this.isFocus = false; this.$text.blur(); this.notifyCanBeChange(); } }; TimeSelectInput.eventHandler.textKeyUp = function (event) { var s = this.$text.value; var mil = this._text2mil(s); this._hour = Math.floor(mil / MILLIS_PER_HOUR); this._minute = Math.floor(mil / MILLIS_PER_MINUTE) % 60; this.$selectlistBox.values = [mil]; this.$selectlistBox.viewListAtFirstSelected(); }; TimeSelectInput.eventHandler.click = function (event) { if (!EventEmitter["b" /* default */].hitElement(this.$text, event)) { this.isFocus = !this.isFocus; setTimeout(function () { if (this.isFocus && this.$text != document.activeElement) { this.$text.select(); } }.bind(this), 1) } else { if (!this.isFocus) this.isFocus = true; } }; TimeSelectInput.eventHandler.bodyClick = function (event) { if (EventEmitter["b" /* default */].hitElement(this, event) || EventEmitter["b" /* default */].hitElement(this.$selectlistBox, event)) return; this.isFocus = false; }; ACore["c" /* default */].install(TimeSelectInput); /* harmony default export */ var js_TimeSelectInput = (TimeSelectInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/snackbar.css var snackbar = __webpack_require__(194); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Snackbar.js var Snackbar_ = ACore["c" /* default */]._; var Snackbar_$ = ACore["c" /* default */].$; var t = document.createElement; /*** * @extends AElement * @constructor */ function SnackBar() { // OOP.drillProperty(this, this.firstChild, 'message', 'data'); /*** * * @type {*} */ this._message = null; this.message = null; } SnackBar.tag = 'SnackBar'.toLowerCase(); SnackBar.render = function () { return Snackbar_({ class: 'as-snackbar' }) }; SnackBar.property = {}; SnackBar.property.message = { set: function (value) { this._message = value; if (value instanceof Array) { this.clearChild(); this.addChild(value.map(function (item) { return Snackbar_(item); })); } else if (typeof value === 'string') { this.innerHTML = value; } else if (Object(Dom["e" /* isDomNode */])(value)) { this.clearChild() .addChild(value); } else if (value && typeof value === 'object' && (value.text || value.props || value.tag || value.attr || value.style || value.child || (value.child && value.child instanceof Array))) { this.clearChild() .addChild(Snackbar_(value)); } else { this.clearChild(); this._message = null; } }, get: function () { return this._message; } } ACore["c" /* default */].install(SnackBar); SnackBar.$instance = Snackbar_('snackbar'); SnackBar._removeTimeout = -1; SnackBar.show = function (message) { if (SnackBar._removeTimeout > 0) { clearTimeout(SnackBar._removeTimeout); } if (!SnackBar.$instance.parentElement) document.body.appendChild(SnackBar.$instance); SnackBar.$instance.removeClass('as-hiding'); SnackBar._removeTimeout = setTimeout(function () { SnackBar.$instance.addClass('as-show'); SnackBar.$instance.message = message; SnackBar._removeTimeout = setTimeout(function () { SnackBar.$instance.removeClass('as-show').addClass('as-hiding'); SnackBar._removeTimeout = setTimeout(function () { SnackBar.$instance.remove(); SnackBar._removeTimeout = -1; SnackBar.$instance.removeClass('as-hiding'); }, 500); }, 3000); }, 1); } /* harmony default export */ var Snackbar = (SnackBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/multiselectmenu.css var multiselectmenu = __webpack_require__(196); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/MultiSelectMenu.js var MultiSelectMenu_ = ACore["c" /* default */]._; var MultiSelectMenu_$ = ACore["c" /* default */].$; /*** * @extends PositionTracker * @constructor */ function MultiSelectMenu() { this.on('click', this.eventHandler.click); this.$selectlistBox = MultiSelectMenu_({ tag: 'selectlistbox', props: { anchor: [1, 6, 2, 5], displayValue: VALUE_HIDDEN }, on: { preupdateposition: this.eventHandler.preUpdateListPosition, pressitem: this.eventHandler.selectListBoxPressItem } }); this.$itemCtn = MultiSelectMenu_$('.as-multi-select-menu-item-ctn', this); this.$attachhook = MultiSelectMenu_$('attachhook', this) .on('attached', this.eventHandler.attached); OOP["a" /* default */].drillProperty(this, this.$selectlistBox, 'enableSearch'); this.$items = []; this._values = []; this.items = []; this.values = []; this.$selectlistBox.followTarget = this; this.disableClickToFocus = false; this.orderly = true; this.itemFocusable = false; this._activeValue = undefined; } MultiSelectMenu.tag = 'MultiSelectMenu'.toLowerCase(); MultiSelectMenu.render = function () { return MultiSelectMenu_({ class: ['as-multi-select-menu'], extendEvent: ['change', 'add', 'remove', 'activevaluechange'], attr: { tabindex: '1' }, child: [ { class: ['as-multi-select-menu-item-ctn', 'as-bscroller'] }, { tag: 'button', class: 'as-multi-select-menu-toggle-btn', child: 'dropdown-ico' }, 'attachhook' ] }); }; MultiSelectMenu.prototype._requireItem = function (n) { var itemElt; while (this.$items.length < n) { itemElt = SelectBox_requireItem(this); this.$itemCtn.addChild(itemElt); this.$items.push(itemElt); } while (this.$items.length > n) { itemElt = this.$items.pop(); this.$itemCtn.removeChild(itemElt); SelectBox_releaseItem(itemElt); } }; MultiSelectMenu.prototype._assignItems = function (items) { for (var i = 0; i < this.$items.length && i < items.length; ++i) { this.$items[i].data = items[i]; } }; /*** * * @param {string[] | number[]} values * @private */ MultiSelectMenu.prototype._getItemsByValues = function (values) { var selectListBoxElt = this.$selectlistBox; var itemHolders = values.reduce(function (ac, cr) { ac.push.apply(ac, selectListBoxElt.findItemsByValue(cr)); return ac; }, []); if (this.orderly) { if (typeof this.orderly === 'function') { itemHolders.sort(this.orderly); } else { itemHolders.sort(function(a, b) { return a.idx - b.idx; }); } } return itemHolders.map(function (holder) { return holder.item; }) }; MultiSelectMenu.prototype._updateItems = function () { var cBound = this.getBoundingClientRect(); var items = this._getItemsByValues(this._values); this._requireItem(items.length); this._assignItems(items); if (this.itemFocusable) { this._updateFocusItem(); } var nBound = this.getBoundingClientRect(); if (nBound.width != cBound.width || nBound.height != cBound.height) { ResizeSystem["a" /* default */].updateUp(this); } }; MultiSelectMenu.property = {}; MultiSelectMenu.property.disabled = SelectMenu2.property.disabled; MultiSelectMenu.property.hidden = SelectMenu2.property.hidden; MultiSelectMenu.property.isFocus = SelectMenu2.property.isFocus; MultiSelectMenu.prototype.init = function (props) { props = props || []; Object.keys(props).forEach(function (key) { if (props[key] === undefined) delete props[key]; }); this.super(props); }; MultiSelectMenu.prototype._updateFocusItem = function () { for (var i = 0; i < this.$items.length; ++i) { this.$items[i].active = this.$items[i].value == this._activeValue; } }; MultiSelectMenu.prototype.init = SelectMenu2.prototype.init; MultiSelectMenu.property.items = { set: function (items) { items = items || []; this.$selectlistBox.items = items; this.addStyle('--list-min-width', this.$selectlistBox._estimateWidth + 'px'); this._updateItems(); }, get: function () { return this.$selectlistBox.items } }; MultiSelectMenu.property.values = { set: function (values) { values = values || []; values = (values instanceof Array) ? values : [values]; this._values = values; this.$selectlistBox.values = values; this._updateItems(); }, get: function () { return this._values || []; } }; MultiSelectMenu.property.orderly = { set: function (value) { var needUpdate = this._orderly === this._orderly; if (typeof value === 'function') { this._orderly; } else this._orderly = !!value; if (needUpdate) { this.values = this.values; } }, get: function () { return !!this._orderly; } }; MultiSelectMenu.property.disableClickToFocus = { set: function (value) { if (value) { this.addClass('as-disable-click-to-focus'); } else { this.removeClass('as-disable-click-to-focus'); } }, get: function () { return this.containsClass('as-disable-click-to-focus'); } }; MultiSelectMenu.property.itemFocusable = { set: function (value) { if (value) { this.addClass('as-item-focusable'); } else { this.removeClass('as-item-focusable'); } this._updateFocusItem(); }, get: function () { return this.containsClass('as-item-focusable'); } }; MultiSelectMenu.property.activeValue = { set: function (value) { this._activeValue = value; if (this.itemFocusable) { this._updateFocusItem(); //todo } }, get: function () { return this._activeValue; } }; MultiSelectMenu.eventHandler = Object.assign({}, SelectMenu2.eventHandler); MultiSelectMenu.eventHandler.attached = function () { var maxHeightStyle = this.getComputedStyleValue('max-height') || 'none'; if (maxHeightStyle.match(/[0-9-]+px/)) { this.addStyle('--multi-select-menu-max-height', maxHeightStyle); this.addStyle('max-height', 'unset'); } else if (maxHeightStyle !== 'none') { console.warn('Can not adapt max-height:', maxHeightStyle); } }; MultiSelectMenu.eventHandler.click = function (event) { if ((event.target === this || event.target === this.$itemCtn) && !this.disableClickToFocus) { this.isFocus = !this.isFocus; } }; MultiSelectMenu.eventHandler.bodyClick = function (event) { if (!EventEmitter["b" /* default */].hitElement(this.$selectlistBox, event) && event.target !== this && event.target !== this.$itemCtn) { this.isFocus = false; } }; MultiSelectMenu.eventHandler.selectListBoxPressItem = function (event) { var data = event.data; var currentValues = this.$selectlistBox.values; currentValues.push(data.value); this.$selectlistBox.values = currentValues; this.$selectlistBox.updatePosition(); this._activeValue = data.value; this._updateItems(); this.isFocus = false; this.emit('add', Object.assign({}, event, { type: 'add', target: this, value: data.value, data: data, itemData: data }), this); this.emit('change', Object.assign({}, event, { type: 'change', action: 'add', target: this, value: data.value, data: data, values: this.values }), this); }; ACore["c" /* default */].install(MultiSelectMenu); /* harmony default export */ var js_MultiSelectMenu = (MultiSelectMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/countdownclock.css var countdownclock = __webpack_require__(198); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/CountdownClock.js var CountdownClock_ = ACore["c" /* default */]._; var CountdownClock_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function CountdownClock() { var thisC = this; this.$attachhook = CountdownClock_('attachhook').addTo(this) .on('attached', function () { ResizeSystem["a" /* default */].add(this); this.requestUpdateSize(); if (thisC.autoStart) { thisC.start(); } }); this.$attachhook.requestUpdateSize = this._updateBorder.bind(this); this._tick = this._tick.bind(this); this.$border = CountdownClock_$(".as-countdown-clock-border", this); this.$min = CountdownClock_$(".as-countdown-clock-min", this); this.$sec = CountdownClock_$(".as-countdown-clock-sec", this); this._prevText = -1; this._startTime = new Date().getTime(); this._totalSecond = 60; this._remainSecond = 0; this.totalSecond = 60; this.remainSecond = 0; this._intvId = -1; } CountdownClock.tag = 'CountdownClock'.toLowerCase(); CountdownClock.render = function () { return CountdownClock_({ extendEvent: ['finish', 'update'], class: 'as-countdown-clock', child: [ { class: 'as-countdown-clock-text', child: [ { tag: 'span', class: 'as-countdown-clock-min', child: { text: 0 } }, { text: ':' }, { tag: 'span', class: 'as-countdown-clock-sec', child: { text: '60' } } ] }, { class: 'as-countdown-clock-border-wrapper', child: { class: 'as-countdown-clock-border' } } ] }); }; CountdownClock.prototype._makePolygon = function (end) { var n = Math.ceil(Math.max(end / 0.2, 2)); var fan = Array(n).fill(0).map(function (u, i) { var angle = -Math.PI / 2 + end * i / n; return [numberAutoFixed(50 + 60 * Math.cos(angle), 5) + '%', numberAutoFixed(50 + 60 * Math.sin(angle), 5) + '%'].join(' ') }); fan.push('50% 50%'); return 'polygon('+fan.join(', ')+')'; }; CountdownClock.prototype._setBorderValue = function (val) { if (val >= 1 || !isFinite(val)) { this.$border.removeStyle("clip-path"); return; } var bound = this.$border.getBoundingClientRect(); var angle = val * Math.PI * 2; this.$border.addStyle("-webkit-clip-path", this._makePolygon(angle)); this.$border.addStyle("clip-path", this._makePolygon(angle)); }; CountdownClock.prototype._updateBorder = function () { this._setBorderValue(this._remainSecond / Math.max(0.001, this._totalSecond)); }; CountdownClock.prototype._updateText = function () { if (this._prevText === this.remainSecond) return; var remainSecond = this.remainSecond; var min = Math.floor(remainSecond / 60); var sec = remainSecond % 60; this.$sec.innerHTML = (sec < 10 ? "0" : "") + sec; this.$min.innerHTML = min; } CountdownClock.prototype._tick = function () { var now = new Date().getTime(); var prevSec = this.remainSecond; this.remainSecond = Math.max(0, Math.ceil(this.totalSecond - (now - this._startTime) / 1000)); if (prevSec !== this.remainSecond) { this._updateText(); this.emit('update', { target: this, type: 'update' }, this); if (this.remainSecond === 0) { clearInterval(this._intvId); this._intvId = -1; this.emit('finish', { target: this, type: 'finish' }, this); } } }; CountdownClock.prototype.start = function () { if (this.remainSecond == 0) this.remainSecond = this.totalSecond; this._startTime = new Date().getTime() - (this.totalSecond - this.remainSecond) * 1000; this.resume(); }; CountdownClock.prototype.resume = function () { if (this._intvId > 0) return; this._intvId = setInterval(this._tick, 200); }; CountdownClock.prototype.pause = function () { if (this._intvId > 0) { clearInterval(this._intvId); this._intvId = -1; } }; CountdownClock.prototype.stop = function () { this.pause(); this.remainSecond = 0; }; CountdownClock.prototype.reset = function () { this.remainSecond = this.totalSecond; this._startTime = new Date().getTime(); } CountdownClock.property = {}; CountdownClock.property.totalSecond = { set: function (value) { if (!(value >= 0)) { value = 0; } this._totalSecond = value; this._updateBorder(); }, get: function () { return this._totalSecond; } }; CountdownClock.property.remainSecond = { set: function (value) { if (!(value >= 0)) { value = 0; } this._remainSecond = value; this._updateBorder(); this._updateText(); }, get: function () { return this._remainSecond; } } ACore["c" /* default */].install(CountdownClock); /* harmony default export */ var js_CountdownClock = (CountdownClock); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/toast.css var toast = __webpack_require__(200); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/variantcolors.css var variantcolors = __webpack_require__(202); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/VariantColors.js function VariantColor() { this.keys = ['primary', 'secondary', 'success', 'info', 'warning', 'error', 'danger', 'light', 'dark', 'link', 'note']; this.base = { primary: "#007bff", secondary: "#6c757d", success: "#28a745", info: "#17a2b8", warning: "#ffc107", error: "#ff4052", danger: "#dc3545", light: "#f8f9fa", dark: "#343a40", link: "#007bff", note: '#ffff88' }; this.mediumContract = { primary: '#e2edd5', secondary: '#fca75b', success: '#fce8e8', info: '#fcf5e8', warning: '#5e5a75', error: '#e0dfce', danger: "#e5e8d5", light: '#7a5b3c', dark: "#bf7d3b", link: "#dde8c9", note: '#1e1ec8' } Dom["b" /* default */].documentReady.then(this.loadFromCss.bind(this)); } VariantColor.prototype.has = function (name) { return this.keys.indexOf(name) >= 0; }; VariantColor.prototype.loadFromCss = function () { this.base = this.keys.reduce(function (ac, name) { var style = window.getComputedStyle(document.body); ac[name] = style.getPropertyValue('--variant-color-' + name); return ac; }, {}); this.mediumContract = this.keys.reduce(function (ac, name) { var style = window.getComputedStyle(document.body); ac[name] = style.getPropertyValue('--variant-medium-contract-color-' + name); return ac; }, {}); }; /* harmony default export */ var VariantColors = (new VariantColor()); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Toast.js var Toast_$ = ACore["c" /* default */].$; var Toast_ = ACore["c" /* default */]._; var toastBg = { success: "#a4f3b6", info: "#67d5e7" } var toastTextColor = { success: '#454040', info: '#48433b' } buildCss(VariantColors.keys.reduce(function (ac, cr) { var color = Color_Color.parse(toastBg[cr] || VariantColors.base[cr]); var textColor = color.getContrastYIQ(); var headerColor = toastTextColor[cr] || VariantColors.mediumContract[cr] || color.getHightContrastColor(); ac['.as-toast.as-variant-' + cr + ' .as-toast-variant-color'] = { 'background-color': color.toString('hex6') } ac['.as-toast.as-variant-background.as-variant-' + cr] = { 'background-color': color.toString('hex6'), color: textColor.toString('hex6') } ac['.as-toast.as-variant-background.as-variant-' + cr + ' .as-toast-header'] = { color: headerColor.toString('hex6') } return ac; }, {})); /*** * @extends {AElement} * @constructor */ function Toast() { this._state = 0; this.$closeBtn = Toast_$('.as-toast-close-btn', this) .on('click', this.disappear.bind(this)); this.$title = Toast_$('.as-toast-title', this); this.$timeText = Toast_$('.as-toast-time-text', this); this.$body = Toast_$('.toast-body', this); this.$attachhook = Toast_$('attachhook', this) .on('attached', this.appear.bind(this)); OOP["a" /* default */].drillProperty(this, this.$title.firstChild, 'htitle', 'data'); this._message = null; this.$message = null; this.disappearTimeout = 0; this.htitle = 'Toast.htitle'; this.timeText = new Date(); this.message = null; this.variant = null; } Toast.tag = 'toast'; ['addChild', 'removeChild', 'clearChild', 'addChildBefore', 'addChildAfter'].forEach(function (key) { Toast.prototype[key] = function () { this.$body[key].apply(this.$body, arguments); }; }); Toast.render = function () { return Toast_({ extendEvent: ['appeared', 'disappeared'], class: ['as-toast', 'as-not-appeared'], child: [ { class: 'as-toast-header', child: [ '.as-toast-variant-color', { tag: 'strong', class: 'as-toast-title', child: { text: "Absol Js" } }, { tag: 'smal', class: 'as-toast-time-text', child: { text: '20 mis ago' } }, { tag: 'button', class: 'as-toast-close-btn', child: { tag: 'span', child: { text: '×' } } } ] }, { class: 'toast-body' }, 'attachhook' ] }); }; Toast.prototype.disappear = function () { if (this._state !== 2) return; this._state = 3; this.addClass('as-disappearing'); setTimeout(function () { this.removeClass('as-disappeared') .removeClass('as-disappearing') .addClass('as-not-appeared'); this.remove(); this.emit('disappeared', { target: this, type: 'disappeared' }, this); }.bind(this), 500); }; Toast.prototype.appear = function () { if (this._state !== 0) return; this._state = 1; this.addClass('as-appearing'); setTimeout(function () { this.removeClass('as-not-appeared') .addClass('as-appeared') .removeClass('as-appearing'); this._state = 2; this.emit('appeared', { target: this, type: 'appeared' }, this); if (this.disappearTimeout > 0 && this.disappearTimeout < Infinity) { setTimeout(this.disappear.bind(this), this.disappearTimeout); } }.bind(this), 100); }; Toast.property = {}; Toast.property.variant = { set: function (value) { if (this._variant && this._variant !== value) { this.removeClass('as-variant-' + this._variant); } if (VariantColors.has(value) || (['sticky-note'].indexOf(value) >= 0)) { this._variant = value; this.addClass('as-variant-' + this._variant); } }, get: function () { return this._variant; } }; Toast.property.message = { set: function (value) { if (typeof value !== "string" || value.length === 0) { value = null; } if (value) { if (!this.$message) { this.$message = Toast_({ class: 'as-toast-message', child: { text: '' } }); } if (!this.$message.parentElement) this.$body.addChild(this.$message); this.$message.firstChild.data = value; } else { if (this.$message && this.$message.parentElement) { this.$message.remove(); } } this._message = value; }, get: function () { return this._message; } }; Toast.property.timeText = { set: function (value) { if (value instanceof Date) { value = value.toLocaleTimeString(); } else { value = value + ''; } this.$timeText.firstChild.data = value; }, get: function () { return this.$timeText.firstChild.data; } }; Toast.$toastList = Toast_('.as-toast-list.as-se.as-bscroller'); Toast.$toastList4Pos = { se: Toast.$toastList, sw: Toast_('.as-toast-list.as-sw.as-bscroller'), nw: Toast_('.as-toast-list.as-nw.as-bscroller'), ne: Toast_('.as-toast-list.as-ne.as-bscroller'), }; Dom["b" /* default */].documentReady.then(function () { Toast.$toastList.addTo(document.body); Toast.$toastList4Pos.sw.addTo(document.body); Toast.$toastList4Pos.nw.addTo(document.body); Toast.$toastList4Pos.ne.addTo(document.body); }); /*** * * @param {AbsolConstructDescriptor|{}} aObject, * @param {"se"|"sw"|"ne"|"nw" } [pos="se"] * @return {AElementNS|AElement|Text} */ Toast.make = function (aObject, pos) { pos = pos || 'se'; aObject = aObject || {}; if (typeof aObject !== "object") throw new Error("param must be AbsolConstructDescriptor object!"); if (Object(Dom["e" /* isDomNode */])(aObject)) { } else { aObject.tag = aObject.tag || 'toast'; } var toastElt = Toast_(aObject); var toastListElt = Toast.$toastList4Pos[pos] || Toast.$toastList; toastListElt.addChild(toastElt); return toastElt; }; ACore["c" /* default */].install(Toast); /* harmony default export */ var js_Toast = (Toast); // CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/spinner.tpl /* harmony default export */ var spinner = ("<svg class=\"as-spinner-ico\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"margin:auto;background:#fff;display:block;\" width=\"200px\" height=\"200px\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\">\r\n <g><circle cx=\"73.801\" cy=\"68.263\" fill=\"#e15b64\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"0s\"></animateTransform>\r\n </circle><circle cx=\"68.263\" cy=\"73.801\" fill=\"#f47e60\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.062s\"></animateTransform>\r\n </circle><circle cx=\"61.481\" cy=\"77.716\" fill=\"#f8b26a\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.125s\"></animateTransform>\r\n </circle><circle cx=\"53.916\" cy=\"79.743\" fill=\"#abbd81\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.187s\"></animateTransform>\r\n </circle><circle cx=\"46.084\" cy=\"79.743\" fill=\"#849b87\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.25s\"></animateTransform>\r\n </circle><circle cx=\"38.519\" cy=\"77.716\" fill=\"#6492ac\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.312s\"></animateTransform>\r\n </circle><circle cx=\"31.737\" cy=\"73.801\" fill=\"#637cb5\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.375s\"></animateTransform>\r\n </circle><circle cx=\"26.199\" cy=\"68.263\" fill=\"#6a63b6\" r=\"4\">\r\n <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.437s\"></animateTransform>\r\n </circle><animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;0 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\"></animateTransform></g>\r\n</svg>"); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/Icons.js function SpinnerIco(){ return ACore["c" /* default */]._(spinner); } SpinnerIco.tag = 'SpinnerIco'.toLowerCase(); ACore["c" /* default */].install(SpinnerIco); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/emojipickertooltip.css var emojipickertooltip = __webpack_require__(204); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/pageindicator.css var pageindicator = __webpack_require__(206); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/PageIndicator.js var PageIndicator_ = ACore["c" /* default */]._; var PageIndicator_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function PageIndicator() { this._idx = -1; this.length = 0; this.idx = -1; } PageIndicator.tag = 'PageIndicator'.toLowerCase(); PageIndicator.render = function () { return PageIndicator_({ class: 'as-page-indicator', child: [] }); }; PageIndicator.property = {}; PageIndicator.property.length = { set: function (value) { value = value || 0; value = Math.max(0, value); while (this.childNodes.length < value) { this.addChild(PageIndicator_('button.as-page-indicator-item')); } while (this.childNodes.length > value) { this.removeChild(this.childNodes[this.childNodes.length - 1]); } this.idx = this._idx;//update }, get: function () { return this.childNodes.length; } }; PageIndicator.property.idx = { set: function (value) { var activeElt = this.childNodes[this._idx]; if (activeElt) activeElt.removeClass('as-active'); this._idx = value; activeElt = this.childNodes[this._idx]; if (activeElt) activeElt.addClass('as-active'); }, get: function () { return this._idx; } }; ACore["c" /* default */].install(PageIndicator); /* harmony default export */ var js_PageIndicator = (PageIndicator); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiPickerTooltip.js var EmojiPickerTooltip_ = ACore["c" /* default */]._; var EmojiPickerTooltip_$ = ACore["c" /* default */].$; var EmojiPickerTooltip_isMobile = BrowserDetector["a" /* default */].isMobile; /*** * @augments Tooltip * @augments AElement * @augments Hanger * @constructor */ function EmojiPickerTooltip() { if (EmojiPickerTooltip_isMobile) { EmojiPickerTooltip_({ tag: js_Hanger.tag, elt: this, on: { predrag: this.eventHandler.preDragTT, dragstart: this.eventHandler.dragStartTT, drag: this.eventHandler.dragTT, dragend: this.eventHandler.dragEndTT } }) } this.$iconList = EmojiPickerTooltip_$('.as-emoji-picker-tooltip-icon-list', this); this.$leftBtn = EmojiPickerTooltip_$('.as-emoji-picker-tooltip-left-btn', this) .on('click', this.eventHandler.clickLeft); this.$scroller = EmojiPickerTooltip_$('.as-emoji-picker-tooltip-scroller', this); this.$rightBtn = EmojiPickerTooltip_$('.as-emoji-picker-tooltip-right-btn', this) .on('click', this.eventHandler.clickRight); this.$removeBtn = EmojiPickerTooltip_$('.as-emoji-picker-tooltip-remove-btn', this) .on('click', this.eventHandler.clickRemove); this.$pageIndicatior = EmojiPickerTooltip_$('pageindicator', this); this._iconButtonCache = {}; this._icons = []; this.icons = EmojiPickerTooltip.defaultIcons; } EmojiPickerTooltip.tag = 'EmojiPickerTooltip'.toLowerCase(); EmojiPickerTooltip.defaultIcons = [';(', '(sarcastic)', ':O', '(cwl)', '(heart)', '(y)', '(n)', '(rock)', '(facepalm)', '(xd)', ':$', '(waiting)', '(headbang)', '(ghost)', '(clap)', '(punch)', '(ok)', '(angry)']; EmojiPickerTooltip.emojiDict = js_EmojiAnims.reduce(function (ac, cr) { ac[cr[0]] = { imageFileName: cr[1], text: cr[0], desc: cr[2] }; return ac; }, {}); EmojiPickerTooltip.render = function () { return EmojiPickerTooltip_({ tag: 'tooltip', extendEvent: ['pick'], class: ['as-emoji-picker-tooltip'].concat(EmojiPickerTooltip_isMobile ? ['as-mobile'] : []), child: [ { tag: 'button', class: 'as-emoji-picker-tooltip-left-btn', child: 'span.mdi.mdi-chevron-left' }, { class: 'as-emoji-picker-tooltip-scroller', child: { class: 'as-emoji-picker-tooltip-icon-list', } }, { tag: 'button', class: 'as-emoji-picker-tooltip-right-btn', child: 'span.mdi.mdi-chevron-right' }, { tag: 'button', attr: { title: 'Remove Emoji' }, class: 'as-emoji-picker-tooltip-remove-btn', child: 'span.mdi.mdi-close' }, { tag: 'pageindicator', class: 'as-emoji-picker-tooltip-page-indicator', props: { length: 3, idx: 0 } } ] }, true); }; /*var */ EmojiPickerTooltip.prototype._makeIconBtn = function (iconText) { var icon = EmojiPickerTooltip.emojiDict[iconText]; var url = js_EmojiPicker.assetRoot + '/anim/x40/' + icon.imageFileName; var spriteElt = EmojiPickerTooltip_({ tag: 'sprite', class: 'as-emoji-picker-tooltip-icon', attr: { title: icon.desc }, props: { src: url, loop: true, fps: 30, debug: true }, on: { ready: function () { this.frames = { type: 'grid', col: 1, row: this.texture.naturalHeight / this.texture.naturalWidth }; this.frameIndex = 0; } } }); var buttonElt = EmojiPickerTooltip_({ tag: 'button', class: 'as-emoji-picker-tooltip-icon-btn', child: spriteElt, on: { click: this.eventHandler.clickIconBtn.bind(null, icon) } }); buttonElt.on('mouseenter', function () { spriteElt.play(); }).on('mouseleave', function () { spriteElt.stop(); spriteElt.frameIndex = 0; }); return buttonElt; }; EmojiPickerTooltip.prototype._updateIconList = function () { this.$iconList.clearChild(); var iconText; for (var i = 0; i < this._icons.length; ++i) { iconText = this._icons[i]; this._iconButtonCache[iconText] = this._iconButtonCache[iconText] || this._makeIconBtn(iconText); this.$iconList.addChild(this._iconButtonCache[iconText]) } }; EmojiPickerTooltip.property = {}; EmojiPickerTooltip.property.icons = { set: function (icons) { this._icons = icons || []; this._updateIconList(); this.viewOffset = 0; this.$pageIndicatior.length = Math.ceil(this._icons.length / 6); }, get: function () { return this._icons; } }; EmojiPickerTooltip.property.viewOffset = { set: function (value) { this._viewOffset = Math.max(0, Math.min(value, this._icons.length - 6)); this.$iconList.addStyle('left', -(100 * this._viewOffset / 6) + '%'); this.$leftBtn.disabled = this._viewOffset === 0; this.$rightBtn.disabled = this._viewOffset === this._icons.length - 6; this.$pageIndicatior.idx = Math.floor(this._viewOffset / 6); }, get: function () { return this._viewOffset; } }; EmojiPickerTooltip.eventHandler = {}; EmojiPickerTooltip.eventHandler.clickLeft = function () { this.viewOffset -= 6; }; EmojiPickerTooltip.eventHandler.clickRight = function () { this.viewOffset += 6; }; EmojiPickerTooltip.eventHandler.clickIconBtn = function (icon) { if (this._preventClick) return; this.emit('pick', Object.assign({ type: 'pick', icon: icon, target: this }, icon), this); }; EmojiPickerTooltip.eventHandler.clickRemove = function () { this.emit('pick', Object.assign({ type: 'pressremove', icon: "REMOVE", target: this }), this); }; EmojiPickerTooltip.eventHandler.preDragTT = function (event) { var scrollerBound = this.$scroller.getBoundingClientRect(); var listBound = this.$iconList.getBoundingClientRect(); this._scrollData = { left: listBound.left - scrollerBound.left, scrollerWidth: scrollerBound.width, newLeft: listBound.left - scrollerBound.left }; }; EmojiPickerTooltip.eventHandler.dragStartTT = function () { this.addClass('as-scrolling'); this._preventClick = true; }; EmojiPickerTooltip.eventHandler.dragTT = function (event) { event.preventDefault(); var dx = event.currentPoint.sub(event.startingPoint).x; var newLeft = Math.min(0, Math.max(-this._scrollData.scrollerWidth * 2, this._scrollData.left + dx)); this._scrollData.newLeft = newLeft; this.$iconList.addStyle('left', newLeft + 'px'); }; EmojiPickerTooltip.eventHandler.dragEndTT = function (event) { event.preventDefault(); this.removeClass('as-scrolling'); var dOffset = (this._scrollData.left - this._scrollData.newLeft) / this._scrollData.scrollerWidth; if (dOffset > 0.25) { dOffset = 1; } else if (dOffset < -0.25) { dOffset = -1; } else { dOffset = 0; } this.viewOffset += dOffset * 6; setTimeout(function () { this._preventClick = false; }.bind(this), 5) }; ACore["c" /* default */].install(EmojiPickerTooltip); function prepare() { if (EmojiPickerTooltip.$holder) return; EmojiPickerTooltip.$holder = EmojiPickerTooltip_('.absol-tooltip-root-holder') EmojiPickerTooltip.$tooltip = EmojiPickerTooltip_('emojipickertooltip.top').addTo(EmojiPickerTooltip.$holder) .on('pick', function (event) { EmojiPickerTooltip._listener && EmojiPickerTooltip._listener(event.icon); }); /*** * * @type {PositionTracker|undefined} */ EmojiPickerTooltip.$element = undefined; EmojiPickerTooltip.$content = undefined; EmojiPickerTooltip._orientation = 'auto'; EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0; EmojiPickerTooltip._listener = undefined; EmojiPickerTooltip._scrollOutListener = undefined; EmojiPickerTooltip.$tooltip.$arrow.updateSize = EmojiPickerTooltip.updatePosition; } EmojiPickerTooltip.updatePosition = function () { if (!EmojiPickerTooltip.$element) return; var outBound = Math_Rectangle.fromClientRect(Object(Dom["f" /* traceOutBoundingClientRect */])(EmojiPickerTooltip.$element)); var eBound = Math_Rectangle.fromClientRect(EmojiPickerTooltip.$element.getBoundingClientRect()); if (!outBound.isCollapse(eBound, 0)) { EmojiPickerTooltip._scrollOutListener && EmojiPickerTooltip._scrollOutListener(); } updateTooltipPosition(EmojiPickerTooltip); }; EmojiPickerTooltip.updatePosition = EmojiPickerTooltip.updatePosition.bind(EmojiPickerTooltip); EmojiPickerTooltip.show = function (element, menuListener, orientation) { prepare(); if (EmojiPickerTooltip.$element) { EmojiPickerTooltip.$element.stopTrackPosition(); EmojiPickerTooltip.$element.off('positionchange', EmojiPickerTooltip.updatePosition); } if (!element.startTrackPosition) { EmojiPickerTooltip_({ tag: js_PositionTracker.tag, elt: element }) } element.startTrackPosition(); EmojiPickerTooltip.$element = element; EmojiPickerTooltip.$element.on('positionchange', EmojiPickerTooltip.updatePosition); EmojiPickerTooltip._listener = menuListener; EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0; EmojiPickerTooltip._orientation = orientation || 'auto'; EmojiPickerTooltip.$holder.addTo(document.body); ResizeSystem["a" /* default */].add(EmojiPickerTooltip.$tooltip.$arrow); EmojiPickerTooltip.$tooltip.viewOffset = 0; EmojiPickerTooltip.$tooltip.addClass('top') .removeClass('left') .removeClass('right') .removeClass('bottom') .removeClass('ne') .removeClass('nw') .removeClass('auto'); EmojiPickerTooltip.updatePosition(); return EmojiPickerTooltip._session; }; EmojiPickerTooltip.close = function (token) { if (EmojiPickerTooltip._session !== token) return; if (EmojiPickerTooltip.$element) { EmojiPickerTooltip.$element.stopTrackPosition(); EmojiPickerTooltip.$element.off('positionchange', EmojiPickerTooltip.updatePosition); } EmojiPickerTooltip.$element = undefined; EmojiPickerTooltip._listener = undefined; EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0; EmojiPickerTooltip.$holder.remove(); }; EmojiPickerTooltip.toggleWhenClick = function (trigger, adaptor) { var res = { trigger: trigger, adaptor: adaptor, currentSession: undefined, }; function clickHandler(event) { if (res.currentSession === EmojiPickerTooltip._session) return; res.currentSession = EmojiPickerTooltip.show(res.adaptor.getFlowedElement ? res.adaptor.getFlowedElement() : trigger, res.adaptor.onSelect, res.adaptor.orientation || 'auto' ); if (res.adaptor.onOpen) res.adaptor.onOpen(); var finish = function (event) { if (event && (Object(EventEmitter["d" /* hitElement */])(EmojiPickerTooltip.$tooltip.$leftBtn, event) || Object(EventEmitter["d" /* hitElement */])(EmojiPickerTooltip.$tooltip.$rightBtn, event)) || (event && event.target && event.target.classList.contains('absol-tooltip-content'))) return; document.body.removeEventListener('click', finish, false); EmojiPickerTooltip.close(res.currentSession); if (adaptor.onClose) adaptor.onClose(); res.currentSession = undefined; if (EmojiPickerTooltip._scrollOutListener === EmojiPickerTooltip) EmojiPickerTooltip._scrollOutListener = undefined; }; EmojiPickerTooltip._scrollOutListener = finish; setTimeout(function () { document.body.addEventListener('click', finish, false); }, 10); } res.remove = function () { trigger.removeEventListener('click', clickHandler, false); trigger.classList.remove('as-emoji-picker-tooltip-trigger'); }; trigger.addEventListener('click', clickHandler, false); trigger.classList.add('as-emoji-picker-tooltip-trigger'); return res; }; /* harmony default export */ var js_EmojiPickerTooltip = (EmojiPickerTooltip); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/emojicounter.css var emojicounter = __webpack_require__(208); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/emojiuserlisttooltip.css var emojiuserlisttooltip = __webpack_require__(210); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiUserListTooltip.js var EmojiUserListTooltip_ = ACore["c" /* default */]._; var EmojiUserListTooltip_$ = ACore["c" /* default */].$; /*** * @augments ToolTip * @augments AElement * @constructor */ function EmojiUserListTooltip() { this._text = null; this._users = []; this.$sprite = EmojiUserListTooltip_({ tag: 'sprite', class: 'as-emoji-user-list-tooltip-emoji', props: { fps: 30, loop: true }, on: { ready: function () { this.frames = { type: 'grid', col: 1, row: this.texture.naturalHeight / this.texture.naturalWidth }; } } }); this.appendChild(this.$sprite); this.text = '(heart)' this.user = []; } EmojiUserListTooltip.tag = 'EmojiUserListTooltip'.toLowerCase(); EmojiUserListTooltip.render = function () { return EmojiUserListTooltip_({ tag: 'tooltip', class: 'as-emoji-user-list-tooltip' }, true); }; EmojiUserListTooltip.prototype._updateUsers = function () { var thisT = this; this.$content.clearChild(); this._users.forEach(function (user) { var elt = EmojiUserListTooltip_({ class: 'as-emoji-user-list-tooltip-user', child: [ { class: 'as-emoji-user-list-tooltip-avatar', style: { backgroundImage: 'url(' + user.avatar + ')' } }, { class: 'as-emoji-user-list-tooltip-name', child: { text: user.name } } ] }); if (user.onclick) { elt.addClass('as-clickable'); elt.on('click', user.onclick.bind(user)); } thisT.$content.addChild(elt); }) }; EmojiUserListTooltip.prototype.playEmoji = function () { this.$sprite.afterReady().then(this.$sprite.play.bind(this.$sprite)); }; EmojiUserListTooltip.prototype.stopEmoji = function () { this.$sprite.stop(); }; EmojiUserListTooltip.property = {}; EmojiUserListTooltip.property.users = { set: function (users) { this._users = users || []; this._updateUsers(); }, get: function () { return this._users; } }; EmojiUserListTooltip.property.text = { set: function (value) { if (value === this._text) return; var icon = js_EmojiPickerTooltip.emojiDict[value]; if (!value) return; var url = js_EmojiPicker.assetRoot + '/anim/x60/' + icon.imageFileName; this._text = value; this.$sprite.src = url; }, get: function () { return this._text; } }; ACore["c" /* default */].install(EmojiUserListTooltip); /* harmony default export */ var js_EmojiUserListTooltip = (EmojiUserListTooltip); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiCounter.js var EmojiCounter_$ = ACore["c" /* default */].$; var EmojiCounter_ = ACore["c" /* default */]._; var EmojiCounter_isMobile = BrowserDetector["a" /* default */].isMobile; /*** * @extends AElement * @constructor */ function EmojiCounter() { /*** * * @type {Sprite} */ this.$sprite = EmojiCounter_$('sprite', this); this.$num = EmojiCounter_$('.as-emoji-counter-num', this); this.$numText = this.$num.firstChild; this._text = '(heart)'; this.text = this._text; this._count = 0; this.count = 0; this._checkInterval = -1; if (EmojiCounter_isMobile) { this.attr('tabindex', '1'); this.on('focus', this.eventHandler.mouseEnter); } else { this.on('mouseenter', this.eventHandler.mouseEnter); } this._tooltipSession = null; this._tooltipFinishTimeout = -1; } EmojiCounter.tag = 'EmojiCounter'.toLowerCase(); EmojiCounter.render = function () { var icon = js_EmojiPickerTooltip.emojiDict['(heart)']; var url = js_EmojiPicker.assetRoot + '/anim/x40/' + icon.imageFileName; return EmojiCounter_({ class: 'as-emoji-counter', child: [ { tag: 'sprite', class: 'as-emoji-counter-sprite', props: { src: url, loop: true, fps: 30, debug: true }, on: { ready: function () { this.frames = { type: 'grid', col: 1, row: this.texture.naturalHeight / this.texture.naturalWidth }; this.frameIndex = 0; } } }, { tag: 'span', class: 'as-emoji-counter-num', child: { text: '0' } } ] } ); }; EmojiCounter.property = {}; EmojiCounter.property.text = { set: function (value) { var icon = js_EmojiPickerTooltip.emojiDict[value]; if (!icon) return; if (this._text === value) return; this.$sprite.src = js_EmojiPicker.assetRoot + '/anim/x40/' + icon.imageFileName; this._text = value; }, get: function () { return this._text; } }; EmojiCounter.property.count = { set: function (value) { this.$numText.data = value + ''; if (value === 1 && this._count != 1) { this.$numText.remove(); } else if (value != 1 && this._count == 1) { this.$num.addChild(this.$numText); } if (value == 0) this.addClass('as-zero'); else this.removeClass('as-zero'); this._count = value; }, get: function () { return this._count; } } ACore["c" /* default */].install(EmojiCounter); EmojiCounter.eventHandler = {}; EmojiCounter.eventHandler.loop = function () { if (!this.isDescendantOf(document.body)) this.eventHandler.finishHover(); if (this.getBoundingClientRect().width === 0) this.eventHandler.finishHover(); }; EmojiCounter.eventHandler.mouseEnter = function () { if (this._tooltipFinishTimeout > 0) { clearTimeout(this._tooltipFinishTimeout); } if (this._checkInterval > 0) return; this.$sprite.play(); this._checkInterval = setInterval(this.eventHandler.loop, 1000); this.on('mouseleave', this.eventHandler.finishHover); if (this.users && this.users.length > 0) { EmojiCounter_prepare(); EmojiCounter._session = Math.random() * 10000000000 >> 0; this._tooltipSession = EmojiCounter._session; EmojiCounter.$element = this; EmojiCounter.$holder.addTo(this); EmojiCounter.$tooltip.text = this.text; EmojiCounter.$tooltip.users = this.users; EmojiCounter.$tooltip.playEmoji(); updateTooltipPosition(EmojiCounter); } }; EmojiCounter.eventHandler.finishHover = function () { if (this._tooltipFinishTimeout > 0) { clearTimeout(this._tooltipFinishTimeout); } this._tooltipFinishTimeout = setTimeout(function () { this._tooltipFinishTimeout = -1; this.$sprite.stop(); this.off('mouseleave', this.eventHandler.finishHover); if (this._checkInterval > 0) { clearInterval(this._checkInterval); this._checkInterval = -1; } if (this._tooltipSession === EmojiCounter._session) { EmojiCounter._session = Math.random() * 10000000000 >> 0; EmojiCounter.$holder.remove(); EmojiCounter.$tooltip.stopEmoji(); } }.bind(this), 500); }; function EmojiCounter_prepare() { if (EmojiCounter.$holder) return; EmojiCounter.$holder = EmojiCounter_('.absol-tooltip-root-holder'); EmojiCounter.$tooltip = EmojiCounter_('EmojiUserListTooltip.top'.toLowerCase()).addTo(EmojiCounter.$holder); EmojiCounter._scrollOutListener = undefined; EmojiCounter._orientation = 'top'; EmojiCounter._session = Math.random() * 10000000000 >> 0; js_EmojiPickerTooltip._listener = undefined; EmojiCounter.$element = null; EmojiCounter.$tooltip.$arrow.updateSize = EmojiCounter.updatePosition; } EmojiCounter.updatePosition = function () { if (!EmojiCounter.$element) return; var outBound = Math_Rectangle.fromClientRect(Object(Dom["f" /* traceOutBoundingClientRect */])(EmojiCounter.$element)); var eBound = Math_Rectangle.fromClientRect(EmojiCounter.$element.getBoundingClientRect()); if (!outBound.isCollapse(eBound, 0)) { js_EmojiPickerTooltip._scrollOutListener && EmojiCounter._scrollOutListener(); } updateTooltipPosition(EmojiCounter); }; EmojiCounter.updatePosition = EmojiCounter.updatePosition.bind(EmojiCounter); /* harmony default export */ var js_EmojiCounter = (EmojiCounter); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiCounterList.js var EmojiCounterList_ = ACore["c" /* default */]._; var EmojiCounterList_$ = ACore["c" /* default */].$; /*** * @extends AElement * @constructor */ function EmojiCounterList() { this._counters = []; this.counters = []; } EmojiCounterList.tag = 'EmojiCounterList'.toLowerCase(); EmojiCounterList.render = function () { return EmojiCounterList_({ class: 'as-emoji-counter-list' }); }; EmojiCounterList.iconOrdering = js_EmojiPickerTooltip.defaultIcons.reduce(function (ac, cr, idx) { ac[cr] = idx + 1; return ac; }, {}); EmojiCounterList.prototype._updateCounters = function () { var newCounters = this._counters; var newCounterNameArr = Object.keys(newCounters); newCounterNameArr.sort(function (a, b) { return (EmojiCounterList.iconOrdering[a] || 1000) - (EmojiCounterList.iconOrdering[b] || 1000); }) var counterElements = Array.prototype.filter.call(this.childNodes, function (e) { return e.containsClass && e.containsClass('as-emoji-counter'); }); var newCounterElements = []; var elt, name; var oe, on; while (counterElements.length > 0 || newCounterNameArr.length > 0) { elt = counterElements[0]; name = newCounterNameArr[0]; if (elt && name) { if (elt.text === name) { newCounterElements.push(elt); counterElements.shift(); newCounterNameArr.shift(); } else { oe = EmojiCounterList.iconOrdering[elt.text]; on = EmojiCounterList.iconOrdering[name]; if (oe < on) { newCounterElements.push(elt); counterElements.shift(); } else { newCounterElements.push(name); newCounterNameArr.shift(); } } } else if (elt) { newCounterElements.push(elt); counterElements.shift(); } else { newCounterElements.push(name); newCounterNameArr.shift(); } } var cElt, prevElt; while (newCounterElements.length > 0) { cElt = newCounterElements.pop(); if (typeof cElt === "string") { cElt = EmojiCounterList_({ tag: 'emojicounter', props: { text: cElt, users: newCounters[cElt].users || [], count: newCounters[cElt].count } }); if (!prevElt) { this.addChild(cElt); } else { this.addChildBefore(cElt, prevElt); } prevElt = cElt; } else { if (newCounters[cElt.text]) { cElt.count = newCounters[cElt.text].count; cElt.users = newCounters[cElt.text].users || []; prevElt = cElt; } else { cElt.remove(); } } } }; EmojiCounterList.property = {}; EmojiCounterList.property.counters = { set: function (counters) { this._counters = Object.keys(counters || {}).reduce(function (ac, key) { var counter = counters[key]; if (typeof counter === "object") { if (counter.count > 0 && js_EmojiPickerTooltip.emojiDict[key]) { ac[key] = counter; } } return ac; }, {}) this._updateCounters(); }, get: function () { return this._counters; } } ACore["c" /* default */].install(EmojiCounterList); /* harmony default export */ var js_EmojiCounterList = (EmojiCounterList); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/rotatedtext.css var rotatedtext = __webpack_require__(212); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/RotatedText.js /*** * @extends AElement * @constructor */ function RotatedText() { this.$attachHook = Object(ACore["a" /* $ */])('attachhook', this); this.$attachHook.requestUpdateSize = this.eventHandler.positionChange; this.$attachHook.on('attached', this.eventHandler.attached); this.$anchor = Object(ACore["a" /* $ */])('.as-rotated-text-anchor', this); this.$content = Object(ACore["a" /* $ */])('.as-rotated-text-content', this); this.$contentText = this.$content.firstChild; this.$trackElts = []; this._angle = 0; this.angle = 0; this.text = ''; this._trackInterval = -1; } RotatedText.tag = 'RotatedText'; RotatedText.render = function () { return Object(ACore["b" /* _ */])({ tag: 'span', class: 'as-rotated-text', child: [ 'attachhook', { class:'as-rotated-text-anchor', child: { tag: 'span', class: 'as-rotated-text-content', child: { text: '' } } } ] }); }; RotatedText.prototype._trackPosition = function () { this._cancelTrackPosition(); var parent = this.parentElement; while (parent) { parent.addEventListener('scroll', this.eventHandler.positionChange); this.$trackElts.push(parent); parent = parent.parentElement; } document.addEventListener('scroll', this.eventHandler.positionChange); this.$trackElts.push(document); this._trackInterval = setInterval(this.eventHandler.intervalCheck, 3000); }; RotatedText.prototype._cancelTrackPosition = function () { if (this._trackInterval >= 0) { clearInterval(this._trackInterval); this._trackInterval = -1; } while (this.$trackElts.length > 0) { this.$trackElts.pop().removeEventListener('scroll', this.eventHandler.positionChange); } }; RotatedText.property = {}; RotatedText.property.text = { get: function () { return this.$contentText.data; }, set: function (value) { value = value || ''; value = value + ''; this.$contentText.data = value; } }; RotatedText.property.angle = { set: function (value) { value = value || 0; var matched; if (typeof value === 'number') { this._angle = value; this.$content.addStyle('transform', 'rotate(' + value + 'deg)'); } else if (value.match) { matched = value.match(/([0-9.+\-e]+)deg/); if (matched) { value = parseFloat(matched[1]); if (isFinite(value)) { this._angle = value; this.$content.addStyle('transform', 'rotate(' + this._angle + 'deg)'); } return; } matched = value.match(/([0-9.+\-e]+)rad/); if (matched) { value = parseFloat(matched[1]); if (isFinite(value)) { this._angle = value * 180 / Math.PI; this.$content.addStyle('transform', 'rotate(' + this._angle + 'deg)'); } } } }, get: function () { return this._angle; } }; RotatedText.eventHandler = {}; RotatedText.eventHandler.attached = function () { ResizeSystem["a" /* default */].add(this); this.eventHandler.positionChange(); this.$content.addStyle('transform-origin',Math.round(0.3 * this.$content.getFontSize()) + 'px 50%'); this._trackPosition(); }; RotatedText.eventHandler.detached = function () { this._cancelTrackPosition(); }; RotatedText.eventHandler.intervalCheck = function () { if (!this.isDescendantOf(document.body)) { this.eventHandler.detached(); } } RotatedText.eventHandler.positionChange = function () { var bound = this.getBoundingClientRect(); this.$anchor.addStyle({ top: Math.round(bound.top) + 'px', left: Math.round(bound.left) + 'px' }); }; ACore["c" /* default */].install(RotatedText); /* harmony default export */ var js_RotatedText = (RotatedText); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/verticaltreediagram.css var verticaltreediagram = __webpack_require__(214); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/VerticalTreeDiagram.js function VerticalTreeDiagramNode() { this.$childCtn = Object(ACore["a" /* $ */])('.as-vertical-tree-diagram-child-ctn', this); this.$name = Object(ACore["a" /* $ */])('.as-vertical-tree-diagram-node-name', this); OOP["a" /* default */].drillProperty(this, this.$name.firstChild, 'name', 'data'); this.name = "UndefinedNodeName"; } VerticalTreeDiagramNode.tag = 'VerticalTreeDiagramNode'.toLowerCase(); VerticalTreeDiagramNode.render = function () { return Object(ACore["b" /* _ */])({ class: 'as-vertical-tree-diagram-node', child: [ { class: 'as-vertical-tree-diagram-node-name-ctn', child: { class: 'as-vertical-tree-diagram-node-name', child: { text: "" } } }, { class: 'as-vertical-tree-diagram-child-ctn' } ] }); }; ['addChild', 'removeChild', 'clearChild', 'addChildBefore', 'addChildAfter', 'findChildBefore', 'findChildAfter' ].forEach(function (name) { VerticalTreeDiagramNode.prototype[name] = function () { this.$childCtn[name].apply(this.$childCtn, arguments); if (this.$childCtn.childNodes.length > 0) { this.addClass('as-has-child'); if (this.$childCtn.childNodes.length === 1) { this.addClass('as-has-1-child'); } else { this.removeClass('as-has-1-child'); } } else { this.removeClass('as-has-child'); this.removeClass('as-has-1-child'); } }; }); function VerticalTreeDiagram(data) { this.data = data || {}; } VerticalTreeDiagram.tag = 'VerticalTreeDiagram'.toLowerCase(); VerticalTreeDiagram.render = function () { return Object(ACore["b" /* _ */])(VerticalTreeDiagramNode.tag, true); } VerticalTreeDiagram.property = {}; VerticalTreeDiagram.property.data = { set: function (data) { data = data || {}; this._data = data; function makeNode(nodeData) { return Object(ACore["b" /* _ */])({ tag: VerticalTreeDiagramNode.tag, props: { name: nodeData.name }, child: (nodeData.child && nodeData.child.length > 0 && nodeData.child.map(makeNode)) || [] }); } this.name = data.name + ''; this.clearChild(); if (data.child) this.addChild(data.child.map(makeNode)); }, get: function () { return this._data; } }; ACore["c" /* default */].install(VerticalTreeDiagramNode); ACore["c" /* default */].install(VerticalTreeDiagram); /* harmony default export */ var js_VerticalTreeDiagram = (VerticalTreeDiagram); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tokenfield.css var tokenfield = __webpack_require__(216); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TokenField.js /*** * @extends AElement * @constructor */ function TokenField() { this.on('click', this.eventHandler.click); this.$input = Object(ACore["a" /* $ */])('input', this) .on('keydown', this.eventHandler.inputKeyDown); this.$attachhook = Object(ACore["a" /* $ */])('attachhook', this) .on('attached', function () { ResizeSystem["a" /* default */].add(this); this.requestUpdateSize(); }); this.$attachhook.requestUpdateSize = this.updateSize.bind(this); this.separator = ' '; this.placeHolder = ''; } TokenField.tag = 'TokenField'.toLowerCase(); TokenField.render = function () { return Object(ACore["b" /* _ */])({ class: 'as-token-field', extendEvent: ['change'], child: [ { tag: 'input', class: 'as-token-field-input-text', attr: { type: 'text', tabindex: '1' } }, 'attachhook' ] }); }; TokenField.prototype._makeItem = function (text) { var itemElt = Object(ACore["b" /* _ */])({ tag: js_SelectBoxItem.tag, class: 'as-token-field-item', attr: { tabindex: 1 }, props: { data: { text: text, value: text } } }); itemElt.on({ keydown: this.eventHandler.itemKeyDown.bind(this, itemElt), close: this.eventHandler.itemClose.bind(this, itemElt) }); return itemElt; }; TokenField.prototype._appendItem = function (itemElt) { this.addChildBefore(itemElt, this.$input); }; TokenField.prototype._updateInputWidth = function () { var lastItem = this.findChildBefore(this.$input); if (lastItem) { var lastItemBound = lastItem.getBoundingClientRect(); var bound = this.getBoundingClientRect(); var aRight = bound.right - 4 - lastItemBound.right; if (aRight > 60) { this.$input.addStyle('width', aRight + 'px'); } else { this.$input.addStyle('width', '100%'); } } else { this.$input.addStyle('width', '100%'); } }; TokenField.prototype._isSeparatorKey = function (key) { if (this.separator === ' ') return key === ' '; if (this.separator === '\n') return key === 'Enter'; if (this.separator === '\t') return key === 'Tab'; return key === this.separator; }; TokenField.prototype.updateSize = function () { this._updateInputWidth(); }; TokenField.prototype._notifyChange = function (data) { this.emit('change', Object.assign({ type: 'change', target: this }, data), this); }; TokenField.eventHandler = {}; TokenField.property = {}; TokenField.property.separator = { set: function (value) { if (typeof value !== "string") value = ' '; this._separator = value; }, get: function () { return this._separator; } }; TokenField.property.placeHolder = { set: function (value) { this.$input.attr('placeholder', value || ''); }, get: function () { return this.$input.attr('placeholder'); } }; TokenField.property.items = { set: function (items) { items = items || []; while (this.firstChild && this.firstChild && this.firstChild.containsClass('as-token-field-item')) { this.firstChild.remove(); } for (var i = 0; i < items.length; ++i) { this._appendItem(this._makeItem(items[i])); } }, get: function () { return Array.prototype.slice.call(this.childNodes).filter(function (elt) { return elt.containsClass && elt.containsClass('as-token-field-item'); }).map(function (elt) { return elt.data.value; }); } } TokenField.eventHandler.inputKeyDown = function (event) { if (this._isSeparatorKey(event.key)) { var text = this.$input.value; if (text.length > 0) { this.$input.value = ''; var newItem = this._makeItem(text); this._appendItem(newItem); this.updateSize(); this._notifyChange({ action: 'add', item: text, itemElt: newItem }); } event.preventDefault(); } else if (event.key.startsWith('Arrow') || event.key === 'Backspace') { if (this.$input.selectionStart === 0 && this.$input.selectionEnd === 0) { console.log(event.key) if (event.key === 'ArrowLeft' || event.key === 'Backspace') { event.preventDefault(); var prevChild = this.findChildBefore(this.$input); if (prevChild) prevChild.focus(); } else if (event.key === 'ArrowUp') { var item, itemBound; var inputBound = this.$input.getBoundingClientRect(); var anchorPos = new Math_Vec2(inputBound.left + 5, inputBound.top + inputBound.height / 2); var minDis = Infinity; var dis; var aboveItem; for (var i = 0; i < this.childNodes.length; ++i) { item = this.childNodes[i]; if (item.containsClass && item.containsClass('as-token-field-item')) { itemBound = item.getBoundingClientRect(); if (itemBound.bottom < inputBound.top) { dis = new Math_Vec2(itemBound.left + itemBound.width / 2, itemBound.top + itemBound.height / 2) .sub(anchorPos) .abs(); if (dis < minDis) { minDis = dis aboveItem = item; } } } } if (aboveItem) { aboveItem.focus(); event.preventDefault(); } } } } }; TokenField.eventHandler.itemKeyDown = function (itemElt, event) { var nextElt; if (event.key === 'Delete' || event.key === 'Backspace') { if (event.key === 'Delete') { nextElt = this.findChildAfter(itemElt); } else { nextElt = this.findChildBefore(itemElt) || this.$input; } itemElt.remove(); this._notifyChange({ item: itemElt.data.value, action: 'remove', itemElt: itemElt }); if (nextElt === this.$input) { this.$input.focus(); setCaretPosition(this.$input, 0); } else { nextElt.focus(); } } else if (event.key === 'ArrowLeft') { nextElt = this.findChildBefore(itemElt); if (nextElt) nextElt.focus(); } else if (event.key === 'ArrowRight') { nextElt = this.findChildAfter(itemElt); if (nextElt === this.$input) { this.$input.focus(); setCaretPosition(this.$input, 0); } else { nextElt.focus(); } } else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') { var currentItemBound = itemElt.getBoundingClientRect(); var center = new Math_Vec2(currentItemBound.left + currentItemBound.width / 2, currentItemBound.top + currentItemBound.height / 2); var childElt, itemBound, dis; var minDis = Infinity; var i; if (event.key === 'ArrowUp') { for (i = 0; i < this.childNodes.length; ++i) { childElt = this.childNodes[i]; if (childElt.containsClass && childElt.containsClass('as-token-field-item') || childElt === this.$input) { itemBound = childElt.getBoundingClientRect(); if (itemBound.bottom < currentItemBound.top) { dis = new Math_Vec2(itemBound.left + itemBound.width / 2, itemBound.top + itemBound.height / 2) .sub(center) .abs(); if (dis < minDis) { minDis = dis nextElt = childElt; } } } } } else { for (i = 0; i < this.childNodes.length; ++i) { childElt = this.childNodes[i]; if (childElt.containsClass && childElt.containsClass('as-token-field-item') || childElt === this.$input) { itemBound = childElt.getBoundingClientRect(); if (itemBound.top > currentItemBound.bottom) { dis = new Math_Vec2(itemBound.left + itemBound.width / 2, itemBound.top + itemBound.height / 2) .sub(center) .abs(); if (dis < minDis) { minDis = dis nextElt = childElt; } } } } } if (nextElt) { nextElt.focus(); } } }; TokenField.eventHandler.itemFocus = function (itemElt) { itemElt.addClass('as-focus'); }; TokenField.eventHandler.itemBlur = function (itemElt) { itemElt.removeClass('as-focus'); }; TokenField.eventHandler.itemClose = function (itemElt) { itemElt.remove(); this._notifyChange({ action: 'remove', item: itemElt.data.value, itemElt: itemElt }); this.$input.focus(); }; TokenField.eventHandler.click = function (event) { if (event.target === this) this.$input.focus(); }; ACore["c" /* default */].install(TokenField); /* harmony default export */ var js_TokenField = (TokenField); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/dom/install.js var publicCreators = [ js_AutoCompleteInput, js_BoardTable, js_Board, js_BScroller, js_ButtonArray, js_ButtonRange, js_CalendarInput, OldCalendarInput, CheckBoxInput, js_CheckBox, CheckboxButton, js_ChromeCalendar, js_CircleSectionLabel, js_CountdownClock, js_DropZone, js_EmojiPickerTooltip, Scrollbar, VScrollbar, HScrollbar, VScroller, HScroller, ContextMenu, HMenu, VMenuItem, VMenu, Dropright, VMenuLine, Dropdown, HMenuItem, VMenu, VRootMenu, MenuButton, js_DateInput2, js_Hanger, js_DraggableHStack, js_DraggableVStack, js_DropPanel, js_DropPanelStack, js_EditableText, js_EmojiPicker, js_EmojiCounter, js_EmojiCounterList, js_Sprite, ExpNode, js_ExpTree, ExpGroup, js_FlexiconButton, js_FlexiconInput, js_Follower, js_FollowerToggler, js_Frame, js_FrameView, js_TabFrame, js_TabView, js_SinglePage, js_HexaSectionLabel, js_VRuler, js_HRuler, js_IconSprite, js_LinearColorBar, js_MediaInput, js_MessageInput, MessageQuote, js_Modal, js_NumberInput, js_NumberSpanInput, OnsScreenWindow, js_OnScreenWidget, js_PageIndicator, js_PageSelector, js_PreInput, js_ProgressBar, js_QuickListButton, js_QuickMenu, js_QuickPath, js_Radio, js_RadioButton, js_RadioInput, js_RibbonSplitButton, js_RibbonButton, js_RotatedText, js_SelectList, js_RemoteSvg, js_ResizeBox, Searcher, js_SelectListBox, js_SelectTreeBox, SelectMenu2, js_SelectBox, js_MultiSelectMenu, js_SelectBoxItem, js_SelectTable, js_SelectTable2, js_SelectTreeMenu, js_SpanInput, Snackbar, js_StaticTabbar, js_Switch, js_TableScroller, js_TableVScroller, js_TextArea2, js_TextClipboard, js_TimeInput, js_TimeSelectInput, js_TimePicker, Tooltip, js_Toast, js_TreeList, js_TreeListItem, js_TokenField, WidthHeightSizer, js_TrackBar, js_TrackBarInput, SpinnerIco, VerticalTreeDiagramNode, js_VerticalTreeDiagram ]; /*** * * @param {Dom} core */ function install(core) { core.install(publicCreators); core.install('checkboxbutton', CheckBoxInput); core.install('selectbox', js_MultiSelectMenu); } /* harmony default export */ var dom_install = (install); // CONCATENATED MODULE: ./node_modules/absol-acomp/AComp.js var AComp = { core: ACore["c" /* default */], $: ACore["c" /* default */].$, _: ACore["c" /* default */]._, creator: ACore["c" /* default */].creator, buildDom: ACore["c" /* default */].buildDom, runDebugTask: DebugTask["a" /* default */].start.bind(DebugTask["a" /* default */]), Draggable: js_Draggable, EmojiChars: js_EmojiChars, EmojiAnims: js_EmojiAnims, install: dom_install }; window.runDebugTask = DebugTask["a" /* default */].start.bind(DebugTask["a" /* default */]); /* harmony default export */ var absol_acomp_AComp = (AComp); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/materializeIconTrigger.js function materializeIconTrigger() { Dom["b" /* default */].documentReady.then(function () { var linkMaterial = ACore["c" /* default */].$('link', document.head, function (elt) { if (elt.href && elt.href.indexOf('Material+Icons')) return true; }); if (!linkMaterial) return; var checkInv = -1; function onLoaded() { if (checkInv > 0) { clearTimeout(checkInv); checkInv = -1; } linkMaterial.off('loaded', onLoaded) .off('load', onLoaded) .off('error', onLoaded); i.remove(); requestAnimationFrame(function () { ResizeSystem["a" /* default */].update(); if (document.cookie.indexOf('absol_debug') >= 0) { console.info('Resize after MaterialIcons load'); } }); } linkMaterial.on('loaded', onLoaded) .on('load', onLoaded) .on('error', onLoaded); var i = ACore["c" /* default */]._({ tag: 'i', class:"material-icons", style: { fontSize: '14px', position: 'fix', top: '0', left: '0', zIndex: '-1000', visibility: 'hidden' }, child: { text: 'account_balance_wallet' } }).addTo(document.body); var iBox = i.getBoundingClientRect(); if (iBox.width < iBox.height * 3) { onLoaded(); return; } var intervalCount = 50; checkInv = setInterval(function () { intervalCount--; if (intervalCount < 0) { onLoaded(); } iBox = i.getBoundingClientRect(); if (iBox.width < iBox.height * 3) { onLoaded(); } }, 200); }); } // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TextMeasureData.js /* harmony default export */ var TextMeasureData = ({ chars: (" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~©´ÀÁÂÊÍÒÔÙÚ" + "ÝàáâãèéêìíðòóôõùúýĂăĐđĩũƠơƯưɐɔɕɗəɛɡɣɲʃʒʝʰˆː˘̪̀̃͡τφχẠạẢảẤấẦầẩẫẬậắằẳặẸẹẻẽếỀềểễỆệỉịọỏỐốồổỗỘộỚớỜờởỡỢợụỦủỨứỪừửữựỳỷỹ" + "–‘“”…♥♪【】🤣️�").split(''), fonts: { "Times New Roman": { "width": { "0": "̪̀̃͡️", "5": " ,.", "10": "0123456789#$*_bdghknopquvxyðòóôõùúýđũɗɡɣɲọỏốồổỗộụủỳỷỹ–♪", "20": "…【】", "6.66015625": "!()-I[]`fr´Íʃˆ˘‘", "8.1640625": "\"", "16.66015625": "%", "15.556640625": "&m", "3.603515625": "'", "11.279296875": "+<=>", "5.556640625": "/:;\\ijltìíĩʝːỉị", "8.876953125": "?acezàáâãèéêăɐɔɕəʒχạảấầẩẫậắằẳặẹẻẽếềểễệ“”", "18.41796875": "@", "14.443359375": "ADGHKNOQUVXYwÀÁÂÒÔÙÚÝĂĐƠẠẢẤẦẬỐỘỚỜỢỦ", "13.33984375": "BCR", "12.216796875": "ELTZÊẸỀỆ", "11.123046875": "FPS", "7.783203125": "Js", "17.783203125": "M", "18.876953125": "W", "9.384765625": "^", "9.599609375": "{}", "4.00390625": "|", "10.8203125": "~", "15.1953125": "©", "10.576171875": "ơớờởỡợ", "15.517578125": "ƯỨỪ", "10.83984375": "ưứừửữự", "8.3984375": "ɛ", "6.42578125": "ʰ", "8.037109375": "τ", "11.54296875": "φ", "11.875": "♥", "19.423828125": "🤣�" }, "spacing": { "-0.7421875": "11W:W;", "-2.216796875": "ATP,P.VaVeVyWAY-YAYqYu", "-2.578125": "AVV,V.VAVoY,Y.", "-1.6015625": "AWF,F.RVTAWaWeWo", "-1.8359375": "AYAwAyLTLVPAT-V-W,W.Y:Y;Yp", "-1.484375": "AvFALWT,T.V:V;‘‘", "-2.001953125": "LYYaYeYoYv", "-1.103515625": "LyRWRYT;W-Yir.", "-1.201171875": "RTViVrVuWy", "-0.80078125": "RyWiWrWur,", "-0.99609375": "T:", "-0.361328125": "TOffrg", "-1.396484375": "TaTcTeToTsTwTy", "-0.703125": "TiTrTu", "-0.400390625": "r-", "-1.298828125": "v,v.w,w.y,y.", "-0.439453125": "χφ", "-4.443359375": "【̀【̃【̪【͡】̀】̃】̪】͡", "-11.38671875": "🤣" }, "fontBoundingBoxAscent": 18, "fontBoundingBoxDescent": 4 }, "Arial": { "width": { "0": "̪̀̃͡️", "10": "Jcksvxyzýɔɕỳỷỹ♪", "20": "…【】", "11.123046875": "0123456789#$?L_abdeghnopquàáâãèéêðòóôõùúăđũɐɗəɡɲạảấầẩẫậắằẳặẹẻẽếềểễệọỏốồổỗộụủ–", "5.556640625": " !,./:;I[\\]ftÍìíĩː", "7.099609375": "\"", "17.783203125": "%", "13.33984375": "&ABEKPSVXYÀÁÂÊÝĂẠẢẤẦẬẸỀỆ", "3.818359375": "'", "6.66015625": "()-`r´ˆ˘“”", "7.783203125": "*", "11.6796875": "+<=>~", "20.302734375": "@", "14.443359375": "CDHNRUwÙÚĐỦ", "12.216796875": "FTZ", "15.556640625": "GOQÒÔỐỘ", "16.66015625": "Mm", "18.876953125": "W", "9.384765625": "^", "4.443359375": "ijlʃỉị‘", "6.6796875": "{}", "5.1953125": "|", "14.736328125": "©", "17.1484375": "ƠỚỜỢ", "13.115234375": "ơớờởỡợ", "17.080078125": "ƯỨỪ", "13.388671875": "ưứừửữự", "9.169921875": "ɛ", "10.01953125": "ɣ", "10.8984375": "ʒ", "7.94921875": "ʝ", "7.666015625": "ʰ", "7.900390625": "τ", "12.96875": "φ", "10.498046875": "χ", "11.875": "♥", "19.423828125": "🤣�" }, "spacing": { "-1.484375": "11ATAVAYLTLVLWLYPATAVAVaYAYaYpv,v.y,y.", "-0.7421875": "AWLyTiTrTuV:V;VrVuVyWAWaYi", "-0.361328125": "AvAwAyRTRVRWRYTOViW-W:W;WeWoWrWuff‘‘", "-2.216796875": "F,F.T,T.T:T;TaTcTeToTs", "-1.103515625": "FAT-TwTyV-VeVoW,W.Y:YuYvr,r.w,w.", "-2.578125": "P,P.Y,Y.", "-1.8359375": "V,V.Y-YeYoYq", "-0.17578125": "Wy", "-1.298828125": "Y;", "1.11328125": "ìĩ", "-0.283203125": "τφφτ", "-0.537109375": "φχχφ", "-5": "【̀【̃【̪【͡】̀】̃】̪】͡", "-11.38671875": "🤣" }, "fontBoundingBoxAscent": 18, "fontBoundingBoxDescent": 4 } } }); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/TextMeasure.js function TextMeasure() { this.$canvas = null; this.data = {}; this._loadComputedData(); // if the font is not in data, create it and copy console log to TextMeasureData.js // this._makeFontSize('Times New Roman'); // this._makeFontSize('Arial'); } TextMeasure.prototype._loadComputedData = function () { var thisO = this; this.data.chars = TextMeasureData.chars; this.data.fonts = Object.keys(TextMeasureData.fonts).reduce(function (ac, fontName) { var font = TextMeasureData.fonts[fontName]; ac[fontName] = { width: thisO._valueDict2KeyDict(font.width), spacing: thisO._valueDict2KeyDict(font.spacing, 2), fontBoundingBoxAscent: font.fontBoundingBoxAscent, fontBoundingBoxDescent: font.fontBoundingBoxDescent } return ac; }, {}); }; TextMeasure.prototype._valueDict2KeyDict = function (dict, keyLength) { var thisO = this; return Object.keys(dict).reduce(function (ac, valueText) { var keys = thisO._splitKey(dict[valueText], keyLength || 1); var value = parseFloat(valueText); keys.reduce(function (ac1, key) { ac1[key] = value; return ac1; }, ac); return ac; }, {}); }; TextMeasure.prototype._keyDic2ValueDict = function (keyDict) { return Object.keys(keyDict).reduce(function (ac, cr) { var vKey = keyDict[cr].toString(); ac[vKey] = ac[vKey] || ''; ac[vKey] += cr; return ac; }, {}); } /*** * * @param s * @param l * @returns {string[]} * @private */ TextMeasure.prototype._splitKey = function (s, l) { var cArr = s.split(''); if (!l || l < 2) return cArr; return cArr.reduce(function (ac, cr) { ac.last += cr; if (ac.last.length >= l) { ac.arr.push(ac.last); ac.last = ''; } return ac; }, { arr: [], last: '' }).arr; }; TextMeasure.prototype._array2keyDict = function (arrKey, arrVal) { return arrKey.reduce(function (ac, cr, i) { ac[cr] = arrVal[i] return ac; }, {}) }; TextMeasure.prototype._makeFontSize = function (fontName) { var thisO = this; var charList = TextMeasureData.chars; var fontMt = this.measureTextByCanvas("demo-abgH", '20px ' + fontName); var cWidthArr = charList.map(function (c) { return thisO.measureTextByCanvas(c).width; }); var width = this._array2keyDict(charList, cWidthArr); var spacing = charList.reduce(function (ac, c1, i1) { return charList.reduce(function (ac1, c2, i2) { var d = thisO.measureTextByCanvas(c1 + c2).width - cWidthArr[i1] - cWidthArr[i2]; if (d !== 0) ac1[c1 + c2] = d; return ac1; }, ac); }, {}); TextMeasureData[fontName] = { width: thisO._keyDic2ValueDict(width), spacing: thisO._keyDic2ValueDict(spacing), fontBoundingBoxAscent: fontMt.fontBoundingBoxAscent, fontBoundingBoxDescent: fontMt.fontBoundingBoxDescent }; this.data.fonts[fontName] = { width: width, spacing: spacing, fontBoundingBoxAscent: fontMt.fontBoundingBoxAscent, fontBoundingBoxDescent: fontMt.fontBoundingBoxDescent }; // copy from console and paste it to TextMeasureData // console.log(fontName+":"+JSON.stringify(this.data.fonts[fontName])); }; /*** * * @param {string} text * @param {string} fontName * @param {number} fontSize * @return {number} */ TextMeasure.prototype.measureWidth = function (text, fontName, fontSize) { var width = this.data.fonts[fontName].width; var spacing = this.data.fonts[fontName].spacing; var res = 0; var prevC = text[0]; var c = text[0]; res += width[c] || 0; for (var i = 1; i < text.length; ++i) { c = text[i]; res += spacing[prevC + c] || 0; res += width[c] || 0; prevC = c; } return res * fontSize / 20; } /*** * * @param {string}text * @param {string=} font - without font-size, default is 20px * @returns {TextMetrics} */ TextMeasure.prototype.measureTextByCanvas = function (text, font) { if (!document || !document.createElement) throw new Error("Not support renderer!"); var canvas = this.$canvas || (this.$canvas = document.createElement("canvas")); var context = canvas.getContext("2d"); if (font) context.font = font; var metrics = context.measureText(text); return metrics; }; /* harmony default export */ var js_TextMeasure = (new TextMeasure()); // CONCATENATED MODULE: ./node_modules/absol-acomp/js/BContextCapture.js /*** * simple way, to replace old ContextCapture version ***/ function BContextCapture() { EventEmitter["b" /* default */].call(this); this.sync = Promise.resolve(); this.$root = null; this._pointerSession = 0; this.ev_contextMenu = this.ev_contextMenu.bind(this); } OOP["a" /* default */].mixClass(BContextCapture, EventEmitter["b" /* default */]); BContextCapture.prototype.attachTo = function (elt) { if (this.$root) this.$root.removeEventListener('contextmenu', this.ev_contextMenu, false); this.$root = elt; if (this.$root) this.$root.addEventListener('contextmenu', this.ev_contextMenu, false); } BContextCapture.prototype.auto = function () { Dom["b" /* default */].documentReady.then(function () { this.attachTo(document.body); }.bind(this)); }; BContextCapture.prototype.showContextMenu = ContextMenu.prototype.showContextMenu; BContextCapture.prototype._fireContextMenuEvent = ContextMenu.prototype._fireContextMenuEvent; BContextCapture.prototype._checkNeedHandle = ContextMenu.prototype._checkNeedHandle; /*** * * @param {PointerEvent} event */ BContextCapture.prototype.ev_contextMenu = function (event) { this._pointerSession++; this._posCurrent = new Math_Vec2(event.clientX, event.clientY); this.$target = event.target; if (this._checkNeedHandle(event.target)) { if (this._fireContextMenuEvent()) { event.preventDefault(); } } }; var instance = new BContextCapture(); if (!BrowserDetector["a" /* default */].isMobile || !BrowserDetector["a" /* default */].isSafari) { ContextMenu.auto = instance.auto.bind(instance);//override old version } /* harmony default export */ var js_BContextCapture = (instance); // CONCATENATED MODULE: ./node_modules/absol-acomp/dev.js absol.VariantColors = VariantColors; absol.parseMessage = parseMessage; absol.vScrollIntoView = vScrollIntoView; //for export to window absol.Tooltip = Tooltip; absol.QuickMenu = js_QuickMenu; absol.AComp = absol_acomp_AComp; absol.Radio = js_Radio; absol.EmojiChars = js_EmojiChars; absol.EmojiAnims = js_EmojiAnims; absol.ChromeCalendar = js_ChromeCalendar; dom_install(absol.coreDom); //old module absol.coreDom.install('searchcrosstextinput', Searcher); Object.assign(absol.string, stringMatching_namespaceObject); absol.MessageInput = js_MessageInput absol.EmojiPicker = js_EmojiPicker; if (BrowserDetector["a" /* default */].isMobile && BrowserDetector["a" /* default */].isSafari) { absol.ContextCaptor = ContextMenu; } else { absol.ContextCaptor = js_BContextCapture; } window.AComp = absol.AComp; absol.TextMeasure = js_TextMeasure; setTimeout(function () { var mdiLink = absol.$('link', document.head, function (e) { if (e.href && e.href.toLowerCase().indexOf('materialdesignicons') >= 0) return true; }); if (!mdiLink) { mdiLink = absol._({ tag: 'link', attr: { rel: 'stylesheet', href: '//cdnjs.cloudflare.com/ajax/libs/MaterialDesign-Webfont/5.3.45/css/materialdesignicons.css' } }).addTo(document.head); } }, 100); materializeIconTrigger(); absol.MaterialDesignIconsNameMap = MaterialDesignIconsNameMap; absol.openFileDialog = openFileDialog; // EXTERNAL MODULE: ./css/base.css var base = __webpack_require__(218); // EXTERNAL MODULE: ./css/layouteditor.css var layouteditor = __webpack_require__(220); // CONCATENATED MODULE: ./node_modules/absol-colorpicker/components/CPCore.js var CPCore = new Dom["b" /* default */]({ creator: Object.assign({}, absol_acomp_AComp.creator) }); /* harmony default export */ var components_CPCore = (CPCore); // EXTERNAL MODULE: ./node_modules/absol-colorpicker/style/colorpicker.css var colorpicker = __webpack_require__(222); // EXTERNAL MODULE: ./node_modules/absol-colorpicker/style/colorpickerbutton.css var colorpickerbutton = __webpack_require__(224); // EXTERNAL MODULE: ./node_modules/absol-colorpicker/style/swatchestable.css var swatchestable = __webpack_require__(226); // EXTERNAL MODULE: ./node_modules/absol-colorpicker/style/spectrumcolor.css var spectrumcolor = __webpack_require__(228); // EXTERNAL MODULE: ./node_modules/absol-colorpicker/style/solidcolorpicker.css var solidcolorpicker = __webpack_require__(230); // CONCATENATED MODULE: ./node_modules/absol-colorpicker/style/index.js // CONCATENATED MODULE: ./node_modules/absol-colorpicker/components/ColorPicker.js var ColorPicker_ = components_CPCore._; var ColorPicker_$ = components_CPCore.$; function ColorPicker() { var res = ColorPicker_(['<div class="absol-color-picker">', ' <div class="absol-color-picker-color">', ' <div class="absol-color-picker-sat">', ' <div class="absol-color-picker-val">', ' <div class="absol-color-dragger"></div>', ' </div>', ' </div>', ' </div>', ' <div class="absol-color-picker-hue-range">', ' <div class="absol-color-picker-hue">', ' <div class="absol-color-dragger"></div>', ' </div>', ' </div>', ' <div class="absol-color-picker-alpha-range">', ' <div class="absol-color-picker-alpha">', ' <div class="absol-color-dragger"></div>', ' </div>', ' </div>', ' <div class="absol-color-picker-input">', ` <div class="absol-color-picker-text-container"> <span class="f-mode">hsba(</span> <span class="absol-editabe-text num0">0</span><span class="separator0">deg, </span> <span class="absol-editabe-text num1">0</span><span class="separator1">%, </span> <span class="absol-editabe-text num2">0</span><span class="separator2">%, </span> <span class="absol-editabe-text num3">0</span><span>)</span> </div>`, ' </div>', ' <button class="absol-color-picker-mode">HSB</button>', '</div>'].join('') ); res.$fMode = ColorPicker_$('.f-mode', res); res.$sep0 = ColorPicker_$('.separator0', res); res.$sep1 = ColorPicker_$('.separator1', res); res.$sep2 = ColorPicker_$('.separator2', res); res.$num0 = ColorPicker_('editabletext.num0'); res.$num1 = ColorPicker_('editabletext.num1'); res.$num2 = ColorPicker_('editabletext.num2'); res.$num3 = ColorPicker_('editabletext.num3'); ColorPicker.defaultNumberInputHandle(res.$num0); ColorPicker.defaultNumberInputHandle(res.$num1); ColorPicker.defaultNumberInputHandle(res.$num2); ColorPicker.defaultNumberInputHandle(res.$num3); res._num0LimitOption = ColorPicker.numberInputHandleLimit(res.$num0, 0, 360); res._num1LimitOption = ColorPicker.numberInputHandleLimit(res.$num1, 0, 100, 0); res._num2LimitOption = ColorPicker.numberInputHandleLimit(res.$num2, 0, 100, 0); res._num3LimitOption = ColorPicker.numberInputHandleLimit(res.$num3, 0, 1, 3); ColorPicker_$(".absol-editabe-text.num0", res).selfReplace(res.$num0); ColorPicker_$(".absol-editabe-text.num1", res).selfReplace(res.$num1); ColorPicker_$(".absol-editabe-text.num2", res).selfReplace(res.$num2); ColorPicker_$(".absol-editabe-text.num3", res).selfReplace(res.$num3); res.$num0.text = '0'; res.$num1.text = '0'; res.$num2.text = '0'; res.$num3.text = '0'; res.switchMode = { RGBA: 'HSBA', HSBA: 'HSLA', HSLA: 'RGBA', RGB: 'HSB', HSB: 'HSL', HSL: 'RGB' }; res.toggleAlpha = { RGBA: 'RGB', HSBA: 'HSB', HSLA: 'HSL', RGB: 'RGBA', HSB: 'HSBA', HSL: 'HSLA' }; res.defineEvent(['change']); res._saturation = 0; res._brightness = 0; res._hue = 0; res._alpha = 1; res.$color = ColorPicker_$('.absol-color-picker-color', res); res.$colorVal = ColorPicker_$('.absol-color-picker-val', res); res.$draggerVal = ColorPicker_$('.absol-color-dragger', res.$colorVal); res.eventHandler = OOP["a" /* default */].bindFunctions(res, ColorPicker.eventHandler); res.$colorVal.on('pointerdown', res.eventHandler.colorPointerDown, true); res.$hue = ColorPicker_$('.absol-color-picker-hue', res); res.$draggerHue = ColorPicker_$('.absol-color-dragger', res.$hue); res.$hue.on('pointerdown', res.eventHandler.huePointerDown); res.$alpha = ColorPicker_$('.absol-color-picker-alpha', res); res.$alpha.on('pointerdown', res.eventHandler.alphaPointerDown); res.$draggerAlpha = ColorPicker_$('.absol-color-dragger', res.$alpha); res.$textContainer = ColorPicker_$('.absol-color-picker-text-container', res); res.$mode = ColorPicker_$('.absol-color-picker-mode', res); res.$mode.on('click', res.eventHandler.modeClick); //todo res.$num0.on('blur', res.eventHandler.inputBlur); res.$num1.on('blur', res.eventHandler.inputBlur); res.$num2.on('blur', res.eventHandler.inputBlur); res.$num3.on('blur', res.eventHandler.inputBlur); return res; } ColorPicker.defaultNumberInputHandle = function (element) { element .on('keydown', function (event) { if (!event.key.match(/^[0-9\.]$/) && event.key.length == 1) { event.preventDefault(); } if (event.key == 'Tab') { event.preventDefault(); } if (event.key == 'Enter') { this.edit(false); } if (event.key == '.' && this.text.indexOf('.') >= 0) { event.preventDefault(); } if (this.text.length >= 6 && event.key.length == 1) event.preventDefault(); }) .on('click', function (event) { element.edit(true, true); }) .on('keydown', function (event) { if (event.key == 'Tab') { var parent = element.parentNode; var firstFriend; var found = false; var nextFriend = ColorPicker_$('editabletext', parent, function (elt) { if (elt.getComputedStyleValue('display') == "none") return; if (!firstFriend) { firstFriend = elt; } if (elt == element) { found = true; } else if (found) { return true; } }); nextFriend = nextFriend || firstFriend; if (nextFriend) { nextFriend.edit(true, true); } } }); }; ColorPicker.numberInputHandleLimit = function (element, min, max, fixed) { var option = { min: min, max: max, fixed: fixed || 0, enable: true } element.on('blur', function (event) { if (!option.enable) return; var number = parseFloat(element.text); if (isNaN(number)) { number = min; } if (option.fixed == 0) { number = Math.round(number); } number = Math.max(min, Math.min(option.max, number)); element.text = number.toFixed(option.fixed) + ''; }); return option; }; ColorPicker.property = {}; ColorPicker.property.withAlpha = { set: function (value) { if (value) { this.addClass('with-alpha'); } else { this.removeClass('with-alpha'); } }, get: function () { return this.containClass('with-alpha'); } }; ColorPicker.property.saturation = { set: function (value) { value = value || 0; value = Math.max(0, Math.min(1, value)); this._saturation = value; this.$draggerVal.addStyle('left', value * 100 + '%'); this._update(); }, get: function () { return this._saturation; } }; ColorPicker.property.brightness = { set: function (value) { value = value || 0; value = Math.max(0, Math.min(1, value)); this._brightness = value; this.$draggerVal.addStyle('bottom', value * 100 + '%'); this._update(); }, get: function () { return this._brightness; } }; ColorPicker.property.mode = { set: function (value) { value = (value + '').toUpperCase(); if (value.indexOf('A') >= 0) { this.addClass('with-alpha'); } else { this.removeClass('with-alpha'); this.alpha = 1; } if (value.match(/^H/)) { this._num0LimitOption.max = 360; this._num1LimitOption.max = 100; this._num2LimitOption.max = 100; } else if (value.match(/^RGB/)) { this._num0LimitOption.max = 255; this._num1LimitOption.max = 255; this._num2LimitOption.max = 255; } if (value.match(/^(HSB|HSL|RGB|RGBA|HSBA|HSLA)$/)) { this.$mode.innerHTML = value; this._updateColorText(); } }, get: function () { return this.$mode.innerHTML; } }; ColorPicker.property.hue = { set: function (value) { value = value || 0; value = Math.max(0, Math.min(1, value)); this._hue = value; this.$draggerHue.addStyle('top', value * 100 + '%'); this._update(); }, get: function () { return this._hue; } }; ColorPicker.property.alpha = { set: function (value) { value = value || 0; value = Math.max(0, Math.min(1, value)); this._alpha = value; this.$draggerAlpha.addStyle('top', (1 - value) * 100 + '%'); this._update(); }, get: function () { return this._alpha; } }; ColorPicker.property.value = { set: function (value) { if (typeof value == 'string') { value = Color_Color.parse(value) } if (!value || !value.toHSBA) throw new Error('Invalid color type'); var hsba = value.toHSBA(); this.hue = hsba[0]; this.saturation = hsba[1]; this.brightness = hsba[2]; this.alpha = hsba[3]; }, get: function () { return Color_Color.fromHSBA(this.hue, this.saturation, this.brightness, this.alpha); } } ColorPicker.property.RGBA = { set: function (value) { var hsba = Color_Color.rgbaToHSBA(value || [0, 0, 0, 0]); this.hue = hsba[0]; this.saturation = hsba[1]; this.brightness = hsba[2]; this.alpha = hsba[3]; }, get: function () { var rgba = Color_Color.hsbaToRGBA([this.hue, this.saturation, this.brightness, this.alpha]); return rgba; }, } ColorPicker.prototype._getSVOfEvent = function (event) { var valBound = this.$colorVal.getBoundingClientRect(); var dx = event.clientX - valBound.left; var dy = event.clientY - valBound.top; var s = Math.max(0, Math.min(1, dx / valBound.width)); var b = Math.max(0, Math.min(1, 1 - dy / valBound.height)); return { s, b }; }; ColorPicker.prototype._getHOfEvent = function (event) { var hueBound = this.$hue.getBoundingClientRect(); var h = event.clientY - hueBound.top; h = h / hueBound.height; h = Math.max(0, Math.min(1, h)); return h; }; ColorPicker.prototype._getAOfEvent = function (event) { var alphaBound = this.$alpha.getBoundingClientRect(); var a = alphaBound.bottom - event.clientY; a = a / alphaBound.height; a = Math.max(0, Math.min(1, a)); return a; }; ColorPicker.prototype._getTextColorCode = function () { var h = this.hue + 0.5; if (h > 1) h -= 1; var s = this.saturation > 0.5 ? 0 : 1; var b = this.brightness > 0.5 ? 0 : 1; var rgba = Color_Color.hsbaToRGBA([h, s, b, 1]); return 'rgba(' + rgba.map((x, i) => i < 3 ? x * 255 : x).join(',') + ')'; }; ColorPicker.prototype.init = function (props) { this.RGBA = [1, 1, 1, 1]; this.super(props); }; ColorPicker.prototype._update = function () { //update vs var rgba = Color_Color.hsbaToRGBA([this.hue, 1, 1, 1]); this.$color.addStyle('background', 'rgba(' + rgba.map((x, i) => i < 3 ? x * 255 : x).join(',') + ')'); rgba = Color_Color.hsbaToRGBA([this.hue, this.saturation, this.brightness, this.alpha]); this.$textContainer.addStyle('background', 'rgba(' + rgba.map((x, i) => i < 3 ? x * 255 : x).join(',') + ')'); this.$textContainer.addStyle('color', this._getTextColorCode()); this._updateColorText(); }; ColorPicker.prototype._updateColorText = function () { var hsba = [this.hue, this.saturation, this.brightness, this.alpha]; var mode = this.mode; this.$fMode.innerHTML = mode.toLocaleLowerCase() + '('; if (mode.match(/^H/)) { this.$sep0.innerHTML = 'deg, '; this.$sep1.innerHTML = '%, '; if (mode.match(/A$/)) { this.$sep2.innerHTML = "%, "; this.$num3.removeStyle('display'); } else { this.$sep2.innerHTML = "%"; this.$num3.addStyle('display', 'none'); } } else { this.$sep0.innerHTML = ', '; this.$sep1.innerHTML = ', '; if (mode.match(/A$/)) { this.$sep2.innerHTML = ", "; this.$num3.removeStyle('display'); } else { this.$num3.addStyle('display', 'none'); this.$sep2.innerHTML = ""; } } if (mode.match(/HSB/)) { this.$num0.text = '' + Math.round(hsba[0] * 360); this.$num1.text = '' + Math.round(hsba[1] * 100); this.$num2.text = '' + Math.round(hsba[2] * 100); this.$num3.text = hsba[3].toFixed(3); } else { var cBytes = Color_Color['hsbaTo' + (mode.match(/A$/) ? mode : mode + 'A')](hsba); if (mode.match(/^H/)) { this.$num0.text = '' + Math.round(cBytes[0] * 360); this.$num1.text = '' + Math.round(cBytes[1] * 100); this.$num2.text = '' + Math.round(cBytes[2] * 100); this.$num3.text = hsba[3].toFixed(3); } else { this.$num0.text = '' + Math.round(cBytes[0] * 255); this.$num1.text = '' + Math.round(cBytes[1] * 255); this.$num2.text = '' + Math.round(cBytes[2] * 255); this.$num3.text = hsba[3].toFixed(3); } // var tempMode = mode.indexOf('A') < 0 ? mode + 'A' : mode; // var tempColor = Color['hsbaTo' + tempMode](hsba); // this.$textContainer.value = Color[mode.toLocaleLowerCase() + 'ToText'](tempColor); } }; ColorPicker.eventHandler = {}; ColorPicker.eventHandler.colorPointerDown = function (event) { var newSV = this._getSVOfEvent(event); this.saturation = newSV.s; this.brightness = newSV.b; absol.$(document.body) .on('pointermove', this.eventHandler.colorPointerMove) .on('pointerup', this.eventHandler.colorPointerFinish) .on('pointerleave', this.eventHandler.colorPointerFinish); this.emit('change', { target: this, originEvent: event, value: this.value }); }; ColorPicker.eventHandler.colorPointerFinish = function (event) { absol.$(document.body) .off('pointermove', this.eventHandler.colorPointerMove) .off('pointerup', this.eventHandler.colorPointerFinish) .off('pointerleave', this.eventHandler.colorPointerFinish); }; ColorPicker.eventHandler.colorPointerMove = function (event) { var newSV = this._getSVOfEvent(event); this.saturation = newSV.s; this.brightness = newSV.b; event.preventDefault(); this.emit('change', { target: this, originEvent: event, value: this.value }); }; ColorPicker.eventHandler.huePointerDown = function (event) { var newH = this._getHOfEvent(event); this.hue = newH; event.preventDefault(); absol.$(document.body) .on('pointermove', this.eventHandler.huePointerMove) .on('pointerup', this.eventHandler.huePointerFinish) .on('pointerleave', this.eventHandler.huePointerFinish); this.emit('change', { target: this, originEvent: event, value: this.value }); }; ColorPicker.eventHandler.huePointerFinish = function (event) { absol.$(document.body) .off('pointermove', this.eventHandler.huePointerMove) .off('pointerup', this.eventHandler.huePointerFinish) .off('pointerleave', this.eventHandler.huePointerFinish); event.preventDefault(); }; ColorPicker.eventHandler.huePointerMove = function (event) { var newH = this._getHOfEvent(event); this.hue = newH; event.preventDefault(); this.emit('change', { target: this, originEvent: event, value: this.value }); }; ColorPicker.eventHandler.alphaPointerDown = function (event) { var newA = this._getAOfEvent(event); this.alpha = newA; absol.$(document.body) .on('pointermove', this.eventHandler.alphaPointerMove) .on('pointerup', this.eventHandler.alphaPointerFinish) .on('pointerleave', this.eventHandler.alphaPointerFinish); event.preventDefault(); this.emit('change', { target: this, originEvent: event, value: this.value }); }; ColorPicker.eventHandler.alphaPointerFinish = function (event) { absol.$(document.body) .off('pointermove', this.eventHandler.alphaPointerMove) .off('pointerup', this.eventHandler.alphaPointerFinish) .off('pointerleave', this.eventHandler.alphaPointerFinish); event.preventDefault(); }; ColorPicker.eventHandler.alphaPointerMove = function (event) { var newA = this._getAOfEvent(event); this.alpha = newA; event.preventDefault(); this.emit('change', { target: this, originEvent: event, value: this.value }); }; ColorPicker.eventHandler.modeClick = function (event) { this.mode = this.switchMode[this.mode]; event.preventDefault(); }; ColorPicker.eventHandler.inputBlur = function () { var mode = this.mode; var alpha = 1; if (mode.match(/A$/)) { alpha = parseFloat(this.$num3.text); } var bytes; if (mode.match(/^H/)) { bytes = [parseFloat(this.$num0.text) / 360, parseFloat(this.$num1.text) / 100, parseFloat(this.$num2.text) / 100, alpha]; } else if (mode.match(/^RGB/)) { bytes = [parseFloat(this.$num0.text) / 255, parseFloat(this.$num1.text) / 255, parseFloat(this.$num2.text) / 255, alpha]; } var hsba = mode.match(/^HSB/) ? bytes : Color_Color[(mode.match(/A$/) ? mode.toLocaleLowerCase() : mode.toLocaleLowerCase() + 'a') + 'ToHSBA'](bytes); this.hue = hsba[0]; this.saturation = hsba[1]; this.brightness = hsba[2]; this.alpha = hsba[3]; }; components_CPCore.creator.colorpicker = ColorPicker; /* harmony default export */ var components_ColorPicker = (ColorPicker); // CONCATENATED MODULE: ./node_modules/absol-colorpicker/components/ColorPickerButton.js var ColorPickerButton_ = components_CPCore._; var ColorPickerButton_$ = components_CPCore.$; var ColorPickerButton_isMobile = BrowserDetector["a" /* default */].isMobile; function ColorPickerButton() { this.$innerValue = ColorPickerButton_$('.as-color-picker-button-inner-value', this); this.prepare(); this.on('click', this.eventHandler.click); } ColorPickerButton.tag = 'ColorPickerButton'.toLowerCase(); ColorPickerButton.prototype._isClickMenu = function (event) { var c = event.target; while (c) { if (c.classList.contains('as-solid-color-picker-swatches-name-menu')) return true; c = c.parentElement; } return false; }; ColorPickerButton.eventHandler = {}; ColorPickerButton.eventHandler.click = function (event) { this.togglePicker(); }; ColorPickerButton.eventHandler.changeColor = function (event) { this.$innerValue.addStyle("background-color", event.value.toString()); this._value = event.value; this.emit('change', event, this); }; ColorPickerButton.eventHandler.clickBody = function (event) { if (EventEmitter["b" /* default */].hitElement(this, event) || EventEmitter["b" /* default */].hitElement(this.$ColorPicker, event) || this._isClickMenu(event)) return; this.closePicker(); }; ColorPickerButton.eventHandler.submit = function (event) { this.closePicker(); }; ColorPickerButton.prototype.togglePicker = function () { if (this.containsClass('as-color-picker-selecting')) { this.closePicker(); } else { this.openPicker(); } }; ColorPickerButton.prototype.openPicker = function () { if (ColorPickerButton.lastOpen) { ColorPickerButton.lastOpen.closePicker(); } ColorPickerButton.lastOpen = this; var thisBt = this; this.addClass('as-color-picker-selecting'); this.$ColorPicker.on('change', this.eventHandler.changeColor) .on('submit', this.eventHandler.submit); this.$ColorPicker.reloadSetting(); this.$follower.addStyle('visibility', 'hidden'); this.$follower.addTo(document.body); this.$follower.followTarget = this; ColorPickerButton_$(document.body).on('click', this.eventHandler.clickBody); this._lastValue = this.value; ColorPickerButton.$ColorPicker.value = this.value; setTimeout(function () { thisBt.$follower.removeStyle('visibility'); }, 1); }; ColorPickerButton.prototype.closePicker = function () { this.removeClass('as-color-picker-selecting'); if (ColorPickerButton.lastOpen == this) { ColorPickerButton.lastOpen == null; this.$follower.remove(); } this.$ColorPicker.off('change', this.eventHandler.changeColor) .off('submit', this.eventHandler.submit); ColorPickerButton_$(document.body).off('click', this.eventHandler.clickBody); if (this.value != this._lastValue) { this.emit('stopchange', { target: this, value: this.value }, this); } }; ColorPickerButton.prototype.prepare = function () { if (!ColorPickerButton.$ColorPicker) { if (ColorPickerButton_isMobile) { ColorPickerButton.$follower = ColorPickerButton_('modal'); } else { ColorPickerButton.$follower = ColorPickerButton_('follower.as-color-picker-button-follower'); } ColorPickerButton.$ColorPicker = ColorPickerButton_({ tag: 'solidcolorpicker' }).addTo(ColorPickerButton.$follower); ColorPickerButton.lastOpen = null; } this.$follower = ColorPickerButton.$follower; this.$ColorPicker = ColorPickerButton.$ColorPicker; }; ColorPickerButton.render = function () { return ColorPickerButton_({ tag: 'button', extendEvent: ['change', 'stopchange'], class: 'as-color-picker-button', child: [ { tag: "div", class: "as-color-picker-button-inner", child: '.as-color-picker-button-inner-value' } ] }); }; ColorPickerButton.property = {}; ColorPickerButton.property.value = { set: function (value) { this._value = value; if (this._value) { this.$innerValue.addStyle("background-color", value); } else { } }, get: function () { return this._value; } }; components_CPCore.install('colorpickerbutton', ColorPickerButton); /* harmony default export */ var components_ColorPickerButton = (ColorPickerButton); // CONCATENATED MODULE: ./node_modules/absol-colorpicker/index.js var absol_colorpicker_ColorPicker = { core: components_CPCore, _: components_CPCore._, $: components_CPCore.$, creator: components_CPCore.creator, Color:Color_Color }; /* harmony default export */ var absol_colorpicker = (absol_colorpicker_ColorPicker); // CONCATENATED MODULE: ./js/core/FCore.js var Fcore = new Dom["b" /* default */](); var FCore_ = Fcore._; var FCore_$ = Fcore.$; Fcore.install(absol_acomp_AComp.core); Fcore.install(absol_colorpicker.core); /* harmony default export */ var FCore = (Fcore); // CONCATENATED MODULE: ./js/core/FViewable.js function FViewable() { this.style = {}; } /** * @returns {Array<String>} */ FViewable.prototype.getAcceptsStyleNames = function () { return []; }; FViewable.prototype.render = function () { throw new Error('Not Implement'); }; /** * @param {String} name * @returns {} */ FViewable.prototype.getStyleDescriptor = function (name) { var functionName = 'getStyle' + name.substr(0, 1).toUpperCase() + name.substr(1) + 'Descriptor'; return this[functionName] && this[functionName].apply(this, Array.prototype.slice.call(arguments, 1)); }; /** * @returns {} */ FViewable.prototype.getStyleDescriptors = function () { var result = {}; var names = this.getAcceptsStyleNames(); var key; for (var i = 0; i < names.length; ++i) { key = names[i]; result[key] = this.getStyleDescriptor(key); } return result; }; /** * @param {String} name * @param {*} value * @returns {*} value which is set */ FViewable.prototype.setStyle = function (name, value) { var functionName = 'setStyle' + name.substr(0, 1).toUpperCase() + name.substr(1); var res = value; if (this[functionName]) { res = this[functionName].apply(this, Array.prototype.slice.call(arguments, 1)); } if (res === undefined) { delete this.style[name]; } else { this.style[name] = res; } return res; }; /** * @param {String} name * @returns {Object} value which is set */ FViewable.prototype.getStyle = function (name) { var functionName = 'getStyle' + name.substr(0, 1).toUpperCase() + name.substr(1); if (this[functionName]) { return this[functionName].apply(this, Array.prototype.slice.call(arguments, 1)); } return this.style[name]; }; FViewable.prototype.getStyles = function () { var self = this; var styleKeys = Object.keys(this.style).filter(function (key) { return self.style[key] !== undefined || self.style[key] !== null; }); if (styleKeys.length > 0) { return styleKeys.reduce(function (ac, key) { ac[key] = self.style[key]; return ac; }, {}); } return null; }; FViewable.prototype.setStyles = function (styles) { var self = this; Object.keys(styles).forEach(function (key) { self.setStyle(key, styles[key]); }); }; /* harmony default export */ var core_FViewable = (FViewable); // EXTERNAL MODULE: ./css/relativeanchor.css var relativeanchor = __webpack_require__(232); // EXTERNAL MODULE: ./css/alignbox.css var alignbox = __webpack_require__(234); // CONCATENATED MODULE: ./js/anchors/RelativeAnchor.js var RelativeAnchor_ = FCore._; var RelativeAnchor_$ = FCore.$; /** * AnchorBox only has on child node * @extends FViewable * @constructor */ function RelativeAnchor() { core_FViewable.call(this); this.childNode = null; //for quick binding render this.viewBinding = {}; this.onCreate(); this.view = this.render(); this.onCreated(); } OOP["a" /* default */].mixClass(RelativeAnchor, core_FViewable); RelativeAnchor.prototype.onCreate = function () { /* NOOP */ }; RelativeAnchor.prototype.onCreated = function () { for (var key in this.viewBinding) { this[key] = RelativeAnchor_$(this.viewBinding[key], this.view); } }; RelativeAnchor.prototype.VALIGN_VALUE = ['top', 'bottom', 'center', 'fixed']; RelativeAnchor.prototype.HALIGN_VALUE = ['left', 'right', 'center', 'fixed']; RelativeAnchor.prototype.HALIGN_CLASS_NAMES = { left: 'as-halign-left', right: 'as-halign-right', center: 'as-halign-center', fixed: 'as-halign-fixed' }; RelativeAnchor.prototype.VALIGN_CLASS_NAMES = { top: 'as-valign-top', bottom: 'as-valign-bottom', center: 'as-valign-center', fixed: 'as-valign-fixed' }; RelativeAnchor.prototype.getAcceptsStyleNames = function () { return ['hAlign', 'vAlign', 'left', 'right', 'top', 'bottom']; }; RelativeAnchor.prototype.getStyleHAlignDescriptor = function () { return { type: 'enum', values: ['left', 'right', 'center', 'fixed'], disabled: false, sign: 'RelativeAnchor_HAlign' }; }; RelativeAnchor.prototype.getStyleVAlignDescriptor = function () { return { type: 'enum', values: ['top', 'bottom', 'center', 'fixed'], disabled: false, sign: 'RelativeAnchor_VAlign' }; }; RelativeAnchor.prototype.getStyleLeftDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, disabled: this.childNode.style.hAlign == 'center' || this.childNode.style.hAlign == 'right', livePreview: true, dependency: ['hAlign', 'right', 'width'] }; }; RelativeAnchor.prototype.getStyleRightDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, disabled: this.childNode.style.hAlign == 'center' || this.childNode.style.hAlign == 'left', livePreview: true, dependency: ['hAlign', 'left', 'width'] }; }; RelativeAnchor.prototype.getStyleTopDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, disabled: this.childNode.style.vAlign == 'center' || this.childNode.style.vAlign == 'bottom', livePreview: true, dependency: ['vAlign', 'bottom', 'height'] }; }; RelativeAnchor.prototype.getStyleBottomDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, disabled: this.childNode.style.vAlign == 'center' || this.childNode.style.vAlign == 'top', livePreview: true, dependency: ['vAlign', 'top', 'height'] }; }; RelativeAnchor.prototype.setStyleHAlign = function (value) { if (this.style.hAlign == value) return value; if (!this.HALIGN_VALUE.includes(value)) value = this.HALIGN_VALUE[0]; this.view.removeClass(this.HALIGN_CLASS_NAMES[this.style.hAlign]); this.childNode.style.hAlign = value; this.style.hAlign = value; //really sync this.view.addClass(this.HALIGN_CLASS_NAMES[this.childNode.style.hAlign]); this.updateHAlignStyle(); return value; }; RelativeAnchor.prototype.setStyleVAlign = function (value) { if (this.style.vAlign == value) return value; if (!this.VALIGN_VALUE.includes(value)) value = this.VALIGN_VALUE[0]; this.view.removeClass(this.VALIGN_CLASS_NAMES[this.childNode.style.vAlign]); if (this.style.vAlign == 'center') { this.view.clearChild(); this.viewBinding.$containter = '.' + this.TOP_CLASS_NAME; this.$containter = this.view; if (this.childNode) { this.$containter.addChild(this.childNode.view); } } this.childNode.style.vAlign = value; this.style.vAlign = value; this.view.addClass(this.VALIGN_CLASS_NAMES[this.childNode.style.vAlign]); if (this.childNode.style.vAlign == 'center') { this.view.clearChild(); this.view.addChild(RelativeAnchor_({ "class": 'as-align-box', child: '.as-align-box-cell' })); this.viewBinding.$containter = '.as-align-box-cell'; this.$containter = RelativeAnchor_$(this.viewBinding.$containter, this.view); if (this.childNode) { this.$containter.addChild(this.childNode.view); } } this.updateVAlignStyle(); return value; }; RelativeAnchor.prototype.setStyleLeft = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.left == 'string' && this.childNode.style.left.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.left == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (this.childNode.style.hAlign != 'center' && this.childNode.style.hAlign != 'right') { this.view.addStyle('left', styleValue); } else this.view.removeStyle('left'); return value; }; RelativeAnchor.prototype.getStyleLeft = function (unit) { if (unit == 'px') { if (this.childNode.style.hAlign == 'center' || this.childNode.style.hAlign == 'right' || this.childNode.style.left === undefined || this.childNode.style.left === null || typeof this.childNode.style.left != 'number') { return this.childNode.view.getBoundingClientRect().left - this.childNode.parent.view.getBoundingClientRect().left; } else { return this.childNode.style.left; } } else if (unit == '%') { if (this.childNode.style.hAlign == 'center' || this.childNode.style.hAlign == 'right' || this.childNode.style.left === undefined || this.childNode.style.left === null || typeof this.childNode.style.left != 'string' || typeof this.childNode.style.left == 'string' && this.childNode.style.left.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeBound = this.childNode.view.getBoundingClientRect(); return (nodeBound.left - parentBound.left) * 100 / parentBound.width; } else { return parseFloat(this.childNode.style.left.replace('%', '')); } } else return this.childNode.style.left; }; RelativeAnchor.prototype.setStyleRight = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.right == 'string' && this.childNode.style.right.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.right == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (this.childNode.style.hAlign != 'center' && this.childNode.style.hAlign != 'left') { this.view.addStyle('right', styleValue); } else this.view.removeStyle('right'); return value; }; RelativeAnchor.prototype.getStyleRight = function (unit) { if (unit == 'px') { if (this.childNode.style.hAlign == 'center' || this.childNode.style.hAlign == 'left' || this.childNode.style.right === undefined || this.childNode.style.right === null || typeof this.childNode.style.right != 'number') { return this.childNode.parent.view.getBoundingClientRect().right - this.childNode.view.getBoundingClientRect().right; } else { return this.childNode.style.right; } } else if (unit == '%') { if (this.childNode.style.hAlign == 'center' || this.childNode.style.hAlign == 'left' || this.childNode.style.right === undefined || this.childNode.style.right === null || typeof this.childNode.style.right != 'string' || typeof this.childNode.style.right == 'string' && !this.childNode.style.right.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeBound = this.childNode.view.getBoundingClientRect(); return (parentBound.right - nodeBound.right) * 100 / parentBound.width; } else { return parseFloat(this.childNode.style.right.replace('%', '')); } } else return this.childNode.style.right; }; RelativeAnchor.prototype.setStyleTop = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.top == 'string' && this.childNode.style.top.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().height + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.top == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().height / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (this.childNode.style.vAlign != 'center' && this.childNode.style.vAlign != 'bottom') { this.view.addStyle('top', styleValue); } else this.view.removeStyle('top'); return value; }; RelativeAnchor.prototype.getStyleTop = function (unit) { if (unit == 'px') { if (this.childNode.style.vAlign == 'center' || this.childNode.style.vAlign == 'bottom' || this.childNode.style.top === undefined || this.childNode.style.top === null || typeof this.childNode.style.top != 'number') { return this.childNode.view.getBoundingClientRect().top - this.childNode.parent.view.getBoundingClientRect().top; } else { return this.childNode.style.top; } } else if (unit == '%') { if (this.childNode.style.vAlign == 'center' || this.childNode.style.vAlign == 'bottom' || this.childNode.style.top === undefined || this.childNode.style.top === null || typeof this.childNode.style.top != 'string' || typeof this.childNode.style.top == 'string' && this.childNode.style.top.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeBound = this.childNode.view.getBoundingClientRect(); return (nodeBound.top - parentBound.top) * 100 / parentBound.height; } else { return parseFloat(this.childNode.style.top.replace('%', '')); } } else return this.childNode.style.top; }; RelativeAnchor.prototype.setStyleBottom = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.bottom == 'string' && this.childNode.style.bottom.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().height + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.bottom == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().height / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (this.childNode.style.vAlign != 'center' && this.childNode.style.vAlign != 'top') { this.view.addStyle('bottom', styleValue); } else this.view.removeStyle('bottom'); return value; }; RelativeAnchor.prototype.getStyleBottom = function (unit) { if (unit == 'px') { if (this.childNode.style.vAlign == 'center' || this.childNode.style.vAlign == 'top' || this.childNode.style.bottom === undefined || this.childNode.style.bottom === null || typeof this.childNode.style.bottom != 'number') { return this.childNode.parent.view.getBoundingClientRect().bottom - this.childNode.view.getBoundingClientRect().bottom; } else { return this.childNode.style.bottom; } } else if (unit == '%') { if (this.childNode.style.vAlign == 'center' || this.childNode.style.vAlign == 'top' || this.childNode.style.bottom === undefined || this.childNode.style.bottom === null || typeof this.childNode.style.bottom != 'string' || typeof this.childNode.style.bottom == 'string' && this.childNode.style.bottom.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeBound = this.childNode.view.getBoundingClientRect(); return (parentBound.bottom - nodeBound.bottom) * 100 / parentBound.height; } else { return parseFloat(this.childNode.style.bottom.replace('%', '')); } } else return this.childNode.style.bottom; }; RelativeAnchor.prototype.getStyleWidth = function (unit) { if (unit == 'px') { if (this.childNode.style.hAlign == 'fixed' || this.childNode.style.hAlign == 'auto' || typeof this.childNode.style.width != 'number') return this.view.getBoundingClientRect().width;else { return this.childNode.style.width; } } else if (unit == '%') { if (this.childNode.style.hAlign == 'match_parent') return 100;else if (this.childNode.style.hAlign == 'fixed' || this.childNode.style.hAlign == 'auto' || typeof this.childNode.style.width == 'string' && !this.childNode.style.width.match(/\%$/) || typeof this.childNode.style.width != 'string') { return this.childNode.view.getBoundingClientRect().width * 100 / this.childNode.parent.view.getBoundingClientRect().width; } else { return parseFloat(this.childNode.style.width.replace('%', '')); } } else return this.childNode.style.width; }; RelativeAnchor.prototype.getStyleHeight = function (unit) { if (unit == 'px') { if (this.style.vAlign == 'fixed' || this.style.vAlign == 'auto' || typeof this.style.height != 'number') return this.view.getBoundingClientRect().height;else { return this.style.height; } } else if (unit == '%') { if (this.style.vAlign == 'match_parent') return 100;else if (this.style.vAlign == 'fixed' || this.style.vAlign == 'auto' || typeof this.style.height == 'string' && !this.style.height.match(/\%$/) || typeof this.style.height != 'string') { return this.childNode.view.getBoundingClientRect().height * 100 / this.childNode.parent.view.getBoundingClientRect().height; } else { return parseFloat(this.style.height.replace('%', '')); } } else return this.style.height; }; RelativeAnchor.prototype.setStyleWidth = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.width == 'string' && this.childNode.style.width.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.width == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (styleValue == 'match_parent') styleValue = '100%'; if (this.childNode.style.vAlign == 'center') { if (this.childNode.style.hAlign == 'center') { this.view.removeStyle('width'); this.childNode.view.addStyle('width', styleValue); } else if (this.childNode.style.hAlign == 'fixed') { this.view.removeStyle('width'); this.childNode.view.removeStyle('width'); } else { this.view.addStyle('width', styleValue); this.childNode.view.removeStyle('width'); } } else { if (this.childNode.style.hAlign == 'center') { this.childNode.view.addStyle('width', styleValue); this.view.removeStyle('width'); } else { this.childNode.view.removeStyle('width'); if (this.childNode.style.hAlign == 'fixed') { this.view.removeStyle('width', styleValue); } else { this.view.addStyle('width', styleValue); } } } return value; }; RelativeAnchor.prototype.setStyleHeight = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.height == 'string' && this.childNode.style.height.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().height + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.height == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().height / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (styleValue == 'match_parent') styleValue = '100%'; if (this.childNode.style.vAlign == 'center') { this.view.removeStyle('height'); this.childNode.view.addStyle('height', styleValue); // set height to cell will be fail } else { this.childNode.view.removeStyle('height'); if (this.childNode.style.vAlign == 'fixed') { this.view.removeStyle('height', styleValue); } else { this.view.addStyle('height', styleValue); } } return value; }; RelativeAnchor.prototype.TOP_CLASS_NAME = 'as-relative-anchor-box'; RelativeAnchor.prototype.render = function () { var layout = { "class": [this.TOP_CLASS_NAME] }; this.viewBinding.$containter = '.' + this.TOP_CLASS_NAME; return RelativeAnchor_(layout); }; /** * @param {BaseComponent} child */ RelativeAnchor.prototype.attachChild = function (child) { if (this.childNode) { this.childNode.view.remove(); this.childNode = null; this.childNode.anchor = null; } if (child.anchor) throw new Error("Detach anchorBox first"); //preinit this.childNode = child; this.childNode.style.left = this.childNode.style.left || 0; this.childNode.style.right = this.childNode.style.right || 0; this.childNode.style.top = this.childNode.style.top || 0; this.childNode.style.bottom = this.childNode.style.bottom || 0; this.childNode.style.vAlign = this.childNode.style.vAlign || 'top'; this.childNode.style.hAlign = this.childNode.style.hAlign || 'left'; child.anchor = this; this.$containter.addChild(child.view); this.setStyleVAlign(this.childNode.style.vAlign); this.setStyleHAlign(this.childNode.style.hAlign); child.onAnchorAttached(); }; RelativeAnchor.prototype.detachChild = function () { if (this.childNode) { this.childNode.view.remove(); this.childNode.onAnchorDetached(); this.childNode.anchor = null; this.childNode = null; } else throw new Error("Nothing to detach"); }; RelativeAnchor.prototype.HALIGN_ACCEPT_STYLE = { left: { left: true, right: false }, right: { left: false, right: true }, center: { left: false, right: false }, // component need set width fixed: { left: true, right: true } }; RelativeAnchor.prototype.VALIGN_ACCEPT_STYLE = { top: { top: true, bottom: false }, bottom: { top: false, bottom: true }, center: { top: false, bottom: false }, // component need set height fixed: { top: true, bottom: true } }; RelativeAnchor.prototype.updateVAlignStyle = function () { for (var key in this.VALIGN_ACCEPT_STYLE[this.childNode.style.vAlign]) { if (this.VALIGN_ACCEPT_STYLE[this.childNode.style.vAlign][key]) { this.view.addStyle(key, this.childNode.style[key] + 'px'); } else { this.view.removeStyle(key); } } this.setStyle('width', this.childNode.style.width); this.setStyle('height', this.childNode.style.height); }; RelativeAnchor.prototype.updateHAlignStyle = function () { for (var key in this.HALIGN_ACCEPT_STYLE[this.childNode.style.hAlign]) { if (this.HALIGN_ACCEPT_STYLE[this.childNode.style.hAlign][key]) { this.view.addStyle(key, this.childNode.style[key] + 'px'); } else { this.view.removeStyle(key); } } this.setStyle('width', this.childNode.style.width); this.setStyle('height', this.childNode.style.height); }; RelativeAnchor.prototype.getStyleWidthDescriptor = function () { return { type: 'measureSize', disabled: this.style.hAlign == 'fixed', dependency: ['hAlign', 'left', 'right'] }; }; RelativeAnchor.prototype.getStyleHeightDescriptor = function () { return { type: 'measureSize', disabled: this.style.vAlign == 'fixed', dependency: ['vAlign', 'top', 'bottom'] }; }; /* harmony default export */ var anchors_RelativeAnchor = (RelativeAnchor); // CONCATENATED MODULE: ./js/core/FNode.js function FNode() { /** * @type {FNode} */ this.parent = null; /** * @type {Array<FNode>} */ this.children = []; } FNode.prototype.onDetach = function () { /* NOOP */ }; FNode.prototype.onDetached = function () { /* NOOP */ }; FNode.prototype.onAttach = function () { /* NOOP */ }; FNode.prototype.onAttached = function () { /* NOOP */ }; /** * @param {FNode} child * @param {Number} index */ FNode.prototype.onRemoveChild = function (child, index) {}; /** * @param {FNode} child * @param {Number} index */ FNode.prototype.onAddChild = function (child, index) {}; /** * @return {FNode} */ FNode.prototype.remove = function () { if (this.parent) this.parent.removeChild(this); }; /** * @param {FNode} child * @return {FNode} */ FNode.prototype.addChild = function (child) { child.remove(); this.children.push(child); child.parent = this; //data ready this.onAttach(); this.onAddChild(child, -1); //negative index for appending child child.onAttached(); }; /** * @param {FNode} child * @return {Boolean} */ FNode.prototype.removeChild = function (child) { var childIndex = this.children.indexOf(child); if (childIndex < 0) return false; this.children.splice(childIndex, 1); child.onDetach(this); this.onRemoveChild(child, childIndex); child.parent = undefined; child.onDetached(this); return true; }; /** * @param {FNode} child * @param {FNode} at * @return {FNode} */ FNode.prototype.addChildBefore = function (child, at) { child.remove(); var atIndex = this.children.indexOf(at); if (atIndex >= 0) { this.children.splice(atIndex, 0, child); child.parent = this; this.onAttach(); this.onAddChild(child, atIndex); child.onAttached(); return true; } return false; }; /** * @param {FNode} child * @param {FNode} at * @return {FNode} */ FNode.prototype.addChildAfter = function (child, at) { child.remove(); var atIndex = this.children.indexOf(at); if (atIndex >= 0) { this.children.splice(atIndex + 1, 0, child); child.parent = this; this.onAttach(); this.onAddChild(child, atIndex + 1); child.onAttached(); return true; } return false; }; /** * @param {FNode} child * @return {FNode} */ FNode.prototype.findChildBefore = function (child) { var index = this.children.indexOf(child); if (index > 0) return this.children[index - 1]; }; /** * @param {FNode} child * @return {FNode} */ FNode.prototype.findChildAfter = function (child) { var index = this.children.indexOf(child); if (index < this.children.length - 1) return this.children[index + 1]; }; /** * @param {FNode} child * @return {Number} */ FNode.prototype.indexOfChild = function (child) { return this.children.indexOf(child); }; /* harmony default export */ var core_FNode = (FNode); // CONCATENATED MODULE: ./js/core/FModel.js function FModel() { this.attributes = {}; } /** * @returns {Array<String>} */ FModel.prototype.getAcceptsAttributeNames = function () { return []; }; /** * @param {String} name * @returns {} */ FModel.prototype.getAttributeDescriptor = function (name) { var functionName = 'getAttribute' + name.substr(0, 1).toUpperCase() + name.substr(1) + 'Descriptor'; return this[functionName] && this[functionName].apply(this, Array.prototype.slice.call(arguments, 1)); }; /** * @returns {} */ FModel.prototype.getAttributeDescriptors = function () { var result = {}; var names = this.getAcceptsAttributeNames(); var key; for (var i = 0; i < names.length; ++i) { key = names[i]; result[key] = this.getAttributeDescriptor(key); } return result; }; /** * @param {String} name * @param {} value * @returns {} value which is set */ FModel.prototype.setAttribute = function (name, value) { var functionName = 'setAttribute' + name.substr(0, 1).toUpperCase() + name.substr(1); var res = value; if (this[functionName]) { res = this[functionName].apply(this, Array.prototype.slice.call(arguments, 1)); } if (res === undefined) { delete this.attributes[name]; } else { this.attributes[name] = res; } return res; }; /** * @param {String} name * @returns {} value which is set */ FModel.prototype.getAttribute = function (name) { var functionName = 'getAttribute' + name.substr(0, 1).toUpperCase() + name.substr(1); if (this[functionName]) { return this[functionName].apply(this, Array.prototype.slice.call(arguments, 1)); } return this.attributes[name]; }; FModel.prototype.getAttributes = function () { var self = this; var attributeKeys = Object.keys(this.attributes).filter(function (key) { return self.attributes[key] !== undefined || self.attributes[key] !== null; }); if (attributeKeys.length > 0) { return attributeKeys.reduce(function (ac, key) { ac[key] = self.getAttribute(key); return ac; }, {}); } return null; }; FModel.prototype.setAttributes = function (attributes) { var self = this; Object.keys(attributes).forEach(function (key) { self.setAttribute(key, attributes[key]); }); }; /* harmony default export */ var core_FModel = (FModel); // CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/PluginManager.js function PluginManager() { this.runnerChains = {}; } PluginManager.prototype.push = function (key, runner) { this.runnerChains[key] = this.runnerChains[key] || []; this.runnerChains[key].push(runner); }; PluginManager.prototype.pop = function (key) { this.runnerChains[key] = this.runnerChains[key] || []; return this.runnerChains[key].pop(); }; PluginManager.prototype.remove = function (key, runner) { var runnerChain = this.runnerChains[key]; if (runnerChain) { var index = runnerChain.indexOf(runner); if (index >= 0) { runnerChain.splice(index, 1); return true;} } return false; }; PluginManager.prototype.contains = function (key, runner) { var runnerChain = this.runnerChains[key]; if (runnerChain) { var index = runnerChain.indexOf(runner); if (index >= 0) return true; } return false; }; PluginManager.prototype.exec = function (_this, key) { var args = Array.prototype.slice.call(arguments, 2); var runnerChain = this.runnerChains[key]; if (runnerChain) for (var i = 0; i < runnerChain.length; ++i) { runnerChain[i].apply(_this, args); } }; /* harmony default export */ var AppPattern_PluginManager = (PluginManager); // CONCATENATED MODULE: ./js/core/PluginManager.js /* harmony default export */ var core_PluginManager = (new AppPattern_PluginManager()); // CONCATENATED MODULE: ./js/FormEditorPreconfig.js var FormEditorPreconfig = window.FormEditorPreconfig || { description: "This object must be create in global before FormEditor's modules is loaded, it mean if you see that line, default config will be applied", extendAttributes: {} }; /* harmony default export */ var js_FormEditorPreconfig = (FormEditorPreconfig); // CONCATENATED MODULE: ./js/core/BaseComponent.js var extendAttributeNames = Object.keys(js_FormEditorPreconfig.extendAttributes); /*** * @constructor * @augments EventEmitter * @augments FViewable * @augments FNode * @augments FModel */ function BaseComponent() { EventEmitter["b" /* default */].call(this); this.events = {}; core_FViewable.call(this); core_FNode.call(this); core_FModel.call(this); /*** * * @type {FmFragment} */ this.fragment = null; this.anchorAcceptsStyleName = {}; this.onCreate(); this.view = this.render(); this.view.classList.add(this.BASE_COMPONENT_CLASS_NAME); this.onCreated(); } OOP["a" /* default */].mixClass(BaseComponent, EventEmitter["b" /* default */], core_FViewable, core_FViewable, core_FModel, core_FNode); extendAttributeNames.forEach(function (name) { var prototypeConfig = js_FormEditorPreconfig.extendAttributes[name]; if (prototypeConfig.setValue) BaseComponent.prototype['setAttribute' + name.substr(0, 1).toUpperCase() + name.substr(1)] = prototypeConfig.setValue; if (prototypeConfig.getValue) BaseComponent.prototype['getAttribute' + name.substr(0, 1).toUpperCase() + name.substr(1)] = prototypeConfig.getValue; if (prototypeConfig.getDescriptor) BaseComponent.prototype['getAttribute' + name.substr(0, 1).toUpperCase() + name.substr(1) + 'Descriptor'] = prototypeConfig.getDescriptor;else console.console.error('FormEditorPreconfig.extendAttributes["' + name + '"] must contains getDescriptor function'); }); BaseComponent.prototype.type = "COMPONENT"; BaseComponent.prototype.tag = "BaseComponent"; BaseComponent.prototype.menuIcon = "span.mdi.mdi-package-variant-closed"; BaseComponent.prototype.BASE_COMPONENT_CLASS_NAME = 'as-base-component'; BaseComponent.prototype.anchor = null; BaseComponent.prototype.SUPPORT_STYLE_NAMES = []; BaseComponent.prototype.onCreate = function () { this.constructor.count = this.constructor.count || 0; this.attributes.name = this.tag + "_" + this.constructor.count++; var self = this; extendAttributeNames.forEach(function (name) { var func = js_FormEditorPreconfig.extendAttributes[name].getDefault; if (func) self.attributes[name] = func.call(self); }); }; BaseComponent.prototype.onCreated = function () { this.updateAttributes(); }; /*** * * @param {string} attrName * @param {string=}viewPropertyName */ BaseComponent.prototype.bindAttribute = function (attrName, viewPropertyName) { viewPropertyName = viewPropertyName || attrName; var view = this.view; Object.defineProperty(this.attributes, attrName, { enumerable: true, set: function set(value) { view[viewPropertyName] = value; }, get: function get() { return view[viewPropertyName]; } }); }; BaseComponent.prototype.onAnchorAttached = function () { this.anchorAcceptsStyleName = this.anchor.getAcceptsStyleNames().reduce(function (ac, key) { ac[key] = true; return ac; }, {}); }; BaseComponent.prototype.onAnchorDetached = function () { this.anchorAcceptsStyleName = {}; }; BaseComponent.prototype.onAttached = function (parent) { this.updateStyle(); }; BaseComponent.prototype.updateStyle = function () { for (var key in this.style) { this.setStyle(key, this.style[key]); } }; BaseComponent.prototype.updateAttributes = function () { for (var key in this.attributes) { this.setAttribute(key, this.attributes[key]); //set init attribute } }; BaseComponent.prototype.getData = function () { var self = this; var data = { tag: this.tag }; if (this.fragment) {//todo: get data from fragment } var attributes = this.getAttributes(); if (attributes) { data.attributes = attributes; } var style = this.getStyles(); if (style) data.style = style; var eventsKeys = Object.keys(this.events).filter(function (key) { return self.events[key] !== undefined || self.events[key] !== null; }); if (eventsKeys.length > 0) { data.events = eventsKeys.reduce(function (ac, key) { ac[key] = self.events[key]; return ac; }, {}); } if (this.children.length > 0) { data.children = this.children.map(function (child) { if (child.fragment) { var childStyle = child.getStyles(); var childAttributes = child.getAttributes(); var childData = { "class": child.fragment.tag }; if (childStyle) childData.style = childStyle; if (childAttributes) childData.attributes = childAttributes; return childData; } else { return child.getData(); } }); } return data; }; BaseComponent.prototype.fire = function (name) { EventEmitter["b" /* default */].prototype.fire.apply(this, arguments); if (this.events[name]) { core_PluginManager.exec(this, 'EXEC_SCRIPT', this.events[name], Array.prototype.slice.call(arguments, 1)); } return this; }; BaseComponent.prototype.setEvents = function (events) { for (var name in events) { this.setEvent(name, events[name]); } }; BaseComponent.prototype.setAttributes = function (attributes) { for (var name in attributes) { this.setAttribute(name, attributes[name]); } }; BaseComponent.prototype.setStyles = function (styles) { for (var name in styles) { this.setStyle(name, styles[name]); } }; BaseComponent.prototype.setEvent = function (key, value) { if (value === undefined) { delete this.events[key]; } else this.events[key] = value; return value; }; BaseComponent.prototype.getAcceptsStyleNames = function () { if (this.anchor) return this.anchor.getAcceptsStyleNames(); return []; }; BaseComponent.prototype.getStyleDescriptor = function (name) { var res; if (this.anchor) res = this.anchor.getStyleDescriptor.apply(this.anchor, arguments); res = res || core_FViewable.prototype.getStyleDescriptor.apply(this, arguments); return res; }; BaseComponent.prototype.reMeasure = function () { if (this.parent && this.parent.reMeasure) this.parent.reMeasureChild(this); }; BaseComponent.prototype.measureMinSize = function () { return { width: 0, height: 0 }; }; BaseComponent.prototype.getAcceptsAttributeNames = function () { return ["type", "name"].concat(extendAttributeNames); }; BaseComponent.prototype.getAcceptsEventNames = function () { return []; }; /** * @param {String} name * @returns {} */ BaseComponent.prototype.getEventDescriptor = function (name) { return { type: 'function' }; }; BaseComponent.prototype.getAttributeTypeDescriptor = function () { return { type: 'const', value: this.tag }; }; BaseComponent.prototype.getAttributeNameDescriptor = function () { var root = this; while (root.parent && !root.formType) { root = root.parent; } var names = {}; var self = this; function visit(node) { if (node != self) { names[node.attributes.name] = node; } node.children.forEach(visit); } visit(root); return { type: 'uniqueText', others: names, //todo regex: /^[a-zA-Z\_0-9]$/ }; }; BaseComponent.prototype.setStyle = function (name, value) { var functionName = 'setStyle' + name.substr(0, 1).toUpperCase() + name.substr(1); if (this.anchor && this.anchor[functionName]) { //anchor will handle this value = this.anchor.setStyle.apply(this.anchor, arguments); } // self handle return core_FViewable.prototype.setStyle.apply(this, [name, value].concat(Array.prototype.slice.call(arguments, 2))); }; BaseComponent.prototype.getStyle = function (name) { var functionName = 'getStyle' + name.substr(0, 1).toUpperCase() + name.substr(1); if (this.anchor && this.anchor[functionName]) { //anchor will handle this return this.anchor.getStyle.apply(this.anchor, arguments); } // self handle return core_FViewable.prototype.getStyle.apply(this, arguments); }; BaseComponent.prototype.setStyleWidth = function (value, unit) { if (this.anchor) return value; // let anchor do that if (unit == 'px') { //value must be a number if (typeof this.style.width == 'string' && this.style.width.match(/\%$/)) { value = value * 100 / this.view.parentElement.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.style.width == 'number') { value = value * this.view.parentElement.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (styleValue == 'match_parent') styleValue = '100%'; if (typeof styleValue == "number") this.view.addStyle('width', styleValue + 'px');else this.view.addStyle('width', styleValue); return value; }; BaseComponent.prototype.setStyleHeight = function (value, unit) { if (this.anchor) return value; // let anchor do that if (unit == 'px') { //value must be a number if (typeof this.style.height == 'string' && this.style.height.match(/\%$/)) { value = value * 100 / this.view.parentElement.getBoundingClientRect().height + '%'; } } else if (unit == '%') { if (typeof this.style.height == 'number') { value = value * this.view.parentElement.getBoundingClientRect().height / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; if (styleValue == 'match_parent') styleValue = '100%'; if (typeof styleValue == "number") this.view.addStyle('height', styleValue + 'px');else this.view.addStyle('height', styleValue); return value; }; BaseComponent.prototype.getStyleWidth = function (unit) { if (unit == 'px') { if (this.style.hAlign == 'fixed' || this.style.hAlign == 'auto' || typeof this.style.width != 'number') return this.view.getBoundingClientRect().width;else { return this.style.width; } } else if (unit == '%') { if (this.style.hAlign == 'match_parent') return 100;else if (this.style.hAlign == 'fixed' || this.style.hAlign == 'auto' || typeof this.style.width == 'string' && !this.style.width.match(/\%$/) || typeof this.style.width != 'string') { return this.view.getBoundingClientRect().width * 100 / this.view.parentElement.getBoundingClientRect().width; } else { return parseFloat(this.style.width.replace('%', '')); } } else return this.style.width; }; BaseComponent.prototype.getStyleHeight = function (unit) { if (unit == 'px') { if (this.style.vAlign == 'fixed' || this.style.vAlign == 'auto' || typeof this.style.height != 'number') return this.view.getBoundingClientRect().height;else { return this.style.height; } } else if (unit == '%') { if (this.style.vAlign == 'match_parent') return 100;else if (this.style.vAlign == 'fixed' || this.style.vAlign == 'auto' || typeof this.style.height == 'string' && !this.style.height.match(/\%$/) || typeof this.style.height != 'string') { return this.view.getBoundingClientRect().height * 100 / this.view.parentElement.getBoundingClientRect().height; } else { return parseFloat(this.style.height.replace('%', '')); } } else return this.style.height; }; BaseComponent.prototype.getStyleWidthDescriptor = function () { return { type: 'measureSize' }; }; BaseComponent.prototype.getStyleHeightDescriptor = function () { return { type: 'measureSize' }; }; /*** * @returns {PropertyDescriptor||{}|null} */ BaseComponent.prototype.getDataBindingDescriptor = function () { return null; }; BaseComponent.prototype.bindDataToObject = function (obj) { var name = this.getAttribute('name'); var descriptor = this.getDataBindingDescriptor(); if (descriptor) { Object.assign(descriptor, { enumerable: true, configurable: true }); Object.defineProperty(obj, name, descriptor); } return !!descriptor; }; /* harmony default export */ var core_BaseComponent = (BaseComponent); // CONCATENATED MODULE: ./js/core/ScalableComponent.js var ScalableComponent_ = FCore._; /*** * @extends BaseComponent * @constructor */ function ScalableComponent() { core_BaseComponent.call(this); } OOP["a" /* default */].mixClass(ScalableComponent, core_BaseComponent); ScalableComponent.prototype.tag = "ScalableComponent"; ScalableComponent.prototype.SUPPORT_STYLE_NAMES = ['width', 'height', 'top', 'left', 'right', 'top', 'bottom']; ScalableComponent.prototype.onCreate = function () { core_BaseComponent.prototype.onCreate.call(this); this.style.height = 30; this.style.width = 69; }; ScalableComponent.prototype.getAcceptsStyleNames = function () { return core_BaseComponent.prototype.getAcceptsStyleNames.call(this).concat(['width', 'height']); }; /* harmony default export */ var core_ScalableComponent = (ScalableComponent); // EXTERNAL MODULE: ./css/component.css var css_component = __webpack_require__(16); // EXTERNAL MODULE: ./node_modules/showdown/dist/showdown.js var showdown = __webpack_require__(47); var showdown_default = /*#__PURE__*/__webpack_require__.n(showdown); // CONCATENATED MODULE: ./js/components/Text.js var Text_ = FCore._; var showDownConverter = new showdown_default.a.Converter(); /*** * @extends ScalableComponent * @constructor */ function Text() { core_ScalableComponent.call(this); } OOP["a" /* default */].mixClass(Text, core_ScalableComponent); Text.prototype.tag = "Text"; Text.prototype.menuIcon = "span.mdi.mdi-format-color-text"; Text.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.attributes.text = this.attributes.name; this.attributes.textDecode = 'none'; this.style.font = undefined; this.style.fontStyle = undefined; this.style.textSize = 0; this.style.textAlign = 'left'; this.style.textColor = 'black'; this.style.font = 'None'; }; Text.prototype.render = function () { return Text_('div.absol-bscroller'); }; Text.prototype.setAttributeText = function (value) { switch (this.attributes.textDecode) { case 'html': this.view.innerHTML = value; break; case 'markdown': this.view.innerHTML = showDownConverter.makeHtml(value).trim().replace(/(^<p>)|(<\/p>$)/, ''); break; default: this.view.clearChild().addChild(Text_({ text: value })); } return value; }; Text.prototype.setAttributeTextDecode = function (value) { this.attributes.textDecode = value; this.setAttributeText(this.attributes.text); //update return value; }; Text.prototype.setStyleFont = function (value) { if (value) this.view.addStyle('font-family', value);else this.view.removeStyle('font-family'); return value; }; Text.prototype.setStyleFontStyle = function (value) { var styleList = { Regular: { fontWeight: 'normal', fontStyle: 'normal' }, Bold: { fontWeight: 'bold', fontStyle: 'normal' }, 'Bold italic': { fontWeight: 'bold', fontStyle: 'italic' }, Italic: { fontWeight: 'normal', fontStyle: 'italic' } }; this.view.addStyle(styleList[value] || styleList.Regular); return value; }; Text.prototype.setStyleTextSize = function (value) { if (value > 0) this.view.addStyle('font-size', value + 'px');else this.view.removeStyle('font-size'); return value; }; Text.prototype.setStyleTextAlign = function (value) { if (true) this.view.addStyle('text-align', value);else {} return value; }; Text.prototype.setStyleTextColor = function (value) { this.view.addStyle('color', value); return value; }; Text.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(['text', 'textDecode']); }; Text.prototype.getAcceptsStyleNames = function () { return core_ScalableComponent.prototype.getAcceptsStyleNames.call(this).concat(['font', 'fontStyle', 'textSize', 'textAlign', 'textColor']); }; Text.prototype.getAttributeTextDescriptor = function () { return { type: "text", "long": true, sign: "HyperText" }; }; Text.prototype.getAttributeTextDecodeDescriptor = function () { return { type: "enum", values: ['none', 'markdown', 'html'], sign: 'TextDecode' }; }; Text.prototype.getStyleFontDescriptor = function () { return { type: "font", sign: 'TextFont' }; }; Text.prototype.getStyleFontStyleDescriptor = function () { return { type: "enum", values: ['Regular', 'Italic', 'Bold', 'Bold italic'], sign: 'FontStyle' }; }; Text.prototype.getStyleTextSizeDescriptor = function () { return { type: "number", min: 0, max: 1000, sign: "TextSign" }; }; Text.prototype.getStyleTextAlignDescriptor = function () { return { type: "textAlign", sign: "TextAlign" }; }; Text.prototype.getStyleTextColorDescriptor = function () { return { type: "color", sign: "TextColor" }; }; Text.prototype.getDataBindingDescriptor = function () { var thisC = this; return { set: function set(value) { thisC.setAttribute('text', value); }, get: function get() { return thisC.getAttribute('text'); } }; }; /* harmony default export */ var components_Text = (Text); // CONCATENATED MODULE: ./js/components/TextInput.js var TextInput_ = FCore._; /*** * @extends ScalableComponent * @constructor */ function TextInput() { core_ScalableComponent.call(this); } OOP["a" /* default */].mixClass(TextInput, core_ScalableComponent); TextInput.prototype.tag = "TextInput"; TextInput.prototype.menuIcon = "span.mdi.mdi-textbox"; TextInput.prototype.SUPPORT_ATTRIBUTE_NAMES = ['value']; TextInput.prototype.SUPPORT_EVENT_NAMES = ['change']; TextInput.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.call(this); this.bindAttribute('value'); var self = this; var lastValue; this.view.on('keydown', function () { lastValue = self.attributes.value; }).on('keyup', function () { if (this.value != lastValue) { self.attributes.value = this.value; self.emit('change', this.value, self); } }); }; TextInput.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.setStyleTextAlign.textAlign = 'left'; this.attributes.value = ''; this.attributes.placeHolder = ''; this.style.textType = 'normal'; this.style.textColor = 'black'; this.style.textSize = 0; this.style.textAlign = 'left'; this.style.font = 'None'; }; TextInput.prototype.render = function () { return TextInput_('input[type="text"][autocomplete="off"]'); }; TextInput.prototype.getAcceptsStyleNames = function () { return core_ScalableComponent.prototype.getAcceptsStyleNames.call(this).concat(['textAlign', 'font', 'fontStyle', 'textSize']); }; TextInput.prototype.setStyleFont = components_Text.prototype.setStyleFont; TextInput.prototype.getStyleFontDescriptor = components_Text.prototype.getStyleFontDescriptor; TextInput.prototype.setStyleFontStyle = components_Text.prototype.setStyleFontStyle; TextInput.prototype.getStyleFontStyleDescriptor = components_Text.prototype.getStyleFontStyleDescriptor; TextInput.prototype.setStyleTextSize = components_Text.prototype.setStyleTextSize; TextInput.prototype.getStyleTextSizeDescriptor = components_Text.prototype.getStyleTextSizeDescriptor; TextInput.prototype.setStyleTextAlign = components_Text.prototype.setStyleTextAlign; TextInput.prototype.getStyleTextAlignDescriptor = components_Text.prototype.getStyleTextAlignDescriptor; TextInput.prototype.setStyleTextColor = components_Text.prototype.setStyleTextColor; TextInput.prototype.getStyleTextColorDescriptor = components_Text.prototype.getStyleTextColorDescriptor; TextInput.prototype.getAcceptsStyleNames = function () { return core_ScalableComponent.prototype.getAcceptsStyleNames.call(this).concat(['font', 'fontStyle', 'textSize', 'textAlign', 'textColor']); }; TextInput.prototype.setAttributeValue = function (value) { this.view.value = value; return value; }; TextInput.prototype.setAttributePlaceHolder = function (value) { this.view.attr('placeholder', value); return value; }; TextInput.prototype.setAttributeTextType = function (value) { if (['normal', 'password'].indexOf(value) < 0) value = 'normal'; this.view.attr('type', { normal: 'text', password: 'password' }[value]); if (value == 'password') this.view.attr('autocomplete', 'new-password');else this.view.attr('autocomplete', undefined); return value; }; TextInput.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(['value', 'placeHolder', 'textType']); }; TextInput.prototype.getAttributeValueDescriptor = function () { return { type: "text", sign: "SimpleText" }; }; TextInput.prototype.getAttributePlaceHolderDescriptor = function () { return { type: "text", sign: "SimpleText" }; }; TextInput.prototype.getAttributeTextTypeDescriptor = function () { return { type: "enum", values: ['normal', 'password'], sign: 'InputTextType' }; }; TextInput.prototype.getAcceptsEventNames = function () { return core_ScalableComponent.prototype.getAcceptsEventNames.call(this).concat(['change']); }; TextInput.prototype.getDataBindingDescriptor = function () { var thisC = this; return { configurable: true, set: function set(value) { thisC.setAttribute('value', value); }, get: function get() { return thisC.getAttribute('value'); } }; }; /* harmony default export */ var components_TextInput = (TextInput); // CONCATENATED MODULE: ./js/core/BaseLayout.js function BaseLayout() { core_ScalableComponent.call(this); } Object.defineProperties(BaseLayout.prototype, Object.getOwnPropertyDescriptors(core_ScalableComponent.prototype)); BaseLayout.prototype.constructor = BaseLayout; BaseLayout.prototype.isLayout = true; BaseLayout.prototype.create = function () { core_ScalableComponent.prototype.create.call(this); this.style.vAlign = 'fixed'; this.style.hAlign = 'fixed'; this.style.backgroundColor = 'rgba(0, 0, 0, 0)'; this.style.backgroundImage = ''; }; BaseLayout.prototype.addChildByPosition = function (child, posX, posY) { throw new Error("Not implement!"); }; BaseLayout.prototype.getAcceptsAttributeNames = function () { var res = core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this); if (this.attributes.formType) { res = ['formType'].concat(res); } return res; }; BaseLayout.prototype.getAttributeFormTypeDescriptor = function () { return { type: 'const', value: this.attributes.formType }; }; BaseLayout.prototype.getAcceptsStyleNames = function () { return core_ScalableComponent.prototype.getAcceptsStyleNames.call(this).concat(['backgroundColor', 'backgroundImage']); }; BaseLayout.prototype.setStyleBackgroundColor = function (value) { this.view.addStyle('backgroundColor', value); return value; }; BaseLayout.prototype.setStyleBackgroundImage = function (value) { if (value && value.length > 0) { this.view.addStyle('backgroundImage', 'url(' + value + ')'); this.view.addStyle('backgroundSize', '100% 100%'); } else { this.view.removeStyle('backgroundImage'); this.view.removeStyle('backgroundSize'); } return value; }; BaseLayout.prototype.getStyleBackgroundColorDescriptor = function () { return { type: 'color', sign: 'BackgroundColor', independence: true }; }; BaseLayout.prototype.getStyleBackgroundImageDescriptor = function () { return { type: 'text', "long": true, sign: 'BackgroundImageSrc', independence: true }; }; /* harmony default export */ var core_BaseLayout = (BaseLayout); // EXTERNAL MODULE: ./css/anchoreditor.css var anchoreditor = __webpack_require__(38); // CONCATENATED MODULE: ./js/dom/Icons.js var Icons_ = FCore._; FCore.install('mdi-align-horizontal-left', function () { return Icons_('<svg width="24px" height="24px" viewBox="0 0 24 24">\ <path fill="#000000" d = "M22 13V19H6V13H22M6 5V11H16V5H6M2 2V22H4V2H2" />\ </svg>'); }); FCore.install('mdi-align-horizontal-center', function () { return Icons_('<svg width="24px" height="24px" viewBox="0 0 24 24">\ <path fill="#000000" d="M20 19H13V22H11V19H4V13H11V11H7V5H11V2H13V5H17V11H13V13H20V19Z" />\ </svg>'); }); FCore.install('mdi-align-horizontal-right', function () { return Icons_('<svg width="24px" height="24px" viewBox="0 0 24 24">\ <path fill="#000000" d="M18 13V19H2V13H18M8 5V11H18V5H8M20 2V22H22V2H20Z" />\ </svg>'); }); FCore.install('mdi-align-vertical-bottom', function () { return Icons_('<svg width="24px" height="24px" viewBox="0 0 24 24">\ <path fill="#000000" d="M11 18H5V2H11V18M19 8H13V18H19V8M22 20H2V22H22V20Z" />\ </svg>'); }); FCore.install('mdi-align-vertical-center', function () { return Icons_('<svg width="24px" height="24px" viewBox="0 0 24 24">\ <path fill="#000000" d="M5 20V13H2V11H5V4H11V11H13V7H19V11H22V13H19V17H13V13H11V20H5Z" />\ </svg>'); }); FCore.install('mdi-align-vertical-top', function () { return Icons_('<svg width="24px" height="24px" viewBox="0 0 24 24">\ <path fill="#000000" d="M11 22H5V6H11V22M19 6H13V16H19V6M22 2H2V4H22V2Z" />\ </svg>'); }); FCore.install('frame-ico', function () { return Icons_('<svg width="25.03mm" height="26.1mm" version="1.1" viewBox="0 0 25.03 26.1" xmlns="http://www.w3.org/2000/svg">' + ' <g transform="translate(0,-270.9)">' + ' <path d="m12.662 270.91-7.0158 3.7418v4.0759l6.9156-4.0424 7.0492 3.9756-0.13363-3.9422z" style="fill:gray" />' + ' <path d="m12.628 276.89-6.7486 3.6416 6.6817 4.0424 6.7151-3.842z" style="fill:rgb(240, 122, 0)" />' + ' <path d="m5.2452 282.4-0.03341 7.3165 6.3811 3.8754 0.03341-7.4167z" style="fill:rgb( 122, 240, 0)" />' + ' <path d="m19.745 282.37-6.3811 3.842v7.3499l6.4145-3.7084z" style="fill:rgb(0, 122, 240)" />' + ' <path d="m21.816 283.07-0.13364 7.8176-6.7486 4.1093 3.2406 2.0045 6.7152-3.9088 0.13363-8.1517z" style="fill:gray" />' + ' <path d="m3.1738 283.04-3.1738 2.0045v7.7842l6.7151 4.1093 3.3409-1.8709-6.7151-3.9756z" style="fill:gray" />' + ' </g>' + '</svg>'); }); // CONCATENATED MODULE: ./js/core/BaseAnchorEditor.js /** * * @param {LayoutEditor} layoutEditor */ function BaseAnchorEditor(layoutEditor) { EventEmitter["b" /* default */].call(this); this._bindEvent(); this.layoutEditor = layoutEditor; this.component = null; this.cmdRunner = new AppPattern_CMDRunner(this); } Object.defineProperties(BaseAnchorEditor.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); BaseAnchorEditor.prototype.constructor = BaseAnchorEditor; BaseAnchorEditor.prototype._bindEvent = function () { for (var key in this) { if (key.startsWith('ev_')) this[key] = this[key].bind(this); } }; BaseAnchorEditor.prototype.focus = function () {//not implement }; BaseAnchorEditor.prototype.blur = function () {//not implement }; BaseAnchorEditor.prototype.edit = function (component) { this.component = component; if (!this.component) this.blur(); this.update(); }; BaseAnchorEditor.prototype.update = function () {}; BaseAnchorEditor.prototype.getCmdNames = function () { var res = []; if (this.component.isLayout && !this.component.formType) { res.push('layoutEdit'); } res.push('delete'); return res; }; BaseAnchorEditor.prototype.getCmdDescriptor = function (name) {}; BaseAnchorEditor.prototype.ev_dblClick = function () { if (!this.component) return; if (this.component.fragment) { var message = js_Toast.make({ props: { title: "TODO", message: "Edit Form" } }, 'auto'); setTimeout(message.disappear.bind(message), 2000); } else { this.layoutEditor.editLayout(this.component); } }; /* harmony default export */ var core_BaseAnchorEditor = (BaseAnchorEditor); // CONCATENATED MODULE: ./js/cmds/BaseAnchorEditorCmd.js var BaseAnchorEditorCmdDescriptors = {}; var BaseAnchorEditorCmd = {}; BaseAnchorEditorCmd["delete"] = function () { var editors = this.layoutEditor.anchorEditors; var components = editors.map(function (e) { return e.component; }); this.layoutEditor.removeComponent.apply(this.layoutEditor, components); }; BaseAnchorEditorCmd.layoutEdit = function () { //todo if (this.component.isLayout && !this.component.formType) { this.layoutEditor.editLayout(this.component); } }; /* harmony default export */ var cmds_BaseAnchorEditorCmd = (BaseAnchorEditorCmd); // CONCATENATED MODULE: ./js/cmds/RelativeAnchorEditorCmd.js /** * @type {import("../anchoreditors/RelativeAnchorEditor").default} */ var RelativeAnchorEditorCmd = Object.assign({}, cmds_BaseAnchorEditorCmd); RelativeAnchorEditorCmd.distributeHorizontalLeft = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { left: e.component.getStyle('left', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.left - b.left; }); var minX = editorHolders[0].left; var maxX = editorHolders[editors.length - 1].left; if (minX == maxX) return; for (i = 1; i < editors.length - 1; ++i) { editor = editorHolders[i].editor; editor.alignLeftDedge(minX + (maxX - minX) / (editors.length - 1) * i, true); } this.layoutEditor.commitHistory('move', 'Distribute Horizontal Left'); }; RelativeAnchorEditorCmd.distributeHorizontalCenter = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { left: e.component.getStyle('left', 'px'), width: e.component.getStyle('width', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.left + a.width / 2 - (b.left + b.width / 2); }); var minX = editorHolders[0].left + editorHolders[0].width / 2; var maxX = editorHolders[editors.length - 1].left + editorHolders[editors.length - 1].width / 2; if (minX == maxX) return; var eHolder; for (i = 1; i < editors.length - 1; ++i) { eHolder = editorHolders[i]; editor = eHolder.editor; editor.alignLeftDedge(minX + (maxX - minX) / (editors.length - 1) * i - eHolder.width / 2, true); } this.layoutEditor.commitHistory('move', 'Distribute Horizontal Center'); }; RelativeAnchorEditorCmd.distributeHorizontalRight = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { right: e.component.getStyle('right', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.right - b.right; }); var minX = editorHolders[0].right; var maxX = editorHolders[editorHolders.length - 1].right; if (minX == maxX) return; for (i = 1; i < editors.length - 1; ++i) { editor = editorHolders[i].editor; editor.alignRightDedge(minX + (maxX - minX) / (editorHolders.length - 1) * i, true); } this.layoutEditor.commitHistory('move', 'Distribute Horizontal Right'); }; RelativeAnchorEditorCmd.distributeHorizontalDistance = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { left: e.component.getStyle('left', 'px'), width: e.component.getStyle('width', 'px'), right: e.component.getStyle('right', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.left + a.width / 2 - (b.left + b.width / 2); }); var sumDistance = editorHolders[editorHolders.length - 1].left - (editorHolders[0].left + editorHolders[0].width); var eHolder; for (i = 1; i < editors.length - 1; ++i) { eHolder = editorHolders[i]; sumDistance -= eHolder.width; } var distance = sumDistance / (editors.length - 1); var curentLeft = editorHolders[0].left + editorHolders[0].width + distance; for (i = 1; i < editorHolders.length - 1; ++i) { eHolder = editorHolders[i]; editor = eHolder.editor; editor.alignLeftDedge(curentLeft, true); curentLeft += eHolder.width + distance; } this.layoutEditor.commitHistory('move', 'Distribute Horizontal Distance'); }; RelativeAnchorEditorCmd.distributeVerticalTop = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { top: e.component.getStyle('top', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.top - b.top; }); var minX = editorHolders[0].top; var maxX = editorHolders[editorHolders.length - 1].top; if (minX == maxX) return; for (i = 1; i < editorHolders.length - 1; ++i) { editor = editorHolders[i].editor; editor.alignTopDedge(minX + (maxX - minX) / (editors.length - 1) * i); } this.layoutEditor.commitHistory('move', 'Distribute Vertical Top'); }; RelativeAnchorEditorCmd.distributeVerticalCenter = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { top: e.component.getStyle('top', 'px'), height: e.component.getStyle('height', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.top + a.height / 2 - (b.top + b.height / 2); }); var minX = editorHolders[0].top + editorHolders[0].height / 2; var maxX = editorHolders[editorHolders.length - 1].top + editorHolders[editorHolders.length - 1].height / 2; if (minX == maxX) return; var eHolder; for (i = 1; i < editorHolders.length - 1; ++i) { eHolder = editorHolders[i]; editor = eHolder.editor; editor.alignTopDedge(minX + (maxX - minX) / (editors.length - 1) * i - eHolder.height / 2); } this.layoutEditor.commitHistory('move', 'Distribute Vertical Center'); }; RelativeAnchorEditorCmd.distributeVerticalBottom = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { bottom: e.component.getStyle('bottom', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.bottom - b.bottom; }); var minX = editorHolders[0].bottom; var maxX = editorHolders[editorHolders.length - 1].bottom; if (minX == maxX) return; for (i = 1; i < editorHolders.length - 1; ++i) { editor = editorHolders[i].editor; editor.alignBottomDedge(minX + (maxX - minX) / (editors.length - 1) * i); } this.layoutEditor.commitHistory('move', 'Distribute Vertical Bottom'); }; RelativeAnchorEditorCmd.distributeVerticalDistance = function () { var editors = this.layoutEditor.anchorEditors; var editor; var i; var editorHolders = editors.map(function (e) { return { top: e.component.getStyle('top', 'px'), height: e.component.getStyle('height', 'px'), editor: e }; }); editorHolders.sort(function (a, b) { return a.top + a.height / 2 - (b.top + b.height / 2); }); var eHolder; var sumDistance = editorHolders[editorHolders.length - 1].top - (editorHolders[0].top + editorHolders[0].height); for (i = 1; i < editorHolders.length - 1; ++i) { eHolder = editorHolders[i]; sumDistance -= eHolder.height; } var distance = sumDistance / (editorHolders.length - 1); var curentTop = editorHolders[0].top + editorHolders[0].height + distance; for (i = 1; i < editorHolders.length - 1; ++i) { eHolder = editorHolders[i]; editor = eHolder.editor; editor.alignTopDedge(curentTop); curentTop += eHolder.height + distance; } this.layoutEditor.commitHistory('move', 'Distribute Vertical Distance'); }; RelativeAnchorEditorCmd.alignLeftDedge = function () { var editors = this.layoutEditor.anchorEditors; var editor; var leftValue = this.component.getStyle('left', 'px'); for (var i = 0; i < editors.length; ++i) { editor = editors[i]; if (editor == this) continue; editor.alignLeftDedge(leftValue); } this.layoutEditor.commitHistory('move', 'Align Left Dedge'); }; RelativeAnchorEditorCmd.alignRightDedge = function () { var editors = this.layoutEditor.anchorEditors; var editor; var rightValue = this.component.getStyle('right', 'px'); for (var i = 0; i < editors.length; ++i) { editor = editors[i]; if (editor == this) continue; editor.alignRightDedge(rightValue); } this.layoutEditor.commitHistory('move', 'Align Right Dedge'); }; RelativeAnchorEditorCmd.alignHorizontalCenter = function () { var editors = this.layoutEditor.anchorEditors; var editor; var centerValue = this.component.getStyle('right', 'px') - this.component.getStyle('left', 'px'); ; for (var i = 0; i < editors.length; ++i) { editor = editors[i]; if (editor == this) continue; editor.alignHorizontalCenter(centerValue); } this.layoutEditor.commitHistory('move', 'Align Horizontal Center'); }; RelativeAnchorEditorCmd.equaliseWidth = function () { var editors = this.layoutEditor.anchorEditors; var editor; var widthValue = this.component.getStyle('width', 'px'); for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; if (editor == this) continue; editor.equaliseWidth(widthValue); } this.layoutEditor.commitHistory('move', 'Equalise Width'); }; RelativeAnchorEditorCmd.alignTopDedge = function () { var editors = this.layoutEditor.anchorEditors; var editor; var topValue = this.component.getStyle('top', 'px'); for (var i = 0; i < editors.length; ++i) { editor = editors[i]; if (editor == this) continue; editor.alignTopDedge(topValue); } this.layoutEditor.commitHistory('move', 'Align Top Dedge'); }; RelativeAnchorEditorCmd.alignBottomDedge = function () { var editors = this.layoutEditor.anchorEditors; var editor; var bottomValue = this.component.getStyle('bottom', 'px'); for (var i = 0; i < editors.length; ++i) { editor = editors[i]; if (editor == this) continue; editor.alignBottomDedge(bottomValue); } this.layoutEditor.commitHistory('move', 'Align Bottom Dedge'); }; RelativeAnchorEditorCmd.alignVerticalCenter = function () { var editors = this.layoutEditor.anchorEditors; var editor; var centerValue = this.component.getStyle('bottom', 'px') - this.component.getStyle('top', 'px'); for (var i = 0; i < editors.length; ++i) { editor = editors[i]; if (editor == this) continue; editor.alignVerticalCenter(centerValue); } this.layoutEditor.commitHistory('move', 'Align Verlical Center'); }; RelativeAnchorEditorCmd.equaliseHeight = function () { var editors = this.layoutEditor.anchorEditors; var editor; var heightValue = this.component.getStyle('height', 'px'); for (var i = 0; i < editors.length; ++i) { editor = editors[i]; if (editor == this) continue; editor.equaliseHeight(heightValue); } this.layoutEditor.commitHistory('move', 'Equalise Height'); }; var RelativeAnchorEditorCmdTree = [['alignLeftDedge', 'alignHorizontalCenter', 'alignRightDedge', 'equaliseWidth'], ['alignTopDedge', 'alignVerticalCenter', 'alignBottomDedge', 'equaliseHeight'], ['distributeHorizontalLeft', 'distributeHorizontalCenter', 'distributeHorizontalRight', 'distributeHorizontalDistance'], ['distributeVerticalTop', 'distributeVerticalCenter', 'distributeVerticalBottom', 'distributeVerticalDistance']]; var RelativeAnchorEditorCmdDescriptors = { distributeVerticalDistance: { type: 'trigger', desc: "Distribute Verlical Distance", icon: '<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">\ <path d="m7 3h10v5h5v2h-20v-2h5v-5"/>\ <path d="m2 16v-2h20v2h-3v5h-14v-5z"/>\ </svg>' }, distributeVerticalBottom: { type: 'trigger', desc: "Distribute Vertical Bottom", icon: 'span.mdi.mdi-distribute-vertical-bottom' }, distributeVerticalCenter: { type: 'trigger', desc: "Distribute Vertical Center", icon: 'span.mdi.mdi-distribute-vertical-center' }, distributeVerticalTop: { type: 'trigger', desc: "Distribute Vertical Top", icon: 'span.mdi.mdi-distribute-vertical-top' }, distributeHorizontalDistance: { icon: '<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">\ <path d="m21 7v10h-5v5h-2v-20h2v5h5"/>\ <path d="m8 2h2v20h-2v-3h-5v-14h5z"/>\ </svg>', type: 'trigger', desc: "Distribute Horizontal Distance" }, distributeHorizontalRight: { type: 'trigger', desc: "Distribute Horizontal Right", icon: 'span.mdi.mdi-distribute-horizontal-right' }, distributeHorizontalCenter: { icon: 'span.mdi.mdi-distribute-horizontal-center', type: 'trigger', desc: "Distribute Horizontal Center" }, distributeHorizontalLeft: { icon: 'span.mdi.mdi-distribute-horizontal-left', type: 'trigger', desc: "Distribute Horizontal Left" }, equaliseHeight: { type: 'trigger', icon: 'span.mdi.mdi-arrow-expand-vertical', desc: 'Equalise Height' }, alignVerticalCenter: { type: 'trigger', icon: 'span.mdi.mdi-align-vertical-center', desc: 'Align Vertical Center' }, alignBottomDedge: { type: 'trigger', icon: 'span.mdi.mdi-align-vertical-bottom', desc: 'Align Bottom Edges' }, alignTopDedge: { type: 'trigger', icon: 'span.mdi.mdi-align-vertical-top', desc: 'Align Top Edges' }, equaliseWidth: { type: 'trigger', icon: 'span.mdi.mdi-arrow-expand-horizontal', desc: 'Equalise Width' }, alignHorizontalCenter: { type: 'trigger', icon: 'span.mdi.mdi-align-horizontal-center', desc: 'Align Horizontal Center' }, alignRightDedge: { type: 'trigger', icon: 'span.mdi.mdi-align-horizontal-right', desc: 'Align Right Edges' }, alignLeftDedge: { type: 'trigger', icon: 'span.mdi.mdi-align-horizontal-left', desc: 'Align Left Edges' }, sendBackward: { type: 'trigger', desc: 'Send Backward', icon: 'span.mdi.mdi-arrange-send-backward' } }; /* harmony default export */ var cmds_RelativeAnchorEditorCmd = (RelativeAnchorEditorCmd); // CONCATENATED MODULE: ./js/anchoreditors/RelativeAnchorEditor.js var RelativeAnchorEditor_ = FCore._; var RelativeAnchorEditor_$ = FCore.$; /** * @extends BaseAnchorEditor * @param {LayoutEditor} layoutEditor */ function RelativeAnchorEditor(layoutEditor) { core_BaseAnchorEditor.call(this, layoutEditor); this.cmdRunner.assign(cmds_RelativeAnchorEditorCmd); var self = this; this.$modal = RelativeAnchorEditor_({ style: { zIndex: '10000000', left: '1px', right: '1px', top: '1px', bottom: '1px', position: 'fixed' } }); this.$resizeBox = RelativeAnchorEditor_('resizebox').on('mousedown', this.focus.bind(this)).on('beginmove', this.ev_beginMove.bind(this, true)).on('moving', this.ev_moving.bind(this, true)).on('endmove', this.ev_endMove.bind(this, true)).on('click', function (ev) { self.emit('click', ev, true); }).on('dblclick', this.ev_dblClick); this.$resizeBox.defineEvent('contextmenu'); this.$resizeBox.on('contextmenu', this.ev_contextMenu.bind(this)); this.$topAlignLine = RelativeAnchorEditor_('vline'); this.$bottomAlignLine = RelativeAnchorEditor_('vline'); this.$leftAlignLine = RelativeAnchorEditor_('hline'); this.$rightAlignLine = RelativeAnchorEditor_('hline'); this.movingData = null; this.isFocus = false; this.snapDistance = 2; } OOP["a" /* default */].mixClass(RelativeAnchorEditor, core_BaseAnchorEditor); RelativeAnchorEditor.prototype.ev_contextMenu = function (event) { var self = this; var items = []; function makeItem(name) { if (name === null) return '====='; var cmdDescriptor = RelativeAnchorEditorCmdDescriptors[name]; var res = { icon: cmdDescriptor.icon, text: cmdDescriptor.desc, cmd: name }; if (cmdDescriptor.bindKey && cmdDescriptor.bindKey.win) { res.key = cmdDescriptor.bindKey.win; } return res; } if (this.layoutEditor.anchorEditors.length > 1) { items.push.apply(items, ['alignLeftDedge', 'alignHorizontalCenter', 'alignRightDedge', 'equaliseWidth', null, 'alignTopDedge', 'alignVerticalCenter', 'alignBottomDedge', 'equaliseHeight', null].map(makeItem)); } if (this.layoutEditor.anchorEditors.length > 2) { items.push.apply(items, ['distributeHorizontalLeft', 'distributeHorizontalCenter', 'distributeHorizontalRight', 'distributeHorizontalDistance', null, 'distributeVerticalTop', 'distributeVerticalCenter', 'distributeVerticalBottom', 'distributeVerticalDistance', null].map(makeItem)); } if (this.layoutEditor.anchorEditors.length == 1 && this.layoutEditor.anchorEditors[0].component.reMeasureChild) { items.push({ icon: 'span.mdi.mdi-square-edit-outline[style="color:blue"]', text: 'Edit Layout', cmd: this.execCmd.bind(this, 'layoutEdit') }); } items.push({ icon: 'span.mdi.mdi-delete-variant[style="color:red"]', text: 'Delete', cmd: 'delete' }); event.showContextMenu({ items: items, extendStyle: { fontSize: '12px' } }, function (event) { var cmd = event.menuItem.cmd; if (typeof cmd == 'function') { cmd(); self.layoutEditor.notifyDataChange(); } else if (typeof cmd == 'string') { self.layoutEditor.execCmd(cmd); } self.layoutEditor.getView().focus(); }); event.stopPropagation(); }; RelativeAnchorEditor.prototype.focus = function () { if (!this.component) return; if (this.isFocus) return; this.isFocus = true; this.$resizeBox.addClass('as-focus'); var editor; for (var i = 0; i < this.layoutEditor.anchorEditors.length; ++i) { editor = this.layoutEditor.anchorEditors[i]; if (editor == this) continue; editor.blur(); } this.emit('focus', { type: 'focus', target: this }, this); }; RelativeAnchorEditor.prototype.blur = function () { if (!this.isFocus) return; this.isFocus = false; this.$resizeBox.removeClass('as-focus'); this.emit('blur', { type: 'blur', target: this }, this); }; RelativeAnchorEditor.prototype.update = function () { if (this.component) { this.$resizeBox.addTo(this.layoutEditor.$forceground); var styleDescriptors = this.component.getStyleDescriptors(); this.$resizeBox.canMove = !!(styleDescriptors.top || styleDescriptors.bottom || styleDescriptors.left || styleDescriptors.right); this.$resizeBox.canResize = !!(styleDescriptors.width || styleDescriptors.height); if (!styleDescriptors.top || styleDescriptors.top.disabled) { this.$topAlignLine.remove(); } else { this.$topAlignLine.addTo(this.layoutEditor.$forceground); } if (!styleDescriptors.bottom || styleDescriptors.bottom.disabled) { this.$bottomAlignLine.remove(); } else { this.$bottomAlignLine.addTo(this.layoutEditor.$forceground); } if (!styleDescriptors.left || styleDescriptors.left.disabled) { this.$leftAlignLine.remove(); } else { this.$leftAlignLine.addTo(this.layoutEditor.$forceground); } if (!styleDescriptors.right || styleDescriptors.right.disabled) { this.$rightAlignLine.remove(); } else { this.$rightAlignLine.addTo(this.layoutEditor.$forceground); } this.updatePosition(); } else { this.$resizeBox.remove(); this.$leftAlignLine.remove(); this.$rightAlignLine.remove(); this.$topAlignLine.remove(); this.$bottomAlignLine.remove(); } }; RelativeAnchorEditor.prototype.updatePosition = function () { if (this.component) { var bound = this.layoutEditor.$forceground.getBoundingClientRect(); var compBound = this.component.view.getBoundingClientRect(); var styleLeft = this.component.getStyle('left', 'px'); var styleTop = this.component.getStyle('top', 'px'); var styleRight = this.component.getStyle('right', 'px'); var styleBottom = this.component.getStyle('bottom', 'px'); this.$resizeBox.addStyle({ left: (compBound.left - bound.left) / this.layoutEditor._softScale + 'px', top: (compBound.top - bound.top) / this.layoutEditor._softScale + 'px', width: compBound.width / this.layoutEditor._softScale + 'px', height: compBound.height / this.layoutEditor._softScale + 'px' }); if (this.$leftAlignLine.parentNode) this.$leftAlignLine.addStyle({ left: (compBound.left - bound.left) / this.layoutEditor._softScale - styleLeft + 'px', width: styleLeft + 'px', top: (compBound.top - bound.top + compBound.height / 2) / this.layoutEditor._softScale + 'px' }); if (this.$rightAlignLine.parentNode) this.$rightAlignLine.addStyle({ left: (compBound.right - bound.left) / this.layoutEditor._softScale + 'px', width: styleRight + 'px', top: (compBound.top - bound.top + compBound.height / 2) / this.layoutEditor._softScale + 'px' }); if (this.$topAlignLine.parentNode) this.$topAlignLine.addStyle({ top: (compBound.top - bound.top) / this.layoutEditor._softScale - styleTop + 'px', height: styleTop + 'px', left: (compBound.left - bound.left + compBound.width / 2) / this.layoutEditor._softScale + 'px' }); if (this.$bottomAlignLine.parentNode) this.$bottomAlignLine.addStyle({ top: (compBound.bottom - bound.top) / this.layoutEditor._softScale + 'px', height: styleBottom + 'px', left: (compBound.left - bound.left + compBound.width / 2) / this.layoutEditor._softScale + 'px' }); } }; RelativeAnchorEditor.prototype.ev_beginMove = function (userAction, event) { var bound = this.layoutEditor.$forceground.getBoundingClientRect(); this.component.reMeasure(); var snapLines = this.getSnapLines(); this.movingData = { userAction: userAction, x0: (event.clientX - bound.left) / this.layoutEditor._softScale, y0: (event.clientY - bound.top) / this.layoutEditor._softScale, dx: 0, dy: 0, option: event.option, styleDescriptors: this.component.getStyleDescriptors(), style0: Object.assign({}, this.component.style, { left: this.component.getStyle('left', 'px'), right: this.component.getStyle('right', 'px'), top: this.component.getStyle('top', 'px'), bottom: this.component.getStyle('bottom', 'px'), width: this.component.getStyle('width', 'px'), height: this.component.getStyle('height', 'px') }), comp: this.component, isChange: false, snapLines: snapLines, $snapXLines: [], $snapYLines: [], nearestYVal: 10000000, nearestY: [], nearestXVal: 10000000, nearestX: [] }; if (userAction) { this.emit('beginmove', { type: 'beginmove', target: this, originEvent: event.originEvent || event, repeatEvent: event }, this); this.$modal.addTo(document.body); this._updateSnapLines(); this.layoutEditor.$mouseOffsetStatus.children[2].innerHTML = ' Δ' + this.movingData.dx + ', ' + this.movingData.dy; } }; RelativeAnchorEditor.prototype.ev_moving = function (userAction, event) { var movingData = this.movingData; var bound = this.layoutEditor.$forceground.getBoundingClientRect(); var x = (event.clientX - bound.left) / this.layoutEditor._softScale; var y = (event.clientY - bound.top) / this.layoutEditor._softScale; movingData.dx = x - movingData.x0; movingData.dy = y - movingData.y0; if (event.originEvent.ctrlKey) { var newW, newH, dH, dW; if (movingData.option.body) { if (Math.abs(movingData.dx) < Math.abs(movingData.dy)) { movingData.dx = 0; } else { movingData.dy = 0; } } else { if (movingData.option.right) { if (!!movingData.styleDescriptors.left.disabled && !!movingData.styleDescriptors.right.disabled) { newW = Math.max(0, movingData.style0.width + movingData.dx * 2); } else { newW = Math.max(0, movingData.style0.width + movingData.dx); } newH = movingData.style0.height * newW / Math.max(1, movingData.style0.width); } else if (movingData.option.left) { if (!!movingData.styleDescriptors.left.disabled && !!movingData.styleDescriptors.right.disabled) { newW = Math.max(0, movingData.style0.width - movingData.dx * 2); } else { newW = Math.max(0, movingData.style0.width - movingData.dx); } newH = movingData.style0.height * newW / Math.max(1, movingData.style0.width); } } if (movingData.option.bottom) { movingData.dy = newH - movingData.style0.height; if (!!movingData.styleDescriptors.top.disabled && !!movingData.styleDescriptors.bottom.disabled) { movingData.dy /= 2; } } else if (movingData.option.top) { movingData.dy = -(newH - movingData.style0.height); if (!!movingData.styleDescriptors.top.disabled && !!movingData.styleDescriptors.bottom.disabled) { movingData.dy /= 2; } } } var positionIsChange = false; if (movingData.styleDescriptors.left && !movingData.styleDescriptors.left.disabled && (movingData.option.left || movingData.option.body)) { movingData.comp.setStyle('left', Math.max(0, movingData.style0.left + movingData.dx), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.right && !movingData.styleDescriptors.right.disabled && (movingData.option.right || movingData.option.body)) { movingData.comp.setStyle('right', Math.max(0, movingData.style0.right - movingData.dx), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.width && !movingData.styleDescriptors.width.disabled) { if (movingData.option.left) { if (!!movingData.styleDescriptors.left.disabled && !!movingData.styleDescriptors.right.disabled) { movingData.comp.setStyle('width', Math.max(movingData.comp.measureMinSize().width, movingData.style0.width - movingData.dx * 2), 'px'); } else { movingData.comp.setStyle('width', Math.max(movingData.style0.width - movingData.dx), 'px'); } positionIsChange = true; } if (movingData.option.right) { if (movingData.styleDescriptors.left && !!movingData.styleDescriptors.left.disabled && !!movingData.styleDescriptors.right.disabled) { movingData.comp.setStyle('width', Math.max(movingData.comp.measureMinSize().width, movingData.style0.width + movingData.dx * 2), 'px'); //center align } else { movingData.comp.setStyle('width', Math.max(movingData.comp.measureMinSize().width, movingData.style0.width + movingData.dx), 'px'); } positionIsChange = true; } } if (movingData.styleDescriptors.top && !movingData.styleDescriptors.top.disabled && (movingData.option.top || movingData.option.body)) { movingData.comp.setStyle('top', Math.max(0, movingData.style0.top + movingData.dy), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.bottom && !movingData.styleDescriptors.bottom.disabled && (movingData.option.bottom || movingData.option.body)) { movingData.comp.setStyle('bottom', Math.max(0, movingData.style0.bottom - movingData.dy), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.height && !movingData.styleDescriptors.height.disabled) { if (movingData.option.top) { if (movingData.styleDescriptors.top && !!movingData.styleDescriptors.top.disabled && !!movingData.styleDescriptors.bottom.disabled) { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height - movingData.dy * 2), 'px'); } else { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height - movingData.dy), 'px'); } positionIsChange = true; } if (movingData.option.bottom) { if (movingData.styleDescriptors.top && !!movingData.styleDescriptors.top.disabled && !!movingData.styleDescriptors.bottom.disabled) { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height + movingData.dy * 2), 'px'); } else { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height + movingData.dy), 'px'); } positionIsChange = true; } } this.updatePosition(); movingData.comp.reMeasure(); if (positionIsChange) { this.emit("reposition", { type: 'reposition', component: movingData.comp, movingData: movingData, originEvent: event.originEvent || event, repeatEvent: event }, this); movingData.isChange = true; } if (userAction) { this.emit('moving', { taget: this, type: 'moving', originEvent: event.originEvent || event, target: this, repeatEvent: event }, this); this._updateSnapLines(); this.layoutEditor.$mouseOffsetStatus.children[2].innerHTML = ' Δ' + this.movingData.dx + ', ' + this.movingData.dy; } }; RelativeAnchorEditor.prototype.ev_endMove = function (userAction, event) { if (this.movingData.isChange) { this.emit('change', { type: 'change', target: this, component: this.movingData.comp, originEvent: event.originEvent || event, repeatEvent: event }, this); } if (userAction) { this.emit('endmove', { taget: this, type: 'moving', originEvent: event.originEvent || event, target: this, repeatEvent: event }, this); this.$modal.remove(); this.layoutEditor.$mouseOffsetStatus.children[2].innerHTML = ''; this.movingData.$snapYLines.forEach(function (e) { e.remove(); }); this.movingData.$snapXLines.forEach(function (e) { e.remove(); }); if (this.movingData.nearestXVal <= this.snapDistance) { var firsLineX = this.movingData.nearestX[0]; if (firsLineX.flat & 1) { this.alignLeftDedge(firsLineX.value, this.movingData.body); } else if (firsLineX.flat & 2) { this.alignHorizontalCenter(this.layoutEditor.rootLayout.style.width - 2 * firsLineX.value); } else if (firsLineX.flat & 4) { this.alignRightDedge(this.layoutEditor.rootLayout.style.width - firsLineX.value, this.movingData.body); } } if (this.movingData.nearestYVal <= this.snapDistance) { var firsLineY = this.movingData.nearestY[0]; if (firsLineY.flat & 1) { this.alignTopDedge(firsLineY.value, this.movingData.body); } else if (firsLineY.flat & 2) { this.alignVerticalCenter(this.layoutEditor.rootLayout.style.height - 2 * firsLineY.value); } else if (firsLineY.flat & 4) { this.alignBottomDedge(this.layoutEditor.rootLayout.style.height - firsLineY.value, this.movingData.body); } } } ; this.movingData = undefined; }; RelativeAnchorEditor.prototype._updateSnapLines = function () { return; //todo // as-align-horizontal-lin var nearestYVal = 10000; var nearestY = []; var top = this.component.style.top; var middleY = this.component.style.top + this.component.style.height / 2; var bottom = this.component.style.top + this.component.style.height; var yLines = this.movingData.snapLines.y; var line; var dist; var yIsSmaller; var option = this.movingData.option; for (var i = 0; i < yLines.length; ++i) { line = yLines[i]; if (line.flat & 1 && (option.body || option.top)) { dist = Math.abs(line.value - top); if (dist < nearestYVal) { nearestY = [line]; nearestYVal = dist; yIsSmaller = line.value < top; } else if (dist == nearestYVal && line.value < top == yIsSmaller) { nearestY.push(line); } } else if (line.flat & 2 && option.body) { dist = Math.abs(line.value - middleY); if (dist < nearestYVal) { nearestY = [line]; nearestYVal = dist; yIsSmaller = line.value < middleY; } else if (dist == nearestYVal && line.value < middleY == yIsSmaller) { nearestY.push(line); } } else if (line.flat & 4 && (option.body || option.bottom)) { dist = Math.abs(line.value - bottom); if (dist < nearestYVal) { nearestY = [line]; nearestYVal = dist; yIsSmaller = line.value < bottom; } else if (dist == nearestYVal && line.value < bottom == yIsSmaller) { nearestY.push(line); } } // if } var layoutBound = this.layoutEditor.rootLayout.view.getBoundingClientRect(); var forcegroundBound = this.layoutEditor.$forceground.getBoundingClientRect(); while (this.movingData.$snapYLines.length < nearestY.length) { this.movingData.$snapYLines.push(RelativeAnchorEditor_({ "class": 'as-align-horizontal-line', style: { left: layoutBound.left - forcegroundBound.left + 'px', width: layoutBound.width + 'px' } }).addTo(this.layoutEditor.$forceground)); } while (this.movingData.$snapYLines.length > nearestY.length) { this.movingData.$snapYLines.pop().remove(); } for (var i = 0; i < nearestY.length; ++i) { this.movingData.$snapYLines[i].addStyle('top', layoutBound.left - forcegroundBound.left + nearestY[i].value + 'px'); if (nearestYVal <= this.snapDistance) { this.movingData.$snapYLines[i].addClass('as-active'); } else { this.movingData.$snapYLines[i].removeClass('as-active'); } } this.movingData.nearestY = nearestY; this.movingData.nearestYVal = nearestYVal; var nearestXVal = 10000; var nearestX = []; var left = this.component.style.left; var middleX = this.component.style.left + this.component.style.width / 2; var right = this.component.style.left + this.component.style.width; var xLines = this.movingData.snapLines.x; var line; var dist; var xIsSmaller; for (var i = 0; i < xLines.length; ++i) { line = xLines[i]; if (line.flat & 1 && (option.body || option.left)) { dist = Math.abs(line.value - left); if (dist < nearestXVal) { nearestX = [line]; nearestXVal = dist; xIsSmaller = line.value < left; } else if (dist == nearestXVal && line.value < left == xIsSmaller) { nearestX.push(line); } } else if (line.flat & 2 && option.body) { dist = Math.abs(line.value - middleX); if (dist < nearestXVal) { nearestX = [line]; nearestXVal = dist; xIsSmaller = line.value < middleX; } else if (dist == nearestXVal && line.value < middleX == xIsSmaller) { nearestX.push(line); } } else if (line.flat & 4 && (option.body || option.right)) { dist = Math.abs(line.value - right); if (dist < nearestXVal) { nearestX = [line]; nearestXVal = dist; xIsSmaller = line.value < right; } else if (dist == nearestXVal && line.value < right == xIsSmaller) { nearestX.push(line); } } // if } var layoutBound = this.layoutEditor.rootLayout.view.getBoundingClientRect(); var forcegroundBound = this.layoutEditor.$forceground.getBoundingClientRect(); while (this.movingData.$snapXLines.length < nearestX.length) { this.movingData.$snapXLines.push(RelativeAnchorEditor_({ "class": 'as-align-vertical-line', style: { top: layoutBound.top - forcegroundBound.top + 'px', height: layoutBound.height + 'px' } }).addTo(this.layoutEditor.$forceground)); } while (this.movingData.$snapXLines.length > nearestX.length) { this.movingData.$snapXLines.pop().remove(); } for (var i = 0; i < nearestX.length; ++i) { this.movingData.$snapXLines[i].addStyle('left', layoutBound.left - forcegroundBound.left + nearestX[i].value + 'px'); if (nearestXVal <= this.snapDistance) { this.movingData.$snapXLines[i].addClass('as-active'); } else { this.movingData.$snapXLines[i].removeClass('as-active'); } } this.movingData.nearestX = nearestX; this.movingData.nearestXVal = nearestXVal; }; RelativeAnchorEditor.prototype.alignLeftDedge = function (leftValue, keepSize) { if (!this.component) return; var lLeft = this.component.getStyle('left', 'px'); var lRight = this.component.getStyle('right', 'px'); var currentHAlign = this.component.getStyle('hAlign'); switch (currentHAlign) { case 'left': this.component.setStyle('left', leftValue, 'px'); break; case 'fixed': this.component.setStyle('left', leftValue, 'px'); if (keepSize) { this.component.setStyle('right', lRight - (leftValue - lLeft), 'px'); } break; case 'right': this.component.setStyle('right', this.component.getStyle('right') + (leftValue - this.component.getStyle('left')), 'px'); break; case 'center': var center = this.component.getStyle('left', 'px') + this.component.getStyle('width', 'px') / 2; if (center - this.component.measureMinSize().width / 2 >= leftValue) { this.component.setStyle('width', (center - leftValue) * 2, 'px'); } break; } this.updatePosition(); }; RelativeAnchorEditor.prototype.alignRightDedge = function (rightValue, keepSize) { if (!this.component) return; var currentHAlign = this.component.getStyle('hAlign'); var lLeft = this.component.getStyle('left', 'px'); var lRight = this.component.getStyle('right', 'px'); var dX = lRight - rightValue; switch (currentHAlign) { case 'right': this.component.setStyle('right', rightValue, 'px'); break; case 'fixed': this.component.setStyle('right', rightValue, 'px'); if (keepSize) { this.component.setStyle('left', lLeft - dX, 'px'); } break; case 'left': this.component.setStyle('left', lLeft + dX, 'px'); break; case 'center': if (!keepSize) { var center = this.component.getStyle('right', 'px') - this.component.getStyle('width', 'px') / 2; if (center + this.component.measureMinSize().width / 2 <= rightValue) { this.component.setStyle('width', (rightValue - center) * 2, 'px'); } } break; } this.updatePosition(); }; RelativeAnchorEditor.prototype.alignHorizontalCenter = function (centerValue) { // right - left if (!this.component) return; var currentHAlign = this.component.getStyle('hAlign', 'px'); var cRight = this.component.getStyle('right', 'px'); var cLeft = this.component.getStyle('left', 'px'); var newLeft = (cRight + cLeft - centerValue) / 2; var newRight = (cRight + cLeft + centerValue) / 2; switch (currentHAlign) { case 'right': this.component.setStyle('right', newRight, 'px'); break; case 'fixed': this.component.setStyle('left', newLeft, 'px'); this.component.setStyle('right', newRight, 'px'); break; case 'left': this.component.setStyle('left', newLeft, 'px'); break; case 'center': //noway to align center break; } this.updatePosition(); }; RelativeAnchorEditor.prototype.equaliseWidth = function (widthValue) { if (!this.component) return; this.component.reMeasure(); var currentHAlign = this.component.getStyle('hAlign'); var cRight = this.component.getStyle('right', 'px'); var cLeft = this.component.getStyle('left', 'px'); var cWidth = this.component.getStyle('width', 'px'); var dw = widthValue - cWidth; switch (currentHAlign) { case 'right': if (cLeft < dw) this.component.setStyle('right', cRight - (dw - cLeft), 'px'); this.component.setStyle('width', widthValue, 'px'); break; case 'left': if (cRight < dw) this.component.setStyle('left', cLeft - (dw - cWidth), 'px'); this.component.setStyle('width', widthValue, 'px'); break; case 'fixed': if (dw > cRight) { this.component.setStyle('right', 0, 'px'); this.component.setStyle('left', cLeft - (dw - cWidth), 'px'); } else { this.component.setStyle('right', cRight - dw, 'px'); } break; case 'center': this.component.setStyle('width', widthValue, 'px'); break; } this.updatePosition(); }; RelativeAnchorEditor.prototype.alignTopDedge = function (topValue, keepSize) { if (!this.component) return; var currentVAlign = this.component.getStyle('vAlign'); var lTop = this.component.style.top; var lBottom = this.component.style.bottom; switch (currentVAlign) { case 'top': this.component.setStyle('top', topValue, 'px'); break; case 'fixed': this.component.setStyle('top', topValue, 'px'); if (keepSize) { this.component.setStyle('bottom', lBottom - (topValue - lTop), 'px'); } break; case 'bottom': this.component.setStyle('bottom', this.component.getStyle('bottom', 'px') + (topValue - this.component.getStyle('top')), 'px'); break; case 'center': var center = this.component.getStyle('top', 'px') + this.component.getStyle('height', 'px') / 2; if (center - this.component.measureMinSize().height / 2 >= topValue) { this.component.setStyle('height', (center - topValue) * 2, 'px'); } break; } this.updatePosition(); }; RelativeAnchorEditor.prototype.alignBottomDedge = function (bottomValue, keepSize) { if (!this.component) return; var currentVAlign = this.component.getStyle('vAlign'); var lBottom = this.component.getStyle('bottom', 'px'); var lTop = this.component.getStyle('top', 'px'); switch (currentVAlign) { case 'bottom': this.component.setStyle('bottom', bottomValue, 'px'); break; case 'fixed': this.component.setStyle('bottom', bottomValue, 'px'); if (keepSize) { this.component.setStyle('top', lTop - (bottomValue - lBottom), 'px'); } break; case 'top': var dY = lBottom - bottomValue; this.component.setStyle('top', lTop + dY, 'px'); break; case 'center': var center = this.component.getStyle('bottom', 'px') - this.component.getStyle('height', 'px') / 2; if (center + this.component.measureMinSize().height / 2 <= bottomValue) { this.component.setStyle('height', (bottomValue - center) * 2, 'px'); } break; } this.updatePosition(); }; RelativeAnchorEditor.prototype.alignVerticalCenter = function (centerValue) { // bottom - top if (!this.component) return; var currentVAlign = this.component.getStyle('vAlign'); var cBottom = this.component.getStyle('bottom', 'px'); var cTop = this.component.getStyle('top', 'px'); var newTop = (cBottom + cTop - centerValue) / 2; var newBottom = (cBottom + cTop + centerValue) / 2; switch (currentVAlign) { case 'bottom': this.component.setStyle('bottom', newBottom, 'px'); break; case 'fixed': this.component.setStyle('top', newTop, 'px'); this.component.setStyle('bottom', newBottom, 'px'); break; case 'top': this.component.setStyle('top', newTop, 'px'); break; case 'center': //noway to align center break; } this.updatePosition(); }; RelativeAnchorEditor.prototype.equaliseHeight = function (heightValue) { if (!this.component) return; var currentVAlign = this.component.getStyle('vAlign'); var cBottom = this.component.getStyle('bottom', 'px'); var cTop = this.component.getStyle('top', 'px'); var cHeight = this.component.getStyle('height', 'px'); var dh = heightValue - cHeight; switch (currentVAlign) { case 'bottom': if (cTop < dh) this.component.setStyle('bottom', cBottom - (dh - cTop), 'px'); this.component.setStyle('height', heightValue, 'px'); break; case 'top': if (cBottom < dh) this.component.setStyle('top', cTop - (dh - cHeight), 'px'); this.component.setStyle('height', heightValue, 'px'); break; case 'fixed': if (dh > cBottom) { this.component.setStyle('bottom', 0, 'px'); this.component.setStyle('top', cTop - (dh - cHeight), 'px'); } else { this.component.setStyle('bottom', cBottom - dh, 'px'); } break; case 'center': this.component.setStyle('height', heightValue, 'px'); break; } this.updatePosition(); }; /** * @returns {{x:Array<{components:Array, value:Number}>, y:Array<{components:Array, value:Number}, flat:Number>}} */ RelativeAnchorEditor.prototype.getSnapLines = function () { if (!this.component.parent) return { x: [], y: [] }; var children = this.component.parent.children; var xComp = []; var yComp = []; var comp; for (var i = 0; i < children.length; ++i) { comp = children[i]; if (this.component == comp) continue; comp.reMeasure(); xComp.push({ component: comp, value: comp.style.left, flat: 1 }); xComp.push({ component: comp, value: comp.style.left + comp.style.width / 2, flat: 2 }); xComp.push({ component: comp, value: comp.style.left + comp.style.width, flat: 4 }); yComp.push({ component: comp, value: comp.style.top, flat: 1 }); yComp.push({ component: comp, value: comp.style.top + comp.style.height / 2, flat: 2 }); yComp.push({ component: comp, value: comp.style.top + comp.style.height, flat: 4 }); } var cmp = function cmp(a, b) { return a.value - b.value; }; xComp.sort(cmp); yComp.sort(cmp); var reducer = function reducer(ac, cr) { if (ac.last.value != cr.value) { ac.last = { components: [cr.component], value: cr.value, flat: 0 }; ac.result.push(ac.last); } else { if (ac.last.components.indexOf(cr.component) < 0) ac.last.components.push(cr.component); } ac.last.flat = ac.last.flat | cr.flat; return ac; }; return { x: xComp.reduce(reducer, { result: [], last: { value: -1000000, components: [], flat: 0 } }).result, y: yComp.reduce(reducer, { result: [], last: { value: -1000000, components: [], flat: 0 } }).result }; }; RelativeAnchorEditor.prototype.getCmdGroupTree = function () { return RelativeAnchorEditorCmdTree; }; RelativeAnchorEditor.prototype.getCmdDescriptor = function (name) { return RelativeAnchorEditorCmdDescriptors[name]; }; RelativeAnchorEditor.prototype.execCmd = function () { return this.cmdRunner.invoke.apply(this.cmdRunner, arguments); }; /* harmony default export */ var anchoreditors_RelativeAnchorEditor = (RelativeAnchorEditor); // CONCATENATED MODULE: ./js/layouts/RelativeLayout.js var RelativeLayout_ = FCore._; function RelativeLayout() { core_BaseLayout.call(this); } OOP["a" /* default */].mixClass(RelativeLayout, core_BaseLayout); RelativeLayout.prototype.tag = 'RelativeLayout'; RelativeLayout.prototype.menuIcon = 'span.mdi.mdi-relative-scale'; RelativeLayout.prototype.TOP_CLASS_NAME = 'as-relative-layout'; RelativeLayout.prototype.SUPPORT_STYLE_NAMES = ['width', 'height']; //, 'left', 'right', 'top', 'bottom']; RelativeLayout.prototype.getAnchorConstructor = function () { return anchors_RelativeAnchor; }; RelativeLayout.prototype.getAnchorEditorConstructor = function () { return anchoreditors_RelativeAnchorEditor; }; RelativeLayout.prototype.render = function () { return RelativeLayout_({ "class": this.TOP_CLASS_NAME }); }; RelativeLayout.prototype.onAddChild = function (child, index) { var anchor = new anchors_RelativeAnchor(); anchor.attachChild(child); if (index == -1 || !this.view.childNodes[index]) { this.view.addChild(anchor.view); } else { this.view.addChildBefore(anchor.view, this.view.childNodes[index]); } }; RelativeLayout.prototype.onRemoveChild = function (child, index) { var anchor = child.anchor; anchor.detachChild(); anchor.view.remove(); }; /** * @param {BaseComponent} component * @returns {BaseComponent} auto set disable style */ RelativeLayout.prototype.reMeasureChild = function (component) { if (window.ABSOL_DEBUG && !window.remesureChecked) { window.remesureChecked = true; console.trace("Remeasure was removed"); } return; switch (component.style.hAlign) { case "left": component.setStyle('right', this.style.width - component.style.left - component.style.width); break; case "right": component.setStyle('left', this.style.width - component.style.right - component.style.width); break; case "center": component.setStyle('right', (this.style.width - component.style.width) / 2); component.setStyle('left', (this.style.width - component.style.width) / 2); break; case "fixed": component.setStyle('width', this.style.width - component.style.right - component.style.left); break; } switch (component.style.vAlign) { case "top": component.setStyle('bottom', this.style.height - component.style.top - component.style.height); break; case "bottom": component.setStyle('top', this.style.height - component.style.bottom - component.style.height); break; case "center": component.setStyle('bottom', (this.style.height - component.style.height) / 2); component.setStyle('top', (this.style.height - component.style.height) / 2); break; case "fixed": component.setStyle('height', this.style.height - component.style.bottom - component.style.top); break; } }; /** * @param {BaseComponent} child, * @param {Number} posX * @param {Number} posY */ RelativeLayout.prototype.addChildByPosition = function (child, posX, posY) { this.addChild(child); posX = Math.max(0, Math.min(this.style.width - child.style.width, posX)); posY = Math.max(0, Math.min(this.style.height - child.style.height, posY)); child.setStyle('left', posX); child.setStyle('top', posY); }; /* harmony default export */ var layouts_RelativeLayout = (RelativeLayout); // CONCATENATED MODULE: ./js/R.js /* harmony default export */ var R = ({ LAYOUT_EDITOR: 'LAYOUT_EDITOR', ATTRIBUTE_EDITOR: 'ATTRIBUTE_EDITOR', EVENT_EDITOR: 'EVENT_EDITOR', STYLE_EDITOR: 'STYLE_EDITOR', ALL_PROPERTY_EDITOR: 'ALL_PROPERTY_EDITOR', COMPONENT_PROPERTIES_EDITOR: 'COMPONENT_PROPERTIES_EDITOR', COMPONENT_OUTLINE: 'COMPONENT_OUTLINE', COMPONENT_PICKER: 'COMPONENT_PICKER', CMD_TOOL: 'CMD_TOOL', UNDO_HISTORY: 'UNDO_HISTORY', FORM_EDITOR: 'FORM_EDITOR', HAS_CMD_EDITOR: "HAS_CMD_EDITOR", PROJECT_EXPLORER: 'PROJECT_EXPLORER', PLUGINS: { COMPILE_FUNCTION: 'COMPILE_FUNCTION', COMPONENT_PICKER_VIEW: 'COMPONENT_PICKER_VIEW', BUILD_COMPONENT: 'BUILD_COMPONENT', PROJECT_EXPLORER: 'PROJECT_EXPLORER', LOAD_CONTENT_DATA: 'LOAD_CONTENT_DATA', SAVE_CONTENT_DATA: 'SAVE_CONTENT_DATA' }, CLIPBOARD: { COMPONENTS: 'COMPONENTS' }, APP: 'ABSOL_FORM_EDITOR', VERSION: '0.6.0', STATUS_BAR_ELT: 'STATUS_BAR_ELT' }); // CONCATENATED MODULE: ./js/components/Button.js var Button_ = FCore._; /*** * @extends ScalableComponent * @constructor */ function Button() { core_ScalableComponent.call(this); } OOP["a" /* default */].mixClass(Button, core_ScalableComponent); Button.prototype.tag = "Button"; Button.prototype.menuIcon = "span.mdi.mdi-alpha-b-box"; Button.prototype.setStyleFont = components_Text.prototype.setStyleFont; Button.prototype.getStyleFontDescriptor = components_Text.prototype.getStyleFontDescriptor; Button.prototype.setStyleTextSize = components_Text.prototype.setStyleTextSize; Button.prototype.getStyleTextSizeDescriptor = components_Text.prototype.getStyleTextSizeDescriptor; Button.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.attributes.text = this.attributes.name; this.attributes.icon = 'span.mdi.mdi-format-font'; this.style.colorTheme = 'default'; this.style.font = 'none'; }; Button.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.call(this); var self = this; this.view.on('click', function (event) { self.emit('click', { type: 'click', target: this, originEvent: event.originEvent || event }, self); }); }; Button.prototype.render = function () { return Button_('flexiconbutton'); }; Button.prototype.setStyleHeight = function (value) { var res = core_ScalableComponent.prototype.setStyleHeight.call(this, value); this.view.childNodes[0].addStyle('height', value - 2 + 'px'); return res; }; Button.prototype.setStyleColorTheme = function (value) { var view = this.view; ['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', 'link', 'default'].forEach(function (name) { view.removeClass(name); }); if (['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', 'link', 'default'].indexOf(value) < 0) value = 'default'; view.addClass(value); return value; }; Button.prototype.getStyleColorThemeDescriptor = function (value) { return { type: 'enum', values: ['default', 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', 'link'] }; }; Button.prototype.setAttributeText = function (value) { this.view.text = value; return value; }; Button.prototype.setAttributeIcon = function (value) { this.view.icon = value; return value; }; Button.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(['text', 'icon']); }; Button.prototype.getAcceptsStyleNames = function () { return core_ScalableComponent.prototype.getAcceptsStyleNames.call(this).concat(['font', 'textSize', 'colorTheme']); }; Button.prototype.getAttributeTextDescriptor = function () { return { type: "text", sign: 'SimpleText' }; }; Button.prototype.getAttributeIconDescriptor = function () { return { type: "icon", sign: "SimpleIcon" }; }; Button.prototype.getAcceptsEventNames = function () { return core_ScalableComponent.prototype.getAcceptsEventNames.call(this).concat(['click']); }; Button.prototype.measureMinSize = function () { var fontSize = this.view.getFontSize(); return { width: fontSize * 2 + 2, height: fontSize * 2 + 2 }; }; Object.defineProperty(Button.prototype, 'text', { configurable: true, set: function set(value) { this.view.value = value; }, get: function get() { return this.view.value; } }); /* harmony default export */ var components_Button = (Button); // CONCATENATED MODULE: ./js/core/ContentScalelessComponent.js var ContentScalelessComponent_ = FCore._; var ContentScalelessComponent_$ = FCore.$; /*** * @extends ScalableComponent * @constructor */ function ContentScalelessComponent() { core_ScalableComponent.call(this); } Object.defineProperties(ContentScalelessComponent.prototype, Object.getOwnPropertyDescriptors(core_ScalableComponent.prototype)); ContentScalelessComponent.prototype.constructor = ContentScalelessComponent; ContentScalelessComponent.prototype.tag = "ContentScalelessComponent"; ContentScalelessComponent.prototype.BOX_ALIGN_CLASSES = { lefttop: 'as-align-left-top', centertop: 'as-align-center-top', righttop: 'as-align-right-top', leftcenter: 'as-align-left-center', centercenter: 'as-align-center-center', rightcenter: 'as-align-right-center', leftbottom: 'as-align-left-bottom', centerbottom: 'as-align-center-bottom', rightbottom: 'as-align-right-bottom' }; ContentScalelessComponent.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.style.boxAlign = 'lefttop'; }; ContentScalelessComponent.prototype.onCreated = function () { this.$cell = ContentScalelessComponent_$('.as-component-content-scaleless-cell', this.view); this.$content = this.$cell.childNodes[0]; core_ScalableComponent.prototype.onCreated.call(this); }; ContentScalelessComponent.prototype.render = function () { return ContentScalelessComponent_({ "class": 'as-component-content-scaleless', child: { "class": 'as-component-content-scaleless-cell', child: this.renderContent() } }); }; ContentScalelessComponent.prototype.renderContent = function () { throw new Error('Not Implement!'); }; ContentScalelessComponent.prototype.getAcceptsStyleNames = function () { return core_ScalableComponent.prototype.getAcceptsStyleNames.call(this).concat(['boxAlign']); }; ContentScalelessComponent.prototype.getStyleBoxAlignDescriptor = function () { return { type: 'boxAlign' }; }; ContentScalelessComponent.prototype.setStyleBoxAlign = function (value) { var accepts = Object.keys(this.BOX_ALIGN_CLASSES); if (accepts.indexOf(value) < 0) value = 'lefttop'; var lastClass = this.BOX_ALIGN_CLASSES[this.style.boxAlign]; if (lastClass) this.view.removeClass(lastClass); this.view.addClass(this.BOX_ALIGN_CLASSES[value]); return value; }; ContentScalelessComponent.prototype.measureMinSize = function () { var bound = this.$content.getBoundingClientRect(); return { width: bound.width, height: bound.height }; }; /* harmony default export */ var core_ContentScalelessComponent = (ContentScalelessComponent); // CONCATENATED MODULE: ./js/components/Checkbox.js var Checkbox_ = FCore._; var Checkbox_$ = FCore.$; /*** * @extends ContentScalelessComponent * @constructor */ function Checkbox_CheckBox() { core_ContentScalelessComponent.call(this); } OOP["a" /* default */].mixClass(Checkbox_CheckBox, core_ContentScalelessComponent); Checkbox_CheckBox.prototype.tag = "CheckBox"; Checkbox_CheckBox.prototype.menuIcon = "span.mdi.mdi-check-box-outline"; Checkbox_CheckBox.prototype.onCreate = function () { core_ContentScalelessComponent.prototype.onCreate.call(this); this.style.width = 18; this.style.height = 18; this.style.vAlign = 'top'; this.style.hAlign = 'left'; this.style.textHAlign = 'center'; this.style.textVAlign = 'center'; this.attributes.checked = false; }; Checkbox_CheckBox.prototype.renderContent = function () { return Checkbox_('checkboxbutton'); }; Checkbox_CheckBox.prototype.onCreated = function () { core_ContentScalelessComponent.prototype.onCreated.call(this); var self = this; this.view.on('change', function () { self.attributes.checked = this.checked; this.emit('change', { type: "change", checked: self.attributes.checked, target: this }, this); }); }; Checkbox_CheckBox.prototype.setAttributeChecked = function (value) { this.$content.checked = !!value; return this.$content.checked; }; Checkbox_CheckBox.prototype.getAttributeCheckedDescriptor = function () { return { type: "bool", sign: "NotDependentBool" }; }; Checkbox_CheckBox.prototype.getAcceptsAttributeNames = function () { return core_ContentScalelessComponent.prototype.getAcceptsAttributeNames.call(this).concat(["checked"]); }; Checkbox_CheckBox.prototype.getAcceptsEventNames = function () { return core_ContentScalelessComponent.prototype.getAcceptsEventNames.call(this).concat(['change']); }; Checkbox_CheckBox.prototype.measureMinSize = function () { return { width: 18, height: 18 }; }; Checkbox_CheckBox.prototype.getDataBindingDescriptor = function () { var thisC = this; return { set: function set(value) { return thisC.setAttribute('checked', !!value); }, get: function get() { return thisC.getAttribute('checked'); }, configurable: true }; }; /* harmony default export */ var Checkbox = (Checkbox_CheckBox); // CONCATENATED MODULE: ./js/components/ComboBox.js var ComboBox_ = FCore._; /*** * @extends ScalableComponent * @constructor */ function ComboBox() { core_ScalableComponent.call(this); } OOP["a" /* default */].mixClass(ComboBox, core_ScalableComponent); ComboBox.prototype.tag = "ComboBox"; ComboBox.prototype.menuIcon = 'span.mdi.mdi-arrow-down-drop-circle-outline'; ComboBox.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.attributes.list = [{ text: '0', value: '0' }, { text: '1', value: '1' }, { text: '2', value: '2' }, { text: '3', value: '3' }]; this.attributes.value = '0'; Object.defineProperty(this.attributes, 'text', { get: function get() { if (this.list) { for (var i = 0; i < this.list.length; ++i) { if (this.list[i].value == this.value) return this.list[i].text; } return ''; } else { return ""; } } }); }; ComboBox.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.call(this); var self = this; this.bindAttribute('searchable', 'enableSearch'); this.view.on('minwidthchange', function (event) { if (!(self.style.width > event.value)) { self.setStyle('width', event.value); } }).on('change', function () { self.attributes.value = this.value; self.emit("change", { type: 'change', value: this.value }, self); }); this.attributes.value = this.view.value; }; ComboBox.prototype.render = function () { return ComboBox_('selectmenu'); }; ComboBox.prototype.setAttributeList = function (value) { this.view.items = value; return this.view.items; }; ComboBox.prototype.getAttributeList = function () { return this.view.items.map(function (item) { return { text: item.text, value: item.value }; }); }; ComboBox.prototype.setAttributeValue = function (value) { this.view.value = value; return this.view.value; }; ComboBox.prototype.setAttributeText = function (value) { return value; }; ComboBox.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(["list", 'value', 'text', 'searchable']); }; ComboBox.prototype.getAttributeListDescriptor = function () { return { type: 'SelectList' }; }; ComboBox.prototype.getAttributeValueDescriptor = function () { return { type: 'text' }; }; ComboBox.prototype.getAttributeTextDescriptor = function () { return { type: 'const', value: this.getAttribute('text') }; }; ComboBox.prototype.getAttributeSearchableDescriptor = function () { return { type: 'bool' }; }; ComboBox.prototype.getAcceptsEventNames = function () { return core_ScalableComponent.prototype.getAcceptsEventNames.call(this).concat(['change']); }; ComboBox.prototype.measureMinSize = function () { var minWidthStyle = parseFloat(this.view.getComputedStyleValue('min-width').replace('px')); return { width: Math.max(minWidthStyle, 24), height: 25 }; }; ComboBox.prototype.getDataBindingDescriptor = function () { var thisC = this; var subObj = {}; Object.defineProperties(subObj, { value: { set: function set(value) { thisC.setAttribute('value', value); }, get: function get() { return thisC.getAttribute('value'); } }, list: { get: function get() { return thisC.getAttribute('list'); }, set: function set(value) { thisC.setAttribute('list', value); } } }); return { set: function set(value) { Object.assign(subObj, value); }, get: function get() { return subObj; } }; }; /* harmony default export */ var components_ComboBox = (ComboBox); // CONCATENATED MODULE: ./js/components/DateInput.js var components_DateInput_ = FCore._; /*** * @extends ScalableComponent * @constructor */ function DateInput_DateInput() { core_ScalableComponent.call(this); } OOP["a" /* default */].mixClass(DateInput_DateInput, core_ScalableComponent); DateInput_DateInput.prototype.tag = "DateInput"; DateInput_DateInput.prototype.menuIcon = "span.mdi.mdi-calendar-edit"; DateInput_DateInput.prototype.SUPPORT_STYLE_NAMES = ['top', 'left', 'right', 'top', 'bottom', 'width', 'height']; DateInput_DateInput.prototype.SUPPORT_ATTRIBUTE_NAMES = ['value']; DateInput_DateInput.prototype.SUPPORT_EVENT_NAMES = ['change']; DateInput_DateInput.prototype.render = function () { return components_DateInput_('calendarinput'); }; DateInput_DateInput.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.attributes.value = null; this.style.width = 100; this.style.height = 30; }; DateInput_DateInput.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.call(this); var self = this; this.view.on('change', function (event) { self.attributes.value = this.value; self.emit('change', { type: 'change', value: this.value }, self); }); }; DateInput_DateInput.prototype.setAttributeValue = function (value) { if (value instanceof Date) this.view.value = value;else if (typeof value == 'string' || typeof value == "number") { this.attributes.value = new Date(value); this.view.value = this.attributes.value; } else { this.attributes.value = null; this.view.value = this.attributes.value; } return this.view.value; }; DateInput_DateInput.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(['value']); }; DateInput_DateInput.prototype.getAttributeValueDescriptor = function () { return { type: 'date', nullable: true, defaultValue: beginOfDay(new Date()), sign: 'SimpleDate' }; }; DateInput_DateInput.prototype.getAcceptsEventNames = function () { return core_ScalableComponent.prototype.getAcceptsEventNames.call(this).concat(['change']); }; DateInput_DateInput.prototype.measureMinSize = function () { return { width: 75, height: 16 }; }; DateInput_DateInput.prototype.getDataBindingDescriptor = function () { var thisC = this; return { configurable: true, set: function set(value) { thisC.setAttribute('value', value); }, get: function get() { return thisC.getAttribute('value'); } }; }; /* harmony default export */ var components_DateInput = (DateInput_DateInput); // CONCATENATED MODULE: ./js/components/Image.js var Image_ = FCore._; /** * @extends ScalableComponent * @constructor */ function Image_Image() { core_ScalableComponent.call(this); this.naturalWidth = 0; this.naturalHeight = 0; this.loadedSync = Promise.resolve([0, 0]); } OOP["a" /* default */].mixClass(Image_Image, core_ScalableComponent); Image_Image.prototype.tag = "Image"; Image_Image.prototype.menuIcon = "span.mdi.mdi-image-outline"; Image_Image.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.attributes.src = ''; }; Image_Image.prototype.render = function () { return Image_('img'); }; Image_Image.prototype.setAttributeSrc = function (value) { var self = this; this.view.src = value; this.loadedSync = Dom["b" /* default */].waitImageLoaded(this.view).then(function () { self.naturalWidth = self.view.naturalWidth || 0; self.naturalHeight = self.view.naturalHeight || 0; return [self.naturalWidth, self.naturalHeight]; }); return value; }; Image_Image.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(['src', 'naturalSize']); }; Image_Image.prototype.getAttributeSrcDescriptor = function () { return { type: "text", "long": true, sign: 'SimpleUrl' }; }; Image_Image.prototype.getAttributeNaturalSizeDescriptor = function () { return { type: 'const', value: this.loadedSync.then(function (wh) { return wh.join(' x '); }) }; }; Image_Image.prototype.getDataBindingDescriptor = function () { var thisC = this; return { configurable: true, set: function set(value) { thisC.setAttribute('src', value); }, get: function get() { return thisC.getAttribute('src'); } }; }; /* harmony default export */ var components_Image = (Image_Image); // CONCATENATED MODULE: ./js/components/Label.js var Label_ = FCore._; var Label_$ = FCore.$; /*** * @extends ContentScalelessComponent * @constructor */ function Label() { core_ContentScalelessComponent.call(this); } OOP["a" /* default */].mixClass(Label, core_ContentScalelessComponent); Label.prototype.tag = "Label"; Label.prototype.menuIcon = 'span.mdi.mdi-label-outline'; Label.prototype.onCreate = function () { core_ContentScalelessComponent.prototype.onCreate.call(this); this.attributes.text = this.attributes.name; this.style.height = 15; this.style.font = undefined; this.style.fontStyle = undefined; this.style.textSize = 0; this.style.textColor = 'black'; }; Label.prototype.getAcceptsStyleNames = function () { return core_ContentScalelessComponent.prototype.getAcceptsStyleNames.call(this).concat(['font', 'fontStyle', 'textSize', 'textColor']); }; Label.prototype.setStyleFont = components_Text.prototype.setStyleFont; Label.prototype.getStyleFontDescriptor = components_Text.prototype.getStyleFontDescriptor; Label.prototype.setStyleFontStyle = components_Text.prototype.setStyleFontStyle; Label.prototype.getStyleFontStyleDescriptor = components_Text.prototype.getStyleFontStyleDescriptor; Label.prototype.setStyleTextSize = components_Text.prototype.setStyleTextSize; Label.prototype.getStyleTextSizeDescriptor = components_Text.prototype.getStyleTextSizeDescriptor; Label.prototype.setStyleTextColor = components_Text.prototype.setStyleTextColor; Label.prototype.getStyleTextColorDescriptor = components_Text.prototype.getStyleTextColorDescriptor; Label.prototype.renderContent = function () { return Label_('label'); }; Label.prototype.setAttributeText = function (value) { this.$content.clearChild().addChild(Label_({ text: value })); return value; }; Label.prototype.getAcceptsAttributeNames = function () { return core_ContentScalelessComponent.prototype.getAcceptsAttributeNames.call(this).concat(["text"]); }; Label.prototype.getAttributeTextDescriptor = function () { return { type: "text", sign: "SimpleText" }; }; Label.prototype.getDataBindingDescriptor = function () { var thisC = this; return { configurable: true, get: function get() { return thisC.getAttribute('text'); }, set: function set(value) { thisC.setAttribute('text', value); } }; }; /* harmony default export */ var components_Label = (Label); // CONCATENATED MODULE: ./js/components/NumberInput.js var components_NumberInput_ = FCore._; function NumberInput_NumberInput() { core_ScalableComponent.call(this); } Object.defineProperties(NumberInput_NumberInput.prototype, Object.getOwnPropertyDescriptors(core_ScalableComponent.prototype)); NumberInput_NumberInput.prototype.constructor = NumberInput_NumberInput; NumberInput_NumberInput.prototype.tag = "NumberInput"; NumberInput_NumberInput.prototype.menuIcon = 'span.mdi.mdi-numeric-2-box-outline'; NumberInput_NumberInput.prototype.SUPPORT_ATTRIBUTE_NAMES = ['value']; NumberInput_NumberInput.prototype.SUPPORT_EVENT_NAMES = ['change']; NumberInput_NumberInput.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); }; NumberInput_NumberInput.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.call(this); var self = this; this.view.on('change', function (event) { self.attributes.value = event.value; if (self.events.change) console.log("TODO: exec", self.events.change); }); this.view._debug = true; //load default value from view this.attributes.min = this.view.min; this.attributes.max = this.view.max; this.attributes.value = this.view.value; this.attributes.decimalSeparator = this.view.decimalSeparator; this.attributes.thousandsSeparator = this.view.thousandsSeparator; this.attributes.floatFixed = this.view.floatFixed; }; NumberInput_NumberInput.prototype.render = function () { return components_NumberInput_('numberinput'); }; NumberInput_NumberInput.prototype.setAttributeValue = function (value) { this.view.value = value; this.attributes.min = this.view.min == -Infinity ? null : this.view.min; this.attributes.max = this.view.max == Infinity ? null : this.view.max; return this.view.value; }; NumberInput_NumberInput.prototype.setAttributeDecimalSerapator = function (value) { this.view.decimalSerapator = value; return this.view.decimalSerapator; }; NumberInput_NumberInput.prototype.setAttributeFloatFixed = function (value) { this.view.floatFixed = value; return this.view.floatFixed; }; NumberInput_NumberInput.prototype.setAttributeMax = function (value) { if (value === null) this.view.max = Infinity;else this.view.max = value; this.attributes.min = this.view.min == -Infinity ? null : this.view.min; this.attributes.value = this.view.value; return value; }; NumberInput_NumberInput.prototype.setAttributeMin = function (value) { if (value === null) this.view.min = -Infinity;else this.view.min = value; this.attributes.max = this.view.max == Infinity ? null : this.view.max; this.attributes.value = this.view.value; return value; }; NumberInput_NumberInput.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(["value", "floatFixed", 'min', 'max']); }; NumberInput_NumberInput.prototype.getAttributeValueDescriptor = function () { return { type: "number", max: this.attributes.max, min: this.attributes.min }; }; NumberInput_NumberInput.prototype.getAttributeFloatFixedDescriptor = function () { return { type: "number", max: 100, min: -1 }; }; NumberInput_NumberInput.prototype.getAttributeMinDescriptor = function () { return { type: "number", nullable: true, defaultValue: -Infinity }; }; NumberInput_NumberInput.prototype.getAttributeMaxDescriptor = function () { return { type: "number", nullable: true, defaultValue: Infinity }; }; NumberInput_NumberInput.prototype.getAcceptsEventNames = function () { return core_ScalableComponent.prototype.getAcceptsEventNames.call(this).concat(['change']); }; NumberInput_NumberInput.prototype.getDataBindingDescriptor = function () { var thisC = this; return { configurable: true, set: function set(value) { thisC.setAttribute('value', value); }, get: function get() { return this.getAttribute('value'); } }; }; /* harmony default export */ var components_NumberInput = (NumberInput_NumberInput); // CONCATENATED MODULE: ./js/components/Radio.js var components_Radio_ = FCore._; var components_Radio_$ = FCore.$; function components_Radio_Radio() { core_ContentScalelessComponent.call(this); } Object.defineProperties(components_Radio_Radio.prototype, Object.getOwnPropertyDescriptors(core_ContentScalelessComponent.prototype)); components_Radio_Radio.prototype.constructor = components_Radio_Radio; components_Radio_Radio.prototype.tag = "Radio"; components_Radio_Radio.prototype.menuIcon = "span.mdi.mdi-radiobox-marked"; components_Radio_Radio.prototype.onCreate = function () { core_ContentScalelessComponent.prototype.onCreate.call(this); this.style.width = 18; this.style.height = 18; this.style.vAlign = 'top'; this.style.hAlign = 'left'; this.style.textHAlign = 'center'; this.style.textVAlign = 'center'; this.attributes.checked = false; this.attributes.value = ''; this.attributes.groupName = 'Radio_group_' + this.constructor.count; }; components_Radio_Radio.prototype.onCreated = function () { core_ContentScalelessComponent.prototype.onCreated.call(this); OOP["a" /* default */].drillProperty(this.attributes, this.$content, 'checked'); OOP["a" /* default */].drillProperty(this.attributes, this.$content, 'value'); var self = this; this.$content.on('change', function () { // self.attributes.checked = this.checked; if (self.events.change) console.log("TODO: exec", self.events.change); }); }; components_Radio_Radio.prototype.renderContent = function () { return components_Radio_('radiobutton'); }; components_Radio_Radio.prototype.setStyleWidth = function (value) { value = value >= 18 ? value : 18; return core_ContentScalelessComponent.prototype.setStyleWidth.call(this, value); }; components_Radio_Radio.prototype.setStyleHeight = function (value) { value = value >= 18 ? value : 18; return core_ContentScalelessComponent.prototype.setStyleHeight.call(this, value); }; components_Radio_Radio.prototype.setAttributeGroupName = function (value) { this.$content.attr('name', value); return value; }; components_Radio_Radio.prototype.getAttributeGroupNameDescriptor = function () { return { type: "text", regex: /[a-zA-Z0-9\_\-]+/, sign: "RadioGroupIndent", independence: true }; }; components_Radio_Radio.prototype.setAttributValue = function (value) { this.$content.attr('value', value + ''); return value; }; components_Radio_Radio.prototype.getAttributeValueDescriptor = function () { return { type: "text", sign: "RadioValue", independence: true }; }; components_Radio_Radio.prototype.getAttributeCheckedDescriptor = function () { return { type: "bool" }; }; components_Radio_Radio.prototype.getAcceptsAttributeNames = function () { return core_ContentScalelessComponent.prototype.getAcceptsAttributeNames.call(this).concat(["groupName", "checked", 'value']); }; components_Radio_Radio.prototype.getAcceptsEventNames = function () { return core_ContentScalelessComponent.prototype.getAcceptsEventNames.call(this).concat(['change']); }; components_Radio_Radio.prototype.measureMinSize = function () { return { width: 18, height: 18 }; }; components_Radio_Radio.prototype.bindDataToObject = function (obj) { var groupName = this.getAttribute('groupName'); var groupPropertyName = '__radioGroup_' + groupName + '__'; if (obj[groupPropertyName] === undefined) { Object.defineProperty(obj, groupPropertyName, { enumerable: false, configurable: true, value: [] }); Object.defineProperty(obj, groupName, { set: function set(value) { for (var i = 0; i < obj[groupPropertyName].length; ++i) { if (obj[groupPropertyName][i].getAttribute('value') == value) { obj[groupPropertyName][i].setAttribute('checked', true); } else { obj[groupPropertyName][i].setAttribute('checked', false); } } }, get: function get() { for (var i = 0; i < obj[groupPropertyName].length; ++i) { if (obj[groupPropertyName][i].getAttribute('checked')) { return obj[groupPropertyName][i].getAttribute('value'); } } return undefined; } }); } if (obj[groupPropertyName].indexOf(this) < 0) { obj[groupPropertyName].push(this); } }; /* harmony default export */ var components_Radio = (components_Radio_Radio); // CONCATENATED MODULE: ./js/components/Table.js var Table_ = FCore._; var Table_$ = FCore.$; function Table() { core_ScalableComponent.call(this); } Object.defineProperties(Table.prototype, Object.getOwnPropertyDescriptors(core_ScalableComponent.prototype)); Table.prototype.constructor = Table; Table.prototype.tag = "Table"; Table.prototype.menuIcon = "span.mdi.mdi-table-large"; Table.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.attributes.header = this.attributes.header || [randomPhrase(10), randomPhrase(10), randomPhrase(10)]; this.attributes.body = this.attributes.body || [[randomPhrase(10), randomPhrase(10), randomPhrase(10)], [randomPhrase(10), randomPhrase(10), randomPhrase(10)], [randomPhrase(10), randomPhrase(10), randomPhrase(10)]]; this.style.height = 100; this.style.width = 300; }; // Table.prototype.onCreated = function () { // ScalableComponent.prototype.onCreate.call(this); // } Table.prototype.render = function () { this.$table = Table_({ tag: 'table', "class": 'as-inner-table', child: ['thead', 'tbody'] }); return Table_({ tag: 'tablescroller', child: this.$table, props: { fixedCol: 0 } }); }; Table.prototype.setStyle = function () { var res = core_ScalableComponent.prototype.setStyle.apply(this, arguments); return res; }; Table.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(['header', 'body', 'fixedCol']); }; Table.prototype.getAttributeHeaderDescriptor = function () { return { type: "array" }; }; Table.prototype.getAttributeBodyDescriptor = function () { return { type: "array2d" }; }; Table.prototype.getAttributeFixedColDescriptor = function () { return { type: "number", min: 0, max: Infinity }; }; Table.prototype.setAttributeHeader = function (header) { if (!(header.length > 0)) { header = ["Data Error"]; } var headerElt = Table_$('thead', this.$table).clearChild(); headerElt.clearChild(); var rowElt = Table_('tr'); var cellElt; for (var i = 0; i < header.length; ++i) { cellElt = Table_({ tag: 'th', child: { text: header[i] + '' } }); rowElt.addChild(cellElt); } headerElt.addChild(rowElt); this.view._updateContent(); return header; }; Table.prototype.setAttributeBody = function (body) { if (!(body.length > 0)) { body = [["Data Error"]]; } var bodyElt = Table_$('tbody', this.$table).clearChild(); var rowElt; // var cellElt; var row, cell; for (var i = 0; i < body.length; ++i) { row = body[i]; rowElt = Table_('tr').addTo(bodyElt); for (var j = 0; j < row.length; ++j) { cell = row[j]; Table_({ tag: 'td', child: { text: cell + '' } }).addTo(rowElt); } } this.view._updateContent(); return body; }; Table.prototype.setAttributeFixedCol = function (value) { if (value >= 0) {} else { value = 0; } this.view.fixedCol = value; return value; }; /* harmony default export */ var components_Table = (Table); // CONCATENATED MODULE: ./js/components/TextArea.js var TextArea_ = FCore._; /*** * @extends TextInput * @constructor */ function TextArea() { components_TextInput.call(this); } OOP["a" /* default */].mixClass(TextArea, components_TextInput); TextArea.prototype.tag = "TextArea"; TextArea.prototype.menuIcon = "span.mdi.mdi-textarea"; TextArea.prototype.render = function () { return TextArea_('textarea.absol-bscroller'); }; TextArea.prototype.getAttributeValueDescriptor = function () { return { type: "text", "long": true, sign: "SimpleTextLong" }; }; TextArea.prototype.getAttributePlaceHolderDescriptor = function () { return { type: "text", "long": true, sign: "SimpleTextLong" }; }; /* harmony default export */ var components_TextArea = (TextArea); // EXTERNAL MODULE: ./css/linearanchor.css var linearanchor = __webpack_require__(238); // CONCATENATED MODULE: ./js/anchors/LinearAnchor.js var LinearAnchor_ = FCore._; var LinearAnchor_$ = FCore.$; /** * AnchorBox only has on child node */ function LinearAnchor() { core_FViewable.call(this); this.style.left = 0; this.style.right = 0; this.style.top = 0; this.style.bottom = 0; this.width = 0; this.height = 0; this.childNode = null; //for quick binding render this.viewBinding = {}; this.onCreate(); this.view = this.render(); this.onCreated(); } Object.defineProperties(LinearAnchor.prototype, Object.getOwnPropertyDescriptors(core_FViewable.prototype)); LinearAnchor.prototype.construtor = LinearAnchor; LinearAnchor.prototype.TOP_CLASS_NAME = 'as-linear-anchor-box'; LinearAnchor.prototype.onCreate = function () { /* NOOP */ }; LinearAnchor.prototype.onCreated = function () { for (var key in this.viewBinding) { this[key] = LinearAnchor_$(this.viewBinding[key], this.view); } }; LinearAnchor.prototype.getAcceptsStyleNames = function () { return ['left', 'right', 'top', 'bottom']; }; LinearAnchor.prototype.getStyleLeftDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, dependency: ['width'], sign: 'LinearLeft', independence: true }; }; LinearAnchor.prototype.getStyleRightDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, dependency: ['width'], sign: 'LinearRight', independence: true }; }; LinearAnchor.prototype.getStyleTopDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, dependency: ['height'], sign: 'LinearTop', independence: true }; }; LinearAnchor.prototype.getStyleBottomDescriptor = function () { return { type: 'measurePosition', min: -Infinity, max: Infinity, dependency: ['height'], sign: 'LinearBottom', independence: true }; }; LinearAnchor.prototype.setStyleLeft = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.left == 'string' && this.childNode.style.left.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.left == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; this.view.addStyle('margin-left', styleValue); return value; }; LinearAnchor.prototype.getStyleLeft = function (unit) { if (unit == 'px') { if (this.childNode.style.left === undefined || this.childNode.style.left === null || typeof this.childNode.style.left != 'number') { return parseFloat(this.view.getComputedStyleValue('margin-left').replace('px', '')); } else { return this.childNode.style.left; } } else if (unit == '%') { if (this.childNode.style.left === undefined || this.childNode.style.left === null || typeof this.childNode.style.left != 'string' || typeof this.childNode.style.left == 'string' && !this.childNode.style.left.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeLeft = parseFloat(this.view.getComputedStyleValue('margin-left').replace('px', '')); return nodeLeft * 100 / parentBound.width; } else { return parseFloat(this.childNode.style.left.replace('%', '')); } } else return this.childNode.style.left; }; LinearAnchor.prototype.setStyleRight = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.right == 'string' && this.childNode.style.right.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.right == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; this.view.addStyle('margin-right', styleValue); return value; }; LinearAnchor.prototype.getStyleRight = function (unit) { if (unit == 'px') { if (this.childNode.style.right === undefined || this.childNode.style.right === null || typeof this.childNode.style.right != 'number') { return parseFloat(this.view.getComputedStyleValue('margin-right').replace('px', '')); } else { return this.childNode.style.right; } } else if (unit == '%') { if (this.childNode.style.right === undefined || this.childNode.style.right === null || typeof this.childNode.style.right != 'string' || typeof this.childNode.style.right == 'string' && !this.childNode.style.right.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeRight = parseFloat(this.view.getComputedStyleValue('margin-right').replace('px', '')); return nodeRight * 100 / parentBound.width; } else { return parseFloat(this.childNode.style.right.replace('%', '')); } } else return this.childNode.style.right; }; LinearAnchor.prototype.setStyleTop = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.top == 'string' && this.childNode.style.top.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.top == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; this.view.addStyle('margin-top', styleValue); return value; }; LinearAnchor.prototype.getStyleTop = function (unit) { if (unit == 'px') { if (this.childNode.style.top === undefined || this.childNode.style.top === null || typeof this.childNode.style.top != 'number') { return parseFloat(this.view.getComputedStyleValue('margin-top').replace('px', '')); } else { return this.childNode.style.top; } } else if (unit == '%') { if (this.childNode.style.top === undefined || this.childNode.style.top === null || typeof this.childNode.style.top != 'string' || typeof this.childNode.style.top == 'string' && !this.childNode.style.top.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeTop = parseFloat(this.view.getComputedStyleValue('margin-top').replace('px', '')); return nodeTop * 100 / parentBound.width; } else { return parseFloat(this.childNode.style.top.replace('%', '')); } } else return this.childNode.style.top; }; LinearAnchor.prototype.setStyleBottom = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.bottom == 'string' && this.childNode.style.bottom.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.bottom == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } var styleValue = value >= 0 ? value + 'px' : value; this.view.addStyle('margin-bottom', styleValue); return value; }; LinearAnchor.prototype.getStyleBottom = function (unit) { if (unit == 'px') { if (this.childNode.style.bottom === undefined || this.childNode.style.bottom === null || typeof this.childNode.style.bottom != 'number') { return parseFloat(this.view.getComputedStyleValue('margin-bottom').replace('px', '')); } else { return this.childNode.style.bottom; } } else if (unit == '%') { if (this.childNode.style.bottom === undefined || this.childNode.style.bottom === null || typeof this.childNode.style.bottom != 'string' || typeof this.childNode.style.bottom == 'string' && !this.childNode.style.bottom.match(/\%$/)) { var parentBound = this.childNode.parent.view.getBoundingClientRect(); var nodeBottom = parseFloat(this.view.getComputedStyleValue('margin-bottom').replace('px', '')); return nodeBottom * 100 / parentBound.width; } else { return parseFloat(this.childNode.style.bottom.replace('%', '')); } } else return this.childNode.style.bottom; }; LinearAnchor.prototype.setStyleWidth = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.width == 'string' && this.childNode.style.width.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().width + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.width == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().width / 100 + '%'; } } this.childNode.style.width = value; var styleValue = value >= 0 ? value + 'px' : value; if (styleValue == 'match_parent') styleValue = '100%'; this.view.addStyle('width', styleValue); this.childNode.view.removeStyle('width'); return value; }; LinearAnchor.prototype.setStyleHeight = function (value, unit) { if (unit == 'px') { //value must be a number if (typeof this.childNode.style.height == 'string' && this.childNode.style.height.match(/\%$/)) { value = value * 100 / this.childNode.parent.view.getBoundingClientRect().height + '%'; } } else if (unit == '%') { if (typeof this.childNode.style.height == 'number') { value = value * this.childNode.parent.view.getBoundingClientRect().height / 100 + '%'; } } this.childNode.style.height = value; var styleValue = value >= 0 ? value + 'px' : value; if (styleValue == 'match_parent') styleValue = '100%'; this.view.addStyle('height', styleValue); this.childNode.view.removeStyle('height'); return value; }; LinearAnchor.prototype.getStyleWidth = function (unit) { if (unit == 'px') { if (this.childNode.style.hAlign == 'fixed' || this.childNode.style.hAlign == 'auto' || typeof this.childNode.style.width != 'number') return this.view.getBoundingClientRect().width;else { return this.childNode.style.width; } } else if (unit == '%') { if (this.childNode.style.hAlign == 'match_parent') return 100;else if (this.childNode.style.hAlign == 'fixed' || this.childNode.style.hAlign == 'auto' || typeof this.childNode.style.width == 'string' && !this.childNode.style.width.match(/\%$/) || typeof this.childNode.style.width != 'string') { return this.childNode.view.getBoundingClientRect().width * 100 / this.childNode.parent.view.getBoundingClientRect().width; } else { return parseFloat(this.childNode.style.width.replace('%', '')); } } else return this.childNode.style.width; }; LinearAnchor.prototype.getStyleHeight = function (unit) { if (unit == 'px') { if (this.style.vAlign == 'auto' || typeof this.style.height != 'number') return this.view.getBoundingClientRect().height;else { return this.style.height; } } else if (unit == '%') { if (this.style.vAlign == 'match_parent') return 100;else if (this.style.vAlign == 'auto' || typeof this.style.height == 'string' && !this.style.height.match(/\%$/) || typeof this.style.height != 'string') { return this.childNode.view.getBoundingClientRect().height * 100 / this.childNode.parent.view.getBoundingClientRect().height; } else { return parseFloat(this.style.height.replace('%', '')); } } else return this.style.height; }; LinearAnchor.prototype.getStyleWidthDescriptor = function () { return { type: 'measureSize', sign: 'LinearWidth', independence: true }; }; LinearAnchor.prototype.getStyleHeightDescriptor = function () { return { type: 'measureSize', sign: 'LinearHeight', independence: true }; }; LinearAnchor.prototype.render = function () { var layout = { "class": [this.TOP_CLASS_NAME] }; return LinearAnchor_(layout); }; /** * @param {BaseComponent} child */ LinearAnchor.prototype.attachChild = function (child) { if (this.childNode) { this.childNode.view.remove(); this.childNode = null; this.childNode.anchor = null; } if (child.anchor) throw new Error("Detach anchorBox first"); this.childNode = child; this.childNode.style.width = this.childNode.style.width || 0; this.childNode.style.height = this.childNode.style.height || 0; this.childNode.style.left = this.childNode.style.left || 0; this.childNode.style.right = this.childNode.style.right || 0; this.childNode.style.top = this.childNode.style.top || 0; this.childNode.style.bottom = this.childNode.style.bottom || 0; child.anchor = this; this.view.addChild(child.view); child.onAnchorAttached(); }; LinearAnchor.prototype.detachChild = function () { if (this.childNode) { this.childNode.view.remove(); this.childNode.onAnchorDetached(); this.childNode.anchor = null; this.childNode = null; } else throw new Error("Nothing to detach"); }; /* harmony default export */ var anchors_LinearAnchor = (LinearAnchor); // CONCATENATED MODULE: ./js/cmds/LinearAnchorEditorCmd.js /** * @type {import('../anchoreditors/LinearAnchorEditor').default} */ var LinearAnchorEditorCmd = Object.assign({}, cmds_BaseAnchorEditorCmd); ; LinearAnchorEditorCmd.equaliseWidth = function () { var editors = this.layoutEditor.anchorEditors; var editor; var widthValue = this.component.getStyle('width', 'px'); for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; if (editor == this) continue; editor.equaliseWidth(widthValue); } this.layoutEditor.commitHistory('move', 'Equalise Width'); }; LinearAnchorEditorCmd.equaliseHeight = function () { var editors = this.layoutEditor.anchorEditors; var editor; var heightValue = this.component.getStyle('height', 'px'); for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; if (editor == this) continue; editor.equaliseHeight(heightValue); } this.layoutEditor.commitHistory('move', 'Equalise Height'); }; LinearAnchorEditorCmd.verticalAlignTop = function () { var editors = this.layoutEditor.anchorEditors; var editor; for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; editor.verticalAlignTop(); } this.layoutEditor.commitHistory('move', 'Vertical Align Top'); }; LinearAnchorEditorCmd.verticalAlignCenter = function () { var editors = this.layoutEditor.anchorEditors; var editor; for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; editor.verticalAlignCenter(); } this.layoutEditor.commitHistory('move', 'Vertical Align Center'); }; LinearAnchorEditorCmd.verticalAlignBottom = function () { var editors = this.layoutEditor.anchorEditors; var editor; for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; editor.verticalAlignBottom(); } this.layoutEditor.commitHistory('move', 'Vertical Align Bottom'); }; LinearAnchorEditorCmd.horizontalAlignLeft = function () { var editors = this.layoutEditor.anchorEditors; var editor; for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; editor.horizontalAlignLeft(); } this.layoutEditor.commitHistory('move', 'Horizontal Align Left'); }; LinearAnchorEditorCmd.horizontalAlignCenter = function () { var editors = this.layoutEditor.anchorEditors; var editor; for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; editor.horizontalAlignCenter(); } this.layoutEditor.commitHistory('move', 'Horizontal Align Center'); }; LinearAnchorEditorCmd.horizontalAlignRight = function () { var editors = this.layoutEditor.anchorEditors; var editor; for (var i = 0; i < editors.length; ++i) { var editor = editors[i]; editor.horizontalAlignRight(); } this.layoutEditor.commitHistory('move', 'Horizontal Align Right'); }; /* harmony default export */ var cmds_LinearAnchorEditorCmd = (LinearAnchorEditorCmd); var LinearAnchorEditorCmdTree = [[['horizontalAlignLeft', 'horizontalAlignCenter', 'horizontalAlignRight', 'equaliseWidth'], ['verticalAlignTop', 'verticalAlignCenter', 'verticalAlignBottom', 'equaliseHeight']]]; var LinearAnchorEditorCmdDescriptors = { equaliseWidth: { type: 'trigger', icon: 'span.mdi.mdi-arrow-expand-horizontal', desc: 'Equalise Width' }, equaliseHeight: { type: 'trigger', icon: 'span.mdi.mdi-arrow-expand-vertical', desc: 'Equalise Height' }, verticalAlignTop: { type: 'trigger', icon: 'span.mdi.mdi-format-vertical-align-top', desc: 'Vertical Align Top' }, verticalAlignCenter: { type: 'trigger', icon: 'span.mdi.mdi-format-vertical-align-center', desc: 'Vertical Align Center' }, verticalAlignBottom: { type: 'trigger', icon: 'span.mdi.mdi-format-vertical-align-bottom', desc: 'Vertical Align Bottom' }, horizontalAlignLeft: { type: 'trigger', icon: 'span.mdi.mdi-format-horizontal-align-left', desc: 'Horizontal Align Left' }, horizontalAlignCenter: { type: 'trigger', icon: 'span.mdi.mdi-format-horizontal-align-center', desc: 'Horizontal Align Center' }, horizontalAlignRight: { type: 'trigger', icon: 'span.mdi.mdi-format-horizontal-align-right', desc: 'Horizontal Align Right' } }; // CONCATENATED MODULE: ./js/anchoreditors/LinearAnchorEditor.js var LinearAnchorEditor_ = FCore._; var LinearAnchorEditor_$ = FCore.$; /** * @extends BaseAnchorEditor * @param {LayoutEditor} layoutEditor */ function LinearAnchorEditor(layoutEditor) { core_BaseAnchorEditor.call(this, layoutEditor); this.cmdRunner.assign(cmds_LinearAnchorEditorCmd); var self = this; this.$modal = LinearAnchorEditor_({ style: { zIndex: '10000000', left: '1px', right: '1px', top: '1px', bottom: '1px', position: 'fixed' } }); this.$marginBox = LinearAnchorEditor_('resizebox').on('click', this.focusMarginBox.bind(this)).on('beginmove', this.ev_beginMove.bind(this, true)).on('moving', this.ev_movingMargin.bind(this, true)).on('endmove', this.ev_endMove.bind(this, true)); this.$resizeBox = LinearAnchorEditor_('resizebox').on('mousedown', this.focus.bind(this)).on('beginmove', this.ev_beginMove.bind(this, true)).on('moving', this.ev_moving.bind(this, true)).on('endmove', this.ev_endMove.bind(this, true)).on('click', function (ev) { self.emit('click', ev, true); }).on('dblclick', this.ev_dblClick); this.$resizeBox.defineEvent('contextmenu'); this.$resizeBox.on('contextmenu', this.ev_contextMenu.bind(this)); this.movingData = null; this.isFocus = false; } OOP["a" /* default */].mixClass(LinearAnchorEditor, core_BaseAnchorEditor); LinearAnchorEditor.prototype.ev_contextMenu = function (event) { var self = this; var items = []; function makeItem(name) { if (name === null) return '====='; var cmdDescriptor = LinearAnchorEditorCmdDescriptors[name]; var res = { icon: cmdDescriptor.icon, text: cmdDescriptor.desc, cmd: name }; if (cmdDescriptor.bindKey && cmdDescriptor.bindKey.win) { res.key = cmdDescriptor.bindKey.win; } return res; } items = ['horizontalAlignLeft', 'horizontalAlignCenter', 'horizontalAlignRight'].concat(this.layoutEditor.anchorEditors.length > 1 ? [] : ['equaliseWidth']).concat([null, 'verticalAlignTop', 'verticalAlignCenter', 'verticalAlignBottom']).concat(this.layoutEditor.anchorEditors.length > 1 ? [] : ['equaliseHeight']).concat([null]).map(makeItem); if (this.layoutEditor.anchorEditors.length == 1 && this.layoutEditor.anchorEditors[0].component.reMeasureChild) { items.push({ icon: 'span.mdi.mdi-square-edit-outline[style="color:blue"]', text: 'Edit Layout', cmd: this.execCmd.bind(this, 'layoutEdit') }); } items.push({ icon: 'span.mdi.mdi-delete-variant[style="color:red"]', text: 'Delete', cmd: 'delete' }); event.showContextMenu({ items: items, extendStyle: { fontSize: '12px' } }, function (event) { var cmd = event.menuItem.cmd; if (typeof cmd == 'function') { cmd(); self.layoutEditor.notifyDataChange(); } else if (typeof cmd == 'string') { self.layoutEditor.execCmd(cmd); } self.layoutEditor.getView().focus(); }); // event.stopPropagation(); }; LinearAnchorEditor.prototype.focusMarginBox = function () { if (!this.component) return; if (this.isFocus) {// this.$resizeBox.removeClass('as-focus');// this is feature, not bug // this.$marginBox.addClass('as-focus'); } else { // this.$marginBox.addClass('as-focus'); this.$resizeBox.addClass('as-focus'); this.isFocus = true; var editor; for (var i = 0; i < this.layoutEditor.anchorEditors.length; ++i) { editor = this.layoutEditor.anchorEditors[i]; if (editor == this) continue; editor.blur(); } this.emit('focus', { type: 'focus', target: this }, this); } }; LinearAnchorEditor.prototype.focus = function () { if (!this.component) return; this.$resizeBox.addClass('as-focus'); this.$marginBox.removeClass('as-focus'); if (this.isFocus) return; this.isFocus = true; var editor; for (var i = 0; i < this.layoutEditor.anchorEditors.length; ++i) { editor = this.layoutEditor.anchorEditors[i]; if (editor == this) continue; editor.blur(); } this.emit('focus', { type: 'focus', target: this }, this); }; LinearAnchorEditor.prototype.blur = function () { if (!this.isFocus) return; this.isFocus = false; this.$resizeBox.removeClass('as-focus'); this.emit('blur', { type: 'blur', target: this }, this); }; LinearAnchorEditor.prototype.update = function () { if (this.component) { var styleDescriptors = this.component.getStyleDescriptors(); if (styleDescriptors.top || styleDescriptors.bottom || styleDescriptors.left || styleDescriptors.right) { this.$marginBox.addTo(this.layoutEditor.$forceground); } else { this.$marginBox.selfRemove(); } this.$resizeBox.addTo(this.layoutEditor.$forceground); this.$resizeBox.canMove = !!(styleDescriptors.top || styleDescriptors.bottom || styleDescriptors.left || styleDescriptors.right); this.$resizeBox.canResize = !!(styleDescriptors.width || styleDescriptors.height); this.$marginBox.canClick = !!(styleDescriptors.top || styleDescriptors.bottom || styleDescriptors.left || styleDescriptors.right); this.$marginBox.canResize = true; this.updatePosition(); } else { this.$resizeBox.remove(); this.$marginBox.remove(); } }; LinearAnchorEditor.prototype.updatePosition = function () { if (this.component) { this.component.reMeasure(); var bound = this.layoutEditor.$forceground.getBoundingClientRect(); var compBound = this.component.view.getBoundingClientRect(); this.$resizeBox.addStyle({ left: (compBound.left - bound.left) / this.layoutEditor._softScale + 'px', top: (compBound.top - bound.top) / this.layoutEditor._softScale + 'px', width: compBound.width / this.layoutEditor._softScale + 'px', height: compBound.height / this.layoutEditor._softScale + 'px' }); this.$marginBox.addStyle({ left: (compBound.left - bound.left) / this.layoutEditor._softScale - this.component.getStyle('left', 'px') + 'px', top: (compBound.top - bound.top) / this.layoutEditor._softScale - this.component.getStyle('top', 'px') + 'px', width: compBound.width / this.layoutEditor._softScale + this.component.getStyle('left', 'px') + this.component.getStyle('right', 'px') + 'px', height: compBound.height / this.layoutEditor._softScale + this.component.getStyle('top', 'px') + this.component.getStyle('bottom', 'px') + 'px' }); } }; LinearAnchorEditor.prototype.ev_beginMove = function (userAction, event) { var bound = this.layoutEditor.$forceground.getBoundingClientRect(); this.movingData = { x0: (event.clientX - bound.left) / this.layoutEditor._softScale, y0: (event.clientY - bound.top) / this.layoutEditor._softScale, dx: 0, dy: 0, option: event.option, styleDescriptors: this.component.getStyleDescriptors(), style0: Object.assign({}, this.component.style, { left: this.component.getStyle('left', 'px'), right: this.component.getStyle('right', 'px'), top: this.component.getStyle('top', 'px'), bottom: this.component.getStyle('bottom', 'px'), width: this.component.getStyle('width', 'px'), height: this.component.getStyle('height', 'px') }), comp: this.component, isChange: false }; if (userAction) { this.emit('beginmove', { type: 'beginmove', target: this, originEvent: event, repeatEvent: event }, this); this.$modal.addTo(document.body); this.layoutEditor.$mouseOffsetStatus.children[2].innerHTML = ' Δ' + this.movingData.dx + ', ' + this.movingData.dy; } }; LinearAnchorEditor.prototype.ev_moving = function (userAction, event) { var movingData = this.movingData; var bound = this.layoutEditor.$forceground.getBoundingClientRect(); var x = (event.clientX - bound.left) / this.layoutEditor._softScale; var y = (event.clientY - bound.top) / this.layoutEditor._softScale; movingData.dx = x - movingData.x0; movingData.dy = y - movingData.y0; var positionIsChange = false; if (movingData.styleDescriptors.left && !movingData.styleDescriptors.left.disabled && (movingData.option.left || movingData.option.body)) { movingData.comp.setStyle('left', Math.max(0, movingData.style0.left + movingData.dx), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.right && !movingData.styleDescriptors.right.disabled && (movingData.option.right || movingData.option.body)) { movingData.comp.setStyle('right', Math.max(0, movingData.style0.right - movingData.dx), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.width && !movingData.styleDescriptors.width.disabled) { if (movingData.option.left) { if (!!movingData.styleDescriptors.left.disabled && !!movingData.styleDescriptors.right.disabled) { movingData.comp.setStyle('width', Math.max(movingData.comp.measureMinSize().width, movingData.style0.width - movingData.dx * 2), 'px'); } else { movingData.comp.setStyle('width', Math.max(movingData.style0.width - movingData.dx), 'px'); } positionIsChange = true; } if (movingData.option.right) { if (movingData.styleDescriptors.left && !!movingData.styleDescriptors.left.disabled && !!movingData.styleDescriptors.right.disabled) { movingData.comp.setStyle('width', Math.max(movingData.comp.measureMinSize().width, movingData.style0.width + movingData.dx * 2), 'px'); //center align } else { movingData.comp.setStyle('width', Math.max(movingData.comp.measureMinSize().width, movingData.style0.width + movingData.dx), 'px'); } positionIsChange = true; } } if (movingData.styleDescriptors.top && !movingData.styleDescriptors.top.disabled && (movingData.option.top || movingData.option.body)) { movingData.comp.setStyle('top', Math.max(0, movingData.style0.top + movingData.dy), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.bottom && !movingData.styleDescriptors.bottom.disabled && (movingData.option.bottom || movingData.option.body)) { movingData.comp.setStyle('bottom', Math.max(0, movingData.style0.bottom - movingData.dy), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.height && !movingData.styleDescriptors.height.disabled) { if (movingData.option.top) { if (movingData.styleDescriptors.top && !!movingData.styleDescriptors.top.disabled && !!movingData.styleDescriptors.bottom.disabled) { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height - movingData.dy * 2), 'px'); } else { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height - movingData.dy), 'px'); } positionIsChange = true; } if (movingData.option.bottom) { if (movingData.styleDescriptors.top && !!movingData.styleDescriptors.top.disabled && !!movingData.styleDescriptors.bottom.disabled) { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height + movingData.dy * 2), 'px'); } else { movingData.comp.setStyle('height', Math.max(movingData.comp.measureMinSize().height, movingData.style0.height + movingData.dy), 'px'); } positionIsChange = true; } } movingData.comp.reMeasure(); this.updatePosition(); if (positionIsChange) { this.emit("reposition", { type: 'reposition', component: movingData.comp, movingData: movingData, originEvent: event, repeatEvent: event }, this); movingData.isChange = true; } if (userAction) { this.emit('moving', { taget: this, type: 'moving', originEvent: event, repeatEvent: event, target: this }, this); this.layoutEditor.$mouseOffsetStatus.children[2].innerHTML = ' Δ' + this.movingData.dx + ', ' + this.movingData.dy; } }; LinearAnchorEditor.prototype.ev_movingMargin = function (userAction, event) { var movingData = this.movingData; var bound = this.layoutEditor.$forceground.getBoundingClientRect(); var x = (event.clientX - bound.left) / this.layoutEditor._softScale; var y = (event.clientY - bound.top) / this.layoutEditor._softScale; movingData.dx = x - movingData.x0; movingData.dy = y - movingData.y0; var positionIsChange = false; if (movingData.styleDescriptors.bottom && event.option.bottom) { movingData.comp.setStyle('bottom', Math.max(0, movingData.style0.bottom + movingData.dy), 'px'); positionIsChange = true; } if (movingData.styleDescriptors.right && event.option.right) { movingData.comp.setStyle('right', Math.max(0, movingData.style0.right + movingData.dx), 'px'); positionIsChange = true; } this.updatePosition(); movingData.comp.reMeasure(); if (positionIsChange) { this.emit("reposition", { type: 'reposition', component: movingData.comp, movingData: movingData, originEvent: event }, this); movingData.isChange = true; } if (userAction) { this.emit('moving', { taget: this, type: 'moving', originEvent: event, target: this }, this); this.layoutEditor.$mouseOffsetStatus.children[2].innerHTML = ' Δ' + this.movingData.dx + ', ' + this.movingData.dy; } }; LinearAnchorEditor.prototype.ev_endMove = function (userAction, event) { if (this.movingData.isChange) { this.emit('change', { type: 'change', target: this, component: this.movingData.comp, originEvent: event }, this); } this.movingData = undefined; if (userAction) { this.emit('endmove', { taget: this, type: 'moving', originEvent: event, target: this }, this); setTimeout(this.$modal.selfRemove.bind(this.$modal), 100); this.layoutEditor.$mouseOffsetStatus.children[2].innerHTML = ''; } }; LinearAnchorEditor.prototype.alignHorizontalCenter = function (centerValue) { // right - left if (!this.component) return; this.component.reMeasure(); var currentHAlign = this.component.getStyle('hAlign'); var cRight = this.component.getStyle('right'); var cLeft = this.component.getStyle('left'); var newLeft = (cRight + cLeft - centerValue) / 2; var newRight = (cRight + cLeft + centerValue) / 2; switch (currentHAlign) { case 'right': this.component.setStyle('right', newRight); break; case 'fixed': this.component.setStyle('left', newLeft); this.component.setStyle('right', newRight); break; case 'left': this.component.setStyle('left', newLeft); break; case 'center': //noway to align center break; } this.updatePosition(); this.component.reMeasure(); }; LinearAnchorEditor.prototype.equaliseWidth = function (widthValue) { if (!this.component) return; this.component.setStyle('width', widthValue, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.equaliseHeight = function (heightValue) { if (!this.component) return; this.component.setStyle('height', heightValue, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.verticalAlignTop = function () { if (!this.component) return; var styleBot = this.component.getStyle('top', 'px') + this.component.getStyle('bottom', 'px'); this.component.setStyle('top', 0, 'px'); this.component.setStyle('bottom', styleBot, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.verticalAlignCenter = function () { if (!this.component) return; var styleTopBot = (this.component.getStyle('top', 'px') + this.component.getStyle('bottom', 'px')) / 2; this.component.setStyle('top', styleTopBot, 'px'); this.component.setStyle('bottom', styleTopBot, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.verticalAlignBottom = function () { if (!this.component) return; var styleTop = this.component.getStyle('top', 'px') + this.component.getStyle('bottom', 'px'); this.component.setStyle('top', styleTop, 'px'); this.component.setStyle('bottom', 0, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.horizontalAlignRight = function () { if (!this.component) return; var styleLeft = this.component.getStyle('left', 'px') + this.component.getStyle('right', 'px'); this.component.setStyle('left', styleLeft, 'px'); this.component.setStyle('right', 0, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.horizontalAlignLeft = function () { if (!this.component) return; var styleRight = this.component.getStyle('left', 'px') + this.component.getStyle('right', 'px'); this.component.setStyle('right', styleRight, 'px'); this.component.setStyle('left', 0, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.horizontalAlignCenter = function () { if (!this.component) return; var styleLeftRight = (this.component.getStyle('left', 'px') + this.component.getStyle('right', 'px')) / 2; this.component.setStyle('left', styleLeftRight, 'px'); this.component.setStyle('right', styleLeftRight, 'px'); this.updatePosition(); }; LinearAnchorEditor.prototype.getCmdGroupTree = function () { return LinearAnchorEditorCmdTree; }; LinearAnchorEditor.prototype.getCmdDescriptor = function (name) { return LinearAnchorEditorCmdDescriptors[name]; }; LinearAnchorEditor.prototype.execCmd = function () { return this.cmdRunner.invoke.apply(this.cmdRunner, arguments); }; /* harmony default export */ var anchoreditors_LinearAnchorEditor = (LinearAnchorEditor); // CONCATENATED MODULE: ./js/layouts/LinearLayout.js var LinearLayout_ = FCore._; function LinearLayout() { core_BaseLayout.call(this); } Object.defineProperties(LinearLayout.prototype, Object.getOwnPropertyDescriptors(core_BaseLayout.prototype)); LinearLayout.prototype.constructor = LinearLayout; LinearLayout.prototype.tag = 'LinearLayout'; LinearLayout.prototype.menuIcon = 'span.mdi.mdi-post-outline'; LinearLayout.prototype.TOP_CLASS_NAME = 'as-linear-layout'; LinearLayout.prototype.SUPPORT_STYLE_NAMES = ['width', 'height']; //, 'left', 'right', 'top', 'bottom']; LinearLayout.prototype.onCreate = function () { core_BaseLayout.prototype.onCreate.apply(this, arguments); this.style.overflowY = false; }; LinearLayout.prototype.getAnchorConstructor = function () { return anchors_LinearAnchor; }; LinearLayout.prototype.getAnchorEditorConstructor = function () { return anchoreditors_LinearAnchorEditor; }; LinearLayout.prototype.getAcceptsStyleNames = function () { return core_BaseLayout.prototype.getAcceptsStyleNames.call(this).concat(['overflowY']); }; LinearLayout.prototype.setStyleOverflowY = function (value) { if (['visible', 'hidden', 'auto'].indexOf(value) < 0) value = 'visible'; this.view.addStyle('overflowY', value); return value; }; LinearLayout.prototype.getStyleOverflowYDescriptor = function () { return { type: 'enum', values: ['visible', 'hidden', 'auto'] }; }; LinearLayout.prototype.render = function () { return LinearLayout_({ "class": this.TOP_CLASS_NAME }); }; LinearLayout.prototype.onAddChild = function (child, index) { var anchor = new anchors_LinearAnchor(); anchor.attachChild(child); if (index == -1 || !this.view.childNodes[index]) { this.view.addChild(anchor.view); } else { this.view.addChildBefore(anchor.view, this.view.childNodes[index]); } }; LinearLayout.prototype.onRemoveChild = function (child, index) { var anchor = child.anchor; anchor.detachChild(); anchor.view.remove(); }; /** * @param {BaseComponent} component * @returns {BaseComponent} auto set disable style */ LinearLayout.prototype.reMeasureChild = function (component) {}; /** * * @returns {{width:Number, height:Number}} */ LinearLayout.prototype.measureMinSize = function () { //todo var width = 0; var height = 0; var cW; var cH; var child; for (var i = 0; i < this.children.length; ++i) { child = this.children[i]; var minSize = child.measureMinSize(); cW = child.style.left + minSize.width + child.style.right; cH = child.style.top + minSize.height + child.style.bottom; width = Math.min(cW, width); height += cH; } return { width: width, height: height }; }; LinearLayout.prototype.addChildByPosition = function (child, posX, posY) { var bound = this.view.getBoundingClientRect(); var at = undefined; var y; for (var i = 0; i < this.children.length; ++i) { y = this.children[i].view.getBoundingClientRect().bottom - bound.top; if (y >= posY) { at = this.children[i]; break; } } if (at) { this.addChildBefore(child, at); } else { this.addChild(child); } }; /* harmony default export */ var layouts_LinearLayout = (LinearLayout); // CONCATENATED MODULE: ./js/core/BaseShape.js var BaseShape_ = Svg["a" /* default */].ShareInstance._; var BaseShape_$ = Svg["a" /* default */].ShareInstance.$; function BaseShape() { core_ScalableComponent.call(this); } Object.defineProperties(BaseShape.prototype, Object.getOwnPropertyDescriptors(core_ScalableComponent.prototype)); BaseShape.prototype.constructor = BaseShape; BaseShape.prototype.tag = "BaseShape"; BaseShape.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.style.boxAlign = 'lefttop'; this.style.fillColor = 'white'; this.style.strokeColor = 'black'; this.style.strokeWidth = 1; this.style.width = 20; this.style.height = 20; }; BaseShape.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.call(this); this.$content = BaseShape_$('.as-base-shape-content', this.view); }; BaseShape.prototype.render = function () { return BaseShape_({ tag: 'svg', "class": 'as-base-shape', child: [this.renderContent().addClass('as-base-shape-content'), { tag: 'attachhook', on: { error: this.updateShape.bind(this) } }] }); }; BaseShape.prototype.renderContent = function () { throw new Error('Not Implement!'); }; BaseShape.prototype.setStyleWidth = function (value) { var res = core_ScalableComponent.prototype.setStyleWidth.call(this, value); this.updateShape(); return res; }; BaseShape.prototype.setStyleHeight = function (value) { var res = core_ScalableComponent.prototype.setStyleHeight.call(this, value); this.updateShape(); return res; }; BaseShape.prototype.updateShape = function () {//not implement }; BaseShape.prototype.getAcceptsStyleNames = function () { return core_ScalableComponent.prototype.getAcceptsStyleNames.call(this).concat(['fillColor', 'strokeColor', 'strokeWidth']); }; BaseShape.prototype.setStyleStrokeWidth = function (value) { if (value >= 0) return value; return 0; }; BaseShape.prototype.setStyleFillColor = function (value) { var color = undefined; try { color = Color_Color.parse(value); } catch (error) { color = undefined; } color = color || new Color_Color([0, 0, 0, 0]); return value.toString(); }; BaseShape.prototype.setStyleStrokeColor = BaseShape.prototype.setStyleFillColor; //same as color BaseShape.prototype.getStyleFillColorDescriptor = function () { return { type: 'color', sign: 'ShapeFillColor' }; }; BaseShape.prototype.getStyleStrokeColorDescriptor = function () { return { type: 'color', sign: 'ShapeStrokeColor' }; }; BaseShape.prototype.getStyleStrokeWidthDescriptor = function () { return { type: 'number', min: 0, max: Infinity, sign: 'ShapeStrokeWidth' }; }; /* harmony default export */ var core_BaseShape = (BaseShape); // CONCATENATED MODULE: ./js/shapes/Ellipse.js var Ellipse_ = Svg["a" /* default */].ShareInstance._; var Ellipse_$ = Svg["a" /* default */].ShareInstance.$; function Ellipse() { core_BaseShape.call(this); } Object.defineProperties(Ellipse.prototype, Object.getOwnPropertyDescriptors(core_BaseShape.prototype)); Ellipse.prototype.constructor = Ellipse; Ellipse.prototype.tag = "Ellipse"; Ellipse.prototype.menuIcon = "span.mdi.mdi-ellipse-outline"; Ellipse.prototype.renderContent = function () { return Ellipse_('ellipse'); }; Ellipse.prototype.setStyleFillColor = function (value) { value = core_BaseShape.prototype.setStyleFillColor.call(this, value); if (this.$content) this.$content.addStyle('fill', value); return value; }; Ellipse.prototype.setStyleStrokeColor = function (value) { value = core_BaseShape.prototype.setStyleFillColor.call(this, value); if (this.$content) this.$content.addStyle('stroke', value); return value; }; Ellipse.prototype.setStyleStrokeWidth = function (value) { value = core_BaseShape.prototype.setStyleStrokeWidth.call(this, value); if (this.$content) this.$content.addStyle('strokeWidth', value + ''); this.updateShape(); return value; }; Ellipse.prototype.updateShape = function () { if (!this.view) return; var bound = this.view.getBoundingClientRect(); this.$content.addStyle({ cx: bound.width / 2 + '', cy: bound.height / 2 + '', rx: (bound.width - this.style.strokeWidth - 0.1) / 2 + '', // prevent miss some pixel ry: (bound.height - this.style.strokeWidth - 0.1) / 2 + '' }); }; /* harmony default export */ var shapes_Ellipse = (Ellipse); // CONCATENATED MODULE: ./js/shapes/Rectangle.js var Rectangle_ = Svg["a" /* default */].ShareInstance._; var Rectangle_$ = Svg["a" /* default */].ShareInstance.$; function Rectangle_Rectangle() { core_BaseShape.call(this); } Object.defineProperties(Rectangle_Rectangle.prototype, Object.getOwnPropertyDescriptors(core_BaseShape.prototype)); Rectangle_Rectangle.prototype.constructor = Rectangle_Rectangle; Rectangle_Rectangle.prototype.tag = "Rectangle"; Rectangle_Rectangle.prototype.menuIcon = "span.mdi.mdi-rectangle-outline"; core_BaseShape.prototype.onCreate = function () { core_BaseShape.prototype.onCreate.call(this); this.style.roundCornerX = 0; this.style.roundCornerY = 0; }; Rectangle_Rectangle.prototype.renderContent = function () { return Rectangle_('rect'); }; Rectangle_Rectangle.prototype.setStyleFillColor = shapes_Ellipse.prototype.setStyleFillColor; Rectangle_Rectangle.prototype.setStyleStrokeColor = shapes_Ellipse.prototype.setStyleStrokeColor; Rectangle_Rectangle.prototype.setStyleStrokeWidth = shapes_Ellipse.prototype.setStyleStrokeWidth; Rectangle_Rectangle.prototype.getAcceptsStyleNames = function () { return core_BaseShape.prototype.getAcceptsStyleNames.call(this).concat(['roundCornerX', 'roundCornerY']); }; Rectangle_Rectangle.prototype.setStyleRoundCornerX = function (value) { if (!(value >= 0)) value = 0; if (this.$content) { this.$content.attr('rx', value === 0 ? undefined : value + ''); } return value; }; Rectangle_Rectangle.prototype.setStyleRoundCornerY = function (value) { if (!(value >= 0)) value = 0; if (this.$content) this.$content.attr('ry', value === 0 ? undefined : value + ''); return value; }; Rectangle_Rectangle.prototype.getStyleRoundCornerXDescriptor = function () { return { type: 'number', min: 0, max: Infinity, sign: 'ShapeRoundCornerX' }; }; Rectangle_Rectangle.prototype.getStyleRoundCornerYDescriptor = function () { return { type: 'number', min: 0, max: Infinity, sign: 'ShapeRoundCornerY' }; }; Rectangle_Rectangle.prototype.updateShape = function () { if (!this.view) return; var bound = this.view.getBoundingClientRect(); this.$content.attr({ x: (this.style.strokeWidth + 0.1) / 2, y: (this.style.strokeWidth + 0.1) / 2, width: bound.width - this.style.strokeWidth - 0.1 + '', height: bound.height - this.style.strokeWidth - 0.1 + '' }); }; /* harmony default export */ var shapes_Rectangle = (Rectangle_Rectangle); // EXTERNAL MODULE: ./css/chainanchor.css var chainanchor = __webpack_require__(240); // CONCATENATED MODULE: ./js/anchors/ChainAnchor.js var ChainAnchor_ = FCore._; var ChainAnchor_$ = FCore.$; function ChainAnchor() { // LinearAnchor.call(this);// inherit core_FViewable.call(this); this.style.left = 0; this.style.right = 0; this.style.top = 0; this.style.bottom = 0; this.style.vAlign = 'top'; this.childNode = null; //for quick binding render this.viewBinding = {}; this.onCreate(); this.view = this.render(); this.onCreated(); } Object.defineProperties(ChainAnchor.prototype, Object.getOwnPropertyDescriptors(anchors_LinearAnchor.prototype)); ChainAnchor.prototype.construtor = ChainAnchor; ChainAnchor.prototype.TOP_CLASS_NAME = 'as-chain-anchor-box'; ChainAnchor.prototype.VALIGN_CLASS_NAMES = { top: 'as-valign-top', center: 'as-valign-center', bottom: 'as-valign-bottom' }; ChainAnchor.prototype.VALIGN_ACCEPTS_VALUES = ['top', 'center', 'bottom']; ChainAnchor.prototype.getAcceptsStyleNames = function () { return anchors_LinearAnchor.prototype.getAcceptsStyleNames.call(this).concat(['vAlign']); }; ChainAnchor.prototype.setStyleVAlign = function (value) { if (this.VALIGN_ACCEPTS_VALUES.indexOf(value) < 0) value = this.VALIGN_ACCEPTS_VALUES[0]; if (this.VALIGN_CLASS_NAMES[this.style.vAlign]) { this.view.removeClass(this.VALIGN_CLASS_NAMES[this.style.vAlign]); } this.view.addClass(this.VALIGN_CLASS_NAMES[value]); return value; }; ChainAnchor.prototype.getStyleVAlignDescriptor = function () { return { type: 'enum', values: this.VALIGN_ACCEPTS_VALUES, disabled: false, sign: 'ChainAnchor_VAlign', independence: true }; }; ChainAnchor.prototype.render = function () { var layout = { "class": [this.TOP_CLASS_NAME] }; return ChainAnchor_(layout); }; /** * @param {BaseComponent} child */ ChainAnchor.prototype.attachChild = function (child) { if (this.childNode) { this.childNode.view.remove(); this.childNode = null; this.childNode.anchor = null; } if (child.anchor) throw new Error("Detach anchorBox first"); this.childNode = child; this.childNode.style.width = this.childNode.style.width || 0; this.childNode.style.height = this.childNode.style.height || 0; this.childNode.style.left = this.childNode.style.left || 0; this.childNode.style.right = this.childNode.style.right || 0; this.childNode.style.top = this.childNode.style.top || 0; this.childNode.style.bottom = this.childNode.style.bottom || 0; this.childNode.style.vAlign = this.childNode.style.vAlign || 'top'; child.anchor = this; this.view.addChild(child.view); child.onAnchorAttached(); }; /* harmony default export */ var anchors_ChainAnchor = (ChainAnchor); // CONCATENATED MODULE: ./js/layouts/ChainLayout.js var ChainLayout_ = FCore._; function ChainLayout() { layouts_LinearLayout.call(this); } Object.defineProperties(ChainLayout.prototype, Object.getOwnPropertyDescriptors(layouts_LinearLayout.prototype)); ChainLayout.prototype.constructor = ChainLayout; ChainLayout.prototype.tag = 'ChainLayout'; ChainLayout.prototype.menuIcon = 'span.mdi.mdi-id-card'; ChainLayout.prototype.TOP_CLASS_NAME = 'as-chain-layout'; ChainLayout.prototype.getAnchorConstructor = function () { return anchors_ChainAnchor; }; ChainLayout.prototype.getAnchorEditorConstructor = function () { return anchoreditors_LinearAnchorEditor; }; ChainLayout.prototype.getAcceptsStyleNames = function () { return core_BaseLayout.prototype.getAcceptsStyleNames.call(this).concat(['overflowX']); }; ChainLayout.prototype.setStyleOverflowX = function (value) { if (['visible', 'hidden', 'auto'].indexOf(value) < 0) value = 'visible'; this.view.addStyle('overflowX', value); return value; }; ChainLayout.prototype.getStyleOverflowXDescriptor = function () { return { type: 'enum', values: ['visible', 'hidden', 'auto'] }; }; ChainLayout.prototype.measureMinSize = function () { var width = 0; var height = 0; var child; for (var i = 0; i < this.children.length; ++i) { child = this.children[i]; var minSize = child.measureMinSize(); width = Math.max(width, child.style.left + minSize.width + child.style.right); height = Math.max(height, child.style.top + minSize.height + child.style.bottom); } return { width: width, height: height }; }; ChainLayout.prototype.render = function () { return ChainLayout_({ "class": this.TOP_CLASS_NAME }); }; ChainLayout.prototype.onAddChild = function (child, index) { var anchor = new anchors_ChainAnchor(); anchor.attachChild(child); if (index == -1 || !this.view.childNodes[index]) { this.view.addChild(anchor.view); } else { this.view.addChildBefore(anchor.view, this.view.childNodes[index]); } }; ChainLayout.prototype.addChildByPosition = function (child, posX, posY) { var bound = this.view.getBoundingClientRect(); var at = undefined; var x; for (var i = 0; i < this.children.length; ++i) { x = this.children[i].view.getBoundingClientRect().right - bound.left; if (x >= posX) { at = this.children[i]; break; } } if (at) { this.addChildBefore(child, at); } else { this.addChild(child); } }; /* harmony default export */ var layouts_ChainLayout = (ChainLayout); // CONCATENATED MODULE: ./js/components/MultiselectCombobox.js /*** * @extends ScalableComponent * @constructor */ function MultiselectCombobox() { core_ScalableComponent.call(this); } OOP["a" /* default */].mixClass(MultiselectCombobox, core_ScalableComponent); MultiselectCombobox.prototype.tag = 'MultiselectCombobox'; MultiselectCombobox.prototype.menuIcon = 'span.mdi.mdi-chevron-down-box-outline'; MultiselectCombobox.prototype.render = function () { return FCore_({ tag: js_MultiSelectMenu.tag }); }; MultiselectCombobox.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.call(this); this.attributes.list = [{ text: '0', value: '0' }, { text: '1', value: '1' }, { text: '2', value: '2' }, { text: '3', value: '3' }]; }; MultiselectCombobox.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.call(this); this.bindAttribute('values'); this.bindAttribute('searchable', 'enableSearch'); }; MultiselectCombobox.prototype.setAttributeList = components_ComboBox.prototype.setAttributeList; MultiselectCombobox.prototype.getAttributeList = components_ComboBox.prototype.getAttributeList; MultiselectCombobox.prototype.measureMinSize = function () { var minWidthStyle = parseFloat(this.view.getComputedStyleValue('min-width').replace('px')); return { width: Math.max(minWidthStyle, 24), height: 30 }; }; MultiselectCombobox.prototype.getAttributeListDescriptor = components_ComboBox.prototype.getAttributeListDescriptor; MultiselectCombobox.prototype.getAttributeSearchableDescriptor = components_ComboBox.prototype.getAttributeSearchableDescriptor; MultiselectCombobox.prototype.getAttributeValuesDescriptor = function () { return { type: 'arrayOfText' }; }; MultiselectCombobox.prototype.getAcceptsAttributeNames = function () { return core_ScalableComponent.prototype.getAcceptsAttributeNames.call(this).concat(["list", 'values', 'searchable']); }; MultiselectCombobox.prototype.getDataBindingDescriptor = function () { var thisC = this; var subObj = {}; Object.defineProperties(subObj, { values: { set: function set(value) { thisC.setAttribute('values', value); }, get: function get() { return thisC.getAttribute('values'); } }, list: { get: function get() { return thisC.getAttribute('list'); }, set: function set(value) { thisC.setAttribute('list', value); } } }); return { set: function set(value) { Object.assign(subObj, value); }, get: function get() { return subObj; } }; }; /* harmony default export */ var components_MultiselectCombobox = (MultiselectCombobox); // CONCATENATED MODULE: ./js/components/TrackBar.js function TrackBar_TrackBar() { core_ScalableComponent.call(this); } OOP["a" /* default */].mixClass(TrackBar_TrackBar, core_ScalableComponent); TrackBar_TrackBar.prototype.tag = 'Trackbar'; TrackBar_TrackBar.prototype.menuIcon = 'span.mdi.mdi-source-commit.mdi-rotate-90'; TrackBar_TrackBar.prototype.render = function () { return FCore_('trackbar'); }; TrackBar_TrackBar.prototype.onCreate = function () { core_ScalableComponent.prototype.onCreate.apply(this, arguments); this.style.height = 18; }; TrackBar_TrackBar.prototype.onCreated = function () { core_ScalableComponent.prototype.onCreated.apply(this, arguments); this.bindAttribute('value'); }; TrackBar_TrackBar.prototype.getAttributeStyleDescriptor = function () { return { type: 'number', max: 1, min: 0 }; }; TrackBar_TrackBar.prototype.getAttributeNames = function () { return core_ScalableComponent.prototype.getAttributeNames.call(this).concat(['value']); }; TrackBar_TrackBar.prototype.measureMinSize = function () { return { width: 40, height: 18 }; }; /* harmony default export */ var components_TrackBar = (TrackBar_TrackBar); // CONCATENATED MODULE: ./js/core/Assembler.js function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function Assembler() { this.addConstructor(components_Button); this.addConstructor(Checkbox); this.addConstructor(components_ComboBox); this.addConstructor(components_DateInput); this.addConstructor(components_Image); this.addConstructor(components_Label); this.addConstructor(components_NumberInput); this.addConstructor(components_Radio); this.addConstructor(components_Table); this.addConstructor(components_Text); this.addConstructor(components_TextArea); this.addConstructor(components_TextInput); this.addConstructor(layouts_LinearLayout); this.addConstructor(layouts_RelativeLayout); this.addConstructor(layouts_ChainLayout); this.addConstructor(shapes_Ellipse); this.addConstructor(shapes_Rectangle); this.addConstructor(components_MultiselectCombobox); this.addConstructor(components_TrackBar); } Assembler.prototype.componentConstructors = {}; Assembler.prototype.fragmentConstructors = {}; //share data /*** * * @param data * @param {FmFragment=} frag * @return {BaseComponent|FmFragment} */ Assembler.prototype.build = function (data, frag) { if (data["class"]) { return this.buildFragment(data); } else if (data.tag) { return this.buildComponent(data, frag); } else throw new Error("Can not detect data type!"); }; Assembler.prototype.buildFragment = function (data) { var constructor; if (typeof data["class"] === 'string') { constructor = this.fragmentConstructors[data["class"]] || data["class"].split('.').reduce(function (ac, cr) { if (ac) { ac = ac[cr]; } return ac; }, window); } else if (typeof data["class"] === "function" && data["class"].type === "FRAGMENT") { constructor = data["class"]; } if (!constructor) { throw new Error("Invalid FmFragment class!"); } var frag = new constructor(); frag.setContentView(this.buildComponent(frag.contentViewData, frag)); if (data.style) frag.view.setStyles(data.style); if (data.attributes) frag.view.setAttributes(data.attributes); return frag; }; /*** * * @param data * @param {FmFragment=} frag * @return {BaseComponent} */ Assembler.prototype.buildComponent = function (data, frag) { var construction; if (typeof data.tag === "function") construction = data.tag;else construction = this.componentConstructors[data.tag]; if (!construction) throw new Error("Invalid tag " + data.tag); var result = new construction(); var style = data.style; if (_typeof(style) == 'object') for (var styleName in style) { result.setStyle(styleName, style[styleName]); } var attributes = data.attributes; if (_typeof(attributes) == 'object') for (var attributeName in attributes) { result.setAttribute(attributeName, attributes[attributeName]); } var events = data.events; if (_typeof(events) == 'object') for (var eventName in events) { result.setEvent(eventName, events[eventName]); } var children = data.children; if (children && children.length > 0) { for (var i = 0; i < children.length; ++i) { var child = this.build(children[i]); if (child.type === "FRAGMENT") { result.addChild(child.view); if (frag) frag.addChild(child); } else result.addChild(child); } } /* var context = { self: this, assembler: this, data: data, result: result }; PluginManager.exec(this, R.PLUGINS.BUILD_COMPONENT, context); result = context.result; if (result == null) { console.error("Cannot handle ", data); } */ return result; }; Assembler.prototype.addConstructor = function (arg0, arg1) { var name; var constructor; if (typeof arg0 == 'function') { var name = arg0.prototype.tag || arg0.name; constructor = arg0; this.componentConstructors[name] = arg0; } else if (typeof arg0 == 'string') { name = arg0; constructor = arg1; this.componentConstructors[arg0] = arg1; } else { throw new Error('Invalid params'); } switch (constructor.prototype.type) { case 'COMPONENT': this.componentConstructors[name] = constructor; break; case 'FRAGMENT': this.fragmentConstructors[name] = constructor; break; } }; Assembler.prototype.removeConstructor = function (arg0, arg1) { if (typeof arg0 == 'function') { var name = arg0.prototype.tag || arg0.name; switch (arg0.prototype.type) { case "FRAGMENT": delete this.fragmentConstructors[name]; break; case "COMPONENT": delete this.componentConstructors[name]; break; } } else if (typeof arg0 == 'string' && (this.componentConstructors[arg0] == arg1 || arg1 == undefined)) { delete this.componentConstructors[arg0]; delete this.fragmentConstructors[arg0]; } }; Assembler.prototype.addComponent = function (name, construction) { this.addConstructor(name, construction); }; Assembler.prototype.removeComponent = function (name, construction) { this.removeConstructor(name, construction); }; /* harmony default export */ var core_Assembler = (Assembler); var AssemblerInstance = new Assembler(); // EXTERNAL MODULE: ./css/hline.css var hline = __webpack_require__(242); // CONCATENATED MODULE: ./js/dom/HLine.js var HLine_$ = FCore.$; var HLine_ = FCore._; function HLine() {} HLine.render = function () { return HLine_({ "class": 'as-hline', child: { "class": 'as-hline-body', child: ['.as-hline-dot.left', '.as-hline-dot.right'] } }); }; FCore.install('hline', HLine); /* harmony default export */ var dom_HLine = (HLine); // EXTERNAL MODULE: ./css/vline.css var vline = __webpack_require__(244); // CONCATENATED MODULE: ./js/dom/VLine.js var VLine_$ = FCore.$; var VLine_ = FCore._; function VLine() {} VLine.render = function () { return VLine_({ "class": 'as-vline', child: { "class": 'as-vline-body', child: ['.as-vline-dot.top', '.as-vline-dot.bottom'] } }); }; FCore.install('vline', VLine); /* harmony default export */ var dom_VLine = (VLine); // CONCATENATED MODULE: ./js/core/BaseEditor.js /*** * * @constructor * @augments Fragment * @augments EventEmitter */ function BaseEditor() { EventEmitter["b" /* default */].call(this); AppPattern_Fragment.call(this); this.cmdRunner = new AppPattern_CMDRunner(this); this.cmdBindKeys = {}; this.loadConfig(); } Object.defineProperties(BaseEditor.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); Object.defineProperties(BaseEditor.prototype, Object.getOwnPropertyDescriptors(AppPattern_Fragment.prototype)); BaseEditor.prototype.constructor = BaseEditor; BaseEditor.prototype.CONFIG_STORE_KEY = "AS_BaseEditor_config"; BaseEditor.prototype.config = {}; //share width differentInstance BaseEditor.prototype.loadConfig = function () { var raw = localStorage.getItem(this.CONFIG_STORE_KEY); if (raw) { try { Object.assign(this.config, JSON.parse(raw)); } catch (error) { console.error("Config fail:", error); } } }; BaseEditor.prototype.saveConfig = function () { if (this._saveConfigTimeOut > 0) { clearTimeout(this._saveConfigTimeOut); this._saveConfigTimeOut = -1; } var self = this; setTimeout(function () { var raw = JSON.stringify(self.config); localStorage.setItem(self.CONFIG_STORE_KEY, raw); }, 2000); }; BaseEditor.prototype.setData = function (data) { throw new Error('Not implement!'); }; BaseEditor.prototype.getData = function () { throw new Error('Not implement!'); }; BaseEditor.prototype.getComponentTool = function () { return undefined; }; BaseEditor.prototype.getOutlineTool = function () { return undefined; }; BaseEditor.prototype.notifyDataChange = function () { this.emit('datachange', { type: 'datachange', target: this }, this); }; BaseEditor.prototype.execCmd = function () { return this.cmdRunner.invoke.apply(this.cmdRunner, arguments); }; BaseEditor.prototype.getCmdNames = function () { return []; }; BaseEditor.prototype.getCmdDescriptors = function () { var self = this; return this.getCmdNames().reduce(function (ac, name) { ac[name] = self.getCmdDescriptor(name); return ac; }, {}); }; BaseEditor.prototype.getCmdDescriptor = function (name) { return { type: 'trigger', args: [], desc: '', bindKey: undefined }; }; BaseEditor.prototype.notifyCmdDescriptorsChange = function () { this.emit('cmddescriptorschange', { type: 'cmddescriptorschange' }, this); }; BaseEditor.prototype.notifyCmdChange = function () { this.emit('cmdchange', { type: 'cmdchange' }, this); }; BaseEditor.prototype.getCmdGroupTree = function () { return []; }; BaseEditor.prototype.bindKeyToCmd = function (key, cmd) { this.cmdBindKeys[key] = cmd; }; /** * @param {KeyboardEvent}event */ BaseEditor.prototype.ev_cmdKeyDown = function (event) { var specKeys = []; if (event.ctrlKey) specKeys.push('Ctrl'); if (event.shiftKey) specKeys.push('Shift'); if (event.altKey) specKeys.push('Alt'); var key = event.key; if (key.length == 1) key = key.toUpperCase(); var key1 = specKeys.concat([key]).join('-'); var key2 = specKeys.concat([event.keyCode]).join('-'); var cmd = this.cmdBindKeys[key1] || this.cmdBindKeys[key2]; if (cmd) { this.execCmd(cmd, event); event.preventDefault(); } }; /* harmony default export */ var core_BaseEditor = (BaseEditor); // EXTERNAL MODULE: ./css/undohistory.css var undohistory = __webpack_require__(246); // CONCATENATED MODULE: ./js/dom/WindowManager.js function WindowManager() { this.windowHolders = []; this.zIndex = 100; } WindowManager.prototype.ev_mouseDownWindow = function (holder, event) { holder.delta = 1000; this.reIndex(); }; WindowManager.prototype.remove = function (elt) { var holder = this.getHolder(elt); if (!holder) return; elt.off('mousedown', holder.onmousedown); elt.remove(); holder.delta -= 100000000; this.reIndex(); }; WindowManager.prototype.getHolder = function (elt) { for (var i = 0; i < this.windowHolders.length; ++i) { if (this.windowHolders[i].elt == elt) return this.windowHolders[i]; } }; WindowManager.prototype.add = function (elt) { var holder = this.getHolder(elt); if (holder) return holder; var holder = { elt: elt, zIndex: 100, delta: 1000 }; holder.onmousedown = this.ev_mouseDownWindow.bind(this, holder); this.windowHolders.push(holder); elt.on('mousedown', holder.onmousedown); elt.addTo(document.body); this.reIndex(); return holder; }; WindowManager.prototype.reIndex = function () { this.windowHolders.sort(function (a, b) { return a.zIndex + a.delta - b.zIndex - b.delta; }); while (this.windowHolders.length > 0 && this.windowHolders[0].delta < 0) { this.windowHolders.shift(); } var holder; for (var i = 0; i < this.windowHolders.length; ++i) { holder = this.windowHolders[i]; holder.delta = 0; if (holder.zIndex != this.zIndex + i) { holder.zIndex = this.zIndex + i; holder.elt.addStyle('zIndex', holder.zIndex + ''); } } }; /* harmony default export */ var dom_WindowManager = (new WindowManager()); // CONCATENATED MODULE: ./js/editor/UndoHistory.js var UndoHistory_ = FCore._; var UndoHistory_$ = FCore.$; function UndoHistory() { core_BaseEditor.call(this); this._lastPosition = undefined; this.items = []; this.lastItemIndex = this.items.length - 1; } Object.defineProperties(UndoHistory.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); UndoHistory.prototype.constructor = UndoHistory; UndoHistory.prototype.CONFIG_STORE_KEY = "AS_UndoHistory_config"; UndoHistory.prototype.config = { windowStyle: { left: '57px', top: Dom["b" /* default */].getScreenSize().height - 230 + 'px' } }; UndoHistory.prototype.ev_clickDockBtn = function () { this.$view.removeClass('as-minimize'); if (this._lastPosition) { var bound = this.$view.getBoundingClientRect(); } }; UndoHistory.prototype.ev_clickMinimizeBtn = function () { this.$view.addClass('as-minimize'); }; UndoHistory.prototype.ev_windowPosChange = function () { this.config.windowStyle = { width: this.$view.style.width, height: this.$view.style.height, top: this.$view.style.top, left: this.$view.style.left }; this.saveConfig(); }; UndoHistory.prototype.getView = function () { if (this.$view) return this.$view; this.$view = UndoHistory_({ tag: 'onscreenwindow', attr: { tabIndex: '1' }, "class": ['as-undo-history', 'as-minimize-x'], props: { windowTitle: 'Undo Manager', windowIcon: 'span.mdi.mdi-cogs' }, child: [{ "class": 'as-undo-history-active-buttons', child: [{ tag: 'button', "class": 'as-undo-history-active-undo', attr: { title: 'Undo' }, props: { disabled: true }, child: 'span.mdi.mdi-undo' }, { tag: 'button', "class": 'as-undo-history-active-redo', attr: { title: 'Redo' }, props: { disabled: true }, child: 'span.mdi.mdi-redo' }, { "class": 'as-undo-history-active-buttons-right-container', child: { tag: 'button', attr: { title: 'Clear' }, "class": 'as-undo-history-active-clear', child: 'span.mdi.mdi-delete' } }] }, { tag: 'bscroller', "class": ['as-undo-history-item-list'], child: this.items.map(function (item) { return item.getView(); }) }], on: { sizechange: this.ev_windowPosChange.bind(this), drag: this.ev_windowPosChange.bind(this), relocation: this.ev_windowPosChange.bind(this), keydown: this.ev_cmdKeyDown.bind(this) } }); this.$view.$dockBtn.on('click', this.ev_clickDockBtn.bind(this)); this.$view.$minimizeBtn.on('click', this.ev_clickMinimizeBtn.bind(this)); // this.$view.on('relocation', this.ev_relocation.bind(this)); this.$list = UndoHistory_$('.as-undo-history-item-list', this.$view); this.$undoBtn = UndoHistory_$('button.as-undo-history-active-undo', this.$view).on('click', this.undo.bind(this)); this.$redoBtn = UndoHistory_$('button.as-undo-history-active-redo', this.$view).on('click', this.redo.bind(this)); this.$clear = UndoHistory_$('button.as-undo-history-active-clear', this.$view).on('click', this.clear.bind(this)); return this.$view; }; UndoHistory.prototype.onResume = function () { this.editor = this.getContext(R.HAS_CMD_EDITOR); var view = this.getView(); dom_WindowManager.add(view.addStyle(this.config.windowStyle)); }; UndoHistory.prototype.onPause = function () { this.editor = undefined; dom_WindowManager.remove(this.getView()); }; UndoHistory.prototype.checkout = function (item, viewOnly) { var cItem; var found = false; for (var i = this.items.length - 1; i >= 0; --i) { cItem = this.items[i]; if (cItem == item) { cItem.setActive(true); found = true; this.lastItemIndex = i; } else { cItem.setActive(false); } cItem.setDisabled(!found); } this.$list.scrollInto(item.getView()); this.$undoBtn.disabled = this.lastItemIndex <= 0; this.$redoBtn.disabled = this.lastItemIndex >= this.items.length - 1; if (!viewOnly) this.emit('checkout', { type: 'checkout', target: this, item: item }, this); }; UndoHistory.prototype.undo = function () { if (this.lastItemIndex > 0) { this.checkout(this.items[this.lastItemIndex - 1]); } }; UndoHistory.prototype.redo = function () { if (this.lastItemIndex < this.items.length - 1) { this.checkout(this.items[this.lastItemIndex + 1]); } }; /** * @param {String} type * @param {*} data * @param {String} description * @param {Date} timestamp */ UndoHistory.prototype.commit = function (type, data, description, timestamp) { var item; while (this.items.length > this.lastItemIndex + 1) { item = this.items.pop(); item.getView().remove(); } var res = new UndoHistoryItem(this, type, data, description, timestamp); this.items.push(res); this.$list.addChild(res.getView()); this.checkout(res, true); return res; }; UndoHistory.prototype.clear = function () { if (this.items.length < 2) return; var lastItem = this.items.pop(); var lastData = lastItem.data; lastItem.getView().remove(); while (this.items.length > 0) { lastItem = this.items.pop(); lastItem.getView().remove(); } this.commit('clear', lastData, 'Clear History'); }; UndoHistory.prototype.renew = function () { while (this.items.length > 0) { lastItem = this.items.pop(); lastItem.getView().remove(); } }; UndoHistory.prototype.ev_cmdKeyDown = function (event) { this.editor && this.editor.ev_cmdKeyDown(event); }; /** * @param {UndoHistory}parent * @param {String} type * @param {*} data * @param {String} description * @param {Date} timestamp */ function UndoHistoryItem(parent, type, data, description, timestamp) { this.parent = parent; this.type = type || 'edit'; this.data = data; this.description = description || 'Change'; this.timestamp = timestamp || new Date(); this._active = false; this._disabled = false; } UndoHistoryItem.prototype.typeIcon = { move: 'span.mdi.mdi-move-resize', remove: 'span.mdi.mdi-delete-variant[style="color: rgb(255,59,59)"]', 'edit-attribute': 'span.mdi.mdi-circle-edit-outline', edit: 'span.mdi.mdi-circle-edit-outline', add: 'span.mdi.mdi-pen-plus', 'set-data': 'span.mdi.mdi-open-in-app', 'move-resize': 'span.mdi.mdi-move-resize', 'move-order': 'span.mdi.mdi-arrow-up-down-bold', 'clear': 'span.mdi.mdi-check-outline', 'cut': 'span.mdi.mdi-content-cut' }; UndoHistoryItem.prototype.setActive = function (bool) { this._active = !!bool; if (this.$view) { if (bool) { this.$view.addClass('as-undo-history-item-active'); } else { this.$view.removeClass('as-undo-history-item-active'); } } }; UndoHistoryItem.prototype.setDisabled = function (bool) { this._disabled = !!bool; if (this.$view) { if (bool) { this.$view.addClass('as-undo-history-item-disabled'); } else { this.$view.removeClass('as-undo-history-item-disabled'); } } }; UndoHistoryItem.prototype.getActive = function () { return this._active; }; UndoHistoryItem.prototype.getView = function () { if (this.$view) return this.$view; this.$view = UndoHistory_({ "class": ['as-undo-history-item'].concat(this._active ? ['as-undo-history-item-active'] : []).concat(this._disabled ? ['as-undo-history-item-disabled'] : []), attr: { title: this.timestamp.toLocaleTimeString() }, child: [{ "class": 'as-undo-history-item-icon-container', child: this.typeIcon[this.type] }, { text: this.description }], on: { click: this.ev_click.bind(this) } }); return this.$view; }; UndoHistoryItem.prototype.ev_click = function (event) { this.parent.checkout(this); }; /* harmony default export */ var editor_UndoHistory = (UndoHistory); // EXTERNAL MODULE: ./css/componentpropertieseditor.css var componentpropertieseditor = __webpack_require__(248); // CONCATENATED MODULE: ./js/font/GoogleFont.js function queryURL(fontNames) { return 'https://fonts.googleapis.com/css?family=' + fontNames.join('_') + '&display=swap'; } var FONT_NAMES = ["Alegreya", "Alegreya+SC", "Alegreya+Sans", "Alegreya+Sans+SC", "Alfa+Slab+One", "Amatic+SC", "Andika", "Anton", "Archivo", "Archivo+Narrow", "Arima+Madurai", "Arimo", "Arsenal", "Asap", "Asap+Condensed", "Athiti", "Bahianita", "Bai+Jamjuree", "Baloo", "Baloo+Bhai", "Baloo+Bhaijaan", "Baloo+Bhaina", "Baloo+Chettan", "Baloo+Da", "Baloo+Paaji", "Baloo+Tamma", "Baloo+Tammudu", "Baloo+Thambi", "Bangers", "Barlow", "Barlow+Condensed", "Barlow+Semi+Condensed", "Barriecito", "Be+Vietnam", "Bevan", "Big+Shoulders+Display", "Big+Shoulders+Text", "Bungee", "Bungee+Hairline", "Bungee+Inline", "Bungee+Outline", "Bungee+Shade", "Cabin", "Cabin+Condensed", "Chakra+Petch", "Charm", "Charmonman", "Chonburi", "Coiny", "Comfortaa", "Cormorant", "Cormorant+Garamond", "Cormorant+Infant", "Cormorant+SC", "Cormorant+Unicase", "Cormorant+Upright", "Cousine", "Crimson+Pro", "Cuprum", "Dancing+Script", "Darker+Grotesque", "David+Libre", "Dosis", "EB+Garamond", "Encode+Sans", "Encode+Sans+Condensed", "Encode+Sans+Expanded", "Encode+Sans+Semi+Condensed", "Encode+Sans+Semi+Expanded", "Exo", "Exo+2", "Fahkwang", "Farsan", "Faustina", "Fira+Sans", "Fira+Sans+Condensed", "Fira+Sans+Extra+Condensed", "Francois+One", "Grenze", "Hepta+Slab", "IBM+Plex+Mono", "IBM+Plex+Sans", "IBM+Plex+Sans+Condensed", "IBM+Plex+Serif", "Inconsolata", "Itim", "Josefin+Sans", "Judson", "Jura", "K2D", "Kanit", "KoHo", "Kodchasan", "Krub", "Lalezar", "Lemonada", "Lexend+Deca", "Lexend+Exa", "Lexend+Giga", "Lexend+Mega", "Lexend+Peta", "Lexend+Tera", "Lexend+Zetta", "Literata", "Livvic", "Lobster", "Lora", "M+PLUS+1p", "M+PLUS+Rounded+1c", "Maitree", "Major+Mono+Display", "Mali", "Manuale", "Markazi+Text", "Maven+Pro", "Merriweather", "Metrophobic", "Mitr", "Montserrat", "Montserrat+Alternates", "Muli", "Niramit", "Noticia+Text", "Noto+Sans", "Noto+Sans+SC", "Noto+Serif", "Noto+Serif+SC", "Noto+Serif+TC", "Nunito", "Nunito+Sans", "Old+Standard+TT", "Open+Sans", "Open+Sans+Condensed:300", "Oswald", "Pacifico", "Pangolin", "Patrick+Hand", "Patrick+Hand+SC", "Pattaya", "Paytone+One", "Philosopher", "Play", "Playfair+Display", "Playfair+Display+SC", "Podkova", "Prata", "Pridi", "Prompt", "Quicksand", "Roboto", "Roboto+Condensed", "Roboto+Mono", "Roboto+Slab", "Rokkitt", "Rosario", "Saira", "Saira+Condensed", "Saira+Extra+Condensed", "Saira+Semi+Condensed", "Saira+Stencil+One", "Sarabun", "Sawarabi+Gothic", "Sedgwick+Ave", "Sedgwick+Ave+Display", "Sigmar+One", "Source+Code+Pro", "Source+Sans+Pro", "Space+Mono", "Spectral", "Spectral+SC", "Sriracha", "Srisakdi", "Taviraj", "Thasadith", "Tinos", "Trirong", "VT323", "Varela+Round", "Vollkorn", "Vollkorn+SC", "Yanone+Kaffeesatz", "Yeseva+One"]; var FONT_FACES = ["'Open Sans', sans-serif", "'Roboto', sans-serif", "'Big Shoulders Text', cursive", "'Montserrat', sans-serif", "'Oswald', sans-serif", "'Source Sans Pro', sans-serif", "'Roboto Condensed', sans-serif", "'Literata', serif", "'Roboto Mono', monospace", "'Roboto Slab', serif", "'Merriweather', serif", "'Noto Sans', sans-serif", "'Lora', serif", "'Muli', sans-serif", "'Open Sans Condensed', sans-serif", "'Playfair Display', serif", "'Nunito', sans-serif", "'Noto Serif', serif", "'Fira Sans', sans-serif", "'Inconsolata', monospace", "'Dosis', sans-serif", "'Nunito Sans', sans-serif", "'Arimo', sans-serif", "'Quicksand', sans-serif", "'Cabin', sans-serif", "'Josefin Sans', sans-serif", "'Varela Round', sans-serif", "'Anton', sans-serif", "'Lobster', cursive", "'Yanone Kaffeesatz', sans-serif", "'Source Code Pro', monospace", "'Baloo Bhai', cursive", "'Barlow', sans-serif", "'Dancing Script', cursive", "'Pacifico', cursive", "'Exo 2', sans-serif", "'Barlow Semi Condensed', sans-serif", "'EB Garamond', serif", "'Archivo Narrow', sans-serif", "'Asap', sans-serif", "'Comfortaa', cursive", "'Barlow Condensed', sans-serif", "'IBM Plex Sans', sans-serif", "'Maven Pro', sans-serif", "'Play', sans-serif", "'Exo', sans-serif", "'Amatic SC', cursive", "'Kanit', sans-serif", "'Fira Sans Condensed', sans-serif", "'Noto Sans SC', sans-serif", "'Vollkorn', serif", "'Prompt', sans-serif", "'Rokkitt', serif", "'Cuprum', sans-serif", "'Alegreya Sans', sans-serif", "'Francois One', sans-serif", "'Cormorant Garamond', serif", "'Alegreya', serif", "'Alfa Slab One', cursive", "'Noticia Text', serif", "'Saira Extra Condensed', sans-serif", "'Old Standard TT', serif", "'Tinos', serif", "'Fira Sans Extra Condensed', sans-serif", "'IBM Plex Serif', serif", "'Patrick Hand', cursive", "'M PLUS 1p', sans-serif", "'Prata', serif", "'Philosopher', sans-serif", "'Saira Semi Condensed', sans-serif", "'Archivo', sans-serif", "'Big Shoulders Display', cursive", "'Bangers', cursive", "'Playfair Display SC', serif", "'Cabin Condensed', sans-serif", "'Paytone One', sans-serif", "'Montserrat Alternates', sans-serif", "'Taviraj', serif", "'Spectral', serif", "'Lalezar', cursive", "'Asap Condensed', sans-serif", "'M PLUS Rounded 1c', sans-serif", "'Sigmar One', cursive", "'Saira', sans-serif", "'Pridi', serif", "'Mitr', sans-serif", "'Baloo', cursive", "'Cormorant', serif", "'Sarabun', sans-serif", "'Saira Condensed', sans-serif", "'Be Vietnam', sans-serif", "'Yeseva One', cursive", "'Lexend Peta', sans-serif", "'Alegreya Sans SC', sans-serif", "'IBM Plex Mono', monospace", "'Jura', sans-serif", "'Bevan', cursive", "'Lexend Exa', sans-serif", "'Sawarabi Gothic', sans-serif", "'Cousine', monospace", "'Markazi Text', serif", "'VT323', monospace", "'Baloo Bhaina', cursive", "'Space Mono', monospace", "'Encode Sans', sans-serif", "'Encode Sans Semi Expanded', sans-serif", "'Arima Madurai', cursive", "'Lexend Deca', sans-serif", "'Lexend Tera', sans-serif", "'Lexend Giga', sans-serif", "'Lexend Zetta', sans-serif", "'Lexend Mega', sans-serif", "'Arsenal', sans-serif", "'Itim', cursive", "'Noto Serif SC', serif", "'Pangolin', cursive", "'Lemonada', cursive", "'Encode Sans Condensed', sans-serif", "'Bai Jamjuree', sans-serif", "'Alegreya SC', serif", "'Noto Serif TC', serif", "'Judson', serif", "'Livvic', sans-serif", "'Krub', sans-serif", "'Trirong', serif", "'Niramit', sans-serif", "'Bungee Inline', cursive", "'Mali', cursive", "'Pattaya', sans-serif", "'Rosario', sans-serif", "'Bungee', cursive", "'Sriracha', cursive", "'Metrophobic', sans-serif", "'Faustina', serif", "'Darker Grotesque', sans-serif", "'Encode Sans Expanded', sans-serif", "'Chakra Petch', sans-serif", "'IBM Plex Sans Condensed', sans-serif", "'Maitree', serif", "'Baloo Bhaijaan', cursive", "'Cormorant Infant', serif", "'Saira Stencil One', cursive", "'Chonburi', cursive", "'Barriecito', cursive", "'Bahianita', cursive", "'Athiti', sans-serif", "'Sedgwick Ave', cursive", "'Patrick Hand SC', cursive", "'Srisakdi', cursive", "'Cormorant SC', serif", "'Andika', sans-serif", "'Podkova', serif", "'Bungee Shade', cursive", "'Baloo Da', cursive", "'Spectral SC', serif", "'Baloo Thambi', cursive", "'Baloo Chettan', cursive", "'Cormorant Upright', serif", "'Encode Sans Semi Condensed', sans-serif", "'Charm', cursive", "'Baloo Paaji', cursive", "'K2D', sans-serif", "'Farsan', cursive", "'David Libre', serif", "'Coiny', cursive", "'Baloo Tamma', cursive", "'Manuale', serif", "'Thasadith', sans-serif", "'Vollkorn SC', serif", "'Bungee Hairline', cursive", "'Kodchasan', sans-serif", "'Hepta Slab', serif", "'Cormorant Unicase', serif", "'Crimson Pro', serif", "'Grenze', serif", "'Charmonman', cursive", "'Baloo Tammudu', cursive", "'KoHo', sans-serif", "'Major Mono Display', monospace", "'Fahkwang', sans-serif", "'Bungee Outline', cursive", "'Sedgwick Ave Display', cursive"]; var FONT_ITEMS = FONT_FACES.map(function (fontFamily) { var fontName = fontFamily.match(/\'([^\']+)\'/)[1]; return { text: fontName, value: fontFamily, extendStyle: { fontFamily: fontFamily } }; }, {}); var FONT_FACES_BY_NAME = FONT_ITEMS.reduce(function (ac, cr) { ac[cr.text] = cr.value; return ac; }, {}); // EXTERNAL MODULE: ./css/selectlisteditor.css var selectlisteditor = __webpack_require__(250); // EXTERNAL MODULE: ./node_modules/absol-sheet/css/tableeditable.css var tableeditable = __webpack_require__(252); // CONCATENATED MODULE: ./node_modules/absol-sheet/js/dom/SCore.js var SCore = new Dom["b" /* default */](); SCore.install(absol_acomp_AComp.core); /* harmony default export */ var dom_SCore = (SCore); var SCore_ = SCore._; var SCore_$ = SCore.$; // CONCATENATED MODULE: ./node_modules/absol-sheet/js/dom/SComp.js //import creator /* harmony default export */ var SComp = ({ _: dom_SCore._, $: dom_SCore.$, core: dom_SCore }); // CONCATENATED MODULE: ./node_modules/absol-sheet/js/viewer/TableData.js var TableData_ = SComp._; var TableData_$ = SComp.$; /** * * @constructor */ function TableData() { this.propertyNames = []; this.propertyDescriptors = {}; this.records = []; this.bodyRow = []; this.headCells = []; } TableData.prototype.export = function () { return { propertyNames: this.propertyNames, propertyDescriptors: this.propertyDescriptors, records: this.records } }; TableData.prototype.import = function (data) { this.propertyDescriptors = data.propertyDescriptors; this.propertyNames = data.propertyNames; this.records = data.records; this.reload(); }; TableData.prototype.reload = function () { this.loadHeader(); this.loadBody(); }; TableData.prototype.loadHeader = function () { var thisTable = this; this.$headRow.clearChild(); this.$headRow.addChild(this.$rootCell); this.colIndexOfProperty = this.propertyNames.reduce(function (ac, name, i) { ac[name] = i + 1; return ac; }, {}); this.headCells = this.propertyNames.map(function (name, i) { var cell = TableData_({ tag: 'td', child: { tag: 'span', child: { text: (thisTable.propertyDescriptors && thisTable.propertyDescriptors[name] && thisTable.propertyDescriptors[name].text ) || name } } }); thisTable.$headRow.addChild(cell); return { elt: cell, index: i, name: name, descriptor: (thisTable.propertyDescriptors && thisTable.propertyDescriptors[name]) || { type: 'text' } }; }); }; TableData.prototype.loadBody = function () { var thisTable = this; this.$tbody.clearChild(); this.bodyRow = this.records.map(function (record, idx) { return new TSRow(thisTable, record, idx); }); var rowEltList = this.bodyRow.map(function (row) { return row.elt; }); this.$tbody.addChild(rowEltList); }; TableData.prototype.getView = function () { if (this.$view) return this.$view; this.$view = TableData_({ tag: 'table', class: 'asht-table-data', child: [ { tag: 'thead', child: 'tr' }, 'tbody' ] }); this.$thead = TableData_$('thead', this.$view); this.$headRow = TableData_$('tr', this.$thead); this.$tbody = TableData_$('tbody', this.$view); this.$rootCell = TableData_('td.asht-table-data-root-cell'); return this.$view; }; /** * @param {Number} y */ TableData.prototype.findRowByClientY = function (y) { var length = this.bodyRow.length; var start = 0; var mid; var row; var rowY; var position; while (length > 0) { mid = start + (length >> 1); row = this.bodyRow[mid]; position = row.elt.getBoundingClientRect(); rowY = position.top; if (y < rowY) { length = mid - start; } else if (y > rowY + position.height) { length = start + length - mid - 1; start = mid + 1; } else { return row; } } return null; }; /** * @param {Number} x */ TableData.prototype.findColByClientX = function (x) { var length = this.headCells.length; var start = 0; var mid; var cell; var rowX; var position; while (length > 0) { mid = start + (length >> 1); cell = this.headCells[mid]; position = cell.elt.getBoundingClientRect(); rowX = position.left; if (x < rowX) { length = mid - start; } else if (x > rowX + position.width) { length = start + length - mid - 1; start = mid + 1; } else { return cell; } } return null; }; TableData.prototype.findColByIndex = function (index) { return this.headCells[index] || null; }; TableData.prototype.findColByName = function (name) { return this.headCells[this.propertyNames.indexOf(name)] || null; }; TableData.prototype.findRowByIndex = function (index) { return this.bodyRow[index] || null; }; TableData.prototype.findIndexOfRow = function (row) { return this.bodyRow.indexOf(row); }; TableData.prototype.findIndexOfCol = function (col) { return this.headCells.indexOf(col); }; /* harmony default export */ var viewer_TableData = (TableData); /*** * * @param {TableData} table * @param {Object} record * @param {number} idx * @constructor */ function TSRow(table, record, idx) { this.table = table; this.elt = TableData_('tr'); this.$idx = TableData_('td'); this.elt.addChild(this.$idx); /*** * * @type {TSCell[]} */ this.cells = []; this.idx = idx; this.record = record; } Object.defineProperty(TSRow.prototype, 'record', { set: function (value) { this._record = value; this.loadCells(); }, get: function () { return this._record; } }); Object.defineProperty(TSRow.prototype, 'propertyNames', { get: function () { return this.table.propertyNames; } }) Object.defineProperty(TSRow.prototype, 'idx', { set: function (value) { this._idx = value; this.$idx.clearChild().addChild(TableData_({ text: value + 1 + '' })); }, get: function () { return this._idx; } }) TSRow.prototype.loadCells = function () { var row = this; var propertyNames = this.propertyNames; this.cells.forEach(function (cell) { cell.elt.remove(); }) this.cells = propertyNames.map(function (pName) { return new TSCell(row, pName); }); var cellEltList = this.cells.map(function (cell) { return cell.elt; }); this.elt.addChild(cellEltList); }; /*** * * @param {TSRow} row * @param {string} pName * @constructor */ function TSCell(row, pName) { this.elt = TableData_('td'); this.row = row; this.pName = pName; } Object.defineProperty(TSCell.prototype, 'pName', { set: function (value) { this._pName = value; this.load(); }, get: function () { return this._pName; } }); Object.defineProperty(TSCell.prototype, 'record', { get: function () { return this.row.record; } }); Object.defineProperty(TSCell.prototype, 'table', { get: function () { return this.row.table; } }); Object.defineProperty(TSCell.prototype, 'descriptor', { get: function () { return (this.row.table.propertyDescriptors && this.row.table.propertyDescriptors[this.pName]) || { type: 'text' }; } }); Object.defineProperty(TSCell.prototype, 'value', { get: function () { return this.row.record[this.pName]; }, set: function (value) { this.row.record[this.pName] = value; this.load(); } }); TSCell.prototype.type2functionName = { text: 'loadTextCell', number: 'loadNumberCell', enum: 'loadEnumCell', boolean: 'loadBooleanCell' }; TSCell.prototype.load = function () { var descriptor = this.descriptor; var fName = this.type2functionName[descriptor.type]; this.elt.attr('class', 'asht-type-' + descriptor.type); this[fName](this.elt, this.value, this.record, this.pName, this.descriptor); }; TSCell.prototype.loadTextCell = function (elt, value, record, name, descriptor) { value = value || ''; elt.clearChild(); var lineSpans = value.split(/\r?\n/).reduce(function (ac, line) { ac.push(TableData_({ tag: 'span', child: { text: line } })); ac.push(TableData_('br')); return ac; }, []); elt.addChild(lineSpans); }; TSCell.prototype.loadNumberCell = function (elt, value, record, name, descriptor) { value = value || 0; elt.clearChild(); elt.addChild(TableData_({ tag: 'span', child: { text: value + '' } })); }; TSCell.prototype.loadEnumCell = function (elt, value, record, name, descriptor) { descriptor.__val2Item__ = descriptor.__val2Item__ || (descriptor.items || []) .reduce(function (ac, item) { ac[item.value] = item; return ac; }, {}); elt.clearChild(); if (value !== null && value !== undefined && descriptor.__val2Item__[value]) { elt.addChild(TableData_({ tag: 'span', child: { text: descriptor.__val2Item__[value].text } })); } }; TSCell.prototype.loadBooleanCell = function (elt, value, record, name, descriptor) { elt.clearChild(); if (value) { elt.addChild(TableData_('span.mdi.mdi-check')); } }; // CONCATENATED MODULE: ./node_modules/absol-sheet/js/fragment/editor/CellEditor.js /*** * @extends EventEmitter * @param {TableEditor} tableEditor * @param {TSCell} cell * @constructor */ function CellEditor(tableEditor, cell) { EventEmitter["b" /* default */].call(this); this.state = "INIT"; this.tableEditor = tableEditor; this.cell = cell; this.row = cell.row; this.col = cell.table.findColByName(cell.pName); this.$editingbox = tableEditor.$editingbox; this._bindEvent(); this.$input = null; this.prepareInput(); this.waitAction(); } OOP["a" /* default */].mixClass(CellEditor, EventEmitter["b" /* default */]); /*** * * @protected */ CellEditor.prototype.prepareInput = function () { }; /*** * * @protected */ CellEditor.prototype.waitAction = function () { this.state = "WAIT_ACTION"; }; CellEditor.prototype.startEditing = function () { this.state = "EDITING"; }; /** * * @protected */ CellEditor.prototype._bindEvent = function () { for (var fName in this) { if (typeof this[fName] === "function" && fName.startsWith('ev_')) { this[fName] = this[fName].bind(this); } } }; CellEditor.prototype.editCellAbove = function () { var rowIdx = this.cell.row.idx; var prevRow = this.cell.table.findRowByIndex(rowIdx - 1); if (prevRow) { this.tableEditor.editCell(prevRow, this.col); } }; CellEditor.prototype.editCellBellow = function () { var rowIdx = this.cell.row.idx; var nextRow = this.cell.table.findRowByIndex(rowIdx + 1); if (nextRow) { this.finish(); this.tableEditor.editCell(nextRow, this.col); } }; CellEditor.prototype.editCellLeft = function () { var colIdx = this.cell.table.findIndexOfCol(this.col); var prevCol = this.cell.table.findColByIndex(colIdx - 1); if (prevCol) { this.finish(); this.tableEditor.editCell(this.row, prevCol); } }; CellEditor.prototype.editCellRight = function () { var colIdx = this.cell.table.findIndexOfCol(this.col); var nextCol = this.cell.table.findColByIndex(colIdx + 1); if (nextCol) { this.finish(); this.tableEditor.editCell(this.row, nextCol); } }; CellEditor.prototype.editCellNext = function () { var colIdx = this.cell.table.findIndexOfCol(this.col); var nextCol = this.cell.table.findColByIndex(colIdx + 1); if (nextCol) { this.finish(); this.tableEditor.editCell(this.row, nextCol); } else{ var rowIdx = this.cell.row.idx; var nextRow = this.cell.table.findRowByIndex(rowIdx + 1); var firstCol = this.cell.table.findColByIndex(0); if (nextRow && firstCol) { this.finish(); this.tableEditor.editCell(nextRow, firstCol); } } }; CellEditor.prototype.finish = function () { if (this.state !== "FINISHED") { this.emit('finish', { type: 'finish', target: this }); } }; /* harmony default export */ var editor_CellEditor = (CellEditor); // CONCATENATED MODULE: ./node_modules/absol-sheet/js/fragment/editor/TextCellEditor.js /*** * @extends CellEditor * @param {TableEditor} tableEditor * @param {TSCell} cell * @constructor */ function TextCellEditor(tableEditor, cell) { editor_CellEditor.call(this, tableEditor, cell); } OOP["a" /* default */].mixClass(TextCellEditor, editor_CellEditor); TextCellEditor.prototype.prepareInput = function () { /*** * @type {PreInput} */ this.$input = SCore_({ tag: js_PreInput.tag, class: 'asht-cell-editor-input', on: { blur: this.ev_blur, focus: this.ev_focus } }); this.$editingbox.clearChild() .addChild(this.$input); this._loadCellStyle(); }; TextCellEditor.prototype._loadCellStyle = function () { var cellElt = this.cell.elt; this._cellStyle = { 'font-size': cellElt.getComputedStyleValue('font-size'), 'font-family': cellElt.getComputedStyleValue('font-family'), 'font-style': cellElt.getComputedStyleValue('font-style'), 'line-height': cellElt.getComputedStyleValue('line-height'), 'padding-left': cellElt.getComputedStyleValue('padding-left'), 'padding-right': cellElt.getComputedStyleValue('padding-right'), 'padding-top': cellElt.getComputedStyleValue('padding-top'), 'padding-bottom': cellElt.getComputedStyleValue('padding-bottom'), 'text-align': cellElt.getComputedStyleValue('text-align'), }; }; TextCellEditor.prototype.waitAction = function () { editor_CellEditor.prototype.waitAction.call(this); setTimeout(function () { var text = this.cell.value || ''; this.$input.focus(); this.$input.applyData(text, { start: 0, end: text.length }); }.bind(this), 100); this.$input.removeClass('asht-state-editing') .addClass('asht-state-wait-action'); this.$input.on('keydown', this.ev_firstKey) .off('keydown', this.ev_finishKey) .on('dblclick', this.ev_dblClick); }; TextCellEditor.prototype.startEditing = function () { editor_CellEditor.prototype.startEditing.call(this); this.$input.addClass('asht-state-editing') .removeClass('asht-state-wait-action'); this.$input.off('keydown', this.ev_firstKey) .off('dblclick', this.ev_dblClick); this.$input.addStyle(this._cellStyle); this.$input.on('keydown', this.ev_finishKey); }; TextCellEditor.prototype.finish = function () { this.$input.off('keydown', this.ev_finishKey) .off('keydown', this.ev_firstKey) .off('dblclick', this.ev_dblClick) .off('blur', this.ev_focus) .off('blur', this.ev_blur); editor_CellEditor.prototype.finish.call(this); }; /*** * * @param {KeyboardEvent} event */ TextCellEditor.prototype.ev_firstKey = function (event) { if (event.key === "Delete") { this.cell.value = ""; } else if (event.key === 'Enter' || event.key === 'F2') { this.$input.value = this.cell.value; this.startEditing(); event.preventDefault(); } else if (event.key === 'Tab') { this.editCellNext(); event.preventDefault(); } else if (event.key.length === 1 || event.key === "Backspace") { this.startEditing(); } else if (event.key.startsWith('Arrow')) { event.preventDefault(); switch (event.key) { case "ArrowLeft": this.editCellLeft(); break; case "ArrowRight": this.editCellRight(); break; case "ArrowUp": this.editCellAbove(); break; case "ArrowDown": this.editCellBellow(); break; } } }; TextCellEditor.prototype.ev_finishKey = function (event) { if (event.key === "Enter" || event.key === "Tab") { var text = this.$input.value; if (event.altKey && event.key === "Enter") { var pos = this.$input.getSelectPosition(); var newText = text.substr(0, pos.start) + '\n' + text.substr(pos.end); this.$input.applyData(newText, pos.start + 1); this.$input.waitToCommit(newText, pos.start + 1); } else { this.cell.value = text; this.tableEditor.updateFixedTableEltPosition(); this.editCellNext(); } event.preventDefault(); } else if (event.key === "Escape") { event.preventDefault(); this.waitAction(); } }; TextCellEditor.prototype.ev_dblClick = function (event) { event.preventDefault(); this.$input.value = this.cell.value; setTimeout(this.$input.focus.bind(this.$input), 100); this.startEditing(); }; TextCellEditor.prototype.ev_blur = function (event) { this.$editingbox.removeClass('as-status-focus'); setTimeout(function () { if (this.$input !== document.activeElement) { //blur before finished this.cell.value = this.$input.value; } }.bind(this), 100); }; TextCellEditor.prototype.ev_focus = function () { this.$editingbox.addClass('as-status-focus'); }; /* harmony default export */ var editor_TextCellEditor = (TextCellEditor); // CONCATENATED MODULE: ./node_modules/absol-sheet/js/fragment/editor/NumberCellEditor.js /*** * @extends TextCellEditor * @param {TableEditor} tableEditor * @param {TSCell} cell * @constructor */ function NumberCellEditor(tableEditor, cell) { editor_TextCellEditor.call(this, tableEditor, cell); } OOP["a" /* default */].mixClass(NumberCellEditor, editor_TextCellEditor); NumberCellEditor.prototype.prepareInput = function () { var descriptor = this.cell.descriptor; /*** * @type {PreInput} */ this.$input = SCore_({ tag: 'input', attr: { type: 'number' }, class: 'asht-cell-editor-input', on: { blur: this.ev_blur } }); this.$editingbox.clearChild() .addChild(this.$input); }; NumberCellEditor.prototype.waitAction = function () { editor_CellEditor.prototype.waitAction.call(this); setTimeout(function () { this.$input.focus(); this.$input.value = this.cell.value; this.$input.select(); }.bind(this), 100); this.$input.removeClass('asht-state-editing') .addClass('asht-state-wait-action'); this.$input.on('keydown', this.ev_firstKey) .off('keydown', this.ev_finishKey) .on('dblclick', this.ev_dblClick); }; NumberCellEditor.prototype.startEditing = function () { editor_CellEditor.prototype.startEditing.call(this); this.$input.addClass('asht-state-editing') .removeClass('asht-state-wait-action'); this.$input.off('keydown', this.ev_firstKey) .off('dblclick', this.ev_dblClick); this.$input.on('keydown', this.ev_finishKey); }; /*** * * @param {KeyboardEvent} event */ NumberCellEditor.prototype.ev_firstKey = function (event) { if (event.key === "Delete") { this.cell.value = 0; } else if (event.key === 'Enter' || event.key === 'F2') { this.$input.value = this.cell.value; this.startEditing(); event.preventDefault(); } else if (event.key === 'Tab') { this.editCellNext(); event.preventDefault(); } else if (event.key.length === 1 || event.key === "Backspace") { this.startEditing(); } else if (event.key.startsWith('Arrow')) { event.preventDefault(); switch (event.key) { case "ArrowLeft": this.editCellLeft(); break; case "ArrowRight": this.editCellRight(); break; case "ArrowUp": this.editCellAbove(); break; case "ArrowDown": this.editCellBellow(); break; } } }; NumberCellEditor.prototype.ev_finishKey = function (event) { if (event.key === "Enter"|| event.key === "Tab") { var text = this.$input.value; this.cell.value = parseFloat(text) || this.cell.value; this.tableEditor.updateFixedTableEltPosition(); event.preventDefault(); this.editCellNext(); } else if (event.key === "Escape") { event.preventDefault(); this.waitAction(); } }; NumberCellEditor.prototype.ev_dblClick = function (event) { event.preventDefault(); this.$input.value = this.cell.value; setTimeout(this.$input.focus.bind(this.$input), 100); this.startEditing(); }; NumberCellEditor.prototype.ev_blur = function (event) { this.$editingbox.removeClass('as-status-focus'); setTimeout(function () { if (this.$input !== document.activeElement) { //blur before finished var value = parseFloat(this.$input.value); if (isFinite(value)) this.cell.value = value; } }.bind(this), 100); }; NumberCellEditor.prototype.ev_focus = editor_TextCellEditor.prototype.ev_focus; /* harmony default export */ var editor_NumberCellEditor = (NumberCellEditor); // CONCATENATED MODULE: ./node_modules/absol-sheet/js/fragment/editor/EnumCellEditor.js /*** * @extends CellEditor * @param {TableEditor} tableEditor * @param {TSCell} cell * @constructor */ function EnumCellEditor(tableEditor, cell) { editor_CellEditor.call(this, tableEditor, cell); } OOP["a" /* default */].mixClass(EnumCellEditor, editor_CellEditor); EnumCellEditor.prototype.prepareInput = function () { var descriptor = this.cell.descriptor; this.$selectlistBox = SCore_({ tag: 'selectlistbox', props: { anchor: [1, 6, 2, 5], items: descriptor.items }, on: { preupdateposition: this.ev_preUpdateListPosition, blur: this.ev_blur } }); this.$selectlistBox.on('pressitem', this.ev_selectListBoxPressItem); /*** * @type {Button ||AElement} */ this.$input = SCore_({ tag: 'button', class: 'asht-cell-editor-input', child: { text: (descriptor.__val2Item__[this.cell.value] && descriptor.__val2Item__[this.cell.value].text) || "" }, on: { blur: this.ev_blur, focus: this.ev_focus } }); /* this.$selectlistBox.followTarget = this.$input; */ this._loadCellStyle(); this.$editingbox.clearChild() .addChild(this.$input); }; EnumCellEditor.prototype._loadCellStyle = function () { var cellElt = this.cell.elt; this._cellStyle = { 'font-size': cellElt.getComputedStyleValue('font-size'), 'font-family': cellElt.getComputedStyleValue('font-family'), 'font-style': cellElt.getComputedStyleValue('font-style'), 'line-height': cellElt.getComputedStyleValue('line-height'), 'padding-left': cellElt.getComputedStyleValue('padding-left'), 'padding-right': cellElt.getComputedStyleValue('padding-right'), 'padding-top': cellElt.getComputedStyleValue('padding-top'), 'padding-bottom': cellElt.getComputedStyleValue('padding-bottom'), 'text-align': cellElt.getComputedStyleValue('text-align'), }; }; EnumCellEditor.prototype.waitAction = function () { editor_CellEditor.prototype.waitAction.call(this); setTimeout(function () { this.$input.focus(); }.bind(this), 100); this.$input.removeClass('asht-state-editing') .addClass('asht-state-wait-action'); this.$input.on('keydown', this.ev_firstKey) .off('keydown', this.ev_finishKey) .on('dblclick', this.ev_dblClick); this.$selectlistBox.followTarget = null; this.$selectlistBox.remove(); }; EnumCellEditor.prototype.startEditing = function () { editor_CellEditor.prototype.startEditing.call(this); this.$input.addClass('asht-state-editing') .removeClass('asht-state-wait-action'); this.$input.off('keydown', this.ev_firstKey) .off('dblclick', this.ev_dblClick); this.$input.addStyle(this._cellStyle); this.$input.on('keydown', this.ev_finishKey); this.$selectlistBox.on('keydown', this.ev_finishKey); this.$selectlistBox.addTo(document.body); this.$selectlistBox.followTarget = this.$input; }; EnumCellEditor.prototype.finish = function () { if (this._waitBlurTimeout > 0) clearTimeout(this._waitBlurTimeout); this.$input.off('keydown', this.ev_finishKey) .off('keydown', this.ev_firstKey) .off('dblclick', this.ev_dblClick) .off('blur', this.ev_blur); this.$selectlistBox.off('keydown', this.ev_finishKey) .off('blur', this.ev_blur); editor_CellEditor.prototype.finish.call(this); this.$selectlistBox.followTarget = null; this.$selectlistBox.remove(); }; /*** * * @param {KeyboardEvent} event */ EnumCellEditor.prototype.ev_firstKey = function (event) { if (event.key === "Delete") { this.cell.value = ""; } else if (event.key === 'Enter' || event.key === 'F2') { this.$input.value = this.cell.value; this.startEditing(); event.preventDefault(); } else if (event.key === 'Tab') { this.editCellNext(); event.preventDefault(); } else if (event.key.length === 1 || event.key === "Backspace") { this.startEditing(); } else if (event.key.startsWith('Arrow')) { event.preventDefault(); switch (event.key) { case "ArrowLeft": this.editCellLeft(); break; case "ArrowRight": this.editCellRight(); break; case "ArrowUp": this.editCellAbove(); break; case "ArrowDown": this.editCellBellow(); break; } } }; EnumCellEditor.prototype.ev_finishKey = function (event) { if (event.key === "Tab") { this.editCellNext(); event.preventDefault(); } }; EnumCellEditor.prototype.ev_dblClick = function (event) { event.preventDefault(); this.startEditing(); }; EnumCellEditor.prototype.ev_blur = function (event) { this.$editingbox.removeClass('as-status-focus'); if (this._waitBlurTimeout >= 0) clearTimeout(this._waitBlurTimeout); this._waitBlurTimeout = setTimeout(function () { this._waitBlurTimeout = -1; if (!document.activeElement || (this.$input !== document.activeElement && !AElement["a" /* default */].prototype.isDescendantOf.call(document.activeElement, this.$selectlistBox))) { //blur before finished } }.bind(this), 100); }; EnumCellEditor.prototype.ev_preUpdateListPosition = function () { var bound = this.$input.getBoundingClientRect(); var screenSize = Object(Dom["d" /* getScreenSize */])(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = Object(Dom["f" /* traceOutBoundingClientRect */])(this.$input); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { if (this.$selectlistBox.isDescendantOf(document.body)) { setTimeout(this.waitAction.bind(this), 0) } } }; EnumCellEditor.prototype.ev_selectListBoxPressItem = function (event) { this.$input.firstChild.data = this.cell.descriptor.__val2Item__[event.value].text; this.cell.value = event.value; this.tableEditor.updateFixedTableEltPosition(); this.waitAction(); }; EnumCellEditor.prototype.ev_focus = editor_TextCellEditor.prototype.ev_focus; /* harmony default export */ var editor_EnumCellEditor = (EnumCellEditor); // CONCATENATED MODULE: ./node_modules/absol-sheet/js/fragment/editor/BooleanCellEditor.js /*** * @extends CellEditor * @param {TableEditor} tableEditor * @param {TSCell} cell * @constructor */ function BooleanCellEditor(tableEditor, cell) { editor_CellEditor.call(this, tableEditor, cell); } OOP["a" /* default */].mixClass(BooleanCellEditor, editor_CellEditor); BooleanCellEditor.prototype.prepareInput = function () { var descriptor = this.cell.descriptor; this.$checkbox = SCore_({ tag: 'checkboxbutton', props: { checked: !!this.cell.value }, on: { blur: this.ev_blur, change: this.ev_change } }); /*** * @type {Button ||AElement} */ this.$input = SCore_({ attr: { tabindex: '1' }, class: ['asht-cell-editor-input', 'asht-boolean-cell-editor-input'], child: this.$checkbox, on: { blur: this.ev_blur, focus: this.ev_focus } }); this.$editingbox.clearChild() .addChild(this.$input); }; BooleanCellEditor.prototype.waitAction = function () { editor_CellEditor.prototype.waitAction.call(this); setTimeout(function () { this.$input.focus(); }.bind(this), 100); this.$input.removeClass('asht-state-editing') .addClass('asht-state-wait-action'); this.$input.on('keydown', this.ev_firstKey) .off('keydown', this.ev_finishKey) .on('dblclick', this.ev_dblClick); }; BooleanCellEditor.prototype.startEditing = function () { editor_CellEditor.prototype.startEditing.call(this); this.$input.addClass('asht-state-editing') .removeClass('asht-state-wait-action'); this.$input.off('keydown', this.ev_firstKey) .off('dblclick', this.ev_dblClick); this.$input.on('keydown', this.ev_finishKey); }; BooleanCellEditor.prototype.finish = function () { if (this._waitBlurTimeout > 0) clearTimeout(this._waitBlurTimeout); this.$input.off('keydown', this.ev_finishKey) .off('keydown', this.ev_firstKey) .off('dblclick', this.ev_dblClick) .off('blur', this.ev_blur) .off('focus', this.ev_focus); this.$checkbox.off('focus', this.ev_focus) .off('blur', this.ev_blur); editor_CellEditor.prototype.finish.call(this); }; /*** * * @param {KeyboardEvent} event */ BooleanCellEditor.prototype.ev_firstKey = function (event) { if (event.key === "Delete") { this.cell.value = ""; } else if (event.key === 'Enter' || event.key === 'F2') { this.$input.value = this.cell.value; this.startEditing(); event.preventDefault(); } else if (event.key.length === 1 || event.key === "Backspace") { this.startEditing(); } else if (event.key === 'Tab') { this.editCellNext(); event.preventDefault(); } else if (event.key.startsWith('Arrow')) { event.preventDefault(); switch (event.key) { case "ArrowLeft": this.editCellLeft(); break; case "ArrowRight": this.editCellRight(); break; case "ArrowUp": this.editCellAbove(); break; case "ArrowDown": this.editCellBellow(); break; } } }; BooleanCellEditor.prototype.ev_finishKey = function (event) { if (event.key === "Tab" || event.key === "Enter") { this.editCellNext(); event.preventDefault(); } }; BooleanCellEditor.prototype.ev_dblClick = function (event) { event.preventDefault(); this.startEditing(); }; BooleanCellEditor.prototype.ev_blur = function (event) { if (this._waitBlurTimeout >= 0) clearTimeout(this._waitBlurTimeout); this._waitBlurTimeout = setTimeout(function () { this._waitBlurTimeout = -1; if (!document.activeElement || (this.$input !== document.activeElement && !AElement["a" /* default */].prototype.isDescendantOf.call(document.activeElement, this.$input))) { //blur before finished this.$editingbox.removeClass('as-status-focus'); } }.bind(this), 100); }; BooleanCellEditor.prototype.ev_change = function (event) { this.cell.value = this.$checkbox.checked; this.tableEditor.updateFixedTableEltPosition(); }; BooleanCellEditor.prototype.ev_focus = editor_TextCellEditor.prototype.ev_focus; /* harmony default export */ var editor_BooleanCellEditor = (BooleanCellEditor); // CONCATENATED MODULE: ./node_modules/absol-sheet/js/fragment/TableEditor.js var TableEditor_ = SComp._; var TableEditor_$ = SComp.$; function TableEditor() { this.hoverRow = null; this.currentCellEditor = null; this.selectedData = null; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } } TableEditor.prototype.getView = function () { if (this.$view) return this.$view; ContextMenu.auto(); this.$view = TableEditor_({ class: 'asht-table-editor', child: [ 'attachhook', { class: 'asht-table-editor-body', child: { class: 'asht-table-editor-content', child: { class: 'asht-table-editor-editing-layer', child: '.asht-table-editor-editing-box', } } }, { class: 'asht-table-editor-foreground', child: [ { class: "asht-table-editor-header-viewport", child: { class: "asht-table-editor-header-scroller", child: { tag: 'table', class: ['asht-table-editor-header', 'asht-table-data'], child: { tag: 'thead', child: 'tr' } } } }, { class: 'asht-table-editor-index-viewport', child: { class: 'asht-table-editor-index-scroller', child: { tag: 'table', class: ['asht-table-editor-index-col', 'asht-table-data'], extendEvent: 'contextmenu' } } }, '.asht-table-editor-root-cell', '.asht-table-editor-selected-box' ] } ] }); this.$attachook = TableEditor_$('attachhook', this.$view); this.$attachook.requestUpdateSize = this.ev_resize; ResizeSystem["a" /* default */].add(this.$attachook); this.$body = TableEditor_$('.asht-table-editor-body', this.$view); this.$body.on('scroll', this.ev_scrollBody); this.$content = TableEditor_$('.asht-table-editor-content', this.$view); this.$foreground = TableEditor_$('.asht-table-editor-foreground', this.$view); this.$editingLayer = TableEditor_$('.asht-table-editor-editing-layer', this.$view) .on('mousedown', this.ev_editLayerMouseDown); this.$editingbox = TableEditor_$('.asht-table-editor-editing-box', this.$view) .addStyle('display', 'none'); this.$selectedbox = TableEditor_$('.asht-table-editor-selected-box', this.$foreground).addStyle('display', 'none') this.$view.on('wheel', this.ev_wheel) .on('mousemove', this.ev_mosemove); this.$rootCell = TableEditor_$('.asht-table-editor-root-cell', this.$view) .on('mousedown', this.ev_rootCellMouseDown); this.$header = TableEditor_$('.asht-table-editor-header', this.$view); this.$headRow = TableEditor_$('tr', this.$header) .on('mousedown', this.ev_headerMouseDown); this.$headerScroller = TableEditor_$('.asht-table-editor-header-scroller', this.$view); this.$headerViewport = TableEditor_$('.asht-table-editor-header-viewport', this.$view); this.$indexViewport = TableEditor_$('.asht-table-editor-index-viewport', this.$view); this.$indexCol = TableEditor_$('.asht-table-editor-index-col', this.$view) .on('mousedown', this.ev_indexColMouseDown) .on('contextmenu', this.ev_indexColContextMenu); this.$indexSccroller = TableEditor_$('.asht-table-editor-index-scroller', this.$view); return this.$view; }; TableEditor.prototype.setData = function (data) { if (this.$tableData) this.$tableData.remove(); var tableData = new viewer_TableData(this); this.$tableData = tableData.getView(); this.$content.addChildBefore(this.$tableData, this.$editingLayer); tableData.import(data); this.tableData = tableData; this.loadHeader(); this.loadIndexCol(); this.updateForegroundPosition(); }; TableEditor.prototype.getData = function () { return this.tableData && this.tableData.export(); }; TableEditor.prototype.scrollYBy = function (dy, dx) { dx = dx || 0; if (this.$body.scrollTop + dy > this.$body.scrollHeight - this.$body.clientHeight) { dy = this.$body.scrollHeight - this.$body.clientHeight - this.$body.scrollTop; } else if (this.$body.scrollTop + dy < 0) { dy = -this.$body.scrollTop; } if (dy) this.$body.scrollTop += dy; if (this.$body.scrollLeft + dx > this.$body.scrollWidth - this.$body.clientWidth) { dx = this.$body.scrollWidth - this.$body.clientWidth - this.$body.scrollLeft; } else if (this.$body.scrollLeft + dx < 0) { dx = -this.$body.scrollLeft; } if (dx) this.$body.scrollLeft += dx; return dy * dy + dx * dx; }; /*** * * @param {WheelEvent} ev */ TableEditor.prototype.ev_wheel = function (ev) { var dL = ev.shiftKey ? this.scrollYBy(0, ev.deltaY) : this.scrollYBy(ev.deltaY); if (dL !== 0) ev.preventDefault(); }; TableEditor.prototype.ev_scrollBody = function () { this.$indexSccroller.scrollTop = this.$body.scrollTop; this.$headerScroller.scrollLeft = this.$body.scrollLeft; this.updateSelectedPosition(); }; TableEditor.prototype.ev_mosemove = function (ev) { if (!this.tableData) return; }; TableEditor.prototype.ev_rootCellMouseDown = function (ev) { this.selectAll(); var row = this.tableData.findRowByIndex(0) var col = this.tableData.findColByIndex(0); if (row && col) { this.editCell(row, col); } }; TableEditor.prototype.ev_headerMouseDown = function (ev) { var x = ev.clientX; var col = this.tableData.findColByClientX(x); var row; if (col) { this.selectCol(col); row = this.tableData.findRowByIndex(0); if (row) { this.editCell(row, col); } } }; TableEditor.prototype.ev_editLayerMouseDown = function (ev) { var x = ev.clientX; var y = ev.clientY; this.hoverRow = this.tableData.findRowByClientY(y); this.hoverCol = this.tableData.findColByClientX(x); if (ev.target === this.$editingLayer) { if (this.hoverRow) { if (this.hoverCol) { this.editCell(this.hoverRow, this.hoverCol); this.selectRow(null); } else { this.selectRow(this.hoverRow); this.editCell(this.hoverRow, this.tableData.headCells[0]); } } } }; TableEditor.prototype.ev_indexColMouseDown = function (ev) { var y = ev.clientY; this.hoverRow = this.tableData.findRowByClientY(y); if (this.hoverRow) { this.selectRow(this.hoverRow); this.editCell(this.hoverRow, this.tableData.headCells[0]); } }; TableEditor.prototype.ev_indexColContextMenu = function (ev) { var row = this.tableData.findRowByClientY(ev.clientY); ev.showContextMenu({ items: [ { cmd: 'insert_before', text: 'Insert Before', icon: 'span.mdi.mdi-table-row-plus-before' }, { cmd: 'insert_after', text: 'Insert After', icon: 'span.mdi.mdi-table-row-plus-after' }, { cmd: 'remove', text: 'Remove', icon: 'span.mdi.mdi-table-row-remove' }, ] }, function (ev1) { switch (ev1.menuItem.cmd) { case 'insert_before': this.insertRow(row.idx, {}) break; case 'insert_after': this.insertRow(row.idx + 1, {}); break; case 'remove': this.removeRow(row.idx); break; } }.bind(this)); }; TableEditor.prototype.ev_resize = function (event) { this.updateEditingBoxPosition(); }; TableEditor.prototype.editCell = function (row, col) { if (this.currentCellEditor) { this.currentCellEditor.off('finish', this.ev_cellEditorFinish); this.currentCellEditor = null; } if (row && col) { console.log(row, col); this.$editingbox.removeStyle('display'); var cell = row.cells[col.index]; this.$editingbox.clearChild(); switch (cell.descriptor.type) { case 'text': this.currentCellEditor = new editor_TextCellEditor(this, row.cells[col.index]); break; case 'number': this.currentCellEditor = new editor_NumberCellEditor(this, row.cells[col.index]); break; case 'enum': this.currentCellEditor = new editor_EnumCellEditor(this, row.cells[col.index]); break; case 'boolean': this.currentCellEditor = new editor_BooleanCellEditor(this, row.cells[col.index]); break; default : } this.updateEditingBoxPosition(); this.scrollIntoRow(row); this.scrollIntoCol(col); if (this.currentCellEditor) { this.currentCellEditor.on('finish', this.ev_cellEditorFinish); } } else { this.$editingbox.addStyle('display', 'none'); } }; TableEditor.prototype.updateEditingBoxPosition = function () { if (!this.currentCellEditor) return; var cellEditor = this.currentCellEditor; var elt = cellEditor.cell.elt; var eLBound = this.$editingLayer.getBoundingClientRect(); var eBound = elt.getBoundingClientRect(); var left = eBound.left - eLBound.left; var width = eBound.width; this.$editingbox.addStyle({ left: left + 'px', top: eBound.top - eLBound.top + 'px', '--cell-width': width + 'px', '--cell-height': eBound.height + 'px' }); }; TableEditor.prototype.selectRow = function (row) { if (row) { this.selectedData = { type: 'row', row: row }; this.$selectedbox.removeStyle('display'); this.updateSelectedPosition(); } else { // this.$selectrow this.selectedData = null; this.$selectedbox.addStyle('display', 'none'); } }; TableEditor.prototype.selectCol = function (col) { if (col) { this.selectedData = { type: 'col', col: col }; this.$selectedbox.removeStyle('display'); this.updateSelectedPosition(); } else { // this.$selectrow this.selectedData = null; this.$selectedbox.addStyle('display', 'none'); } }; TableEditor.prototype.selectAll = function () { this.selectedData = { type: 'all' }; this.$selectedbox.removeStyle('display'); this.updateSelectedPosition(); }; TableEditor.prototype.insertRow = function (atIdx, record) { var tableData = this.tableData; atIdx = Math.min(atIdx, tableData.bodyRow.length); var currentRow = tableData.bodyRow[atIdx]; var row = new TSRow(tableData, record, atIdx); if (currentRow) { tableData.records.splice(atIdx, 0, record); tableData.$tbody.addChildBefore(row.elt, currentRow.elt); tableData.bodyRow.splice(atIdx, 0, row); } else { tableData.records.push(record); if (tableData.bodyRow.length > 0) { tableData.$tbody.addChildAfter(row.elt, tableData.bodyRow[tableData.bodyRow.length - 1].elt); } else { tableData.$tbody.addChildBefore(row.elt, tableData.$tbody.firstChild); } tableData.bodyRow.push(row); } for (var i = atIdx; i < tableData.bodyRow.length; ++i) { tableData.bodyRow[i].idx = i; } this.loadIndexCol(); this.updateFixedTableEltPosition(); }; TableEditor.prototype.removeRow = function (atIdx) { var tableData = this.tableData; atIdx = Math.min(atIdx, tableData.bodyRow.length - 1); if (atIdx < 0) return; var row = tableData.bodyRow.splice(atIdx, 1)[0]; row.elt.remove(); this.tableData.records.splice(atIdx, 1); for (var i = atIdx; i < tableData.bodyRow.length; ++i) { tableData.bodyRow[i].idx = i; } this.loadIndexCol(); this.updateFixedTableEltPosition(); }; TableEditor.prototype.updateSelectedPosition = function () { if (!this.selectedData) return; var fBound = this.$foreground.getBoundingClientRect(); if (this.selectedData.row) { var row = this.selectedData.row; var rBound = row.elt.getBoundingClientRect(); this.$selectedbox.addStyle({ left: rBound.left - fBound.left - 1 + 'px',// boder-width = 2px top: rBound.top - fBound.top - 1 + 'px', 'min-width': rBound.width + 2 + 'px', 'min-height': rBound.height + 2 + 'px' }); this.$header.addStyle('z-index', '21'); } else if (this.selectedData.col) { var col = this.selectedData.col; var cBound = col.elt.getBoundingClientRect(); var tBound = col.elt.parentElement.parentElement.parentElement.getBoundingClientRect(); this.$selectedbox.addStyle({ left: cBound.left - fBound.left - 1 + 'px',// boder-width = 2px top: tBound.top - fBound.top - 1 + 'px', 'min-width': cBound.width + 2 + 'px', 'min-height': tBound.height + 2 + 'px' }); this.$header.addStyle('z-index', '19'); } else if (this.selectedData.type == 'all') { var tBound = this.tableData.$view.getBoundingClientRect(); this.$selectedbox.addStyle({ left: tBound.left - fBound.left - 1 + 'px',// boder-width = 2px top: tBound.top - fBound.top - 1 + 'px', 'min-width': tBound.width + 2 + 'px', 'min-height': tBound.height + 2 + 'px' }); } }; TableEditor.prototype.loadHeader = function () { var $headRow = this.$headRow; $headRow.clearChild(); Array.prototype.forEach.call(this.tableData.$headRow.children, function (td, index) { var newTd = TableEditor_$(td.cloneNode(true)); newTd.$originElt = td; newTd.__index__ = index - 1; $headRow.addChild(newTd); }); this.updateHeaderPosition(); }; TableEditor.prototype.updateHeaderPosition = function () { var headerElt = this.$header; var headerViewport = this.$headerViewport; var rootCellElt = this.$rootCell; Array.prototype.forEach.call(this.$headRow.children, function (td, i) { var originTd = td.$originElt; var bound = originTd.getBoundingClientRect(); td.addStyle({ width: bound.width + 'px' }); if (i === 0) { headerElt.addStyle('height', bound.height + 1 + 'px'); headerViewport.addStyle('height', bound.height + 1 + 'px'); rootCellElt.addStyle('height', bound.height + 1 + 'px'); rootCellElt.addStyle('width', bound.width + 1 + 'px'); } }); var bound = this.tableData.$view.getBoundingClientRect(); this.$header.addStyle('width', bound.width + 'px'); }; TableEditor.prototype.loadIndexCol = function () { this.$indexCol.clearChild(); this.$indexColRows = this.tableData.bodyRow.map(function (row) { var trElt = TableEditor_$(row.elt.cloneNode(false)); trElt.$originElt = row.elt; var tdElt = TableEditor_$(row.elt.firstChild.cloneNode(true)); tdElt.$originElt = row.elt.firstChild; trElt.addChild(tdElt); return trElt; }); var indexHeaderElt = TableEditor_$(this.tableData.$headRow.firstChild.cloneNode()); indexHeaderElt.$originElt = this.tableData.$headRow.firstChild; var indexHeaderRowElt = TableEditor_({ tag: 'tr', child: indexHeaderElt }); indexHeaderRowElt.$originElt = this.tableData.$headRow; this.$indexColRows.unshift(indexHeaderRowElt); this.$indexCol.addChild(this.$indexColRows); this.updateIndexColPosition(); }; TableEditor.prototype.updateIndexColPosition = function () { var indexViewportElt = this.$indexViewport; var indexColElt = this.$indexCol; this.$indexColRows.forEach(function (trElt, i) { var tdElt = trElt.firstChild; var bound = tdElt.$originElt.getBoundingClientRect(); tdElt.addStyle('height', bound.height + 'px'); if (i === 0) { indexViewportElt.addStyle('width', bound.width + 1 + 'px');//1px is border indexColElt.addStyle('width', bound.width + 1 + 'px'); } }); }; TableEditor.prototype.updateForegroundPosition = function () { this.$view.addStyle({ '--body-scroll-width': this.$body.offsetWidth - this.$body.clientWidth + 'px', '--body-scroll-height': this.$body.offsetHeight - this.$body.clientHeight + 'px', }); }; TableEditor.prototype.updateFixedTableEltPosition = function () { this.updateHeaderPosition(); this.updateIndexColPosition(); this.updateForegroundPosition(); this.updateEditingBoxPosition(); this.updateSelectedPosition(); }; TableEditor.prototype.scrollIntoRow = function (row) { var headerBound = this.$header.getBoundingClientRect(); var bBound = this.$foreground.getBoundingClientRect(); var rowBound = row.elt.getBoundingClientRect(); var vTop = headerBound.bottom; var vBottom = bBound.bottom; if (vBottom - vTop >= rowBound.height) { if (rowBound.bottom > vBottom) { this.$body.scrollTop += rowBound.bottom - vBottom; } else if (rowBound.top < vTop) { this.$body.scrollTop += rowBound.top - vTop; } } else { this.$body.scrollTop += rowBound.top + rowBound.height / 2 - (vBottom + vTop) / 2; } }; TableEditor.prototype.scrollIntoCol = function (col) { var colBound = col.elt.getBoundingClientRect(); var iBound = this.$indexCol.getBoundingClientRect(); var bBound = this.$foreground.getBoundingClientRect(); var vLeft = iBound.right; var vRight = bBound.right; if (vRight - vLeft >= colBound.width) { if (colBound.right > vRight) { this.$body.scrollLeft += colBound.right - vRight; } else if (colBound.left < vLeft) { this.$body.scrollLeft += colBound.left - vLeft; } } else { if (vLeft < colBound.left) { this.$body.scrollLeft += colBound.left - vLeft; } else if (vRight > colBound.right) { this.$body.scrollLeft += colBound.right - vRight; } } }; TableEditor.prototype.ev_cellEditorFinish = function (event) { if (this.currentCellEditor === event.target) { this.editCell(null); } }; Object.defineProperty(TableEditor.prototype, 'records', { get: function () { return this.tableData && this.tableData.records; } }); /* harmony default export */ var fragment_TableEditor = (TableEditor); // CONCATENATED MODULE: ./js/cmds/SelectListEditorCmd.js var SelectListCmd = {}; SelectListCmd.save = function () { setTimeout(function () { if (this.verify()) this.emit('save', { type: 'save', target: this }, this); }.bind(this), 100); //wait for complete saving }; SelectListCmd.insertRowBefore = function () { this.insertRowBeforeCurrent(); }; SelectListCmd.insertRowAfter = function () { this.insertRowAfterCurrent(); }; SelectListCmd.removeCurrentRow = function () { this.removeCurrentRow(); }; /* harmony default export */ var SelectListEditorCmd = (SelectListCmd); var SelectListCmdTree = [['save'], ['insertRowBefore', 'insertRowAfter', 'removeCurrentRow']]; var SelectListCmdDescriptors = { save: { desc: 'Save', icon: 'span.mdi.mdi-content-save-move-outline' }, insertRowBefore: { desc: 'Insert Row Before', icon: 'span.mdi.mdi-table-row-plus-before' }, insertRowAfter: { desc: 'Insert Row After', icon: 'span.mdi.mdi-table-row-plus-after' }, removeCurrentRow: { desc: 'Remove Current Row', icon: 'span.mdi.mdi-table-row-remove' } }; // CONCATENATED MODULE: ./js/editor/SelectListEditor.js function SelectListEditor() { core_BaseEditor.call(this); this.cmdRunner.assign(SelectListEditorCmd); this.tableEditor = new fragment_TableEditor(); window.E = this; } OOP["a" /* default */].mixClass(SelectListEditor, core_BaseEditor); SelectListEditor.prototype.createView = function () { this.$view = FCore_({ "class": 'as-select-list-editor', child: [{ "class": 'as-select-list-editor-header', child: { "class": 'as-select-list-editor-cmd-tool-container' } }, { "class": 'as-select-list-editor-body', child: this.tableEditor.getView() }] }); this.$header = FCore_$('.as-select-list-editor-header', this.$view); this.$body = FCore_$('.as-select-list-editor-body', this.$view); this.$cmdToolCtn = FCore_$('.as-select-list-editor-cmd-tool-container', this.$view); this.$attachhook = FCore_('attachhook').on('attached', function () { this.requestUpdateSize(); ResizeSystem["a" /* default */].add(this); }); this.$attachhook.requestUpdateSize = this.updateSize.bind(this); this.$view.addChild(this.$attachhook); }; SelectListEditor.prototype.updateSize = function () { this.$body.addStyle('top', this.$header.offsetHeight + 'px'); }; SelectListEditor.prototype.setData = function (data) { var valueType = 'string'; for (var i = 0; i < data.length; i++) { if (typeof data[i].value === 'number') { valueType = 'number'; } } var tableData = { propertyDescriptors: [{ text: { text: 'Text', type: 'string' }, value: { text: 'Value', type: valueType } }], propertyNames: ['text', 'value'], records: data.map(function (item) { return { text: item.text, value: item.value }; }) }; this.tableEditor.setData(tableData); }; SelectListEditor.prototype.getData = function (data) { return this.tableEditor.getData().records; }; SelectListEditor.prototype.onAttached = function () { this.CMDTool = this.getContext(R.CMD_TOOL); }; SelectListEditor.prototype.onResume = function () { this.updateSize(); this.CMDTool = this.getContext(R.CMD_TOOL); if (this.CMDTool) { this.CMDTool.bindWithEditor(this); this.CMDTool.start(); } }; SelectListEditor.prototype.onPause = function () { if (this.CMDTool) { this.CMDTool.pause(); } }; SelectListEditor.prototype.insertRowAfterCurrent = function () { var cellEditor = this.tableEditor.currentCellEditor; if (cellEditor) { this.tableEditor.insertRow(cellEditor.row.idx + 1, {}); } else { this.tableEditor.insertRow(cellEditor.records.length, {}); } }; SelectListEditor.prototype.insertRowBeforeCurrent = function () { var cellEditor = this.tableEditor.currentCellEditor; if (cellEditor) { this.tableEditor.insertRow(cellEditor.row.idx, {}); } else { this.tableEditor.insertRow(0, {}); } }; SelectListEditor.prototype.removeCurrentRow = function () { var cellEditor = this.tableEditor.currentCellEditor; var rowIdx; var colIdx; if (cellEditor) { rowIdx = cellEditor.row.idx; colIdx = cellEditor.col.index; } else { rowIdx = this.tableEditor.records.length - 1; colIdx = 0; } if (rowIdx >= 0) { this.tableEditor.removeRow(rowIdx); rowIdx = Math.min(rowIdx, this.tableEditor.records.length - 1); if (rowIdx >= 0) { this.tableEditor.editCell(this.tableEditor.tableData.findRowByIndex(rowIdx), this.tableEditor.tableData.findColByIndex(colIdx)); } } }; SelectListEditor.prototype.verify = function () { var record; var records = this.tableEditor.records; var error = false; var dict = {}; for (var i = 0; i < records.length; ++i) { record = records[i]; if (typeof record.text !== "string" || record.text.length == 0) { error = 'Invalid data!'; this.tableEditor.editCell(this.tableEditor.tableData.findRowByIndex(i), this.tableEditor.tableData.findColByIndex(0)); break; } if (typeof record.value !== "string" || record.value.length == 0 || dict[record.value]) { if (typeof record.value !== "string" || record.value.length == 0) { error = 'Invalid data!'; } else { error = 'Duplicate value!'; } this.tableEditor.editCell(this.tableEditor.tableData.findRowByIndex(i), this.tableEditor.tableData.findColByIndex(1)); break; } dict[record.value] = true; } if (error) { var errorToast = js_Toast.make({ props: { htitle: 'Error', message: error, variant: 'error' } }); setTimeout(function () { errorToast.disappear(); }, 3000); } return !error; }; SelectListEditor.prototype.getCmdDescriptor = function (name) { var descriptor = SelectListCmdDescriptors[name]; var res = Object.assign({ type: 'trigger', desc: 'command: ' + name, icon: 'span.mdi.mdi-apple-keyboard-command', disabled: false }, descriptor); return res; }; SelectListEditor.prototype.getCmdGroupTree = function () { return SelectListCmdTree; }; SelectListEditor.prototype.getCmdToolCtn = function () { return this.$cmdToolCtn; }; /* harmony default export */ var editor_SelectListEditor = (SelectListEditor); // CONCATENATED MODULE: ./js/propertyeditors/MultiObjectPropertyEditor.js function MultiObjectPropertyEditor_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { MultiObjectPropertyEditor_typeof = function _typeof(obj) { return typeof obj; }; } else { MultiObjectPropertyEditor_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return MultiObjectPropertyEditor_typeof(obj); } var MultiObjectPropertyEditor_ = FCore._; var MultiObjectPropertyEditor_$ = FCore.$; function MultiObjectPropertyEditor() { AppPattern_Context.call(this); EventEmitter["b" /* default */].call(this); this.dependents = {}; this.propertyHolders = {}; /** * @type {Array<import('../core/BaseComponent').default>} */ this.objects = null; this.propertyNames = []; this.queuePools = {}; } Object.defineProperties(MultiObjectPropertyEditor.prototype, Object.getOwnPropertyDescriptors(AppPattern_Context.prototype)); Object.defineProperties(MultiObjectPropertyEditor.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); MultiObjectPropertyEditor.prototype.constructor = MultiObjectPropertyEditor; MultiObjectPropertyEditor.prototype.pools = {}; MultiObjectPropertyEditor.prototype.getPropertyNames = function (object) { return Object.keys(object); }; MultiObjectPropertyEditor.prototype.getProperty = function (object, name) { return object[name]; }; MultiObjectPropertyEditor.prototype.setProperty = function (object, name, value) { return object[name] = value; }; MultiObjectPropertyEditor.prototype.setPropertyAll = function () { for (var i = 0; i < this.objects.length; ++i) { this.setProperty.apply(this, [this.objects[i]].concat(Array.prototype.slice.call(arguments))); } }; MultiObjectPropertyEditor.prototype.getPropertyDescriptor = function (object, name) { return { type: MultiObjectPropertyEditor_typeof(object[name]) }; }; MultiObjectPropertyEditor.prototype.edit = function () { this.objects = Array.prototype.slice.call(arguments); this.loadAttributes(); }; MultiObjectPropertyEditor.prototype.loadAttributes = function () { this.flushAllToPools(); this.$body.clearChild(); this.clearAllDependents(); var self = this; var objects = this.objects; if (objects.length <= 0) return; var availablePropertyNames = objects.reduce(function (ac, obj) { var ret = {}; var propNames = self.getPropertyNames(obj); var name; for (var i = 0; i < propNames.length; ++i) { name = propNames[i]; if (ac === null || typeof ac[name] == 'number') { ret[name] = Math.max(i, ret[name] || 0); } } return ret; }, null); var names = Object.keys(availablePropertyNames); names.sort(function (a, b) { return availablePropertyNames[a] - availablePropertyNames[b]; }); var editabledNames = names.filter(function (name) { var descriptor; var lastSign = null; if (objects.length == 1) return true; for (var i = 0; i < objects.length; ++i) { descriptor = self.getPropertyDescriptor(objects[i], name); if (!descriptor.independence) return false; if (lastSign === null) { lastSign = descriptor.sign; } else if (lastSign != descriptor.sign) { return false; } } return true; }); this.propertyNames = editabledNames; this.propertyHolders = {}; var object = objects[objects.length - 1]; this.propertyNames.forEach(function (name) { var descriptor = self.getPropertyDescriptor(object, name) || { type: "NoDescriptor" }; var functionName = 'load' + camelCaseToPascalCase(descriptor.type) + 'Property'; var cell = MultiObjectPropertyEditor_('td'); if (descriptor.dependency) {// self.addDepents(name, descriptor.dependency); } if (!self[functionName]) { // throw new Error('Not support type' + descriptor.type + '!') functionName = 'loadNotSupportedProperty'; } var rowElt = MultiObjectPropertyEditor_({ tag: 'tr', child: [{ tag: 'td', child: { text: name } }, cell] }); rowElt.addTo(self.$body); if (descriptor.dependency) { self.addDepents(name, descriptor.dependency); } self.propertyHolders[name] = self[functionName](name, descriptor, cell, cell); }); }; MultiObjectPropertyEditor.prototype.flushAllToPools = function () { var self = this; Object.keys(this.queuePools).forEach(function (key) { self.pools[key] = self.pools[key] === undefined ? [] : self.pools[key]; var all = self.queuePools[key].splice(0); self.pools[key].push.apply(self.pools[key], all); }); }; MultiObjectPropertyEditor.prototype.assignToPool = function (key, value) { this.queuePools[key] = this.queuePools[key] === undefined ? [] : this.queuePools[key]; if (value.__pool_assign__) { console.warn("Pool: reassign object", key, value); } else { value.__pool_assign__ = true; this.queuePools[key].push(value); } }; MultiObjectPropertyEditor.prototype.putOnceFromPool = function (key) { var res = null; if (this.pools[key] && this.pools[key].length > 0) { res = this.pools[key].pop(); } if (res) res.__pool_assign__ = false; return res; }; MultiObjectPropertyEditor.prototype.getView = function () { if (this.$view) return this.$view; this.$view = MultiObjectPropertyEditor_({ "class": 'as-property-editor', child: { tag: 'table', child: [{ tag: 'thead', child: [{ tag: 'tr', child: [{ tag: 'td', child: { text: "key" } }, { tag: 'td', attr: { colspan: '3' }, child: { text: 'value' } }] }] }, { tag: 'tbody' }] } }); this.$body = MultiObjectPropertyEditor_$('tbody', this.$view); return this.$view; }; MultiObjectPropertyEditor.prototype.loadNotSupportedProperty = function (name, descriptor, cell, cellElt) { cellElt.addChild(MultiObjectPropertyEditor_({ text: 'Not supported ' })).addChild(MultiObjectPropertyEditor_({ tag: 'strong', child: { text: descriptor.type } })); return {}; }; MultiObjectPropertyEditor.prototype.loadEnumProperty = function (name, descriptor, cell) { var self = this; var res = {}; var selectMenu = descriptor.sign ? this.putOnceFromPool(descriptor.sign) : null; var object = this.objects[this.objects.length - 1]; if (selectMenu === null) { selectMenu = MultiObjectPropertyEditor_({ tag: 'selectmenu', props: { items: descriptor.values.map(function (value) { return { text: value + "", value: value }; }), value: this.getProperty(object, name) }, on: { change: function change() { this.peditor.setPropertyAll(name, this.value); this.peditor.notifyChange(name, this); this.peditor.notifyStopChange(name); } } }); } if (descriptor.sign) this.assignToPool(descriptor.sign, selectMenu); selectMenu.value = this.getProperty(object, name); selectMenu.peditor = this; res.requestUpdate = function () { var value = self.getProperty(object, name); if (value != this.value) { selectMenu.value = value; } }; cell.addChild(selectMenu); return res; }; MultiObjectPropertyEditor.prototype.loadTextProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; res.elt = MultiObjectPropertyEditor_({ tag: descriptor["long"] ? 'textarea' : 'input', attr: { type: 'text' }, on: { keyup: function keyup() { self.setPropertyAll(name, this.value); self.notifyChange(name, this); }, change: function change() { self.notifyStopChange(name); } } }); cell.addChild(res.elt); res.requestUpdate = function () { var value = self.getProperty(object, name); if (value != this.value) { res.elt.value = value; } }; res.requestUpdate(); return res; }; MultiObjectPropertyEditor.prototype.loadArrayOfTextProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; res.elt = MultiObjectPropertyEditor_({ tag: js_TokenField.tag, attr: { title: 'Each value is separated by ;' }, props: { separator: ';', placeHolder: 'Enter item text, separated by ;' }, on: { change: function change() { self.setPropertyAll(name, this.items); self.notifyChange(name, this); } } }); cell.addChild(res.elt); res.requestUpdate = function () { var value = self.getProperty(object, name); if (value != res.value) { res.value = value; res.elt.items = value; } }; res.requestUpdate(); return res; }; MultiObjectPropertyEditor.prototype.loadColorProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; res.elt = MultiObjectPropertyEditor_({ tag: 'colorpickerbutton', on: { change: function change(event) { self.setPropertyAll(name, '#' + event.value.toHex8()); self.notifyChange(name); }, stopchange: function stopchange(event) { self.notifyStopChange(name); } }, props: { value: 'transparent', mode: 'RGBA' } }); cell.addChild(res.elt); res.requestUpdate = function () { res.elt.value = self.getProperty(object, name) || 'transparent'; }; res.requestUpdate(); return res; }; MultiObjectPropertyEditor.prototype.loadUniqueTextProperty = function (name, descriptor, cell) { var self = this; var res = {}; res.elt = MultiObjectPropertyEditor_({ tag: descriptor["long"] ? 'textarea' : 'input', attr: { type: 'text' }, on: { keyup: function keyup() { if (descriptor.others[this.value]) { this.addStyle('border-color', '#f99'); this.attr('title', 'This name is used!'); } else { this.attr('title', null); this.removeStyle('border-color'); } self.setPropertyAll(name, this.value); self.notifyChange(name, this); }, change: function change() { if (descriptor.others[this.value]) { this.addStyle('border-color', '#f99'); this.attr('title', 'This name is used!'); } else { this.attr('title', null); this.removeStyle('border-color'); } self.notifyStopChange(name); } } }); cell.addChild(res.elt); var object = this.objects[this.objects.length - 1]; res.requestUpdate = function () { var value = self.getProperty(object, name); if (value != this.value) { res.elt.value = value; } }; res.requestUpdate(); return res; }; MultiObjectPropertyEditor.prototype.loadConstProperty = function (name, descriptor, cell) { var res = {}; var value = descriptor.value; res.elt = MultiObjectPropertyEditor_({ tag: 'strong' }); cell.addChild(res.elt); if (value && value.then) { value.then(function (value) { res.elt.addChild(MultiObjectPropertyEditor_({ text: '' + value })); }); } else { res.elt.addChild(MultiObjectPropertyEditor_({ text: '' + value })); } return res; }; MultiObjectPropertyEditor.prototype.loadMeasureSizeProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; cell.addStyle('white-space', 'nowrap'); res.numberInputElt = MultiObjectPropertyEditor_('numberinput').addStyle('margin-right', '5px'); res.typeSelectElt = MultiObjectPropertyEditor_({ tag: 'selectmenu', style: { verticalAlign: 'middle' }, props: { items: [{ text: 'px', value: 'px' }, { text: '%', value: '%' }, { text: 'match_parent', value: 'match_parent' }, { text: 'auto', value: 'auto' }] } }); cell.addChild(res.numberInputElt).addChild(res.typeSelectElt); res.numberInputElt.on('change', function (event) { if (event.by == 'keyup') return; switch (res.typeSelectElt.value) { case '%': self.setPropertyAll(name, this.value + '%'); break; case 'px': self.setPropertyAll(name, this.value); break; } self.notifyChange(name); if (event.by != 'long_press_button') self.notifyStopChange(name); }).on('stopchange', function () { switch (res.typeSelectElt.value) { case '%': self.setPropertyAll(name, this.value + '%'); break; case 'px': self.setPropertyAll(name, this.value); break; } self.notifyStopChange(name); }); res.typeSelectElt.on('change', function (event) { if (this.value == 'match_parent' || this.value == 'auto') { self.setPropertyAll(name, this.value); res.numberInputElt.disabled = true; } else { res.numberInputElt.disabled = false; var value = self.getProperty(object, name, this.value); res.numberInputElt.value = value; if (this.value == '%') { self.setPropertyAll(name, value + '%'); } else { self.setPropertyAll(name, value); } } self.notifyChange(name); self.notifyStopChange(name); }); res.requestUpdate = function () { var descriptor = self.getPropertyDescriptor(object, name); if (descriptor.disabled) res.numberInputElt.disabled = !!descriptor.disabled; var value = self.getProperty(object, name); if (typeof value == 'number') { res.numberInputElt.value = value; res.typeSelectElt.value = 'px'; } else if (typeof value == 'string') { if (value.match(/\%$/)) { res.typeSelectElt.value = '%'; res.numberInputElt.value = parseFloat(value.replace('%', '')); res.numberInputElt.disabled = false; } else if (value == 'match_parent' || value == 'auto') { res.numberInputElt.disabled = true; res.typeSelectElt.value = value; } else { console.error("Unknow typeof " + name, value); } } }; res.requestUpdate(); return res; }; MultiObjectPropertyEditor.prototype.loadMeasurePositionProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; cell.addStyle('white-space', 'nowrap'); res.numberInputElt = MultiObjectPropertyEditor_('numberinput').addStyle('margin-right', '5px'); res.typeSelectElt = MultiObjectPropertyEditor_({ tag: 'selectmenu', style: { verticalAlign: 'middle' }, props: { items: [{ text: 'px', value: 'px' }, { text: '%', value: '%' }] } }); cell.addChild(res.numberInputElt).addChild(res.typeSelectElt); res.numberInputElt.on('change', function (event) { if (event.by == 'keyup') return; switch (res.typeSelectElt.value) { case '%': self.setPropertyAll(name, this.value + '%'); break; case 'px': self.setPropertyAll(name, this.value); break; } self.notifyChange(name); if (event.by != 'long_press_button') self.notifyStopChange(name); }).on('stopchange', function () { switch (res.typeSelectElt.value) { case '%': self.setPropertyAll(name, this.value + '%'); break; case 'px': self.setPropertyAll(name, this.value); break; } self.notifyStopChange(name); }); res.typeSelectElt.on('change', function (event) { if (this.value == 'match_parent' || this.value == 'auto') { self.setPropertyAll(name, this.value); res.numberInputElt.disabled = true; } else { res.numberInputElt.disabled = false; var value = self.getProperty(object, name, this.value); res.numberInputElt.value = value; if (this.value == '%') { self.setPropertyAll(name, value + '%'); } else { self.setPropertyAll(name, value); } } self.notifyChange(name); self.notifyStopChange(name); }); res.requestUpdate = function () { var descriptor = self.getPropertyDescriptor(object, name); res.numberInputElt.disabled = !!descriptor.disabled; var value; if (descriptor.disabled) { value = self.getProperty(object, name, res.typeSelectElt.value); res.numberInputElt.value = value; //set-back if (res.typeSelectElt.value == 'px') { self.setPropertyAll(name, value); } else if (res.typeSelectElt.value == '%') { self.setPropertyAll(name, value + '%'); } } else { value = self.getProperty(object, name); if (typeof value == 'number') { res.numberInputElt.value = value; res.typeSelectElt.value = 'px'; } else if (typeof value == 'string') { if (value.match(/\%$/)) { res.typeSelectElt.value = '%'; res.numberInputElt.value = parseFloat(value.replace('%', '')); } else { console.error("Unknow typeof " + name, value); } } } }; res.requestUpdate(); return res; }; MultiObjectPropertyEditor.prototype.loadFontProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; var fontInput = descriptor.sign ? this.putOnceFromPool(descriptor.sign) : null; if (fontInput === null) { fontInput = MultiObjectPropertyEditor_({ tag: 'selectmenu', "class": 'as-need-update', props: { items: [{ text: 'None', value: undefined }].concat(FONT_ITEMS) }, on: { change: function change() { this.peditor.setPropertyAll(name, this.value); this.peditor.notifyChange(name, this); this.peditor.notifyStopChange(name); } } }); } if (descriptor.sign) this.assignToPool(descriptor.sign, fontInput); fontInput.value = this.getProperty(object, name); fontInput.peditor = this; res.elt = fontInput; cell.addChild(res.elt); res.requestUpdate = function () { var value = self.getProperty(object, name); if (value != fontInput.value) { fontInput.value = value; } }; return res; }; MultiObjectPropertyEditor.prototype.loadTextAlignProperty = function (name, descriptor, cell) { var self = this; var object = this.objects[this.objects.length - 1]; var icons = { left: 'mdi-format-align-left', right: 'mdi-format-align-right', center: 'mdi-format-align-center' }; var res = {}; res.elt = MultiObjectPropertyEditor_({ tag: 'button', "class": 'as-property-editor-text-align-input', child: 'span.mdi' }); cell.addChild(res.elt); var $button = res.elt; var $icon = MultiObjectPropertyEditor_$('span.mdi', $button); var lasIconClass = icons[this.getProperty(object, name)] || icons.left; $icon.addClass(lasIconClass); res.requestUpdate = function () { $icon.removeClass(lasIconClass); lasIconClass = icons[self.getProperty(object, name)] || icons.left; $icon.addClass(lasIconClass); }; js_QuickMenu.toggleWhenClick($button, { getMenuProps: function getMenuProps() { return { items: [{ text: 'Left', icon: 'span.mdi.mdi-format-align-left', menuData: 'left' }, { text: 'Center', icon: 'span.mdi.mdi-format-align-center', menuData: 'center' }, { text: 'Right', icon: 'span.mdi.mdi-format-align-right', menuData: 'right' }] }; }, onSelect: function onSelect(item) { $icon.removeClass(lasIconClass); lasIconClass = icons[item.menuData]; $icon.addClass(lasIconClass); self.setPropertyAll(name, item.menuData); self.notifyStopChange(name); } }); return res; }; MultiObjectPropertyEditor.prototype.loadBoxAlignProperty = function (name, descriptor, cell) { var self = this; var object = this.objects[this.objects.length - 1]; var icons = { lefttop: 'm0 0v24h24v-24zm1 1h22v22h-22zm2 2h10.3v2h-10.3v-2m0 4h14v2h-14v-2m0 4h9.9v2h-9.9v-2', centertop: 'm24 24v-24h-24v24zm-1-1h-22v-22h22zm-6.05-18h-9.9v-2h9.9v2m2.05 4h-14v-2h14v2m-1.85 4h-10.3v-2h10.3v2', righttop: 'm24 0v24h-24v-24zm-1 1h-22v22h22zm-2 2h-10.3v2h10.3v-2m0 4h-14v2h14v-2m0 4h-9.9v2h9.9v-2', leftcenter: 'm0 24v-24h24v24zm1-1h22v-22h-22zm2-6h10.3v-2h-10.3v2m0-4h14v-2h-14v2m0-4h9.9v-2h-9.9v2', centercenter: 'm0 24v-24h24v24zm1-1h22v-22h-22zm6.05-14h9.9v-2h-9.9v2m-2.05 4h14v-2h-14v2m1.85 4h10.3v-2h-10.3v2', rightcenter: 'm24 24v-24h-24v24zm-1-1h-22v-22h22zm-2-6h-10.3v-2h10.3v2m0-4h-14v-2h14v2m0-4h-9.9v-2h9.9v2', leftbottom: 'm0 24v-24h24v24zm1-1h22v-22h-22zm2-2h10.3v-2h-10.3v2m0-4h14v-2h-14v2m0-4h9.9v-2h-9.9v2', centerbottom: 'm24 0v24h-24v-24zm-1 1h-22v22h22zm-6.05 18h-9.9v2h9.9v-2m2.05-4h-14v2h14v-2m-1.85-4h-10.3v2h10.3v-2', rightbottom: 'm24 24v-24h-24v24zm-1-1h-22v-22h22zm-2-2h-10.3v-2h10.3v2m0-4h-14v-2h14v2m0-4h-9.9v-2h9.9v2' }; function makeIcon(path) { var data = '<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">\ <path d="' + path + '" style="stroke-width:0"/>\ </svg>'; return { tag: 'img', style: { 'image-rendering': 'pixelated' }, props: { src: 'data:image/svg+xml;base64,' + base64EncodeUnicode(data) } }; } var res = {}; res.elt = MultiObjectPropertyEditor_('button.as-property-editor-text-align-input', res); cell.addChild(res.elt); res.elt.addChild(MultiObjectPropertyEditor_(makeIcon(icons[this.getProperty(object, name)] || icons.lefttop))); js_QuickMenu.toggleWhenClick(res.elt, { getMenuProps: function getMenuProps() { return { items: [{ text: 'Left-Top', icon: makeIcon(icons.lefttop), menuData: 'lefttop' }, { text: 'Center-Top', icon: makeIcon(icons.centertop), menuData: 'centertop' }, { text: 'Right-Top', icon: makeIcon(icons.righttop), menuData: 'righttop' }, { text: 'Left-Center', icon: makeIcon(icons.leftcenter), menuData: 'leftcenter' }, { text: 'Center-Center', icon: makeIcon(icons.centercenter), menuData: 'centercenter' }, { text: 'Right-Center', icon: makeIcon(icons.rightcenter), menuData: 'rightcenter' }, { text: 'Left-Botttom', icon: makeIcon(icons.leftbottom), menuData: 'leftbottom' }, { text: 'Center-Botttom', icon: makeIcon(icons.centerbottom), menuData: 'centerbottom' }, { text: 'Right-Botttom', icon: makeIcon(icons.rightbottom), menuData: 'rightbottom' }] }; }, onSelect: function onSelect(item) { res.elt.clearChild().addChild(MultiObjectPropertyEditor_(makeIcon(icons[item.menuData]))); self.setPropertyAll(name, item.menuData); self.notifyStopChange(name); } }); res.requestUpdate = function () { res.elt.clearChild().addChild(MultiObjectPropertyEditor_(makeIcon(icons[self.getProperty(object, name)] || icons.lefttop))); }; return res; }; MultiObjectPropertyEditor.prototype.loadNumberProperty = function (name, descriptor, cell) { var self = this; var object = this.objects[this.objects.length - 1]; var numberInput = this.putOnceFromPool("NUMBER_INPUT"); //same with all sign if (numberInput === null) { numberInput = MultiObjectPropertyEditor_({ tag: 'numberinput', "class": 'as-need-update', props: {}, on: { change: function change(event) { if (event.by == 'keyup') return; if (!descriptor.livePreview && event.by == 'long_press_button') return; this.peditor.setPropertyAll(this._propertyName, this.value); this.peditor.notifyChange(this._propertyName, this); if (event.by != 'long_press_button') this.peditor.notifyStopChange(this._propertyName); } } }); } if (descriptor.sign) this.assignToPool(descriptor.sign, numberInput); numberInput.min = typeof descriptor.min == 'number' ? descriptor.min : -Infinity; numberInput.max = typeof descriptor.max == 'number' ? descriptor.max : Infinity; numberInput.value = this.getProperty(object, name); numberInput.disabled = descriptor.disabled; numberInput._propertyName = name; numberInput.peditor = this; var res = { elt: numberInput }; res.requestUpdate = function () { var value = self.getProperty(object, name); if (value === null) res.elt.value = descriptor.defaultValue;else res.elt.value = value; res.elt.disabled = self.getPropertyDescriptor(object, name).disabled; }; cell.addChild(res.elt); //todo NULL return res; }; MultiObjectPropertyEditor.prototype.loadBoolProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; res.elt = MultiObjectPropertyEditor_({ tag: 'checkboxbutton', "class": 'as-need-update', props: { checked: this.getProperty(object, name), notifyChange: function notifyChange() {} }, on: { change: function change() { self.setPropertyAll(name, this.checked); self.notifyChange(name, this); self.notifyStopChange(name); } } }); res.requestUpdate = function () { var value = self.getProperty(object, name); if (value != res.elt.checked) { res.elt.checked = value; } }; cell.addChild(res.elt); return res; }; MultiObjectPropertyEditor.prototype.loadSelectListProperty = function (name, descriptor, cell) { var self = this; var res = {}; var object = this.objects[this.objects.length - 1]; res.elt = MultiObjectPropertyEditor_({ tag: 'button', "class": 'as-from-tool-button', child: 'span.mdi.mdi-table-edit', on: { click: function click() { var listData = self.getProperty(object, name); /** * @type {FormEditor} */ var formEditor = self.getContext(R.FORM_EDITOR); if (!formEditor) return; object.__objectIdent__ = object.__objectIdent__ || randomIdent(24); //different between state var selectListTabIdent = object.__objectIdent__ + '_selectList_' + name; var selectListEditor; var editorTabHolder = formEditor.getEditorHolderByIdent(selectListTabIdent); if (editorTabHolder) selectListEditor = editorTabHolder.editor; if (!selectListEditor) { selectListEditor = new editor_SelectListEditor(); selectListEditor.attach(self); var tabName = self.getProperty(object, 'name') + '(' + name + ')'; var desc = 'SelectList'; formEditor.openEditorTab(selectListTabIdent, tabName, desc, selectListEditor, { layoutEditor: this }); } else { editorTabHolder.tabframe.requestActive(); } selectListEditor.setData(listData); selectListEditor.on('save', function () { listData = this.getData(); self.setPropertyAll(name, listData); }); } } }); cell.addChild(res.elt); return res; }; MultiObjectPropertyEditor.prototype.clearAllDependents = function () { for (var key in this.dependents) { delete this.dependents[key]; } }; /** * @param {String} propertyName * @param {Array<String>} dependencyProperties */ MultiObjectPropertyEditor.prototype.addDepents = function (propertyName, dependencyProperties) { var dependencyProperty; for (var i = 0; i < dependencyProperties.length; ++i) { dependencyProperty = dependencyProperties[i]; this.dependents[dependencyProperty] = this.dependents[dependencyProperty] || {}; this.dependents[dependencyProperty][propertyName] = true; } }; MultiObjectPropertyEditor.prototype.updateDependentsOf = function (name, excludes) { excludes = excludes || {}; excludes[name] = true; for (var dependentPropertyName in this.dependents[name]) { if (!excludes[dependentPropertyName] && this.propertyHolders[dependentPropertyName]) { excludes[dependentPropertyName] = true; if (this.propertyHolders[dependentPropertyName].requestUpdate) { this.propertyHolders[dependentPropertyName].requestUpdate(); } this.updateDependentsOf(dependentPropertyName, excludes); } } }; MultiObjectPropertyEditor.prototype.updatePropertyRecursive = function (name) { if (!this.propertyHolders[name]) return; if (this.propertyHolders[name].requestUpdate) this.propertyHolders[name].requestUpdate(); this.updateDependentsOf(name); }; MultiObjectPropertyEditor.prototype.notifyChange = function (name, from) { this.updateDependentsOf(name); this.emit('change', { type: 'change', target: this, from: from, name: name, objects: this.objects }, this); }; MultiObjectPropertyEditor.prototype.notifyStopChange = function (name) { this.emit('stopchange', { type: 'stopchange', name: name, objects: this.objects }, this); }; /* harmony default export */ var propertyeditors_MultiObjectPropertyEditor = (MultiObjectPropertyEditor); // CONCATENATED MODULE: ./js/editor/AttributeEditor.js function AttributeEditor() { propertyeditors_MultiObjectPropertyEditor.call(this); } Object.defineProperties(AttributeEditor.prototype, Object.getOwnPropertyDescriptors(propertyeditors_MultiObjectPropertyEditor.prototype)); propertyeditors_MultiObjectPropertyEditor.prototype.constructor = AttributeEditor; AttributeEditor.prototype.setProperty = function (object, name, value) { return object.setAttribute(name, value); }; AttributeEditor.prototype.getProperty = function (object, name) { return object.getAttribute(name); }; AttributeEditor.prototype.getPropertyDescriptor = function (object, name) { return object.getAttributeDescriptor(name); }; AttributeEditor.prototype.getPropertyNames = function (object) { return object.getAcceptsAttributeNames(); }; /* harmony default export */ var editor_AttributeEditor = (AttributeEditor); // CONCATENATED MODULE: ./js/editor/StyleEditor.js function StyleEditor() { propertyeditors_MultiObjectPropertyEditor.call(this); } Object.defineProperties(StyleEditor.prototype, Object.getOwnPropertyDescriptors(propertyeditors_MultiObjectPropertyEditor.prototype)); StyleEditor.prototype.constructor = StyleEditor; StyleEditor.prototype.setProperty = function (object, name, value) { return object.setStyle(name, value); }; StyleEditor.prototype.getProperty = function (object) { return object.getStyle.apply(object, Array.prototype.slice.call(arguments, 1)); }; StyleEditor.prototype.getPropertyDescriptor = function (object) { return object.getStyleDescriptor.apply(object, Array.prototype.slice.call(arguments, 1)); }; StyleEditor.prototype.getPropertyNames = function (object) { return object.getAcceptsStyleNames(); }; /* harmony default export */ var editor_StyleEditor = (StyleEditor); // CONCATENATED MODULE: ./js/editor/AllPropertyEditor.js function AllPropertyEditor() { propertyeditors_MultiObjectPropertyEditor.call(this); } Object.defineProperties(AllPropertyEditor.prototype, Object.getOwnPropertyDescriptors(propertyeditors_MultiObjectPropertyEditor.prototype)); AllPropertyEditor.prototype.constructor = AllPropertyEditor; AllPropertyEditor.prototype.setProperty = function (object, name, value) { if (object.__AllPropertyEditorGroupName__.attributes[name]) return object.setAttribute(object.__AllPropertyEditorGroupName__.attributes[name], value); if (object.__AllPropertyEditorGroupName__.style[name]) return object.setStyle(object.__AllPropertyEditorGroupName__.style[name], value); throw new Error('not found ' + name); }; AllPropertyEditor.prototype.getProperty = function (object, name) { if (object.__AllPropertyEditorGroupName__.attributes[name]) return object.getAttribute(object.__AllPropertyEditorGroupName__.attributes[name]); if (object.__AllPropertyEditorGroupName__.style[name]) return object.getStyle.apply(object, [object.__AllPropertyEditorGroupName__.style[name]].concat(Array.prototype.slice.call(arguments, 1))); throw new Error('not found ' + name); }; AllPropertyEditor.prototype.getPropertyDescriptor = function (object, name) { if (object.__AllPropertyEditorGroupName__.attributes[name]) return object.getAttributeDescriptor(object.__AllPropertyEditorGroupName__.attributes[name]); if (object.__AllPropertyEditorGroupName__.style[name]) return object.getStyleDescriptor(object.__AllPropertyEditorGroupName__.style[name]); throw new Error('not found ' + name); }; AllPropertyEditor.prototype.getPropertyNames = function (object) { return Object.keys(object.__AllPropertyEditorGroupName__.attributes).concat(Object.keys(object.__AllPropertyEditorGroupName__.style)).sort(); }; AllPropertyEditor.prototype.edit = function () { if (this.objects) this.objects.forEach(function (object) { delete object.__AllPropertyEditorGroupName__; }); Array.prototype.forEach.call(arguments, function (object) { object.__AllPropertyEditorGroupName__ = {}; var attributes = object.getAcceptsAttributeNames(); var style = object.getAcceptsStyleNames(); object.__AllPropertyEditorGroupName__.attributes = attributes.reduce(function (ac, cr) { ac[cr] = cr; return ac; }, {}); object.__AllPropertyEditorGroupName__.style = style.reduce(function (ac, cr) { ac[cr] = cr; return ac; }, {}); var key; for (key in object.__AllPropertyEditorGroupName__.attributes) { if (object.__AllPropertyEditorGroupName__.style[key]) { delete object.__AllPropertyEditorGroupName__.attributes[key]; delete object.__AllPropertyEditorGroupName__.style[key]; object.__AllPropertyEditorGroupName__.attributes[key + '(attribute)'] = key; object.__AllPropertyEditorGroupName__.style[key + '(style)'] = key; } } }); return propertyeditors_MultiObjectPropertyEditor.prototype.edit.apply(this, arguments); }; /* harmony default export */ var editor_AllPropertyEditor = (AllPropertyEditor); // EXTERNAL MODULE: ./css/propertyeditor.css var propertyeditor = __webpack_require__(254); // EXTERNAL MODULE: ./css/listeditor.css var listeditor = __webpack_require__(256); // CONCATENATED MODULE: ./js/editor/ListEditor.js var ListEditor_ = FCore._; var ListEditor_$ = FCore.$; function ListEditor() { AppPattern_Context.call(this); EventEmitter["b" /* default */].call(this); this._data = []; this._lashHashValue = -1.1; } Object.defineProperties(ListEditor.prototype, Object.getOwnPropertyDescriptors(AppPattern_Context.prototype)); Object.defineProperties(ListEditor.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); ListEditor.prototype.constructor = ListEditor; ListEditor.prototype.getView = function () { if (this.$view) return this.$view; var self = this; this.$view = ListEditor_({ tag: 'table', "class": 'as-list-editor', child: [{ tag: 'thead', child: [{ tag: 'tr', child: [{ tag: 'td', child: { text: 'Text' } }, { tag: 'td', child: { text: 'Value' } }, { tag: 'td' }] }] }, { tag: 'tbody', child: [{ tag: 'tr', "class": 'as-list-editor-add-row', child: { tag: 'td', attr: { colspan: '3' }, child: ['span.mdi.mdi-plus', { tag: 'span', child: { text: 'Add new item' } }] } }] }] }); this.$body = ListEditor_$('tbody', this.$view); this.$addRow = ListEditor_$('.as-list-editor-add-row', this.$view).on('click', function () { self.appendRowElement(); }); this.updateData(); return this.$view; }; ListEditor.prototype.updateData = function () { if (!this.$view) return; if (this._lashHashValue == this.getDataHash()) return; this.$body.clearChild(); var self = this; this.$items = this._data.map(function (item) { return self.makeNewRow(item).addTo(self.$body); }); this.$body.addChild(this.$addRow); this.checkEmpty(); this.checkDuplicate(); }; ListEditor.prototype.makeNewRow = function (data) { var self = this; var itemRow = ListEditor_({ tag: 'tr', "class": 'as-list-editor-row', child: [{ tag: 'td', "class": ['as-list-editor-cell'], child: [{ tag: 'span', "class": 'as-list-editor-text', attr: { contenteditable: 'true' }, child: { text: data.text } }] }, { tag: 'td', "class": ['as-list-editor-cell'], child: { tag: 'span', "class": 'as-list-editor-value', attr: { contenteditable: 'true' }, child: { text: '' + data.value } } }, { tag: 'td', child: { tag: 'button', "class": 'as-list-editor-quick-menu-trigger', child: { tag: 'span', "class": ['mdi', 'mdi-dots-vertical'] } } }] }); itemRow.__data__ = data; itemRow.$textInput = ListEditor_$('.as-list-editor-text', itemRow).on('keydown', function (event) { if (event.key == 'Enter') { event.preventDefault(); this.blur(); } }).on('blur', function () { var newText = itemRow.$textInput.innerText.trim(); if (data.text != newText) { data.text = newText; if (self.checkEmpty() && self.checkDuplicate()) { self.notifyChange(); } } }); contenteditableTextOnly(itemRow.$textInput, function (text) { return text.replace(/[\r\n]/g, ''); }); if ((data.text + '').trim() == '') { itemRow.$textInput.parentNode.addClass('empty-cell'); } itemRow.$valueInput = ListEditor_$('.as-list-editor-value', itemRow).on('keydown', function (event) { if (event.key == 'Enter') { event.preventDefault(); this.blur(); } }).on('blur', function () { var newValue = itemRow.$valueInput.innerText.trim(); if (data.value != newValue) { data.value = newValue; if (self.checkEmpty() && self.checkDuplicate()) { self.notifyChange(); } } }); contenteditableTextOnly(itemRow.$valueInput, function (text) { return text.replace(/[\r\n]/g, ''); }); if ((data.value + '').trim() == '') { itemRow.$valueInput.parentNode.addClass('empty-cell'); } itemRow.$menuTrigger = ListEditor_$('.as-list-editor-quick-menu-trigger', itemRow); itemRow.quickMenuData = js_QuickMenu.toggleWhenClick(itemRow.$menuTrigger, { getMenuProps: function getMenuProps() { return { extendStyle: { 'font-size': '12px' }, items: [{ icon: '.mdi.mdi-table-row-plus-before', text: 'Insert Row Before', cmd: 'insert-before' }, { icon: '.mdi.mdi-table-row-plus-after', text: 'Insert Row After', cmd: 'insert-after' }, { icon: '.mdi.mdi-table-row-remove', text: 'Remove', cmd: 'remove' }] }; }, onSelect: function onSelect(itemElt) { switch (itemElt.cmd) { case 'remove': self.removeRowByElt(itemRow); break; case 'insert-before': self.insertRowBeforeElt(itemRow); break; case 'insert-after': self.insertRowAfterElt(itemRow); break; } } }); return itemRow; }; /** * @returns {Boolean} */ ListEditor.prototype.checkDuplicate = function () { var res = true; var textDict = {}; var valueDict = {}; var rows = Array.apply(null, this.$body.childNodes); var row; for (var i = 0; i < rows.length; ++i) { row = rows[i]; if (row.__data__ && (row.__data__.text + '').trim() != '') { if (textDict[row.__data__.text]) { row.$textInput.parentNode.addClass('duplicate-cell'); } else { textDict[row.__data__.text] = true; row.$textInput.parentNode.removeClass('duplicate-cell'); } } if (row.__data__ && (row.__data__.value + '').trim() != '') { if (valueDict[row.__data__.value]) { row.$valueInput.parentNode.addClass('duplicate-cell'); res = false; } else { valueDict[row.__data__.value] = true; row.$valueInput.parentNode.removeClass('duplicate-cell'); } } } ; return res; }; /** * @returns {Boolean} */ ListEditor.prototype.checkEmpty = function () { var res = true; var rows = Array.apply(null, this.$body.childNodes); var row; for (var i = 0; i < rows.length; ++i) { row = rows[i]; if (row.__data__) { if (!row.__data__.text || row.__data__.text.trim() == '') { res = false; row.$textInput.parentNode.addClass('empty-cell'); } else { row.$textInput.parentNode.removeClass('empty-cell'); } if (!row.__data__.value || row.__data__.value.trim() == '') { res = false; row.$valueInput.parentNode.addClass('empty-cell'); } else { row.$valueInput.parentNode.removeClass('empty-cell'); } } } ; return res; }; ListEditor.prototype.removeRowByElt = function (rowElement) { rowElement.remove(); this._data = this._data.filter(function (item) { return rowElement.__data__ != item; }); if (this.checkEmpty() && this.checkDuplicate()) { this.notifyChange(); } }; ListEditor.prototype.removeRowByData = function (rowData) { this._data = this._data.filter(function (item) { return rowData != item; }); if (this.$view) ListEditor_$('.as-list-editor-row', this.$view, function (elt) { if (elt.__data__ == rowData) elt.remove(); return true; }); if (this.checkEmpty() && this.checkDuplicate()) { this.notifyChange(); } }; ListEditor.prototype.insertRowBeforeElt = function (elt) { var itemData = { text: '', value: '' }; var res = this.makeNewRow(itemData); this.$body.addChildBefore(res, elt); var index = this._data.indexOf(elt.__data__); this._data.splice(index, 0, itemData); return res; }; ListEditor.prototype.insertRowAfterElt = function (elt) { var itemData = { text: '', value: '' }; var res = this.makeNewRow(itemData); this.$body.addChildAfter(res, elt); var index = this._data.indexOf(elt.__data__); this._data.splice(index + 1, 0, itemData); return res; }; ListEditor.prototype.appendRowElement = function () { var itemData = { text: '', value: '' }; var res = this.makeNewRow(itemData); this.$body.addChildBefore(res, this.$addRow); this._data.push(itemData); if (this.checkEmpty() && this.checkDuplicate()) { this.notifyChange(); } return res; }; ListEditor.prototype.setData = function (items) { items = items || []; this._data = items; this.updateData(); }; ListEditor.prototype.getData = function () { return this._data; //todo }; /** * @returns {Number} */ ListEditor.prototype.getDataHash = function () { return this.data2Hash(this._data || []); }; ListEditor.prototype.data2Hash = function (data) { return data.reduce(function (hash, item, idx) { var c; var s = idx + ':' + item.text + ':' + item.value; for (var i = 0; i < s.length; ++i) { c = s.charCodeAt(i); hash = (hash << 5) - hash + c; hash |= 0; } return hash; }, 0); }; ListEditor.prototype.notifyChange = function () { var currentHash = this.getDataHash(); if (this._lashHashValue != currentHash) { this._lashHashValue = currentHash; this.emit('change', { target: this, hash: currentHash }, this); } }; /* harmony default export */ var editor_ListEditor = (ListEditor); // EXTERNAL MODULE: ./css/fonticonpicker.css var fonticonpicker = __webpack_require__(258); // CONCATENATED MODULE: ./js/font/MaterialDesignIcons.js var linkElts = document.getElementsByTagName('link'); var linkElt; for (var MaterialDesignIcons_i = 0; MaterialDesignIcons_i < linkElts.length; ++MaterialDesignIcons_i) { linkElt = linkElts[MaterialDesignIcons_i]; if (linkElt.href && linkElt.href.indexOf('materialdesignicons') >= 0) break; } if (!linkElt || !linkElt.href || linkElt.href.indexOf('materialdesignicons') < 0) { linkElt = FCore._('<link rel="stylesheet" href="//cdn.materialdesignicons.com/4.5.95/css/materialdesignicons.min.css">').addTo(document.head); } var loadFontPromise = Network_XHR.getRequest(linkElt.href, 'text').then(function (text) { var regex = /\.mdi-([^:]+)::before/g; var iconNames = []; var iconNameMatch; do { iconNameMatch = regex.exec(text); if (iconNameMatch) iconNames.push(iconNameMatch[1]); } while (iconNameMatch); return { iconNames: iconNames }; }); function getMaterialDesignIconNames() { return loadFontPromise.then(function (data) { return data.iconNames; }); } ; function getMaterialDesignLinkElt() { return linkElt; } // CONCATENATED MODULE: ./js/font/GoogleMaterialIcons.js var GOOGLE_MATERIAL_ICON_NAMES = ["backup", "3d_rotation", "accessibility", "accessibility_new", "accessible", "accessible_forward", "account_balance", "account_balance_wallet", "account_box", "account_circle", "add_shopping_cart", "alarm", "alarm_add", "alarm_off", "alarm_on", "all_inbox", "all_out", "android", "announcement", "arrow_right_alt", "aspect_ratio", "assessment", "assignment", "assignment_ind", "assignment_late", "assignment_return", "assignment_returned", "assignment_turned_in", "autorenew", "backup", "book", "bookmark", "bookmark_border", "bookmarks", "bug_report", "build", "cached", "calendar_today", "calendar_view_day", "camera_enhance", "cancel_schedule_send", "card_giftcard", "card_membership", "card_travel", "change_history", "check_circle", "check_circle_outline", "chrome_reader_mode", "class", "code", "commute", "compare_arrows", "contact_support", "contactless", "copyright", "credit_card", "dashboard", "date_range", "delete", "delete_forever", "delete_outline", "description", "dns", "done", "done_all", "done_outline", "donut_large", "donut_small", "drag_indicator", "eco", "eject", "euro_symbol", "event", "event_seat", "exit_to_app", "explore", "explore_off", "extension", "face", "favorite", "favorite_border", "feedback", "find_in_page", "find_replace", "fingerprint", "flight_land", "flight_takeoff", "flip_to_back", "flip_to_front", "g_translate", "gavel", "get_app", "gif", "grade", "group_work", "help", "help_outline", "highlight_off", "history", "home", "horizontal_split", "hourglass_empty", "hourglass_full", "http", "https", "important_devices", "info", "input", "invert_colors", "label", "label_important", "label_off", "language", "launch", "line_style", "line_weight", "list", "lock", "lock_open", "loyalty", "markunread_mailbox", "maximize", "minimize", "motorcycle", "note_add", "offline_bolt", "offline_pin", "opacity", "open_in_browser", "open_in_new", "open_with", "pageview", "pan_tool", "payment", "perm_camera_mic", "perm_contact_calendar", "perm_data_setting", "perm_device_information", "perm_identity", "perm_media", "perm_phone_msg", "perm_scan_wifi", "pets", "picture_in_picture", "picture_in_picture_alt", "play_for_work", "polymer", "power_settings_new", "pregnant_woman", "print", "query_builder", "question_answer", "receipt", "record_voice_over", "redeem", "remove_shopping_cart", "reorder", "report_problem", "restore", "restore_from_trash", "restore_page", "room", "rounded_corner", "rowing", "schedule", "search", "settings_applications", "settings_backup_restore", "settings_bluetooth", "settings_brightness", "settings_cell", "settings_ethernet", "settings_input_antenna", "settings_input_component", "settings_input_composite", "settings_input_hdmi", "settings_input_svideo", "settings_overscan", "settings_phone", "settings_power", "settings_remote", "settings_voice", "shop", "shop_two", "shopping_basket", "shopping_cart", "speaker_notes", "speaker_notes_off", "spellcheck", "stars", "store", "subject", "supervised_user_circle", "supervisor_account", "swap_horiz", "swap_horizontal_circle", "swap_vert", "swap_vertical_circle", "sync_alt", "system_update_alt", "tab", "tab_unselected", "text_rotate_up", "text_rotate_vertical", "text_rotation_angledown", "text_rotation_angleup", "text_rotation_down", "text_rotation_none", "theaters", "thumb_down", "thumb_up", "thumbs_up_down", "timeline", "toc", "today", "toll", "touch_app", "track_changes", "translate", "trending_down", "trending_flat", "trending_up", "turned_in", "turned_in_not", "update", "verified_user", "vertical_split", "view_agenda", "view_array", "view_carousel", "view_column", "view_day", "view_headline", "view_list", "view_module", "view_quilt", "view_stream", "view_week", "visibility", "visibility_off", "voice_over_off", "watch_later", "work", "work_off", "work_outline", "youtube_searched_for", "zoom_in", "zoom_out", "add_alert", "error", "error_outline", "notification_important", "warning", "4k", "add_to_queue", "airplay", "album", "art_track", "av_timer", "branding_watermark", "call_to_action", "closed_caption", "control_camera", "equalizer", "explicit", "fast_forward", "fast_rewind", "featured_play_list", "featured_video", "fiber_dvr", "fiber_manual_record", "fiber_new", "fiber_pin", "fiber_smart_record", "forward_10", "forward_30", "forward_5", "games", "hd", "hearing", "high_quality", "library_add", "library_books", "library_music", "loop", "mic", "mic_none", "mic_off", "missed_video_call", "movie", "music_video", "new_releases", "not_interested", "note", "pause", "pause_circle_filled", "pause_circle_outline", "play_arrow", "play_circle_filled", "play_circle_outline", "playlist_add", "playlist_add_check", "playlist_play", "queue", "queue_music", "queue_play_next", "radio", "recent_actors", "remove_from_queue", "repeat", "repeat_one", "replay", "replay_10", "replay_30", "replay_5", "shuffle", "skip_next", "skip_previous", "slow_motion_video", "snooze", "sort_by_alpha", "speed", "stop", "subscriptions", "subtitles", "surround_sound", "video_call", "video_label", "video_library", "videocam", "videocam_off", "volume_down", "volume_mute", "volume_off", "volume_up", "web", "web_asset", "business", "call", "call_end", "call_made", "call_merge", "call_missed", "call_missed_outgoing", "call_received", "call_split", "cancel_presentation", "chat", "chat_bubble", "chat_bubble_outline", "clear_all", "comment", "contact_mail", "contact_phone", "contacts", "desktop_access_disabled", "dialer_sip", "dialpad", "domain_disabled", "duo", "email", "forum", "import_contacts", "import_export", "invert_colors_off", "list_alt", "live_help", "mail_outline", "message", "mobile_screen_share", "no_sim", "pause_presentation", "person_add_disabled", "phone", "phone_disabled", "phone_enabled", "phonelink_erase", "phonelink_lock", "phonelink_ring", "phonelink_setup", "portable_wifi_off", "present_to_all", "print_disabled", "ring_volume", "rss_feed", "screen_share", "sentiment_satisfied_alt", "speaker_phone", "stay_current_landscape", "stay_current_portrait", "stay_primary_landscape", "stay_primary_portrait", "stop_screen_share", "swap_calls", "textsms", "unsubscribe", "voicemail", "vpn_key", "add", "add_box", "add_circle", "add_circle_outline", "amp_stories", "archive", "backspace", "ballot", "block", "clear", "create", "delete_sweep", "drafts", "dynamic_feed", "file_copy", "filter_list", "flag", "font_download", "forward", "gesture", "how_to_reg", "how_to_vote", "inbox", "link", "link_off", "low_priority", "mail", "markunread", "move_to_inbox", "next_week", "outlined_flag", "policy", "redo", "remove", "remove_circle", "remove_circle_outline", "reply", "reply_all", "report", "report_off", "save", "save_alt", "select_all", "send", "sort", "square_foot", "text_format", "unarchive", "undo", "waves", "where_to_vote", "access_alarm", "access_alarms", "access_time", "add_alarm", "add_to_home_screen", "airplanemode_active", "airplanemode_inactive", "battery_alert", "battery_charging_full", "battery_full", "battery_std", "battery_unknown", "bluetooth", "bluetooth_connected", "bluetooth_disabled", "bluetooth_searching", "brightness_auto", "brightness_high", "brightness_low", "brightness_medium", "data_usage", "developer_mode", "devices", "dvr", "gps_fixed", "gps_not_fixed", "gps_off", "graphic_eq", "location_disabled", "location_searching", "mobile_friendly", "mobile_off", "nfc", "screen_lock_landscape", "screen_lock_portrait", "screen_lock_rotation", "screen_rotation", "sd_storage", "settings_system_daydream", "signal_cellular_4_bar", "signal_cellular_alt", "signal_cellular_connected_no_internet_4_bar", "signal_cellular_no_sim", "signal_cellular_null", "signal_cellular_off", "signal_wifi_4_bar", "signal_wifi_4_bar_lock", "signal_wifi_off", "storage", "usb", "wallpaper", "widgets", "wifi_lock", "wifi_tethering", "add_comment", "attach_file", "attach_money", "bar_chart", "border_all", "border_bottom", "border_clear", "border_horizontal", "border_inner", "border_left", "border_outer", "border_right", "border_style", "border_top", "border_vertical", "bubble_chart", "drag_handle", "format_align_center", "format_align_justify", "format_align_left", "format_align_right", "format_bold", "format_clear", "format_color_reset", "format_indent_decrease", "format_indent_increase", "format_italic", "format_line_spacing", "format_list_bulleted", "format_list_numbered", "format_list_numbered_rtl", "format_paint", "format_quote", "format_shapes", "format_size", "format_strikethrough", "format_textdirection_l_to_r", "format_textdirection_r_to_l", "format_underlined", "functions", "height", "highlight", "insert_chart", "insert_chart_outlined", "insert_comment", "insert_drive_file", "insert_emoticon", "insert_invitation", "insert_link", "insert_photo", "linear_scale", "merge_type", "mode_comment", "monetization_on", "money_off", "multiline_chart", "notes", "pie_chart", "post_add", "publish", "scatter_plot", "score", "short_text", "show_chart", "space_bar", "strikethrough_s", "table_chart", "text_fields", "title", "vertical_align_bottom", "vertical_align_center", "vertical_align_top", "wrap_text", "attachment", "cloud", "cloud_circle", "cloud_done", "cloud_download", "cloud_off", "cloud_queue", "cloud_upload", "create_new_folder", "folder", "folder_open", "folder_shared", "cast", "cast_connected", "computer", "desktop_mac", "desktop_windows", "developer_board", "device_hub", "device_unknown", "devices_other", "dock", "gamepad", "headset", "headset_mic", "keyboard", "keyboard_arrow_down", "keyboard_arrow_left", "keyboard_arrow_right", "keyboard_arrow_up", "keyboard_backspace", "keyboard_capslock", "keyboard_hide", "keyboard_return", "keyboard_tab", "keyboard_voice", "laptop", "laptop_chromebook", "laptop_mac", "laptop_windows", "memory", "mouse", "phone_android", "phone_iphone", "phonelink", "phonelink_off", "power_input", "router", "scanner", "security", "sim_card", "smartphone", "speaker", "speaker_group", "tablet", "tablet_android", "tablet_mac", "toys", "tv", "videogame_asset", "watch", "add_a_photo", "add_photo_alternate", "add_to_photos", "adjust", "assistant", "assistant_photo", "audiotrack", "blur_circular", "blur_linear", "blur_off", "blur_on", "brightness_1", "brightness_2", "brightness_3", "brightness_4", "brightness_5", "brightness_6", "brightness_7", "broken_image", "brush", "burst_mode", "camera", "camera_alt", "camera_front", "camera_rear", "camera_roll", "center_focus_strong", "center_focus_weak", "collections", "collections_bookmark", "color_lens", "colorize", "compare", "control_point", "control_point_duplicate", "crop", "crop_16_9", "crop_3_2", "crop_5_4", "crop_7_5", "crop_din", "crop_free", "crop_landscape", "crop_original", "crop_portrait", "crop_rotate", "crop_square", "dehaze", "details", "edit", "euro", "exposure", "exposure_neg_1", "exposure_neg_2", "exposure_plus_1", "exposure_plus_2", "exposure_zero", "filter", "filter_1", "filter_2", "filter_3", "filter_4", "filter_5", "filter_6", "filter_7", "filter_8", "filter_9", "filter_9_plus", "filter_b_and_w", "filter_center_focus", "filter_drama", "filter_frames", "filter_hdr", "filter_none", "filter_tilt_shift", "filter_vintage", "flare", "flash_auto", "flash_off", "flash_on", "flip", "flip_camera_android", "flip_camera_ios", "gradient", "grain", "grid_off", "grid_on", "hdr_off", "hdr_on", "hdr_strong", "hdr_weak", "healing", "image", "image_aspect_ratio", "image_search", "iso", "landscape", "leak_add", "leak_remove", "lens", "linked_camera", "looks", "looks_3", "looks_4", "looks_5", "looks_6", "looks_one", "looks_two", "loupe", "monochrome_photos", "movie_creation", "movie_filter", "music_note", "music_off", "nature", "nature_people", "navigate_before", "navigate_next", "palette", "panorama", "panorama_fish_eye", "panorama_horizontal", "panorama_vertical", "panorama_wide_angle", "photo", "photo_album", "photo_camera", "photo_filter", "photo_library", "photo_size_select_actual", "photo_size_select_large", "photo_size_select_small", "picture_as_pdf", "portrait", "remove_red_eye", "rotate_90_degrees_ccw", "rotate_left", "rotate_right", "shutter_speed", "slideshow", "straighten", "style", "switch_camera", "switch_video", "tag_faces", "texture", "timelapse", "timer", "timer_10", "timer_3", "timer_off", "tonality", "transform", "tune", "view_comfy", "view_compact", "vignette", "wb_auto", "wb_cloudy", "wb_incandescent", "wb_iridescent", "wb_sunny", "360", "atm", "beenhere", "category", "compass_calibration", "departure_board", "directions", "directions_bike", "directions_boat", "directions_bus", "directions_car", "directions_railway", "directions_run", "directions_subway", "directions_transit", "directions_walk", "edit_attributes", "ev_station", "fastfood", "flight", "hotel", "layers", "layers_clear", "local_activity", "local_airport", "local_atm", "local_bar", "local_cafe", "local_car_wash", "local_convenience_store", "local_dining", "local_drink", "local_florist", "local_gas_station", "local_grocery_store", "local_hospital", "local_hotel", "local_laundry_service", "local_library", "local_mall", "local_movies", "local_offer", "local_parking", "local_pharmacy", "local_phone", "local_pizza", "local_play", "local_post_office", "local_printshop", "local_see", "local_shipping", "local_taxi", "map", "menu_book", "money", "museum", "my_location", "navigation", "near_me", "person_pin", "rate_review", "restaurant", "restaurant_menu", "satellite", "store_mall_directory", "streetview", "subway", "terrain", "traffic", "train", "tram", "transfer_within_a_station", "transit_enterexit", "trip_origin", "zoom_out_map", "apps", "arrow_back", "arrow_back_ios", "arrow_downward", "arrow_drop_down", "arrow_drop_down_circle", "arrow_drop_up", "arrow_forward", "arrow_forward_ios", "arrow_left", "arrow_right", "arrow_upward", "cancel", "check", "chevron_left", "chevron_right", "close", "double_arrow", "expand_less", "expand_more", "first_page", "fullscreen", "fullscreen_exit", "home_work", "last_page", "menu", "menu_open", "more_horiz", "more_vert", "refresh", "subdirectory_arrow_left", "subdirectory_arrow_right", "unfold_less", "unfold_more", "account_tree", "adb", "airline_seat_flat", "airline_seat_flat_angled", "airline_seat_individual_suite", "airline_seat_legroom_extra", "airline_seat_legroom_normal", "airline_seat_legroom_reduced", "airline_seat_recline_extra", "airline_seat_recline_normal", "bluetooth_audio", "confirmation_number", "disc_full", "drive_eta", "enhanced_encryption", "event_available", "event_busy", "event_note", "folder_special", "live_tv", "mms", "more", "network_check", "network_locked", "no_encryption", "ondemand_video", "personal_video", "phone_bluetooth_speaker", "phone_callback", "phone_forwarded", "phone_in_talk", "phone_locked", "phone_missed", "phone_paused", "power", "power_off", "priority_high", "sd_card", "sms", "sms_failed", "sync", "sync_disabled", "sync_problem", "system_update", "tap_and_play", "time_to_leave", "tv_off", "vibration", "voice_chat", "vpn_lock", "wc", "wifi", "wifi_off", "ac_unit", "airport_shuttle", "all_inclusive", "apartment", "bathtub", "beach_access", "business_center", "casino", "child_care", "child_friendly", "fitness_center", "free_breakfast", "golf_course", "hot_tub", "house", "kitchen", "meeting_room", "no_meeting_room", "pool", "room_service", "rv_hookup", "smoke_free", "smoking_rooms", "spa", "storefront", "cake", "deck", "emoji_emotions", "emoji_events", "emoji_flags", "emoji_food_beverage", "emoji_nature", "emoji_objects", "emoji_people", "emoji_symbols", "emoji_transportation", "fireplace", "group", "group_add", "king_bed", "location_city", "mood", "mood_bad", "nights_stay", "notifications", "notifications_active", "notifications_none", "notifications_off", "notifications_paused", "outdoor_grill", "pages", "party_mode", "people", "people_alt", "people_outline", "person", "person_add", "person_outline", "plus_one", "poll", "public", "school", "sentiment_dissatisfied", "sentiment_satisfied", "sentiment_very_dissatisfied", "sentiment_very_satisfied", "share", "single_bed", "sports", "sports_baseball", "sports_basketball", "sports_cricket", "sports_esports", "sports_football", "sports_golf", "sports_handball", "sports_hockey", "sports_kabaddi", "sports_mma", "sports_motorsports", "sports_rugby", "sports_soccer", "sports_tennis", "sports_volleyball", "thumb_down_alt", "thumb_up_alt", "whatshot", "check_box", "check_box_outline_blank", "indeterminate_check_box", "radio_button_checked", "radio_button_unchecked", "star", "star_border", "star_half", "toggle_off", "toggle_on"]; // CONCATENATED MODULE: ./js/dom/FontIconPicker.js var FontIconPicker_ = FCore._; var FontIconPicker_$ = FCore.$; function FontIconPicker() { var self = this; this._fontIndex = 0; this._viewingFontIndex = -1; this.$searchInput = FontIconPicker_$('searchtextinput', this).on('stoptyping', this.search.bind(this)); this.$selectFont = FontIconPicker_$('.as-font-icon-picker-select-font', this).on('change', this.updateContent.bind(this)); this.$option = FontIconPicker_$('.as-font-icon-picker-option', this); this.$materialDesignContent = FontIconPicker_$('.as-font-icon-picker-content.as-font-icon-picker-material-design-icons', this); this.$googleMaterialContent = FontIconPicker_$('.as-font-icon-picker-content.as-font-icon-picker-google-material-icons', this); this.$mdiButtons = []; this.$googleMaterialIconButtons = []; this.on('click', this.eventHandler.clickContent); this.$activeButtons = {}; this.$buttonList = {}; getMaterialDesignIconNames().then(function (result) { var button; for (var i = 0; i < result.length; ++i) { button = FontIconPicker_({ tag: 'button', "class": 'as-font-icon-picker-icon', child: 'span.mdi.mdi-' + result[i], attr: { title: result[i] }, props: { __keywods__: result[i].split(/[\-\_\s]+/), __data__: 'span.mdi.mdi-' + result[i] } }).addTo(self.$materialDesignContent); self.$mdiButtons.push(button); self.$buttonList[button.__data__] = button; } }); GOOGLE_MATERIAL_ICON_NAMES.forEach(function (name) { var button = FontIconPicker_({ tag: 'button', "class": 'as-font-icon-picker-icon', attr: { title: name }, props: { __keywods__: name.split(/[\-\_\s]+/), __data__: '<i class="material-icons">' + name + '</i>' }, child: { tag: 'i', "class": 'material-icons', child: { text: name } } }).addTo(self.$googleMaterialContent); self.$googleMaterialIconButtons.push(button); self.$buttonList[button.__data__] = button; }); this.updateContent(); this.$noneBtn = FontIconPicker_$('button.none-icon', this); this.$noneBtn.__data__ = null; this.$noneBtn.on('click', this.eventHandler.clickContent); } FontIconPicker.render = function () { return FontIconPicker_({ extendEvent: 'clickicon', "class": 'as-font-icon-picker', child: ['searchtextinput', { tag: 'selectmenu', "class": 'as-font-icon-picker-select-font', props: { items: [{ text: 'Material Design Icons', value: 0 }, { text: 'Google Material Icons', value: 1 }] }, value: 0 }, { tag: 'button', "class": ['as-font-icon-picker-icon', 'none-icon'], attr: { title: 'None' }, style: { height: '2em', verticalAlign: 'top' }, child: { tag: 'span', style: { fontSize: '1em' }, child: { text: 'None' } } }, { tag: 'bscroller', "class": ['as-font-icon-picker-content', 'as-font-icon-picker-material-design-icons'] }, { tag: 'bscroller', "class": ['as-font-icon-picker-content', 'as-font-icon-picker-google-material-icons'] }] }); }; FontIconPicker.eventHandler = {}; FontIconPicker.eventHandler.clickContent = function (event) { var target = event.target; while (target != this && target) { if (target.containsClass('as-font-icon-picker-icon')) break; target = target.parentNode; } if (target && target.containsClass('as-font-icon-picker-icon')) { this.emit('clickicon', { type: 'clickicon', value: target.__data__, originEvent: event, target: this }, this); } }; FontIconPicker.prototype.selectValues = function () { for (var name in this.$activeButtons) { this.$activeButtons[name].removeClass('as-font-icon-picker-selected'); } this.$activeButtons = {}; var button; for (var i = 0; i < arguments.length; ++i) { button = this.$buttonList[arguments[i]]; if (button) { this.$activeButtons[arguments[i]] = button; button.addClass('as-font-icon-picker-selected'); } } }; FontIconPicker.prototype.updateContent = function () { this._fontIndex = this.$selectFont.value; if (this._fontIndex == 0) this.showMaterialDesignIcons();else if (this._fontIndex == 1) this.showGoogleMaterialIcons(); }; FontIconPicker.prototype.showMaterialDesignIcons = function () { this._fontIndex = 0; if (this._viewingFontIndex == 0) return; this._viewingFontIndex = 0; this.$materialDesignContent.removeStyle('display'); this.$googleMaterialContent.addStyle('display', 'none'); this.search(); }; FontIconPicker.prototype.showGoogleMaterialIcons = function () { this._fontIndex = 1; if (this._viewingFontIndex == 1) return; this._viewingFontIndex = 1; this.$materialDesignContent.addStyle('display', 'none'); this.$googleMaterialContent.removeStyle('display'); this.search(); }; FontIconPicker.prototype.search = function () { var keyword = this.$searchInput.value.trim().split(/[\-\_\s]+/).filter(function (w) { return !!w; }); var viewList = this._fontIndex == 0 ? this.$mdiButtons : this.$googleMaterialIconButtons; var contentElt = this._fontIndex == 0 ? this.$materialDesignContent : this.$googleMaterialContent; if (keyword.length > 0) { var list = viewList.map(function (button) { return { elt: button, value: wordsMatch(keyword, button.__keywods__) }; }); list.sort(function (a, b) { return b.value - a.value; }); var minValue = list[0].value; var maxValue = list[list.length - 1].value; var midValue = (minValue * 2 + maxValue) / 3; list = list.filter(function (item) { return item.value > midValue; }); viewList = list.map(function (item) { return item.elt; }); } contentElt.clearChild(); viewList.forEach(function (elt) { elt.addTo(contentElt); }); }; FCore.install('fonticonpicker', FontIconPicker); /* harmony default export */ var dom_FontIconPicker = (FontIconPicker); // CONCATENATED MODULE: ./js/dom/FontIconInput.js function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var FontIconInput_ = FCore._; var FontIconInput_$ = FCore.$; function FontIconInput() { this.prepare(); this.on('click', this.eventHandler.click); } FontIconInput.eventHandler = {}; FontIconInput.eventHandler.click = function (event) { this.togglePicker(); }; FontIconInput.eventHandler.clickIcon = function (event) { this.value = event.value; this.emit('change', { type: 'change', value: event.value, target: this, originEvent: event.originEvent || event }, this); this.closePicker(); }; FontIconInput.eventHandler.clickBody = function (event) { if (EventEmitter["b" /* default */].hitElement(this, event) || EventEmitter["b" /* default */].hitElement(this.$fontIconPicker, event)) return; this.closePicker(); }; FontIconInput.prototype.togglePicker = function () { if (this.containsClass('as-font-icon-selecting')) { this.closePicker(); } else { this.openPicker(); } }; FontIconInput.prototype.openPicker = function () { if (FontIconInput.lastOpen) { FontIconInput.lastOpen.closePicker(); } FontIconInput.lastOpen = this; this.addClass('as-font-icon-selecting'); this.$fontIconPicker.on('clickicon', this.eventHandler.clickIcon); this.$ctn.addTo(document.body); this.$follower.followTarget = this; FontIconInput_$(document.body).on('click', this.eventHandler.clickBody); this.$fontIconPicker.selectValues(this.value); }; FontIconInput.prototype.closePicker = function () { this.removeClass('as-font-icon-selecting'); if (FontIconInput.lastOpen == this) { FontIconInput.lastOpen == null; this.$ctn.remove(); } document.body.off('click', this.eventHandler.clickBody); this.$fontIconPicker.off('clickicon', this.eventHandler.clickIcon); }; FontIconInput.prototype.prepare = function () { if (!FontIconInput.$fontIconPicker) { FontIconInput.$ctn = FontIconInput_('.absol-context-hinge-fixed-container'); FontIconInput.$follower = FontIconInput_('follower').addTo(FontIconInput.$ctn); FontIconInput.$fontIconPicker = FontIconInput_('fonticonpicker').addTo(FontIconInput.$follower); FontIconInput.lastOpen = null; } this.$follower = FontIconInput.$follower; this.$fontIconPicker = FontIconInput.$fontIconPicker; this.$ctn = FontIconInput.$ctn; }; FontIconInput.render = function () { var _ref; return FontIconInput_((_ref = { extendEvent: 'change', tag: 'button' }, _defineProperty(_ref, "extendEvent", 'change'), _defineProperty(_ref, "class", 'as-font-icon-input'), _ref)); }; FontIconInput.property = {}; FontIconInput.property.value = { set: function set(value) { this.clearChild(); this._value = value; if (this._value) { this.addChild(FontIconInput_(value)); } else { this.addChild(FontIconInput_('<span></span>')); } }, get: function get() { return this._value; } }; FCore.install('FontIconInput'.toLowerCase(), FontIconInput); /* harmony default export */ var dom_FontIconInput = (FontIconInput); // CONCATENATED MODULE: ./js/editor/PropertyEditor.js function PropertyEditor_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { PropertyEditor_typeof = function _typeof(obj) { return typeof obj; }; } else { PropertyEditor_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return PropertyEditor_typeof(obj); } // FontIconPicker var PropertyEditor_ = FCore._; var PropertyEditor_$ = FCore.$; function PropertyEditor() { AppPattern_Context.call(this); EventEmitter["b" /* default */].call(this); this.dependents = {}; this.$view = null; this.propertyHolders = {}; /** * @type {import('../core/BaseComponent').default} */ this.object = null; this.propertyNames = []; this.$needUpdate = []; // all element which had .as-need-update this.queuePools = {}; } Object.defineProperties(PropertyEditor.prototype, Object.getOwnPropertyDescriptors(AppPattern_Context.prototype)); Object.defineProperties(PropertyEditor.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); PropertyEditor.prototype.constructor = PropertyEditor; PropertyEditor.prototype.pools = {}; //share object PropertyEditor.prototype.onDestroy = function () { this.flushAllToPools(); }; PropertyEditor.prototype.edit = function (object) { this.object = object; this.loadAttributes(); }; PropertyEditor.prototype.setProperty = function (name, value) { return this.object[name] = value; }; PropertyEditor.prototype.getProperty = function (name) { return this.object[name]; }; PropertyEditor.prototype.getPropertyDescriptor = function (name) { return { type: PropertyEditor_typeof(this.object) }; }; PropertyEditor.prototype.getPropertyNames = function () { return Object.keys(this.object); }; PropertyEditor.prototype.flushAllToPools = function () { var self = this; Object.keys(this.queuePools).forEach(function (key) { self.pools[key] = self.pools[key] === undefined ? [] : self.pools[key]; var all = self.queuePools[key].splice(0); self.pools[key].push.apply(self.pools[key], all); }); }; PropertyEditor.prototype.assignToPool = function (key, value) { this.queuePools[key] = this.queuePools[key] === undefined ? [] : this.queuePools[key]; if (value.__pool_assign__) { console.warn("Pool: reassign object", key, value); } else { value.__pool_assign__ = true; this.queuePools[key].push(value); } }; PropertyEditor.prototype.putOnceFromPool = function (key) { var res = null; if (this.pools[key] && this.pools[key].length > 0) { res = this.pools[key].pop(); } if (res) res.__pool_assign__ = false; return res; }; PropertyEditor.prototype.loadAttributes = function () { var self = this; this.flushAllToPools(); self.$body.clearChild(); this.clearAllDependents(); this.propertyNames = []; this.$rows = []; this.$needUpdate = []; if (!this.object) return; this.propertyNames = this.getPropertyNames(); this.propertyHolders = {}; this.propertyNames.forEach(function (name) { var descriptor = self.getPropertyDescriptor(name) || { type: "NoDescriptor" }; if (descriptor.dependency) { self.addDepents(name, descriptor.dependency); } var functionName = 'load' + camelCaseToPascalCase(descriptor.type) + 'Property'; var cell = PropertyEditor_('td'); if (!self[functionName]) { // throw new Error('Not support type' + descriptor.type + '!') functionName = 'loadNotSupportedProperty'; } ; var rowElt = PropertyEditor_({ tag: 'tr', child: [{ tag: 'td', child: { text: name } }, cell] }); rowElt.addTo(self.$body); self.propertyHolders[name] = self[functionName](name, descriptor, cell, cell); }); }; PropertyEditor.prototype.loadNotSupportedProperty = function (name, descriptor, cell, cellElt) { cellElt.addChild(PropertyEditor_({ text: 'Not supported ' })).addChild(PropertyEditor_({ tag: 'strong', child: { text: descriptor.type } })); return {}; }; PropertyEditor.prototype.loadEnumProperty = function (name, descriptor, cell) { var self = this; var res = {}; var selectMenu = descriptor.sign ? this.putOnceFromPool(descriptor.sign) : null; if (selectMenu === null) { selectMenu = PropertyEditor_({ tag: 'selectmenu', props: { items: descriptor.values.map(function (value) { return { text: value + "", value: value }; }), value: this.getProperty(name) }, on: { change: function change() { this.peditor.setProperty(name, this.value); this.peditor.notifyChange(name, this); this.peditor.notifyStopChange(name); } } }); } if (descriptor.sign) this.assignToPool(descriptor.sign, selectMenu); selectMenu.value = this.getProperty(name); selectMenu.peditor = this; res.requestUpdate = function () { var value = self.getProperty(name); if (value != this.value) { selectMenu.value = value; } }; cell.addChild(selectMenu); return res; }; PropertyEditor.prototype.loadFontProperty = function (name, descriptor, cell) { var self = this; var res = {}; var fontInput = descriptor.sign ? this.putOnceFromPool(descriptor.sign) : null; if (fontInput === null) { fontInput = PropertyEditor_({ tag: 'selectmenu', "class": 'as-need-update', props: { items: [{ text: 'None', value: undefined }].concat(FONT_ITEMS) }, on: { change: function change() { this.peditor.setProperty(name, this.value); this.peditor.notifyChange(name, this); this.peditor.notifyStopChange(name); } } }); } if (descriptor.sign) this.assignToPool(descriptor.sign, fontInput); fontInput.value = this.getProperty(name); fontInput.peditor = this; res.elt = fontInput; cell.addChild(res.elt); res.requestUpdate = function () { var value = self.getProperty(name); if (value != fontInput.value) { fontInput.value = value; } }; return res; }; PropertyEditor.prototype.loadConstProperty = function (name, descriptor, cell) { var self = this; var res = {}; res.elt = PropertyEditor_({ tag: 'strong', child: { text: '' + descriptor.value } }); cell.addChild(res.elt); return res; }; PropertyEditor.prototype.loadTextProperty = function (name, descriptor, cell) { var self = this; var res = {}; res.elt = PropertyEditor_({ tag: descriptor["long"] ? 'textarea' : 'input', attr: { type: 'text' }, on: { keyup: function keyup() { self.setProperty(name, this.value); self.notifyChange(name, this); }, change: function change() { self.notifyStopChange(name); } } }); cell.addChild(res.elt); res.requestUpdate = function () { var value = self.getProperty(name); if (value != this.value) { res.elt.value = value; } }; res.requestUpdate(); return res; }; PropertyEditor.prototype.loadUniqueTextProperty = function (name, descriptor, cell) { var self = this; var res = {}; res.elt = PropertyEditor_({ tag: descriptor["long"] ? 'textarea' : 'input', attr: { type: 'text' }, on: { keyup: function keyup() { if (descriptor.others[this.value]) { this.addStyle('border-color', '#f99'); this.attr('title', 'This name is used!'); } else { this.attr('title', null); this.removeStyle('border-color'); } self.setProperty(name, this.value); self.notifyChange(name, this); }, change: function change() { if (descriptor.others[this.value]) { this.addStyle('border-color', '#f99'); this.attr('title', 'This name is used!'); } else { this.attr('title', null); this.removeStyle('border-color'); } self.notifyStopChange(name); } } }); cell.addChild(res.elt); res.requestUpdate = function () { var value = self.getProperty(name); if (value != this.value) { res.elt.value = value; } }; res.requestUpdate(); return res; }; PropertyEditor.prototype.loadBoolProperty = function (name, descriptor, cell) { var self = this; var res = {}; res.elt = PropertyEditor_({ tag: 'checkboxbutton', "class": 'as-need-update', props: { checked: this.getProperty(name), notifyChange: function notifyChange() {} }, on: { change: function change() { self.setProperty(name, this.checked); self.notifyChange(name, this); self.notifyStopChange(name); } } }); res.requestUpdate = function () { var value = self.getProperty(name); if (value != res.elt.checked) { res.elt.checked = value; } }; cell.addChild(res.elt); return res; }; PropertyEditor.prototype.loadDateProperty = function (name, descriptor, cell) { var self = this; var res = {}; res.calendarInput = PropertyEditor_({ tag: 'calendarinput', props: { disabled: descriptor.disabled, value: self.getProperty(name) }, on: { change: function change() { self.setProperty(name, this.value); self.notifyChange(name, this); res.nullCheckElt.checked = false; self.notifyStopChange(name); } } }); cell.addChild(res.calendarInput); res.nullCheckElt = PropertyEditor_({ tag: 'checkbox', style: { marginLeft: '10px' }, props: { text: 'NULL' }, on: { change: function change() { if (this.checked) { self.setProperty(name, null); } else { self.setProperty(name, beginOfDay(new Date())); } self.notifyChange(name, this); self.notifyStopChange(name); } } }); cell.addChild(res.nullCheckElt); res.requestUpdate = function () { var value = self.getProperty(name); if (!value) { res.calendarInput.value = null; res.nullCheckElt.checked = true; } else { res.calendarInput.value = value; res.nullCheckElt.checked = false; } res.calendarInput.disabled = self.getPropertyDescriptor(name).disabled; }; return res; }; PropertyEditor.prototype.loadNumberProperty = function (name, descriptor, cell) { var self = this; var numberInput = this.putOnceFromPool("NUMBER_INPUT"); //same with all sign if (numberInput === null) { numberInput = PropertyEditor_({ tag: 'numberinput', "class": 'as-need-update', props: {}, on: { change: function change(event) { if (event.by == 'keyup') return; if (!descriptor.livePreview && event.by == 'long_press_button') return; this.peditor.setProperty(this._propertyName, this.value); this.peditor.notifyChange(this._propertyName, this); if (event.by != 'long_press_button') this.peditor.notifyStopChange(this._propertyName); } } }); } if (descriptor.sign) this.assignToPool(descriptor.sign, numberInput); numberInput.min = typeof descriptor.min == 'number' ? descriptor.min : -Infinity; numberInput.max = typeof descriptor.max == 'number' ? descriptor.max : Infinity; numberInput.value = this.getProperty(name); numberInput.disabled = descriptor.disabled; numberInput._propertyName = name; numberInput.peditor = this; var res = { elt: numberInput }; res.requestUpdate = function () { var value = self.getProperty(name); if (value === null) res.elt.value = descriptor.defaultValue;else res.elt.value = value; res.elt.disabled = self.getPropertyDescriptor(name).disabled; }; cell.addChild(res.elt); //todo NULL return res; }; PropertyEditor.prototype.loadIconProperty = function (name, descriptor, cell) { var self = this; var res = {}; //todo: disabled res.elt = PropertyEditor_({ tag: 'fonticoninput', "class": 'as-need-update', props: { value: self.getProperty(name), disabled: descriptor.disabled }, on: { change: function change(event) { self.setProperty(name, this.value); self.notifyStopChange(name, this); } } }); cell.addChild(res.elt); res.requestUpdate = function () { res.elt.value = self.getProperty(name); }; return res; }; PropertyEditor.prototype.loadListProperty = function (name, descriptor, cell) { var self = this; var listEditor = new editor_ListEditor(); var res = {}; res.elt = listEditor.getView(); cell.addChild(res.elt); listEditor.on('change', function () { self.setProperty(name, this.getData()); self.notifyStopChange(name); }); listEditor.start(); // res. listEditor.setData(this.getProperty(name)); return res; }; PropertyEditor.prototype.loadTextAlignProperty = function (name, descriptor, cell) { var self = this; var icons = { left: 'mdi-format-align-left', right: 'mdi-format-align-right', center: 'mdi-format-align-center' }; var res = {}; res.elt = PropertyEditor_({ tag: 'button', "class": 'as-property-editor-text-align-input', child: 'span.mdi' }); cell.addChild(res.elt); var $button = res.elt; var $icon = PropertyEditor_$('span.mdi', $button); var lasIconClass = icons[this.getProperty(name)] || icons.left; $icon.addClass(lasIconClass); res.requestUpdate = function () { $icon.removeClass(lasIconClass); lasIconClass = icons[self.getProperty(name)] || icons.left; $icon.addClass(lasIconClass); }; var self = this; js_QuickMenu.toggleWhenClick($button, { getMenuProps: function getMenuProps() { return { items: [{ text: 'Left', icon: 'span.mdi.mdi-format-align-left', menuData: 'left' }, { text: 'Center', icon: 'span.mdi.mdi-format-align-center', menuData: 'center' }, { text: 'Right', icon: 'span.mdi.mdi-format-align-right', menuData: 'right' }] }; }, onSelect: function onSelect(item) { $icon.removeClass(lasIconClass); lasIconClass = icons[item.menuData]; $icon.addClass(lasIconClass); self.setProperty(name, item.menuData); self.notifyStopChange(name); } }); return res; }; PropertyEditor.prototype.loadBoxAlignProperty = function (name, descriptor, cell) { var self = this; var icons = { lefttop: 'm0 0v24h24v-24zm1 1h22v22h-22zm2 2h10.3v2h-10.3v-2m0 4h14v2h-14v-2m0 4h9.9v2h-9.9v-2', centertop: 'm24 24v-24h-24v24zm-1-1h-22v-22h22zm-6.05-18h-9.9v-2h9.9v2m2.05 4h-14v-2h14v2m-1.85 4h-10.3v-2h10.3v2', righttop: 'm24 0v24h-24v-24zm-1 1h-22v22h22zm-2 2h-10.3v2h10.3v-2m0 4h-14v2h14v-2m0 4h-9.9v2h9.9v-2', leftcenter: 'm0 24v-24h24v24zm1-1h22v-22h-22zm2-6h10.3v-2h-10.3v2m0-4h14v-2h-14v2m0-4h9.9v-2h-9.9v2', centercenter: 'm0 24v-24h24v24zm1-1h22v-22h-22zm6.05-14h9.9v-2h-9.9v2m-2.05 4h14v-2h-14v2m1.85 4h10.3v-2h-10.3v2', rightcenter: 'm24 24v-24h-24v24zm-1-1h-22v-22h22zm-2-6h-10.3v-2h10.3v2m0-4h-14v-2h14v2m0-4h-9.9v-2h9.9v2', leftbottom: 'm0 24v-24h24v24zm1-1h22v-22h-22zm2-2h10.3v-2h-10.3v2m0-4h14v-2h-14v2m0-4h9.9v-2h-9.9v2', centerbottom: 'm24 0v24h-24v-24zm-1 1h-22v22h22zm-6.05 18h-9.9v2h9.9v-2m2.05-4h-14v2h14v-2m-1.85-4h-10.3v2h10.3v-2', rightbottom: 'm24 24v-24h-24v24zm-1-1h-22v-22h22zm-2-2h-10.3v-2h10.3v2m0-4h-14v-2h14v2m0-4h-9.9v-2h9.9v2' }; function makeIcon(path) { var data = '<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">\ <path d="' + path + '" style="stroke-width:0"/>\ </svg>'; return { tag: 'img', style: { 'image-rendering': 'pixelated' }, props: { src: 'data:image/svg+xml;base64,' + base64EncodeUnicode(data) } }; } var res = {}; res.elt = PropertyEditor_('button.as-property-editor-text-align-input', res); cell.addChild(res.elt); res.elt.addChild(PropertyEditor_(makeIcon(icons[this.getProperty(name)] || icons.lefttop))); js_QuickMenu.toggleWhenClick(res.elt, { getMenuProps: function getMenuProps() { return { items: [{ text: 'Left-Top', icon: makeIcon(icons.lefttop), menuData: 'lefttop' }, { text: 'Center-Top', icon: makeIcon(icons.centertop), menuData: 'centertop' }, { text: 'Right-Top', icon: makeIcon(icons.righttop), menuData: 'righttop' }, { text: 'Left-Center', icon: makeIcon(icons.leftcenter), menuData: 'leftcenter' }, { text: 'Center-Center', icon: makeIcon(icons.centercenter), menuData: 'centercenter' }, { text: 'Right-Center', icon: makeIcon(icons.rightcenter), menuData: 'rightcenter' }, { text: 'Left-Botttom', icon: makeIcon(icons.leftbottom), menuData: 'leftbottom' }, { text: 'Center-Botttom', icon: makeIcon(icons.centerbottom), menuData: 'centerbottom' }, { text: 'Right-Botttom', icon: makeIcon(icons.rightbottom), menuData: 'rightbottom' }] }; }, onSelect: function onSelect(item) { res.elt.clearChild().addChild(PropertyEditor_(makeIcon(icons[item.menuData]))); self.setProperty(name, item.menuData); self.notifyStopChange(name); } }); res.requestUpdate = function () { res.elt.clearChild().addChild(PropertyEditor_(makeIcon(icons[self.getProperty(name)] || icons.lefttop))); }; return res; }; PropertyEditor.prototype.loadColorProperty = function (name, descriptor, cell) { var self = this; var res = {}; res.elt = PropertyEditor_({ tag: 'colorpickerbutton', on: { change: function change(event) { self.setProperty(name, '#' + event.value.toHex8()); self.notifyChange(name); }, stopchange: function stopchange(event) { self.notifyStopChange(name); } }, props: { value: 'transparent', mode: 'RGBA' } }); cell.addChild(res.elt); res.requestUpdate = function () { res.elt.value = self.getProperty(name); }; res.requestUpdate(); return res; }; PropertyEditor.prototype.loadMeasureSizeProperty = function (name, descriptor, cell) { var self = this; var res = {}; cell.addStyle('white-space', 'nowrap'); res.numberInputElt = PropertyEditor_('numberinput').addStyle('margin-right', '5px'); res.typeSelectElt = PropertyEditor_({ tag: 'selectmenu', style: { verticalAlign: 'middle' }, props: { items: [{ text: 'px', value: 'px' }, { text: '%', value: '%' }, { text: 'match_parent', value: 'match_parent' }, { text: 'auto', value: 'auto' }] } }); cell.addChild(res.numberInputElt).addChild(res.typeSelectElt); res.numberInputElt.on('change', function (event) { if (event.by == 'keyup') return; switch (res.typeSelectElt.value) { case '%': self.setProperty(name, this.value + '%'); break; case 'px': self.setProperty(name, this.value); break; } self.notifyChange(name); if (event.by != 'long_press_button') self.notifyStopChange(name); }).on('stopchange', function () { switch (res.typeSelectElt.value) { case '%': self.setProperty(name, this.value + '%'); break; case 'px': self.setProperty(name, this.value); break; } self.notifyStopChange(name); }); res.typeSelectElt.on('change', function (event) { if (this.value == 'match_parent' || this.value == 'auto') { self.setProperty(name, this.value); res.numberInputElt.disabled = true; } else { res.numberInputElt.disabled = false; var value = self.getProperty(name, this.value); res.numberInputElt.value = value; if (this.value == '%') { self.setProperty(name, value + '%'); } else { self.setProperty(name, value); } } self.notifyChange(name); self.notifyStopChange(name); }); res.requestUpdate = function () { var descriptor = self.getPropertyDescriptor(name); if (descriptor.disabled) res.numberInputElt.disabled = !!descriptor.disabled; var value = self.getProperty(name); if (typeof value == 'number') { res.numberInputElt.value = value; res.typeSelectElt.value = 'px'; } else if (typeof value == 'string') { if (value.match(/\%$/)) { res.typeSelectElt.value = '%'; res.numberInputElt.value = parseFloat(value.replace('%', '')); res.numberInputElt.disabled = false; } else if (value == 'match_parent' || value == 'auto') { res.numberInputElt.disabled = true; res.typeSelectElt.value = value; } else { console.error("Unknow typeof " + name, value); } } }; res.requestUpdate(); return res; }; PropertyEditor.prototype.loadMeasurePositionProperty = function (name, descriptor, cell) { var self = this; var res = {}; cell.addStyle('white-space', 'nowrap'); res.numberInputElt = PropertyEditor_('numberinput').addStyle('margin-right', '5px'); res.typeSelectElt = PropertyEditor_({ tag: 'selectmenu', style: { verticalAlign: 'middle' }, props: { items: [{ text: 'px', value: 'px' }, { text: '%', value: '%' }] } }); cell.addChild(res.numberInputElt).addChild(res.typeSelectElt); res.numberInputElt.on('change', function (event) { if (event.by == 'keyup') return; switch (res.typeSelectElt.value) { case '%': self.setProperty(name, this.value + '%'); break; case 'px': self.setProperty(name, this.value); break; } self.notifyChange(name); if (event.by != 'long_press_button') self.notifyStopChange(name); }).on('stopchange', function () { switch (res.typeSelectElt.value) { case '%': self.setProperty(name, this.value + '%'); break; case 'px': self.setProperty(name, this.value); break; } self.notifyStopChange(name); }); res.typeSelectElt.on('change', function (event) { if (this.value == 'match_parent' || this.value == 'auto') { self.setProperty(name, this.value); res.numberInputElt.disabled = true; } else { res.numberInputElt.disabled = false; var value = self.getProperty(name, this.value); res.numberInputElt.value = value; if (this.value == '%') { self.setProperty(name, value + '%'); } else { self.setProperty(name, value); } } self.notifyChange(name); self.notifyStopChange(name); }); res.requestUpdate = function () { var descriptor = self.getPropertyDescriptor(name); res.numberInputElt.disabled = !!descriptor.disabled; var value; if (descriptor.disabled) { value = self.getProperty(name, res.typeSelectElt.value); res.numberInputElt.value = value; //set-back if (res.typeSelectElt.value == 'px') { self.setProperty(name, value); } else if (res.typeSelectElt.value == '%') { self.setProperty(name, value + '%'); } } else { value = self.getProperty(name); if (typeof value == 'number') { res.numberInputElt.value = value; res.typeSelectElt.value = 'px'; } else if (typeof value == 'string') { if (value.match(/\%$/)) { res.typeSelectElt.value = '%'; res.numberInputElt.value = parseFloat(value.replace('%', '')); } else { console.error("Unknow typeof " + name, value); } } } }; res.requestUpdate(); return res; }; PropertyEditor.prototype.getView = function () { if (this.$view) return this.$view; this.$view = PropertyEditor_({ "class": 'as-property-editor', child: { tag: 'table', child: [{ tag: 'thead', child: [{ tag: 'tr', child: [{ tag: 'td', child: { text: "key" } }, { tag: 'td', attr: { colspan: '3' }, child: { text: 'value' } }] }] }, { tag: 'tbody' }] } }); this.$body = PropertyEditor_$('tbody', this.$view); return this.$view; }; PropertyEditor.prototype.clearAllDependents = function () { for (var key in this.dependents) { delete this.dependents[key]; } }; /** * @param {String} propertyName * @param {Array<String>} dependencyProperties */ PropertyEditor.prototype.addDepents = function (propertyName, dependencyProperties) { var dependencyProperty; for (var i = 0; i < dependencyProperties.length; ++i) { dependencyProperty = dependencyProperties[i]; this.dependents[dependencyProperty] = this.dependents[dependencyProperty] || {}; this.dependents[dependencyProperty][propertyName] = true; } }; PropertyEditor.prototype.updateDependentsOf = function (name, excludes) { excludes = excludes || {}; excludes[name] = true; for (var dependentPropertyName in this.dependents[name]) { if (!excludes[dependentPropertyName] && this.propertyHolders[dependentPropertyName]) { excludes[dependentPropertyName] = true; if (this.propertyHolders[dependentPropertyName].requestUpdate) { this.propertyHolders[dependentPropertyName].requestUpdate(); } this.updateDependentsOf(dependentPropertyName, excludes); } } }; PropertyEditor.prototype.updatePropertyRecursive = function (name) { if (!this.propertyHolders[name]) return; if (this.propertyHolders[name].requestUpdate) this.propertyHolders[name].requestUpdate(); this.updateDependentsOf(name); }; PropertyEditor.prototype.notifyChange = function (name, from) { this.updateDependentsOf(name); this.emit('change', { type: 'change', target: this, from: from, name: name, object: this.object }, this); }; PropertyEditor.prototype.notifyStopChange = function (name) { this.emit('stopchange', { type: 'stopchange', name: name, object: this.object }, this); }; /* harmony default export */ var editor_PropertyEditor = (PropertyEditor); // CONCATENATED MODULE: ./js/editor/EventEditor.js function EventEditor() { editor_PropertyEditor.call(this); } Object.defineProperties(EventEditor.prototype, Object.getOwnPropertyDescriptors(editor_PropertyEditor.prototype)); EventEditor.prototype.constructor = EventEditor; EventEditor.prototype.setProperty = function (name, value) { return this.object.setEvent(name, value); }; EventEditor.prototype.getProperty = function (name) { return this.object.getEvent(name); }; EventEditor.prototype.getPropertyDescriptor = function (name) { return this.object.getEventDescriptor(name); }; EventEditor.prototype.getPropertyNames = function () { return this.object.getAcceptsEventNames(); }; /* harmony default export */ var editor_EventEditor = (EventEditor); // CONCATENATED MODULE: ./js/editor/ComponentPropertiesEditor.js var ComponentPropertiesEditor_ = FCore._; var ComponentPropertiesEditor_$ = FCore.$; function ComponentPropertiesEditor(editor) { core_BaseEditor.call(this); this.editor = editor; var self = this; var repeatEvents = { change: function change(event) { self.emit('change', Object.assign({ componentPropertiesEditor: self }, event), self); }, stopchange: function stopchange(event) { self.emit('stopchange', Object.assign({ componentPropertiesEditor: self }, event), self); } }; this.attributeEditor = new editor_AttributeEditor().on(repeatEvents).on('stopchange', function (event) { self.allPropertyEditor.updatePropertyRecursive(event.name); }); this.styleEditor = new editor_StyleEditor().on(repeatEvents).on('stopchange', function (event) { self.allPropertyEditor.updatePropertyRecursive(event.name); }); this.eventEditor = new editor_EventEditor().on(repeatEvents).on('stopchange', function (event) { self.allPropertyEditor.updatePropertyRecursive(event.name); }); this.allPropertyEditor = new editor_AllPropertyEditor().on(repeatEvents).on('stopchange', function (event) { self.attributeEditor.updatePropertyRecursive(event.name); self.styleEditor.updatePropertyRecursive(event.name); self.eventEditor.updatePropertyRecursive(event.name); }); this.$dockElt = null; this.component = undefined; } Object.defineProperties(ComponentPropertiesEditor.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); ComponentPropertiesEditor.prototype.constructor = ComponentPropertiesEditor; ComponentPropertiesEditor.prototype.CONFIG_STORE_KEY = "AS_ComponentPropertiesEditor_config"; ComponentPropertiesEditor.prototype.config = { windowStyle: { left: Dom["b" /* default */].getScreenSize().width - 346 + 'px', top: '59px', height: Dom["b" /* default */].getScreenSize().height - 100 + 'px' } }; ComponentPropertiesEditor.prototype.ev_windowPosChange = function () { this.config.windowStyle = { width: this.$window.style.width, height: this.$window.style.height, top: this.$window.style.top, left: this.$window.style.left }; this.saveConfig(); }; ComponentPropertiesEditor.prototype.getView = function () { if (this.$view) return this.$view; var thisEditor = this; this.$window = ComponentPropertiesEditor_({ tag: 'onscreenwindow', "class": 'as-form-component-properties-editor-window', props: { windowTitle: 'Properties', windowIcon: 'span.mdi.mdi-shape-plus' }, on: { sizechange: this.ev_windowPosChange.bind(this), drag: this.ev_windowPosChange.bind(this), relocation: this.ev_windowPosChange.bind(this) } }); this.$dockBtn = this.$window.$dockBtn; this.$dockBtn.children[0].attr('class', 'mdi mdi-dock-right'); this.$dockBtn.on('click', this.dockToEditor.bind(this)); this.$view = ComponentPropertiesEditor_({ tag: 'tabview', "class": ["as-form-component-properties-editor", 'xp-tiny'], child: [{ tag: 'tabframe', "class": 'absol-bscroller', attr: { name: 'Attribute' }, child: this.attributeEditor.getView() }, { tag: 'tabframe', attr: { name: 'Style' }, child: this.styleEditor.getView() }, { tag: 'tabframe', "class": 'absol-bscroller', attr: { name: 'Event' }, child: this.eventEditor.getView() }, { tag: 'tabframe', "class": 'absol-bscroller', attr: { name: 'All' }, child: this.allPropertyEditor.getView() }] }); if (!this.$dockElt) { this.$window.addChild(this.$view); } this.$quickmenuBtn = ComponentPropertiesEditor_({ tag: 'button', "class": ['as-form-component-properties-editor-quickmenu-button', 'as-from-tool-button'], child: 'span.mdi.mdi-dots-horizontal' }); js_QuickMenu.toggleWhenClick(this.$quickmenuBtn, { getMenuProps: function getMenuProps() { return { extendStyle: { 'font-size': '12px' }, items: [{ text: 'Undock', icon: 'span.mdi.mdi-dock-window', cmd: 'undock' }, { text: 'Help', icon: 'span.mdi.mdi-help' }] }; }, onSelect: function onSelect(item) { switch (item.cmd) { case 'undock': thisEditor.undock(); break; } } }); this.$view.appendChild(this.$quickmenuBtn); return this.$view; }; ComponentPropertiesEditor.prototype.onAttached = function () { this.setContext(R.ATTRIBUTE_EDITOR, this.attributeEditor); this.setContext(R.STYLE_EDITOR, this.styleEditor); this.setContext(R.ALL_PROPERTY_EDITOR, this.allPropertyEditor); this.setContext(R.EVENT_EDITOR, this.eventEditor); this.attributeEditor.attach(this); this.eventEditor.attach(this); this.styleEditor.attach(this); this.allPropertyEditor.attach(this); }; ComponentPropertiesEditor.prototype.onStart = function () { this.getView(); this.attributeEditor.start(); this.eventEditor.start(); this.styleEditor.start(); this.allPropertyEditor.start(); }; ComponentPropertiesEditor.prototype.onDestroy = function () { this.attributeEditor.destroy(); this.eventEditor.destroy(); this.styleEditor.destroy(); this.allPropertyEditor.destroy(); }; ComponentPropertiesEditor.prototype.onPause = function () { //todo this.$window.remove(); this.attributeEditor.pause(); this.eventEditor.pause(); this.styleEditor.pause(); this.allPropertyEditor.pause(); }; ComponentPropertiesEditor.prototype.onResume = function () { this.loadPosition(); this.attributeEditor.resume(); this.eventEditor.resume(); this.styleEditor.resume(); this.allPropertyEditor.resume(); }; ComponentPropertiesEditor.prototype.loadPosition = function () { if (this.config.docked) { this.dockToEditor(); } else { this.undock(); } }; ComponentPropertiesEditor.prototype.dockToEditor = function () { this.$dockElt = this.editor && this.editor.getPropertyCtn && this.editor.getPropertyCtn(); if (this.$dockElt) { this.$view.addTo(this.$dockElt); this.$window.remove(); this.config.docked = true; this.saveConfig(); Dom["b" /* default */].updateResizeSystem(); } // propertyCtn }; ComponentPropertiesEditor.prototype.undock = function () { this.config.docked = false; this.$view.addTo(this.$window.addStyle(this.config.windowStyle).addTo(document.body)); Dom["b" /* default */].updateResizeSystem(); this.saveConfig(); }; ComponentPropertiesEditor.prototype.edit = function () { this.component = arguments[0]; this.components = Array.prototype.slice.call(arguments); this.styleEditor.edit.apply(this.styleEditor, arguments); this.attributeEditor.edit.apply(this.attributeEditor, arguments); this.allPropertyEditor.edit.apply(this.allPropertyEditor, arguments); this.eventEditor.edit.apply(this.eventEditor, arguments); }; /* harmony default export */ var editor_ComponentPropertiesEditor = (ComponentPropertiesEditor); // EXTERNAL MODULE: ./css/componentoutline.css var componentoutline = __webpack_require__(260); // CONCATENATED MODULE: ./js/editor/ComponentOutline.js var ComponentOutline_ = FCore._; var ComponentOutline_$ = FCore.$; function ComponentOutline() { core_BaseEditor.call(this); this.$view = null; /** * @type {import('./LayoutEditor').default} */ this.layoutEditor = null; this.activeComponents = []; this.$expNodes = []; this.$focusNode = undefined; this._lastPressTime = 0; } Object.defineProperties(ComponentOutline.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); ComponentOutline.prototype.constructor = ComponentOutline; ComponentOutline.prototype.onStart = function () { this.layoutEditor = this.getContext(R.LAYOUT_EDITOR); }; ComponentOutline.prototype.ev_contextNode = function (comp, event) { var self = this; var items = [{ icon: 'span.mdi.mdi-delete-variant', text: 'Delete', cmd: 'delete', extendStyle: { color: 'red' } }]; var anchorEditor = this.layoutEditor.findAnchorEditorByComponent(comp); if (anchorEditor) { anchorEditor.focus(); this.updateComponentStatus(); } else { this.layoutEditor.setActiveComponent(comp); } if (this.layoutEditor.anchorEditors.length == 1) { items = [{ icon: 'span.mdi.mdi-arrow-collapse-up', text: 'Move To Top', cmd: 'move-to-top' }, { icon: 'span.mdi.mdi-arrow-up', text: 'Move Up', cmd: 'move-up' }, { icon: 'span.mdi.mdi-arrow-down', text: 'Move Down', cmd: 'move-down' }, { icon: 'span.mdi.mdi-arrow-collapse-down', text: 'Move To Bottom', cmd: 'move-to-bottom' }, '================='].concat(items); } if (comp.isLayout) { items = [{ icon: 'span.mdi.mdi-square-edit-outline', text: 'Edit Layout', cmd: 'edit_layout', extendStyle: { color: 'blue' } }, '=============='].concat(items); } event.stopPropagation(); event.showContextMenu({ items: items, extendStyle: { fontSize: '12px' } }, function (event) { switch (event.menuItem.cmd) { case "delete": self.layoutEditor.execCmd('delete'); break; case 'move-to-top': self.moveToTop(comp); break; case 'move-up': self.moveUp(comp); break; case 'move-down': self.moveDown(comp); break; case 'move-to-bottom': self.moveToBottom(comp); break; case 'edit_layout': self.layoutEditor.editLayout(comp); break; } setTimeout(self.$view.focus.bind(self.$view), 20); }); }; ComponentOutline.prototype.moveToTop = function (comp) { this.layoutEditor.moveToTopComponent(comp); }; ComponentOutline.prototype.moveUp = function (comp) { this.layoutEditor.moveUpComponent(comp); this.updateComponetTree(); }; ComponentOutline.prototype.moveDown = function (comp) { this.layoutEditor.moveDownComponent(comp); this.updateComponetTree(); }; ComponentOutline.prototype.moveToBottom = function (comp) { this.layoutEditor.moveToBottomComponent(comp); this.updateComponetTree(); }; ComponentOutline.prototype.updateComponetTree = function () { var self = this; this.$expNodes = []; if (this.$exptree) { this.$exptree.remove(); this.$exptree = undefined; } function onPressNode(comp, event) { var target = event.target; if ((this.status == 'open' || this.status == 'close') && this.$node.$iconCtn.getBoundingClientRect().left > event.clientX - 3) { this.status = this.status == 'open' ? 'close' : 'open'; } else { var parentLayout = self.layoutEditor.findNearestLayoutParent(comp.parent); if (event.shiftKey && parentLayout == self.layoutEditor.editingLayout) self.layoutEditor.toggleActiveComponent(comp);else { if (parentLayout != self.layoutEditor.editingLayout) { self.layoutEditor.editLayout(parentLayout || self.layoutEditor.rootLayout); } self.layoutEditor.setActiveComponent(comp); } } } function visit(expTree, comp) { if (comp.children) { comp.children.forEach(function (childComp) { var childElt = ComponentOutline_({ tag: 'exptree', props: { icon: childComp.menuIcon, name: childComp.getAttribute('name'), __comp__: childComp } }); childElt.getNode().defineEvent(['contextmenu']); childElt.getNode().on({ click: onPressNode.bind(childElt, childComp), contextmenu: self.ev_contextNode.bind(self, childComp) }); expTree.addChild(childElt); self.$expNodes.push(childElt); visit(childElt, childComp); expTree.status = 'open'; }); } } if (this.layoutEditor.rootLayout) { this.$exptree = ComponentOutline_({ tag: 'exptree', props: { status: 'open', icon: this.layoutEditor.rootLayout.menuIcon, name: this.layoutEditor.rootLayout.getAttribute('name'), __comp__: this.layoutEditor.rootLayout, __isRoot__: true } }); this.$exptree.on('press', onPressNode.bind(this.$exptree, this.layoutEditor.rootLayout)); this.$expNodes.push(this.$exptree); visit(this.$exptree, this.layoutEditor.rootLayout); if (this.$view) { this.$view.addChild(this.$exptree); } } this.updateComponentStatus(); }; ComponentOutline.prototype.updateComponentStatus = function () { this.$focusNode = undefined; var nodeElt; var editor; for (var i = 0; i < this.$expNodes.length; ++i) { nodeElt = this.$expNodes[i]; editor = undefined; for (var j = 0; j < this.layoutEditor.anchorEditors.length; ++j) { if (this.layoutEditor.anchorEditors[j].component == nodeElt.__comp__) { editor = this.layoutEditor.anchorEditors[j]; } } if (editor) { nodeElt.addClass('as-component-outline-node-selected'); if (editor.isFocus) { nodeElt.addClass('as-component-outline-node-focus'); this.$focusNode = nodeElt; } else { nodeElt.removeClass('as-component-outline-node-focus'); } } else { nodeElt.removeClass('as-component-outline-node-selected'); nodeElt.removeClass('as-component-outline-node-focus'); } } }; ComponentOutline.prototype.getView = function () { if (this.$view) return this.$view; this.$view = ComponentOutline_({ tag: 'bscroller', "class": ['as-component-outline'], attr: { tabindex: '1' }, on: { keydown: this.ev_keydown.bind(this) } }); if (this.$exptree) this.$view.addChild(this.$exptree); return this.$view; }; ComponentOutline.prototype.ev_keydown = function (event) { var now = new Date().getTime(); if (now - this._lastPressTime < 50) return; this._lastPressTime = now; switch (event.key) { case 'Down': case 'ArrowDown': if (this.$focusNode) this.selectNext(this.$focusNode.__comp__); break; case 'Up': case 'ArrowUp': if (this.$focusNode) this.selectPrev(this.$focusNode.__comp__); break; } this.layoutEditor.ev_cmdKeyDown(event); setTimeout(this.$view.focus.bind(this.$view), 10); }; ComponentOutline.prototype.selectNext = function (component) { var prev = undefined; var self = this; ComponentOutline_$('exptree', this.$view, function (node) { if (node.__comp__ == component) { prev = node; } else if (prev) { self.layoutEditor.setActiveComponent(node.__comp__); node.$node.focus(); return true; } }); }; ComponentOutline.prototype.selectPrev = function (component) { var prev = undefined; var self = this; ComponentOutline_$('exptree', this.$view, function (node) { if (node.__comp__ == component) { if (prev) { self.layoutEditor.setActiveComponent(prev.__comp__); prev.$node.focus(); return true; } } prev = node; }); }; /* harmony default export */ var editor_ComponentOutline = (ComponentOutline); // EXTERNAL MODULE: ./css/formpreview.css var formpreview = __webpack_require__(262); // CONCATENATED MODULE: ./js/cmds/FormPreviewCmd.js var FormPreviewCmd = { reload: function reload() { this.refresh(); } }; /* harmony default export */ var cmds_FormPreviewCmd = (FormPreviewCmd); var FormPreviewCmdDescriptors = { reload: { type: 'trigger', desc: "Reload", icon: 'span.mdi.mdi-reload' } }; // CONCATENATED MODULE: ./js/editor/FormPreview.js var FormPreview_ = FCore._; var FormPreview_$ = FCore.$; function FormPreview() { core_BaseEditor.call(this); core_Assembler.call(this); this.cmdRunner.assign(cmds_FormPreviewCmd); this.data = null; this.dataFlushed = true; } Object.defineProperties(FormPreview.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); Object.defineProperties(FormPreview.prototype, Object.getOwnPropertyDescriptors(core_Assembler.prototype)); FormPreview.prototype.constructor = FormPreview; FormPreview.prototype.onResume = function () { this.flushDataToView(); /** * @type {import('../fragment/CMDTool').default} */ this.cmdTool = this.getContext(R.CMD_TOOL); if (this.cmdTool) { this.cmdTool.bindWithEditor(this); this.cmdTool.resume(); } }; FormPreview.prototype.onPause = function () { if (this.cmdTool) { this.cmdTool.bindWithEditor(undefined); this.cmdTool.pause(); } }; FormPreview.prototype.getView = function () { if (this.$view) return this.$view; var self = this; this.$view = FormPreview_({ tag: 'bscroller', "class": 'as-form-preview', child: [{ "class": 'as-form-preview-size-setting', child: [{ tag: 'span', child: { text: 'Size : ' } }, { tag: 'input', "class": 'as-input-width', props: { type: 'number', min: '0' }, on: { change: this.ev_sizeInputChange.bind(this) } }, { tag: 'span', child: { text: ' x ' } }, { tag: 'input', "class": 'as-input-height', props: { type: 'number', min: '0' }, on: { change: this.ev_sizeInputChange.bind(this) } }] }, { "class": 'as-form-preview-content' }], on: { sizechange: this.ev_sizeChange.bind(this) } }); this.$content = FormPreview_$('.as-form-preview-content', this.$view); this.$widthIp = FormPreview_$('input.as-input-width', this.$view); this.$heightIp = FormPreview_$('input.as-input-height', this.$view); this.refresh(); return this.$view; }; FormPreview.prototype.refresh = function () { var data; var editor = this.getContext(R.LAYOUT_EDITOR); if (editor) data = editor.getData(); if (data) this.setData(data); }; FormPreview.prototype.ev_sizeChange = function (event) { Dom["b" /* default */].updateResizeSystem.bind(Dom["b" /* default */]); var bound = this.$view.getBoundingClientRect(); var contentBound = (this.$content.children.length > 0 ? this.$content.children[0] : this.$content).getBoundingClientRect(); this.$content.addStyle({ width: bound.width + 'px', height: bound.height - (contentBound.top - bound.top) + 'px' }); }; FormPreview.prototype.flushDataToView = function () { if (this.dataFlushed) return; this.dataFlushed = true; //TODO: remove older view if (!this.data) return; this.$content.clearChild(); if (this.data && this.$view) { this.rootComponent = this.build(this.data); this.$content.addChild(this.rootComponent.view); this.rootComponent.onAttach(); this.$widthIp.value = this.rootComponent.getStyle('width', 'px'); this.$heightIp.value = this.rootComponent.getStyle('height', 'px'); } }; FormPreview.prototype.setData = function (data) { this.data = data; this.data.tracking = "OK"; this.dataFlushed = false; if (this.state == "RUNNING") this.flushDataToView(); }; FormPreview.prototype.getCmdNames = function () { return Object.keys(cmds_FormPreviewCmd); }; FormPreview.prototype.getCmdDescriptor = function (name) { var res = Object.assign({ type: 'trigger', desc: 'command: ' + name, icon: 'span.mdi.mdi-apple-keyboard-command' }, FormPreviewCmdDescriptors[name]); return res; }; FormPreview.prototype.getCmdGroupTree = function () { return ['reload']; }; FormPreview.prototype.ev_sizeInputChange = function () { var width = this.$widthIp.value; var height = this.$heightIp.value; if (this.rootComponent) { this.rootComponent.setStyle('width', width); this.rootComponent.setStyle('height', height); } }; /* harmony default export */ var editor_FormPreview = (FormPreview); // CONCATENATED MODULE: ./js/ClipboardManager.js /** * Share bestween tab(same origin) use localStorage and BroardCast */ function ClipboardManager() { EventEmitter["b" /* default */].call(this); this.broadcast = new Network_Broadcast('formeditor_clipboard', randomIdent(20)); var localDataText = localStorage.getItem(this.LOCAL_STORE_KEY); var localData; try { localData = JSON.parse(localDataText || '{}'); } catch (error) { localData.data = {}; } this.data = localData.data || {}; this.broadcast.on('set', this.ev_BroadcastSet.bind(this)); } ; Object.defineProperties(ClipboardManager.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); ClipboardManager.prototype.constructor = ClipboardManager; ClipboardManager.prototype.LOCAL_STORE_KEY = 'AS_Form_ClipboardManager'; ClipboardManager.prototype.ev_BroadcastSet = function (key, value) { this.set(key, value, true); }; ClipboardManager.prototype.set = function (key, value, isPrivate) { this.data[key] = value; console.log(key, value); this.emit('set', key, value, this); if (!isPrivate) { this.broadcast.emit('set', key, value); localStorage.setItem(this.LOCAL_STORE_KEY, JSON.stringify({ data: this.data })); } }; ClipboardManager.prototype.get = function (key) { return this.data[key]; }; /* harmony default export */ var js_ClipboardManager = (new ClipboardManager()); // CONCATENATED MODULE: ./js/cmds/LayoutEditorCmd.js /** * @type {import('../editor/LayoutEditor').default} */ var LayoutEditorCmd = {}; LayoutEditorCmd["delete"] = function () { var editor = this.findFocusAnchorEditor(); if (editor) { editor.cmd_delete(); } }; LayoutEditorCmd.preview = function () { if (!this.rootLayout) return; /** * @type {import('./FormEditor').default} */ var formEditor = this.getContext(R.FORM_EDITOR); if (!formEditor) return; var tabHolder = formEditor.getEditorHolderByEditor(this); var currentTabIdent = tabHolder.ident; var previewTabIdent = currentTabIdent + '_preview'; var previewEditor; var previewTabHolder = formEditor.getEditorHolderByIdent(previewTabIdent); if (previewTabHolder) previewEditor = previewTabHolder.editor; if (!previewEditor) { previewEditor = new editor_FormPreview(); previewEditor.attach(this); var name = tabHolder.name + '(Preview)'; var desc = tabHolder.desc; formEditor.openEditorTab(previewTabIdent, name, desc, previewEditor, { layoutEditor: this }); } else { previewTabHolder.tabframe.requestActive(); } var data = this.getData(); previewEditor.setData(data); }; LayoutEditorCmd.save = function () { var formEditor = this.getContext(R.FORM_EDITOR); if (formEditor) { var tabHolder = formEditor.getEditorHolderByEditor(this); if (tabHolder) core_PluginManager.exec(this, R.PLUGINS.SAVE_CONTENT_DATA, tabHolder); } this.notifySaved(); }; LayoutEditorCmd.saveAs = function () {}; LayoutEditorCmd.importFromJson = function () { var self = this; var fileInput = FCore._({ tag: 'input', style: { position: 'fixed', zIndex: '-100', opacity: '0' }, attr: { type: 'file', accept: 'application/JSON' }, on: { change: function change(event) { if (this.files.length > 0) { var file = this.files[0]; var reader = new FileReader(); reader.onload = function () { try { var data = JSON.parse(reader.result); if (data.app == R.APP) { self.applyData(data); self.commitHistory("import", 'Import form JSON file'); } else { console.error('Invalid data!'); } } catch (error) { console.error(error); } }; reader.readAsText(file); } } } }).addTo(document.body); fileInput.focus(); fileInput.click(); }; LayoutEditorCmd.export2Json = function () { var fileName = 'exported.json'; var formEditor = this.getContext(R.FORM_EDITOR); if (formEditor) { var tabHolder = formEditor.getEditorHolderByEditor(this); fileName = tabHolder.name.replace(/[\\\/\.\?]/g, '_') + '.json'; } var a = document.createElement('a'); this.$view.appendChild(a); var text = JSON.stringify(Object.assign(this.getData(), { app: R.APP, version: R.VERSION }), null, ' '); var fileType = 'json'; var blob = new Blob([text], { type: fileType, encoding: "UTF-8" }); a.download = fileName; a.href = URL.createObjectURL(blob); a.dataset.downloadurl = [fileType, a.download, a.href].join(':'); a.style.display = "none"; a.click(); setTimeout(function () { URL.revokeObjectURL(a.href); a.remove(); }, 1500); }; LayoutEditorCmd.cut = function () { if (this.anchorEditors.length < 1) return; var components = this.anchorEditors.map(function (ed) { return ed.component; }); var componentsData = components.map(function (component) { var data = component.getData(); data.bound = component.view.getBoundingClientRect().toJSON(); return data; }); js_ClipboardManager.set(R.CLIPBOARD.COMPONENTS, componentsData); //code copy and edit from LayoutEditor.prototype.removeComponent var self = this; this.anchorEditors.forEach(function (ed) { ed.component.remove(); self.emit('removecomponent', { type: 'removecomponent', target: this, component: ed.component }, this); }); function visit(node) { if (node.attributes && node.attributes.name) { node.attributes.name = undefined; delete node.attributes.name; } if (node.children) node.children.forEach(visit); } componentsData.forEach(visit); this.componentPropertiesEditor.edit(); this.setActiveComponent(); this.notifyDataChange(); this.notifyUnsaved(); this.componentOtline.updateComponetTree(); this.commitHistory('cut', 'Cut ' + components.map(function (c) { return c.getAttribute('name'); }).join(', ')); }; LayoutEditorCmd.copy = function () { if (this.anchorEditors.length < 1) return; var componentsData = this.anchorEditors.map(function (ed) { var data = ed.component.getData(); data.bound = ed.component.view.getBoundingClientRect().toJSON(); return data; }); function visit(node) { if (node.attributes && node.attributes.name) { node.attributes.name = undefined; delete node.attributes.name; } if (node.children) node.children.forEach(visit); } componentsData.forEach(visit); js_ClipboardManager.set(R.CLIPBOARD.COMPONENTS, componentsData); }; LayoutEditorCmd.paste = function (event) { var posX = 0; var posY = 0; if (event) { var bound = this.rootLayout.view.getBoundingClientRect(); posX = this.mouseClientX - bound.left; posY = this.mouseClientY - bound.top; } var components = js_ClipboardManager.get(R.CLIPBOARD.COMPONENTS); if (components) { this.addNewComponent(components, posX, posY); } }; LayoutEditorCmd.undo = function () { this.undoHistory.undo(); }; LayoutEditorCmd.redo = function () { this.undoHistory.redo(); }; LayoutEditorCmd.selectAll = function () { var now = new Date().getTime(); var comp; if (this.anchorEditors.length == 0) { comp = this.rootLayout.children; } else { comp = (this.findNearestLayoutParent(this.anchorEditors[0].component.parent) || this.rootLayout).children; } this.setActiveComponent.apply(this, comp); }; LayoutEditorCmd.editRootLayout = function () { this.editLayout(this.rootLayout); this.setActiveComponent(this.rootLayout); }; LayoutEditorCmd.zoomIn = function () { this.zoomBy(1 / 0.9); }; LayoutEditorCmd.zoomOut = function () { this.zoomBy(0.9); }; LayoutEditorCmd.resetZoom = function () { this.setSoftScale(1); }; /* harmony default export */ var cmds_LayoutEditorCmd = (LayoutEditorCmd); var LayoutEditorCmdNames = []; var LayoutEditorCmdTree = [[['preview'], ['save', 'saveAs', 'importFromJson', 'export2Json'], ['undo', 'redo'], ['cut', 'copy', 'paste', 'delete']], ['editRootLayout', 'selectAll'], ['zoomOut', 'zoomIn', 'resetZoom']]; var LayoutEditorCmdDescriptors = { editRootLayout: { type: 'trigger', desc: "Edit Root Layout", icon: 'span.mdi.mdi-border-outside' }, preview: { type: 'trigger', icon: 'span.mdi.mdi-play', desc: 'Preview', bindKey: { win: 'Ctrl-K', mac: 'TODO?' } }, cut: { type: 'trigger', icon: 'span.mdi.mdi-content-cut', desc: 'Cut', bindKey: { win: 'Ctrl-X', mac: 'TODO?' } }, copy: { type: 'trigger', icon: 'span.mdi.mdi-content-copy', desc: 'Copy', bindKey: { win: 'Ctrl-C', mac: 'TODO?' } }, paste: { type: 'trigger', icon: 'span.mdi.mdi-content-paste', desc: 'Paste', bindKey: { win: 'Ctrl-V', mac: 'TODO?' } }, "delete": { type: 'trigger', icon: 'span.mdi.mdi-delete-variant', desc: 'Delete', bindKey: { win: 'Delete', mac: 'Delete' } }, save: { type: 'trigger', icon: 'span.mdi.mdi-content-save', desc: 'Save', bindKey: { win: 'Ctrl-S', mac: '//todo' } }, saveAs: { type: 'trigger', icon: 'span.mdi.mdi-content-save-edit', desc: 'Save As' }, importFromJson: { type: 'trigger', icon: 'span.mdi.mdi-cloud-upload[style="color:#1da8f2"]', desc: 'Import From JSON', bindKey: { win: 'Ctrl-Shift-I', mac: 'TODO?' } }, export2Json: { type: 'trigger', icon: 'span.mdi.mdi-cloud-download-outline', desc: 'Export To JSON', bindKey: { win: 'Ctrl-Shift-E', mac: 'TODO?' } }, undo: { type: 'trigger', icon: 'span.mdi.mdi-undo', desc: 'Undo', bindKey: { win: 'Ctrl-Z', mac: 'TODO?' } }, redo: { type: 'trigger', icon: 'span.mdi.mdi-redo', desc: 'Redo', bindKey: { win: 'Ctrl-Y', mac: 'TODO?' } }, selectAll: { type: 'trigger', desc: 'Select All', icon: 'span.mdi.mdi-select-all', bindKey: { win: 'Ctrl-A', mac: 'TODO?' } }, zoomIn: { type: 'trigger', desc: 'Zoom In', icon: 'span.mdi.mdi-magnify-plus-outline' }, zoomOut: { type: 'trigger', desc: 'Zoom Out', icon: 'span.mdi.mdi-magnify-minus-outline' }, resetZoom: { type: 'trigger', desc: 'Reset Zoom ', icon: 'span.mdi.mdi-magnify-close' } }; // CONCATENATED MODULE: ./js/core/FmFragment.js /*** * @constructor * @augments GrandContext * @augments FNode * @augments FModel */ function FmFragment() { AppPattern_GrandContext.call(this); core_FNode.call(this); core_FModel.call(this); this.view = null; this._componentIdList = []; this._props = {}; this.onCreate(); } OOP["a" /* default */].mixClass(FmFragment, AppPattern_GrandContext, core_FNode, core_FModel); FmFragment.prototype.type = 'FRAGMENT'; FmFragment.prototype.tag = 'FmFragment'; FmFragment.prototype.menuIcon = 'span.mdi.mdi-terraform'; /*** * call by Assembler * @param {BaseComponent} view */ FmFragment.prototype.setContentView = function (view) { this.view = view; this.view.fragment = this; this._bindView(); this._bindData(); }; //reassign this property in constructor or onCreate to change default layout, // this data will be use for assembler FmFragment.prototype.contentViewData = { tag: 'LinearLayout' }; FmFragment.prototype.onCreate = noop["a" /* default */]; /** * call by assembly */ FmFragment.prototype.onCreated = noop["a" /* default */]; /*** * * @param {String} id */ FmFragment.prototype.findViewById = function (id) { return this[$ + id]; }; FmFragment.prototype._bindView = function () { while (this._componentIdList.length > 0) { delete this[$ + this._componentIdList.pop()]; } if (!this.view) return; var thisFm = this; /*** * * @param {BaseComponent} root */ function visit(root) { if (root.fragment && root.fragment !== thisFm) return; //hold by other fragment var id = root.getAttribute('id'); if (id) { thisFm['$' + id] = root; thisFm._componentIdList.push(id); root.children.forEach(visit); } } visit(this.view); }; FmFragment.prototype._bindData = function () { var props = {}; this._props = props; function visit(node, isRoot) { if (node.fragment && !isRoot) { Object.defineProperty(props, node.getAttribute('name'), { enumerable: true, configurable: true, set: function set(value) { Object.assign(node.props, value); }, get: function get() { return node.props; } }); } else { node.bindDataToObject(props); for (var i = 0; i < node.children.length; ++i) { visit(node.children[i]); } } } visit(this.view, true); }; Object.defineProperty(FmFragment.prototype, 'domElt', { get: function get() { return this.view && this.view.view; } }); Object.defineProperty(FmFragment.prototype, 'props', { get: function get() { return this._props; }, set: function set(props) { Object.assign(this._props, props); } }); /* harmony default export */ var core_FmFragment = (FmFragment); /*** * * @param {{tag: string ,contentViewData?:Object}} opt * @return {CustomFmFragment} */ function makeFmFragmentClass(opt) { function CustomFmFragment() { FmFragment.apply(this, arguments); } OOP["a" /* default */].mixClass(CustomFmFragment, FmFragment); CustomFmFragment.prototype.tag = opt.tag || 'CustomFmFragment_' + randomIdent(10); if (opt.contentViewData) CustomFmFragment.prototype.contentViewData = opt.contentViewData; return CustomFmFragment; } // CONCATENATED MODULE: ./js/editor/LayoutEditor.js var LayoutEditor_ = FCore._; var LayoutEditor_$ = FCore.$; function LayoutEditor() { core_BaseEditor.call(this); core_Assembler.call(this); this._bindEvent(); this._softScale = 1; var self = this; this.rootLayout = null; this.editingLayout = null; this.snapshots = []; this.snapshotsIndex = 0; this.lastCommitData = { editing: null, data: null, selected: [] }; this._changeCommited = true; this.setContext(R.LAYOUT_EDITOR, this); this.setContext(R.HAS_CMD_EDITOR, this); //setup cmd this.cmdRunner.assign(cmds_LayoutEditorCmd); Object.keys(LayoutEditorCmdDescriptors).forEach(function (cmd) { if (LayoutEditorCmdDescriptors[cmd].bindKey) self.bindKeyToCmd(LayoutEditorCmdDescriptors[cmd].bindKey.win, cmd); }); /** * @type {Array<import('../anchoreditors/AnchorEditor')>} */ this.anchorEditors = []; this.undoHistory = new editor_UndoHistory(); this.undoHistory.on('checkout', function (event) { var editing = event.item.data.editing; var selected = event.item.data.selected; self.applyData(event.item.data.data); self.lastCommitData = event.item.data; if (editing) { self.editLayoutByName(editing); } else { self.editLayout(self.rootLayout); } self.setActiveComponentByName.apply(self, selected); self.updateAnchor(); self.notifyCmdDescriptorsChange(); self.notifyUnsaved(); // self.mComponentOutline.updateComponetTree(); }); this.setContext(R.UNDO_HISTORY, this.undoHistory); // because it had it's ContextManager this.componentOtline = new editor_ComponentOutline(); this.setContext(R.COMPONENT_OUTLINE, this.componentOtline); this.componentPropertiesEditor = new editor_ComponentPropertiesEditor(this).on({ change: function change(event) { self.updateAnchorPosition(); Dom["b" /* default */].updateResizeSystem(); if (event.name && event.name.match(/vAlign|hAlign|top|bottom|left|right/)) { self.updateAnchor(); self.updateEditing(); } this.component.reMeasure(); }, stopchange: function stopchange(event) { var compName = event.object ? event.object.getAttribute('name') : '{' + event.objects.map(function (object) { return object.getAttribute('name'); }).join(', ') + '}'; self.commitHistory('edit', compName + '.' + event.name + ''); self.notifyUnsaved(); } }); } LayoutEditor.prototype.refresh = function () { if (!this.rootLayout) return; var data = this.getData(); var selected = this.getSelected(); var editing = this.editingLayout.getAttribute('name'); this.applyData(data); if (editing) { this.editLayoutByName(editing); } else { this.editLayout(this.rootLayout); } this.setActiveComponentByName.apply(this, selected); this.updateAnchor(); this.notifyCmdDescriptorsChange(); }; Object.defineProperties(LayoutEditor.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); Object.defineProperties(LayoutEditor.prototype, Object.getOwnPropertyDescriptors(core_Assembler.prototype)); LayoutEditor.prototype._bindEvent = function () { for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } }; LayoutEditor.prototype.constructor = LayoutEditor; LayoutEditor.prototype.setSoftScale = function (val) { //todo this._softScale = val; this.$editorSpace.addStyle('transform', 'scale(' + val + ')'); }; LayoutEditor.prototype.getSoftScale = function (val) { return this._softScale; }; LayoutEditor.prototype.zoomBy = function (val) { this.setSoftScale(val * this._softScale); }; LayoutEditor.prototype.onAttached = function () { this.componentPropertiesEditor.attach(this); this.undoHistory.attach(this); this.componentOtline.attach(this); this.CMDTool = this.getContext(R.CMD_TOOL); if (this.CMDTool) this.CMDTool.start(); }; LayoutEditor.prototype.onStart = function () { this.undoHistory.start(); this.componentPropertiesEditor.start(); this.componentOtline.start(); }; LayoutEditor.prototype.onResume = function () { /** * @type {import('./FormEditor').default} */ this.formEditor = this.getContext(R.FORM_EDITOR); this.selfHolder = this.formEditor.getEditorHolderByEditor(this); /** * @type {import('./UndoHistory').default} */ this.undoHistory.resume(); this.componentPropertiesEditor.resume(); this.componentOtline.resume(); /** * @type {import('../fragment/CMDTool'.default)} */ this.CMDTool = this.getContext(R.CMD_TOOL); if (this.CMDTool) { this.CMDTool.bindWithEditor(this); this.CMDTool.start(); } js_ClipboardManager.on('set', this.ev_clipboardSet); this.getView().focus(); // this.statusBarElt = this.getContext(R.STATUS_BAR_ELT); this.$mouseOffsetStatus.addTo(this.statusBarElt.$rightCtn); }; LayoutEditor.prototype.onPause = function () { // release undoHistory this.undoHistory.pause(); this.componentPropertiesEditor.pause(); this.componentOtline.pause(); if (this.CMDTool) { this.CMDTool.pause(); this.CMDTool.bindWithEditor(undefined); } js_ClipboardManager.off('set', this.ev_clipboardSet); this.getView().blur(); this.$mouseOffsetStatus.remove(); // }; LayoutEditor.prototype.onStop = function () { this.undoHistory.stop(); this.componentPropertiesEditor.stop(); this.componentOtline.stop(); }; LayoutEditor.prototype.onDestroy = function () { this.undoHistory.destroy(); this.componentPropertiesEditor.destroy(); this.componentOtline.destroy(); if (this.autoDestroyInt > 0) { clearInterval(this.autoDestroyInt); } }; /** * call whenever component is edited, event will not be fired if disable publicDataChange flag */ LayoutEditor.prototype.notifyDataChange = function () { if (this._publicDataChange) this.emit('change', { type: 'change', target: this }, this); }; LayoutEditor.prototype.getView = function () { if (this.$view) return this.$view; var self = this; this.$view = LayoutEditor_({ "class": ['as-layout-editor'], attr: { tabindex: '1' }, child: [{ "class": 'as-layout-editor-header', child: [{ "class": 'as-layout-editor-cmd-tool-container' }, { "class": 'as-layout-editor-quickpath-container', child: { tag: 'quickpath', on: { change: this.ev_quickpathChange.bind(this) } } }] }, { "class": 'as-layout-editor-property-container' }, { "class": 'as-layout-editor-measure-container', child: [{ "class": 'as-layout-editor-vrule-container', child: 'vruler' }, { "class": 'as-layout-editor-hrule-container', child: 'hruler' }, { "class": 'as-layout-editor-background-container' }, { "class": ["as-layout-editor-space-container", 'absol-bscroller'], child: { "class": 'as-layout-editor-space', child: [{ "class": 'as-layout-editor-layout-container' }, { "class": 'as-layout-editor-forceground-container', child: '.as-layout-editor-forceground', extendEvent: 'contextmenu', on: { contextmenu: this.ev_contextMenuLayout.bind(this) } }] } }] }], on: { keydown: this.ev_cmdKeyDown.bind(this), mousemove: this.ev_mouseMove } }); var self = this; this.$header = LayoutEditor_$('.as-layout-editor-header', this.$view); this.$quickpath = LayoutEditor_$('quickpath', this.$header); this.$attachHook = LayoutEditor_('attachhook').on('error', function () { this.updateSize = self.updateSize.bind(self); Dom["b" /* default */].addToResizeSystem(this); self.updateSize(); }).addTo(this.$view); this.$hruler = LayoutEditor_$('hruler', this.$view); this.$hruler.measureElement(LayoutEditor_$('.as-relative-layout', this.$view)); this.$spaceCtn = LayoutEditor_$('.as-layout-editor-space-container', this.$view).on('scroll', this.ev_layoutCtnScroll.bind(this)); this.$hrulerMouse = LayoutEditor_('.as-hruler-mouse').addTo(this.$hruler); this.$hrulerEditing = LayoutEditor_('.as-hruler-editing').addTo(this.$hruler); this.$vruler = LayoutEditor_$('vruler', this.$view); this.$vruler.measureElement(LayoutEditor_$('.as-relative-layout', this.$view)); this.$vrulerMouse = LayoutEditor_('.as-vruler-mouse').addTo(this.$vruler); this.$vrulerEditing = LayoutEditor_('.as-vruler-editing').addTo(this.$vruler); this.$layoutCtn = LayoutEditor_$('.as-layout-editor-layout-container', this.$view); this.$forceground = LayoutEditor_$('.as-layout-editor-forceground', this.$view).on('mousedown', this.ev_mousedownForceGround.bind(this)); this.$editorSpaceCtn = LayoutEditor_$('.as-layout-editor-space-container', this.$view).on('click', this.ev_clickEditorSpaceCtn); this.autoDestroyInt = setInterval(function () { if (!self.$view.isDescendantOf(document.body)) { self.destroy(); } }, 6900); this.$editorSpace = LayoutEditor_$('.as-layout-editor-space', this.$view); this.$mouseSelectingBox = LayoutEditor_('.as-layout-editor-mouse-selecting-box'); this.$curtainLeft = LayoutEditor_('.as-layout-editor-curtain').on('dblclick', this.ev_dblclickCurtain).addTo(this.$forceground); this.$curtainRight = LayoutEditor_('.as-layout-editor-curtain').on('dblclick', this.ev_dblclickCurtain).addTo(this.$forceground); this.$curtainTop = LayoutEditor_('.as-layout-editor-curtain').on('dblclick', this.ev_dblclickCurtain).addTo(this.$forceground); this.$curtainBottom = LayoutEditor_('.as-layout-editor-curtain').on('dblclick', this.ev_dblclickCurtain).addTo(this.$forceground); this.$cmdToolCtn = LayoutEditor_$('.as-layout-editor-cmd-tool-container', this.$view); this.$measureCtn = LayoutEditor_$('.as-layout-editor-measure-container', this.$view); this.$propertyCtn = LayoutEditor_$('.as-layout-editor-property-container', this.$view); this.$mouseOffsetStatus = LayoutEditor_({ tag: 'button', "class": 'as-status-bar-item', child: ['span.mdi.mdi-cursor-move', 'span', 'span'] }); this.$view.layoutEditor = this; return this.$view; }; LayoutEditor.prototype.getCmdToolCtn = function () { return this.$cmdToolCtn; }; LayoutEditor.prototype.getPropertyCtn = function () { return this.$propertyCtn; }; LayoutEditor.prototype.ev_quickpathChange = function (event) { var layout = event.item.layout; var thisEditor = this; setTimeout(function () { thisEditor.editLayout(layout); }, 10); }; /** * @param {MouseEvent} event */ LayoutEditor.prototype.ev_mouseMove = function (event) { var vruleBound = this.$vruler.getBoundingClientRect(); var hruleBound = this.$hruler.getBoundingClientRect(); this.$vrulerMouse.addStyle('top', event.clientY - vruleBound.top - 1 - 1 + 'px'); this.$hrulerMouse.addStyle('left', event.clientX - hruleBound.left - 1 - 1 + 'px'); this.mouseClientX = event.clientX; this.mouseClientY = event.clientY; if (this.rootLayout) { var rootBound = this.rootLayout.view.getBoundingClientRect(); this.mouseOffsetX = Math.round(event.clientX - rootBound.left); this.mouseOffsetY = Math.round(event.clientY - rootBound.top); this.$mouseOffsetStatus.children[1].innerHTML = this.mouseOffsetX + ',' + this.mouseOffsetY; } //update mouse position on }; LayoutEditor.prototype.ev_clickEditorSpaceCtn = function (event) { if (event.target == this.$editorSpaceCtn) { this.setActiveComponent(); } }; LayoutEditor.prototype.ev_mousedownForceGround = function (event) { if (!EventEmitter["b" /* default */].isMouseLeft(event)) return; if (event.target != this.$forceground) return; var hitComponent = this.findComponentsByMousePostion(event.clientX, event.clientY); if (hitComponent) { if (event.shiftKey) this.toggleActiveComponent(hitComponent);else this.setActiveComponent(hitComponent); var anchorEditor = this.anchorEditors[this.anchorEditors.length - 1]; //cheating var repeatedEvent = EventEmitter["b" /* default */].copyEvent(event, { target: LayoutEditor_$('.as-resize-box-body', anchorEditor.$resizeBox), preventDefault: event.preventDefault.bind(event) }); anchorEditor.$resizeBox.eventHandler.mouseDownBody(repeatedEvent); this.$view.focus(); // layouteditor may be not focus before, prevent default effect make it not focus // prevent auto toggle with click event anchorEditor.preventClick = true; anchorEditor.once('click', function () { setTimeout(function () { anchorEditor.preventClick = false; }, 1); }); anchorEditor.$resizeBox.on('endmove', function () { anchorEditor.preventClick = false; }); } else { LayoutEditor_$(document.body).on('mouseup', this.ev_mouseFinishForceGround).on('mouseleave', this.ev_mouseFinishForceGround).on('mousemove', this.ev_mouseMoveForceGround); this.$editorSpaceCtn.off('click', this.ev_clickEditorSpaceCtn); this.$mouseSelectingBox.addTo(this.$forceground); var forcegroundBound = this.$forceground.getBoundingClientRect(); this._forgroundMovingData = { left: event.clientX - forcegroundBound.left, top: event.clientY - forcegroundBound.top, width: 0, height: 0, event0: event }; this.$mouseSelectingBox.addStyle({ left: this._forgroundMovingData.left + 'px', top: this._forgroundMovingData.top + 'px', width: '0', height: '0' }); } }; LayoutEditor.prototype.ev_mouseMoveForceGround = function (event) { var forcegroundBound = this.$forceground.getBoundingClientRect(); this._forgroundMovingData.width = event.clientX - forcegroundBound.left - this._forgroundMovingData.left; this._forgroundMovingData.height = event.clientY - forcegroundBound.top - this._forgroundMovingData.top; if (this._forgroundMovingData.width < 0) { this.$mouseSelectingBox.addStyle({ left: this._forgroundMovingData.left + this._forgroundMovingData.width + 'px', width: -this._forgroundMovingData.width + 'px' }); } else { this.$mouseSelectingBox.addStyle({ left: this._forgroundMovingData.left + 'px', width: this._forgroundMovingData.width + 'px' }); } if (this._forgroundMovingData.height < 0) { this.$mouseSelectingBox.addStyle({ top: this._forgroundMovingData.top + this._forgroundMovingData.height + 'px', height: -this._forgroundMovingData.height + 'px' }); } else { this.$mouseSelectingBox.addStyle({ top: this._forgroundMovingData.top + 'px', height: this._forgroundMovingData.height + 'px' }); } }; LayoutEditor.prototype.ev_mouseFinishForceGround = function (event) { LayoutEditor_$(document.body).off('mouseup', this.ev_mouseFinishForceGround).off('mouseleave', this.ev_mouseFinishForceGround).off('mousemove', this.ev_mouseMoveForceGround); setTimeout(this.$editorSpaceCtn.on.bind(this.$editorSpaceCtn, 'click', this.ev_clickEditorSpaceCtn), 10); this.$mouseSelectingBox.remove(); //find all rectangle var selectedComp = []; var event0 = this._forgroundMovingData.event0; var left = Math.min(event0.clientX, event.clientX); var right = Math.max(event0.clientX, event.clientX); var top = Math.min(event0.clientY, event.clientY); var bottom = Math.max(event0.clientY, event.clientY); var selectRect = new Math_Rectangle(left, top, right - left, bottom - top); var children = this.editingLayout.children; if (this.anchorEditors.length > 0) { children = this.editingLayout.children; } var comp, compRect; for (var i = 0; i < children.length; ++i) { comp = children[i]; compRect = Math_Rectangle.fromClientRect(comp.view.getBoundingClientRect()); if (compRect.isCollapse(selectRect)) selectedComp.push(comp); } var self = this; if (event.shiftKey) { this.toggleActiveComponent.apply(this, selectedComp.filter(function (comp) { return !self.findAnchorEditorByComponent(comp); })); } else { this.setActiveComponent.apply(this, selectedComp); } }; LayoutEditor.prototype.ev_layoutCtnScroll = function () { this.updateRuler(); }; LayoutEditor.prototype.ev_contextMenuLayout = function (event) { var self = this; if (event.target == this.$forceground) { event.showContextMenu({ // play-box-outline items: [{ text: 'Preview', icon: 'span.mdi.mdi-pencil-box-multiple-outline', cmd: 'preview' }], extendStyle: { fontSize: '12px' } }, function (menuEvent) { var cmd = menuEvent.menuItem.cmd; self.execCmd(cmd); }); } }; LayoutEditor.prototype.ev_clipboardSet = function () { this.notifyCmdDescriptorsChange(); }; LayoutEditor.prototype.ev_dblclickCurtain = function (event) { var parentLayout = this.findNearestLayoutParent(this.editingLayout.parent); if (parentLayout) this.editLayout(parentLayout); }; LayoutEditor.prototype.updateEditing = function () { var hruleBound = this.$hruler.getBoundingClientRect(); var vruleBound = this.$vruler.getBoundingClientRect(); var editingBound = this.editingLayout.view.getBoundingClientRect(); this.$hrulerEditing.addStyle({ left: editingBound.left - hruleBound.left - 1 + 'px', width: editingBound.width + 'px' }); this.$vrulerEditing.addStyle({ top: editingBound.top - vruleBound.top - 1 + 'px', height: editingBound.height + 'px' }); var foregroundBound = this.$forceground.getBoundingClientRect(); if (this.editingLayout == this.rootLayout) { this.$curtainLeft.addStyle({ visibility: 'hidden' }); this.$curtainBottom.addStyle({ visibility: 'hidden' }); this.$curtainRight.addStyle({ visibility: 'hidden' }); this.$curtainTop.addStyle({ visibility: 'hidden' }); } else { this.$curtainLeft.addStyle({ left: '0', top: '0', width: editingBound.left - foregroundBound.left + 'px', height: editingBound.bottom - foregroundBound.top + 'px' }).removeStyle('visibility'); this.$curtainBottom.addStyle({ left: '0', top: editingBound.bottom - foregroundBound.top + 'px', width: editingBound.right - foregroundBound.left + 'px', height: foregroundBound.bottom - editingBound.bottom + 'px' }).removeStyle('visibility'); this.$curtainRight.addStyle({ left: editingBound.right - foregroundBound.left + 'px', top: editingBound.top - foregroundBound.top + 'px', width: foregroundBound.right - editingBound.right + 'px', height: foregroundBound.bottom - editingBound.top + 'px' }).removeStyle('visibility'); this.$curtainTop.addStyle({ left: editingBound.left - foregroundBound.left + 'px', top: '0', width: foregroundBound.right - editingBound.left + 'px', height: editingBound.top - foregroundBound.top + 'px' }).removeStyle('visibility'); } }; LayoutEditor.prototype.updateRuler = function () { this.$vruler.update(); this.$hruler.update(); var hruleBound = this.$hruler.getBoundingClientRect(); var vruleBound = this.$vruler.getBoundingClientRect(); var editingBound = this.editingLayout.view.getBoundingClientRect(); this.$hrulerEditing.addStyle({ left: editingBound.left - hruleBound.left - 1 + 'px', width: editingBound.width + 'px' }); this.$vrulerEditing.addStyle({ top: editingBound.top - vruleBound.top - 1 + 'px', height: editingBound.height + 'px' }); }; LayoutEditor.prototype.updateAnchor = function () { for (var i = 0; i < this.anchorEditors.length; ++i) { this.anchorEditors[i].update(); } }; LayoutEditor.prototype.updateAnchorPosition = function () { for (var i = 0; i < this.anchorEditors.length; ++i) { this.anchorEditors[i].updatePosition(); } }; LayoutEditor.prototype.findComponentsByName = function (name, from) { from = from || this.rootLayout; if (!from) return; var res = undefined; if (from.getAttribute('name') == name) { return [from]; } var self = this; if (from.children) res = from.children.reduce(function (ac, child) { var found = self.findComponentsByName(name, child); if (found) return ac.concat(found); return ac; }, []); if (res.length > 0) return res; return undefined; }; LayoutEditor.prototype.findComponentsByMousePostion = function (clientX, clientY) { var children = this.editingLayout.children; var child, childBound; for (var i = children.length - 1; i >= 0; --i) { child = children[i]; childBound = child.view.getBoundingClientRect(); if (clientX >= childBound.left && clientX <= childBound.right && clientY >= childBound.top && clientY <= childBound.bottom) return child; } return undefined; }; LayoutEditor.prototype.updateSize = function () { //todo // var bound = this.$view.getBoundingClientRect(); var headerBound = this.$header.getBoundingClientRect(); var propertyCtnBound = this.$propertyCtn.getBoundingClientRect(); this.$measureCtn.addStyle({ top: headerBound.height + 'px', right: propertyCtnBound.width + 'px' }); this.$propertyCtn.addStyle({ top: headerBound.height + 'px' }); }; LayoutEditor.prototype._newAnchorEditor = function (component) { var self = this; var AnchorEditor = component.parent ? component.parent.getAnchorEditorConstructor() : anchoreditors_RelativeAnchorEditor; //craete new, repeat event to other active anchor editor var editor = new AnchorEditor(this).on('click', function (event) { if (editor.preventClick) return; if (this.component) if (event.shiftKey) { self.toggleActiveComponent(this.component); } else self.setActiveComponent(this.component); }) //todo: implement in AnchorEditor .on('beginmove', function (event) { var repeatEvent = event.repeatEvent; var other; for (var i = 0; i < self.anchorEditors.length; ++i) { other = self.anchorEditors[i]; if (other != this) { other.ev_beginMove(false, repeatEvent); } } }).on('moving', function (event) { var repeatEvent = event.repeatEvent; var other; for (var i = 0; i < self.anchorEditors.length; ++i) { other = self.anchorEditors[i]; if (other != this) { other.ev_moving(false, repeatEvent); } } self.notifyDataChange(); self.componentPropertiesEditor.styleEditor.updatePropertyRecursive('width'); self.componentPropertiesEditor.styleEditor.updatePropertyRecursive('height'); self.componentPropertiesEditor.allPropertyEditor.updatePropertyRecursive('width'); self.componentPropertiesEditor.allPropertyEditor.updatePropertyRecursive('height'); self.updateEditing(); }).on('endmove', function (event) { var originEvent = event.originEvent; var other; for (var i = 0; i < self.anchorEditors.length; ++i) { other = self.anchorEditors[i]; if (other != this) { other.ev_endMove(false, originEvent); } } self.commitHistory('move', 'Move/Resize component'); self.notifyUnsaved(); }).on('focus', function (event) { self.componentPropertiesEditor.edit.apply(self.componentPropertiesEditor, self.getActivatedComponents()); self.emit('focuscomponent', { type: 'focuscomponent', component: this.component, originEvent: event, target: self }, self); }).on('change', function (event) { self.notifyDataChange(); }); editor.edit(component); return editor; }; /** * @argument {Array<import('../core/BaseComponent').default>} */ LayoutEditor.prototype.setActiveComponent = function () { var components = Array.prototype.slice.call(arguments); var oldEditors = this.anchorEditors.slice(); var oldComponents = this.anchorEditors.map(function (editor) { return editor.component; }); //todo while (this.anchorEditors.length > 0) { var editor = this.anchorEditors.pop(); } var oldIndex; var component; var editor; while (this.anchorEditors.length < components.length) { component = components[this.anchorEditors.length]; oldIndex = oldComponents.indexOf(component); if (oldIndex >= 0) { editor = oldEditors[oldIndex]; oldEditors[oldIndex] = null; // for removing } else { editor = this._newAnchorEditor(components[this.anchorEditors.length]); } this.anchorEditors.push(editor); } oldEditors.forEach(function (editor) { editor && editor.edit(); }); if (this.anchorEditors.length > 0) this.anchorEditors[this.anchorEditors.length - 1].focus(); this.componentOtline.updateComponentStatus(); this.lastCommitData.selected = this.getSelected(); this.lastCommitData.editing = this.editingLayout.getAttribute('name'); this.emit('selectedcomponentchange', { target: this, type: 'selectedcomponentchange' }, this); this.notifyCmdDescriptorsChange(); }; LayoutEditor.prototype.setActiveComponentByName = function () { var components = Array(arguments.length).fill(null); var dict = Array.prototype.reduce.call(arguments, function (ac, cr, i) { ac[cr] = i; return ac; }, {}); function visit(node) { var name = node.getAttribute('name'); if (typeof dict[name] == 'number') { components[dict[name]] = node; } node.children.forEach(visit); } visit(this.rootLayout); this.setActiveComponent.apply(this, components); }; /** * @argument {Array<import('../core/BaseComponent').default>} */ LayoutEditor.prototype.toggleActiveComponent = function () { //todo var editor; var focusEditor = undefined; for (var i = 0; i < arguments.length; ++i) { editor = this.findAnchorEditorByComponent(arguments[i]); if (editor) { editor.edit(undefined); } else { editor = this._newAnchorEditor(arguments[i]); this.anchorEditors.push(editor); focusEditor = editor; } } this.anchorEditors = this.anchorEditors.filter(function (e) { return !!e.component; }); if (this.anchorEditors.length > 0) { focusEditor = this.anchorEditors[this.anchorEditors.length - 1]; } if (focusEditor) focusEditor.focus(); this.componentOtline.updateComponentStatus(); this.lastCommitData.selected = this.getSelected(); this.lastCommitData.editing = this.editingLayout.getAttribute('name'); this.emit('selectedcomponentchange', { target: this, type: 'selectedcomponentchange' }, this); this.notifyCmdDescriptorsChange(); }; LayoutEditor.prototype.findAnchorEditorByComponent = function (comp) { for (var i = 0; i < this.anchorEditors.length; ++i) { if (this.anchorEditors[i].component == comp) return this.anchorEditors[i]; } return undefined; }; LayoutEditor.prototype.findFocusAnchorEditor = function () { // faster for (var i = this.anchorEditors.length - 1; i >= 0; --i) { if (this.anchorEditors[i].isFocus) return this.anchorEditors[i]; } return null; }; LayoutEditor.prototype.getActivatedComponents = function () { return this.anchorEditors.map(function (e) { return e.component; }).filter(function (e) { return !!e; }); }; LayoutEditor.prototype.applyData = function (data) { this.rootFragment = new core_FmFragment(); this.rootLayout = this.buildComponent(data, this.rootFragment); this.rootFragment.setContentView(this.rootLayout); this.$layoutCtn.clearChild().addChild(this.rootLayout.view); this.rootLayout.onAttached(this); this.$vruler.measureElement(this.rootLayout.view); this.$hruler.measureElement(this.rootLayout.view); this.editLayout(this.rootLayout); this.componentOtline.updateComponetTree(); this.emit('change', { type: 'change', target: this, data: data }, this); }; LayoutEditor.prototype.setData = function (data) { this.applyData(data); this.commitHistory('set-data', "Set data"); }; LayoutEditor.prototype.autoExpandRootLayout = function () { if (this.rootLayout) { var minSize = this.rootLayout.measureMinSize(); var isChange = false; if (minSize.width > this.rootLayout.style.width) { this.rootLayout.setStyle('width', minSize.width); isChange = true; } if (minSize.height > this.rootLayout.style.height) { this.rootLayout.setStyle('height', minSize.height); isChange = true; } if (isChange) { this.emit('layoutexpand', { type: 'layoutexpand', target: this, layout: this.rootLayout }, this); this.notifyDataChange(); } } }; LayoutEditor.prototype.editLayout = function (layout) { if (!layout) throw new Error("Layout must be not null"); // console.log(layout) var lastTag = this.editingLayout && this.editingLayout.tag; var currentTag = layout && layout.tag; this.editingLayout = layout; this.lastCommitData.editing = layout.getAttribute('name'); this.$quickpath.path = this.getQuickpathFrom(layout); this.setActiveComponent(); this.updateEditing(); if (lastTag != currentTag) { this.notifyCmdChange(); } }; LayoutEditor.prototype.editLayoutByName = function (name) { var comps = this.findComponentsByName(name); if (comps && comps.length > 0) this.editLayout(comps[0]); }; LayoutEditor.prototype.getQuickpathFrom = function (layout) { var thisEditor = this; while (layout && !layout.isLayout) { layout = layout.parent; } var res = []; if (layout) { var childLayoutItems = layout.children.filter(function (comp) { return comp.isLayout; }).map(function (comp) { return { name: comp.getAttribute('name'), icon: comp.menuIcon, layout: comp }; }); if (childLayoutItems.length > 0) { res.push({ name: '...', items: childLayoutItems }); } } var node; while (layout) { node = { name: layout.getAttribute('name'), icon: layout.menuIcon, layout: layout }; if (layout.parent && layout.parent.children) { node.items = layout.parent.children.filter(function (comp) { return comp.isLayout; }).map(function (comp) { return { name: comp.getAttribute('name'), icon: comp.menuIcon, layout: comp, extendStyle: layout == comp ? { color: "#009" } : {} }; }); } else node.items = [{ name: layout.getAttribute('name'), icon: layout.menuIcon, layout: layout }]; res.unshift(node); layout = layout.parent; } return res; }; LayoutEditor.prototype.getData = function () { if (this.rootLayout) return this.rootLayout.getData(); return null; }; LayoutEditor.prototype.getComponentTool = function () { return this.getContext(R.COMPONENT_PICKER); }; LayoutEditor.prototype.getOutlineTool = function () { return this.getContext(R.COMPONENT_OUTLINE); }; LayoutEditor.prototype.getCmdNames = function () { return Object.keys(cmds_LayoutEditorCmd); }; LayoutEditor.prototype.getCmdDescriptor = function (name) { var descriptor = LayoutEditorCmdDescriptors[name]; if (this.editingLayout) { var anchorEditorConstructor = this.editingLayout.getAnchorEditorConstructor(); if (anchorEditorConstructor.prototype.getCmdDescriptor) { descriptor = descriptor || anchorEditorConstructor.prototype.getCmdDescriptor.call(null, name); } } var res = Object.assign({ type: 'trigger', desc: 'command: ' + name, icon: 'span.mdi.mdi-apple-keyboard-command' }, descriptor); if ((name.startsWith('align') || name.startsWith('equalise')) && this.anchorEditors.length < 2) { res.disabled = true; } else if (name.startsWith('distribute') && this.anchorEditors.length < 3) { res.disabled = true; } else if (name.match(/^(delete|copy|cut|horizontalAlign|verticalAlign)/) && this.anchorEditors.length < 1) { res.disabled = true; } else if (name == 'paste') { res.disabled = !js_ClipboardManager.get(R.CLIPBOARD.COMPONENTS); } else if (name == 'undo') { res.disabled = this.undoHistory.lastItemIndex <= 0; } else if (name == 'redo') { res.disabled = this.undoHistory.lastItemIndex >= this.undoHistory.items.length - 1; } return res; }; LayoutEditor.prototype.getCmdGroupTree = function () { var tree = [LayoutEditorCmdTree]; if (this.editingLayout) { var anchorEditorConstructor = this.editingLayout.getAnchorEditorConstructor(); if (anchorEditorConstructor.prototype.getCmdGroupTree) { tree.push(anchorEditorConstructor.prototype.getCmdGroupTree.call(null)); } } return tree; }; LayoutEditor.prototype.loadEditableView = function () { this.applyData(this.mUndoHistory.items[this.mUndoHistory.items.length].data); }; LayoutEditor.prototype.findNearestLayoutParent = function (comp) { while (comp) { if (comp.addChildByPosition) { break; } comp = comp.parent; } return comp; }; /** * @returns {import('../core/BaseComponent') } */ LayoutEditor.prototype.addNewComponent = function (constructor, posX, posY) { var self = this; var layout = this.editingLayout; var rootBound = this.rootLayout.view.getBoundingClientRect(); var layoutBound = layout.view.getBoundingClientRect(); var layoutPosX = posX - (layoutBound.left - rootBound.left); var layoutPosY = posY - (layoutBound.top - rootBound.top); var addedComponents = []; if (!(constructor instanceof Array)) { constructor = [constructor]; } addedComponents = constructor.map(function (cst) { var comp; if (typeof cst == 'function') { if (cst.prototype.type === core_FmFragment.prototype.type) { var frg = new cst(); comp = self.buildComponent(cst.prototype.contentViewData, frg); frg.setContentView(comp); self.rootFragment.addChild(frg); } else if (cst.prototype.type === core_BaseComponent.prototype.type) { comp = new cst(); } } else { comp = self.buildComponent(cst, self.rootFragment); } layout.addChildByPosition(comp, layoutPosX, layoutPosY); comp.reMeasure(); return comp; }); this.emit('addcomponent', { type: 'addcomponent', components: addedComponents, target: this }, this); this.setActiveComponent.apply(this, addedComponents); this.notifyDataChange(); setTimeout(this.updateAnchorPosition.bind(this), 1); this.componentOtline.updateComponetTree(); this.commitHistory('add', "Add " + addedComponents.map(function (comp) { return comp.getAttribute('name'); }).join(', ')); this.notifyUnsaved(); }; LayoutEditor.prototype.buildComponent = function () { var comp = core_Assembler.prototype.buildComponent.apply(this, arguments); var thisEditor = this; var originFunction = comp.getStyle; comp.getStyle = function () { var res = originFunction.apply(this, arguments); if (arguments[1] == 'px' && comp.style[arguments[0]] != res) { res /= thisEditor._softScale; } return res; }; return comp; }; LayoutEditor.prototype.clearRootLayout = function () { this._activatedComponent = undefined; this.rootLayout.clearChild(); this.updateAnchor(); this.emit('clearallcomponent', { target: this }, this); this.notifyDataChange(); this.componentOtline.updateComponetTree(); this.commitHistory('remove', 'Remove all components'); this.notifyUnsaved(); }; LayoutEditor.prototype.removeComponent = function () { var removedComponents = Array.prototype.slice.call(arguments); this.toggleActiveComponent.apply(this, removedComponents); removedComponents.forEach(function (comp) { comp.remove(); }); //edit nothing this.emit('removecomponent', { type: 'removecomponent', target: this, components: removedComponents }, this); this.componentPropertiesEditor.edit(); this.notifyDataChange(); if (removedComponents.length > 0) { this.componentOtline.updateComponetTree(); this.commitHistory('remove', 'Remove ' + removedComponents.map(function (c) { return c.getAttribute('name'); }).join(', ')); this.notifyUnsaved(); } }; LayoutEditor.prototype.moveUpComponent = function (comp) { var parent = comp.parent; if (!parent) return; var prevChild = parent.findChildBefore(comp); if (!prevChild) return; comp.remove(); parent.addChildBefore(comp, prevChild); this.emit('moveupcomponent', { type: 'moveupcomponent', target: this, component: comp }, this); this.notifyDataChange(); this.componentOtline.updateComponetTree(); this.commitHistory('move-order', 'Move ' + comp.getAttribute('name') + ' up'); this.notifyUnsaved(); this.updateAnchorPosition(); }; LayoutEditor.prototype.moveDownComponent = function (comp) { var parent = comp.parent; if (!parent) return; var nextChild = parent.findChildAfter(comp); if (!nextChild) return; nextChild.remove(); parent.addChildBefore(nextChild, comp); this.emit('movedowncomponent', { type: 'movedowncomponent', target: this, component: comp }, this); this.notifyDataChange(); this.componentOtline.updateComponetTree(); this.commitHistory('move-order', 'Move ' + comp.getAttribute('name') + ' down'); this.notifyUnsaved(); this.updateAnchorPosition(); }; LayoutEditor.prototype.moveToBottomComponent = function (comp) { var parent = comp.parent; if (!parent) return; var lastChild = parent.children[parent.children - 1]; if (lastChild == comp) return; comp.remove(); parent.addChild(comp); this.emit('movetobottomcomponent', { type: 'movetobottomcomponent', target: this, component: comp }, this); this.notifyDataChange(); this.componentOtline.updateComponetTree(); this.commitHistory('move-order', 'Move ' + comp.getAttribute('name') + ' to bottom'); this.notifyUnsaved(); this.updateAnchorPosition(); }; LayoutEditor.prototype.moveToTopComponent = function (comp) { var parent = comp.parent; if (!parent) return; var firstChild = parent.children[0]; if (firstChild == comp) return; comp.remove(); parent.addChildBefore(comp, firstChild); this.emit('movetotopcomponent', { type: 'movetotopcomponent', target: this, component: comp }, this); this.notifyDataChange(); this.componentOtline.updateComponetTree(); this.commitHistory('move-order', 'Move ' + comp.getAttribute('name') + ' to top'); this.notifyUnsaved(); }; LayoutEditor.prototype.notifyUnsaved = function () { this.selfHolder.tabframe.modified = true; }; LayoutEditor.prototype.notifySaved = function () { this.selfHolder.tabframe.modified = false; }; LayoutEditor.prototype.getSelected = function () { return this.anchorEditors.map(function (aed) { return aed.component.getAttribute('name'); }); }; LayoutEditor.prototype.commitHistory = function (type, description) { if (!this.undoHistory) return; this.lastCommitData = { editing: this.editingLayout && this.editingLayout.getAttribute('name'), selected: this.getSelected(), data: this.getData() }; this.undoHistory.commit(type, this.lastCommitData, description, new Date()); }; LayoutEditor.prototype.execCmd = function () { try { return core_BaseEditor.prototype.execCmd.apply(this, arguments); } catch (error) {} try { var focusEditor = this.findFocusAnchorEditor(); if (focusEditor) { return focusEditor.execCmd.apply(focusEditor, arguments); } } catch (error1) { //other console.log(error1); } }; /* harmony default export */ var editor_LayoutEditor = (LayoutEditor); // EXTERNAL MODULE: ./css/formeditor.css var formeditor = __webpack_require__(264); // EXTERNAL MODULE: ./css/componentpicker.css var componentpicker = __webpack_require__(266); // CONCATENATED MODULE: ./js/editor/ComponentPicker.js var ComponentPicker_ = FCore._; var ComponentPicker_$ = FCore.$; function ComponentPicker() { AppPattern_Context.call(this); EventEmitter["b" /* default */].call(this); this.$view = null; /** * @type {import('./LayoutEditor').default} */ this.layoutEditor = null; } Object.defineProperties(ComponentPicker.prototype, Object.getOwnPropertyDescriptors(AppPattern_Context.prototype)); Object.defineProperties(ComponentPicker.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); ComponentPicker.prototype.constructor = ComponentPicker; ComponentPicker.prototype.bindWithEditor = function (editor) { this.layoutEditor = editor; }; ComponentPicker.prototype.getView = function () { if (this.$view) return this.$view; if (this.$view) return this.$compExpTree; var self = this; function toggleGroup() { this.status = { open: 'close', close: 'open' }[this.status]; } this.$view = ComponentPicker_({ "class": 'as-compopnent-picker', child: [{ tag: 'exptree', props: { name: 'all', status: 'open' }, on: { press: toggleGroup }, child: [{ tag: 'exptree', props: { name: 'layouts', status: 'close' }, on: { press: toggleGroup }, child: [{ tag: 'exptree', props: { name: "RelativeLayout", icon: layouts_RelativeLayout.prototype.menuIcon, componentConstructor: layouts_RelativeLayout } }, { tag: 'exptree', props: { name: "LinearLayout", icon: layouts_LinearLayout.prototype.menuIcon, componentConstructor: layouts_LinearLayout } }, { tag: 'exptree', props: { name: "ChainLayout", icon: layouts_ChainLayout.prototype.menuIcon, componentConstructor: layouts_ChainLayout } }] }, { tag: 'exptree', props: { name: 'inputs', status: 'close' }, on: { press: toggleGroup }, child: [{ tag: 'exptree', props: { name: "DateInput", icon: components_DateInput.prototype.menuIcon, componentConstructor: components_DateInput } }, { tag: 'exptree', props: { name: "TextInput", icon: components_TextInput.prototype.menuIcon, componentConstructor: components_TextInput } }, { tag: 'exptree', props: { name: "TextArea", icon: components_TextArea.prototype.menuIcon, componentConstructor: components_TextArea } }, { tag: 'exptree', props: { name: "NumberInput", icon: components_NumberInput.prototype.menuIcon, componentConstructor: components_NumberInput } }, { tag: 'exptree', props: { name: "ComboBox", icon: components_ComboBox.prototype.menuIcon, componentConstructor: components_ComboBox } }, { tag: 'exptree', props: { name: components_MultiselectCombobox.prototype.tag, icon: components_MultiselectCombobox.prototype.menuIcon, componentConstructor: components_MultiselectCombobox } }, { tag: 'exptree', props: { name: "Radio", icon: components_Radio.prototype.menuIcon, componentConstructor: components_Radio } }, { tag: 'exptree', props: { name: "CheckBox", icon: Checkbox.prototype.menuIcon, componentConstructor: Checkbox } }, { tag: 'exptree', props: { name: components_TrackBar.prototype.tag, icon: components_TrackBar.prototype.menuIcon, componentConstructor: components_TrackBar } }] }, { tag: 'exptree', props: { name: "static", status: 'close' }, on: { press: toggleGroup }, child: [{ tag: 'exptree', props: { name: "Label", icon: components_Label.prototype.menuIcon, componentConstructor: components_Label } }, { tag: 'exptree', props: { name: "Text", icon: components_Text.prototype.menuIcon, componentConstructor: components_Text } }, { tag: 'exptree', props: { name: "Image", icon: components_Image.prototype.menuIcon, componentConstructor: components_Image } }, { tag: 'exptree', props: { name: "Table", icon: components_Table.prototype.menuIcon, componentConstructor: components_Table } }] }, { tag: 'exptree', props: { name: "trigger", status: 'close' }, on: { press: toggleGroup }, child: [{ tag: 'exptree', props: { name: "Button", icon: components_Button.prototype.menuIcon, componentConstructor: components_Button } }] }, { tag: 'exptree', props: { name: 'shapes', status: 'close' }, on: { press: toggleGroup }, child: [{ tag: 'exptree', props: { name: "Ellipse", icon: shapes_Ellipse.prototype.menuIcon, componentConstructor: shapes_Ellipse } }, { tag: 'exptree', props: { name: "Rectangle", icon: shapes_Rectangle.prototype.menuIcon, componentConstructor: shapes_Rectangle } }] }] }] }); this.$all = ComponentPicker_$('exptree', this.$view); var context = { self: this, toggleGroup: toggleGroup, $view: this.$view }; core_PluginManager.exec(this, R.PLUGINS.COMPONENT_PICKER_VIEW, context); //todo: find and call js_Draggable(this.$all).on('begindrag', self.ev_constructorBeginDrag.bind(self)).on('enddrag', self.ev_constructorEndDrag.bind(self)).on('drag', self.ev_constructorDrag.bind(self)); return this.$view; }; ComponentPicker.prototype._findComponentConstructor = function (elt) { while (elt) { if (elt.componentConstructor) return elt.componentConstructor; elt = elt.parentElement; } return null; }; ComponentPicker.prototype.ev_constructorBeginDrag = function (event) { var constructor = this._findComponentConstructor(event.target); this._currentComponentConstructor = constructor; this.$modal = this.$modal || ComponentPicker_('.as-compopnent-picker-forceground'); this.$higne = this.$higne || ComponentPicker_('.as-compopnent-picker-higne').addTo(this.$modal); this.$addBoxCtn = this.$addBoxCtn || ComponentPicker_('.as-compopnent-picker-add-box-container').addTo(this.$higne); this.$addBox = this.$addBox || ComponentPicker_({ "class": 'as-compopnent-picker-add-box', child: { "class": 'as-compopnent-picker-add-box-plus', child: 'span.mdi.mdi-plus' } }).addTo(this.$addBoxCtn); if (this.$addBoxIcon) this.$addBoxIcon.remove(); this.$addBoxIcon = ComponentPicker_(constructor.prototype && constructor.prototype.menuIcon || 'span.mdi.mdi-select-place').addTo(this.$addBox); this.$modal.addTo(document.body); if (this.layoutEditor.rootLayout) { this._dragRect = this.layoutEditor.rootLayout.view.getBoundingClientRect(); } else { this._dragRect = undefined; } }; ComponentPicker.prototype.ev_constructorEndDrag = function (event) { if (!this.$modal) return; //quick fix, must fix in Draggable this.$modal.remove(); var constructor = this._currentComponentConstructor; var x = event.clientX; var y = event.clientY; var rect = this._dragRect; if (rect && rect.top <= y && rect.bottom >= y && rect.left <= x && rect.right >= x) { this.layoutEditor.addNewComponent(constructor, x - rect.left, y - rect.top); } }; ComponentPicker.prototype.ev_constructorDrag = function (event) { this.$addBoxCtn.addStyle({ left: event.clientX + 'px', top: event.clientY + 'px' }); var x = event.clientX; var y = event.clientY; var rect = this._dragRect; if (rect && rect.top <= y && rect.bottom >= y && rect.left <= x && rect.right >= x) { this.$addBox.addClass('as-can-drop'); } else { this.$addBox.removeClass('as-can-drop'); } }; /* harmony default export */ var editor_ComponentPicker = (ComponentPicker); // EXTERNAL MODULE: ./css/projectexplorer.css var projectexplorer = __webpack_require__(268); // CONCATENATED MODULE: ./js/fragment/ProjectExplorer.js var ProjectExplorer_ = FCore._; var ProjectExplorer_$ = FCore.$; function ProjectExplorer() { core_BaseEditor.call(this); this.pluginContext = { self: this, _: ProjectExplorer_, $: ProjectExplorer_$ }; this.data = { projectName: null }; } Object.defineProperties(ProjectExplorer.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); Object.defineProperties(ProjectExplorer.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); EventEmitter["b" /* default */].prototype.constructor = ProjectExplorer; ProjectExplorer.prototype.onStart = function () { core_PluginManager.exec(this, R.PLUGINS.PROJECT_EXPLORER, this.pluginContext); }; ProjectExplorer.prototype.getView = function () { var self = this; if (this.$view) return this.$view; this.$view = ProjectExplorer_({ "class": 'as-form-explorer', child: { tag: 'droppanel', props: { name: this.data.projectName || 'NONE' } } }); this.$droppanel = ProjectExplorer_$('droppanel', this.$view); /** before new feature release, I cheated here */ this.$cmdCtn = ProjectExplorer_('.absol-drop-panel-head-cmd-button-container'); this.$reloadCmdBtn = ProjectExplorer_({ tag: 'button', child: 'span.mdi.mdi-reload', on: { click: this.loadExpTree.bind(this) } }).addTo(this.$cmdCtn); this.$droppanel.$head.addChild(this.$cmdCtn); var clickCallback = this.$droppanel.$head._azar_extendEvents.nonprioritize.click[0].callback; this.$droppanel.$head.off('click', clickCallback).on('click', function (event) { if (!EventEmitter["b" /* default */].hitElement(self.$cmdCtn, event)) { clickCallback.apply(this, arguments); } }); if (this.data.projectName != null) this.loadExpTree(); return this.$view; }; ProjectExplorer.prototype.openProject = function (value) { if (typeof value == 'string') this.data = { projectName: value || "Unknown" };else { this.data = value || {}; } if (this.$view) { this.$droppanel.name = this.data.projectName; this.loadExpTree(); } }; ProjectExplorer.prototype.loadExpTree = function () { if (this.pluginContext.loadExpTree) this.pluginContext.loadExpTree(); }; ProjectExplorer.prototype.openItem = function (type, ident, name, contentArguments, desc) { var formEditor = this.getContext(R.FORM_EDITOR); if (formEditor) { formEditor.openItem(type, ident, name, contentArguments, desc); } }; /* harmony default export */ var fragment_ProjectExplorer = (ProjectExplorer); // EXTERNAL MODULE: ./css/cmdtool.css var cmdtool = __webpack_require__(270); // CONCATENATED MODULE: ./js/fragment/CMDTool.js var CMDTool_ = FCore._; var CMDTool_$ = FCore.$; function CMDTool() { core_BaseEditor.call(this); this.$dockElt = null; this.cmdTree = []; this.$buttons = {}; // button dictionaryx this.$visiable = []; this.updateVisiable = this.updateVisiable.bind(this); this.refresh = this.refresh.bind(this); } Object.defineProperties(CMDTool.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); CMDTool.prototype.constructor = CMDTool; CMDTool.prototype.CONFIG_STORE_KEY = "AS_CMDTool_config"; CMDTool.prototype.config = { windowStyle: { left: '320px', top: Dom["b" /* default */].getScreenSize().height - 330 + 'px', height: '110px' } }; /** * @param {import('../editor/editor').default} editor */ CMDTool.prototype.bindWithEditor = function (editor) { // this.updateVisiable is binded if (this.editor) { this.editor.off('cmddescriptorschange', this.updateVisiable); this.editor.off('cmdchange', this.refresh); } this.editor = editor; if (this.editor) { this.editor.on('cmdchange', this.refresh); this.editor.on("cmddescriptorschange", this.updateVisiable); } this.refresh(); }; CMDTool.prototype.ev_windowPosChange = function () { this.config.windowStyle = { width: this.$window.style.width, height: this.$window.style.height, top: this.$window.style.top, left: this.$window.style.left }; this.saveConfig(); }; CMDTool.prototype.onStart = function () { this.getView(); }; CMDTool.prototype.onPause = function () { //todo if (this.$dockElt) {} else { dom_WindowManager.remove(this.$window); } }; CMDTool.prototype.updateVisiable = function () { if (!this.editor) return; var self = this; Object.keys(this.$buttons).forEach(function (name) { var descriptor = self.editor.getCmdDescriptor(name); self.$buttons[name].disabled = descriptor.disabled; }); }; CMDTool.prototype.onResume = function () { this.loadPosition(); this.updateVisiable(); }; CMDTool.prototype.getView = function () { if (this.$view) return this.$view; var thisCmdTool = this; this.$window = CMDTool_({ tag: "onscreenwindow", attr: { tabIndex: '1' }, "class": "as-form-cmd-tool-window", props: { windowTitle: "Tools", windowIcon: "span.mdi.mdi-shape-plus" }, on: { sizechange: this.ev_windowPosChange.bind(this), drag: this.ev_windowPosChange.bind(this), relocation: this.ev_windowPosChange.bind(this), keydown: this.ev_cmdKeyDown.bind(this) } }); this.$view = CMDTool_({ tag: 'bscroller', "class": "as-form-cmd-tool" }); CMDTool_$('.absol-onscreen-window-body-container', this.$window, function (e) { e.addClass('absol-bscroller'); }); if (!this.$dockElt) { this.$window.addChild(this.$view); } this.$minimizeBtn = this.$window.$minimizeBtn; this.$minimizeBtn.on('click', this.dockToEditor.bind(this)); this.$quickmenuBtn = CMDTool_({ tag: 'button', "class": ['as-form-cmd-tool-menu-trigger', 'as-from-tool-button'], child: 'span.mdi.mdi-dots-horizontal' }); js_QuickMenu.toggleWhenClick(this.$quickmenuBtn, { getMenuProps: function getMenuProps() { return { extendStyle: { 'font-size': '12px' }, items: [{ text: 'Undock', icon: 'span.mdi.mdi-dock-window', cmd: 'undock' }, { text: 'Help', icon: 'span.mdi.mdi-help' }] }; }, onSelect: function onSelect(item) { switch (item.cmd) { case 'undock': thisCmdTool.undock(); break; } } }); this.refresh(); return this.$view; }; CMDTool.prototype.dockToEditor = function () { this.$dockBtn = this.editor && this.editor.getCmdToolCtn && this.editor.getCmdToolCtn(); if (this.$dockBtn) { this.$window.remove(); this.getView().addTo(this.$dockBtn); Dom["b" /* default */].updateResizeSystem(); this.config.docked = true; this.saveConfig(); this.$quickmenuBtn.addTo(this.$view); } }; CMDTool.prototype.undock = function () { this.config.docked = false; this.$view.addTo(this.$window); this.$window.addStyle(this.config.windowStyle).addTo(document.body); Dom["b" /* default */].updateResizeSystem(); }; CMDTool.prototype.loadPosition = function () { if (this.config.docked) { this.dockToEditor(); } else { this.undock(); } }; CMDTool.prototype.refresh = function () { if (!this.editor) return; this.$view.clearChild(); this.$buttons = {}; var groupTree = this.editor.getCmdGroupTree(); var self = this; function visit(node) { if (node instanceof Array) { return CMDTool_({ "class": 'as-from-tool-group-buttons', child: node.map(visit) }); } else { var descriptor = self.editor.getCmdDescriptor(node); var title = descriptor.desc; if (descriptor.bindKey && descriptor.bindKey.win) { title += ' (' + descriptor.bindKey.win + ')'; } self.$buttons[node] = CMDTool_({ tag: 'button', "class": ['as-from-tool-button'], attr: { title: title }, child: descriptor.icon, props: { disabled: !!descriptor.disabled }, on: { click: function click() { self.execCmd.apply(self, [node].concat(descriptor.args || [])); } } }); return self.$buttons[node]; } } this.$view.addChild(visit(groupTree)); if (this.config.docked) this.dockToEditor(); }; CMDTool.prototype.execCmd = function () { this.editor.execCmd.apply(this.editor, arguments); }; CMDTool.prototype.ev_cmdKeyDown = function (event) { this.editor.ev_cmdKeyDown(event); //repeat event }; /* harmony default export */ var fragment_CMDTool = (CMDTool); // EXTERNAL MODULE: ./node_modules/absol-brace/BraceExternal/ace.css var ace = __webpack_require__(272); // CONCATENATED MODULE: ./node_modules/absol-brace/BraceExternal/FBraceEditor.js function FBraceEditor() { // this.on('change', function(){ // console.log(new Error()) // }); // console.log(this) } FBraceEditor.prototype.$onLineCountChange = function () { // console.log(this); }; FBraceEditor.prototype.getLineCount = function () { var session = this.getSession(); return session.$rowLengthCache.length; }; /* harmony default export */ var BraceExternal_FBraceEditor = (FBraceEditor); // CONCATENATED MODULE: ./node_modules/absol-brace/BraceExternal/FEditSession.js function FEditSession() { } FEditSession.prototype.gutterRenderer = { getWidth: function (session, lastLineNumber, config) { return session.getLineCount().toString().length * config.characterWidth; }, getText: function (session, row) { return row + 1; } }; FEditSession.prototype.getLineCount = function(){ return this.$rowLengthCache.length; }; /* harmony default export */ var BraceExternal_FEditSession = (FEditSession); // CONCATENATED MODULE: ./node_modules/absol-brace/BraceExternal/FBrace.js var FBrace_ace = window.ace ||{}; var aceEdit = FBrace_ace && FBrace_ace.edit; FBrace_ace.edit = function(){ var editor = aceEdit.apply(this, arguments); Object.defineProperties(editor, Object.getOwnPropertyDescriptors(BraceExternal_FBraceEditor.prototype)); BraceExternal_FBraceEditor.call(editor); return editor; }; Object.defineProperties(FBrace_ace.EditSession.prototype, Object.getOwnPropertyDescriptors(BraceExternal_FEditSession.prototype)); /* harmony default export */ var FBrace = (FBrace_ace); // CONCATENATED MODULE: ./node_modules/absol-brace/components/BCore.js var BCore = new Dom["b" /* default */](); BCore.install(absol_acomp_AComp.core); /* harmony default export */ var components_BCore = (BCore); // EXTERNAL MODULE: ./node_modules/absol-brace/BraceDiff/diff.css var diff = __webpack_require__(274); // CONCATENATED MODULE: ./node_modules/absol-brace/components/Shape.js function Shape() { var res = Svg["a" /* default */].ShareInstance._('path'); return res; }; Shape.prototype.begin = function () { this.buildingPath = ''; return this; }; Shape.prototype.end = function () { this.attr('d', this.buildingPath); return this; }; Shape.prototype.moveTo = function (x, y) { this.buildingPath += 'M' + x + ' ' + y; return this; }; Shape.prototype.closePath = function () { this.buildingPath += 'z'; return this; } Shape.prototype.lineTo = function (x, y) { this.buildingPath += 'L' + x + ' ' + y; return this; }; Shape.prototype.arcTo = function (x, y, rx, ry, lf, sf, xRotate) { ry = ry || rx; lf = lf || 0; sf = sf || 0; xRotate = xRotate || 0; this.buildingPath += 'A' + [rx, ry, xRotate, lf, sf, x, y].join(' '); return this; }; Shape.prototype.curveTo = function (x, y, x0, y0, x1, y1) { this.buildingPath += 'C' + [x0, y0, x1, y1, x, y].join(' '); return this; }; components_BCore.install('shape', Shape); // CONCATENATED MODULE: ./node_modules/absol-brace/components/Icons.js var components_Icons_ = components_BCore._; function MdArrawLeftBold() { return components_Icons_( `<svg width="24" height="24" viewBox="0 0 24 24"> <path d="M20,9V15H12V19.84L4.16,12L12,4.16V9H20Z" /> </svg>` ); } components_BCore.install('md-arraw-left-bold', MdArrawLeftBold); function MdArrawRighttBold() { return components_Icons_( `<svg width="24" height="24" viewBox="0 0 24 24"> <path d="M4,15V9H12V4.16L19.84,12L12,19.84V15H4Z" /> </svg>` ); } components_BCore.install('md-arraw-right-bold', MdArrawRighttBold); // CONCATENATED MODULE: ./node_modules/absol-diff/struct/Segment.js /** * * @param {Number} start * @param {Number} end */ function Segment(start, end) { if (!(this instanceof Segment)) return new Segment(start, end); if (!(start <= end)) throw new Error("Invalid range [" + start + ', ' + end + ']'); this.start = start; this.end = end; } /** * @param {Segment} other * @returns {Boolean} */ Segment.prototype.isOverlap = function (other) { if (this.start > other.end) return false; if (this.end < other.start) return false; return true; }; /** * @returns {Number} */ Segment.prototype.length = function () { return this.end - this.start; }; /** * @param {Segment} other * @returns {Segment} */ Segment.prototype.merge = function (other) { return new Segment(Math.min(this.start, other.start), Math.max(this.end, other.end)); }; /** * @param {Segment} other * @returns {Segment} */ Segment.prototype.betweenSegment = function (other) { if (this.start >= other.end) return new Segment(other.end, this.start); if (this.end <= other.start) return new Segment(this.end, other.start); return null; }; /** * @returns {Segment} */ Segment.prototype.clone = function () { return new Segment(this.start, this.end); }; /* harmony default export */ var struct_Segment = (Segment); // CONCATENATED MODULE: ./node_modules/absol-diff/struct/Trapezium.js /** * * @param {Segment} left * @param {Segment} right */ function Trapezium(left, right, color) { if (!(this instanceof Trapezium)) return new Trapezium(left, right, color); this.left = left; this.right = right; this.color = color; } /** * @param {Trapezium} other * @returns {Trapezium} */ Trapezium.prototype.merge = function (other) { return new Trapezium(this.left.merge(other.left), this.right.merge(other.right), this.color) }; /** * @param {Trapezium} other * @returns {Boolean} */ Trapezium.prototype.isOverlap = function (other) { return this.right.isOverlap(other.right) && this.left.isOverlap(other.left); }; /** * @returns {Number} */ Trapezium.prototype.square = function () { return (this.right.length() + this.left.length()) / 2; }; Trapezium.prototype.clone - function(){ return new Trapezium(this.left.clone(), this.right.clone(), this.color); }; /* harmony default export */ var struct_Trapezium = (Trapezium); // CONCATENATED MODULE: ./node_modules/absol-brace/BraceDiff/diffworker.js.txt /* harmony default export */ var diffworker_js = ("!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&n&&\"string\"!=typeof t)for(var i in t)e.d(r,i,function(e){return t[e]}.bind(null,i));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=0)}([function(t,e,n){t.exports=n(1)},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(){this._azar_extendEvents=this._azar_extendEvents||{supported:{},prioritize:{},nonprioritize:{}},this.__azar_force=\"object\"===(\"undefined\"==typeof Node?\"undefined\":r(Node))?!(this instanceof Node):!(this&&\"object\"===r(this)&&\"number\"==typeof this.nodeType&&\"string\"==typeof this.nodeName)}function o(t){f.call(this),this.detach(),t&&this.attach(t),this.__azarResolveCallbacks={}}function a(t,e){if(!(this instanceof a))return new a(t,e);if(!(t<=e))throw new Error(\"Invalid range [\"+t+\", \"+e+\"]\");this.start=t,this.end=e}function s(t){var e,n=new RegExp([\"(\",v.source,\"+)|(\",y.source,\")|(\",\".\",\")\"].join(\"\"),\"g\"),r=[];do{if(e=n.exec(t)){var i=0;e[1]&&(i=m),e[2]&&(i=_),e[3]&&(i=b),r.push({range:g(e.index,n.lastIndex),value:e[0],score:i+i*e[0].length/1e6})}}while(e);return r}function l(t){var e,n=0;if(0===t.length)return n;for(e=0;e<t.length;e++)n=(n<<5)-n+t.charCodeAt(e),n|=0;return n}function h(t,e){for(var n=Array(t.length+1).fill(null).map(function(){return Array(e.length+1).fill(0)}),r=0;r<t.length;++r)for(var i=0;i<e.length;++i)n[r+1][i+1]=c(n[r][i+1],n[r+1][i]),t[r].value==e[i].value&&(n[r+1][i+1]=c(n[r+1][i+1],n[r][i]+e[i].score));for(var o=[],a=(r=t.length,i=e.length,0);0<r&&0<i&&0!=n[r][i];){for(;n[r][i]==n[r][i-1];)--i;for(;n[r][i]==n[r-1][i];)--r;a+=t[r-1].score,o.push({lToken:t[r-1],rToken:e[i-1]}),--i,--r}return{subExtraMatched:o=o.reverse(),isExtraMatched:o.length==t.length&&o.length==e.length,score:a}}function u(t,e,n){return this instanceof u?(this.left=t,this.right=e,void(this.color=n)):new u(t,e,n)}var c=Math.max,p=(Math.ceil,Math.min);n.r(e),i.prototype.defineEvent=function(t){if(t instanceof Array)for(var e=0;e<t.length;++e)this._azar_extendEvents.supported[t[e]]=!0;else this._azar_extendEvents.supported[t]=!0;return this},i.prototype.isSupportedEvent=function(t){return this.__azar_force||!!this._azar_extendEvents.supported[t]},i.prototype.emit=function(){this.fire.apply(this,arguments)},i.prototype.fire=function(t,e){var n=Array.prototype.slice.call(arguments,1);if(this.isSupportedEvent(t)){var r;if(this._azar_extendEvents.prioritize[t]){r=this._azar_extendEvents.prioritize[t].slice();for(var i=0;i<r.length;++i)try{r[i].wrappedCallback.apply(this,n)}catch(t){console.error(t)}}if(this._azar_extendEvents.nonprioritize[t]){r=this._azar_extendEvents.nonprioritize[t].slice();for(i=0;i<r.length;++i)try{r[i].wrappedCallback.apply(this,n)}catch(t){console.error(t)}}}else{if(!this.dispatchEvent)throw new Error(\"Not support event \"+t);var o=new Event(t);e&&Object.assign(o,e),this.dispatchEvent(o)}return this},i.prototype.eventEmittorOnWithTime=function(t,e,n,i){if(\"object\"==r(e)){for(var o in e)this.eventEmittorOnWithTime(t,o,e[o]);return this}if(\"object\"==r(n))return this.eventEmittorOnWithTime(t,e,n.callback,n.cap);for(var a=this._azar_extendEvents[i?\"prioritize\":\"nonprioritize\"][e]||[],s=-1,l=0;l<a.length;++l)if(a[l].wrappedCallback==n){s=l;break}if(0>s){var h={isOnce:t,eventName:e,callback:n,cap:!!i};h.wrappedCallback=t?function(t){h.callback.call(this,t),this.off(h.eventName,h.wrappedCallback,h.cap)}:h.callback,this.isSupportedEvent(e)||(this.addEventListener?this.addEventListener(e,h.wrappedCallback,!!i):this.attachEvent(\"on\"+e,n,!!i)),a.push(h),this._azar_extendEvents[i?\"prioritize\":\"nonprioritize\"][e]=a}else console.warn(\"dupplicate event\");return this},i.prototype.on=function(t,e,n){return this.eventEmittorOnWithTime(!1,t,e,n),this},i.prototype.once=function(t,e,n){return this.eventEmittorOnWithTime(!0,t,e,n),this},i.prototype.off=function(t,e,n){if(\"object\"==r(t)){for(var i in t)this.off(i,t[i]);return this}if(\"object\"==r(e))return this.off(t,e.callback,e.cap);for(var o,a=this._azar_extendEvents[n?\"prioritize\":\"nonprioritize\"][t]||[],s=[],l=0;l<a.length;++l)(o=a[l]).wrappedCallback==e?this.isSupportedEvent(t)||(this.removeEventListener?this.removeEventListener(o.eventName,o.wrappedCallback,!!o.call):this.detachEvent(\"on\"+o.eventName,o.wrappedCallback,!!o.call)):s.push(o);return this._azar_extendEvents[n?\"prioritize\":\"nonprioritize\"][t]=s,this},i.isMouseRight=function(t){var e=!1;return\"which\"in t?e=3==t.which:\"button\"in t&&(e=2==t.button),e},i.hitElement=function(t,e){for(var n=e.target;n;){if(n==t)return!0;n=n.parentElement}return!1},i.copyEvent=function(t,e){var n={};for(var r in Object.assign(n,t),n)\"function\"==typeof n[r]&&(n[r]=n[r].bind(t));return e&&Object.assign(n,e),n},i.eventProperties=[\"altKey\",\"bubbles\",\"button\",\"buttons\",\"cancelBubble\",\"cancelable\",\"clientX\",\"clientY\",\"composed\",\"ctrlKey\",\"currentTarget\",\"defaultPrevented\",\"deltaMode\",\"deltaX\",\"deltaY\",\"deltaZ\",\"detail\",\"eventPhase\",\"explicitOriginalTarget\",\"isTrusted\",\"layerX\",\"layerY\",\"metaKey\",\"movementX\",\"movementY\",\"mozInputSource\",\"mozPressure\",\"offsetX\",\"offsetY\",\"originalTarget\",\"pageX\",\"pageY\",\"rangeOffset\",\"rangeParent\",\"region\",\"relatedTarget\",\"returnValue\",\"screenX\",\"screenY\",\"shiftKey\",\"srcElement\",\"target\",\"timeStamp\",\"type\",\"deltaMode\",\"deltaX\",\"deltaY\",\"deltaZ\"];var f=i,d=function(){var t=\"qwertyuiopasdfghjklzxcvbnm\";return((t+=t.toUpperCase())+\"_0123456789\").split(\"\")}();o.prototype.attach=function(t){this.host=t,this.host.addEventListener?this.host.addEventListener(\"message\",this.__azarMessageListener.bind(this),!1):this.host.attachEvent?this.host.attachEvent(\"onmessage\",this.__azarMessageListener.bind(this)):this.host.onmessage=this.__azarMessageListener.bind(this),this.__IFrameBridge_resolve()},o.prototype.detach=function(){this.sync=new Promise(function(t){this.__IFrameBridge_resolve=t}.bind(this))},o.fromIFrame=function(t){var e=t.contentWindow||t.contentDocument;if(e)return new o(e);var n=new o,r=function(){var e=t.contentWindow||t.contentDocument;n.attach(e)};return t.addEventListener?t.addEventListener(\"load\",r):t.attachEvent(\"onload\",r),n},o.getInstance=function(){return o.shareInstance||(o.shareInstance=new o(self)),o.shareInstance},Object.defineProperties(o.prototype,Object.getOwnPropertyDescriptors(f.prototype)),o.prototype.constructor=o,o.isInIFrame=function(){return top!==self},o.prototype.__azarMessageListener=function(t){this.__azarHandleData(t.data)},o.prototype.__azarHandleData=function(t){if(t.type)if(\"INVOKE\"==t.type){var e=this.__azarRelfInvoke(t.name,t.params);e&&\"function\"==typeof e.then?e.then(function(e){this.__azarResolve(t.taskId,e)}.bind(this)):this.__azarResolve(t.taskId,e)}else\"INVOKE_RESULT\"==t.type?this.__azarResolveCallbacks[t.taskId]&&(this.__azarResolveCallbacks[t.taskId](t.result),delete this.__azarResolveCallbacks[t.taskId]):\"EMIT\"==t.type?this.fire.apply(this,t.params):this.fire(\"message\",t,this)},o.prototype.__azarResolve=function(t,e){this.host.postMessage({type:\"INVOKE_RESULT\",taskId:t,result:e})},o.prototype.__azarRelfInvoke=function(t,e){return\"function\"==typeof this[t]?this[t].apply(this,e):this[t]},o.prototype.emit=function(){var t=[];return t.push.apply(t,arguments),this.sync.then(function(){this.host.postMessage({type:\"EMIT\",params:t})}.bind(this)),this},o.prototype.invoke=function(t){var e=[];return e.push.apply(e,arguments),e.shift(),this.sync.then(function(){var n=function(t){0<t||(t=4);var e=d;return[e[Math.random()*(e.length-10)>>0]].concat(Array(t-1).fill(\"\").map(function(){return e[Math.random()*e.length>>0]})).join(\"\")}(32);return this.host.postMessage({type:\"INVOKE\",params:e,taskId:n,name:t}),new Promise(function(t){this.__azarResolveCallbacks[n]=t}.bind(this))}.bind(this))},a.prototype.isOverlap=function(t){return!(this.start>t.end||this.end<t.start)},a.prototype.length=function(){return this.end-this.start},a.prototype.merge=function(t){return new a(p(this.start,t.start),c(this.end,t.end))},a.prototype.betweenSegment=function(t){return this.start>=t.end?new a(t.end,this.start):this.end<=t.start?new a(this.end,t.start):null},a.prototype.clone=function(){return new a(this.start,this.end)};var g=a,v=/[\\_a-zA-Z0-9àáạảãâầấậẩẫăằắặẳẵÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴèéẹẻẽêềếệểễÈÉẸẺẼÊỀẾỆỂỄìíịỉĩÌÍỊỈĨòóọỏõôồốộổỗơờớợởỡÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠùúụủũưừứựửữÙÚỤỦŨƯỪỨỰỬỮỳýỵỷỹỲÝỴỶỸđĐ\\u0300\\u0301\\u0303\\u0309\\u0323\\u02C6\\u0306\\u031B]/,y=/\\s+/,m=1,b=.99,_=.01;u.prototype.merge=function(t){return new u(this.left.merge(t.left),this.right.merge(t.right),this.color)},u.prototype.isOverlap=function(t){return this.right.isOverlap(t.right)&&this.left.isOverlap(t.left)},u.prototype.square=function(){return(this.right.length()+this.left.length())/2},u.prototype.clone;var E=u,z=1,w=-1,k=o.getInstance();k.diffByLine=function(t,e){return function(t,e){function n(t,e){for(var n=0,r=0;r<t.length;++r)0<t[r].trim().length&&++n;return{index:e,text:t,value:l(t),score:0==n?.01:1+n/1e6}}var r=t.split(/\\r?\\n/),i=e.split(/\\r?\\n/),o={lLines:r,rLines:i},a=r.map(n),s=i.map(n),u=h(a,s).subExtraMatched.reduce(function(t,e){var n=t[t.length-1],r=E(g(e.lToken.index,e.lToken.index+1),g(e.rToken.index,e.rToken.index+1),z);if(n.isOverlap(r))n=n.merge(r),t[t.length-1]=n;else{var i=r.left.betweenSegment(n.left),o=r.right.betweenSegment(n.right);0<(n=E(i,o,w)).square()&&t.push(n),t.push(r)}return t},[E(g(0,0),g(0,0),z)]),c=u[u.length-1];return(c.left.end<a.length||c.right.end<s.length)&&u.push(E(g(c.left.end,a.length),g(c.right.end,s.length),w)),u=u.filter(function(t){return 0<t.square()}),o.trapeziumes=u,o}(t,e)},k.diffByWord=function(t,e){return function(t,e){if(t==e)return[E(g(0,t.length),g(0,e.length),z)];var n=h(s(t),s(e)).subExtraMatched.reduce(function(t,e){var n=t.last,r=n.left.betweenSegment(e.lToken.range),i=n.right.betweenSegment(e.rToken.range),o=new E(r,i);return 0<o.square()&&(o.color=w,t.result.push(o)),(o=new E(e.lToken.range,e.rToken.range)).color=z,t.result.push(o),t.last=o,t},{result:[],last:E(g(0,0),g(0,0))}),r=g(n.last.left.end,t.length),i=g(n.last.right.end,e.length),o=new E(r,i);return o.color=w,n.result.push(o),n.result.filter(function(t){return 0<t.square()}).reduce(function(n,r){if(r.color==z)n.push(r);else{var i,o=t.substring(r.left.start,r.left.end),a=e.substring(r.right.start,r.right.end),s=function(t,e){for(var n=0,r=0,i=0;r<t.length&&i<e.length&&t[r]==e[i];)++n,++r,++i;return n}(o,a),l=function(t,e){for(var n=0,r=t.length,i=e.length;0<r&&0<i&&(--i,t[--r]==e[i]);)++n;return n}(o,a);s+l<p(o.length,a.length)?(0<s&&((i=E(g(r.left.start,r.left.start+s),g(r.right.start,r.right.start+s))).color=z,n.push(i)),(i=E(g(r.left.start+s,r.left.end-l),g(r.right.start+s,r.right.end-l))).color=w,n.push(i),0<l&&((i=E(g(r.left.end-l,r.left.end),g(r.right.end-l,r.right.end))).color=z,n.push(i))):l>s?((i=E(g(r.left.start,r.left.end-l),g(r.right.start,r.right.end-l))).color=w,n.push(i),(i=E(g(r.left.end-l,r.left.end),g(r.right.end-l,r.right.end))).color=z,n.push(i)):(0<s&&((i=E(g(r.left.start,r.left.start+s),g(r.right.start,r.right.start+s))).color=z,n.push(i)),(i=E(g(r.left.start+s,r.left.end),g(r.right.start+s,r.right.end))).color=w,n.push(i))}return n},[]).reduce(function(t,e){if(0==t.length)return t.push(e),t;var n=t[t.length-1];if(n.color==e.color){var r=n.merge(e);r.color=n.color,t[t.length-1]=r}else t.push(e);return t},[])}(t,e)}}]);"); // CONCATENATED MODULE: ./node_modules/absol-brace/BraceDiff/BraceDiff.js const Range = FBrace && FBrace.acequire('ace/range').Range; var BraceDiff_$ = components_BCore.$; var BraceDiff_ = components_BCore._; /** * @typedef {Object} BraceDiffOption * @property {String} element selector query | HTML element * @property {BraceDiffOptionLeft} left * @property {BraceDiffOptionLeft} right * @property {IFrameBridge} diffWorker * * * * @param {BraceDiffOption} props */ function BraceDiff(props) { if (!(this instanceof BraceDiff)) return new BraceDiff(props); EventEmitter["b" /* default */].call(this); this.ready = false; this.props = props; this.props.left = this.props.left || {}; this.props.right = this.props.right || {}; this.editorLeft = null; this.editorRight = null; this.$element = null; this.diffWorker = props.diffWorker; if (!this.diffWorker) { var workerUrl = (URL || webkitURL).createObjectURL(new Blob([diffworker_js], { type: 'application/javascript' })); this.diffWorker = new Network_IFrameBridge(new Worker(workerUrl)); } this.lastFocusEditor = null; this._changeTimeOut = false; this._attachedTo(props.element); } Object.defineProperties(BraceDiff.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); BraceDiff.prototype.constructor = BraceDiff; BraceDiff.prototype._attachedTo = function (elt) { var _this = this; if (typeof elt == 'string') { elt = BraceDiff_$(elt); if (elt) { this.edit(elt); } else { throw new Error('Can not find ' + elt); } } else if (Dom["b" /* default */].isDomNode(elt)) { if (BraceDiff_$(elt).isDescendantOf(document.body)) { this.edit(elt); } else { BraceDiff_('attachhook').on('error', function (event) { this.remove(); _this.edit(elt); }).addTo(elt); } } else throw new Error('Invalid element'); }; /** * @param {Element} element */ BraceDiff.prototype.edit = function (element) { this.$element = element.addClass('brace-diff'); this.$element.updateSize = function () { this.updateForegroundSize(); this.updateGap(this); }.bind(this); Dom["b" /* default */].addToResizeSystem(this.$element); this.$leftPreCtn = BraceDiff_('.brace-diff-left-container').addTo(this.$element); this.$rightPreCtn = BraceDiff_('.brace-diff-right-container').addTo(this.$element); this.$middleToolCtn = BraceDiff_('.brace-diff-middle-tool-container').addTo(this.$element); this.$middleTool = BraceDiff_('.brace-diff-middle-tool').addTo(this.$middleToolCtn); this._leftPreId = randomIdent(20); this._rightPreId = randomIdent(20); this.$leftPre = BraceDiff_('pre.brace-diff-left#' + this._leftPreId).addTo(this.$leftPreCtn); this.$rightPre = BraceDiff_('pre.brace-diff-left#' + this._rightPreId).addTo(this.$rightPreCtn); this.editorLeft = FBrace.edit(this._leftPreId); this.editorRight = FBrace.edit(this._rightPreId); this.$foreGround = BraceDiff_('.brace-diff-foreground').addTo(this.$element); this.$canvas = BraceDiff_('svg').addTo(this.$foreGround); this.$poolGap = []; this.$activeGaps = []; this.$poolLeftArrowBtn = []; this.$poolRightArrowBtn = []; this.$activePickLeftBtn = []; this.$activePickRightBtn = []; this.updateForegroundSize(); this._setupEditors(); this.ready = true; this.emit('ready', { target: this }, this); return this; }; BraceDiff.prototype._setupEditors = function () { var self = this; this.editorLeft.setOptions(Object.assign({}, this.props.option, this.props.left.option)); this.editorRight.setOptions(Object.assign({}, this.props.option, this.props.right.option)); this.editorLeft.$blockScrolling = Infinity; this.editorRight.$blockScrolling = Infinity; this.editorLeft.on('change', this.handleChange.bind(this)); this.editorRight.on('change', this.handleChange.bind(this)); if (this.props.left.value) { this.editorLeft.setValue(this.props.left.value); } if (this.props.right.value) { this.editorRight.setValue(this.props.right.value); } this.editorLeft.getSession().on('changeScrollTop', function (scroll) { self.updateGap(); }); this.editorRight.getSession().on('changeScrollTop', function (scroll) { self.updateGap(); }); this.editorLeft.on('focus', function (data) { self.lastFocusEditor = self.editorLeft; }); this.editorRight.on('focus', function (data) { self.lastFocusEditor = self.editorRight; }); if (this.props.right.focus) this.editorRight.focus(); else this.editorLeft.focus(); }; BraceDiff.prototype.updateForegroundSize = function () { var bound = this.$foreGround.getBoundingClientRect(); this.$canvas.attr({ width: bound.width + 'px', height: bound.height + 'px' }); }; /** * @param {Trapeziume} trapeziume */ BraceDiff.prototype.pickLeft = function (trapeziume) { if (!this.diffData) return; //todo var newTextLines = this.diffData.lLines.slice(trapeziume.left.start, trapeziume.left.end); if (newTextLines.length == 0) { var removeRange; if (trapeziume.right.end >= this.diffData.rLines.length) { //remove to end removeRange = new Range(trapeziume.right.start - 1, Number.MAX_VALUE, trapeziume.right.end, 0); } else { removeRange = new Range(trapeziume.right.start, 0, trapeziume.right.end, 0); } this.editorRight.getSession().remove(removeRange); } else { var newText = newTextLines.join('\n'); var replaceRange = new Range(trapeziume.right.start, 0, trapeziume.right.end - 1, Number.MAX_VALUE); if (trapeziume.right.start >= this.diffData.rLines.length) { newText = '\n' + newText;//newLine } else if (newText.length == 0 && trapeziume.right.start == trapeziume.right.end) { replaceRange = new Range(trapeziume.right.start, 0, trapeziume.right.end, 0); newText = '\n' } this.editorRight.getSession().replace(replaceRange, newText); } }; /** * @param {Trapeziume} trapeziume */ BraceDiff.prototype.pickRight = function (trapeziume) { if (!this.diffData) return; //todo var newTextLines = this.diffData.rLines.slice(trapeziume.right.start, trapeziume.right.end); if (newTextLines.length == 0) { var removeRange; if (trapeziume.left.end >= this.diffData.lLines.length) { //remove to end removeRange = new Range(trapeziume.left.start - 1, Number.MAX_VALUE, trapeziume.left.end, 0); } else { removeRange = new Range(trapeziume.left.start, 0, trapeziume.left.end, 0); } this.editorLeft.getSession().remove(removeRange); } else { var replaceRange = new Range(trapeziume.left.start, 0, trapeziume.left.end - 1, Number.MAX_VALUE); var newText = newTextLines.join('\n'); if (trapeziume.left.start >= this.diffData.lLines.length) { newText = '\n' + newText;//newLine } else if (newText.length == 0 && trapeziume.left.start == trapeziume.left.end) { replaceRange = new Range(trapeziume.left.start, 0, trapeziume.left.end, 0); newText = '\n'; } this.editorLeft.getSession().replace(replaceRange, newText); } }; BraceDiff.prototype.updateDiffLine = function (diffData) { this.diffData = diffData; this.iniGap(); this.updateGap(); }; BraceDiff.prototype.getCurrentTrapeziume = function () { if (!this.diffData) return var cursorLeftPos = this.editorLeft.getCursorPosition(); var cursorRightPos = this.editorRight.getCursorPosition(); var trapeziumes = this.diffData.trapeziumes; var trapeziume = null; // if (this.lastFocusEditor == this.editorRight) { // for (var i = 0; i < trapeziumes.length; ++i) { // if (trapeziume.right.start >= ){ // } // } // } // else { // } return trapeziume; }; BraceDiff.prototype._createLeftArrowBtn = function () { return BraceDiff_({ tag: 'button', class: ['brace-diff-arrow', 'pick-right'], child: 'md-arraw-left-bold' }); }; BraceDiff.prototype._createRightArrowBtn = function () { return BraceDiff_({ tag: 'button', class: ['brace-diff-arrow', 'pick-left'], child: 'md-arraw-right-bold' }); }; BraceDiff.prototype.iniGap = function () { if (!this.diffData) return; var diffData = this.diffData; var self = this; this.$activeGaps.forEach(function (elt) { elt.remove(); self.$poolGap.push(elt) }); this.$activePickLeftBtn.forEach(function (elt) { elt.remove(); self.$poolLeftArrowBtn.push(elt) }); this.$activePickRightBtn.forEach(function (elt) { elt.remove(); self.$poolRightArrowBtn.push(elt) }); this.$activeGaps = []; this.$activePickLeftBtn = []; this.$activePickRightBtn = []; diffData.trapeziumes.forEach(function (trp, i, trapeziumes) { if (trp.color == -1) { var $gap; if (self.$poolGap.length > 0) { $gap = self.$poolGap.pop(); } else { $gap = BraceDiff_('shape.brace-diff-gap'); } $gap.addTo(self.$canvas); self.$activeGaps.push($gap); trp.$gap = $gap; //left var $pickLeftBtn; var $pickRightBtn; if (self.$poolLeftArrowBtn.length > 0) { $pickLeftBtn = self.$poolLeftArrowBtn.pop(); } else { $pickLeftBtn = self._createRightArrowBtn(); } $pickLeftBtn.addTo(self.$middleTool); self.$activePickLeftBtn.push($pickLeftBtn); trp.$pickLeftBtn = $pickLeftBtn; $pickLeftBtn.onclick = function () { self.pickLeft(trp); $gap.remove(); $pickLeftBtn.remove(); $pickRightBtn.remove(); } //right if (self.$poolRightArrowBtn.length > 0) { $pickRightBtn = self.$poolRightArrowBtn.pop(); } else { $pickRightBtn = self._createLeftArrowBtn(); } $pickRightBtn.addTo(self.$middleTool); self.$activePickRightBtn.push($pickRightBtn); trp.$pickRightBtn = $pickRightBtn; $pickRightBtn.onclick = function () { self.pickRight(trp); $gap.remove(); $pickLeftBtn.remove(); $pickRightBtn.remove(); } } }); }; BraceDiff.prototype.updateGap = function () { //donothing if (!this.diffData) return; var diffData = this.diffData; var self = this; var leftScrollTop = self.editorLeft.renderer.scrollTop; var rightScrollTop = self.editorRight.renderer.scrollTop; var lineHeight = this.editorLeft.renderer.lineHeight; var bound = this.$foreGround.getBoundingClientRect(); var diffWidth = bound.width; var editorWidth = this.$leftPre.getBoundingClientRect().width; var editorDist = diffWidth - 2 * editorWidth; diffData.trapeziumes.forEach(function (trp) { if (trp.$gap) { trp.$gap.begin() .moveTo(0, - leftScrollTop + trp.left.start * lineHeight) .lineTo(editorWidth, - leftScrollTop + trp.left.start * lineHeight) .curveTo(diffWidth - editorWidth, - rightScrollTop + trp.right.start * lineHeight, editorWidth + editorDist / 2, - leftScrollTop + trp.left.start * lineHeight, diffWidth - editorWidth - editorDist / 2, - rightScrollTop + trp.right.start * lineHeight ) .lineTo(diffWidth, - rightScrollTop + trp.right.start * lineHeight) .lineTo(diffWidth, - rightScrollTop + trp.right.end * lineHeight) .lineTo(diffWidth - editorWidth, - rightScrollTop + trp.right.end * lineHeight) .curveTo(editorWidth, - leftScrollTop + trp.left.end * lineHeight, diffWidth - editorWidth - editorDist / 2, - rightScrollTop + trp.right.end * lineHeight, editorWidth + editorDist / 2, - leftScrollTop + trp.left.end * lineHeight ) .lineTo(0, - leftScrollTop + trp.left.end * lineHeight) .closePath() .end(); trp.$pickLeftBtn.addStyle('top', ((- leftScrollTop + trp.left.start * lineHeight) + (- leftScrollTop + trp.left.end * lineHeight)) / 2 - 7 + 'px'); trp.$pickRightBtn.addStyle('top', ((- rightScrollTop + trp.right.start * lineHeight) + (- rightScrollTop + trp.right.end * lineHeight)) / 2 - 7 + 'px'); } }); }; BraceDiff.prototype.handleChange = function () { if (this._changeTimeOut) { clearTimeout(this._changeTimeOut); } var self = this; this._changeTimeOut = setTimeout(function () { var currentSession = Math.random(); self._workSession = currentSession; if (self._inWorking) return; self._inWorking = true; self._changeTimeOut = false; var leftData = self.editorLeft.getValue(); var rightData = self.editorRight.getValue(); self.diffWorker.invoke('diffByLine', leftData, rightData).then(function(result){ self.updateDiffLine(result); self._inWorking = false; if (currentSession != self._workSession) self.handleChange(); }); }, 5); }; BraceDiff.prototype.getEditors = function () { return [this.editorLeft, this.editorRight]; }; BraceDiff.prototype.destroy = function(){ this.editorLeft.destroy(); this.editorRight.destroy(); this.destroyed = true; }; /* harmony default export */ var BraceDiff_BraceDiff = (BraceDiff); // CONCATENATED MODULE: ./node_modules/absol-brace/index.js var AbsolBrace = { core: components_BCore, ace: FBrace, BraceDiff: BraceDiff_BraceDiff }; /* harmony default export */ var absol_brace = (AbsolBrace); // EXTERNAL MODULE: ./css/codeeditor.css var codeeditor = __webpack_require__(276); // EXTERNAL MODULE: ./node_modules/brace/keybinding/emacs.js var emacs = __webpack_require__(278); // EXTERNAL MODULE: ./node_modules/brace/ext/searchbox.js var searchbox = __webpack_require__(279); // EXTERNAL MODULE: ./node_modules/brace/mode/javascript.js var javascript = __webpack_require__(280); // EXTERNAL MODULE: ./node_modules/brace/mode/markdown.js var markdown = __webpack_require__(281); // EXTERNAL MODULE: ./node_modules/brace/mode/jsx.js var jsx = __webpack_require__(283); // EXTERNAL MODULE: ./node_modules/brace/mode/php.js var php = __webpack_require__(284); // EXTERNAL MODULE: ./node_modules/brace/mode/html.js var html = __webpack_require__(285); // EXTERNAL MODULE: ./node_modules/brace/mode/css.js var css = __webpack_require__(286); // EXTERNAL MODULE: ./node_modules/brace/ext/language_tools.js var language_tools = __webpack_require__(287); // EXTERNAL MODULE: ./node_modules/brace/snippets/css.js var snippets_css = __webpack_require__(288); // EXTERNAL MODULE: ./node_modules/brace/snippets/javascript.js var snippets_javascript = __webpack_require__(289); // EXTERNAL MODULE: ./node_modules/brace/snippets/php.js var snippets_php = __webpack_require__(290); // EXTERNAL MODULE: ./node_modules/brace/snippets/html.js var snippets_html = __webpack_require__(291); // EXTERNAL MODULE: ./node_modules/brace/snippets/json.js var json = __webpack_require__(292); // EXTERNAL MODULE: ./node_modules/brace/snippets/text.js var snippets_text = __webpack_require__(293); // EXTERNAL MODULE: ./node_modules/brace/snippets/markdown.js var snippets_markdown = __webpack_require__(294); // EXTERNAL MODULE: ./node_modules/brace/snippets/jsx.js var snippets_jsx = __webpack_require__(295); // EXTERNAL MODULE: ./node_modules/brace/ext/beautify.js var beautify = __webpack_require__(296); // CONCATENATED MODULE: ./js/editor/CodeEditor.js var CodeEditor_ = FCore._; var CodeEditor_$ = FCore.$; function CodeEditor() { core_BaseEditor.call(this); this.aceEditor = null; this._openningData = { type: 'txt', value: '' }; } Object.defineProperties(CodeEditor.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); CodeEditor.prototype.constructor = CodeEditor; CodeEditor.prototype.TYPE_MODE = { js: 'ace/mode/javascript', txt: 'ace/mode/plain_text', json: 'ace/mode/json', md: 'ace/mode/markdown', html: 'ace/mode/html', css: 'ace/mode/css', LICENSE: 'ace/mode/plain_text' }; CodeEditor.prototype.getView = function () { if (this.$view) return this.$view; this.$view = CodeEditor_({ tag: 'pre', "class": 'as-code-editor' }); this.aceEditor = absol_brace.ace.edit(this.$view); return this.$view; }; /** * @param {{type:String, value: String}} data */ CodeEditor.prototype.setData = function (data) { this._openningData = data; this.aceEditor.setValue(data.value); this.aceEditor.setOption('mode', this.TYPE_MODE[data.type] || this.TYPE_MODE.txt); this.aceEditor.setOptions({ enableBasicAutocompletion: true, enableSnippets: true }); }; CodeEditor.prototype.getData = function () { var value = this.aceEditor.getValue(); return Object.assign({}, this._openningData, { value: value }); }; /* harmony default export */ var editor_CodeEditor = (CodeEditor); // CONCATENATED MODULE: ./js/cmds/FormEditorCmd.js /** * @type {import('../editor/FormEditor').default} */ var FormEditorCmd = {}; FormEditorCmd.closeAll = function () { var holder; var sync = Promise.resolve(); var tabview = this.$mainTabview; for (var key in this.editorHolders) { holder = this.editorHolders[key]; sync = sync.then(tabview.removeTab.bind(tabview, holder.tabframe.attr('id'))); } ; return sync; }; FormEditorCmd.closeSaved = function () { var holder; var sync = Promise.resolve(); var tabview = this.$mainTabview; for (var key in this.editorHolders) { holder = this.editorHolders[key]; if (!holder.tabframe.modified) sync = sync.then(tabview.removeTab.bind(tabview, holder.tabframe.attr('id'))); } ; return sync; }; FormEditorCmd.saveAllNClose = function () { var holder; var sync = Promise.resolve(); var tabview = this.$mainTabview; var savePromise; for (var key in this.editorHolders) { holder = this.editorHolders[key]; if (holder.tabframe.modified) { try { savePromise = holder.editor.execCmd('save'); if (!savePromise || !savePromise.then) savePromise = Promise.resolve(savePromise); } catch (error) { savePromise = Promise.resolve(); } } else savePromise = Promise.resolve(); sync = Promise.all([sync, savePromise]).then(tabview.removeTab.bind(tabview, holder.tabframe.attr('id'))); } ; return sync; }; /* harmony default export */ var cmds_FormEditorCmd = (FormEditorCmd); // EXTERNAL MODULE: ./node_modules/absol-photoswipeviewer/photoswipefrag.css var photoswipefrag = __webpack_require__(297); // CONCATENATED MODULE: ./node_modules/absol-photoswipeviewer/PhotoSwipeFrag.js var PhotoSwipeFrag_ = absol_acomp_AComp._; var PhotoSwipeFrag_$ = absol_acomp_AComp.$; /** * @typedef {Object}PSPhotoItem * @property {String} title * @property {String} src * @property {String} previewSrc * @property {Number} naturalWidth * @property {Number} naturalHeight * @property {Image} $image * @property {Promise} sync * @property {Number} scale * */ function PhotoSwipeFrag() { AppPattern_Fragment.call(this); /** * @type {PhotoSwipeFragItem} */ this.currentPhotoItem = null; /** * @type {Array<PhotoSwipeFragItem>} */ this.photoItems = []; this.sync = Promise.resolve(); this.mode = -1; this.snap = -1; // this.ev_pan_mousefinish = this.ev_pan_mousefinish.bind(this); // this.ev_pan_mousemove = this.ev_pan_mousemove.bind(this); // this._mouseData = null; } Object.defineProperties(PhotoSwipeFrag.prototype, Object.getOwnPropertyDescriptors(AppPattern_Fragment.prototype)); PhotoSwipeFrag.prototype.constructor = PhotoSwipeFrag; PhotoSwipeFrag.prototype.SNAP_FIX_SIZE = 'SNAP_FIX_SIZE'; PhotoSwipeFrag.prototype.SNAP_ORIGIN_SIZE = 'SNAP_ORIGIN_SIZE'; PhotoSwipeFrag.prototype.MODE_PAN = 3; PhotoSwipeFrag.prototype.MODE_ZOOM_IN = 4; PhotoSwipeFrag.prototype.MODE_ZOOM_OUT = 5; PhotoSwipeFrag.prototype.topbarBtnNames = [ 'download', 'fixsize', 'originsize', 'pan_tool', 'zoom_in', 'zoom_out']; PhotoSwipeFrag.prototype.topbarDescriptors = { download: { cmd: 'download', title: 'Tải về', mticon: 'file_download' }, fixsize: { mticon: 'fullscreen', title: 'Vừa màn hình', cmd: 'showFixSize' }, originsize: { mticon: 'fullscreen_exit', title: 'Kích thước dốc', cmd: 'showOriginSize' }, pan_tool: { mticon: 'pan_tool', title: 'Di chuyển', cmd: 'panTool' }, zoom_in: { mticon: 'zoom_in', title: 'Phóng to', cmd: 'zoomInTool' }, zoom_out: { mticon: 'zoom_out', title: 'Thu nhỏ', cmd: 'zoomOutTool' } } PhotoSwipeFrag.prototype.getView = function () { var self = this; if (this.$view) return this.$view; this.$view = PhotoSwipeFrag_({ class: 'ptswpf', child: [ { tag: 'button', class: ['ptswpf-to-prev-image'], child: { tag: 'i', child: { text: 'keyboard_arrow_left' }, class: 'material-icons' }, on: { click: this.prev.bind(this) } }, { tag: 'button', class: ['ptswpf-to-next-image'], child: { tag: 'i', child: { text: 'keyboard_arrow_right' }, class: 'material-icons' }, on: { click: this.next.bind(this) } }, { class: 'ptswpf-top-bar', child: this.topbarBtnNames.map(function (name) { return { tag: 'button', class: 'ptswpf-action-' + name, props: { title: self.topbarDescriptors[name].title }, on: { click: self[self.topbarDescriptors[name].cmd || 'noop'].bind(self) }, child: { tag: 'i', child: { text: self.topbarDescriptors[name].mticon }, class: 'material-icons' } } }) }, '<a class="ptswpf-download-trigger" href="#" download target="_blank"></a>' // { // class: 'ptswpf-image-ctn', // child: { // tag: 'img', // class: 'ptswpf-image' // }, // } ] }); this.$attachhook = PhotoSwipeFrag_('attachhook').addTo(this.$view) .on('error', function () { Dom["b" /* default */].addToResizeSystem(this); this.requestUpdateSize(); }); this.$attachhook.requestUpdateSize = this.updateSize.bind(this); this.$downloadTrigger = PhotoSwipeFrag_$('.ptswpf-download-trigger', this.$view); // this.$view.on('mousedown', this.ev_mousedown); if (this.mode == -1) this.panTool(); return this.$view; }; /** * @param {PSPhotoItem} item */ PhotoSwipeFrag.prototype.push = function (item) { if (typeof item == 'string') { item = { src: item }; } var newItem = new PhotoSwipeFragItem(this, item); this.photoItems.push(newItem); if (!this.currentPhotoItem) this.setCurrentItem(newItem); if (this.photoItems.length > 1) { this.$view.addClass('ptswpf-multi-image'); } }; /** * @param {String} src * @returns {PSPhotoItem} */ PhotoSwipeFrag.prototype.findItem = function (src) { for (var i = 0; i < this.photoItems.length; ++i) { if (this.photoItems[i].src == src) return this.photoItems[i]; } return null; }; PhotoSwipeFrag.prototype.noop = function () { }; /** * @param {PhotoSwipeFragItem} item */ PhotoSwipeFrag.prototype.setCurrentItem = function (item) { if (typeof item == 'string') { item = { src: item }; } if (this.currentPhotoItem == item) return; if (this.currentPhotoItem) { this.currentPhotoItem.beginAnimateTimeout(); this.currentPhotoItem.moveToLeft(); } /** * @type {} */ item = this.findItem(item.src) || new PhotoSwipeFragItem(this, item); item.load().then(item.autoSize.bind(item)); this.currentPhotoItem = item; item.mode = this.mode; }; PhotoSwipeFrag.prototype.showFixSize = function () { if (this.currentPhotoItem) { this.currentPhotoItem.beginAnimateTimeout(); this.currentPhotoItem.fixSize(); } }; PhotoSwipeFrag.prototype.showOriginSize = function () { if (this.currentPhotoItem) { this.currentPhotoItem.beginAnimateTimeout(); this.currentPhotoItem.originSize(); } }; PhotoSwipeFrag.prototype.download = function () { if (this.currentPhotoItem) { this.$downloadTrigger.href = this.currentPhotoItem.src; this.$downloadTrigger.click(); } }; PhotoSwipeFrag.prototype.updateSize = function () { var item = this.currentPhotoItem; if (!item) return; }; PhotoSwipeFrag.prototype.panTool = function () { this.$view.addClass('ptswpf-mode-pan') .removeClass('ptswpf-mode-zoom-in') .removeClass('ptswpf-mode-zoom-out'); this.mode = this.MODE_PAN; if (this.currentPhotoItem) this.currentPhotoItem.panTool(); }; PhotoSwipeFrag.prototype.zoomInTool = function () { this.$view.removeClass('ptswpf-mode-pan') .addClass('ptswpf-mode-zoom-in') .removeClass('ptswpf-mode-zoom-out'); this.mode = this.MODE_ZOOM_IN; this.currentPhotoItem.zoomInTool(); }; PhotoSwipeFrag.prototype.zoomOutTool = function () { this.$view.removeClass('ptswpf-mode-pan') .addClass('ptswpf-mode-zoom-out') .removeClass('ptswpf-mode-zoom-in'); this.mode = this.MODE_ZOOM_OUT; this.currentPhotoItem.zoomOutTool(); }; PhotoSwipeFrag.prototype.next = function () { var currentItem = this.currentPhotoItem; var currentItemIndex = this.photoItems.indexOf(currentItem); var nextItemIndex = (currentItemIndex + 1) % this.photoItems.length; var nextItem = this.photoItems[nextItemIndex]; if (nextItem == currentItem) return; currentItem.beginAnimateTimeout(); currentItem.autoSize(); currentItem.moveToLeft(); nextItem.load(); nextItem.$image.addStyle('opacity', '0'); nextItem.moveToRight(); nextItem.beginAnimateTimeout(); nextItem.moveToCenter(); nextItem.sync.then(function () { nextItem.beginAnimateTimeout(); nextItem.autoSize(); nextItem.$image.removeStyle('opacity'); }); this.currentPhotoItem = nextItem; }; PhotoSwipeFrag.prototype.prev = function () { var currentItem = this.currentPhotoItem; var currentItemIndex = this.photoItems.indexOf(currentItem); var prevItemIndex = (currentItemIndex + this.photoItems.length - 1) % this.photoItems.length; var prevItem = this.photoItems[prevItemIndex]; if (prevItem == currentItem) return; currentItem.beginAnimateTimeout(); currentItem.autoSize(); currentItem.moveToRight(); prevItem.load(); prevItem.$image.addStyle('opacity', '0'); prevItem.moveToLeft(); prevItem.beginAnimateTimeout(); prevItem.moveToCenter(); prevItem.sync.then(function () { prevItem.beginAnimateTimeout(); prevItem.autoSize(); prevItem.$image.removeStyle('opacity'); }); this.currentPhotoItem = prevItem; }; var loadingUrl = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHN0eWxlPSJtYXJnaW46IGF1dG87ICBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgd2lkdGg9IjIwMHB4IiBoZWlnaHQ9IjIwMHB4IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDUwKSI+ICA8ZyB0cmFuc2Zvcm09InNjYWxlKDAuNykiPiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTAgLTUwKSI+ICAgICAgPGcgdHJhbnNmb3JtPSJyb3RhdGUoMTI3LjU2MiA1MCA1MCkiPiAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjAuNzU3NTc1NzU3NTc1NzU3NnMiPjwvYW5pbWF0ZVRyYW5zZm9ybT4gICAgICAgIDxwYXRoIGZpbGwtb3BhY2l0eT0iMC44IiBmaWxsPSIjZTE1YjY0IiBkPSJNNTAgNTBMNTAgMEE1MCA1MCAwIDAgMSAxMDAgNTBaIj48L3BhdGg+ICAgICAgPC9nPiAgICAgIDxnIHRyYW5zZm9ybT0icm90YXRlKDk1LjY2ODQgNTAgNTApIj4gICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxLjAxMDEwMTAxMDEwMTAxMDJzIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICAgICAgICA8cGF0aCBmaWxsLW9wYWNpdHk9IjAuOCIgZmlsbD0iI2Y0N2U2MCIgZD0iTTUwIDUwTDUwIDBBNTAgNTAgMCAwIDEgMTAwIDUwWiIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNTAgNTApIj48L3BhdGg+ICAgICAgPC9nPiAgICAgIDxnIHRyYW5zZm9ybT0icm90YXRlKDYzLjc3OTcgNTAgNTApIj4gICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxLjUxNTE1MTUxNTE1MTUxNTFzIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICAgICAgICA8cGF0aCBmaWxsLW9wYWNpdHk9IjAuOCIgZmlsbD0iI2Y4YjI2YSIgZD0iTTUwIDUwTDUwIDBBNTAgNTAgMCAwIDEgMTAwIDUwWiIgdHJhbnNmb3JtPSJyb3RhdGUoMTgwIDUwIDUwKSI+PC9wYXRoPiAgICAgIDwvZz4gICAgICA8ZyB0cmFuc2Zvcm09InJvdGF0ZSgzMS44ODk1IDUwIDUwKSI+ICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMCA1MCA1MDszNjAgNTAgNTAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMy4wMzAzMDMwMzAzMDMwMzAzcyI+PC9hbmltYXRlVHJhbnNmb3JtPiAgICAgICAgPHBhdGggZmlsbC1vcGFjaXR5PSIwLjgiIGZpbGw9IiNhYmJkODEiIGQ9Ik01MCA1MEw1MCAwQTUwIDUwIDAgMCAxIDEwMCA1MFoiIHRyYW5zZm9ybT0icm90YXRlKDI3MCA1MCA1MCkiPjwvcGF0aD4gICAgICA8L2c+ICAgIDwvZz4gIDwvZz48L2c+PCEtLSBbbGRpb10gZ2VuZXJhdGVkIGJ5IGh0dHBzOi8vbG9hZGluZy5pby8gLS0+PC9zdmc+"; /** * * @param {PhotoSwipeFrag} parent * @param {*} props */ function PhotoSwipeFragItem(parent, props) { /** * @type {PhotoSwipeFrag} */ this.parent = parent; /** * @type {String} */ this.src = props.src; /** * @type {HTMLImageElement} */ this.$image = null; /** * @type {HTMLElement} */ this.$frame = null; this._animateTimeout = -1; this.naturalWidth = 1; this.naturalHeight = 1; /** * @type {String} */ this.title = ''; this.viewPosition = 0; this.sync = Promise.resolve(); this.ev_updateSize = this.ev_updateSize.bind(this); this.ev_mousedown = this.ev_mousedown.bind(this); this.ev_pan_mousedown = this.ev_pan_mousedown.bind(this); this.ev_pan_mousemove = this.ev_pan_mousemove.bind(this); this.ev_pan_mousefinish = this.ev_pan_mousefinish.bind(this); }; PhotoSwipeFragItem.prototype.ev_updateSize = function () { if (this.snap == this.SNAP_FIX_SIZE) { this.fixSize(); } }; PhotoSwipeFragItem.prototype.load = function () { var self = this; if (!this.$frame) { this.$frame = PhotoSwipeFrag_('.ptswpf-frame').addTo(this.parent.$view) .on(BrowserDetector["a" /* default */].isMobile ? 'pointerdown' : 'mousedown', this.ev_mousedown); this.$loadingImage = PhotoSwipeFrag_('img.ptswpf-frame-loading-img').addTo(this.$frame); this.$loadingImage.src = loadingUrl; this.$attachhook = PhotoSwipeFrag_('attachhook').addTo(this.$frame) .on('error', function () { Dom["b" /* default */].addToResizeSystem(this); }); this.$attachhook.updateSize = this.ev_updateSize; this.$image = PhotoSwipeFrag_('img.ptswpf-image').addTo(this.$frame); this.$image.src = this.src; this.$image.draggable = false; this.sync = Dom["b" /* default */].waitImageLoaded(this.$image) .then(function () { self.naturalHeight = self.$image.naturalHeight; self.naturalWidth = self.$image.naturalWidth; self.$loadingImage.remove(); }); } return this.sync; }; PhotoSwipeFragItem.prototype.beginAnimateTimeout = function (duration) { if (duration === undefined) duration = 300; var self = this; if (this._animateTimeout > 0) { clearTimeout(this._animateTimeout); this._animateTimeout = -1; } this.$frame.addClass('ptswpf-move-animation'); this._animateTimeout = setTimeout(function () { self.$frame.removeClass('ptswpf-move-animation'); self._animateTimeout = -1; }, duration) }; PhotoSwipeFragItem.prototype.getScaleToFix = function (width, height) { return Math.min(width / this.naturalWidth, height / this.naturalHeight) }; PhotoSwipeFragItem.prototype.scale = function (s) { var nWidth = this.naturalWidth * this.scale; var nHeight = this.naturalHeight * this.scale; var frameBound = this.$frame.getBoundingClientRect(); var nLeft = frameBound.width / 2 + dx - nWidth * ox; var nTop = frameBound.height / 2 + dy - nHeight * oy; var maxTop, minTop, maxLeft, minLeft; if (nHeight > frameBound.height) { maxTop = 0; minTop = frameBound.height - nHeight; } else { minTop = frameBound.height / 2 - nHeight / 2; maxTop = minTop; } if (nWidth > frameBound.width) { maxLeft = 0; minLeft = frameBound.width - nWidth; } else { minLeft = frameBound.width / 2 - nWidth / 2; maxLeft = minLeft; } nLeft = Math.min(Math.max(nLeft, minLeft), maxLeft); nTop = Math.min(Math.max(nTop, minTop), maxTop); if (hs < 1 && nWidth < this.naturalWidth && Math.max(nWidth, nHeight) < 10) return; this.$image.addStyle({ width: nWidth + 'px', height: nHeight + 'px', left: 'calc(' + (nLeft - frameBound.width / 2) + 'px + 50%)', top: 'calc(' + (nTop - frameBound.height / 2) + 'px + 50%)' }); }; PhotoSwipeFragItem.prototype.SNAP_FIX_SIZE = 'SNAP_FIX_SIZE'; PhotoSwipeFragItem.prototype.SNAP_ORIGIN_SIZE = 'SNAP_ORIGIN_SIZE'; PhotoSwipeFragItem.prototype.MODE_PAN = 3; PhotoSwipeFragItem.prototype.MODE_ZOOM_IN = 4; PhotoSwipeFragItem.prototype.MODE_ZOOM_OUT = 5; PhotoSwipeFragItem.prototype.originSize = function () { this.snap = this.SNAP_ORIGIN_SIZE; /** * @type {PSPhotoItem} */ var imageBound = this.$image.getBoundingClientRect(); this.$image.addStyle('left', 'calc(50% - ' + (this.naturalWidth / 2) + 'px)') this.$image.addStyle('top', 'calc(50% - ' + (this.naturalHeight / 2) + 'px)'); this.$image.addStyle({ width: this.naturalWidth + 'px', height: this.naturalHeight + 'px', }); this.scale = 1; }; PhotoSwipeFragItem.prototype.fixSize = function () { this.snap = this.SNAP_FIX_SIZE; /** * @type {PSPhotoItem} */ var frameSize = this.$frame.getBoundingClientRect(); var newWidth; var newHeight; if (frameSize.width / frameSize.height > this.naturalWidth / this.naturalHeight) { newHeight = frameSize.height; newWidth = newHeight * this.naturalWidth / this.naturalHeight; } else { newWidth = frameSize.width; newHeight = newWidth * this.naturalHeight / this.naturalWidth; } this.$image.addStyle('left', 'calc(50% - ' + (newWidth / 2) + 'px)') this.$image.addStyle('top', 'calc(50% - ' + (newHeight / 2) + 'px)'); this.$image.addStyle({ width: newWidth + 'px', height: newHeight + 'px', }); this.scale = newWidth / this.naturalWidth; }; PhotoSwipeFragItem.prototype.autoSize = function () { var frameSize = this.$frame.getBoundingClientRect(); if (this.naturalHeight > frameSize.height || this.naturalWidth > frameSize.width) { this.fixSize(); } else { this.originSize(); } } PhotoSwipeFragItem.prototype.moveToLeft = function () { this.$frame.removeClass('ptswpf-frame-right') .addClass('ptswpf-frame-left'); this.viewPosition = -1; }; PhotoSwipeFragItem.prototype.moveToRight = function () { this.$frame.removeClass('ptswpf-frame-left') .addClass('ptswpf-frame-right'); this.viewPosition = 1; }; PhotoSwipeFragItem.prototype.moveToCenter = function () { this.$frame.removeClass('ptswpf-frame-left') .removeClass('ptswpf-frame-right'); this.viewPosition = 0; }; PhotoSwipeFragItem.prototype.panTool = function () { this.mode = this.MODE_PAN; }; PhotoSwipeFragItem.prototype.zoomInTool = function () { this.mode = this.MODE_ZOOM_IN; }; PhotoSwipeFragItem.prototype.zoomOutTool = function () { this.mode = this.MODE_ZOOM_OUT; }; PhotoSwipeFragItem.prototype.zoom = function (hs, ev) { var imgBound = this.$image.getBoundingClientRect(); var frameSize = this.$frame.getBoundingClientRect(); var ox = 0.5, oy = 0.5, dx = 0, dy = 0; if (event) { ox = (event.clientX - imgBound.left) / (imgBound.right - imgBound.left); oy = (event.clientY - imgBound.top) / (imgBound.bottom - imgBound.top); dx = event.clientX - (frameSize.left + frameSize.right) / 2; dy = event.clientY - (frameSize.top + frameSize.bottom) / 2; } if (hs == this.SNAP_FIX_SIZE) { this.scale = Math.min(frameSize.width / this.naturalWidth, frameSize.height / this.naturalHeight); } else if (hs == this.SNAP_ORIGIN_SIZE) { this.scale = 1; } else { this.scale *= hs; } var viewImg = this.$image; var nWidth = this.naturalWidth * this.scale; var nHeight = this.naturalHeight * this.scale; var nLeft = frameSize.width / 2 + dx - nWidth * ox; var nTop = frameSize.height / 2 + dy - nHeight * oy; var maxTop, minTop, maxLeft, minLeft; if (nHeight > frameSize.height) { maxTop = 0; minTop = frameSize.height - nHeight; } else { minTop = frameSize.height / 2 - nHeight / 2; maxTop = minTop; } if (nWidth > frameSize.width) { maxLeft = 0; minLeft = frameSize.width - nWidth; } else { minLeft = frameSize.width / 2 - nWidth / 2; maxLeft = minLeft; } nLeft = Math.min(Math.max(nLeft, minLeft), maxLeft); nTop = Math.min(Math.max(nTop, minTop), maxTop); if (hs < 1 && nWidth < this.naturalWidth && Math.max(nWidth, nHeight) < 10) return; // setTimeout(function () { this.$image.addStyle({ width: nWidth + 'px', height: nHeight + 'px', left: 'calc(' + (nLeft - frameSize.width / 2) + 'px + 50%)', top: 'calc(' + (nTop - frameSize.height / 2) + 'px + 50%)' }); }; PhotoSwipeFragItem.prototype.ev_mousedown = function (event) { var bound = this.$frame.getBoundingClientRect(); var imgBound = this.$image.getBoundingClientRect(); this._mouseData = { bound: bound, imgBound: imgBound, imgBound: imgBound, clientX: event.clientX, clientY: event.clientY, offsetX: event.clientX - bound.left, offsetY: event.clientY - bound.top, imgOffsetX: event.clientX - imgBound.left, imgOffsetY: event.clientY - imgBound.top, imgOffsetXR: (event.clientX - imgBound.left) / imgBound.width, }; if (event.target.classList.contains('ptswpf-image')) { if (this.mode == this.MODE_PAN) { this.ev_pan_mousedown(event); } else if (this.mode == this.MODE_ZOOM_IN) { this.ev_zoomin_mousedown(event); } else if (this.mode == this.MODE_ZOOM_OUT) { this.ev_zoomout_mousedown(event); } } }; PhotoSwipeFragItem.prototype.ev_pan_mousemove = function (event) { console.log(event.type); event.preventDefault(); this.snap = -1; var bound = this.$frame.getBoundingClientRect(); var newOffsetX = event.clientX - bound.left; var newOffsetY = event.clientY - bound.top; var dx = newOffsetX - this._mouseData.offsetX; var dy = newOffsetY - this._mouseData.offsetY; this.$image.addStyle({ left: 'calc(' + (-this._mouseData.bound.width / 2 + this._mouseData.imgBound.left - this._mouseData.bound.left + dx) + 'px + 50%)', top: 'calc(' + (-this._mouseData.bound.height / 2 + this._mouseData.imgBound.top - this._mouseData.bound.top + dy) + 'px + 50%)', }); }; PhotoSwipeFragItem.prototype.ev_pan_mousefinish = function (event) { PhotoSwipeFrag_$(document.body) .off(BrowserDetector["a" /* default */].isMobile ? 'pointermove' : 'mousemove', this.ev_pan_mousemove) .off(BrowserDetector["a" /* default */].isMobile ? 'pointerleave' : 'mouseleave', this.ev_pan_mousefinish) .off(BrowserDetector["a" /* default */].isMobile ? 'pointerup' : 'mouseup', this.ev_pan_mousefinish); var newStyle = {}; var imgBound = this.$image.getBoundingClientRect(); var bound = this.$frame.getBoundingClientRect(); if (bound.width > imgBound.width) { newStyle.left = 'calc(50% - ' + (imgBound.width / 2) + 'px)'; } else if (imgBound.left > bound.left) { newStyle.left = 'calc(50% - ' + (bound.width / 2) + 'px)'; } else if (imgBound.right < bound.right) { newStyle.left = 'calc(' + (bound.width / 2 - imgBound.width) + 'px + 50%)'; } if (bound.height > imgBound.height) { newStyle.top = 'calc(50% - ' + (imgBound.height / 2) + 'px)'; } else if (imgBound.top > bound.top) { newStyle.top = 'calc(50% - ' + (bound.height / 2) + 'px)'; } else if (imgBound.bottom < bound.bottom) { newStyle.top = 'calc(' + (bound.height / 2 - imgBound.height) + 'px + 50%)'; } if (newStyle.left || newStyle.top) { this.beginAnimateTimeout(); this.$image.addStyle(newStyle); } }; PhotoSwipeFragItem.prototype.ev_pan_mousedown = function (event) { PhotoSwipeFrag_$(document.body) .on(BrowserDetector["a" /* default */].isMobile ? 'pointermove' : 'mousemove', this.ev_pan_mousemove) .on(BrowserDetector["a" /* default */].isMobile ? 'pointerleave' : 'mouseleave', this.ev_pan_mousefinish) .on(BrowserDetector["a" /* default */].isMobile ? 'pointerup' : 'mouseup', this.ev_pan_mousefinish); }; PhotoSwipeFragItem.prototype.ev_zoomin_mousedown = function (event) { this.beginAnimateTimeout(); this.zoom(1.3, event); }; PhotoSwipeFragItem.prototype.ev_zoomout_mousedown = function (event) { this.beginAnimateTimeout(); this.zoom(1 / 1.3, event); }; /* harmony default export */ var absol_photoswipeviewer_PhotoSwipeFrag = (PhotoSwipeFrag); // CONCATENATED MODULE: ./js/editor/PhotoViewer.js function PhotoViewer() { core_BaseEditor.call(this); absol_photoswipeviewer_PhotoSwipeFrag.call(this); } Object.assign(PhotoViewer.prototype, absol_photoswipeviewer_PhotoSwipeFrag.prototype); for (var prot in core_BaseEditor.prototype) { if (core_BaseEditor.prototype[prot] == AppPattern_Context.prototype[prot]) continue; if (PhotoViewer.prototype[prot] != AppPattern_Context.prototype[prot]) continue; PhotoViewer.prototype[prot] = core_BaseEditor.prototype[prot]; } PhotoViewer.prototype.constructor = PhotoViewer; PhotoViewer.prototype.setData = function (data) { var self = this; if (data.images) { data.images.forEach(function (photoItem) { self.push(photoItem); }); } }; /* harmony default export */ var editor_PhotoViewer = (PhotoViewer); // EXTERNAL MODULE: ./css/statusbar.css var statusbar = __webpack_require__(299); // CONCATENATED MODULE: ./js/dom/StatusBar.js /** * Left: branch, sync, error, warning * Right: position(Ln x, Col y) , font-size, indent mode , language, status ,alert */ var StatusBar_ = FCore._; var StatusBar_$ = FCore.$; function StatusBar() { this.$leftCtn = StatusBar_$('.as-status-bar-left', this); this.$rightCtn = StatusBar_$('.as-status-bar-right', this); } StatusBar.render = function () { return StatusBar_({ "class": 'as-status-bar', child: ['.as-status-bar-left', '.as-status-bar-right'] }); }; FCore.install('statusbar', StatusBar); /* harmony default export */ var dom_StatusBar = (StatusBar); // CONCATENATED MODULE: ./js/editor/FormEditor.js var FormEditor_ = FCore._; var FormEditor_$ = FCore.$; function FormEditor() { core_BaseEditor.call(this); this.prefix = randomIdent(16) + "_"; this.setContext(R.FORM_EDITOR, this); this.cmdRunner.assign(cmds_FormEditorCmd); this.style = { leftSizeWidth: 16, //em leftSizeMinWidth: 10, rightSizeWidth: 23, //em rightSizeMinWidth: 15 }; this.projectExplorer = new fragment_ProjectExplorer(); this.editorHolders = {}; this.activeEditorHolder = null; this.mFormPreview = new editor_FormPreview(); this.mComponentPicker = new editor_ComponentPicker(); this.mCMDTool = new fragment_CMDTool(); this.statusBarElt = FormEditor_('statusbar'); this.setContext(R.STATUS_BAR_ELT, this.statusBarElt); this.setContext(R.COMPONENT_PICKER, this.mComponentPicker); this.setContext(R.CMD_TOOL, this.mCMDTool); this.setContext(R.PROJECT_EXPLORER, this.projectExplorer); this.mComponentPicker.attach(this); // share, but not run this.mCMDTool.attach(this); this.mFormPreview.attach(this); this.projectExplorer.attach(this); } Object.defineProperties(FormEditor.prototype, Object.getOwnPropertyDescriptors(core_BaseEditor.prototype)); FormEditor.prototype.constructor = FormEditor; FormEditor.prototype.CONFIG_STORE_KEY = "AS_FormEditor_config"; FormEditor.prototype.SUPPORT_EDITOR = { form: editor_LayoutEditor, image: editor_PhotoViewer, jpg: editor_PhotoViewer }; Object.keys(editor_CodeEditor.prototype.TYPE_MODE).forEach(function (typeName) { FormEditor.prototype.SUPPORT_EDITOR[typeName] = editor_CodeEditor; }); FormEditor.prototype.onStart = function () { this.projectExplorer.start(); }; FormEditor.prototype.onStop = function () { this.projectExplorer.stop(); }; FormEditor.prototype.onPause = function () { this.projectExplorer.pause(); var self = this; this.runningEditorsIsPaused = Object.keys(this.editorHolders).filter(function (id) { var holder = self.editorHolders[id]; if (holder.editor && holder.editor.state == 'RUNNING') { holder.editor.pause(); return true; } }); }; FormEditor.prototype.onResume = function () { this.projectExplorer.resume(); var self = this; if (this.runningEditorsIsPaused) { this.runningEditorsIsPaused.forEach(function (id) { var holder = self.editorHolders[id]; if (holder.editor && holder.editor.state.match('PAUSE')) { holder.editor.resume(); } }); this.runningEditorsIsPaused = []; } }; FormEditor.prototype.config = { leftSiteWidthPercent: 15 }; FormEditor.prototype.openProject = function (name) { this.projectExplorer.openProject(name); this.mComponentPicker.getView(); //load component constructor }; FormEditor.prototype.openItem = function (type, ident, name, contentArguments, desc) { var self = this; if (this.editorHolders[ident]) { this.editorHolders[ident].tabframe.requestActive(); } else { if (this.SUPPORT_EDITOR[type]) { var editor = new this.SUPPORT_EDITOR[type](); editor.attach(this); var accumulator = { type: type, contentArguments: contentArguments }; this.openEditorTab(ident, name, desc, editor, accumulator); core_PluginManager.exec(this, R.PLUGINS.LOAD_CONTENT_DATA, accumulator); } else { throw new Error("The editor not support " + type + ' type!'); } } return this.editorHolders[ident]; }; FormEditor.prototype.openEditorTab = function (ident, name, desc, editor, accumulator) { var self = this; accumulator = accumulator || {}; var componentTool = editor.getComponentTool(); var outlineTool = editor.getOutlineTool(); var tabframe = FormEditor_({ tag: 'tabframe', attr: { name: name, desc: desc }, child: editor.getView() }); Object.assign(accumulator, { tabframe: tabframe, ident: ident, name: name, desc: desc, editor: editor, formEditor: this, componentTool: componentTool, outlineTool: outlineTool, sync: Promise.resolve(), waitFor: function waitFor(aw) { if (!aw.then) aw = Promise.resolve(aw); this.sync = Promise.all([this.sync, aw]); } }); this.editorHolders[ident] = accumulator; this.$editorSpaceCtn.removeStyle('visibility'); tabframe.on({ deactive: function deactive() { editor.pause(); if (self.activeEditorHolder == accumulator) self.activeEditorHolder = null; if (componentTool) componentTool.getView().remove(); if (outlineTool) outlineTool.getView().remove(); if (componentTool == self.mComponentPicker) self.mComponentPicker.bindWithEditor(undefined); }, active: function active() { editor.start(); self.activeEditorHolder = accumulator; if (componentTool) componentTool.getView().addTo(self.$componentTabFrame); if (outlineTool) outlineTool.getView().addTo(self.$outlineTabFrame); if (componentTool == self.mComponentPicker) self.mComponentPicker.bindWithEditor(editor); }, remove: function remove() { self.editorHolders[ident].editor.destroy(); self.editorHolders[ident] = undefined; delete self.editorHolders[ident]; if (Object.keys(self.editorHolders).length == 0) self.$editorSpaceCtn.addStyle('visibility', 'hidden'); } }); this.$mainTabview.addChild(tabframe); return accumulator; }; FormEditor.prototype.getEditorHolderByIdent = function (ident) { return this.editorHolders[ident]; }; FormEditor.prototype.getEditorHolderByEditor = function (editor) { for (var ident in this.editorHolders) { if (this.editorHolders[ident].editor == editor) return this.editorHolders[ident]; } return null; }; FormEditor.prototype.getAllEditorHolderByEditorClass = function (clazz) { var res = []; for (var ident in this.editorHolders) { if (this.editorHolders[ident].editor.constructor == clazz) res.push(this.editorHolders[ident]); } return res; }; FormEditor.prototype.getView = function () { if (this.$view) return this.$view; var self = this; this.$view = FormEditor_({ "class": 'as-form-editor', attr: { tabindex: '1' }, child: [{ "class": 'as-form-editor-left-tab-bar', child: [{ tag: 'button', id: this.prefix + 'button-tab-explorer', child: 'span.mdi.mdi-file-multiple', attr: { title: 'Explorer' }, on: { click: this.toggleToolTab.bind(this, 'tab-explorer') } }, { tag: 'button', id: this.prefix + 'tab-component', child: 'span.mdi.mdi-view-grid-outline', attr: { title: 'Components' }, on: { click: this.toggleToolTab.bind(this, 'tab-component') } }, { tag: 'button', child: 'span.mdi.mdi-view-list', id: this.prefix + 'tab-outline', attr: { title: 'Outline' }, on: { click: this.toggleToolTab.bind(this, 'tab-outline') } }, { "class": 'as-form-editor-left-tab-bar-bottom-container', child: { tag: 'button', child: 'span.mdi.mdi-settings-outline' } }] }, { "class": 'as-form-editor-left-site-container', style: { width: 'calc(' + this.config.leftSiteWidthPercent + "% - 3em)" }, child: { tag: 'frameview', "class": ['xp-tiny', 'as-form-editor-left-site'], child: [{ tag: 'tabframe', "class": ['as-form-left-tool-site-tab'], attr: { name: 'Explorer', id: this.prefix + 'tab-explorer' }, child: [{ "class": 'as-form-tool-site-header', child: { tag: 'span', child: { text: 'EXPLORER' } } }, this.projectExplorer.getView()] }, { tag: 'tabframe', "class": ['as-form-left-tool-site-tab', 'absol-bscroller'], attr: { name: 'Component', id: this.prefix + 'tab-component' }, child: [{ "class": 'as-form-tool-site-header', child: { tag: 'span', child: { text: 'COMPONENTS' } } }] }, { tag: 'tabframe', "class": ['as-form-left-tool-site-tab'], attr: { name: 'Outline', id: this.prefix + 'tab-outline' }, child: [{ "class": 'as-form-tool-site-header', child: { tag: 'span', child: { text: 'OUTLINE' } } }] }] } }, { "class": 'as-form-editor-empty-space', style: { left: 'calc(' + this.config.leftSiteWidthPercent + "%)" }, child: { tag: 'frame-ico', style: { width: '10em', height: '10em', '-webkit-filter': 'grayscale(100%)', filter: 'grayscale(100%)', opacity: '0.2', position: 'absolute', right: '1em', bottom: '1em' } } }, { "class": 'as-form-editor-editor-space-container', style: { left: 'calc(' + this.config.leftSiteWidthPercent + "%)", visibility: 'hidden' }, child: { tag: 'tabview', "class": 'as-form-editor-main-tabview' } }, { "class": ['as-form-editor-resizer', 'vertical', 'left-site'], style: { left: 'calc(' + this.config.leftSiteWidthPercent + "% - 0.2em)" } }], on: { keydown: this.ev_keydown.bind(this) } }); this.$quickToolBar = FormEditor_({ "class": 'as-form-editor-quick-toolbar' }); this.quickToolTabMenu = FormEditor_({ tag: 'button', child: 'span.mdi.mdi-dots-horizontal' }).addTo(this.$quickToolBar); js_QuickMenu.toggleWhenClick(this.quickToolTabMenu, { onSelect: function onSelect(item) { var cmd = item.cmd; if (cmd) { self.execCmd(cmd); } }, getMenuProps: function getMenuProps() { return { extendStyle: { 'font-size': '14px' }, items: [{ text: "Close All", icon: 'span.mdi.mdi-close-box-multiple-outline', cmd: 'closeAll' }, { text: "Close Saved", icon: 'span.mdi.mdi-progress-close', cmd: 'closeSaved' }, { text: "Save All and Close", icon: 'span.mdi.mdi-content-save-all-outline', cmd: 'saveAllNClose' }] }; } }); this.$leftTabbar = FormEditor_$('.as-form-editor-left-tab-bar', this.$view); this.$mainTabview = FormEditor_$('.as-form-editor-main-tabview', this.$view); this.$mainTabview.appendChild(this.$quickToolBar); this.$exploreTabFrame = FormEditor_$('tabframe#' + this.prefix + 'tab-explorer', this.$view); this.$componentTabFrame = FormEditor_$('tabframe#' + this.prefix + 'tab-component', this.$view); this.$outlineTabFrame = FormEditor_$('tabframe#' + this.prefix + 'tab-outline', this.$view); this.$attachhook = FormEditor_('attachook').addTo(this.$view).on('error', function () { Dom["b" /* default */].addToResizeSystem(this); this.updateSize = this.updateSize || self.ev_resize.bind(this); }); this.$leftSiteCtn = FormEditor_$('.as-form-editor-left-site-container', this.$view); this.$rightSiteCtn = FormEditor_$('.as-form-editor-right-site-container', this.$view); this.$editorSpaceCtn = FormEditor_$('.as-form-editor-editor-space-container', this.$view); this.$emptySpace = FormEditor_$('.as-form-editor-empty-space', this.$view); this.$leftSiteResizer = js_Draggable(FormEditor_$('.as-form-editor-resizer.vertical.left-site', this.$view)).on('predrag', this.ev_preDragLeftResizer.bind(this)).on('enddrag', this.ev_endDragLeftResizer.bind(this)).on('drag', this.ev_dragLeftResizer.bind(this)); this.$leftFrameView = FormEditor_$('frameview', this.$leftSiteCtn); this.$leftFrameView.activeFrameById(this.prefix + 'tab-component'); this.$contextCaptor = FormEditor_('contextcaptor').addTo(this.$view).attachTo(this.$view); this.toggleToolTab('tab-explorer'); return this.$view; }; FormEditor.prototype.ev_styleEditorChange = function (event) { // this.mLayoutEditor.autoExpandRootLayout(); if (this._focusElement) this._focusElement.reMeasure(); Dom["b" /* default */].updateResizeSystem(); if (event.name == 'vAlign' || event.name == 'hAlign') this.mLayoutEditor.updateAnchor();else this.mLayoutEditor.updateAnchorPosition(); this.emit('change', Object.assign({ formEditor: this }, event), this); }; FormEditor.prototype.setComponentProperty = function (name, value) { return this.component.setAttribute(name, value); }; FormEditor.prototype.getComponentProperty = function (name) { return this.component.getAttribute(name); }; FormEditor.prototype.ev_resize = function () {}; FormEditor.prototype.setLeftSiteWidthPercent = function (value) { if (value > 8) { this.config.leftSiteWidthPercent = value; this.saveConfig(); if (this.$view) { this.$leftSiteCtn.addStyle('width', 'calc(' + this.config.leftSiteWidthPercent + "% - 3em)"); this.$editorSpaceCtn.addStyle('left', this.config.leftSiteWidthPercent + '%'); this.$emptySpace.addStyle('left', this.config.leftSiteWidthPercent + '%'); if (this._dragLeftMovingData) { this.$leftSiteResizer.addStyle({ left: 'calc(' + this.config.leftSiteWidthPercent + '% - 8em)' }); } else this.$leftSiteResizer.addStyle('left', 'calc(' + this.config.leftSiteWidthPercent + "% - 0.1em)"); } } }; FormEditor.prototype.ev_preDragLeftResizer = function (event) { this.$leftSiteResizer.addStyle({ width: '19em', left: 'calc(' + this.config.leftSiteWidthPercent + '% - 8em)' }); this._dragLeftMovingData = { widthPercent: this.config.leftSiteWidthPercent, fontSize: this.$view.getFontSize(), bound: this.$view.getBoundingClientRect() }; }; FormEditor.prototype.ev_endDragLeftResizer = function (event) { this._dragLeftMovingData = undefined; delete this._dragLeftMovingData; this.setLeftSiteWidthPercent(this.config.leftSiteWidthPercent); this.$leftSiteResizer.removeStyle('width'); this.saveConfig(); }; FormEditor.prototype.ev_dragLeftResizer = function (event) { this.setLeftSiteWidthPercent(this._dragLeftMovingData.widthPercent + event.moveDX / this._dragLeftMovingData.bound.width * 100); Dom["b" /* default */].updateResizeSystem(); }; FormEditor.prototype.ev_keydown = function (event) {}; FormEditor.prototype.ev_layoutEditorChange = function () {}; FormEditor.prototype.toggleToolTab = function (ident) { if (this._lastToolTabIdent != ident) { this.$leftFrameView.activeFrameById(this.prefix + ident); FormEditor_$('button', this.$leftTabbar, function (button) { if (button.id && button.id.indexOf(ident) >= 0) { button.addClass('active'); } else { button.removeClass('active'); } }); this.$leftSiteResizer.removeStyle('display'); if (!this._lastToolTabIdent) { this.$leftSiteCtn.removeStyle('visibility'); this.$leftSiteCtn.addStyle('width', 'calc(' + this.config.leftSiteWidthPercent + "% - 3em)"); this.$editorSpaceCtn.addStyle('left', this.config.leftSiteWidthPercent + '%'); this.$emptySpace.addStyle('left', this.config.leftSiteWidthPercent + '%'); window.dispatchEvent(new Event('resize')); } this._lastToolTabIdent = ident; } else { this._lastToolTabIdent = null; this.$leftFrameView.activeFrame(null); FormEditor_$('button', this.$leftTabbar, function (button) { button.removeClass('active'); }); this.$leftSiteResizer.addStyle('display', 'none'); this.$leftSiteCtn.addStyle('visibility', 'hidden'); this.$editorSpaceCtn.addStyle('left', '3em'); this.$emptySpace.addStyle('left', '3em'); window.dispatchEvent(new Event('resize')); } }; /* harmony default export */ var editor_FormEditor = (FormEditor); // EXTERNAL MODULE: ./css/layoutsizeeditor.css var layoutsizeeditor = __webpack_require__(301); // CONCATENATED MODULE: ./js/propertyeditors/LayoutSizeEditor.js var LayoutSizeEditor_ = FCore._; var LayoutSizeEditor_$ = FCore.$; function LayoutSizeEditor() { AppPattern_Context.call(this); EventEmitter["b" /* default */].call(this); } Object.defineProperties(LayoutSizeEditor.prototype, Object.getOwnPropertyDescriptors(AppPattern_Context.prototype)); Object.defineProperties(LayoutSizeEditor.prototype, Object.getOwnPropertyDescriptors(EventEmitter["b" /* default */].prototype)); LayoutSizeEditor.prototype.constructor = LayoutSizeEditor; LayoutSizeEditor.prototype.getView = function () { if (this.$view) return this.$view; this.$view = LayoutSizeEditor_({ "class": 'as-layout-size-editor', tag: 'sizebox', props: { boxTitle: 'Position' }, child: { tag: 'sizebox', props: { boxTitle: 'marrgin' } } }); ; return this.$view; }; function SizeBox() { this.$left = LayoutSizeEditor_({ tag: 'spaninput', elt: LayoutSizeEditor_$('.as-size-box-editor-position-left>span.absol-span-input', this), props: { type: 'number' } }); this.$right = LayoutSizeEditor_({ tag: 'spaninput', elt: LayoutSizeEditor_$('.as-size-box-editor-position-right>span.absol-span-input', this), props: { type: 'number' } }); this.$top = LayoutSizeEditor_({ tag: 'spaninput', elt: LayoutSizeEditor_$('.as-size-box-editor-position-top span.absol-span-input', this), props: { type: 'number' } }); this.$bottom = LayoutSizeEditor_({ tag: 'spaninput', elt: LayoutSizeEditor_$('.as-size-box-editor-position-bottom span.absol-span-input', this), props: { type: 'number' } }); this.$center = LayoutSizeEditor_$('.as-size-box-editor-position-center', this); this.$title = LayoutSizeEditor_$('.as-size-box-editor-title', this); } SizeBox.prototype.addChild = function (elt) { this.$center.addChild(elt); return this; }; SizeBox.property = {}; SizeBox.property.boxTitle = { set: function set(value) { this.$title.innerHTML = value + ''; }, get: function get() { return this.$title.innerHTML; } }; SizeBox.render = function () { return LayoutSizeEditor_('<div class="as-size-box-editor">\ <div class="as-size-box-editor-position-top">\ <div><div class="as-size-box-editor-title">Title text</div></div>\ <div><span class="absol-span-input" contenteditable="true"></span></div>\ <div></div>\ </div>\ <div class="as-size-box-editor-position-mid">\ <div class="as-size-box-editor-position-left">\ <span class="absol-span-input" contenteditable="true"></span>\ </div>\ <div class="as-size-box-editor-position-center">\ </div>\ <div class="as-size-box-editor-position-right">\ <span class="absol-span-input" contenteditable="true"></span>\ </div>\ </div>\ <div class="as-size-box-editor-position-bottom">\ <div></div>\ <div><span class="absol-span-input" contenteditable="true"></span></div>\ <div></div>\ </div>\ </div>'); }; FCore.install('sizebox', SizeBox); /* harmony default export */ var propertyeditors_LayoutSizeEditor = (LayoutSizeEditor); // CONCATENATED MODULE: ./js/frame/plugins.js var WOKSPACE_FOLDER = 'formeditor/workspace'; var extIcons = { form: 'span.mdi.mdi-card-bulleted-outline', jpg: 'span.mdi.mdi-file-image-outline', js: 'span.mdi.mdi-nodejs', json: 'span.mdi.mdi-json', html: 'span.mdi.mdi-xml', css: 'span.mdi.mdi-language-css3', gitignore: 'span.mdi.mdi-git', license: 'span.mdi.mdi-license', md: 'span.mdi.mdi-markdown-outline', "*": 'span.mdi.mdi-file-document-outline' }; function lsWorkspace(path) { return Network_XHR.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'ls -la -F "' + path + '"', cwd: WOKSPACE_FOLDER })).then(function (out) { return out.trim().split(/[\r\n]+/).slice(1).map(function (line) { var parts = line.split(/\s+/); var name = parts[8]; var type = 'FILE'; var ext = undefined; if (name[name.length - 1] == '/' || name[name.length - 1] == '\\') { type = "FOLDER"; name = name.substr(0, name.length - 1); } else { ext = (name.split('.').pop() || '').toLowerCase(); } return { type: type, name: name, fullPath: path + '/' + name, time: parts[5] + ' ' + parts[6], size: parseInt(parts[4]), owner: parts[2], ext: ext }; }).filter(function (obj) { return obj.name.indexOf('.') != 0; }); }); } function writeFileBase64(path, b64) { return Network_XHR.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'echo \'' + b64 + '\'>' + path, cwd: WOKSPACE_FOLDER })).then(function (out) { console.log(out); }); } ; function writeFile(path, text) { var b64 = base64EncodeUnicode(text); return Network_XHR.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'echo \'' + b64 + '\' | base64 -d >' + path, cwd: WOKSPACE_FOLDER })).then(function (out) { console.log(out); }); } ; function catWorkspace(path) { return Network_XHR.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'cat "' + path + '"', cwd: WOKSPACE_FOLDER })); } function PluginProjectExplore(context) { var _ = context._; var $ = context.$; var folder2icon = { form: { tag: 'img', props: { src: 'https://absol.cf/exticons/extra/folder-neon.svg' } }, template: { tag: 'img', props: { src: 'https://absol.cf/exticons/extra/folder-svn.svg' } } }; /** * @type {import('../fragment/ProjectExplorer').default} */ var self = context.self; function contextMenuEventHandler(contentArguments, event) { var items = []; if (contentArguments.type === 'FILE') { items.push({ text: 'Open', icon: 'span.mdi.mdi-menu-open', cmd: 'open' }); } else if (contentArguments.name === 'form') { items.push({ text: 'New Form', icon: 'span.mdi.mdi-plus', cmd: 'new_form' }); } event.showContextMenu({ items: items, extendStyle: { fontSize: '12px' } }, function (event) { switch (event.menuItem.cmd) { case 'open': self.openItem(contentArguments.ext, contentArguments.fullPath.replace(/[^a-zA-Z0-9\_]/g, '_'), contentArguments.name, contentArguments, contentArguments.fullPath); break; } }); } context.loadExpTree = function () { function visit(rootElt, path) { lsWorkspace(path.join('/')).then(function (result) { result.forEach(function (it) { var res; if (it.type == 'FOLDER') { res = _({ tag: 'exptree', props: { name: it.name, icon: folder2icon[it.name] || 'span.mdi.mdi-folder', status: 'close' }, on: { statuschange: function statuschange() { if (this.status == 'open') visit(res, path.concat([it.name])); } } }); } else if (it.type == 'FILE') { res = _({ tag: 'exptree', props: { name: it.name, icon: extIcons[it.ext] || extIcons['*'] } }); res.getNode().on('dblclick', function (event) { self.openItem(it.ext, it.fullPath.replace(/[^a-zA-Z0-9\_]/g, '_'), it.name, it, it.fullPath); }); } res.getNode().defineEvent('contextmenu').on('contextmenu', contextMenuEventHandler.bind(res, it)); res.addTo(rootElt); }); }); rootElt.clearChild(); } var droppanel = self.$droppanel; visit(droppanel, [self.data.projectName]); }; } function downloadFragmentData(path) { return catWorkspace(path).then(function (out) { if (out[0] == '{') { // is json try { var data = JSON.parse(out); return data; } catch (error) { console.error(error); } } else { return jszip_min_default.a.loadAsync(out, { base64: true }).then(function (zip) { return zip.file('data.txt').async('text').then(function (text) { try { var data = JSON.parse(text); return data; } catch (error) { console.error(error); } }); }); } }); } function PluginLoadContentData(accumulator) { var sync; if (accumulator.contentArguments.ext == 'form') { sync = downloadFragmentData(accumulator.contentArguments.fullPath).then(function (data) { accumulator.editor.setData(data); }); } else if (editor_CodeEditor.prototype.TYPE_MODE[accumulator.contentArguments.ext]) { sync = catWorkspace(accumulator.contentArguments.fullPath).then(function (out) { try { accumulator.editor.setData({ value: out, type: accumulator.contentArguments.ext }); } catch (error) { console.error(error); } }); } else if (accumulator.contentArguments.ext == 'jpg') { accumulator.editor.setData({ images: ['//absol.cf/' + WOKSPACE_FOLDER + '/' + accumulator.contentArguments.fullPath] }); sync = Promise.resolve(); } accumulator.waitFor(sync); } function PluginSaveContentData(accumulator) { if (accumulator.contentArguments.ext == 'form') { var textData = JSON.stringify(accumulator.editor.getData()); var zip = new jszip_min_default.a(); zip.file('data.txt', textData); zip.generateAsync({ type: 'base64' }).then(function (b64) { writeFileBase64(accumulator.contentArguments.fullPath, b64).then(function (out) { console.log("Save success: ", accumulator.contentArguments.fullPath); }); }); } } function PluginBuildComponent(context) { var data = context.data; if (data.tag == "LoginForm") { context.result = context.self.build({ "tag": "RelativeLayout", "attributes": { "name": "PesionalInfor", "target": "", "formType": "SO_YEU_LY_LICH" }, "style": { "hAlign": "left", "vAlign": "top", "left": 0, "right": 0, "top": -20.040624999999977, "bottom": 0, "height": 353.40625, "width": 960.1563, "backgroundImage": "", "backgroundColor": "#ffffff00" }, "children": [{ "tag": "Ellipse", "attributes": { "name": "Circle_0", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 36.0625, "right": 624.0938, "top": 18.40625, "bottom": 35, "height": 300, "width": 300, "boxAlign": "lefttop", "fillColor": "#ebe936ee", "strokeColor": "#e31919e0", "strokeWidth": 1 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_1", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 83.703125, "right": 820.453175, "top": 80.40625, "bottom": 217, "height": 56, "width": 56, "boxAlign": "lefttop", "fillColor": "white", "strokeColor": "black", "strokeWidth": 1 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_2", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 209, "right": 695.1563, "top": 79, "bottom": 218.40625, "height": 56, "width": 56, "boxAlign": "lefttop", "fillColor": "white", "strokeColor": "black", "strokeWidth": 1 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_3", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 91.703125, "right": 827.453175, "top": 94.40625, "bottom": 218, "height": 41, "width": 41, "boxAlign": "lefttop", "fillColor": "#000000ff", "strokeColor": "black", "strokeWidth": 0 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_9", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 216, "right": 703.1563, "top": 92, "bottom": 220.40625, "height": 41, "width": 41, "boxAlign": "lefttop", "fillColor": "#000000ff", "strokeColor": "black", "strokeWidth": 0 } }, { "tag": "Rectangle", "attributes": { "name": "Rectangle_0", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 378.703125, "right": 348.453175, "top": 41.40625, "bottom": 163, "height": 149, "width": 233, "boxAlign": "lefttop", "fillColor": "#4fe01dc2", "strokeColor": "#3819b2c0", "strokeWidth": 11, "roundCornerX": 25, "roundCornerY": 0 } }] }); context.result.formType = 'LoginForm'; context.result.getData = function () { return { tag: 'LoginForm', style: this.style, attributes: this.attributes }; }; } } function PluginComponentPickerView(context) { var allNode = FCore_$('exptree', context.self.$view, function (node) { return node.name == "all"; }); var projectExplorer = context.self.getContext(R.PROJECT_EXPLORER); var projectName = projectExplorer.data.projectName; var formNode = FCore_({ tag: js_ExpTree.tag, props: { name: 'fragment', status: 'close' }, on: { press: context.toggleGroup }, child: [] }); allNode.addChild(formNode); lsWorkspace(projectName + '/' + 'form').then(function (res) { Promise.all(res.map(function (file) { var fragmentTag = file.name.replace(/\.form$/, ''); return downloadFragmentData(projectName + '/' + 'form/' + file.name).then(function (fData) { var fragmentConstructor = makeFmFragmentClass({ tag: fragmentTag, contentViewData: fData }); AssemblerInstance.addConstructor(fragmentConstructor); return FCore_({ tag: 'exptree', props: { name: fragmentTag, icon: 'span.mdi.mdi-terraform', componentConstructor: fragmentConstructor } }); }); })).then(function (eltList) { eltList.forEach(function (elt) { formNode.addChild(elt); }); }); }); var templateNode = FCore_({ tag: js_ExpTree.tag, props: { name: 'template', status: 'close' }, on: { press: context.toggleGroup }, child: [] }); allNode.addChild(templateNode); lsWorkspace(projectName + '/' + 'template').then(function (res) { Promise.all(res.map(function (file) { var templateName = file.name.replace(/\.ftl$/, ''); return downloadFragmentData(projectName + '/' + 'template/' + file.name).then(function (fData) { return FCore_({ tag: 'exptree', props: { name: templateName, icon: 'span.mdi.mdi-terraform', componentConstructor: fData } }); }); })).then(function (eltList) { console.log(eltList); eltList.forEach(function (elt) { templateNode.addChild(elt); }); }); }); } // CONCATENATED MODULE: ./index.js /* harmony default export */ var index_0 = ({ FormEditorPreconfig: js_FormEditorPreconfig, framePlugin: plugins_namespaceObject, R: R, AllPropertyEditor: editor_AllPropertyEditor, AttributeEditor: editor_AttributeEditor, AnchorEditor: anchoreditors_RelativeAnchorEditor, ComponentOutline: editor_ComponentOutline, ComponentPicker: editor_ComponentPicker, ListEditor: editor_ListEditor, PropertyEditor: editor_PropertyEditor, StyleEditor: editor_StyleEditor, LayoutSizeEditor: propertyeditors_LayoutSizeEditor, LayoutEditorCmd: cmds_LayoutEditorCmd, FormPreviewCmd: cmds_FormPreviewCmd, FormPreviewCmdDescriptors: FormPreviewCmdDescriptors, PluginManager: core_PluginManager, FViewable: core_FViewable, FNode: core_FNode, FModel: core_FModel, FormEditor: editor_FormEditor, LayoutEditor: editor_LayoutEditor, ScalableComponent: core_ScalableComponent, ContentScalelessComponent: core_ContentScalelessComponent, RelativeAnchor: anchors_RelativeAnchor, BaseComponent: core_BaseComponent, RelativeLayout: layouts_RelativeLayout, TextInput: components_TextInput, DateInput: components_DateInput, Button: components_Button, CheckBox: Checkbox, ComboBox: components_ComboBox, Image: components_Image, Label: components_Label, NumberInput: components_NumberInput, Radio: components_Radio, Table: components_Table, Text: components_Text, TextArea: components_TextArea, Assembler: core_Assembler, core: FCore, makeFmFragmentConstructor: makeFmFragmentClass, makeFmFragmentClass: makeFmFragmentClass, AssemblerInstance: AssemblerInstance }); // CONCATENATED MODULE: ./dev.js window.absol.form = index_0; /***/ }) /******/ ]);