![]() 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/libs/absol-vchart/dist/ |
Upload File : |
/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 6657: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ absol_acomp_AComp) }); // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(3855); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/MultiLanguageCSS.js var MultiLanguageCSS = __webpack_require__(1812); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(6628); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DebugTask.js var _ = ACore/* default._ */.Z._; var $ = ACore/* default.$ */.Z.$; 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); __webpack_require__.g.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(__webpack_require__.g, args) pendingTimeout++; timeoutDict[timeoutId] = true; DebugTask.$view.timeout = pendingTimeout; return timeoutId; } __webpack_require__.g.clearTimeout = function (timeoutId) { if (timeoutDict[timeoutId]) { pendingTimeout--; delete timeoutDict[timeoutId]; DebugTask.$view.timeout = pendingTimeout; } return originClearTimeout.apply(__webpack_require__.g, arguments); }; __webpack_require__.g.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(__webpack_require__.g, args) pendingInterval++; intervalDict[intervalId] = true; DebugTask.$view.interval = pendingInterval; return intervalId; } __webpack_require__.g.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(__webpack_require__.g, args); }; Dom/* default.documentReady.then */.ZP.documentReady.then(function () { DebugTask.$view.addTo(document.body); }); }; ACore/* default.install */.Z.install('debugtask', DebugTask); /* harmony default export */ const js_DebugTask = (DebugTask); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/debugtask.css var debugtask = __webpack_require__(7388); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/common.css var common = __webpack_require__(8826); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Draggable.js var Draggable = __webpack_require__(5611); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiChars.js var EmojiChars = __webpack_require__(7712); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiAnims.js var EmojiAnims = __webpack_require__(4670); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/dom/install.js + 242 modules var install = __webpack_require__(6369); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/tool/BlurTrigger.js var BlurTrigger = __webpack_require__(9346); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/AComp.js var AComp = { core: ACore/* default */.Z, $: ACore/* default.$ */.Z.$, _: ACore/* default._ */.Z._, creator: ACore/* default.creator */.Z.creator, buildDom: ACore/* default.buildDom */.Z.buildDom, runDebugTask: js_DebugTask.start.bind(js_DebugTask), Draggable: Draggable/* default */.Z, EmojiChars: EmojiChars/* default */.Z, EmojiAnims: EmojiAnims/* default */.Z, install: install/* default */.Z, BlurTrigger: BlurTrigger/* default */.Z }; window.runDebugTask = js_DebugTask.start.bind(js_DebugTask); /* harmony default export */ const absol_acomp_AComp = (AComp); /***/ }), /***/ 3855: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "_": () => (/* binding */ _), /* harmony export */ "$": () => (/* binding */ $), /* harmony export */ "$$": () => (/* binding */ $$), /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_default_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4630); /* harmony import */ var _css_default_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_default_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6628); var ACore = new absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP({ creator: Object.assign({}, absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* ["default"].ShareInstance.creator */ .ZP.ShareInstance.creator) }); var _ = ACore._; var $ = ACore.$; var $$ = ACore.$$; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ACore); /***/ }), /***/ 9782: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6628); /* harmony import */ var _ContextMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7054); /* harmony import */ var absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(557); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(863); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3349); /* harmony import */ var absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9399); /*** * simple way, to replace old ContextCapture version ***/ function BContextCapture() { absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__/* ["default"].call */ .ZP.call(this); this.sync = Promise.resolve(); this.$root = null; this._pointerSession = 0; this.ev_contextMenu = this.ev_contextMenu.bind(this); } absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_4__/* ["default"].mixClass */ .ZP.mixClass(BContextCapture, absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP); 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 () { absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].documentReady.then */ .ZP.documentReady.then(function () { this.attachTo(document.body); }.bind(this)); }; BContextCapture.prototype.showContextMenu = _ContextMenu__WEBPACK_IMPORTED_MODULE_1__/* ["default"].prototype.showContextMenu */ .Z.prototype.showContextMenu; BContextCapture.prototype._fireContextMenuEvent = _ContextMenu__WEBPACK_IMPORTED_MODULE_1__/* ["default"].prototype._fireContextMenuEvent */ .Z.prototype._fireContextMenuEvent; BContextCapture.prototype._checkNeedHandle = _ContextMenu__WEBPACK_IMPORTED_MODULE_1__/* ["default"].prototype._checkNeedHandle */ .Z.prototype._checkNeedHandle; /*** * * @param {PointerEvent} event */ BContextCapture.prototype.ev_contextMenu = function (event) { this._pointerSession++; this._posCurrent = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(event.clientX, event.clientY); this.$target = event.target; if (this._checkNeedHandle(event.target)) { if (this._fireContextMenuEvent()) { event.preventDefault(); } } }; var instance = new BContextCapture(); if ((!absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_5__/* ["default"].isMobile */ .Z.isMobile || !absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_5__/* ["default"].isSafari */ .Z.isSafari) && (absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_5__/* ["default"].os.type */ .Z.os.type !== 'ios')) { absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_5__/* ["default"].nativeContextMenuSupport */ .Z.nativeContextMenuSupport = true; _ContextMenu__WEBPACK_IMPORTED_MODULE_1__/* ["default"].auto */ .Z.auto = instance.auto.bind(instance);//override old version } else { absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_5__/* ["default"].nativeContextMenuSupport */ .Z.nativeContextMenuSupport = false; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (instance); /***/ }), /***/ 7537: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_boardtable_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9936); /* harmony import */ var _css_boardtable_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_boardtable_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function Board() { } Board.tag = "board"; Board.render = function () { return _({ 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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(Board); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Board); /***/ }), /***/ 7548: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports EFFECT_ZONE_CLASS_NAME, DRAG_ZONE_CLASS_NAME, FREE_ZONE_CLASS_NAME */ /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var _css_boardtable_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9936); /* harmony import */ var _css_boardtable_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_boardtable_css__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _Board__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7537); /* harmony import */ var absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(557); /* harmony import */ var absol_src_HTML5_Element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1487); /* harmony import */ var absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2759); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(863); /* harmony import */ var _Hanger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(655); var _ = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function BoardTable() { var events = { touchstart: this.eventHandler.mousedown, mousedown: this.eventHandler.mousedown }; _Hanger__WEBPACK_IMPORTED_MODULE_8__/* ["default"].prototype.on2.call */ .Z.prototype.on2.call(this, events); this._childHolders = []; this._dragEventData = null; this._friends = []; this._longPressEventData = null; } BoardTable.tag = 'boardtable'; BoardTable.render = function () { return _({ 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 = _({ 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) { //todo: testing 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 (atIndex === -1) { this.insertBefore(elt, afterAt || this.firstChild); } else 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 absol_src_HTML5_Element__WEBPACK_IMPORTED_MODULE_4__/* ["default"].prototype.clearChild.call */ .Z.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 $(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 absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(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 = absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_5__/* ["default"].fromClientRect */ .Z.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 absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(touch.clientX, touch.clientY); } else { mousePos = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(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 absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(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 = absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_7__/* ["default"].copyEvent */ .ZP.copyEvent(event); if (isTouch) { _Hanger__WEBPACK_IMPORTED_MODULE_8__/* ["default"].prototype.on2.call */ .Z.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); if (thisBT._dragEventData) 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; _Hanger__WEBPACK_IMPORTED_MODULE_8__/* ["default"].prototype.off2.call */ .Z.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 = (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_7__/* .findChangedTouchByIdent */ .VY)(event, dragEventData.pointerIdent); if (!touch) return; var mousePos = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(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; } _Hanger__WEBPACK_IMPORTED_MODULE_8__/* ["default"].prototype.on2.call */ .Z.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 = $(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); _Hanger__WEBPACK_IMPORTED_MODULE_8__/* ["default"].prototype.on2.call */ .Z.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"; $(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 = absol_src_HTML5_Element__WEBPACK_IMPORTED_MODULE_4__/* ["default"].prototype.findChildAfter.call */ .Z.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 = absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_5__/* ["default"].fromClientRect */ .Z.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 = absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_6__/* ["default"].getScreenSize */ .ZP.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 = (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_7__/* .findChangedTouchByIdent */ .VY)(event, dragEventData.pointerIdent); if (touch) { pointerIdent = touch.identifier; mousePos = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(touch.clientX, touch.clientY); } } else { pointerIdent = -1; mousePos = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(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 = (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_7__/* .findChangedTouchByIdent */ .VY)(event, dragEventData.pointerIdent); if (touch) { pointerIdent = touch.identifier; mousePos = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(touch.clientX, touch.clientY); } } else { pointerIdent = -1; mousePos = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(event.clientX, event.clientY); } if (dragEventData.pointerIdent !== pointerIdent) return; dragEventData.mousePos = mousePos; var changed; if (dragEventData.state == 'DRAG') { setTimeout(function () { $(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) { _Hanger__WEBPACK_IMPORTED_MODULE_8__/* ["default"].prototype.off2.call */ .Z.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 = absol_src_HTML5_Element__WEBPACK_IMPORTED_MODULE_4__/* ["default"].prototype.findChildAfter.call */ .Z.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; } _Hanger__WEBPACK_IMPORTED_MODULE_8__/* ["default"].prototype.off2.call */ .Z.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__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(BoardTable); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BoardTable); /***/ }), /***/ 1728: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_checkboxinput_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3144); /* harmony import */ var _css_checkboxinput_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_checkboxinput_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var tickIcon = _(['<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"/>', ' <path class="minus" d="m4 287 h10 v2 h-10z"/>', ' </g>', '</svg>' ].join('') ); /*** * @extends AElement * @constructor */ function CheckboxInput() { this.$input = $('input', this) .on('change', this.notifyChange.bind(this)); this.checked = false; this.disabled = false; this.readOnly = false; this.on('click', this.eventHandler.click); this.onchange = null; } CheckboxInput.tag = "CheckboxInput".toLowerCase(); CheckboxInput.render = function (data) { return _({ 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; } }; CheckboxInput.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } } /*** * * @type {CheckboxInput} */ CheckboxInput.property.checked = { set: function (value) { this.$input.checked = !!value; this._updateCheckedClass(); }, get: function () { return this.$input.checked; } }; /*** * * @type {CheckboxInput} */ CheckboxInput.property.minus = { set: function (value) { if (value) { this.addClass('as-has-minus'); } else { this.removeClass('as-has-minus'); } }, get: function () { return this.hasClass('as-has-minus'); } }; 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 (event) { if (this.readOnly) { event.preventDefault(); } this._updateCheckedClass(); }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.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 = _({ tag: this.tag, attr: attrs, class: classList, style: style, props: props }); $(ph).selfReplace(newElt); } }; CheckboxInput.initAfterLoad = function () { absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].documentReady.then */ .ZP.documentReady.then(function () { CheckboxInput.autoReplace(); }) }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CheckboxInput); /***/ }), /***/ 4654: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_checkboxbutton_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2435); /* harmony import */ var _css_checkboxbutton_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_checkboxbutton_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _CheckBoxInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1728); _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install('checkboxbutton', _CheckBoxInput__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_CheckBoxInput__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z); /***/ }), /***/ 4845: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_chromecalendar_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9708); /* harmony import */ var _css_chromecalendar_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_chromecalendar_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7807); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(863); /* harmony import */ var _Scroller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9246); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3349); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1477); /* harmony import */ var absol_src_HTML5_DelaySignal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8098); /* harmony import */ var _Follower__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7094); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var calendarLangMap = { 'en': { monthNames: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayOfWeekNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], shortDayOfWeekNames: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], quarterNames: ['Q1', 'Q2', 'Q3', 'Q4'] }, 'vi': { monthNames: [ 'Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12' ], shortMonthNames: ['Thg 1', 'Thg 2', 'Thg 3', 'Thg 4', 'Thg 5', 'Thg 6', 'Thg 7', 'Thg 8', 'Thg 9', 'Thg 10', 'Thg 11', 'Thg 12'], dayOfWeekNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], shortDayOfWeekNames: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], quarterNames: ['Q1', 'Q2', 'Q3', 'Q4'] } }; var getCalendarSupportedLanguage = () => { var res = null; if (window['LanguageModule']) res = window['LanguageModule'].defaultcode; if (!res) res = navigator.language || navigator.userLanguage; res = res || 'en'; res = res.toLowerCase(); if (res === 'vn') res = 'vi'; if (!calendarLangMap[res]) res = 'en'; return res; } /** * get multi language text * @param {string} key * @returns {*} */ var getCMLText = key => { return calendarLangMap[getCalendarSupportedLanguage()][key]; }; var EV_CONTENT_CHANGE = 'ev_content_change'; /** * @extends AElement * @constructor */ function ChromeCalendar() { var thisCal = this; this.dayInWeekTexts = getCMLText('shortDayOfWeekNames'); this._startDayOfWeek = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.getDefaultFirstDayOfWeek)(); this._level = "day"; this.$years = $('.absol-chrome-calendar-years', this); this.$title = $('.absol-chrome-calendar-title', this) this.$titleTime = $('.title-time', this.$title); this.$instance = $('.absol-chrome-calendar-instance', this); this.$era = $('.absol-chrome-calendar-era', this) this.$month = $('.absol-chrome-calendar-month', this); this.$dayOfWeek = $('.absol-chrome-calendar-dayofweek', this); this._min = new Date(1890, 0, 1); this._max = new Date(2090, 0, 1); this._selectedDates = [absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfDay(new Date())]; this._viewDate = new Date(); this.$prevBtn = $('.absol-chrome-calendar-header-buttons > button.prev-btn', this) this.$todayBtn = $('.absol-chrome-calendar-header-buttons > button.today-btn', this) this.$nextBtn = $('.absol-chrome-calendar-header-buttons > button.next-btn', this) /*** * * @type {VScroller} */ this.$yearScroller = $('vscroller.absol-chrome-calendar-years', this); this.$yearItems = []; $('.absol-chrome-calendar-year', this.$yearScroller, function (e) { thisCal.$yearItems.push(e); }); this.$attachHook = _('attachhook').addTo(this); this.domSignal = new absol_src_HTML5_DelaySignal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z() .on(EV_CONTENT_CHANGE, () => { switch (this.level) { case 'day': case 'week': this.startViewer('month'); this.viewer.updateContent(); break; case 'month': case 'quarter': this.startViewer('year'); this.viewer.updateContent(); break; case 'year': this.startViewer('era'); break; default: break; } this.viewer.updateContent(); this.headerCtrl.updateTitle(); this.headerCtrl.updateButtons(); }) this.sync = new Promise(function (rs) { thisCal.$attachHook.on('attached', rs); }); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__/* ["default"].drillProperty */ .ZP.drillProperty(this, this, 'minLimitDate', 'min'); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__/* ["default"].drillProperty */ .ZP.drillProperty(this, this, 'minDateLimit', 'min'); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__/* ["default"].drillProperty */ .ZP.drillProperty(this, this, 'maxLimitDate', 'max'); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__/* ["default"].drillProperty */ .ZP.drillProperty(this, this, 'maxDateLimit', 'max'); this.headerCtrl = new CCHeaderController(this); this.viewers = { month: new CCMonthViewer(this), year: new CCYearViewer(this), era: new CCEraViewer(this) }; /** * * @type {CCViewerAbstract} */ this.viewer = this.viewers['month']; this.viewer.start(); /** * @type {number} * @name startDayOfWeek * @memberOf ChromeCalendar# */ /** * @type {Date[]} * @name selectedDates * @memberOf ChromeCalendar# */ /** * @type {'day'|'week'|'month'|'quarter'|'year'} * @name level * @memberOf ChromeCalendar# */ /** * @type {Date} * @name viewDate * @memberOf ChromeCalendar# */ } ChromeCalendar.tag = 'ChromeCalendar'.toLowerCase(); ChromeCalendar.render = function () { return _({ class: ['absol-chrome-calendar'], attr: { 'data-level': 'day', tabindex: '1' }, extendEvent: 'pick', child: [ { class: 'absol-chrome-calendar-header', child: [ { class: 'absol-chrome-calendar-title', child: [ { tag: 'span', class: 'title-time', child: { text: 'Septemper, 2019' } }, ] }, { 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: getCMLText('shortDayOfWeekNames').map(function (text) { return { child: { text: text } } }) }, { class: 'absol-chrome-calendar-month', }, { tag: 'vscroller', class: 'absol-chrome-calendar-years', }, { class: "absol-chrome-calendar-era" } ] } ] }); }; /** * @param {Date} date * @returns {Boolean} */ ChromeCalendar.prototype.isSelectedDate = function (date) { for (var i = 0; i < this._selectedDates.length; ++i) { if ((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(date, this._selectedDates[i]) === 0) return true; } return false; }; ChromeCalendar.prototype.isSelectedWeek = function (date) { return this._selectedDates.some(it => { if (date.getFullYear() !== it.getFullYear()) return false; var weekIdx = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.weekIndexOf)(date, false, this.startDayOfWeek); var itWeekIdx = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.weekIndexOf)(it, false, this.startDayOfWeek); return weekIdx === itWeekIdx; }); }; /** * @param {Date} date * @returns {Boolean} */ ChromeCalendar.prototype.isSelectedMonth = function (date) { for (var i = 0; i < this._selectedDates.length; ++i) { if ((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareMonth)(date, this._selectedDates[i]) === 0) return true; } return false; }; /** * @param {Date} date * @returns {Boolean} */ ChromeCalendar.prototype.isSelectedQuarter = function (date) { for (var i = 0; i < this._selectedDates.length; ++i) { if ((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareMonth)((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfQuarter)(date), (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfQuarter)(this._selectedDates[i])) === 0) return true; } return false; }; /** * @param {Date} date * @returns {Boolean} */ ChromeCalendar.prototype.isSelectedYear = function (date) { for (var i = 0; i < this._selectedDates.length; ++i) { if (date.getFullYear() === this._selectedDates[i].getFullYear()) return true; } return false; }; ChromeCalendar.prototype.dayCmpLimit = function (date) { if ((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(date, this._min) < 0) return -1; if ((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(date, this._max) > 0) return 1; return 0; }; ChromeCalendar.prototype.monthCmpLimit = function (date) { var startOfMonth = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfMonth)(date); var endOfMonth = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextMonth)(date); var minMil = Math.max(startOfMonth.getTime(), this._min.getTime()); var maxMil = Math.min(endOfMonth.getTime(), (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextDate)(this._max).getTime()); if (minMil < maxMil) return 0; return this.dayCmpLimit(date); }; ChromeCalendar.prototype.yearCmpLimit = function (date) { var startOfYear = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfYear)(date); var endOfYear = new Date(date.getFullYear() + 1, 0, 1); var minMil = Math.max(startOfYear.getTime(), this._min.getTime()); var maxMil = Math.min(endOfYear.getTime(), (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextDate)(this._max).getTime()); if (minMil < maxMil) return 0; return this.dayCmpLimit(date); }; ChromeCalendar.prototype.quarterCmpLimit = function (date) { var startOfQuarter = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfQuarter)(date); var endOfQuarter = new Date(date.getFullYear(), date.getMonth() + 3, 1); var minMil = Math.max(startOfQuarter.getTime(), this._min.getTime()); var maxMil = Math.min(endOfQuarter.getTime(), (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextDate)(this._max).getTime()); if (minMil < maxMil) return 0; return this.dayCmpLimit(date); } /** * * @param {"month"|"year"|"era"} key */ ChromeCalendar.prototype.startViewer = function (key) { if (!this.viewers[key]) return; if (this.viewers[key] === this.viewer) { this.viewer.start(); this.headerCtrl.updateTitle(); } else { this.viewer.stop(); this.viewer = this.viewers[key]; this.viewer.start(); this.headerCtrl.updateTitle(); } }; ChromeCalendar.property = {}; ChromeCalendar.property.selectedDates = { set: function (value) { value = value || []; if (!(value instanceof Array)) value = [value]; value = value.map(d => (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.implicitDate)(d)).filter(d => !!d); this._selectedDates = value; this._viewDate = this._selectedDates[0] || new Date(); this.domSignal.emit(EV_CONTENT_CHANGE); }, get: function () { var level = this._level; var res = this._selectedDates.map(d => { var res = d; switch (level) { case 'day': res = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfDay)(d); break; case 'week': res = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfWeek)(d, this.startDayOfWeek); if (res.getFullYear() < d.getFullYear()) res = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfYear)(d); break; case 'month': res = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfMonth)(d); break; case 'quarter': res = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfQuarter)(d); break; case 'year': res = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfYear)(d); break; } return res; }); res = res.reduce((ac, d) => { var key = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.keyStringOf)(d); if (ac.has[key]) return ac; ac.has[key] = d; ac.arr.push(d); return ac; }, { has: {}, arr: [] }).arr; res.sort((a, b) => { return a.getTime() - b.getTime(); }); return res; } }; ChromeCalendar.property.min = { set: function (value) { if (!value) value = new Date(1890, 0, 1); if (typeof value == 'number') value = new Date(value); value = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfDay)(value); value = new Date(Math.max(new Date(1890, 0, 1).getTime(), value.getTime())); this._min = value; this.domSignal.emit(EV_CONTENT_CHANGE); }, get: function () { return this._min; } }; //include maxLimitDate ChromeCalendar.property.max = { set: function (value) { if (!value) value = new Date(2090, 0, 1); if (typeof value == 'number') value = new Date(value); if (value.getTime() > (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfDay)(value).getTime()) value = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextDate)((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfDay)(value)); value = new Date(Math.min(new Date(2090, 0, 1).getTime(), value.getTime())); this._max = value; this.domSignal.emit(EV_CONTENT_CHANGE); }, get: function () { return this._max; } }; ChromeCalendar.property.multiSelect = { set: function (value) { value = false; // throw new Error('Not support yet!') var lastValue = this.multiSelect; value = !!value; if (lastValue !== value) { if (value) { this.addClass('as-multi-select') } else { this.removeClass('as-multi-select'); } } this.domSignal.emit(EV_CONTENT_CHANGE); }, get: function () { return this.hasClass('as-multi-select'); } }; ChromeCalendar.property.level = { set: function (value) { value = (value || '') + ''; value = value.toLowerCase(); if (['day', 'week', 'quarter', 'month', 'year'].indexOf(value) < 0) value = 'day'; if (this._level === value) return; this.attr('data-level', value); this._level = value; this.domSignal.emit(EV_CONTENT_CHANGE); }, get: function () { return this._level; } }; ChromeCalendar.prototype.dayInWeekTexts = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']; ChromeCalendar.property.startDayOfWeek = { set: function (value) { value = Math.max(0, Math.min(Math.floor(value || 0), 6)); if (this._startDayOfWeek !== value) { this._startDayOfWeek = value; Array.prototype.forEach.call(this.$dayOfWeek.childNodes, function (e, i) { e.firstChild.data = this.dayInWeekTexts[(i + value) % 7]; }.bind(this)); } this.viewers.month.updateContent(); }, get: function () { return this._startDayOfWeek; } }; ChromeCalendar.property.viewDate = { set: function (date) { this._viewDate = date; this.domSignal.emit(EV_CONTENT_CHANGE); }, get: function () { return this._viewDate; } }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(ChromeCalendar); /** * * @param {ChromeCalendar} elt * @constructor */ function CCViewerAbstract(elt) { this.elt = elt; this.$instance = elt.$instance; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } } CCViewerAbstract.prototype.getTitle = function () { return ''; }; CCViewerAbstract.prototype.updateContent = function () { }; CCViewerAbstract.prototype.prev = function () { }; CCViewerAbstract.prototype.next = function () { }; CCViewerAbstract.prototype.canPrev = function () { }; CCViewerAbstract.prototype.canNext = function () { }; CCViewerAbstract.prototype.viewToday = function () { }; CCViewerAbstract.prototype.canViewToday = function () { }; CCViewerAbstract.prototype.start = function () { }; CCViewerAbstract.prototype.stop = function () { }; CCViewerAbstract.prototype.onSelectedDatesChange = function () { }; /** * @extends CCViewerAbstract * @param elt * @constructor */ function CCMonthViewer(elt) { CCViewerAbstract.call(this, elt); this.$month = elt.$month; this.$dayOfWeek = elt.$dayOfWeek; this.$instance = elt.$instance; this.$month.on('click', this.ev_click) .on('mouseenter', this.ev_mouseEnter); // this.startingDate = null; this.animationSync = Promise.resolve(); this.isListening = false; this.$hoverRow = null; } (0,absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__/* .mixClass */ .Jx)(CCMonthViewer, CCViewerAbstract); CCMonthViewer.prototype.updateContent = function () { var viewDate = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfMonth)(this.elt._viewDate); var viewMonth = viewDate.getMonth(); var viewYear = viewDate.getFullYear(); var bg = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfMonth)(viewDate); var startDayOfWeek = this.elt.startDayOfWeek; bg = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfWeek)(bg, false, startDayOfWeek); var weekIdx; var shortDayOfWeekNames = getCMLText('shortDayOfWeekNames'); Array.prototype.forEach.call(this.$dayOfWeek.childNodes, (elt, i) => { elt.firstChild.data = shortDayOfWeekNames[(i + startDayOfWeek) % 7]; }); var now = new Date(); var rowElt, cellElt; while (this.$month.childNodes.length < 6) { rowElt = _({ class: 'absol-chrome-calendar-week-in-month', child: Array(7).fill('div') }); this.$month.addChild(rowElt); } var i, j; var isSelectedRow; for (i = 0; i < 6; ++i) { rowElt = this.$month.childNodes[i]; isSelectedRow = false; weekIdx = bg.getFullYear() < viewDate.getFullYear() ? 0 : (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.weekIndexOf)(bg, false, startDayOfWeek); rowElt.attr('data-week-idx-text', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.zeroPadding)(weekIdx + 1, 2) + ''); // if (this.elt.isSel) for (j = 0; j < rowElt.childNodes.length; ++j) { cellElt = rowElt.childNodes[j]; cellElt.attr('data-date', bg.getDate()); cellElt.attr('data-time', bg.getTime()); if (bg.getFullYear() !== viewYear) { cellElt.addClass('as-not-in-year'); } else { cellElt.removeClass('as-not-in-year'); } if (bg.getMonth() === viewMonth) { cellElt.removeClass('absol-chrome-calendar-not-in-month'); } else { cellElt.addClass('absol-chrome-calendar-not-in-month'); } if (this.elt.level === 'day' && this.elt.isSelectedDate(bg)) { cellElt.addClass('absol-chrome-calendar-selected'); } else if (this.elt.level === 'week' && this.elt.isSelectedWeek(bg)) { cellElt.addClass('absol-chrome-calendar-selected'); if (!isSelectedRow && bg.getFullYear() === this.elt._viewDate.getFullYear()) { isSelectedRow = true; } } else { cellElt.removeClass('absol-chrome-calendar-selected'); } if ((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(bg, now) === 0) { cellElt.addClass('absol-chrome-calendar-today'); } else { cellElt.removeClass('absol-chrome-calendar-today'); } if (this.elt.dayCmpLimit(bg) === 0) { cellElt.removeClass('as-disabled'); } else { cellElt.addClass('as-disabled'); } bg = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextDate)(bg); } if (isSelectedRow) { rowElt.addClass('as-selected'); } else { rowElt.removeClass('as-selected'); } } }; CCMonthViewer.prototype.animation = function (delta) { var oldViewDate = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfMonth)(this.elt._viewDate); var newViewDate = delta < 0 ? (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.prevMonth)(oldViewDate) : (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextMonth)(oldViewDate); var startDayOfWeek = this.elt.startDayOfWeek; var oldBg = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfWeek)(oldViewDate, false, startDayOfWeek); var newBg = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfWeek)(newViewDate, false, startDayOfWeek); var curDate; var additionalRow = Math.round((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(oldBg, newBg) / 7); if (delta > 0) { additionalRow = -additionalRow; } var now = new Date(); var aniMonth = _({ class: ['absol-chrome-calendar-month', 'as-animation'] }); if (delta < 0) { aniMonth.addStyle('top', -1.2 * (additionalRow - 1) + 'em'); } else { aniMonth.addStyle('top', '1.2em'); } var updateCellClassByViewDate = (viewDate) => { curDate = delta < 0 ? newBg : oldBg; var isSelectedRow; for (i = 0; i < aniMonth.childNodes.length; ++i) { rowElt = aniMonth.childNodes[i]; isSelectedRow = false; for (j = 0; j < rowElt.childNodes.length; ++j) { cellElt = rowElt.childNodes[j]; if (curDate.getMonth() !== viewDate.getMonth()) { cellElt.addClass('absol-chrome-calendar-not-in-month'); } else { cellElt.removeClass('absol-chrome-calendar-not-in-month'); } if (!isSelectedRow && this.elt.level === 'week' && curDate.getFullYear() === viewDate.getFullYear() && this.elt.isSelectedWeek(curDate)) { isSelectedRow = true; } curDate = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextDate)(curDate); } if (isSelectedRow) { rowElt.addClass('as-selected'); } else { rowElt.removeClass('as-selected'); } } } var rowElt, cellElt; var i, j; curDate = delta < 0 ? newBg : oldBg; var weekIdx; for (i = 0; i < 6 + additionalRow; ++i) { rowElt = _({ class: 'absol-chrome-calendar-week-in-month', child: Array(7).fill('div') }); aniMonth.addChild(rowElt); for (j = 0; j < rowElt.childNodes.length; ++j) { cellElt = rowElt.childNodes[j]; weekIdx = curDate.getFullYear() < newViewDate.getFullYear() ? 0 : (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.weekIndexOf)(curDate, false, startDayOfWeek); rowElt.attr('data-week-idx-text', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.zeroPadding)(weekIdx + 1, 2) + ''); cellElt.attr('data-date', curDate.getDate()); cellElt.attr('data-time', curDate.getTime()); if ((0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(curDate, now) === 0) { cellElt.addClass('absol-chrome-calendar-today'); } if (this.elt.level === 'day' && this.elt.isSelectedDate(curDate)) { cellElt.addClass('absol-chrome-calendar-selected'); } else if (this.elt.level === 'week' && this.elt.isSelectedWeek(curDate)) { cellElt.addClass('absol-chrome-calendar-selected'); } if (this.elt.dayCmpLimit(curDate) === 0) { cellElt.removeClass('as-disabled'); } else { cellElt.addClass('as-disabled'); } curDate = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextDate)(curDate); } } updateCellClassByViewDate(oldViewDate); this.$instance.addChild(aniMonth); requestAnimationFrame(() => { if (delta < 0) { aniMonth.addStyle('top', '1.2em'); } else { aniMonth.addStyle('top', -1.2 * (additionalRow - 1) + 'em'); } updateCellClassByViewDate(newViewDate); setTimeout(() => { aniMonth.remove(); }, 200) }); }; CCMonthViewer.prototype.canPrev = function () { return (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareMonth)(this.elt._viewDate, this.elt._min) > 0; }; CCMonthViewer.prototype.canNext = function () { return (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareMonth)(this.elt._viewDate, this.elt._max) < 0; }; CCMonthViewer.prototype.canViewToday = function () { var now = new Date(); return (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(now, this.elt._min) >= 0 && (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate)(now, this.elt._max) <= 0; }; CCMonthViewer.prototype.prev = function () { this.animation(-1); this.elt._viewDate = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.prevMonth)(this.elt._viewDate); this.updateContent(); this.elt.headerCtrl.updateTitle(); this.elt.headerCtrl.updateButtons(); }; CCMonthViewer.prototype.next = function () { this.animation(1); this.elt._viewDate = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextMonth)(this.elt._viewDate); this.updateContent(); this.elt.headerCtrl.updateTitle(); this.elt.headerCtrl.updateButtons(); }; CCMonthViewer.prototype.viewToday = function () { this.elt._viewDate = new Date(); this.updateContent(); this.elt.headerCtrl.updateTitle(); this.elt.headerCtrl.updateButtons(); }; CCMonthViewer.prototype.start = function () { this.elt.attr('data-view', 'month'); this.updateContent(); }; CCMonthViewer.prototype.stop = function () { }; CCMonthViewer.prototype.getTitle = function () { var viewDate = this.elt._viewDate; var res = '' + getCMLText('monthNames')[viewDate.getMonth()]; res += ', ' + viewDate.getFullYear(); return res; }; CCMonthViewer.prototype.ev_click = function (event) { var dateBtn = event.target; var date; while (dateBtn && dateBtn !== this.$month) { if (dateBtn.attr && dateBtn.attr('data-time')) { date = new Date(parseInt(dateBtn.attr('data-time'))); date = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfDay)(date); this.elt._selectedDates = [date]; this.onSelectedDatesChange(); this.elt.emit('pick', { type: 'pick', value: date, isTrusted: event && event.isTrusted, originEvent: event, selectedDates: this.elt.selectedDates }, this.elt); if (dateBtn.hasClass('absol-chrome-calendar-not-in-month')) { if (parseInt(dateBtn.attr('data-date')) < 15) { this.next(); } else { this.prev(); } } break; } dateBtn = dateBtn.parentElement; } }; CCMonthViewer.prototype.ev_mouseEnter = function (event) { if (this.isListening) return; if (this.elt.level !== 'week') return; this.isListening = true; if (this.$hoverRow) { this.$hoverRow.removeClass('as-hover-in-year') .removeClass('as-hover-not-in-year'); this.$hoverRow = null; } document.addEventListener('mousemove', this.ev_mouseMove); }; CCMonthViewer.prototype.ev_mouseMove = function (event) { if (!(0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__/* .hitElement */ .EY)(this.$month, event)) { this.isListening = false; document.removeEventListener('mousemove', this.ev_mouseMove); } var viewDate = this.elt._viewDate; var target = event.target; var date = null; var rowElt; if (target.attr) { if (target.attr('data-time')) { date = new Date(parseInt(target.attr('data-time'))); date = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfDay)(date); rowElt = target.parentElement; } else if (target.attr('data-week-idx-text')) { rowElt = target; date = new Date(parseInt(rowElt.childNodes[0].attr('data-time'))); if (date.getFullYear() !== viewDate.getFullYear()) { date = new Date(viewDate.getFullYear(), 0, 1, 0, 0, 0); } } } if (this.$hoverRow && this.$hoverRow !== rowElt) { this.$hoverRow.removeClass('as-hover-in-year') .removeClass('as-hover-not-in-year'); this.$hoverRow = null; } if (!date) return; this.$hoverRow = rowElt; if (viewDate.getFullYear() !== date.getFullYear()) { rowElt.removeClass('as-hover-in-year') .addClass('as-hover-not-in-year'); } else { rowElt.removeClass('as-hover-not-in-year') .addClass('as-hover-in-year'); } }; CCMonthViewer.prototype.onSelectedDatesChange = function () { var rowElt, cellElt; var i, j; var bg; var isSelectedRow; for (i = 0; i < this.$month.childNodes.length; ++i) { rowElt = this.$month.childNodes[i]; isSelectedRow = false; for (j = 0; j < rowElt.childNodes.length; ++j) { cellElt = rowElt.childNodes[j]; bg = new Date(parseInt(cellElt.attr('data-time'))); if (this.elt.level === 'day' && this.elt.isSelectedDate(bg)) { cellElt.addClass('absol-chrome-calendar-selected'); } else if (this.elt.level === 'week' && this.elt.isSelectedWeek(bg)) { cellElt.addClass('absol-chrome-calendar-selected'); if (!isSelectedRow && bg.getFullYear() === this.elt._viewDate.getFullYear()) { isSelectedRow = true; } } else { cellElt.removeClass('absol-chrome-calendar-selected'); } } if (isSelectedRow) { rowElt.addClass('as-selected'); } else { rowElt.removeClass('as-selected'); } } }; /** * @extends CCViewerAbstract * @param {ChromeCalendar}elt * @constructor */ function CCYearViewer(elt) { CCViewerAbstract.call(this, elt); this.$years = elt.$years; this.$yearScroller = elt.$yearScroller; this.$lastOpenYearItem = null; this.mouseListening = false; } (0,absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__/* .mixClass */ .Jx)(CCYearViewer, CCViewerAbstract); CCYearViewer.prototype.start = function () { this.elt.attr('data-view', 'year'); this.updateContent(); }; CCYearViewer.prototype.updateOpenYear = function () { if (this.$lastOpenYearItem) { this.$lastOpenYearItem.$months.updateActiveMonth(); } }; CCYearViewer.prototype.updateContent = function () { if (!this.$yearsContent) { this.$yearsContent = _({ class: 'absol-chrome-calendar-years-content', child: Array(200).fill(0).map((u, i) => { return { class: 'absol-chrome-calendar-year', attr: { 'data-year': i + 1890 }, child: [ { class: 'absol-chrome-calendar-year-head', child: { text: i + 1890 + '' }, } ], props: { __year__: i + 1890 }, on: { click: () => { this.viewYear(i + 1890); // thisCal.expandYear(this.__year__); }, mouseenter: this.ev_mouseEnter } }; }) }); this.$years.addChild(this.$yearsContent); this.$yearItems = Array.prototype.slice.call(this.$yearsContent.childNodes); } this.viewYear(this.elt._viewDate.getFullYear()); }; CCYearViewer.prototype.createMonths = function (year) { var now = new Date(); var shortMonthNames = getCMLText('shortMonthNames'); var res = _({ class: 'absol-chrome-calendar-year-months', child: Array(3).fill('').map((u, i) => { return { class: 'absol-chrome-calendar-year-row-months', child: Array(4).fill(0).map((v, j) => { var date = new Date(year, i * 4 + j, 1, 0, 0, 0, 0); var quarter = Math.floor((i * 4 + j) / 3); return { class: ['absol-chrome-calendar-year-month'] .concat((year === now.getFullYear() && now.getMonth() === i * 4 + j) ? ['absol-chrome-calendar-today'] : []) .concat(this.elt.isSelectedMonth(date) ? ['absol-chrome-calendar-selected'] : []) , attr: { 'data-quarter': quarter + '', 'data-date': date.getTime() + '', 'data-month': i * 4 + j + '' }, child: { text: shortMonthNames[i * 4 + j] }, on: { click: function () { } }, props: { __date__: date, __quarter__: quarter } } }) } }), on: { click: this.ev_clickMonth } }); res.$monthList = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__.$$)('.absol-chrome-calendar-year-month', res) res.updateActiveMonth = () => { res.$monthList.forEach((e) => { now = new Date(); if (absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareMonth(e.__date__, now) === 0) { e.addClass('absol-chrome-calendar-today'); } else { e.removeClass('absol-chrome-calendar-today'); } if (this.elt.isSelectedMonth(e.__date__)) { e.addClass('absol-chrome-calendar-selected'); } else { e.removeClass('absol-chrome-calendar-selected'); } if (this.elt.isSelectedQuarter(e.__date__)) { e.addClass('as-quarter-selected'); } else { e.removeClass('as-quarter-selected'); } var beginOfMonth = absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.beginOfMonth(e.__date__); var endOfMonth = absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.prevDate(absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.nextMonth(e.__date__)); if (absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate(this.elt._min, endOfMonth) > 0 || absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_2__.compareDate(beginOfMonth, this.elt._max) > 0) { e.addClass('absol-chrome-calendar-date-disabled'); } else { e.removeClass('absol-chrome-calendar-date-disabled'); } }); } return res; }; CCYearViewer.prototype.viewYear = function (year) { var viewDate = this.elt._viewDate; if (viewDate.getFullYear() !== year) { viewDate = new Date(year, 0, 1, 0, 0, 0, 0); this.elt._viewDate = viewDate; } //todo: update button, title var fontSize = this.elt.getFontSize() || 14; 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 - this.$yearScroller.getBoundingClientRect().top - fontSize * 0.45; if (itemElt.__year__ > lastYear) { dy -= 6 * fontSize + 1; } this.$yearScroller.scrollBy(dy, 100); this.$lastOpenYearItem = itemElt; itemElt.$months.updateActiveMonth(); this.elt.headerCtrl.updateTitle(); this.elt.headerCtrl.updateButtons(); }; CCYearViewer.prototype.stop = function () { }; CCYearViewer.prototype.canNext = function () { return this.elt._viewDate.getFullYear() < this.elt._max.getFullYear(); }; CCYearViewer.prototype.canPrev = function () { return this.elt._viewDate.getFullYear() > this.elt._min.getFullYear(); }; CCYearViewer.prototype.canViewToday = function () { var viewDate = new Date(); var year = viewDate.getFullYear(); return year >= this.elt._min.getFullYear() && year <= this.elt._max.getFullYear(); } CCYearViewer.prototype.prev = function () { this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() - 1, 0, 1); this.viewYear(this.elt._viewDate.getFullYear()); }; CCYearViewer.prototype.next = function () { this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() + 1, 0, 1); this.viewYear(this.elt._viewDate.getFullYear()); }; CCYearViewer.prototype.viewToday = function () { this.elt._viewDate = new Date(); this.viewYear(new Date().getFullYear()); }; CCYearViewer.prototype.getTitle = function () { var viewDate = this.elt._viewDate; return '' + viewDate.getFullYear(); }; CCYearViewer.prototype.onSelectedDatesChange = function () { console.log(this.elt.selectedDates); }; CCYearViewer.prototype.ev_clickMonth = function (event) { var monthElt = event.target; var date; if (monthElt && monthElt.attr) date = monthElt.attr('data-date'); if (!date) return; date = new Date(parseInt(date)); var level = this.elt.level; switch (level) { case 'month': case 'quarter': this.elt._selectedDates = [date]; this.updateOpenYear(); this.elt.emit('pick', { type: 'pick', value: date, isTrusted: event && event.isTrusted, originEvent: event }, this.elt); break; case 'year': break; case 'day': case 'week': this.elt._viewDate = date; this.elt.startViewer('month'); break; } }; CCYearViewer.prototype.ev_mouseEnter = function (event) { if (this.mouseListening) return; this.mouseListening = true; document.addEventListener('mousemove', this.ev_mouseMove); }; CCYearViewer.prototype.ev_mouseMove = function (event) { if (!(0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__/* .hitElement */ .EY)(this.$yearsContent, event)) { this.mouseListening = false; document.removeEventListener('mousemove', this.ev_mouseMove); this.$yearsContent.attr('data-hover-quarter', undefined); return; } if (typeof event.target.__quarter__ === "number") { if (this.$yearsContent.attr('data-hover-quarter') !== event.target.__quarter__ + '') this.$yearsContent.attr('data-hover-quarter', event.target.__quarter__ + ''); } else { this.$yearsContent.attr('data-hover-quarter', undefined); } }; function CCEraViewer(elt) { CCViewerAbstract.call(this, elt); this.$era = elt.$era; this.$yearScroller = elt.$yearScroller; this.$instance = elt.$instance; this._lastStartDecade = -1; this._decadeScrollTimeout = -1; this.scrollIntoDecadeResolve = null; this.title = '1980-2089'; this.$era.on('scroll', this.ev_scroll) .on('click', this.ev_click); } (0,absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_5__/* .mixClass */ .Jx)(CCEraViewer, CCViewerAbstract); CCEraViewer.prototype.start = function () { this.elt.attr('data-view', 'era'); this.updateContent(); this.viewEra(false); this.updatePickedYear(); }; CCEraViewer.prototype.canNext = function () { var viewDate = this.elt._viewDate; var year = viewDate.getFullYear(); var eraIdx = Math.floor(year / 10); var maxEraIdx = Math.floor(this.elt._max.getFullYear() / 10); return (eraIdx < maxEraIdx); }; CCEraViewer.prototype.canPrev = function () { var viewDate = this.elt._viewDate; var year = viewDate.getFullYear(); var eraIdx = Math.floor(year / 10); var minEraIdx = Math.floor(this.elt._min.getFullYear() / 10); return eraIdx > minEraIdx; }; CCEraViewer.prototype.canViewToday = function () { var viewDate = this.elt._viewDate; var year = viewDate.getFullYear(); var eraIdx = Math.floor(year / 10); var minEraIdx = Math.floor(this.elt._min.getFullYear() / 10); var maxEraIdx = Math.floor(this.elt._max.getFullYear() / 10); return eraIdx >= minEraIdx && eraIdx <= maxEraIdx; }; CCEraViewer.prototype.prev = function () { this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() - 10, 0, 1); this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, true) }; CCEraViewer.prototype.next = function () { this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() + 10, 0, 1); this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, true); }; CCEraViewer.prototype.viewToday = function () { this.elt._viewDate = new Date(); this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, true); }; CCEraViewer.prototype.updateContent = function () { if (this.$era.childNodes.length === 0) { var now = new Date(); var cYear = now.getFullYear(); var rows = Array(50).fill(0).map(function (u, i) { return _({ class: 'absol-chrome-calendar-era-row', child: Array(4).fill(0).map(function (u1, j) { var classList = ['absol-chrome-calendar-era-year']; var year = 1890 + i * 4 + j; if (cYear === year) { classList.push('absol-chrome-calendar-today'); } return { class: classList, child: { text: year + '' }, props: { __year__: year } }; }) }); }); this.$era.addChild(rows); } this.updateDisabledYearInEra(); }; CCEraViewer.prototype.viewEra = function (animation) { this.elt.removeClass('view-month') .removeClass('view-year') .addClass('view-era'); this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, animation) }; CCEraViewer.prototype.getTitle = function () { return this.title; }; CCEraViewer.prototype.updatePickedYear = function () { var yearElt; while (this.$lastPickYears && this.$lastPickYears.length > 0) { yearElt = this.$lastPickYears.pop(); yearElt.removeClass('absol-chrome-calendar-selected'); } this.$lastPickYears = this.elt._selectedDates.map((date) => { var yearElt = this.yearInEra(date.getFullYear()); yearElt.addClass('absol-chrome-calendar-selected'); return yearElt; }); }; CCEraViewer.prototype.updateDisabledYearInEra = function () { var i, j; var rowElt, cellElt, date; for (i = 0; i < this.$era.childNodes.length; ++i) { rowElt = this.$era.childNodes[i]; for (j = 0; j < rowElt.childNodes.length; ++j) { cellElt = rowElt.childNodes[j]; date = new Date(cellElt.__year__, 0, 1); if (this.elt.yearCmpLimit(date) === 0) { cellElt.removeClass('absol-chrome-calendar-date-disabled'); } else { cellElt.addClass('absol-chrome-calendar-date-disabled'); } } } }; CCEraViewer.prototype.scrollIntoDecade = function (startYear, animation) { if (!this.elt.isDescendantOf(document.body)) { return this; } return new Promise((resolve) => { var eraBound = this.$era.getBoundingClientRect(); var rowIdx = Math.floor((startYear - 1890) / 4); if (this._decadeScrollTimeout > 0) { clearTimeout(this._decadeScrollTimeout); this._decadeScrollTimeout = -1; } if (this.scrollIntoDecadeResolve) { this.scrollIntoDecadeResolve(); this.scrollIntoDecadeResolve = null; } this.scrollIntoDecadeResolve = resolve; var t0 = new Date().getTime(); var t1 = t0 + 250; var y0 = this.$era.scrollTop; var y1 = rowIdx * eraBound.height / 4; var tick; if (animation) { tick = () => { var tc = new Date().getTime(); var yc = Math.min(1, Math.pow((tc - t0) / (t1 - t0), 2)) * (y1 - y0) + y0; this.$era.scrollTop = yc; if (tc < t1) { this._decadeScrollTimeout = setTimeout(tick, 1000 / 30); } else { this._decadeScrollTimeout = -1; this.scrollIntoDecadeResolve = null; resolve(); } }; this._decadeScrollTimeout = setTimeout(tick, 100); } else { this.$era.scrollTop = y1; } }); }; CCEraViewer.prototype.updateYearInEra = function () { var eraBound = this.$era.getBoundingClientRect(); var startYear = 1890 + 4 * Math.ceil((this.$era.scrollTop - eraBound.height / 16) * 4 / eraBound.height); var startDecade = Math.floor(startYear / 10) * 10; if ((startDecade + 10 - startYear) < 8) startDecade += 10; if (this._lastStartDecade !== startDecade) { if (this._lastStartDecade > 0) { this.clearYearInEra(this._lastStartDecade); } this._lastStartDecade = startDecade; this.activeYearInEra(startDecade); this.title = startDecade + '-' + (startDecade + 10); if (this.elt._level === 'year') { //todo if (!this._decadeScrollTimeout || this._decadeScrollTimeout < 0) { if (this.elt.yearCmpLimit(new Date(startDecade, 0, 1)) === 0) this.elt._viewDate = new Date(startDecade, 0, 1); } } this.elt.headerCtrl.updateTitle(); this.elt.headerCtrl.updateButtons(); } }; CCEraViewer.prototype.clearYearInEra = function (startYear) { var cellElt; for (var i = 0; i < 10; ++i) { cellElt = this.yearInEra(startYear + i); if (cellElt) cellElt.removeClass('absol-chrome-calendar-in-decade'); } }; CCEraViewer.prototype.yearInEra = function (year) { var d = year - 1890; var rowIdx = Math.floor(d / 4); var colIdx = d % 4; return this.$era.childNodes[rowIdx] && this.$era.childNodes[rowIdx].childNodes[colIdx]; }; CCEraViewer.prototype.activeYearInEra = function (startYear) { var cellElt; for (var i = 0; i < 10; ++i) { cellElt = this.yearInEra(startYear + i); if (cellElt) cellElt.addClass('absol-chrome-calendar-in-decade'); } } CCEraViewer.prototype.ev_scroll = function (event) { this.updateYearInEra(); }; CCEraViewer.prototype.ev_click = function (event) { var yearElt = event.target; var year = yearElt.__year__; if (typeof year !== "number") return; var date = new Date(year, 0, 1, 0, 0, 0, 0); if (this.elt.level === 'year') { this.elt._selectedDates = [date]; this.updatePickedYear(); this.scrollIntoDecade(Math.floor(year / 10) * 10, true); this.elt.emit('pick', { type: 'pick', value: date, isTrusted: event && event.isTrusted, originEvent: event, }); } else { this.elt._viewDate = date; this.elt.startViewer('year'); } }; /** * * @param {ChromeCalendar} elt * @constructor */ function CCHeaderController(elt) { this.elt = elt; this.$prevBtn = elt.$prevBtn; this.$nextBtn = elt.$nextBtn; this.$todayBtn = elt.$todayBtn; this.$titleTime = elt.$titleTime; this.$title = elt.$title; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.$prevBtn.on('click', this.ev_clickPrev); this.$nextBtn.on('click', this.ev_clickNext); this.$todayBtn.on('click', this.ev_clickToday); this.$title.on('click', this.ev_clickTitle); } CCHeaderController.prototype.updateTitle = function () { this.$titleTime.innerHTML = this.elt.viewer.getTitle(); }; CCHeaderController.prototype.updateButtons = function () { this.$prevBtn.disabled = !this.elt.viewer.canPrev(); this.$nextBtn.disabled = !this.elt.viewer.canNext(); this.$todayBtn.disabled = !this.elt.viewer.canViewToday(); } CCHeaderController.prototype.ev_clickPrev = function () { this.elt.viewer.prev(); }; CCHeaderController.prototype.ev_clickNext = function () { this.elt.viewer.next(); }; CCHeaderController.prototype.ev_clickToday = function () { this.elt.viewer.viewToday(); }; CCHeaderController.prototype.ev_clickTitle = function () { var curViewer = this.elt.viewer; curViewer.stop(); if (curViewer === this.elt.viewers.month) { this.elt.startViewer('year'); } else if (curViewer === this.elt.viewers.year) { this.elt.startViewer('era'); } }; /** * * @param {AElement|HTMLElement} element * @param calendarProps * @param anchor * @param {function} calendarPickListener * @param {boolean=} darkTheme * @returns {CCShareDropDownInstance} */ ChromeCalendar.showWhenClick = function (element, calendarProps, anchor, calendarPickListener, darkTheme) { var opt = { props: calendarProps, anchor: anchor, onPick: calendarPickListener, darkTheme: darkTheme, triggerElt: element }; return new CCShareDropDownInstance(element, opt); }; ChromeCalendar.show = function (element, calendarProps, anchor, calendarPickListener, darkTheme) { var opt = { props: calendarProps, anchor: anchor, onPick: calendarPickListener, darkTheme: darkTheme, }; var instance = new CCShareDropDownInstance(element, opt); return instance.id; }; ChromeCalendar.close = function (session) { var share = CCShareDropDownInstance.prototype.share; var instance = share.instances[session]; if (instance) { instance.close(); if (!instance.opt.triggerElt) instance.remove(); } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChromeCalendar); /** * * @param {AElement} elt * @param {{props?:object, anchor?: number[], onPick?: function, darkTheme?: boolean, triggerElt?:AElement }} opt * @constructor */ function CCShareDropDownInstance(elt, opt) { this.id = Math.random() * 10000000000 >> 0; this.elt = elt; this.opt = Object.assign({}, opt); this.ev_clickOut = this.ev_clickOut.bind(this); this.ev_click = this.ev_click.bind(this); if (this.opt.triggerElt) { this.opt.triggerElt.on('click', this.ev_click); } this.share.instances[this.id] = this; } CCShareDropDownInstance.prototype.share = { $follower: null, $picker: null, session: null, onPick: null, holder: null, instances: {} }; CCShareDropDownInstance.prototype.prepare = function () { var share = this.share; if (share.$follower) return; /** * * @type {Follower|AElement} */ share.$follower = _({ tag: _Follower__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z }); share.$follower.cancelWaiting(); share.$picker = _({ tag: ChromeCalendar, on: { pick: (event) => { if (typeof share.onPick === "function") share.onPick(event.value, event, this); } } }).addTo(share.$follower); share.session = Math.random() * 10000000000 >> 0; share.onPick = null; } /** * */ CCShareDropDownInstance.prototype.show = function () { this.prepare(); var share = this.share; if (share.holder) share.holder.close(); share.holder = this; var props = this.opt.props; if (props instanceof Date) props = { selectedDates: [props] }; if (props instanceof Array) props = { selectedDates: props }; props.maxDateLimit = props.maxDateLimit || null; props.minDateLimit = props.minDateLimit || null; share.$follower.addTo(document.body); Object.assign(share.$picker, props); share.$follower.addStyle('visibility', 'hidden'); if (this.opt.darkTheme) { share.$picker.addClass('dark'); } else { share.$picker.removeClass('dark'); } if (this.opt.triggerElt) { setTimeout(() => { document.addEventListener('click', this.ev_clickOut, false); }, 30); } share.$follower.sponsorElement = this.opt.triggerElt || this.elt; share.$follower.anchor = this.opt.anchor; share.$follower.followTarget = this.elt; share.$follower.updatePosition(); share.onPick = ()=>{ var value = share.$picker.selectedDates[0]; if (value && this.opt.onPick) { this.opt.onPick(value); if (this.opt.triggerElt) { this.close(); } } } setTimeout(() => { if (share.holder === this) { share.$follower.removeStyle('visibility', 'hidden'); } }, 10); }; CCShareDropDownInstance.prototype.close = function () { var share = this.share; if (!share.$follower) return; if (share.holder !== this) return; share.holder = null; if (this.opt.triggerElt) { document.removeEventListener('click', this.ev_clickOut, false); } share.onPick = null; share.$follower.selfRemove(); }; /** * * @param {Date} value */ CCShareDropDownInstance.prototype.setDateValue = function (value) { var share = this.share; if (share.holder === this) { share.$picker.selectedDates = [value]; } }; CCShareDropDownInstance.prototype.cancel = function () { this.close(); }; CCShareDropDownInstance.prototype.remove = function () { this.close(); if (this.opt.triggerElt) { this.opt.triggerElt.removeEventListener('click', this.ev_click); } delete this.share.instances[this.id]; }; CCShareDropDownInstance.prototype.ev_clickOut = function (event) { if (!(0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__/* .hitElement */ .EY)(this.elt, event)) this.close(); }; CCShareDropDownInstance.prototype.ev_click = function (event) { this.show(); }; /***/ }), /***/ 7054: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony export ContextCaptor */ /* harmony import */ var _css_contextmenu_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7994); /* harmony import */ var _css_contextmenu_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_contextmenu_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(863); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6628); /* harmony import */ var absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(557); /* harmony import */ var _Menu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(407); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7951); /* harmony import */ var _BoardTable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7548); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1477); /* harmony import */ var absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9399); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var supportContextEvent = false; var isMobile = absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_9__/* ["default"].isMobile */ .Z.isMobile; /** * @extends AElement * @constructor */ function ContextCaptor() { this.attachedElt = null; this.$textarea = $('textarea', this) .attr('readonly', 'true') .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 _({ class: ['absol-context-menu-anchor'], extendEvent: 'requestcontextmenu', child: [ 'textarea' ] }); }; ContextCaptor.prototype.showContextMenu = function (x, y, props, onSelectItem) { var self = this; var anchor = _('.as-context-menu-ctn.absol-context-menu-anchor' + (isMobile ? '.as-anchor-modal' : '')).addTo(document.body); var finish = function (event) { document.removeEventListener('click', finish); document.removeEventListener('touchcancel', finish); document.removeEventListener('touchend', finish); document.removeEventListener('contextmenu', finish); anchor.off('click', touchModal); self.off('requestcontextmenu', finish); setTimeout(function () { anchor.selfRemove();// }, 10); }; function touchModal(event) { if (event.target.classList && event.target.classList.contains('as-anchor-modal')) { finish(event); } } var vmenu = _({ tag: 'vmenu', props: props, on: { press: onSelectItem || function () { } } }).addTo(anchor); setTimeout(function () { if (!isMobile) { var screenSize = absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* ["default"].getScreenSize */ .ZP.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'); (0,_ACore__WEBPACK_IMPORTED_MODULE_1__.$$)('VMenuItem'.toLowerCase(), vmenu).forEach(e => { if (e.autoFixParentSize) e.autoFixParentSize(); }); }, 30); setTimeout(function () { document.addEventListener('click', finish) document.addEventListener('contextmenu', finish); self.on('requestcontextmenu', finish); anchor.on('click', touchModal); }, 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, onSelectItem) { showed = true; self.sync = self.sync.then(function () { return new Promise(function (rs) { setTimeout(function () { self.showContextMenu(self._posCurrent.x, self._posCurrent.y, props, onSelectItem); rs(); }, 30) }); }) }, stopPropagation: function () { propagation = false; } }, baseEventData); Object.defineProperty(localEvent, 'selectedText', { get: function () { return (0,_utils__WEBPACK_IMPORTED_MODULE_8__.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 absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z(pointer.clientX, pointer.clientY); if (isTouch) { var dragzone = _BoardTable__WEBPACK_IMPORTED_MODULE_7__/* ["default"].prototype._findDragZone */ .ZP.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; document.addEventListener('touchmove', thisCT.eventHandler.mousemove); document.addEventListener('touchend', thisCT.eventHandler.mousefinish); document.addEventListener('touchcancel', thisCT.eventHandler.mousefinish); } else { if (absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__/* ["default"].isMouseRight */ .ZP.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); document.addEventListener('mousemove', this.eventHandler.mousemove); document.addEventListener('mouseup', this.eventHandler.mousefinish); document.addEventListener('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 absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z(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) { document.removeEventListener('touchmove', this.eventHandler.mousemove); document.removeEventListener('touchend', this.eventHandler.mousefinish); document.removeEventListener('touchcancel', this.eventHandler.mousefinish); if (this._longPressTimeout > 0) { clearTimeout(this._longPressTimeout); this._longPressTimeout = -1; } } else { document.removeEventListener('mousemove', this.eventHandler.mousemove); document.removeEventListener('mouseup', this.eventHandler.mousefinish); document.removeEventListener('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 = _('contextcaptor'); absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* ["default"].documentReady.then */ .ZP.documentReady.then(function () { ContextCaptor.$elt.addTo(document.body); ContextCaptor.$elt.attachTo(document.body); }); }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(ContextCaptor); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ContextCaptor); /***/ }), /***/ 5611: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); function Draggable(element) { if (!element) element = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"]._ */ .Z._('div'); else _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].$ */ .Z.$(element); element.defineEvent(['predrag', 'drag', 'begindrag', 'enddrag']); var body = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].$ */ .Z.$('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 */ const __WEBPACK_DEFAULT_EXPORT__ = (Draggable); /***/ }), /***/ 1577: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_dropzone_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6950); /* harmony import */ var _css_dropzone_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_dropzone_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7951); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(863); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @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 _('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, 200); }; /*** * * @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; if (!event.hasOwnProperty('files')) 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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(DropZone); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropZone); /***/ }), /***/ 4670: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "M": () => (/* binding */ EmojiAnimByIdent) /* harmony export */ }); 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (EmojiAnims); var EmojiAnimByIdent = EmojiAnims.reduce((ac, cr) => { ac[cr[0]] = cr; return ac; }, {}); /***/ }), /***/ 7712: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (EmojiChars); /***/ }), /***/ 2948: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_emojipicker_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6683); /* harmony import */ var _css_emojipicker_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_emojipicker_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _EmojiAnims__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4670); /* harmony import */ var _Sprite__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9950); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function EmojiPicker() { var thisPicker = this; this._aliveTimeout = 90; this._assetRoot = this.attr('data-asset-root'); /*** * * @type {Sprite} */ this.$previewAnim = $('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/' + _EmojiAnims__WEBPACK_IMPORTED_MODULE_2__/* ["default"][0][1] */ .Z[0][1]; this.$previewAnim.fps = 30; this.$desc = $('.as-emoji-picker-preview-desc', this); this.$shortcut = $('.as-emoji-picker-preview-shortcut', this); this.$desc.clearChild().addChild(_({ text: _EmojiAnims__WEBPACK_IMPORTED_MODULE_2__/* ["default"][0][2] */ .Z[0][2] })); this.$shortcut.clearChild().addChild(_({ text: _EmojiAnims__WEBPACK_IMPORTED_MODULE_2__/* ["default"][0][0] */ .Z[0][0] })); this.$list = $('.as-emoji-picker-list', this); this.$items = _EmojiAnims__WEBPACK_IMPORTED_MODULE_2__/* ["default"].reduce */ .Z.reduce(function (ac, it) { var itemElt = _({ 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 = _('attachhook').addTo(this).on('error', this.eventHandler.attach); } EmojiPicker.assetRoot = (function (){ if (location.hostname.match(/^.*(\.?absol\.cf|absol\.ddns\.net)$/) ||location.hostname.match(/^localhost$/) ) return 'https://absol.cf/emoji'; return '/emoji'; })(); EmojiPicker.tag = 'EmojiPicker'.toLowerCase(); EmojiPicker.render = function (data) { data = data || {}; data.assetRoot = data.assetRoot || EmojiPicker.assetRoot; return _({ 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(_({ text: itemData[2] })); this.$shortcut.clearChild().addChild(_({ text: itemData[0] })); }; EmojiPicker.eventHandler.clickItem = function (itemData, event) { this.emit('pick', { name: 'pick', key: itemData[0], target: this }, this); }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(EmojiPicker); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmojiPicker); /***/ }), /***/ 2917: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "$P": () => (/* binding */ ExpNode), /* harmony export */ "yb": () => (/* binding */ ExpTree), /* harmony export */ "uz": () => (/* binding */ ExpGroup), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony export ExpSearcher */ /* harmony import */ var _css_exptree_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3234); /* harmony import */ var _css_exptree_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_exptree_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1477); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3349); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(863); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7951); /* harmony import */ var absol_src_String_stringGenerate__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1334); /* harmony import */ var _list_search__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2551); /* harmony import */ var absol_src_String_stringUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2973); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install('toggler-ico', function () { var res = _( '<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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install('remove-ico', function () { return _('<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 = $('.absol-exp-node-level', this); this.$removeIcon = $('remove-ico', this) .on('click', function (event) { thisEN.emit('pressremove', { target: thisEN, type: 'pressremove' }, this); }); this.on('keydown', this.eventHandler.buttonKeydown); this.$toggleIcon = $('toggler-ico', this); this.on('click', (event) => { var toggleBound = this.$toggleIcon.getBoundingClientRect(); if (toggleBound.width > 0 && event.clientX <= toggleBound.right) { this.emit('presstoggle', (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* .copyEvent */ .FG)(event, { target: thisEN, type: 'pressremove' }), this); } else if (!absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].hitElement */ .ZP.hitElement(thisEN.$removeIcon, event)) { this.emit('press', (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* .copyEvent */ .FG)(event, { target: thisEN, type: 'press' }), this); } }); this.$iconCtn = $('div.absol-exp-node-ext-icon', this); this.$extIcon = $('img.absol-exp-node-ext-icon', this); this.$name = $('span.absol-exp-node-name', this); this.$desc = $('span.absol-exp-node-desc', this); (0,_utils__WEBPACK_IMPORTED_MODULE_2__.contenteditableTextOnly)(this.$name, function (text) { return text.replace(/[\\\/\|\?\:\<\>\*\r\n]/, '').trim(); }); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(thisEN, thisEN.$extIcon, 'extSrc', 'src'); this._level = 0; this.__isExpNode__ = true; return thisEN; } ExpNode.tag = 'expnode'; ExpNode.render = function () { return _({ 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) { var newE; if (absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__/* ["default"].isDomNode */ .ZP.isDomNode(value)) { newE = value; } else { newE = _(value); } this.$iconP = newE; 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 * 6); } }, get: function () { return this._level || 0; } }; ExpNode.property.name = { set: function (value) { value = value + ''; this._name = value; this.$name.clearChild(); if (value && value.length > 0) this.$name.addChild(_({ text: value })); }, get: function () { return this._name || ''; } }; ExpNode.property.desc = { set: function (value) { this._desc = (value || '') + ''; this.$desc.clearChild(); this.$desc.addChild(_({ 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.hasClass('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); $(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 = $('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 = $('.absol-exp-items', thisET); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$node, ['desc', 'name', 'title', 'extSrc', 'active', 'icon']); this.__isExpTree__ = true; this._level = 0; } ExpTree.tag = 'ExpTree'.toLowerCase(); ExpTree.render = function () { return _({ 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; this.name = ''; } ExpGroup.tag = 'ExpGroup'.toLowerCase(); ExpGroup.render = function () { return _('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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(ExpNode); _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(ExpTree); _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(ExpGroup); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExpTree); /** * * @param {ExpTree|AElement} elt * @param {{inputElt: SearchTextInput}=} opt * @constructor */ function ExpSearcher(elt, opt) { this.elt = elt; this.cache = {}; this.prevHash = null; this.searching = false; this.state = {}; this.ev_stopTyping = this.ev_stopTyping.bind(this); this.inputElt = opt && opt.inputElt; } ExpSearcher.prototype.reset = function () { if (!this.searching) return; this.cache = {}; this.searching = false; this.elt.removeClass('as-searching') var visit = treeNode => { treeNode.removeClass('as-in-search-result').removeStyle('order'); if (this.state[treeNode.id]) { if (treeNode.status === 'open' || treeNode.status === 'close' && this.state[treeNode.id] !== 'none') { treeNode.status = this.state[treeNode.id]; } } this.getChildrenOf(treeNode).forEach(c => visit(c)); } visit(this.elt); }; ExpSearcher.prototype.backupState = function () { this.state = {}; var visit = treeNode => { if (!treeNode.id) treeNode.id = (0,absol_src_String_stringGenerate__WEBPACK_IMPORTED_MODULE_7__.randomIdent)(5); this.state[treeNode.id] = treeNode.status; this.getChildrenOf(treeNode).forEach(c => visit(c)); } visit(this.elt); }; /** * * @param {ExpTree|AElement} nd * @returns {Array<ExpTree|AElement>} */ ExpSearcher.prototype.getChildrenOf = function (nd) { if (nd.getChildren) return nd.getChildren(); return Array.prototype.slice.call(nd.childNodes); }; /** * * @param {ExpTree|AElement} nd * @returns {ExpTree|AElement} */ ExpSearcher.prototype.getParentOf = function (nd) { if (nd.getParent) return nd.getParent(); return nd.parentElement; }; ExpSearcher.prototype.query = function (text) { text = text || ''; text = text.trim(); if (text.length === 0) { this.reset(); return; } if (!this.searching) { this.backupState(); this.searching = true; } var newHash = 0; var makeItem = treeNode => { if (!treeNode.id) treeNode.id = (0,absol_src_String_stringGenerate__WEBPACK_IMPORTED_MODULE_7__.randomIdent)(5); if (!treeNode.__searchItem__) { treeNode.__searchItem__ = { text: treeNode.name.replace(/[_-]/g, ' '), value: treeNode.id }; (0,_list_search__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .ZP)(treeNode.__searchItem__); } var item = treeNode.__searchItem__; newHash = (0,absol_src_String_stringUtils__WEBPACK_IMPORTED_MODULE_9__/* .stringHashCode */ .$)(newHash + item.text); var children = this.getChildrenOf(treeNode); if (children.length > 0) { item.items = children.map(c => makeItem(c)); } else { delete item.items; } return item; } var items = [makeItem(this.elt)]; if (newHash !== this.prevHash) { this.prevHash = newHash; this.cache = {}; } var searchRes = this.cache[text] || (0,_list_search__WEBPACK_IMPORTED_MODULE_8__/* .searchTreeListByText */ .$l)(text, items); var dict = searchRes.reduce(function cb(ac, cr, i) { ac[cr.value] = i; if (cr.items) cr.items.reduce(cb, ac); return ac; }, {}); var visit = treeNode => { if (treeNode.id in dict) { treeNode.addClass('as-in-search-result').addStyle('order', dict[treeNode.id]); } else { treeNode.removeClass('as-in-search-result').removeStyle('order'); } this.getChildrenOf(treeNode).forEach(c => visit(c)); }; visit(this.elt); this.elt.addClass('as-searching'); }; ExpSearcher.prototype.ev_stopTyping = function () { this.query(this.inputElt.value); }; ExpSearcher.prototype.destroy = function () { this.inputElt = null; this.query(''); } Object.defineProperty(ExpSearcher.prototype, 'inputElt', { set: function (elt) { if (this._inputElt) { this._inputElt.off('stoptyping', this.ev_stopTyping); this._inputElt = null; } if (elt) { this._inputElt = elt; elt.on('stoptyping', this.ev_stopTyping); } }, get: function () { return this._inputElt; } }) /***/ }), /***/ 3929: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_flexiconbutton_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(279); /* harmony import */ var _css_flexiconbutton_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_flexiconbutton_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /** * @extends AElement * @constructor */ function FlexiconButton() { this._icon = null; this.$content = $('.as-flexicon-button-content', this); this.$iconCtn = $('.as-flexicon-button-icon-container', this); this.$textCtn = $('.as-flexicon-button-text-container', this); } FlexiconButton.tag = 'FlexiconButton'.toLowerCase(); FlexiconButton.render = function () { return _({ 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(_(value)); } }, get: function () { return this._icon; } }; FlexiconButton.property.text = { /*** * * @param {string| {mlKey:string}|*} value */ set: function (value) { value = value || null; this._text = value; this.$textCtn.clearChild(); this.$textCtn.attr('data-ml-key', undefined); if (value === null || value === undefined) { } else if (typeof value === "object") { if (value.mlKey) { this.$textCtn.attr('data-ml-key', value.mlKey); } } else { this.$textCtn.addChild(_({ text: value + '' })); } }, get: function () { return this._text; } }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(FlexiconButton); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FlexiconButton); /***/ }), /***/ 7094: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_follower_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1415); /* harmony import */ var _css_follower_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_follower_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6628); /* harmony import */ var absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2759); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7951); /* harmony import */ var absol_src_HTML5_AttachHook__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5675); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1477); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function Follower() { this.$attachhook = _('attachhook', this) .addTo(this) .on('attached', function () { this.requestUpdateSize(); absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].addToResizeSystem */ .ZP.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']); /*** * @name followTarget * @type {AElement} * @memberOf Follower# */ } Follower.prototype.cancelWaiting = function () { Array.prototype.forEach.call(this.childNodes, function (elt) { if (elt.emit && elt.isSupportedEvent('attached') && elt.cancelWaiting()) { elt.cancelWaiting(); } }); }; Follower.prototype.revokeResource = function () { this.cancelWaiting(); this.followTarget = null; }; Follower.tag = 'Follower'.toLowerCase(); Follower.render = function () { return _('.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(); }); return this; }; Follower.prototype.addTo = function (elt) { if (elt.addChild) { elt.addChild(this); } else if (elt.appendChild) { elt.appendChild(this); } if (this.isDescendantOf(document.body)) { Array.prototype.forEach.call(this.childNodes, function (elt) { if (elt.emit && elt.isSupportedEvent('attached')) { elt.resetState(); elt.emit('attached'); } }); } return this; }; Follower.prototype.selfRemove = function () { Array.prototype.forEach.call(this.childNodes, function (elt) { if (elt.emit && elt.isSupportedEvent('attached')) { elt.cancelWaiting(); } }); this.remove(); return this; }; //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); if (!this.$followTarget) return;// target is removed var targetBound = this.$followTarget.getBoundingClientRect(); var screenSize = absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].getScreenSize */ .ZP.getScreenSize(); var outRect = new absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(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 absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(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.prototype.revokeResource = function () { this.$attachhook.cancelWaiting(); this.followTarget = null; while (this.lastChild) { (0,_utils__WEBPACK_IMPORTED_MODULE_6__.revokeResource)(this.lastChild); this.removeChild(this.lastChild); } }; 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 = $(elt) || document.getElementById(elt); } if (absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].isDomNode */ .ZP.isDomNode(elt)) { this.$followTarget = elt; this._lastAnchor = 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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(Follower); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Follower); /***/ }), /***/ 655: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_hanger_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8859); /* harmony import */ var _css_hanger_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_hanger_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(557); /* harmony import */ var absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9399); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(863); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /**** * @extends AElement * @constructor */ function Hanger() { this.addClass('as-hanger'); this.defineEvent(['predrag', 'dragstart', 'drag', 'dragend', 'draginit', 'dragdeinit']);//predrag is draginit 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 _('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], absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_3__/* ["default"].supportPassiveEvent */ .Z.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], absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_3__/* ["default"].supportPassiveEvent */ .Z.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 absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(touch.clientX, touch.clientY); } else { startingPoint = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(event.clientX, event.clientY); target = event.target; } var offsetVec = startingPoint.sub(new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(bound.left, bound.top)); this._hangerPointerData = { state: 0, isTouch: isTouch, bound: bound, startingPoint: startingPoint, offsetVec: offsetVec, pointerIdent: pointerIdent, target: target }; var preDragEvent = { type: 'draginit', 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('draginit', preDragEvent, this); this.emit('predrag', Object.assign(preDragEvent, { type: 'predrag' }), this); if (preDragEvent.canceled) { this._hangerPointerData = null; return; } if (isTouch) this.on2.call(document, this._touchEvents) else this.on2.call(document, this._mouseEvents); }; Hanger.eventHandler.hangerPointerMove = function (event) { var pointerData = this._hangerPointerData; var isTouch = pointerData.isTouch; var pointerIdent = -2; var currentPoint; if (isTouch) { var touch = (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* .findChangedTouchByIdent */ .VY)(event, pointerData.pointerIdent); if (touch) { pointerIdent = touch.identifier; currentPoint = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(touch.clientX, touch.clientY); } } else { currentPoint = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(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.trackedScrollers = (() => { var res = []; var c = this._hangerPointerData.target; while (c) { c.addEventListener('scroll', this.eventHandler.trackingScroll); res.push(c); c = c.parentElement; } document.addEventListener('scroll', this.eventHandler.trackingScroll); res.push(document); return res; })(); 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'; var dragEndEvent; if (pointerData.isTouch !== isTouch) return; var pointerIdent = -2; var currentPoint; if (isTouch) { var touch = (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* .findChangedTouchByIdent */ .VY)(event, pointerData.pointerIdent); if (touch) { pointerIdent = touch.identifier; currentPoint = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(touch.clientX, touch.clientY); } } else { currentPoint = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(event.clientX, event.clientY); pointerIdent = -1; } if (pointerIdent !== pointerData.pointerIdent) return; if (pointerData.state === 1) { pointerData.trackedScrollers.forEach(elt => elt.removeEventListener('scroll', this.eventHandler.trackingScroll)); 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, this._touchEvents) else this.off2.call(document, this._mouseEvents); this.emit('dragdeinit', { type: 'dragdeinit', 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, }); }; Hanger.eventHandler.trackingScroll = function (event) { var pointerData = this._hangerPointerData; var currentPoint = pointerData.currentPoint; var dragEvent = { type: 'drag', originEvent: event, isTouch: false, bound: pointerData.bound, startingPoint: pointerData.startingPoint, offsetVec: pointerData.offsetVec, pointerIdent: pointerData.pointerIdent, currentPoint: currentPoint, target: pointerData.target, clientX: currentPoint.x, clientY: currentPoint.y, isScrolling: true, preventDefault: function () { // event.preventDefault(); } }; this.emit('drag', dragEvent, this); }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(Hanger); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Hanger); /***/ }), /***/ 2380: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Ty": () => (/* binding */ EmojiMutedIcon), "Tj": () => (/* binding */ FontColorIcon), "Bm": () => (/* binding */ ImportantOutlineIcon), "CY": () => (/* binding */ MdiStoreMarkerOutline), "V4": () => (/* binding */ ProcedureOutlineIcon), "Vt": () => (/* binding */ ProcessOutlineIcon), "i_": () => (/* binding */ SpinnerIco) }); // UNUSED EXPORTS: CityIcon, ConfigurationFormOutlineIcon, CountryIcon, DataTypeConfiguratorOutlineIcon, FunctionManagerIcon, InputFormOutlineIcon, InsertColLeftIcon, InsertColRightIcon, MobileFormEditOutlineIcon, MobileInputFormOutlineIcon, MobileOutputFormOutlineIcon, OutputFormOutlineIcon, TemplateIcon, TimeBasedPayrollReportIcon, WindowsFormEditOutlineIcon // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(3855); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/spinner.tpl /* harmony default export */ const spinner = ("<svg class=\"as-spinner-ico\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" 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/assets/icon/mdi_store_marker_outline.tpl /* harmony default export */ const mdi_store_marker_outline = ("<svg viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M20 6H4V4H20V6M14.3 12C13.5 12.96 13 14.18 13 15.5C13 16.64 13.43 17.86 14 19V20H4V14H3V12L4 7H20L20.7 10.5C20.04 10.18 19.32 10 18.56 10L18.36 9H5.64L5.04 12H14.3M12 14H6V18H12V14M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z\" />\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/font_color.tpl /* harmony default export */ const font_color = ("<svg height=\"100%\" width=\"100%\" viewBox=\"0,0,2048,2048\" focusable=\"false\">\r\n<path style=\"fill:currentColor\" shape-rendering=\"optimizeQuality\" type=\"path\" class=\"as-font-color-text\" d=\"M 1504 1408 l -156 -392 h -603 l -152 392 h -145 l 536 -1408 h 132 l 533 1408 m -602 -1236 h -4 l -254 725 h 515 m 744 639 v 512 h -2048 v -512 z\"></path>\r\n<path shape-rendering=\"optimizeQuality\" type=\"path\" class=\"as-font-color-contract\" d=\"M 2048 1536 v 512 h -2048 v -512 m 1920 128 h -1792 v 256 h 1792 z\"></path>\r\n<path shape-rendering=\"optimizeQuality\" type=\"path\" class=\"as-font-color-value\" d=\"M 1984 1984 h -1920 v -384 h 1920 z\"></path>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/insert_col_left.tpl /* harmony default export */ const insert_col_left = ("<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path style=\"fill:currentColor\" d=\"M20 3c.552 0 1 .448 1 1v16c0 .552-.448 1-1 1h-6c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1h6zm-1 2h-4v14h4V5zM6 7c2.761 0 5 2.239 5 5s-2.239 5-5 5-5-2.239-5-5 2.239-5 5-5zm1 2H5v1.999L3 11v2l2-.001V15h2v-2.001L9 13v-2l-2-.001V9z\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/insert_col_right.tpl /* harmony default export */ const insert_col_right = ("<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path style=\"fill:currentColor\" d=\"M10 3c.552 0 1 .448 1 1v16c0 .552-.448 1-1 1H4c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1h6zM9 5H5v14h4V5zm9 2c2.761 0 5 2.239 5 5s-2.239 5-5 5-5-2.239-5-5 2.239-5 5-5zm1 2h-2v1.999L15 11v2l2-.001V15h2v-2.001L21 13v-2l-2-.001V9z\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/process_outline.tpl /* harmony default export */ const process_outline = ("<svg class=\"process-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\">\r\n<path style=\"stroke:none;fill:currentColor\" d=\"M12,15.9h-.4c-2.2,0-4-1.8-4-4s1.8-4,4-4,4.2,1.9,4,4.4c-1.7.6-3,1.9-3.6,3.6M13.6,11.9c0-1.1-.9-2-2-2s-2,.9-2,2,.9,2,2,2,2-.9,2-2M22.6,19.3c0,0,.1.2,0,.3l-1,1.8c0,0-.2.1-.3,0l-1.2-.5c-.3.2-.6.4-.9.5l-.2,1.3c0,.1-.1.2-.2.2h-2.1c-.1,0-.2,0-.2-.2l-.2-1.3c-.3-.1-.7-.3-.9-.6l-1.2.5c0,0-.2,0-.3,0l-1-1.8c0,0,0-.2,0-.3l1.1-.8c0-.2,0-.3,0-.5s0-.4,0-.6l-1-.8c0,0-.1-.2,0-.3l1.1-1.8c0,0,.2-.1.3,0l1.2.5h0c.3-.2.5-.4.9-.5h0s.2-1.3.2-1.3c0-.1.1-.2.2-.2h2.1c.1,0,.2,0,.2.2l.2,1.3h0c.3.1.6.3.9.5h0s1.2-.5,1.2-.5c0,0,.2,0,.3,0l1,1.8c0,0,0,.2,0,.3l-1.1.8h0c0,.2,0,.4,0,.5s0,.3,0,.5h0s1.1.8,1.1.8ZM17.8,16.5c-.8,0-1.5.7-1.5,1.5s.7,1.5,1.5,1.5,1.5-.7,1.5-1.5-.7-1.5-1.5-1.5ZM21.4,8.7l-2-3.5c-.1-.2-.4-.2-.6-.2l-2.5,1c-.5-.4-1.1-.8-1.7-1l-.4-2.7c0-.2-.3-.4-.5-.4h-4c-.3,0-.5.2-.5.4l-.4,2.7c-.6.3-1.2.6-1.7,1l-2.5-1c-.2,0-.5,0-.6.2l-2,3.5c0,.2,0,.5,0,.6l2.1,1.6v2l-2.1,1.7c0,.1-.2.4,0,.6l2,3.5c0,.2.4.2.6.2l2.5-1c.5.4,1.1.8,1.7,1l.4,2.6c0,.2.3.4.5.4h3.4c-.5-.6-.8-1.1-1.1-1.9h-1.1l-.4-2.6c-1.2-.3-2.2-.9-3-1.8l-2.4,1-.8-1.3,2.1-1.6c-.4-1.2-.4-2.4,0-3.6l-2.1-1.6.8-1.3,2.4,1c.7-.9,1.8-1.6,3-1.8l.4-2.6h1.5l.4,2.6c1.2.3,2.2.9,3,1.8l2.4-1,.8,1.3-2.1,1.6c.2.6.3,1.2.3,1.8h.5c.5,0,1,0,1.5.2v-1.2l2.1-1.6c.1,0,.2-.4.1-.6Z\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/procedure_outline.tpl /* harmony default export */ const procedure_outline = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M183.9,209.9h-72.5l35.9-89.9L111.4,30h72.5l35.9,89.9-35.9,89.9ZM140.9,189.9h29.4l27.9-69.9-27.9-69.9h-29.4l27.9,69.9-27.9,69.9ZM89.8,209.9H17.3l35.9-89.9L17.3,30h72.5l35.9,89.9-35.9,89.9ZM46.8,189.9h29.4l27.9-69.9-27.9-69.9h-29.4l27.9,69.9-27.9,69.9Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/mobile_form_edit_outline.tpl /* harmony default export */ const mobile_form_edit_outline = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M225.5,147.3l-12.8-12.8c-1.9-1.9-5.1-1.9-7,0l-9.5,9.5,19.8,19.8,9.5-9.5c1.9-1.8,1.9-5,0-7h0ZM209.2,170.6l-39.4,39.4-20,20h-19.8v-19.8l.2-.2,19.6-19.6,39.6-39.6,10.5,10.6,9.2,9.3ZM160,20H60c-11-.1-20,8.8-20,19.9v159.9c0,11,8.9,20,20,20h40c0,0,0-29.7,0-29.7h-40V49.9l100,.2v69.7h20c0,0,0-79.7,0-79.7,0-11-8.9-20-20-20ZM65,39.7c-2.8,0-5-2.2-5-5s2.2-5,5-5,5,2.2,5,5-2.2,5-5,5ZM140,34.6c0,2.8-2.3,5.1-5.1,5.1h-49.9c-2.8,0-5.1-2.3-5.1-5.1v-5.1h60v5.1ZM120,169.9\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/windows_form_edit_outline.tpl /* harmony default export */ const windows_form_edit_outline = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M225.5,144.3l-9.5,9.5-19.8-19.8,9.5-9.5c1.8-1.9,5-1.9,7,0l12.8,12.8c1.9,1.9,1.9,5.1,0,7ZM60,180.4h50v19.6H40c-11,0-20-9-20-20V49.9c0-11,9-20,20-20h160c11,0,20,9,20,20v60h-20v-40H40v90.5c0,11,9,20,20,20ZM170,50c0,5.5,4.5,10,10,10s10-4.5,10-10-4.5-10-10-10-10,4.5-10,10ZM140,50c0,5.5,4.5,10,10,10s10-4.5,10-10-4.5-10-10-10-10,4.5-10,10ZM110,50c0,5.5,4.5,10,10,10s10-4.5,10-10-4.5-10-10-10-10,4.5-10,10ZM189.5,140.8l-39.6,39.6-19.6,19.6-.2.2v19.8h19.8l20-20,39.4-39.4-9.2-9.3-10.5-10.6Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/input_form_outline.tpl /* harmony default export */ const input_form_outline = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M200,19.9H40c-11,0-20,9-20,20v160.1c0,11,9,20,20,20h90v-20.1H40v-110.1h160v110.1h-10v20.1h10c11,0,20-9,20-20V39.9c0-11-9-20-20-20ZM200,70H40v-30.1h160v30.1ZM140,139.9h40v10.1h-10v70h10v9.9h-40v-9.9h10v-70h-10v-10.1Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/output_form_outline.tpl /* harmony default export */ const output_form_outline = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M200,19.6H40c-11,0-20,8.9-20,20v160.1c0,11,9,20,20,20h89.6c-8.7-5.1-16.2-12-22.2-20.1H40v-110.1h160v66.7c7.4,3.6,14.2,8.5,20,14.3V39.6c0-11.1-9-20-20-20ZM200,69.7H40v-30.1h160v30.1ZM167.4,158.6c-21.8,0-40.7,12.5-50,30.7,9.3,18.2,28.2,30.7,50,30.7s40.7-12.5,50-30.7c-9.3-18.2-28.2-30.7-50-30.7ZM167.4,208c-10.3,0-18.7-8.4-18.7-18.7s8.4-18.7,18.7-18.7,18.7,8.4,18.7,18.7-8.4,18.7-18.7,18.7ZM176.2,189.3c0,4.8-3.9,8.7-8.7,8.7s-8.7-3.9-8.7-8.7,3.9-8.7,8.7-8.7,8.7,3.9,8.7,8.7Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/template.tpl /* harmony default export */ const template = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M200.1,20H39.9c-11,0-19.9,8.9-19.9,19.9v160.2c0,11,8.9,19.9,19.9,19.9h160.1c11,0,19.9-8.9,19.9-19.9V39.9c0-11-8.9-19.9-19.9-19.9ZM120,190c0,5.5-4.5,10-10,10h-60c-5.5,0-10-4.5-10-10v-80c0-5.5,4.5-10,10-10h60c5.5,0,10,4.5,10,10v80ZM200,190c0,5.5-4.5,10-10,10h-50c-5.5,0-10-4.5-10-10v-30c0-5.5,4.5-10,10-10h50c5.5,0,10,4.5,10,10v30ZM200,130c0,5.5-4.5,10-10,10h-50c-5.5,0-10-4.5-10-10v-20c0-5.5,4.5-10,10-10h50c5.5,0,10,4.5,10,10v20ZM200,80c0,5.5-4.5,10-10,10H50c-5.5,0-10-4.5-10-10v-30c0-5.5,4.5-10,10-10h140c5.5,0,10,4.5,10,10v30Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/mobile_input_form_outline.tpl /* harmony default export */ const mobile_input_form_outline = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<polygon xmlns=\"http://www.w3.org/2000/svg\" points=\"190 130 190 119.9 150 119.9 150 130 160 130 160 200 150 200 150 209.9 190 209.9 190 200 180 200 180 130 190 130\" style=\"fill:currentColor; stroke: none\"/>\r\n<path xmlns=\"http://www.w3.org/2000/svg\" d=\"M60,180V39.9l100,.2v69.7h20c0,0,0-79.7,0-79.7,0-11-8.9-20-20-20H60c-11-.1-20,8.8-20,19.9v159.9c0,11,8.9,20,20,20h40c0,0,40,0,40,0v-29.8H60ZM80,20h60v5.1c0,2.8-2.3,5.1-5.1,5.1h-49.9c-2.8,0-5.1-2.3-5.1-5.1v-5.1ZM65,20c2.8,0,5,2.2,5,5s-2.2,5-5,5-5-2.2-5-5,2.2-5,5-5Z\" style=\"fill:currentColor; stroke: none\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/mobile_output_form_outline.tpl /* harmony default export */ const mobile_output_form_outline = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M160,20.3H60c-11-.1-20,8.8-20,19.9v159.9c0,11,8.9,20,20,20h40c0,0,22.9,0,22.9,0-12.1-7-22.1-17.4-28.7-29.8h-34.3V50.1l100,.2v98.3c6.9,0,13.6,1,20,2.7V40.3c0-11-8.9-20-20-20ZM65,40.2c-2.8,0-5-2.2-5-5s2.2-5,5-5,5,2.2,5,5-2.2,5-5,5ZM140,35.3c0,2.8-2.3,5.1-5.1,5.1h-49.9c-2.8,0-5.1-2.3-5.1-5.1v-5.1h60v5.1ZM160,158.6c-21.8,0-40.7,12.5-50,30.7,9.3,18.2,28.2,30.7,50,30.7s40.7-12.5,50-30.7c-9.3-18.2-28.2-30.7-50-30.7ZM160,208c-10.3,0-18.7-8.4-18.7-18.7s8.4-18.7,18.7-18.7,18.7,8.4,18.7,18.7-8.4,18.7-18.7,18.7ZM160,180.6c-4.8,0-8.7,3.9-8.7,8.7s3.9,8.7,8.7,8.7,8.7-3.9,8.7-8.7-3.9-8.7-8.7-8.7Z\" style=\"fill:currentColor; stroke: none\"/></svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/city.tpl /* harmony default export */ const city = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24\" height=\"24\" >\r\n<path style=\"fill:currentColor\" d=\"M172.4,229.7c-4.3,0-11.8-1.9-33.7-14.3-3.8-2.1-8.7-1.4-11.6,1.9-7.5,8.3-12.3,11.7-17.4,12.3-5.5.6-10.2-1.5-15.2-3.8-4.1-1.9-8.8-4-15.3-5.4-1.6-.4-3.3-.6-4.8-.9-15.8-2.8-27.6-7.3-36.2-39.7-2.1-7.8-5.2-9.3-10.5-11.9-4.9-2.4-11.5-5.7-15-14.2-3.1-7.6-2.9-18,.5-33.6,8.2-37,29.3-38.6,39.4-39.3.2,0,.4,0,.6,0-.7-10,1.5-17.4,6.6-22.2,5.1-4.8,11.1-5,13.7-4.8h31.6l23.1-8.9c2.3-.9,4.1-2.6,5.1-4.8l1.4-3.1c4.7-10.2,15.1-16.9,26.4-16.9h5.9l28.4,7.7c12.3,3.3,21.1,14.6,21.4,27.3l.4,20.6c0,3.1-.4,6.2-1.3,9.2l-6.3,20.3c-.8,2.6-.4,5.3,1,7.6l4.9,7.8c5.5,8.9,5.8,20.1.8,29.3l-17,30.7c-1.4,2.5-1.5,5.4-.4,8,5.4,12.9.8,27.8-10.9,35.4-5.5,3.6-10,5.4-14.1,5.7-.4,0-.9,0-1.4,0ZM172.9,210.1h0ZM108,210h0ZM134.2,194.6c4.9,0,9.8,1.2,14.2,3.7,16.4,9.3,22.5,11.2,24.1,11.6.6-.2,2.2-.8,4.8-2.6,3.7-2.4,5.1-7.1,3.4-11.3-3.4-8.2-2.9-17.4,1.4-25.1l17-30.7c1.6-2.9,1.5-6.5-.2-9.3l-4.9-7.8c-4.5-7.1-5.6-15.9-3.1-23.9l6.3-20.3c.3-1,.4-1.9.4-2.9l-.4-20.6c0-4.1-2.9-7.7-6.9-8.7l-25.9-7h-3.3c-3.7,0-7,2.1-8.5,5.4l-1.4,3.1c-3.2,6.9-8.8,12.2-15.9,14.9l-26.5,10.2h-35.6c-.3,1.1-.6,3.4-.2,7.3.6,5.6-.5,10.2-3.4,13.6-4.3,5.2-10.5,5.7-15.5,6-8.6.6-16.7,1.3-21.7,24-3.2,14.5-2.3,20-1.5,22,.5,1.3,1.4,1.9,5.5,4,6.5,3.2,16.4,8.1,20.8,24.5,3,11.1,6.2,18.3,9.7,21.5,2.4,2.2,5.3,2.8,11,3.8,1.8.3,3.6.6,5.6,1.1,8.5,1.9,14.7,4.6,19.2,6.7,1.4.6,3.1,1.4,4.3,1.8,1-.8,2.8-2.5,5.6-5.6,5.6-6.2,13.6-9.6,21.7-9.6ZM53.4,83.8h0ZM71.3,73.3s0,0,0,0h0Z\"/>\r\n<circle style=\"fill:currentColor\" cx=\"143.5\" cy=\"150\" r=\"19.9\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/country.tpl /* harmony default export */ const country = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24\" height=\"24\" >\r\n<path d=\"M173.4,159.1c0,11-8.9,19.9-19.9,19.9s-19.9-8.9-19.9-19.9,8.9-19.9,19.9-19.9,19.9,8.9,19.9,19.9ZM201.4,174c-1.3,2.4-1.5,5.2-.4,7.8,5.2,12.5.8,26.9-10.5,34.2-5.3,3.4-9.7,5.2-13.7,5.6-.4,0-.9,0-1.4,0-4.2,0-11.5-1.8-32.6-13.8-3.7-2.1-8.4-1.3-11.2,1.8-7.2,8-11.9,11.3-16.8,11.9-5.3.6-9.9-1.5-14.7-3.6-4-1.8-8.5-3.8-14.9-5.2-1.6-.3-3.1-.6-4.7-.9-15.3-2.7-26.7-7.1-35.1-38.4-2-7.5-5.1-9-10.1-11.5-4.7-2.3-11.2-5.5-14.5-13.8-3-7.4-2.8-17.4.5-32.5,7.9-35.8,28.3-37.3,38.1-38.1.2,0,.4,0,.6,0-.7-9.6,1.4-16.9,6.4-21.5,5-4.7,10.7-4.8,13.3-4.6h30.6l22.4-8.6c2.2-.8,4-2.5,5-4.6l1.4-3c4.6-9.9,14.6-16.3,25.5-16.3h5.7l27.5,7.5c12,3.2,20.5,14.1,20.7,26.4l.4,20c0,3-.4,6-1.3,8.9l-6.1,19.7c-.8,2.5-.4,5.2.9,7.4l4.7,7.5c5.4,8.6,5.7,19.5.8,28.3l-16.4,29.7ZM173.4,159.1c0-11-8.9-19.9-19.9-19.9s-19.9,8.9-19.9,19.9,8.9,19.9,19.9,19.9,19.9-8.9,19.9-19.9ZM153.4,139.2c-11,0-19.9,8.9-19.9,19.9s8.9,19.9,19.9,19.9,19.9-8.9,19.9-19.9-8.9-19.9-19.9-19.9Z\" style=\"fill:currentColor\"/>\r\n</svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/configuration_form_outline.tpl /* harmony default export */ const configuration_form_outline = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 240 240\"><path style=\"fill:currentColor\" d=\"M200,20.1H40c-11,0-20,8.9-20,20v160.1c0,11,9,20,20,20h80.8c-5.6-5.8-10.1-12.6-13.2-20.1H40v-110.1h160v31.9c8.1,5,14.9,11.8,20,19.8V40.1c0-11.1-9-20-20-20ZM200,70.3H40v-30.1h160v30.1ZM216.6,189.7l-11.2-8.9c0-1.3.2-2.7.2-4,0-2.1,0-4.2-.3-6.3l11.1-8.8c.5-.9,1.3-2.3.7-3.2l-10.7-18.2c-.3-.2-.7-.4-1-.6-.7-.4-1.4-.8-1.7-1l-12.8,5.4-9.1-5.2-2.3-14c-.3-.2-.8-1-1.5-1.4,0,0,0,0,0,0-.3-.2-.7-.3-1.1-.2,0,0,0,0,0,0h-10.2s-10.4,0-10.4,0c-1.6,0-2.6,1-2.6,2.1l-2.1,14.2c-3.1,1.6-6.3,3.1-8.9,5.2l-13.1-5.2c-1.1,0-2.6,0-3.2,1l-10.5,18.4v3.2l11,8.4v10.5l-11,8.9c0,.5-1.1,2.1,0,3.2l10.5,18.4c0,1,2.1,1,3.2,1l13.1-5.2c2.6,2.1,5.8,4.2,8.9,5.2l2.1,13.7c0,1,1.6,2.1,2.6,2.1h20.7c1.2,0,2-1.3,2.5-2.2l2-14c3.1-1.2,6.5-2.9,9-5.1l13.3,5.2c.9.5,2.6-.3,3.1-1.2l10.4-18.1c.8-1.4.4-2.8-.5-3.3ZM201.4,200.3l-12.9-5c-4.5,4.7-9.8,7.6-16,8.9l-1.8,14.2h-8.4l-2.1-13.7c-6.3-1.6-11.6-4.7-15.8-9.5l-12.6,5.2-4.2-6.8,11-8.4c-2.1-6.3-2.1-12.6,0-18.9l-11-8.4,4.2-6.8,12.6,5.2c3.7-4.7,9.4-8.4,15.8-9.5l2.1-13.6h7.9l1.8,13.9c3.7.7,7,2,10,3.9,0,0,.1,0,.2.1,2.2,1.4,4.1,3.1,6,5.1,0,0,.1.2.2.2l12.4-5.2h.4c0-.1,3.6,6.4,3.6,6.4v.2c0,0,.2.2.2.2l-10.8,8.3c1.2,2.8,1.8,6,1.9,9.3,0,3-.4,6.1-1.5,9l10.8,8.6-3.9,6.8ZM181.1,175.9c0,8.1-6.6,14.7-14.7,14.7s-14.7-6.6-14.7-14.7,6.6-14.7,14.7-14.7,14.7,6.6,14.7,14.7Z\"/></svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/function_manager.tpl /* harmony default export */ const function_manager = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 240 240\"><path style=\"fill:currentColor\" d=\"M116.4,119.8c0,.3,0,.6-.1.9-3.2,20.7-6.4,42.1-17.3,63.7-8.3,16.4-18.7,25-31,25.5-.4,0-.7,0-1.1,0-19.8,0-33.8-22-35.4-24.6-2.9-4.7-1.4-10.9,3.3-13.7,4.7-2.9,10.9-1.4,13.7,3.3,3.8,6.1,12.2,15,18.4,15s.2,0,.3,0c4.3-.2,9.3-5.4,13.9-14.5,9.1-18.1,12.3-37.1,15.1-55.6h-13.4c-7.1,0-12.9-5.8-12.9-12.9h0c0-7.1,5.8-12.9,12.9-12.9h17.8c3.6-17.2,9.3-34.3,21.6-50.1,16.9-21.7,30.6-22.7,39.1-19.8,11.7,4.1,19,18.2,18.8,36,0,5.5-4.5,9.9-10.1,9.9-5.5,0-9.9-4.6-9.9-10.1.1-9.6-3.1-16.1-5.4-16.9-1.3-.5-7.2,1-16.7,13.2-9,11.6-13.7,24.3-16.9,37.8h16.1c7.1,0,12.9,5.8,12.9,12.9h0c0,7.1-5.8,12.9-12.9,12.9h-20.7ZM181.7,174.2v3.5l6.7,4.9c.6.4.9,1.2.6,1.9v.5c-.1,0-.3,1.1-1,1.8l-7,12.6s-1.4.7-2.1,0l-8.4-3.5c-2.1,1.4-4.2,2.8-6.3,3.5l-1.4,9.1c0,.7-.7,1.4-1.4,1.4h-14.7c-.7,0-1.4,0-1.4-1.4l-1.4-9.1c-2.1-.7-4.9-2.1-6.3-4.2l-8.4,3.5h-2.1l-7-12.6v-2.1l7.7-5.6v-7.7l-7-5.6s-.7-1.4,0-2.1l7.7-12.6s1.4-.7,2.1,0l8.4,3.5c2.1-1.4,3.5-2.8,6.3-3.5l1.4-9.1c0-.7.7-1.4,1.4-1.4h14.7c.7,0,1.4,0,1.4,1.4l1.4,9.1c2.1.7,4.2,2.1,6.3,3.5l8.4-3.5h2.1l7,12.6v2.1l-7.7,5.6v3.5ZM164.9,175.6c0-5.6-4.9-10.5-10.5-10.5s-10.5,4.9-10.5,10.5,4.9,10.5,10.5,10.5,10.5-4.9,10.5-10.5Z\" /></svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/data_type_configuration_outline.tpl /* harmony default export */ const data_type_configuration_outline = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24\" height=\"24\"><path style=\"fill:currentColor\" d=\"M110,110V20H20v90M40,90v-50h50v50M200,65c0,14-11,25-25,25s-25-11-25-25,11.1-25,25-25,25,11.1,25,25M65,140l-45,80h90M75.8,200h-21.6l10.8-19.2M220,65c0-25-20-45-45-45s-45,20-45,45,20,45,45,45,45-20,45-45M210.8,179.3v4l7.7,5.6c.7.5,1,1.4.7,2.2l-.2.5s-.2,1.3-1,2.1l-8,14.4s-1.6.8-2.4,0l-9.6-4c-2.4,1.6-4.8,3.2-7.2,4l-1.6,10.4c0,.8-.8,1.6-1.6,1.6h-16.8c-.8,0-1.6,0-1.6-1.6l-1.6-10.4c-2.4-.8-5.6-2.4-7.2-4.8l-9.6,4h-2.4l-8-14.4v-2.4l8.8-6.4v-8.8l-8-6.4s-.8-1.6,0-2.4l8.8-14.4s1.6-.8,2.4,0l9.6,4c2.4-1.6,4-3.2,7.2-4l1.6-10.4c0-.8.8-1.6,1.6-1.6h16.8c.8,0,1.6,0,1.6,1.6l1.6,10.4c2.4.8,4.8,2.4,7.2,4l9.6-4h2.4l8,14.4v2.4l-8.8,6.4v4ZM191.6,180.9c0-6.4-5.6-12-12-12s-12,5.6-12,12,5.6,12,12,12,12-5.6,12-12Z\" /></svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/time_based_payroll_report.tpl /* harmony default export */ const time_based_payroll_report = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\"><path style=\"fill:currentColor\" d=\"M160.1,144.7c-6.2-2.8-13-4.3-20.2-4.4h-.2c-27.5,0-49.9,22.3-49.9,49.9s22.3,49.9,49.9,49.9,49.9-22.3,49.9-49.9-1.5-14-4.3-20.2c-5-11.2-14-20.3-25.2-25.3ZM153.9,215.1c-2.8,2.4-5.9,4-9.5,4.7v5.3h-10.1v-5c-2.7-.2-5.2-.7-7.4-1.4-5.1-1.6-7.6-4.1-7.6-7.5s.5-3.1,1.5-4.2c1-1.1,2.3-1.7,3.9-1.7s3.3.6,6.4,1.6c1.2.4,2.2.8,3.2,1,1.6.4,3,.6,4.1.6,2.6,0,4.6-.6,6-1.9,0,0,0,0,.1,0,1.5-1.3,2.2-3,2.2-5.1s-.8-2.7-2.3-3.8c-1.1-.8-2.7-1.6-4.7-2.2-2-.6-3.8-1.2-5.4-1.7-4.3-1.4-6.9-2.4-7.8-2.9-4.8-2.7-7.1-6.8-7.1-12.3s2-10,5.9-13.4c2.6-2.2,5.6-3.8,9-4.5v-5.3h10.1v5.1c1.7.3,3.4.7,5,1.3,4.2,1.5,6.3,3.7,6.3,6.5s-.5,3-1.5,4.2c-1,1.2-2.3,1.8-3.9,1.8s-2.3-.2-3.7-.7c-.8-.3-1.5-.5-2.2-.7-2.2-.7-3.9-1-5.1-1-1.9,0-3.4.4-4.8,1.3-.1,0-.2.2-.3.2-1.1.9-1.7,2.1-1.7,3.7s.5,2,1.7,2.8c1.2.9,3,1.7,5.4,2.5,1.7.5,3.3,1.1,4.7,1.6,4.1,1.4,6.9,2.6,8.5,3.6,4.8,3.1,7.1,7.7,7.1,13.8s-2,10.2-6.1,13.7ZM80.2,199.9c.8,7.1,3,13.9,6.2,20H30c-11,0-20-9-20-20V40.2c0-11,9-20,20-20h159.8c11,0,20,8.9,20,20v42.8c-5.2-1.6-10.8-2.5-16.6-2.5s-2.1,0-3.2,0v-20.6c0-11-9-20-20-20H50c-11,0-20,8.9-20,20v120c0,11,9,20,20,20h30.2ZM239.7,140.3c0,24.2-17.3,44.4-40.1,48.9-.1-6.9-1.4-13.4-3.6-19.6,13.6-2.8,23.9-14.9,23.9-29.4s-13.4-30-30-30-26.5,10.2-29.3,23.7c-6.1-2.3-12.7-3.6-19.5-3.7,4.6-22.8,24.8-39.9,48.9-39.9s49.9,22.3,49.9,49.9ZM199.7,158.1l-15-13.2,1.4-26.3c.1-2,1.8-3.6,3.8-3.6s3.6,1.5,3.8,3.5l1.5,22,10.1,12.2c1.3,1.6,1.1,3.9-.5,5.2h0c-1.4,1.3-3.5,1.2-4.9,0ZM159.8,90.3H49.8v-20h110v20ZM119.8,130.1H49.8v-20h70v20ZM49.8,160.1h20.1v20.1h-20.1v-20.1Z\"/></svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/important_outline.tpl /* harmony default export */ const important_outline = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 240 240\"><circle cx=\"120\" cy=\"207.26325\" r=\"20.2697\" style=\"fill:none;stroke:currentColor;\" stroke-miterlimit=\"10\" stroke-width=\"20\"/><path style=\"fill:none;stroke:currentColor;\" d=\"M119.91441,162.875h-.00004c-10.3258,0-18.86289-8.04674-19.47299-18.3545l-6.17585-104.34288c-.87661-14.81057,10.89792-27.30262,25.73441-27.30262h.00005c14.85315,0,26.63372,12.51893,25.73189,27.34468l-6.3464,104.33265c-.6262,10.29447-9.15758,18.32267-19.47108,18.32267Z\" stroke-miterlimit=\"10\" stroke-width=\"20\"/></svg>"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/emoji_muted.tpl /* harmony default export */ const emoji_muted = ("<svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 6.3499999 6.3500002\"\n version=\"1.1\"\n id=\"svg5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:svg=\"http://www.w3.org/2000/svg\">\n <g\n inkscape:label=\"Layer 1\"\n inkscape:groupmode=\"layer\"\n id=\"layer1\">\n <path\n id=\"path1315\"\n style=\"fill:currentColor;fill-opacity:1;fill-rule:evenodd;stroke-width:0.1;stroke-linecap:square;stroke-linejoin:round;paint-order:markers stroke fill\"\n transform=\"matrix(0.26458334,0,0,0.26458334,-1.3750001e-8,0.52916667)\"\n d=\"m 21,10 a 9,9 0 0 1 -9,9 9,9 0 0 1 -9,-9 9,9 0 0 1 9,-9 9,9 0 0 1 9,9 z m 1.999999,-2e-7 A 10.999999,11 0 0 1 12,21 10.999999,11 0 0 1 0.99999998,9.9999998 10.999999,11 0 0 1 12,-0.99999996 10.999999,11 0 0 1 22.999999,9.9999998 Z\" />\n <path\n id=\"path1800\"\n style=\"fill:currentColor;fill-rule:evenodd;stroke-width:0.1;stroke-linecap:square;stroke-linejoin:round;paint-order:markers stroke fill\"\n transform=\"scale(0.26458334)\"\n d=\"M 10,10 A 2,2 0 0 1 8,12 2,2 0 0 1 6,10 2,2 0 0 1 8,8 2,2 0 0 1 10,10 Z\" />\n <path\n id=\"path1802\"\n style=\"fill:currentColor;fill-rule:evenodd;stroke-width:0.1;stroke-linecap:square;stroke-linejoin:round;paint-order:markers stroke fill\"\n transform=\"matrix(0.26458334,0,0,0.26458334,-0.2645834,0)\"\n d=\"m 19,10 a 2,2 0 0 1 -2,2 2,2 0 0 1 -2,-2 2,2 0 0 1 2,-2 2,2 0 0 1 2,2 z\" />\n </g>\n</svg>\n"); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/icons.css var icons = __webpack_require__(6734); // EXTERNAL MODULE: ./node_modules/absol/src/Color/Color.js var Color = __webpack_require__(257); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/Icons.js function SpinnerIco() { return ACore/* default._ */.Z._(spinner); } SpinnerIco.tag = 'SpinnerIco'.toLowerCase(); ACore/* default.install */.Z.install(SpinnerIco); function InsertColLeftIcon() { return ACore/* default._ */.Z._(insert_col_left); } InsertColLeftIcon.tag = 'InsertColLeftIcon'.toLowerCase(); ACore/* default.install */.Z.install(InsertColLeftIcon); function InsertColRightIcon() { return ACore/* default._ */.Z._(insert_col_right); } InsertColRightIcon.tag = 'InsertColRightIcon'.toLowerCase(); ACore/* default.install */.Z.install(InsertColRightIcon); function MdiStoreMarkerOutline() { return ACore/* default._ */.Z._(mdi_store_marker_outline); } MdiStoreMarkerOutline.tag = 'mdi-store-marker-outline'; ACore/* default.install */.Z.install(MdiStoreMarkerOutline); function ProcessOutlineIcon() { return (0,ACore._)(process_outline); } ProcessOutlineIcon.tag = 'ProcessOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(ProcessOutlineIcon); function ProcedureOutlineIcon() { return (0,ACore._)(procedure_outline); } ProcedureOutlineIcon.tag = 'ProcedureOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(ProcedureOutlineIcon); function WindowsFormEditOutlineIcon() { return (0,ACore._)(windows_form_edit_outline); } WindowsFormEditOutlineIcon.tag = 'WindowsFormEditOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(WindowsFormEditOutlineIcon); function MobileFormEditOutlineIcon() { return (0,ACore._)(mobile_form_edit_outline); } MobileFormEditOutlineIcon.tag = 'MobileFormEditOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(MobileFormEditOutlineIcon); function TemplateIcon() { return (0,ACore._)(template); } TemplateIcon.tag = 'TemplateIcon'.toLowerCase(); ACore/* default.install */.Z.install(TemplateIcon); function InputFormOutlineIcon() { return (0,ACore._)(input_form_outline); } InputFormOutlineIcon.tag = 'InputFormOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(InputFormOutlineIcon); function OutputFormOutlineIcon() { return (0,ACore._)(output_form_outline); } OutputFormOutlineIcon.tag = 'OutputFormOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(OutputFormOutlineIcon); function MobileInputFormOutlineIcon() { return (0,ACore._)(mobile_input_form_outline); } MobileInputFormOutlineIcon.tag = 'MobileInputFormOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(MobileInputFormOutlineIcon); function MobileOutputFormOutlineIcon() { return (0,ACore._)(mobile_output_form_outline); } function CityIcon() { return (0,ACore._)(city); } CityIcon.tag = 'CityIcon'.toLowerCase(); ACore/* default.install */.Z.install(CityIcon); function CountryIcon() { return (0,ACore._)(country); } CountryIcon.tag = 'CountryIcon'.toLowerCase(); ACore/* default.install */.Z.install(CountryIcon); MobileOutputFormOutlineIcon.tag = 'MobileOutputFormOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(MobileOutputFormOutlineIcon); function FontColorIcon() { this._value = '#000000'; this.$contract = (0,ACore.$)('.as-font-color-contract', this); this.$value = (0,ACore.$)('.as-font-color-value', this); this.value = 'cyan'; } FontColorIcon.tag = 'FontColorIcon'.toLowerCase(); FontColorIcon.render = function () { return (0,ACore._)(font_color); }; FontColorIcon.property = {}; FontColorIcon.property.value = { set: function (value) { var cValue; if (typeof value === "string") { try { cValue = Color/* default.parse */.Z.parse(value); value = cValue.toString('hex6'); } catch (err) { value = "#000000"; cValue = Color/* default.parse */.Z.parse(value); } } else if (value instanceof Color/* default */.Z) { cValue = value; value = value.toString('hex6'); } else { value = "#000000"; cValue = Color/* default.parse */.Z.parse(value); } this._value = value; var hColor = cValue.getContrastYIQ(); this.$contract.addStyle('fill', hColor.toString("hex6")); this.$value.addStyle('fill', this._value.toString('hex6')); }, get: function () { return this._value; } }; function ConfigurationFormOutlineIcon() { return (0,ACore._)(configuration_form_outline); } ConfigurationFormOutlineIcon.tag = 'ConfigurationFormOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(ConfigurationFormOutlineIcon); function FunctionManagerIcon() { return (0,ACore._)(function_manager); } FunctionManagerIcon.tag = 'FunctionManagerIcon'.toLowerCase(); ACore/* default.install */.Z.install(FunctionManagerIcon); function DataTypeConfiguratorOutlineIcon() { return (0,ACore._)(data_type_configuration_outline); } DataTypeConfiguratorOutlineIcon.tag = 'DataTypeConfiguratorOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(DataTypeConfiguratorOutlineIcon); function TimeBasedPayrollReportIcon() { return (0,ACore._)(time_based_payroll_report); } TimeBasedPayrollReportIcon.tag = 'TimeBasedPayrollReportIcon'.toLowerCase(); ACore/* default.install */.Z.install(TimeBasedPayrollReportIcon); function ImportantOutlineIcon() { return (0,ACore._)(important_outline).addStyle({ width: '1em', height: '1em' }); } ImportantOutlineIcon.tag = 'ImportantOutlineIcon'.toLowerCase(); ACore/* default.install */.Z.install(ImportantOutlineIcon); function EmojiMutedIcon(){ return (0,ACore._)(emoji_muted); } EmojiMutedIcon.tag = 'EmojiMutedIcon'.toLowerCase(); ACore/* default.install */.Z.install(EmojiMutedIcon); /***/ }), /***/ 407: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "j2": () => (/* binding */ MenuButton), /* harmony export */ "Lt": () => (/* binding */ Dropdown), /* harmony export */ "KZ": () => (/* binding */ Dropright), /* harmony export */ "ee": () => (/* binding */ VMenuLine), /* harmony export */ "zV": () => (/* binding */ VMenuItem), /* harmony export */ "T$": () => (/* binding */ VMenu), /* harmony export */ "E": () => (/* binding */ HMenuItem), /* harmony export */ "ch": () => (/* binding */ HMenu), /* harmony export */ "p": () => (/* binding */ VRootMenu) /* harmony export */ }); /* harmony import */ var _css_menu_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4286); /* harmony import */ var _css_menu_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_menu_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3349); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(863); /* harmony import */ var _tool_BlurTrigger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9346); /* harmony import */ var absol_src_HTML5_ResizeSystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6700); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function MenuButton() { this.$text = $('.absol-vmenu-button-text', this); this.$key = $('.absol-vmenu-button-key', this); this.$arrow = $('.absol-vmenu-arrow', this); this.$iconCtn = $('.absol-vmenu-button-ext-icon-container', this); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$text, 'text', 'innerHTML'); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$key, 'key', 'innerHTML'); } MenuButton.tag = 'menubutton'; MenuButton.render = function () { return _({ 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) { _(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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(MenuButton); /*** * * @extends Follower * @constructor */ function Dropdown() { this.$container = $('.absol-dropdown-content', this); this.$container.followTarget = this; this.$container.sponsorElement = this; this.$container.anchor = [1, 2, 6, 5]; } Dropdown.tag = 'dropdown'; Dropdown.render = function () { return _({ 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'); // ResizeSystem.update(); if (this.$container.lastChild && this.$container.lastChild.$items) { this.$container.lastChild.$items.forEach(function (itemElt) { if (itemElt.autoFixParentSize) { itemElt.autoFixParentSize(); } }); } 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.hasClass('absol-drop-hidden'); } }; Dropdown.prototype.findAvailablePosition = function () { var outBound = absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].traceOutBoundingClientRect */ .ZP.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 = $('.absol-dropright-content', this); this.$container.followTarget = this; this.$container.sponsorElement = this; this.$container.anchor = [0, 3, 7, 4]; } Dropright.tag = 'dropright'; Dropright.render = function () { return _({ 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 _('<div class="absol-vmenu-line"><div></div></div>'); } VMenuLine.tag = 'VMenuLine'.toLowerCase(); function VMenuItem() { var thisVM = this; this.$dropper = $('dropright', this); this.$vmenu = $('vmenu', this); this.$button = $('menubutton', this); this.$text = thisVM.$button.$text; this.$key = thisVM.$button.$key; this.$arrow = thisVM.$button.$arrow; this.$iconCtn = thisVM.$button.$iconCtn; absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$button, ['text', 'extendClasses', 'extendStyle', 'key', 'icon', 'iconSrc']); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$vmenu, ['activeTab']); this.eventHandler = absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].bindFunctions */ .ZP.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 _({ tag: 'dropright', extendEvent: ['press', 'enter'], child: ['menubutton', { tag: 'vmenu', }] }); }; VMenuItem.prototype.init = function (props) { Object.assign(this, props || {}); }; VMenuItem.prototype.autoFixParentSize = 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 = absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].copyEvent */ .ZP.copyEvent(event); this.emit('enter', newEvent, this); }; VMenuItem.eventHandler.pressItem = function (event) { var newEvent = absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].copyEvent */ .ZP.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 = absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].copyEvent */ .ZP.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.disabled = { set: function (value) { if (value) { this.addClass('absol-menu-item-disabled'); } else { this.removeClass('absol-menu-item-disabled'); } }, get: function () { return this.hasClass('absol-menu-item-disabled'); } }; VMenuItem.property.hidden = { set: function (value) { if (value) { this.addClass('absol-menu-item-hidden'); } else { this.removeClass('absol-menu-item-hidden'); } }, get: function () { return this.hasClass('absol-menu-item-hidden'); } }; /** * @extends AElement * @constructor */ function VMenu() { } VMenu.tag = 'vmenu'; VMenu.render = function () { return _({ 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.disabled; item.activeTab = -1; if (i == tabIndex && !item.disabled) { 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', absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].copyEvent */ .ZP.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 = _('vmenuline'); } else if ((0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* .isDomNode */ .mV)(item)) { itemElt = item; } else if (item.child || item.class || item.tag || item.style || typeof item === 'string') { itemElt = _(item); } else { itemElt = _({ 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.blurTrigger = null; this.$vmenu = $('vmenu', this); this.$dropDown = this; this.$button = $('button.absol-hmenu-button', this); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$button, 'text', 'innerHTML'); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$vmenu, 'items'); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.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 _({ 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', absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].copyEvent */ .ZP.copyEvent(event, { target: this }), this); }; HMenuItem.eventHandler.enterButton = function (event) { event.menuItem = this; this.emit('enter', absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].copyEvent */ .ZP.copyEvent(event, { target: this }), this); }; HMenuItem.eventHandler.pressItem = function (event) { this.emit('press', absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].copyEvent */ .ZP.copyEvent(event, { target: this }), this); }; HMenuItem.property = {}; HMenuItem.property.disabled = VMenuItem.property.disabled; HMenuItem.property.hidden = VMenuItem.property.hidden; HMenuItem.prototype.init = function (props) { props = props || {}; Object.assign(this, props); }; /*** * @extends AElement * @constructor */ function HMenu() { } HMenu.tag = 'hmenu'; HMenu.render = function () { return _({ 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.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 = _({ 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 = { /*** * @this HMenu * @param tabIndex */ 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.disabled; item.activeTab = -1; if (i == tabIndex && !item.disabled) { 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)) { if (this.blurTrigger) { this.blurTrigger.destroy(); } this.blurTrigger = new _tool_BlurTrigger__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z([this], "click", this.eventHandler.clickSomewhere, 100, 10); } else if ((lastValue >= 0) && !(this._activeTab >= 0)) { if (this.blurTrigger) { this.blurTrigger.destroy(); this.blurTrigger = null; } } 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.$attachhook = _({ tag: 'attachhook', props: { prevWidth: 0, requestUpdateSize: () => { var newWidth = this.getBoundingClientRect().width; if (newWidth === this.$attachhook.prevWidth) return; this.$attachhook.prevWidth = newWidth; Array.prototype.forEach.call(this.childNodes, elt => { if (elt.autoFixParentSize) { elt.autoFixParentSize(); } }); } }, on: { attached: () => { absol_src_HTML5_ResizeSystem__WEBPACK_IMPORTED_MODULE_6__/* ["default"].add */ .Z.add(this.$attachhook); this.$attachhook.requestUpdateSize(); } } }).addTo(this); this.items = []; } VRootMenu.tag = 'VRootMenu'.toLowerCase(); VRootMenu.render = function () { return _({ class: ['as-v-root-menu'], extendEvent: ['press', 'enter', 'activetab', 'cancel'] }); }; VRootMenu.prototype._childFromItems = function (items) { var thisM = this; while (this.lastChild && this.lastChild !== this.$attachhook) this.lastChild.remove(); while (this.firstChild && this.firstChild !== this.$attachhook) this.firstChild.remove(); this.$items = items.map(function (item, i) { var itemElt; if (typeof item === 'string' && (item.substr(0, 1) === '-' || item.substr(0, 1) === '=')) { itemElt = _('vmenuline'); } else if ((0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* .isDomNode */ .mV)(item)) { itemElt = item; } else if (item.child || item.class || item.tag || item.style || typeof item === 'string') { itemElt = _(item); } else { itemElt = _({ tag: 'vmenuitem', props: item, on: { enter: thisM.eventHandler.enterItem, press: thisM.eventHandler.pressItem } }); } itemElt._tabIndex = i; thisM.addChild(itemElt); return itemElt; }); this.$attachhook.prevWidth = 0; this.$attachhook.requestUpdateSize(); (0,_ACore__WEBPACK_IMPORTED_MODULE_1__.$$)('img', this).filter(x => !!x.getAttribute('src') && !x.classList.contains('absol-vmenu-button-icon')).forEach(elt => { (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* .waitImageLoaded */ .Lp)(elt).then(() => this.$attachhook.requestUpdateSize()); }); }; VRootMenu.property = Object.assign({}, HMenu.property); VRootMenu.eventHandler = Object.assign({}, HMenu.eventHandler); _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install([HMenu, VMenuItem, VMenu, Dropright, VMenuLine, Dropdown, HMenuItem, VRootMenu]); /***/ }), /***/ 3488: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var _FlexiconButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3929); /* harmony import */ var _css_messagedialog_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3163); /* harmony import */ var _css_messagedialog_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_messagedialog_css__WEBPACK_IMPORTED_MODULE_2__); /*** * @extends AElement * @constructor */ function MessageDialog() { this.$header = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-message-dialog-header', this); this.$title = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ tag: 'span', class: 'as-message-dialog-title', child: { text: '' } }); this.$body = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-message-dialog-body', this); this.$footer = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-message-dialog-footer', this); this.$actionBtns = []; } MessageDialog.tag = 'MessageDialog'.toLowerCase(); MessageDialog.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ extendEvent: ['action'], class: 'as-message-dialog', child: [ { class: 'as-message-dialog-header', }, { class: 'as-message-dialog-body' }, { class: 'as-message-dialog-footer' } ] }); }; ['addChild', 'removeChild', 'clearChild', 'addChildBefore', 'addChildAfter'].forEach(key => { MessageDialog.prototype[key] = function () { this.$body[key].apply(this.$body, arguments); return this; }; }); MessageDialog.prototype._makeActionBtn = function (action) { var button = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ tag: _FlexiconButton__WEBPACK_IMPORTED_MODULE_1__/* ["default"].tag */ .Z.tag, class: action.class || [], props: { text: action.text || action.name, icon: action.icon || null }, on: { click: (event) => { this.emit('action', { type: 'action', target: this, originalEvent: event, action: action }, this); } } }); if (action.name) button.attr('data-name', action.name); return button; }; MessageDialog.property = {}; MessageDialog.property.dialogActions = { /*** * @this MessageDialog * @param actions */ set: function (actions) { this._actions = actions || []; this.$actionBtns.forEach(button => button.remove()); this.$actionBtns = this._actions.map(action => this._makeActionBtn(action)); this.$footer.addChild(this.$actionBtns); }, get: function () { return this._actions; } }; MessageDialog.property.dialogTitle = { set: function (value) { this._dialogTitle = value; this.$title.firstChild.data = ''; this.$title.attr('data-ml-key', undefined); if (typeof value === "string") { this.$title.firstChild.data = value; } else if (value && value.mlKey) { this.$title.firstChild.data = ''; this.$title.attr('data-ml-key', value.mlKey); } if (value && !this.$title.parentElement) { this.$header.addChild(this.$title); } else if (!value && this.$title.parentElement) { this.$title.remove(); } }, get: function () { return this._dialogTitle; } }; _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(MessageDialog); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MessageDialog); /***/ }), /***/ 9826: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_modal_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6881); /* harmony import */ var _css_modal_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_modal_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; function Modal() { this._contentAlign = []; this.contentAlign = 'middle center'; this.$content = $('.as-modal-content', this); } Modal.tag = 'modal'; Modal.render = function () { return _({ 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.prototype.getChildren = function (){ return this.$content.children; }; Modal.property = {}; Modal.property.show = { set: function (value) { if (value) this.removeClass('as-hidden'); else this.addClass('as-hidden'); }, get: function () { return !this.hasClass('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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(Modal); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Modal); /***/ }), /***/ 1812: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "q": () => (/* binding */ loadLanguageModule) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); var counter = 30; function makeCss(data) { var cssText = Object.keys(data).map(key => { return [ '[data-ml-key=' + JSON.stringify(key) + ']::before {', ' content: ' + JSON.stringify(data[key]) + ';', '}' ].join('\n'); }).join('\n\n'); (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ tag: 'style', attr: { type: 'text/css' }, props: { innerHTML: cssText } }).addTo(document.head); } var data = { txt_ok: 'OK', txt_cancel: 'Cancel', txt_close: 'Close', txt_option: 'Option', txt_check_all: 'Check All', txt_select_value: '-- Select values --' }; makeCss(data); var overrideData = {}; var LanguageModuleLoaded = false; function loadLanguageModule() { if (LanguageModuleLoaded) return; var text; var newest = false, key; if (window['LanguageModule'] && window['LanguageModule'].data && window['LanguageModule'].data.length > 0) { LanguageModuleLoaded = true; for (key in data) { text = window['LanguageModule'].text(key); if (!text.startsWith('[key:') && text !== data[key]) { overrideData[key] = text; newest = true; } } if (newest) makeCss(overrideData); } } function waitLanguage() { if (window['LanguageModule'] && window['LanguageModule'].data && window['LanguageModule'].data.length > 0) { loadLanguageModule(); } else { if (counter--) setTimeout(waitLanguage, 400 + Math.floor(16000 / counter / counter)); } } waitLanguage(); /* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ({}); /***/ }), /***/ 7570: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "sP": () => (/* binding */ NPDropdownButton), /* harmony export */ "PL": () => (/* binding */ NPSection), /* harmony export */ "Bd": () => (/* binding */ NPList), /* harmony export */ "Ee": () => (/* binding */ NPItem), /* harmony export */ "FW": () => (/* binding */ MNPNotificationVirtualDropdown) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1477); /* harmony import */ var _css_notificationpanel_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5810); /* harmony import */ var _css_notificationpanel_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_notificationpanel_css__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(863); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7951); /* harmony import */ var absol_src_HTML5_ResizeSystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6700); /* harmony import */ var _QuickMenu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1274); /* harmony import */ var absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7807); /* harmony import */ var _RelativeTimeText__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9441); /* harmony import */ var _FlexiconButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(3929); /* harmony import */ var _mobile_MHeaderBar__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(9277); /** * @extends AElement * @constructor */ function NotificationPanel() { } NotificationPanel.tag = 'NotificationPanel'.toLowerCase(); NotificationPanel.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ class: 'as-notification-panel', }); }; NotificationPanel.prototype.addChild = function () { var res = absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_5__/* ["default"].prototype.addChild.apply */ .Z.prototype.addChild.apply(this, arguments); absol_src_HTML5_ResizeSystem__WEBPACK_IMPORTED_MODULE_6__/* ["default"].updateUp */ .Z.updateUp(this, true); return res; }; NotificationPanel.prototype.closeAllDropdown = function () { Array.prototype.forEach.call(this.childNodes, c => { if (typeof c.close === "function") c.close(); }); }; _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(NotificationPanel); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NotificationPanel); /** /** * @extends AElement * @constructor */ function NPDropdownButton() { this.$dropdown = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-db-dropdown', this); this.$iconCtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-db-icon-ctn', this); this.$icon = null this.$count = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-db-count', this); this._count = 0; this.$btn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-db-btn', this); this.$btn.on('click', this.eventHandler.click); this.$body = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-db-dropdown-body', this); this.$quickMenuBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-db-quick-menu-btn', this); this.$quickMenuCtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-db-dropdown-quick-menu-ctn', this); /** * @name count * @type {number} * @memberOf NPDropdownButton# */ } NPDropdownButton.tag = 'NPDropdownButton'.toLowerCase(); NPDropdownButton.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ class: 'as-np-dropdown-button', extendEvent: ['click', 'close', 'open'], child: [ { tag: 'button', class: 'as-np-db-btn', child: [ { class: 'as-np-db-icon-ctn', }, { class: 'as-np-db-count' } ] }, { class: ['as-np-db-dropdown', 'as-dropdown-box-common-style'], child: [ { class: 'as-np-db-dropdown-quick-menu-ctn', style: { display: 'none' }, child: [ { tag: 'button', class: ['as-transparent-button', 'as-np-db-quick-menu-btn'], child: 'span.mdi.mdi-dots-horizontal' } ] }, { class: 'as-np-db-dropdown-body' } ] } ] }); }; ['addChild', 'removeChild', 'clearChild'].forEach(function (key) { NPDropdownButton.prototype[key] = function () { return this.$body[key].apply(this.$body, arguments); }; }); NPDropdownButton.prototype.getChildNodes = function () { return Array.prototype.slice.call(this.$body.childNodes); }; NPDropdownButton.prototype.getFirstChild = function () { return this.$body.firstChild; }; NPDropdownButton.prototype.getLastChild = function () { return this.$body.lastChild; }; NPDropdownButton.prototype.addChildBefore = function (child, bf) { //adapt method if (bf && bf === this.lastChild) bf = this.$body.lastChild; else if (bf && bf === this.firstChild) bf = this.$body.firstChild; return this.$body.addChildBefore(child, bf); }; NPDropdownButton.prototype.addChildAfter = function (child, at) { if (at === this.lastChild) at = this.$dropdown.lastChild; else if (at === this.firstChild) at = this.$dropdown.firstChild; return this.$body.addChildAfter(child, at); }; NPDropdownButton.prototype.open = function () { if (this.hasClass('as-active')) return; this.addClass('as-active'); var bound = this.getBoundingClientRect(); var screenSize = (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* .getScreenSize */ .tE)(); if (bound.left < screenSize.width / 2) { this.$dropdown.addStyle({ top: bound.bottom + 5 + 'px', '--max-height': `calc(90vh - ${bound.bottom + 110}px)`, left: '20px', right: 'unset' }); } else { this.$dropdown.addStyle({ top: bound.bottom + 5 + 'px', '--max-height': `calc(90vh - ${bound.bottom + 110}px)`, right: '20px', left: 'unset' }); } this.$dropdown.addStyle('z-index', (0,_utils__WEBPACK_IMPORTED_MODULE_1__.findMaxZIndex)(this) + 2); setTimeout(() => { if (this.hasClass('as-active')) window.addEventListener('click', this.eventHandler.clickOut); }, 3); this.emit('open', { type: 'open' }, this); }; NPDropdownButton.prototype.close = function () { if (!this.hasClass('as-active')) return; this.removeClass('as-active'); window.removeEventListener('click', this.eventHandler.clickOut); this.emit('close', { type: 'close' }, this); }; NPDropdownButton.property = {}; NPDropdownButton.property.count = { set: function (value) { value = Math.round(value); if (!(0,_utils__WEBPACK_IMPORTED_MODULE_1__.isNaturalNumber)(value)) value = 0; this._count = value; if (value > 0) { this.$count.attr('data-count', value); } else { this.$count.attr('data-count', null); } }, get: function () { return this._count; } }; NPDropdownButton.property.icon = { set: function (value) { if (this.$icon) this.$icon.remove(); this.$iconCtn.clearChild(); var elt; if ((0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* .isDomNode */ .mV)(value)) { if (value.parentElt) value = value.cloneNode(true); elt = value; } else if (value && (typeof value === 'string' || typeof value === 'object')) { if (value === 'default') value = 'span.mdi.mdi-equal'; elt = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)(value); } if (elt) { this.$iconCtn.addChild(elt); this.$icon = elt; this.addClass('as-has-icon'); } else { this.$icon = null; value = null; this.removeClass('as-has-icon'); } this._icon = value; }, get: function () { return this._icon; } }; NPDropdownButton.property.quickmenu = { set: function (value) { value = value || null; if (this.quickmenuInstance) { this.quickmenuInstance.remove(); } this._quickmenu = value; if (value) { this.$quickMenuCtn.removeStyle('display'); this.$dropdown.addClass('as-has-quick-menu'); this.quickmenuInstance = new _QuickMenu__WEBPACK_IMPORTED_MODULE_7__/* .QuickMenuInstance */ .U(this.$quickMenuBtn, Object.assign({ triggerEvent: 'click', anchor: [2, 5], menuCtn: this.$quickMenuCtn }, value)); } else { this.$dropdown.removeClass('as-has-quick-menu'); this.$quickMenuCtn.addStyle('display', 'none'); } }, get: function () { return this._quickmenu; } } NPDropdownButton.eventHandler = {}; /** * @this NPDropdownButton * @param {MouseEvent} event */ NPDropdownButton.eventHandler.click = function (event) { this.emit('click', { type: 'click', originalEvent: event }, this); if (this.hasClass('as-active')) { this.close(); } else { this.open(); } }; /** * @this NPDropdownButton * @param {MouseEvent} event */ NPDropdownButton.eventHandler.clickOut = function (event) { if ((0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* .hitElement */ .EY)(this, event)) return; this.close(); } _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(NPDropdownButton); /** * @extends AElement * @constructor */ function NPSection() { this.$body = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-section-body', this); this.$name = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-section-name', this); this.$action = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-section-action', this); this.$action.on('click', (event) => { this.emit('action', { type: 'action', originalEvent: event }, this); }); } NPSection.tag = 'NPSection'.toLowerCase(); NPSection.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ class: 'as-np-section', extendEvent: ['action'], child: [ { class: 'as-np-section-header', child: [ { class: 'as-np-section-name', attr: { 'data-name': '' } }, { class: 'as-np-section-action' } ] }, { class: 'as-np-section-body', } ] }); }; ['addChild', 'removeChild', 'findChildAfter', 'findChildBefore'].forEach(key => { NPSection.prototype[key] = function () { return this.$body[key].apply(this.$body, arguments); } }); NPSection.prototype.getChildNodes = function () { return Array.prototype.slice.call(this.$body.childNodes); }; NPSection.prototype.getFirstChild = function () { return this.$body.firstChild; }; NPSection.prototype.getLastChild = function () { return this.$body.lastChild; }; NPSection.prototype.addChildBefore = function (child, bf) { if (bf === this.firstChild) bf = this.$body.firstChild; else if (bf === this.lastChild) bf = this.$body.lastChild; return this.$body.addChildBefore(child, bf); }; NPSection.prototype.addChildAfter = function (child, at) { if (at === this.firstChild) at = this.$body.firstChild; else if (at === this.lastChild) at = this.$body.lastChild; return this.$body.addChildAfter(child, at); }; NPSection.property = {}; NPSection.property.name = { set: function (value) { value = value || ''; value = value + ''; this.$name.attr('data-name', value); }, get: function () { return this.attr('data-name'); } }; NPSection.property.actionText = { set: function (value) { value = value || ''; value = value + ''; if (value) this.$action.attr('data-text', value); else { this.$action.attr('data-text', null); } }, get: function () { return this.attr('data-text'); } }; /** * @extends AElement * @constructor */ function NPList() { this.$body = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-list-body', this); this._moreText = ''; this.$moreCtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-list-more-ctn', this); this.$moreBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-list-more-btn', this.$moreCtn); this.$moreBtn.on('click', (event) => { this.emit('more', { type: 'more', originalEvent: event, target: this }, this); }); /** * @name moreText * @type {string} * @memberOf NPList# */ } NPList.tag = "NPList".toLowerCase(); NPList.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ class: 'as-np-list', extendEvent: ['more'], child: [ { class: 'as-np-list-body', }, { class: 'as-np-list-more-ctn', style: { display: 'none' }, child: { tag: _FlexiconButton__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z, class: 'as-np-list-more-btn' } } ] }); }; ['addChild', 'removeChild', 'findChildAfter', 'findChildBefore'].forEach(key => { NPList.prototype[key] = function () { return this.$body[key].apply(this.$body, arguments); } }); NPList.prototype.getChildNodes = function () { return Array.prototype.slice.call(this.$body.childNodes); }; NPList.prototype.getFirstChild = function () { return this.$body.firstChild; }; NPList.prototype.getLastChild = function () { return this.$body.lastChild; }; NPList.prototype.addChildBefore = function (child, bf) { if (bf === this.firstChild) bf = this.$body.firstChild; else if (bf === this.lastChild) bf = this.$body.lastChild; return this.$body.addChildBefore(child, bf); }; NPList.prototype.addChildAfter = function (child, at) { if (at === this.firstChild) at = this.$body.firstChild; else if (at === this.lastChild) at = this.$body.lastChild; return this.$body.addChildAfter(child, at); }; NPList.prototype.scrollToEnd = function () { this.scrollTop = this.scrollHeight; }; NPList.property = {}; NPList.property.moreText = { set: function (value) { value = value || ''; if (value) { this.$moreCtn.removeStyle('display'); } else { this.$moreCtn.addStyle('display', 'none'); } this.$moreBtn.text = value; }, get: function () { return this.$moreBtn.text; } }; _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(NPList); /** * @extends AElement * @constructor */ function NPItem() { this.$body = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-item-body', this); this.$body.on('click', event => { this.emit('click', { type: 'click', originalEvent: event }, this); }); this.$unreadBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-item-unread-btn', this); this.$unreadBtn.on('click', event => { this.unread = false; this.emit('unreadchange', { type: 'unreadchange', target: this }, this); }); this.$pinBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-item-pin-btn', this); this.$pinBtn.on('click', event => { this.pin = false; this.emit('pinchange', { type: 'pinchange', target: this }, this); }); this.$quickMenuBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-item-quick-menu-btn', this); this.$quickMenuCtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-np-item-quick-menu-ctn', this); this._quickmenu = null; this.quickmenuInstance = null; } NPItem.tag = 'NPItem'.toLowerCase(); ['addChild', 'removeChild', 'addChildBefore', 'addChildAfter', 'findChildAfter', 'findChildBefore', 'clearChild'].forEach(key => { NPItem.prototype[key] = function () { return this.$body[key].apply(this.$body, arguments); } }); NPItem.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ class: 'as-np-item', extendEvent: ['click', 'unreadchange', 'pinchange'], child: [ { tag: _RelativeTimeText__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z, class: 'as-np-item-body', }, { tag: 'button', class: 'as-np-item-unread-btn' }, { tag: 'button', class: 'as-np-item-pin-btn', child: 'span.mdi.mdi-pin' }, { class: 'as-np-item-quick-menu-ctn', style: { display: 'none' }, child: [ { tag: 'button', class: ['as-np-item-quick-menu-btn'], child: 'span.mdi.mdi-dots-horizontal' } ] } ] }); }; NPItem.property = {}; NPItem.property.time = { set: function (value) { value = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_8__.implicitDate)(value); this.$body.time = value; }, get: function () { return this.$time.time; } }; NPItem.property.unread = { set: function (value) { if (value) { this.addClass('as-unread'); } else { this.removeClass('as-unread'); } }, get: function () { return this.hasClass('as-unread'); } }; NPItem.property.pin = { set: function (value) { if (value) { this.addClass('as-pin'); } else { this.removeClass('as-pin'); } }, get: function () { return this.hasClass('as-pin'); } }; NPItem.property.quickmenu = { set: function (value) { value = value || null; if (this.quickmenuInstance) { this.quickmenuInstance.remove(); } this._quickmenu = value; if (value) { this.$quickMenuCtn.removeStyle('display'); this.quickmenuInstance = new _QuickMenu__WEBPACK_IMPORTED_MODULE_7__/* .QuickMenuInstance */ .U(this.$quickMenuBtn, Object.assign({ triggerEvent: 'click', anchor: [2, 5], menuCtn: this.$quickMenuCtn }, value)); } else { this.$quickMenuCtn.addStyle('display', 'none'); } }, get: function () { return this._quickmenu; } }; /** * similar to NPDropdownButton interface * @extends AElement * @constructor */ function MNPNotificationVirtualDropdown() { document.body.appendChild(this); this.$body = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-mb-vd-body', this); this.$headerBar = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-mb-vd-header-bar', this) .on('action', this.eventHandler.action); _mobile_MHeaderBar__WEBPACK_IMPORTED_MODULE_11__/* ["default"].on */ .Z.on('clicknotification', () => { this.open(); }); } MNPNotificationVirtualDropdown.tag = 'MNPNotificationVirtualDropdown'.toLowerCase(); MNPNotificationVirtualDropdown.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ extendEvent: ['click', 'close', 'open'], class: ['as-mobile-notification-virtual-dropdown', 'as-hidden'], child: [ { tag: _mobile_MHeaderBar__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, class: 'as-mb-vd-header-bar', props: { actionIcon: 'span.mdi.mdi-arrow-left' } }, { class: 'as-mb-vd-body' } ] }); }; MNPNotificationVirtualDropdown.prototype.open = function () { this.emit('click', { type: 'click' }, this); if (!this.hasClass('as-hidden')) return; this.removeClass('as-hidden'); this.emit('open', { type: 'close' }, this); }; MNPNotificationVirtualDropdown.prototype.close = function () { this.emit('click', { type: 'click' }, this); if (this.hasClass('as-hidden')) return; this.addClass('as-hidden'); this.emit('close', { type: 'close' }, this); }; MNPNotificationVirtualDropdown.prototype.getChildNodes = function () { return Array.prototype.slice.call(this.$body.childNodes); }; MNPNotificationVirtualDropdown.prototype.getChildren = function () { return this.getChildNodes(); }; MNPNotificationVirtualDropdown.prototype.getFirstChild = function () { return this.$body.firstChild; }; MNPNotificationVirtualDropdown.prototype.getLastChild = function () { return this.$body.lastChild; }; MNPNotificationVirtualDropdown.prototype.addChild = function (elt) { if (elt.tagName === 'H3' || elt.tagName === 'H4') { this.$headerBar.title = elt.innerText; elt.addStyle('display', 'none'); } return this.$body.addChild(...arguments); } MNPNotificationVirtualDropdown.property = {}; MNPNotificationVirtualDropdown.property.count = { set: function (value) { _mobile_MHeaderBar__WEBPACK_IMPORTED_MODULE_11__/* ["default"].notificationCount */ .Z.notificationCount = value; }, get: function () { return _mobile_MHeaderBar__WEBPACK_IMPORTED_MODULE_11__/* ["default"].notificationCount */ .Z.notificationCount; } }; MNPNotificationVirtualDropdown.property.quickmenu = { set: function (value) { this.$headerBar.quickmenu = value; }, get: function () { return this.$headerBar.quickmenu } }; MNPNotificationVirtualDropdown.eventHandler = {}; MNPNotificationVirtualDropdown.eventHandler.action = function () { this.close(); }; _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(MNPNotificationVirtualDropdown); /***/ }), /***/ 7315: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_onscreenwidget_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7832); /* harmony import */ var _css_onscreenwidget_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_onscreenwidget_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _Hanger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(655); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6628); /* harmony import */ var absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(557); /* harmony import */ var absol_src_String_stringGenerate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1334); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var $$ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$$ */ .Z.$$; /*** * @extends Hanger * @constructor */ function OnScreenWidget() { this.id = 'unset-id-' + (0,absol_src_String_stringGenerate__WEBPACK_IMPORTED_MODULE_5__.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 = _('attachhook').addTo(this); this.$attachhook.on('attached', this.eventHandler.attached); this.config = null; } OnScreenWidget.tag = 'OnScreenWidget'.toLowerCase(); OnScreenWidget.render = function () { return _({ tag: 'hanger', extendEvent: 'click', class: ['as-onscreen-widget', 'as-size-loading'], props: { hangOn: 3 } }); }; OnScreenWidget.prototype.configPrefix = 'on-screen-widget-'; OnScreenWidget.prototype._genConfig = function () { this._widgetBound = this.getBoundingClientRect(); var screenSize = (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* .getScreenSize */ .tE)(); 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.removeClass('as-size-loading'); }; /*** * * @type {OnScreenWidget|{}} */ OnScreenWidget.eventHandler = {}; OnScreenWidget.eventHandler.attached = function () { var images = $$('img', this); var syncs = images.map(function (img) { if (img.classList.contains('absol-attachhook')) return Promise.resolve(); return (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* .waitImageLoaded */ .Lp)(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 = (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* .getScreenSize */ .tE)(); var p0 = new absol_src_Math_Vec2__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z(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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(OnScreenWidget); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OnScreenWidget); /***/ }), /***/ 6535: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_progressbar_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9862); /* harmony import */ var _css_progressbar_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_progressbar_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; function ProgressBar() { this._value = 0; this._variant = null; this.$value = $('.as-progress-bar-value', this); this._striped = false; this._animated = false; } ProgressBar.tag = 'ProgressBar'.toLowerCase(); ProgressBar.render = function () { return _({ 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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(ProgressBar); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProgressBar); /***/ }), /***/ 1274: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "U": () => (/* binding */ QuickMenuInstance), /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6628); /* harmony import */ var absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9399); /* harmony import */ var _Menu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(407); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1477); /* harmony import */ var _Follower__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7094); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(863); /* harmony import */ var absol_src_Code_safeThrow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(5650); /* harmony import */ var absol_src_Code_noop__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1432); var isMobile = absol_src_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_2__/* ["default"].isMobile */ .Z.isMobile; var _ = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].$ */ .Z.$; function QuickMenu() { //like context menu without right-click this._contextMenuSync = Promise.resolve(); } QuickMenu.tag = 'QuickMenu'.toLowerCase(); QuickMenu.render = function () { return _({ tag: 'vmenu', extendEvent: 'requestcontextmenu', class: [ 'as-quick-menu', 'as-bscroller' ], style: { 'overflow-y': 'auto', 'box-sizing': 'border-box' } }); }; _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(QuickMenu); /*** * * @param {AElement} elt * @param opt * @constructor */ function QuickMenuInstance(elt, opt) { this.id = (Math.random() * 10000 >> 0) + '' + new Date().getTime(); /*** * * @type {"OPEN"|"CLOSE"} */ this.state = 'CLOSE'; this._willAddClickOut = -1; this.elt = elt; /** * * @type {object|{triggerEvent:string, menuProps,getMenuProps, anchor, onClick, onSelect,onOpen, onClose, menuCtn, getAnchor}} */ this.opt = Object.assign({}, opt); for (var key in this) { if (key.startsWith('_on')) { this[key] = this[key].bind(this); } } this._init(); } QuickMenuInstance.prototype._init = function () { this.elt.classList.add('as-quick-menu-trigger'); if (this.opt.triggerEvent === 'mousedown') $(this.elt).on('contextmenu', function (event) { event.preventDefault(); }).attr('oncontextmenu', "return false;"); if (this.opt.triggerEvent) { this.elt.addEventListener(this.opt.triggerEvent, this._onClick, true); } else this.elt.addEventListener('click', this._onClick, true); if (!this.elt.revokeResource) { this.elt.revokeResource = ()=>{ this.elt.revokeResource = absol_src_Code_noop__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z; this.remove(); } } }; QuickMenuInstance.prototype._deinit = function () { if (this.state === "OPEN") this.close(); this.elt.classList.remove('as-quick-menu-trigger'); if (this.opt.triggerEvent) { this.elt.removeEventListener(this.opt.triggerEvent, this._onClick, true); } else { this.elt.removeEventListener('click', this._onClick, true); } this.elt = null; this.opt = null; for (var key in this) { if (key.startsWith('_on')) { this[key] = absol_src_Code_noop__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z; } } }; QuickMenuInstance.prototype.getMenuProps = function () { var props; if (this.opt.getMenuProps) { props = this.opt.getMenuProps(); } else { props = this.opt.menuProps; } props = props || {}; return Object.assign({ extendClasses: [], extendStyle: {} }, props); }; QuickMenuInstance.prototype.remove = function () { this._deinit(); }; QuickMenuInstance.prototype._onClick = function (event) { if (this.opt.triggerEvent === 'mousedown') { event.preventDefault(); } var event = (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_6__/* .copyEvent */ .FG)(event, { canceled: false, cancel: function () { this.canceled = true; } }); if (this.opt.onClick) { this.opt.onClick.call(this, event); } if (!event.canceled) this.toggle(); }; QuickMenuInstance.prototype._onClickOut = function (event) { if ((0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_6__/* .hitElement */ .EY)(this.elt, event) || (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_6__/* .hitElement */ .EY)(QuickMenu.$elt, event)) return; this.close(); }; QuickMenuInstance.prototype.onSelect = function (item) { item = item.__originalItem__ || item; if (item.items && item.items.length > 0) return; if (this.opt.onSelect) this.opt.onSelect(item); this.close(); } QuickMenuInstance.prototype.open = function () { if (QuickMenu.runningInstance === this) return; if (this.state !== "CLOSE") return; if (QuickMenu.runningInstance) QuickMenu.runningInstance.close(); QuickMenu.runningInstance = this; this.state = 'OPEN'; this.elt.classList.add('as-quick-menu-attached'); this._willAddClickOut = setTimeout(() => { this._willAddClickOut = -1; document.addEventListener('click', this._onClickOut, false); followerElt.updatePosition(); menuElt.addStyle('visibility', 'visible'); }, isMobile ? 33 : 2); var anchor = this.getAnchor(); var followerElt = QuickMenu.$follower; var menuElt = QuickMenu.$elt; this.originProps = this.getMenuProps(); this.copyProps = Object.assign({}, this.originProps); if (typeof this.originProps.items === "function") { this.copyProps.items = this.originProps.items.call(this); } else { this.copyProps.items = this.originProps.items || []; } this.copyProps.items = this.copyProps.items.map(function visit(item) { var cpyItem = item; if (typeof item === "string") cpyItem = item; else if (item && (typeof item.text === "string")) { cpyItem = Object.assign({ __originalItem__: item }, item); if (cpyItem.items && cpyItem.items.map) cpyItem.items = cpyItem.items.map(visit); } return cpyItem; }); Object.assign(menuElt, this.copyProps); followerElt.addClass('absol-active'); if (anchor === 'modal') { followerElt.addClass('as-anchor-modal'); followerElt.anchor = []; } else { followerElt.removeClass('as-anchor-modal'); followerElt.anchor = anchor; } this._onSizeNeedUpdate(); QuickMenu.$follower.on('preupdateposition', this._onSizeNeedUpdate); followerElt.followTarget = this.elt; followerElt.sponsorElement = this.elt; menuElt.addStyle('visibility', 'hidden'); followerElt.addTo(this.opt.menuCtn || document.body); followerElt.addClass('absol-active'); if (this.opt.onOpen) { try { this.opt.onOpen.call(this); } catch (err) { (0,absol_src_Code_safeThrow__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z)(err); } } }; QuickMenuInstance.prototype.close = function () { if (QuickMenu.runningInstance !== this) return; if (this.state !== "OPEN") return; if (this.opt.onClose) { try { this.opt.onClose.call(this); } catch (err) { (0,absol_src_Code_safeThrow__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z)(err); } } this.state = 'CLOSE'; this.elt.classList.remove('as-quick-menu-attached'); QuickMenu.$elt.removeStyle('--available-height'); var followerElt = QuickMenu.$follower; followerElt.addClass('absol-active'); followerElt.remove(); QuickMenu.$follower.off('preupdateposition', this._onSizeNeedUpdate); if (this._willAddClickOut >= 0) { clearTimeout(this._willAddClickOut); } else { document.removeEventListener('click', this._onClickOut, false); } QuickMenu.runningInstance = null; }; QuickMenuInstance.prototype._onSizeNeedUpdate = function () { (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$$)('VMenuItem'.toLowerCase(), QuickMenu.$elt).forEach(e => { if (e.autoFixParentSize) e.autoFixParentSize(); }); var screenSize = (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* .getScreenSize */ .tE)(); var eltBound = this.elt.getBoundingClientRect(); var outRect = (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* .traceOutBoundingClientRect */ .DI)(this.elt); var isOut = false; if (eltBound.left > outRect.right || eltBound.right < outRect.left || eltBound.top > outRect.bottom || eltBound.bottom < outRect.top) isOut = true; if (isOut || (!eltBound.width && !eltBound.height)) { setTimeout(() => { this.close(); }, 0); } var aTop = eltBound.bottom; var aBottom = screenSize.height - eltBound.top; QuickMenu.$elt.addStyle('--available-height', (Math.max(aTop, aBottom) - 10) + 'px'); }; QuickMenuInstance.prototype.toggle = function () { if (this.state === "OPEN") { this.close(); } else if (this.state === 'CLOSE') { this.open(); } }; QuickMenuInstance.prototype.getAnchor = function () { var menuAnchors; var anchor = this.opt.getAnchor ? this.opt.getAnchor() : this.opt.anchor; if (typeof anchor == 'number') { menuAnchors = [anchor]; } else if (anchor instanceof Array) { menuAnchors = anchor; } else if (anchor === 'modal') { menuAnchors = 'modal'; } else { menuAnchors = QuickMenu.PRIORITY_ANCHORS; } return menuAnchors; }; QuickMenu.PRIORITY_ANCHORS = [0, 3, 7, 4, 1, 2, 6, 5]; QuickMenu.$elt = _('quickmenu'); /*** * * @type {Follower} */ QuickMenu.$follower = _({ tag: _Follower__WEBPACK_IMPORTED_MODULE_5__/* ["default"].tag */ .Z.tag, class: 'absol-context-menu-anchor', child: QuickMenu.$elt, on: { preupdateposition: function () { var bound = this.getBoundingClientRect(); var outBound = (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* .traceOutBoundingClientRect */ .DI)(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { QuickMenu.close(QuickMenu._session); } } } }); QuickMenu.$follower.cancelWaiting(); /*** * * @type {null|QuickMenuInstance} */ QuickMenu.runningInstance = null; QuickMenu._session = Math.random() * 10000000000 >> 0; QuickMenu._menuListener = undefined; QuickMenu.$elt.on('press', function (event) { if (QuickMenu.runningInstance) QuickMenu.runningInstance.onSelect((0,_utils__WEBPACK_IMPORTED_MODULE_4__.cleanMenuItemProperty)(event.menuItem)); if (QuickMenu._menuListener) QuickMenu._menuListener((0,_utils__WEBPACK_IMPORTED_MODULE_4__.cleanMenuItemProperty)(event.menuItem)); }); QuickMenu.show = function (element, menuProps, anchor, menuListener, darkTheme) { var instance = new QuickMenuInstance(element, { menuProps: menuProps, anchor: anchor, onSelect: menuListener, darkTheme: darkTheme }); instance.open(); }; QuickMenu.close = function (session) { if (QuickMenu.runningInstance && QuickMenu.runningInstance.id === session) QuickMenu.runningInstance.close(); }; QuickMenu.showWhenClick = function (element, menuProps, anchor, menuListener, darkTheme) { return new QuickMenuInstance(element, { menuProps: menuProps, anchor: anchor, onSelect: menuListener, darkTheme: darkTheme }); }; /** * @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) { return new QuickMenuInstance(trigger, adaptor); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (QuickMenu); /***/ }), /***/ 7002: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_radio_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(330); /* harmony import */ var _css_radio_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_radio_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3349); /* harmony import */ var _RadioButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7234); /* harmony import */ var absol_src_HTML5_Svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6821); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7951); /* harmony import */ var absol_src_Print_printer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2691); /* harmony import */ var absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(2759); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var $$ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$$ */ .Z.$$; var _svg = absol_src_HTML5_Svg__WEBPACK_IMPORTED_MODULE_4__/* ["default"].ShareInstance._ */ .ZP.ShareInstance._; /*** * @extends AElement * @constructor */ function Radio() { var thisR = this; this.defineEvent('change'); this.$input = $('input', this) .on('change', this.notifyChange.bind(this)); this.$labels = $$('span', this); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$input, ['value', 'checked']); } Radio.tag = 'radio'; Radio.radioProto = _( '<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.render = function () { return _({ tag: 'label', class: 'absol-radio', child: [ { tag: 'input', attr: { type: 'radio' } }, { tag: 'span', class: 'absol-radio-left-label' }, Radio.radioProto.cloneNode(true), { tag: 'span', class: 'absol-radio-right-label' } ] }); }; Radio.prototype.notifyChange = function () { this.emit('change', { type: 'change', checked: this.checked, target: this }, this); }; Radio.prototype.getAllFriend = function () { return Radio.getAllByName(this.name); }; Radio.attribute = _RadioButton__WEBPACK_IMPORTED_MODULE_3__/* ["default"].attribute */ .Z.attribute; 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(_({ text: value })); this.$labels[1].addChild(_({ 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.getAllByName = function (name) { return (Array.apply(null, document.getElementsByTagName('input')) || []).filter(function (elt) { return elt.getAttribute('type') == 'radio' && elt.getAttribute('name') == name; }); }; Radio.getValueByName = function (name) { var inputs = 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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(Radio); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Radio); var radioImageCache = {}; absol_src_Print_printer__WEBPACK_IMPORTED_MODULE_6__.ShareSerializer.addHandlerBefore({ match: (elt, scope, stack) => { if ((elt.hasClass('absol-radio-icon') || elt.hasClass('as-checkbox-input-check-icon')) && (elt.parentElement.hasClass('absol-radio') || elt.parentElement.hasClass('absol-radio-button') || elt.parentElement.hasClass('as-checkbox-input'))) { return true; } return false; }, exec: (printer, elt, scope, stack, accept) => { var type = elt.hasClass('absol-radio-icon') ? 'radio' : 'check'; var fontSize = elt.getFontSize(); var checked = !!elt.parentElement.__origin__.checked; var disabled = !!elt.parentElement.__origin__.disabled; var bound = absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_7__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); if (bound.width === 0) return; var rect = bound.clone(); rect.x -= printer.O.x; rect.y -= printer.O.y; var key = type + fontSize + checked + disabled; var res; if (radioImageCache[key]) { res = radioImageCache[key]; } else { res = absol_src_HTML5_Svg__WEBPACK_IMPORTED_MODULE_4__/* ["default"].svgToCanvas */ .ZP.svgToCanvas(elt.__origin__).catch(err => { console.error(err); }); radioImageCache[key] = res; } res.elt = elt; printer.image(res, rect); }, id: 'Radio' }, 'SVG'); /***/ }), /***/ 7234: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_radiobutton_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2578); /* harmony import */ var _css_radiobutton_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_radiobutton_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3349); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function RadioButton() { var thisRB = this; this.defineEvent('change'); this.$input = $('input', this).on('change', this.notifyChange.bind(this)); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$input, ['value', 'checked']); } RadioButton.tag = 'radiobutton'; RadioButton.radioProto = _( '<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 _({ 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 = _({ tag: this.tag, attr: attrs, class: classList, style: style, props: props }); $(ph).selfReplace(newElt); } }; RadioButton.initAfterLoad = function (){ absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* ["default"].documentReady.then */ .ZP.documentReady.then(function (){ RadioButton.autoReplace(); }) }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install('RadioButton'.toLowerCase(), RadioButton); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RadioButton); /***/ }), /***/ 9441: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7807); /** * @extends AElement * @constructor */ function RelativeTimeText() { if (!this.share.manager) this.share.manager = new RTTManager(); this.share.manager.add(this); this.addClass('as-relative-time-text'); /** * * @type {null|Date} * @private */ this._time = null; /** * @name timeText * @type {string} * @memberOf RelativeTimeText# */ /** * @name time * @type {Date} * @memberOf RelativeTimeText# */ } RelativeTimeText.tag = 'RelativeTimeText'.toLowerCase(); RelativeTimeText.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({}); }; RelativeTimeText.prototype.updateText = function () { if (!this._time) return; var now = Date.now(); var diff = now - this._time.getTime(); var min = Math.round(diff / 6e4); var lang = this.getLanguage(); var hour = Math.round(min / 60); var day = Math.round(hour / 24); if (min < 1) { this.timeText = lang === 'vi' ? "Vừa xong" : "Just now"; } else if (min < 60) { this.timeText = lang === 'vi' ? min + ' phút' : min + ' minutes'; } else if (hour < 24) { this.timeText = lang === 'vi' ? hour + ' giờ' : hour + ' hours'; } else { this.timeText = lang === 'vi' ? day + ' ngày' : day + ' days'; } }; RelativeTimeText.prototype.getLanguage = function () { if (window.systemconfig && window.systemconfig.language) { return window.systemconfig.language === 'VN' ? 'vi' : 'en'; } else { return navigator.language === 'vi' ? 'vi' : 'en'; } }; RelativeTimeText.prototype.share = { manager: null }; RelativeTimeText.property = {}; RelativeTimeText.property.timeText = { set: function (value) { if (value instanceof Date) { value = value.toLocaleDateString() + ' ' + value.toLocaleTimeString(); } this.attr('data-time-text', value); }, get: function () { return this.attr('data-time-text'); } }; RelativeTimeText.property.time = { set: function (value) { value = (0,absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_1__.implicitDate)(value); this._time = value; this.updateText(); if (value) { this.attr('title', value.toLocaleDateString() + ' ' + value.toLocaleTimeString()); } else { this.attr('title', null); } }, get: function () { return this._time; } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RelativeTimeText); _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(RelativeTimeText); function RTTManager() { /** * * @type {{elt:RelativeTimeText, time: number}[]} */ this.arr = []; this.update = this.update.bind(this); } RTTManager.prototype.add = function (element) { this.arr.push({ elt: element, time: Date.now() }); if (this.arr.length === 1) { setTimeout(this.update, 20000); } }; RTTManager.prototype.update = function () { var remainArr = []; var now = Date.now(); var it, ok; for (var i = 0; i < this.arr.length; i++) { it = this.arr[i]; ok = now - it.time < 60000; if (!ok) { if (it.elt.isDescendantOf(document.body)) { it.time = now; ok = true; } } if (ok) { it.elt.updateText(); remainArr.push(it); } } this.arr = remainArr; if (this.arr.length > 0) { setTimeout(this.update, 20000); } }; /***/ }), /***/ 4860: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_resizebox_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7585); /* harmony import */ var _css_resizebox_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_resizebox_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(863); /* harmony import */ var _Hanger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(655); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends Hanger * @constructor */ function ResizeBox() { this.on({ draginit: this.eventHandler.rbDragInit, dragdeinit: this.eventHandler.rbDragDeinit }); this.hangon = 3; this._mousedownEventData = undefined; this._mousemoveEventData = undefined; this._lastClickTime = 0; } ResizeBox.tag = 'ResizeBox'.toLowerCase(); ResizeBox.render = function () { return _({ tag: _Hanger__WEBPACK_IMPORTED_MODULE_3__/* ["default"].tag */ .Z.tag, 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.rbDragInit = function (event) { if ((0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__/* .isMouseRight */ .Ed)(event.originEvent)) { event.cancel(); return; } var target = event.target; if (!target.attr) return; if (!target.hasClass('as-resize-box-dot') && !target.hasClass('as-resize-box-body')) return; var optionNames = event.target.attr('class').match(/body|left|top|right|bottom/g); if (optionNames.length === 0) return; this._mouseOptionNames = optionNames; this._mouseOptionDict = this._mouseOptionNames.reduce((ac, cr) => { ac[cr] = true; return ac }, {}); this.on({ drag: this.eventHandler.rbDrag, dragend: this.eventHandler.rbDragEnd, dragstart: this.eventHandler.rbDragStart }); this._dragged = false; }; ResizeBox.eventHandler.rbDragDeinit = function (event) { this.off({ drag: this.eventHandler.rbDrag, dragend: this.eventHandler.rbDragEnd, dragstart: this.eventHandler.rbDragStart }); var now = new Date().getTime(); if (!this._dragged) { if (now - this._lastClickTime < 400) { this.emit('dblclick', Object.assign({}, event, { type: 'dblclick' }), this); this._lastClickTime = 0; } else { this.emit('click', Object.assign({}, event, { type: 'click' }), this); this._lastClickTime = now; } } }; ResizeBox.eventHandler.rbDrag = function (event) { if (this._mousedownEventData.option.body && !this.canMove) return; this._dragged = true; 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', begin: true }; this.emit('moving', this._mousemoveEventData, this); }; ResizeBox.eventHandler.rbDragStart = function (event) { event.preventDefault(); this._optionNames = event.target.attr('class').match(/body|left|top|right|bottom/g); this._dragged = true; $(document.body) .addClass('as-resize-box-overiding') .addClass(this._optionNames.join('-')); 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' }; this.emit('beginmove', this._mousedownEventData, this); }; ResizeBox.eventHandler.rbDragEnd = function (event) { document.body.classList.remove('as-resize-box-overiding') document.body.classList.remove(this._optionNames.join('-')); 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); }; 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.hasClass('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.hasClass('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.hasClass('as-can-click'); } }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(ResizeBox); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ResizeBox); /***/ }), /***/ 9664: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_ribbonbutton_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8896); /* harmony import */ var _css_ribbonbutton_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_ribbonbutton_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7951); /* harmony import */ var _RibbonSplitButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6455); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function RibbonButton() { this.$icon = null; this._icon = null; this.$text = $('.as-ribbon-button-text', this); this.$textNode = this.$text.firstChild; this._menuHolder = null; } RibbonButton.tag = 'RibbonButton'.toLowerCase(); RibbonButton.render = function () { return _({ 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.as-ribbon-dropdown-icon' ] }); }; RibbonButton.property = Object.assign({}, _RibbonSplitButton__WEBPACK_IMPORTED_MODULE_3__/* ["default"].property */ .Z.property); RibbonButton.property.icon = { set: function (icon) { icon = icon || null; this._icon = icon; if (this.$icon) this.removeChild(this.$icon); if (icon) { this.$icon = _(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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(RibbonButton); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RibbonButton); /***/ }), /***/ 6455: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_ribbonsplitbutton_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6949); /* harmony import */ var _css_ribbonsplitbutton_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_ribbonsplitbutton_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _QuickMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1274); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1477); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function RibbonSplitButton() { this.$icon = null; this._icon = null; this.$text = $('.as-ribbon-split-button-text', this); this.$primaryBtn = $('.as-ribbon-split-button-primary', this) .on('click', this.eventHandler.clickPrimaryBtn); this.$extendBtn = $('.as-ribbon-split-button-extend', this); this.$extendText = $('.as-ribbon-split-button-text', this.$extendBtn);//for big style this._menuHolder = null; } RibbonSplitButton.tag = 'RibbonSplitButton'.toLowerCase(); RibbonSplitButton.render = function () { return _({ 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' } }, { tag: 'button', attr: { 'tabindex': '-1' }, class: 'as-ribbon-split-button-extend', child: ['span.as-ribbon-split-button-text', 'span.mdi.mdi-chevron-down.as-ribbon-dropdown-icon'] } ] } }); }; 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 = _QuickMenu__WEBPACK_IMPORTED_MODULE_2__/* ["default"].toggleWhenClick */ .Z.toggleWhenClick(this.$extendBtn || this, { getMenuProps: function () { return { extendStyle: { 'min-width': thisB.getBoundingClientRect().width + 'px' }, items: thisB._items } }, getFlowedElement: function () { return thisB; }, anchor: [1, 2, 6, 5], onSelect: function (item) { thisB.emit('select', { item: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.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.$text.attr('data-text', value); if (this.$extendText) this.$extendText.attr('data-text', value); }, get: function () { return this.$text.attr('data-text') | ''; } }; RibbonSplitButton.property.icon = { set: function (icon) { icon = icon || null; this._icon = icon; if (this.$icon) this.$primaryBtn.removeChild(this.$icon); if (icon) { this.$icon = _(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: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cleanMenuItemProperty)(this) }) } _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(RibbonSplitButton); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RibbonSplitButton); /***/ }), /***/ 9246: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "k$": () => (/* binding */ VScroller), /* harmony export */ "bJ": () => (/* binding */ HScroller), /* harmony export */ "LW": () => (/* binding */ Scrollbar), /* harmony export */ "eP": () => (/* binding */ VScrollbar), /* harmony export */ "MP": () => (/* binding */ HScrollbar) /* harmony export */ }); /* harmony import */ var _css_scroller_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6618); /* harmony import */ var _css_scroller_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_scroller_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3349); /* harmony import */ var absol_src_HTML5_Element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1487); /* harmony import */ var absol_src_Math_int__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7988); /* harmony import */ var _Hanger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(655); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$scrollStyle */ .Z.$scrollStyle = (function () { var element = _('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); absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].getScrollSize */ .ZP.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; } )(); /*** * @extends AElement * @constructor */ function VScroller() { var thisVS = this; this.$attachHook = $('attachhook', this); this.sync = new Promise(function (rs) { thisVS.$attachHook.once('error', function () { rs(); }); }); this.$attachHook.on('error', function () { thisVS.requestUpdateSize(); }); this.$vscrollbar = $('vscrollbar', this).on('scroll', this.eventHandler.scrollScrollbar); this.$viewport = $('.absol-vscroller-viewport', this) .on('scroll', this.eventHandler.scrollViewport); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"]["extends"] */ .ZP["extends"](thisVS.$viewport, { removeChild: function () { this.super.apply(this, arguments); thisVS.requestUpdateSize(); return thisVS; } }) } VScroller.tag = 'vscroller'; VScroller.render = function () { return _({ 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 (absol_src_HTML5_Element__WEBPACK_IMPORTED_MODULE_4__/* ["default"].prototype.isDescendantOf.call */ .Z.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((0,absol_src_Math_int__WEBPACK_IMPORTED_MODULE_6__.map)(i, 0, frameCount, start, end), 0); ++i; if (i <= frameCount) { setTimeout(onFrame, timeOut); } else { setTimeout(finish, timeOut) } } function finish(){ self.$viewport.scrollTop = Math.max(end, 0); } 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; }; /*** * @extends AElement * @constructor */ function HScroller() { var thisHS = this; this.$attachHook = $('attachhook', this) .on('error', function () { this.requestUpdateSize = this.requestUpdateSize || thisHS.requestUpdateSize.bind(thisHS); absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].addToResizeSystem */ .ZP.addToResizeSystem(this); }); this.sync = new Promise(function (rs, rj) { thisHS.$attachHook.once('error', rs); }); this.$hscrollbar = $('hscrollbar', this).on('scroll', this.eventHandler.scrollScrollbar); this.$viewport = $('.absol-hscroller-viewport', this) .on('scroll', this.eventHandler.scrollViewport); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"]["extends"] */ .ZP["extends"](this.$viewport, { removeChild: function () { this.super.apply(this, arguments); thisHS.requestUpdateSize(); return thisHS; } }); } HScroller.tag = 'hscroller'; HScroller.render = function () { return _({ 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 (absol_src_HTML5_Element__WEBPACK_IMPORTED_MODULE_4__/* ["default"].prototype.isDescendantOf.call */ .Z.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; } } } /*** * @extends AElement * @constructor */ function Scrollbar() { var thisSB = this; this.$button = $('.absol-scrollbar-button', this); this.on('inactive', function (event, sender) { this.emit('deactive', event, sender); }); } Scrollbar.tag = 'scrollbar'; Scrollbar.render = function () { return _({ tag: _Hanger__WEBPACK_IMPORTED_MODULE_5__/* ["default"].tag */ .Z.tag, class: ['absol-scrollbar'], extendEvent: ['scroll', 'active', 'inactive', '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.hasClass('absol-hidden') } }; /*** * @extends Scrollbar * @constructor */ function VScrollbar() { this.on('draginit', this.eventHandler.dragInit, true) .on('drag', this.eventHandler.drag, true) .on('dragend', this.eventHandler.dragEnd, true); /*** * @type {number} * @name outerHeight * @memberOf VScrollbar# */ /*** * @type {number} * @name innerHeight * @memberOf VScrollbar# */ /*** * @type {number} * @name innerHeight * @memberOf VScrollbar# */ } VScrollbar.tag = 'vscrollbar'; VScrollbar.render = function () { return _({ 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.prototype.updateStatus = function () { if (this.innerHeight > this.outerHeight) { this.addClass('as-overflow'); } else { this.removeClass('as-overflow'); } }; VScrollbar.eventHandler = {}; VScrollbar.eventHandler.dragInit = function (event) { event.preventDefault(); var boundRes = this.getBoundingClientRect(); var boundButton = this.$button.getBoundingClientRect(); if (event.target === this.$button) { this.innerOffset0 = this.innerOffset; } else { var newInnerOffset = (0,absol_src_Math_int__WEBPACK_IMPORTED_MODULE_6__.map)(event.startingPoint.y - boundButton.height / 2 - boundRes.top, 0, boundRes.height, 0, this.innerHeight); if (newInnerOffset + this.outerHeight > this.innerHeight) newInnerOffset = this.innerHeight - this.outerHeight; if (newInnerOffset < 0) newInnerOffset = 0; this.innerOffset = newInnerOffset; //todo event.innerOffset = newInnerOffset; this.innerOffset0 = newInnerOffset; this.emit('scroll', event); } this.addClass('absol-active'); this.emit('active', { type: 'active', originEvent: event, target: this, originalEvent: event.originalEvent || event }); }; VScrollbar.eventHandler.drag = function (event) { event.preventDefault(); var dy = event.currentPoint.sub(event.startingPoint).y; var newInnerOffset = this.innerOffset0 + dy * (this.innerHeight / this.outerHeight) * (this.outerHeight / this.getBoundingClientRect().height); if (newInnerOffset + this.outerHeight > this.innerHeight) newInnerOffset = this.innerHeight - this.outerHeight; if (newInnerOffset < 0) newInnerOffset = 0; this.innerOffset = newInnerOffset; event.innerOffset = newInnerOffset; this.emit('scroll', event); }; VScrollbar.eventHandler.dragEnd = function (event) { this.removeClass('absol-active'); this.emit('inactive', { type: 'inactive', originEvent: event, target: this, originalEvent: event.originalEvent || event }); }; 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(); } this.updateStatus(); }, 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(); } this.updateStatus(); }, get: function () { return this._outerHeight || 0; } } }; /*** * @extends Scrollbar * @constructor */ function HScrollbar() { this.on('draginit', this.eventHandler.dragInit, true) .on('drag', this.eventHandler.drag, true) .on('dragend', this.eventHandler.dragEnd, true); /*** * @type {number} * @name innerOffset * @memberOf HScrollbar# */ /*** * @type {number} * @name innerWidth * @memberOf HScrollbar# */ /*** * @type {number} * @name outerWidth * @memberOf HScrollbar# */ } HScrollbar.tag = 'hscrollbar'; HScrollbar.render = function () { return _({ 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.prototype.updateStatus = function () { if (this.innerWidth > this.outerWidth) { this.addClass('as-overflow'); } else { this.removeClass('as-overflow'); } }; /** * * @type {{[key: string]:function}} */ HScrollbar.eventHandler = {}; /** * @this HScrollbar * @param event */ HScrollbar.eventHandler.dragInit = function (event) { event.preventDefault(); var boundRes = this.getBoundingClientRect(); var boundButton = this.$button.getBoundingClientRect(); if (event.target === this.$button) { this.innerOffset0 = this.innerOffset; } else { var newInnerOffset = (0,absol_src_Math_int__WEBPACK_IMPORTED_MODULE_6__.map)(event.startingPoint.x - boundButton.width / 2 - boundRes.left, 0, boundRes.width, 0, this.innerWidth); if (newInnerOffset + this.outerWidth > this.innerWidth) newInnerOffset = this.innerWidth - this.outerWidth; if (newInnerOffset < 0) newInnerOffset = 0; this.innerOffset = newInnerOffset; //todo event.innerOffset = newInnerOffset; this.innerOffset0 = newInnerOffset; this.emit('scroll', event); } var body = $(document.body); this.addClass('absol-active'); this.emit('active', { type: 'inactive', originEvent: event, target: this }); }; /** * @this HScrollbar * @param event */ HScrollbar.eventHandler.drag = function (event) { event.preventDefault(); var dy = event.currentPoint.x - event.startingPoint.x; var newInnerOffset = this.innerOffset0 + dy * (this.innerWidth / this.outerWidth) * (this.outerWidth / this.getBoundingClientRect().width); if (newInnerOffset + this.outerWidth > this.innerWidth) newInnerOffset = this.innerWidth - this.outerWidth; if (newInnerOffset < 0) newInnerOffset = 0; this.innerOffset = newInnerOffset; //todo event.innerOffset = newInnerOffset; this.emit('scroll', event); }; /** * @this HScrollbar * @param event */ HScrollbar.eventHandler.dragEnd = function (event) { this.removeClass('absol-active'); this.emit('inactive', { type: 'inactive', originEvent: event, target: this }); }; 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(); } this.updateStatus(); }, 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(); } this.updateStatus(); }, get: function () { return this._outerWidth || 0; } } }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install([VScrollbar, HScrollbar, Scrollbar, VScroller, HScroller]); /***/ }), /***/ 9024: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_searcher_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1696); /* harmony import */ var _css_searcher_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_searcher_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3349); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7951); /* harmony import */ var _Icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2380); /* harmony import */ var absol_src_HTML5_LanguageSystem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6013); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].creator["find-ico"] */ .Z.creator["find-ico"] = function () { var res = _( '<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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].creator["times-circle-ico"] */ .Z.creator["times-circle-ico"] = function () { var res = _( '<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 = absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__/* ["default"].bindFunctions */ .ZP.bindFunctions(this, SearchTextInput.eventHandler); this.$button = $('button', this); this.$input = $('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); }); /** * @type {string} * @name value * @memberOf SearchTextInput# */ } SearchTextInput.tag = 'SearchTextInput'.toLowerCase(); SearchTextInput.render = function () { return _( { class: 'absol-search-text-input', child: [ { class: 'absol-search-text-input-container', child: { tag: 'input', attr: { type: 'search', placeholder: absol_src_HTML5_LanguageSystem__WEBPACK_IMPORTED_MODULE_5__/* ["default"].getText */ .ZP.getText('txt_search')|| 'Search...' } } }, { class: 'absol-search-text-button-container', child: { tag: 'button', child: ['find-ico', 'times-circle-ico', { tag:_Icons__WEBPACK_IMPORTED_MODULE_4__/* .SpinnerIco.tag */ .i_.tag, style:{margin: 0} }] } } ] } ); }; 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.property.waiting = { set: function (value) { value = value || false; this._waiting = value; if (value) { this.addClass('as-waiting'); } else { this.removeClass('as-waiting'); } }, get: function () { return this._waiting || false; } } 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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].creator.searchcrosstextinput */ .Z.creator.searchcrosstextinput = function () { var res = _('searchtextinput', true); return res; }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].creator.searchtextinput */ .Z.creator.searchtextinput = SearchTextInput; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SearchTextInput); /***/ }), /***/ 133: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "wA": () => (/* binding */ requireItem), /* harmony export */ "Ag": () => (/* binding */ releaseItem), /* harmony export */ "jG": () => (/* binding */ measureMaxDescriptionWidth), /* harmony export */ "up": () => (/* binding */ measureMaxTextWidth), /* harmony export */ "bw": () => (/* binding */ measureListSize), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports makeItem, measureListHeight */ /* harmony import */ var _css_selectlist_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5121); /* harmony import */ var _css_selectlist_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_selectlist_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1477); /* harmony import */ var _SelectListItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6843); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(863); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var itemPool = []; function onMousedownItem(event) { if (absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__/* ["default"].isMouseRight */ .ZP.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 makeItem() { return _({ tag: 'selectlistitem', on: { mousedown: onMousedownItem } }); } function requireItem($parent) { var item; if (itemPool.length > 0) { item = itemPool.pop(); } else { item = 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 = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.estimateWidth14)(items[i].desc); if (est > maxEst) { maxEst = est; maxText = items[i].desc; } } } if (maxText) maxDescWidth = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.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 = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.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 + (0,_utils__WEBPACK_IMPORTED_MODULE_2__.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 = _('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 _('.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/14) + 'em'); //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/14) + 'em'); //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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(SelectList); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SelectList); /***/ }), /***/ 6843: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "sk": () => (/* binding */ getTextOfListItem), /* harmony export */ "_l": () => (/* binding */ getDescriptionOfListItem) /* harmony export */ }); /* unused harmony export getValueOfListItem */ /* harmony import */ var _css_selectlist_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5121); /* harmony import */ var _css_selectlist_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_selectlist_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _CheckboxButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4654); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3349); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * * @extends AElement * @constructor */ function SelectListItem() { this.$text = $('span.absol-selectlist-item-text', this); this.$textValue = this.$text.childNodes[0]; this.$descCtn = $('.absol-selectlist-item-desc-container', this); this.$desc = $('span.absol-selectlist-item-desc', this.$descCtn); this.$descValue = this.$desc.childNodes[0]; this.$icon = null; this._extendClasses = []; this._extendStyle = {}; this._data = ""; this._level = 0; this._icon = null; absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__/* ["default"].drillProperty */ .ZP.drillProperty(this, this, 'noSelect', 'disabled'); /*** * @type {AbsolConstructDescriptor|null} * @name icon * @memberOf SelectListItem# */ } SelectListItem.tag = 'SelectListItem'.toLowerCase(); SelectListItem.render = function () { return _({ 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: '' } } } ] }) }; 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.icon = { /*** * @this SelectListItem * @param icon */ set: function (icon) { if (this.$icon) { this.$icon.remove(); this.$icon = null; } this._icon = icon || null; if (this._icon) { this.$icon = _(this._icon); this.$icon.addClass('as-select-list-icon'); this.addChildBefore(this.$icon, this.$text); } }, get: function () { return this._icon; } }; 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; this.disabled = false; this.icon = null; } 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); this.disabled = value.disabled || value.noSelect; this.icon = value.icon; } }, get: function () { return this._data; } }; SelectListItem.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } }; SelectListItem.property.value = { get: function () { return getValueOfListItem(this._data); } }; SelectListItem.property.text = { get: function () { return getTextOfListItem(this._data); } }; SelectListItem.property.desc = { get: function () { return getDescriptionOfListItem(this._data); } }; SelectListItem.property.level = { set: function (value) { value = value || 0; this._level = value; this.addStyle('--level', value); }, 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.hasClass('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.hasClass('as-is-leaf'); } }; SelectListItem.property.selected = { set: function (value) { if (value) { this.addClass('as-selected'); } else { this.removeClass('as-selected'); } }, get: function () { return this.hasClass('as-selected'); } }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(SelectListItem); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SelectListItem); function getTextOfListItem(item) { if (item) { if (item.match) { } else if (item.text && item.text.match) { return item.text; } else return ''; } else return ''; } function getValueOfListItem(item) { if (item) { if (item.match) { return item; } else if (typeof item === "object") return item.value; else return item; } else return item; } function getDescriptionOfListItem(item) { return (item && (typeof item == "object")) ? item.desc : undefined; } /***/ }), /***/ 5357: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_selectmenu_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7001); /* harmony import */ var _css_selectmenu_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_selectmenu_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(863); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6628); /* harmony import */ var _list_search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2551); /* harmony import */ var _SelectList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(133); /*global absol*/ var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].creator["dropdown-ico"] */ .Z.creator["dropdown-ico"] = function () { return _([ '<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() { var thisSM = this; this._items = []; this._value = null; this._lastValue = null; this.$holderItem = $('.absol-selectmenu-holder-item', this); this.$anchorCtn = SelectMenu.getAnchorCtn(); this.$anchor = _('.absol-selectmenu-anchor.absol-disabled').addTo(this.$anchorCtn); this.$anchorContentCtn = _('.absol-selectmenu-anchor-content-container').addTo(this.$anchor); this.$dropdownBox = _('.absol-selectmenu-dropdown-box').addTo(this.$anchorContentCtn); this.$searchTextInput = _('searchtextinput').addStyle('display', 'none').addTo(this.$dropdownBox); this.$vscroller = _('bscroller').addTo(this.$dropdownBox); this.$selectlist = _('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 = $('attachhook', this) .on('error', this.eventHandler.attached); this.sync = new Promise(function (rs) { $('attachhook', this).once('error', function () { rs(); }); }); this._selectListScrollSession = null; this._itemIdxByValue = null; return this; } SelectMenu.tag = 'selectmenu-old'; SelectMenu.render = function () { return _({ 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.optimizeResource = true; // //will remove after SelectMenu completed SelectMenu.getRenderSpace = function () { if (!SelectMenu.getRenderSpace.warned) { // console.warn('SelectMenu.getRenderSpace() will be removed in next version'); } SelectMenu.getRenderSpace.warned = true; if (!SelectMenu.$renderSpace) { SelectMenu.$renderSpace = _('.absol-selectmenu-render-space') .addTo(document.body); } return SelectMenu.$renderSpace; }; SelectMenu.getAnchorCtn = function () { if (!SelectMenu.$anchorCtn) { SelectMenu.$anchorCtn = _('.absol-selectmenu-anchor-container') .addTo(document.body); } return SelectMenu.$anchorCtn; }; SelectMenu.prototype.updateItem = function () { this.$holderItem.clearChild(); if (this._itemsByValue[this.value]) { var elt = _({ tag: 'selectlistitem', props: { data: this._itemsByValue[this.value] } }).addTo(this.$holderItem); elt.$descCtn.addStyle('width', this.$selectlist._descWidth + 'px'); } }; 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.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.property = {}; 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.property.value = { set: function (value) { this.$selectlist.value = value; this._lastValue = value; this.updateItem(); }, get: function () { return this.$selectlist.value; } }; 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.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 = absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* ["default"].traceOutBoundingClientRect */ .ZP.traceOutBoundingClientRect(this); if (!this.isFocus || bound.top > outBound.bottom || bound.bottom < outBound.top) { this.isFocus = false; return; } var anchorOutBound = absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* ["default"].traceOutBoundingClientRect */ .ZP.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.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.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.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.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.prototype.stopListenRemovable = function () { var removableElt; while (this.$removableTrackElts.length > 0) { removableElt = this.$removableTrackElts.pop(); removableElt.off('remove', this.eventHandler.removeParent); } }; SelectMenu.prototype._releaseResource = function () { this.$selectlist.items = []; }; SelectMenu.prototype._requestResource = function () { this.$selectlist.items = this._items || []; }; SelectMenu.property.isFocus = { set: function (value) { if (value && (this.disabled || this.readOnly)) return; 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; $('body').on('mousedown', self.eventHandler.bodyClick); isAttached = true; }, 1000); $('body').once('click', function () { setTimeout(function () { if (isAttached) return; $('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(); $('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.property.disabled = { set: function (value) { if (value) { this.addClass('disabled'); } else { this.removeClass('disabled'); } }, get: function () { return this.hasClass('disabled'); } }; SelectMenu.property.hidden = { set: function (value) { if (value) { this.addClass('hidden'); } else { this.removeClass('hidden'); } }, get: function () { return this.addClass('hidden'); } }; 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.eventHandler = {}; 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); absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_3__/* ["default"].addToResizeSystem */ .ZP.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.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.eventHandler.removeParent = function (event) { this._releaseResource(); this._resourceReady = false; }; SelectMenu.eventHandler.click = function (event) { if (absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__/* ["default"].isMouseRight */ .ZP.isMouseRight(event)) return; this.isFocus = !this.isFocus; }; SelectMenu.eventHandler.bodyClick = function (event) { if (!absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__/* ["default"].hitElement */ .ZP.hitElement(this, event) && !absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_2__/* ["default"].hitElement */ .ZP.hitElement(this.$anchor, event)) { setTimeout(function () { this.isFocus = false; }.bind(this), 5) } }; 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.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__) { (0,_list_search__WEBPACK_IMPORTED_MODULE_4__/* .prepareSearchForList */ .Lb)(this._items); } view = (0,_list_search__WEBPACK_IMPORTED_MODULE_4__/* .searchListByText */ .o)(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.eventHandler.listSizeChangeAsync = function () { this.updateDropdownPostion(); }; SelectMenu.eventHandler.listValueVisibility = function (event) { if (!this.isFocus) return; if (this._selectListScrollSession == event.session) return; this._selectListScrollSession = event.session; this.scrollToSelectedItem(); }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(SelectMenu); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SelectMenu); /***/ }), /***/ 9950: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports NOT_READY, READY, START, RUNNING, PAUSE, STOP, ERROR, STATE_TO_STRING */ /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7951); var _ = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].$ */ .Z.$; 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 _('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; absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* ["default"].waitImageLoaded */ .ZP.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__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(Sprite); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sprite); /***/ }), /***/ 7: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ js_TabView) }); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tabview.css var tabview = __webpack_require__(3759); // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(3855); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate = __webpack_require__(1334); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(6628); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabButton.js var _ = ACore/* default._ */.Z._; var $ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function TabButton() { var thisTB = this; this._icon = null; this.$extIconCtn = $('.as-tab-bar-button-ext-icon-ctn', this); this.$close = $('.absol-tabbar-button-close', this) this.$iconCtn = $('.absol-tabbar-button-icon-container', this).on('click', function (event) { event.tabButtonEventName = 'delete'; thisTB.emit('close', event); }); this.$modifiedFlag = $('.absol-tabbar-button-modified-flag', this) .on('click', function (event) { event.tabButtonEventName = 'delete'; thisTB.emit('close', event); }); this.$textView = $('.absol-tabbar-button-text', this); this.on({ click: function (event) { if (event.tabButtonEventName) return; event.tabButtonEventName = 'active'; thisTB.emit('active', event); } }); } TabButton.tag = 'TabButton'.toLowerCase(); TabButton.render = function () { return _({ tag: 'button', class: 'absol-tabbar-button', extendEvent: ['close', 'active'], id: (0,stringGenerate.randomIdent)(20), child: [ { class: 'as-tab-bar-button-ext-icon-ctn' }, { 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.icon = { set: function (value) { value = value || null; this._icon = value; this.$extIconCtn.clearChild(); if (this._icon) { this.$extIconCtn.addChild(_(value)); } }, get: function () { return this._icon; } } 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.hasClass('absol-tabbar-button-modified'); } }; TabButton.property.preventClosing = { set: function (value) { if (value) { this.addClass('as-prevent-closing'); } else { this.removeClass('as-prevent-closing'); } }, get: function () { return this.hasClass('as-prevent-closing'); } } ACore/* default.install */.Z.install(TabButton); /* harmony default export */ const js_TabButton = ((/* unused pure expression or super */ null && (TabButton))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabBar.js var TabBar_ = ACore/* default._ */.Z._; var TabBar_$ = ACore/* default.$ */.Z.$; /*** * @extends HScroller * @constructor */ function TabBar() { this.$parent = null; this.$addBtn = TabBar_({ tag: 'button', class: 'as-tab-bar-add-btn', child: 'span.mdi.mdi-plus', on: { click: function () { if (this.$parent) { this.$parent.emit('pressaddtab', { type: 'pressaddtab', target: this.$parent }, this.$parent); } }.bind(this) } }); this.addChild(this.$addBtn); 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; if (value.tabIcon) { props.icon = value.tabIcon; } if (value.preventClosing) { props.preventClosing = value.preventClosing; } } 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(); } } } }); this.addChildBefore(tabButton, this.$addBtn) 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/* default.install */.Z.install(TabBar); /* harmony default export */ const js_TabBar = ((/* unused pure expression or super */ null && (TabBar))); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/utils.js var utils = __webpack_require__(1477); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TextMeasure.js + 1 modules var TextMeasure = __webpack_require__(2610); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/NotificationPanel.js var NotificationPanel = __webpack_require__(7570); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabView.js var TabView_ = ACore/* default._ */.Z._; var TabView_$ = ACore/* default.$ */.Z.$; /** * @extends AElement * @constructor */ function TabView() { var thisTV = this; /*** * * @type {TabBar} */ this.$tabbar = TabView_$('tabbar', this); this.$tabbar.$parent = this; this.$tabbar.on({ close: TabView.eventHandler.closeTab.bind(thisTV), active: TabView.eventHandler.activeTab.bind(thisTV) }); this._title = ''; this._frameHolders = []; this._history = []; (0,utils.forwardEvent)(this, 'inactivetab', 'deactivetab'); this.rightCtnPlugin = new TabviewRightCtnPlugin(this); (0,OOP/* drillProperty */.pj)(this, this.rightCtnPlugin, ['tvTitle', 'notificationPanel']); } TabView.tag = 'TabView'.toLowerCase(); TabView.render = function () { return TabView_({ class: 'absol-tabview', extendEvent: ['activetab', 'inactivetab', 'removetab', 'requestremovetab', 'pressaddtab'], 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 needDeactivatedHolder = []; var needActiveHolder = []; this._frameHolders.forEach(function (holder) { if (holder.containerElt.hasClass('absol-tabview-container-hidden')) { if (holder.id + '' === id + '') { needActiveHolder.push(holder); } } else { if (holder.id + '' !== id + '') { needDeactivatedHolder.push(holder); } } }); needDeactivatedHolder.forEach(function (holder) { holder.containerElt.addClass('absol-tabview-container-hidden'); holder.tabFrame.emit('inactive', { type: 'inactive', 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, from: (needDeactivatedHolder[0] && needDeactivatedHolder[0].tabFrame || null), to: holder.tabFrame }, 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: 'inactive', target: holder.tabFrame, id: holder.id, userActive: !!userActive, tabButton: holder.tabButton, holder: holder }; if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) holder.tabFrame.emit('inactive', eventData2, holder.tabFrame); eventData2.type = 'inactivetab'; eventData2.target = self; if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) self.emit('inactivetab', 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.notifyUpdatePreventClosing = function (elt) { var holder = this.findHolder(elt); if (holder) { holder.tabButton.preventClosing = elt.preventClosing; } }; 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 tabIcon = elt.tabIcon; var modified = elt.modified; var preventClosing = elt.preventClosing; var tabButton = self.$tabbar.addTab({ name: name, id: id, desc: desc, modified: modified, tabIcon: tabIcon, preventClosing: preventClosing }); containerElt.addChild(elt); elt.notifyAttached(self); var holder = {}; OOP/* default.drillProperty */.ZP.drillProperty(holder, elt, 'id'); OOP/* default.drillProperty */.ZP.drillProperty(holder, elt, 'desc'); OOP/* default.drillProperty */.ZP.drillProperty(holder, elt, 'name'); OOP/* default.drillProperty */.ZP.drillProperty(holder, elt, 'preventClosing'); 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.hasClass('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/* default.install */.Z.install('tabview', TabView); /* harmony default export */ const js_TabView = (TabView); /** * * @param {TabView} elt * @constructor */ function TabviewRightCtnPlugin(elt) { this.elt = elt; this.$rightCtn = null; this.$title = null; this.$notificationPanel = null; this._title = ''; } TabviewRightCtnPlugin.prototype.initCtn = function () { if (this.$rightCtn) return; this.$rightCtn = TabView_({ class: 'as-tabview-right-ctn' }); this.$rightCtn.requestUpdateSize = this.updateSize.bind(this); this.elt.insertBefore(this.$rightCtn, this.elt.$tabbar.nextSibling); }; TabviewRightCtnPlugin.prototype.updateSize = function () { var width = 0; if (this.$title) { width += TextMeasure/* default.measureWidth */.Z.measureWidth(this._title, 'Arial', 14) + 20; } if (this.$notificationPanel) { width += 20; width += this.$notificationPanel.childNodes.length * 40; if (this.$notificationPanel.childNodes.length >0) width += (this.$notificationPanel.childNodes.length - 1) * 10; } this.elt.$tabbar.addStyle('right', width + 'px'); }; Object.defineProperty(TabviewRightCtnPlugin.prototype, 'tvTitle', { set: function (value) { this.initCtn(); this._title = value + ''; if (!this.$title) { this.$title = TabView_({ class: 'as-tabview-title', child: { text: '' } }); this.$rightCtn.addChild(this.$title); } this.$title.firstChild.data = value; this.updateSize(); }, get: function () { return this._title; } }); Object.defineProperty(TabviewRightCtnPlugin.prototype, 'notificationPanel', { get: function () { this.initCtn(); if (!this.$notificationPanel) { this.$notificationPanel = TabView_({ tag: NotificationPanel/* default */.ZP, }); this.$rightCtn.addChildBefore(this.$notificationPanel, this.$title); this.updateSize(); } return this.$notificationPanel; } }); /***/ }), /***/ 5789: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_textarea2_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2764); /* harmony import */ var _css_textarea2_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_textarea2_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _SelectMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5357); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3349); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * * @augments HTMLTextAreaElement * @augments AElement * * @constructor */ 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 _('textarea.absol-textarea2'); }; TextArea2.getRenderPre = function () { if (!TextArea2.$preSpace) { TextArea2.$preSpace = _('textarea').addStyle({ 'overflow': 'hidden', 'height': '12px', 'resize': 'none' }).addTo(_SelectMenu__WEBPACK_IMPORTED_MODULE_2__/* ["default"].getRenderSpace */ .Z.getRenderSpace()); } return TextArea2.$preSpace; }; TextArea2.prototype.updateSize = function () { var heightStyle = this._measureHeight(this.value); this.addStyle('--content-height', heightStyle); }; TextArea2.eventHandler = {}; TextArea2.eventHandler.keydown = function (event) { if (event.altKey || event.ctrlKey) return; var key = event.key || String.fromCharCode(event.which || event.keyCode); 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 heightStyle = this._measureHeight(newText); this.addStyle('--content-height', heightStyle); }; 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('--content-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('--content-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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(TextArea2); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TextArea2); /***/ }), /***/ 2610: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ js_TextMeasure) }); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TextMeasureData.js /* harmony default export */ const 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 } } }); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(6628); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TextMeasure.js /** * best module * @constructor */ 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.FONT_ARIAL = 'Arial'; TextMeasure.prototype.FONT_TIMES_NEW_ROMAN = 'Times New Roman'; TextMeasure.prototype.exportCode = function () { var obj = 'self.absol.TextMeasure'; var code = [ 'if (!self.absol) self.absol = {};', obj + ' = {};', obj+'.data = '+ JSON.stringify(this.data)+';' ]; Object.keys(this.constructor.prototype).forEach(key=>{ var val = this[key]; if (typeof val === "function") { code.push(obj+'.'+key+' = '+ val+';\n'); } else if (!(0,Dom/* isDomNode */.mV)(val)) { //todo } }) return code.join('\n'); }; 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; } TextMeasure.prototype.wrapText = function (text, fontName, fontSize, maxWidth) { var width = this.data.fonts[fontName].width; var spacing = this.data.fonts[fontName].spacing; var lines = []; var currentLine = ''; var currentWidth = 0; var prevC = null; var c, charWidth, charSpacing; for (var i = 0; i < text.length; i++) { c = text[i]; charWidth = (width[c] !== undefined?width[c] : width['a']) * fontSize / 20; charSpacing = prevC ? (spacing[prevC + c] || 0) * fontSize / 20 : 0; if (currentWidth + charWidth + charSpacing > maxWidth) { // Find the last space in the current line var lastSpaceIndex = currentLine.lastIndexOf(' '); if (lastSpaceIndex !== -1) { // Break at the last space lines.push(currentLine.slice(0, lastSpaceIndex).trim()); currentLine = currentLine.slice(lastSpaceIndex + 1) + c; currentWidth = this.measureWidth(currentLine, fontName, fontSize); } else { // No spaces, break the word lines.push(currentLine.trim()); currentLine = c; currentWidth = charWidth; } } else { currentLine += c; currentWidth += charWidth + charSpacing; } prevC = c; } if (currentLine.trim()) { lines.push(currentLine.trim()); } return lines; }; /*** * * @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; }; var instance = new TextMeasure(); /* harmony default export */ const js_TextMeasure = (instance); /***/ }), /***/ 1376: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_toast_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5822); /* harmony import */ var _css_toast_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_toast_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3349); /* harmony import */ var _VariantColors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8494); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1477); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6628); /* harmony import */ var absol_src_Color_Color__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(257); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(863); /* harmony import */ var absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7807); /* harmony import */ var _RelativeTimeText__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9441); var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var toastBg = { success: "#a4f3b6", info: "#67d5e7" } var toastTextColor = { success: '#454040', info: '#48433b' } ;(0,_utils__WEBPACK_IMPORTED_MODULE_4__.buildCss)(_VariantColors__WEBPACK_IMPORTED_MODULE_3__/* ["default"].keys.reduce */ .Z.keys.reduce(function (ac, cr) { var color = absol_src_Color_Color__WEBPACK_IMPORTED_MODULE_6__/* ["default"].parse */ .Z.parse(toastBg[cr] || _VariantColors__WEBPACK_IMPORTED_MODULE_3__/* ["default"].base */ .Z.base[cr]); var textColor = color.getContrastYIQ(); var headerColor = toastTextColor[cr] || _VariantColors__WEBPACK_IMPORTED_MODULE_3__/* ["default"].mediumContract */ .Z.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 = $('.as-toast-close-btn', this) .on('click', this.disappear.bind(this)); this.$title = $('.as-toast-title', this); this.$timeText = $('.as-toast-time-text', this); this.$body = $('.toast-body', this); this.$attachhook = $('attachhook', this) .on('attached', this.appear.bind(this)); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.$title.firstChild, 'htitle', 'data'); this._message = null; this.$message = null; this.disappearTimeout = 0; this.htitle = 'Toast.htitle'; this.message = null; this.variant = null; this.addEventListener('click', (event) => { if ((0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_7__/* .hitElement */ .EY)(this.$closeBtn, event)) return; this.emit('click', event, this); }); _({ tag: _RelativeTimeText__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z, elt: this.$timeText }); (0,absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_2__/* .drillProperty */ .pj)(this, this.$timeText, ['timeText', 'time']); } 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 _({ extendEvent: ['appeared', 'disappeared', 'click'], 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' }, { tag: 'button', class: 'as-toast-close-btn', child: 'span.mdi.mdi-close' // 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__WEBPACK_IMPORTED_MODULE_3__/* ["default"].has */ .Z.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 = _({ 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.$toastList = _('.as-toast-list.as-se.as-bscroller'); Toast.$toastList4Pos = { se: Toast.$toastList, sw: _('.as-toast-list.as-sw.as-bscroller'), nw: _('.as-toast-list.as-nw.as-bscroller'), ne: _('.as-toast-list.as-ne.as-bscroller'), sc: _('.as-toast-list.as-sc.as-bscroller'), }; absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__/* ["default"].documentReady.then */ .ZP.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); Toast.$toastList4Pos.sc.addTo(document.body); }); /*** * * @param {AbsolConstructDescriptor|{}} aObject, * @param {"se"|"sw"|"ne"|"nw"|"sc" } [pos="se"] * @return {AElementNS|AElement|Text} */ Toast.make = function (aObject, pos) { if (!Toast.$toastList4Pos[pos]) pos = "se"; aObject = aObject || {}; if (typeof aObject !== "object") throw new Error("param must be AbsolConstructDescriptor object!"); if ((0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_5__/* .isDomNode */ .mV)(aObject)) { } else { aObject.tag = aObject.tag || 'toast'; } var toastElt = _(aObject); var toastListElt = Toast.$toastList4Pos[pos] || Toast.$toastList; toastListElt.addChild(toastElt); return toastElt; }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(Toast); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Toast); /***/ }), /***/ 5194: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "J": () => (/* binding */ updateTooltipPosition), /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_tooltip_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5071); /* harmony import */ var _css_tooltip_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_tooltip_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6628); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(863); var _ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"]._ */ .Z._; var $ = _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].$ */ .Z.$; /*** * @extends AElement * @constructor */ function ToolTip() { this.$content = $('.absol-tooltip-content', this); this.$arrow = $('.absol-tooltip-arrow', this); } ToolTip.tag = 'ToolTip'.toLowerCase(); ToolTip.render = function () { return _({ 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__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.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 = (0,absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* .getScreenSize */ .tE)(); 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 = _('.absol-tooltip-root-holder') 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 = _({ tag: 'span', style: { 'white-space': 'nowrap' }, props: { innerHTML: content } }); } $('', content, function (elt) { if (elt.tagName == "IMG" && elt.src) { absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].waitImageLoaded */ .ZP.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); absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].addToResizeSystem */ .ZP.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 (!absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_3__/* ["default"].hitElement */ .ZP.hitElement(content, event)) { $(document.body).off('click', finish); ToolTip.closeTooltip(mSession); mSession = undefined; } }; setTimeout(function () { $(document.body).on('click', finish); }, 100) }); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ToolTip); /***/ }), /***/ 8494: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_variantcolors_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6483); /* harmony import */ var _css_variantcolors_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_variantcolors_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6628); 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' } absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* ["default"].documentReady.then */ .ZP.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 */ const __WEBPACK_DEFAULT_EXPORT__ = (new VariantColor()); /***/ }), /***/ 774: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3349); /** * @typedef WindowBoxAction * @property icon * @property name * */ /*** * @extends AElement * @constructor */ function WindowBox() { this.$header = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-window-box-header', this); /*** * * @type {WindowBoxAction[]} * @private */ this._windowActions = []; this.$windowActionButtonCtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-window-box-header-button-ctn', this); this._windowIcon = null; this.$windowIconCtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-window-box-header-icon-ctn', this); /** * * @type {Text} */ this.$windowTitleText = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-window-box-header-title', this).firstChild; this.$body = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-window-box-body', this); /*** * @type {WindowBoxAction[]} * @name windowActions */ } WindowBox.tag = 'WindowBox'.toLowerCase(); WindowBox.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ class: 'as-window-box', extendEvent: ['action'], child: [ { class: 'as-window-box-header', child: [ { class: 'as-window-box-header-icon-ctn' }, { class: 'as-window-box-header-title', child: { text: '' } }, { class: "as-window-box-header-button-ctn" } ] }, { class: 'as-window-box-body' } ] }); }; ['addChild', 'addChildBefore', 'addChildAfter', 'clearChild', 'findChildBefore', 'findChildAfter'].forEach(function (key) { WindowBox.prototype[key] = function () { return this.$body[key].apply(this.$body, arguments); }; }); WindowBox.property = {}; WindowBox.property.windowTitle = { set: function (value) { this.$windowTitleText.data = (value || '') + ''; }, get: function () { return this.$windowTitleText.data; }, enumerable: true }; WindowBox.property.windowIcon = { /*** * @this WindowBox * @param value */ set: function (value) { value = value || null; this.$windowIconCtn.clearChild(); if (value) { this.$windowIconCtn.addChild((0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)(value)); } this._windowIcon = value; }, get: function () { return this._windowIcon; }, enumerable: true }; WindowBox.property.windowActions = { set: function (actions) { var self = this; this._windowActions = actions || []; this.$windowActionButtonCtn.clearChild(); var buttons = this._windowActions.map(function (action) { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ tag: 'button', class: action.class || [], child: action.icon, on: { click: function (event) { var eventData = { type: 'action', target: self, action: action, originalEvent: event }; absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_1__/* ["default"].drillProperty */ .ZP.drillProperty(eventData, eventData, 'actionData', 'action'); self.emit('action', eventData, self); } } }); }); this.$windowActionButtonCtn.addChild(buttons); }, get: function () { return this._windowActions; } }; _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(WindowBox); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WindowBox); /***/ }), /***/ 5466: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var _css_messagedialog_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3163); /* harmony import */ var _css_messagedialog_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_messagedialog_css__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _MessageDialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3488); /*** * @extends MessageDialog * @constructor */ function YesNoQuestionDialog() { this.dialogActions = [ { class: 'secondary', text: 'No', name: 'no', }, { class: 'primary', text: 'Yes', name: 'yes' } ]; this.$yesBtn = this.$actionBtns[1]; this.$noBtn = this.$actionBtns[0]; this.$message = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)('.as-message-dialog-message', this); /*{ class: 'as-message-dialog-footer', child: [ { tag: FlexiconButton.tag, class: ['as-message-dialog-no-btn', 'secondary'], props: { text: 'No' } }, { tag: FlexiconButton.tag, class: ['as-message-dialog-yes-btn', 'primary'], props: { text: 'Yes' } } ] }*/ } YesNoQuestionDialog.tag = 'YesNoQuestionDialog'.toLowerCase(); YesNoQuestionDialog.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ tag: _MessageDialog__WEBPACK_IMPORTED_MODULE_2__/* ["default"].tag */ .Z.tag, child: [ { tag: 'span', class: 'as-message-dialog-message', child: { text: '' } } ] }); }; YesNoQuestionDialog.eventHandler = {}; YesNoQuestionDialog.property = {}; YesNoQuestionDialog.property.message = { set: function (value) { value = (value || '') + ''; this.$message.firstChild.data = value; }, get: function () { return this.$message.firstChild.data; } }; YesNoQuestionDialog.property.textYes = { set: function (value) { value = (value || 'Yes') + ''; this.$yesBtn.text = value; this.dialogActions[1].text = value; }, get: function () { return this.$yesBtn.text; } }; YesNoQuestionDialog.property.textNo = { set: function (value) { value = (value || 'No') + ''; this.$noBtn.text = value; this.dialogActions[0].text = value; }, get: function () { return this.$noBtn.text; } }; _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"].install */ .Z.install(YesNoQuestionDialog); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (YesNoQuestionDialog); /***/ }), /***/ 5830: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cF": () => (/* binding */ DEFAULT_CHART_COLOR_SCHEMES), /* harmony export */ "TD": () => (/* binding */ generatorColorScheme), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3349); /* harmony import */ var _Follower__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7094); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3855); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1477); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(863); /* harmony import */ var absol_src_Color_Color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(257); /* harmony import */ var absol_src_Math_int__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7988); var DEFAULT_CHART_COLOR_SCHEMES = [ ['#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252'],//gray scale ['#a50026', '#f46d43', '#fee08b', '#d9ef8b', '#66bd63', '#006837'], ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f'], ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02'], ['#a6cee3', '#b2df8a', '#fb9a99', '#fdbf6f', '#cab2d6', '#ffff99'], ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae'], ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33'], ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f'], ['#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02'], ['#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3'], ['#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5'], ['#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45'], ['#7f3b08', '#e08214', '#fee0b6', '#d8daeb', '#8073ac', '#2d004b'], ['#543005', '#bf812d', '#f6e8c3', '#c7eae5', '#35978f', '#003c30'], ['#40004b', '#9970ab', '#e7d4e8', '#d9f0d3', '#5aae61', '#00441b'], ['#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443'], ['#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45'], ['#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0'], ['#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e'], ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a'] ]; var DEFAULT_CHART_COLOR_SCHEMES_OBJS = DEFAULT_CHART_COLOR_SCHEMES.map(scm => scm.map(c => absol_src_Color_Color__WEBPACK_IMPORTED_MODULE_5__/* ["default"].parse */ .Z.parse(c))); absol_src_Color_Color__WEBPACK_IMPORTED_MODULE_5__/* ["default"].DEFAULT_CHART_COLOR_SCHEMES */ .Z.DEFAULT_CHART_COLOR_SCHEMES = DEFAULT_CHART_COLOR_SCHEMES; var ColorSchemeGenerators = {}; var scaleArray = (arr, newN) => Array(newN).fill(0).map((u, i) => { var k = i * (arr.length - 1) / (newN - 1); var l = Math.floor(k); var h = Math.ceil(k); if (l === h) return arr[l]; return (0,absol_src_Math_int__WEBPACK_IMPORTED_MODULE_6__.map)(k, l, h, arr[l], arr[h]); }) var generatorColorScheme = (id, n) => { var hsl6 = DEFAULT_CHART_COLOR_SCHEMES_OBJS[id].map(c => c.toHSLA()); var h6 = hsl6.map(c => c[0]); var s6 = hsl6.map(c => c[1]); var l, h, s; if ((id >= 1 && id <= 7)|| id === 12 || id ===13) { if (n > 6) { s = s6.concat(Array(n - 6).fill(0).map((u, i) => 0.6 + (3 * i * 0.3) % 0.35)); } } if (id === 1) { h6[0] -= 1; } else if (id === 2) { if (n > 6) { s = s6.concat(Array(n - 6).fill(0).map((u, i) => 0.5 + (3 * i * 0.3) % 0.45)); } } else if (id === 18 && n !== 6) { h6[0] = 1; h6[1] = 1; } s = s || scaleArray(s6, n); l = l || scaleArray(hsl6.map(c => c[2]), n); h = h || scaleArray(h6, n).map(h => h < 0 ? h + 1 : h); return Array(n).fill(0).map((u, i) => absol_src_Color_Color__WEBPACK_IMPORTED_MODULE_5__/* ["default"].fromHSL */ .Z.fromHSL(h[i], s[i], l[i])); }; // DEFAULT_CHART_COLOR_SCHEMES = Array(20).fill(0).map((u, id) => colorSchemeGenerator(id, 20).map(c => c.toString('hex6'))) // console.log(DEFAULT_CHART_COLOR_SCHEMES) /** * @extends AElement * @constructor */ function SelectColorSchemeMenu() { this.dropdown = new SCSMDropdown(this); this.comboboxCtrl = new SCSMComboBoxController(this); absol_src_HTML5_OOP__WEBPACK_IMPORTED_MODULE_0__/* ["default"].drillProperty */ .ZP.drillProperty(this, this.dropdown, ['value', 'items', 'selectedItem']); this.dropdown.items = DEFAULT_CHART_COLOR_SCHEMES.map((it, i) => ({ colors: it, value: i })); } SelectColorSchemeMenu.tag = 'SelectColorSchemeMenu'.toLowerCase(); SelectColorSchemeMenu.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)({ class: ['as-select-color-scheme-menu', 'absol-selectmenu'], extendEvent: ['change'], child: [ '.as-select-color-scheme-menu-selected-item', { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] }, ] }); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SelectColorSchemeMenu); /** * * @param {SelectColorSchemeMenu} elt * @constructor */ function SCSMDropdown(elt) { this.elt = elt; this._items = []; this.itemDict = {}; this.$itemDict = {}; this.$follower = (0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)({ tag: _Follower__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, class: ['as-select-color-scheme-menu-dropdown', 'as-dropdown-box-common-style'], child: {} }); this.$follower.cancelWaiting(); } SCSMDropdown.prototype.updateItems = function () { var items = this._items; var maxColorLength = items.reduce((ac, cr) => Math.max(ac, cr.colors.length), 0); var itRow = Math.max(1, Math.floor(Math.sqrt(maxColorLength))); while (itRow > 1 && (maxColorLength % itRow)) itRow--; var itCol = maxColorLength / itRow; var gridRow = Math.max(1, Math.ceil(Math.sqrt(items.length))); while (gridRow < items.length && (items.length % gridRow)) gridRow++; var gridCol = Math.ceil(items.length / gridRow); this.$follower.clearChild(); this.$selected = null; this.$itemDict = {}; items.forEach((item, i) => { if (i % gridCol === 0) { this.$follower.addChild((0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)('.as-scsm-item-list-row')); } var itemElt = (0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)({ class: ['as-scsm-item'] }); var wrapper = (0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)({ class: 'as-scsm-item-wrapper', child: itemElt, on: { click: (event) => { var cValue = this.value; if (cValue !== item.value) { this.value = item.value; this.elt.emit('change', { type: 'change', target: this.elt }, this.elt) } } } }) this.$itemDict[(0,_utils__WEBPACK_IMPORTED_MODULE_3__.keyStringOf)(item.value)] = itemElt; this.$follower.lastChild.addChild(wrapper); item.colors.forEach((color, j) => { if (j % itCol === 0) { itemElt.addChild((0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)('.as-scsm-item-row')); } itemElt.lastChild.addChild((0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)({ class: 'as-scsm-item-cell', style: { backgroundColor: color } })); }); }); }; SCSMDropdown.prototype.updateSelected = function () { var value = this.value; if (this.$selected) this.$selected.removeClass('as-selected'); this.$selected = this.$itemDict[(0,_utils__WEBPACK_IMPORTED_MODULE_3__.keyStringOf)(value)]; if (this.$selected) this.$selected.addClass('as-selected'); this.elt.comboboxCtrl.update(); }; Object.defineProperty(SCSMDropdown.prototype, 'items', { set: function (items) { if (!(items instanceof Array)) items = []; this._items = items; this.itemDict = items.reduce((ac, cr) => { ac[(0,_utils__WEBPACK_IMPORTED_MODULE_3__.keyStringOf)(cr.value)] = cr; return ac; }, {}); this.updateItems(); this.updateSelected(); }, get: function () { return this._items; } }); Object.defineProperty(SCSMDropdown.prototype, 'value', { set: function (value) { this._value = value; this.updateSelected(); }, get: function () { if (this.itemDict[(0,_utils__WEBPACK_IMPORTED_MODULE_3__.keyStringOf)(this._value)] || this._items.length === 0) return this._value; return this._items[0].value; } }); Object.defineProperty(SCSMDropdown.prototype, 'selectedItem', { get: function () { return this.itemDict[(0,_utils__WEBPACK_IMPORTED_MODULE_3__.keyStringOf)(this.value)]; } }); /** * * @param {SelectColorSchemeMenu} elt * @constructor */ function SCSMComboBoxController(elt) { this.elt = elt; this.$selected = (0,_ACore__WEBPACK_IMPORTED_MODULE_2__.$)('.as-select-color-scheme-menu-selected-item', this.elt); this.ev_click = this.ev_click.bind(this); this.ev_clickOut = this.ev_clickOut.bind(this); this.elt.on('click', this.ev_click) } SCSMComboBoxController.prototype.ev_click = function (event) { this.isFocus = true; }; SCSMComboBoxController.prototype.ev_clickOut = function (event) { this.isFocus = false; }; SCSMComboBoxController.prototype.update = function () { var selectedItem = this.elt.dropdown.selectedItem; this.$selected.clearChild(); if (!selectedItem) return; this.$selected.addChild(selectedItem.colors.map(color => (0,_ACore__WEBPACK_IMPORTED_MODULE_2__._)({ class: 'as-scsm-item-cell', style: { backgroundColor: color } }))) }; Object.defineProperty(SCSMComboBoxController.prototype, 'isFocus', { set: function (value) { if (!!value === this.elt.hasClass('as-focus')) return; if (value) { this.elt.addClass('as-focus'); } else { this.elt.removeClass('as-focus'); } if (value) { this.elt.off('click', this.ev_click); setTimeout(() => { document.addEventListener('click', this.ev_clickOut); }, 10); this.elt.dropdown.$follower.addTo(document.body); this.elt.dropdown.$follower.followTarget = this.elt; } else { this.elt.on('click', this.ev_click); document.removeEventListener('click', this.ev_clickOut); this.elt.dropdown.$follower.selfRemove(); this.elt.dropdown.$follower.followTarget = null; } }, get: function () { return this.elt.hasClass('as-focus'); } }); /***/ }), /***/ 6369: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ dom_install) }); // UNUSED EXPORTS: publicCreators // EXTERNAL MODULE: ./node_modules/absol-acomp/css/autocompleteinput.css var autocompleteinput = __webpack_require__(2317); // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(3855); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(6628); ;// 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 */ const 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 */ const adapter_SearchObjectArrayAdapter = (SearchObjectArrayAdapter); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/EventEmitter.js var EventEmitter = __webpack_require__(863); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/AutoCompleteInput.js var _ = ACore/* default._ */.Z._; var AutoCompleteInput_$ = ACore/* default.$ */.Z.$; /*** * * @extends {AElement} * @constructor */ 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/* default.drillProperty */.ZP.drillProperty(this, this.$input, 'value'); } AutoCompleteInput.tag = 'AutoCompleteInput'.toLowerCase(); AutoCompleteInput.render = function () { return _({ 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 () { if (!this.hasClass('focus')) return; this.removeClass('focus'); AutoCompleteInput_$(document.body).off('mousedown', this.eventHandler.clickOut); }; AutoCompleteInput.eventHandler.focus = function () { if (this.hasClass('focus')) return; this.addClass('focus'); AutoCompleteInput_$(document.body).on('mousedown', this.eventHandler.clickOut); } AutoCompleteInput.eventHandler.clickOut = function (event) { if (EventEmitter/* default.hitElement */.ZP.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.hasClass && !current.hasClass('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/* default.traceOutBoundingClientRect */.ZP.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_$, 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.selectedItem = { get: function (){ return ( this._currentData && this._currentData[this._selectedIndex]) || null; } }; AutoCompleteInput.property.disabled = { set: function (value) { if (value) { this.addClass('absol-disabled'); } else { this.removeClass('absol-disabled'); } }, get: function () { return this.hasClass('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/* default.install */.Z.install( AutoCompleteInput); /* harmony default export */ const js_AutoCompleteInput = (AutoCompleteInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/BoardTable.js var BoardTable = __webpack_require__(7548); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Board.js var Board = __webpack_require__(7537); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/bscroller.css var bscroller = __webpack_require__(3283); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Element.js var Element = __webpack_require__(1487); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/BScroller.js var BScroller_ = ACore/* default._ */.Z._; var BScroller_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.prototype.isDescendantOf.call */.Z.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/* default.install */.Z.install(BScroller); /* harmony default export */ const js_BScroller = (BScroller); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/buttonarray.css var buttonarray = __webpack_require__(439); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElement.js var AElement = __webpack_require__(7951); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ButtonArray.js var ButtonArray_ = ACore/* default._ */.Z._; var ButtonArray_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.install */.Z.install(ButtonArray); /* harmony default export */ const js_ButtonArray = (ButtonArray); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/calendarinput.css var calendarinput = __webpack_require__(3623); // EXTERNAL MODULE: ./node_modules/absol/src/Time/datetime.js var datetime = __webpack_require__(7807); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ChromeCalendar.js var ChromeCalendar = __webpack_require__(4845); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CalendarInput.js var CalendarInput_ = ACore/* default._ */.Z._; var CalendarInput_$ = ACore/* default.$ */.Z.$; /** * @extends AElement * @constructor */ function CalendarInput() { var thisCI = this; this.$input = CalendarInput_$('input', this); this._value = null; this._quickOption = ChromeCalendar/* default.showWhenClick */.Z.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.opt.selectedDates = [value];//change new option thisCI.emit('change', { target: thisCI, value: value }, thisCI); }); OOP/* default.drillProperty */.ZP.drillProperty(this, this._quickOption.opt, { 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.opt.selectedDates = []; this._value = value; this._quickOption.opt.selectedDates = [new Date()] } else { if (typeof value == 'number') value = new Date(value); this._value = value; this.$input.value = this.formatDateString(value); this._quickOption.opt.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.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; 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 (0,datetime.formatDateString)(date); } else if (typeof this.dateToString == 'string') { return (0,datetime.formatDateString)(date, this.dateToString); } else if (typeof this.dateToString == 'function') { return this.dateToString(date); } }; ACore/* default.install */.Z.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/* default.install */.Z.install(OldCalendarInput); /* harmony default export */ const js_CalendarInput = (CalendarInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/CheckBoxInput.js var CheckBoxInput = __webpack_require__(1728); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checkbox.css var css_checkbox = __webpack_require__(1239); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckBox.js var CheckBox_ = ACore/* default._ */.Z._; var CheckBox_$ = ACore/* default.$ */.Z.$; var $$ = ACore/* default.$$ */.Z.$$; /*** * @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/* default.drillProperty */.ZP.drillProperty(this, this.$input, ['checked']); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$input, ['minus']); /*** * @type {boolean} * @name checked * @memberOf CheckBox# */ /*** * @type {boolean} * @name minus * @memberOf CheckBox# */ } 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) { this.disabled = !(value === 'false' || value === null); }, get: function () { return this.disabled ? 'true' : 'false'; }, remove: function () { this.disabled = false; } }, readonly: { set: function (value) { this.readOnly = !(value === 'false' || value === null); }, get: function () { return this.readOnly ? 'true' : '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'); } } }; CheckBox.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); this.$input.readOnly = true; } else { this.addClass('as-read-only'); this.$input.readOnly = false; } }, get: function () { return this.$input.readOnly; } } /*** * * @type {{}|CheckBox} */ CheckBox.eventHandler = {}; CheckBox.eventHandler.click = function (event) { if (!EventEmitter/* default.hitElement */.ZP.hitElement(this.$input, event) && !this.readOnly) { this.$input.click(); } }; ACore/* default.install */.Z.install(CheckBox); /* harmony default export */ const js_CheckBox = (CheckBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/circlesectionlabel.css var circlesectionlabel = __webpack_require__(9022); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Svg.js var Svg = __webpack_require__(6821); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CircleSectionLabel.js var CircleSectionLabel_ = ACore/* default._ */.Z._; var CircleSectionLabel_$ = ACore/* default.$ */.Z.$; var _g = Svg/* default.ShareInstance._ */.ZP.ShareInstance._; var $g = Svg/* default.ShareInstance.$ */.ZP.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 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(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); /** * @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/* default.addToResizeSystem */.ZP.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/* default.install */.Z.install(CircleSectionLabel); /* harmony default export */ const js_CircleSectionLabel = (CircleSectionLabel); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Scroller.js var Scroller = __webpack_require__(9246); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ContextMenu.js var ContextMenu = __webpack_require__(7054); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Menu.js var Menu = __webpack_require__(407); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dateinput.css var dateinput = __webpack_require__(8094); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/datetimeinput.css var datetimeinput = __webpack_require__(8000); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DomSignal.js var DomSignal = __webpack_require__(5150); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/utils.js var utils = __webpack_require__(1477); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/chrometimepicker.css var chrometimepicker = __webpack_require__(6171); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ChromeTimePicker.js /*** * @extends AElement * @constructor */ function ChromeTimePicker() { this._hour = null; this._minute = null; OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'dayOffset', 'value'); this.$lists = (0,ACore.$$)('.as-chrome-time-picker-list', this); this.$hourList = this.$lists[0]; this.$hourList.on('scroll', this.eventHandler.hourScroll) .on('click', this.eventHandler.clickHourList); this.$hour24List = this.$lists[1]; this.$hour24List.on('scroll', this.eventHandler.hour24Scroll) .on('click', this.eventHandler.clickHour24List); this.$minList = this.$lists[2]; this.$minList.on('scroll', this.eventHandler.minScroll) .on('click', this.eventHandler.clickMinList); this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.domSignal = new DomSignal/* default */.ZP(this.$attachhook) .on('request_scroll_into_selected', this._scrollIntoSelected.bind(this)); this.$amBtn = (0,ACore.$)('.as-chrome-time-picker-btn[data-value="AM"]', this) .on('click', this.eventHandler.clickAM); this.$pmBtn = (0,ACore.$)('.as-chrome-time-picker-btn[data-value="PM"]', this) .on('click', this.eventHandler.clickPM); this.scrollIntoSelected(); this.hour = null; this.minute = null; this.s24 = false; (0,ACore.$$)('.as-chrome-time-picker-scroller', this).forEach(this._makeScroller.bind(this)); /*** * @memberOf ChromeTimePicker# * @type {number} * @name min */ } ChromeTimePicker.tag = 'ChromeTimePicker'.toLowerCase(); ChromeTimePicker.render = function () { return (0,ACore._)({ class: 'as-chrome-time-picker', extendEvent: ['change'], child: [ { class: ['as-chrome-time-picker-scroller', 'as-chrome-time-picker-scroller-h12'], child: [ {tag: 'button', class: 'as-chrome-time-picker-scroller-up', child: 'span.mdi.mdi-chevron-up'}, {tag: 'button', class: 'as-chrome-time-picker-scroller-down', child: 'span.mdi.mdi-chevron-down'}, { class: ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-h12'], child: { class: 'as-chrome-time-picker-list', child: Array(36).fill(0).map(function (u, i) { return { tag: 'button', class: 'as-chrome-time-picker-btn', child: { tag: 'span', child: {text: (i % 12) + 1 + ''} }, props: { __hour__: (i % 12) + 1 } } }) } }] }, { class: ['as-chrome-time-picker-scroller', 'as-chrome-time-picker-scroller-h24'], child: [ {tag: 'button', class: 'as-chrome-time-picker-scroller-up', child: 'span.mdi.mdi-chevron-up'}, {tag: 'button', class: 'as-chrome-time-picker-scroller-down', child: 'span.mdi.mdi-chevron-down'}, { class: ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-h24'], child: { class: 'as-chrome-time-picker-list', child: Array(24 * 3).fill(0).map(function (u, i) { return { tag: 'button', class: 'as-chrome-time-picker-btn', child: { tag: 'span', child: {text: (i % 24) + ''} }, props: { __hour__: (i % 24) } } }) } }] }, { class: 'as-chrome-time-picker-scroller', child: [ {tag: 'button', class: 'as-chrome-time-picker-scroller-up', child: 'span.mdi.mdi-chevron-up'}, {tag: 'button', class: 'as-chrome-time-picker-scroller-down', child: 'span.mdi.mdi-chevron-down'}, { class: 'as-chrome-time-picker-viewport', child: { class: 'as-chrome-time-picker-list', child: Array(180).fill(0).map(function (u, i) { return { tag: 'button', class: 'as-chrome-time-picker-btn', child: { tag: 'span', child: {text: (i % 60) + ''} }, props: { __min__: (i % 60) } } }) } }] }, { class: ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-period'], child: ['AM', 'PM'].map(function (u,) { return { tag: 'button', class: 'as-chrome-time-picker-btn', attr: { 'data-value': u }, child: { tag: 'span', child: {text: u} }, props: { __APM__: u } } }) } ] }); }; ChromeTimePicker.prototype._makeScroller = function (rootElt) { var upBtn = (0,ACore.$)('.as-chrome-time-picker-scroller-up', rootElt); var downBtn = (0,ACore.$)('.as-chrome-time-picker-scroller-down', rootElt); var listElt = (0,ACore.$)('.as-chrome-time-picker-list', rootElt); var delta = 0; function tick() { if (delta === 0) return; listElt.scrollTop -= delta; requestAnimationFrame(tick); } function cancel() { delta = 0; document.body.removeEventListener('mouseup', cancel); document.body.removeEventListener('mouseleave', cancel); } upBtn.on('mousedown', function () { delta = 5; document.body.addEventListener('mouseup', cancel); document.body.addEventListener('mouseleave', cancel); tick(); }); downBtn.on('mousedown', function () { delta = -5; document.body.addEventListener('mouseup', cancel); document.body.addEventListener('mouseleave', cancel); tick(); }); }; ChromeTimePicker.prototype.scrollIntoSelected = function () { this.domSignal.emit('request_scroll_into_selected'); }; ChromeTimePicker.prototype._scrollIntoSelected = function () { var hour = this._hour; this.$hour24List.scrollTop = (hour + 24) * 28; hour = this._hour % 12; if (hour === 0) hour = 12; this.$hourList.scrollTop = (hour + 11) * 28; this.$minList.scrollTop = (this._minute + 60) * 28; }; ChromeTimePicker.prototype.notifyChange = function (event) { this.emit('change', { type: 'change', originEvent: event, dayOffset: this.dayOffset, hour: this.hour, minute: this.minute, target: this }, this); } ChromeTimePicker.property = {}; ChromeTimePicker.property.hour = { set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.min(23, Math.max(0, Math.floor(value) % 24)); } else { value = null; } var prevVal = this._hour; if (prevVal !== null) { this.$hour24List.childNodes[prevVal].removeClass('as-selected'); this.$hour24List.childNodes[prevVal + 24].removeClass('as-selected'); this.$hour24List.childNodes[prevVal + 48].removeClass('as-selected'); prevVal = this._hour % 12; if (prevVal === 0) prevVal = 12; this.$hourList.childNodes[prevVal - 1].removeClass('as-selected'); this.$hourList.childNodes[prevVal - 1 + 12].removeClass('as-selected'); this.$hourList.childNodes[prevVal - 1 + 24].removeClass('as-selected'); } this._hour = value; prevVal = this._hour; if (prevVal !== null) { this.$hour24List.childNodes[prevVal].addClass('as-selected'); this.$hour24List.childNodes[prevVal + 24].addClass('as-selected'); this.$hour24List.childNodes[prevVal + 48].addClass('as-selected'); prevVal = this._hour % 12; if (prevVal === 0) prevVal = 12; this.$hourList.childNodes[prevVal - 1].addClass('as-selected'); this.$hourList.childNodes[prevVal - 1 + 12].addClass('as-selected'); this.$hourList.childNodes[prevVal - 1 + 24].addClass('as-selected'); if (this._hour >= 12) { this.$pmBtn.addClass('as-selected'); this.$amBtn.removeClass('as-selected'); } else { this.$amBtn.addClass('as-selected'); this.$pmBtn.removeClass('as-selected'); } } else { this.$pmBtn.removeClass('as-selected'); this.$amBtn.removeClass('as-selected'); } }, get: function () { return this._hour; } }; ChromeTimePicker.property.minute = { set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.min(59, Math.max(0, Math.floor(value) % 60)); } else { value = null; } var prevVal = this._minute; if (prevVal !== null) { this.$minList.childNodes[prevVal].removeClass('as-selected'); this.$minList.childNodes[prevVal + 60].removeClass('as-selected'); this.$minList.childNodes[prevVal + 120].removeClass('as-selected'); } this._minute = value; prevVal = this._minute; if (prevVal !== null) { this.$minList.childNodes[prevVal].addClass('as-selected'); this.$minList.childNodes[prevVal + 60].addClass('as-selected'); this.$minList.childNodes[prevVal + 120].addClass('as-selected'); } }, get: function () { return this._minute; } }; ChromeTimePicker.property.value = { set: function (value) { if (!(0,utils.isRealNumber)(value) && !(value instanceof Date)) { value = null; } if (value && value.getTime) { value = value.getTime() - (0,datetime.beginOfDay)(value).getTime(); if (!(0,utils.isRealNumber)(value)) value = null; } else if ((0,utils.isRealNumber)(value)) { value = Math.min(datetime.MILLIS_PER_DAY - 1, Math.max(0, value % datetime.MILLIS_PER_DAY)); } if ((0,utils.isRealNumber)(value)) { this.hour = Math.floor(value / datetime.MILLIS_PER_HOUR); this.minute = Math.floor((value % datetime.MILLIS_PER_HOUR) / datetime.MILLIS_PER_MINUTE); } else { this.hour = null; this.minute = null; } this.domSignal.emit('request_scroll_into_selected'); }, get: function () { var res = this._hour * datetime.MILLIS_PER_HOUR + this._minute * datetime.MILLIS_PER_MINUTE; return (0,utils.isRealNumber)(res) ? res : null; } }; ChromeTimePicker.property.min = { set: function (value){ }, get: function (){ } }; ChromeTimePicker.property.s24 = { set: function (value) { if (value) { this.addClass('as-24h-clock'); } else { this.removeClass('as-24h-clock'); } }, get: function () { return this.hasClass('as-24h-clock'); } } ChromeTimePicker.eventHandler = {}; ChromeTimePicker.eventHandler.hourScroll = function () { var y = this.$hourList.scrollTop; var dy = 0; if (y < 28 * 12) dy = 28 * 12; else if (y > 28 * 24) { dy = -28 * 12; } if (dy !== 0) { this.$hourList.scrollTop += dy; } }; ChromeTimePicker.eventHandler.hour24Scroll = function () { var y = this.$hour24List.scrollTop; var dy = 0; if (y < 28 * 24) dy = 28 * 24; else if (y > 28 * 48) { dy = -28 * 24; } if (dy !== 0) { this.$hour24List.scrollTop += dy; } }; ChromeTimePicker.eventHandler.minScroll = function () { var y = this.$minList.scrollTop; var dy = 0; if (y < 28 * 60) dy = 28 * 60; else if (y > 28 * 120) { dy = -28 * 60; } if (dy !== 0) { this.$minList.scrollTop += dy; } }; ChromeTimePicker.eventHandler.clickHourList = function (event) { var hour; if ('__hour__' in event.target) hour = event.target.__hour__; if ('__hour__' in event.target.parentElement) hour = event.target.parentElement.__hour__; if (hour !== undefined) { if (this.hour >= 12) { this.hour = hour === 12 ? hour : hour + 12; } else { this.hour = hour === 12 ? 0 : hour; } if ((hour - 1 + 12) * 28 < this.$hourList.scrollTop) { this.$hourList.scrollTop = (hour - 1 + 12) * 28; } else if (((hour - 1 + 13) * 28) > this.$hourList.scrollTop + this.$hourList.clientHeight) { this.$hourList.scrollTop = (hour - 1 + 13) * 28 - this.$hourList.clientHeight; } this.notifyChange(event); } }; ChromeTimePicker.eventHandler.clickHour24List = function (event) { var hour; if ('__hour__' in event.target) hour = event.target.__hour__; if ('__hour__' in event.target.parentElement) hour = event.target.parentElement.__hour__; if (hour !== undefined) { this.hour = hour; if ((hour + 24) * 28 < this.$hourList.scrollTop) { this.$hourList.scrollTop = (hour + 24) * 28; } else if (((hour + 24) * 28) > this.$hourList.scrollTop + this.$hourList.clientHeight) { this.$hourList.scrollTop = (hour + 24) * 28 - this.$hourList.clientHeight; } this.notifyChange(event); } }; ChromeTimePicker.eventHandler.clickMinList = function (event) { var min; if ('__min__' in event.target) min = event.target.__min__; if ('__min__' in event.target.parentElement) min = event.target.parentElement.__min__; if (min !== undefined) { this.minute = min; if ((min + 60) * 28 < this.$minList.scrollTop) { this.$minList.scrollTop = (min + 60) * 28; } else if (((min + 61) * 28) > this.$minList.scrollTop + this.$minList.clientHeight) { this.$minList.scrollTop = (min + 61) * 28 - this.$minList.clientHeight; } this.notifyChange(event); } }; ChromeTimePicker.eventHandler.clickPM = function (event) { if ((0,utils.isRealNumber)(this.hour)) { if (this.hour < 12) this.hour += 12; } else { this.hour = 12; } this.notifyChange(event); }; ChromeTimePicker.eventHandler.clickAM = function (event) { if ((0,utils.isRealNumber)(this.hour)) { if (this.hour >= 12) this.hour -= 12; } else { this.hour = 0; } this.notifyChange(event); }; ACore/* default.install */.Z.install(ChromeTimePicker); /* harmony default export */ const js_ChromeTimePicker = (ChromeTimePicker); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Follower.js var Follower = __webpack_require__(7094); // EXTERNAL MODULE: ./node_modules/absol/src/Input/keyboard.js var keyboard = __webpack_require__(27); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DateTimeInput.js var STATE_NEW = 1; var STATE_EDITED = 2; var STATE_NONE = 0; /*** * @extends AElement * @constructor */ function DateTimeInput() { this._editingData = {}; this._value = null; this._min = new Date(1890, 0, 1); this._max = new Date(new Date(2090, 0, 1).getTime() - 1); this._format = 'dd/MM/yyyy HH:mm'; this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.domSignal = new DomSignal/* default */.ZP(this.$attachhook); this.domSignal.on('request_auto_select', this._autoSelect.bind(this)); /*** * * @type {HTMLInputElement | AElement} */ this.$text = (0,ACore.$)('.as-date-time-input-text', this) .on('mousedown', this.eventHandler.mouseDownInput) .on('mouseup', this.eventHandler.mouseUpInput) .on('dblclick', this.eventHandler.dblclickInput) .on('keydown', this.eventHandler.keydown) .on('blur', this.eventHandler.inputBlur) .on('contextmenu', function (event) { event.preventDefault(); }); this.$pickerBtn = (0,ACore.$)('.as-date-time-input-icon-btn', this) .on('click', this.eventHandler.clickPickerBtn); this.$clearBtn = (0,ACore.$)('button.as-time-input-clear-btn', this) .on('click', this.clear.bind(this)); this.notNull = false; this.min = this._min; this.max = this._max; } DateTimeInput.tag = 'DateTimeInput'.toLowerCase(); //calendar-clock DateTimeInput.render = function () { return (0,ACore._)({ extendEvent: ['change'], class: 'as-date-time-input', child: [ { tag: 'input', class: 'as-date-time-input-text', attr: { ondrop: "return false;" }, props: { value: 'dd/MM/yyyy HH:mm' } }, { tag: 'button', class: 'as-time-input-clear-btn', child: 'span.mdi.mdi-close-circle' }, { tag: 'button', class: 'as-date-time-input-icon-btn', child: 'span.mdi.mdi-calendar-clock' } ] }); }; DateTimeInput.prototype.tokenRegex = /([^.\/:\-,\\\s]+)|([.\/:\-,\\]+)/i; /*** * * @param start * @returns {null|{ident: string, length: number, sourceText: string, replace: function(s: string, selecting:boolean):void, text: string, idx: number, elt: (HTMLInputElement|absol.AElement)}} */ DateTimeInput.prototype._tokenAt = function (start) { var rgx = new RegExp(this.tokenRegex.source, 'g'); var rgxFormat = new RegExp(this.tokenRegex.source, 'g'); var s = this.$text.value; var format = this._format; var tokenMatched = rgx.exec(s); var formatToken = rgxFormat.exec(format); var tokenMatchedList = []; var formatTokenList = []; var text, ident; var idx; while (tokenMatched && formatToken) { text = tokenMatched[1]; ident = formatToken[1]; if (text && (0,utils.isDateTimeFormatToken)(ident)) { tokenMatchedList.push(tokenMatched); formatTokenList.push(formatToken); } tokenMatched = rgx.exec(s); formatToken = rgxFormat.exec(format); } var bestI = -1; var bestD = Infinity; var d; for (var i = 0; i < tokenMatchedList.length; ++i) { tokenMatched = tokenMatchedList[i]; formatToken = formatTokenList[i]; text = tokenMatched[1]; idx = tokenMatched.index; d = Math.min(Math.abs(start - idx), Math.abs(start - (idx + text.length))); if (d < bestD) { bestD = d; bestI = i; } } if (bestI >= 0) { tokenMatched = tokenMatchedList[bestI]; formatToken = formatTokenList[bestI]; text = tokenMatched[1]; ident = formatToken[1]; idx = tokenMatched.index; return { idx: idx, text: text, length: text.length, ident: ident, elt: this.$text, sourceText: s, replace: function (newText, selecting) { var left = this.sourceText.substr(0, this.idx); var right = this.sourceText.substr(this.idx + this.length); this.text = newText; this.length = newText.length; this.sourceText = left + this.text + right; this.elt.value = this.sourceText; if (selecting) { this.elt.setSelectionRange(this.idx, this.idx + this.length); } } } } return null; }; DateTimeInput.prototype._autoSelect = function () { var token = this._tokenAt(this.$text.selectionStart); var tokenEnd = this._tokenAt(this.$text.selectionEnd); if (token) { if (tokenEnd.idx === token.idx) { this.$text.setSelectionRange(token.idx, token.idx + token.length); this._editingData.state = STATE_NEW; } else { this.$text.select(); this._editingData.state = STATE_NONE; } } }; DateTimeInput.prototype._editNextToken = function () { var token = this._tokenAt(this.$text.selectionStart); if (!token) return false; var cIdx = token.idx; var l = this.$text.value.length; for (var i = token.idx + token.length; i < l; ++i) { token = this._tokenAt(i); if (token && token.idx !== cIdx) { this.$text.setSelectionRange(token.idx, token.idx + token.length); this._editingData.state = STATE_NEW; break; } } }; DateTimeInput.prototype._editPrevToken = function () { var token = this._tokenAt(this.$text.selectionStart); if (!token) return false; var cIdx = token.idx; var l = this.$text.value.length; for (var i = token.idx - 1; i >= 0; --i) { token = this._tokenAt(i); if (token && token.idx !== cIdx) { this.$text.setSelectionRange(token.idx, token.idx + token.length); this._editingData.state = STATE_NEW; break; } } }; DateTimeInput.prototype.tokenMap = { d: 'd', dd: 'd', M: 'M', MM: 'M', y: 'y', yyyy: 'y', hh: 'h', h: 'h', mm: 'm', m: 'm', a: 'a', HH: 'H', H: 'H' }; /*** * * @param {string} s * @returns {{}} * @private */ DateTimeInput.prototype._makeTokenDict = function (s) { var rgx = new RegExp(this.tokenRegex.source, 'g'); var rgxFormat = new RegExp(this.tokenRegex.source, 'g'); var format = this._format; var tokenMap = this.tokenMap; var tokenMatched = rgx.exec(s); var formatToken = rgxFormat.exec(format); var text, ident; var idx; var res = {}; while (tokenMatched && formatToken) { text = tokenMatched[1]; ident = formatToken[1]; if (text) { if (tokenMap[ident]) { idx = tokenMatched.index; res[tokenMap[ident]] = { text: text, idx: idx, length: text.length, sourceText: s, value: ident === 'a' ? text : parseInt(text) } } } tokenMatched = rgx.exec(s); formatToken = rgxFormat.exec(format); } return res; }; /*** * * @param {Date} date * @private */ DateTimeInput.prototype._makeValueDict = function (date) { var res = {}; res.d = { value: date.getDate() }; res.y = { value: date.getFullYear() }; res.M = { value: date.getMonth() + 1 }; res.m = { value: date.getMinutes() }; res.h = { value: date.getHours() }; res.H = { value: date.getHours() }; if (res.h.value < 12) { if (res.h.value === 0) res.h.value = 12; res.a = { value: "AM" }; } else { if (res.h.value > 12) res.h.value -= 12; res.a = { value: "PM" }; } return res; }; DateTimeInput.prototype._applyTokenDict = function (format, dict, debug) { var rgx = new RegExp(this.tokenRegex.source, 'g'); var tokenMap = this.tokenMap; return format.replace(rgx, function (full, g1, g2, sourceText) { if (g1 && tokenMap[g1]) { var ident = tokenMap[g1]; if (ident === 'a') { return (dict.a && dict.a.value) || 'a'; } else { if (dict[ident] && !isNaN(dict[ident].value)) { var numberText = dict[ident].value + ''; while (numberText.length < g1.length) numberText = '0' + numberText; return numberText; } else { return full; } } } else return full; }); }; DateTimeInput.prototype._loadValueFromInput = function () { var tkDict = this._makeTokenDict(this.$text.value); var H = NaN; var m = NaN; if (tkDict.H && (0,utils.isRealNumber)(tkDict.H.value)) { H = tkDict.H.value; } else if (tkDict.h && tkDict.a && tkDict.a.value === 'AM') { H = tkDict.h.value % 12; } else if (tkDict.h && tkDict.a && tkDict.a.value === 'PM') { H = tkDict.h.value + (tkDict.h.value === 12 ? 0 : 12); } if (!tkDict.h && !tkDict.H) H = 0; if (tkDict.m) { m = tkDict.m.value; } else { m = 0; } var date = new Date(tkDict.y.value, tkDict.M.value - 1, tkDict.d.value, H, m); if (isNaN(date.getTime())) { this._value = null; } else { this._value = date; } }; DateTimeInput.prototype.clear = function () { var lev = this._lastEmitValue; if (this.notNull) { this.value = (0,datetime.formatDateTime)( new Date(Math.max(this.min.getTime(), Math.min(this.max.getTime(), new Date().getTime()))), this.format); } else { this.value = null; } this._lastEmitValue = lev; this._notifyIfChange(); }; DateTimeInput.prototype._notifyIfChange = function (event) { if (!this._lastEmitValue && !this._value) return; if (this._lastEmitValue && this._value && this._lastEmitValue.getTime() === this._value.getTime()) return; this.emit('change', { type: 'change', target: this, value: this._value, originEvent: event }, this); this._lastEmitValue = this._value; }; DateTimeInput.prototype._correctingInput = function () { var tkDict = this._makeTokenDict(this.$text.value); var equalMin = true; var equalMax = true; if (!isNaN(tkDict.y.value)) { tkDict.y.value = Math.max(this._min.getFullYear(), Math.min(this._max.getFullYear(), tkDict.y.value)); equalMin = tkDict.y.value === this._min.getFullYear(); equalMax = tkDict.y.value === this._max.getFullYear(); } else { equalMin = false; equalMax = false; } if (!isNaN(tkDict.M.value)) { tkDict.M.value = Math.max(1, Math.min(12, tkDict.M.value)); if (equalMin) { tkDict.M.value = Math.max(this._min.getMonth() + 1, tkDict.M.value); equalMin = tkDict.M.value === this._min.getMonth() + 1; } if (equalMax) { tkDict.M.value = Math.min(this._max.getMonth() + 1, tkDict.M.value); equalMax = this._max.getMonth() + 1; } } else { equalMin = false; equalMax = false; } if (!isNaN(tkDict.d.value)) { tkDict.d.value = Math.max(1, Math.min(31, tkDict.d.value)); if (!isNaN(tkDict.M.value)) { tkDict.d.value = Math.min(tkDict.d.value, (0,datetime.daysInMonth)(isNaN(tkDict.y.value) ? 2020 : tkDict.y.value, tkDict.M.value - 1)); } if (equalMin) { tkDict.d.value = Math.max(this._min.getDate(), tkDict.d.value); equalMin = tkDict.d.value === this._min.getDate(); } if (equalMax) { tkDict.d.value = Math.min(this._max.getDate(), tkDict.d.value); equalMax = tkDict.d.value === this._max.getDate(); } } else { equalMin = false; equalMax = false; } //todo: min max if (tkDict.a && (tkDict.a.value === 'AM' || tkDict.a.value === 'PM')) { if (equalMin) { } } else { equalMin = false; equalMax = false; } this.$text.value = this._applyTokenDict(this._format, tkDict); this.attr('data-text', this.$text.value); }; DateTimeInput.prototype._correctingCurrentToken = function () { var token = this._tokenAt(this.$text.selectionStart); if (!token) return; var value; if (token.ident === 'a') { if (token.text !== 'a' && token.text !== 'AM' && token.text !== 'PM') { token.replace('a', false); } } else { value = parseInt(token.text); var rqMin = { d: 1, dd: 1, M: 1, MM: 1, y: 1890, yyyy: 1890, h: 1, hh: 1, HH: 0, H: 0, m: 0, mm: 0 }[token.ident]; var rqMax = { d: 31, dd: 31, M: 12, MM: 12, y: 2089, yyyy: 2089, h: 12, hh: 12, HH: 23, H: 23, m: 59, mm: 59 }[token.ident]; if (rqMin !== undefined) { if (!isNaN(value)) { if ((value < rqMin || value > rqMin)) { value = Math.max(rqMin, Math.min(rqMax, value)); token.replace((0,utils.zeroPadding)(value, token.ident.length), false); this._editingData.d = value; } } else if (token.text !== token.ident) { token.replace(token.ident, false); } } } }; DateTimeInput.prototype._dateFrom = function (value) { var typeV = typeof value; if (typeV === 'string' || typeV === 'number') { value = new Date(value); } if (!value || !value.getTime) value = null; if (value) { value = new Date(value.getTime()); value.setSeconds(0, 0); } return value || null; } DateTimeInput.property = {}; DateTimeInput.property.disabled = { set: function (value) { this.$text.disabled = !!value; if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } }; DateTimeInput.property.notNull = { set: function (value) { if (value) { this.addClass('as-must-not-null'); if (!this.value) this.value = new Date(); } else { this.removeClass('as-must-not-null'); } this.value = this.value;//update }, get: function () { return this.hasClass('as-must-not-null'); } }; DateTimeInput.property.format = { set: function (value) { value = value || 'dd/MM/yyyy HH:mm'; var dict; if (this._value) { dict = this._makeValueDict(this._value); } else { dict = this._makeTokenDict(this.$text.value); } this._format = value; this.$text.value = this._applyTokenDict(value, dict); this.attr('data-text', this.$text.value); }, get: function () { return this._format; } }; DateTimeInput.property.value = { set: function (value) { this._value = this._dateFrom(value); var dict; if (this._value) { dict = this._makeValueDict(this._value); } else { dict = this._makeTokenDict(this.$text.value); } if (value) { this.$text.value = this._applyTokenDict(this._format, dict, true); this.attr('data-text', this.$text.value); } else { this.$text.value = this.format; this.attr('data-text', this.$text.value); } this._lastEmitValue = this._value; }, get: function () { return this._value; } }; DateTimeInput.property.min = { set: function (value) { this._min = this._dateFrom(value) || new Date(1890, 0, 1); }, get: function () { return this._min; } }; DateTimeInput.property.max = { set: function (value) { this._max = this._dateFrom(value) || new Date(new Date(2090, 0, 1).getTime() - 1); }, get: function () { return this._max; } }; DateTimeInput.property.readOnly = { set: function (value) { if (value) { this.addClass(('as-read-only')); } else { this.removeClass(('as-read-only')); } }, get: function () { return this.hasClass('as-read-only'); } }; DateTimeInput.property.text = { get: function () { return this.$text.value; } }; DateTimeInput.eventHandler = {}; DateTimeInput.eventHandler.mouseUpInput = function () { if (!this.readOnly) { this.domSignal.emit('request_auto_select'); } }; DateTimeInput.eventHandler.mouseDownInput = function () { if (!this.readOnly && document.activeElement === this.$text) { this._correctingCurrentToken(); } } DateTimeInput.eventHandler.dblclickInput = function (event) { event.preventDefault(); }; /*** * * @param {KeyboardEvent} event */ DateTimeInput.eventHandler.keydown = function (event) { var kbId = (0,keyboard/* keyboardEventToKeyBindingIdent */.Ej)(event); if (this.readOnly) { if (!kbId.match(/^arrow/) && !kbId.match(/^ctrl-[ca]/)) { event.preventDefault(); } return; } var token = this._tokenAt(this.$text.selectionStart); var endToken = this._tokenAt(this.$text.selectionEnd); if (!token) { if (event.key === 'Enter') { this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(event); } return; } var newTokenText; var value; if (event.key.startsWith('Arrow') || [' ', ':', '/', '-'].indexOf(event.key) >= 0) { event.preventDefault(); switch (event.key) { case 'ArrowLeft': this._editPrevToken(); break; case 'ArrowRight': case ' ': case ':': case '/': case '-': this._editNextToken(); break; case 'ArrowUp': case 'ArrowDown': switch (token.ident) { case 'dd': case 'd': value = parseInt(token.text); if (isNaN(value)) { this._editingData.d = event.key === 'ArrowUp' ? 1 : 31; } else { this._editingData.d = 1 + (value + (event.key === 'ArrowUp' ? 0 : 29)) % 31; } newTokenText = '' + this._editingData.d; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case 'MM': case 'M': value = parseInt(token.text) - 1; if (isNaN(value)) { this._editingData.M = event.key === 'ArrowUp' ? 0 : 11; } else { this._editingData.M = (value + (event.key === 'ArrowUp' ? 1 : 11)) % 12; } newTokenText = '' + (this._editingData.M + 1); while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case 'yyyy': value = parseInt(token.text); if (isNaN(value)) { this._editingData.y = new Date().getFullYear(); } else { this._editingData.y = Math.max(1890, Math.min(2089, value + (event.key === 'ArrowUp' ? 1 : -1))); } newTokenText = this._editingData.y + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case "hh": case 'h': value = parseInt(token.text); if (isNaN(value)) { this._editingData.h = event.key === 'ArrowUp' ? 1 : 12; } else { this._editingData.h = 1 + (value + (event.key === 'ArrowUp' ? 0 : 10)) % 12; } newTokenText = this._editingData.h + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case "HH": case 'H': value = parseInt(token.text); if (isNaN(value)) { this._editingData.H = event.key === 'ArrowUp' ? 1 : 12; } else { this._editingData.H = (value + (event.key === 'ArrowUp' ? 1 : 23)) % 24; } newTokenText = this._editingData.H + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case "mm": case 'm': value = parseInt(token.text); if (isNaN(value)) { this._editingData.m = event.key === 'ArrowUp' ? 0 : 59; } else { this._editingData.m = (value + (event.key === 'ArrowUp' ? 1 : 59)) % 60; } newTokenText = this._editingData.m + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case 'a': value = token.text; this._editingData.a = value === 'PM' ? "AM" : "PM"; newTokenText = this._editingData.a; token.replace(newTokenText, true); break; } break; } } else if (event.key === "Delete" || event.key === 'Backspace') { event.preventDefault(); if (endToken.idx !== token.idx) { if (this.notNull) { this.$text.value = (0,datetime.formatDateTime)( new Date(Math.max(this.min.getTime(), Math.min(this.max.getTime(), new Date().getTime()))), this.format); } else { this.$text.value = this._format; } this.attr('data-text', this.$text.value); this.$text.select(); } else { if (this.notNull) { switch (token.ident) { case 'HH': case 'mm': case 'H': case 'm': token.replace((0,utils.zeroPadding)(0, token.ident.length), true); break; case 'h': case 'hh': token.replace('12', true); break; case 'M': case 'MM': case 'dd': case 'd': token.replace((0,utils.zeroPadding)(1, token.ident.length), true); break; case 'y': case 'yyyy': token.replace( (0,utils.zeroPadding)(Math.max(this.min.getFullYear(), Math.min(this.max.getFullYear(), new Date().getFullYear())), token.ident.length), true); break; case 'a': token.replace('AM', true); break; } } else { token.replace(token.ident, true); } if (event.key === "Delete") this._editNextToken(); else this._editPrevToken(); } } else if (event.key === "Enter" || event.key === 'Tab') { this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(event); } else if (event.ctrlKey) { switch (event.key) { case 'a': case 'A': break; case 'c': case 'C': break; case 'x': case 'X': this.domSignal.once('clear_value', function () { this.$text.value = this._format; this.attr('data-text', this.$text.value); this.$text.select(); }.bind(this)); this.domSignal.emit('clear_value'); break; default: event.preventDefault(); } } else if (event.key.match(/^[0-9]$/g)) { event.preventDefault(); var dVal = parseInt(event.key); if (this._editingData.state === STATE_NEW) { switch (token.ident) { case 'dd': case 'd': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = STATE_EDITED; this._editingData.d = dVal; if (dVal > 3) { this._editNextToken(); } break; case 'MM': case 'M': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = STATE_EDITED; this._editingData.M = dVal; if (dVal > 1) { this._editNextToken(); } break; case 'yyyy': case 'y': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = STATE_EDITED; this._editingData.state_num = 1; break; case 'm': case 'mm': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = STATE_EDITED; if (dVal > 5) { this._editNextToken(); } break; case 'h': case 'hh': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = STATE_EDITED; if (dVal > 1) { this._editNextToken(); } break; case 'HH': case 'H': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = STATE_EDITED; if (dVal > 2) { this._editNextToken(); } break; } } else { switch (token.ident) { case 'dd': case 'd': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(31, dVal)); this._editingData.d = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'MM': case 'M': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(12, dVal)); this._editingData.M = dVal - 1; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'yyyy': case 'y': dVal = (parseInt(token.text.replace(/^./, '')) || 0) * 10 + dVal; this._editingData.state_num++; if (this._editingData.state_num >= 4) { // dVal = Math.max(1890, Math.min(2089, dVal)); token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); } else { token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); } break; case 'm': case 'mm': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(0, Math.min(59, dVal)); this._editingData.m = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'h': case 'hh': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(12, dVal)); this._editingData.h = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'H': case 'HH': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(0, Math.min(23, dVal)); this._editingData.h = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; } } } else if (event.key.match(/^[aApPSCsc]$/) && token.ident === 'a') { event.preventDefault(); if (event.key.match(/^[aAsS]$/)) { token.replace('AM', true); this._editingData.a = "AM"; } else { token.replace('PM', true); this._editingData.a = "PM"; } this._editNextToken(); } else { event.preventDefault(); } } DateTimeInput.eventHandler.inputBlur = function () { this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(); }; DateTimeInput.eventHandler.clickPickerBtn = function () { this._attachPicker(); }; DateTimeInput.eventHandler.clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.share.$follower, event)) return; this._releasePicker(); }; DateTimeInput.eventHandler.clickCancelBtn = function () { this._releasePicker(); }; DateTimeInput.eventHandler.calendarPick = function (event) { var value = event.value; var tkDict = this._makeTokenDict(this.share.pickedValeText); if (tkDict.y) { tkDict.y.value = value.getFullYear(); } if (tkDict.M) { tkDict.M.value = value.getMonth() + 1; } if (tkDict.d) { tkDict.d.value = value.getDate(); } this.share.pickedValeText = this._applyTokenDict(this._format, tkDict); if (this.share.dateOnly) this.eventHandler.clickOKBtn({}); }; DateTimeInput.eventHandler.clickOKBtn = function (event) { this.$text.value = this.share.pickedValeText; this.attr('data-text', this.$text.value); this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(event); this._releasePicker(); }; DateTimeInput.eventHandler.timePick = function (event) { var hour = event.hour; var minute = event.minute; var tkDict = this._makeTokenDict(this.share.pickedValeText); if (tkDict.h) { tkDict.h.value = 1 + ((hour + 11) % 12); if (tkDict.a) { tkDict.a.value = hour >= 12 ? "PM" : 'AM'; } } if (tkDict.H) { tkDict.H.value = hour; } if (tkDict.m) { tkDict.m.value = minute; } this.share.pickedValeText = this._applyTokenDict(this._format, tkDict); }; DateTimeInput.prototype.share = { $follower: null, $calendar: null, $timePicker: null, $holdingInput: null }; DateTimeInput.prototype._preparePicker = function () { if (!this.share.$follower) { this.share.$timePicker = (0,ACore._)({ tag: js_ChromeTimePicker.tag, class: 'as-date-time-input-time-picker' }); this.share.$calendar = (0,ACore._)({ tag: ChromeCalendar/* default.tag */.Z.tag, class: 'as-date-time-input-date-picker' }); if (this.share.$calendar.$attachHook) { this.share.$calendar.$attachHook.cancelWaiting(); } this.share.$cancelBtn = (0,ACore._)({ tag: 'a', class: 'as-select-list-box-cancel-btn', attr: { "data-ml-key": 'txt_cancel' }, }); this.share.$okBtn = (0,ACore._)({ tag: 'a', class: 'as-select-list-box-ok-btn', attr: { "data-ml-key": 'txt_ok' }, }); this.share.$follower = (0,ACore._)({ tag: Follower/* default.tag */.Z.tag, class: ['as-date-time-input-follower', 'as-dropdown-box-common-style'], child: [ { class: 'as-date-time-input-picker-ctn', child: [ this.share.$calendar, this.share.$timePicker ] }, { class: 'as-dropdown-box-footer', child: [{ class: 'as-dropdown-box-footer-right', child: [ this.share.$okBtn, this.share.$cancelBtn ] } ] } ] }); this.share.$footer = (0,ACore.$)('.as-dropdown-box-footer', this.share.$follower); this.share.$follower.cancelWaiting(); } }; DateTimeInput.prototype._attachPicker = function () { this._preparePicker(); if (this.share.$holdingInput) this.share.$holdingInput._releasePicker(); this.share.pickedValeText = this.$text.value; this.share.$holdingInput = this; this.share.$follower.addStyle('visibility', 'hidden'); this.share.$follower.addTo(document.body); this.share.$follower.followTarget = this; this.share.$follower.sponsorElement = this; this.$pickerBtn.off('click', this.eventHandler.clickPickerBtn); this.share.$calendar.on('pick', this.eventHandler.calendarPick); this.share.$timePicker.on('change', this.eventHandler.timePick); this.share.$okBtn.on('click', this.eventHandler.clickOKBtn); this.share.$cancelBtn.on('click', this.eventHandler.clickCancelBtn); if (this.share.$calendar.$attachHook) { this.share.$calendar.$attachHook.emit('attached'); } var tkDict = this._makeTokenDict(this.$text.value); this.share.dateOnly = !tkDict.m && !tkDict.H && !tkDict.h; if (tkDict.h && !isNaN(tkDict.h.value)) { if (tkDict.a && tkDict.a.value === 'PM') { this.share.$timePicker.hour = 12 + tkDict.h.value % 12; } else { this.share.$timePicker.hour = tkDict.h.value % 12; } } else if (tkDict.H && (0,utils.isRealNumber)(tkDict.H.value)) { this.share.$timePicker.hour = tkDict.H.value; } else if (!tkDict.H && !tkDict.h) { this.share.$timePicker.hour = 0; } else { this.share.$timePicker.hour = null; } this.share.$timePicker.s24 = !!tkDict.H || !tkDict.a; if (tkDict.m && !isNaN(tkDict.m.value)) { this.share.$timePicker.minute = tkDict.m.value; } else if (!tkDict.m) { this.share.$timePicker.minute = 0; } else { this.share.$timePicker.minute = null; } if (this.share.dateOnly) { this.share.$timePicker.addStyle('display', 'none'); this.share.$footer.addStyle('display', 'none'); } else { this.share.$timePicker.removeStyle('display'); this.share.$footer.removeStyle('display'); this.share.$timePicker.scrollIntoSelected(); } var date = null; if (tkDict.d && !isNaN(tkDict.d.value) && tkDict.M && !isNaN(tkDict.M.value) && tkDict.y && !isNaN(tkDict.y.value)) { date = new Date(tkDict.y.value, tkDict.M.value - 1, tkDict.d.value); if (isNaN(date.getTime())) date = null; } if (date) { this.share.$calendar.selectedDates = [date]; this.share.$calendar.viewDate = date; } else { this.share.$calendar.selectedDates = []; var viewDate = null; if (tkDict.y && !isNaN(tkDict.y.value)) { if (tkDict.M && !isNaN(tkDict.M.value)) { if (tkDict.d && !isNaN(tkDict.d.value)) { viewDate = new Date(tkDict.y.value, tkDict.M.value - 1, tkDict.d.value); } else { viewDate = new Date(tkDict.y.value, tkDict.M.value - 1, 1); } } else { viewDate = new Date(tkDict.y.value, 0, 1); } } else { viewDate = new Date(); } if (viewDate && !isNaN(viewDate.getTime())) { this.share.$calendar.viewDate = viewDate; } else { this.share.$calendar.viewDate = new Date(); } } setTimeout(function () { this.share.$follower.removeStyle('visibility'); document.addEventListener('click', this.eventHandler.clickOut); }.bind(this), 5); }; DateTimeInput.prototype._releasePicker = function () { if (this.share.$holdingInput !== this) return; this.share.$follower.remove(); this.share.$holdingInput = null; this.share.$calendar.off('pick', this.eventHandler.calendarPick); this.share.$timePicker.off('change', this.eventHandler.timePick); this.share.$okBtn.off('click', this.eventHandler.clickOKBtn); this.share.$cancelBtn.off('click', this.eventHandler.clickCancelBtn); document.removeEventListener('click', this.eventHandler.clickOut); setTimeout(function () { this.$pickerBtn.on('click', this.eventHandler.clickPickerBtn); }.bind(this)); }; ACore/* default.install */.Z.install(DateTimeInput); /* harmony default export */ const js_DateTimeInput = (DateTimeInput); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DelaySignal.js var DelaySignal = __webpack_require__(8098); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DateInput2.js var DateInput2_STATE_NEW = 1; var DateInput2_STATE_EDITED = 2; var DateInput2_STATE_NONE = 0; /*** * * @param {Date} date * @param level * @returns {Date|null} */ var dateByLevel = (date, level) => { if (!date) return null; switch (level) { case 'week': return (0,datetime.beginOfWeek)(date); case 'month': return (0,datetime.beginOfMonth)(date); case 'quarter': return (0,datetime.beginOfQuarter)(date); case 'year': return (0,datetime.beginOfYear)(date); case 'date': default: return (0,datetime.beginOfDay)(date); } } var DateInput2_ = ACore/* default._ */.Z._; var DateInput2_$ = ACore/* default.$ */.Z.$; /** * @extends AElement * @constructor */ function DateInput2() { this._lastValue = null; this._value = null; this._format = 'dd/MM/yyyy'; this.$input = DateInput2_$('input', this); this._editingData = {}; this.startDayOfWeek = (0,datetime.getDefaultFirstDayOfWeek)(); this.$text = this.$input; this.$text.on('mousedown', this.eventHandler.mouseDownInput) .on('mouseup', this.eventHandler.mouseUpInput) .on('dblclick', this.eventHandler.dblclickInput) .on('keydown', this.eventHandler.keydown) .on('blur', this.eventHandler.inputBlur) .on('contextmenu', function (event) { event.preventDefault(); }); this.domSignal = new DelaySignal/* default */.Z(); this.domSignal.on('request_auto_select', this._autoSelect.bind(this)); this._min = new Date(1890, 0, 1, 0, 0, 0, 0); this._max = new Date(2090, 0, 1, 0, 0, 0, 0); this.$calendarBtn = DateInput2_$('.as-date-input-icon-ctn', this) .on('click', this.eventHandler.clickCalendarBtn); this.$clearBtn = DateInput2_$('button.as-date-input-clear-btn', this) .on('click', this.clear.bind(this)); this.value = this._value; this.format = this._format; this.notNull = false; OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'minLimitDate', 'min'); OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'minDateLimit', 'min'); OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'maxLimitDate', 'max'); OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'maxDateLimit', 'max'); /** * @type {Date} * @name min * @memberOf DateInput# */ /** * @type {Date} * @name max * @memberOf DateInput# */ /** * @type {Date} * @name value * @memberOf DateInput# */ /** * @type {string} * @name format * @memberOf DateInput# */ /** * @deprecated * @type {Date} * @name minLimitDate * @memberOf DateInput# */ /** * @deprecated * @type {Date} * @name maxLimitDate * @memberOf DateInput# */ } DateInput2.tag = 'dateinput'; DateInput2.render = function () { //only support dd/mm/yyyy return DateInput2_({ class: 'as-date-input', extendEvent: ['change'], child: [{ tag: 'input', class: 'as-date-input-text', props: { value: '__/__/____' } }, { tag: 'button', class: 'as-date-input-clear-btn', child: 'span.mdi.mdi-close-circle' }, { tag: 'button', class: 'as-date-input-icon-ctn', child: 'span.mdi.mdi-calendar' }] }); }; /** * @param {String} text */ DateInput2.prototype._verifyFormat = function (text) { var regex = new RegExp(datetime.DATE_TIME_TOKEN_RGX.source, 'g'); var tokens = text.match(regex); var map = { d: ['dd', 'd'], M: ['M', 'MM'], y: ['yy', 'yyyy'], Q: ['Q', 'QQ'], w: ['w', 'ww'], }; var rules = ['dMy', 'My', 'y', 'wy', 'Qy'].map(r => { r = r.split(''); r.sort(); return r.join(''); }); var matched = tokens.reduce((ac, cr) => { Object.keys(map).some(key => { if (map[key].indexOf(cr) >= 0) { ac.push(key); return true; } return false; }); return ac; }, []); matched.sort(); matched = matched.join(''); return rules.indexOf(matched) >= 0; }; DateInput2.prototype._notifyIfChange = function (event) { var oldV = this._explicit(this._lastValue); var newV = this._explicit(this._value); if (!oldV !== !newV || (oldV && newV && (0,datetime.compareDate)(oldV, newV) !== 0)) { this._lastValue = this._value; this.emit('change', { type: 'change', target: this, value: this._value, originEvent: event }, this); } }; DateInput2.prototype.notifyChange = function () { this._lastValue = this._value; 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(); }; DateInput2.prototype.clear = function () { this._applyValue(null); this._notifyIfChange(); }; /*** * * @param {Date|null} value */ DateInput2.prototype._applyValue = function (value) { this._value = value; this._loadTextFromValue(); }; DateInput2.prototype._loadTextFromValue = function () { var value = this.value; if (!value) { this.$input.value = this.format; } else { this.$input.value = (0,datetime.formatDateTime)(this._value, this._format); } this._updateNullClass(); }; DateInput2.prototype._updateNullClass = function () { var value = this._value; if (!value) { this.addClass('as-value-null'); } else { this.removeClass('as-value-null'); } }; DateInput2.prototype.tokenRegex = js_DateTimeInput.prototype.tokenRegex; DateInput2.prototype._autoSelect = js_DateTimeInput.prototype._autoSelect; DateInput2.prototype._tokenAt = js_DateTimeInput.prototype._tokenAt; DateInput2.prototype._editNextToken = js_DateTimeInput.prototype._editNextToken; DateInput2.prototype._editPrevToken = js_DateTimeInput.prototype._editPrevToken; DateInput2.prototype._makeTokenDict = js_DateTimeInput.prototype._makeTokenDict; DateInput2.prototype._correctingInput = function () { var tkDict = this._makeTokenDict(this.$text.value); var min = this._min; var max = this._max; var equalMin; var equalMax; if (tkDict.y && !isNaN(tkDict.y.value)) { tkDict.y.value = Math.max(min.getFullYear(), Math.min(max.getFullYear(), tkDict.y.value)); equalMin = tkDict.y.value === min.getFullYear(); equalMax = tkDict.y.value === max.getFullYear(); } else { equalMin = false; equalMax = false; } if (tkDict.M && !isNaN(tkDict.M.value)) { tkDict.M.value = Math.max(1, Math.min(12, tkDict.M.value)); if (equalMin) { tkDict.M.value = Math.max(min.getMonth() + 1, tkDict.M.value); equalMin = tkDict.M.value === min.getMonth() + 1; } if (equalMax) { tkDict.M.value = Math.min(max.getMonth() + 1, tkDict.M.value); equalMax = max.getMonth() + 1; } } else { equalMin = false; equalMax = false; } if (tkDict.d && !isNaN(tkDict.d.value)) { tkDict.d.value = Math.max(1, Math.min(31, tkDict.d.value)); if (tkDict.M && !isNaN(tkDict.M.value)) { tkDict.d.value = Math.min(tkDict.d.value, (0,datetime.daysInMonth)((!tkDict.y ||isNaN(tkDict.y.value) )? 2020 : tkDict.y.value, tkDict.M.value - 1)); } if (equalMin) { tkDict.d.value = Math.max(min.getDate(), tkDict.d.value); } if (equalMax) { tkDict.d.value = Math.min(max.getDate(), tkDict.d.value); } } if (tkDict.w && !isNaN(tkDict.w.value)) { if (tkDict.y && !isNaN(tkDict.y.value)) { tkDict.w.value = Math.max(1, Math.min(tkDict.w.value, 1 + (0,datetime.weekIndexOf)((0,datetime.prevDate)(new Date(tkDict.y.value + 1, 0, 1)), false, this._startDayOfWeek))); } } this.$text.value = this._applyTokenDict(this._format, tkDict); }; DateInput2.prototype._correctingCurrentToken = function () { var token = this._tokenAt(this.$text.selectionStart); if (!token) return; var value; value = parseInt(token.text); var rqMin = { d: 1, dd: 1, M: 1, MM: 1, y: 1890, yyyy: 1890, w: 1, ww: 1, Q: 1, QQ: 1 }[token.ident]; var rqMax = { d: 31, dd: 31, M: 12, MM: 12, y: 2089, yyyy: 2089, w: 54, ww: 54, Q: 4, QQ: 4 }[token.ident]; if (rqMin !== undefined) { if (!isNaN(value)) { if ((value < rqMin || value > rqMin)) { value = Math.max(rqMin, Math.min(rqMax, value)); token.replace((0,utils.zeroPadding)(value, token.ident.length), false); } } else if (this.notNull) { if (token.ident.startsWith('y')) { value = new Date().getFullYear(); } else { value = rqMin; } token.replace((0,utils.zeroPadding)(value, token.ident.length), false); } else if (token.text !== token.ident) { token.replace(token.ident, false); } } }; /*** * * @param {Date|string|null}date * @return {Date|null} */ DateInput2.prototype._normalizeValue = function (date) { var temp; if (date === null || date === undefined || date === false) { return null; } if (typeof date === 'string') { temp = new Date(date); if (isNaN(temp.getTime())) { temp = (0,datetime.parseDateTime)(date, this._format); } date = temp; } else if (typeof date === 'number') { date = new Date(date); } if (date.getTime && date.getHours) { if (isNaN(date.getTime())) { return null; } else { return (0,datetime.beginOfDay)(date); } } else { return null; } }; DateInput2.prototype._loadValueFromInput = function () { var tkDict = this._makeTokenDict(this.$text.value); var y = tkDict.y ? tkDict.y.value : new Date().getFullYear(); var m = tkDict.M ? tkDict.M.value - 1 : 0; var d = tkDict.d ? tkDict.d.value : 1; var date; if (tkDict.w && tkDict.y) { if ((0,utils.isRealNumber)(tkDict.w.value) && (0,utils.isRealNumber)(tkDict.y.value)) date = (0,datetime.weekInYear)(y, tkDict.w.value - 1); } else if (tkDict.Q && tkDict.y) { if ((0,utils.isRealNumber)(tkDict.Q.value) && (0,utils.isRealNumber)(tkDict.y.value)) date = new Date(y, (tkDict.Q.value - 1) * 3, 1); } else { date = new Date(y, m, d); } if (!date || isNaN(date.getTime())) { this._value = null; } else { this._value = date; } this._updateNullClass(); }; DateInput2.prototype._explicit = function (value) { value = value || null; if (this.notNull) { value = value || new Date(); } else if (!value) return null; var time = value.getTime(); time = Math.max(this._min.getTime(), time); time = Math.min(this._max.getTime(), time); return dateByLevel((0,datetime.beginOfDay)(new Date(time)), this.calendarLevel); }; DateInput2.prototype._applyTokenDict = function (format, dict, debug) { var rgx = new RegExp(this.tokenRegex.source, 'g'); var tokenMap = this.tokenMap; var res = format.replace(rgx, function (full, g1, g2, sourceText) { if (g1 && tokenMap[g1]) { var ident = tokenMap[g1]; if (dict[ident] && !isNaN(dict[ident].value)) { return (0,utils.zeroPadding)(dict[ident].value, g1.length); } else { return full; } } else return full; }); return res; }; DateInput2.prototype.focus = function () { this.$text.focus(); this.$text.select(); }; DateInput2.prototype.tokenMap = { d: 'd', dd: 'd', M: 'M', MM: 'M', y: 'y', yyyy: 'y', ww: 'w', Q: 'Q', QQ: 'Q' } /** * @type {DateInput2} */ DateInput2.eventHandler = {}; DateInput2.eventHandler.keydown = function (event) { if (this.readOnly) { if (!event.ctrlKey || event.key !== 'c') { event.preventDefault(); } return; } var token = this._tokenAt(this.$text.selectionStart); var endToken = this._tokenAt(this.$text.selectionEnd); if (!token) { if (event.key === 'Enter') { this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(event); } return; } var newTokenText; var value; if (event.key.startsWith('Arrow') || event.key.match(/^[\-/,\s]$/)) { event.preventDefault(); switch (event.key) { case 'ArrowLeft': this._editPrevToken(); break; case 'ArrowRight': case '-': case ',': case '/': case ' ': this._editNextToken(); break; case 'ArrowUp': case 'ArrowDown': switch (token.ident) { case 'dd': case 'd': value = parseInt(token.text); if (isNaN(value)) { this._editingData.d = event.key === 'ArrowUp' ? 1 : 31; } else { this._editingData.d = 1 + (value + (event.key === 'ArrowUp' ? 0 : 29)) % 31; } newTokenText = '' + this._editingData.d; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case 'w': case 'ww': value = parseInt(token.text); if (isNaN(value)) { this._editingData.w = event.key === 'ArrowUp' ? 1 : 54; } else { this._editingData.w = 1 + (value + (event.key === 'ArrowUp' ? 0 : 52)) % 54; } newTokenText = (0,utils.zeroPadding)(this._editingData.w, token.ident.length); token.replace(newTokenText, true); break; case 'Q': case 'QQ': value = parseInt(token.text); if (isNaN(value)) { this._editingData.Q = event.key === 'ArrowUp' ? 1 : 4; } else { this._editingData.Q = 1 + (value + (event.key === 'ArrowUp' ? 0 : 2)) % 4; } newTokenText = (0,utils.zeroPadding)(this._editingData.Q, token.ident.length); token.replace(newTokenText, true); break; case 'MM': case 'M': value = parseInt(token.text) - 1; if (isNaN(value)) { this._editingData.M = event.key === 'ArrowUp' ? 0 : 11; } else { this._editingData.M = (value + (event.key === 'ArrowUp' ? 1 : 11)) % 12; } newTokenText = '' + (this._editingData.M + 1); while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case 'yyyy': value = parseInt(token.text); if (isNaN(value)) { this._editingData.y = new Date().getFullYear(); } else { this._editingData.y = Math.max(1890, Math.min(2089, value + (event.key === 'ArrowUp' ? 1 : -1))); } newTokenText = this._editingData.y + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; } } } else if (event.key === "Delete" || event.key === 'Backspace') { event.preventDefault(); if (endToken.idx !== token.idx) { if (this.notNull) { this.$text.value = (0,datetime.formatDateTime)(new Date(Math.min(this.max.getTime(), Math.max(this.min.getTime(), new Date().getTime()))), this._format); } else { this.$text.value = this._format; } this.$text.select(); } else { if (this.notNull) { switch (token.ident) { case 'y': case 'yyyy': token.replace((0,utils.zeroPadding)(new Date().getFullYear(), token.ident.length), true); break; case 'w': case 'ww': case 'Q': case 'QQ': token.replace((0,utils.zeroPadding)(1, token.ident.length), true); break; case 'M': case 'MM': case 'd': case 'dd': token.replace((0,utils.zeroPadding)(1, token.ident.length), true); break; default: token.replace(token.ident, true); } } else { token.replace(token.ident, true); } if (event.key === "Delete") this._editNextToken(); else this._editPrevToken(); } } else if (event.key === "Enter" || event.key === 'Tab') { this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(event); } else if (event.ctrlKey) { switch (event.key) { case 'a': case 'A': break; case 'c': case 'C': break; case 'x': case 'X': this.domSignal.once('clear_value', function () { this.$text.value = this._format; this.$text.select(); }.bind(this)); this.domSignal.emit('clear_value'); break; default: event.preventDefault(); } } else if (event.key.match(/^[0-9]$/g)) { event.preventDefault(); var dVal = parseInt(event.key); if (this._editingData.state === DateInput2_STATE_NEW) { switch (token.ident) { case 'dd': case 'd': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = DateInput2_STATE_EDITED; this._editingData.d = dVal; if (dVal > 3) { this._editNextToken(); } break; case 'w': case 'ww': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = DateInput2_STATE_EDITED; this._editingData.d = dVal; if (dVal > 6) { this._editNextToken(); } break; case 'Q': case 'QQ': dVal = Math.max(1, Math.min(dVal, 4)); token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = DateInput2_STATE_EDITED; this._editingData.Q = dVal; this._editNextToken(); break; case 'MM': case 'M': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = DateInput2_STATE_EDITED; this._editingData.M = dVal; if (dVal > 1) { this._editNextToken(); } break; case 'yyyy': case 'y': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = DateInput2_STATE_EDITED; this._editingData.state_num = 1; break; } } else { switch (token.ident) { case 'dd': case 'd': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(31, dVal)); this._editingData.d = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'ww': case 'w': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(54, dVal)); this._editingData.d = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'Q': case 'QQ': dVal = Math.max(1, Math.min(dVal, 4)); token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.Q = dVal; this._editNextToken(); break; case 'MM': case 'M': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(12, dVal)); this._editingData.M = dVal - 1; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'yyyy': case 'y': dVal = (parseInt(token.text.replace(/^./, '')) || 0) * 10 + dVal; this._editingData.state_num++; if (this._editingData.state_num >= 4) { // dVal = Math.max(1890, Math.min(2089, dVal)); token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); } else { token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); } break; } } } else { event.preventDefault(); } }; DateInput2.eventHandler.mouseUpInput = js_DateTimeInput.eventHandler.mouseUpInput; DateInput2.eventHandler.mouseDownInput = js_DateTimeInput.eventHandler.mouseDownInput; DateInput2.eventHandler.dblclickInput = js_DateTimeInput.eventHandler.dblclickInput; DateInput2.eventHandler.inputBlur = js_DateTimeInput.eventHandler.inputBlur; DateInput2.eventHandler.calendarSelect = function (value) { var oldV = this._explicit(this._lastValue); this.value = value; var newV = this._explicit(this._value); if (!oldV !== !newV || (oldV && newV && (0,datetime.compareDate)(oldV, newV) !== 0)) { this.emit('change', { type: 'change', target: this, value: this._value }, this); } }; DateInput2.eventHandler.clickCalendarBtn = function () { if (this.readOnly) return; this._attachCalendar(); }; DateInput2.eventHandler.clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.share.$calendar, event)) return; this._releaseCalendar(); }; DateInput2.eventHandler.calendarPick = function (event) { this._applyValue(event.value); this._notifyIfChange(event.originEvent || event); this._releaseCalendar(); }; DateInput2.property = {}; DateInput2.property.value = { set: function (value) { value = this._normalizeValue(value); if (!value && this.notNull) value = (0,datetime.beginOfDay)(new Date()); this._value = value; this._lastValue = this._explicit(this._value); this._loadTextFromValue(); }, get: function () { return this._explicit(this._value); } }; /** * not support MMM, MMMM, support number only * @type {DateInput2} */ DateInput2.property.format = { set: function (value) { value = value || 'dd/MM/yyyy'; value = value.replace(new RegExp(datetime.DATE_TIME_TOKEN_RGX.source, 'g'), function (full) { if (full === 'mm' || full === 'MMM' || full === 'MMMM' || full === 'mmm' || full === 'mmmm') return 'MM'; if (full === 'm') return 'M'; return full; }); if (!this._verifyFormat(value)) { value = 'dd/MM/yyyy'; console.error("Invalid date format: " + value); } this._format = value; this._formatTokens = this._format.match(new RegExp(datetime.DATE_TIME_TOKEN_RGX.source, 'g')) || []; this.value = this.value;//update var testData = new Date(2000, 9, 22, 12, 12, 22, 335); testData = (0,datetime.formatDateTime)(testData, value); this.addStyle('--format-width', Math.ceil((0,utils.measureText)(testData.replace(/[a-z0-9]/g, 'M'), '14px arial').width / 14 * 2) / 2 + 'em'); this.attr('data-format', value); }, 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'); this.$text.disabled = value; }, get: function () { return this.$input.disabled; } }; DateInput2.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); this.$input.readOnly = true; } else { this.removeClass('as-read-only'); this.$input.readOnly = false; } }, get: function () { return this.hasClass('as-read-only'); } }; DateInput2.property.text = { get: function () { return this.$input.value; } }; DateInput2.property.calendarLevel = { /*** * @memberOf DateInput2 * @name calendarLevel * @type {number} */ get: function () { if (this._formatTokens.indexOf('d') >= 0 || this._formatTokens.indexOf('dd') >= 0) return 'day'; if (this._formatTokens.indexOf('w') >= 0 || this._formatTokens.indexOf('ww') >= 0) return 'week'; if (this._formatTokens.indexOf('M') >= 0 || this._formatTokens.indexOf('MM') >= 0) return 'month'; if (this._formatTokens.indexOf('Q') >= 0 || this._formatTokens.indexOf('QQ') >= 0) return 'quarter'; return 'year'; } }; DateInput2.property.min = { set: function (value) { this._min = this._normalizeValue(value) || new Date(1890, 0, 1); this._lastValue = this._explicit(this._value); this._applyValue(this._lastValue); }, get: function () { return this._min; } }; DateInput2.property.max = { set: function (value) { this._max = this._normalizeValue(value) || new Date(2090, 0, 1); this._lastValue = this._explicit(this._value); this._applyValue(this._lastValue); }, get: function () { var max = this._max; var min = this.min; if ((0,datetime.compareDate)(min, max) > 0) return min; return max; } }; DateInput2.property.notNull = { set: function (value) { if (value) { this.addClass('as-must-not-null'); if (!this.value) this.value = new Date(); } else { this.removeClass('as-must-not-null'); } this.value = this.value;//update }, get: function () { return this.hasClass('as-must-not-null'); } }; DateInput2.prototype.share = { /*** * @type {ChromeCalendar} */ $calendar: null, /*** * @type {Follower} */ $follower: null, /*** * @type {DateInput2} */ $holdingInput: null }; DateInput2.prototype._prepareCalendar = function () { if (this.share.$calendar) return; this.share.$calendar = DateInput2_({ tag: 'chromecalendar', class: ['as-date-input-calendar', 'as-dropdown-box-common-style'] }); if (this.share.$calendar.$attachHook) this.share.$calendar.$attachHook.cancelWaiting(); this.share.$follower = DateInput2_({ tag: 'follower', class: 'as-date-input-follower', child: this.share.$calendar }); this.share.$follower.cancelWaiting(); }; DateInput2.prototype._attachCalendar = function () { this._prepareCalendar(); if (this.share.$holdingInput) this.share.$holdingInput._releaseCalendar(); this.share.$follower.addTo(document.body); this.share.$follower.addStyle('visibility', 'hidden'); this.share.$holdingInput = this; this.share.$follower.followTarget = this; this.share.$follower.sponsorElement = this; this.share.$calendar.level = this.calendarLevel; this.share.$calendar.startDayOfWeek = this.startDayOfWeek || 0; this.share.$calendar.min = this._min; this.share.$calendar.max = this._max; this.share.$calendar.on('pick', this.eventHandler.calendarPick); this.share.$calendar.selectedDates = this.value ? [this.value] : []; if (this.share.$calendar.$attachHook) this.share.$calendar.$attachHook.emit('attached'); this.share.$calendar.sync = this.share.$calendar.sync.then(() => { this.share.$calendar.viewDate = this.value ? this.value : new Date(Math.max(this._min.getTime(), Math.min(this._max.getTime(), new Date().getTime()))); }); setTimeout(function () { document.body.addEventListener('click', this.eventHandler.clickOut); this.share.$follower.removeStyle('visibility'); }.bind(this), 5); this.$calendarBtn.off('click', this.eventHandler.clickCalendarBtn); }; DateInput2.prototype._releaseCalendar = function () { if (this.share.$holdingInput !== this) return; this.share.$calendar.off('pick', this.eventHandler.calendarPick); this.share.$follower.remove(); document.body.removeEventListener('click', this.eventHandler.clickOut); setTimeout(function () { this.$calendarBtn.on('click', this.eventHandler.clickCalendarBtn); }.bind(this), 5) this.share.$holdingInput = null; }; ACore/* default.install */.Z.install(DateInput2); /* harmony default export */ const js_DateInput2 = (DateInput2); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/draggablestack.css var draggablestack = __webpack_require__(5166); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Hanger.js var Hanger = __webpack_require__(655); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate = __webpack_require__(1334); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Vec2.js var Vec2 = __webpack_require__(557); ;// 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 (0,ACore._)('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/* default.install */.Z.install(PositionTracker); /* harmony default export */ const js_PositionTracker = (PositionTracker); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Rectangle.js var Rectangle = __webpack_require__(2759); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DraggableVStack.js var DraggableVStack_ = ACore/* default._ */.Z._; var DraggableVStack_$ = ACore/* default.$ */.Z.$; /*** * @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 = (0,stringGenerate.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/* default.isDomNode */.ZP.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 Vec2/* default */.Z(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 Vec2/* default */.Z(this._dragData.eltBound.left, this._dragData.eltBound.top)); this._dragData.eltRelative = new Vec2/* default */.Z(this._dragData.eltBound.left, this._dragData.eltBound.top).sub(new Vec2/* default */.Z(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 Vec2/* default */.Z(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/* default.getScreenSize */.ZP.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 += (0,utils.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 = Rectangle/* default.fromClientRect */.Z.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/* default.traceOutBoundingClientRect */.ZP.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/* default.install */.Z.install(DraggableVStack); /* harmony default export */ const js_DraggableVStack = (DraggableVStack); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DraggableHStack.js var DraggableHStack_ = ACore/* default._ */.Z._; var DraggableHStack_$ = ACore/* default.$ */.Z.$; /*** * @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 = Rectangle/* default.fromClientRect */.Z.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 Vec2/* default */.Z(event.clientX, event.clientY); var elt = this._findDirectChild(event.target); var childBounds = Array.prototype.map.call(this.childNodes, function (e) { return Rectangle/* default.fromClientRect */.Z.fromClientRect(e.getBoundingClientRect()); }); var eltIdx = Array.prototype.indexOf.call(this.childNodes, elt); var eltBound = childBounds[eltIdx]; var eltMouseOffset = mousePos.sub(new Vec2/* default */.Z(eltBound.x, eltBound.y)); this._dragData = { mouseStartPos: mousePos, mousePos: mousePos, bound: Rectangle/* default.fromClientRect */.Z.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 Vec2/* default */.Z(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.hasClass('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/* default.install */.Z.install(DraggableHStack); /* harmony default export */ const js_DraggableHStack = (DraggableHStack); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/droppanel.css var droppanel = __webpack_require__(8133); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ExpTree.js var ExpTree = __webpack_require__(2917); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DropPanel.js var DropPanel_ = ACore/* default._ */.Z._; var DropPanel_$ = ACore/* default.$ */.Z.$; /** * @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/* default.drillProperty */.ZP.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.hasClass('show'); } }; ACore/* default.install */.Z.install(DropPanel); /* harmony default export */ const js_DropPanel = (DropPanel); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DropPanelStack.js var DropPanelStack_ = ACore/* default._ */.Z._; var DropPanelStack_$ = ACore/* default.$ */.Z.$; /** * @extends AElement * @constructor */ function DropPanelStack() { var res = this; this.$attachHook = DropPanelStack_('attachhook').on('error', function () { Dom/* default.addToResizeSystem */.ZP.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.hasClass && child.hasClass('absol-drop-panel')) { childBound = child.getBoundingClientRect(); sumHeight += childBound.height; } } return bound.height - sumHeight; }; DropPanelStack.prototype.addChild = function (child) { var self = this; if (child.hasClass('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/* default.install */.Z.install('droppanelstack', DropPanelStack); /* harmony default export */ const js_DropPanelStack = (DropPanelStack); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/editabletext.css var editabletext = __webpack_require__(4854); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/EditableText.js var EditableText_ = ACore/* default._ */.Z._; var EditableText_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.drillProperty */.ZP.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/* default.install */.Z.install(EditableText); /* harmony default export */ const js_EditableText = (EditableText); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiPicker.js var EmojiPicker = __webpack_require__(2948); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Sprite.js var Sprite = __webpack_require__(9950); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/FlexiconButton.js var FlexiconButton = __webpack_require__(3929); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/flexiconinput.css var flexiconinput = __webpack_require__(9365); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/FlexiconInput.js var FlexiconInput_ = ACore/* default._ */.Z._; var FlexiconInput_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.drillProperty */.ZP.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; } }; FlexiconInput.property.readOnly = { set: function (value) { value = !!value; this.$input.readOnly = value; if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; ACore/* default.install */.Z.install(FlexiconInput); /* harmony default export */ const js_FlexiconInput = (FlexiconInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/frame.css var css_frame = __webpack_require__(1427); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/Frame.js var Frame_ = ACore/* default._ */.Z._; var Frame_$ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function Frame() { this.$parent = null;// FrameView or TabView //adapter (0,utils.forwardEvent)(this, 'inactive', 'deactive'); } Frame.tag = 'frame'; Frame.render = function () { return Frame_({ class: 'absol-frame', attr: { id: (0,stringGenerate.randomIdent)(12), }, extendEvent: ['attached', 'detached', 'active', 'inactive']// inactive 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/* default.install */.Z.install(Frame); /* harmony default export */ const js_Frame = (Frame); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/frameview.css var frameview = __webpack_require__(7027); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/FrameView.js var FrameView_ = ACore/* default._ */.Z._; var FrameView_$ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function FrameView() { this.$containers = []; //adapt (0,utils.forwardEvent)(this, 'inactiveframe', 'deactiveframe'); (0,utils.forwardMethod)(this, 'notifyDeactiveFrame', 'notifyInactiveFrame'); } FrameView.tag = 'frameview'; FrameView.render = function () { return FrameView_({ class: 'absol-frame-view', extendEvent: ['activeframe', 'inactiveframe'] }); }; FrameView.prototype.addChild = function (elt) { if (elt.hasClass && elt.hasClass('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.hasClass && elt.hasClass('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.hasClass && elt.hasClass('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.hasClass('absol-active')) { ctnElt.addClass('absol-active'); this.notifyActiveFrame(elt); } // else do nothing } else { if (ctnElt.hasClass('absol-active')) { ctnElt.removeClass('absol-active'); this.notifyInactiveFrame(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.notifyInactiveFrame = function (frameElt, originEvent) { this.emit('inactiveframe', { type: 'inactiveframe', 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/* default.install */.Z.install( FrameView); /* harmony default export */ const js_FrameView = (FrameView); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TabFrame.js var TabFrame_$ = ACore/* default.$ */.Z.$; var TabFrame_ = ACore/* default._ */.Z._; /** * @extends {AElement} * @constructor */ function TabFrame() { this.on('remove', this._onRemove); } 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.property.preventClosing = { set: function (value) { if (value) { this.addClass('as-prevent-closing'); } else { this.removeClass('as-prevent-closing'); } if (this.$parent && this.$parent.notifyUpdatePreventClosing) { this.$parent.notifyUpdatePreventClosing(this); } }, get: function () { return this.hasClass('as-prevent-closing'); } }; 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(); } }; TabFrame.prototype._onRemove = function () { /* bug auto revoke setTimeout(() => { if (!this.isDescendantOf(document.body)) { this.revokeResource(); } }, 100); */ }; TabFrame.prototype.revokeResource = function () { this.off('remove', this._onRemove); while (this.lastChild && false) { if (location.href.indexOf('localhost') >= 0 || location.href.indexOf('lab.') >= 0)//for testing (0,utils.revokeResource)(this.lastChild); this.lastChild.remove(); } }; ACore/* default.install */.Z.install(TabFrame); /* harmony default export */ const js_TabFrame = (TabFrame); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TabView.js + 2 modules var TabView = __webpack_require__(7); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/singlepage.css var singlepage = __webpack_require__(6813); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/ResizeSystem.js var ResizeSystem = __webpack_require__(6700); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SinglePage.js var SinglePage_ = ACore/* default._ */.Z._; var SinglePage_$ = ACore/* default.$ */.Z.$; var warned = false; /*** * @extends TabFrame * @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/* default.update */.Z.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/* default.addToResizeSystem */.ZP.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(); this._prevHeaderHeight = headerBound.height; } if (this.$footer) { var footerBound = this.$footer.getBoundingClientRect(); this.$viewport.addStyle('padding-bottom', footerBound.height + 'px'); } this.addStyle('--single-page-scroller-height', this.$scroller.clientHeight + 'px'); if (this.isSupportedEvent('sizechange')) this.emit('sizechange', { type: 'sizechange', target: this }, this); }; SinglePage.prototype.isHeader = function (elt) { return elt && elt.classList && elt.classList.contains('absol-single-page-header'); }; SinglePage.prototype.updateLayoutStyle = function () { if (this.$header) { this.addClass('as-has-header'); } else { this.removeClass('as-has-header'); } }; SinglePage.prototype.addChild = function (elt) { if (this.isHeader(elt)) { if (this.$header) { this.$header.remove(); } if (this.firstChild) { this.addChildBefore(elt, this.firstChild); } else { this.appendChild(elt); } this.$header = SinglePage_$(elt); this.updateLayoutStyle(); this.updateSize(); } else if (elt.classList.contains('absol-single-page-footer')) { this.$viewport.addChild(elt); this.$footer = SinglePage_$(elt); this.updateLayoutStyle(); 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/* default.install */.Z.install(SinglePage); /* harmony default export */ const js_SinglePage = (SinglePage); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/hexasectionlabel.css var hexasectionlabel = __webpack_require__(3964); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/HexaSectionLabel.js var HexaSectionLabel_ = ACore/* default._ */.Z._; var HexaSectionLabel_$ = ACore/* default.$ */.Z.$; var HexaSectionLabel_g = Svg/* default.ShareInstance._ */.ZP.ShareInstance._; var HexaSectionLabel_$g = Svg/* default.ShareInstance.$ */.ZP.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/* default.addToResizeSystem */.ZP.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/* default.install */.Z.install(HexaSectionLabel); /* harmony default export */ const js_HexaSectionLabel = (HexaSectionLabel); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/vruler.css var vruler = __webpack_require__(9786); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/VRuler.js var VRuler_ = ACore/* default._ */.Z._; var VRuler_$ = ACore/* default.$ */.Z.$; /** * @extends AElement * @constructor */ function VRuler() { var self = this; this.$attachHook = VRuler_('attachhook').on('error', function () { this.updateSize = self.update.bind(self); Dom/* default.addToResizeSystem */.ZP.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'; /** * @type {number} * @name major * @memberof VRuler# */ /** * @type {number} * @name spacing * @memberof VRuler# */ /** * @type {boolean} * @name inverse * @memberof VRuler# */ } VRuler.tag = 'vruler'; VRuler.render = function () { return VRuler_({ class: 'as-vruler' }); }; VRuler.prototype.revokeResource = function () { this.$measureTarget = null; this.$attachHook.cancelWaiting(); (0,utils.revokeResource)(this.$lines); (0,utils.revokeResource)(this.$numbers); this.clearChild(); this.revokeResource = noop/* default */.Z; } 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() || 14; var measureBound; var bound = this.getBoundingClientRect(); if (!bound.width ||!bound.height) return; 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 startOffset = (measureBound[this._valueFloat] - contentBound[this._valueFloat]) * (this.inverse ? -1 : 1) % this._spacing; if (startOffset < 0) startOffset += this._spacing; var lineIndexOffset = Math.round(((contentBound[this._valueFloat] - measureBound[this._valueFloat]) * (this.inverse ? -1 : 1) + startOffset) / this._spacing); var lineCount = Math.floor((contentBound.height - startOffset) / 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 + lineIndexOffset) % this._major == 0) { lineElt.addClass('major'); } else { lineElt.removeClass('major'); } lineElt.addStyle(this._valueFloat, startOffset + this._spacing * i - 0.5 + 'px'); } try { while (this._viewingLineCount < lineCount) { this.$lines[this._viewingLineCount++].addTo(this); } while (this._viewingLineCount > lineCount) { this.$lines[--this._viewingLineCount].remove(); } } catch (e) { } var numberCount = Math.floor((lineCount + lineIndexOffset - 1) / this._major) - Math.ceil(lineIndexOffset / this._major) + 1; while (this.$numbers.length < numberCount) { this.$numbers.push(VRuler_('.as-vruler-major-number')); } var numberElt; var number; var majorStartOfset = startOffset; if (lineIndexOffset > 0) { majorStartOfset += (this._major - lineIndexOffset % this._spacing) * this._spacing; } else { majorStartOfset += (this._major - (this._spacing + lineIndexOffset % this._spacing)) * this._spacing; } for (i = 0; i < numberCount; ++i) { number = (Math.ceil(lineIndexOffset / 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); } try { while (this._viewingNumberCount > numberCount) { this.$numbers[--this._viewingNumberCount].remove(); } } catch (e) { } }; 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/* default.install */.Z.install(VRuler); /* harmony default export */ const js_VRuler = (VRuler); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/hruler.css var hruler = __webpack_require__(1138); // EXTERNAL MODULE: ./node_modules/absol/src/DataStructure/Object.js var DataStructure_Object = __webpack_require__(2722); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/HRuler.js var HRuler_ = ACore/* default._ */.Z._; var HRuler_$ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function HRuler() { this.$attachHook = HRuler_('attachhook').on('attached', () => { this.requestUpdateSize = this.update.bind(this); ResizeSystem/* default.add */.Z.add(this.$attachHook); this.requestUpdateSize(); }).addTo(this); this.$attachHook.requestRevokeResource = this.revokeResource.bind(this); this.$lines = []; this.$numbers = []; this._viewingNumberCount = 0; this._viewingLineCount = 0; this._spacing = 10; this._major = 10; this.$measureTarget = null; this._valueFloat = 'left'; /** * @type {number} * @name major * @memberof HRuler# */ /** * @type {number} * @name spacing * @memberof HRuler# */ /** * @type {boolean} * @name inverse * @memberof HRuler# */ } 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(); if (!bound.width || !bound.height) return; 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 startOffset = (measureBound[this._valueFloat] - contentBound[this._valueFloat]) * (this.inverse ? -1 : 1) % this._spacing; if (startOffset < 0) startOffset += this._spacing; var lineIndexOffset = Math.round(((contentBound[this._valueFloat] - measureBound[this._valueFloat]) * (this.inverse ? -1 : 1) + startOffset) / this._spacing); var lineCount = Math.floor((contentBound.width - startOffset) / this._spacing) + 1; lineCount = Math.max(0, lineCount); 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 + lineIndexOffset) % this._major === 0) { lineElt.addClass('major'); } else { lineElt.removeClass('major'); } lineElt.addStyle(this._valueFloat, startOffset + 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 + lineIndexOffset - 1) / this._major) - Math.ceil(lineIndexOffset / this._major) + 1; while (this.$numbers.length < numberCount) { this.$numbers.push(HRuler_('.as-hruler-major-number')); } var numberElt; var number; var majorStartOfset = startOffset; if (lineIndexOffset > 0) { majorStartOfset += (this._major - lineIndexOffset % this._spacing) * this._spacing; } else { majorStartOfset += (this._major - (this._spacing + lineIndexOffset % this._spacing)) * this._spacing; } for (i = 0; i < numberCount; ++i) { number = (Math.ceil(lineIndexOffset / 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.prototype.revokeResource = function () { this.$attachHook.cancelWaiting(); this.$measureTarget = null; (0,DataStructure_Object/* revokeResource */.bU)(this.$lines); (0,DataStructure_Object/* revokeResource */.bU)(this.$numbers); this.clearChild(); this.revokeResource = noop/* default */.Z; }; 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/* default.install */.Z.install(HRuler); /* harmony default export */ const js_HRuler = (HRuler); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/IconSprite.js var IconSprite_ = ACore/* default._ */.Z._; var IconSprite_$ = ACore/* default.$ */.Z.$; 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/* default.install */.Z.install(IconSprite); /* harmony default export */ const js_IconSprite = (IconSprite); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/linearcolorbar.css var linearcolorbar = __webpack_require__(3262); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/LinearColorBar.js var LinearColorBar_ = ACore/* default._ */.Z._; var LinearColorBar_$ = ACore/* default.$ */.Z.$; var LinearColorBar_g = Svg/* default.ShareInstance._ */.ZP.ShareInstance._; var LinearColorBar_$g = Svg/* default.ShareInstance.$ */.ZP.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' } }; (0,utils.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/* default.addToResizeSystem */.ZP.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/* default.install */.Z.install(LinearColorBar); /* harmony default export */ const js_LinearColorBar = (LinearColorBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/mediainput.css var mediainput = __webpack_require__(3475); // EXTERNAL MODULE: ./node_modules/absol/src/Converter/file.js var Converter_file = __webpack_require__(4574); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Text.js var Text = __webpack_require__(5827); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MediaInput.js var MediACore = new Dom/* default */.ZP(); MediACore.install(ACore/* default */.Z); var MediaInput_ = MediACore._; var MediaInput_$ = MediACore.$; function 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); } (0,Text.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/* default.hitElement */.ZP.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(); (0,Text.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 (0,Text.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) { 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) { 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 { (0,Text.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 = (0,Converter_file.blobToFile)(blob); var buffer = (0,Converter_file.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/* default.imageToCanvas */.ZP.imageToCanvas(img).then(function (canvas) { var dataURI = canvas.toDataURL(); var blob = (0,Converter_file.dataURItoBlob)(dataURI); var file = (0,Converter_file.blobToFile)(blob); var buffer = (0,Converter_file.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; (0,Text.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; (0,Text.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/* default.drillProperty */.ZP.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/* default.drillProperty */.ZP.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/* default.ShareInstance._ */.ZP.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/* default.install */.Z.install(MediaInput); /* harmony default export */ const js_MediaInput = (MediaInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/messageinput/MessageInput.js + 2 modules var MessageInput = __webpack_require__(4877); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/numberinput.css var numberinput = __webpack_require__(5699); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/numberinput/NITextController.js /*** * * @param {NumberInput} elt * @constructor */ function NITextController(elt) { this.elt = elt; /*** * * @type {HTMLInputElement|AElement} */ this.$input = this.elt.$input; Object.keys(NITextController.prototype).forEach(key => { if (key.startsWith('on')) this[key] = this[key].bind(this); }); this.elt.$input.on('keydown', this.onKeyDown) .on('paste', this.onKeyDown) .on('blur', this.onBlur); } NITextController.prototype.estimateWidthBy = function (text) { if (this.elt.hasClass('as-pressing')) return; var bound = this.elt.getBoundingClientRect(); var width = (0,Text.measureText)(text, this.$input.getComputedStyleValue('font')).width; this.elt.addStyle('--text-width', width + 'px'); var newBound = this.elt.getBoundingClientRect(); if (newBound.width !== bound.width) ResizeSystem/* default.requestUpdateUpSignal */.Z.requestUpdateUpSignal(this.elt, true); }; NITextController.prototype.flushTextToValue = function () { var thousandsSeparator = this.elt.thousandsSeparator || ''; var decimalSeparator = this.elt.decimalSeparator; var text = this.$input.value; var floatText = text.split(thousandsSeparator).join('').split(decimalSeparator).join('.'); this.elt._value = parseFloat(floatText); if (!(0,utils.isRealNumber)(this.elt._value)) this.elt._value = null; this.elt._value = this.elt.value;//normalize value }; NITextController.prototype.flushValueToText = function () { var formatter; var opt = Object.assign({}, this.elt._format); var value = this.elt.value; var text, parts; if (value === null) { text = ''; } else if (opt.locales === 'none') { if (opt.maximumFractionDigits === 20) { text = value + ''; } else if (opt.maximumFractionDigits === opt.minimumIntegerDigits) { text = value.toFixed(opt.maximumFractionDigits); } else { text = value + ''; parts = text.split('.'); parts[1] = parts[1] || ''; if (parts[1].length < opt.minimumIntegerDigits) { text = value.toFixed(opt.minimumIntegerDigits); } } } else { formatter = new Intl.NumberFormat(this.elt._format.locales, opt); text = formatter.format(value); } this.$input.value = text; this.estimateWidthBy(text); }; NITextController.prototype.reformat = function () { var thousandsSeparator = this.elt.thousandsSeparator || ''; var decimalSeparator = this.elt.decimalSeparator; var caretPos = this.$input.selectionEnd; var value = this.$input.value; var parts = value.split(decimalSeparator); var caretWTSPos = value.substring(0, caretPos).split(thousandsSeparator).join('').length; parts[0] = parts[0].split('').filter(x => x.match(/[0-9\-]/)).reduce((ac, c, i, arr) => { ac += c; if ((i + 1 < arr.length) && ((arr.length - i) % 3 === 1) && arr[i] !== '-') { ac += thousandsSeparator; } return ac; }, ''); if (parts[1]) parts[1] = parts[1].split('').filter(x => x.match(/[0-9]/)).join(''); var newValue = parts.join(decimalSeparator); var newCaretPos = 0; var counter = 0; for (newCaretPos = 0; newCaretPos < newValue.length && counter < caretWTSPos; ++newCaretPos) { if (newValue[newCaretPos].match(/[0-9\-]/) || newValue[newCaretPos] === decimalSeparator) { counter++; } } this.$input.value = newValue; this.$input.setSelectionRange(newCaretPos, newCaretPos); this.estimateWidthBy(newValue); }; NITextController.prototype.onBlur = function () { this.flushValueToText(); this.elt.notifyChanged({ by: 'blur' }); } /*** * @param {KeyboardEvent|ClipboardEvent|{}} event * @param {boolean=} event */ NITextController.prototype.onKeyDown = function (event, dontInsert) { var key = event.type === 'keydown' ? (0,keyboard/* keyboardEventToKeyBindingIdent */.Ej)(event) : ''; if ((key.length === 1 && !key.match(/[0-9.,\-]/)) || key.match(/^shift-.$/)) { event.preventDefault(); return; } var thousandsSeparator = this.elt.thousandsSeparator; var decimalSeparator = this.elt.decimalSeparator; var value = this.$input.value; var sStart = this.$input.selectionStart; var sEnd = this.$input.selectionEnd; var sDir = this.$input.selectionDirection; var onKeys = {}; onKeys.unidentified = () => { var oldText = this.$input.value; setTimeout(() => { var newText = this.$input.value; if (oldText === newText) return; var key = newText[sStart]; if (!key) return;//todo var fakeEvent = { type: 'keydown', preventDefault: noop/* default */.Z, key: key } if (key.match(/^[0-9.]$/)) { this.onKeyDown(fakeEvent, true); } else { this.$input.value = oldText; this.$input.setSelectionRange(sStart, sStart); this.onKeyDown(fakeEvent); } }, 10); }; onKeys.process = () => { setTimeout(() => { this.flushTextToValue(); }, 10); } onKeys.paste = () => { var clipboardData = event.clipboardData || window.clipboardData; var pastedData = clipboardData.getData('Text'); var hasSeparator = value.indexOf(decimalSeparator) >= 0; pastedData = pastedData.split('').filter(c => { if (c.match(/[0-9]/)) return true; if (!hasSeparator && c === hasSeparator) { hasSeparator = true; return true; } }).join(''); if (this.elt.readOnly) return; if (!dontInsert) { this.$input.value = value.substring(0, sStart) + pastedData + value.substring(sEnd); this.$input.setSelectionRange(sStart + pastedData.length, sStart + pastedData.length); } this.reformat(); this.flushTextToValue(); }; onKeys.arrowleft = () => { if (sStart === sEnd) { if (value[sStart - 2] === thousandsSeparator) { this.$input.setSelectionRange(sStart - 2, sStart - 2); } else if (sStart > 0) { this.$input.setSelectionRange(sStart - 1, sStart - 1); } } else { this.$input.setSelectionRange(sStart, sStart); } }; onKeys['shift-arrowleft'] = () => { var newSStart; var newSEnd; if (sDir === 'backward') { newSStart = sEnd; newSEnd = sStart - 1; } else { newSStart = sStart; newSEnd = sEnd - 1; } if (value[newSEnd - 1] === thousandsSeparator) newSEnd--; newSEnd = Math.max(0, newSEnd); if (newSStart <= newSEnd) { this.$input.setSelectionRange(newSStart, newSEnd, "forward"); } else { this.$input.setSelectionRange(newSEnd, newSStart, "backward"); } }; onKeys.arrowright = () => { if (sStart === sEnd) { if (value[sStart] === thousandsSeparator) { this.$input.setSelectionRange(sStart + 2, sStart + 2); } else if (sStart < value.length) { this.$input.setSelectionRange(sStart + 1, sStart + 1); } } else { this.$input.setSelectionRange(sStart, sStart); } }; onKeys['shift-arrowright'] = () => { var newSStart; var newSEnd; if (sDir === 'backward') { newSStart = sEnd; newSEnd = sStart + 1; } else { newSStart = sStart; newSEnd = sEnd + 1; } if (value[newSEnd - 1] === thousandsSeparator) newSEnd++; newSEnd = Math.min(value.length, newSEnd); if (newSStart <= newSEnd) { this.$input.setSelectionRange(newSStart, newSEnd, "forward"); } else { this.$input.setSelectionRange(newSEnd, newSStart, "backward"); } }; onKeys.number = () => { if (this.elt.readOnly) return; if (!dontInsert) { this.$input.value = value.substring(0, sStart) + key + value.substring(sEnd); this.$input.setSelectionRange(sStart + 1, sStart + 1); } this.reformat(); this.flushTextToValue(); }; onKeys['-'] = () => { if (this.elt.readOnly) return; if (value.indexOf('-') >= 0 || sStart > 0) return; this.$input.value = '-' + value.substring(sEnd); this.$input.setSelectionRange(1, 1); this.reformat(); this.flushTextToValue(); }; onKeys.backspace = () => { if (this.elt.readOnly) return; var delStart, delEnd; if (sStart === sEnd) { if (sStart > 0) { delStart = sStart - 1; delEnd = sStart; } } else { delStart = sStart; delEnd = sEnd; } if (delStart === undefined || delEnd === undefined) return; this.$input.value = value.substring(0, delStart) + value.substring(delEnd); this.$input.setSelectionRange(delStart, delStart); this.reformat(); this.flushTextToValue(); }; onKeys.enter = () => { if (this.elt.readOnly) return; this.flushValueToText(); this.$input.setSelectionRange(this.$input.value.length, this.$input.value.length); this.elt.notifyChanged({ by: 'enter' }); }; onKeys.delete = () => { if (this.elt.readOnly) return; var delStart, delEnd; if (sStart === sEnd) { if (sStart < value.length) { delStart = sStart; delEnd = sStart + 1; if (value[delStart] === thousandsSeparator) delEnd++; } } else { delStart = sStart; delEnd = sEnd; } if ((0,utils.isNaturalNumber)(delStart) && (0,utils.isNaturalNumber)(delEnd)) { this.$input.value = value.substring(0, delStart) + value.substring(delEnd); this.$input.setSelectionRange(delStart, delStart); this.reformat(); this.flushTextToValue(); } }; onKeys.decimalSeparator = () => { if (this.elt.readOnly) return; var idx = value.indexOf(decimalSeparator); if (idx >= 0) { if (idx < sStart) { this.$input.value = value.substring(0, sStart).replace(decimalSeparator, '') + decimalSeparator + value.substring(sEnd); this.$input.setSelectionRange(sStart, sStart); } else if (idx < sEnd) { this.$input.value = value.substring(0, sStart) + decimalSeparator + value.substring(sEnd); this.$input.setSelectionRange(sStart + 1, sStart + 1); } else { this.$input.value = value.substring(0, sStart) + decimalSeparator + value.substring(sEnd).replace(decimalSeparator, ''); this.$input.setSelectionRange(sStart + 1, sStart + 1); } } else { this.$input.value = value.substring(0, sStart) + decimalSeparator + value.substring(sEnd); this.$input.setSelectionRange(sStart + 1, sStart + 1); } this.reformat(); this.flushTextToValue(); }; if (key === 'arrowup') { if (sStart === 0 && sEnd === 0) { this.elt.nextStep(); event.preventDefault(); this.$input.setSelectionRange(0, 0); } } else if (key === 'arrowdown') { if (sStart === value.length && sEnd === value.length) { this.elt.prevStep(); event.preventDefault(); this.$input.setSelectionRange(this.$input.value.length, this.$input.value.length); } } else if (key === 'ctrl-x') { onKeys.delete(); } else if (onKeys[event.type]) { event.preventDefault(); onKeys[event.type](); } else if (onKeys[key]) { event.preventDefault(); onKeys[key](); } else if (key.match(/^[0-9.]$/)) { event.preventDefault(); onKeys.number(); } else if (key === decimalSeparator) { event.preventDefault(); onKeys.decimalSeparator(); } }; /* harmony default export */ const numberinput_NITextController = (NITextController); // EXTERNAL MODULE: ./node_modules/absol/src/Math/int.js var Math_int = __webpack_require__(7988); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/numberinput/NumberInput.js var NumberInput_ = ACore/* default._ */.Z._; var NumberInput_$ = ACore/* default.$ */.Z.$; /*** * @typedef NumberInputFormat * @property {string} locales * @property {string|null} decimalSeparator * @property {string|null} thousandSeparator */ /*** * @extends AElement * @constructor */ function NumberInput() { /*** * * @type {HTMLInputElement|AElement} */ this.$input = NumberInput_$('input', this); // .on('keyup', this.eventHandler.keyup) // .on('paste', this.eventHandler.paste) // .on('change', this.eventHandler.change); this.$input.value = '0'; this._prevValue = 0;//to know whenever the value changed this._value = 0; this._max = Infinity; this._min = -Infinity; this._step = 1; this._format = this._makeDefaultFormat(); this.$upBtn = NumberInput_$('.absol-number-input-button-up-container button', this) .on('mousedown', this.eventHandler.mouseDownBtn.bind(this, 1)); this.$downBtn = NumberInput_$('.absol-number-input-button-down-container button', this) .on('mousedown', this.eventHandler.mouseDownBtn.bind(this, -1)); this.textCtrl = new numberinput_NITextController(this); this.$domSignal = NumberInput_('attachhook').addTo(this); this.$domSignal.once('attached', () => { this.textCtrl.estimateWidthBy(this.$input.value); }); this.dragCtrl = new NIDragController(this); /**** * @name min * @type {number} * @memberOf NumberInput# */ /**** * @name max * @type {number} * @memberOf NumberInput# */ /**** * @name value * @type {number} * @memberOf NumberInput# */ /**** * @name format * @type {NumberInputFormat} * @memberOf NumberInput# */ /**** * @name thousandsSeparator * @type {string|null} * @memberOf NumberInput# */ /**** * @name decimalSeparator * @type {string|null} * @memberOf NumberInput# */ /**** * @name readOnly * @type {boolean} * @memberOf NumberInput# */ /**** * @name disabled * @type {boolean} * @memberOf NumberInput# */ /**** * @name notNull * @type {boolean} * @memberOf NumberInput# */ /**** * @name stepper * @type {boolean} * @memberOf NumberInput# */ /** * @type {number} * @name step * @memberOf NumberInput# */ /** * @type {boolean} * @name valueDraggable * @memberOf NumberInput# */ this.valueDraggable = false; /*** * * @type {number|null} * @name rawValue */ } NumberInput.tag = 'NumberInput'.toLowerCase(); NumberInput.render = function () { return NumberInput_({ class: ['absol-number-input', 'as-must-not-null'], 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.prototype.addStyle = function (arg0, arg1) { if (arg0 === 'textAlign' || arg0 === 'text-align') { this.$input.addStyle(arg0, arg1); return this; } else { return AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } }; NumberInput.prototype._makeDefaultFormat = function () { var res = { locales: 'vi-VN', maximumFractionDigits: 20, minimumFractionDigits: 0, pow10: null//only apply if maximumFractionDigits === 0 }; if (window['systemconfig'] && window['systemconfig']['numberFormatLocales']) { res.locales = window['systemconfig']['numberFormatLocales']; } return res; }; /*****17 number********/ NumberInput.prototype.nextStep = function () { var ofs = 0; if ((0,utils.isRealNumber)(this.min)) { ofs = this.min; } var step = this.step; var idx = (0,utils.nearFloor)((this.value - ofs) / step, 0.01); this._value = Math.min(step * (idx + 1) + ofs, this.max); this._value = (0,Math_int.numberAutoFixed)(this._value, (step + '').length); this.textCtrl.flushValueToText(); }; NumberInput.prototype.prevStep = function () { var ofs = 0; if ((0,utils.isRealNumber)(this.min)) { ofs = this.min; } var step = this.step; var idx = (0,utils.nearFloor)((this.value - ofs) /step, 0.01); this._value = Math.max(step * (idx - 1) + ofs, this.min); this._value = (0,Math_int.numberAutoFixed)(this._value, (step + '').length); this.textCtrl.flushValueToText(); }; NumberInput.eventHandler = {}; NumberInput.eventHandler.mouseDownBtn = function (dir, event) { if (EventEmitter/* default.isMouseRight */.ZP.isMouseRight(event)) return; var self = this; var pressing = true; var timeout = -1; var i = 0; this.addClass('as-pressing'); var tick = () => { if (pressing) { if (i === 0 || i >= 4) { if (dir > 0) this.nextStep(); else this.prevStep(); if (i === 0) { this.notifyChanged({ by: 'press_button' }); } else { this.notifyChanged({ by: 'long_press_button' }); } } ++i; self.__pressingUpTimeout__ = setTimeout(tick, 100); } } var finish = (event) => { pressing = false; this.removeClass('as-pressing'); if (timeout >= 0) { clearTimeout(timeout); timeout = -1; } document.removeEventListener('mouseup', finish); document.removeEventListener('mouseleave', finish); if (event.type === 'mouseup') { this.$input.focus(); } this.notifyChanged({ originEvent: event, by: 'press_button' }); this.textCtrl.estimateWidthBy(this.$input.value); } document.addEventListener('mouseup', finish); document.addEventListener('mouseleave', finish); tick(); }; NumberInput.prototype.focus = function () { this.$input.focus(); } NumberInput.prototype.notifyChanged = function (option) { option = option || {}; var value = this.value; if (this._prevValue !== value) { this.emit('change', Object.assign({ target: this, value: value, previousValue: this._prevValue }, option || {}), this); this._prevValue = value; // this._prevBy = option.by; } }; NumberInput.property = {}; NumberInput.property.rawValue = { get: function () { return this._prevValue; } }; NumberInput.property.value = { set: function (value) { if (typeof value === "string") value = parseFloat(value); if (typeof (value) != 'number' || isNaN(value)) value = null; this._value = value; this._prevValue = this.value; this.textCtrl.flushValueToText(); }, get: function () { var value = this._value; if (value === null) { if (this.notNull) { value = 0; } else { return null; } } if (this._format.maximumFractionDigits === 0) { if ((0,utils.isNaturalNumber)(this._format.pow10)) { value = Math.round(value / Math.pow(10, this._format.pow10)) * Math.pow(10, this._format.pow10); } else { value = Math.round(value); } } else if (this._format.maximumFractionDigits < 20) value = (0,Math_int.numberAutoFixed)(value, this._format.maximumFractionDigits); value = Math.min(this.max, Math.max(value, this.min)); return value; } }; NumberInput.property.step = { set: function (value) { if (!(0,utils.isRealNumber)(value)) value = 1; if (value === 0) value = 1; value = Math.abs(value); this._step = value; }, get: function () { if (this._format.maximumFractionDigits === 0 && (0,utils.isNaturalNumber)(this._format.pow10)) { return Math.max(this._step, Math.pow(10, this._format.pow10)); } return this._step; } }; NumberInput.property.max = { set: function (value) { if (!(0,utils.isRealNumber)(value)) { value = Infinity; } this._max = value; this._prevValue = this.value; this.textCtrl.flushValueToText(); }, get: function () { return Math.max(this._max, this._min); } }; NumberInput.property.min = { set: function (value) { if (!(0,utils.isRealNumber)(value)) { value = -Infinity; } this._min = value; this._prevValue = this.value; this.textCtrl.flushValueToText(); }, get: function () { return Math.min(this._min, this._max); } }; NumberInput.prototype.locales2Format = { 'vi-VN': { decimalSeparator: ',', thousandsSeparator: '.' }, 'en-US': { decimalSeparator: '.', thousandsSeparator: ',' }, 'none': { decimalSeparator: '.', thousandsSeparator: '' } }; NumberInput.property.decimalSeparator = { get: function () { var lF = this.locales2Format[this._format.locales]; if (lF) return lF.decimalSeparator; return '.'; }, set: () => { } }; NumberInput.property.thousandsSeparator = { get: function () { var lF = this.locales2Format[this._format.locales]; if (lF) return lF.thousandsSeparator; return null; }, set: () => { } }; 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; } }; NumberInput.property.readOnly = { set: function (value) { this.$input.readOnly = !!value; if (value) this.addClass('as-read-only'); else this.removeClass('as-read-only'); }, get: function () { return this.$input.readOnly; } }; NumberInput.property.format = { /*** * @this NumberInput * @param value * @this NumberInput */ set: function (value) { if (value in this.locales2Format) { this._format = { locales: value, maximumFractionDigits: this._format.maximumFractionDigits, minimumFractionDigits: this._format.minimumFractionDigits, }; } else if (!value) { this._format = this._makeDefaultFormat(); } else { this._format = Object.assign(this._makeDefaultFormat(), value); } // console.log(this._format) this._prevValue = this.value; this.textCtrl.flushValueToText(); }, get: function () { return this._format; } }; NumberInput.property.floatFixed = { set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.round(value); if (value >= 0) { value = Math.min(value, 20); this._format.maximumFractionDigits = value; this._format.minimumFractionDigits = value; delete this._format.pow10; } else { this._format.maximumFractionDigits = 0; this._format.minimumFractionDigits = 0; this._format.pow10 = -value; } } else { this._format.maximumFractionDigits = 20; delete this._format.minimumFractionDigits; delete this._format.pow10; } this._prevValue = this.value; this.textCtrl.flushValueToText(); }, get: function () { if (this._format.maximumFractionDigits === 20) return null; if (this._format.maximumFractionDigits === 0 && this._format.pow10 > 0) return -this._format.pow10; return this._format.maximumFractionDigits; } }; NumberInput.property.notNull = { set: function (value) { if (value) { this.addClass('as-must-not-null'); } else { this.removeClass('as-must-not-null'); } this._prevValue = this.value; this.textCtrl.flushValueToText(); }, get: function () { return this.hasClass('as-must-not-null'); } }; NumberInput.property.stepper = { set: function (value) { if (value) { this.addClass('as-has-stepper'); } else { this.removeClass('as-has-stepper'); } }, get: function () { return this.hasClass('as-has-stepper'); } } ACore/* default.install */.Z.install('NumberInput'.toLowerCase(), NumberInput); /* harmony default export */ const numberinput_NumberInput = (NumberInput); /** * * @param {NumberInput} elt * @constructor */ function NIDragController(elt) { this.elt = elt; NumberInput_({ elt: elt, tag: Hanger/* default */.Z }); Object.keys(this.constructor.prototype).forEach((key) => { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } }); this.elt.on({ dragstart: this.ev_dragStart, drag: this.ev_drag, dragend: this.ev_dragEnd, draginit: this.ev_dragInit }); this.state = 0; this.prevDistance = 0; this.$mouseLine = null; } NIDragController.prototype.ev_dragInit = function (event) { if (!this.elt.valueDraggable || EventEmitter/* default.isMouseRight */.ZP.isMouseRight(event.originEvent)) { event.cancel(); } }; NIDragController.prototype.ev_dragStart = function (event) { if (this.elt.valueDraggable === false) return; }; NIDragController.prototype.ev_drag = function (event) { if (this.calcDistance(event) > 0 && !this.isSelecting() && this.state === 0) { this.state = 1; document.body.classList.add('as-number-input-force-dragging'); this.$mouseLine = NumberInput_({ tag: 'div', class: 'as-number-input-mouse-line', style: { zIndex: (0,utils.findMaxZIndex)(this.elt) + 1 } }).addTo(document.body); } if (this.state !== 1) return; var distance = this.calcDistance(event); var delta = distance - this.prevDistance; if (delta >= 1) { this.prevDistance = distance; this.elt.nextStep(); } else if (delta <= -1) { this.prevDistance = distance; this.elt.prevStep(); } var deltaVector = event.currentPoint.sub(event.startingPoint); var length = deltaVector.abs(); var angle = deltaVector.direction(); this.$mouseLine.addStyle({ left: event.startingPoint.x + 'px', top: event.startingPoint.y + 'px', width: length + 'px', transform: 'rotate(' + angle + 'rad)', transformOrigin: '0 0' }); }; NIDragController.prototype.ev_dragEnd = function (event) { this.elt.removeClass('as-dragging'); document.body.classList.remove('as-number-input-force-dragging'); if (this.$mouseLine) { this.$mouseLine.remove(); this.$mouseLine = null; } this.state = 0; this.elt.emit('change', { by: 'drag' }); }; NIDragController.prototype.isSelecting = function () { return this.elt.$input.selectionStart !== this.elt.$input.selectionEnd; }; NIDragController.prototype.calcDistance = function (event) { var bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.elt.getBoundingClientRect()); var mouse = new Vec2/* default */.Z(event.clientX, event.clientY); bound.x -= 10; bound.y -= 10; bound.height += 20; bound.width += 20; if (bound.containsPoint(mouse)) return 0; var res = Infinity; if (mouse.x > bound.x && mouse.x < bound.x + bound.width) { res = Math.min(res, Math.abs(mouse.y - bound.y), Math.abs(mouse.y - bound.y - bound.height)); } else if (mouse.y > bound.y && mouse.y < bound.y + bound.height) { res = Math.min(res, Math.abs(mouse.x - bound.x), Math.abs(mouse.x - bound.x - bound.width)); } else { res = Math.min(res, mouse.sub(bound.A()).abs(), mouse.sub(bound.B()).abs(), mouse.sub(bound.C()).abs(), mouse.sub(bound.D()).abs(), ); } return res; }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/NumberSpanInput.js var NumberSpanInput_ = ACore/* default._ */.Z._; var NumberSpanInput_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.install */.Z.install(NumberSpanInput); /* harmony default export */ const js_NumberSpanInput = (NumberSpanInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/onscreenwindow.css var onscreenwindow = __webpack_require__(8848); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/WindowBox.js var WindowBox = __webpack_require__(774); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/OnsScreenWindow.js var OnsScreenWindow_ = ACore/* default._ */.Z._; var OnsScreenWindow_$ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function OnScreenWindow() { var self = this; this._lastSize = { width: 0, height: 0 } /*** * * @type {WindowBox} */ this.$windowBox = OnsScreenWindow_$(WindowBox/* default.tag */.Z.tag, this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$windowBox, 'windowTitle'); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$windowBox, 'windowActions'); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$windowBox, 'windowIcon'); this.$windowBox.on('action', function (event){ self.emit('action', event, self); }); this.$header = OnsScreenWindow_({ tag: Hanger/* default.tag */.Z.tag, elt: this.$windowBox.$header }); this.$header.on('dragstart', this.eventHandler.dragStart.bind(this, this.$header, 'move')); // this.$bottomResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom', this); this.$bottomResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$bottomResizer, 'bottom')); // this.$rightResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-right', this); this.$rightResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$rightResizer, 'right')); // this.$topResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top', this); this.$topResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$topResizer, 'top')); this.$leftResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-left', this); this.$leftResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$leftResizer, 'left')); this.$bottomRightResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-right', this); this.$bottomRightResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$bottomRightResizer, 'bottomRight')); // this.$bottomLeftResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-left', this); this.$bottomLeftResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$bottomLeftResizer, 'bottomLeft')); // this.$topLeftResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-left', this) this.$topLeftResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$topLeftResizer, 'topLeft')); this.$topRightResizer = OnsScreenWindow_$('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-right', this); this.$topRightResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$topRightResizer, 'topRight')); this.$attachhook = OnsScreenWindow_('attachhook').addTo(this); this.$attachhook.requestUpdateSize = this.relocation.bind(this); this.$attachhook.on('error', function () { Dom/* default.addToResizeSystem */.ZP.addToResizeSystem(this); }); } OnScreenWindow.tag = 'OnScreenWindow'.toLowerCase(); OnScreenWindow.render = function () { return OnsScreenWindow_({ extendEvent: ['sizechange', 'drag', 'relocation', 'action'], class: 'absol-onscreen-window', child: [ { tag: WindowBox/* default.tag */.Z.tag, class: 'as-window-box', }, '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.prototype.moveFators = { move: { x: 1, y: 1, /*** * @this OnScreenWindow * @param event */ canMove: function (event) { return true; }, cursor: 'move' }, top: { y: 1, height: -1 }, bottom: { height: 1, cursor: 's-resize' }, bottomRight: { height: 1, width: 1, cursor: 'se-resize' }, bottomLeft: { height: 1, width: -1, x: 1, cursor: 'sw-resize' }, topLeft: { height: -1, width: -1, x: 1, y: 1, cursor: 'nw-resize' }, topRight: { height: -1, width: 1, y: 1, cursor: 'ne-resize' }, right: { width: 1, cursor: 'e-resize' }, left: { x: 1, width: -1, cursor: 'w-resize' } }; /*** * * @type {{}} * @memberOf OnScreenWindow# */ OnScreenWindow.eventHandler = {}; /*** * @this OnScreenWindow * @param {Hanger} elt * @param fN * @param event */ OnScreenWindow.eventHandler.dragStart = function (elt, fN, event) { var factor = this.moveFators[fN]; if (factor.canMove && !factor.canMove.call(this, event)) return; this.movingData = { factor: factor, screenSize: (0,Dom/* getScreenSize */.tE)(), modal: OnsScreenWindow_('.absol-onscreen-window-moving-modal') .addStyle('cursor', factor.cursor).addTo(document.body), elt: elt, bound: this.getBoundingClientRect() }; elt.on('drag', this.eventHandler.drag) .on('dragend', this.eventHandler.dragEnd); }; /*** * @this OnScreenWindow * @param event */ OnScreenWindow.eventHandler.drag = function (event) { var movingData = this.movingData; var factor = movingData.factor; var bound = movingData.bound; var screenSize = movingData.screenSize; var dv = event.currentPoint.sub(event.startingPoint); var x, y, width, height; if (factor.x) { x = dv.x * factor.x + bound.left; x = Math.min(x, screenSize.width - bound.width); x = Math.max(0, x); this.addStyle('left', x + 'px'); } if (factor.y) { y = dv.y * factor.y + bound.top; y = Math.min(y, screenSize.height - bound.height); y = Math.max(0, y); this.addStyle('top', y + 'px'); } if (factor.width) { width = dv.x * factor.width + bound.width; this.addStyle('width', width + 'px'); } if (factor.height) { height = dv.y * factor.height + bound.height; this.addStyle('height', height + 'px'); } this.emit('relocation', { type: 'relocation', target: this }, this); this.maybeSizeChange(); }; /*** * @this OnScreenWindow * @param event */ OnScreenWindow.eventHandler.dragEnd = function (event) { var movingData = this.movingData; var elt = movingData.elt; elt.off('drag', this.eventHandler.drag) .off('dragend', this.eventHandler.dragEnd); setTimeout(function () { movingData.modal.remove(); }, 50); this.movingData = null; }; ['addChild', 'addChildBefore', 'addChildAfter', 'clearChild', 'findChildBefore', 'findChildAfter'].forEach(function (key) { OnScreenWindow.prototype[key] = function () { return this.$windowBox[key].apply(this.$windowBox, arguments); }; }); OnScreenWindow.property = {}; OnScreenWindow.prototype.relocation = function () { var bound = this.getBoundingClientRect(); var screenSize = Dom/* default.getScreenSize */.ZP.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/* default.install */.Z.install(OnScreenWindow); /* harmony default export */ const OnsScreenWindow = (OnScreenWindow); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/pageselector.css var pageselector = __webpack_require__(8526); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/PageSelector.js var PageSelector_ = ACore/* default._ */.Z._; var PageSelector_$ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function PageSelector() { this.$pageCount = PageSelector_$('.absol-page-count', this); this.$pageInput = PageSelector_$('.absol-page-number-input input', this); this.$pageInput.on('keyup', this.eventHandler.pressEnterKey) .on('change', 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: 'span', child: { text: '/ ' } }, { tag: 'span', class: 'absol-page-count', child: { text: '1' } } ] }, { tag: 'ul', class: 'absol-page-number-buttons', child: [ { tag: 'li', class: "page-first", attr: { title: 'First' }, child: 'a.mdi.mdi-chevron-double-left' }, { tag: 'li', attr: { title: 'Previous' }, class: 'page-previous', child: 'a.mdi.mdi-chevron-left' }, { tag: 'li', attr: { title: 'Next' }, class: 'page-next', child: 'a.mdi.mdi-chevron-right' }, { tag: 'li', attr: { title: 'Last' }, class: 'page-last', child: 'a.mdi.mdi-chevron-double-right' } ] } ] }); } PageSelector.eventHandler = {}; /** * * @param {KeyboardEvent} event */ PageSelector.eventHandler.pressEnterKey = function (event) { if (event.key !== 'Enter' && event.type !== 'change') return; var index = parseInt(this.$pageInput.value.trim(), 10); if ((index < 1) || (index > this._pageCount)) { index = Math.max(1, Math.min(this._pageCount, index)); this.$pageInput.value = index; } 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-text': index + 1 }, }, on: { click: PageSelector.eventHandler.clickIndex.bind(this, index) } }); this.$buttonContainer.addChildBefore(button, this.$nextBtn); return button; }; PageSelector.prototype.setPageRange = function (pageCount) { this._pageRange = pageCount; while (this._buttons.length < pageCount) { this._buttons.push(this._createButton(this._buttons.length)); } while (this._buttons.length > pageCount) { this._buttons.pop().remove(); } }; PageSelector.prototype.setStartPage = function (index) { this._buttons.forEach(function (e, i) { e.firstChild.attr('data-index-text', 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._pageOffset + this._pageRange) 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; this.$pageCount.firstChild.data = '' + count; this.attr('data-page-count', count); }; PageSelector.property = {}; PageSelector.property.selectedIndex = { set: function (value) { this.selectPage(value, false); }, get: function () { return this._selectedIndex; } }; PageSelector.property.pageCount = { set: function (value) { this.setPageCount(value); }, get: function () { return this._pageCount; } }; PageSelector.property.pageOffset = { set: function (value) { this.setStartPage(value); }, get: function () { return this._pageOffset; } }; PageSelector.property.pageRange = { set: function (value) { this.setPageRange(value); }, get: function () { return this._pageRange; } }; PageSelector.property.simpleMode = { set: function (value) { if (value) { this.addClass('as-simple-mode'); } else { this.removeClass('as-simple-mode'); } }, get: function () { return this.hasClass('as-simple-mode'); } }; 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); props = Object.assign({}, props); delete props.pageOffset; delete props.pageRange; delete props.pageCount; delete props.selectedIndex; Object.assign(this, props); }; ACore/* default.install */.Z.install(PageSelector); /* harmony default export */ const js_PageSelector = (PageSelector); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/preinput.css var preinput = __webpack_require__(4981); // EXTERNAL MODULE: ./node_modules/absol/src/Detector/BrowserDetector.js var BrowserDetector = __webpack_require__(9399); // EXTERNAL MODULE: ./node_modules/absol/src/Print/printer.js + 2 modules var printer = __webpack_require__(2691); // EXTERNAL MODULE: ./node_modules/absol/src/Print/PrintSerialHandlers.js var PrintSerialHandlers = __webpack_require__(5421); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/PreInput.js var PreInput_ = ACore/* default._ */.Z._; var PreInput_$ = ACore/* default.$ */.Z.$; var textDelay = BrowserDetector/* default.isSafari */.Z.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.value = ''; this.historyIndex = -1; this.changePendingEvent = null; this.commitChange('', 0); } PreInput.tag = 'preinput'; PreInput.render = function () { return PreInput_({ tag: 'pre', class: 'as-preinput', attr: { contenteditable: 'true' }, child: 'br' }); }; PreInput.prototype.notifyChange = function (data, originalEvent) { this.emit('change', Object.assign({ type: 'change', target: this, originalEvent: originalEvent || this.changePendingEvent }, data)); this.changePendingEvent = null; }; 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.select = function (offset) { if (document.activeElement !== this) this.focus(); this.applyData(this.value, offset); }; 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.notifyChange({value: record.text, action: 'undo', record: record}); }; 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.notifyChange({value: record.text, action: 'redo', record: record}); }; /** * * @param text * @param offset * @param {Event=} event */ 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.notifyChange({ value: record.text, action: 'commit', record: record }); } }; /** * * @param text * @param offset * @param {Event=} event */ PreInput.prototype.waitToCommit = function (text, offset, event) { 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 direction = 'forward'; var cmpPosition = sel.anchorNode.compareDocumentPosition(sel.focusNode); if (cmpPosition === 4) { direction = 'forward'; } else if (cmpPosition === 2) { direction = 'backward' } else if (!cmpPosition && sel.anchorOffset > sel.focusOffset || cmpPosition === Node.DOCUMENT_POSITION_PRECEDING) { direction = 'backward'; } 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, direction: direction } } } else if (document.selection) { console.error('May not support!'); } }; PreInput.prototype.stringOf = function (node, parent) { if (!node) return ''; if (node.nodeType === 3) { return node.data; } var res = ''; if ((node.tagName === 'BR' || node.tagName === 'br') && parent && parent.lastChild !== node) { return '\n'; } else if ((node.tagName === 'DIV' || node.tagName === 'div') && parent && parent.firstChild !== node) { res += '\n'; } var thisInput = this; return res + Array.prototype.map.call(node.childNodes, function (cNode, index, arr) { return thisInput.stringOf(cNode, node); }).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) { this.changePendingEvent = 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/* default.imageToCanvas */.ZP.imageToCanvas(img).then(function (canvas) { var dataURI = canvas.toDataURL(); var blob = (0,Converter_file.dataURItoBlob)(dataURI); var file = (0,Converter_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) { this.changePendingEvent = 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); } }; PreInput.property.disabled = { set: function (value) { value = !!value; if (value === this.hasClass('as-disabled')) return; if (value) { this.addClass('as-disabled'); this.attr({ contenteditable: undefined, oncut: 'return false', onpaste: 'return false', onkeydown: 'if(event.metaKey) return true; return false;' }); } else { this.removeClass('as-disabled'); this.attr({ contenteditable: true, oncut: undefined, onpaste: undefined, onkeydown: undefined }); } }, get: function () { return this.hasClass('as-disabled'); } }; PreInput.property.readOnly = { set: function (value) { value = !!value; if (value === this.hasClass('as-read-only')) return; if (value) { this.addClass('as-read-only'); this.attr({ contenteditable: undefined, oncut: 'return false', onpaste: 'return false', onkeydown: 'if(event.metaKey) return true; return false;' }); } else { this.removeClass('as-read-only'); this.attr({ contenteditable: true, oncut: undefined, onpaste: undefined, onkeydown: undefined }); } }, get: function () { return this.hasClass('as-read-only'); } }; ACore/* default.install */.Z.install(PreInput); /* harmony default export */ const js_PreInput = (PreInput); /* ShareSerializer.addHandlerBefore({ id: 'PreInput', match: (elt, scope, stack) => { if (elt.nodeType !== Node.ELEMENT_NODE) return false; return elt.hasClass('as-preinput') || elt.hasClass('as-tokenize-hyper-input'); }, exec: (printer, elt, scope, stack, accept) => { var O = printer.O; var printAttr = computePrintAttr(elt); var rect = printAttr.contentBound; rect.x -= O.x; rect.y -= O.y; printer.text(PreInput.prototype.stringOf(elt), rect, printAttr.style); return false; } }, '*'); */ // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ProgressBar.js var ProgressBar = __webpack_require__(6535); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/quicklistbutton.css var quicklistbutton = __webpack_require__(5674); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/FollowerToggler.js var FollowerToggler_ = ACore/* default._ */.Z._; var FollowerToggler_$ = ACore/* default.$ */.Z.$; /*** * @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; elt.sponsorElement = this; this.$follower = elt; } else { throw new Error("Must be a follower!"); } } FollowerToggler.eventHandler = {}; FollowerToggler.eventHandler.clickBody = function (event) { if (EventEmitter/* default.hitElement */.ZP.hitElement(this, event) || EventEmitter/* default.hitElement */.ZP.hitElement(this.$follower, event)) return; this.close(); }; FollowerToggler.eventHandler.click = function () { this.toggle(); }; ACore/* default.install */.Z.install(FollowerToggler); /* harmony default export */ const js_FollowerToggler = (FollowerToggler); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/QuickListButton.js var QuickListButton_ = ACore/* default._ */.Z._; var QuickListButton_$ = ACore/* default.$ */.Z.$; /**** * @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.getFollower = function () { if (!QuickListButton.$follower) QuickListButton.$follower = QuickListButton_('follower.as-quick-list-button-follower'); QuickListButton.$follower.cancelWaiting(); 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/* default.getScreenSize */.ZP.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/* default.install */.Z.install(QuickListButton); /* harmony default export */ const js_QuickListButton = (QuickListButton); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/SelectList.js var SelectList = __webpack_require__(133); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/QuickMenu.js var QuickMenu = __webpack_require__(1274); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/quickpath.css var quickpath = __webpack_require__(7786); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/QuickPath.js var QuickPath_ = ACore/* default._ */.Z._; var QuickPath_$ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function QuickPath() { this._holders = []; } /** * @type {QuickPath} */ QuickPath.eventHandler = {}; /*** * @this QuickPath * @param event */ 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) { QuickMenu/* default.toggleWhenClick */.Z.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/* default.install */.Z.install('quickpath', QuickPath); /* harmony default export */ const js_QuickPath = (QuickPath); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/RadioButton.js var RadioButton = __webpack_require__(7234); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Radio.js var Radio = __webpack_require__(7002); // EXTERNAL MODULE: ./node_modules/absol/src/Network/XHR.js var XHR = __webpack_require__(6069); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/RemoteSvg.js var RemoteSvg_ = ACore/* default._ */.Z._; var RemoteSvg_$ = ACore/* default.$ */.Z.$; 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] = XHR/* default.getRequest */.Z.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/* default.install */.Z.install(RemoteSvg); /* harmony default export */ const js_RemoteSvg = (RemoteSvg); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ResizeBox.js var ResizeBox = __webpack_require__(4860); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Searcher.js var Searcher = __webpack_require__(9024); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selectbox.css var selectbox = __webpack_require__(7694); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selectmenu.css var selectmenu = __webpack_require__(7001); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectMenu2.js ACore/* default.creator.dropdown-ico */.Z.creator["dropdown-ico"] = function () { return (0,ACore._)([ '<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() { this._value = null; this._lastValue = null; this.$holderItem = (0,ACore.$)('.absol-selectmenu-holder-item', this); this.$viewItem = (0,ACore.$)('.absol-selectmenu-holder-item selectlistitem', this); /*** * * @type {SelectListBox} */ this.$selectlistBox = (0,ACore._)({ tag: 'selectlistbox', props: { anchor: [1, 6, 2, 5], strictValue: true }, on: { preupdateposition: this.eventHandler.preUpdateListPosition } }); if (this.$selectlistBox.cancelWaiting) this.$selectlistBox.cancelWaiting(); this.widthLimit = this.$selectlistBox.widthLimit; this.addStyle('--as-width-limit', this.$selectlistBox.widthLimit + 'px'); var firstCheckView = false; var this1 = this; var checkView = () => { if (this1.isDescendantOf && this1.isDescendantOf(document.body)) { setTimeout(checkView, 5000); firstCheckView = true; } else if (firstCheckView) { setTimeout(checkView, 1000); } else { if (this1.$selectlistBox.searchMaster) this1.$selectlistBox.searchMaster.destroy(); } } setTimeout(checkView, 3000); this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem); this.$selectlistBox.followTarget = this; this.$selectlistBox.sponsorElement = this; OOP/* default.drillProperty */.ZP.drillProperty(this, this.$selectlistBox, 'enableSearch'); OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'selectedvalue', 'value'); this.strictValue = true; this._lastValue = "NOTHING_VALUE"; this._isFocus = false; this.isFocus = false; this.on('mousedown', this.eventHandler.click, true); /*** * @name items * @type {[]} * @memberOf SelectMenu# */ } SelectMenu.tag = 'selectmenu'; SelectMenu.render = function () { return (0,ACore._)({ 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.addStyle = function (arg0, arg1) { if (arg0 === 'textAlign' || arg0 === 'text-align') { if (arg1 === 'center') { this.addClass('as-text-align-center'); this.$selectlistBox.addClass('as-text-align-center'); } else { this.removeClass('as-text-align-center'); this.$selectlistBox.removeClass('as-text-align-center'); } } else { return AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } }; SelectMenu.prototype.init = function (props) { props = props || {}; Object.keys(props).forEach(function (key) { if (props[key] === undefined) delete props[key]; }); if ('selectedvalue' in props) { props.value = props.selectedvalue; } 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.revokeResource = function () { // return; // this.$selectlistBox.revokeResource(); }; SelectMenu.prototype.selfRemove = function () { setTimeout(() => { if (!this.parentElement) this.revokeResource(); }, 100); this.remove(); } SelectMenu.prototype.updateItem = function () { var value = this._explicit(this._value); var selectedItems = this.$selectlistBox.findDisplayItemsByValue(value); var data; if (selectedItems.length >= 1) { data = selectedItems[0].item; this.$viewItem.data = data; if (data.text && (0,utils.measureText)(data.text + '', '14px arial').width - 30 > this.widthLimit) { this.$viewItem.attr('title', data.text); } else this.$viewItem.attr('title', null); } else { this.$viewItem.data = { text: '', value: null }; this.$viewItem.attr('title', null); } }; SelectMenu.prototype.findItemsByValue = function (value) { return this.$selectlistBox.findItemsByValue(value); }; SelectMenu.prototype.findItemByValue = function (value) { return this.$selectlistBox.findItemByValue(value); } SelectMenu.prototype._explicit = function (value) { var items = this.$selectlistBox.findItemsByValue(value); if (items.length > 0 || !this.strictValue || this.items.length === 0) { return value; } else { return this.items[0].value; } }; SelectMenu.property = {}; SelectMenu.property.items = { set: function (items) { items = items || []; this.$selectlistBox.items = items; this.addStyle('--select-list-estimate-width', (this.$selectlistBox._estimateWidth) / 14 + 'em'); this.addStyle('--select-list-desc-width', (this.$selectlistBox._estimateDescWidth) / 14 + 'em'); 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._explicit(this._value); } }; /*** * * @type {SelectMenu|{}} */ SelectMenu.property.isFocus = { set: function (value) { if (value && (this.disabled || this.readOnly)) return; 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) { this.$selectlistBox.addTo(document.body); // 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 (!BrowserDetector/* default.isMobile */.Z.isMobile) thisSM.$selectlistBox.focus(); document.addEventListener('click', thisSM.eventHandler.bodyClick); }, 100); this.$selectlistBox.viewListAtFirstSelected(); } else { document.removeEventListener('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.hasClass('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.findItemsByValue(this._value); if (selectedItems.length > 0) { return selectedItems[0].idx; } return -1; } }; SelectMenu.property.strictValue = { set: function (value) { if (value) { this.attr('data-strict-value', null); } else { this.attr('data-strict-value', 'false'); } this.updateItem(); }, get: function () { return !this.attr('data-strict-value') || (this.attr('data-strict-value') !== 'false' && this.attr('data-strict-value') !== '0'); } }; SelectMenu.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; /** * @type {SelectMenu|{}} */ SelectMenu.eventHandler = {}; SelectMenu.eventHandler.click = function (event) { if (this.readOnly) return; if (EventEmitter/* default.isMouseRight */.ZP.isMouseRight(event)) return; if (EventEmitter/* default.hitElement */.ZP.hitElement(this.$selectlistBox, event)) return; this.isFocus = !this.isFocus; }; SelectMenu.eventHandler.bodyClick = function (event) { if (!EventEmitter/* default.hitElement */.ZP.hitElement(this, event) && !EventEmitter/* default.hitElement */.ZP.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 = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { if (!BrowserDetector/* default.isMobile */.Z.isMobile) this.isFocus = false; } }; ACore/* default.install */.Z.install(SelectMenu); /* harmony default export */ const SelectMenu2 = (SelectMenu); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectBoxItem.js var SelectBoxItem_ = ACore/* default._ */.Z._; var SelectBoxItem_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.hitElement */.ZP.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 (value && value.desc) { this.attr('title', value.desc); } else { this.attr('title', undefined); } 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.hasClass('as-active'); } }; ACore/* default.install */.Z.install(SelectBoxItem); /* harmony default export */ const js_SelectBoxItem = (SelectBoxItem); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selectlistbox.css var selectlistbox = __webpack_require__(6250); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/list/listIndexing.js function depthIndexingByValue(items, context) { context = context || {idx: 0, dict: {}}; 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) { depthIndexingByValue(cr.items, context); } return ac; }, context.dict); } function indexingByValue(items, dict) { 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 || {}); } // EXTERNAL MODULE: ./node_modules/absol-acomp/js/list/ListSearchMaster.js + 1 modules var ListSearchMaster = __webpack_require__(4623); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectListBox.js var SelectListBox_ = ACore/* default._ */.Z._; var SelectListBox_$ = ACore/* default.$ */.Z.$; var SelectListBox_$$ = ACore/* default.$$ */.Z.$$; var VALUE_HIDDEN = -1; var VALUE_NORMAL = 1; var calcWidthLimit = () => { var width = (0,Dom/* getScreenSize */.tE)().width; if (BrowserDetector/* default.isMobile */.Z.isMobile) { width -= 20; } else { width = width * 0.9 - 250; } return Math.min(width, 1280); } var makeSearchItem = (it, idx2key) => { var res = { value: idx2key.length }; var valueKey; res.text = it.text + ''; if (it.desc) res.text += it.desc; valueKey = (0,utils.keyStringOf)(it.value); it.valueKey = valueKey; idx2key.push(valueKey); if (it.items && it.items.length > 0 && it.items.map) { res.items = it.items.map(cIt=>makeSearchItem(cIt, idx2key)); } return res; }; /*** * @extends Follower * @constructor */ function SelectListBox() { this._initDomHook(); this._initControl(); this._initScroller(); this._initProperty(); /*** * @name strictValue * @type {boolean} * @memberOf SelectListBox# */ /*** * @name enableSearch * @type {boolean} * @memberOf SelectListBox# */ } 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' ], props: { anchor: [1, 6, 2, 5] } }); }; SelectListBox.prototype.toLoadNextY = 200; SelectListBox.prototype.preLoadN = 3; SelectListBox.prototype.itemHeightMode = [20, 30]; SelectListBox.prototype.itemHeight = 20; SelectListBox.prototype.revokeResource = function () { if (this.searchMaster) { this.searchMaster.destroy(); this.searchMaster = null; } /* return revokeResource(this._items); // var n = items.length; this._items = undefined; revokeResource(this.idx2key); this.idx2key = undefined; revokeResource(this.key2idx) this.key2idx = undefined; revokeResource(this.searchingItems); this.searchingItems = undefined; revokeResource(this._itemNodeHolderByValue); this._itemNodeHolderByValue = undefined; // this._filteredItems = [];// not need , only use when search revokeResource(this._preDisplayItems); this._preDisplayItems = undefined; revokeResource(this._displayItems); this._displayItems = undefined; revokeResource(this._searchCache) this._searchCache = undefined; */ }; SelectListBox.prototype._initDomHook = function () { if (this.$attachhook) this.$attachhook.cancelWaiting(); this.domSignal = new DelaySignal/* default */.Z(); this.domSignal.on('viewListAt', this.viewListAt.bind(this)); this.domSignal.on('viewListAtFirstSelected', this.viewListAtFirstSelected.bind(this)); this.domSignal.on('viewListAtCurrentScrollTop', this.viewListAtCurrentScrollTop.bind(this)); /** * * @type {ListSearchMaster|null} */ this.searchMaster = null; this.widthLimit = calcWidthLimit(); this.addStyle('--as-width-limit', this.widthLimit + 'px'); }; 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(); (0,SelectList/* releaseItem */.Ag)(itemElt); } while (pageElt.childNodes.length < n) { itemElt = (0,SelectList/* requireItem */.wA)(this); pageElt.addChild(itemElt); } }; SelectListBox.prototype._assignItems = function (pageElt, offset) { var n = Math.min(this._displayItems.length - offset, pageElt.childNodes.length); var itemElt, value; var data; for (var i = 0; i < n; ++i) { itemElt = pageElt.childNodes[i]; data = this._displayItems[offset + i]; if (data && data !== true && data.text) { if (!data.textLength) data.textLength = (0,utils.measureText)(data.text + '', '14px arial').width; if (data.textLength > this.widthLimit - 5) { itemElt.attr('title', data.text); } else itemElt.attr('title', null); } else { itemElt.attr('title', null); } itemElt.data = data; 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.$attachhook.once('attached', ()=>{ 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 = (0,Dom/* getScreenSize */.tE)(); var maxItem = Math.ceil(Math.max(window.screen.height, screenSize.height) / this.itemHeight); 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] * this.itemHeight / 14 + 'em'); 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 / this.itemHeight)); }; SelectListBox.prototype.searchItemByText = function (text) { text = text.trim().replace(/\s\s+/, ' '); if (text.length === 0) return Promise.resolve(this._items); this.prepareSearch(); this._searchCache[text] = this._searchCache[text] || this.searchMaster.query({ text: text }).then(searchResult => { if (!searchResult) return; var scoreOf = it => { var idx = this.key2idx [it.valueKey]; var sc = searchResult[idx]; if (!sc) return -Infinity; return Math.max(sc[0], sc[1]) * 1000000 - idx; } var makeList = originItems => { var items = originItems.filter(it => { var idx = this.key2idx [it.valueKey]; if (searchResult[idx]) return true; return false; }).map(it => { var cpItem = Object.assign({}, it); if (it.items) cpItem.items = makeList(it.items); return cpItem; }); items.sort((a, b) => scoreOf(b) - scoreOf(a)); return items; } return makeList(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._updateDisplayItemIndex = function () { this._displayItemHolderByValue = indexingByValue(this._displayItems, {}); }; SelectListBox.prototype._updateItemNodeIndex = function () { this._itemNodeHolderByValue = depthIndexingByValue(this._items); }; SelectListBox.prototype._updateDisplayItem = function () { this._displayItems = this._filterDisplayItems(this._preDisplayItems); this._updateDisplayItemIndex(); this.$content.addStyle({ 'height': this._displayItems.length * this.itemHeight / 14 + 'em' }); }; SelectListBox.prototype.focus = function () { if (this.enableSearch) this.$searchInput.focus(); }; SelectListBox.prototype.footerMinWidth = 0; SelectListBox.prototype._updateItems = function () { this._hasIcon = this._items.some(function hasIcon(it) { var res = !!it.icon; if (!res && it.items) { res = it.items.some(hasIcon); } return res; }); if (this._hasIcon) { this.itemHeight = this.itemHeightMode[1]; } else { this.itemHeight = this.itemHeightMode[0]; } this._preDisplayItems = this._itemsToNodeList(this._items); this._searchCache = {}; var estimateSize = (0,SelectList/* measureListSize */.bw)(this._itemNodeList); estimateSize.width = Math.min(this.widthLimit || Infinity, estimateSize.width); this._estimateSize = estimateSize; this._estimateWidth = estimateSize.width; this._estimateDescWidth = estimateSize.descWidth; if (this._hasIcon) { this._estimateWidth += 32; this.addClass('as-has-icon'); } else { this.removeClass('as-has-icon'); } this.addStyle('--select-list-estimate-width', Math.max(this.footerMinWidth, this._estimateWidth) / 14 + 'em'); this.addStyle('--select-list-desc-width', (this._estimateDescWidth) / 14 + 'em'); this._updateDisplayItem(); this.transferSearchDataIfNeed(); }; SelectListBox.prototype.transferSearchDataIfNeed = function () { if (!this.searchMaster) return; this.idx2key = []; this.searchingItems = this._items.map(it => makeSearchItem(it, this.idx2key)); this.key2idx = this.idx2key.reduce((ac, cr, i) => { ac[cr] = i; return ac; }, {}); this.searchMaster.transfer(this.searchingItems); }; SelectListBox.prototype.prepareSearch = function () { if (!this.searchMaster) { this.searchMaster = new ListSearchMaster/* default */.Z(); this.transferSearchDataIfNeed(); } }; /*** * * @param value * @returns {{idx: number, item:{text:string, value:number|string}}[]} */ SelectListBox.prototype.findDisplayItemsByValue = function (value) { return (this._displayItemHolderByValue[value] || []).slice(); }; SelectListBox.prototype._implicit = function (values) { if (!(values instanceof Array)) { if (values === null || values === undefined) values = []; else values = [values]; } return values.reduce(function (ac, cr) { if (!ac.dict[cr]) { ac.dict[cr] = true; ac.result.push(cr); } return ac; }, { result: [], dict: {} }).result; }; SelectListBox.prototype._explicit = function (values) { if (this.strictValue) { return values.filter(function (value) { return !!this._itemNodeHolderByValue[value]; }.bind(this)); } else { return values.slice(); } }; /*** * * @param value * @returns {{idx: number, item:{text:string, value:number|string}}[]} */ SelectListBox.prototype.findItemsByValue = function (value) { return (this._itemNodeHolderByValue[value] || []).slice(); }; SelectListBox.prototype.findItemByValue = function (value) { var t = this._itemNodeHolderByValue[value]; if (t && t.length > 0) { return t[0].item; } else return null; }; SelectListBox.property = {}; /*** * * @type {SelectListBox|{}} */ SelectListBox.property.items = { set: function (items) { items = items || []; if (!(items instanceof Array)) items = []; items = (0,utils.copySelectionItemArray)(items, { removeNoView: true, removeNewLine: true }); 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 = this._implicit(values); this._values = values; this._valueDict = values.reduce(function (ac, cr) { ac[cr + ''] = true; return ac; }, {}); this._updateDisplayItem(); this.viewListAtCurrentScrollTop(); if (this._pageOffsets[this.preLoadN] > this._pageOffsets[0]) this._updateSelectedItem(); }, get: function () { return this._explicit(this._values); } }; SelectListBox.property.strictValue = { set: function (value) { if (value) { this.addClass('as-strict-value'); } else { this.removeClass('as-strict-value'); } }, get: function () { return this.hasClass('as-strict-value'); } }; 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.hasClass('as-enable-search'); } }; /*** * * @type {SelectListBox|{}} */ SelectListBox.eventHandler = {}; /* * * @param {MouseEvent} event */ SelectListBox.eventHandler.click = function (event) { if (event.target === this) this.notifyPressOut(); }; /*** * @this SelectListBox */ SelectListBox.eventHandler.searchModify = function () { var text = this.$searchInput.value; var searchSession = Math.random() + ''; this._searchSession = searchSession; this.searchItemByText(text).then(searchedItems => { if (searchSession !== this._searchSession) return; this._preDisplayItems = this._itemsToNodeList(searchedItems); this._displayItems = this._filterDisplayItems(this._preDisplayItems); this.$content.addStyle({ 'height': this._displayItems.length * this.itemHeight / 14 + 'em' }); this._updateItemNodeIndex(); this.viewListAt(0); this.$listScroller.scrollTop = 0; this.updatePosition(); }); }; SelectListBox.eventHandler.scroll = function () { var itemHeight = this.itemHeight * SelectListBox_$(document.body).getFontSize() / 14; var scrollerBound = this.$listScroller.getBoundingClientRect(); var topIdx = this._findFirstPageIdx(); if (!this.$listPages[topIdx]) return; var screenSize = (0,Dom/* getScreenSize */.tE)(); var maxItem = Math.ceil(Math.max(window.screen.height, screenSize.height) / itemHeight); var topBound = this.$listPages[topIdx].getBoundingClientRect(); var botIdx = this._findLastPageIdx(); if (!this.$listPages[botIdx]) return; var botBound; botBound = this.$listPages[botIdx].getBoundingClientRect(); if (topBound.top > scrollerBound.top || topBound.bottom < scrollerBound.bottom) { this.viewListAt(Math.floor(this.$listScroller.scrollTop / itemHeight)) 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] * itemHeight + '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] * itemHeight + 'px'); this._requireItem(this.$listPages[botIdx], this._pageOffsets[botIdx + 1] - this._pageOffsets[botIdx]); this._assignItems(this.$listPages[botIdx], this._pageOffsets[botIdx]); this._updateSelectedItem(); } } }; ACore/* default.install */.Z.install(SelectListBox); /* harmony default export */ const js_SelectListBox = (SelectListBox); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectBox.js var SelectBox_ = ACore/* default._ */.Z._; var SelectBox_$ = ACore/* default.$ */.Z.$; function pressCloseEventHandler(event) { var parentElt = this.$parent; if (!parentElt) return; parentElt.eventHandler.pressCloseItem(this, event); } function pressHandler(event) { var parentElt = this.$parent; if (!parentElt) return; parentElt.eventHandler.pressItem(this, event); } /*** * * @returns {SelectBoxItem} */ function makeItem() { return SelectBox_({ tag: 'selectboxitem', on: { close: pressCloseEventHandler, press: pressHandler } }); } var itemPool = []; function requireItem($parent) { var item; if (itemPool.length > 0) { item = itemPool.pop(); } else { item = makeItem(); } item.$parent = $parent; return item; } function releaseItem(item) { item.$parent = null; 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/* default.drillProperty */.ZP.drillProperty(this, this.$selectlistBox, 'enableSearch'); this.$items = []; this._values = []; this.items = []; this.values = []; this.$selectlistBox.followTarget = this; this.$selectlistBox.sponsorElement = 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 = requireItem(this); this.addChild(itemElt); this.$items.push(itemElt); } while (this.$items.length > n) { itemElt = this.$items.pop(); this.removeChild(itemElt); 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 () { this.viewItemsByValues(this._values); }; SelectBox.prototype.viewItemsByValues = function (values) { var items = this._getItemsByValues(values); var cBound = this.getBoundingClientRect(); 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/* default.updateUp */.Z.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.hasClass('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.hasClass('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/* default.hitElement */.ZP.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); }; SelectBox.eventHandler.pressCloseItem = function (item, event) { var value = item.value; var data = item.data; var currentValues = this.$selectlistBox.values; var index = currentValues.indexOf(value); if (index >= 0) { currentValues.splice(index, 1); } this.$selectlistBox.values = currentValues; this.$selectlistBox.updatePosition(); this._values = currentValues; this._updateItems(); this.emit('remove', Object.assign({}, event, { type: 'change', target: this, data: data, value: value, itemData: data }), this); this.emit('change', Object.assign({}, event, { type: 'change', action: 'remove', target: this, data: data, value: value, itemData: data }), this); }; SelectBox.eventHandler.pressItem = function (item, event) { var value = item.value; if (this.itemFocusable) { var prevActiveValue = this.activeValue; if (value !== prevActiveValue) { this.activeValue = value; this.emit('activevaluechange', { target: this, originEvent: event, prevActiveValue: prevActiveValue, activeValue: value }, this); } } }; SelectBox.eventHandler.pressCloseItem = function (item, event) { var value = item.value; var data = item.data; var index; index = this._values.indexOf(value); if (index >= 0) { this._values.splice(index, 1); this._updateItems(); this.$selectlistBox.values = this._values; this.emit('remove', Object.assign({}, event, { type: 'change', target: this, data: data, value: value, itemData: data }), this); this.emit('change', Object.assign({}, event, { type: 'change', action: 'remove', target: this, data: data, value: value, itemData: data }), this); } }; ACore/* default.install */.Z.install(SelectBox); /* harmony default export */ const js_SelectBox = (SelectBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selecttable.css var selecttable = __webpack_require__(32); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringMatching.js var stringMatching = __webpack_require__(991); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringFormat.js var stringFormat = __webpack_require__(6382); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTable.js var privateDom = new Dom/* default */.ZP().install(ACore/* default */.Z); 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/* default.addToResizeSystem */.ZP.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/* default.copyEvent */.ZP.copyEvent(event, {}), this); this.updateScroller(); }; SelectTable.eventHandler.removeAllBtnClick = function (event) { this.removeAll(); if (this.searching) { this.eventHandler.searchTextInputModify(event); } this.emit('removeall', EventEmitter/* default.copyEvent */.ZP.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 = (0,stringFormat.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 ((0,stringFormat.nonAccentVietnamese)(b.text) > (0,stringFormat.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 = ((0,stringMatching.phraseMatch)(text, filterText) + (0,stringMatching.phraseMatch)((0,stringFormat.nonAccentVietnamese)(text), (0,stringFormat.nonAccentVietnamese)(filterText))) / 2; if ((0,stringFormat.nonAccentVietnamese)(text).replace(/s/g, '').toLowerCase().indexOf((0,stringFormat.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 ((0,stringFormat.nonAccentVietnamese)(b.text) > (0,stringFormat.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.hasClass('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.hasClass('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/* default.copyEvent */.ZP.copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.bindFunctions */.ZP.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/* default.hitElement */.ZP.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/* default.ShareInstance.buildSvg */.ZP.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/* default.ShareInstance.buildSvg */.ZP.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/* default.install */.Z.install(SelectTable); /* harmony default export */ const js_SelectTable = (SelectTable); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTable2.js var SelectTable2_privateDom = new Dom/* default */.ZP().install(ACore/* default */.Z).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/* default.copyEvent */.ZP.copyEvent(event, {}), this); this.updateScroller(); }; SelectTable2.eventHandler.removeAllBtnClick = function (event) { this.removeAll(); if (this.searching) { this.eventHandler.searchTextInputModify(event); } this.emit('removeall', EventEmitter/* default.copyEvent */.ZP.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 = (0,stringFormat.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 ((0,stringFormat.nonAccentVietnamese)(b.text) > (0,stringFormat.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 = ((0,stringMatching.phraseMatch)(text, filterText) + (0,stringMatching.phraseMatch)((0,stringFormat.nonAccentVietnamese)(text), (0,stringFormat.nonAccentVietnamese)(filterText))) / 2; if ((0,stringFormat.nonAccentVietnamese)(text).replace(/s/g, '').toLowerCase().indexOf((0,stringFormat.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 ((0,stringFormat.nonAccentVietnamese)(b.text) > (0,stringFormat.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.hasClass('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.hasClass('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/* default.copyEvent */.ZP.copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.copyEvent(event, { item: item }), self); } else { this.addTo($selectedItemsContainer); self.emit('add', EventEmitter/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.copyEvent */.ZP.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/* default.bindFunctions */.ZP.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/* default.hitElement */.ZP.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/* default.install */.Z.install('selecttable2', SelectTable2); /* harmony default export */ const js_SelectTable2 = (SelectTable2); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/spaninput.css var spaninput = __webpack_require__(5351); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SpanInput.js var SpanInput_ = ACore/* default._ */.Z._; var SpanInput_$ = ACore/* default.$ */.Z.$; 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, ''); (0,utils.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 (0,Text.getTextIn)(this); } } SpanInput.tag = 'spaninput'; SpanInput.render = function () { return SpanInput_('span.absol-span-input[contenteditable="true"]'); }; ACore/* default.install */.Z.install(SpanInput); /* harmony default export */ const js_SpanInput = (SpanInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/statictabbar.css var statictabbar = __webpack_require__(4322); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/StaticTabbar.js var StaticTabbar_$ = ACore/* default.$ */.Z.$; var StaticTabbar_ = ACore/* default._ */.Z._; 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 || (0,stringGenerate.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/* default.install */.Z.install('statictabbar', StaticTabbar); /* harmony default export */ const js_StaticTabbar = (StaticTabbar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/switch.css var css_switch = __webpack_require__(8252); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/Switch.js var Switch_ = ACore/* default._ */.Z._; var Switch_$ = ACore/* default.$ */.Z.$; function Switch() { var thisS = this; this.$input = Switch_$('input', this); this.$input.on('click', function (event) { thisS.emit('change', event, thisS); }); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$input, 'checked'); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$input, 'isOn', 'checked'); this.on('click', function (event){ if (this.readOnly) event.preventDefault(); }, true); } 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; } }, readOnly: CheckBoxInput/* default.property.readOnly */.Z.property.readOnly }; ACore/* default.install */.Z.install('switch', Switch); /* harmony default export */ const js_Switch = (Switch); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/CheckboxButton.js var CheckboxButton = __webpack_require__(4654); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tablescroller.css var tablescroller = __webpack_require__(5436); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/tablescroller/TSLMoveTool.js /*** * * @param {TableScroller} elt * @constructor */ function TSLMoveTool(elt) { this.elt = elt; this.$table = null; Object.keys(TSLMoveTool.prototype).forEach((key) => { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } }); this.init(); } TSLMoveTool.prototype.init = function () { this.elt = (0,ACore._)({ tag: Hanger/* default */.Z, elt: this.elt, on: { predrag: this.ev_preDrag, dragstart: this.ev_dragStart, drag: this.ev_drag, dragend: this.ev_dragEnd } }); }; TSLMoveTool.prototype.onAttachTable = function () { }; TSLMoveTool.prototype.ev_preDrag = function (event) { var e = event.target; var isOK = false; while (e && e.tagName !== 'TABLE') { if (e.classList && e.classList.contains('as-drag-zone')) { isOK = true; break; } e = e.parentElement; } if (isOK) { event.preventDefault(); } else { event.cancel(); } }; TSLMoveTool.prototype._findRowIdx = function (y) { var newY = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.elt.$originTableBody.getBoundingClientRect()).y; var oldY = this.dragData.bodyBound.y; var dy = newY - oldY; var yArr = this.dragData.rowBounds.map((rect) => rect.y + dy + rect.height / 2); if (this.dragData.rowBounds.length === 0) yArr.push(0); var low = 0; var high = yArr.length - 1; var mid0, mid1; while (low < high) { mid0 = (low + high) >> 1; mid1 = mid0 + 1; if (Math.abs(y - yArr[mid0]) < Math.abs(y - yArr[mid1])) { high = mid0; } else { low = mid1; } } return low; }; TSLMoveTool.prototype.ev_dragStart = function (event) { var t = this.findRow(event.target); if (!t) return; this.elt.addClass('as-dragging'); this.dragData = Object.assign({}, t); this.dragData.copy.addClass('as-dragging'); this.dragData.original.addClass('as-dragging'); var rowBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.dragData.original.getBoundingClientRect()); var bodyBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.elt.$originTableBody.getBoundingClientRect()); this.dragData.mouseOffset = event.currentPoint .sub(rowBound.A()); this.dragData.rowIdx = Array.prototype.indexOf.call(this.elt.$originTableBody.childNodes, this.dragData.original); this.dragData.newRowIdx = this.dragData.rowIdx; this.dragData.rowBound = rowBound; this.dragData.bodyBound = bodyBound; this.dragData.rowOffset = rowBound.A().sub(bodyBound.A()); this.dragData.rowBounds = Array.prototype.map.call(this.elt.$originTableBody.childNodes, elt => Rectangle/* default.fromClientRect */.Z.fromClientRect(elt.getBoundingClientRect())); }; TSLMoveTool.prototype.ev_drag = function (event) { if (!this.dragData) return; var bodyBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.elt.$originTableBody.getBoundingClientRect()); var rowA = bodyBound.A().add(this.dragData.rowOffset); var rowTransformed = event.currentPoint.sub(this.dragData.mouseOffset); var transform = rowTransformed.sub(rowA); var originalRow = this.dragData.original; originalRow.addStyle('transform', `translate(0, ${transform.y}px )`); this.dragData.copy.addStyle('transform', `translate(0, ${transform.y}px )`); this.dragData.hiddenCells = Array.prototype.filter.call(this.dragData.original.childNodes, e => e.tagName === 'TD') .slice(0, this.elt.fixedCol); this.dragData.hiddenCells.forEach(e => (0,ACore.$)(e).addClass('as-transparent-fix')); var newIdx = this._findRowIdx(rowTransformed.y + this.dragData.rowBound.height / 2); this.dragData.newRowIdx = newIdx; var rows = this.elt.$originTableBody.childNodes; var curIdx = this.dragData.rowIdx; // var copyRows = this.elt.$f var rowBound = this.dragData.rowBound; rows.forEach((elt, i) => { if (elt === originalRow) return; var copyElt = this.elt.leftCopyRows[elt.getAttribute('data-id')]; var dy = 0; if (i >= Math.min(newIdx, curIdx) && i <= Math.max(newIdx, curIdx)) { if (i > curIdx && i <= newIdx) { dy = -rowBound.height; } else if (i >= newIdx && i < curIdx) { dy = rowBound.height; } } elt.addStyle('transform', `translate(0, ${dy}px)`); copyElt.addStyle('transform', `translate(0, ${dy}px)`); }); }; TSLMoveTool.prototype.ev_dragEnd = function (event) { this.dragData.original.removeStyle('transform'); this.dragData.copy.removeStyle('transform'); this.dragData.copy.removeClass('as-dragging'); this.dragData.original.removeClass('as-dragging'); this.elt.removeClass('as-dragging'); this.elt.removeClass('as-has-new-pos'); this.dragData.hiddenCells.forEach(e => e.removeClass('as-transparent-fix')); var rows = this.elt.$originTableBody.childNodes; rows.forEach(elt => { var copyElt = this.elt.leftCopyRows[elt.getAttribute('data-id')]; elt.addStyle('transform', 'translate(0, 0)'); copyElt.addStyle('transform', 'translate(0, 0)'); }); var at, copyAt; if (this.dragData.newRowIdx !== this.dragData.rowIdx) { at = rows[this.dragData.newRowIdx]; copyAt = this.elt.leftCopyRows[at.attr('data-id')]; if (this.dragData.rowIdx < this.dragData.newRowIdx) { (0,ACore.$)(at.parentElement).addChildAfter(this.dragData.original, at); (0,ACore.$)(copyAt.parentElement).addChildAfter(this.dragData.copy, copyAt); } else { (0,ACore.$)(at.parentElement).addChildBefore(this.dragData.original, at); (0,ACore.$)(copyAt.parentElement).addChildBefore(this.dragData.copy, copyAt); } this.elt.reindexRows(); this.elt.emit('orderchange', { target: this.elt, from: this.dragData.rowIdx, to: this.dragData.newRowIdx }, this.elt); } }; TSLMoveTool.prototype.findRow = function (fromElt) { var e = fromElt; var rowElt; while (e) { if (e.tagName === 'TR') { rowElt = e; break; } e = e.parentElement; } if (!rowElt) return null; var id = rowElt.getAttribute('data-id'); return { original: (0,ACore.$)(this.elt.originalRows[id]), copy: (0,ACore.$)(this.elt.leftCopyRows[id]) } }; /* harmony default export */ const tablescroller_TSLMoveTool = (TSLMoveTool); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/tablescroller/TableScroller.js var TableScroller_$ = ACore/* default.$ */.Z.$; var TableScroller_ = ACore/* default._ */.Z._; var sliceCellArray = (cells, start, end) => { if (typeof start !== "number") start = 0; if (typeof end !== "number") end = Infinity; var res = []; cells = cells.slice(); var cell, colSpan; var n = 0; while (cells.length > 0) { cell = cells.shift(); colSpan = parseInt(cell.getAttribute('colspan') || '1') || 1; n += colSpan; if (n > start && n <= end) res.push(cell); } return res; } /*** * @extends {AElement} * @constructor */ function TableScroller() { this.$originCtn = TableScroller_$('.as-table-scroller-origin-table-ctn', this); this.$originTable = undefined; this.$originContent = undefined; this.$fixedYHeaderScroller = TableScroller_$('.as-table-scroller-fixed-y-header-scroller', this); this.$fixedYHeader = TableScroller_$('.as-table-scroller-fixed-y-header', this); this.$fixedXYHeader = TableScroller_$('.as-table-scroller-fixed-xy-header', this); this.$fixXCol = TableScroller_$('.as-table-scroller-fixed-x-col', this); this.$attachHook = TableScroller_$('attachhook', this); this.$attachHook.requestUpdateSize = this.updateContentSize.bind(this); this.requestUpdateSize = this.updateContentSize.bind(this); this.$attachHook.on('attached', function () { Dom/* default.addToResizeSystem */.ZP.addToResizeSystem(this); }); this.$domSignal = TableScroller_('attachhook'); this.appendChild(this.$domSignal); this.domSignal = new DomSignal/* default */.ZP(this.$domSignal); this.domSignal.on('requestUpdateContent', this.updateContent.bind(this)); this.$vscrollbar = TableScroller_$('.absol-table-scroller-vscrollbar-container vscrollbar', this); this.$hscrollbar = TableScroller_$('.absol-table-scroller-hscrollbar-container hscrollbar', this); this.$vscroller = TableScroller_$('.as-table-scroller-vertical-scroller', this); this.$hscroller = TableScroller_$('.as-table-scroller-horizontal-scroller', this); this.$leftLine = TableScroller_$('.absol-table-scroller-left-line', this).addStyle('display', 'none'); this.$headLine = TableScroller_$('.absol-table-scroller-head-line', this); this.scrollCtr = new ScrollController(this); this.moveTool = new tablescroller_TSLMoveTool(this); this._swappedPairs = []; this.originalRows = {}; this.leftCopyRows = {}; /*** * @name fixedCol * @type {number} * @memberOf TableScroller# */ } TableScroller.tag = 'TableScroller'.toLowerCase(); TableScroller.render = function () { return TableScroller_({ class: 'absol-table-scroller', extendEvent: ['orderchange', 'preupdatesize', 'sizeupdated'], child: [ { class: 'absol-table-scroller-content', child: [ { class: 'as-table-scroller-vertical-scroller', child: [ { class: 'as-table-scroller-horizontal-scroller-viewport', child: [ { class: 'as-table-scroller-fixed-x-col-ctn', child: { tag: 'table', class: 'as-table-scroller-fixed-x-col', } }, { class: 'as-table-scroller-horizontal-scroller', child: [ { class: 'as-table-scroller-origin-table-ctn' } ] } ] } ] }, { class: 'as-table-scroller-fixed-y-header-ctn', child: { class: 'as-table-scroller-fixed-y-header-scroller', child: { tag: 'table', class: 'as-table-scroller-fixed-y-header', } } }, { class: 'as-table-scroller-fixed-xy-header-ctn', child: { tag: 'table', class: 'as-table-scroller-fixed-xy-header' } }, '.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/* default.getScrollSize */.ZP.getScrollSize().then(function (size) { TableScroller.scrollSize = size.width;//default scroller TableScroller.$style = TableScroller_('style[id="table-scroller-css"]').addTo(document.head); TableScroller.$style.innerHTML = [ 'body .absol-table-scroller {', ' --scrollbar-width: ' + (size.width + 0) + 'px', '}', ].join('\n'); Dom/* default.updateResizeSystem */.ZP.updateResizeSystem(); setTimeout(Dom/* default.updateResizeSystem.bind */.ZP.updateResizeSystem.bind(Dom/* default */.ZP), 30);// css load delay }); TableScroller.eventHandler = {}; TableScroller.prototype.clearChild = function () { this.$fixXCol.clearChild(); this.$fixedYHeader.clearChild(); this.$fixedXYHeader.clearChild(); if (this.$originTable) this.$originTable.remove(); this.$originTable = null; return this; }; TableScroller.prototype.addChild = function (elt) { if (this.$originTable) { throw new Error('Only one table is accepted!'); } this.$originContent = elt; this.$originTable = TableScroller_$('table', this.$originContent); this.$originCtn.addChild(this.$originTable); this.requestUpdateContent(); }; TableScroller.prototype._revertWrapped = function () { var pair; while (this._swappedPairs.length > 0) { pair = this._swappedPairs.pop(); (0,utils.swapChildrenInElt)(pair[0], pair[1]); } }; TableScroller.prototype._makeDataIdent = function () { this.originalRows = {}; Array.prototype.slice.call(this.$originTableBody.childNodes).forEach((elt, i) => { var id; if (elt.tagName === 'TR') { id = elt.getAttribute('data-id') || (0,stringGenerate.randomIdent)(12) + '_' + i; elt.setAttribute('data-id', id); this.originalRows[id] = TableScroller_$(elt); } else { elt.remove(); } }); }; TableScroller.prototype._updateFixedYHeader = function () { var head = TableScroller_$(this.$originTableThead.cloneNode(false)); var headRows = Array.prototype.filter.call(this.$originTableThead.childNodes, elt => elt.tagName === 'TR') .map(tr => { var copyTr = TableScroller_$(tr.cloneNode(false)); copyTr.$origin = tr; var cells = Array.prototype.filter.call(tr.childNodes, elt => elt.tagName === 'TH' || elt.tagName === 'TD') .map(td => TableScroller_$(Object.assign(td.cloneNode(true), { $origin: td }))); copyTr.addChild(cells); sliceCellArray(cells, this.fixedCol).forEach(elt => { (0,utils.swapChildrenInElt)(elt, elt.$origin); this._swappedPairs.push([elt, elt.$origin]); }); return copyTr; }); head.addChild(headRows); this.$fixedYHeader.clearChild().addChild(head); this.$fixedYHeader.attr('class', this.$originTable.attr('class')).addClass('as-table-scroller-fixed-y-header'); }; TableScroller.prototype._updateFixedYHeaderSize = function () { var bound = this.$originTable.getBoundingClientRect(); this.$fixedYHeader.addStyle('width', bound.width + 'px'); if (this.$fixedYHeader.firstChild && this.$fixedYHeader.firstChild.firstChild) Array.prototype.forEach.call(this.$fixedYHeader.firstChild.firstChild.childNodes, elt => { var bound = elt.$origin.getBoundingClientRect(); elt.addStyle('width', bound.width + 'px'); if (bound.width + bound.height === 0) { elt.addStyle('display', 'none'); } else { elt.removeStyle('display'); } }); var headBound = this.$originTableThead.getBoundingClientRect(); this.$fixedYHeader.addStyle('height', headBound.height + 'px'); // this.$fixedYHeader this.$headLine.addStyle('top',headBound.height - 1 + 'px') .addStyle('max-width', bound.width + 'px'); }; TableScroller.prototype._updateFixedXCol = function () { this.$fixXCol.clearChild(); var head = TableScroller_$(this.$originTableThead.cloneNode(false)); var headRows = Array.prototype.filter.call(this.$originTableThead.childNodes, elt => elt.tagName === 'TR') .map(tr => { var copyTr = TableScroller_$(tr.cloneNode(false)); copyTr.$origin = tr; var cells = Array.prototype.filter.call(tr.childNodes, elt => elt.tagName === 'TH' || elt.tagName === 'TD'); cells = sliceCellArray(cells, 0, this.fixedCol) .map(td => TableScroller_$(Object.assign(td.cloneNode(true), { $origin: td }))); copyTr.addChild(cells); return copyTr; }); head.addChild(headRows); var body = TableScroller_$(this.$originTableBody.cloneNode()); var rows = Array.prototype.filter.call(this.$originTableBody.childNodes, elt => elt.tagName === 'TR') .map(tr => { var copyTr = TableScroller_$(tr.cloneNode(false)); copyTr.$origin = tr; var id = copyTr.attr('data-id'); this.leftCopyRows[id] = copyTr; var cells = Array.prototype.filter.call(tr.childNodes, elt => elt.tagName === 'TH' || elt.tagName === 'TD'); cells = sliceCellArray(cells, 0, this.fixedCol) .map(td => TableScroller_$(Object.assign(td.cloneNode(true), { $origin: td }))); cells.forEach(elt => { (0,utils.swapChildrenInElt)(elt, elt.$origin); this._swappedPairs.push([elt, elt.$origin]); }); copyTr.addChild(cells); return copyTr; }); body.addChild(rows); this.$fixXCol.addChild(head) .addChild(body); this.$fixXCol.attr('class', this.$originTable.attr('class')).addClass('as-table-scroller-fixed-x-col'); }; TableScroller.prototype._updateFixedXColSize = function () { if (this.fixedCol === 0) return; var bound = this.$originTable.getBoundingClientRect(); // this.$fixXCol.addStyle('height', bound.height + 'px'); var width = 0; Array.prototype.forEach.call(this.$fixXCol.firstChild.childNodes, elt => { elt.addStyle('height', elt.$origin.getBoundingClientRect().height + 'px'); }); Array.prototype.forEach.call(this.$fixXCol.firstChild.firstChild.childNodes, elt => { var bound = elt.$origin.getBoundingClientRect(); width += bound.width + 1;//1 is border elt.addStyle('width', bound.width + 'px'); }); Array.prototype.forEach.call(this.$fixXCol.lastChild.childNodes, elt => { elt.addStyle('height', elt.$origin.getBoundingClientRect().height + 'px'); }); this.$fixXCol.addStyle('width', width + 'px'); this.$fixedXYHeader.addStyle('width', width + 'px'); }; TableScroller.prototype._updateFixedXYHeader = function () { var head = TableScroller_$(this.$originTableThead.cloneNode(false)); var headRows = Array.prototype.filter.call(this.$originTableThead.childNodes, elt => elt.tagName === 'TR') .map(tr => { var copyTr = TableScroller_('tr'); copyTr.$origin = tr; var cells = Array.prototype.filter.call(tr.childNodes, elt => elt.tagName === 'TH' || elt.tagName === 'TD'); cells = sliceCellArray(cells, 0, this.fixedCol) .map(td => TableScroller_$(Object.assign(td.cloneNode(true), { $origin: td }))); copyTr.addChild(cells); cells.forEach(cell => { (0,utils.swapChildrenInElt)(cell, cell.$origin); this._swappedPairs.push([cell, cell.$origin]); }) return copyTr; }); head.addChild(headRows); this.$fixedXYHeader.clearChild().addChild(head); this.$fixedXYHeader.attr('class', this.$originTable.attr('class')).addClass('as-table-scroller-fixed-xy-header'); }; TableScroller.prototype._updateFixedXYHeaderSize = function () { if (this.$fixedXYHeader.firstChild) { Array.prototype.forEach.call(this.$fixedXYHeader.firstChild.childNodes, elt => { elt.addStyle('height', elt.$origin.getBoundingClientRect().height + 'px'); }); } if (this.$fixedXYHeader.firstChild && this.$fixedXYHeader.firstChild.firstChild) Array.prototype.forEach.call(this.$fixedXYHeader.firstChild.firstChild.childNodes, elt => { elt.addStyle('width', elt.$origin.getBoundingClientRect().width + 'px'); }); this.$leftLine.addStyle('left', this.$fixedXYHeader.getBoundingClientRect().width - 1 + 'px'); }; TableScroller.prototype.updateContent = function () { if (!this.$originTable) return; this._revertWrapped(); this.$originTableThead = TableScroller_$('thead', this.$originTable); this.$originTableBody = TableScroller_$('tbody', this.$originTable); this._makeDataIdent(); this._updateFixedYHeader(); this._updateFixedXCol(); this._updateFixedXYHeader(); this.reindexRows(); this.updateContentSize(); requestAnimationFrame(() => { this.updateContentSize(); }); }; TableScroller.prototype._updateScrollStatus = function () { var bound = this.getBoundingClientRect(); var tableBound = this.$originTable.getBoundingClientRect(); if (bound.width < tableBound.width) { this.addClass('as-scroll-horizontal'); this.$vscrollbar.outerHeight = bound.height - 17; } else { this.$vscrollbar.outerHeight = bound.height; this.removeClass('as-scroll-horizontal'); } if (bound.height < tableBound.height) { this.addClass('as-scroll-vertical'); this.$hscrollbar.outerWidth = bound.width - 17; } else { this.$hscrollbar.outerWidth = bound.width; this.removeClass('as-scroll-vertical'); } var paddingBottom = this.getComputedStyleValue('--tvs-scroll-padding-bottom'); paddingBottom = parseFloat((paddingBottom || '0px').replace('px', '')); this.$vscrollbar.innerHeight = tableBound.height + paddingBottom; this.$hscrollbar.innerWidth = tableBound.width; if (this.style.maxHeight) { this.addStyle('height', tableBound.height + 17 + 'px'); } }; TableScroller.prototype.updateContentSize = function () { if (!this.$originTable) return; this._updateScrollStatus(); this._updateFixedYHeaderSize(); this._updateFixedXColSize(); this._updateFixedXYHeaderSize(); }; TableScroller.prototype.reindexRows = function () { if (!this.$originTableBody) return; Array.prototype.filter.call(this.$originTableBody.childNodes, elt => elt.tagName === 'TR') .forEach((elt, i) => { if (elt.$idx === null) return; elt.$idx = elt.$idx || TableScroller_$('.as-table-scroller-row-index', elt) || null; if (elt.$idx) elt.$idx.attr('data-idx', i + 1); }); Array.prototype.forEach.call(this.$fixXCol.lastChild.childNodes, (elt, i) => { if (elt.$idx === null) return; elt.$idx = elt.$idx || TableScroller_$('.as-table-scroller-row-index', elt) || null; if (elt.$idx) elt.$idx.attr('data-idx', i + 1); }); }; TableScroller.prototype.removeRow = function (row) { if (TableScroller_$(row).isDescendantOf(this)) { row.remove(); this.requestUpdateContent(); } return this; }; TableScroller.prototype.addRowBefore = function (row, bf) { if (!this.$originTableBody) return this; this.$originTableBody.addChildBefore(row, bf); this.requestUpdateContent(); return this; }; TableScroller.prototype.addRowAfter = function (row, at) { if (!this.$originTableBody) return this; this.$originTableBody.addChildAfter(row, at); this.requestUpdateContent(); return this; }; TableScroller.prototype.requestUpdateContent = function () { this.domSignal.emit('requestUpdateContent'); }; TableScroller.property = {}; TableScroller.property.fixedCol = { set: function (value) { value = value || 0; this._fixedCol = value; if (value === 0) this.$leftLine.addStyle('display', 'none'); else this.$leftLine.removeStyle('display'); this.requestUpdateContent(); // this.$domSignal.emit('requestUpdateContent'); }, get: function () { return this._fixedCol || 0; } }; ACore/* default.install */.Z.install(TableScroller); /* harmony default export */ const tablescroller_TableScroller = (TableScroller); /*** * * @param {TableScroller} elt * @constructor */ function ScrollController(elt) { this.elt = elt; Object.keys(this.constructor.prototype).filter(k => k.startsWith('ev_')) .forEach(k => this[k] = this[k].bind(this)); this.vscrollTarget = null; this.hscrollTarget = null; this.elt.$vscroller.on('scroll', this.ev_vScrollerScroll); this.elt.$vscrollbar.on('scroll', this.ev_vScrollbarScroll); this.elt.$hscroller.on('scroll', this.ev_hScrollerScroll); this.elt.$hscrollbar.on('scroll', this.ev_hScrollbarScroll); this.elt.$fixedYHeaderScroller.on('scroll', this.ev_fixedYHeaderScroll); } ScrollController.prototype.ev_vScrollerScroll = function (event) { var now = new Date().getTime(); if (this.vscrollTarget && now - this.vscrollTarget.time < 100 && this.vscrollTarget.elt !== this.elt.$vscroller) return; this.elt.$vscrollbar.innerOffset = this.elt.$vscroller.scrollTop; this.vscrollTarget = { time: now, elt: this.elt.$vscroller }; }; ScrollController.prototype.ev_vScrollbarScroll = function (event) { var now = new Date().getTime(); if (this.vscrollTarget && now - this.vscrollTarget.time < 100 && this.vscrollTarget.elt !== this.elt.$vscrollbar) return; this.elt.$vscroller.scrollTop = this.elt.$vscrollbar.innerOffset; this.vscrollTarget = { time: now, elt: this.elt.$vscrollbar }; }; ScrollController.prototype.ev_hScrollerScroll = function (event) { var now = new Date().getTime(); if (this.hscrollTarget && now - this.hscrollTarget.time < 100 && this.hscrollTarget.elt !== this.elt.$hscroller) return; this.elt.$hscrollbar.innerOffset = this.elt.$hscroller.scrollLeft; this.elt.$fixedYHeaderScroller.scrollLeft = this.elt.$hscroller.scrollLeft; this.hscrollTarget = { time: now, elt: this.elt.$hscroller }; }; ScrollController.prototype.ev_fixedYHeaderScroll = function (event) { var now = new Date().getTime(); if (this.hscrollTarget && now - this.hscrollTarget.time < 100 && this.hscrollTarget.elt !== this.elt.$fixedYHeaderScroller) return; this.elt.$hscrollbar.innerOffset = this.elt.$fixedYHeaderScroller.scrollLeft; this.elt.$hscroller.scrollLeft = this.elt.$fixedYHeaderScroller.scrollLeft; this.hscrollTarget = { time: now, elt: this.elt.$fixedYHeaderScroller }; }; ScrollController.prototype.ev_hScrollbarScroll = function (event) { var now = new Date().getTime(); if (this.hscrollTarget && now - this.hscrollTarget.time < 100 && this.hscrollTarget.elt !== this.elt.$hscrollbar) return; this.elt.$hscroller.scrollLeft = this.elt.$hscrollbar.innerOffset >> 0; this.vscrollTarget = { time: now, elt: this.elt.$hscrollbar }; }; // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tablevscroller.css var tablevscroller = __webpack_require__(2908); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TableVScroller.js var TableVScroller_ = ACore/* default._ */.Z._; var TableVScroller_$ = ACore/* default.$ */.Z.$; function TableVScroller() { var thisTS = this; this.$attachHook = TableVScroller_$('attachhook', this); this.$attachHook.updateSize = () => { this.updateStyle(); this.updateSize(); }; this.sync = new Promise(function (rs) { thisTS.$attachHook.on('attached', rs) }); this.$viewport = TableVScroller_$('.absol-table-vscroller-viewport', this); this.$attachHook.on('attached', function () { Dom/* default.addToResizeSystem */.ZP.addToResizeSystem(thisTS.$attachHook); this.updateSize(); }); this.$topTable = TableVScroller_$('.absol-table-vscroller-head', this); this.$headLine = TableVScroller_$('.absol-table-vscroller-head-line', this); this.swappedContentPairs = []; } 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) { this.$table = elt.$table || TableVScroller_$('table',elt); if (this.$table) { this.$viewport.addChild(elt); 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 () { if (!this.$thead) return; 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; var widthStyle; var displayStyle; for (var i = 0; i < realNodes.length; ++i) { if (!realNodes[i].tagName) continue; widthStyle = TableVScroller_$(realNodes[i]).getComputedStyleValue('width'); displayStyle = realNodes[i].getComputedStyleValue('display'); if (!widthStyle) { widthStyle = realNodes[i].getBoundingClientRect().width; if (!widthStyle) { displayStyle = 'none'; } widthStyle += 'px'; } // console.trace(getAncestorElementOf(realNodes[i]), widthStyle, displayStyle) TableVScroller_$(topNodes[i]).attr('style', realNodes[i].attr('style')).addStyle('width', widthStyle).addStyle('display', displayStyle); } this.$topTable.removeStyle('display'); }; TableVScroller.prototype.updateContent = function () { this.swappedContentPairs.forEach((originElt, copyElt) => { this.swappedContentPairs.push([originElt, copyElt]) }); this.swappedContentPairs = []; var elt = this.$table; this.$thead = TableVScroller_$('thead', elt); this.$tr = TableVScroller_$('tr', this.$thead); this.$topThead = (0,Dom/* depthClone */.qE)(this.$thead, (originElt, copyElt) => { if (originElt.tagName === 'TH') { (0,utils.swapChildrenInElt)(originElt, copyElt); this.swappedContentPairs.push([originElt, copyElt]) } }); this.$topTr = TableVScroller_$('tr', this.$topThead); this.$topTable.clearChild().addChild(this.$topThead).addStyle('display', 'none'); }; TableVScroller.prototype.update = function () { if (!this.$table) return; this.updateContent(); this.updateStyle(); this.updateSize(); }; ACore/* default.install */.Z.install(TableVScroller); /* harmony default export */ const js_TableVScroller = (TableVScroller); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TextArea2.js var TextArea2 = __webpack_require__(5789); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/textclipboard.css var textclipboard = __webpack_require__(2568); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TextClipboard.js var TextClipboard_ = ACore/* default._ */.Z._; var TextClipboard_$ = ACore/* default.$ */.Z.$; 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/* default.install */.Z.install(TextClipboard); /* harmony default export */ const js_TextClipboard = (TextClipboard); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/timeinput.css var timeinput = __webpack_require__(9392); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TimeInput.js var TimeInput_STATE_NEW = 1; var TimeInput_STATE_EDITED = 2; var TimeInput_STATE_NONE = 0; var TimeInput_ = ACore/* default._ */.Z._; var TimeInput_$ = ACore/* default.$ */.Z.$; /*** * @extends {AElement} * @constructor */ function TimeInput() { this._editingData = {}; this._isOpenPicker = false; this._lastEmitValue = null; this._min = 0; this._hour = null; this._minute = null; this._format = 'HH:mm'; this.$clockBtn = TimeInput_$('.as-time-input-icon-btn', this) .on('click', this.eventHandler.clickClockBtn); this.$text = TimeInput_$('input', this) .on('mousedown', this.eventHandler.mouseDownInput) .on('mouseup', this.eventHandler.mouseUpInput) .on('dblclick', this.eventHandler.dblclickInput) .on('keydown', this.eventHandler.keydown) .on('blur', this.eventHandler.inputBlur) .on('contextmenu', function (event) { event.preventDefault(); }); this.$clearBtn = TimeInput_$('button.as-time-input-clear-btn', this) .on('click', this.clear.bind(this)); this.$domSignal = TimeInput_('attachhook').addTo(this); this.domSignal = new DomSignal/* default */.ZP(this.$domSignal); this.domSignal.on('request_auto_select', this._autoSelect.bind(this)); OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'dayOffset', 'value'); this.dayOffset = null; this.hour = null; this.minute = null; this.disabled = false; this.notNull = true; /*** * @memberOf TimeInput# * @name min * @type {number} */ /*** * @memberOf TimeInput# * @name s24 * @type {boolean} * @readonly */ } TimeInput.tag = 'timeinput'; TimeInput.render = function () { return TimeInput_({ class: 'ac-time-input', extendEvent: ['change'], child: [ { tag: 'input', class: 'as-time-input-text', attr: { type: 'text' } }, { tag: 'button', class: 'as-time-input-clear-btn', child: 'span.mdi.mdi-close-circle' }, { tag: 'button', class: 'as-time-input-icon-btn', child: 'span.mdi.mdi-clock-outline' } ] }); }; TimeInput.prototype._autoSelect = js_DateTimeInput.prototype._autoSelect; TimeInput.prototype.tokenMap = { h: 'h', H: 'H', HH: 'H', hh: 'h', m: 'm', mm: 'm', a: 'a' }; TimeInput.prototype.tokenRegex = js_DateTimeInput.prototype.tokenRegex; TimeInput.prototype._tokenAt = js_DateTimeInput.prototype._tokenAt; TimeInput.prototype._editNextToken = js_DateTimeInput.prototype._editNextToken; TimeInput.prototype._editPrevToken = js_DateTimeInput.prototype._editPrevToken; TimeInput.prototype._makeTokenDict = js_DateTimeInput.prototype._makeTokenDict; TimeInput.prototype._makeValueDict = function (hour, minute) { var res = {}; if (typeof hour == 'number' && hour >= 0 && hour < 24) { res.h = { value: 1 + (hour - 1) % 12 }; res.H = { value: hour }; res.a = { value: hour >= 12 ? 'PM' : 'AM' }; } else { res.h = { value: NaN }; res.H = { value: NaN }; res.a = { value: 'a' }; } if (typeof minute === "number" && minute >= 0 && minute < 60) { res.m = { value: minute }; } else { res.m = { value: NaN }; } return res; }; TimeInput.prototype._applyValue = function (hour, minute) { this._hour = hour; this._minute = minute; this.$text.value = this._applyTokenDict(this._format, this._makeValueDict(hour, minute)); this._updateNullClass(); }; TimeInput.prototype._updateNullClass = function () { if (this._hour == null && this._minute == null) { this.addClass('as-value-null'); } else { this.removeClass('as-value-null'); } }; TimeInput.prototype._applyTokenDict = function (format, dict) { var rgx = new RegExp(this.tokenRegex.source, 'g'); var tokenMap = this.tokenMap; return format.replace(rgx, function (full, g1, g2, sourceText) { if (g1 && g1 === 'a') { return dict[g1].value; } else if (g1 && tokenMap[g1]) { var ident = tokenMap[g1]; if (dict[ident] && !isNaN(dict[ident].value)) { return (0,utils.zeroPadding)(dict[ident].value, g1.length); } else { return full; } } else return full; }); }; TimeInput.prototype._correctingInput = function () { var tkDict = this._makeTokenDict(this.$text.value); // TODO: check min, max, }; TimeInput.prototype._correctingCurrentToken = function () { var token = this._tokenAt(this.$text.selectionStart); if (!token) return; var value; if (token.ident === 'a') { if (token.text !== 'a' && token.text !== 'AM' && token.text !== 'PM') { token.replace('a', false); } } else { value = parseInt(token.text); var rqMin = { h: 1, hh: 1, m: 0, mm: 0, H: 0, HH: 0 }[token.ident]; var rqMax = { H: 23, HH: 23, h: 12, hh: 12, m: 59, mm: 59 }[token.ident]; if (rqMin !== undefined) { if (!isNaN(value)) { if ((value < rqMin || value > rqMin)) { value = Math.max(rqMin, Math.min(rqMax, value)); token.replace((0,utils.zeroPadding)(value, token.ident.length), false); this._editingData[this.tokenMap[token.ident]] = value; } } else if (token.text !== token.ident) { token.replace(token.ident, false); } } } }; TimeInput.prototype._loadValueFromInput = function () { var tkDick = this._makeTokenDict(this.$text.value); var hour = NaN; var minute = NaN; if (tkDick.H) { hour = Math.min(23, Math.max(0, tkDick.H.value)); } else if (tkDick.h) { hour = Math.min(12, Math.max(1, tkDick.h.value)); if (tkDick.a && tkDick.a.value === 'PM') { hour += 12; } } if (tkDick.m) { minute = Math.min(59, Math.max(0, tkDick.m.value)); } this._hour = isNaN(hour) ? null : hour; this._minute = isNaN(minute) ? null : minute; this._updateNullClass(); }; TimeInput.prototype.clear = function (event) { this._applyValue(null, null); this._notifyIfChange(event); } TimeInput.prototype._notifyIfChange = function (event) { if (this._lastEmitValue === this.dayOffset) return; this.emit('change', { type: 'change', target: this, dayOffset: this.dayOffset, hour: this.hour, minute: this.minute, originEvent: event }, this); this._lastEmitValue = this.dayOffset; }; TimeInput.property = {}; TimeInput.property.hour = { set: function (value) { if (typeof value == "number") { value = (value % 24) || 0; } else { value = null; } this._applyValue(value, this._minute); this._lastEmitValue = this.dayOffset; }, get: function () { return this._hour; } }; TimeInput.property.minute = { set: function (value) { if (typeof value == "number") { value = (value % 60) || 0; } else { value = null; } this._applyValue(this._hour, value); this._lastEmitValue = this.dayOffset; }, get: function () { return this._minute; } }; TimeInput.property.value = { set: function (value) { if (typeof value == "number" || (value && value.getTime)) { value = value || 0; if (value.getTime) value = value.getTime() - (0,datetime.beginOfDay)(value).getTime(); else { value = value % datetime.MILLIS_PER_DAY; } this.hour = Math.floor(value / datetime.MILLIS_PER_HOUR); this.minute = Math.floor((value % datetime.MILLIS_PER_HOUR) / datetime.MILLIS_PER_MINUTE); } else { this.hour = null; this.minute = null; } }, get: function () { if (this._hour === null || this._minute === null) return null; return this._hour * datetime.MILLIS_PER_HOUR + this._minute * datetime.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'); this.$text.disabled = value; }, get: function () { return this._disabled; } }; TimeInput.property.format = { enumerable: true, configurable: true, set: function (value) { if (typeof value !== "string") value = "HH:mm"; value = value || 'HH:mm'; this._format = value; this.dayOffset = this['dayOffset']; }, get: function () { return this._format; } }; TimeInput.property.s24 = { get: function () { var t = this.format.match(new RegExp(this.tokenRegex.source, 'g')); return !t || t.indexOf('a') < 0; } }; TimeInput.property.notNull = { set: function (value) { if (value) { if (this.dayOffset === null) { this.dayOffset = 0; } this.addClass('as-must-not-null'); } else { this.removeClass('as-must-not-null'); } }, get: function () { return this.hasClass('as-must-not-null'); } }; TimeInput.property.readOnly = { set: function (value) { value = !!value; if (value) this.addClass('as-read-only'); else this.removeClass('as-read-only'); }, get: function () { return this.hasClass('as-read-only'); } }; TimeInput.property.min = { set: function (value) { if (!(0,utils.isRealNumber)(value)) value = 0; value = Math.floor(value); value = Math.max(0, Math.min(datetime.MILLIS_PER_DAY, value)); this._min = value; }, get: function () { return this._min; } }; TimeInput.eventHandler = {}; TimeInput.eventHandler.clickClockBtn = function () { this._attachPicker(this); }; TimeInput.eventHandler.mouseUpInput = js_DateTimeInput.eventHandler.mouseUpInput; TimeInput.eventHandler.mouseDownInput = js_DateTimeInput.eventHandler.mouseDownInput; TimeInput.eventHandler.dblclickInput = js_DateTimeInput.eventHandler.dblclickInput; TimeInput.eventHandler.inputBlur = js_DateTimeInput.eventHandler.inputBlur; TimeInput.eventHandler.clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.share.$picker, event) && !(0,EventEmitter/* hitElement */.EY)(this.share.$closeBtn, event)) return; this._releasePicker(); }; TimeInput.eventHandler.pickerChange = function (event) { this._applyValue(event.hour, event.minute); this._notifyIfChange(event); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); }; /*** * * @param {KeyboardEvent} event */ TimeInput.eventHandler.keydown = function (event) { var token = this._tokenAt(this.$text.selectionStart); var endToken = this._tokenAt(this.$text.selectionEnd); if (!token) { if (event.key === 'Enter') { this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(event); } return; } var newTokenText; var value; if (event.key.startsWith('Arrow')) { event.preventDefault(); switch (event.key) { case 'ArrowLeft': this._editPrevToken(); break; case 'ArrowRight': this._editNextToken(); break; case 'ArrowUp': case 'ArrowDown': switch (token.ident) { case "H": case "HH": value = parseInt(token.text); if (isNaN(value)) { this._editingData.H = event.key === 'ArrowUp' ? 0 : 23; } else { this._editingData.H = (value + (event.key === 'ArrowUp' ? 1 : 23)) % 24; } newTokenText = (0,utils.zeroPadding)(this._editingData.H, token.ident.length); token.replace(newTokenText, true); break; case "hh": case 'h': value = parseInt(token.text); if (isNaN(value)) { this._editingData.h = event.key === 'ArrowUp' ? 1 : 12; } else { this._editingData.h = 1 + (value + (event.key === 'ArrowUp' ? 0 : 10)) % 12; } newTokenText = this._editingData.h + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case "mm": case 'm': value = parseInt(token.text); if (isNaN(value)) { this._editingData.m = event.key === 'ArrowUp' ? 0 : 59; } else { this._editingData.m = (value + (event.key === 'ArrowUp' ? 1 : 59)) % 60; } newTokenText = this._editingData.m + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case 'a': value = token.text; this._editingData.a = value === 'PM' ? "AM" : "PM"; newTokenText = this._editingData.a; token.replace(newTokenText, true); break; } break; } } else if (event.key === "Delete" || event.key === 'Backspace') { event.preventDefault(); if (endToken.idx !== token.idx) { if (this.notNull) { this.$text.value = (0,datetime.formatDateTime)((0,datetime.beginOfDay)(new Date()), this.format); } else { this.$text.value = this._format; } this.$text.select(); } else { if (this.notNull) { token.replace(token.ident === 'a' ? 'AM' : (0,utils.zeroPadding)((token.ident === 'hh' || token.ident === 'h') ? 12 : 0, token.ident.length), true); } else { token.replace(token.ident, true); } if (event.key === "Delete") this._editNextToken(); else this._editPrevToken(); } } else if (event.key === "Enter" || event.key === 'Tab') { this._correctingInput(); this._loadValueFromInput(); this._notifyIfChange(event); } else if (event.ctrlKey) { switch (event.key) { case 'a': case 'A': break; case 'c': case 'C': break; case 'x': case 'X': this.domSignal.once('clear_value', function () { this.$text.value = this._format; this.$text.select(); }.bind(this)); this.domSignal.emit('clear_value'); break; default: event.preventDefault(); } } else if (event.key.match(/^[0-9]$/g)) { event.preventDefault(); var dVal = parseInt(event.key); if (this._editingData.state === TimeInput_STATE_NEW) { switch (token.ident) { case 'm': case 'mm': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = TimeInput_STATE_EDITED; if (dVal > 5) { this._editNextToken(); } break; case 'h': case 'hh': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = TimeInput_STATE_EDITED; if (dVal > 1) { this._editNextToken(); } break; case 'H': case 'HH': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editingData.state = TimeInput_STATE_EDITED; if (dVal > 2) { this._editNextToken(); } break; } } else { switch (token.ident) { case 'm': case 'mm': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(0, Math.min(59, dVal)); this._editingData.m = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'h': case 'hh': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(12, dVal)); this._editingData.h = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; case 'H': case 'HH': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(0, Math.min(23, dVal)); this._editingData.H = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this._editNextToken(); break; } } } else if (event.key.match(/^[aApPSCsc]$/) && token.ident === 'a') { event.preventDefault(); if (event.key.match(/^[aAsS]$/)) { token.replace('AM', true); this._editingData.a = "AM"; } else { token.replace('PM', true); this._editingData.a = "PM"; } this._editNextToken(); } else { event.preventDefault(); } }; TimeInput.prototype.share = { $picker: null, $holdingInput: null, $follower: null, $closeBtn: null }; TimeInput.prototype._preparePicker = function () { if (this.share.$picker) return; this.share.$picker = TimeInput_({ tag: js_ChromeTimePicker.tag, class: ['as-time-input-picker'] }); this.share.$follower = TimeInput_({ tag: 'follower', class: ['as-time-input-follower', 'as-dropdown-box-common-style'], child: [ this.share.$picker, { class: 'as-dropdown-box-footer', child: [ { class: 'as-dropdown-box-footer-right', child: ['<a data-ml-key="txt_close" class="as-select-list-box-close-btn"></a>'] } ] }] }); }; TimeInput.prototype._attachPicker = function () { this._preparePicker(); if (this.share.$holdingInput) this.share.$holdingInput._releasePicker(); this.share.$holdingInput = this; this.share.$follower.addTo(document.body); this.share.$follower.followTarget = this; this.share.$follower.sponsorElement = this; this.share.$follower.addStyle('visibility', 'hidden'); this.share.$picker.hour = this.hour || 0; this.share.$picker.minute = this.minute || 0; this.share.$picker.s24 = this.s24; this.share.$picker.min = this.min; this.share.$picker.domSignal.emit('request_scroll_into_selected') this.$clockBtn.off('click', this.eventHandler.clickClockBtn); this.share.$picker.on('change', this.eventHandler.pickerChange); setTimeout(function () { document.addEventListener('click', this.eventHandler.clickOut); this.share.$follower.removeStyle('visibility'); }.bind(this), 5); }; TimeInput.prototype._releasePicker = function () { if (this.share.$holdingInput !== this) return; // this.share.$calendar.off('pick', this.eventHandler.calendarPick); this.share.$follower.remove(); document.removeEventListener('click', this.eventHandler.clickOut); this.share.$picker.off('change', this.eventHandler.pickerChange); setTimeout(function () { this.$clockBtn.on('click', this.eventHandler.clickClockBtn); }.bind(this), 5) this.share.$holdingInput = null; }; ACore/* default.install */.Z.install(TimeInput); /* harmony default export */ const js_TimeInput = (TimeInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/timepicker.css var timepicker = __webpack_require__(9099); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TimePicker.js //todo: add this to absol var isTouchDevice = BrowserDetector/* default.hasTouch */.Z.hasTouch && !BrowserDetector/* default.os.type.match */.Z.os.type.match(/windows|X11|Ubuntu|Linux/); //todo: re select text after click var TimePicker_ = ACore/* default._ */.Z._; var TimePicker_$ = ACore/* default.$ */.Z.$; var TimePicker_$g = Svg/* default.ShareInstance.$ */.ZP.ShareInstance.$; var TimePicker_g = Svg/* default.ShareInstance._ */.ZP.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/* default.addToResizeSystem */.ZP.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() - (0,datetime.beginOfDay)(value).getTime(); else { value = value % datetime.MILLIS_PER_DAY; } this.hour = Math.floor(value / datetime.MILLIS_PER_HOUR); this.minute = Math.floor((value % datetime.MILLIS_PER_HOUR) / datetime.MILLIS_PER_MINUTE); }, get: function () { return this._hour * datetime.MILLIS_PER_HOUR + this._minute * datetime.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/* default.install */.Z.install('timepicker', TimePicker); /* harmony default export */ const js_TimePicker = (TimePicker); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Tooltip.js var Tooltip = __webpack_require__(5194); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/treelist.css var treelist = __webpack_require__(7009); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TreeListItem.js var TreeListItem_ = ACore/* default._ */.Z._; var TreeListItem_$ = ACore/* default.$ */.Z.$; 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/* default.drillProperty */.ZP.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.hasClass('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/* default.install */.Z.install(TreeListItem); /* harmony default export */ const js_TreeListItem = (TreeListItem); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TreeList.js var TreeList_ = ACore/* default._ */.Z._; var TreeList_$ = ACore/* default.$ */.Z.$; 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/* default.install */.Z.install(TreeList); /* harmony default export */ const js_TreeList = (TreeList); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selecttreemenu.css var selecttreemenu = __webpack_require__(7665); ;// 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) { Object.defineProperty(node, 'level', { configurable: true, writable: true, value: level }); arr.push(node); if (Array.isArray(node.items) && node.items.length > 0) node.items.forEach(visit.bind(null, level + 1)); } if (items && items.forEach) items.forEach(visit.bind(null, 0)); return arr; } ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTreeBox.js var SelectTreeBox_ = ACore/* default._ */.Z._; var SelectTreeBox_$ = ACore/* default.$ */.Z.$; var SelectTreeBox_$$ = ACore/* default.$$ */.Z.$$; /*** * @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); }; ACore/* default.install */.Z.install(SelectTreeBox); /* harmony default export */ const js_SelectTreeBox = (SelectTreeBox); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTreeMenu.js var SelectTreeMenu_ = ACore/* default._ */.Z._; var SelectTreeMenu_$ = ACore/* default.$ */.Z.$; /*** * @extends SelectMenu * @constructor */ function SelectTreeMenu() { 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; this.$selectlistBox.sponsorElement = this; OOP/* default.drillProperty */.ZP.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/* default.install */.Z.install(SelectTreeMenu); /* harmony default export */ const js_SelectTreeMenu = (SelectTreeMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/widthheightresizer.css var widthheightresizer = __webpack_require__(9360); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Draggable.js var Draggable = __webpack_require__(5611); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/WidthHeightSizer.js //can replace with other module var WidthHeightSizer_ = ACore/* default._ */.Z._; var WidthHeightSizer_$ = ACore/* default.$ */.Z.$; 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/* default.bindFunctions */.ZP.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); (0,Draggable/* default */.Z)(res.$anchorBotRight).on('drag', res.eventHandler.dragBotRight).on('predrag', res.eventHandler.preDrag); (0,Draggable/* default */.Z)(res.$anchorTopRight).on('drag', res.eventHandler.dragTopRight).on('predrag', res.eventHandler.preDrag); (0,Draggable/* default */.Z)(res.$anchorBotLeft).on('drag', res.eventHandler.dragBotLeft).on('predrag', res.eventHandler.preDrag); (0,Draggable/* default */.Z)(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/* default.creator.widthheightresizer */.Z.creator.widthheightresizer = WidthHeightResizer; /* harmony default export */ const WidthHeightSizer = (WidthHeightResizer); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Modal.js var Modal = __webpack_require__(9826); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/trackbar.css var trackbar = __webpack_require__(5220); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TrackBar.js var TrackBar_ = ACore/* default._ */.Z._; var TrackBar_$ = ACore/* default.$ */.Z.$; /*** * @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 = (0,Math_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 || this.readOnly) { 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.hasClass('as-disabled'); }, set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } } }; TrackBar.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; ACore/* default.install */.Z.install(TrackBar); /* harmony default export */ const js_TrackBar = (TrackBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/trackbarinput.css var trackbarinput = __webpack_require__(502); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TrackBarInput.js var TrackBarInput_ = ACore/* default._ */.Z._; var TrackBarInput_$ = ACore/* default.$ */.Z.$; /*** * * @extends {AElement} * @constructor */ function TrackBarInput() { var thisTI = 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: [ 'trackbar', '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; }; TrackBarInput.prototype.addStyle = function (arg0, arg1) { if (arg0 === 'textAlign' || arg0 === 'text-align') { this.$input.addStyle('text-align', arg1); return this; } else { AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); return this; } }; // 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.addStyle('--input-width', 3 + (value - 2) * 0.42 + 0.3 + 'em'); } else { this._inputTextWidth = value; this.addStyle('--input-width', value); } }, get: function () { return this._inputTextWidth; } }; TrackBarInput.property.disabled = { get: function () { return this.hasClass('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.property.readOnly = { set: function (value) { value = !!value; if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } this.$input.readOnly = value; this.$trackbar.readOnly = value; }, get: function () { return this.hasClass('as-read-only'); } } 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 */ const js_TrackBarInput = (TrackBarInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/buttonrange.css var buttonrange = __webpack_require__(9872); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ButtonRange.js var ButtonRange_ = ACore/* default._ */.Z._; var ButtonRange_$ = ACore/* default.$ */.Z.$; 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/* default.addToResizeSystem */.ZP.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/* default.install */.Z.install(ButtonRange); /* harmony default export */ const js_ButtonRange = (ButtonRange); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/DropZone.js var DropZone = __webpack_require__(1577); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/radioinput.css var radioinput = __webpack_require__(1646); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/RadioInput.js //new tech, not working version var RadioInput_ = ACore/* default._ */.Z._; var RadioInput_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.install */.Z.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/* default.documentReady.then */.ZP.documentReady.then(function (){ RadioInput.autoReplace(); }) }; /* harmony default export */ const js_RadioInput = (RadioInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/OnScreenWidget.js var OnScreenWidget = __webpack_require__(7315); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/RibbonSplitButton.js var RibbonSplitButton = __webpack_require__(6455); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/RibbonButton.js var RibbonButton = __webpack_require__(9664); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/timeselectinput.css var timeselectinput = __webpack_require__(7931); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TimeSelectInput.js var TimeSelectInput_ = ACore/* default._ */.Z._; var TimeSelectInput_$ = ACore/* default.$ */.Z.$; /*** * @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.$selectlistBox.sponsorElement = this; this._makeTimeList(0, datetime.MILLIS_PER_DAY, datetime.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/14 + 'em'); }; 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 / datetime.MILLIS_PER_DAY) * datetime.MILLIS_PER_DAY; } var min = Math.floor(mil / (datetime.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 = (0,utils.positiveIntMod)(parseInt(nums[0]), 24); var m = (0,utils.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 * datetime.MILLIS_PER_HOUR + m * datetime.MILLIS_PER_MINUTE; }; TimeSelectInput.prototype.isActive = function () { return document.activeElement == this || AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(document.activeElement, this) || AElement/* default.prototype.isDescendantOf.call */.Z.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.hasClass('as-focus'); }, set: function (value) { value = !!value; if (value && (this.disabled || this.readOnly)) return; if (this.isFocus == value) return; if (value) { this.addClass('as-focus'); } else { this.removeClass('as-focus'); } var thisI = this; if (value) { this.$selectlistBox.addTo(document.body) 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 = (0,utils.positiveIntMod)(value, 24); this._lastDayOffset = this.dayOffset; this._updateValueText(); }, get: function () { return this._hour; } }; TimeSelectInput.property.minute = { set: function (value) { this._minute = (0,utils.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.hasClass('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 = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(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 / datetime.MILLIS_PER_HOUR); this._minute = Math.floor(mil / datetime.MILLIS_PER_MINUTE) % 60; this.$selectlistBox.values = [mil]; this.$selectlistBox.viewListAtFirstSelected(); }; TimeSelectInput.eventHandler.click = function (event) { if (!EventEmitter/* default.hitElement */.ZP.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/* default.hitElement */.ZP.hitElement(this, event) || EventEmitter/* default.hitElement */.ZP.hitElement(this.$selectlistBox, event)) return; this.isFocus = false; }; ACore/* default.install */.Z.install(TimeSelectInput); /* harmony default export */ const js_TimeSelectInput = (TimeSelectInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/snackbar.css var snackbar = __webpack_require__(3007); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/Snackbar.js var Snackbar_ = ACore/* default._ */.Z._; var Snackbar_$ = ACore/* default.$ */.Z.$; 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 ((0,Dom/* isDomNode */.mV)(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/* default.install */.Z.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 */ const Snackbar = (SnackBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/multiselectmenu.css var multiselectmenu = __webpack_require__(3010); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/LanguageSystem.js var LanguageSystem = __webpack_require__(6013); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MultiSelectMenu.js var MultiSelectMenu_ = ACore/* default._ */.Z._; var MultiSelectMenu_$ = ACore/* default.$ */.Z.$; /*** * @augments SelectBox * @augments PositionTracker * @constructor */ function MultiSelectMenu() { this.on('click', this.eventHandler.click); /*** * * @type {SelectListBox} */ 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/* default.drillProperty */.ZP.drillProperty(this, this.$selectlistBox, 'enableSearch'); this.$items = []; this._values = []; this.items = []; this.values = []; this.$selectlistBox.followTarget = this; this.$selectlistBox.sponsorElement = this; this.disableClickToFocus = false; this.orderly = true; this.itemFocusable = false; this._activeValue = undefined; this.strictValue = true; } MultiSelectMenu.tag = 'MultiSelectMenu'.toLowerCase(); MultiSelectMenu.render = function () { return MultiSelectMenu_({ class: ['as-multi-select-menu'], extendEvent: ['change', 'add', 'remove', 'activevaluechange'], attr: { tabindex: '1' }, child: [ { attr:{ 'data-ml-key': 'txt_select_value' }, 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 = requireItem(this); this.$itemCtn.addChild(itemElt); this.$items.push(itemElt); } while (this.$items.length > n) { itemElt = this.$items.pop(); this.$itemCtn.removeChild(itemElt); 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 () { this.viewItemsByValues(this._values); }; MultiSelectMenu.prototype.viewItemsByValues = function (values) { var cBound = this.getBoundingClientRect(); var items = this._getItemsByValues(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/* default.updateUp */.Z.updateUp(this); } }; MultiSelectMenu.property = {}; MultiSelectMenu.property.disabled = SelectMenu2.property.disabled; MultiSelectMenu.property.hidden = SelectMenu2.property.hidden; MultiSelectMenu.property.isFocus = SelectMenu2.property.isFocus; MultiSelectMenu.property.readOnly = SelectMenu2.property.readOnly; 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.prototype._implicit = function (values) { if (values === null || values === undefined) values = []; if (!(values instanceof Array)) { values = [values]; } values = values.filter(function (value) { var type = typeof value; return type === 'string' || type === 'number' || type === "boolean" || value === null || value === undefined; }).reduce(function (ac, cr) { if (!ac.dict[cr]) { ac.dict[cr] = true; ac.result.push(cr); } return ac; }, { result: [], dict: {} }).result; return values; }; MultiSelectMenu.prototype._explicit = function (values) { var selectListBoxElt = this.$selectlistBox; var strictValue = this.strictValue; values = values.filter(function (value) { if (!strictValue) return true; var cts = selectListBoxElt.findItemsByValue(value); if (cts && cts.length > 0) return true; return false; }) return values; }; 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 = this._implicit(values); this._values = values; this.$selectlistBox.values = values; this._updateItems(); }, get: function () { return this._explicit(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.hasClass('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.hasClass('as-item-focusable'); } }; MultiSelectMenu.property.activeValue = { set: function (value) { this._activeValue = value; if (this.itemFocusable) { this._updateFocusItem(); //todo } }, get: function () { return this._activeValue; } }; MultiSelectMenu.property.strictValue = { set: function (value) { if (value){ this.attr('data-strict-value', null); } else { this.attr('data-strict-value', 'false'); } }, get: function () { var data = this.attr('data-strict-value'); return !data || (data != 'false' && data !== '0'); } }; 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 (this.disabled) return; if ((event.target === this || event.target === this.$itemCtn) && !this.disableClickToFocus && !this.readOnly) { this.isFocus = !this.isFocus; } }; MultiSelectMenu.eventHandler.bodyClick = function (event) { if (!EventEmitter/* default.hitElement */.ZP.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._values = currentValues.slice(); 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); }; MultiSelectMenu.eventHandler.pressItem = function (item, event) { var value = item.value; if (this.itemFocusable) { var prevActiveValue = this.activeValue; if (value !== prevActiveValue) { this.activeValue = value; this.emit('activevaluechange', { target: this, originEvent: event, prevActiveValue: prevActiveValue, activeValue: value }, this); } } }; MultiSelectMenu.eventHandler.pressCloseItem = function (item, event) { var value = item.value; var data = item.data; var index; index = this._values.indexOf(value); if (index >= 0) { this._values.splice(index, 1); this._updateItems(); this.$selectlistBox.values = this._values; this.emit('remove', Object.assign({}, event, { type: 'change', target: this, data: data, value: value, itemData: data }), this); this.emit('change', Object.assign({}, event, { type: 'change', action: 'remove', target: this, data: data, value: value, itemData: data }), this); } }; ACore/* default.install */.Z.install(MultiSelectMenu); /* harmony default export */ const js_MultiSelectMenu = (MultiSelectMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/countdownclock.css var countdownclock = __webpack_require__(5197); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CountdownClock.js var CountdownClock_ = ACore/* default._ */.Z._; var CountdownClock_$ = ACore/* default.$ */.Z.$; /*** * @extends AElement * @constructor */ function CountdownClock() { var thisC = this; this.$attachhook = CountdownClock_('attachhook').addTo(this) .on('attached', function () { ResizeSystem/* default.add */.Z.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 [(0,Math_int.numberAutoFixed)(50 + 60 * Math.cos(angle), 5) + '%', (0,Math_int.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/* default.install */.Z.install(CountdownClock); /* harmony default export */ const js_CountdownClock = (CountdownClock); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Toast.js var Toast = __webpack_require__(1376); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Icons.js + 22 modules var Icons = __webpack_require__(2380); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/emojipickertooltip.css var emojipickertooltip = __webpack_require__(1158); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiAnims.js var EmojiAnims = __webpack_require__(4670); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/pageindicator.css var pageindicator = __webpack_require__(8895); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/PageIndicator.js var PageIndicator_ = ACore/* default._ */.Z._; var PageIndicator_$ = ACore/* default.$ */.Z.$; /*** * @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/* default.install */.Z.install(PageIndicator); /* harmony default export */ const js_PageIndicator = (PageIndicator); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiPickerTooltip.js var EmojiPickerTooltip_ = ACore/* default._ */.Z._; var EmojiPickerTooltip_$ = ACore/* default.$ */.Z.$; var isMobile = BrowserDetector/* default.isMobile */.Z.isMobile; /*** * @augments Tooltip * @augments AElement * @augments Hanger * @constructor */ function EmojiPickerTooltip() { if (isMobile) { EmojiPickerTooltip_({ tag: Hanger/* default.tag */.Z.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 = EmojiAnims/* default.reduce */.Z.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(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 = EmojiPicker/* default.assetRoot */.Z.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/* default.install */.Z.install(EmojiPickerTooltip); EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0; 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 = Rectangle/* default.fromClientRect */.Z.fromClientRect((0,Dom/* traceOutBoundingClientRect */.DI)(EmojiPickerTooltip.$element)); var eBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(EmojiPickerTooltip.$element.getBoundingClientRect()); if (!outBound.isCollapse(eBound, 0)) { EmojiPickerTooltip._scrollOutListener && EmojiPickerTooltip._scrollOutListener(); } (0,Tooltip/* updateTooltipPosition */.J)(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/* default.add */.Z.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 && ((0,EventEmitter/* hitElement */.EY)(EmojiPickerTooltip.$tooltip.$leftBtn, event) || (0,EventEmitter/* hitElement */.EY)(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 */ const js_EmojiPickerTooltip = (EmojiPickerTooltip); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/emojicounter.css var emojicounter = __webpack_require__(8364); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/emojiuserlisttooltip.css var emojiuserlisttooltip = __webpack_require__(9864); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiUserListTooltip.js var EmojiUserListTooltip_ = ACore/* default._ */.Z._; var EmojiUserListTooltip_$ = ACore/* default.$ */.Z.$; /*** * @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 = EmojiPicker/* default.assetRoot */.Z.assetRoot + '/anim/x60/' + icon.imageFileName; this._text = value; this.$sprite.src = url; }, get: function () { return this._text; } }; ACore/* default.install */.Z.install(EmojiUserListTooltip); /* harmony default export */ const js_EmojiUserListTooltip = ((/* unused pure expression or super */ null && (EmojiUserListTooltip))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiCounter.js var EmojiCounter_$ = ACore/* default.$ */.Z.$; var EmojiCounter_ = ACore/* default._ */.Z._; var EmojiCounter_isMobile = BrowserDetector/* default.isMobile */.Z.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 = EmojiPicker/* default.assetRoot */.Z.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 = EmojiPicker/* default.assetRoot */.Z.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/* default.install */.Z.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(); (0,Tooltip/* updateTooltipPosition */.J)(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 = Rectangle/* default.fromClientRect */.Z.fromClientRect((0,Dom/* traceOutBoundingClientRect */.DI)(EmojiCounter.$element)); var eBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(EmojiCounter.$element.getBoundingClientRect()); if (!outBound.isCollapse(eBound, 0)) { js_EmojiPickerTooltip._scrollOutListener && EmojiCounter._scrollOutListener(); } (0,Tooltip/* updateTooltipPosition */.J)(EmojiCounter); }; EmojiCounter.updatePosition = EmojiCounter.updatePosition.bind(EmojiCounter); /* harmony default export */ const js_EmojiCounter = (EmojiCounter); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/EmojiCounterList.js var EmojiCounterList_ = ACore/* default._ */.Z._; var EmojiCounterList_$ = ACore/* default.$ */.Z.$; /*** * @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.hasClass && e.hasClass('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/* default.install */.Z.install(EmojiCounterList); /* harmony default export */ const js_EmojiCounterList = (EmojiCounterList); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/rotatedtext.css var rotatedtext = __webpack_require__(1854); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/RotatedText.js /*** * @extends AElement * @constructor */ function RotatedText() { this.$attachHook = (0,ACore.$)('attachhook', this); this.$attachHook.requestUpdateSize = this.eventHandler.positionChange; this.$attachHook.on('attached', this.eventHandler.attached); this.$anchor = (0,ACore.$)('.as-rotated-text-anchor', this); this.$content = (0,ACore.$)('.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 (0,ACore._)({ 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/* default.add */.Z.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/* default.install */.Z.install(RotatedText); /* harmony default export */ const js_RotatedText = (RotatedText); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/verticaltreediagram.css var verticaltreediagram = __webpack_require__(7817); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/VerticalTreeDiagram.js function VerticalTreeDiagramNode() { this.$childCtn = (0,ACore.$)('.as-vertical-tree-diagram-child-ctn', this); this.$name = (0,ACore.$)('.as-vertical-tree-diagram-node-name', this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$name.firstChild, 'name', 'data'); this.name = "UndefinedNodeName"; } VerticalTreeDiagramNode.tag = 'VerticalTreeDiagramNode'.toLowerCase(); VerticalTreeDiagramNode.render = function () { return (0,ACore._)({ 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 (0,ACore._)(VerticalTreeDiagramNode.tag, true); } VerticalTreeDiagram.property = {}; VerticalTreeDiagram.property.data = { set: function (data) { data = data || {}; this._data = data; function makeNode(nodeData) { return (0,ACore._)({ 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/* default.install */.Z.install(VerticalTreeDiagramNode); ACore/* default.install */.Z.install(VerticalTreeDiagram); /* harmony default export */ const js_VerticalTreeDiagram = (VerticalTreeDiagram); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tokenfield.css var tokenfield = __webpack_require__(5347); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TokenField.js /*** * @extends AElement * @constructor */ function TokenField() { this.on('click', this.eventHandler.click); this.$input = (0,ACore.$)('input', this) .on('keydown', this.eventHandler.inputKeyDown) .on('focus', this.eventHandler.inputInteract) .on('click', this.eventHandler.inputInteract) .on('keydown', this.eventHandler.inputInteract); this.$attachhook = (0,ACore.$)('attachhook', this) .on('attached', function () { ResizeSystem/* default.add */.Z.add(this); this.requestUpdateSize(); }); this.$attachhook.requestUpdateSize = this.updateSize.bind(this); /*** * * @type {SelectListBox} */ this.$selectlistBox = (0,ACore._)({ tag: 'selectlistbox', props: { anchor: [1, 6, 2, 5] }, on: { preupdateposition: this.eventHandler.preUpdateListPosition } }); this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem); this.$selectlistBox.sponsorElement = this; this.autocomplete = null; this.separator = ' '; this.placeHolder = ''; } TokenField.tag = 'TokenField'.toLowerCase(); TokenField.render = function () { return (0,ACore._)({ 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 = (0,ACore._)({ 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), focus: this.eventHandler.itemFocus.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 (key === 'Enter') return true; 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.prototype._searchInList = function () { if (this._searchTimeout > 0) { clearTimeout(this._searchTimeout); } this._searchTimeout = setTimeout(function () { var text = this.$input.value; if (this.$selectlistBox.isDescendantOf(document.body)) { this.$selectlistBox.$searchInput.value = text; this.$selectlistBox.eventHandler.searchModify(); if (this.$selectlistBox._displayItems.length === 0) { this.$selectlistBox.addStyle('visibility', 'hidden'); } else { this.$selectlistBox.removeStyle('visibility'); } } }.bind(this), 100); } 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.hasClass('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.hasClass && elt.hasClass('as-token-field-item'); }).map(function (elt) { return elt.data.value; }); } }; TokenField.property.autocomplete = { set: function (value) { this._autocomplete = value || null; if (this._autocomplete) { this.$selectlistBox.items = this._autocomplete.map(function (it) { return { value: it + '', text: it + '' }; }); } else { this.$selectlistBox.items = []; } }, get: function () { return this._autocomplete; } } 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 }); this.eventHandler.inputOut(); } event.preventDefault(); } else if (event.key.startsWith('Arrow') || event.key === 'Backspace') { if (this.$input.selectionStart === 0 && this.$input.selectionEnd === 0) { 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 Vec2/* default */.Z(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.hasClass && item.hasClass('as-token-field-item')) { itemBound = item.getBoundingClientRect(); if (itemBound.bottom < inputBound.top) { dis = new Vec2/* default */.Z(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(); } } } else { this._searchInList(); } } else { this._searchInList(); } }; TokenField.eventHandler.inputInteract = function (event) { var lt = this._lastInteractTime; this._lastInteractTime = new Date().getTime(); if (lt && (this._lastInteractTime - lt < 100)) { return; } if (this.$selectlistBox.isDescendantOf(document.body)) return; this.$selectlistBox.addTo(document.body); this.$selectlistBox.followTarget = this; this._searchInList(); var bound = this.getBoundingClientRect(); this.$selectlistBox.addStyle('min-width', bound.width + 'px'); this.$selectlistBox.refollow(); this.$selectlistBox.updatePosition(); setTimeout(document.addEventListener.bind(document, 'click', this.eventHandler.inputOut), 100) }; TokenField.eventHandler.inputOut = function (event) { if (event && ((0,EventEmitter/* hitElement */.EY)(this.$selectlistBox, event) || (0,EventEmitter/* hitElement */.EY)(this.$input, event))) return; document.removeEventListener('click', this.eventHandler.inputOut); this.$selectlistBox.selfRemove(); this.$selectlistBox.followTarget = null; this._lastInteractTime = new Date().getTime(); }; 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(); (0,Text.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(); (0,Text.setCaretPosition)(this.$input, 0); } else { nextElt.focus(); } } else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') { var currentItemBound = itemElt.getBoundingClientRect(); var center = new Vec2/* default */.Z(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.hasClass && childElt.hasClass('as-token-field-item') || childElt === this.$input) { itemBound = childElt.getBoundingClientRect(); if (itemBound.bottom < currentItemBound.top) { dis = new Vec2/* default */.Z(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.hasClass && childElt.hasClass('as-token-field-item') || childElt === this.$input) { itemBound = childElt.getBoundingClientRect(); if (itemBound.top > currentItemBound.bottom) { dis = new Vec2/* default */.Z(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) { this.eventHandler.inputOut(); }; 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(); }; TokenField.eventHandler.preUpdateListPosition = function () { var bound = this.getBoundingClientRect(); var screenSize = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { // this.isFocus = false; // } }; TokenField.eventHandler.selectListBoxPressItem = function (event) { var text = event.data.value; var newItem = this._makeItem(text); this._appendItem(newItem); this.updateSize(); this._notifyChange({ action: 'add', item: text, itemElt: newItem }); this.eventHandler.inputOut(); this.$input.value = ''; setTimeout(()=>{ this.$input.focus(); }, 30); } ACore/* default.install */.Z.install(TokenField); /* harmony default export */ const js_TokenField = (TokenField); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dvexptree.css var dvexptree = __webpack_require__(2265); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DVExpTree.js /*** * @extends ExpTree * @constructor */ function DVExpTree() { this.injectInput(); } DVExpTree.tag = 'DVExpTree'.toLowerCase(); DVExpTree.render = function () { return (0,ACore._)({ tag: ExpTree/* default.tag */.ZP.tag, extendEvent: ['radiochange', 'indexclick'], class: 'as-dv-exp-tree' }, true); }; DVExpTree.prototype.injectInput = function () { this.$radio = (0,ACore._)({ tag: 'radiobutton', on: { change: this.eventHandler.radioChange } }); this.$node.insertBefore(this.$radio, this.$node.$extIcon); this.$index = (0,ACore._)({ tag: 'span', class: 'as-dv-exp-tree-index', on: { click: this.eventHandler.indexClick } }); this.$node.insertBefore(this.$index, this.$node.$desc); this.$node.on('click', this.eventHandler.clickInNode); }; DVExpTree.property = {}; DVExpTree.property.radioName = { enumerable: true, set: function (value) { if (!value) { this.removeClass('as-has-radio'); this.$radio.name = undefined; } else { this.addClass('as-has-radio'); this.$radio.name = value + ''; } }, get: function () { return this.$radio.name; } }; DVExpTree.property.radioValue = { enumerable: true, set: function (value) { this.$radio.value = value; }, get: function () { return this.$radio.value; } }; DVExpTree.property.radioChecked = { enumerable: true, set: function (value) { this.$radio.checked = value; }, get: function () { return this.$radio.checked; } }; DVExpTree.property.hasIndex = { enumerable: true, set: function (value) { if (value) this.addClass('as-has-index-input'); else this.removeClass('as-has-index-input'); }, get: function () { return this.hasClass('as-has-index-input'); } }; DVExpTree.property.indexValue = { enumerable: true, set: function (value) { this.$index.innerHTML = value; }, get: function () { return this.$index.innerHTML; } }; DVExpTree.eventHandler = {}; DVExpTree.eventHandler.radioChange = function (event) { this.emit('radiochange', Object.assign({}, event, { target: this, radioElt: this.$radio }), this); }; DVExpTree.eventHandler.indexClick = function (event) { this.emit('indexclick', Object.assign({}, event, { target: this, indexInput: this.$index }), this); }; DVExpTree.eventHandler.clickInNode = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$index, event) || (0,EventEmitter/* hitElement */.EY)(this.$radio, event) || (0,EventEmitter/* hitElement */.EY)(this.$node.$toggleIcon, event)) return; if ((0,EventEmitter/* hitElement */.EY)(this.$node, event) && this.radioName) this.$radio.click(); }; ACore/* default.install */.Z.install(DVExpTree); /* harmony default export */ const js_DVExpTree = (DVExpTree); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checklistitem.css var checklistitem = __webpack_require__(1100); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/Ref.js var Ref = __webpack_require__(4446); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Attributes.js /*** * * @param {Object} node * @constructor */ /*** * @typedef {{defined?:function,revoked?:function,get?:function, set?: function, descriptor?: Object|function, export?: function}} AttributeHandler */ /*** * * @param {Object} node * @constructor */ function Attributes(node) { Object.defineProperty(this, '$$node', { enumerable: false, configurable: true, writable: false, value: node }) Object.defineProperty(this, '_definedProperties', { enumerable: false, writable: false, value: {} }); Object.defineProperty(this, '_definedComputedHandlers', { enumerable: false, writable: false, value: {} }); } Object.defineProperty(Attributes.prototype, 'loadAttributeHandlers', { enumerable: false, configurable: true, writable: false, value: function (newHandlers) { var self = this; var definedHandlers = this._definedProperties; var definedComputedHandlers = this._definedComputedHandlers; Object.keys(this._definedProperties).forEach(function (key) { if (!newHandlers[key]) { delete definedHandlers[key]; delete definedComputedHandlers[key]; delete self[key]; } }); Object.keys(newHandlers).forEach(function (key) { if (definedHandlers[key] !== newHandlers[key]) { self.defineProperty(key, newHandlers[key]); } }); } }); Object.defineProperty(Attributes.prototype, 'unloadAttributeHandlers', { enumerable: false, configurable: true, writable: false, value: function (oldHandlers) { var self = this; Object.keys(oldHandlers).forEach(function (key) { self.revokeProperty(key, oldHandlers[key]); }); } }); Object.defineProperty(Attributes.prototype, 'revokeProperty', { enumerable: false, configurable: true, writable: false, value: function (name, handler) { if (!this._definedProperties[name]) return; if (handler && this._definedProperties[name] !== handler) return;//verify if (handler.revoked) { handler.revoked.call(this, this._definedComputedHandlers[name].ref); } var value = this[name]; delete this[name]; this[name] = value; delete this._definedProperties[name]; } }); Object.defineProperty(Attributes.prototype, 'defineProperty', { enumerable: false, configurable: true, writable: false, value: function (name, handler) { var self = this; this._definedProperties[name] = handler; var hadValue = !!(name in this); var privateValueRef = new Ref/* default */.Z(this[name]); var objectDescriptor = { enumerable: true, configurable: true, set: function (value) { if (handler.set) privateValueRef.set(handler.set.apply(self.$$node, Array.prototype.slice.call(arguments).concat([privateValueRef]))); else privateValueRef.set(value); }, get: function () { if (handler.get) return handler.get.apply(self.$$node, Array.prototype.slice.call(arguments).concat([privateValueRef])); else return privateValueRef.get(); } }; Object.defineProperty(this, name, objectDescriptor); this._definedComputedHandlers[name] = objectDescriptor; objectDescriptor.ref = privateValueRef; if (handler.defined) { handler.defined.call(this, privateValueRef); } if (hadValue) this[name] = privateValueRef.get(); } }); Object.defineProperty(Attributes.prototype, 'getProperty', { enumerable: false, configurable: true, writable: false, value: function (name) { var args = Array.prototype.slice.call(arguments, 1); var handler = this._definedComputedHandlers[name]; if (handler) { return handler.get.apply(this, args); } else return this[name]; } }); Object.defineProperty(Attributes.prototype, 'setProperty', { enumerable: false, configurable: true, writable: false, value: function (name, value) { var args = Array.prototype.slice.call(arguments, 1); var handler = this._definedComputedHandlers[name]; if (handler) { return handler.set.apply(this, args); } else this[name] = value; } }); Object.defineProperty(Attributes.prototype, 'export', { enumerable: false, configurable: true, value: function () { var self = this; return Object.keys(this).reduce(function (ac, key) { var value; var handler = self._definedProperties[key]; var computedHandler = self._definedComputedHandlers[key]; var exporter = handler && handler.export; if (exporter) { value = exporter.call(self.$$node, computedHandler.ref); } else { value = self[key] } if (value !== undefined) ac[key] = value; return ac; }, {}); } }); Object.defineProperty(Attributes.prototype, 'getPropertyDescriptor', { enumerable: false, configurable: true, writable: false, value: function (name) { var handler = this._definedProperties[name]; if (handler && (typeof handler.descriptor === 'function')) return handler.descriptor.call(this.$$node); var value = this[name]; return (handler && handler.descriptor) || { type: typeof value } } }); /* harmony default export */ const AppPattern_Attributes = (Attributes); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/SelectListItem.js var SelectListItem = __webpack_require__(6843); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckListItem.js function measureMaxCheckboxTextWidth(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 * 1.25 * (item.level || 0); if (est > maxEst) { maxEst = est; maxText = text; maxLv = item.level || 0; } } } if (maxText) maxTextWidth = 18 + 14 * (1.25 + 0.35) * maxLv + measureText(maxText, '14px Arial, Helvetica, sans-serif').width + 14;//padding left, right 7px, checkbox 18px return maxTextWidth; } function measureCheckListHeight(items) { var border = 0; var n = items.length - 1; return items.length * 25 + border; } function measureCheckListSize(items) { var descWidth = measureMaxDescriptionWidth(items); var textWidth = measureMaxCheckboxTextWidth(items); var width = textWidth; if (descWidth > 0) { width += descWidth + 14; } var height = measureCheckListHeight(items); return { width: width, height: height, descWidth: descWidth, textWidth: textWidth }; } /*** * @extends SelectListItem * @constructor */ function CheckListItem() { this.$text = (0,ACore.$)('span.absol-selectlist-item-text', this); this.$textValue = this.$text.childNodes[0]; this.$descCtn = (0,ACore.$)('.absol-selectlist-item-desc-container', this); this.$desc = (0,ACore.$)('span.absol-selectlist-item-desc', this.$descCtn); this.$descValue = this.$desc.childNodes[0]; this.$checkbox = (0,ACore.$)(CheckboxButton/* default.tag */.Z.tag, this) .on('change', this.eventHandler.checkboxChange); this.$icon = null; this._icon = null; this._viewData = new AppPattern_Attributes(this); this._viewData.loadAttributeHandlers(this.viewHandlers); OOP/* default.drillProperty */.ZP.drillProperty(this, this._viewData, 'extendClasses'); OOP/* default.drillProperty */.ZP.drillProperty(this, this._viewData, 'extendStyle'); this.level = 0; this.selected = false; this.on('click', this.eventHandler.clickText); } CheckListItem.tag = 'CheckListItem'.toLowerCase(); CheckListItem.render = function () { return (0,ACore._)({ extendEvent: ['select'], class: ['as-check-list-item', "absol-selectlist-item"], child: [ { tag: CheckboxButton/* default.tag */.Z.tag, class: 'as-check-list-item-checkbox' }, { 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: ''} } } ] }); }; CheckListItem.property = { text: SelectListItem/* default.property.text */.ZP.property.text, value: SelectListItem/* default.property.value */.ZP.property.value, icon: SelectListItem/* default.property.icon */.ZP.property.icon, lastInGroup: SelectListItem/* default.property.lastInGroup */.ZP.property.lastInGroup, }; CheckListItem.property.data = { set: function (value) { this._data = value; var viewData = { text:'', desc: '', noSelect: false, extendStyle: null, extendClasses: null, icon: null, lastInGroup:false }; if (typeof value === 'string') { viewData.text = value } else { Object.assign(viewData, value); } Object.assign(this._viewData, viewData); }, get: function () { return this._data; } }; CheckListItem.property.selected = { set: function (value) { this.$checkbox.checked = !!value; }, get: function () { return this.$checkbox.checked; } }; CheckListItem.property.level = { set: function (value) { value = value || 0; this._level = value; this.$checkbox.addStyle('margin-left', value * 1.75 + 'em'); }, get: function () { return this._level; } }; CheckListItem.prototype.viewHandlers = {}; CheckListItem.prototype.viewHandlers.text = { set: function (value) { this.$textValue.data = value; }, get: function () { return this.$textValue.data; } }; CheckListItem.prototype.viewHandlers.desc = { set: function (value) { this.$descValue.data = value; }, get: function () { return this.$descValue.data; } }; CheckListItem.prototype.viewHandlers.extendClasses = { set: function (value, ref) { var prevVal = ref.get() || []; var i; for (i = 0; i < prevVal.length; ++i) { this.removeClass(prevVal[i]); } var newVal = []; if (typeof value == 'string') value = value.trim().split(/\s+/); value = value || []; for (i = 0; i < value.length; ++i) { newVal.push(value[i]); this.addClass(value[i]); } return newVal; } }; CheckListItem.prototype.viewHandlers.extendStyle = { /*** * * @param value * @param {Ref} ref */ set: function (value, ref) { this.removeStyle(ref.get() || {}); this._extendStyle = Object.assign({}, value || {}); this.addStyle(this._extendStyle); }, get: function () { return this._extendClasses; } }; CheckListItem.prototype.viewHandlers.noSelect = { set: function (value){ if (value) this.addClass('as-no-select'); else this.removeClass('as-no-select'); return value; } }; CheckListItem.prototype.viewHandlers.icon = { set: function (icon){ this.icon = icon; }, get: function (){ return this.icon; } }; CheckListItem.prototype.viewHandlers.lastInGroup = { set: function (value){ this.lastInGroup = value; }, get: function (){ return this.lastInGroup; } } CheckListItem.eventHandler = {}; CheckListItem.eventHandler.clickText = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$checkbox, event)) return; this.$checkbox.checked = !this.$checkbox.checked; this.emit('select', { target: this, type: 'select', originalEvent: event.originalEvent || event.originEvent || event, selected: this.selected }); }; CheckListItem.eventHandler.checkboxChange = function (event) { this.emit('select', { target: this, type: 'select', originalEvent: event.originalEvent || event.originEvent || event, selected: this.selected }); }; ACore/* default.install */.Z.install(CheckListItem); /* harmony default export */ const js_CheckListItem = (CheckListItem); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checklistbox.css var checklistbox = __webpack_require__(6801); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/tool/TextMeasurement.js var TextMeasurement = __webpack_require__(1866); // EXTERNAL MODULE: ./node_modules/absol/src/DataStructure/Array.js var DataStructure_Array = __webpack_require__(7835); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringUtils.js var stringUtils = __webpack_require__(2973); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckListBox.js var CheckListBox_itemPool = []; function CheckListBox_makeItem() { return (0,ACore._)({ tag: js_CheckListItem, on: { select: function (event) { this.$parent.eventHandler.itemSelect(this, event) } } }); } function CheckListBox_requireItem($parent) { var item; if (CheckListBox_itemPool.length > 0) { item = CheckListBox_itemPool.pop(); } else { item = CheckListBox_makeItem(); } item.$parent = $parent; return item; } function CheckListBox_releaseItem(item) { item.$parent = null; item.selected = false; CheckListBox_itemPool.push(item); } function fillItemToPage($parent, $page, n) { while ($page.childNodes.length > n) { CheckListBox_releaseItem($page.lastChild); $page.removeChild($page.lastChild); } while ($page.childNodes.length < n) { $page.addChild(CheckListBox_requireItem($parent)); } } var mTextMeasurement = null; var measureArial14TextWidth = text => { if (!mTextMeasurement) { mTextMeasurement = new TextMeasurement/* default */.Z(); mTextMeasurement.compute('14px arial'); } return mTextMeasurement.measureTextWidth(text, '14px arial'); } var keyStringOfItem = item => { return (0,utils.keyStringOf)(item.value) + (0,stringUtils/* stringHashCode */.$)(item.text + ''); } /*** * TODO: check all duplicate value when select * @extends SelectListBox * @constructor */ function CheckListBox() { if (this.cancelWaiting) this.cancelWaiting(); this._items = []; this._valueDict = {}; this.itemHolders = []; this._holderDict = {}; this._estimateWidth = 100; this.widthLimit = calcWidthLimit(); this.addStyle('--as-width-limit', this.widthLimit + 'px'); this.$scroller = (0,ACore.$)('.as-select-list-box-scroller', this); this.$content = (0,ACore.$)('.as-select-list-box-content', this); this.$pages = (0,ACore.$$)('.as-select-list-box-page', this); this.$searchInput = (0,ACore.$)('searchtextinput', this).on('stoptyping', this.eventHandler.searchModify); this.pagingCtrl = new CLPagingController(this); this.searchMaster = new ListSearchMaster/* default */.Z(); this._initDomHook(); this._initFooter(); this.domSignal.on('viewListAtValue', this.viewListAtValue.bind(this)); this.domSignal.on('viewListAtItem', this.viewListAtItem.bind(this)); /*** * @name selectedAll * @type {boolean} * @memberOf CheckListBox# */ /*** * @name selectedItems * @type {Array<>} * @memberOf CheckListBox# */ } CheckListBox.tag = 'CheckListBox'.toLowerCase(); CheckListBox.render = function () { return (0,ACore._)({ tag: Follower/* default.tag */.Z.tag, extendEvent: ['change', 'cancel', 'close'], attr: { tabindex: 0 }, class: ['as-select-list-box', 'as-check-list-box'], 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(3).fill('.as-select-list-box-page') } ] }, { class: 'as-dropdown-box-footer', child: [ { tag: 'checkbox', class: 'as-select-list-box-check-all', props: { checked: false, text: LanguageSystem/* default.getText */.ZP.getText('txt_check_all') || LanguageSystem/* default.getText */.ZP.getText('txt_all') || 'Check All' } }, { class: 'as-dropdown-box-footer-right', child: [ { tag: 'a', class: 'as-select-list-box-cancel-btn', attr: { 'data-ml-key': 'txt_cancel' } }, { tag: 'a', class: 'as-select-list-box-close-btn', attr: { 'data-ml-key': 'txt_close' } }] } ] }, 'attachhook.as-dom-signal' ], props: { anchor: [1, 6, 2, 5] } }); }; Object.assign(CheckListBox.prototype, js_SelectListBox.prototype); CheckListBox.property = {}; CheckListBox.eventHandler = {}; CheckListBox.prototype.footerMinWidth = 110; CheckListBox.prototype.revokeResource = function () { this.searchMaster.revokeResource(); }; CheckListBox.prototype._initDomHook = function () { this.domSignal = new DelaySignal/* default */.Z(); this.domSignal.on('viewListAt', this.viewListAt.bind(this)); this.domSignal.on('viewListAtFirstSelected', this.viewListAtFirstSelected.bind(this)); this.domSignal.on('viewListAtCurrentScrollTop', this.viewListAtCurrentScrollTop.bind(this)); this.domSignal.on('updateCheckedAll', () => { this.$checkAll.checked = this.selectedAll; }); }; CheckListBox.prototype._initFooter = function () { this.$checkAll = (0,ACore.$)('.as-select-list-box-check-all', this) .on('change', this.eventHandler.checkAllChange); this.$cancelBtn = (0,ACore.$)('.as-select-list-box-cancel-btn', this) .on('click', this.eventHandler.clickCancelBtn); this.$closeBtn = (0,ACore.$)('.as-select-list-box-close-btn', this); if (this.$closeBtn)//mobile ref this.$closeBtn.on('click', this.eventHandler.clickCloseBtn); }; CheckListBox.prototype.viewListAtFirstSelected = noop/* default */.Z; CheckListBox.prototype.viewListAtValue = function (value) { if (this.isDescendantOf(document.body)) { this.pagingCtrl.viewListAtValue(value); } }; CheckListBox.prototype.viewListAtItem = function (item) { if (this.isDescendantOf(document.body)) { this.pagingCtrl.viewListAtItem(item); } }; /** * wrong function name * @deprecated * @param value * @returns {*} */ CheckListBox.prototype.findItemsByValue = function (value) { return this._holderDict[(0,utils.keyStringOf)(value)]; }; CheckListBox.prototype.findItemHoldersByValue = function (value) { return this._holderDict[(0,utils.keyStringOf)(value)]; }; CheckListBox.prototype.findItemByValue = function (value) { var holders = this._holderDict[(0,utils.keyStringOf)(value)]; if (holders && holders.length > 0) { return holders[0].item; } else return null; }; /** * * @param {number | Array<number>}idx */ CheckListBox.prototype.getItemByIndex = function (idx) { var arr = this._items; if (!Array.isArray(idx)) { idx = [idx]; } for (var i = 0; i < idx.length; ++i) { if (!arr) return null; if (i + 1 === idx.length) return arr[idx[i]]; arr = arr[idx[i]].items; } }; CheckListBox.prototype.notifyChange = function (data) { this.emit('change', Object.assign({ target: this, type: 'change' }, data), this); } CheckListBox.prototype.focus = js_SelectListBox.prototype.focus; CheckListBox.property.values = { set: function (values) { values = values || []; var dict = values.reduce((ac, cr) => { var key = (0,utils.keyStringOf)(cr); ac[key] = cr; return ac; }, {}); this._valueDict = dict; this.itemHolders.forEach(function visit(holder) { holder.selected = (holder.valueKey in dict); if (holder.children) holder.children.forEach(visit); }); this.pagingCtrl.updateSelected(); this.domSignal.emit('updateCheckedAll'); }, get: function () { var values = this.itemHolders.reduce(function visit(ac, holder) { if (holder.selected && !holder.data.noSelect) ac.push(holder.data.value); if (holder.children) holder.children.reduce(visit, ac); return ac; }, []); return (0,DataStructure_Array.arrayUnique)(values); } }; CheckListBox.property.selectedIndexes = { set: function (indexes) { if (!Array.isArray(indexes)) indexes = []; }, get: function () { var genVisit = (rootValue) => { return (ac, holder, i) => { if (holder.selected && !holder.data.noSelect) { if (rootValue) ac.push(rootValue.concat([i])); else ac.push(i); } if (holder.children) holder.children.reduce(genVisit((rootValue || []).concat([i])), ac); return ac; } }; return this.itemHolders.reduce(genVisit(), []); } }; CheckListBox.property.selectedItems = { get: function () { return this.selectedIndexes.map((idx) => this.getItemByIndex(idx)).filter(it => !!it); } }; CheckListBox.prototype.resetSearchState = function () { this.$searchInput.value = ''; this.pagingCtrl.viewArr(this.itemHolders); }; CheckListBox.property.enableSearch = js_SelectListBox.property.enableSearch; CheckListBox.property.items = { set: function (items) { items = items || []; items = (0,utils.copySelectionItemArray)(items, { removeNoView: true, removeNewLine: true }); this._items = items; this.itemHolders = items.map(it => new CLHolder(this, it)); var res = this.itemHolders.reduce(function visit(ac, cr) { var textWidth = 3.5 * 14 + 1.75 * 14 * cr.level + 14 + measureArial14TextWidth(cr.data.text + '') + 7 + 17 if (cr.data.icon) textWidth += 32; ac.textWidth = Math.max(ac.textWidth, textWidth); if (cr.data.desc) { ac.descWidth = Math.max(ac.descWidth, measureArial14TextWidth(cr.data.desc + '')); } ac.dict[cr.valueKey] = ac.dict[cr.valueKey] || []; ac.dict[cr.valueKey].push({ idx: ac.idx++, item: cr.data, holder: cr }); if (cr.children) cr.children.reduce(visit, ac); return ac; }, { idx: 0, dict: {}, textWidth: 50, descWidth: 0 }); this._holderDict = res.dict; this._estimateWidth = Math.min(this.widthLimit || Infinity, res.textWidth + (res.descWidth ? res.descWidth + 30 : 0)); this.addStyle('--select-list-estimate-width', this._estimateWidth + 'px'); this.$scroller.scrollTop = 0; this.pagingCtrl.viewArr(this.itemHolders); this.searchMaster.transfer(this.itemHolders.map(it => it.getSearchItem())); this.domSignal.emit('updateCheckedAll'); }, get: function () { return (0,utils.copySelectionItemArray)(this._items); } }; CheckListBox.property.selectedAll = { get: function () { return this.itemHolders.length > 0 && this.itemHolders.every(function visit(holder) { var res = holder.selected || holder.data.noSelect; if (res && holder.children) { res = holder.children.every(visit); } return res; }); } }; /*** * @this CheckListBox * @param event */ CheckListBox.eventHandler.checkAllChange = function (event) { var checked = this.$checkAll.checked; var changed = false; var visit = (holder) => { var canCheck = checked && !holder.data.noSelect; if (holder.selected !== canCheck) { changed = true; holder.selected = canCheck; } if (canCheck) { this._valueDict[holder.valueKey] = holder.data.value; } else { delete this._valueDict[holder.valueKey]; } if (holder.children) holder.children.forEach(visit); } this.itemHolders.forEach(visit); this.pagingCtrl.updateSelected(); if (changed) { this.notifyChange({ originalEvent: event.originalEvent || event.originEvent || event, action: checked ? 'check_all' : "uncheck_all" }, this); } }; /*** * @this CheckListBox * @param itemElt * @param event */ CheckListBox.eventHandler.itemSelect = function (itemElt, event) { var selected = itemElt.selected; var holder = itemElt.clHolder; holder.selected = selected; if (selected) { this._valueDict[holder.valueKey] = holder.data.value; } else { delete this._valueDict[holder.valueKey]; } this.$checkAll.checked = this.selectedAll; this.notifyChange({ originalEvent: event.originalEvent || event.originEvent || event, action: selected ? 'check' : 'uncheck', value: holder.data.value, itemData: holder.data }); this.domSignal.emit('updateCheckedAll'); }; /*** * @this CheckListBox * @param event */ CheckListBox.eventHandler.clickCancelBtn = function (event) { this.emit('cancel', { type: 'cancel', target: this, originalEvent: event }, this); }; /*** * @this CheckListBox * @param event */ CheckListBox.eventHandler.clickCloseBtn = function (event) { this.emit('close', { type: 'close', target: this, originalEvent: event }, this); }; /** * @this {CheckListBox} */ CheckListBox.eventHandler.searchModify = function () { var text = this.$searchInput.value; if (text) { this.searchMaster.query({ text: text }).then(result => { if (text !== this.$searchInput.value) return; if (!result) return;//why? var arr = this.itemHolders.filter(it => !!result[it.id]); arr.sort((a, b) => result[b.id][1] - result[a.id][1]); var searchHolders = arr.map(holder => new CLHolderRef(this, holder, null, result)); this.$scroller.scrollTop = 0; this.pagingCtrl.viewArr(searchHolders); ResizeSystem/* default.update */.Z.update(); }); } else { this.pagingCtrl.viewArr(this.itemHolders.reduce((ac, holder) => holder.toArray(ac), [])); ResizeSystem/* default.update */.Z.update(); } }; ACore/* default.install */.Z.install(CheckListBox); /** * @param boxElt * @param data * @param parent * @constructor */ function CLHolder(boxElt, data, parent) { this.id = (0,stringGenerate.randomIdent)(8); this.parent = parent; this.level = parent ? parent.level + 1 : 0; this.boxElt = boxElt; this.data = data; (0,OOP/* drillProperty */.pj)(this, this, 'item', 'data');//adapt mobile and desktop this.valueKey = (0,utils.keyStringOf)(data.value); this.itemKey = keyStringOfItem(data); this.itemElt = null; this.children = null; this.selected = this.valueKey in boxElt._valueDict; var Clazz = this.constructor; if (data.items && data.items.length > 0) { this.children = data.items.map(it => new Clazz(boxElt, it, this)); } } CLHolder.prototype.toArray = function (ac) { ac = ac || []; ac.push(this); if (this.children) this.children.reduce((ac, holder) => holder.toArray(ac), ac); return ac; }; CLHolder.prototype.toDictionary = function (ac) { ac = ac || {}; ac[this.valueKey] = this; if (this.children) this.children.reduce((ac, holder) => holder.toDictionary(ac), ac); return ac; }; CLHolder.prototype.attachView = function (itemElt) { if (itemElt.clHolder) itemElt.clHolder.detachView(); if (!this.textLength) this.textLength = (0,utils.measureText)(this.data.text + '', '14px arial').width; if (this.textLength > this.boxElt.widthLimit - (0.7 + 2.5) * 14) { itemElt.attr('title', this.data.text); } itemElt.clHolder = this; this.itemElt = itemElt; itemElt.data = this.data; itemElt.level = this.level; itemElt.selected = this.selected; }; CLHolder.prototype.detachView = function () { if (this.itemElt) { this.itemElt.attr('title', null); this.itemElt.clHolder = null; this.itemElt = null; } }; CLHolder.prototype.getSearchItem = function () { var res = { value: this.id }; res.text = this.data.text + ''; if (this.data.desc) res.text += '/' + this.data.desc; if (this.children) res.items = this.children.map(c => c.getSearchItem()) return res; }; function CLHolderRef(boxElt, origin, parent, result) { this.boxElt = boxElt; this.origin = origin; this.data = origin.data; this.parent = parent; this.level = origin.level; OOP/* default.drillProperty */.ZP.drillProperty(this, origin, 'selected'); var Clazz = this.constructor; var arr, children; if (origin.children) { arr = origin.children.filter(it => !!result[it.id]); arr.sort((a, b) => result[b.id][1] - result[a.id][1]); children = arr.map(holder => new Clazz(boxElt, holder, this, result)); if (children.length > 0) this.children = children; } } OOP/* default.mixClass */.ZP.mixClass(CLHolderRef, CLHolder); /*** * * @param {CheckListBox} boxElt * @constructor */ function CLPagingController(boxElt) { this.boxElt = boxElt; this.$pages = boxElt.$pages; this.$content = boxElt.$content; this.$scroller = boxElt.$scroller.on('scroll', this.ev_scroll.bind(this)); this.itemPerPage = Math.ceil((0,Dom/* getScreenSize */.tE)().height / this.itemHeight * 2); this.holderArr = []; this.holderDict = {}; } CLPagingController.prototype.itemHeight = 30; CLPagingController.prototype.ev_scroll = function (event) { if (this.pageN <= 2) return; var top = this.$scroller.scrollTop; var pageIdx = Math.min(this.pageN - 1, Math.max(0, Math.floor(top / this.itemHeight / this.itemPerPage))); if (pageIdx === this.pageIdx) return; if (pageIdx === this.pageIdx - 1) { this.pageIdx = pageIdx; this.$pages.unshift(this.$pages.pop()); if (pageIdx > 0) { this.$pages[0].removeStyle('display').addStyle('top', (pageIdx - 1) * this.itemPerPage * this.itemHeight + 'px'); fillItemToPage(this.boxElt, this.$pages[0], this.itemPerPage); Array.prototype.forEach.call(this.$pages[0].childNodes, (elt, i) => this.holderArr[(pageIdx - 1) * this.itemPerPage + i].attachView(elt)); } else { this.$pages[0].addStyle('display', 'none'); } } else if (pageIdx === this.pageIdx + 1) { this.pageIdx = pageIdx; this.$pages.push(this.$pages.shift()); if (pageIdx + 1 < this.pageN) { this.$pages[2].removeStyle('display').addStyle('top', (pageIdx + 1) * this.itemPerPage * this.itemHeight + 'px'); fillItemToPage(this.boxElt, this.$pages[2], Math.min(this.itemPerPage, this.holderArr.length - this.itemPerPage * (pageIdx + 1))); Array.prototype.forEach.call(this.$pages[2].childNodes, (elt, i) => this.holderArr[(pageIdx + 1) * this.itemPerPage + i].attachView(elt)); } else { this.$pages[2].addStyle('display', 'none'); } } else { this.update(); } }; CLPagingController.prototype.update = function () { var top = this.$content.scrollTop; var pageIdx = Math.floor(top / this.itemHeight / this.itemPerPage); this.pageIdx = pageIdx; var ii = (pageIdx - 1) * this.itemPerPage; var pageElt; var itemInPage; for (var pi = 0; pi < 3; ++pi) { pageElt = this.$pages[pi]; if (ii < 0 || ii >= this.holderArr.length) { ii += this.itemPerPage; pageElt.addStyle('display', 'none'); } else { itemInPage = Math.min(this.itemPerPage, this.holderArr.length - ii); fillItemToPage(this.boxElt, pageElt, itemInPage); pageElt.removeStyle('display').addStyle('top', this.itemHeight * ii + 'px'); Array.prototype.forEach.call(pageElt.childNodes, (child, i) => { this.holderArr[ii].attachView(child); ii++; }); } } }; CLPagingController.prototype.viewListAtIdx = function (idx) { var bound = this.$scroller.getBoundingClientRect(); if (!bound.height) return; var y = idx * this.itemHeight; var maxY = this.holderArr.length * this.itemHeight - bound.height; this.$scroller.scrollTop = Math.min(maxY, y); }; CLPagingController.prototype.viewListAtValue = function (value) { var idx = this.holderDict[(0,utils.keyStringOf)(value)]; if (idx === undefined) return; this.viewListAtIdx(idx); }; CLPagingController.prototype.viewListAtItem = function (item) { var idx = this.holderHashDict[keyStringOfItem(item)]; if (idx === undefined) return; this.viewListAtIdx(idx); }; CLPagingController.prototype.viewArr = function (itemHolders) { this.holderArr = itemHolders.reduce((ac, holder) => holder.toArray(ac), []); this.holderDict = this.holderArr.reduce((ac, cr, idx) => { if (!(0,utils.isNaturalNumber)(ac[cr.valueKey])) ac[cr.valueKey] = idx; return ac; }, {}); this.holderHashDict = this.holderArr.reduce((ac, cr, idx) => { ac[cr.itemKey] = idx; return ac; }, {}); this.pageN = Math.ceil(this.holderArr.length / this.itemPerPage); this.$content.addStyle('height', this.holderArr.length * this.itemHeight + 'px'); this.update(); }; CLPagingController.prototype.updateSelected = function () { this.$pages.forEach(pageElt => { Array.prototype.forEach.call(pageElt.childNodes, itemElt => { if (itemElt.clHolder) itemElt.selected = itemElt.clHolder.selected; }); }); }; /**********************************************************************************************************************/ /*** * @extends SelectListBox * @constructor */ function CheckListBoxV1() { this._initDomHook(); this._initControl(); this._initScroller(); this._initFooter(); this._initProperty(); this.domSignal.on('viewListAtValue', this.viewListAtValue.bind(this)); } CheckListBoxV1.tag = 'CheckListBox'.toLowerCase(); CheckListBoxV1.render = function () { return (0,ACore._)({ tag: Follower/* default.tag */.Z.tag, extendEvent: ['change', 'cancel', 'close'], attr: { tabindex: 0 }, class: ['as-select-list-box', 'as-check-list-box'], 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(this.prototype.preLoadN).fill('.as-select-list-box-page') } ] }, { class: 'as-dropdown-box-footer', child: [ { tag: 'checkbox', class: 'as-select-list-box-check-all', props: { checked: false, text: LanguageSystem/* default.getText */.ZP.getText('txt_check_all') || LanguageSystem/* default.getText */.ZP.getText('txt_all') || 'Check All' } }, { class: 'as-dropdown-box-footer-right', child: [ { tag: 'a', class: 'as-select-list-box-cancel-btn', attr: { 'data-ml-key': 'txt_cancel' } }, { tag: 'a', class: 'as-select-list-box-close-btn', attr: { 'data-ml-key': 'txt_close' } }] } ] }, 'attachhook.as-dom-signal' ], props: { anchor: [1, 6, 2, 5] } }); }; Object.assign(CheckListBoxV1.prototype, js_SelectListBox.prototype); CheckListBoxV1.property = Object.assign({}, js_SelectListBox.property); CheckListBoxV1.eventHandler = Object.assign({}, js_SelectListBox.eventHandler); CheckListBoxV1.prototype.itemHeightMode = [25, 30]; CheckListBoxV1.prototype.itemHeight = 25; CheckListBoxV1.prototype.footerMinWidth = 110; CheckListBoxV1.prototype._initFooter = function () { this.$checkAll = (0,ACore.$)('.as-select-list-box-check-all', this) .on('change', this.eventHandler.checkAllChange); this.$cancelBtn = (0,ACore.$)('.as-select-list-box-cancel-btn', this) .on('click', this.eventHandler.clickCancelBtn); this.$closeBtn = (0,ACore.$)('.as-select-list-box-close-btn', this); if (this.$closeBtn)//mobile ref this.$closeBtn.on('click', this.eventHandler.clickCloseBtn); }; CheckListBoxV1.prototype._requireItem = function (pageElt, n) { var itemElt; while (pageElt.childNodes.length > n) { itemElt = pageElt.lastChild; itemElt.selfRemove(); CheckListBox_releaseItem(itemElt); } while (pageElt.childNodes.length < n) { itemElt = CheckListBox_requireItem(this); pageElt.addChild(itemElt); } }; CheckListBoxV1.prototype.viewListAtFirstSelected = noop/* default */.Z; CheckListBoxV1.prototype.viewListAtValue = function (value) { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('viewListAtValue', value); return; } if (this._displayValue === VALUE_HIDDEN) { return false; } var itemHolders = this._displayItemHolderByValue[value + '']; if (itemHolders) { this.domSignal.once('scrollIntoValue', function () { var holder = itemHolders[0]; this.viewListAt(holder.idx); var itemElt = (0,ACore.$)('.as-check-list-item', this.$listScroller, function (elt) { return elt.value === value; }); if (itemElt) { var scrollBound = this.$listScroller.getBoundingClientRect(); var itemBound = itemElt.getBoundingClientRect(); this.$listScroller.scrollTop += itemBound.top - scrollBound.top; } }.bind(this)); this.domSignal.emit('scrollIntoValue'); return true; } else return false; }; CheckListBoxV1.prototype.focus = js_SelectListBox.prototype.focus; CheckListBoxV1.property.values = { set: function (value) { js_SelectListBox.property.values.set.apply(this, arguments); this.$checkAll.checked = this._values.length === this.items.length; }, get: js_SelectListBox.property.values.get }; /*** * @this CheckListBoxV1 * @param event */ CheckListBoxV1.eventHandler.checkAllChange = function (event) { var checked = this.$checkAll.checked; if (checked) { this._values = this.items.map(function (cr) { return typeof cr === "object" ? cr.value : cr; }); this._valueDict = this._values.reduce(function (ac, value) { ac[value + ''] = true; return ac; }, {}); } else { this._values = []; this._valueDict = {}; } this._updateSelectedItem(); this.emit('change', { target: this, type: 'change', originalEvent: event.originalEvent || event.originEvent || event, action: checked ? 'check_all' : "uncheck_all" }, this); }; /*** * @this CheckListBoxV1 * @param itemElt * @param event */ CheckListBoxV1.eventHandler.itemSelect = function (itemElt, event) { var selected = itemElt.selected; var value = itemElt.value; var itemData = itemElt.data; var idx; if (selected) { this._values.push(value); this._valueDict[value + ''] = true; } else { idx = this._values.indexOf(value); delete this._valueDict[value + '']; if (idx >= 0) { this._values.splice(idx, 1); } else { console.error("Violation data"); } } this.emit('change', { target: this, type: 'change', originalEvent: event.originalEvent || event.originEvent || event, action: selected ? 'check' : 'uncheck', value: value, itemData: itemData }, this); }; /*** * @this CheckListBoxV1 * @param event */ CheckListBoxV1.eventHandler.clickCancelBtn = function (event) { this.emit('cancel', { type: 'cancel', target: this, originalEvent: event }, this); }; /*** * @this CheckListBoxV1 * @param event */ CheckListBoxV1.eventHandler.clickCloseBtn = function (event) { this.emit('close', { type: 'close', target: this, originalEvent: event }, this); }; ACore/* default.install */.Z.install('checklistboxv1', CheckListBoxV1); /* harmony default export */ const js_CheckListBox = ((/* unused pure expression or super */ null && (CheckListBoxV1))); // EXTERNAL MODULE: ./node_modules/absol/src/JSX/attribute.js + 1 modules var attribute = __webpack_require__(2953); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/MultiLanguageCSS.js var MultiLanguageCSS = __webpack_require__(1812); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/MSelectListItem.js /*** * * @extends {AElement} * @constructor */ function MSelectListItem() { this.$textCtn = (0,ACore.$)('.am-selectlist-item-text-ctn', this); this.$text = (0,ACore.$)('span.am-selectlist-item-text', this); this.$textValue = this.$text.childNodes[0]; this.$descCtn = (0,ACore.$)('.am-selectlist-item-desc-ctn', this); this.$desc = (0,ACore.$)('span.am-selectlist-item-desc', this.$descCtn); this.$descValue = this.$desc.childNodes[0]; this._extendClasses = []; this._extendStyle = {}; this._data = ""; this._level = 0; } MSelectListItem.tag = 'MSelectListItem'.toLowerCase(); MSelectListItem.render = function () { return (0,ACore._)({ class: 'am-selectlist-item', child: [ { class: 'am-selectlist-item-text-ctn', child: { tag: 'span', class: 'am-selectlist-item-text', child: { text: '' } } }, { class: 'am-selectlist-item-desc-ctn', child: { tag: 'span', class: 'am-selectlist-item-desc', child: { text: '' } } } ] }); } MSelectListItem.property = Object.assign({}, SelectListItem/* default.property */.ZP.property); MSelectListItem.property.icon = { set: function (icon) { if (this.$icon) { this.$icon.remove(); this.$icon = null; } this._icon = icon || null; if (this._icon) { this.$icon = (0,ACore._)(this._icon).addClass('am-selectlist-item-icon'); this.$textCtn.addChildAfter(this.$icon, null); } }, get: function () { return this._icon; } }; /* harmony default export */ const selectlistbox_MSelectListItem = (MSelectListItem); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multicheckmenu/MChecklistItem.js /**** * @extends MSelectListItem * @constructor */ function MChecklistItem() { this.$checkbox = (0,ACore.$)('.am-selectlist-item-check-ctn > '+CheckboxButton/* default.tag */.Z.tag, this) .on('change', this.eventHandler.checkboxChange); selectlistbox_MSelectListItem.call(this); this.on('click', this.eventHandler.clickText); } MChecklistItem.tag = 'MChecklistItem'.toLowerCase(); MChecklistItem.property = Object.assign({}, selectlistbox_MSelectListItem.property); MChecklistItem.render = function () { return (0,ACore._)({ extendEvent:['change', 'select'], class: 'am-selectlist-item', child: [ { class: 'am-selectlist-item-check-ctn', child: { tag: CheckboxButton/* default.tag */.Z.tag } }, { class: 'am-selectlist-item-text-ctn', child: { tag: 'span', class: 'am-selectlist-item-text', child: {text: ''} } }, { class: 'am-selectlist-item-desc-ctn', child: { tag: 'span', class: 'am-selectlist-item-desc', child: {text: ''} } } ] }); }; MChecklistItem.eventHandler = {}; MChecklistItem.eventHandler.clickText = js_CheckListItem.eventHandler.clickText MChecklistItem.eventHandler.checkboxChange = js_CheckListItem.eventHandler.checkboxChange; MChecklistItem.property.selected = js_CheckListItem.property.selected; ACore/* default.install */.Z.install(MChecklistItem); /* harmony default export */ const multicheckmenu_MChecklistItem = (MChecklistItem); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/MSelectList.js function measureListSize(items) { var descWidth = (0,SelectList/* measureMaxDescriptionWidth */.jG)(items); var textWidth = (0,SelectList/* measureMaxTextWidth */.up)(items); var width = descWidth + 20 + textWidth + 12 + 15;//padding, margin return { width: width, descWidth: descWidth, textWidth: textWidth }; } var MSelectList_itemPool = []; function onClickItem(event) { 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 }); } } /** * @returns {MSelectListItem} */ function MSelectList_makeItem() { return (0,ACore._)({ tag: selectlistbox_MSelectListItem, on: { click: onClickItem } }); } function MSelectList_requireItem($parent) { var item; if (MSelectList_itemPool.length > 0) { item = MSelectList_itemPool.pop(); } else { item = MSelectList_makeItem(); } item.$parent = $parent; return item; } function MSelectList_releaseItem(item) { item.$parent = null; item.attr('class', 'am-selectlist-item'); item.selected = false; MSelectList_itemPool.push(item); } /*global absol*/ /*** * @extends AElement * @constructor */ function MSelectList() { var res = this; this.defineEvent(['pressitem', 'cancelasync', 'valuevisibilityasync', 'finishasync', 'sizechangeasync']); this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.sync = new Promise(function (rs) { res.$attachhook.once('error', rs); }); this.$items = []; this.$itemByValue = {};//quick find element this.$selectedItem = undefined; this._itemSession = 0; this._finished = true; this._resourceReady = true; }; MSelectList.tag = "MSelectList".toLowerCase(); MSelectList.render = function () { return (0,ACore._)('.am-selectlist'); }; //todo: update this feature to SelectList /*** * * @param value * @return {MSelectListItem|null} */ MSelectList.prototype.getItemElementByValue = function (value) { return this.$itemByValue[value + ''] || null; }; MSelectList.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; } } }; MSelectList.prototype._requireItems = function (itemCout) { var item; while (this.$items.length < itemCout) { item = MSelectList_requireItem(this); this.$items.push(item); this.addChild(item); } while (this.$items.length > itemCout) { item = this.$items.pop(); item.remove(); MSelectList_releaseItem(item); } }; MSelectList.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.selected = true; this.$selectedItem = itemElt; foundSelected = true; } else { itemElt.selected = false; } } } return foundSelected; }; MSelectList.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); 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); }; MSelectList.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); var itemCount = items.length; this._requireItems(itemCount); this._assignItems(0, itemCount); this._finished = true; return Object.assign({ session: this._itemSession }, this.measuredSize); }; MSelectList.property = Object.assign({}, SelectList/* default.property */.ZP.property); MSelectList.prototype.init = SelectList/* default.prototype.init */.ZP.prototype.init; MSelectList.eventHandler = {}; /* harmony default export */ const selectlistbox_MSelectList = ((/* unused pure expression or super */ null && (MSelectList))); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TextMeasure.js + 1 modules var TextMeasure = __webpack_require__(2610); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/list/search.js var search = __webpack_require__(2551); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/MListModal.js var MListModal_VALUE_HIDDEN = -1; var MListModal_VALUE_NORMAL = 1; /*** * @extends AElement * @constructor */ function MListModal() { this._initDomHook(); this._initControl(); this._initScroller(); this._initProperty(); } MListModal.tag = "MListModal".toLowerCase(); MListModal.render = function () { return (0,ACore._)({ extendEvent: ['pressitem', 'pressclose', 'pressout'], class: 'am-list-modal', child: [ { class: ['am-list-popup-box'], child: [ { class: 'am-list-popup-header', child: [ { tag: 'searchtextinput' }, { tag: 'button', class: 'am-list-popup-close-btn', child: 'span.mdi.mdi-close' } ] }, { class: 'am-list-popup-list-scroller', child: { class: 'am-list-popup-content', child: Array(MListModal.prototype.preLoadN).fill('.am-list-popup-list-page.am-selectlist') } } ] } ] }); }; MListModal.prototype.toLoadNextY = 200; MListModal.prototype.preLoadN = 5; MListModal.prototype._initDomHook = function () { this.estimateSize = { width: 0 }; this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.$attachhook._isAttached = false; this.$attachhook.requestUpdateSize = this.updateSize.bind(this); this.$attachhook.on('attached', function () { Dom/* default.addToResizeSystem */.ZP.addToResizeSystem(this); this.requestUpdateSize(); this._isAttached = true; }); this.domSignal = new DelaySignal/* default */.Z(); this.domSignal.on('viewListAt', this.viewListAt.bind(this)); this.domSignal.on('viewListAtFirstSelected', this.viewListAtFirstSelected.bind(this)); this.searchMaster = new ListSearchMaster/* default */.Z(); }; MListModal.prototype.cancelWaiting = function () { this.$attachhook.cancelWaiting(); } MListModal.prototype._initControl = function () { this._currentOffset = 0; this._startItemIdx = 0; this.$closeBtn = (0,ACore.$)('.am-list-popup-close-btn', this) .on('click', this.notifyPressClose.bind(this)); this.on('click', this.eventHandler.click); this.$box = (0,ACore.$)('.am-list-popup-box', this); this.$searchInput = (0,ACore.$)('searchtextinput', this) .on('stoptyping', this.eventHandler.searchModify); }; MListModal.prototype._initScroller = function () { this._estimateHeight = 0; this._pageOffsets = Array(this.preLoadN + 1).fill(0); this._pageYs = Array(this.preLoadN + 1).fill(0); this.$listScroller = (0,ACore.$)('.am-list-popup-list-scroller', this) .on('scroll', this.eventHandler.scroll); this.$content = (0,ACore.$)('.am-list-popup-content', this); this.$listPages = (0,ACore.$$)('.am-list-popup-list-page', this); }; MListModal.prototype._initProperty = function () { this._items = []; this._values = []; this._valueDict = {}; this._itemsByValue = {}; this._preDisplayItems = []; this._displayItems = []; this._searchCache = {}; this._displayValue = MListModal_VALUE_NORMAL; this.displayValue = MListModal_VALUE_NORMAL; this.items = []; }; MListModal.prototype.findItemsByValue = function (value) {//keep return this._itemsByValue[(0,utils.keyStringOf)(value)]; }; MListModal.prototype.updateSize = function () { var bound = this.getBoundingClientRect(); var boxBound = this.$box.getBoundingClientRect(); var listScrollerBound = this.$listScroller.getBoundingClientRect(); this.$listScroller.addStyle('max-height', 'calc(' + (bound.height - listScrollerBound.top + boxBound.top) + 'px - var(--modal-margin-bottom) - var(--modal-margin-top))'); }; MListModal.prototype._requireItem = function (pageElt, n) { var itemElt; while (pageElt.childNodes.length > n) { itemElt = pageElt.lastChild; itemElt.selfRemove(); MSelectList_releaseItem(itemElt); } while (pageElt.childNodes.length < n) { itemElt = MSelectList_requireItem(this); pageElt.addChild(itemElt); } }; MListModal.prototype._listToDisplay = function (items) {//keep return items; }; /*** * * @param {Array<{value:String|Number}>} items * @return {Array<{value:String|Number}>} */ MListModal.prototype._filterValue = function (items) { if (this._displayValue === MListModal_VALUE_NORMAL) return items; var dict = this._valueDict; return items.filter(function (item) { return !dict[item.value + '']; }); }; MListModal.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 + ''; } }; MListModal.prototype._alignPage = function () { var pageElt; var pageBound; for (var i = 0; i < this.$listPages.length; ++i) { pageElt = this.$listPages[i]; pageBound = pageElt.getBoundingClientRect(); if (i > 0) this.$listPages[i].addStyle('top', this._pageYs[i] + 'px'); this._pageYs[i + 1] = this._pageYs[i] + pageBound.height; } this.$content.addStyle('height', this._pageYs[this.preLoadN] + 'px'); }; MListModal.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; } }); }); if (this._displayValue === MListModal_VALUE_HIDDEN) this._alignPage(); }; MListModal.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 = Dom/* default.getScreenSize */.ZP.getScreenSize(); var maxItem = Math.ceil(screenSize.height / (fontSize * 2.25)); 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]; if (pageIndex === 0) { this._pageYs[pageIndex] = sIdx / this._displayItems.length * contentBound.height; } pageElt.addStyle('top', this._pageYs[pageIndex] + 'px'); this._requireItem(pageElt, nItem); this._assignItems(pageElt, sIdx); pageBound = pageElt.getBoundingClientRect(); this._pageYs[pageIndex + 1] = this._pageYs[pageIndex] + pageBound.height; } if (this._pageOffsets[this.preLoadN] === this._displayItems.length) { this.$content.addStyle('height', this._pageYs[this.preLoadN] + 'px'); } else { this.$content.addStyle('height', this._estimateHeight + 'px'); } this._updateSelectedItem(); }; MListModal.prototype.viewListAtFirstSelected = function () { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('viewListAtFirstSelected'); return; } if (this._displayValue == MListModal_VALUE_HIDDEN) { return false; } else if (this._values.length > 0) { var value = this._values[0]; var itemHolders = this._itemHolderByValue[value + '']; if (itemHolders) { this.domSignal.once('scrollIntoSelected', function () { var holder = itemHolders[0]; this.viewListAt(holder.idx); var itemElt = (0,ACore.$)('.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; }; MListModal.prototype.searchItemByText = js_SelectListBox.prototype.searchItemByText; MListModal.prototype.prepareSearch = js_SelectListBox.prototype.prepareSearch; MListModal.prototype.resetSearchState = function () { this.$searchInput.value = ''; this._preDisplayItems = this._listToDisplay(this._items); this._displayItems = this._filterValue(this._preDisplayItems); this._updateItemIndex(); this.domSignal.emit('viewListAt', 0); this.$listScroller.scrollTop = 0; }; MListModal.prototype.notifyPressOut = function () { this.emit('pressout', { target: this, type: 'pressout' }, this); }; MListModal.prototype.notifyPressClose = function () { this.emit('pressclose', { target: this, type: 'pressclose' }, this); }; MListModal.prototype._findFirstPageIdx = function () { for (var i = 0; i < this.preLoadN; ++i) { if (this._pageOffsets[i + 1] - this._pageOffsets[i] > 0) { return i; } } return -1; }; MListModal.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; }; MListModal.prototype._updateItemIndex = function () { this._itemHolderByValue = this._displayItems.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; }, {}); }; MListModal.property = {}; /*** * * @type {MListModal} */ MListModal.property.items = { get: function () { return this._items; }, set: function (items) { items = items || []; if (!Array.isArray(items)) items = [];//no items = (0,utils.copySelectionItemArray)(items) this._items = items; this._preDisplayItems = this._listToDisplay(this._items); this._displayItems = this._filterValue(this._preDisplayItems); this._itemsByValue = items.reduce(function reducer(ac, cr) { var key = (0,utils.keyStringOf)(cr.value); if (!ac[key]) ac[key] = []; else console.error("Duplicate value", cr); ac[key].push(cr); if (cr.items && cr.items.reduce) cr.items.reduce(reducer, ac); return ac; }, {}); this._updateItemIndex(); /*****************/ this.idx2key = []; var makeSearchItem = it => { var res = { value: this.idx2key.length }; var valueKey; res.text = it.text + ''; if (it.desc) res.text += it.desc; valueKey = (0,utils.keyStringOf)(it.value); it.keyValue = valueKey; this.idx2key.push(valueKey); if (it.items && it.items.length > 0 && it.items.map) { res.items = it.items.map(makeSearchItem); } return res; }; this.searchingItems = this._items.map(makeSearchItem); this.key2idx = this.idx2key.reduce((ac, cr, i) => { ac[cr] = i; return ac; }, {}); this.searchMaster.transfer(this.searchingItems); /*****************/ this._searchCache = {}; var estimateSize = measureListSize(this._preDisplayItems); if (estimateSize.descWidth > 0) { this.$listScroller.addStyle('--desc-width', 100 * (estimateSize.descWidth + 15) / (estimateSize.width) + '%'); } else { this.$listScroller.removeStyle('--desc-width'); } var estimateHeight = this._displayItems.length * 30 * Math.ceil(estimateSize.width * 1.2 / Math.min(Dom/* default.getScreenSize */.ZP.getScreenSize().width - 80, 500)); this._estimateHeight = estimateHeight; this.$content.addStyle('height', estimateHeight + 'px'); this.estimateSize = estimateSize; this.domSignal.emit('viewListAt', 0); } }; MListModal.property.values = { set: function (values) { values = values || []; values = values.slice(); this._values = values; this._valueDict = values.reduce(function (ac, cr) { ac[cr + ''] = true; ac[(0,utils.keyStringOf)(cr)] = cr; return ac; }, {}); this._displayItems = this._filterValue(this._preDisplayItems); this._updateItemIndex(); //todo if (this._pageOffsets[this.preLoadN] > this._pageOffsets[0]) this._updateSelectedItem(); }, get: function () { return this._values; } }; MListModal.property.displayValue = { set: function (value) { this._displayValue = value; this._displayItems = this._filterValue(this._preDisplayItems); this._updateItemIndex(); if (value === MListModal_VALUE_HIDDEN) { this.addClass('am-value-hidden'); } else { this.removeClass('am-value-hidden'); } }, get: function () { return this._displayValue; } } MListModal.property.enableSearch = { set: function (value) { if (value) this.$box.addClass('am-enable-search'); }, get: function () { return this.$box.removeClass('am-enable-search'); } }; /*** * * @type {MListModal} */ MListModal.eventHandler = {}; /*** * * @param {MouseEvent} event */ MListModal.eventHandler.click = function (event) { if (event.target === this) this.notifyPressOut(); }; MListModal.eventHandler.searchModify = function () { var text = this.$searchInput.value; var searchSession = Math.random() + ''; this._seachSession = searchSession; this.searchItemByText(text).then(searchedItems => { if (this._seachSession !== searchSession) return; this._preDisplayItems = this._listToDisplay(searchedItems); this._displayItems = this._filterValue(this._preDisplayItems); this._updateItemIndex(); this.viewListAt(0); this.$listScroller.scrollTop = 0; }); }; MListModal.eventHandler.scroll = function () { var scrollerBound = this.$listScroller.getBoundingClientRect(); var topIdx = this._findFirstPageIdx(); var fontSize = this.$listScroller.getFontSize() || 14; var screenSize = Dom/* default.getScreenSize */.ZP.getScreenSize(); var maxItem = Math.ceil(screenSize.height / (fontSize * 2.25)); var pageBound; var topBound = this.$listPages[topIdx].getBoundingClientRect(); if (this._pageOffsets[topIdx] > 0) { if (topBound.top + this.toLoadNextY > scrollerBound.top) { this._pageOffsets.unshift(this._pageOffsets.pop()); this._pageYs.unshift(this._pageYs.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]); pageBound = this.$listPages[topIdx].getBoundingClientRect(); this._pageYs[topIdx] = this._pageYs[topIdx + 1] - pageBound.height; this.$listPages[topIdx].addStyle('top', this._pageYs[topIdx] + 'px'); this._updateSelectedItem(); if (this._pageOffsets[topIdx] === 0) { this.$listPages[0].addStyle('top', '0'); this._pageYs[0] = 0; this._alignPage(); this.$listScroller.scrollTop = 0; } } } else { if (topBound.top > scrollerBound.top) { this.$listScroller.scrollTop += topBound.top - scrollerBound.top; } } var botIdx = this._findLastPageIdx(); var botBound; botBound = this.$listPages[botIdx].getBoundingClientRect(); if (this._pageOffsets[botIdx + 1] < this._displayItems.length) { if (botBound.bottom - this.toLoadNextY < scrollerBound.bottom) { this._pageOffsets.push(this._pageOffsets.shift()); this._pageYs.push(this._pageYs.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._pageYs[botIdx] + 'px'); this._requireItem(this.$listPages[botIdx], this._pageOffsets[botIdx + 1] - this._pageOffsets[botIdx]); this._assignItems(this.$listPages[botIdx], this._pageOffsets[botIdx]); pageBound = this.$listPages[botIdx].getBoundingClientRect(); this._pageYs[botIdx + 1] = this._pageYs[botIdx] + pageBound.height; this._updateSelectedItem(); if (this._pageOffsets[botIdx + 1] < this._displayItems.length) { this.$content.addStyle('height', this._estimateHeight + 'px'); } else { this.$content.addStyle('height', this._pageYs[botIdx + 1] + 'px'); } } } }; /* harmony default export */ const selectlistbox_MListModal = (MListModal); ACore/* default.install */.Z.install('mlistmodal', MListModal); Dom/* default.ShareInstance.install */.ZP.ShareInstance.install('mlistmodal', MListModal); /** * @extends AElement * @constructor */ function MListModalV2() { this.estimateSize = { textWidth: 0, descWidth: 0 }; this.itemHolders = []; this.itemHolderByValue = {}; this.screenSize = (0,Dom/* getScreenSize */.tE)(); this.pagingCtrl = new MLMPagingController(this); this.layoutCtrl = new MLMLayoutController(this); this.on('pressitem', this.eventHandler.selectItem); this._value = undefined; this.selectedHolder = null; this.searchCtrl = new MLMSearchController(this); this.$closeBtn = (0,ACore.$)('.am-list-popup-close-btn', this) this.on('click', this.eventHandler.click); this.$closeBtn.on('click', this.eventHandler.clickCloseBtn); /** * @type {any} * @name value * @memberof MListModalV2# */ /** * @type {Array} * @name items * @memberof MListModalV2# */ /** * @type {boolean} * @name enableSearch * @memberof MListModalV2# */ /** * @type {boolean} * @name strictValue * @memberof MListModalV2# */ /** * @type {number} * @name selectedIndex * @memberof MListModalV2# */ } MListModalV2.tag = 'MListModalV2'.toLowerCase(); MListModalV2.render = function () { return (0,ACore._)({ extendEvent: ['pressitem', 'pressclose', 'pressout'], class: 'am-list-modal-v2', child: [ { class: ['am-list-popup-box'], child: [ { class: 'am-list-popup-header', child: [ { tag: 'searchtextinput' }, { tag: 'button', class: 'am-list-popup-close-btn', child: 'span.mdi.mdi-close' } ] }, { class: 'am-list-popup-list-scroller', child: { class: 'am-list-popup-content', child: Array(MListModal.prototype.preLoadN).fill('.am-list-popup-list-page.am-selectlist') } } ] } ] }); }; MListModalV2.prototype.resetSearchState = function () { this.searchCtrl.resetSearchState(); }; MListModalV2.prototype.cancelWaiting = function () { } MListModalV2.prototype.findItemsByValue = function (value) { var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (!holder) return null; return [holder.data]; }; MListModalV2.prototype.findItemByValue = function (value) { var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (!holder) return null; return holder.data; }; MListModalV2.prototype.viewListAt = function (idx) { var offset = this.pagingCtrl.offsetTopOfHolders[idx]; offset = offset || 0; this.pagingCtrl.$listScroller.scrollTop = offset; this.pagingCtrl.update(); }; MListModalV2.prototype.viewListAtFirstSelected = function () { var selectedIndex = this.selectedIndex; this.viewListAt(selectedIndex); }; MListModalV2.prototype.updateSelectedItem = function () { if (this.selectedHolder) { this.selectedHolder.selected = false; this.selectedHolder.updateView(); } var value = this.value;//computed value this.selectedHolder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (this.selectedHolder) { this.selectedHolder.selected = true; this.selectedHolder.updateView(); } }; MListModalV2.property = {}; MListModalV2.property.items = { set: function (items) { this.itemHolders.forEach(holder => { holder.detachView(); }); this.selectedHolder = null; if (!Array.isArray(items)) items = []; this.itemHolders = items.map(it => new MLMHolder(this, it)); this.itemHolders.forEach((holder, i) => { holder.idx = i; }); this.itemHolderByValue = this.itemHolders.reduce(function reducer(ac, cr) { ac[cr.keyValue] = cr; return ac; }, {}); this.updateSelectedItem(); this.layoutCtrl.calcSize(); this.pagingCtrl.viewArr(this.itemHolders); }, get: function () { return this.itemHolders.map(it => it.data); } }; MListModalV2.property.enableSearch = { /*** * @this SelectListBox * @param {boolean} value */ set: function (value) { if (value) this.addClass('as-enable-search'); else this.removeClass('as-enable-search'); }, /*** * @this SelectListBox */ get: function () { return this.hasClass('as-enable-search'); } }; MListModalV2.property.values = { set: function (values) { values = values || []; this.value = values[0]; }, get: function () { return [this.value]; } } MListModalV2.property.value = { set: function (value) { this._value = value; this.updateSelectedItem(); }, /** * @this MListModalV2 * @returns {*} */ get: function () { var value = this._value; var holder; if (this.strictValue) { holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (holder) return value; if (this.itemHolders.length > 0) { return this.itemHolders[0].data.value; } else { return value; } } else return value; } }; MListModalV2.property.strictValue = { set: function (value) { if (value) { this.addClass('as-strict-value'); } else { this.removeClass('as-strict-value'); } }, get: function () { return this.hasClass('as-strict-value'); } }; MListModalV2.property.selectedItem = { get: function () { var value = this._value; var holder; holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)] || null; if (this.strictValue) { if (!holder && this.itemHolders.length > 0) holder = this.itemHolders[0]; } if (holder) return holder.data; return null; } }; MListModalV2.property.selectedIndex = { get: function () { var value = this._value; var holder; holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)] || null; if (this.strictValue) { if (!holder && this.itemHolders.length > 0) holder = this.itemHolders[0]; } if (holder) return holder.idx; return 0; } }; MListModalV2.eventHandler = {}; MListModalV2.eventHandler.selectItem = function (event) { var value = event.value; var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (this.selectedHolder !== holder && this.selectedHolder) { this.selectedHolder.selected = false; this.selectedHolder.updateView(); } if (holder) { holder.selected = true; holder.updateView(); } }; MListModalV2.eventHandler.click = function (event) { if (event.target === this) { this.emit('pressclose', { target: this, type: 'pressclose' }, this); } }; MListModalV2.eventHandler.clickCloseBtn = function (event) { this.emit('pressclose', { target: this, type: 'pressclose' }, this); }; /** * * @param {MListModalV2} boxElt * @constructor */ function MLMLayoutController(boxElt) { this.boxElt = boxElt; } MLMLayoutController.prototype.calcSize = function () { var holders = this.boxElt.itemHolders; var screenSize = this.boxElt.screenSize; var maxAvailableWidth = Math.max(0, screenSize.width - 20); var col1maxWidth = 0; var col2maxWidth = 0; var visit = (nd) => { if (nd.computedSize.col1maxWidth > col1maxWidth) { col1maxWidth = nd.computedSize.col1maxWidth; } if (nd.computedSize.col2maxWidth > col2maxWidth) { col2maxWidth = nd.computedSize.col2maxWidth; } } holders.forEach(visit); var col1Width = col1maxWidth; var col2Width = col2maxWidth; if (col1maxWidth + col2maxWidth > maxAvailableWidth) { col1Width = col1maxWidth / ((col1maxWidth + col2maxWidth) || 1) * maxAvailableWidth; col2Width = Math.max(maxAvailableWidth - col1Width, 0); } var visit2 = (nd) => { nd.applyViewWidth(col1Width, col2Width); if (nd.children && nd.children.length) { nd.children.forEach(visit2); } } holders.forEach(visit2); this.boxElt.estimateSize.textWidth = col1maxWidth - 30; this.boxElt.estimateSize.descWidth = Math.max(0, col2maxWidth - 20); this.boxElt.addStyle('--col1-width', col1Width + 'px'); this.boxElt.addStyle('--col2-width', col2Width + 'px'); }; /** * * @param {MListModalV2} boxElt * @constructor */ function MLMPagingController(boxElt) { this.boxElt = boxElt; this.$content = (0,ACore.$)('.am-list-popup-content', this.boxElt); this.$listScroller = (0,ACore.$)('.am-list-popup-list-scroller', this.boxElt); this.holderArr = []; this.$listPages = []; this.$listScroller.on('scroll', this.ev_scroll.bind(this)); } MLMPagingController.prototype.itemPerPage = 100; MLMPagingController.prototype.preloadN = 5; MLMPagingController.prototype.fillPage = function (pageElt, n) { var itemElt; while (pageElt.childNodes.length > n) { itemElt = pageElt.lastChild; itemElt.selfRemove(); MSelectList_releaseItem(itemElt); } while (pageElt.childNodes.length < n) { itemElt = MSelectList_requireItem(this.boxElt); pageElt.addChild(itemElt); } } MLMPagingController.prototype.viewArr = function (itemHolders) { this.holderArr = itemHolders; var pageN = Math.ceil(this.holderArr.length / this.itemPerPage); while (this.$listPages.length > pageN) { this.$listPages.pop().remove(); } var pageElt; while (this.$listPages.length < pageN) { pageElt = (0,ACore._)({ class: 'am-check-list-page', child: [] }).addTo(this.$content); this.$listPages.push(pageElt); } // console.log('viewArr', holderArr.length); var itemIdx = 0; var k; var pageHeights = Array(pageN).fill(0); var pageIdx; this.offsetTopOfHolders = [0]; for (pageIdx = 0; pageIdx < pageN; ++pageIdx) { pageElt = this.$listPages[pageIdx]; pageElt.clearChild(); for (k = 0; (k < this.itemPerPage) && (itemIdx < this.holderArr.length); ++k, ++itemIdx) { pageHeights[pageIdx] += this.holderArr[itemIdx].computedSize.height; this.offsetTopOfHolders[itemIdx + 1] = this.offsetTopOfHolders[itemIdx] + this.holderArr[itemIdx].computedSize.height; } } for (pageIdx = 0; pageIdx < pageN; ++pageIdx) { pageElt = this.$listPages[pageIdx]; pageElt.addStyle('height', pageHeights[pageIdx] + 'px'); } this.$listScroller.scrollTop = 0; this.update(); }; MLMPagingController.prototype.update = function () { //by scrollTop var offset = this.$listScroller.scrollTop; var low = 0; var high = this.offsetTopOfHolders.length - 1; var mid; while (low < high) { mid = Math.floor((low + high) / 2); if (this.offsetTopOfHolders[mid] < offset) { low = mid + 1; } else { high = mid; } } var itemPerPage = this.itemPerPage; var startPageIdx = Math.max(0, Math.floor(low / this.itemPerPage - 1)); var endPageIdx = Math.min(this.$listPages.length, startPageIdx + this.preloadN); var pageIdx; var pageLength; var itemStartIdx, itemEndIdx; var itemIdx; for (pageIdx = 0; pageIdx < startPageIdx; pageIdx++) { this.fillPage(this.$listPages[pageIdx], 0); } for (pageIdx = endPageIdx; pageIdx < this.$listPages.length; pageIdx++) { this.fillPage(this.$listPages[pageIdx], 0); } for (pageIdx = startPageIdx; pageIdx < endPageIdx; pageIdx++) { itemStartIdx = pageIdx * itemPerPage; itemEndIdx = Math.min(itemStartIdx + itemPerPage, this.holderArr.length); pageLength = itemEndIdx - itemStartIdx; this.fillPage(this.$listPages[pageIdx], pageLength); for (itemIdx = itemStartIdx; itemIdx < itemEndIdx; itemIdx++) { this.holderArr[itemIdx].attachView(this.$listPages[pageIdx].childNodes[itemIdx - itemStartIdx]); } } }; MLMPagingController.prototype.ev_scroll = function () { this.update(); } /** * * @param {MListModalV2} boxElt * @param data * @constructor */ function MLMHolder(boxElt, data) { this.boxElt = boxElt; this.id = (0,stringGenerate.randomIdent)(6); this.idx = 0; this.data = data; this.selected = false; (0,OOP/* drillProperty */.pj)(this, this, 'item', 'data');//adapt old this.value = data.value; this.wrappedText = [this.data.text]; this.wrappedDesc = [this.data.desc]; this.keyValue = (0,utils.keyStringOf)(data.value); this.itemElt = null; this.computedSize = { width: 0, height: 30, col1maxWidth: 0, col2maxWidth: 0 }; this.calcInitSize(); } MLMHolder.prototype.getSearchItem = function () { var res = { value: this.id }; res.text = this.data.text + ''; if (this.data.desc) res.text += " " + this.data.desc; return res; }; MLMHolder.prototype.calcInitSize = function () { this.computedSize.textWidth = Math.ceil(TextMeasure/* default.measureWidth */.Z.measureWidth(this.data.text + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14)); //- 30px - 21px - 10px this.computedSize.col1maxWidth = this.computedSize.textWidth + 30; if (this.data.desc) { this.computedSize.descWidth = Math.ceil(TextMeasure/* default.measureWidth */.Z.measureWidth((this.data.desc || '') + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14)); this.computedSize.col2maxWidth = this.computedSize.descWidth + 20; } else { this.computedSize.descWidth = 0; } } MLMHolder.prototype.applyViewWidth = function (col1Width, col2Width) { this.computedSize.availableTextWidth = col1Width - 30; this.computedSize.availableDescWidth = col2Width - 20; if (this.computedSize.availableTextWidth < this.computedSize.textWidth) { this.wrappedText = TextMeasure/* default.wrapText */.Z.wrapText(this.data.text + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14, this.computedSize.availableTextWidth); } else { this.wrappedText = [this.data.text + '']; } if (this.data.desc && this.computedSize.availableDescWidth < this.computedSize.descWidth) { this.wrappedDesc = TextMeasure/* default.wrapText */.Z.wrapText((this.data.desc || '') + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14, this.computedSize.availableDescWidth); } else { this.wrappedDesc = [(this.data.desc || '') + '']; } this.computedSize.height = Math.max(this.wrappedText.length, this.wrappedDesc.length) * 20 + 10; }; MLMHolder.prototype.attachView = function (itemElt) { if (this.itemElt === itemElt) { this.updateView(); return; } if (itemElt.mlmHolder) { itemElt.mlmHolder.detachView(); } this.itemElt = itemElt; this.itemElt.mlmHolder = this; this.itemElt.data = this.data; this.itemElt.selected = this.data.selected; this.itemElt.addStyle('height', this.computedSize.height + 'px'); this.itemElt.$text.firstChild.data = this.wrappedText.join('\n'); this.itemElt.$desc.firstChild.data = this.wrappedDesc.join('\n'); }; MLMHolder.prototype.detachView = function () { if (this.itemElt) { this.itemElt.mlmHolder = null; this.itemElt = null; } }; MLMHolder.prototype.updateView = function () { if (this.itemElt) { this.itemElt.selected = this.selected; } }; /** * * @param {MListModalV2} boxElt * @constructor */ function MLMSearchController(boxElt) { this.boxElt = boxElt; this.$searchInput = (0,ACore.$)('searchtextinput', this.boxElt) .on('stoptyping', this.ev_searchModify.bind(this)); this.cache = {}; this.searchItems = null; this.holderDict = {}; } MLMSearchController.prototype.reset = function () { this.cache = {}; this.searchItems = null; this.holderDict = {}; } MLMSearchController.prototype.prepareSearchingHolders = function () { if (this.searchItems) return; this.searchItems = []; this.holderDict = {}; var visit = holder => { var it = holder.getSearchItem(); this.holderDict[it.value] = holder; this.searchItems.push(it); }; this.boxElt.itemHolders.forEach(visit); (0,search/* prepareSearchForList */.Lb)(this.searchItems); }; MLMSearchController.prototype.resetSearchState = function () { this.$searchInput.value = ''; this.ev_searchModify(); }; /** * * @param query * @returns {string[]} array of id */ MLMSearchController.prototype.query = function (query) { this.prepareSearchingHolders(); var result = this.cache[query]; var lcList; var visit; if (!result) { lcList = (0,search/* searchListByText */.o)(query, this.searchItems); result = []; visit = (it) => { result.push(it.value) }; lcList.forEach(visit); this.cache[query] = result; } return result; }; MLMSearchController.prototype.ev_searchModify = function () { var query = this.$searchInput.value; query = query.trim(); if (query.length === 0) { this.boxElt.pagingCtrl.viewArr(this.boxElt.itemHolders); return; } var result = this.query(query); var arr = []; for (var i = 0; i < result.length; ++i) { arr.push(this.holderDict[result[i]]); } this.boxElt.pagingCtrl.viewArr(arr); }; // EXTERNAL MODULE: ./node_modules/absol-acomp/js/SelectMenu.js var js_SelectMenu = __webpack_require__(5357); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectmenu/MSelectMenu.js /*** * @extends AElement * @constructor */ function MSelectMenu() { this._value = undefined; this._isFocus = false; this._itemsByValue = {}; this.$holderItem = (0,ACore.$)('.am-selectmenu-holder-item', this); /*** * @type {MListModalV2} */ this.$selectlist = (0,ACore._)({ tag: MListModalV2 }); this.$selectlist.cancelWaiting(); var checkView = () => { if (this.isDescendantOf(document.body)) { setTimeout(checkView, 10000); } else { if (this.$selectlist.searchMaster) this.$selectlist.searchMaster.destroy(); } } setTimeout(checkView, 30000); this.$selectlist.on('pressitem', this.eventHandler.pressItem, true) .on('pressout', this.eventHandler.pressOut) .on('pressclose', this.eventHandler.pressOut); this.on('click', this.eventHandler.click, true); this.$attachhook = (0,ACore.$)('attachhook', this).on('error', this.eventHandler.attached); /** * @name value * @memberof MSelectMenu# */ /** * @name items * @memberof MSelectMenu# */ } MSelectMenu.tag = 'mselectmenu'; MSelectMenu.render = function () { return (0,ACore._)({ class: ['absol-selectmenu', 'am-selectmenu', 'as-strict-value'], extendEvent: ['change', 'minwidthchange'], attr: { tabindex: '1' }, child: [ '.am-selectmenu-holder-item', { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] }, 'attachhook', ] }); }; MSelectMenu.prototype.findItemsByValue = function (value) { return this.$selectlist.findItemsByValue(value); }; MSelectMenu.prototype.findItemByValue = function (value) { return this.$selectlist.findItemByValue(value); }; MSelectMenu.prototype.updateItem = function () { this.$holderItem.clearChild(); var selected = this.findItemsByValue(this.value); if (selected) { var elt = (0,ACore._)({ tag: selectlistbox_MSelectListItem, props: { data: selected[0] } }).addTo(this.$holderItem); } }; MSelectMenu.prototype.notifyChange = function (data) { this.emit('change', Object.assign({}, data, { type: 'change', target: this }), this); }; MSelectMenu.prototype._dictByValue = js_SelectMenu/* default.prototype._dictByValue */.Z.prototype._dictByValue; MSelectMenu.prototype.getRecommendWith = function () { var res = 12 + this.$selectlist.estimateSize.textWidth + 30; if (this.$selectlist.estimateSize.descWidth) res += this.$selectlist.estimateSize.descWidth + 20; return res; }; MSelectMenu.prototype.init = js_SelectMenu/* default.prototype.init */.Z.prototype.init; MSelectMenu.property = {}; MSelectMenu.property.items = { set: function (value) { 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); this.$selectlist.items = value; if (!this._itemsByValue[this.value] && value.length > 0 && false) {} else this.updateItem(); if (this.style.width === 'auto' || !this.style.width) { this.addStyle('--recommend-width', this.getRecommendWith() / 14 + 'em'); } }, get: function () { return this._items || []; } }; MSelectMenu.property.value = { set: function (value) { this._value = value; this.$selectlist.values = [value]; this.updateItem(); }, get: function () { if (!this.strictValue) return this._value; var selected = this.findItemsByValue(this._value); if (selected) { return selected[0].value; } else { if (this._items && this._items.length > 0) { return this._items[0].value; } } return this._value; } }; MSelectMenu.property.strictValue = { set: function (value) { if (value) { this.addClass('as-strict-value'); } else { this.removeClass('as-strict-value'); } }, get: function () { return this.hasClass('as-strict-value'); } }; MSelectMenu.property.enableSearch = { set: function (value) { this.$selectlist.enableSearch = !!value; }, get: function () { return this.$selectlist.enableSearch; } }; MSelectMenu.property.isFocus = { set: function (value) { var thisSM = this; value = !!value; if (value === this._isFocus) return; if (this.readOnly || this.disabled) return; this._isFocus = value; if (value) { this.$selectlist.addTo(document.body); if (this.$selectlist.$attachhook) { this.$selectlist.$attachhook.emit('attached'); } thisSM.$selectlist.viewListAt(0); thisSM.$selectlist.viewListAtFirstSelected(); } else { this.$selectlist.selfRemove(); setTimeout(function () { thisSM.$selectlist.resetSearchState(); }, 100); } }, get: function () { return this._isFocus; } }; MSelectMenu.property.selectedIndex = js_SelectMenu/* default.property.selectedIndex */.Z.property.selectedIndex; MSelectMenu.property.disabled = js_SelectMenu/* default.property.disabled */.Z.property.disabled; MSelectMenu.property.hidden = js_SelectMenu/* default.property.hidden */.Z.property.hidden; /** * @type {MSelectMenu} */ MSelectMenu.eventHandler = {}; MSelectMenu.eventHandler.attached = function () { if (this.style.width === 'auto' || !this.style.width) { this.addStyle('--recommend-width', this.getRecommendWith() / 14 + 'em'); } }; MSelectMenu.eventHandler.click = function (event) { this.isFocus = !this.isFocus; }; MSelectMenu.eventHandler.pressOut = function (event) { this.isFocus = false; }; MSelectMenu.eventHandler.pressItem = function (event) { var newValue = event.value; if (newValue !== this._value) { var lastValue = this._value; this._value = newValue; this.$selectlist.values = [newValue]; this.updateItem(); var changeEvent = Object.assign({}, event, { lastValue: lastValue }); setTimeout(function () { this.notifyChange(changeEvent); }.bind(this), 1); } setTimeout(function () { this.isFocus = false; }.bind(this), 100); }; ACore/* default.install */.Z.install(MSelectMenu); /* harmony default export */ const selectmenu_MSelectMenu = (MSelectMenu); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreemenu/MSelectTreeMenu.js /*** * @extends MListModal * @constructor */ function MTreeModal() { selectlistbox_MListModal.call(this); } MTreeModal.tag = 'MTreeModal'.toLowerCase(); MTreeModal.render = function () { return selectlistbox_MListModal.render().addClass('am-tree-modal'); }; Object.assign(MTreeModal.prototype, selectlistbox_MListModal.prototype); MTreeModal.prototype._listToDisplay = function (items) { return treeListToList(items); }; MTreeModal.property = Object.assign({}, selectlistbox_MListModal.property); MTreeModal.eventHandler = Object.assign({}, selectlistbox_MListModal.eventHandler); /** * @extends {AElement} * @constructor */ function MSelectTreeMenu() { this._isFocus = false; this._itemsByValue = {}; this.$holderItem = (0,ACore.$)('.am-selectmenu-holder-item', this); /*** * @type {MTreeModal} */ this.$selectlist = (0,ACore._)({ tag: MTreeModal }); this.$selectlist.cancelWaiting(); this.$selectlist.on('pressitem', this.eventHandler.pressItem, true) .on('pressout', this.eventHandler.pressOut) .on('pressclose', this.eventHandler.pressOut); this.on('click', this.eventHandler.click, true); this.$attachhook = (0,ACore.$)('attachhook', this).on('error', this.eventHandler.attached); this.addStyle('--as-width-limit', calcWidthLimit() + 'px'); } MSelectTreeMenu.tag = 'MSelectTreeMenu'.toLowerCase(); MSelectTreeMenu.render = function () { return selectmenu_MSelectMenu.render().addClass('am-select-tree-menu'); }; Object.assign(MSelectTreeMenu.prototype, selectmenu_MSelectMenu.prototype); MSelectTreeMenu.property = Object.assign({}, selectmenu_MSelectMenu.property); MSelectTreeMenu.eventHandler = Object.assign({}, selectmenu_MSelectMenu.eventHandler); MSelectTreeMenu.prototype._dictByValue = function (items) { return items.reduce(function visitor(ac, cr) { if (cr.items && cr.items.reduce) { cr.items.reduce(visitor, ac); } var value = cr.value + ''; ac[value] = cr; return ac; }, {}) }; ACore/* default.install */.Z.install(MSelectTreeMenu); /* harmony default export */ const selecttreemenu_MSelectTreeMenu = ((/* unused pure expression or super */ null && (MSelectTreeMenu))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multicheckmenu/MCheckListModal.js function MCheckListModal_measureListSize(items) { var descWidth = measureMaxDescriptionWidth(items); var textWidth = measureMaxTextWidth(items); var width = descWidth + 20 + textWidth + 12 + 15 + 18;//padding, margin return { width: width, descWidth: descWidth, textWidth: textWidth }; } var MCheckListModal_itemPool = []; function MCheckListModal_onClickItem(event) { var thisSL = this.$parent; if (thisSL) { thisSL.eventHandler.selectItem(this, event); } } /** * @returns {MSelectListItem} */ function MCheckListModal_makeItem() { return (0,ACore._)({ tag: multicheckmenu_MChecklistItem, on: { select: MCheckListModal_onClickItem } }); } function MCheckListModal_requireItem($parent) { var item; if (MCheckListModal_itemPool.length > 0) { item = MCheckListModal_itemPool.pop(); } else { item = MCheckListModal_makeItem(); } item.$parent = $parent; return item; } function MCheckListModal_releaseItem(item) { item.$parent = null; item.attr('class', 'am-selectlist-item'); item.selected = false; MCheckListModal_itemPool.push(item); } /*** * @extends MListModal * @constructor */ function MCheckListModal() { this.itemHolderByValue = {}; this.itemHolders = []; this.domSignal = new DelaySignal/* default */.Z(); this.$checkAll = (0,ACore.$)('.as-select-list-box-check-all', this); this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.$box = (0,ACore.$)('.am-list-popup-box', this); this.$scroller = (0,ACore.$)('.am-check-list-scroller', this); this.pagingCtrl = new MCLPagingController(this); this.actionCtrl = new MCLActionController(this); this.searchCtrl = new MCLSearchController(this); this.screenSize = (0,Dom/* getScreenSize */.tE)(); this.widthLimit = this.screenSize.width - 20; this._values = []; this._valueDict = {}; this.layoutCtrl = new MCLLayoutController(this); /** * @type {boolean} * @name selectedAll * @memberOf MCheckListModal# * @readonly */ /** * @type {[]} * @name values * @memberOf MCheckListModal# */ /** * @type {[]} * @name items * @memberOf MCheckListModal# */ } MCheckListModal.tag = 'MChecklistModal'.toLowerCase(); Object.assign(MCheckListModal.prototype, selectlistbox_MListModal.prototype); MCheckListModal.property = Object.assign({}, selectlistbox_MListModal.property); MCheckListModal.eventHandler = Object.assign({}, selectlistbox_MListModal.eventHandler); delete MCheckListModal.property.orderly; MCheckListModal.render = function () { return (0,ACore._)({ extendEvent: ['change', 'close', 'cancel'], class: ['am-list-modal', 'am-check-list-modal'], child: [ { class: ['am-list-popup-box'], child: [ { class: 'am-list-popup-header', child: [ { tag: 'searchtextinput' }, { tag: 'button', class: 'am-list-popup-close-btn', child: 'span.mdi.mdi-close' } ] }, { class: 'am-check-list-scroller', child: { class: 'am-list-popup-content' } }, { class: 'as-dropdown-box-footer', child: [ { tag: 'checkbox', class: 'as-select-list-box-check-all', props: { checked: false, text: 'Check All' } }, { class: 'as-dropdown-box-footer-right', child: { tag: 'a', class: 'as-select-list-box-cancel-btn', child: { text: 'Cancel' } } } ] } ] } ] }); }; MCheckListModal.prototype.addTo = function (parent) { AElement/* default.prototype.addTo.apply */.Z.prototype.addTo.apply(this, arguments); this.pagingCtrl.viewListAt(0); }; /** * wrong function name * @deprecated * @param value * @returns {*|null} */ MCheckListModal.prototype.findItemsByValue = function (value) { var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (holder) return holder.data; return null; }; MCheckListModal.prototype.findItemByValue = function (value) { var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (holder) return holder.data; return null; }; MCheckListModal.prototype.refollow = noop/* default */.Z; MCheckListModal.prototype.updatePosition = noop/* default */.Z; MCheckListModal.prototype.resetSearchState = function () { this.searchCtrl.resetSearchState(); }; /** * * @param value * @returns {null|[*]} */ MCheckListModal.prototype.findItemHoldersByValue = function (value) { var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (holder) return [holder]; return null; }; MCheckListModal.prototype.viewListAtValue = function (value) { this.pagingCtrl.viewListAtValue(value); }; MCheckListModal.prototype.viewListAtFirstSelected = function () { var value = this.values[0]; var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (!holder) return; var idx = holder.idx; this.pagingCtrl.viewListAt(idx); }; MCheckListModal.property.values = { set: function (values) { values = values || []; if (!Array.isArray(values)) { values = []; } this._values = values.slice(); this._valueDict = this._values.reduce((ac, cr) => { ac[(0,utils.keyStringOf)(cr)] = cr; return ac; }, {}); this.itemHolders.forEach(holder => { holder.selected = holder.valueKey in this._valueDict; holder.updateView(); }); this.$checkAll.checked = this.selectedAll; }, get: function () { var valueHolders = this._values.map(value => { var holder = this.itemHolderByValue[(0,utils.keyStringOf)(value)]; return holder ? { value: value, idx: holder.idx, } : null; }).filter(x => !!x); valueHolders.sort((a, b) => a.idx - b.idx); return valueHolders.map(x => x.value); } }; MCheckListModal.property.items = { /** * @this {MCheckListModal} * @param items */ set: function (items) { items = items || []; if (!Array.isArray(items)) items = []; items = (0,utils.copySelectionItemArray)(items, { removeNoView: true, removeNewLine: true }); this._items = items; this.itemHolders = this._items.map(it => new MCLHolder(this, it, null)); this.itemHolderByValue = this.itemHolders.reduce((ac, cr) => { return cr.toDictionary(ac); }, {}); //update idx var idx = 0; var visit = (nd) => { nd.idx = idx++; if (nd.children && nd.children.length) { nd.children.forEach(visit); } } this.itemHolders.forEach(visit); this.layoutCtrl.calcSize(); this.pagingCtrl.viewArr(this.itemHolders); this.$checkAll.checked = this.selectedAll; }, get: function () { return this._items; } }; MCheckListModal.property.selectedItems = { get: function () { var holders = this._values.map(value => this.itemHolderByValue[(0,utils.keyStringOf)(value)]).filter(x => !!x); holders.sort((a, b) => a.idx - b.idx); return holders.map(it => it.data); } }; MCheckListModal.property.selectedAll = { get: function () { return this.itemHolders.length > 0 && this.itemHolders.every(function visit(holder) { var res = holder.selected || holder.data.noSelect; if (res && holder.children) { res = holder.children.every(visit); } return res; }); } }; /** * @this {MCheckListModal} * @param itemElt * @param event */ MCheckListModal.eventHandler.selectItem = function (itemElt, event) { var selected = itemElt.selected; var data = itemElt.data; var value = itemElt.value; var key = (0,utils.keyStringOf)(value); var holder = this.itemHolderByValue[key]; if (holder) { holder.selected = selected; } var idx; if (selected) { this._valueDict[key] = true; this._values.push(value); this.$checkAll.checked = this.selectedAll; } else { delete this._valueDict[key]; idx = this._values.indexOf(value); if (idx >= 0) this._values.splice(idx, 1); this.$checkAll.checked = false; } this.emit('change', { type: 'change', target: this, itemElt: this, value: value, data: data, itemData: data, action: selected ? "check" : "uncheck", originalEvent: event.originalEvent || event.originEvent || event }); }; MCheckListModal.eventHandler.checkAllChange = CheckListBox.eventHandler.checkAllChange; MCheckListModal.eventHandler.clickCancelBtn = CheckListBox.eventHandler.clickCancelBtn; ACore/* default.install */.Z.install(MCheckListModal); /* harmony default export */ const multicheckmenu_MCheckListModal = (MCheckListModal); /** * * @param {MCheckListModal} boxElt * @constructor */ function MCLLayoutController(boxElt) { this.boxElt = boxElt; } MCLLayoutController.prototype.calcSize = function () { var holders = this.boxElt.itemHolders; var screenSize = this.boxElt.screenSize; var maxAvailableWidth = Math.max(0, screenSize.width - 20); var col1maxWidth = 0; var col2maxWidth = 0; var visit = (nd) => { if (nd.computedSize.col1maxWidth > col1maxWidth) { col1maxWidth = nd.computedSize.col1maxWidth; } if (nd.computedSize.col2maxWidth > col2maxWidth) { col2maxWidth = nd.computedSize.col2maxWidth; } if (nd.children && nd.children.length) { nd.children.forEach(visit); } } holders.forEach(visit); var col1Width = col1maxWidth; var col2Width = col2maxWidth; if (col1maxWidth + col2maxWidth > maxAvailableWidth) { col1Width = col1maxWidth / ((col1maxWidth + col2maxWidth) || 1) * maxAvailableWidth; col2Width = Math.max(maxAvailableWidth - col1Width, 0); } var visit2 = (nd) => { nd.applyViewWidth(col1Width, col2Width); if (nd.children && nd.children.length) { nd.children.forEach(visit2); } } holders.forEach(visit2); this.boxElt.addStyle('--col1-width', col1Width + 'px'); this.boxElt.addStyle('--col2-width', col2Width + 'px'); }; /** * @extends CLHolder * @param {MCheckListModal} boxElt * @param data * @param parent * @constructor */ function MCLHolder(boxElt, data, parent) { this.idx = 0; this.id = (0,stringGenerate.randomIdent)(8); this.parent = parent; this.level = parent ? parent.level + 1 : 0; this.boxElt = boxElt; this.data = data; (0,OOP/* drillProperty */.pj)(this, this, 'item', 'data');//adapt mobile and desktop this.valueKey = (0,utils.keyStringOf)(data.value); this.itemKey = keyStringOfItem(data); this.itemElt = null; this.children = null; this.selected = this.valueKey in boxElt._valueDict; var Clazz = this.constructor; if (data.items && data.items.length > 0) { this.children = data.items.map(it => new Clazz(boxElt, it, this)); } this.computedSize = { textWidth: 0, descWidth: 0, width: 0, height: 0, col1maxWidth: 0, col2maxWidth: 0, col1Width: 0, col2width: 0, availableTextWidth: 0, availableDescWidth: 0, levelWidth: 0, }; this.calcInitSize(); this.wrappedText = [this.data.text]; this.wrappedDesc = [this.data.desc]; } (0,OOP/* mixClass */.Jx)(MCLHolder, CLHolder); MCLHolder.prototype.calcInitSize = function () { this.computedSize.textWidth = Math.ceil(TextMeasure/* default.measureWidth */.Z.measureWidth(this.data.text + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14)); this.computedSize.levelWidth = this.level * 12; //- 30px - 21px - 10px this.computedSize.col1maxWidth = this.computedSize.textWidth + 30 + this.computedSize.levelWidth + 21 + 10;//todo if (this.data.desc) { this.computedSize.descWidth = Math.ceil(TextMeasure/* default.measureWidth */.Z.measureWidth((this.data.desc || '') + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14)); this.computedSize.col2maxWidth = this.computedSize.descWidth + 20; } else { this.computedSize.descWidth = 0; } }; MCLHolder.prototype.applyViewWidth = function (col1Width, col2Width) { this.computedSize.col1Width = col1Width; this.computedSize.col2Width = col2Width; this.computedSize.availableTextWidth = col1Width - 30 - this.computedSize.levelWidth - 21 - 10; if (col1Width < this.computedSize.col1maxWidth) {//must wrap this.wrappedText = TextMeasure/* default.wrapText */.Z.wrapText(this.data.text + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14, this.computedSize.availableTextWidth); } else { this.wrappedText = [this.data.text]; } if (col2Width && col2Width < this.computedSize.col2maxWidth && this.data.desc) {//must wrap this.computedSize.availableDescWidth = col2Width - 20; this.wrappedDesc = TextMeasure/* default.wrapText */.Z.wrapText((this.data.desc || '') + '', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14, this.computedSize.availableDescWidth); } else { this.wrappedDesc = [(this.data.desc || '') + '']; } this.computedSize.height = 10 + Math.max(this.wrappedText.length, this.wrappedDesc.length, 1) * 20; this.computedSize.width = Math.ceil(this.boxElt.screenSize.width - 20); }; MCLHolder.prototype.toArray = function (ac) { ac = ac || []; ac.push(this); if (this.children) this.children.reduce((ac, holder) => holder.toArray(ac), ac); return ac; }; MCLHolder.prototype.toDictionary = function (ac) { ac = ac || {}; ac[this.valueKey] = this; if (this.children) this.children.reduce((ac, holder) => holder.toDictionary(ac), ac); return ac; }; MCLHolder.prototype.detachView = function () { if (this.itemElt) { this.itemElt.attr('title', null); this.itemElt.clHolder = null; this.itemElt = null; } }; MCLHolder.prototype.getSearchItem = function () { var res = { value: this.id }; res.text = this.data.text + ''; if (this.data.desc) res.text += '/' + this.data.desc; if (this.children) res.items = this.children.map(c => c.getSearchItem()) return res; }; MCLHolder.prototype.attachView = function (itemElt) { if (this.itemElt === itemElt) return; if (itemElt.clHolder) itemElt.clHolder.detachView(); itemElt.clHolder = this; this.itemElt = itemElt; itemElt.data = this.data; itemElt.level = this.level; itemElt.selected = this.selected; itemElt.$text.firstChild.data = this.wrappedText.join('\n'); itemElt.$desc.firstChild.data = this.wrappedDesc && this.wrappedDesc.length ? this.wrappedDesc.join('\n') : ''; itemElt.addStyle('height', this.computedSize.height + 'px'); } MCLHolder.prototype.updateView = function () { if (this.itemElt) { this.itemElt.selected = this.selected; } }; /** * @extends MCLHolder * @param {MCheckListModal} boxElt * @param origin * @param parent * @param result * @constructor */ function MCLHolderRef(boxElt, origin, parent, result) { this.boxElt = boxElt; this.origin = origin; this.data = origin.data; this.parent = parent; this.level = origin.level; this.wrappedText = origin.wrappedText; this.wrappedDesc = origin.wrappedDesc; OOP/* default.drillProperty */.ZP.drillProperty(this, origin, 'selected'); var Clazz = this.constructor; var arr, children; if (origin.children) { arr = origin.children.filter(it => !!result[it.id]); arr.sort((a, b) => result[a.id] - result[b.id]); children = arr.map(holder => new Clazz(boxElt, holder, this, result)); if (children.length > 0) this.children = children; } this.computedSize = origin.computedSize; } (0,OOP/* mixClass */.Jx)(MCLHolderRef, MCLHolder); /** * * @param {MCheckListModal} boxElt * @constructor */ function MCLPagingController(boxElt) { this.boxElt = boxElt; this.$listScroller = (0,ACore.$)('.am-check-list-scroller', this.boxElt) .on('scroll', this.ev_scroll.bind(this)); this.$listPages = []; this.$content = (0,ACore.$)('.am-list-popup-content', this.boxElt); this.holderArr = []; this.offsetTopOfHolders = [];//y of each item } MCLPagingController.prototype.preLoadN = 3; MCLPagingController.prototype.itemPerPage = 100; MCLPagingController.prototype._requireItem = function (pageElt, n) { var itemElt; while (pageElt.childNodes.length > n) { itemElt = pageElt.lastChild; itemElt.selfRemove(); MCheckListModal_releaseItem(itemElt); } while (pageElt.childNodes.length < n) { itemElt = MCheckListModal_requireItem(this.boxElt); pageElt.addChild(itemElt); } }; MCLPagingController.prototype.viewArr = function (itemHolders) { this.holderArr = itemHolders.reduce((ac, holder) => holder.toArray(ac), []); var pageN = Math.ceil(this.holderArr.length / this.itemPerPage); while (this.$listPages.length > pageN) { this.$listPages.pop().remove(); } var pageElt; while (this.$listPages.length < pageN) { pageElt = (0,ACore._)({ class: 'am-check-list-page', child: [] }).addTo(this.$content); this.$listPages.push(pageElt); } var itemIdx = 0; var k; var pageHeights = Array(pageN).fill(0); var pageIdx; this.offsetTopOfHolders = [0]; for (pageIdx = 0; pageIdx < pageN; ++pageIdx) { pageElt = this.$listPages[pageIdx]; pageElt.clearChild(); for (k = 0; (k < this.itemPerPage) && (itemIdx < this.holderArr.length); ++k, ++itemIdx) { pageHeights[pageIdx] += this.holderArr[itemIdx].computedSize.height; this.offsetTopOfHolders[itemIdx + 1] = this.offsetTopOfHolders[itemIdx] + this.holderArr[itemIdx].computedSize.height; } } for (pageIdx = 0; pageIdx < pageN; ++pageIdx) { pageElt = this.$listPages[pageIdx]; pageElt.addStyle('height', pageHeights[pageIdx] + 'px'); } this.$listScroller.scrollTop = 0; this.update(); }; MCLPagingController.prototype.update = function () { var now = Date.now(); //by scrollTop var offset = this.$listScroller.scrollTop; var low = 0; var high = this.offsetTopOfHolders.length - 1; var mid; while (low < high) { mid = Math.floor((low + high) / 2); if (this.offsetTopOfHolders[mid] < offset) { low = mid + 1; } else { high = mid; } } var itemPerPage = this.itemPerPage; var startPageIdx = Math.max(0, Math.floor(low / this.itemPerPage - 1)); var endPageIdx = Math.min(this.$listPages.length, startPageIdx + this.preLoadN); var pageIdx; var pageLength; var itemStartIdx, itemEndIdx; var itemIdx; for (pageIdx = 0; pageIdx < startPageIdx; pageIdx++) { this._requireItem(this.$listPages[pageIdx], 0); } for (pageIdx = endPageIdx; pageIdx < this.$listPages.length; pageIdx++) { this._requireItem(this.$listPages[pageIdx], 0); } for (pageIdx = startPageIdx; pageIdx < endPageIdx; pageIdx++) { itemStartIdx = pageIdx * itemPerPage; itemEndIdx = Math.min(itemStartIdx + itemPerPage, this.holderArr.length); pageLength = itemEndIdx - itemStartIdx; this._requireItem(this.$listPages[pageIdx], pageLength); for (itemIdx = itemStartIdx; itemIdx < itemEndIdx; itemIdx++) { this.holderArr[itemIdx].attachView(this.$listPages[pageIdx].childNodes[itemIdx - itemStartIdx]); } } } MCLPagingController.prototype.viewListAtValue = function (value) { var holder = this.boxElt.itemHolderByValue[(0,utils.keyStringOf)(value)]; if (!holder) return; var idx = holder.idx; this.$listScroller.scrollTop = this.offsetTopOfHolders[idx] || 0; this.update(); }; MCLPagingController.prototype.viewListAt = function (offset) { this.$listScroller.scrollTop = this.offsetTopOfHolders[offset] || 0; this.update(); }; MCLPagingController.prototype.ev_scroll = function () { this.update(); }; function MCLSearchController(boxElt) { this.boxElt = boxElt; this.$searchInput = (0,ACore.$)('searchtextinput', boxElt) .on('stoptyping', this.ev_searchModify.bind(this)); this.cache = {}; this.searchItems = null; this.holderDict = null; this.session = Math.floor(Math.random() * 1000000); } MCLSearchController.prototype.reset = function () { this.cache = {}; this.searchItems = null; this.holderDict = null;//by id this.session = Math.floor(Math.random() * 1000000); }; MCLSearchController.prototype.prepareSearchingHolders = function () { if (this.searchItems) return; this.searchItems = this.boxElt.itemHolders.map(it => it.getSearchItem()); (0,search/* prepareSearchForList */.Lb)(this.searchItems); var holderDict = {}; var visit = (nd) => { var id = nd.id; holderDict[id] = nd; if (nd.children && nd.children.length) { nd.children.forEach(visit); } } this.boxElt.itemHolders.forEach(visit); this.holderDict = holderDict; }; MCLSearchController.prototype.resetSearchState = function () { this.$searchInput.value = ''; this.session = Math.floor(Math.random() * 1000000); this.ev_searchModify(); }; /** * * @param query * @returns {null|{}} return dictionary of id */ MCLSearchController.prototype.query = function (query) { //todo: async or split task this.prepareSearchingHolders(); var result = this.cache[query]; var lcList; var visit, idx; if (!result) { lcList = (0,search/* searchTreeListByText */.$l)(query, this.searchItems); result = {}; idx = 0; visit = (it) => { result[it.value] = ++idx; if (it.items && it.items.length) { it.items.forEach(visit); } }; lcList.forEach(visit); this.cache[query] = result; } this.ev_queryComplete(result); return result; }; MCLSearchController.prototype.ev_queryComplete = function (result) { var arr = this.boxElt.itemHolders.filter(it => !!result[it.id]); arr.sort((a, b) => result[a.id] - result[b.id]); var searchHolders = arr.map(holder => new MCLHolderRef(this.boxElt, holder, null, result)); this.boxElt.pagingCtrl.viewArr(searchHolders); }; MCLSearchController.prototype.ev_searchModify = function () { var query = this.$searchInput.value; query = query.trim(); if (query.length === 0) { this.boxElt.pagingCtrl.viewArr(this.boxElt.itemHolders); return; } this.query(query); }; /** * * @param {MCheckListModal} boxElt * @constructor */ function MCLActionController(boxElt) { this.boxElt = boxElt; this.$checkAll = this.boxElt.$checkAll; this.$cancelBtn = (0,ACore.$)('.as-select-list-box-cancel-btn', boxElt); this.$closeBtn = (0,ACore.$)('.am-list-popup-close-btn', boxElt); this.$checkAll.on('change', this.ev_checkedChange.bind(this)); this.boxElt.on('click', this.ev_clickModal.bind(this)); this.$closeBtn.on('click', this.ev_clickClose.bind(this)); this.$cancelBtn.on('click', this.ev_clickCancel.bind(this)); } MCLActionController.prototype.ev_checkedChange = function () { var values = this.boxElt._values; var dict = this.boxElt._valueDict; while (values.length > 0) values.pop(); Object.keys(dict).forEach(function (key) { delete dict[key]; }); var checked = this.$checkAll.checked; var visit = (nd) => { if (!nd.data.noSelect) nd.selected = checked; if (checked && !dict[nd.valueKey]) { dict[nd.valueKey] = true; values.push(nd.data.value); } if (nd.children && nd.children.length) { nd.children.forEach(visit); } }; this.boxElt.itemHolders.forEach(visit); this.boxElt.pagingCtrl.holderArr.forEach(hd => hd.updateView()); this.boxElt.emit('change', { type: 'change' }, this); }; MCLActionController.prototype.ev_clickCancel = function () { this.boxElt.emit('cancel', { type: 'cancel' }, this); }; MCLActionController.prototype.ev_clickClose = function () { this.boxElt.emit('close', { type: 'close' }, this); }; MCLActionController.prototype.ev_clickModal = function (event) { if (event.target === this.boxElt) { this.boxElt.emit('close', { type: 'close' }, this); } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MultiCheckMenu.js var hitItem = event => { var target = event.target; for (var i = 0; i < 5 && target; ++i) { if (target.hasClass && target.hasClass('absol-selectbox-item')) return true; target = target.parentElement; } return false; } var hitClose = event => { var target = event.target; if (target.hasClass && target.hasClass('absol-selectbox-item-close')) return true; target = target.parentElement; return !!(target.hasClass && target.hasClass('absol-selectbox-item-close')); }; /*** * @extends AElement * @constructor */ function MultiCheckMenu() { (0,MultiLanguageCSS/* loadLanguageModule */.q)(); this.addClass('as-multi-check-menu'); // this.on('click', this.eventHandler.click); /*** * @type {CheckListBox|MCheckListModal} */ this.$selectlistBox = (0,ACore._)({ tag: BrowserDetector/* default.isMobile */.Z.isMobile ? multicheckmenu_MCheckListModal : CheckListBox,//use new version//TODO: in process props: { anchor: [1, 6, 2, 5], } }); (0,OOP/* drillProperty */.pj)(this, this.$selectlistBox, 'debug') this.addStyle('--as-width-limit', Math.max(140, (this.$selectlistBox.widthLimit || 0)) + 'px'); this.$itemCtn = (0,ACore.$)('.as-multi-select-menu-item-ctn', this); this.$attachhook = (0,ACore.$)('attachhook', this) .on('attached', this.eventHandler.attached); this.$attachhook.requestUpdateSize = this.updateSize.bind(this); this.boxCtrl = new MSMBoxController(this); this.itemsViewCtrl = new MSMItemsViewController(this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.boxCtrl, 'isFocus'); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$selectlistBox, 'enableSearch'); OOP/* default.drillProperty */.ZP.drillProperty(this, this.itemsViewCtrl, '$items');//adapt this.commitedValues = [];//commit value this.$selectlistBox.followTarget = this; this.$selectlistBox.sponsorElement = this; this.disableClickToFocus = false; this.orderly = true;//always true this.itemFocusable = false; /** * @type {boolean} * @memberof MultiCheckMenu# * @name disabled */ /** * @type {boolean} * @memberof MultiCheckMenu# * @name readOnly */ /** * @type {Array<number|null|string|Date>} * @memberof MultiCheckMenu# * @name values */ } MultiCheckMenu.tag = 'MultiCheckMenu'.toLowerCase(); MultiCheckMenu.render = js_MultiSelectMenu.render; Object.assign(MultiCheckMenu.prototype, js_MultiSelectMenu.prototype); MultiCheckMenu.property = Object.assign({}, js_MultiSelectMenu.property); MultiCheckMenu.eventHandler = Object.assign({}, js_MultiSelectMenu.eventHandler); delete MultiCheckMenu.property.isFocus; delete MultiCheckMenu.property.orderly; MultiCheckMenu.prototype.styleHandlers = {}; MultiCheckMenu.prototype.styleHandlers.maxWidth = function (value) { var parsedValue = (0,attribute.parseMeasureValue)(value); if (parsedValue.unit === 'px') { this.addClass('as-has-max-width'); this.addStyle('--max-width', value); } else { this.removeClass('as-has-max-width'); } }; MultiCheckMenu.prototype.styleHandlers['max-width'] = MultiCheckMenu.prototype.styleHandlers.maxWidth; MultiCheckMenu.prototype.styleHandlers.width = function (value) { var parsedValue = (0,attribute.parseMeasureValue)(value); if (parsedValue.unit === 'px') { this.addClass('as-has-max-width'); this.addStyle('--max-width', value); this.style.width = value; } else { this.removeClass('as-has-max-width'); } }; /** * @this MultiCheckMenu * @param value */ MultiCheckMenu.prototype.styleHandlers.maxHeight = function (value) { var psValue = (0,attribute.parseMeasureValue)(value); if (psValue) { switch (psValue.unit) { case 'px': psValue.value = Math.min(psValue.value, 90); break; case 'em': case 'rem': psValue.value = Math.min(psValue.value, 90 / 14); break; } this.$itemCtn.addStyle('max-height', psValue.value + psValue.unit); } else { this.$itemCtn.removeStyle('max-height'); } }; MultiCheckMenu.prototype.styleHandlers['max-height'] = MultiCheckMenu.prototype.styleHandlers.maxHeight; MultiCheckMenu.prototype.styleHandlers.hidden = function (value) { if (value === 'hidden') { this.style.overflow = 'hidden'; this.$itemCtn.style.overflow = 'hidden'; } else { this.style.overflow = ''; this.$itemCtn.style.overflow = ''; } } MultiCheckMenu.prototype.addStyle = function (arg0, arg1) { if ((typeof arg0 === "string") && (this.styleHandlers[arg0])) { this.styleHandlers[arg0].apply(this, Array.prototype.slice.call(arguments, 1)); return this; } else { return AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } }; MultiCheckMenu.prototype.removeStyle = function (arg0) { if ((typeof arg0 === "string") && (this.styleHandlers[arg0])) { this.styleHandlers[arg0].call(this, ''); return this; } else { return AElement/* default.prototype.removeStyle.apply */.Z.prototype.removeStyle.apply(this, arguments); } }; MultiCheckMenu.prototype._updateOverflow = function () { //todo: calc item size before render var bound, i; var fromIdx = Infinity; if (this.getComputedStyleValue('overflow') === 'hidden') { bound = this.getBoundingClientRect(); if (bound.width === 0) return; this.$itemCtn.removeClass('as-has-more'); var hasMore = false; var elt; for (i = 0; i < this.$itemCtn.childNodes.length; ++i) { elt = this.$itemCtn.childNodes[i]; if (!hasMore) { elt.removeStyle('display'); var cBound = elt.getBoundingClientRect(); if (cBound.bottom > bound.bottom) { hasMore = true; fromIdx = i - 1; break; } } } if (hasMore) { this.$itemCtn.addClass('as-has-more'); for (i = 0; i < this.$itemCtn.childNodes.length; ++i) { elt = this.$itemCtn.childNodes[i]; if (i > 0 && i >= fromIdx) { elt.addStyle('display', 'none'); } else { elt.removeStyle('display'); } } } else { for (i = 0; i < this.$itemCtn.childNodes.length; ++i) { elt = this.$itemCtn.childNodes[i]; elt.removeStyle('display'); } } } }; MultiCheckMenu.property.values = { set: function (values) { if (values === undefined || values === null) values = []; else if (!Array.isArray(values)) values = [values]; this.$selectlistBox.values = values; this.commitedValues = this.$selectlistBox.values; this.itemsViewCtrl.update(); }, get: function () { return this.commitedValues; } }; MultiCheckMenu.property.items = { /** * @this MultiCheckMenu * @param items */ set: function (items) { this.$selectlistBox.items = items; this.commitedValues = this.$selectlistBox.values; this.addStyle('--list-min-width', Math.max(140, this.$selectlistBox._estimateWidth || 0) + 'px'); this.itemsViewCtrl.update(); }, get: function () { return this.$selectlistBox.items; } }; MultiCheckMenu.property.placeholder = { set: function (value) { if (typeof value === "string") value = value.trim(); if (value) { this.$itemCtn.attr('data-placeholder', value + ''); } else { this.$itemCtn.attr('data-placeholder', null); } }, get: function () { return this.$itemCtn.attr('data-placeholder') || ''; } }; MultiCheckMenu.prototype.updateSize = function () { var bound; if (this.boxCtrl.isFocus) { bound = this.getBoundingClientRect(); if (!BrowserDetector/* default.isMobile */.Z.isMobile) this.$selectlistBox.addStyle('min-width', Math.max(bound.width, this.$selectlistBox.getFontSize() * 18.5) + 'px'); this.$selectlistBox.refollow(); this.$selectlistBox.updatePosition(); } }; MultiCheckMenu.prototype.findItemsByValue = function (value) { return this.$selectlistBox.findItemsByValue(value); }; MultiCheckMenu.prototype.findItemByValue = function (value) { return this.$selectlistBox.findItemByValue(value); } MultiCheckMenu.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } } /*** * call after close checklistbox * @param event */ MultiCheckMenu.eventHandler.selectListBoxPressItem = function (event) { console.log('press') var prevValues = this.commitedValues; var prevDict = prevValues.reduce(function (ac, cr) { ac[cr + ''] = cr; return ac; }, {}); this.$selectlistBox.updatePosition(); var curValues = this.$selectlistBox.values; var changed = false; var curDict = curValues.reduce(function (ac, cr) { ac[cr + ''] = cr; return ac; }, {}); this.commitedValues = curValues.slice(); prevValues.forEach(function (value) { if ((value + '') in curDict) return; var holders = this.$selectlistBox.findItemsByValue(value); if (!holders || holders.length === 0) return; var item = holders[0].item; this.emit('remove', Object.assign({}, event, { type: 'remove', target: this, value: item.value, data: item, itemData: item }), this); changed = true; }.bind(this)); curValues.forEach(function (value) { if ((value + '') in prevDict) return; var holders = this.$selectlistBox.findItemsByValue(value); if (!holders || holders.length === 0) return; var item = holders[0].item; this.emit('add', Object.assign({}, event, { type: 'add', target: this, value: item.value, data: item, itemData: item }), this); changed = true; }.bind(this)); this._updateItems(); this.isFocus = false; if (changed) this.emit('change', Object.assign({}, event, { type: 'change', action: 'submit', target: this, values: this.values }), this); }; ACore/* default.install */.Z.install(MultiCheckMenu); /* harmony default export */ const js_MultiCheckMenu = (MultiCheckMenu); /** * * @param {MultiCheckMenu} elt * @constructor */ function MSMItemsViewController(elt) { this.elt = elt; this.$items = []; } MSMItemsViewController.prototype.share = { pool: [], pressCloseEventHandle: function pressCloseEventHandle(event) { var parentElt = this.$parent; if (!parentElt) return; parentElt.itemsViewCtrl.ev_pressCloseItem(this, event); }, pressHandler: function pressHandler(event) { var parentElt = this.$parent; if (!parentElt) return; parentElt.itemsViewCtrl.ev_pressItem(this, event); } }; MSMItemsViewController.prototype.revokeResource = function () { delete this.elt; }; MSMItemsViewController.prototype.makeItem = function () { return (0,ACore._)({ tag: 'selectboxitem', on: { close: this.share.pressCloseEventHandle, press: this.share.pressHandler } }); }; MSMItemsViewController.prototype.releaseItem = function (itemElt) { this.share.pool.push(itemElt); itemElt.$parent = null; }; MSMItemsViewController.prototype.requireItem = function () { var itemElt; if (this.share.pool.length > 0) { itemElt = this.share.pool.pop(); } else { itemElt = this.makeItem(); } itemElt.$parent = this.elt; return itemElt; } MSMItemsViewController.prototype.requireListLength = function (n) { if (!(0,utils.isNaturalNumber)(n)) n = 0; var itemElt; while (this.$items.length < n) { itemElt = this.requireItem(); this.elt.$itemCtn.addChild(itemElt); this.$items.push(itemElt); } while (this.$items.length > n) { itemElt = this.$items.pop(); this.elt.$itemCtn.removeChild(itemElt); this.releaseItem(itemElt); } }; MSMItemsViewController.prototype.assignItems = function (items) { for (var i = 0; i < this.$items.length && i < items.length; ++i) { this.$items[i].data = items[i]; } }; MSMItemsViewController.prototype.viewItems = function (items) { var cBound = this.elt.getBoundingClientRect(); this.requireListLength(items.length); this.assignItems(items); setTimeout(this.elt._updateOverflow.bind(this.elt), 10) setTimeout(this.elt._updateOverflow.bind(this.elt), 100) setTimeout(this.elt._updateOverflow.bind(this.elt), 150) var nBound = this.elt.getBoundingClientRect(); if (nBound.width !== cBound.width || nBound.height !== cBound.height) { ResizeSystem/* default.updateUp */.Z.updateUp(this.elt); } }; MSMItemsViewController.prototype.viewItemsByIndexes = function (indexes) { var items = []; var item; for (var i = 0; i < indexes.length; ++i) { item = this.elt.$selectlistBox.getItemByIndex(indexes[i]); if (item) items.push(item); } this.viewItems(items); }; MSMItemsViewController.prototype.viewItemsByValues = function (values) { values = values || []; var items = []; var holders; for (var i = 0; i < values.length; ++i) { holders = this.elt.$selectlistBox.findItemHoldersByValue(values[i]); if (holders) { holders = holders.map(hd => hd.item); items = items.concat(holders); } } this.viewItems(items); }; MSMItemsViewController.prototype.update = function () { this.viewItemsByValues(this.elt.values); }; MSMItemsViewController.prototype.ev_pressCloseItem = function (itemElt, event) { var values = this.elt.$selectlistBox.values; var value = itemElt.value; var newValues = values.filter(x => x !== value); var data = itemElt.data; this.elt.$selectlistBox.values = newValues; if (this.elt.boxCtrl.isFocus) { this.viewItemsByValues(newValues); } else { this.elt.commitedValues = this.elt.$selectlistBox.values; this.update(); this.elt.emit('change', { type: 'change', action: 'remove', data: data, value: value, target: this.elt }); } }; MSMItemsViewController.prototype.ev_pressItem = function (itemElt, event) { if (!this.disableClickToFocus && this.itemFocusable) { this.elt.$selectlistBox.viewListAtItem(itemElt.data); //todo: focus } }; Object.defineProperty(MSMItemsViewController.prototype, 'disableClickToFocus', { set: function (value) { if (value) { this.elt.addClass('as-disable-click-to-focus'); } else { this.elt.removeClass('as-disable-click-to-focus'); } }, get: function () { return this.elt.hasClass('as-disable-click-to-focus'); } }); Object.defineProperty(MSMItemsViewController.prototype, 'itemFocusable', { set: function (value) { if (value) { this.elt.addClass('as-item-focusable'); } else { this.elt.removeClass('as-item-focusable'); } this._updateFocusItem(); }, get: function () { return this.elt.hasClass('as-item-focusable'); } }); Object.defineProperty(MSMItemsViewController.prototype, 'activeValue', { set: function (value) { this._activeValue = value; if (this.itemFocusable) { this._updateFocusItem(); //todo } }, get: function () { return this._activeValue; } }); /** * * @param {MultiCheckMenu} elt * @constructor */ function MSMBoxController(elt) { Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) this[key] = this[key].bind(this); }); this.elt = elt; if (this.elt.$selectlistBox.cancelWaiting) this.elt.$selectlistBox.cancelWaiting(); this.lockOpen = false; this.elt.on('mousedown', this.ev_click); this.elt.$selectlistBox.on({ preupdateposition: this.ev_preUpdateListPosition, change: this.ev_listChange, cancel: this.ev_listCancel, close: this.ev_listClose }); } Object.defineProperty(MSMBoxController.prototype, 'isFocus', { /** * @this MSMBoxController * @returns {*} */ set: function (value) { value = !!value; if (value) { this.open(); } else { this.close(); } }, /** * @this MSMBoxController * @returns {*} */ get: function () { return this.elt.hasClass('as-focus'); } }); MSMBoxController.prototype.open = function () { if (this.lockOpen || this.elt.disabled || this.elt.readOnly) return; if (this.elt.hasClass('as-focus')) return; this.elt.addClass('as-focus'); this.elt.$selectlistBox.addTo(document.body); this.elt.off('mousedown', this.ev_click); var bound = this.elt.getBoundingClientRect(); if (!BrowserDetector/* default.isMobile */.Z.isMobile)// not modal this.elt.$selectlistBox.addStyle('min-width', Math.max(bound.width, this.elt.$selectlistBox.getFontSize() * 18.5) + 'px'); this.elt.$selectlistBox.followTarget = this.elt; this.addListennerTO = setTimeout(() => { document.addEventListener('mousedown', this.ev_mousedownOut); if (!BrowserDetector/* default.isMobile */.Z.isMobile) { this.elt.$selectlistBox.focus(); this.elt.$selectlistBox.viewListAtFirstSelected(); } }, 50); }; MSMBoxController.prototype.close = function () { if (!this.elt.hasClass('as-focus')) return; this.elt.removeClass('as-focus'); this.elt.$selectlistBox.resetSearchState(); this.elt.$selectlistBox.selfRemove(); clearTimeout(this.addListennerTO); document.removeEventListener('mousedown', this.ev_mousedownOut); this.elt.on('mousedown', this.ev_click); var values = this.elt.$selectlistBox.values; if (!(0,DataStructure_Array.arrayCompare)(values, this.elt.commitedValues)) { this.elt.commitedValues = values; this.elt.emit('change', Object.assign({}, event, { type: 'change', action: 'submit', target: this, }), this); } }; MSMBoxController.prototype.ev_click = function (event) { if (hitClose(event)) return; this.open(); }; MSMBoxController.prototype.ev_preUpdateListPosition = function () { var bound = this.elt.getBoundingClientRect(); var screenSize = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.elt.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this.elt); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { if (!BrowserDetector/* default.isMobile */.Z.isMobile) this.close(); } }; MSMBoxController.prototype.ev_listChange = function (event) { setTimeout(() => { this.elt.itemsViewCtrl.viewItems(this.elt.$selectlistBox.selectedItems); }, 1); }; MSMBoxController.prototype.ev_listCancel = function () { this.elt.$selectlistBox.values = this.elt.commitedValues; this.close(); this.elt.itemsViewCtrl.update(); }; MSMBoxController.prototype.ev_listClose = function (event) { var newValues = this.elt.$selectlistBox.values; if (!(0,DataStructure_Array.arrayCompare)(this.elt.commitedValues, newValues)) { this.elt.commitedValues = newValues; this.elt.emit('change', Object.assign({}, event, { type: 'change', target: this.elt, originalEvent: event.originalEvent || event })); } this.elt.itemsViewCtrl.update(); this.close(); }; MSMBoxController.prototype.ev_mousedownOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.elt.$selectlistBox, event)) return; if (!this.elt.disableClickToFocus && this.elt.itemFocusable && hitItem(event)) return; this.lockOpen = true; this.close(); document.addEventListener('mouseup', this.ev_mouseupOut); }; MSMBoxController.prototype.ev_mouseupOut = function () { setTimeout(() => { this.lockOpen = false; }, 50); }; ACore/* default.install */.Z.install(MultiCheckMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/chrometime24picker.css var chrometime24picker = __webpack_require__(9216); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ChromeTime24Picker.js /** * * @param {number} leftOffset */ function calcMinHMTime(leftOffset) { var h = Math.floor(leftOffset / datetime.MILLIS_PER_HOUR); var m = Math.floor(leftOffset / datetime.MILLIS_PER_MINUTE) % 60; if (leftOffset % datetime.MILLIS_PER_MINUTE > 0) { if (m === 59) { h++; m = 0; } else { m++; } } var offset = h * datetime.MILLIS_PER_HOUR + m * datetime.MILLIS_PER_MINUTE; return { m: m, h: h, offset: offset }; } /*** * @extends AElement * @constructor */ function ChromeTime24Picker() { var tText = `24 ${LanguageSystem/* default.getText */.ZP.getText('txt_next_day') || 'Next day'})`; this.addStyle('--next-day-h24-width', Math.ceil((0,utils.measureText)(tText, '16px arial').width + 15) + 'px'); this.$lists = (0,ACore.$$)('.as-chrome-time-picker-list', this); this.$scrollers = (0,ACore.$$)('.as-chrome-time-picker-scroller', this); this.minuteController = new CTPMinuteListController(this); this.hourController = new CTPHourListController(this); this._dayOffset = 0; this._value = 0; /** * @name dayOffset * @type {number} * @memberOf ChromeTime24Picker# */ /** * @name value * @type {number | null} * @memberOf ChromeTime24Picker# */ } ChromeTime24Picker.tag = 'ChromeTime24Picker'.toLowerCase(); ChromeTime24Picker.render = function () { return (0,ACore._)({ extendEvent: 'change', class: ['as-chrome-time-24-picker', 'as-chrome-time-picker'], child: [ { class: ['as-chrome-time-picker-scroller', 'as-chrome-time-24-picker-hour', 'as-chrome-time-picker-infinity-scroller'], child: [ { tag: 'button', class: 'as-chrome-time-picker-scroller-up', child: 'span.mdi.mdi-chevron-up' }, { tag: 'button', class: 'as-chrome-time-picker-scroller-down', child: 'span.mdi.mdi-chevron-down' }, { class: ['as-chrome-time-picker-infinity-viewport', 'as-chrome-time-picker-h24', 'as-chrome-time-picker-list'], child: Array(25).fill(0).map(function (u, i) { return { tag: 'button', class: 'as-chrome-time-picker-btn', child: [ { tag: 'span', child: { text: i + '' } }, { tag: 'span', class: 'as-chrome-time-24-picker-tomorrow-text', child: { text: ` (${LanguageSystem/* default.getText */.ZP.getText('txt_next_day') || 'Next day'})` } } ], props: { __hour__: i } } }) } ] }, { class: ['as-chrome-time-picker-scroller', 'as-chrome-time-picker-infinity-scroller'], child: [ { tag: 'button', class: 'as-chrome-time-picker-scroller-up', child: 'span.mdi.mdi-chevron-up' }, { tag: 'button', class: 'as-chrome-time-picker-scroller-down', child: 'span.mdi.mdi-chevron-down' }, { class: ['as-chrome-time-picker-infinity-viewport', 'as-chrome-time-picker-m60', 'as-chrome-time-picker-list'], child: Array(60).fill(0).map(function (u, i) { return { tag: 'button', class: 'as-chrome-time-picker-btn', child: { tag: 'span', child: { text: i + '' } }, props: { __min__: i } } }) } ] } ] }); }; ChromeTime24Picker.prototype.updateViewByValue = function () { var offset = this.dayOffset; var offsetMH = calcMinHMTime(offset); var value = this.value; this.hourController.hourOffset = offsetMH.h; var valueMH; if ((0,utils.isRealNumber)(value)) { valueMH = calcMinHMTime(offset + value); this.hourController.hour = valueMH.h; if (valueMH.h === offsetMH.h) { this.minuteController.activeItem(offsetMH.m, Infinity); } else if (valueMH.h === offsetMH.h + 24) { this.minuteController.activeItem(Infinity, offsetMH.m + 1); } this.minuteController.minute = valueMH.m; } else { this.hourController.hour = null; this.minuteController.minute = null; } }; ChromeTime24Picker.prototype.scrollIntoSelected = function () { this.hourController.scrollIntoSelected(true); this.minuteController.scrollIntoSelected(true); }; ChromeTime24Picker.prototype.flushViewToValue = function () { var hour = this.hourController.hour; var minute = this.minuteController.minute; var endMil, newValue; if ((0,utils.isRealNumber)(hour) && (0,utils.isRealNumber)(minute)) { endMil = hour * datetime.MILLIS_PER_HOUR + minute * datetime.MILLIS_PER_MINUTE; newValue = endMil - this.dayOffset; if (newValue !== this._value) { this._value = newValue; this.notifyChange(); } } }; ChromeTime24Picker.prototype.notifyChange = function () { this.emit('change', { type: 'change' }, this); }; ChromeTime24Picker.property = {}; ChromeTime24Picker.property.dayOffset = { /*** * @this ChromeTime24Picker * @param {number|Date} value */ set: function (value) { if (value instanceof Date) { value = value.getTime() - (0,datetime.beginOfDay)(value).getTime(); } if ((0,utils.isRealNumber)(value)) { value = Math.round(value); value = value % datetime.MILLIS_PER_DAY; if (value < 0) value += datetime.MILLIS_PER_DAY; } else { value = 0; } this._dayOffset = calcMinHMTime(value).offset;//round to minute this.updateViewByValue(); }, /** * @this ChromeTime24Picker * @returns {number|*} */ get: function () { return this._dayOffset; } }; ChromeTime24Picker.property.value = { /*** * @this ChromeTime24Picker * @param value */ set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.min(datetime.MILLIS_PER_DAY, Math.max(0, Math.round(value))); value = calcMinHMTime(value).offset; } else { value = null; } this._value = value; this.updateViewByValue(); }, /** * @this ChromeTime24Picker * @returns {number|*} */ get: function () { return this._value; } }; ChromeTime24Picker.property.hour = { get: function () { return Math.floor((this.dayOffset + this.value) / datetime.MILLIS_PER_HOUR); } }; ChromeTime24Picker.property.minute = { get: function () { return Math.floor((this.dayOffset + this.value) / datetime.MILLIS_PER_MINUTE) % 60; } }; ACore/* default.install */.Z.install(ChromeTime24Picker); /* harmony default export */ const js_ChromeTime24Picker = (ChromeTime24Picker); function CTPHourListController(elt) { for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.elt = elt; this.hourScroller = new CTPInfinityVerticalScroller(this.elt.$scrollers[0]); this.$list = (0,ACore.$)('.as-chrome-time-picker-h24.as-chrome-time-picker-list', elt); this.$items = Array.prototype.slice.call(this.$list.childNodes); this.$list.on('click', this.ev_clickList); this._offset = 0; this.selectedValue = null; this.$selectedItem = null; this.itemLength = this.$items.length; /** * @type {number} * @name hour - from 0 to 23, 24... is next day * @memberOf CTPHourListController */ } Object.defineProperty(CTPHourListController.prototype, 'hourOffset', { set: function (value) { if (!(0,utils.isRealNumber)(value)) value = 0; value = Math.round(value); value = value % 24; if (value < 0) value += 24; this._offset = value; for (var i = 0; i < this.$items.length; ++i) { this.$items[i].firstChild.firstChild.data = (i + value)% 24; this.$items[i].__hour__ = i + value; if ((value + i) >= 24) { this.$items[i].addClass('as-in-tomorrow'); } else { this.$items[i].removeClass('as-in-tomorrow'); } } this.updateSelected(); }, get: function () { return this._offset; } }); CTPHourListController.prototype.updateSelected = function () { if (this.$selectedItem) { this.$selectedItem.removeClass('as-selected'); } if ((0,utils.isRealNumber)(this.selectedValue)) { this.$selectedItem = this.$items[this.selectedValue - this._offset]; } else { this.$selectedItem = null; } if (this.$selectedItem) { this.$selectedItem.addClass('as-selected'); } }; CTPHourListController.prototype.ev_clickList = function (event) { this.hour = this.itemValueOf(event.target); this.scrollIntoSelected(false); var offsetMH = calcMinHMTime(this.elt.dayOffset); if (this.hour === offsetMH.h) { this.elt.minuteController.activeItem(offsetMH.m, Infinity); if (!(0,utils.isRealNumber)(this.elt.minuteController.minute) || this.elt.minuteController.minute < offsetMH.m) { this.elt.minuteController.minute = offsetMH.m; this.elt.minuteController.scrollIntoSelected(true); } } else if (this.hour === offsetMH.h + 24) { this.elt.minuteController.activeItem(Infinity, offsetMH.m + 1); if (!(0,utils.isRealNumber)(this.elt.minuteController.minute) || this.elt.minuteController.minute > offsetMH.m ) { this.elt.minuteController.minute = offsetMH.m; this.elt.minuteController.scrollIntoSelected(true); } } else { if (!(0,utils.isRealNumber)(this.elt.minuteController.minute)) { this.elt.minuteController.minute = 0; this.elt.minuteController.scrollIntoSelected(true); } this.elt.minuteController.activeItem(Infinity, Infinity); } this.elt.flushViewToValue(); }; CTPHourListController.prototype.scrollIntoSelected = function (onTop) { if (this.selectedValue == null) return; var curOffset = this.hourScroller.offset; var targetOffset = this.selectedValue - this.hourOffset; var k, minCost = Infinity; var cost; var t; for (k = -2; k <= 2; ++k) { t = (this.selectedValue - this.hourOffset)+ k * this.itemLength; if (t >= curOffset && t <= curOffset + 3 && !onTop) { minCost = 0; targetOffset = curOffset; } else { cost = Math.abs(t - curOffset); if (cost < minCost) { minCost = cost; targetOffset = t; } cost = Math.abs(t - curOffset - 3); if (cost < minCost && !onTop) { minCost = cost; targetOffset = t - 3; } } } this.hourScroller.makeAnimation(targetOffset, 200); }; CTPHourListController.prototype.itemValueOf = function (itemElt) { while (itemElt) { if (itemElt.hasClass && itemElt.hasClass('as-chrome-time-picker-btn')) break; itemElt = itemElt.parentElement; } if (!itemElt) return undefined; return itemElt.__hour__; }; Object.defineProperty(CTPHourListController.prototype, 'hour', { set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.round(value); } else { value = null; } this.selectedValue = value; this.updateSelected(); }, get: function () { return this.selectedValue; } }); function CTPInfinityVerticalScroller(elt) { this.elt = elt; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.$upBtn = (0,ACore.$)('.as-chrome-time-picker-scroller-up', this.elt) .on('pointerdown', this.ev_pressUpBtn); this.$downBtn = (0,ACore.$)('.as-chrome-time-picker-scroller-down', this.elt) .on('pointerdown', this.ev_pressDownBtn); this.$upBtn.addEventListener('contextmenu', function (event) { event.preventDefault(); }, BrowserDetector/* default.supportPassiveEvent */.Z.supportPassiveEvent ? { passive: false } : true); this.$downBtn.addEventListener('contextmenu', function (event) { event.preventDefault(); }, BrowserDetector/* default.supportPassiveEvent */.Z.supportPassiveEvent ? { passive: false } : true); this.$viewport = (0,ACore.$)('.as-chrome-time-picker-infinity-viewport', this.elt); this.offset = 0; this.buttonHeight = 28;//2em this.elt.addEventListener('wheel', this.ev_wheel); this.$items = (0,ACore.$$)('.as-chrome-time-picker-btn', this.$viewport); this.updateItemPosition(); this.$viewport.addEventListener('touchstart', this.ev_touchStart, BrowserDetector/* default.supportPassiveEvent */.Z.supportPassiveEvent ? { passive: false } : true); /** * * @type {null|{startTime: number, endTime: number, startValue: number, endValue: number, type: string}} */ this.animation = null; this.touchInfo = {}; } CTPInfinityVerticalScroller.prototype.ev_touchStart = function (event) { var evFlag = BrowserDetector/* default.supportPassiveEvent */.Z.supportPassiveEvent ? { passive: false } : true; document.addEventListener('touchmove', this.ev_touchMove, evFlag); document.addEventListener('touchend', this.ev_touchEnd, evFlag); var touch = event.changedTouches[0]; var now = Date.now(); this.touchInfo.prevY = touch.clientY; this.touchInfo.prevTime = now; this.touchInfo.target = touch.target; this.touchInfo.identifier = touch.identifier; this.touchInfo.state = 0;//init this.touchInfo.checkPoints = [{ time: now, y: touch.clientY }]; event.preventDefault(); }; CTPInfinityVerticalScroller.prototype.ev_touchMove = function (event) { var touch = (0,EventEmitter/* findChangedTouchByIdent */.VY)(event, this.touchInfo.identifier); if (!touch) return; var dy = touch.clientY - this.touchInfo.prevY; var now = Date.now(); if (this.touchInfo.state === 0) { if (Math.abs(dy) > 2) { this.touchInfo.state = 1; } } if (this.touchInfo.state === 1) { this.makeAnimation(this.offset - dy / this.buttonHeight, 0); this.touchInfo.prevY = touch.clientY; this.touchInfo.prevTime = now; this.touchInfo.checkPoints.push({ time: now, y: touch.clientY }); } event.preventDefault(); }; /** * * @returns {number} - offset/s */ CTPInfinityVerticalScroller.prototype.getTouchSped = function () { var checkPoints = this.touchInfo.checkPoints; if (checkPoints.length < 2) return 0; var minTime = 100; var lastTime = checkPoints[checkPoints.length - 1].time; var dy; var dt; for (var i = checkPoints.length - 2; i >= 0; --i) { dy = checkPoints[i].y - checkPoints[checkPoints.length - 1].y; dt = checkPoints[i].time - checkPoints[checkPoints.length - 1].time; if (lastTime - checkPoints[i].time > minTime) break } if (dy === 0) return 0; return dy / this.buttonHeight / (dt / 1000); }; CTPInfinityVerticalScroller.prototype.ev_touchEnd = function (event) { var touch = (0,EventEmitter/* findChangedTouchByIdent */.VY)(event, this.touchInfo.identifier); if (!touch) return; var evFlag = BrowserDetector/* default.supportPassiveEvent */.Z.supportPassiveEvent ? { passive: false } : true; document.removeEventListener('touchmove', this.ev_touchMove, evFlag); document.removeEventListener('touchend', this.ev_touchEnd, evFlag); var speed = 0, acc = 10; var target; if (this.touchInfo.state === 1) { speed = this.getTouchSped(); this.makeAnimation(this.offset - speed * Math.abs(speed) / acc / 2, Math.abs(speed) / acc * 1000, 'pow2'); } else { target = this.touchInfo.target; var now = Date.now(); while (target && target !== this.elt) { if (target.isSupportedEvent && target.isSupportedEvent('press')) { if (!target.lastPressTime || now - target.lastPressTime > 300) { target.emit('press', { target: this.touchInfo.target }); target.lastPressTime = now; } } target = target.parentElement; } } }; CTPInfinityVerticalScroller.prototype.ev_pressUpBtn = function (event) { this.makeAnimation(this.offset - 250, 25e3, 'linear'); document.addEventListener('pointerup', this.ev_ReleaseUpDownBtn); event.preventDefault(); }; CTPInfinityVerticalScroller.prototype.ev_pressDownBtn = function (event) { this.makeAnimation(this.offset + 250, 25 * 1000, 'linear'); document.addEventListener('pointerup', this.ev_ReleaseUpDownBtn); event.preventDefault(); }; CTPInfinityVerticalScroller.prototype.ev_ReleaseUpDownBtn = function (event) { this.makeAnimation(this.offset, 0); event.preventDefault(); }; CTPInfinityVerticalScroller.prototype.updateItemPosition = function () { while (this.offset < 0) this.offset += this.$items.length; while (this.offset >= this.$items.length) this.offset -= this.$items.length; var offset = this.offset; this.$items.forEach((itemElt, i) => { var k = i - offset; if (k < -this.$items.length / 2) k += this.$items.length; itemElt.addStyle('top', k * 2 + 'em'); }); }; CTPInfinityVerticalScroller.prototype.ev_wheel = function (event) { event.preventDefault(); var delta = event.deltaY; this.makeAnimation(this.offset + delta / this.buttonHeight, 200); }; CTPInfinityVerticalScroller.prototype.makeAnimation = function (value, inTime, type) { if (inTime <= 0) { this.offset = value; this.updateItemPosition(); this.animation = null; return; } var isNewAnimation = !this.animation; this.animation = { startTime: Date.now(), endTime: Date.now() + inTime, startValue: this.offset, endValue: value, type: type || 'linear' }; if (isNewAnimation) { requestAnimationFrame(this.ev_animationFrame); } }; CTPInfinityVerticalScroller.prototype.ev_animationFrame = function () { if (!this.animation) return; function easeInOutCubic(t) { return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2; } var now = Date.now(); var t = (0,Math_int.map)(Math.min(this.animation.endTime, now), this.animation.startTime, this.animation.endTime, 0, 1); if (this.animation.type === 'easeIn') { t = easeInOutCubic(t / 2); } else if (this.animation.type === 'easeOut') { t = easeInOutCubic(0.5 + t / 2); } else if (this.animation.type === 'pow2') { t = Math.sqrt(t); } this.offset = (0,Math_int.map)(t, 0, 1, this.animation.startValue, this.animation.endValue); this.updateItemPosition(); if (now >= this.animation.endTime) { this.animation = null; } else { requestAnimationFrame(this.ev_animationFrame); } }; /** * @param {ChromeTime24Picker} elt * @param elt * @constructor */ function CTPMinuteListController(elt) { for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.elt = elt; this.minuteScroller = new CTPInfinityVerticalScroller(this.elt.$scrollers[1]); this.$list = (0,ACore.$)('.as-chrome-time-picker-m60', this.elt); this.$list.defineEvent('press'); this.$list.addEventListener('click', function (event) { var now = Date.now(); if (!this.lastPressTime || now - this.lastPressTime > 50) { this.emit('press', { target: event.target }); this.lastPressTime = now; } }, true); this.$list.on('press', this.ev_clickList); this.$items = Array.prototype.slice.call(this.$list.childNodes); this.selectedValue = null; this.itemLength = this.$items.length; } /** * * @param start * @param end - end not include */ CTPMinuteListController.prototype.activeItem = function (start, end) { if (!(0,utils.isNaturalNumber)(start)) start = 0; if (!(0,utils.isNaturalNumber)(end)) end = this.$list.children.length; for (var i = 0; i < this.$list.children.length; ++i) { this.$list.children[i].disabled = i < start || i >= end; } }; CTPMinuteListController.prototype.ev_clickList = function (event) { var value = this.itemValueOf(event.target); if ((0,utils.isNaturalNumber)(value)) { this.minute = value; this.scrollIntoSelected(false); this.elt.flushViewToValue(); } }; CTPMinuteListController.prototype.itemValueOf = function (itemElt) { while (itemElt) { if (itemElt.hasClass && itemElt.hasClass('as-chrome-time-picker-btn')) break; itemElt = itemElt.parentElement; } if (!itemElt) return undefined; return itemElt.__min__; }; CTPMinuteListController.prototype.scrollIntoSelected = function (onTop) { if (this.selectedValue == null) return; var curOffset = this.minuteScroller.offset; var targetOffset = this.selectedValue; var k, minCost = Infinity; var cost; var t; for (k = -2; k <= 2; ++k) { t = this.selectedValue + k * this.itemLength; if (t >= curOffset && t <= curOffset + 3 && !onTop) { minCost = 0; targetOffset = curOffset; } else { cost = Math.abs(t - curOffset); if (cost < minCost) { minCost = cost; targetOffset = t; } cost = Math.abs(t - curOffset - 3); if (cost < minCost && !onTop) { minCost = cost; targetOffset = t - 3; } } } this.minuteScroller.makeAnimation(targetOffset, 200); }; Object.defineProperty(CTPMinuteListController.prototype, 'minute', { set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.max(0, Math.min(59, Math.round(value))); } else { value = null; } if (value !== this.selectedValue) { if (this.$items[this.selectedValue]) { this.$items[this.selectedValue].removeClass('as-selected'); } } this.selectedValue = value; if (this.$items[value]) { this.$items[value].addClass('as-selected'); } }, get: function () { return this.selectedValue; } }); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/Time24Input.js /** * @extends AElement * @constructor */ function Time24Input() { var t = LanguageSystem/* default.getText */.ZP.getText('txt_next_day'); if (t) { t = '(' + t + ')'; this.nextDateText = t; } this.domSignal = new DelaySignal/* default */.Z(); this.$clockBtn = (0,ACore.$)('.as-time-input-icon-btn', this) this.$text = (0,ACore.$)('.as-time-input-text', this); this.$clearBtn = (0,ACore.$)('button.as-time-input-clear-btn', this) .on('click', this.clear.bind(this)); this._hour = 0; this._minute = 0; this._nd = false; this._dayOffset = 0; this._format = 'HH:mm ND'; this._firedValue = 'NOT_FIRED'; this.textCtrl = new T24ITextController(this); this.notNull = true; this.dropdownCtn = new T24DropdownController(this); setTimeout(() => { }, 1000); /** * @type {string} * @name format * @memberof Time24Input# */ /** * @type {number|null} * @name hour * @memberof Time24Input# */ /** * @type {number|null} * @name minute * @memberof Time24Input# */ /** * @type {number} always is a number, set dayOffset, keep value * @name dayOffset * @memberof Time24Input# */ /** * computed from other * @type {number|null} * @name value * @memberof Time24Input# */ /** * @type {boolean} * @name nd * @memberof Time24Input# */ } Time24Input.tag = 'Time24Input'.toLowerCase(); Time24Input.prototype.nextDateText = '(Next day)'; Time24Input.render = function () { return (0,ACore._)({ class: ['ac-time-input', 'as-time-24-input'], extendEvent: ['change'], child: [ { tag: 'input', class: 'as-time-input-text', attr: { type: 'text', spellcheck: "false" } }, { tag: 'button', class: 'as-time-input-clear-btn', child: 'span.mdi.mdi-close-circle' }, { tag: 'button', class: 'as-time-input-icon-btn', child: 'span.mdi.mdi-clock-outline' } ] }); }; Time24Input.prototype._notifyChange = function (event) { this._firedValue = this.value; this.emit('change', { type: 'change', originalEvent: (event && (event.originalEvent || event.originEvent)) || event }, this); }; Time24Input.prototype.notifyIfChange = function () { if (this._firedValue !== this.value) { this._notifyChange(); } }; Time24Input.prototype.clear = function (event) { if (this.value !== null && !this.notNull) { this.value = null; this._notifyChange(event); } }; Time24Input.prototype.share = { $picker: null, /*** * @type Time24Input */ $holdingInput: null, $follower: null, $closeBtn: null }; Time24Input.property = {}; Time24Input.property.hour = { set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.round(value); if (value < 0) { value = Math.ceil(-value / 24) * 24 + value } value = value % 24; } else { value = null; } this._hour = value; this.textCtrl.updateTextFromValue(); }, get: function () { return this._hour; } }; Time24Input.property.minute = { set: function (value) { if ((0,utils.isRealNumber)(value)) { value = Math.round(value); if (value < 0) { value = Math.ceil(-value / 60) * 60 + value } value = value % 60; } else { value = null; } this._minute = value; this.textCtrl.updateTextFromValue(); }, get: function () { return this._minute; } }; Time24Input.property.nd = { set: function (value) { this._nd = !!value; this.textCtrl.updateTextFromValue(); }, get: function () { var value = this._nd; var hour = this.hour; var minute = this.minute; var dayOffset = this.dayOffset; var mh; if ((0,utils.isRealNumber)(dayOffset)) { if ((0,utils.isNaturalNumber)(hour)) { mh = (0,utils.millisToClock)(dayOffset); if (hour < mh.hour) { value = true; } else if (hour === mh.hour) { if ((0,utils.isRealNumber)(minute) && minute < mh.minute) { value = true; } } } } return value; } } Time24Input.property.dayOffset = { set: function (dayOffset) { var value = this.value; this._dayOffset = (0,utils.isRealNumber)(dayOffset) ? (0,utils.normalizeMinuteOfMillis)(dayOffset) : 0; this.value = value; }, get: function () { if (this.notNull) { return this._dayOffset || 0; } else { return this._dayOffset; } } }; Time24Input.property.value = { set: function (value) { value = (0,utils.isRealNumber)(value) ? (0,utils.normalizeMinuteOfMillis)(Math.min(Math.max(value, 0), datetime.MILLIS_PER_DAY)) : null; var clockTime; if (value !== null) { clockTime = (0,utils.millisToClock)(value + this.dayOffset); this._hour = clockTime.hour; this._minute = clockTime.minute; if (value === datetime.MILLIS_PER_DAY) this._nd = true; } else { this._hour = null; this._minute = null; } this.textCtrl.updateTextFromValue(); this._firedValue = this.value; }, get: function () { if (!(0,utils.isRealNumber)(this._hour) || !(0,utils.isRealNumber)(this._minute)) return null; var mil = (0,utils.clockToMillis)(this._hour, this._minute); if (mil < this.dayOffset||(mil === this.dayOffset && this._nd)) mil += datetime.MILLIS_PER_DAY; mil -= this.dayOffset; return mil; } }; Time24Input.property.displayTime = { get: function () { var value = this.value; if ((0,utils.isRealNumber)(value)) { return value + this.dayOffset; } else { return null; } } }; Time24Input.property.notNull = { set: function (value) { if (value) { if (this.value === null) { this.value = 0; } this.addClass('as-must-not-null'); } else { this.removeClass('as-must-not-null'); } this._firedValue = this.value; }, get: function () { return this.hasClass('as-must-not-null'); } }; Time24Input.property.disabled = { set: function (value) { value = !!value; this._disabled = value; if (value) this.addClass('as-disabled'); else this.removeClass('as-disabled'); this.$text.disabled = value; }, get: function () { return this._disabled; } }; Time24Input.property.readOnly = js_TimeInput.property.readOnly; Time24Input.property.format = { set: function (value) { this._format = value || 'HH:mm'; if (this._format.indexOf('ND') < 0) { this._format = this._format.trimEnd() + ' ND'; } this.textCtrl.updateTextFromValue(); }, get: function () { return this._format; } }; Time24Input.eventHandler = {}; Time24Input.eventHandler.pickerChange = function (event) { if (this.dayOffset === null) this.dayOffset = 0; }; Time24Input.eventHandler.clickClockBtn = function () { this._attachPicker(); }; ACore/* default.install */.Z.install(Time24Input); /* harmony default export */ const js_Time24Input = (Time24Input); /** * * @param {Time24Input} elt * @constructor */ function T24DropdownController(elt) { this.elt = elt; this.$clockBtn = elt.$clockBtn.on('click', this.ev_clickClockBtn.bind(this)); this.disabledButtton = false; this.ev_clickOut = this.ev_clickOut.bind(this); } T24DropdownController.prototype.share = { $picker: null, $holdingInput: null, /** * @type {Follower|null} */ $follower: null, /** * @type {T24DropdownController|null} */ holder: null }; T24DropdownController.prototype.prepare = function () { var share = this.share; if (share.$picker) return; (0,MultiLanguageCSS/* loadLanguageModule */.q)(); share.$picker = (0,ACore._)({ tag: js_ChromeTime24Picker.tag, on: { change: (event) => { if (share.holder) { share.holder.onPickerChange(event); } } } }); share.$picker.nextDateText = this.elt.nextDateText; /** * @type {Follower} */ share.$follower = (0,ACore._)({ tag: 'follower', class: ['as-chrome-time-24-picker-follower', 'as-dropdown-box-common-style'], child: [ this.share.$picker, { class: 'as-dropdown-box-footer', child: [ { class: 'as-dropdown-box-footer-right', child: ['<a data-ml-key="txt_close" class="as-select-list-box-close-btn"></a>'] } ] } ] }); share.$follower.cancelWaiting(); this.share.$closeBtn = (0,ACore.$)('.as-select-list-box-close-btn', this.share.$follower); }; T24DropdownController.prototype.attach = function () { this.prepare(); var share = this.share; if (share.holder) { share.holder.release(); } share.holder = this; this.disabledButtton = true; share.$follower.addTo(document.body); share.$follower.followTarget = this.elt; share.$follower.addStyle('visibility', 'hidden'); var hour = this.elt.hour; var min = this.elt.minute; var dayOffset = this.elt.dayOffset; share.$picker.dayOffset = dayOffset; var offsetClock = (0,utils.millisToClock)(dayOffset); var value = 0; if ((0,utils.isRealNumber)(hour)) { if (!(0,utils.isRealNumber)(min)) { if (hour === offsetClock.hour) { min = offsetClock.hour; } else { min = 0; } } value = (0,utils.clockToMillis)(hour, min) - dayOffset; if (value < 0) value += datetime.MILLIS_PER_DAY; } else if ((0,utils.isRealNumber)(min)) { if (min >= offsetClock.minute) { hour = offsetClock.hour; } else { hour = (offsetClock.hour + 1) % 24; } value = (0,utils.clockToMillis)(hour, min) - dayOffset; if (value < 0) value += datetime.MILLIS_PER_DAY; } if (value === 0 && this.elt.nd) value = datetime.MILLIS_PER_DAY; share.$picker.value = value; setTimeout(() => { document.addEventListener('click', this.ev_clickOut); share.$follower.removeStyle('visibility'); share.$picker.scrollIntoSelected(); }, 10); }; T24DropdownController.prototype.release = function () { var share = this.share; if (share.holder !== this) return; share.$follower.remove(); share.$follower.followTarget = null; share.holder = null; setTimeout(() => { this.disabledButtton = false; document.removeEventListener('click', this.ev_clickOut); }, 100); }; T24DropdownController.prototype.onPickerChange = function (event) { this.elt.value = this.share.$picker.value; this.elt._notifyChange(event); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); }; T24DropdownController.prototype.ev_clickClockBtn = function () { if (this.disabledButtton) return; this.attach(); }; T24DropdownController.prototype.ev_clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.share.$follower, event) && !(0,EventEmitter/* hitElement */.EY)(this.share.$closeBtn, event)) return; this.release(); }; var Time24Input_STATE_NEW = 1; var Time24Input_STATE_EDITED = 2; var Time24Input_STATE_NONE = 0; /** * * @param {Time24Input} elt * @constructor */ function T24ITextController(elt) { this.elt = elt; this.domSignal = elt.domSignal; this.$text = this.elt.$text; this.$text.on('keydown', this.ev_keydown.bind(this)).on('pointerup', this.autoSelect.bind(this)) .on('blur', () => { this.loadValueFromInput(); this.elt.notifyIfChange(); }); this.editingData = {}; } T24ITextController.prototype.tokenRegex = /(\([^)]*\))|([^.\/:\-,\\\u0020\u0009\u000D\u200B]+)|([.\/:\-,\\]+)/i; var CHAR_NBSP = '\u00A0'; T24ITextController.prototype.tokenMap = { h: 'h', H: 'H', HH: 'H', hh: 'h', m: 'm', mm: 'm', a: 'a', ND: 'ND' }; T24ITextController.prototype.makeTokenDict = function (s) { var rgx = new RegExp(this.tokenRegex.source, 'g'); var rgxFormat = new RegExp(this.tokenRegex.source, 'g'); var format = this.elt.format + ' ND'; var tokenMap = this.tokenMap; var tokenMatched = rgx.exec(s); var formatToken = rgxFormat.exec(format); var text, ident; var idx; var res = {}; while (tokenMatched && formatToken) { ident = formatToken[2]; if (tokenMap[ident]) { text = tokenMatched[0]; idx = tokenMatched.index; res[tokenMap[ident]] = { text: text, idx: idx, length: text.length, sourceText: s, value: (ident === 'a' || ident === 'ND') ? text : parseInt(text) } if (ident === 'ND') { res[tokenMap[ident]].value = res[tokenMap[ident]].value !== CHAR_NBSP; } } tokenMatched = rgx.exec(s); formatToken = rgxFormat.exec(format); } Object.defineProperty(res, 'minute', { enumerable: false, get: function () { var token = this['m'] || this['mm']; if (token) { return token.value; } else return null; } }); Object.defineProperty(res, 'hour24', { enumerable: false, get: function () { var token = this['H']; if (token && (0,utils.isNaturalNumber)(token.value)) { return token.value; } token = this['h']; var tokenA = this['A']; if (token && (0,utils.isNaturalNumber)(token.value)) { if (tokenA.value === 'PM') { return 12 + (token.value % 12); } else return token.value % 12; } return null; } }); return res; }; T24ITextController.prototype.formatText = function (h, m, nd) { var text = this.elt.format; text = text.replace(new RegExp(this.tokenRegex.source, 'g'), (all) => { switch (all) { case 'm': case 'mm': return (0,utils.isRealNumber)(m) ? (0,utils.zeroPadding)(m, all.length) : all; case 'hh': case 'h': return (0,utils.isRealNumber)(h) ? (0,utils.zeroPadding)(h % 12 ? h : 12, all.length) : all; case 'HH': case 'H': return (0,utils.isRealNumber)(h) ? (0,utils.zeroPadding)(h, all.length) : all; case 'a': return (0,utils.isRealNumber)(h) ? (h > 12 ? 'PM' : 'AM') : 'all'; case 'ND': return nd ? this.elt.nextDateText : CHAR_NBSP; default: return all; } }); return text; }; T24ITextController.prototype.updateTextFromValue = function () { var value = this.elt.value; var hour = this.elt.hour; var minute = this.elt.minute; var nd = this.elt.nd; var text = this.formatText(hour, minute, nd); if ((0,utils.isRealNumber)(value)) { this.elt.removeClass('as-value-null'); } else { this.elt.addClass('as-value-null'); } this.$text.value = text; }; T24ITextController.prototype.loadValueFromInput = function () { var tkDick = this.makeTokenDict(this.$text.value); var hour = NaN; var minute = NaN; var nd = false; if (tkDick.H) { hour = Math.min(23, Math.max(0, tkDick.H.value)); } else if (tkDick.h) { hour = Math.min(12, Math.max(1, tkDick.h.value)); if (tkDick.a && tkDick.a.value === 'PM') { hour += 12; } } if (tkDick.m) { minute = Math.min(59, Math.max(0, tkDick.m.value)); } if (tkDick.nd) { nd = tkDick.nd.value; } this.elt._hour = hour; this.elt._minute = minute; this.elt._nd = nd; }; T24ITextController.prototype.autoSelect = function () { var token = this.tokenAt(this.$text.selectionStart); var tokenEnd = this.tokenAt(this.$text.selectionEnd); if (token) { if (tokenEnd.idx === token.idx) { token.select(); this.editingData.state = Time24Input_STATE_NEW; } else { this.$text.select(); this.editingData.state = Time24Input_STATE_NONE; } } }; T24ITextController.prototype.editPrevToken = function () { var token = this.tokenAt(this.$text.selectionStart); if (!token) return false; var cIdx = token.idx; for (var i = token.idx - 1; i >= 0; --i) { token = this.tokenAt(i); if (token && token.idx !== cIdx) { token.select(); this.editingData.state = Time24Input_STATE_NEW; break; } } }; T24ITextController.prototype.editNextToken = function () { var token = this.tokenAt(this.$text.selectionStart); if (!token) return false; var cIdx = token.idx; var l = this.$text.value.length; for (var i = token.idx + token.length; i < l; ++i) { token = this.tokenAt(i); if (token && token.idx !== cIdx) { token.select(); this.editingData.state = Time24Input_STATE_NEW; break; } } }; T24ITextController.prototype.tokenAt = function (start) { var tokenizedText = new TITokenizedText(this.$text.value, this.elt.format); var nearestDistance = Infinity; var nearestIdx = -1; var n = Math.min(tokenizedText.textTokens.length, tokenizedText.formatTokens.length); var i, textToken, formatToken; var distance; for (i = 0; i < n; ++i) { formatToken = tokenizedText.formatTokens[i]; if (!(0,utils.isDateTimeFormatToken)(formatToken.content)) continue; textToken = tokenizedText.textTokens[i]; if (start >= textToken.idx && start < textToken.idx + textToken.length) { nearestIdx = i; nearestDistance = 0; break; } if (start < textToken.idx) { distance = textToken.idx - start; if (distance < nearestDistance) { nearestDistance = distance; nearestIdx = i; } } if (start >= textToken.idx + textToken.length) { distance = start - textToken.idx - textToken.length; if (distance < nearestDistance) { nearestDistance = distance; nearestIdx = i; } } } if (nearestIdx < 0) return null; formatToken = tokenizedText.formatTokens[nearestIdx]; textToken = tokenizedText.textTokens[nearestIdx]; var self = this; return { idx: textToken.idx, text: textToken.content, length: textToken.length, ident: formatToken.content, input: this.$text, sourceText: tokenizedText.text, // isAvailable: function () { // return this.sourceText === this.input.value; // }, select: function () { this.input.setSelectionRange(this.idx, this.idx + this.length); }, replace: function (newText, selecting) { tokenizedText.setTokenText(this.ident, newText); var hour = tokenizedText.getTokenText('HH') || tokenizedText.getTokenText('H'); var minute = tokenizedText.getTokenText('mm') || tokenizedText.getTokenText('m'); var nd = tokenizedText.getTokenText('ND') !== CHAR_NBSP; var newND = self.isNextDate(parseInt(hour, 10), parseInt(minute, 10), nd); if (newND !== nd) { tokenizedText.setTokenText('ND', newND ? self.elt.nextDateText : CHAR_NBSP); } this.input.value = tokenizedText.getText(true); this.length = newText.length; if (selecting) { this.select(); } } }; }; /** * * @param h * @param m * @param nd - referent result if can not detect * @returns {boolean} */ T24ITextController.prototype.isNextDate = function (h, m, nd) { var dayOffset = this.elt.dayOffset; if (!(0,utils.isNaturalNumber)(dayOffset)) return !!nd; var oH = Math.floor(dayOffset / 36e5); var oM = Math.floor(dayOffset / 6e4) % 60; if (!(0,utils.isNaturalNumber)(h)) return !!nd; if (h < oH) return true; if (!(0,utils.isNaturalNumber)(m)) return !!nd; if (h === oH) { if (m < oM) return true; if (m === oM) return !!nd; return false; } }; T24ITextController.prototype.correctingInput = function () { //nothing todo now }; T24ITextController.prototype.ev_keydown = function (event) { var token = this.tokenAt(this.$text.selectionStart); var endToken = this.tokenAt(this.$text.selectionEnd); // var tokenDict = this.makeTokenDict(this.$text.value); var format = this.elt.format; if (!token) { if (event.key === 'Enter') { this.correctingInput(); this.loadValueFromInput(); this.elt.notifyIfChange(event); } return; } var newTokenText; var value; if (event.key.startsWith('Arrow')) { event.preventDefault(); switch (event.key) { case 'ArrowLeft': this.editPrevToken(); break; case 'ArrowRight': this.editNextToken(); break; case 'ArrowUp': case 'ArrowDown': switch (token.ident) { case "H": case "HH": value = parseInt(token.text); if (isNaN(value)) { this.editingData.H = event.key === 'ArrowUp' ? 0 : 23; } else { this.editingData.H = (value + (event.key === 'ArrowUp' ? 1 : 23)) % 24; } newTokenText = (0,utils.zeroPadding)(this.editingData.H, token.ident.length); token.replace(newTokenText, true); break; case "hh": case 'h': value = parseInt(token.text); if (isNaN(value)) { this.editingData.h = event.key === 'ArrowUp' ? 1 : 12; } else { this.editingData.h = 1 + (value + (event.key === 'ArrowUp' ? 0 : 10)) % 12; } newTokenText = this.editingData.h + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case "mm": case 'm': value = parseInt(token.text); if (isNaN(value)) { this.editingData.m = event.key === 'ArrowUp' ? 0 : 59; } else { this.editingData.m = (value + (event.key === 'ArrowUp' ? 1 : 59)) % 60; } newTokenText = this.editingData.m + ''; while (newTokenText.length < token.ident.length) newTokenText = '0' + newTokenText; token.replace(newTokenText, true); break; case 'a': value = token.text; this.editingData.a = value === 'PM' ? "AM" : "PM"; newTokenText = this.editingData.a; token.replace(newTokenText, true); break; case 'ND': value = token.text !== CHAR_NBSP; this.editingData.nd = !value; newTokenText = this.editingData.nd ? this.elt.nextDateText : CHAR_NBSP; token.replace(newTokenText, true); break; } break; } } else if (event.key === "Delete" || event.key === 'Backspace') { event.preventDefault(); if (endToken.idx !== token.idx) { if (this.elt.notNull) { this.$text.value = (0,datetime.formatDateTime)((0,datetime.beginOfDay)(new Date()), format).replace('ND', CHAR_NBSP); } else { this.$text.value = format.replace('ND', CHAR_NBSP); } this.$text.select(); } else { if (this.elt.notNull) { if (token.ident === 'ND') { token.replace(CHAR_NBSP, true); } else token.replace(token.ident === 'a' ? 'AM' : (0,utils.zeroPadding)((token.ident === 'hh' || token.ident === 'h') ? 12 : 0, token.ident.length), true); } else { token.replace(token.ident, true); } if (event.key === "Delete") this.editNextToken(); else this.editPrevToken(); } } else if (event.key === "Enter" || event.key === 'Tab') { this.correctingInput(); this.loadValueFromInput(); this.elt.notifyIfChange(event); } else if (event.ctrlKey) { switch (event.key) { case 'a': case 'A': break; case 'c': case 'C': break; case 'x': case 'X': this.domSignal.once('clear_value', function () { this.$text.value = format; this.$text.select(); }.bind(this)); this.domSignal.emit('clear_value'); break; default: event.preventDefault(); } } else if (event.key.match(/^[0-9]$/g)) { event.preventDefault(); var dVal = parseInt(event.key); if (this.editingData.state === Time24Input_STATE_NEW) { switch (token.ident) { case 'm': case 'mm': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this.editingData.state = Time24Input_STATE_EDITED; if (dVal > 5) { this.editNextToken(); } break; case 'h': case 'hh': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this.editingData.state = Time24Input_STATE_EDITED; if (dVal > 1) { this.editNextToken(); } break; case 'H': case 'HH': token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this.editingData.state = Time24Input_STATE_EDITED; if (dVal > 2) { this.editNextToken(); } break; case 'ND': value = token.text !== CHAR_NBSP; this.editingData.nd = !value; newTokenText = this.editingData.nd ? this.elt.nextDateText : CHAR_NBSP; token.replace(newTokenText, true); break; } } else { switch (token.ident) { case 'm': case 'mm': dVal = (parseInt(token.text.split('').pop(), 10) || 0) * 10 + dVal; dVal = Math.max(0, Math.min(59, dVal)); this.editingData.m = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this.editNextToken(); break; case 'h': case 'hh': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(1, Math.min(12, dVal)); this.editingData.h = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this.editNextToken(); break; case 'H': case 'HH': dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal; dVal = Math.max(0, Math.min(23, dVal)); this.editingData.H = dVal; token.replace((0,utils.zeroPadding)(dVal, token.ident.length), true); this.editNextToken(); break; } } } else if (event.key.match(/^[aApPSCsc]$/) && token.ident === 'a') { event.preventDefault(); if (event.key.match(/^[aAsS]$/)) { token.replace('AM', true); this.editingData.a = "AM"; } else { token.replace('PM', true); this.editingData.a = "PM"; } this.editNextToken(); } else if (token.ident === 'ND') { event.preventDefault(); value = token.text !== CHAR_NBSP; this.editingData.nd = !value; newTokenText = this.editingData.nd ? this.elt.nextDateText : CHAR_NBSP; token.replace(newTokenText, true); } else { event.preventDefault(); } }; function TITokenizedText(text, format) { this.text = text; this.format = format; /** * * @type {{content: string, idx: number, length: number}[]} */ this.formatTokens = this.makeTokens(format); /** * * @type {{content: string, idx: number, length: number}[]} */ this.textTokens = this.makeTokens(text); } TITokenizedText.prototype.tokenRegex = /(\([^)]*\))|([^.\/:\-,\\\u0020\u0009\u000D\u200B]+)|([.\/:\-,\\]+)/i; // var CHAR_NBSP = '\u00A0'; TITokenizedText.prototype.spaceRegex = /[\u0020\u0009\u000D\u200B]+/; TITokenizedText.prototype.tokenMap = { h: 'h', H: 'H', HH: 'H', hh: 'h', m: 'm', mm: 'm', a: 'a', ND: 'ND' }; /** * * @param {string} text * @returns {{content: string, idx: number, length: number}[]} */ TITokenizedText.prototype.makeTokens = function (text) { var rgx = new RegExp(this.tokenRegex.source, 'g'); var matched = rgx.exec(text); var res = []; while (matched) { res.push({ content: matched[0], idx: matched.index, length: matched[0].length }); matched = rgx.exec(text); } return res; }; TITokenizedText.prototype.setTokenText = function (tkName, content) { tkName = this.tokenMap[tkName] || tkName; var di = 0; var formatToken; var textToken; var found = false; for (var i = 0; i < this.formatTokens.length; ++i) { formatToken = this.formatTokens[i]; textToken = this.textTokens[i]; if (!textToken) { textToken = { content: formatToken.content, idx: formatToken.idx, length: formatToken.length }; this.textTokens.push(textToken); di = this.text.length - textToken.idx; this.text += textToken.content; } if (di !== 0) { textToken.idx += di; } if ((this.tokenMap[formatToken.content] || formatToken.content) === tkName) { found = true; this.text = this.text.substring(0, textToken.idx + di) + content + this.text.substring(textToken.idx + di + textToken.length); di += content.length - textToken.length; textToken.length = content.length; textToken.content = content; } } return this; }; TITokenizedText.prototype.getTokenText = function (tkName) { var res = null; tkName = this.tokenMap[tkName] || tkName; for (var i = 0; i < this.formatTokens.length; ++i) { if ((this.tokenMap[this.formatTokens[i].content] || this.formatTokens[i].content) === tkName) { res = this.textTokens[i].content; break; } } return res; }; TITokenizedText.prototype.getToken = function (tkName) { var res = null; tkName = this.tokenMap[tkName] || tkName; for (var i = 0; i < this.formatTokens.length; ++i) { if ((this.tokenMap[this.formatTokens[i].content] || this.formatTokens[i].content) === tkName) { res = Object.assign({}, this.textTokens[i]); break; } } return res; }; TITokenizedText.prototype.getText = function (extractByFormat) { var res = this.text; if (extractByFormat) { if (this.formatTokens.length < this.textTokens.length) { res = res.substring(0, this.textTokens[this.formatTokens.length - 1].idx + this.textTokens[this.formatTokens.length - 1].length); } else if (this.formatTokens.length > this.textTokens.length) { res += this.format.substring(this.textTokens[this.textTokens.length - 1].idx + this.textTokens[this.textTokens.length - 1].length); } } return res; }; // EXTERNAL MODULE: ./node_modules/absol-acomp/css/timerange24input.css var timerange24input = __webpack_require__(4697); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TimeRange24Input.js /*** * @extends AElement * @constructor */ function TimeRange24Input() { var t = LanguageSystem/* default.getText */.ZP.getText('txt_next_day'); if (t) { t = '(' + t + ')'; this.nextDateText = t; } /*** * * @type {TimeInput} */ this.$offset = (0,ACore.$)(js_TimeInput.tag, this); this.$offset.on('change', this.eventHandler.offsetChange); /*** * * @type {Time24Input} */ this.$duration = (0,ACore.$)(js_Time24Input.tag, this); this.$duration.on('change', this.eventHandler.durationChange); /*** * @type {number} * @name dayOffset * @memberOf TimeRange24Input# */ /*** * @type {number} * @name duration * @memberOf TimeRange24Input# */ /*** * @type {string} * @name format * @memberOf TimeRange24Input# */ } TimeRange24Input.tag = 'TimeRange24Input'.toLowerCase(); TimeRange24Input.render = function () { return (0,ACore._)({ extendEvent: ['change'], class: 'as-time-range-24-input', child: [{ tag: js_TimeInput.tag, props: { format: 'HH:mm' } }, js_Time24Input.tag ] }); }; TimeRange24Input.prototype.nextDateText = '(Next day)' TimeRange24Input.prototype.init = function (props) { props = props || {}; var cpProps = Object.assign(props); if ('notNull' in props) { this.notNull = props.notNull; delete cpProps.notNull; } if ('dayOffset' in props) { this.dayOffset = props.dayOffset; delete cpProps.dayOffset; } Object.assign(this, cpProps); }; TimeRange24Input.prototype._updateTextData = function () { var dayOffset = this.dayOffset; var duration = this.duration; var format = this.format; var bD = (0,datetime.beginOfDay)(new Date()).getTime(); var startD = new Date(bD + dayOffset) var text = (0,datetime.formatDateTime)(startD, format || 'HH:mm'); var endD = new Date(bD + dayOffset + duration); text += ' - ' + (0,datetime.formatDateTime)(endD, format || 'HH:mm'); if ((0,datetime.compareDate)(endD, startD) > 0) { text += ' ' + this.nextDateText; } this.attr('data-text', text); }; TimeRange24Input.property = {}; TimeRange24Input.property.notNull = { /*** * @this TimeRange24Input * @param value */ set: function (value) { value = !!value; this.$offset.notNull = value; this.$duration.notNull = value; this._updateTextData(); }, get: function () { return this.$offset.notNull; } }; TimeRange24Input.property.disabled = { set: function (value) { value = !!value; if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } this.$offset.disabled = value; this.$duration.disabled = value; }, get: function () { return this.hasClass('as-disabled'); } }; TimeRange24Input.property.dayOffset = { set: function (value) { var notNull = this.notNull; if ((0,utils.isRealNumber)(value)) { value = (0,utils.normalizeMinuteOfMillis)(value); } else { value = notNull ? 0 : null; } this.$offset.dayOffset = value; this.$duration.dayOffset = value; this._updateTextData(); }, get: function () { return this.$offset.dayOffset; } }; TimeRange24Input.property.duration = { /*** * @this TimeRange24Input * @param value */ set: function (value) { var notNull = this.notNull; if ((0,utils.isRealNumber)(value)) { value = Math.floor(Math.min(datetime.MILLIS_PER_DAY, Math.max(0, value))); value = Math.floor(value / datetime.MILLIS_PER_MINUTE) * datetime.MILLIS_PER_MINUTE; } else { value = notNull ? 0 : null; } this.$duration.value = value; this._updateTextData(); }, get: function () { return this.$duration.value; } }; TimeRange24Input.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); this.$offset.readOnly = true; this.$duration.readOnly = true; } else { this.removeClass('as-read-only'); this.$offset.readOnly = false; this.$duration.readOnly = false; } }, get: function () { return this.containsClass('as-read-only'); } }; TimeRange24Input.property.value = { set: function (value) { var rangeValue = null; if ((0,utils.isRealNumber)(value)) rangeValue = { dayOffset: value, duration: 0 }; else if (!value) { } else if (typeof rangeValue === "object") { if ((0,utils.isRealNumber)(value.dayOffset)) { rangeValue = { dayOffset: value.dayOffset, duration: 0 }; } else { rangeValue = { dayOffset: 0, duration: 0 }; } if ((0,utils.isRealNumber)(value.duration)) { rangeValue.duration = value.duration; } } if (rangeValue) { this.dayOffset = rangeValue.dayOffset; this.duration = rangeValue.duration; } else { this.dayOffset = null; this.duration = null; } return rangeValue; }, get: function () { if (!(0,utils.isRealNumber)(this.dayOffset) && !(0,utils.isRealNumber)(this.duration)) return null; return { dayOffset: this.dayOffset || 0, duration: this.duration || 0 }; } }; TimeRange24Input.eventHandler = {}; TimeRange24Input.eventHandler.offsetChange = function (event) { var prevOffset = this.$duration.dayOffset; var preDuration = this.$duration.value; var prevEnd = prevOffset + preDuration; var newEnd; var newStart = this.$offset.dayOffset; if ((0,utils.isRealNumber)(newStart)) { if ((0,utils.isRealNumber)(prevEnd)) { newEnd = Math.max(newStart, Math.min(newStart + datetime.MILLIS_PER_DAY - datetime.MILLIS_PER_MINUTE, prevEnd)); } else { newEnd = newStart; } this.$duration.dayOffset = newStart; this.$duration.value = newEnd - newStart; } else { this.$duration.dayOffset = 0; this.$duration.value = (0,utils.isRealNumber)(prevEnd) ? Math.min(prevEnd, datetime.MILLIS_PER_DAY - datetime.MILLIS_PER_MINUTE) : null; } this._updateTextData(); this.emit('change', { type: 'change', property: 'dayOffset', originalEvent: event.originalEvent || event.originEvent || event }); }; TimeRange24Input.eventHandler.durationChange = function (event) { if (!(0,utils.isRealNumber)(this.$offset.dayOffset) ) { this.$offset.dayOffset = this.$duration.dayOffset; } this._updateTextData(); this.emit('change', { type: 'change', property: 'duration', originalEvent: event.originalEvent || event.originEvent || event }); }; ACore/* default.install */.Z.install(TimeRange24Input); /* harmony default export */ const js_TimeRange24Input = (TimeRange24Input); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checktreeitem.css var checktreeitem = __webpack_require__(785); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckTreeItem.js /*** * @extends ExpNode * @constructor */ function CheckTreeItem() { this._itemData = null; this.$name = (0,ACore.$)('span.absol-exp-node-name', this); this.$desc = (0,ACore.$)('span.absol-exp-node-desc', this); this.$iconCtn = (0,ACore.$)('div.absol-exp-node-ext-icon', this); this.$level = (0,ACore.$)('.absol-exp-node-level', this); this.$checkbox = (0,ACore.$)('checkboxbutton', this) .on('change', this.eventHandler.checkboxChange); this.$toggleIcon = (0,ACore.$)('toggler-ico', this); this.on('click', this.eventHandler.click); } CheckTreeItem.tag = 'CheckTreeItem'.toLowerCase(); CheckTreeItem.render = function () { return (0,ACore._)({ tag: 'button', extendEvent: ['select', 'presstoggle'], class: ['as-check-tree-item', 'absol-exp-node'], child: [ '.absol-exp-node-level', 'toggler-ico', 'checkboxbutton', 'img.absol-exp-node-ext-icon', 'div.absol-exp-node-ext-icon', 'span.absol-exp-node-name', 'span.absol-exp-node-desc' ] }); }; CheckTreeItem.property = {}; CheckTreeItem.property.icon = ExpTree/* ExpNode.property.icon */.$P.property.icon; CheckTreeItem.property.text = ExpTree/* ExpNode.property.name */.$P.property.name; CheckTreeItem.property.level = ExpTree/* ExpNode.property.level */.$P.property.level; CheckTreeItem.property.desc = ExpTree/* ExpNode.property.desc */.$P.property.desc; CheckTreeItem.property.status = ExpTree/* ExpNode.property.status */.$P.property.status; CheckTreeItem.property.data = { set: function (itemData) { this._itemData = itemData; var text = (0,SelectListItem/* getTextOfListItem */.sk)(itemData); this.text = text; this.attr('title', itemData.value + '') var desc = (0,SelectListItem/* getDescriptionOfListItem */._l)(itemData); this.desc = desc; if (itemData && itemData.icon) { this.icon = itemData.icon; } else { this.icon = null; } this.noSelect = itemData.noSelect; }, get: function () { return this._itemData; } }; CheckTreeItem.property.selected = { set: function (value) { this._selected = value; this.$checkbox.disabled = value === 'empty'; if (value === 'all') { this.$checkbox.minus = false; this.$checkbox.checked = true; } else if (value === 'child') { this.$checkbox.checked = false; this.$checkbox.minus = true; } else if (value === 'empty') { this.$checkbox.minus = false; this.$checkbox.checked = false; } else { this.$checkbox.minus = false; this.$checkbox.checked = false; } }, get: function () { if ( this.$checkbox.disabled) return 'empty'; if (this.$checkbox.checked) return 'all'; else if (this.$checkbox.minus) return 'child'; return 'none'; } }; CheckTreeItem.property.noSelect = { set: function (value) { if (value) { this.addClass('as-no-select'); } else { this.removeClass('as-no-select'); } }, get: function () { return this.hasClass('as-no-select'); } }; CheckTreeItem.eventHandler = {}; CheckTreeItem.eventHandler.checkboxChange = function (event) { this.emit('select', { type: 'select', target: this, originalEvent: event.originalEvent || event.originEvent || event }); }; CheckTreeItem.eventHandler.click = function (event) { var tBound; if (this.status === 'open' || this.status === 'close') { tBound = this.$toggleIcon.getBoundingClientRect(); if (event.clientX <= tBound.right || this.noSelect) { this.emit('presstoggle', { type: 'presstoggle', target: this, originalEvent: event }, this); } else if (!(0,EventEmitter/* hitElement */.EY)(this.$checkbox, event) && !this.$checkbox.disabled) { this.$checkbox.checked = !this.$checkbox.checked; this.eventHandler.checkboxChange(event); } } else { if (!(0,EventEmitter/* hitElement */.EY)(this.$checkbox, event) && !this.noSelect && !this.$checkbox.disabled) { this.$checkbox.checked = !this.$checkbox.checked; this.eventHandler.checkboxChange(event); } } }; ACore/* default.install */.Z.install(CheckTreeItem); /* harmony default export */ const js_CheckTreeItem = (CheckTreeItem); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/checktreebox.css var checktreebox = __webpack_require__(254); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckTreeBox.js /*** * @extends Follower * @constructor */ function CheckTreeBox() { if (this.cancelWaiting) this.cancelWaiting(); /** * * @type {CTBItemListController} */ this.listCtrl = new (this.ListControllerClass)(this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.listCtrl, ['viewHolders', '$checkAll', 'estimateSize']); this.dropdownCtrl = new CTBDropdownController(this); this.actionCtrl = new CTBActionController(this); this.searchCtrl = new CTBSearchController(this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.searchCtrl, ['$searchInput']); this._initDomHook(); this._initProperty(); if (!this.updatePosition) { this.updatePosition = noop/* default */.Z; } /** * @name mobile * @type {boolean} * @memberof CheckTreeBox# */ /*** * @name strictValue * @memberof CheckTreeBox# * @type {boolean} */ /** * @name values * @memberof CheckTreeBox# * @type {Array} */ /** * @name viewValues * @memberof CheckTreeBox# * @type {Array} */ } CheckTreeBox.tag = 'CheckTreeBox'.toLowerCase(); CheckTreeBox.prototype.preLoadN = 3; CheckTreeBox.prototype.itemHeight = 28; CheckTreeBox.prototype.itemInPage = 36; CheckTreeBox.prototype._initDomHook = function () { }; CheckTreeBox.prototype._initProperty = function () { this.scale14 = (0,ACore.$)(document.body).getFontSize() / 14; this.initOpened = 0; this.enableSearch = true; }; CheckTreeBox.prototype.focus = js_SelectListBox.prototype.focus; CheckTreeBox.prototype.addStyle = function (name, value) { var ms; if (name === 'minWidth' || name === 'min-width') { ms = (0,attribute.parseMeasureValue)(value); if (ms.unit === 'px') { value = Math.max(240, ms.value) + 'px'; } return AElement/* default.prototype.addStyle.call */.Z.prototype.addStyle.call(this, name, value); } return AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } CheckTreeBox.render = function () { var mobile = (arguments[1] && arguments[1].forceMobile) || BrowserDetector/* default.isMobile */.Z.isMobile; var footer = { class: 'as-dropdown-box-footer', child: [ { tag: 'checkbox', class: 'as-select-list-box-check-all', props: { checked: false, text: LanguageSystem/* default.getText */.ZP.getText('txt_check_all') || LanguageSystem/* default.getText */.ZP.getText('txt_all') || 'Check All' } }, { class: 'as-dropdown-box-footer-right', child: [ { tag: 'a', class: 'as-select-list-box-cancel-btn', attr: { "data-ml-key": 'txt_cancel' } } ].concat(mobile ? [] : [{ tag: 'a', class: 'as-select-list-box-close-btn', attr: { "data-ml-key": 'txt_close' } }]) } ] }; var content = { class: ['as-check-tree-box-scroller', 'as-bscroller', 'as-select-list-box-scroller'], child: { class: ['as-check-tree-box-content', 'as-select-list-box-content'], child: Array(this.prototype.preLoadN).fill('.as-select-list-box-page') } }; if (mobile) { return (0,ACore._)({ props: { mobile: true }, extendEvent: ['change', 'close', 'toggleitem', 'cancel'], class: ['am-check-tree-box-modal', 'am-modal', 'am-dropdown-box-modal'], child: { class: ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'], child: [ { class: 'am-dropdown-box-header', child: [ { tag: Searcher/* default.tag */.Z.tag }, { tag: 'button', class: 'am-dropdown-box-close-btn', child: 'span.mdi.mdi-close' } ] }, content, footer ] } }) } return (0,ACore._)({ tag: 'follower', extendEvent: ['change', 'toggleitem', 'cancel', 'close'], class: ['as-check-tree-box', 'as-select-list-box', 'as-anchor-1'], child: [ { class: 'as-select-list-box-search-ctn', child: 'searchtextinput' }, content, footer ], props: { anchor: [1, 6, 2, 5], mobile: false } }); }; CheckTreeBox.prototype.HolderClass = TreeNodeHolder; CheckTreeBox.prototype.findItemHoldersByValue = function (value) { return this.listCtrl.findItemHoldersByValue(value); }; CheckTreeBox.prototype.findItemByValue = function (value) { var holders = this.listCtrl.findItemHoldersByValue(value); if (holders && holders.length > 0) { return holders[0].item; } else return null; }; CheckTreeBox.prototype.viewListAt = function (offset) { this.listCtrl.viewListAt(offset); }; CheckTreeBox.prototype.noTransition = function () { if (this.hasClass('as-no-transition')) return; this.addClass('as-no-transition'); setTimeout(function () { this.removeClass('as-no-transition'); }.bind(this), 100); }; CheckTreeBox.prototype.resetSearchState = function () { this.listCtrl.resetView(); }; CheckTreeBox.prototype.updateContentSize = function () { this.listCtrl.updateContentSize(); }; CheckTreeBox.prototype._implicit = function (values) { return values || []; }; CheckTreeBox.property = {}; CheckTreeBox.property.items = { /*** * @this CheckTreeBox * @param items */ set: function (items) { items = items || []; this._items = items; this.listCtrl.setItems(items); }, get: function () { return this._items; } }; CheckTreeBox.property.values = { /*** * @this CheckTreeBox * @param values */ set: function (values) { this.listCtrl.setValues(values); }, get: function () { return this.listCtrl.getValues(); } }; CheckTreeBox.property.viewValues = { get: function () { return this.listCtrl.getViewValues(); } }; CheckTreeBox.property.enableSearch = { set: function (value) { if (value) this.addClass('as-enable-search'); else this.removeClass('as-enable-search'); }, get: function () { return this.hasClass('as-enable-search'); } }; CheckTreeBox.eventHandler = {}; CheckTreeBox.eventHandler.toggleItem = function (item, event) { this.noTransition(); var nodeHolder = item.nodeHolder; if (!nodeHolder) { console.error("Load error, item was not assigned TreeNodeHolder!") } else nodeHolder.toggle(); }; CheckTreeBox.eventHandler.selectItem = function (item, event) { var nodeHolder = item.nodeHolder; if (!nodeHolder) { console.error("Load error, item was not assigned TreeNodeHolder!"); return; } this.noTransition(); var ref = nodeHolder.findReferenceNode(); var targetNode = ref || nodeHolder; var selected = item.selected; if (selected === 'all' && (targetNode.canSelectAll || targetNode.selected === 'none')) { targetNode.selectAll(); } else { targetNode.unselectAll(); } if (ref) { nodeHolder.getRoot().updateSelectedFromRef(); } this.emit('change', { type: 'change', target: this }, this); }; /*** * @this CheckTreeBox */ CheckTreeBox.eventHandler.searchModify = function () { }; CheckTreeBox.prototype.updateSelectedInViewIfNeed = function () { if (this.rootViewHolder !== this.rootHolder) { this.rootViewHolder.updateSelectedFromRef(); } }; CheckTreeBox.eventHandler.clickCancelBtn = function (event) { this.emit('cancel', { type: 'cancel', target: this, originalEvent: event }, this); }; CheckTreeBox.eventHandler.clickCloseBtn = function (event) { this.emit('close', { type: 'close', target: this, originalEvent: event }, this); }; ACore/* default.install */.Z.install(CheckTreeBox); /* harmony default export */ const js_CheckTreeBox = (CheckTreeBox); /*** * * @param {CheckTreeBox} boxElt * @param items * @constructor */ function TreeRootHolder(boxElt, items) { this.boxElt = boxElt; this.items = items; this.selected = 'none'; var Clazz = this.SubHolderClass; this.child = []; this.idx = -1;//root this.tailIdx = this.idx; if (items && items.length > 0) { items.reduce((ac, it) => { var child = new Clazz(boxElt, it, ac.idx + 1, this); ac.idx = child.tailIdx; ac.arr.push(child); return ac; }, { idx: this.idx, arr: this.child }); this.tailIdx = this.child[this.child.length - 1].tailIdx; } this.canSelectAll = this.child.every(c => c.canSelectAll); this.canSelect = (this.child.length === 0 || this.child.some(c => c.canSelect)); } CheckTreeBox.prototype.RootHolderClass = TreeRootHolder; TreeRootHolder.prototype.level = -1; TreeRootHolder.prototype.reset = function () { this.child.forEach(c => c.reset()); this.selected = "none"; }; /*** * * @param {Array=} ac */ TreeRootHolder.prototype.toArray = function (ac) { ac = ac || []; this.child.forEach(c => c.toArray(ac)); return ac; }; TreeRootHolder.prototype.updateFromChild = function () { var childSelectAll = 0; var childSelectChild = 0; var isCheckAll = true; this.traverse(hd => { if (hd.selected === 'none' && !hd.item.noSelect) { isCheckAll = false; } }); if (this.canSelectAll) { this.boxElt.$checkAll.checked = isCheckAll; this.boxElt.$checkAll.minus = false; this.selected = isCheckAll ? 'all' : 'none'; } else { this.boxElt.$checkAll.checked = false; this.boxElt.$checkAll.minus = isCheckAll; this.selected = isCheckAll ? 'child' : 'none'; } }; TreeRootHolder.prototype.updateUp = function () { this.updateFromChild(); }; /*** * * @param {Array=} ac */ TreeRootHolder.prototype.getValues = function (ac) { ac = ac || []; this.child.forEach(c => c.getValues(ac)); return (0,DataStructure_Array.arrayUnique)(ac); }; TreeRootHolder.prototype.getViewValues = function (ac) { ac = ac || []; this.child.forEach(c => c.getViewValues(ac)); return (0,DataStructure_Array.arrayUnique)(ac); }; /*** * * @param {Array} values */ TreeRootHolder.prototype.setValues = function (values) { this.reset(); values = values.reduce((ac, cr) => { ac[(0,utils.keyStringOf)(cr)] = true; return ac; }, values.slice()); this.child.forEach(c => c.setValues(values)); }; TreeRootHolder.prototype.calcEstimateSize = function () { var res = { width: 0, height: this.boxElt.itemHeight + (this.tailIdx + 1) }; var holders = this.child; var n = holders.length; var holder; var longestHolder = null; var longest = 0; var w; for (var i = 0; i < n; ++i) { holder = holders[i]; holder.traverse((hd) => { w = hd.calcEstimateWidth(); if (w > longest) { longest = w; longestHolder = hd; } }) } if (longestHolder) { res.width = longestHolder.calcWidth() * this.boxElt.scale14; } return res; }; TreeRootHolder.prototype.selectAll = function () { this.child.forEach(c => c.selectAll()); }; TreeRootHolder.prototype.unselectAll = function () { this.child.forEach(c => c.unselectAll()); }; TreeRootHolder.prototype.findReferenceNode = function () { if (this.boxElt.listCtrl.rootHolder === this) return null; return this.boxElt.listCtrl.rootHolder; } TreeRootHolder.prototype.updateSelectedFromRef = function () { if (this.boxElt.listCtrl.rootHolder === this) return; this.child.forEach(c => c.updateSelectedFromRef()); }; TreeRootHolder.prototype.traverse = function (cb) { this.child.forEach(c => c.traverse(cb)); }; TreeRootHolder.prototype.getRoot = function () { return this; }; /*** * * @param {Object<string, TreeNodeHolder>|{}=}ac * @returns {Object<string, TreeNodeHolder>|{}} */ TreeRootHolder.prototype.depthIndexing = function (ac) { ac = ac || {}; this.child.forEach(c => c.depthIndexing(ac)); return ac; }; /*** * * @param {CheckTreeBox} boxElt * @param {SelectionItem} item * @param {number} idx * @param {TreeNodeHolder | TreeRootHolder} parent * @constructor */ function TreeNodeHolder(boxElt, item, idx, parent) { this.boxElt = boxElt; this.item = item; this.idx = idx; this.tailIdx = idx;//last child index this.parent = parent; this.status = (item.items && item.items.length > 0) ? 'close' : 'none'; this.selected = 'none'; this.level = parent ? parent.level + 1 : 0; if (this.status === 'close' && this.level < this.boxElt.initOpened) { this.status = 'open'; } this._elt = null; var Clazz = this.constructor; /*** * * @type {this[]} */ this.child = []; if (item.items && item.items.length > 0) { item.items.reduce((ac, it) => { var child = new Clazz(boxElt, it, ac.idx + 1, this); ac.idx = child.tailIdx; ac.arr.push(child); return ac; }, { idx: this.idx, arr: this.child }); this.tailIdx = this.child[this.child.length - 1].tailIdx; } this.canSelectAll = !this.item.noSelect && this.child.every(c => c.canSelectAll); this.canSelect = !this.item.noSelect && (this.child.length === 0 || this.child.some(c => c.canSelect)); } TreeRootHolder.prototype.SubHolderClass = TreeNodeHolder; /*** * * @param {Object<string, TreeNodeHolder>|{}}ac * @returns {Object<string, TreeNodeHolder>|{}} */ TreeNodeHolder.prototype.depthIndexing = function (ac) { ac = ac || {}; var key = (0,utils.keyStringOf)(this.item.value); if (!ac[key]) ac[key] = []; ac[key].push(this); // if (ac[key].length === 2) {//allow // console.warn("Duplicate value", ac[key]); // } this.child.forEach(c => c.depthIndexing(ac)); return ac; }; TreeNodeHolder.prototype.findIdxInView = function () { var holders = this.boxElt.listCtrl.viewHolders; var start = 0; var end = holders.length - 1; var mid; var idx = this.idx; var holderIdx; while (start < end) { mid = (start + end) >> 1; holderIdx = holders[mid].idx; if (holderIdx < idx) { start = mid + 1; } else if (holderIdx > idx) { end = mid - 1; } else { return mid; } } holderIdx = holders[start].idx; if (holderIdx === idx) return start; return -1; }; TreeNodeHolder.prototype.getValues = function (ac) { ac = ac || []; if (this.selected === 'all') { ac.push(this.item.value); } else if (this.selected === 'child') { this.child.forEach(c => c.getValues(ac)); } return ac; }; TreeNodeHolder.prototype.getViewValues = function (ac) { return this.getValues(ac); }; TreeNodeHolder.prototype.setValues = function (values) { if (values[(0,utils.keyStringOf)(this.item.value)]) { this.selectAll(true); } else { this.child.forEach(c => c.setValues(values)); } this.updateFromChild(); }; TreeNodeHolder.prototype.toggle = function () { var idx = this.findIdxInView(); var status = this.status; if (status === 'close') { this.itemElt.status = 'open'; this.status = 'open'; var arr = this.toArray(); arr.shift(); this.boxElt.listCtrl.viewHolders.splice.apply(this.boxElt.listCtrl.viewHolders, [idx + 1, 0].concat(arr)); this.boxElt.listCtrl.updateContentSize(); this.boxElt.listCtrl.viewListAt(idx); this.boxElt.emit('toggleitem', { type: 'toggleitem', target: this.boxElt, nodeHolder: this, status: 'open' }, this.boxElt); } else if (status === 'open') { this.itemElt.status = 'close'; this.status = 'close'; var l = 0; while (this.boxElt.viewHolders[idx + 1 + l] && this.boxElt.listCtrl.viewHolders[idx + 1 + l].isDescendantOf(this)) ++l; this.boxElt.listCtrl.viewHolders.splice(idx + 1, l); this.boxElt.listCtrl.updateContentSize(); this.boxElt.listCtrl.viewListAt(idx); this.boxElt.emit('toggleitem', { type: 'toggleitem', target: this.boxElt, nodeHolder: this, status: 'close' }, this.boxElt); } }; /*** * * @param {boolean=} isDownUpdate */ TreeNodeHolder.prototype.selectAll = function (isDownUpdate) { if (this.selected === 'all') return; if (!this.canSelect) return; if (this.canSelectAll) this.selected = 'all'; else this.selected = 'child'; if (this.itemElt) this.itemElt.selected = this.selected; this.child.forEach(function (child) { child.selectAll(true); }); if (!isDownUpdate) { if (this.parent) this.parent.updateUp(); } }; /*** * * @param {boolean=} isDownUpdate */ TreeNodeHolder.prototype.unselectAll = function (isDownUpdate) { if (this.selected === 'none') return; this.selected = 'none'; if (this.itemElt) this.itemElt.selected = this.selected; this.child.forEach(function (child) { child.unselectAll(true); }); if (!isDownUpdate) { if (this.parent) this.parent.updateUp(); } }; TreeNodeHolder.prototype.reset = function () { if (this.selected !== "empty") this.selected = 'none'; if (this.itemElt) this.itemElt.selected = this.selected; this.child.forEach(function (child) { child.reset(true); }); } TreeNodeHolder.prototype.updateFromChild = function () { if (this.child.length === 0) return; var childSelectAll = 0; var childSelectChild = 0; for (var i = 0; i < this.child.length; ++i) { if (this.child[i].selected === 'all') { childSelectAll++; } else if (this.child[i].selected === 'child') { childSelectChild++; } } if (childSelectAll === this.child.length) { this.selected = 'all'; } else if (childSelectChild + childSelectAll > 0) { this.selected = 'child'; } else { this.selected = 'none'; } if (this.itemElt) { this.itemElt.selected = this.selected; } }; TreeNodeHolder.prototype.updateUp = function () { this.updateFromChild(); if (this.parent) this.parent.updateUp(); }; TreeNodeHolder.prototype.calcEstimateWidth = function () { return this.calcWidth();//because new version use TextMeasure.measureWidth, better performance }; TreeNodeHolder.prototype.calcWidth = function () { var width = 12;//padding width += 43; //cheat for some size with checklistbox width += 1.75 * 14 * this.level; width += 14.7 + 5;//toggle icon width += 16;//checkbox if (this.item.icon) width += 21;//icon width += 7 + TextMeasure/* default.measureWidth */.Z.measureWidth(this.item.text||'', TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14);//margin-text if (this.item.desc) width += 6 + TextMeasure/* default.measureWidth */.Z.measureWidth(this.item.desc||'',TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 11.9); return width; }; TreeNodeHolder.prototype.isDescendantOf = function (parent) { var cr = this.parent; while (cr) { if (parent === cr) return true; cr = cr.parent; } return false; }; /*** * * @param {TreeNodeHolder[]=} ac * @return {TreeNodeHolder[]} */ TreeNodeHolder.prototype.toArray = function (ac) { ac = ac || []; ac.push(this); if (this.status === 'open') { for (var i = 0; i < this.child.length; ++i) { this.child[i].toArray(ac); } } return ac; }; TreeNodeHolder.prototype.traverse = function (cb) { cb(this); this.child.forEach(c => c.traverse(cb)); }; Object.defineProperty(TreeNodeHolder.prototype, 'itemElt', { set: function (elt) { if (this._elt === elt) return; if (this._elt) { if (this._elt.nodeHolder === this) { this._elt.nodeHolder = null; } } if (elt) { if (elt.nodeHolder) { elt.nodeHolder.itemElt = null; } elt.nodeHolder = this; this._elt = elt; elt.data = this.item; elt.level = this.level; elt.status = this.status; elt.selected = this.selected; if (this.item.noSelect || !this.canSelect) { elt.noSelect = true; } else { elt.noSelect = false; } } else { this._elt = null; } }, get: function () { return this._elt; }, configurable: true }); TreeNodeHolder.prototype.findReferenceNode = function () { var value = this.item.value; var holders = this.boxElt.findItemHoldersByValue(value); var holder; for (var i = 0; i < holders.length; ++i) { holder = holders[i]; if ((holder.item === this.item.ref || holder.item === this.item) && holder !== this) return holder; } return null; }; TreeNodeHolder.prototype.getRoot = function () { if (!this.parent) return this; return this.parent.getRoot(); }; TreeNodeHolder.prototype.updateSelectedFromRef = function () { var ref = this.findReferenceNode(); if (!ref) return; var selected = ref.selected; this.selected = selected; if (this.itemElt) this.itemElt.selected = selected; this.child.forEach(function (c) { c.updateSelectedFromRef(); }); }; /** * * @param {CheckTreeBox} elt * @constructor */ function CTBItemListController(elt) { this.elt = elt; var RootHolderClass = this.elt.RootHolderClass; this._items = []; this._values = []; this.itemHolderByValue = {}; this.rootHolder = new RootHolderClass(this.elt, []); // this.rootHolders = []; /*** * * @type {TreeRootHolder} */ this.rootViewHolder = this.rootHolder; /*** * * @type {TreeNodeHolder[]} */ this.viewHolders = [];//toArray this.$checkAll = (0,ACore.$)('.as-select-list-box-check-all', this.elt) .on('change', this.ev_checkAllChange.bind(this)); this.$scroller = (0,ACore.$)('.as-check-tree-box-scroller', elt) .on('scroll', this.ev_scroll.bind(this)); this.itemInPage = Math.max(36, Math.ceil((0,Dom/* getScreenSize */.tE)().height / this.itemHeight)); this.$content = (0,ACore.$)('.as-check-tree-box-content', elt); this.$pages = (0,ACore.$$)('.as-select-list-box-page', elt); this.$pages.forEach(function (p) { p.__viewOffset__ = -1; }); } CheckTreeBox.prototype.ListControllerClass = CTBItemListController; CTBItemListController.prototype.preLoadN = 3; CTBItemListController.prototype.itemHeight = 28; CTBItemListController.prototype.itemInPage = 36; CTBItemListController.prototype.resetView = function () { this.elt.$searchInput.value = ''; this.viewHolders = this.rootHolder.toArray(); this.rootViewHolder = this.rootHolder; this.updateContentSize(); this.viewListAt(0); } CTBItemListController.prototype.setItems = function (items) { if (!(items instanceof Array)) items = []; (0,search/* prepareSearchForList */.Lb)(items); this._items = items; var RootHolderClass = this.elt.RootHolderClass; this.rootHolder = new RootHolderClass(this.elt, items); this.itemHolderByValue = this.rootHolder.depthIndexing(); this.estimateSize = this.rootHolder.calcEstimateSize(); this.elt.addStyle('--select-list-estimate-width', this.estimateSize.width + 'px'); this.resetView(); this.rootHolder.setValues(this._values); }; CTBItemListController.prototype.setValues = function (values) { if (values instanceof Array) { values = values.slice(); } else if (values === undefined || values === null) { values = []; } else values = [values]; this._values = values; this.rootHolder.setValues(values); }; CTBItemListController.prototype.getValues = function () { return this.rootHolder.getValues(); }; CTBItemListController.prototype.getViewValues = function () { return this.rootHolder.getViewValues() }; CTBItemListController.prototype.updateContentSize = function () { this.$content.addStyle('height', this.viewHolders.length * this.itemHeight / 14 + 'em'); }; CTBItemListController.prototype.viewListAt = function (offset) { offset = offset || 0; this.elt.noTransition(); var midPage = this.$pages.length >> 1; var startOffset = Math.max(0, offset - midPage * this.itemInPage); var cOffset; var itemN = this.viewHolders.length; for (var i = 0; i < this.$pages.length; ++i) { cOffset = startOffset + i * this.itemInPage; if (cOffset < itemN) { this.$pages[i].__viewOffset__ = cOffset; this.$pages[i].removeStyle('display') .addStyle('top', cOffset * this.itemHeight / 14 + 'em'); this._fillPage(this.$pages[i], Math.min(this.itemInPage, itemN - cOffset)); this._assignItems(this.$pages[i], cOffset); } else { this.$pages[i].__viewOffset__ = -1; this.$pages[i].addStyle('display', 'none'); } } }; CTBItemListController.prototype._fillPage = function (pageElt, n) { while (pageElt.childNodes.length > n) { this._releaseItem(pageElt.lastChild); pageElt.removeChild(pageElt.lastChild); } while (pageElt.childNodes.length < n) { pageElt.addChild(this._requestItem()); } }; CTBItemListController.prototype._assignItems = function (pageElt, offset) { for (var i = 0; i < pageElt.childNodes.length; ++i) { this.viewHolders[offset + i].itemElt = pageElt.childNodes[i]; } }; CTBItemListController.prototype._requestItem = function () { var res = this._pool.pop() || (0,ACore._)({ tag: js_CheckTreeItem.tag, props: { menuElt: this }, on: { presstoggle: function (event) { this.menuElt.eventHandler.toggleItem(this, event); }, select: function (event) { this.menuElt.eventHandler.selectItem(this, event); } } }); res.menuElt = this.elt; return res; }; CTBItemListController.prototype._pool = []; CTBItemListController.prototype._releaseItem = function (item) { if (item.nodeHolder && item.nodeHolder.itemElt === item) { item.nodeHolder.itemElt = null; } this._pool.push(item); }; CTBItemListController.prototype.findItemHoldersByValue = function (value) { return (this.itemHolderByValue[(0,utils.keyStringOf)(value)] || []).slice(); }; CTBItemListController.prototype.isSelectedAll = function () { return this.rootHolder.selected; }; /* CTBItemListController.prototype.selectAll = function (selected){ var preValues = this.getValues(); switch (selected) { case 'all': this.rootHolder.unselectAll(); break; case 'child': if (this.rootHolder.canSelectAll) { this.rootHolder.selectAll(); } else { this.rootHolder.unselectAll(); } break; case 'none': this.rootHolder.selectAll(); break; } if (this.rootViewHolder !== this.rootHolder) { this.rootViewHolder.updateSelectedFromRef(); } var newValues = this.getValues(); if (!arrayCompare(preValues, newValues)) { this.elt.emit('change', { type: 'change', target: this }, this); } };*/ CTBItemListController.prototype.ev_scroll = function (event) { var itemHeight = this.itemHeight * this.elt.getFontSize() / 14; var scrollTop = this.$scroller.scrollTop; var scrollBottom = scrollTop + this.$scroller.clientHeight; var startOffset = this.$pages[0].__viewOffset__; var endOffset = this.$pages[this.$pages.length - 1].__viewOffset__; if (endOffset === -1) { endOffset = this.viewHolders.length; } else { endOffset += this.$pages[this.$pages.length - 1].childNodes.length; } var needLoad = 0; if (startOffset > 0 && startOffset * itemHeight + 200 > scrollTop) needLoad = -1; if (needLoad === 0 && this.viewHolders.length > endOffset && endOffset * itemHeight - 200 < scrollBottom) { needLoad = 1; } var page2Load; if (needLoad < 0) { page2Load = this.$pages.pop(); this.$pages.unshift(page2Load); page2Load.__viewOffset__ = Math.max(0, startOffset - this.itemInPage); this._fillPage(page2Load, startOffset - page2Load.__viewOffset__); this._assignItems(page2Load, page2Load.__viewOffset__); page2Load.removeStyle('display'); page2Load.addStyle('top', page2Load.__viewOffset__ * itemHeight + 'px'); } else if (needLoad > 0) { for (var i = 0; i < this.$pages.length; ++i) { if (this.$pages[i].__viewOffset__ === -1) { page2Load = this.$pages[i]; break; } } if (!page2Load) { page2Load = this.$pages.shift(); this.$pages.push(page2Load); } page2Load.__viewOffset__ = endOffset; this._fillPage(page2Load, Math.min(this.itemInPage, this.viewHolders.length - endOffset)); this._assignItems(page2Load, page2Load.__viewOffset__); page2Load.removeStyle('display'); page2Load.addStyle('top', page2Load.__viewOffset__ * itemHeight + 'px'); } }; CTBItemListController.prototype.ev_checkAllChange = function (event) { var selected = this.rootHolder.selected; var preValues = this.getValues(); switch (selected) { case 'all': this.rootHolder.unselectAll(); break; case 'child': if (this.rootHolder.canSelectAll) { this.rootHolder.selectAll(); } else { this.rootHolder.unselectAll(); } break; case 'none': this.rootHolder.selectAll(); break; } if (this.rootViewHolder !== this.rootHolder) { this.rootViewHolder.updateSelectedFromRef(); } var newValues = this.getValues(); if (!(0,DataStructure_Array.arrayCompare)(preValues, newValues)) { this.elt.emit('change', { type: 'change', target: this }, this); } }; /** * * @param {CheckTreeBox} elt * @constructor */ function CTBActionController(elt) { this.elt = elt; this.$cancelBtn = (0,ACore.$)('.as-select-list-box-cancel-btn', this.elt) .on('click', this.ev_clickCancelBtn.bind(this)); this.$closeBtn = (0,ACore.$)('.as-select-list-box-close-btn', this.elt) || (0,ACore.$)('.am-dropdown-box-close-btn', this.elt); this.$closeBtn.on('click', this.ev_clickCloseBtn.bind(this)); } CTBActionController.prototype.ev_clickCancelBtn = function (event) { this.elt.emit('cancel', { type: 'cancel', target: this, originalEvent: event }, this); }; CTBActionController.prototype.ev_clickCloseBtn = function (event) { this.elt.emit('close', { type: 'close', target: this, originalEvent: event }, this); }; function CTBSearchController(elt) { this.elt = elt; this.cache = {}; this.$searchInput = (0,ACore.$)('searchtextinput', this.elt) .on('stoptyping', this.ev_searchModify.bind(this)); } CTBSearchController.prototype.ev_searchModify = function () { var text = this.$searchInput.value.trim(); if (text.length === 0) { this.elt.listCtrl.resetView(); return; } var searchData; if (this.cache[text]) { searchData = this.cache[text]; } else { searchData = {}; searchData.items = (0,search/* searchTreeListByText */.$l)(text, this.elt.listCtrl._items); searchData.rootViewHolder = new TreeRootHolder(this.elt, searchData.items); searchData.items.forEach(function visit(it) { if (it.ref.items && it.ref.items.length > 0 && (!it.items || it.items.length === 0)) { it.items = it.ref.items; it.doNotInitOpen = true; } else if (it.items && it.items.length > 0) { it.items.forEach(visit); } }); } searchData.rootViewHolder.traverse(hd => { if (hd.status === 'close') { if (!hd.item.doNotInitOpen) hd.status = 'open'; } }); //todo: short command this.elt.listCtrl.rootViewHolder = searchData.rootViewHolder; this.elt.listCtrl.viewHolders = this.elt.listCtrl.rootViewHolder.toArray(); this.elt.listCtrl.rootViewHolder.updateSelectedFromRef(); this.elt.listCtrl.updateContentSize(); this.elt.listCtrl.viewListAt(0); this.elt.dropdownCtrl.updatePosition(); }; /** * * @param {CheckTreeBox} elt * @constructor */ function CTBDropdownController(elt) { this.elt = elt; } CTBDropdownController.prototype.updatePosition = function () { if (this.elt.updatePosition) { this.elt.updatePosition(); } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckTreeLeafOnlyBox.js var normalizeItem = item => { var nItem = Object.assign({}, item); if (!nItem.isLeaf && nItem.noSelect) { delete nItem.noSelect; } if (nItem.items && nItem.items.map) nItem.items = normalizeItems(nItem.items); return nItem; } var normalizeItems = (items) => { return items.map(it => normalizeItem(it)); }; var verifyItems = items => { var leafDict = {}; var subTreeDict = {}; var visit = () => { } items.forEach(visit); } /*** * Only tree has leaf can be selected * @extends CheckTreeBox * @constructor */ function CheckTreeLeafOnlyBox() { js_CheckTreeBox.apply(this, arguments); } CheckTreeLeafOnlyBox.tag = 'CheckTreeLeafOnlyBox'.toLowerCase(); CheckTreeLeafOnlyBox.render = function () { var mobile = (arguments[1] && arguments[1].forceMobile) || BrowserDetector/* default.isMobile */.Z.isMobile; var footer = { class: 'as-dropdown-box-footer', child: [ { tag: 'checkbox', class: 'as-select-list-box-check-all', props: { checked: false, text: LanguageSystem/* default.getText */.ZP.getText('txt_check_all') || LanguageSystem/* default.getText */.ZP.getText('txt_all') || 'Check All' } }, { class: 'as-dropdown-box-footer-right', child: [ { tag: 'a', class: 'as-select-list-box-cancel-btn', attr: { "data-ml-key": 'txt_cancel' } } ].concat(mobile ? [] : [{ tag: 'a', class: 'as-select-list-box-close-btn', attr: { "data-ml-key": 'txt_close' } }]) } ] }; var content = { class: ['as-check-tree-box-scroller', 'as-bscroller', 'as-select-list-box-scroller'], child: { class: ['as-check-tree-box-content', 'as-select-list-box-content'], child: Array(this.prototype.preLoadN).fill('.as-select-list-box-page') } }; if (mobile) { return (0,ACore._)({ props: { mobile: true }, extendEvent: ['change', 'close', 'toggleitem', 'cancel'], class: ['am-check-tree-box-modal', 'am-modal', 'am-dropdown-box-modal'], child: { class: ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'], child: [ { class: 'am-dropdown-box-header', child: [ { tag: Searcher/* default.tag */.Z.tag }, { tag: 'button', class: 'am-dropdown-box-close-btn', child: 'span.mdi.mdi-close' } ] }, content, footer ] } }) } return (0,ACore._)({ tag: 'follower', extendEvent: ['change', 'toggleitem', 'cancel', 'close'], class: ['as-check-tree-leaf-only-box', 'as-check-tree-box', 'as-select-list-box', 'as-anchor-1'], child: [ { class: 'as-select-list-box-search-ctn', child: 'searchtextinput' }, content, footer ], props: { anchor: [1, 6, 2, 5] } }); }; Object.assign(CheckTreeLeafOnlyBox.prototype, js_CheckTreeBox.prototype); CheckTreeLeafOnlyBox.property = Object.assign({}, js_CheckTreeBox.property); CheckTreeLeafOnlyBox.eventHandler = Object.assign({}, js_CheckTreeBox.eventHandler); CheckTreeLeafOnlyBox.prototype._pool = []; CheckTreeLeafOnlyBox.prototype.findItemByValue = function (value) { var holders = this.listCtrl.findItemHoldersByValue(value); if (holders && holders.length > 0) { return holders[0].item; } else { return null; } }; CheckTreeLeafOnlyBox.property.items = { get: js_CheckTreeBox.property.items.get, set: function (items) { items = normalizeItems(items || []); verifyItems(items); js_CheckTreeBox.property.items.set.call(this, items); } }; CheckTreeLeafOnlyBox.prototype._requestItem = function () { var res = this._pool.pop() || (0,ACore._)({ tag: js_CheckTreeItem.tag, class: 'as-check-tree-leaf-only-item', props: { menuElt: this }, on: { presstoggle: function (event) { this.menuElt.eventHandler.toggleItem(this, event); }, select: function (event) { this.menuElt.eventHandler.selectItem(this, event); } } }); res.menuElt = this; return res; }; CheckTreeLeafOnlyBox.prototype.HolderClass = TreeLeafOnlyNodeHolder; ACore/* default.install */.Z.install(CheckTreeLeafOnlyBox); /* harmony default export */ const js_CheckTreeLeafOnlyBox = (CheckTreeLeafOnlyBox); /*** * @extends TreeRootHolder * @param {CheckTreeLeafOnlyBox} boxElt * @param items * @constructor */ function TreeLeafOnlyRootHolder(boxElt, items) { TreeRootHolder.apply(this, arguments); } CheckTreeLeafOnlyBox.prototype.RootHolderClass = TreeLeafOnlyRootHolder; OOP/* default.mixClass */.ZP.mixClass(TreeLeafOnlyRootHolder, TreeRootHolder); /*** * @extends TreeNodeHolder * @constructor */ function TreeLeafOnlyNodeHolder() { TreeNodeHolder.apply(this, arguments); /*** * @memberOf TreeLeafOnlyNodeHolder# * @type {number} */ this.leafCount = 0; if (this.item.isLeaf) { this.leafCount = 1; } else { this.leafCount = this.child.reduce((ac, c) => ac + c.leafCount, 0); } if (this.child.length > 0) { this.item.noSelect = this.child.every(c => c.item.noSelect);//all child is noSelect=> noSelect } this.canSelect = this.canSelect && this.leafCount > 0; this.canSelectAll = this.canSelect && !this.item.noSelect && this.child.every(c => c.canSelectAll || c.leafCount === 0); if (this.leafCount === 0) this.selected = 'empty'; } OOP/* default.mixClass */.ZP.mixClass(TreeLeafOnlyNodeHolder, TreeNodeHolder); TreeLeafOnlyRootHolder.prototype.SubHolderClass = TreeLeafOnlyNodeHolder; TreeLeafOnlyNodeHolder.prototype.setValues = function (values) { if (values[(0,utils.keyStringOf)(this.item.value)]) { this.selectAll(true); } else { this.child.forEach(c => c.setValues(values)); } this.updateFromChild(); }; TreeLeafOnlyNodeHolder.prototype.getValues = function (ac) { ac = ac || []; if (this.selected === 'all' && this.item.isLeaf) { ac.push(this.item.value); } else { this.child.forEach(c => c.getValues(ac)); } return ac; }; TreeLeafOnlyNodeHolder.prototype.getViewValues = function (ac) { ac = ac || []; if (this.selected === 'all') { ac.push(this.item.value); } else if (this.selected === 'child') { this.child.forEach(c => c.getViewValues(ac)); } return ac; }; /*** * * @param {boolean=} isDownUpdate */ TreeLeafOnlyNodeHolder.prototype.selectAll = function (isDownUpdate) { if (this.selected === 'empty') return; return TreeNodeHolder.prototype.selectAll.apply(this, arguments); }; TreeLeafOnlyNodeHolder.prototype.unselectAll = function (isDownUpdate) { if (this.selected === 'empty') return; return TreeNodeHolder.prototype.unselectAll.apply(this, arguments); }; TreeLeafOnlyNodeHolder.prototype.updateFromChild = function () { if (this.child.length === 0) return; var count = this.child.reduce((ac, cr) => { ac[cr.selected]++; return ac; }, { all: 0, child: 0, none: 0, empty: 0 }); // if (this.boxElt.debug) // console.log( this.item, count.empty , count.all, this.child.length);//0, 9, 10 if (count.empty === this.child.length) { this.selected = 'empty'; } else if (count.empty + count.all === this.child.length) { this.selected = 'all'; } else if (count.all + count.child > 0) { this.selected = 'child'; } else if (this.selected !== "empty") { this.selected = 'none'; } if (this.itemElt) { this.itemElt.selected = this.selected; } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CheckUnsafeTreeLeafOnlyBox.js var CheckUnsafeTreeLeafOnlyBox_normalizeItem = item => { var nItem = Object.assign({}, item); if (!nItem.isLeaf && nItem.noSelect) { delete nItem.noSelect; } if (nItem.items && nItem.items.map) nItem.items = CheckUnsafeTreeLeafOnlyBox_normalizeItems(nItem.items); return nItem; } var CheckUnsafeTreeLeafOnlyBox_normalizeItems = (items) => { return items.map(it => CheckUnsafeTreeLeafOnlyBox_normalizeItem(it)); }; var CheckUnsafeTreeLeafOnlyBox_verifyItems = items => { var leafDict = {}; var subTreeDict = {}; var visit = () => { } items.forEach(visit); } /** * @extends AElement * @constructor */ function CheckUnsafeTreeItem() { js_CheckTreeItem.apply(this, arguments); this.$actionCtn = (0,ACore.$)('.as-check-unsafe-tree-item-action-ctn', this); this.$actionBtns = (0,ACore.$$)('button', this.$actionCtn); this.$actionBtns[0].on('click', this.eventHandler.clickAction.bind(this, 'check_all')); this.$actionBtns[1].on('click', this.eventHandler.clickAction.bind(this, 'uncheck_all')); } CheckUnsafeTreeItem.tag = 'CheckUnsafeTreeItem'.toLowerCase(); CheckUnsafeTreeItem.render = function () { return (0,ACore._)({ tag: 'button', extendEvent: ['select', 'presstoggle'], class: ['as-check-tree-item', 'as-check-unsafe-tree-item', 'absol-exp-node'], child: [ '.absol-exp-node-level', 'toggler-ico', 'checkboxbutton', 'img.absol-exp-node-ext-icon', 'div.absol-exp-node-ext-icon', 'span.absol-exp-node-name', 'span.absol-exp-node-desc', { class: 'as-check-unsafe-tree-item-action-ctn', child: [ { tag: 'button', class: 'as-transparent-button', child: 'span.mdi.mdi-check-all' }, { tag: 'button', class: 'as-transparent-button', child: 'span.mdi.mdi-close' }, ] } ] }); }; CheckUnsafeTreeItem.eventHandler = Object.assign({}, js_CheckTreeItem.eventHandler); CheckUnsafeTreeItem.property = Object.assign({}, js_CheckTreeItem.property); CheckUnsafeTreeItem.eventHandler.click = function (event) { var tBound; if (this.status === 'open' || this.status === 'close') { tBound = this.$toggleIcon.getBoundingClientRect(); if ((0,EventEmitter/* hitElement */.EY)(this.$actionCtn, event)) { } else if (event.clientX <= tBound.right || this.noSelect) { this.emit('presstoggle', { type: 'presstoggle', target: this, originalEvent: event }, this); } else if (!(0,EventEmitter/* hitElement */.EY)(this.$checkbox, event) && !this.$checkbox.disabled) { this.$checkbox.checked = !this.$checkbox.checked; this.eventHandler.checkboxChange(event); } } else { if (!(0,EventEmitter/* hitElement */.EY)(this.$checkbox, event) && !this.noSelect && !this.$checkbox.disabled) { this.$checkbox.checked = !this.$checkbox.checked; this.eventHandler.checkboxChange(event); } } }; CheckUnsafeTreeItem.eventHandler.clickAction = function (action, event) { console.log(action); }; /*** * Only tree has leaf can be selected * @extends CheckTreeBox * @constructor */ function CheckUnsafeTreeLeafOnlyBox() { js_CheckTreeBox.apply(this, arguments); } CheckUnsafeTreeLeafOnlyBox.tag = 'CheckUnsafeTreeLeafOnlyBox'.toLowerCase(); CheckUnsafeTreeLeafOnlyBox.render = function () { var mobile = (arguments[1] && arguments[1].forceMobile) || BrowserDetector/* default.isMobile */.Z.isMobile; var footer = { class: 'as-dropdown-box-footer', child: [ { tag: 'checkbox', class: 'as-select-list-box-check-all', props: { checked: false, text: LanguageSystem/* default.getText */.ZP.getText('txt_check_all') || LanguageSystem/* default.getText */.ZP.getText('txt_all') || 'Check All' } }, { class: 'as-dropdown-box-footer-right', child: [ { tag: 'a', class: 'as-select-list-box-cancel-btn', attr: { "data-ml-key": 'txt_cancel' } } ].concat(mobile ? [] : [{ tag: 'a', class: 'as-select-list-box-close-btn', attr: { "data-ml-key": 'txt_close' } }]) } ] }; var content = { class: ['as-check-tree-box-scroller', 'as-bscroller', 'as-select-list-box-scroller'], child: { class: ['as-check-tree-box-content', 'as-select-list-box-content'], child: Array(this.prototype.preLoadN).fill('.as-select-list-box-page') } }; if (mobile) { return (0,ACore._)({ props: { mobile: true }, extendEvent: ['change', 'close', 'toggleitem', 'cancel'], class: ['am-check-tree-box-modal', 'am-modal', 'am-dropdown-box-modal'], child: { class: ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'], child: [ { class: 'am-dropdown-box-header', child: [ { tag: Searcher/* default.tag */.Z.tag }, { tag: 'button', class: 'am-dropdown-box-close-btn', child: 'span.mdi.mdi-close' } ] }, content, footer ] } }) } return (0,ACore._)({ tag: 'follower', extendEvent: ['change', 'toggleitem', 'cancel', 'close'], class: ['as-check-tree-leaf-only-box', 'as-check-tree-box', 'as-select-list-box', 'as-anchor-1'], child: [ { class: 'as-select-list-box-search-ctn', child: 'searchtextinput' }, content, footer ], props: { anchor: [1, 6, 2, 5] } }); }; Object.assign(CheckUnsafeTreeLeafOnlyBox.prototype, js_CheckTreeBox.prototype); CheckUnsafeTreeLeafOnlyBox.property = Object.assign({}, js_CheckTreeBox.property); CheckUnsafeTreeLeafOnlyBox.eventHandler = Object.assign({}, js_CheckTreeBox.eventHandler); CheckUnsafeTreeLeafOnlyBox.prototype._pool = []; CheckUnsafeTreeLeafOnlyBox.property.items = { get: js_CheckTreeBox.property.items.get, set: function (items) { items = CheckUnsafeTreeLeafOnlyBox_normalizeItems(items || []); CheckUnsafeTreeLeafOnlyBox_verifyItems(items); js_CheckTreeBox.property.items.set.call(this, items); } }; CheckUnsafeTreeLeafOnlyBox.prototype._requestItem = function () { var res = this._pool.pop() || (0,ACore._)({ tag: js_CheckTreeItem.tag, class: 'as-check-tree-leaf-only-item', props: { menuElt: this }, on: { presstoggle: function (event) { this.menuElt.eventHandler.toggleItem(this, event); }, select: function (event) { this.menuElt.eventHandler.selectItem(this, event); } } }); res.menuElt = this; return res; }; CheckUnsafeTreeLeafOnlyBox.prototype.HolderClass = CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder; ACore/* default.install */.Z.install(CheckUnsafeTreeLeafOnlyBox); /* harmony default export */ const js_CheckUnsafeTreeLeafOnlyBox = (CheckUnsafeTreeLeafOnlyBox); /** * * @constructor */ function CSTBItemListController() { CTBItemListController.apply(this, arguments); console.log(this._requestItem) } (0,OOP/* mixClass */.Jx)(CSTBItemListController, CTBItemListController); CheckUnsafeTreeLeafOnlyBox.prototype.ListControllerClass = CSTBItemListController; CSTBItemListController.prototype._pool = []; CSTBItemListController.prototype._requestItem = function () { var res = this._pool.pop() || (0,ACore._)({ tag: CheckUnsafeTreeItem, // tag: CheckTreeItem, props: { menuElt: this }, on: { presstoggle: function (event) { this.menuElt.eventHandler.toggleItem(this, event); }, select: function (event) { this.menuElt.eventHandler.selectItem(this, event); } } }); res.menuElt = this.elt; console.log(res) return res; }; /*** * @extends TreeRootHolder * @param {CheckUnsafeTreeLeafOnlyBox} boxElt * @param items * @constructor */ function CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyRootHolder(boxElt, items) { TreeRootHolder.apply(this, arguments); } CheckUnsafeTreeLeafOnlyBox.prototype.RootHolderClass = CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyRootHolder; OOP/* default.mixClass */.ZP.mixClass(CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyRootHolder, TreeRootHolder); /*** * @extends TreeNodeHolder * @constructor */ function CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder() { TreeNodeHolder.apply(this, arguments); /*** * @memberOf TreeLeafOnlyNodeHolder# * @type {number} */ this.leafCount = 0; if (this.item.isLeaf) { this.leafCount = 1; } else { this.leafCount = this.child.reduce((ac, c) => ac + c.leafCount, 0); } if (this.child.length > 0) { this.item.noSelect = this.child.every(c => c.item.noSelect);//all child is noSelect=> noSelect } this.canSelect = this.canSelect && this.leafCount > 0; this.canSelectAll = this.canSelect && !this.item.noSelect && this.child.every(c => c.canSelectAll || c.leafCount === 0); if (this.leafCount === 0) this.selected = 'empty'; } OOP/* default.mixClass */.ZP.mixClass(CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder, TreeNodeHolder); CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyRootHolder.prototype.SubHolderClass = CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder; CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder.prototype.setValues = function (values) { if (values[(0,utils.keyStringOf)(this.item.value)]) { this.selectAll(true); } else { this.child.forEach(c => c.setValues(values)); } this.updateFromChild(); }; CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder.prototype.getValues = function (ac) { ac = ac || []; if (this.selected === 'all' && this.item.isLeaf) { ac.push(this.item.value); } else { this.child.forEach(c => c.getValues(ac)); } return ac; }; CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder.prototype.getViewValues = function (ac) { ac = ac || []; if (this.selected === 'all') { ac.push(this.item.value); } else if (this.selected === 'child') { this.child.forEach(c => c.getViewValues(ac)); } return ac; }; /*** * * @param {boolean=} isDownUpdate */ CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder.prototype.selectAll = function (isDownUpdate) { if (this.selected === 'empty') return; return TreeNodeHolder.prototype.selectAll.apply(this, arguments); }; CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder.prototype.unselectAll = function (isDownUpdate) { if (this.selected === 'empty') return; return TreeNodeHolder.prototype.unselectAll.apply(this, arguments); }; CheckUnsafeTreeLeafOnlyBox_TreeLeafOnlyNodeHolder.prototype.updateFromChild = function () { if (this.child.length === 0) return; var count = this.child.reduce((ac, cr) => { ac[cr.selected]++; return ac; }, { all: 0, child: 0, none: 0, empty: 0 }); // if (this.boxElt.debug) // console.log( this.item, count.empty , count.all, this.child.length);//0, 9, 10 if (count.empty === this.child.length) { this.selected = 'empty'; } else if (count.empty + count.all === this.child.length) { this.selected = 'all'; } else if (count.all + count.child > 0) { this.selected = 'child'; } else if (this.selected !== "empty") { this.selected = 'none'; } if (this.itemElt) { this.itemElt.selected = this.selected; } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MultiCheckTreeMenu.js /*** * @extends AElement * @constructor */ function MultiCheckTreeMenu() { this._items = []; this._values = [];//commited value this._viewValues = []; /*** * @type {CheckTreeBox|CheckTreeLeafOnlyBox} */ this.$checkTreeBox = (0,ACore._)({ tag: this.renderProps.leafOnly ? (this.attr('data-version') === '2.0' ? js_CheckUnsafeTreeLeafOnlyBox.tag : js_CheckTreeLeafOnlyBox.tag) : js_CheckTreeBox.tag, // forceMobile: true, on: { change: this.eventHandler.boxChange, preupdateposition: this.eventHandler.preUpdateListPosition, toggleitem: this.eventHandler.boxToggleItem, cancel: this.eventHandler.boxCancel, close: this.eventHandler.boxClose }, props: { initOpened: this.renderProps.initOpened, enableSearch: this.renderProps.enableSearch } }); this.$itemCtn = (0,ACore.$)('.as-multi-select-menu-item-ctn', this); this.$checkTreeBox.followTarget = this; this.$checkTreeBox.sponsorElement = this; this.on('mousedown', this.eventHandler.click); this.dropdownCtrl = new MCTMDropController(this); // this.placeholder = LangSys.getText('txt_select_value') || '-- Select values --'; /** * @name readOnly * @type {boolean} * @memberOf MultiCheckTreeMenu# */ /** * @name disabled * @type {boolean} * @memberOf MultiCheckTreeMenu# */ /** * parent will be selected if all off leaf selected, sub tree can not select if had no leaf * @name leafOnly * @type {boolean} * @memberOf MultiCheckTreeMenu# */ /** * parent will be selected if all off leaf selected, sub tree can not select if had no leaf * @name initOpened * @type {number} * @memberOf MultiCheckTreeMenu# */ /*** * todo: TREE has noSelect */ } MultiCheckTreeMenu.tag = 'MultiCheckTreeMenu'.toLowerCase(); MultiCheckTreeMenu.render = function (data, domDesc) { var leafOnly = domDesc.props && domDesc.props.leafOnly; var props = domDesc.props || {}; /** * @name renderProps * @memberof MultiCheckTreeMenu# */ var res = (0,ACore._)({ class: ['as-multi-select-menu', 'as-multi-check-tree-menu'], extendEvent: ['change'], attr: { tabindex: '1' }, child: [ { class: ['as-multi-select-menu-item-ctn', 'as-bscroller'], attr: { "data-ml-key": 'txt_select_value' }, }, { tag: 'button', class: 'as-multi-select-menu-toggle-btn', child: 'dropdown-ico' }, 'attachhook' ], props: { renderProps: props } }); if (props.version === 2) { res.attr('data-version', '2'); } if (leafOnly) res.addClass('as-leaf-only'); if (BrowserDetector/* default.isMobile */.Z.isMobile) res.addClass('am-multi-select-menu'); return res; }; MultiCheckTreeMenu.prototype.tokenPool = []; MultiCheckTreeMenu.prototype.styleHandlers = {}; MultiCheckTreeMenu.prototype.styleHandlers.maxWidth = function (value) { var parsedValue = (0,attribute.parseMeasureValue)(value); if (parsedValue.unit === 'px') { this.addClass('as-has-max-width'); this.addStyle('--max-width', value); } else { this.removeClass('as-has-max-width'); } }; MultiCheckTreeMenu.prototype.styleHandlers['max-width'] = MultiCheckTreeMenu.prototype.styleHandlers.maxWidth; MultiCheckTreeMenu.prototype.styleHandlers.width = function (value) { var parsedValue = (0,attribute.parseMeasureValue)(value); if (parsedValue.unit === 'px') { this.addClass('as-has-max-width'); this.addStyle('--max-width', value); this.style.width = value; } else { this.removeClass('as-has-max-width'); } }; MultiCheckTreeMenu.prototype.styleHandlers.overflow = function (value) { if (value === 'hidden') { this.style.overflow = 'hidden'; } else { this.style.overflow = ''; } }; MultiCheckTreeMenu.prototype.addStyle = function (arg0, arg1) { if ((typeof arg0 === "string") && (this.styleHandlers[arg0])) { this.styleHandlers[arg0].apply(this, Array.prototype.slice.call(arguments, 1)); return this; } else { return AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } }; MultiCheckTreeMenu.prototype.removeStyle = function (arg0) { if ((typeof arg0 === "string") && (this.styleHandlers[arg0])) { this.styleHandlers[arg0].call(this, ''); return this; } else { return AElement/* default.prototype.removeStyle.apply */.Z.prototype.removeStyle.apply(this, arguments); } }; MultiCheckTreeMenu.prototype._requestToken = function () { var token = this.tokenPool.pop(); if (!token) { token = (0,ACore._)({ tag: js_SelectBoxItem.tag, props: { menu: this }, on: { close: function (event) { setTimeout(function () { if (this.menu) this.menu.eventHandler.pressCloseToken(this, event); }.bind(this), 1) } } }); } return token; }; MultiCheckTreeMenu.prototype._releaseToken = function (token) { token.menu = null; this.tokenPool.push(token); }; MultiCheckTreeMenu.prototype._filToken = function (n) { while (this.$itemCtn.childNodes.length > n) { this.$itemCtn.removeChild(this.$itemCtn.lastChild); } while (this.$itemCtn.childNodes.length < n) { this.$itemCtn.addChild(this._requestToken()); } }; MultiCheckTreeMenu.prototype._assignTokens = function (items) { for (var i = 0; i < items.length; ++i) { this.$itemCtn.childNodes[i].data = items[i]; } }; MultiCheckTreeMenu.prototype.findItemsByValues = function (values) { return values.map(function (value) { var holders = this.$checkTreeBox.findItemHoldersByValue(value); if (holders.length > 0) return holders[0].item; return null; }.bind(this)).filter(function (it) { return !!it; }); }; MultiCheckTreeMenu.prototype.findItemByValue = function (value) { return this.$checkTreeBox.findItemByValue(value); }; MultiCheckTreeMenu.prototype.viewValues = function (values) { values = values.slice(); var items = this.findItemsByValues(values); this._filToken(items.length); this._assignTokens(items); this._viewValues = values; if (this.isFocus) { var bound = this.getBoundingClientRect(); this.$checkTreeBox.addStyle('min-width', bound.width + 'px'); ResizeSystem/* default.update */.Z.update(); } setTimeout(this._updateOverflow.bind(this), 100) }; MultiCheckTreeMenu.prototype._updateOverflow = function () { var bound; if (this.getComputedStyleValue('overflow') === 'hidden') { bound = this.getBoundingClientRect(); if (bound.width === 0) return; this.$itemCtn.removeClass('as-has-more'); var hasMore = false; var elt; for (var i = 0; i < this.$itemCtn.childNodes.length; ++i) { elt = this.$itemCtn.childNodes[i]; if (!hasMore) { elt.removeStyle('display'); var cBound = elt.getBoundingClientRect(); if (cBound.bottom > bound.bottom) { hasMore = true; } } if (hasMore) { elt.addStyle('display', 'none'); } } if (hasMore) this.$itemCtn.addClass('as-has-more'); } }; MultiCheckTreeMenu.prototype.commitView = function () { var values = this._values; var newValues = this.$checkTreeBox.values.slice(); if (!(0,DataStructure_Array.arrayCompare)(values, newValues)) { this._values = this.$checkTreeBox.values.slice(); this.emit('change', { type: 'change', target: this }, this); } }; MultiCheckTreeMenu.prototype.cancelView = function () { this.$checkTreeBox.values = this._values.slice(); this.viewValues(this.$checkTreeBox.viewValues); }; MultiCheckTreeMenu.prototype.init = function (props) { props = props || {}; var cProps = Object.assign({}, props); if ('initOpened' in props) { this.initOpened = props.initOpened; delete cProps.initOpened; } if ('leafOnly' in props) { this.leafOnly = props.leafOnly; delete cProps.leafOnly; } if ('items' in props) { this.items = props.items; delete cProps.items; } if ('values' in props) { this.values = props.values; delete cProps.values; } Object.assign(this, cProps); } MultiCheckTreeMenu.property = {}; MultiCheckTreeMenu.property.initOpened = { set: function (value) { if (value === true) value = 100; if ((0,utils.isNaturalNumber)(value)) { this._initOpened = value; } else { this._initOpened = 0; } this.$checkTreeBox.initOpened = this._initOpened; }, get: function () { return this._initOpened; } } MultiCheckTreeMenu.property.isFocus = { /*** * @this MultiCheckTreeMenu * @param value */ set: function (value) { this.dropdownCtrl.isFocus = value; }, get: function () { return this.dropdownCtrl.isFocus; } }; MultiCheckTreeMenu.property.items = { set: function (items) { this._items = (0,utils.copySelectionItemArray)(items || [], { removeNoView: true }); this.$checkTreeBox.items = this._items; this.addStyle('--list-min-width', Math.max(145 + 20, this.$checkTreeBox.estimateSize.width) + 'px'); this.viewValues(this.$checkTreeBox.viewValues); this._values = this.$checkTreeBox.values.slice(); }, get: function () { return this.$checkTreeBox.items ||[]; } }; MultiCheckTreeMenu.property.values = { /*** * @this MultiCheckTreeMenu * @param values */ set: function (values) { if (!(values instanceof Array)) values = []; values = (0,DataStructure_Array.arrayUnique)(values); this.$checkTreeBox.values = values; this.viewValues(this.$checkTreeBox.viewValues); this._values = this.$checkTreeBox.values.slice(); }, /*** * @this MultiCheckTreeMenu */ get: function () { if (this.isFocus) return this._values.slice(); return this.$checkTreeBox.values.slice(); } }; MultiCheckTreeMenu.property.checkedValues = { get: function () { return this.$checkTreeBox.viewValues.slice(); } }; MultiCheckTreeMenu.property.leafOnly = { set: function (value) { if (!!value === this.hasClass('as-leaf-only')) return; throw Error("Can not change leafOnly value!"); }, get: function () { return this.hasClass('as-leaf-only'); } }; MultiCheckTreeMenu.property.placeholder = { set: function (value) { if (value) { this.$itemCtn.attr('data-placeholder', value + ''); } else { this.$itemCtn.attr('data-placeholder', null); } }, get: function () { return this.$itemCtn.attr('data-placeholder'); } }; MultiCheckTreeMenu.property.disabled = js_MultiSelectMenu.property.disabled; MultiCheckTreeMenu.property.readOnly = js_MultiSelectMenu.property.readOnly; MultiCheckTreeMenu.eventHandler = {}; /*** * @this MultiCheckTreeMenu * @param event */ MultiCheckTreeMenu.eventHandler.clickOut = function (event) { if ((event.target.hasClass && event.target.hasClass('am-modal')) || event.target === this || event.target === this.$itemCtn || (!(0,EventEmitter/* hitElement */.EY)(this, event) && !(0,EventEmitter/* hitElement */.EY)(this.$checkTreeBox, event))) { this.isFocus = false; this.commitView(); } }; /*** * @this MultiCheckTreeMenu * @param event */ MultiCheckTreeMenu.eventHandler.boxClose = function (event) { this.commitView(); this.isFocus = false; }; /*** * @this MultiCheckTreeMenu * @param event */ MultiCheckTreeMenu.eventHandler.click = function (event) { if (!this.readOnly && (event.target === this || event.target === this.$itemCtn)) { this.isFocus = true; } }; /*** * @this MultiCheckTreeMenu * @param event */ MultiCheckTreeMenu.eventHandler.boxChange = function (event) { this.viewValues(this.$checkTreeBox.viewValues); ResizeSystem/* default.update */.Z.update(); }; MultiCheckTreeMenu.eventHandler.boxCancel = function (event) { this.cancelView(); this.isFocus = false; }; /*** * @this MultiCheckTreeMenu * @param {SelectBoxItem} tokenElt * @param event */ MultiCheckTreeMenu.eventHandler.pressCloseToken = function (tokenElt, event) { var value = tokenElt.value; var holders = this.$checkTreeBox.findItemHoldersByValue(value); holders.forEach(function (holder) { holder.unselectAll(); }); this.$checkTreeBox.updateSelectedInViewIfNeed(); var newValues = this.$checkTreeBox.viewValues.slice(); this.viewValues(newValues); console.log(this._values, newValues) if (!(0,DataStructure_Array.arrayCompare)(this._values, newValues)) { this._values = newValues; this.emit('change', { type: 'change', target: this }, this); } }; MultiCheckTreeMenu.eventHandler.preUpdateListPosition = function () { var bound = this.getBoundingClientRect(); var screenSize = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom - 50; this.$checkTreeBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { this.isFocus = false; } }; MultiCheckTreeMenu.eventHandler.boxToggleItem = function (event) { var bound = this.getBoundingClientRect(); var screenSize = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$checkTreeBox.addStyle('--max-height', (this.$checkTreeBox._lastAnchor < 4 ? availableBot : availableTop) + 'px'); this.$checkTreeBox.updatePosition(); }; MultiCheckTreeMenu.property.enableSearch = { set: function (value) { this.$checkTreeBox.enableSearch = !!value; }, get: function () { return this.$checkTreeBox.enableSearch; } }; ACore/* default.install */.Z.install(MultiCheckTreeMenu); /* harmony default export */ const js_MultiCheckTreeMenu = (MultiCheckTreeMenu); /** * @constructor * @param {MultiCheckTreeMenu} elt * @constructor */ function MCTMDropController(elt) { this.elt = elt; } MCTMDropController.prototype.open = function () { if (this.elt.readOnly || this.elt.disabled) return; if (this.elt.hasClass('as-focus')) return; this.elt.addClass('as-focus'); this.elt.off('mousedown', this.elt.eventHandler.click); var bound = this.elt.getBoundingClientRect(); this.elt.$checkTreeBox.addStyle('min-width', bound.width + 'px'); // Set dropdown width this.elt.$checkTreeBox.addTo(document.body); // Attach dropdown to the body this.elt.$checkTreeBox.updatePosition(); // Update dropdown position if (this.elt._focusTimeout > 0) { clearTimeout(this.elt._focusTimeout); // Clear any existing timeout } // Set a timeout to handle focus and add event listener for clicking outside this.elt._focusTimeout = setTimeout(() => { document.addEventListener('mousedown', this.elt.eventHandler.clickOut); this.elt._focusTimeout = -1; this.elt.$checkTreeBox.focus(); // Focus on the dropdown }, 5); }; MCTMDropController.prototype.close = function () { if (!this.elt.hasClass('as-focus')) return; this.elt.removeClass('as-focus'); this.elt.$checkTreeBox.selfRemove(); // Detach dropdown from the body this.elt.$checkTreeBox.resetSearchState(); // Reset search state document.removeEventListener('mousedown', this.elt.eventHandler.clickOut); // Remove click-out listener // Re-enable the click event after a delay const waitMouseUp = () => { document.removeEventListener('mouseup', waitMouseUp); setTimeout(() => { this.elt.on('mousedown', this.elt.eventHandler.click); }, 5); }; setTimeout(waitMouseUp, 100); }; MCTMDropController.prototype.ev_clickOut = function (event) { }; Object.defineProperty(MCTMDropController.prototype, "isFocus", { set: function (value) { if (value) this.open(); else this.close(); }, get: function () { return this.elt.hasClass('as-focus'); } }); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/fileinputbox.css var fileinputbox = __webpack_require__(5252); // EXTERNAL MODULE: ./node_modules/absol-acomp/assets/exticons/catalog.json var catalog = __webpack_require__(2398); // EXTERNAL MODULE: ./node_modules/absol/src/Network/FileSaver.js var FileSaver = __webpack_require__(5447); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/FileInputBox.js /*** * @extends AElement * @constructor */ function FileInputBox() { this.$fileSize = (0,ACore.$)('.as-file-input-box-file-size', this); this.$fileName = (0,ACore.$)('.as-file-input-box-file-name', this); this.$bg = (0,ACore.$)('.as-file-input-box-background', this); this.$input = (0,ACore.$)('input', this) .on('change', this.eventHandler.input_fileChange); this.$trigger = (0,ACore._)({ elt: (0,ACore.$)('.as-file-input-box-trigger', this), tag: DropZone/* default.tag */.Z.tag, on: { fileenter: this.eventHandler.input_fileEnter, fileleave: this.eventHandler.input_fileLeave, filedrop: this.eventHandler.input_fileDrop, } }); this.$downloadBtn = (0,ACore.$)('.as-file-input-box-download-btn', this) .on('click', this.download.bind(this)); this.$removeBtn = (0,ACore.$)('.as-file-input-box-remove-btn', this) .on('click', this.clearValue.bind(this, true)); this._value = null; this._fileSize = null; this._fileName = null; this._fileType = null; this._valueInfo = null; this._thumbnail = null; /*** * default true * @name allowUpload * @type {boolean} * @memberOf FileInputBox# */ this.allowUpload = true; /*** * @name value * @type {null|any} * @memberOf FileInputBox# */ /*** * @name thumbnail * @type {null|any} * @memberOf FileInputBox# */ /*** * @name fileSize * @type {null|number} * @memberOf FileInputBox# */ /*** * @name fileType * @type {null|string} * @memberOf FileInputBox# */ /*** * @name fileName * @type {null|string} * @memberOf FileInputBox# */ /*** * default: false * @name downloadable * @type {boolean} * @memberOf FileInputBox# */ } FileInputBox.tag = 'FileInputBox'.toLowerCase(); FileInputBox.render = function () { return (0,ACore._)({ extendEvent: ['change'], class: 'as-file-input-box', child: [ '.as-file-input-box-background', { tag: 'label', class: 'as-file-input-box-trigger', child: { tag: 'input', attr: { type: 'file', accept: '*', title: null } } }, { class: 'as-file-input-box-upload-overlay', child: 'span.mdi.mdi-upload' }, { class: 'as-file-input-box-info', child: [ { tag: 'span', class: 'as-file-input-box-file-name', child: { text: '' } }, 'br', { tag: 'span', class: 'as-file-input-box-file-size', child: { text: '' } }, ] }, { class: 'as-file-input-box-action-left', child: { tag: 'button', class: 'as-file-input-box-remove-btn', child: 'span.mdi.mdi-close' } }, { class: 'as-file-input-box-action-right', child: { tag: 'button', class: 'as-file-input-box-download-btn', child: 'span.mdi.mdi-download' } }, { class: 'as-file-input-box-checked', child: 'span.mdi.mdi-check-bold' }, ] }); }; FileInputBox.prototype.download = function () { var value = this.value; if (value) { if (value && value.name && value.url) { (0,FileSaver.saveAs)(value.url, value.name); } else { (0,FileSaver.saveAs)(value, this.fileName); } } }; FileInputBox.prototype.clearValue = function (userAction, event) { if (this.value) { this.value = null; if (userAction) { this.emit('change', { type: 'change', originalEvent: event, action: 'clear', target: this }, this); } } }; FileInputBox.prototype._updateThumbnail = function () { var previewUrl; var thumbnail = this.thumbnail; var fileType = this.fileType; if (thumbnail) { if (typeof thumbnail === "string") { previewUrl = thumbnail; } else if (thumbnail instanceof Blob || thumbnail instanceof File) { thumbnail.url = thumbnail.url || URL.createObjectURL(thumbnail); previewUrl = thumbnail.url; } } if (!previewUrl) { if (catalog.indexOf(fileType) >= 0) { previewUrl = MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + fileType + '.svg'; } else { previewUrl = MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + 'blank' + '.svg'; } } if (previewUrl) { this.$bg.addStyle('backgroundImage', 'url("' + encodeURI(previewUrl) + '")'); } else { this.$bg.removeStyle('backgroundImage') } }; FileInputBox.prototype._updateFileName = function () { var fileName = this.fileName; if (fileName) { this.$fileName.firstChild.data = fileName; this.addClass('as-has-file-name'); } else { this.$fileName.firstChild.data = ''; this.removeClass('as-has-file-name'); } }; FileInputBox.prototype._updateFileSize = function () { var fileSize = this.fileName; if (fileSize === null) { this.$fileSize.firstChild.data = ''; this.removeClass('as-has-file-size'); } else { this.$fileSize.firstChild.data = (0,utils.fileSize2Text)(fileSize); this.addClass('as-has-file-size'); } }; FileInputBox.property = {}; FileInputBox.property.value = { set: function (value) { value = value || null; this._value = value; this._valueInfo = (0,utils.fileInfoOf)(value); this._updateThumbnail(); this._updateFileName(); this._updateFileSize(); if (value) { this.addClass('as-has-value'); } else { this.removeClass('as-has-value'); } }, get: function () { return this._value; } }; FileInputBox.property.fileType = { set: function (value) { this._fileType = value; this._updateThumbnail(); }, /*** * @this FileInputBox * @return {*} */ get: function () { return this._fileType || (this._valueInfo && this._valueInfo.type) || null; } }; FileInputBox.property.fileName = { set: function (value) { value = typeof value === 'string' ? value : null; this._fileName = value; this._updateFileName(); }, get: function () { return this._fileName || (this._valueInfo && this._valueInfo.name) || null; } }; FileInputBox.property.fileSize = { set: function (value) { if ((0,utils.isRealNumber)(value)) value = Math.max(0, value); else value = null; this._fileSize = value; this._updateFileSize(); }, get: function () { if (typeof this._fileSize === "number") return this._fileSize; if (this._valueInfo && typeof this._valueInfo.size === "number") return this._valueInfo.size; return null; } }; FileInputBox.property.thumbnail = { set: function (value) { this._thumbnail = value || null; this._updateThumbnail(); }, get: function () { return this._thumbnail; } }; FileInputBox.property.allowUpload = { set: function (value) { if (value) { this.addClass('as-allow-upload'); } else { this.removeClass('as-allow-upload'); } }, get: function () { return this.hasClass('as-allow-upload'); } }; FileInputBox.property.downloadable = { set: function (value) { if (value) { this.addClass('as-downloadable'); } else { this.removeClass('as-downloadable'); } }, get: function () { return this.hasClass('as-downloadable'); } }; FileInputBox.property.removable = { set: function (value) { if (value) { this.addClass('as-removable'); } else { this.removeClass('as-removable'); } }, get: function () { return this.hasClass('as-removable'); } }; FileInputBox.property.accept = { set: function (value) { if (!value) value = null; this.$input.attr('accept', value + ''); }, get: function () { return this.$input.attr('accept') || null; } }; FileInputBox.property.checked = { set: function (value) { if (value) { this.addClass('as-checked'); } else { this.removeClass('as-checked'); } }, get: function () { return this.hasClass('as-checked'); } }; FileInputBox.eventHandler = {}; FileInputBox.eventHandler.input_fileChange = function (event) { var files = Array.prototype.slice.call(this.$input.files); if (files.length > 0) { this.value = files[0]; this.emit('change', { type: 'change', originalEvent: event, file: files[0], action: 'file_dialog', target: this }, this); } }; FileInputBox.eventHandler.input_fileEnter = function (event) { }; FileInputBox.eventHandler.input_fileLeave = function (event) { }; FileInputBox.eventHandler.input_fileDrop = function (event) { var files = Array.prototype.slice.call(event.files); var accept = this.accept; var file; if (files.length > 0) { file = files[0]; if (!(0,utils.fileAccept)(accept, file.type) && !(0,utils.fileAccept)(accept, file.name)) file = null; } if (file) { this.value = file; this.emit('change', { type: 'change', originalEvent: event, file: file, action: 'drop', target: this }, this); } }; ACore/* default.install */.Z.install(FileInputBox); /* harmony default export */ const js_FileInputBox = (FileInputBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/countdowntext.css var countdowntext = __webpack_require__(9803); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CountdownText.js var CountdownText_ = ACore/* default._ */.Z._; var CountdownText_$ = ACore/* default.$ */.Z.$; var tokenCache = {}; function remainSecondToText(remainSecond, format) { var tokens = tokenCache[format]; if (!tokens) { tokens = (format.match(new RegExp(datetime.DATE_TIME_TOKEN_RGX.source, 'g')) || []).reduce(function (ac, cr) { ac[cr] = true; return ac; }, {}); tokenCache[format] = tokens; } var newText; var sec, min, hour; sec = Math[(tokens['ms'] || tokens['mss']) ? 'floor' : 'ceil'](remainSecond); min = Math.floor(remainSecond / 60); hour = Math.floor(remainSecond / 60 / 60); newText = format.replace(new RegExp(datetime.DATE_TIME_TOKEN_RGX.source, 'g'), function (all) { switch (all) { case 'D': return Math.floor(remainSecond / 60 / 60 / 24) + ''; case 'HH': case 'H': case 'hh': if (tokens['D']) { return (0,utils.zeroPadding)(hour % 24, all.length); } else { return (0,utils.zeroPadding)(hour, all.length); } case 'mm': case 'M': case 'MM': if (tokens['HH'] || tokens['hh']) { return (0,utils.zeroPadding)(min % 60, all.length); } else { return (0,utils.zeroPadding)(min, all.length); } case 'ss': case 'S': case 'SS': if (tokens['m'] || tokens['mm']) { return (0,utils.zeroPadding)(sec % 60, all.length); } else { return (0,utils.zeroPadding)(sec, all.length); } case 'cs': return (0,utils.zeroPadding)(Math.ceil(remainSecond * 100) % 100, 2); case 'ms': return (0,utils.zeroPadding)(Math.ceil(remainSecond * 1000) % 1000, 3); default: return all; } }); return newText; } /*** * @extends AElement * @constructor */ function CountdownText() { this.addClass('as-countdown-text'); this.defineEvent('update'); this.defineEvent('finish'); this.text = ''; this._format = 'HH:mm'; this.format = 'HH:mm'; this.fps = 5; this._finishTime = null; this.finishTime = null; this['_tick'] = this._tick.bind(this); setTimeout(this.start.bind(this), 0);//auto start /*** * @type {number} * @name remainSecond * @memberOf CountdownText# */ /*** * @type {Date} * @name finishTime * @memberOf CountdownText# */ /*** * @type {string} * @name format * @memberOf CountdownText# */ } CountdownText.tag = 'CountdownText'.toLowerCase(); CountdownText.render = function () { return CountdownText_('span'); }; CountdownText.prototype.buildinFormat = { 'standard': function (remainSecond) { if (remainSecond >= 24 * 3600) { return remainSecondToText(remainSecond, 'D ngày HH:mm:ss'); } else { return remainSecondToText(remainSecond, 'HH:mm:ss'); } } }; CountdownText.prototype._tick = function () { var remainSecond = this.remainSecond; var prevText = this.text; var newText; var format = this._format; if (this.buildinFormat[format]) format = this.buildinFormat[format]; if (typeof format === "function") { newText = format.call(this, remainSecond); } else if (typeof format === "string") { newText = remainSecondToText(remainSecond, format); } if (prevText !== newText) { this.text = newText; this.innerHTML = newText; this.emit('update', { target: this, type: 'update' }, this); } if (remainSecond <= 0) { this.stop(); this.emit('finish', { target: this, type: 'update' }, this); } }; CountdownText.prototype.start = function () { this.resume(); }; CountdownText.prototype.resume = function () { if (this._intvId > 0) return; this._intvId = setInterval(this._tick, 1000 / this.fps); }; CountdownText.prototype.pause = function () { if (this._intvId > 0) { clearInterval(this._intvId); this._intvId = -1; } }; CountdownText.prototype.stop = function () { this.pause(); }; CountdownText.property = {}; CountdownText.property.format = { set: function (value) { if (typeof value === "string" || typeof value === 'function') { this._format = value || 'HH:mm'; } else { this._format = 'HH:mm'; } }, get: function () { return this._format; } }; CountdownText.property.remainSecond = { set: function (value) { if (!(value >= 0)) { value = 0; } this.finishTime = new Date(new Date().getTime() + value) }, get: function () { if (this.finishTime !== null) { return Math.max(0, (this.finishTime.getTime() - new Date().getTime()) / 1000); } else return null; } }; CountdownText.property.finishTime = { set: function (value) { if (typeof value === "number" || typeof value === 'string') { value = new Date(value); } if (!value || !value.getTime) value = null; if (value && value.getTime && isNaN(value.getTime())) value = null; this._finishTime = value; }, get: function () { return this._finishTime; } }; CountdownText.property.fps = { set: function (value) { this._fps = (0,utils.isRealNumber)(value) ? value : 200; if (this._intvId > 0) { clearInterval(this._intvId); this._intvId = setInterval(this._tick, 1000 / this._fps); } }, get: function () { return this._fps; } }; ACore/* default.install */.Z.install(CountdownText); /* harmony default export */ const js_CountdownText = (CountdownText); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/YesNoQuestionDialog.js var YesNoQuestionDialog = __webpack_require__(5466); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/LoadingCubeModal.js /*** * @extends Modal * @constructor */ function LoadingCubeModal() { } LoadingCubeModal.tag = 'LoadingCubeModal'.toLowerCase(); LoadingCubeModal.render = function () { return (0,ACore._)({ tag:'modal', class: 'as-loading-cube-modal', child: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: rgb(241, 242, 243); display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">\n' + '<g transform="translate(26.666666666666668,26.666666666666668)">\n' + ' <rect x="-20" y="-20" width="40" height="40" fill="#13a9df">\n' + ' <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="-0.3s"></animateTransform>\n' + ' </rect>\n' + '</g>\n' + '<g transform="translate(73.33333333333333,26.666666666666668)">\n' + ' <rect x="-20" y="-20" width="40" height="40" fill="#4be44c">\n' + ' <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="-0.2s"></animateTransform>\n' + ' </rect>\n' + '</g>\n' + '<g transform="translate(26.666666666666668,73.33333333333333)">\n' + ' <rect x="-20" y="-20" width="40" height="40" fill="#e2d58b">\n' + ' <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="0s"></animateTransform>\n' + ' </rect>\n' + '</g>\n' + '<g transform="translate(73.33333333333333,73.33333333333333)">\n' + ' <rect x="-20" y="-20" width="40" height="40" fill="#e1e7e7">\n' + ' <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="-0.1s"></animateTransform>\n' + ' </rect>\n' + '</g>\n' + '</svg>' }); }; LoadingCubeModal.share = { token: null, $elt: null }; /*** * * @return {String} */ LoadingCubeModal.show = function (){ if (!LoadingCubeModal.share.$elt) LoadingCubeModal.share.$elt = (0,ACore._)(LoadingCubeModal.tag); if (!LoadingCubeModal.share.$elt.isDescendantOf(document.body)){ document.body.appendChild(LoadingCubeModal.share.$elt); } LoadingCubeModal.share.token = (0,stringGenerate.randomIdent)(9); return LoadingCubeModal.share.token; }; /*** * * @param {String} token * @return {Boolean} */ LoadingCubeModal.close = function (token){ if (LoadingCubeModal.share.$elt &&LoadingCubeModal.share.$elt.isDescendantOf(document.body) && (!token || token ===LoadingCubeModal.share.token)){ this.share.$elt.remove(); LoadingCubeModal.share.token = null; return true; } return false; }; ACore/* default.install */.Z.install(LoadingCubeModal); /* harmony default export */ const js_LoadingCubeModal = (LoadingCubeModal); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selecttreeleafmenu.css var selecttreeleafmenu = __webpack_require__(9953); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTreeLeafBox.js function isBranchStatus(status) { return status === 'open' || status === 'close'; } function invertStatus(status) { return { open: 'close', close: 'open' }[status] || 'none'; } /*** * @extends Follower * @constructor */ function SelectTreeLeafBox() { this._initControl(); this._searchCache = {}; this._value = null; this._items = []; this.strictValue = true; this.$items = []; this.$itemByValue = {}; this.$selectedItem = null; this.$dislayItems = this.$items; this.$dislayItemByValue = this.$itemByValue; this.$content = (0,ACore.$)('.as-select-tree-leaf-box-content', this); this._savedStatus = {}; this.estimateSize = { width: 0, height: 0 }; if (this.cancelWaiting) this.cancelWaiting(); /** * @name items * @memberof MSelectTreeLeafBox# * @type {Array} */ /** * @name value * @memberof MSelectTreeLeafBox# */ /** * @name strictMode * @type {boolean} * @memberof MSelectTreeLeafBox# */ /** * @name selectedItem * @memberof MSelectTreeLeafBox# */ } SelectTreeLeafBox.tag = 'SelectTreeLeafBox'.toLowerCase(); SelectTreeLeafBox.render = function () { return (0,ACore._)({ tag: Follower/* default */.Z, attr: { tabindex: 0 }, class: ['as-select-tree-leaf-box', 'as-select-list-box'], extendEvent: ['pressitem'], child: [{ class: 'as-select-list-box-search-ctn', child: 'searchtextinput' }, { class: ['as-bscroller', 'as-select-list-box-scroller', 'as-select-tree-leaf-box-content'], child: [] }, 'attachhook.as-dom-signal'], props: { anchor: [1, 6, 2, 5] } }); }; SelectTreeLeafBox.prototype._initControl = function () { this.$searchInput = (0,ACore.$)('searchtextinput', this) .on('stoptyping', this.eventHandler.searchModify); }; SelectTreeLeafBox.prototype.resetSearchState = function () { var value = this.$searchInput.value; if (value.length > 0) { this.$searchInput.value = ''; if (value.trim().length) { this.$content.clearChild(); this.$content.addChild(this.$items); this.$dislayItems = this.$items; this.$dislayItemByValue = this.$itemByValue; this._updateSelectedItem(); } } }; SelectTreeLeafBox.prototype._findFirstLeaf = function () { var found = false; function visit(item) { if (item.isLeaf) { found = item; return true; } if (item.items && item.items.length > 0) { item.items.some(visit); } return !!found; } this._items.some(visit); return found; }; SelectTreeLeafBox.prototype._makeTree = function (item, dict, savedStatus) { var self = this; var status = 'none'; var isLeaf = item.isLeaf; if (item.items && item.items.length > 0) { status = 'close'; } if (isBranchStatus(status) && isBranchStatus(savedStatus[(0,utils.keyStringOf)(item.value)])) { status = savedStatus[(0,utils.keyStringOf)(item.value)]; } var nodeElt = (0,ACore._)({ tag: ExpTree/* default.tag */.ZP.tag, class: 'as-select-tree-leaf-item', props: { name: item.text, desc: item.desc, icon: item.icon, status: status, itemData: item }, on: { 'statuschange': this.updatePosition.bind(this) } }); if (item.noSelect) { nodeElt.addClass('as-no-select'); } nodeElt.getNode().on({ press: function (event) { if (isBranchStatus(nodeElt.status)) { nodeElt.status = invertStatus(nodeElt.status) savedStatus[(0,utils.keyStringOf)(item.value)] = nodeElt.status; self.updatePosition(); } else if (isLeaf && !item.noSelect) { self.emit('pressitem', { item: item, target: self, itemElt: nodeElt, originalEvent: event }, self); } } }); if (dict) { if (dict[(0,utils.keyStringOf)(item.value)] && !this.warned) { this.warned = true; console.warn(this, 'has duplicated value, element will not work correctly!', item); } dict[(0,utils.keyStringOf)(item.value)] = nodeElt; } if (item.isLeaf) { nodeElt.addClass('as-is-leaf'); } if (item.items && item.items.length > 0) { item.items.forEach(function (item1) { nodeElt.addChild(self._makeTree(item1, dict, savedStatus)); }); } return nodeElt; }; SelectTreeLeafBox.prototype._estimateItemWidth = function (item, level) { var width = 12;//padding width += 12 * level; width += 14.7 + 5;//toggle icon if (item.icon) width += 21;//icon width += 7 + (0,utils.estimateWidth14)(item.text) + 5 + 7;//margin-text if (item.desc) width += 6 + (0,utils.estimateWidth14)(item.desc) * 0.85; return width; }; SelectTreeLeafBox.prototype.viewToSelected = function () { var selectedNode = this.$selectedItem; if (!selectedNode) return; selectedNode.scrollIntoView(); var parent = selectedNode.getParent(); while (parent && parent.getParent) { if (parent.status === 'close') { parent.getNode().emit('press'); } parent = parent.getParent(); } }; SelectTreeLeafBox.prototype.viewToValue = function (value) { var viewNode = this.$itemByValue[(0,utils.keyStringOf)(value)]; if (!viewNode) return; viewNode.scrollIntoView(); while (viewNode && viewNode.getParent) { if (viewNode.status === 'close') { viewNode.getNode().emit('press'); } viewNode = viewNode.getParent(); } }; SelectTreeLeafBox.prototype._calcEstimateSize = function (items) { var self = this; var width = 0; var height = 0; function visit(item, level) { var itemWidth = self._estimateItemWidth(item, level); width = Math.max(width, itemWidth); height += 28; if (item.items && item.items.length) { item.items.forEach(function (item) { visit(item, level + 1); }); } } items.forEach(function (item) { visit(item, 0); }); return { width: width, height: height }; }; SelectTreeLeafBox.prototype._updateSelectedItem = function () { if (this.$selectedItem) { this.$selectedItem.removeClass('as-selected'); this.$selectedItem = null; } this.$selectedItem = this.$dislayItemByValue[(0,utils.keyStringOf)(this.value)]; if (this.$selectedItem) { this.$selectedItem.addClass('as-selected'); } }; SelectTreeLeafBox.prototype.findItemByValue = function (value) { var holder = this.$itemByValue[(0,utils.keyStringOf)(value)]; if (holder) return holder.itemData; return null; }; SelectTreeLeafBox.prototype.focus = js_SelectListBox.prototype.focus; SelectTreeLeafBox.property = {}; SelectTreeLeafBox.eventHandler = {}; SelectTreeLeafBox.property.items = { /*** * @this SelectTreeLeafBox * @param items */ set: function (items) { var self = this; this._savedStatus = {}; this._searchCache = {}; items = items || []; this._items = items; (0,search/* prepareSearchForList */.Lb)(items); this.$content.clearChild(); this.$itemByValue = {}; this.$dislayItemByValue = this.$itemByValue; this.$items = items.map(function (item) { return self._makeTree(item, self.$itemByValue, self._savedStatus); }); this.$dislayItems = this.$items; this.$content.addChild(this.$items); this.estimateSize = this._calcEstimateSize(items); this.addStyle('--select-list-estimate-width', this.estimateSize.width + 'px'); this._updateSelectedItem(); self.updatePosition(); }, get: function () { return this._items; } }; SelectTreeLeafBox.property.value = { set: function (value) { this._value = value; this._updateSelectedItem(); }, get: function () { var firstLeaf; if (!this.strictValue || this.$itemByValue[(0,utils.keyStringOf)(this._value)]) { return this._value; } else { firstLeaf = this._findFirstLeaf(); if (firstLeaf) return firstLeaf.value; else return this._value; } } }; SelectTreeLeafBox.property.selectedItem = { get: function () { var key = (0,utils.keyStringOf)(this._value); var firstLeaf; if (this.$itemByValue[key]) { return this.$itemByValue[key].itemData; } else if (!this.strictValue) { return null; } else { firstLeaf = this._findFirstLeaf(); if (firstLeaf) return firstLeaf; else return null; } } }; SelectTreeLeafBox.property.enableSearch = js_SelectListBox.property.enableSearch; SelectTreeLeafBox.prototype._search = function (query) { var self = this; var queryItem = (0,search/* default */.ZP)({ text: query }); var minScore = Infinity; var maxScore = -Infinity; function makeScoreTree(item) { var holder = { item: item, score: (0,search/* calcItemMatchScore */.lk)(queryItem, item), childrenScore: 0, children: [] }; minScore = Math.min(minScore, holder.score); maxScore = Math.max(maxScore, holder.score); var children; if (item.items && item.items.length > 0) { children = item.items.map(makeScoreTree); holder.children = children; holder.childrenScore = holder.children.reduce(function (ac, cr) { return Math.max(ac, cr.score, cr.childrenScore); }, 0); } return holder; } var treeScores = this._items.map(makeScoreTree); var midScore = (maxScore + minScore) / 2; var savedStatus = {}; function filterTree(scoredTrees, ignore) { return scoredTrees.filter(function (holder) { return ignore || holder.score >= midScore || holder.childrenScore >= midScore; }).map(function makeTree(holder) { var item = Object.assign({}, holder.item); if (!ignore && holder.children && holder.children.length > 0) { if (holder.childrenScore >= midScore) { savedStatus[(0,utils.keyStringOf)(item.value)] = 'open'; item.items = filterTree(holder.children, false); } else { savedStatus[(0,utils.keyStringOf)(item.value)] = 'close'; item.items = filterTree(holder.children, true); } } return item; }); } var resultItems = filterTree(treeScores, false); var dict = {}; var $items = resultItems.map(function (item) { return self._makeTree(item, dict, savedStatus); }); return { $items: $items, items: resultItems, savedStatus: Object.assign({}, savedStatus), originSavedStatus: savedStatus, dict: dict }; } /*** * @this SelectTreeLeafBox */ SelectTreeLeafBox.eventHandler.searchModify = function () { var query = this.$searchInput.value.trim(); if (query.length === 0) { this.$content.clearChild().addChild(this.$items); this.$dislayItemByValue = this.$itemByValue; this.$dislayItems = this.$items; this._updateSelectedItem(); this.updatePosition(); return; } if (!this._searchCache[query]) { this._searchCache[query] = this._search(query); } var searchData = this._searchCache[query]; searchData.savedStatus = Object.assign(searchData.savedStatus, searchData.originSavedStatus); console.log(searchData) for (var val in searchData.dict) { if (isBranchStatus(searchData.dict[val].status)) { if (searchData.savedStatus[val]) { searchData.dict[val].status = searchData.savedStatus[val] } } } this.$content.clearChild() .addChild(searchData.$items); this.$dislayItemByValue = searchData.dict; this.$dislayItems = searchData.$items; this._updateSelectedItem(); this.updatePosition(); }; ACore/* default.install */.Z.install(SelectTreeLeafBox); /* harmony default export */ const js_SelectTreeLeafBox = (SelectTreeLeafBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/selecttreeeleafbox.css var selecttreeeleafbox = __webpack_require__(4946); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreebox/CTIPropHandlers.js var CTIPropHandlers = {}; CTIPropHandlers.data = { /*** * @this MCheckTreeItem|CheckTreeItem * @param data */ set: function (data) { this._data = data; this._updateData(); }, get: function () { return this._data; } }; CTIPropHandlers.text = { get: function () { if (!this._data) return ''; if (this._data.charAt) return this._data; var text = this._data.text; if (text === undefined || text === null) return ''; return this._data.text + ''; } }; CTIPropHandlers.value = { get: function () { if (!this._data) return null; if (this._data.charAt) return this._data; return this._data.value; } }; CTIPropHandlers.desc = { get: function () { if (!this._data) return ''; var desc = this._data.desc; if (desc === undefined || desc === null) return ''; return desc + ''; } }; CTIPropHandlers.level = { set: function (value) { if (!(0,utils.isNaturalNumber)(value)) value = 0; this._level = value; this.addStyle('--level', value + ''); }, get: function () { return this._level; } }; CTIPropHandlers.status = { set: function (value) { value = value === 'open' || value === 'close' ? value : 'none'; this._status = value; this.removeClass('as-status-open') .removeClass('as-status-close'); if (value !== "none") { this.addClass('as-status-' + value); } }, get: function () { return this._status || 'none'; } }; CTIPropHandlers.selected = { set: function (value) { if (value === 'all') { this.$checkbox.checked = true; this.$checkbox.removeClass('as-has-minus'); } else if (value === 'child') { this.$checkbox.checked = false; this.$checkbox.addClass('as-has-minus'); } else { this.$checkbox.checked = false; this.$checkbox.removeClass('as-has-minus'); } }, get: function () { if (this.$checkbox.checked) { return 'all'; } else { if (this.$checkbox.hasClass('as-has-minus')) { return 'child'; } else { return 'none'; } } } }; CTIPropHandlers.hasLeaf = { set: function (value) { if (value) { this.addClass('as-has-leaf'); } else { this.removeClass('as-has-leaf'); } }, get: function () { return this.hasClass('as-has-leaf'); } }; CTIPropHandlers.noSelect = { set: function (value) { if (value) { this.addClass('as-no-select'); } else { this.removeClass('as-no-select'); } this.$checkbox.disabled = !!value; }, get: function () { return this.hasClass('as-no-select'); } }; /* harmony default export */ const checktreebox_CTIPropHandlers = (CTIPropHandlers); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafbox/STLIPropHandlers.js var STLIPropHandlers = {}; STLIPropHandlers.data = { set: function (data) { this._data = data; this._updateData(); }, get: function () { return this._data; } }; STLIPropHandlers.text = { get: function () { var data = this._data; if (data === undefined || data === null) return ''; if (typeof data === 'string') return data; if (data && data.text) return data.text + ''; return data + ''; } }; STLIPropHandlers.value = { get: function () { var data = this._data; if (data === undefined || data === null) return data; if (data && ('value' in data)) return data.value; return data; } }; STLIPropHandlers.level = checktreebox_CTIPropHandlers.level; STLIPropHandlers.status = checktreebox_CTIPropHandlers.status; STLIPropHandlers.selected = { set: function (value) { if (value) { this.addClass('as-selected'); } else { this.removeClass('as-selected'); } }, get: function () { return this.hasClass('as-selected'); } }; /**** * @name text * @type {string} * @memberOf SelectTreeLeafItem# */ /**** * @name value * @type {string|number} * @memberOf SelectTreeLeafItem# */ /**** * @name data * @type {*} * @memberOf SelectTreeLeafItem# */ /**** * @name selected * @type {boolean} * @memberOf SelectTreeLeafItem# */ /* harmony default export */ const selecttreeleafbox_STLIPropHandlers = (STLIPropHandlers); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafbox/SelectTreeLeafItem.js /*** * @extends AElement * @constructor */ function SelectTreeLeafItem() { this.$text = (0,ACore.$)('.am-select-tree-leaf-item-text', this); this.$desc = (0,ACore.$)('.am-select-tree-leaf-item-desc', this); this.$iconCtn = (0,ACore.$)('.am-select-tree-leaf-item-icon-ctn', this); this.addEventListener('click', this.eventHandler.click); } SelectTreeLeafItem.tag = 'SelectTreeLeafItem'.toLowerCase(); SelectTreeLeafItem.render = function () { return (0,ACore._)({ extendEvent: ['click', 'statuschange'], class: ['am-select-tree-leaf-item', 'am-dropdown-box-item'], child: [ { class: 'am-select-tree-leaf-item-toggle-ctn', child: 'toggler-ico' }, { class: 'am-select-tree-leaf-item-icon-ctn' }, { class: 'am-select-tree-leaf-item-text', child: { text: '' } }, { class: 'am-select-tree-leaf-item-desc', child: { text: '' } } ] }); }; SelectTreeLeafItem.prototype._updateData = function () { this.$text.firstChild.data = this.text; this.attr('data-key', (0,utils.keyStringOf)(this.value)); this.$iconCtn.clearChild(); var icon = this.data && this.data.icon; if (icon) { icon = (0,ACore._)(icon); if (icon.parentElement) icon = (0,ACore.$)(icon.cloneNode(true)); this.$iconCtn.addChild(icon); this.addClass('as-has-icon'); } else { this.removeClass('as-has-icon'); } if (this.data && this.data.isLeaf) { this.addClass('as-is-leaf'); } else { this.removeClass('as-is-leaf'); } }; SelectTreeLeafItem.property = selecttreeleafbox_STLIPropHandlers; SelectTreeLeafItem.eventHandler = {}; SelectTreeLeafItem.eventHandler.click = function (event) { if (this._data && this._data.isLeaf) { this.emit('click', { type: 'click', target: this, originalEvent: event }, this); } else { if (this.status !== 'none') { this.status = this.status === 'open' ? 'close' : 'open'; this.emit('statuschange', { type: 'statuschange', target: this, originalEvent: event }, this); } } }; /* harmony default export */ const selecttreeleafbox_SelectTreeLeafItem = (SelectTreeLeafItem); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dropdownbox.css var dropdownbox = __webpack_require__(8618); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreebox/CTBPropHandlers.js var CTBPropHandlers = {}; CTBPropHandlers.items = { /*** * @this MCheckTreeBox * @param items */ set: function (items) { this.itemListCtrl.setItems(items); var values = this.pendingValues || this.values; this.modes.normal.setValues(values); if (this.mode !== this.modes.normal) { this.mode.updateSelectedFromRef(); } }, get: function () { return this.itemListCtrl.getItems(); } }; CTBPropHandlers.values = { /*** * @this CheckTreeBox|MCheckTreeBox * @param values */ set: function (values) { this.pendingValues = values || []; this.modes.normal.setValues(values); if (this.mode !== this.modes.normal) { this.mode.updateSelectedFromRef(); } }, get: function () { return this.modes.normal.getValues(); } }; CTBPropHandlers.viewValues = { get: function (){ return this.modes.normal.getViewValues(); } }; CTBPropHandlers.enableSearch = { /*** * @this CheckTreeBox|MCheckTreeBox * @param value */ set: function (value) { if (value) { this.$box.addClass('as-enable-search'); } else { this.$box.removeClass('as-enable-search'); } }, get: function () { return this.$box.hasClass('as-enable-search'); } }; CTBPropHandlers.leafOnly = { /*** * @this CheckTreeBox|MCheckTreeBox * @param value */ set: function (value) { if (value) { this.$box.addClass('as-leaf-only'); } else { this.$box.removeClass('as-leaf-only'); } var values = this.pendingValues || this.values; this.modes.normal.setValues(values); }, get: function () { return this.$box.hasClass('as-leaf-only'); } }; /* harmony default export */ const checktreebox_CTBPropHandlers = (CTBPropHandlers); /*** * * @type {boolean} * @name enableSearch * @memberOf MCheckTreeBox# */ ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreebox/CTBModes.js /*** * * @param {MCheckTreeBox} elt * @param {[]} items * @constructor */ function CTBModeNormal(elt, items) { this.level = -1; this.selected = 'none'; this.elt = elt; this.$list = this.elt.$list; /*** * * @type {MCTBItemHolder[]} */ this.children = items.map(item => new this.elt.classes.ItemHolder(elt, this, item)); this.hasLeaf = this.children.some(holder => holder.hasLeaf); this.hasNoSelect = this.children.some(holder => holder.hasNoSelect); this.hasDesc = this.children.some(holder => holder.hasDesc); this.hasIcon = this.children.some(holder => holder.hasIcon); if (this.hasLeaf) { this.elt.addClass('as-has-leaf'); } else { this.elt.removeClass('as-has-leaf'); } if (this.hasNoSelect) { this.elt.addClass('as-has-no-select'); this.elt.$chekAll.disabled = true; } else { this.elt.removeClass('as-has-no-select'); this.elt.$chekAll.disabled = false; } this.dict = this.children.reduce(function visit(ac, child) { var key = (0,utils.keyStringOf)(child.data.value); if (ac[key]) { console.error('Duplicate value:', ac[key].data, child.data) } ac[key] = child; if (child.children) { child.children.reduce(visit, ac); } return ac; }, {}); } CTBModeNormal.prototype.onStart = function () { this.$list.clearChild(); var rootHolders = this.children; var viewElements = []; rootHolders.forEach(holder => { holder.getViewElements(viewElements) }, []); this.$list.addChild(viewElements); }; CTBModeNormal.prototype.onStop = function () { }; CTBModeNormal.prototype.updateUp = function () { var selected = { child: 0, all: 0, none: 0, /*dont: 0*/ }; var childN = this.children.length; this.children.reduce((ac, child) => { ac[child.selected]++; return ac; }, selected); if (childN === selected.all) { this.selected = 'all'; } else if (childN === selected.none) { this.selected = "none"; } else { this.selected = 'child'; } this.elt.$chekAll.checked = this.selected === 'all'; }; CTBModeNormal.prototype.select = function (flag) { this.children.forEach(child => child.select(flag, true)); this.updateUp(); }; CTBModeNormal.prototype.getHolderByValue = function (value) { return this.dict[(0,utils.keyStringOf)(value)] || null; }; CTBModeNormal.prototype.setValues = function (values) { this.children.forEach(node => node.select(false)); values.forEach((value) => { var holder = this.getHolderByValue(value); if (holder) holder.select(true); }); }; CTBModeNormal.prototype.getValues = function () { var values = []; var leafOnly = this.elt.leafOnly; this.children.forEach(function visit(node) { if (node.selected === 'all' && !node.hasNoSelect) { if (leafOnly) { if (node.data.isLeaf) { values.push(node.data.value); } else if (node.data.items) { node.data.items.forEach(function visitLeaf(item) { if (item.isLeaf) { values.push(item.value); } else if (item.items) { item.items.forEach(visitLeaf); } }); } } else { values.push(node.data.value); } } else if (node.children) { node.children.forEach(visit); } }); return values; }; CTBModeNormal.prototype.getViewValues = function () { var values = []; this.children.forEach(function visit(node) { if (node.selected === 'all' && !node.hasNoSelect) { values.push(node.data.value); } else if (node.children) { node.children.forEach(visit); } }); return values; }; /*** * * @param {MCheckTreeBox} elt * @param {[]} items * @constructor */ function CTBModeSearch(elt, items) { this.level = -1; this.selected = 'none'; this.elt = elt; this.$list = this.elt.$list; this.children = items.map(item => new this.elt.classes.ItemHolder(elt, this, item)); } CTBModeSearch.prototype.onStart = function () { CTBModeNormal.prototype.onStart.call(this); this.updateSelectedFromRef(); }; CTBModeSearch.prototype.onStop = function () { }; CTBModeSearch.prototype.updateSelectedFromRef = function () { var normalMode = this.elt.modes.normal; this.children.forEach(function visit(holder) { holder.selected = holder.ref.selected; if (holder._elt) { holder._elt.selected = holder.selected; } if (holder.children) holder.children.forEach(visit); }); }; // EXTERNAL MODULE: ./node_modules/absol-acomp/js/list/ListDictionary.js var ListDictionary = __webpack_require__(103); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreebox/MCheckTreeBox.js /*** * not optimize * @param {MCheckTreeBox} elt * @constructor */ function MCTBItemListController(elt) { this.elt = elt; this.items = []; ListDictionary/* default.call */.Z.call(this, this.items, { depth: true }); } OOP/* default.mixClass */.ZP.mixClass(MCTBItemListController, ListDictionary/* default */.Z); MCTBItemListController.prototype.setItems = function (items) { items = items || []; if (!items.forEach || !items.map) items = []; this.items = (0,utils.copySelectionItemArray)(items, { removeNoView: true }); this.arr = this.items; this.update(); }; MCTBItemListController.prototype.update = function () { ListDictionary/* default.prototype.update.call */.Z.prototype.update.call(this); var mode = new this.elt.classes.ModeNormal(this.elt, this.items); this.elt.modes.normal = mode; if (mode.hasDesc) { this.elt.$list.addClass('as-has-desc'); } else { this.elt.$list.removeClass('as-has-desc'); } if (mode.hasIcon) { this.elt.$list.addClass('as-has-icon'); } else { this.elt.$list.removeClass('as-has-icon'); } this.elt.mode = mode; mode.onStart(); this._searchItems = (0,search/* prepareSearchForList */.Lb)((0,utils.copySelectionItemArray)(this.items)); this._searchCache = {}; }; MCTBItemListController.prototype.getItems = function () { return (0,utils.copySelectionItemArray)(this.items||[]); }; MCTBItemListController.prototype.makeSearch = function (query) { if (this._searchCache[query]) return this._searchCache[query].resetAndGet(); var searchItem = (0,search/* default */.ZP)({ text: query }); var minScore = Infinity; var maxScore = -Infinity; var scoredHolders = this._searchItems.map(function visit(item) { var holder = { item: item, score: (0,search/* calcItemMatchScore */.lk)(searchItem, item), childMaxScore: -Infinity }; minScore = Math.min(minScore, holder.score); maxScore = Math.max(maxScore, holder.score); if (item.items && item.items.length > 0) { holder.children = item.items.map(visit); holder.childMaxScore = holder.children.reduce((ac, cr) => { return Math.max(ac, cr.score, cr.childMaxScore); }, 0) } return holder; }); var threshHold = maxScore - (maxScore - minScore) / 3; var result = scoredHolders.reduce(function filterVisit(ac, cr) { var subItems; if (Math.max(cr.score, cr.childMaxScore) >= threshHold) { ac.items.push(cr.item); if (cr.children && cr.childMaxScore >= cr.score) { ac.status[(0,utils.keyStringOf)(cr.item.value)] = 'open'; subItems = cr.children.reduce(filterVisit, { items: [], status: ac.status }).items; cr.item.items = subItems; } else { if (cr.children && cr.children.length > 0) { ac.status[(0,utils.keyStringOf)(cr.item.value)] = 'open'; } } } return ac; }, { items: [], status: {} }); var normalMode = this.elt.modes.normal; result.mode = new this.elt.classes.ModeSearch(this.elt, result.items); result.resetAndGet = function () { this.mode.children && this.mode.children.forEach(function resetVisit(holder) { var key = (0,utils.keyStringOf)(holder.data.value); holder.ref = normalMode.getHolderByValue(holder.data.value); if (holder.status === 'open' && result.status[key] !== 'open') { holder.status = 'close'; if (holder._elt) { holder._elt.status = 'close'; } } else if (holder.status === 'close' && result.status[key] === 'open') { holder.status = 'open'; if (holder._elt) { holder._elt.status = 'open'; } } if (holder.children) holder.children.forEach(resetVisit); }); return this.mode; }; this._searchCache[query] = result; return result.resetAndGet(); }; /*** * @extends AElement * @constructor */ function MCheckTreeItem() { this._data = null; this._status = 'none'; this.$text = (0,ACore.$)('.am-check-tree-item-text', this).firstChild; this.$desc = (0,ACore.$)('.am-check-tree-item-desc', this).firstChild; this.$iconCtn = (0,ACore.$)('.am-check-tree-item-icon-ctn', this); this.$checkbox = (0,ACore.$)('checkboxinput', this) .on('change', this.eventHandler.checkboxChange); this.addEventListener('click', this.eventHandler.click); } MCheckTreeItem.tag = 'MCheckTreeItem'.toLowerCase(); MCheckTreeItem.render = function () { return (0,ACore._)({ extendEvent: ['checkedchange', 'click', 'statuschange'], class: ['am-check-tree-item', 'am-dropdown-box-item'], child: [ { class: 'am-check-tree-item-toggle-ctn', child: 'toggler-ico' }, { class: 'am-check-tree-item-icon-ctn' }, { class: 'am-check-tree-item-checkbox-ctn', child: 'checkboxinput' }, { class: 'am-check-tree-item-text', child: { text: '' } }, { class: 'am-check-tree-item-desc', child: { text: '' } } ] }); }; MCheckTreeItem.prototype._updateData = function () { this.$text.data = this.text; this.$desc.data = this.desc; this.$iconCtn.clearChild(); this.$icon = null; this.attr('data-key', (0,utils.keyStringOf)(this.value)) if (this._data && this._data.icon) { this.$icon = (0,ACore._)(this._data.icon); if (this.$icon.parentElement) { this.$icon = this.$icon.cloneNode(true); } this.$iconCtn.addChild(this.$icon); this.addClass('as-has-icon'); } else { this.removeClass('as-has-icon'); } if (this._data && this._data.isLeaf) { this.addClass('as-is-leaf'); } else { this.removeClass('as-is-leaf'); } }; MCheckTreeItem.eventHandler = {}; MCheckTreeItem.eventHandler.click = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$checkbox, event)) return; var checkboxBound = this.$checkbox.getBoundingClientRect(); var canCheck = this.$checkbox.getComputedStyleValue('pointer-events') !== 'none' && !this.$checkbox.disabled && checkboxBound.width > 0; if (this.status === 'none' && canCheck) { this.$checkbox.checked = !this.$checkbox.checked; this.$checkbox.notifyChange(); } else if (this.status !== 'none') { if (!checkboxBound.width) { checkboxBound = this.$iconCtn.getBoundingClientRect(); } if (!checkboxBound.width) { checkboxBound = { left: this.getBoundingClientRect().left + parseFloat(this.$text.parentElement.getComputedStyleValue('padding-left').replace('px')) }; } if (event.clientX < checkboxBound.left || !canCheck) { this.status = this.status === 'open' ? 'close' : 'open'; this.emit('statuschange', { type: 'statuschange', target: this }, this); } else if (canCheck) { this.$checkbox.checked = !this.$checkbox.checked; this.$checkbox.notifyChange(); } } }; MCheckTreeItem.eventHandler.checkboxChange = function () { this.emit('checkedchange', { type: 'checkedchange' }, this); }; MCheckTreeItem.property = checktreebox_CTIPropHandlers; /*** * @name data * @memberOf MCheckTreeItem# */ /*** * @name text * @type {string} * @memberOf MCheckTreeItem# */ /*** * @name desc * @type {string} * @memberOf MCheckTreeItem# */ /*** * @name value * @memberOf MCheckTreeItem# */ /*** * @extends AElement * @constructor */ function MCheckTreeBox() { this.$box = (0,ACore.$)('.am-check-tree-box', this); this.$body = (0,ACore.$)('.am-check-tree-box-body', this); this.$list = (0,ACore.$)('.am-check-tree-box-list', this); this.$chekAll = (0,ACore.$)('.as-select-list-box-check-all', this) .on('change', function () { this.modes.normal.select(this.$chekAll.checked); if (this.mode.updateSelectedFromRef) this.mode.updateSelectedFromRef(); this.notifyChange(); }.bind(this)); this.$searchInput = (0,ACore.$)(Searcher/* default.tag */.Z.tag, this).on('stoptyping', this.eventHandler.searchTextInputModify); this.$cancelBtn = (0,ACore.$)('.as-select-list-box-cancel-btn', this) .on('click', function () { this.emit('cancel', { type: 'cancel', target: this }, this); }.bind(this)); this.$closeBtn = (0,ACore.$)('.as-select-list-box-close-btn', this); this.$boxCloseBtn = (0,ACore.$)('.am-dropdown-box-close-btn', this); this.on('click', function (event) { if (event.target === this || (0,EventEmitter/* hitElement */.EY)(this.$closeBtn, event) || (0,EventEmitter/* hitElement */.EY)(this.$boxCloseBtn, event)) { this.emit('close', { type: 'close', target: this }, this); } }.bind(this)); this.pendingValues = null; this.modes = { normal: new this.classes.ModeNormal(this, []) }; /*** * * @type {CTBModeNormal | CTBModeSearch} */ this.mode = this.modes.normal; this.itemListCtrl = new this.classes.ListController(this); } MCheckTreeBox.prototype.classes = { ListController: MCTBItemListController, ModeSearch: CTBModeSearch, ModeNormal: CTBModeNormal, ItemHolder: MCTBItemHolder, ItemElement: MCheckTreeItem }; MCheckTreeBox.tag = 'MCheckTreeBox'.toLowerCase(); MCheckTreeBox.render = function () { return (0,ACore._)({ extendEvent: ['change', 'close', 'cancel'], class: ['am-modal', 'am-dropdown-box-modal'], child: { class: ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'], child: [ { class: 'am-dropdown-box-header', child: [ { tag: Searcher/* default.tag */.Z.tag }, { tag: 'button', class: 'am-dropdown-box-close-btn', child: 'span.mdi.mdi-close' } ] }, { class: ['am-dropdown-box-body', 'am-check-tree-box-body'], child: { class: 'am-check-tree-box-list', } }, { class: 'as-dropdown-box-footer', child: [ { tag: 'checkbox', class: 'as-select-list-box-check-all', props: { checked: false, text: LanguageSystem/* default.getText */.ZP.getText('txt_check_all') || LanguageSystem/* default.getText */.ZP.getText('txt_all') || 'Check All' } }, { class: 'as-dropdown-box-footer-right', child: [ { tag: 'a', class: 'as-select-list-box-cancel-btn', attr: { "data-ml-key": 'txt_cancel' } }, { tag: 'a', class: 'as-select-list-box-close-btn', attr: { "data-ml-key": 'txt_close' } }] } ] } ] } }); }; MCheckTreeBox.prototype.getHolderByValue = function (value) { return this.modes.normal.getHolderByValue(value); }; MCheckTreeBox.prototype.select = function (value, flag) { var holder = this.modes.normal.getHolderByValue(value); if (holder) { holder.select(flag); if (this.mode !== this.modes.normal) { this.mode.updateSelectedFromRef(); } return true; } return false; }; MCheckTreeBox.prototype.getItemByValue = function (value) { var holder = this.modes.normal.getHolderByValue(value); if (holder) return holder.data; return null; }; MCheckTreeBox.prototype.focus = function () { if (this.enableSearch) { this.$searchInput.focus(); } }; MCheckTreeBox.prototype.resetSearchState = function () { this.$searchInput.value = ''; this.eventHandler.searchTextInputModify(); }; MCheckTreeBox.prototype.notifyChange = function () { this.pendingValues = null; this.emit('change', { type: 'change', target: this }, this); }; /*** * @name eventHandler * @type {{}} * @memberOf MCheckTreeBox# */ MCheckTreeBox.eventHandler = {}; MCheckTreeBox.eventHandler.searchTextInputModify = function () { var query = this.$searchInput.value.trim().replace(/\s+/g, ' '); if (query.length > 0) { if (this.mode === this.modes.normal) { this.mode.onStop(); } this.mode.search = this.itemListCtrl.makeSearch(query); this.mode = this.mode.search; this.mode.onStart(); } else { if (this.mode !== this.modes.normal) { this.mode.onStop(); this.mode = this.modes.normal; this.mode.onStart(); } } }; MCheckTreeBox.property = checktreebox_CTBPropHandlers; /* harmony default export */ const checktreebox_MCheckTreeBox = (MCheckTreeBox); /*********************************** ADAPT OLD VERSION ***************************************************************/ MCheckTreeBox.prototype.findItemHoldersByValue = function (value) { var holder = this.getHolderByValue(value); if (holder) { return [holder]; } else { return []; } }; /*** * * @param {MCheckTreeBox} boxElt * @param {MCTBItemHolder|CTBModeNormal|CTBModeSearch}parent * @param data * @constructor */ function MCTBItemHolder(boxElt, parent, data) { this.ref = null; this.boxElt = boxElt; this.$list = this.boxElt.$list; this.data = data; this.parent = parent; this.level = parent ? parent.level + 1 : 0; this._elt = null; this.children = null; this.hasIcon = !!data.icon; this.hasDesc = !!data.desc; this.status = 'none'; this.selected = 'none'; this.hasLeaf = data.isLeaf; this.noSelect = data.noSelect; this.hasNoSelect = this.noSelect; if (data.items && data.items.map && data.items.length > 0) { this.children = data.items.map(it => new MCTBItemHolder(boxElt, this, it)); this.hasIcon = this.hasIcon || this.children.some(child => child.hasIcon); this.hasDesc = this.hasDesc || this.children.some(child => child.hasDesc); this.hasLeaf = this.hasLeaf || this.children.some(child => child.hasLeaf); this.hasNoSelect = this.hasNoSelect || this.children.some(child => child.hasNoSelect); this.status = 'close'; } } MCTBItemHolder.prototype.getViewElements = function (ac) { ac = ac || []; ac.push(this.elt); if (this.status === 'open' && this.children) { this.children.forEach(child => child.getViewElements(ac)); } return ac; }; Object.defineProperty(MCTBItemHolder.prototype, 'elt', { get: function () { if (!this._elt) { this._elt = (0,ACore._)({ tag: this.boxElt.classes.ItemElement, props: { data: this.data, level: this.level, status: this.status, selected: this.selected, hasLeaf: this.hasLeaf, noSelect: this.hasNoSelect }, on: { checkedchange: this.ev_checkedChange.bind(this), statuschange: this.ev_statusChange.bind(this), } }); } return this._elt; } }); MCTBItemHolder.prototype.ev_checkedChange = function () { var selected = this._elt.selected; if (this.ref) { if (selected === 'all') { this.ref.select(true); } else { this.ref.select(false); } this.getRoot().updateSelectedFromRef(); } else { if (selected === 'all') { this.select(true); } else { this.select(false); } } this.boxElt.notifyChange(); }; MCTBItemHolder.prototype.ev_statusChange = function () { if (this._elt.status === this.status) return; var viewElements; if (this.status === 'open') { viewElements = this.getViewElements(); viewElements.shift(); viewElements.forEach((elt) => { elt.remove(); }); this.status = this._elt.status; } else if (this.status === 'close') { this.status = this._elt.status; viewElements = this.getViewElements(); viewElements.shift(); (0,utils.addElementAfter)(this.$list, viewElements, this._elt); } }; MCTBItemHolder.prototype.updateUp = function () { var selected = { child: 0, all: 0, none: 0, /*dont: 0*/ }; var childN = this.children.length; this.children.reduce((ac, child) => { ac[child.selected]++; return ac; }, selected); if (childN === selected.all) { this.selected = 'all'; } else if (childN === selected.none) { this.selected = "none"; } else { this.selected = 'child'; } if (this._elt) { this._elt.selected = this.selected; } if (this.parent) this.parent.updateUp(); } MCTBItemHolder.prototype.select = function (flag, isDownUpdate) { var leafOnly = this.boxElt.leafOnly; if (flag && ((leafOnly && !this.hasLeaf))) return; var selected = { child: 0, all: 0, none: 0, exclude: 0/*dont: 0*/ }; var childN = 0; if (this.children && this.children.length > 0) { childN = this.children.length; this.children.reduce((ac, child) => { child.select(flag, true); if (leafOnly && !child.hasLeaf) { ac.exclude++; } else { ac[child.selected]++; } return ac; }, selected); if (leafOnly) { if (this.hasLeaf) { if (childN === selected.all + selected.exclude) { this.selected = 'all'; } else if (selected.all + selected.child > 0) { this.selected = 'child'; } else { this.selected = 'none'; } } else { this.selected = "none"; } } else { if (childN === selected.all) { this.selected = 'all'; } else if (childN === selected.none) { this.selected = "none"; } else { this.selected = 'child'; } } } else { if (flag && (!leafOnly ||this.hasLeaf)) { this.selected = 'all'; } else { this.selected = 'none'; } } if (this._elt) { this._elt.selected = this.selected; } if (!isDownUpdate && this.parent) { this.parent.updateUp(); } }; MCTBItemHolder.prototype.getRoot = function () { var c = this; while (c.parent) { c = c.parent; } return c; } /*********************************** ADAPT OLD VERSION ***************************************************************/ Object.defineProperty(MCTBItemHolder.prototype, 'item', { get: function (){ return this.data; } }); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafbox/MSTBItemHolder.js function MSTBItemHolder(boxElt, parent, data) { this.ref = null; this.$list = boxElt.$list; this.level = parent.level + 1; this.status = 'none'; this.boxElt = boxElt; this.parent = parent; this.data = data; this._elt = null; this.hasDesc = !!data.desc; this.hasIcon = !!data.icon; this.selected = false; if (data.items && data.items.length > 0) { this.children = data.items.map(item => new MSTBItemHolder(boxElt, this, item)); this.hasDesc = this.hasDesc || this.children.some(child => child.hasDesc); this.hasIcon = this.hasIcon || this.children.some(child => child.hasIcon); this.status = 'close'; } } MSTBItemHolder.prototype.ev_statusChange = MCTBItemHolder.prototype.ev_statusChange; MSTBItemHolder.prototype.getViewElements = MCTBItemHolder.prototype.getViewElements; MSTBItemHolder.prototype.select = function (flag) { this.selected = flag; if (this._elt) { this._elt.selected = flag; } }; MSTBItemHolder.prototype.ev_click = function (event) { if (this.ref) { this.ref.ev_click(event); } else { this.boxElt.modes.normal.setValue(this.data.value); if (this.boxElt.mode !== this.boxElt.modes.normal) { this.boxElt.mode.updateSelectedFromRef(); } this.boxElt.notifyPressItem({ item: this.data }); } }; Object.defineProperty(MSTBItemHolder.prototype, 'elt', { get: function () { if (!this._elt) { this._elt = (0,ACore._)({ tag: selecttreeleafbox_SelectTreeLeafItem, props: { data: this.data, level: this.level, status: this.status, selected: this.selected }, on: { statuschange: this.ev_statusChange.bind(this), click: this.ev_click.bind(this) } }); } return this._elt; } }); /* harmony default export */ const selecttreeleafbox_MSTBItemHolder = (MSTBItemHolder); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafbox/STLBModes.js function STLBModeNormal(elt, items) { this.level = -1; this.elt = elt; this.$list = elt.$list; this.children = items.map(item => new selecttreeleafbox_MSTBItemHolder(elt, this, item)); this.hasDesc = this.hasDesc || this.children.some(child => child.hasDesc); this.hasIcon = this.hasIcon || this.children.some(child => child.hasIcon); this.dict = this.children.reduce(function visit(ac, child) { var key = (0,utils.keyStringOf)(child.data.value); if (ac[key]) { console.error('Duplicate value:', ac[key].data, child.data) } ac[key] = child; if (child.children) { child.children.reduce(visit, ac); } return ac; }, {}); this.selectedHolder = null; } STLBModeNormal.prototype.getHolderByValue = CTBModeNormal.prototype.getHolderByValue; STLBModeNormal.prototype.getItemByValue = function (value) { var holder = this.getHolderByValue(value); if (holder) return holder.data; return null; }; STLBModeNormal.prototype.getFirstLeafHolder = function () { var res = null; if (this.children) { this.children.some(function visit(node) { if (node.data.isLeaf) { res = node; return true; } if (node.children) { return node.children.some(visit) } return false; }); } return res; }; STLBModeNormal.prototype.onStart = function () { this.$list.clearChild(); var rootHolders = this.children; var viewElements = []; rootHolders.forEach(holder => { holder.getViewElements(viewElements) }, []); this.$list.addChild(viewElements); }; STLBModeNormal.prototype.setValue = function (value, strict) { var holder = this.selectedHolder; if (holder) { holder.select(false); } holder = this.getHolderByValue(value); if (holder && !holder.data.isLeaf) holder = null; if (!holder && strict) { holder = this.getFirstLeafHolder(); } if (holder && holder.data.isLeaf) { holder.select(true); } this.selectedHolder = holder; }; STLBModeNormal.prototype.getValue = function (strict) { var holder = this.selectedHolder; if (strict && !holder) holder = this.getFirstLeafHolder(); if (holder) { return holder.data.value; } else { throw new Error('Not selected!'); } }; STLBModeNormal.prototype.viewToSelected = function () { if (!this.selectedHolder) return; var visitUp = (node) => { var parent = node.parent; if (parent !== this) { visitUp(parent); } if (node.status === 'close') { node.elt.status = 'open'; node.ev_statusChange(); } } visitUp(this.selectedHolder); (0,utils.vScrollIntoView)(this.selectedHolder.elt); }; STLBModeNormal.prototype.onStop = function () { }; function STLBModeSearch(elt, items) { this.level = -1; this.elt = elt; this.$list = this.elt.$list; this.children = items.map(item => new selecttreeleafbox_MSTBItemHolder(elt, this, item)); this.dict = this.children.reduce(function visit(ac, child) { var key = (0,utils.keyStringOf)(child.data.value); if (ac[key]) { console.error('Duplicate value:', ac[key].data, child.data) } ac[key] = child; if (child.children) { child.children.reduce(visit, ac); } return ac; }, {}); this.selectedHolder = null; } STLBModeSearch.prototype.updateSelectedFromRef = function () { if (this.selectedHolder) this.selectedHolder.select(false); this.selectedHolder = null; var value = this.elt.value; var holder = this.dict[(0,utils.keyStringOf)(value)]; if (holder) { holder.select(true); this.selectedHolder = holder; } }; STLBModeSearch.prototype.onStart = function () { STLBModeNormal.prototype.onStart.call(this); this.updateSelectedFromRef(); }; STLBModeSearch.prototype.onStop = function () { }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafbox/MSTLBItemListController.js function MSTLBItemListController(elt) { this.elt = elt; this.items = []; this._searchCache = {}; } MSTLBItemListController.prototype.setItems = function (items) { if (!items || !items.forEach || !items.map) items = []; this.items = (0,utils.copySelectionItemArray)(items, { removeNoView: true }); this.update(); }; MSTLBItemListController.prototype.update = function () { var mode = new STLBModeNormal(this.elt, this.items); this.elt.modes.normal = mode; this.elt.mode = mode; if (mode.hasDesc) { this.elt.$list.addClass('as-has-desc'); } else { this.elt.$list.removeClass('as-has-list'); } if (mode.hasIcon) { this.elt.$list.addClass('as-has-icon'); } else { this.elt.$list.removeClass('as-has-icon'); } this.elt.mode = mode; mode.onStart(); this._searchItems = (0,search/* prepareSearchForList */.Lb)((0,utils.copySelectionItemArray)(this.items)); this._searchCache = {}; }; MSTLBItemListController.prototype.getItems = function () { return (0,utils.copySelectionItemArray)(this.items); }; MSTLBItemListController.prototype.makeSearch = function (query) { if (this._searchCache[query]) return this._searchCache[query].resetAndGet(); var searchItem = (0,search/* default */.ZP)({ text: query }); var minScore = Infinity; var maxScore = -Infinity; var scoredHolders = this._searchItems.map(function visit(item) { var holder = { item: item, score: (0,search/* calcItemMatchScore */.lk)(searchItem, item), childMaxScore: -Infinity }; minScore = Math.min(minScore, holder.score); maxScore = Math.max(maxScore, holder.score); if (item.items && item.items.length > 0) { holder.children = item.items.map(visit); holder.childMaxScore = holder.children.reduce((ac, cr) => { return Math.max(ac, cr.score, cr.childMaxScore); }, 0) } return holder; }); var threshHold = maxScore - (maxScore - minScore) / 3; var result = scoredHolders.reduce(function filterVisit(ac, cr) { var subItems; if (Math.max(cr.score, cr.childMaxScore) >= threshHold) { ac.items.push(cr.item); if (cr.children && cr.childMaxScore >= cr.score) { ac.status[(0,utils.keyStringOf)(cr.item.value)] = 'open'; subItems = cr.children.reduce(filterVisit, { items: [], status: ac.status }).items; cr.item.items = subItems; } else { if (cr.children && cr.children.length > 0) { ac.status[(0,utils.keyStringOf)(cr.item.value)] = 'open'; } } } return ac; }, { items: [], status: {} }); var normalMode = this.elt.modes.normal; result.mode = new STLBModeSearch(this.elt, result.items); result.resetAndGet = function () { this.mode.children && this.mode.children.forEach(function resetVisit(holder) { var key = (0,utils.keyStringOf)(holder.data.value); holder.ref = normalMode.getHolderByValue(holder.data.value); if (holder.status === 'open' && result.status[key] !== 'open') { holder.status = 'close'; if (holder._elt) { holder._elt.status = 'close'; } } else if (holder.status === 'close' && result.status[key] === 'open') { holder.status = 'open'; if (holder._elt) { holder._elt.status = 'open'; } } if (holder.children) holder.children.forEach(resetVisit); }); return this.mode; }; this._searchCache[query] = result; return result.resetAndGet(); }; /* harmony default export */ const selecttreeleafbox_MSTLBItemListController = (MSTLBItemListController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafbox/STLBPropsHandlers.js var STLBPropsHandlers = {}; STLBPropsHandlers.enableSearch = { set: function (value) { if (value) { this.$box.addClass('as-enable-search'); } else { this.$box.removeClass('as-enable-search'); } }, get: function () { return this.$box.hasClass('as-enable-search'); } }; /* harmony default export */ const selecttreeleafbox_STLBPropsHandlers = (STLBPropsHandlers); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafbox/MSelectTreeLeafBox.js /**** * @extends AElement * @constructor */ function MSelectTreeLeafBox() { this.estimateSize = { width: 0, height: 0 }; this.$box = (0,ACore.$)('.am-dropdown-box', this); this.$list = (0,ACore.$)('.am-select-tree-leaf-box-list', this); this.itemListCtrl = new selecttreeleafbox_MSTLBItemListController(this); this.$searchInput = (0,ACore.$)(Searcher/* default.tag */.Z.tag, this).on('stoptyping', this.eventHandler.searchTextInputModify); this.$boxCloseBtn = (0,ACore.$)('.am-dropdown-box-close-btn', this); this.on('click', function (event) { if (event.target === this || (0,EventEmitter/* hitElement */.EY)(this.$boxCloseBtn, event)) { this.emit('close', { type: 'close', target: this }, this); } }.bind(this)); this.modes = { normal: new STLBModeNormal(this, []), search: null }; this.mode = this.modes.normal; this.strictValue = true; /** * @name items * @memberof MSelectTreeLeafBox# * @type {Array} */ /** * @name value * @memberof MSelectTreeLeafBox# */ /** * @name strictMode * @type {boolean} * @memberof MSelectTreeLeafBox# */ /** * @name selectedItem * @memberof MSelectTreeLeafBox# */ } MSelectTreeLeafBox.tag = 'MSelectTreeLeafBox'.toString(); MSelectTreeLeafBox.render = function () { return (0,ACore._)({ extendEvent: ['pressitem', 'close'], class: ['am-modal', 'am-dropdown-box-modal'], child: { class: ['am-select-tree-leaf-box', 'am-dropdown-box', 'as-dropdown-box-common-style'], child: [ { class: 'am-dropdown-box-header', child: [ { tag: Searcher/* default.tag */.Z.tag }, { tag: 'button', class: 'am-dropdown-box-close-btn', child: 'span.mdi.mdi-close' } ] }, { class: ['am-dropdown-box-body', 'am-select-tree-leaf-box-body'], child: { class: 'am-select-tree-leaf-box-list' } } ] } }); }; MSelectTreeLeafBox.prototype._calcEstimateSize = js_SelectTreeLeafBox.prototype._calcEstimateSize; MSelectTreeLeafBox.prototype._estimateItemWidth = function (item, level) { var width = 12;//padding width += 12 * level; width += 14.7 + 5;//toggle icon // if (item.icon) width += 21;//icon width += 7 + (0,utils.estimateWidth14)(item.text) + 5 + 7;//margin-text if (item.desc) width += 6 + (0,utils.estimateWidth14)(item.desc) * 0.85; return width; }; MSelectTreeLeafBox.prototype._findFirstLeaf = js_SelectTreeLeafBox.prototype._findFirstLeaf; MSelectTreeLeafBox.prototype.viewToSelected = function () { this.modes.normal.viewToSelected(); }; MSelectTreeLeafBox.prototype.notifyPressItem = function (eventData) { delete this.pendingValue; this.emit('pressitem', Object.assign({ type: 'pressitem', target: this }, eventData), this); }; MSelectTreeLeafBox.prototype.getItemByValue = function (value) { return this.modes.normal.getItemByValue(value); }; MSelectTreeLeafBox.prototype.findItemByValue = function (value) { return this.modes.normal.getItemByValue(value); }; MSelectTreeLeafBox.prototype.resetSearchState = checktreebox_MCheckTreeBox.prototype.resetSearchState; MSelectTreeLeafBox.property = selecttreeleafbox_STLBPropsHandlers; MSelectTreeLeafBox.property.items = { set: function (items) { var curValue; var selected = true; if ('pendingValue' in this) { curValue = this.pendingValue; } else { try { curValue = this.modes.normal.getValue(this.strictValue); } catch (err) { selected = false; } } this.estimateSize = this._calcEstimateSize(items); this._items = items;//todo: check usage this.itemListCtrl.setItems(items); if (selected || this.strictValue) this.modes.normal.setValue(curValue, this.strictValue); if (this.mode !== this.modes.normal) { this.mode.updateSelectedFromRef(); } }, get: function () { return this.itemListCtrl.getItems(); } }; MSelectTreeLeafBox.property.value = { /*** * @this MSelectTreeLeafBox * @param value */ set: function (value) { this.pendingValue = value; this._value = value; this.modes.normal.setValue(this.pendingValue, this.strictValue); }, get: function () { if ('pendingValue' in this) { return this.pendingValue; } else { try { return this.modes.normal.getValue(this.strictValue); } catch (err) { return undefined; } } } }; MSelectTreeLeafBox.property.selectedItem = { get: function () { return this.modes.normal.getItemByValue(this.value); } }; MSelectTreeLeafBox.property.strictValue = { set: function (value) { if (value) { this.$box.addClass('as-strict-value'); } else { this.$box.removeClass('as-strict-value'); } this.modes.normal.setValue(this.pendingValue, this.strictValue); if (this.mode !== this.modes.normal) { this.mode.updateSelectedFromRef(); } }, get: function () { return this.$box.hasClass('as-strict-value'); } }; MSelectTreeLeafBox.eventHandler = {}; MSelectTreeLeafBox.eventHandler.searchTextInputModify = checktreebox_MCheckTreeBox.eventHandler.searchTextInputModify; ACore/* default.install */.Z.install(MSelectTreeLeafBox); /* harmony default export */ const selecttreeleafbox_MSelectTreeLeafBox = (MSelectTreeLeafBox); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectTreeLeafMenu.js /*** * @extends AElement * @constructor */ function SelectTreeLeafMenu_SelectTreeLeafMenu() { this.$selectBox = (0,ACore._)({ tag: this.mobile ? selecttreeleafbox_MSelectTreeLeafBox : js_SelectTreeLeafBox.tag, on: { pressitem: this.eventHandler.pressItem, preupdateposition: this.eventHandler.preUpdateListPosition, close: () => { this.isFocus = false; } } }); this.$selectBox.sponsorElement = this; OOP/* default.drillProperty */.ZP.drillProperty(this, this.$selectBox, ['enableSearch', 'selectedItem']); this.$holderItem = (0,ACore.$)('selectlistitem', this); // this.on('click', this.eventHandler.click.bind(this)); this.boxCtrl = new STLBoxController(this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.boxCtrl, 'isFocus'); /** * @name items * @type {Array} * @memberof SelectTreeLeafMenu# */ /** * @name value * @memberof SelectTreeLeafMenu# */ /** * @name mobile * @type {boolean} * @memberof SelectTreeLeafMenu# */ /** * @name disabled * @type {boolean} * @memberof SelectTreeLeafMenu# */ /** * @name readOnly * @type {boolean} * @memberof SelectTreeLeafMenu# */ /** * @name openValue * @memberof SelectTreeLeafMenu# * */ /** * @name nullValue * @memberof SelectTreeLeafMenu# * */ } SelectTreeLeafMenu_SelectTreeLeafMenu.tag = 'SelectTreeLeafMenu'.toLowerCase(); SelectTreeLeafMenu_SelectTreeLeafMenu.render = function () { var mobile = BrowserDetector/* default.isMobile */.Z.isMobile; return (0,ACore._)({ class: ['absol-selectmenu', 'as-select-menu', 'as-select-tree-leaf-menu', 'as-strict-value'], extendEvent: ['change'], props: { mobile: mobile }, attr: { tabindex: '1' }, child: [ { class: 'absol-selectmenu-holder-item', child: 'selectlistitem' }, { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] } ] }); }; SelectTreeLeafMenu_SelectTreeLeafMenu.prototype.findItemByValue = function (value) { return this.$selectBox.findItemByValue(value); }; SelectTreeLeafMenu_SelectTreeLeafMenu.prototype.init = function (props) { props = props || {}; Object.keys(props).forEach(function (key) { if (props[key] === undefined) delete props[key]; }); if (props.strictValue) { this.strictValue = props.strictValue; delete props.strictValue; } var hasValue = 'value' in props; var value = props.value; delete props.value; this.super(props); if (hasValue) this.value = value; }; SelectTreeLeafMenu_SelectTreeLeafMenu.property = {}; SelectTreeLeafMenu_SelectTreeLeafMenu.property.items = { set: function (items) { items = (0,utils.copySelectionItemArray)(items || [], { removeNoView: true }); this.$selectBox.items = items; if (!this.mobile) this.addStyle('--select-list-estimate-width', this.$selectBox.estimateSize.width + 'px'); var selectedItem = this.$selectBox.selectedItem; if (selectedItem) { this.$holderItem.data = selectedItem; if (this.mobile) { this.addStyle('--select-list-estimate-width', this.$selectBox._estimateItemWidth(selectedItem, 0) + 'px'); } } else { this.$holderItem.data = { text: '' }; } }, get: function () { return this.$selectBox.items; } }; SelectTreeLeafMenu_SelectTreeLeafMenu.property.value = { set: function (value) { this.$selectBox.value = value; var selectedItem = this.$selectBox.selectedItem; if (selectedItem) { this.$holderItem.data = selectedItem; if (this.mobile) { this.addStyle('--select-list-estimate-width', this.$selectBox._estimateItemWidth(selectedItem, 0) + 'px'); } } else { this.$holderItem.data = { text: '' }; } }, get: function () { return this.$selectBox.value; } }; SelectTreeLeafMenu_SelectTreeLeafMenu.property.strictValue = { set: function (value) { this.$selectBox.strictValue = !!value; if (value) this.addClass('as-strict-value'); else this.removeClass('as-strict-value'); }, get: function () { return this.hasClass('as-strict-value'); } }; SelectTreeLeafMenu_SelectTreeLeafMenu.property.disabled = SelectMenu2.property.disabled; SelectTreeLeafMenu_SelectTreeLeafMenu.eventHandler = {}; SelectTreeLeafMenu_SelectTreeLeafMenu.eventHandler.clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$selectBox, event)) return; this.isFocus = false; }; SelectTreeLeafMenu_SelectTreeLeafMenu.eventHandler.click = function (event) { if (!this.disabled) this.isFocus = true; }; SelectTreeLeafMenu_SelectTreeLeafMenu.eventHandler.pressItem = function (event) { this.$selectBox.value = event.item.value; this.$holderItem.data = event.item; var prevValue = this._value; this._value = event.item.value; this.isFocus = false; if (prevValue !== this._value) { this.emit('change', { item: event, type: 'change', target: this, originalEvent: event.originalEvent || event.originalEvent || event }, this); } }; SelectTreeLeafMenu_SelectTreeLeafMenu.eventHandler.preUpdateListPosition = function () { var bound = this.getBoundingClientRect(); var screenSize = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$selectBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { this.isFocus = false; } }; ACore/* default.install */.Z.install(SelectTreeLeafMenu_SelectTreeLeafMenu); /* harmony default export */ const js_SelectTreeLeafMenu = (SelectTreeLeafMenu_SelectTreeLeafMenu); /** * * @param {SelectTreeLeafMenu} elt * @constructor */ function STLBoxController(elt) { this.elt = elt; this.ev_click = this.ev_click.bind(this); this.ev_clickOut = this.ev_clickOut.bind(this); this.elt.on('click', this.ev_click); } Object.defineProperty(STLBoxController.prototype, 'isFocus', { set: function (value) { value = !!value; if (this.elt.hasClass('as-focus') === value) return; if (value && (this.elt.disabled || this.elt.readOnly)) return; var bound; if (value) { this.elt.$selectBox.addTo(document.body); this.elt.addClass('as-focus'); this.elt.$selectBox.addStyle('visible', 'hidden'); this.elt.off('click', this.ev_click); if (this.elt.mobile) { } else { bound = this.elt.getBoundingClientRect(); this.elt.$selectBox.addStyle('min-width', bound.width + 'px'); this.elt.$selectBox.followTarget = this.elt; this.elt.$selectBox.updatePosition(); } setTimeout(function () { document.addEventListener('mousedown', this.ev_clickOut); this.elt.$selectBox.removeStyle('visibility'); this.elt.$selectBox.focus(); }.bind(this), 5); if (this.elt.$selectBox.viewToValue && (0,utils.keyStringOf)(this.elt.nullValue) === (0,utils.keyStringOf)(this.elt.$selectBox.value)) { this.elt.$selectBox.viewToValue(this.elt.openValue); } else this.elt.$selectBox.viewToSelected(); } else { this.elt.removeClass('as-focus'); this.elt.$selectBox.remove(); document.removeEventListener('mousedown', this.ev_clickOut); if (this.elt.mobile) { } else { this.elt.$selectBox.followTarget = null; } setTimeout(() => { this.elt.on('click', this.ev_click); }, 100); this.elt.$selectBox.resetSearchState(); } }, get: function () { return this.elt.hasClass('as-focus'); } }); STLBoxController.prototype.ev_click = function (event) { if (!this.elt.disabled && !this.elt.readOnly) this.isFocus = true; }; STLBoxController.prototype.ev_clickOut = function (event) { if (!(0,EventEmitter/* hitElement */.EY)(this.elt.$selectBox, event) || (event.target.attr && event.target.attr('class') && event.target.attr('class').indexOf('modal') >= 0)) { this.isFocus = false; } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MultiCheckTreeLeafBox.js function MultiCheckTreeLeafBox_isBranchStatus(status) { return status === 'open' || status === 'close'; } function MultiCheckTreeLeafBox_invertStatus(status) { return { open: 'close', close: 'open' }[status] || 'none'; } /*** * @extends Follower * @constructor */ function MultiCheckTreeLeafBox() { (0,MultiLanguageCSS/* loadLanguageModule */.q)(); this._initControl(); this._searchCache = {}; this._items = []; this._values = []; this.strictValue = true; this.$items = []; this.$itemByValue = {}; this.$dislayItems = this.$items; this.$dislayItemByValue = this.$itemByValue; this.$content = (0,ACore.$)('.as-select-tree-leaf-box-content', this); this._savedStatus = {}; this.estimateSize = { width: 0, height: 0 }; } MultiCheckTreeLeafBox.tag = 'MultiCheckTreeLeafBox'.toLowerCase(); MultiCheckTreeLeafBox.render = function () { return (0,ACore._)({ tag: Follower/* default */.Z, attr: { tabindex: 0 }, class: ['as-select-tree-leaf-box', 'as-select-list-box'], extendEvent: ['change'], child: [ { class: 'as-select-list-box-search-ctn', child: 'searchtextinput' }, { class: ['as-bscroller', 'as-select-list-box-scroller', 'as-select-tree-leaf-box-content'], child: [] }, 'attachhook.as-dom-signal' ], props: { anchor: [1, 6, 2, 5] } }); }; MultiCheckTreeLeafBox.prototype.focus = js_SelectListBox.prototype.focus; MultiCheckTreeLeafBox.prototype._initControl = function () { this.$searchInput = (0,ACore.$)('searchtextinput', this) .on('stoptyping', this.eventHandler.searchModify); }; MultiCheckTreeLeafBox.prototype.resetSearchState = function () { var value = this.$searchInput.value; if (value.length > 0) { this.$searchInput.value = ''; if (value.trim().length) { this.$content.clearChild(); this.$content.addChild(this.$items); this.$dislayItems = this.$items; this.$dislayItemByValue = this.$itemByValue; this._updateSelectedItems(); } } this.updatePosition(); }; MultiCheckTreeLeafBox.prototype._findFirstLeaf = function () { var found = false; function visit(item) { if (item.isLeaf) { found = item; return true; } if (item.items && item.items.length > 0) { item.items.some(visit); } return !!found; } this._items.some(visit); return found; }; MultiCheckTreeLeafBox.prototype._makeTree = function (item, dict, savedStatus) { var self = this; var status = 'none'; var isLeaf = item.isLeaf; if (item.items && item.items.length > 0) { status = 'close'; } if (MultiCheckTreeLeafBox_isBranchStatus(status) && MultiCheckTreeLeafBox_isBranchStatus(savedStatus[item.value])) { status = savedStatus[item.value]; } var treeElt = (0,ACore._)({ tag: ExpTree/* default.tag */.ZP.tag, class: 'as-select-tree-leaf-item', props: { name: item.text, desc: item.desc, icon: item.icon, status: status, itemData: item }, on: { 'statuschange': this.updatePosition.bind(this) } }); var nodeElt = treeElt.getNode().on({ press: function (event) { if (MultiCheckTreeLeafBox_isBranchStatus(treeElt.status)) { treeElt.status = MultiCheckTreeLeafBox_invertStatus(treeElt.status) savedStatus[item.value] = treeElt.status; self.updatePosition(); } else if (isLeaf) { if (!(0,EventEmitter/* hitElement */.EY)(checkboxElt, event)) { var checked = !checkboxElt.checked; checkboxElt.checked = checked; var idx = self._values.indexOf(item.value); var changed = false; if (checked && idx < 0) { changed = true; self._values.push(item.value); } else if (!checked && idx >= 0) { changed = true; self._values.splice(idx, 1); } if (changed) self.emit('change', { item: item, target: self, itemElt: treeElt, originalEvent: event }, self); } } } }); var checkboxElt = null; if (isLeaf) { checkboxElt = (0,ACore._)({ tag: CheckBoxInput/* default.tag */.Z.tag, on: { change: function (event) { var checked = checkboxElt.checked; var idx = self._values.indexOf(item.value); var changed = false; if (checked && idx < 0) { changed = true; self._values.push(item.value); } else if (!checked && idx >= 0) { changed = true; self._values.splice(idx, 1); } if (changed) self.emit('change', { item: item, target: self, itemElt: treeElt, originalEvent: event }, self); } } }); nodeElt.addChildAfter(checkboxElt, nodeElt.$toggleIcon); treeElt.$checkbox = checkboxElt; } if (dict) { if (dict[item.value] && !this.warned) { this.warned = true; console.warn(this, 'has duplicated value, element will not work correctly!', item); } dict[item.value] = treeElt; } if (isLeaf) { treeElt.addClass('as-is-leaf'); } if (item.items && item.items.length > 0) { item.items.forEach(function (item1) { treeElt.addChild(self._makeTree(item1, dict, savedStatus)); }); } return treeElt; }; MultiCheckTreeLeafBox.prototype._estimateItemWidth = function (item, level) { var width = 12;//padding width += 12 * level; width += 14.7 + 5;//toggle icon if (item.icon) width += 21;//icon width += 7 + (0,utils.estimateWidth14)(item.text) + 5 + 7;//margin-text if (item.desc) width += 6 + (0,utils.estimateWidth14)(item.desc) * 0.85; if (item.isLeaf) width += 16; return width; }; MultiCheckTreeLeafBox.prototype.viewToSelected = function () { var selectedNode = this.$selectedItem; if (!selectedNode) return; selectedNode.scrollIntoView(); var parent = selectedNode.getParent(); while (parent && parent.getParent) { if (parent.status === 'close') { parent.getNode().emit('press'); } parent = parent.getParent(); } }; MultiCheckTreeLeafBox.prototype._calcEstimateSize = function (items) { var self = this; var width = 0; var height = 0; function visit(item, level) { var itemWidth = self._estimateItemWidth(item, level); width = Math.max(width, itemWidth); height += 28; if (item.items && item.items.length) { item.items.forEach(function (item) { visit(item, level + 1); }); } } items.forEach(function (item) { visit(item, 0); }); return { width: width, height: height }; }; MultiCheckTreeLeafBox.prototype._updateSelectedItems = function () { var dict = this._values.reduce(function (ac, cr) { ac[cr] = true; return ac; }, {}); var itemElt; for (var val in this.$dislayItemByValue) { itemElt = this.$dislayItemByValue[val]; if (itemElt.$checkbox) { itemElt.$checkbox.checked = !!dict[itemElt.itemData.value]; } } }; MultiCheckTreeLeafBox.prototype.findItemByValue = function (value) { var itemElt = this.$itemByValue[value]; if (!itemElt) return null; return itemElt.itemData; }; MultiCheckTreeLeafBox.property = {}; MultiCheckTreeLeafBox.eventHandler = {}; MultiCheckTreeLeafBox.property.items = { /*** * @this MultiCheckTreeLeafBox * @param items */ set: function (items) { var self = this; this._savedStatus = {}; this._searchCache = {}; items = (0,utils.copySelectionItemArray)(items || [], { removeNoView: true }); this._items = items; (0,search/* prepareSearchForList */.Lb)(items); this.$content.clearChild(); this.$itemByValue = {}; this.$dislayItemByValue = this.$itemByValue; this.$items = items.map(function (item) { return self._makeTree(item, self.$itemByValue, self._savedStatus); }); this.$dislayItems = this.$items; this.$content.addChild(this.$items); this.estimateSize = this._calcEstimateSize(items); this.addStyle('--select-list-estimate-width', this.estimateSize.width + 'px'); this._updateSelectedItems(); this.updatePosition(); }, get: function () { return this._items; } }; MultiCheckTreeLeafBox.property.values = { set: function (values) { this._values.splice(0, this._values.length); values = values || []; var arr = this._values; values.reduce(function (ac, cr) { if (!ac[cr]) { ac[cr] = true; arr.push(cr); } return ac; }, {}); this._updateSelectedItems(); }, get: function () { return this._values; } }; MultiCheckTreeLeafBox.property.enableSearch = js_SelectListBox.property.enableSearch; MultiCheckTreeLeafBox.prototype._search = function (query) { var self = this; var queryItem = (0,search/* default */.ZP)({ text: query }); var minScore = Infinity; var maxScore = -Infinity; function makeScoreTree(item) { var holder = { item: item, score: (0,search/* calcItemMatchScore */.lk)(queryItem, item), childrenScore: 0, children: [] }; minScore = Math.min(minScore, holder.score); maxScore = Math.max(maxScore, holder.score); var children; if (item.items && item.items.length > 0) { children = item.items.map(makeScoreTree); holder.children = children; holder.childrenScore = holder.children.reduce(function (ac, cr) { return Math.max(ac, cr.score, cr.childrenScore); }, 0); } return holder; } var treeScores = this._items.map(makeScoreTree); var midScore = (maxScore + minScore) / 2; var savedStatus = {}; function filterTree(scoredTrees, ignore) { return scoredTrees.filter(function (holder) { return ignore || holder.score >= midScore || holder.childrenScore >= midScore; }).map(function makeTree(holder) { var item = Object.assign({}, holder.item); if (!ignore && holder.children && holder.children.length > 0) { if (holder.childrenScore >= midScore) { savedStatus[item.value] = 'open'; item.items = filterTree(holder.children, false); } else { savedStatus[item.value] = 'close'; item.items = filterTree(holder.children, true); } } return item; }); } var resultItems = filterTree(treeScores, false); var dict = {}; var $items = resultItems.map(function (item) { return self._makeTree(item, dict, savedStatus); }); return { $items: $items, items: resultItems, savedStatus: Object.assign({}, savedStatus), originSavedStatus: savedStatus, dict: dict }; } /*** * @this MultiCheckTreeLeafBox */ MultiCheckTreeLeafBox.eventHandler.searchModify = function () { var query = this.$searchInput.value.trim(); if (query.length === 0) { this.$content.clearChild().addChild(this.$items); this.$dislayItemByValue = this.$itemByValue; this.$dislayItems = this.$items; this._updateSelectedItems(); this.updatePosition(); return; } if (!this._searchCache[query]) { this._searchCache[query] = this._search(query); } var searchData = this._searchCache[query]; searchData.savedStatus = Object.assign(searchData.savedStatus, searchData.originSavedStatus); for (var val in searchData.dict) { if (MultiCheckTreeLeafBox_isBranchStatus(searchData.dict[val].status)) { if (searchData.savedStatus[val]) { searchData.dict[val].status = searchData.savedStatus[val] } } } this.$content.clearChild() .addChild(searchData.$items); this.$dislayItemByValue = searchData.dict; this.$dislayItems = searchData.$items; this._updateSelectedItems(); this.updatePosition(); }; ACore/* default.install */.Z.install(MultiCheckTreeLeafBox); /* harmony default export */ const js_MultiCheckTreeLeafBox = (MultiCheckTreeLeafBox); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MultiCheckTreeLeafMenu.js /**** * Only leafs have checkbox * @extends AElement * @constructor */ function MultiCheckTreeLeafMenu() { (0,MultiLanguageCSS/* loadLanguageModule */.q)(); this.$selectBox = (0,ACore._)({ tag: js_MultiCheckTreeLeafBox.tag, on: { change: this.eventHandler.selectBoxChange, preupdateposition: this.eventHandler.preUpdateListPosition } }); this.$selectlistBox = this.$selectBox; OOP/* default.drillProperty */.ZP.drillProperty(this, this.$selectBox, 'enableSearch'); this.on('mousedown', this.eventHandler.click); this.$itemCtn = (0,ACore.$)('.as-multi-select-menu-item-ctn', this); this.boxCtrl = new STLBoxController(this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.boxCtrl, 'isFocus'); } MultiCheckTreeLeafMenu.tag = 'MultiCheckTreeLeafMenu'.toLowerCase(); MultiCheckTreeLeafMenu.render = function () { return (0,ACore._)({ class: ['as-multi-select-menu', 'as-multi-check-tree-leaf-menu'], extendEvent: ['change'], attr: { tabindex: '1' }, child: [ { attr: { 'data-ml-key': 'txt_select_value' }, class: ['as-multi-select-menu-item-ctn', 'as-bscroller'] }, { tag: 'button', class: 'as-multi-select-menu-toggle-btn', child: 'dropdown-ico' }, 'attachhook' ] }); }; MultiCheckTreeLeafMenu.prototype._updateSelectedItems = function () { var values = this.$selectBox.values; while (this.$itemCtn.childNodes.length > values.length) { this.$itemCtn.removeChild(this.$itemCtn.lastChild); } while (this.$itemCtn.childNodes.length < values.length) { this.$itemCtn.addChild(this._makeItem()); } var item; for (var i = 0; i < values.length; ++i) { item = this.$selectBox.$itemByValue[values[i]] && this.$selectBox.$itemByValue[values[i]].itemData; if (item) { this.$itemCtn.childNodes[i].data = item; this.$itemCtn.childNodes[i].removeStyle('display', 'none'); } else { this.$itemCtn.childNodes[i].addStyle('display', 'none'); } } }; MultiCheckTreeLeafMenu.prototype._makeItem = function () { var itemElt = (0,ACore._)({ tag: js_SelectBoxItem.tag, }); itemElt.on('close', this.eventHandler.itemPressClose.bind(null, itemElt)); return itemElt; }; MultiCheckTreeLeafMenu.prototype.findItemByValue = function (value) { return this.$selectBox.findItemByValue(value); }; MultiCheckTreeLeafMenu.prototype.init = function (props) { props = props || {}; var cProps = Object.assign({}, props); if ('items' in props) { this.items = props.items; delete cProps.items; } if ('values' in props) { this.values = props.values; delete cProps.values; } Object.assign(this, cProps); }; MultiCheckTreeLeafMenu.property = {}; MultiCheckTreeLeafMenu.property.items = { set: function (items) { this.$selectBox.items = items; this.addStyle('--select-list-estimate-width', Math.max(145 + 20, this.$selectBox.estimateSize.width) + 'px'); this._updateSelectedItems(); }, get: function () { return this.$selectBox.items; } }; MultiCheckTreeLeafMenu.property.values = { set: function (values) { values = values || []; this.pendingValues = values; this.$selectBox.values = values; this._updateSelectedItems(); }, get: function () { if ('pendingValues' in this) return this.pendingValues; return this.$selectBox.values.slice().filter(value => { return !!this.$selectBox.$itemByValue[value]; }); } }; MultiCheckTreeLeafMenu.property.disabled = js_MultiSelectMenu.property.disabled; MultiCheckTreeLeafMenu.property.readOnly = js_MultiSelectMenu.property.readOnly; MultiCheckTreeLeafMenu.property.placeholder = { set: function (value) { if (value) { this.$itemCtn.attr('data-placeholder', value + ''); } else { this.$itemCtn.attr('data-placeholder', null); } }, get: function () { return this.$itemCtn.attr('data-placeholder'); } }; MultiCheckTreeLeafMenu.eventHandler = {}; MultiCheckTreeLeafMenu.eventHandler.clickOut = js_SelectTreeLeafMenu.eventHandler.clickOut; MultiCheckTreeLeafMenu.eventHandler.preUpdateListPosition = SelectMenu2.eventHandler.preUpdateListPosition; MultiCheckTreeLeafMenu.eventHandler.click = function (event) { if (!this.readOnly && (event.target === this || event.target === this.$itemCtn)) { this.isFocus = true; } }; MultiCheckTreeLeafMenu.eventHandler.selectBoxChange = function () { delete this.pendingValues; this._updateSelectedItems(); this.emit('change', { type: 'change', target: this }, this); }; MultiCheckTreeLeafMenu.eventHandler.itemPressClose = function (itemElt, event) { delete this.pendingValues; var item = itemElt.data; this.$selectBox.values = this.$selectBox.values.filter(function (value) { return value !== item.value; }); this._updateSelectedItems(); this.emit('change', { type: 'change', target: this }, this); }; ACore/* default.install */.Z.install(MultiCheckTreeLeafMenu); /* harmony default export */ const js_MultiCheckTreeLeafMenu = (MultiCheckTreeLeafMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/filelistinput.css var filelistinput = __webpack_require__(7288); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/FileListItem.js /*** * @extends AElement * @constructor */ function FileListItem() { this.$parent = null; this.$icon = (0,ACore.$)('.as-file-list-item-icon', this); this.$name = (0,ACore.$)('.as-file-list-item-name', this); this.$quickMenuBtn = (0,ACore.$)('.as-file-list-item-quick-btn', this); this.$check = (0,ACore.$)('.as-file-list-item-check', this); this.value = null; this.fileType = null; this.fileName = ''; OOP/* default.drillProperty */.ZP.drillProperty(this, this.$check, 'checked'); this.on('click', this.eventHandler.click); QuickMenu/* default.toggleWhenClick */.Z.toggleWhenClick(this.$quickMenuBtn, { getMenuProps: () => { var list = this.parentElement; if (list.disabled) return; var self = this; var itemElt = this var menuItems = []; menuItems.push({ text: LanguageSystem/* default.getText */.ZP.getText('txt_download') || "Download", icon: 'span.mdi.mdi-download', cmd: 'download' }); if (!list.readOnly) { if (itemElt) menuItems.push({ text: LanguageSystem/* default.getText */.ZP.getText('txt_delete') || "Delete", icon: 'span.mdi.mdi-delete', cmd: 'delete' }); menuItems.push( { text: LanguageSystem/* default.getText */.ZP.getText('txt_delete_all') || "Delete All", icon: 'span.mdi.mdi-delete-empty', cmd: 'delete_all' }); } return { items: menuItems }; }, onSelect: function (menuItem) { var itemElt = this; var self = this.parentElement; var files; switch (menuItem.cmd) { case 'download': self.downloadFileItemElt(itemElt); break; case 'delete': self.deleteFileItemElt(itemElt); self.emit('change', { type: 'change', item: itemElt.fileData, target: this, action: 'delete' }, this); break; case 'delete_all': files = self.files; self.files = []; self.emit('change', { type: 'change', items: files, target: this, action: 'delete_all' }, this); break; } }.bind(this) }); this.$check.on('change', function (event) { if (this.$parent) { this.$parent.emit('check', { target: this.$parent, elt: this, type: 'check' }, this.$parent); } }.bind(this)); /*** * @name checked * @type {boolean} * @memberOf FileListItem# */ } FileListItem.tag = 'FileListItem'.toLowerCase(); FileListItem.render = function () { return (0,ACore._)({ class: 'as-file-list-item', child: [ { tag: CheckBoxInput/* default */.Z, class: 'as-file-list-item-check' }, { tag: 'img', class: 'as-file-list-item-icon', props: { src: MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + 'blank' + '.svg' } }, { class: 'as-file-list-item-name', child: { text: '..' } }, { tag: 'button', class: 'as-file-list-item-quick-btn', child: 'span.mdi.mdi-dots-vertical' } ] }); }; FileListItem.property = {}; FileListItem.property.fileType = { set: function (value) { this._fileType = value; if (value) { if (catalog.indexOf(value) >= 0) this.$icon.src = MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + value + '.svg'; else this.$icon.src = MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + 'blank' + '.svg'; } else { this.$icon.src = MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + 'blank' + '.svg'; } }, get: function () { return this._fileType; } }; FileListItem.property.fileName = { set: function (value) { this.$name.firstChild.data = value + ''; }, get: function () { return this.$name.firstChild.data; } }; FileListItem.property.value = { set: function (value) { value = value || null; var info = (0,utils.fileInfoOf)(value); var type = info.type || null; var size = info.size || null; var name = info.name || null; this._value = value; this.fileSize = size; this.fileName = name; this.fileType = type; if (value) { this.addClass('as-has-value'); } else { this.removeClass('as-has-value'); } }, get: function () { return this._value; } }; FileListItem.eventHandler = {}; /*** * @this FileListItem * @param event */ FileListItem.eventHandler.click = function (event) { if (!(0,EventEmitter/* isMouseLeft */.FQ)(event)) return; if ((0,EventEmitter/* hitElement */.EY)(this.$check, event) || (0,EventEmitter/* hitElement */.EY)(this.$quickMenuBtn, event)) return; if (this.$parent && this.$parent.showCheck) { this.$check.checked = !this.$check.checked; this.$check.notifyChange(); } }; ACore/* default.install */.Z.install(FileListItem); /* harmony default export */ const js_FileListItem = (FileListItem); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/FileListInput.js /*** * @extends AElement * @constructor */ function FileListInput() { ContextMenu/* default.auto */.Z.auto(); this.$add = (0,ACore.$)('.as-file-list-input-add', this); this.$attachhook = (0,ACore.$)('attachhook', this); this.$attachhook.requestUpdateSize = this.updateSize.bind(this); this.$attachhook.on('attached', function () { ResizeSystem/* default.add */.Z.add(this); this.requestUpdateSize(); }); this.on('filedrop', this.eventHandler.input_fileDrop); this.on('contextmenu', this.eventHandler.itemContext); this.$addedFile = (0,ACore.$)('input', this.$add) .on('change', this.eventHandler.clickAdd); /*** * * @type {FileInputBox[]} */ this.$fileItems = []; this.$activeItem = null; this._files = []; /*** * @name files * @memberOf FileListInput# * @type {*} * */ /*** * @name readOnly * @memberOf FileListInput# * @type {boolean} */ /*** * @name disabled * @memberOf FileListInput# * @type {boolean} */ /*** * @name multiple * @memberOf FileListInput# * @type {boolean} */ /*** * @name droppable * @memberOf FileListInput# * @type {boolean} */ } FileListInput.tag = 'FileListInput'.toLowerCase(); FileListInput.render = function () { return (0,ACore._)({ tag: DropZone/* default.tag */.Z.tag, class: ['as-file-list-input', 'as-bscroller', 'as-empty', 'as-droppable'], extendEvent: ['change', 'contextmenu', 'check'], child: [ { tag: 'label', class: 'as-file-list-input-add', child: [ { tag: 'input', attr: { type: 'file', accept: '*', title: null } }, { class: 'as-file-list-input-add-icon-ctn', child: 'span.mdi.mdi-upload-outline' }, 'attachhook' ] }, { tag: 'span', class: 'as-file-list-drag-file-text', child: { text: '(Kéo thả file vào đây để tải lên)' } }, { class: 'as-file-list-input-upload-overlay', child: 'span.mdi.mdi-upload' } ] }); }; FileListInput.prototype.defaultChecked = false; FileListInput.prototype.updateSize = function () { var bound, px, n; var requireWidth = this.getComputedStyleValue('--item-require-width') || '300px'; if (requireWidth.match(/%$/)) { this.addStyle('--item-width', requireWidth); } else if (requireWidth.match(/px$/)) { bound = this.getBoundingClientRect(); px = parseFloat(requireWidth.replace('px', '')); if (!isNaN(px) && px > 0) { n = Math.max(1, Math.floor((bound.width - 10 - 2) / px)); this.addStyle('--item-width', Math.floor(100 / n) + '%'); } else { this.removeStyle('--item-width'); } } else { this.removeStyle('--item-width'); } }; FileListInput.prototype._makeFileItem = function (file) { var fileElt = (0,ACore._)({ tag: js_FileListItem.tag, props: { $parent: this, allowUpload: false, fileData: file, checked: this.defaultChecked } }); fileElt.on('mousedown', this.eventHandler.mouseDownItem.bind(this, fileElt)); fileElt.value = file; return fileElt; }; FileListInput.prototype.add = function (file, idx) { if (!(0,utils.isNaturalNumber)(idx)) idx = Infinity; idx = Math.min(this.$fileItems.length, idx); var fileElt = this._makeFileItem(file); var bf = this.$fileItems[idx]; if (bf) { this.$fileItems.splice(idx, 0, fileElt); this._files.splice(idx, 0, file); this.addChildBefore(fileElt, bf); } else { this.$fileItems.push(fileElt); this._files.push(file); this.addChildBefore(fileElt, this.$add); } this._updateCountClass(); }; FileListInput.prototype._updateCountClass = function () { if (this._files.length > 0) { this.removeClass('as-empty'); } else { this.addClass('as-empty'); } }; FileListInput.prototype.activeFileItemElt = function (itemElt) { if (this.$activeItem !== itemElt) { if (this.$activeItem) { this.$activeItem.removeClass('as-active'); } this.$activeItem = itemElt; if (this.$activeItem) { this.$activeItem.addClass('as-active'); } } }; FileListInput.prototype.downloadFileItemElt = function (fileElt) { var fileData = fileElt.fileData; var name = fileData.name || fileElt.fileName; var file; if (fileData instanceof File || fileData instanceof Blob) { file = fileData; } else if (typeof fileData === 'object') { if (fileData.url) file = fileData.url; } else if (typeof fileData === "string") { file = fileData; } if (file) { (0,FileSaver.saveAs)(file, name); } }; FileListInput.prototype.deleteFileItemElt = function (fileElt) { var fileData = fileElt.fileData; var idx = this._files.indexOf(fileData); if (idx >= 0) { this._files.splice(idx, 1); } fileElt.remove(); }; FileListInput.prototype._findFileItemElt = function (target) { while (target && target !== this) { if (target.hasClass && target.hasClass('as-file-list-item')) { return target; } target = target.parentElement; } return null; }; FileListInput.prototype.getChildren = function () { return this.$fileItems.slice(); }; FileListInput.property = {}; FileListInput.property.files = { /*** * @this FileListInput * @param files */ set: function (files) { files = files || []; files = files.slice(); var self = this; this.$fileItems.forEach(function (fileElt) { fileElt.remove(); }); files = files || []; this._files = files; this.$fileItems = files.map(function (file) { var elt = self._makeFileItem(file); self.addChildBefore(elt, self.$add); return elt; }); this._updateCountClass(); }, /*** * @this FileListInput */ get: function () { return (this._files ||[]).slice(); } }; FileListInput.property.readOnly = { set: function (value) { value = !!value; if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } this.$fileItems.forEach(function (fileElt) { fileElt.removable = !value; }); }, get: function () { return this.hasClass('as-read-only'); } }; FileListInput.property.droppable = { set: function (value) { value = !!value; if (value) { this.addClass('as-droppable'); } else { this.removeClass('as-droppable'); } this.$fileItems.forEach(function (fileElt) { fileElt.removable = !value; }); }, get: function () { return this.hasClass('as-droppable'); } }; FileListInput.property.multiple = { set: function (value) { this.$addedFile.multiple = !!value; }, get: function () { return this.$addedFile.multiple; } }; FileListInput.property.accept = { set: function (value) { if (!value) value = null; this.$addedFile.attr('accept', value + ''); }, get: function () { return this.$addedFile.attr('accept') || null; } }; FileListInput.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } }; FileListInput.property.showCheck = { set: function (value) { if (value) { this.addClass('as-show-check'); } else { this.removeClass('as-show-check'); } }, get: function () { return this.hasClass('as-show-check'); } }; ACore/* default.install */.Z.install(FileListInput); /*** * @memberOf FileListInput# * @type {{}} */ FileListInput.eventHandler = {}; FileListInput.eventHandler.clickAdd = function (event) { var files = Array.prototype.slice.call(this.$addedFile.files); this.$addedFile.files = null; if (files.length === 0) return; for (var i = 0; i < files.length; ++i) { this.add(files[i]); } this.emit('change', { files: files, type: 'change', target: this, originalEvent: event, action: 'add' }, this); }; /*** * @this FileListInput * @param itemElt * @param event */ FileListInput.eventHandler.mouseDownItem = function (itemElt, event) { this.activeFileItemElt(itemElt); }; FileListInput.eventHandler.input_fileDrop = function (event) { if (this.readOnly || this.disabled) return; var self = this; var files = Array.prototype.slice.call(event.files); if (files.length === 0) return; if (!this.multiple) files = files.slice(0, 1); var accept = this.accept; files = files.filter(function (file) { return (0,utils.fileAccept)(accept, file.type) || (0,utils.fileAccept)(accept, file.name); }); if (files.length > 0) { files.forEach(function (file) { self.add(file); }); this.emit('change', { type: 'change', files: files, target: this, action: 'drop' }, this); } }; /*** * @this FileListInput * @param itemElt * @param event */ FileListInput.eventHandler.itemContext = function (event) { if (this.disabled) return; var self = this; var itemElt = this._findFileItemElt(event.target); var menuItems = []; if (itemElt) { menuItems.push({ text: LanguageSystem/* default.getText */.ZP.getText('txt_download') || "Download", icon: 'span.mdi.mdi-download', cmd: 'download' }); } if (!this.readOnly) { if (itemElt) menuItems.push({ text: LanguageSystem/* default.getText */.ZP.getText('txt_delete') || "Delete", icon: 'span.mdi.mdi-delete', cmd: 'delete' }); menuItems.push( { text: LanguageSystem/* default.getText */.ZP.getText('txt_delete_all') || "Delete All", icon: 'span.mdi.mdi-delete-empty', cmd: 'delete_all' }); } if (menuItems.length > 0) { event.showContextMenu({ items: menuItems }, function (event) { var files; switch (event.menuItem.cmd) { case 'download': self.downloadFileItemElt(itemElt); break; case 'delete': self.deleteFileItemElt(itemElt); self.emit('change', { type: 'change', item: itemElt.fileData, target: this, action: 'delete' }, this); break; case 'delete_all': files = self.files; self.files = []; self.emit('change', { type: 'change', items: files, target: this, action: 'delete_all' }, this); break; } }); } }; /* harmony default export */ const js_FileListInput = (FileListInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dateinyearinput.css var dateinyearinput = __webpack_require__(8563); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DateInYearPicker.js /*** * @extends AElement * @constructor */ function DateInYearPicker() { this._month = null; this._date = null; this.$domSignal = (0,ACore._)('attachhook').addTo(this); this.domSignal = new DomSignal/* default */.ZP(this.$domSignal); this._setupMonth(); this._setupDate(); } DateInYearPicker.tag = 'DateInYearPicker'.toLowerCase(); DateInYearPicker.render = function () { return (0,ACore._)({ extendEvent: ['change'], class: 'as-date-in-year-picker', child: [ { class: 'as-date-in-year-picker-table', child: [ { class: 'as-date-in-year-picker-row', child: [ { class: 'as-date-in-year-picker-cell', child: {tag: 'span', child: {text: 'Month'}} }, { class: 'as-date-in-year-picker-cell', child: {tag: 'span', child: {text: 'Date'}} } ] }, { class: 'as-date-in-year-picker-row', child: [ { class: 'as-date-in-year-picker-cell', child: { class: 'as-date-in-year-picker-month-col', child: [ { class: 'as-date-in-year-picker-month-viewport', child: [ { class: 'as-date-in-year-picker-month-scroller', child: Array(36).fill(null).map(function (u, i) { return { tag: 'button', class: 'as-date-in-year-picker-month', child: { tag: 'span', child: {text: 1 + i % 12 + ''} }, props: { monthL: i % 12 } } }) } ] }, { tag: 'button', class: ['as-date-in-year-picker-month-btn', 'as-up'], child: 'span.mdi.mdi-chevron-up' }, { tag: 'button', class: ['as-date-in-year-picker-month-btn', 'as-down'], child: 'span.mdi.mdi-chevron-down' } ] } }, { class: 'as-date-in-year-picker-cell', child: { class: 'as-date-in-year-picker-days', child: Array(5).fill(null).map(function (u, i) { return { class: 'as-date-in-year-picker-week', child: Array(7).fill(null).map(function (u1, j) { return { class: 'as-date-in-year-picker-day', child: { tag: 'span', child: {text: i * 7 + j + 1 + ''} } }; }) }; }) } } ] } ] } ] }); }; DateInYearPicker.prototype._setupMonth = function () { this._monthScrollDy = 0; this.$monthScroller = (0,ACore.$)('.as-date-in-year-picker-month-scroller', this) .on('scroll', this.eventHandler.monthScroll) .once('wheel', this.eventHandler.monthScroll); this.$monthUpBtn = (0,ACore.$)('.as-date-in-year-picker-month-btn.as-up', this) .on('pointerdown', this.eventHandler.monthPressDown); this.$monthDownBtn = (0,ACore.$)('.as-date-in-year-picker-month-btn.as-down', this) .on('pointerdown', this.eventHandler.monthPressUp); this.$months = (0,ACore.$$)('.as-date-in-year-picker-month', this); for (var i = 0; i < 36; ++i) this.$months[i].on('click', this.eventHandler.clickMonth.bind(this, i % 12)); }; DateInYearPicker.prototype._setupDate = function () { this.$days = (0,ACore.$$)('.as-date-in-year-picker-day', this); var i; for (i = 31; i < 35; ++i) { this.$days[i].addStyle('visibility', 'hidden'); } for (i = 0; i < 31; ++i) { this.$days[i].on('click', this.eventHandler.clickDate.bind(this, i + 1)); } }; DateInYearPicker.prototype.scrollIntoSelected = function () { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('scrollIntoSelected'); return; } var d = Infinity; var dy; var y; var ly, hy; var lineHeight = this.getFontSize() * 2; if (this._month !== null) { for (var k = 0; k < 3; ++k) { y = this._month * lineHeight + lineHeight * 12 * k; ly = this.$monthScroller.scrollTop; hy = ly + lineHeight * 4 - lineHeight; if (ly <= y && hy >= y) { dy = 0; break; } if (y < ly && ly - y < d) { d = ly - y; dy = y - ly; } if (y > hy && y - hy < d) { d = y - hy; dy = y - hy; } } this.$monthScroller.scrollTop += dy; } }; /*** * @memberOf DateInYearPicker# * @type {{}} */ DateInYearPicker.eventHandler = {}; /*** * @this DateInYearPicker */ DateInYearPicker.eventHandler.monthPressDown = function () { document.addEventListener('pointerup', this.eventHandler.monthRelease); this._monthScrollDy = -8; this.eventHandler.monthTick(); }; /** * @this DateInYearPicker */ DateInYearPicker.eventHandler.monthPressUp = function () { document.addEventListener('pointerup', this.eventHandler.monthRelease); this._monthScrollDy = 8; this.eventHandler.monthTick(); }; /** * @this DateInYearPicker */ DateInYearPicker.eventHandler.monthTick = function () { if (!this._monthScrollDy) return; var d = this._monthScrollDy; var fontSize = this.getFontSize(); if (this.$monthScroller.scrollTop + d < 0) d += fontSize * 2 * 12; this.$monthScroller.scrollTop += d; setTimeout(this.eventHandler.monthTick, 30); }; DateInYearPicker.eventHandler.monthRelease = function () { document.removeEventListener('pointerup', this.eventHandler.monthRelease); this._monthScrollDy = 0; }; /** * @this DateInYearPicker */ DateInYearPicker.eventHandler.monthScroll = function () { var scrollTop = this.$monthScroller.scrollTop; var fontSize = this.getFontSize(); if (scrollTop < fontSize * 2 * 12) { this.$monthScroller.scrollTop += fontSize * 2 * 12; } else if (scrollTop > fontSize * 2 * 12 * 2) { this.$monthScroller.scrollTop -= fontSize * 2 * 12; } }; /** * @this DateInYearPicker */ DateInYearPicker.eventHandler.clickMonth = function (month, event) { var pDate = this.date; if (this.month === month) return; this.month = month; this.emit('change', {type: 'change', originalEvent: event, target: this}, this); }; /** * @this DateInYearPicker */ DateInYearPicker.eventHandler.clickDate = function (date, event) { if (this.date === date) return this.date = date; this.emit('change', {type: 'change', originalEvent: event, target: this}, this); }; DateInYearPicker.property = {}; DateInYearPicker.property.date = { set: function (value) { if (typeof value !== 'number') value = null; var cM, dim; if (this._month === null) { dim = 31; } else { cM = new Date(2000, this._month, 1); dim = (0,datetime.compareDate)((0,datetime.nextMonth)(cM), cM); } if (typeof value === "number") value = Math.max(1, Math.min(dim, Math.floor(value))); if (isNaN(value)) value = null; if (this._date === value) return; if (this._date !== null) { this.$days[this._date - 1].removeClass('as-selected'); } this._date = value; if (this._date !== null) { this.$days[this._date - 1].addClass('as-selected'); } }, get: function () { return this._date; } }; DateInYearPicker.property.month = { /*** * @this DateInYearPicker * @param value */ set: function (value) { if (typeof value == 'number') { value = Math.max(0, Math.min(11, Math.floor(value))); } else value = null; if (isNaN(value)) value = null; if (this._month === value) return; if (this._month !== null) { this.$months[this._month].removeClass('as-selected'); this.$months[this._month + 12].removeClass('as-selected'); this.$months[this._month + 24].removeClass('as-selected'); } this._month = value; var cM, dim; if (this._month !== null) { this.$months[this._month].addClass('as-selected'); this.$months[this._month + 12].addClass('as-selected'); this.$months[this._month + 24].addClass('as-selected'); this.scrollIntoSelected(); cM = new Date(2000, this._month, 1); dim = (0,datetime.compareDate)((0,datetime.nextMonth)(cM), cM); } else { dim = 31; } for (var i = 29; i < 31; ++i) { if (i < dim) { this.$days[i].removeStyle('visibility'); } else { this.$days[i].addStyle('visibility', 'hidden'); } } this.date = Math.min(this.date, dim); }, get: function () { return this._month; } }; DateInYearPicker.property.value = { set: function (value) { value = value || {month: null, date: null}; this.month = value.month; this.date = value.date; }, get: function () { return {month: this.month, date: this.date}; } }; ACore/* default.install */.Z.install(DateInYearPicker); /* harmony default export */ const js_DateInYearPicker = (DateInYearPicker); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DateInYearInput.js /*** * @extends AElement * @constructor */ function DateInYearInput() { this._format = 'dd/MM'; this._value = null; this.$clearBtn = (0,ACore.$)('.as-time-input-clear-btn', this) .on('click', this.clear.bind(this, true)); this.$input = (0,ACore.$)('input', this); this.on('click', this.eventHandler.click); } DateInYearInput.tag = 'DateInYearInput'.toLowerCase(); DateInYearInput.render = function () { return (0,ACore._)({ extendEvent: ['change'], class: ['as-date-time-input', 'as-date-in-year-input', 'as-empty'], child: [ { tag: 'input', class: 'as-date-time-input-text', attr: { ondrop: "return false;", readOnly: true }, props: { value: 'dd/MM' } }, { tag: 'button', class: 'as-time-input-clear-btn', child: 'span.mdi.mdi-close-circle' }, { tag: 'button', class: 'as-date-time-input-icon-btn', child: 'span.mdi.mdi-calendar-today' } ] }); }; DateInYearInput.prototype.share = { $follower: null, $picker: null, $input: null }; DateInYearInput.prototype._preparePicker = function () { if (this.share.$picker) return; this.share.$picker = (0,ACore._)({ tag: js_DateInYearPicker.tag, class:'as-dropdown-box-common-style' }); this.share.$follower = (0,ACore._)({ tag: Follower/* default.tag */.Z.tag, class: 'as-date-in-year-follower', child: this.share.$picker }); }; DateInYearInput.prototype.clear = function (userAction, event) { var pValue = this.value; this.value = null; if (pValue) { this.emit('change', { type: 'change', action: 'clear', target: this, originalEvent: event }, this) } }; DateInYearInput.prototype._attachPicker = function () { this._preparePicker(); if (this.share.$input === this) return; if (this.share.$input) this.share.$input._releasePicker(); this.share.$input = this; this.share.$follower.addTo(document.body); this.share.$follower.followTarget = this; this.share.$follower.sponsorElement = this; this.share.$picker.value = this._value; this.share.$picker.on('change', this.eventHandler.pickerChange); setTimeout(function () { document.addEventListener('click', this.eventHandler.clickOut); }.bind(this), 0); }; DateInYearInput.prototype._releasePicker = function () { if (this.share.$input !== this) return; var cValue = this._value; var value = this.share.$picker.value; var nValue = this._normalizeValue(value); this.share.$input = null; this.share.$picker.followTarget = null; this.share.$follower.remove(); this.share.$picker.off('change', this.eventHandler.pickerChange); document.removeEventListener('click', this.eventHandler.clickOut); var changed = !cValue !== !nValue; if (nValue && !changed) { changed = cValue.date === nValue.date && cValue.month === nValue.month; } if (changed) { this._value = value; this.emit('change', { type: 'change', value: nValue, target: this }, this); } }; DateInYearInput.prototype._normalizeValue = function (value) { if (!value) return null; var m = Math.min(11, Math.max(0, Math.floor(value.month))); if (isNaN(m)) return null; var dim = (0,datetime.compareDate)((0,datetime.nextMonth)(new Date(2000, m, 1)), new Date(2000, m, 1)); var d = Math.min(dim, Math.max(1, Math.floor(value.date))); if (isNaN(d)) return null; return { date: d, month: m }; }; DateInYearInput.prototype._updateValueText = function () { var value = this._value; if (value) { this.$input.value = this._format.replace(new RegExp(datetime.DATE_TIME_TOKEN_RGX.source, 'g'), function (full) { switch (full) { case 'dd': case 'd': if ((0,utils.isRealNumber)(value.date)) { return (0,utils.zeroPadding)(value.date, full.length); } return full; case 'M': case 'MM': if ((0,utils.isRealNumber)(value.month)) { return (0,utils.zeroPadding)(value.month + 1, full.length); } return full; default: return full; } }); } else { this.$input.value = this._format; } if (this.$input.value === this._format) { this.addClass('as-empty'); } else { this.removeClass('as-empty'); } }; DateInYearInput.property = {}; DateInYearInput.property.value = { set: function (value) { value = this._normalizeValue(value); this._value = value; this._updateValueText(); }, get: function () { return this._normalizeValue(this._value); } }; DateInYearInput.property.notNull = { set: function (value) { if (value) { this.addClass('as-must-not-null'); } else { this.removeClass('as-must-not-null'); } }, get: function () { return this.hasClass('as-must-not-null'); } }; DateInYearInput.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); this.$input.disabled = true; } else { this.removeClass('as-disabled'); this.$input.disabled = false; } }, get: function () { return this.hasClass('as-disabled'); } }; DateInYearInput.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); this.$input.readOnly = true; } else { this.removeClass('as-read-only'); this.$input.readOnly = false; } }, get: function () { return this.hasClass('as-read-only'); } }; /*** * @memberOf DateInYearInput# * @type {{}} */ DateInYearInput.eventHandler = {}; /*** * @this DateInYearInput * @param event */ DateInYearInput.eventHandler.click = function (event) { if (this.readOnly || (0,EventEmitter/* hitElement */.EY)(this.$clearBtn, event)) return; this._attachPicker(); }; /*** * @this DateInYearInput * @param event */ DateInYearInput.eventHandler.clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.share.$follower, event)) return; this._releasePicker(); }; DateInYearInput.eventHandler.pickerChange = function () { this._value = this.share.$picker.value; this._updateValueText(); }; ACore/* default.install */.Z.install(DateInYearInput); /* harmony default export */ const js_DateInYearInput = (DateInYearInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dualselectmenu.css var dualselectmenu = __webpack_require__(9273); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DualSelectBox.js /*** * @extends Follower * @constructor */ function DualSelectBox() { this.domSignal = new DelaySignal/* default */.Z(); this.domSignal.on('scrollIntoSelected', this.scrollIntoSelected.bind(this)); this._items = []; this._value = [null, null]; this.holderByValue = {}; this.$lists = (0,ACore.$$)('.as-dual-select-box-list', this); this.$searcTextInput = (0,ACore.$)('searchtextinput', this) .on('stoptyping', this.eventHandler.searchTextInputModify); this.$closeBtn = (0,ACore.$)('.as-select-list-box-close-btn', this) .on('click', this.eventHandler.clickCloseBtn); this.cView = new DualSelectView(this, this._items); this.searchedView = { '*': this.cView }; this.estimateSize = { width: 0, height: 0 }; this._emittedValue = [null, null]; /*** * @name strictValue * @type {boolean} * @memberOf DualSelectBox# */ /*** * @name enableSearch * @type {boolean} * @memberOf DualSelectBox# */ /*** * @name value * @type {Array} * @memberOf DualSelectBox# */ /*** * @name items * @type {Array} * @memberOf DualSelectBox# */ } DualSelectBox.tag = 'DualSelectBox'.toLowerCase(); DualSelectBox.render = function () { return (0,ACore._)({ tag: Follower/* default.tag */.Z.tag, class: 'as-dual-select-box', extendEvent: ['change', 'close'], child: [ { class: 'as-dual-select-box-search-ctn', child: { tag: 'searchtextinput' } }, { class: 'as-dual-select-box-list-ctn', child: [ { class: ['as-dual-select-box-list', 'absol-selectlist', 'as-bscroller'], }, { class: 'as-dual-select-box-arrow-ctn', child: 'span.mdi.mdi-menu-right' }, { class: ['as-dual-select-box-list', 'absol-selectlist', 'as-bscroller'] } ] }, { class: 'as-dropdown-box-footer', child: [ { class: 'as-dropdown-box-footer-right', child: [ { tag: 'a', class: 'as-select-list-box-close-btn', child: { text: LanguageSystem/* default.getText */.ZP.getText('txt_close') } } ] } ] } ] }); }; DualSelectBox.prototype._implicit = function (value) { if (value instanceof Array) { if (value.length > 2) value = value.slice(0, 2); else { value.push.apply(value, Array(2 - value.length).fill(null)); } } else { value = [null, null]; } return value; }; DualSelectBox.prototype._explicit = function (value) { value = value.slice(); var strictValue = this.strictValue; if (!this.holderByValue[value[0]]) { if (this._items.length > 0 && strictValue) { value[0] = this._items[0].value; } else { return null; } } if (!this.holderByValue[value[0]].child[value[1]]) { if (strictValue && this.holderByValue[value[0]].item.items && this.holderByValue[value[0]].item.items.length > 0) { value[1] = this.holderByValue[value[0]].item.items[0].value; } else { return null; } } if (value[0] === null || value[1] === null) { return null; } return value; }; DualSelectBox.prototype._notifyIfChange = function (event) { var value = this._explicit(this._value); if (value === this._emittedValue) return; if (!value !== !this._emittedValue || (value[0] !== this._emittedValue[0] || value[1] !== this._emittedValue[1])) { this.emit('change', { type: 'change', target: this, originalEvent: event }, this); } }; DualSelectBox.prototype._makeLeftItem = function (item) { var itemElt = (0,ACore._)({ class: 'absol-selectlist-item', child: { tag: 'span', class:'absol-selectlist-item-text', child: { text: item.text } } }); itemElt.itemData = item; itemElt.on('click', this.eventHandler.clickLeftItem.bind(this, itemElt)); return itemElt; }; DualSelectBox.prototype.makeRightItem = function (item) { var itemElt = (0,ACore._)({ class: 'absol-selectlist-item', child: { tag: 'span', class:'absol-selectlist-item-text', child: { text: item.text } } }); itemElt.itemData = item; itemElt.on('click', this.eventHandler.clickRightItem.bind(this, itemElt)); return itemElt; }; DualSelectBox.prototype._calcEstimateSize = function (items) { var fontSize = (0,ACore.$)(document.body).getFontSize(); var longestItem = null; var longestE14 = 0; var e14, i, j; var item, subItem; for (i = 0; i < items.length; ++i) { item = items[i]; e14 = (0,utils.estimateWidth14)(item.text); if (e14 > longestE14) { longestItem = item; longestE14 = e14; } } var leftTextWidth = longestItem ? (0,utils.measureText)(longestItem.text, '14px arial').width : 0; var maxN = items.length; for (i = 0; i < items.length; ++i) { item = items[i]; if (!item.items || item.items.length === 0) continue; maxN = Math.max(maxN, item.items.length); for (j = 0; j < item.items.length; ++j) { subItem = item.items[j]; e14 = (0,utils.estimateWidth14)(subItem.text); if (e14 > longestE14) { longestItem = subItem; longestE14 = e14; } } } var rightTextWidth = longestItem ? (0,utils.measureText)(longestItem.text, '14px arial').width : 0; return { width: (7 + leftTextWidth + 7 + 5 + 7 + 1 + 17 + 1 + 7 + rightTextWidth + 7 + 5 + 7 + 20) * fontSize / 14, height: maxN * 20 * fontSize / 14, textWidth: (leftTextWidth + rightTextWidth + 12) * fontSize / 14 } }; DualSelectBox.prototype.scrollIntoSelected = function () { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('scrollIntoSelected'); return; } if (this.cView && this.cView.$leftSelectedItem && this.cView.$leftSelectedItem.isDescendantOf(this.$lists[0])) { this.cView.$leftSelectedItem.scrollIntoView(); } if (this.cView && this.cView.$rightSelectedItem && this.cView.$rightSelectedItem.isDescendantOf(this.$lists[1])) { this.cView.$rightSelectedItem.scrollIntoView(); } }; DualSelectBox.prototype.focus = js_SelectListBox.prototype.focus; DualSelectBox.property = {}; DualSelectBox.property.items = { /*** * @this DualSelectBox * @param items */ set: function (items) { var self = this; items = items || []; (0,search/* prepareSearchForList */.Lb)(items); this._items = items; this.holderByValue = items.reduce(function (ac, cr) { ac[cr.value] = { item: cr, child: (cr.items || []).reduce(function (ac1, cr1) { ac1[cr1.value] = { item: cr1 } return ac1; }, {}) } return ac; }, {}); this.estimateSize = this._calcEstimateSize(items); this.addStyle('--dual-list-estimate-width', this.estimateSize.width + 'px'); this.searchedView = {}; this.cView = new DualSelectView(this, items); this.searchedView['*'] = this.cView; this.cView.toView(); }, get: function () { return this._items; } }; DualSelectBox.property.enableSearch = { set: function (value) { if (value) { this.addClass('as-enable-search'); } else { this.removeClass('as-enable-search'); } }, get: function () { return this.hasClass('as-enable-search'); } }; DualSelectBox.property.strictValue = { set: function (value) { if (value) { this.addClass('as-strict-value'); } else { this.removeClass('as-strict-value'); } if (this.cView) this.cView.updateViewByValue(); }, get: function () { return this.hasClass('as-strict-value'); } }; DualSelectBox.property.value = { /*** * @this DualSelectBox * @param value */ set: function (value) { this._value = this._implicit(value); if (this.cView) { this.cView.updateViewByValue(); this.cView.toRightList(); } this.scrollIntoSelected(); }, get: function () { return this._explicit(this._value); } }; /*** * @memberOf DualSelectBox# * @type {{}} */ DualSelectBox.eventHandler = {}; /*** * @this DualSelectBox * @param itemElt * @param event */ DualSelectBox.eventHandler.clickLeftItem = function (itemElt, event) { var item = itemElt.itemData; this._value[0] = item.value; this.cView.updateLeftSelectedItem(); this.cView.updateRightList(); this.cView.toRightList(); if (this.cView.$leftItemByValue[item.value] && this.cView.$leftItemByValue[item.value].itemData && this.cView.$leftItemByValue[item.value].itemData.items && this.cView.$leftItemByValue[item.value].itemData.items.length > 0) { this._value[1] = this.cView.$leftItemByValue[item.value].itemData.items[0].value; this.cView.updateRightSelectedItem(); } if (this.cView.$rightSelectedItem) { this.cView.$rightSelectedItem.scrollIntoView(); } this._notifyIfChange(event); }; /*** * @this DualSelectBox * @param itemElt * @param event */ DualSelectBox.eventHandler.clickRightItem = function (itemElt, event) { var item = itemElt.itemData; this._value[1] = item.value; this.cView.updateRightSelectedItem(); this._notifyIfChange(event); }; DualSelectBox.prototype.searchItemByText = function (text) { var items = this._items; var queryItem = (0,search/* default */.ZP)({ text: text }); var maxScore = 0; var holders = items.map(function (item) { var h = { item: item, itemScore: (0,search/* calcItemMatchScore */.lk)(queryItem, item), }; maxScore = Math.max(maxScore, h.itemScore); var childMaxScore = 0; if (item.items && item.items.length > 0) { h.child = item.items.map(function (cItem) { var cItemScore = (0,search/* calcItemMatchScore */.lk)(queryItem, cItem); maxScore = Math.max(maxScore, cItemScore); childMaxScore = Math.max(childMaxScore, cItemScore); return { item: cItem, itemScore: cItemScore }; }); h.childScore = childMaxScore; } return h; }); holders.sort(function (a, b) { return -Math.max(a.itemScore, a.childScore) + Math.max(b.itemScore, b.childScore) }); var midScore = maxScore / 2; holders = holders.filter(function (holder) { return Math.max(holder.itemScore, holder.childScore) >= midScore; }); return holders.map(function (holder) { var oldItem = holder.item; var item = { text: oldItem.text, value: oldItem.value }; var childHolders; if (holder.child) { childHolders = holder.child.slice(); childHolders.sort(function (a, b) { return -a.itemScore + b.itemScore; }); item.items = childHolders.map(function (cHolder) { return cHolder.item; }); item.isSearchItem = true; } return item; }); }; DualSelectBox.prototype.focus = function () { if (this.enableSearch) { this.$searcTextInput.focus(); } }; DualSelectBox.prototype.resetSearchState = function () { if (this.$searcTextInput.value.length === 0) return; this.$searcTextInput.value = ''; this.eventHandler.searchTextInputModify(); }; /*** * @this DualSelectBox */ DualSelectBox.eventHandler.searchTextInputModify = function () { var query = this.$searcTextInput.value.trim().replace(/\s+/, ' '); if (query.length === 0) query = '*'; var view = this.searchedView[query]; if (!view) { view = new DualSelectView(this, this.searchItemByText(query)); this.searchedView[query] = view; } this.cView = view; this.cView.updateLeftSelectedItem(); this.cView.updateRightSelectedItem(); view.toView(); this.$lists[0].scrollTop = 0; this.$lists[1].scrollTop = 0; if (query === '*') this.scrollIntoSelected(); }; DualSelectBox.eventHandler.clickCloseBtn = function (event) { this.emit('close', { type: 'close', target: this, originalEvent: event }, this); }; ACore/* default.install */.Z.install(DualSelectBox); /* harmony default export */ const js_DualSelectBox = (DualSelectBox); /*** * * @param {DualSelectBox} box * @param items * @constructor */ function DualSelectView(box, items) { var self = this; this.box = box; this.items = items; this.$leftItems = items.map(function (item) { return self.box._makeLeftItem(item); }); this.$leftItemByValue = this.$leftItems.reduce(function (ac, cr) { ac[cr.itemData.value] = cr; return ac; }, {}); this.$rightItems = []; this.$rightItemByValue = {}; this.$leftSelectedItem = null; this.$rightSelectedItem = null; this.updateViewByValue(); } DualSelectView.prototype.toView = function () { this.box.$lists[0].clearChild(); this.box.$lists[0].addChild(this.$leftItems); this.updateLeftSelectedItem(); this.toRightList(); }; DualSelectView.prototype.toRightList = function () { this.box.$lists[1].clearChild(); this.box.$lists[1].addChild(this.$rightItems); this.updateLeftSelectedItem(); }; DualSelectView.prototype.updateViewByValue = function () { this.updateLeftSelectedItem(); this.updateRightList(); }; DualSelectView.prototype.updateRightList = function () { var self = this; var leftValue = this.box._value[0]; var items = this.$leftItemByValue[leftValue] && this.$leftItemByValue[leftValue].itemData.items; if (items && items.length > 0) { this.$rightItems = items.map(function (item) { return self.box.makeRightItem(item); }); } else { this.$rightItems = []; } this.$rightItemByValue = this.$rightItems.reduce(function (ac, cr) { ac[cr.itemData.value] = cr; return ac; }, {}); this.updateRightSelectedItem(); }; DualSelectView.prototype.updateLeftSelectedItem = function () { if (this.$leftSelectedItem) { this.$leftSelectedItem.removeClass('as-selected'); } this.$leftSelectedItem = this.$leftItemByValue[this.box._value[0]] || null; if (this.$leftSelectedItem) { this.$leftSelectedItem.addClass('as-selected'); } }; DualSelectView.prototype.updateRightSelectedItem = function () { if (this.$rightSelectedItem) { this.$rightSelectedItem.removeClass('as-selected'); } this.$rightSelectedItem = this.$rightItemByValue[this.box._value[1]] || null; if (this.$rightSelectedItem) { this.$rightSelectedItem.addClass('as-selected'); } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DualSelectMenu.js /*** * @extends AElement * @constructor */ function DualSelectMenu() { this._format = '$0, $1'; /*** * @type {DualSelectBox} */ this.$box = (0,ACore._)({ tag: js_DualSelectBox.tag, props: { anchor: [1, 6, 2, 5] }, on: { preupdateposition: this.eventHandler.preUpdatePosition, change: this.eventHandler.boxChange, close: this.eventHandler.boxClose } }); this.$box.cancelWaiting(); this.$item = (0,ACore.$)('.absol-selectlist-item', this); this.on('click', this.eventHandler.click); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$box, 'enableSearch'); /*** * @name strictValue * @type {boolean} * @memberOf DualSelectMenu# */ /*** * @name readOnly * @type {boolean} * @memberOf DualSelectMenu# */ /*** * @name disabled * @type {boolean} * @memberOf DualSelectMenu# */ } DualSelectMenu.tag = 'DualSelectMenu'.toLowerCase(); DualSelectMenu.render = function () { return (0,ACore._)({ class: ['absol-selectmenu', 'as-dual-select-menu'], extendEvent: ['change'], attr: { tabindex: '1' }, child: [ { class: 'absol-selectmenu-holder-item', child: '.absol-selectlist-item' }, { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] }, 'attachhook', ] }); }; DualSelectMenu.prototype._updateViewValue = function () { var format = this._format; var value = this.$box.value || [null, null]; var strictValue = this.strictValue; var hbv = this.$box.holderByValue; var firstToken = '__'; var secToken = '__'; var firstHolder = hbv[value[0]]; var sectHolder; if (firstHolder) { firstToken = firstHolder.item.text; sectHolder = firstHolder.child[value[1]]; if (sectHolder) secToken = sectHolder.item.text } var text = format.replace('$0', firstToken) .replace('$1', secToken); this.$item.clearChild().addChild((0,ACore._)({ tag: 'span', class:['as-selectlist-item-text', 'absol-selectlist-item-text'], child: { text: text } })); }; DualSelectMenu.property = {}; DualSelectMenu.property.selectedItems = { get: function () { var value = this.$box.value || [null, null]; var hbv = this.$box.holderByValue; var firstHolder = hbv[value[0]]; var sectHolder; var res = [null, null]; if (firstHolder) { res[0] = firstHolder.item; sectHolder = firstHolder.child[value[1]]; if (sectHolder) res[1] = sectHolder.item; } return res; } }; DualSelectMenu.property.isFocus = { /*** * @this DualSelectMenu * @param value */ set: function (value) { var self = this; value = !!value; if (value && (this.disabled || this.readOnly)) return; if (this.hasClass('as-focus') === value) return; if (value) { this._prevValue = (this.$box.value || [null, null]).join('//'); this.addClass('as-focus'); this.off('click', this.eventHandler.click); this.$box.followTarget = this; this.$box.sponsorElement = this; this.$box.addTo(document.body); this.$box.updatePosition(); this.$box.scrollIntoSelected(); setTimeout(function () { self.$box.focus(); document.addEventListener('click', self.eventHandler.clickOut); }, 10); } else { this.removeClass('as-focus'); this.$box.selfRemove(); this.$box.resetSearchState(); document.removeEventListener('click', self.eventHandler.clickOut); setTimeout(function () { self.on('click', self.eventHandler.click); }, 10); if ((this.$box.value || [null, null]).join('//') !== this._prevValue) { this._updateViewValue(); this.emit('change', { type: 'change', target: this }, this); } } }, get: function () { return this.hasClass('as-focus'); } } /**** * @memberOf DualSelectMenu# * @type {{}} */ DualSelectMenu.eventHandler = {}; DualSelectMenu.property.items = { /*** * @this DualSelectMenu * @param items */ set: function (items) { this.$box.items = items; this.addStyle('--dual-list-estimate-text-width', this.$box.estimateSize.textWidth + 'px'); this._updateViewValue(); }, get: function () { return this.$box.items; } }; DualSelectMenu.property.value = { set: function (value) { this.$box.value = value; this._updateViewValue(); }, get: function () { return this.$box.value; } }; DualSelectMenu.property.strictValue = { set: function (value) { this.$box.strictValue = value; this._updateViewValue(); }, get: function () { return this.$box.strictValue; } }; DualSelectMenu.property.format = { set: function (value) { this._format = value || '$0, $1'; this._updateViewValue(); }, get: function () { return this._format; } }; DualSelectMenu.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; DualSelectMenu.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } } /** * @this DualSelectMenu */ DualSelectMenu.eventHandler.click = function () { if (this.readOnly) return; this.isFocus = true; }; /** * @this DualSelectMenu */ DualSelectMenu.eventHandler.clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$box, event)) return; this.isFocus = false; }; /*** * @this DualSelectMenu */ DualSelectMenu.eventHandler.preUpdatePosition = function () { var bound = this.getBoundingClientRect(); var screenSize = (0,Dom/* getScreenSize */.tE)(); var availableTop = bound.top - 5; var availableBot = screenSize.height - 5 - bound.bottom; this.$box.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px'); var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this); if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) { this.isFocus = false; } }; DualSelectMenu.eventHandler.boxChange = function () { this._updateViewValue(); }; DualSelectMenu.eventHandler.boxClose = function () { this.isFocus = false; }; ACore/* default.install */.Z.install(DualSelectMenu); /* harmony default export */ const js_DualSelectMenu = (DualSelectMenu); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/toclist.css var toclist = __webpack_require__(5322); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TOCItem.js /*** * @extends AElement * @constructor */ function TOCItem() { this.$iconP = null; this.$iconCtn = (0,ACore.$)('.as-toc-item-ext-icon-ctn', this); this._status = 'none'; this.$name = (0,ACore.$)('.as-toc-item-name', this); this.$nameInput = (0,ACore.$)('.as-toc-item-name-input', this) .on('keydown', this.eventHandler.keyDownNameInput) .on('paste', this.eventHandler.keyDownNameInput); this.$toggleCtn = (0,ACore.$)('.as-toc-item-toggle-ico-ctn', this); this._level = 0; this.$checkbox = (0,ACore.$)(CheckBoxInput/* default.tag */.Z.tag, this) .on('change', this.eventHandler.checkedChange); this.$checkbox.disabled = true; this.$checkbox.addStyle('display', 'none'); this.$checkIco = (0,ACore.$)('.as-toc-item-check-ctn .mdi-check', this) .addStyle('display', 'none') .addStyle('font-size', '18px'); this.$quickMenuBtn = (0,ACore.$)('.as-toc-item-quick-menu-ctn button', this) .on('click', this.eventHandler.clickQuickMenuBtn); this.on('click', this.eventHandler.click); this._lastClickTime = 0; /*** * @name hasQuickMenu * @type {boolean} * @memberOf TOCItem# */ /*** * @name name * @type {string} * @memberOf TOCItem# */ /*** * @name status * @type {"none"|"open"|"close"} * @memberOf TOCItem# */ /*** * @name level * @type {number} * @memberOf TOCItem# */ /*** * @name checked * @type {boolean} * @memberOf TOCItem# */ /*** * @name nodeData * @type {{}} * @memberOf TOCItem# */ } TOCItem.tag = 'TOCItem'.toLowerCase(); TOCItem.render = function () { return (0,ACore._)({ class: ['as-toc-item', 'as-has-quick-menu'], extendEvent: ['presstoggle', 'checkedchange', 'pressquickmenu', 'press', 'renamefinish'], child: [ { class: 'as-toc-item-toggle-ico-ctn', child: 'toggler-ico' }, '.as-toc-item-ext-icon-ctn', { class: 'as-toc-item-name-ctn', child: [ { tag: 'span', class: 'as-toc-item-name', child: { text: 'đây là cái tên' } }, { tag: 'input', class: 'as-toc-item-name-input', attr: { type: 'text' } } ] }, { class: 'as-toc-item-check-ctn', child: [{ tag: CheckBoxInput/* default.tag */.Z.tag }, 'span.mdi.mdi-check'] }, { class: 'as-toc-item-quick-menu-ctn', child: { tag: 'button', child: 'span.mdi.mdi-dots-vertical' } } ] }); }; TOCItem.property = {}; TOCItem.property.icon = { set: function (value) { if (this.$iconP) { this.$iconP.remove(); this.$iconP = undefined; } if (value) { var newE; if (!Dom/* default.isDomNode */.ZP.isDomNode(value)) { newE = (0,ACore._)(value); } this.$iconP = newE; this.$iconCtn.addChild(newE); this._icon = value; } else { this._icon = undefined; } }, get: function () { return this._icon; } }; TOCItem.property.status = { set: function (value) { if (['none', 'open', 'close'].indexOf(value) < 0) value = 'none'; this.removeClass('as-status-' + this._status); this._status = value; this.addClass('as-status-' + value); }, get: function () { return this._status; } }; TOCItem.property.name = { set: function (value) { this.$name.firstChild.data = value || ''; }, get: function () { return this.$name.firstChild.data; } }; TOCItem.property.level = { set: function (value) { this._level = value; this.addStyle('--level', value + ''); }, get: function () { return this._level; } }; TOCItem.property.checked = { set: function (value) { this.$checkbox.checked = value; if (value) { this.$checkIco.removeStyle('display'); } else { this.$checkIco.addStyle('display', 'none'); } }, get: function () { return this.$checkbox.checked; } }; TOCItem.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } }; TOCItem.property.hasQuickMenu = { set: function (value) { if (value) { this.addClass('as-has-quick-menu'); } else { this.removeClass('as-has-quick-menu'); } }, get: function () { return this.hasClass('as-has-quick-menu'); } }; TOCItem.property.extendClasses = { set: function (value) { value = value || []; if (typeof value === 'string') value = value.trim().split(/\s/).filter(x => !!x); if (this._extendClasses) { this._extendClasses.forEach(c => this.removeClass(c)); } this._extendClasses = value; this._extendClasses.forEach(c => this.addClass(c)); }, get: function () { return this._extendClasses || []; } }; TOCItem.prototype.rename = function () { this.addClass('as-renaming'); var name = this.name; var textWidth = (0,utils.measureText)(name, '14px Arial, Helvetica, sans-serif').width; this.$nameInput.addStyle('width', textWidth + 2 + 'px'); this.$nameInput.value = name; this.$nameInput.focus(); this.$nameInput.select(); this.$nameInput.once('blur', function (event) { var event1; if (this.$nameInput.value !== name) { event1 = (0,EventEmitter/* copyEvent */.FG)(event, { originalEvent: event, type: 'renamefinish', newName: this.$nameInput.value, __promise__: Promise.resolve(true), waitFor: function (promise) { if (promise && promise.then) { this.__promise__ = promise; } else { this.__promise__ = Promise.resolve(promise); } } }); this.emit('renamefinish', event1, this); event1.__promise__.then(function (result) { if (result === true) { this.name = event1.newName; } else if (typeof result === 'string') { this.name = result; } }.bind(this)); } this.removeClass('as-renaming'); }.bind(this)); }; /*** * @memberOf TOCItem# * @type {{}} */ TOCItem.eventHandler = {}; TOCItem.eventHandler.keyDownNameInput = function (event) { var extendText = ''; if (event.type === 'paste') { extendText = (event.clipboardData || window.clipboardData).getData('text') || ''; } else if (event.key.length === 1 && !(event.ctrl && event.key === 'C')) { extendText = event.key; } else if (event.key === 'Enter') { this.$nameInput.blur(); } if (extendText.length > 0) { this.$nameInput.addStyle('width', (0,utils.measureText)(this.$nameInput.value + extendText, '14px Arial, Helvetica, sans-serif').width + 2 + 'px'); } setTimeout(function () { var name = this.$nameInput.value; this.$nameInput.addStyle('width', (0,utils.measureText)(name, '14px Arial, Helvetica, sans-serif').width + 2 + 'px'); }.bind(this), 0); }; TOCItem.eventHandler.checkedChange = function (event) { this.emit('checkedchange', { type: 'checkedchange', target: this, originalEvent: event }, this); }; TOCItem.eventHandler.clickQuickMenuBtn = function (event) { this.emit('pressquickmenu', { type: 'pressquickmenu', originalEvent: event }, this); }; TOCItem.eventHandler.click = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$checkbox, event) || (0,EventEmitter/* hitElement */.EY)(this.$quickMenuBtn, event)) return; var now= Date.now(); if ((0,EventEmitter/* hitElement */.EY)(this.$toggleCtn, event)) { this.emit('presstoggle', { originalEvent: event, type: 'presstoggle' }, this); } else { if (now - this._lastClickTime > 500) { this.emit('press', { type: 'press', originalEvent: event }, this); } else if (this.status === "close" || this.status === 'open'){ this.emit('presstoggle', { originalEvent: event, type: 'presstoggle' }, this); } this._lastClickTime = now; } }; ACore/* default.install */.Z.install(TOCItem); /* harmony default export */ const js_TOCItem = (TOCItem); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/tool/BlurTrigger.js var BlurTrigger = __webpack_require__(9346); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TOCList.js /*** * @extends AElement * @constructor */ function TOCList() { this.$searchInput = null; this.$body = (0,ACore.$)('.as-toc-list-body', this); this.$searching = (0,ACore.$)('.as-toc-list-searching', this); this.rootController = new TOCVirtualRootController(this, [], this.$body); this.searchCache = {}; this.savedState = { active: [], status: {} }; /*** * @name nodes * @type {{}[]} * @memberOf TOCList# */ } TOCList.tag = 'TOCList'.toLowerCase(); TOCList.render = function () { return (0,ACore._)({ extendEvent: ['pressnode', 'checkednodechange', 'pressnodequickmmenu', 'statechange'], class: 'as-toc-list', child: [ '.as-toc-list-body', '.as-toc-list-searching' ] }); }; TOCList.prototype.applySavedState = function () { var savedStatus = this.savedState.status; function visitArr(arr) { arr.forEach(function (ct) { var status = savedStatus[ct.ident]; if (status) { ct.status = status; } savedStatus[ct.ident] = ct.status; visitArr(ct.children); }); } visitArr(this.rootController.children); if (this.savedState.active) { this.savedState.active.forEach(function (ident) { var activeCt = this.findControllerByIdent(ident); if (activeCt) activeCt.active(); }.bind(this)); } }; TOCList.prototype.resetSavedState = function () { this.savedState = { active: null, status: {} }; }; TOCList.prototype.saveState = function () { var oldState = this.savedState; var savedState = { active: [], status: {} }; var changed = false; function visitArr(arr) { arr.forEach(function (ct) { savedState.status[ct.ident] = ct.status; changed = changed || savedState.status[ct.ident] !== oldState.status[ct.ident]; if (ct.nodeElt.hasClass('as-active')) { savedState.active.push(ct.ident); } visitArr(ct.children); }); } var oldActive = (oldState.active || []).slice(); oldActive.sort(); var newActive = (savedState.active || []).slice(); newActive.sort(); changed = changed || (oldActive.join('/') !== newActive.join('/')); visitArr(this.rootController.children); this.savedState = savedState; if (changed) this.notifySavedStateChange(); }; TOCList.prototype.notifySavedStateChange = function () { this.emit('statechange', { target: this, type: 'statechange' }, this); }; TOCList.prototype.loadSavedState = function (savedState) { savedState = savedState || {}; if (typeof savedState.active === 'string') savedState.active = [savedState.active]; this.savedState = { active: savedState.active || [], status: savedState.status || {} }; this.applySavedState(); }; /*** * @param {number=} n */ TOCList.prototype.openAllNodeRecursive = function (n) { this.rootController.openRecursive(n); this.saveState(); }; TOCList.prototype.closeAllNodeRecursive = function () { this.rootController.closeRecursive(); this.saveState(); }; TOCList.prototype.deactivateAllNode = function () { this.rootController.deactivateRecursive(); }; /*** * * @param ident * @returns {TOCNodeController|null} */ TOCList.prototype.activeNode = function (ident) { var nodeCt = this.findControllerByIdent(ident); var parent; if (nodeCt) { nodeCt.active(); parent = nodeCt.parent; while (parent) { if (parent.open && parent.status === 'close') parent.open(); parent = parent.parent; } setTimeout(() => { (0,utils.vScrollIntoView)(nodeCt.nodeElt); }, 100); } return nodeCt; }; TOCList.prototype.getActivatedNodes = function () { var res = []; this.rootController.traverse(function (node) { if (node.activated) { res.push(node); } }); return res; }; /*** * * @param {string} ident * @param {TOCNodeController|TOCVirtualRootController=} rootController * @returns {TOCNodeController} */ TOCList.prototype.findControllerByIdent = function (ident, rootController) { var res = null; rootController = rootController || this.rootController; function visitArr(arr) { arr.some(function (ct) { if (ct.ident + '' === ident + '') { res = ct; return true; } visitArr(ct.children); }); } visitArr(rootController.children); return res; }; TOCList.prototype.makeNodeController = function (nodeData) { return new TOCNodeController(this, nodeData, null); }; /** * * @param query * @private * @returns {TOCVirtualRootController} */ TOCList.prototype._calcSearch = function (query) { var searchRootController = this.searchCache[query]; if (searchRootController) return searchRootController; var itemTree = this.searchCache.__itemTree__; if (!itemTree) { itemTree = this.nodes.map(function visit(node) { var item = (0,search/* default */.ZP)({ text: node.name, value: Object.assign({}, node) }); if (node.children && node.children.length > 0) { item.items = node.children.map(visit); } return item; }); this.searchCache.__itemTree__ = itemTree; } var resultItemTree = (0,search/* searchTreeListByText */.$l)(query, itemTree); var resultNodes = resultItemTree.map(function visit2(item) { var node = Object.assign({}, item.value); delete node.children; if (item.items && item.items.length > 0) { node.children = item.items.map(visit2); } return node; }); this.searchCache[query] = new TOCVirtualRootController(this, resultNodes) return this.searchCache[query]; }; TOCList.prototype.search = function (query) { query = query || ''; query = query.trim().replace('\s(\s+)', ' '); var searchRoot = this._calcSearch(query); var activeNodeCt; if (query.length === 0) { this.removeClass('as-searching'); this.$searching.clearChild(); } else { this.addClass('as-searching'); this.$searching.clearChild(); searchRoot.openRecursive(); activeNodeCt = this.findControllerByIdent(this.savedState.active, searchRoot); if (activeNodeCt) activeNodeCt.active(); searchRoot.view = this.$searching; } }; TOCList.property = {}; TOCList.property.nodes = { /*** * @this TOCList * @param nodes */ set: function (nodes) { this.searchCache = {}; nodes = nodes || []; this.rootController = new TOCVirtualRootController(this, nodes); this.rootController.view = this.$body; this.applySavedState(); }, get: function () { return this.rootController.nodes; } }; TOCList.property.searchInput = { /*** * @this TOCList */ set: function (elt) { if (this.$searchInput) { this.$searchInput.off('stoptyping', this.eventHandler.searchTextInputModify); } this.$searchInput = elt; if (this.$searchInput) { this.$searchInput.on('stoptyping', this.eventHandler.searchTextInputModify); } }, /*** * @this TOCList */ get: function () { return this.$searchInput; } } /*** * @memberOf TOCList# * @type {{}} */ TOCList.eventHandler = {}; TOCList.eventHandler.pressNode = function (nodeController, event) { var newEvent = (0,EventEmitter/* copyEvent */.FG)(event.originalEvent || event, { type: 'pressnode', target: this, originalEvent: event.originalEvent || event, controller: nodeController, nodeData: nodeController.nodeElt.nodeData, nodeElt: nodeController.nodeElt, }); this.emit('pressnode', newEvent, this); }; TOCList.eventHandler.checkedNodeChange = function (nodeController, event) { var newEvent = { type: 'checkednodechange', target: this, originalEvent: event.originalEvent || event, controller: nodeController, nodeData: nodeController.nodeElt.nodeData, nodeElt: nodeController.nodeElt }; this.emit('checkednodechange', newEvent, this); }; TOCList.eventHandler.pressNodeQuickMenu = function (nodeController, event) { var newEvent = { type: 'pressnodequickmmenu', target: this, originalEvent: event.originalEvent || event, controller: nodeController, nodeData: nodeController.nodeElt.nodeData, nodeElt: nodeController.nodeElt }; newEvent.showMenu = function (menuProps, onSelect) { var token = QuickMenu/* default.show */.Z.show(nodeController.nodeElt.$quickMenuBtn, menuProps, [3, 4], onSelect, false); var blurTrigger = new BlurTrigger/* default */.Z([], 'click', function () { QuickMenu/* default.close */.Z.close(token); }, 10, 30); }; this.emit('pressnodequickmmenu', newEvent, this); }; /*** * @this TOCList */ TOCList.eventHandler.searchTextInputModify = function () { this.search(this.$searchInput.value); }; ACore/* default.install */.Z.install(TOCList); /*** * * @param {TOCList} listElt * @param {{}[]} nodes * @constructor */ function TOCVirtualRootController(listElt, nodes) { Object.defineProperties(this, { root: { value: this } }); this.listElt = listElt; this.level = -1; this.nodes = nodes; /*** * * @type {TOCNodeController[]} */ this.children = nodes.map(function (nodeData) { return new TOCNodeController(listElt, nodeData, this); }.bind(this)); this._view = null; /**** * @type {AElement} * @name view * @memberOf TOCVirtualRootController# */ } TOCVirtualRootController.prototype.deactivateRecursive = function () { this.children.forEach(function (ct) { }); }; TOCVirtualRootController.prototype.openRecursive = function (n) { this.children.forEach(function (ct) { ct.openRecursive(n); }); }; TOCVirtualRootController.prototype.closeRecursive = function () { this.children.forEach(function (ct) { ct.closeRecursive(); }); }; TOCVirtualRootController.prototype.getViewElements = function () { var ac = []; this.children.forEach(function (ct) { ct.getViewElements(ac); }); return ac; }; TOCVirtualRootController.prototype.indexOfChild = function (child) { for (var i = 0; i < this.children.length; ++i) { if (child === this.children[i] || this.children[i].ident === child) return i; } return -1; }; /*** * * @param {TOCNodeController} controller * @param {TOCNodeController} at * @returns {TOCVirtualRootController} */ TOCVirtualRootController.prototype.addChildBefore = function (controller, at) { var atIdx; if (at) { atIdx = this.indexOfChild(at); if (atIdx >= 0) { if (controller.parent) controller.remove(); this.children.splice(atIdx, 0, controller); controller.__parent__ = this; if (at.nodeElt.parentElement) { (0,utils.addElementsBefore)(at.nodeElt.parentElement, controller.getViewElements(), at.nodeElt); } this.updateStatus(); } else { throw new Error("The node before which the new node is to be inserted is not a child of this node."); } } else { if (controller.parent) controller.remove(); this.children.push(controller); if (this.view) this.addChild(controller.getViewElements()); this.updateStatus(); } controller.setLevelRecursive(this.level + 1); return this; }; TOCVirtualRootController.prototype.addChild = function (controller) { this.addChildBefore(controller, null); return this; }; /*** * * @param {TOCNodeController} controller * @param at */ TOCVirtualRootController.prototype.addChildAfter = function (controller, at) { var atIdx; var lastElement; if (at) { atIdx = this.indexOfChild(at); if (atIdx === this.children.length) { if (controller.parent) controller.remove(); controller.__parent__ = this; this.children.push(controller); if (this.view) this.view.addChild(controller.getViewElements()); } else if (atIdx >= 0) { if (controller.parent) controller.remove(); controller.__parent__ = this; this.children.splice(atIdx, 0, controller); if (at.nodeElt.parentElement) { lastElement = at.getViewElements().pop(); (0,utils.addElementAfter)(at.nodeElt.parentElement, controller.getViewElements(), lastElement); } } else { throw new Error("The node before which the new node is to be inserted is not a child of this node."); } } else { if (controller.parent) controller.remove(); controller.__parent__ = this; this.children.unshift(controller); (0,utils.addElementAfter)(this.view, controller.getViewElements(), this.view.firstChild); } return this; }; TOCVirtualRootController.prototype.updateStatus = noop/* default */.Z; /*** * @param {TOCNodeController} child * @returns {TOCVirtualRootController|TOCNodeController} */ TOCVirtualRootController.prototype.removeChild = function (child) { var idx = this.children.indexOf(child); if (idx >= 0) { this.children.splice(idx, 1); child.getViewElements().forEach(function (elt) { elt.remove(); }); this.updateStatus(); } return this; }; /*** * * @param {function(nodeCt:TOCNodeController):(void|boolean)} callback return true to stop */ TOCVirtualRootController.prototype.traverse = function (callback) { this.children.some(function visit(ct) { return callback(ct) || ct.children.some(visit); }); }; Object.defineProperties(TOCVirtualRootController.prototype, { firstChild: { get: function () { return this.children[0] || null; } }, lastChild: { get: function () { return this.children[this.children.length - 1] || null; } }, view: { /*** * @this TOCVirtualRootController * @param view */ set: function (view) { view = view || null; if (view === this._view) return; if (this._view) { this._view.clearChild(); this._view.rootController = null; this._view = null; } if (view) { if (view.rootController) { view.rootController.view = null; } view.rootController = this; this._view = view; this._view.addChild(this.getViewElements()); } }, get: function () { return this._view; } } }); /*** * * @param {TOCList} listElt * @param {{}} nodeData * @param {TOCNodeController|TOCVirtualRootController} parent * @constructor */ function TOCNodeController(listElt, nodeData, parent) { Object.defineProperties(this, { listElt: { value: listElt }, __parent__: { value: parent, enumerable: false, writable: true } }); this.level = parent ? parent.level + 1 : 0; /*** * @type {TOCItem} */ this.nodeElt = (0,ACore._)({ tag: js_TOCItem.tag, props: { nodeData: nodeData, checked: !!nodeData.checked, name: nodeData.name, icon: nodeData.icon, level: this.level, controller: this, status: 'none', extendClasses: nodeData.extendClasses }, on: { presstoggle: this.toggle.bind(this), press: this.ev_press.bind(this), checkedchange: this.ev_checkedChange.bind(this), pressquickmenu: this.ev_pressQuickMenu.bind(this) } }); if (nodeData.hasQuickMenu === false) this.nodeElt.hasQuickMenu = false; this.nodeElt.on('presstoggle', this.listElt.saveState.bind(this.listElt)); /*** * @name children * @type {TOCNodeController[]} * @memberOf TOCNodeController# */ if (nodeData.children && nodeData.children.length > 0) { this.nodeElt.status = 'close'; this.children = nodeData.children.map(function (c) { return new TOCNodeController(listElt, c, this); }.bind(this)); } else { this.children = []; } } TOCNodeController.prototype.indexOfChild = TOCVirtualRootController.prototype.indexOfChild; TOCNodeController.prototype.traverse = TOCVirtualRootController.prototype.traverse; TOCNodeController.prototype.updateStatus = function () { if (this.children.length === 0 && this.nodeElt.status !== 'none') { this.nodeElt.status = 'none'; } else if (this.children.length > 0 && this.nodeElt.status === 'none') { this.nodeElt.status = 'close'; } }; TOCNodeController.prototype.deactivateRecursive = function () { this.nodeElt.removeClass('as-active'); this.children.forEach(function (ct) { ct.deactivateRecursive(); }); }; TOCNodeController.prototype.removeChild = TOCVirtualRootController.prototype.removeChild; TOCNodeController.prototype.remove = function () { this.parent.removeChild(this); }; /*** * * @param {TOCNodeController} controller * @param {TOCNodeController} at * @returns {TOCNodeController} */ TOCNodeController.prototype.addChildBefore = function (controller, at) { var atIdx; if (at) { atIdx = this.indexOfChild(at); if (atIdx >= 0) { if (controller.parent) controller.remove(); this.children.splice(atIdx, 0, controller); controller.__parent__ = this; if (this.status === 'open') { (0,utils.addElementsBefore)(this.nodeElt.parentElement, controller.getViewElements(), at.nodeElt); } controller.setLevelRecursive(this.level + 1); this.updateStatus(); } else { throw new Error("The node before which the new node is to be inserted is not a child of this node."); } } else { if (controller.parent) controller.remove(); this.children.push(controller); this.updateStatus(); if (this.status === "open") { (0,utils.addElementsBefore)(this.nodeElt.parentElement, controller.getViewElements(), at.nodeElt); } } return this; }; TOCNodeController.prototype.addChild = TOCVirtualRootController.prototype.addChild; TOCNodeController.prototype.addChildAfter = function (controller, at) { throw new Error("Not implement!"); }; TOCNodeController.prototype.toggle = function () { if (this.status === 'close') this.open(); else if (this.status === 'open') this.close(); }; TOCNodeController.prototype.open = function () { if (this.status !== 'close') return; this.nodeElt.status = 'open'; var pE = this.nodeElt.parentElement; if (!pE) return; var veArr = this.getViewElements(); veArr.shift(); var at = pE.findChildAfter(this.nodeElt); if (at) { while (veArr.length > 0) { pE.addChildBefore(veArr.shift(), at); } } else { pE.addChild(veArr); } }; TOCNodeController.prototype.close = function () { if (this.status !== 'open') return; var veArr = this.getViewElements(); veArr.shift(); while (veArr.length > 0) { veArr.pop().remove() } this.nodeElt.status = 'close'; }; TOCNodeController.prototype.getViewElements = function (ac) { if (ac === undefined) ac = []; ac.push(this.nodeElt); if (this.status === 'open' && this.children.length > 0) { this.children.forEach(function (ct) { ct.getViewElements(ac); }); } return ac; }; TOCNodeController.prototype.setLevelRecursive = function (value) { this.level = value; this.nodeElt.level = value; this.children.forEach(function (ct) { ct.setLevelRecursive(value + 1); }); }; /** * * @param {number=} level */ TOCNodeController.prototype.openRecursive = function (level) { if ((typeof level === "number") && this.level >= level) return; if (this.status === 'close') { this.open(); } this.children.forEach(function (ct) { ct.openRecursive(level); }); }; TOCNodeController.prototype.ev_press = function (event) { this.listElt.eventHandler.pressNode(this, event); }; TOCNodeController.prototype.ev_checkedChange = function (event) { this.nodeElt.nodeData.checked = this.nodeElt.checked; this.listElt.eventHandler.checkedNodeChange(this, event); }; TOCNodeController.prototype.ev_pressQuickMenu = function (event) { this.listElt.eventHandler.pressNodeQuickMenu(this, event); }; TOCNodeController.prototype.ev_renameFinish = function (event) { }; TOCNodeController.prototype.closeRecursive = function () { if (this.status === 'open') { this.close(); } this.children.forEach(function (ct) { ct.closeRecursive(); }); }; TOCNodeController.prototype.rename = function () { }; /*** * * @param {boolean=true} isActive default: true * @param {boolean=false} append default: false */ TOCNodeController.prototype.active = function (isActive, append) { var self = this; if (arguments.length === 0) isActive = true; append = !!append; var idx = this.listElt.savedState.active ? this.listElt.savedState.active.indexOf(this.ident) : -1; if (isActive) { this.root.traverse(function (ct) { if (ct === self) { ct.nodeElt.addClass('as-active'); } else if (!append) ct.nodeElt.removeClass('as-active'); }); if (idx < 0) { this.listElt.savedState.active = this.listElt.savedState.active || []; if (append) { this.listElt.savedState.active.push(this.ident); } else { this.listElt.savedState.active = [this.ident]; } this.listElt.notifySavedStateChange(); } } else { if (idx >= 0) { if (append) { this.listElt.savedState.active.splice(idx, 1); this.nodeElt.removeClass('as-active'); } else { this.listElt.savedState.active = []; this.root.traverse(function (ct) { ct.nodeElt.removeClass('as-active'); }); } } } }; Object.defineProperties(TOCNodeController.prototype, { /*** * @memberOf TOCNodeController# * @name status * @type {"open"|"close"|"none"} */ status: { get: function () { return this.nodeElt.status; }, set: function (value) { if (value === 'open' && this.nodeElt.status === 'close') this.open(); else if (value === 'close' && this.nodeElt.status === 'open') this.close(); } }, root: { get: function () { return this.parent ? this.parent.root : this; } }, checked: { get: function () { return !!this.nodeElt.nodeData.checked; }, set: function (value) { this.nodeElt.checked = !!value; this.nodeElt.nodeData.checked = !!value; } }, name: { set: function (value) { value = value || ''; this.nodeElt.name = value; this.nodeElt.nodeData.name = value; }, get: function () { return this.nodeElt.nodeData.name; } }, ident: { get: function () { return this.nodeElt.nodeData.ident; }, set: function (value) { this.nodeElt.nodeData.ident = value; } }, nodeData: { get: function () { return this.nodeElt.nodeData; }, set: function (value) { this.nodeElt.nodeData = value; } }, parent: { get: function () { return this.__parent__; } }, firstChild: { get: function () { return this.children[0] || null; } }, lastChild: { get: function () { return this.children[this.children.length - 1] || null; } }, activated: { get: function () { return this.nodeElt.hasClass('as-active'); } } }); /* harmony default export */ const js_TOCList = (TOCList); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/ckplaceholder.css var ckplaceholder = __webpack_require__(2285); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/ckcontentstyle.css.tpl /* harmony default export */ const ckcontentstyle_css = ("\r\n.as-ck-alert {\r\n padding: .75rem 1.25rem;\r\n margin-bottom: 1rem;\r\n border: 1px solid transparent;\r\n border-radius: .188rem;\r\n}\r\n\r\n.as-ck-alert.as-variant-notice {\r\n color: #7b5700;\r\n background-color: #fbedcc;\r\n border-color: #fae6b8;\r\n}\r\n\r\n.as-ck-alert.as-variant-warning {\r\n color: #852d19;\r\n background-color: #ffddd6;\r\n border-color: #ffd0c5;\r\n}\r\n\r\n.as-ck-alert.as-variant-info {\r\n color: #352c64;\r\n background-color: #e0ddf2;\r\n border-color: #d4cfed;\r\n}\r\n\r\n.as-ck-alert.as-variant-success {\r\n color: #2a601f;\r\n background-color: #dcf1d8;\r\n border-color: #ceebc8;\r\n}\r\n\r\n\r\n.cke_contents_ltr ul {\r\n list-style: none;\r\n}\r\n\r\n.cke_contents_ltr ul li {\r\n position: relative;\r\n}\r\n\r\n.cke_contents_ltr ul li::before {\r\n color: #007bff;\r\n content: '●';\r\n position: absolute;\r\n left: -1.2em;\r\n top: -0.1em;\r\n display: inline-block;\r\n}\r\n\r\n.cke_contents_ltr thead {\r\n background-color: #d6d6d6;\r\n\r\n}\r\n\r\n.cke_contents_ltr table {\r\n border-collapse: collapse;\r\n}\r\n\r\n.cke_contents_ltr table[align=\"center\"] {\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n\r\n.cke_contents_ltr table[align=\"right\"] {\r\n margin-left: auto;\r\n}\r\n\r\n\r\n.cke_contents_ltr thead td {\r\n padding: 10px;\r\n border: 1px solid #efefef;\r\n font-weight: bold;\r\n}\r\n\r\n.cke_contents_ltr thead td:last-child {\r\n border-right-color: #dddddd;\r\n}\r\n\r\n\r\n.cke_contents_ltr thead td:first-child {\r\n border-left-color: #dddddd;\r\n}\r\n\r\n\r\n.cke_contents_ltr tbody td {\r\n\r\n}\r\n\r\n.cke_contents_ltr tbody tr:nth-child(odd) {\r\n background-color: rgb(245, 245, 245);\r\n}\r\n\r\n.cke_contents_ltr tbody tr:nth-child(even) {\r\n background-color: white;\r\n}\r\n\r\n.cke_contents_ltr tbody td {\r\n padding: 5px 10px;\r\n border: 1px solid #ddd;\r\n}\r\n\r\n\r\n.cke_button_icon.cke_button__insert_expression_icon {\r\n background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik01LDNIN1Y1SDVWMTBBMiwyIDAgMCwxIDMsMTJBMiwyIDAgMCwxIDUsMTRWMTlIN1YyMUg1QzMuOTMsMjAuNzMgMywyMC4xIDMsMTlWMTVBMiwyIDAgMCwwIDEsMTNIMFYxMUgxQTIsMiAwIDAsMCAzLDlWNUEyLDIgMCAwLDEgNSwzTTE5LDNBMiwyIDAgMCwxIDIxLDVWOUEyLDIgMCAwLDAgMjMsMTFIMjRWMTNIMjNBMiwyIDAgMCwwIDIxLDE1VjE5QTIsMiAwIDAsMSAxOSwyMUgxN1YxOUgxOVYxNEEyLDIgMCAwLDEgMjEsMTJBMiwyIDAgMCwxIDE5LDEwVjVIMTdWM0gxOU0xMiwxNUExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE3QTEsMSAwIDAsMSAxMSwxNkExLDEgMCAwLDEgMTIsMTVNOCwxNUExLDEgMCAwLDEgOSwxNkExLDEgMCAwLDEgOCwxN0ExLDEgMCAwLDEgNywxNkExLDEgMCAwLDEgOCwxNU0xNiwxNUExLDEgMCAwLDEgMTcsMTZBMSwxIDAgMCwxIDE2LDE3QTEsMSAwIDAsMSAxNSwxNkExLDEgMCAwLDEgMTYsMTVaIiAvPgo8L3N2Zz4=');\r\n background-position: 0 0px;\r\n background-size: 16px;\r\n}\r\n\r\n.cke_button_icon.cke_button__insert_variable_icon {\r\n background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik0yMC40MSwzQzIxLjgsNS43MSAyMi4zNSw4Ljg0IDIyLDEyQzIxLjgsMTUuMTYgMjAuNywxOC4yOSAxOC44MywyMUwxNy4zLDIwQzE4LjkxLDE3LjU3IDE5Ljg1LDE0LjggMjAsMTJDMjAuMzQsOS4yIDE5Ljg5LDYuNDMgMTguNyw0TDIwLjQxLDNNNS4xNywzTDYuNyw0QzUuMDksNi40MyA0LjE1LDkuMiA0LDEyQzMuNjYsMTQuOCA0LjEyLDE3LjU3IDUuMywyMEwzLjYxLDIxQzIuMjEsMTguMjkgMS42NSwxNS4xNyAyLDEyQzIuMiw4Ljg0IDMuMyw1LjcxIDUuMTcsM00xMi4wOCwxMC42OEwxNC40LDcuNDVIMTYuOTNMMTMuMTUsMTIuNDVMMTUuMzUsMTcuMzdIMTMuMDlMMTEuNzEsMTRMOS4yOCwxNy4zM0g2Ljc2TDEwLjY2LDEyLjIxTDguNTMsNy40NUgxMC44TDEyLjA4LDEwLjY4WiIgLz4KPC9zdmc+');\r\n background-position: 0 0px;\r\n background-size: 16px;\r\n}\r\n\r\n.cke_button_icon.cke_button__insert_dynamic_link_icon {\r\n background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik0zIDFDMS44OSAxIDEgMS44OSAxIDNWMTRDMSAxNS4xMSAxLjg5IDE2IDMgMTZIMTRDMTUuMTEgMTYgMTYgMTUuMTEgMTYgMTRWMTFIMTRWMTRIM1YzSDE0VjVIMTZWM0MxNiAxLjg5IDE1LjExIDEgMTQgMU05IDdDNy44OSA3IDcgNy44OSA3IDlWMTJIOVY5SDIwVjIwSDlWMThIN1YyMEM3IDIxLjExIDcuODkgMjIgOSAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY5QzIyIDcuODkgMjEuMTEgNyAyMCA3SDkiIC8+Cjwvc3ZnPg==');\r\n background-position: 0 0px;\r\n background-size: 16px;\r\n}\r\n\r\n\r\n.cke_button_icon.cke_button__mdi_dialog_icon {\r\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIsMkg4VjRIMTZWMkgyMlY4SDIwVjE2SDIyVjIySDE2VjIwSDhWMjJIMlYxNkg0VjhIMlYyTTE2LDhWNkg4VjhINlYxNkg4VjE4SDE2VjE2SDE4VjhIMTZNNCw0VjZINlY0SDRNMTgsNFY2SDIwVjRIMThNNCwxOFYyMEg2VjE4SDRNMTgsMThWMjBIMjBWMThIMThaIiAvPjwvc3ZnPg==');\r\n background-position: 0 0px;\r\n background-size: 16px;\r\n}\r\n\r\n\r\n\r\n.as-ck-widget-expression {\r\n color: #1da1ff;\r\n}\r\n\r\n.as-ck-widget-variable {\r\n color: #144f25;\r\n}\r\n\r\n.as-ck-widget-mdi {\r\n display: inline-block;\r\n width: 1.5em;\r\n height: 1.5em;\r\n position: relative;\r\n vertical-align: baseline;\r\n}\r\n.as-ck-widget-mdi.mdi::before {\r\n display: block;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n text-align: center;\r\n font-size: 1.5em;\r\n line-height: 1;\r\n}\r\n\r\n\r\n.cke_button__image_mgn_dialog_icon {\r\n background: url($basePath/plugins/icons.png) no-repeat 0 -960px !important;\r\n}\r\n\r\n\r\nbody .cke_contents_ltr h1,\r\nbody .cke_contents_ltr h2,\r\nbody .cke_contents_ltr h3,\r\nbody .cke_contents_ltr h4,\r\nbody .cke_contents_ltr h5,\r\nbody .cke_contents_ltr h6 {\r\n font-weight: normal;\r\n line-height: 1.2;\r\n}\r\n\r\nbody .cke_contents_ltr {\r\n line-height: 1.6;\r\n font-size: inherit;\r\n font-family: sans-serif, Arial, Verdana, \"Trebuchet MS\", \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\r\n background-color: #fff;\r\n word-wrap: break-word;\r\n text-align: left;\r\n}\r\n\r\n.cke_contents_ltr blockquote {\r\n font-style: italic;\r\n font-family: inherit;\r\n border-style: solid;\r\n border-color: #ccc;\r\n border-width: 0;\r\n padding-left: 20px;\r\n padding-right: 8px;\r\n border-left-width: 5px;\r\n}\r\n\r\nbody .cke_contents_ltr a {\r\n color: #0782C1;\r\n}\r\n\r\nbody .cke_contents_ltr ol,\r\nbody .cke_contents_ltr ul,\r\nbody .cke_contents_ltr dl {\r\n /* IE7: reset rtl list margin. (#7334) */\r\n *margin-right: 0px;\r\n /* Preserved spaces for list items with text direction different than the list. (#6249,#8049)*/\r\n padding: 0 40px;\r\n}\r\n\r\n\r\nbody.cke_contents_ltr { /*editor*/\r\n font-size: 14px;\r\n}\r\n\r\n\r\nbody .cke_contents_ltr hr\r\n{\r\n border: 0px;\r\n border-top: 1px solid #ccc;\r\n}\r\n\r\nbody .cke_contents_ltr img.right\r\n{\r\n border: 1px solid #ccc;\r\n float: right;\r\n margin-left: 15px;\r\n padding: 5px;\r\n}\r\n\r\nbody .cke_contents_ltr img.left\r\n{\r\n border: 1px solid #ccc;\r\n float: left;\r\n margin-right: 15px;\r\n padding: 5px;\r\n}\r\n\r\nbody .cke_contents_ltr pre\r\n{\r\n white-space: pre-wrap; /* CSS 2.1 */\r\n word-wrap: break-word; /* IE7 */\r\n -moz-tab-size: 4;\r\n tab-size: 4;\r\n}\r\n\r\nbody .cke_contents_ltr .marker\r\n{\r\n background-color: Yellow;\r\n}\r\n\r\nbody .cke_contents_ltr span[lang]\r\n{\r\n font-style: italic;\r\n}\r\n\r\nbody .cke_contents_ltr figure\r\n{\r\n text-align: center;\r\n outline: solid 1px #ccc;\r\n background: rgba(0,0,0,0.05);\r\n padding: 10px;\r\n margin: 10px 20px;\r\n display: inline-block;\r\n}\r\n\r\nbody .cke_contents_ltr figure > figcaption\r\n{\r\n text-align: center;\r\n display: block; /* For IE8 */\r\n}\r\n\r\nbody .cke_contents_ltr a > img {\r\n padding: 1px;\r\n margin: 1px;\r\n border: none;\r\n outline: 1px solid #0782C1;\r\n}\r\n\r\n/* Widget Styles */\r\nbody .cke_contents_ltr .code-featured\r\n{\r\n border: 5px solid red;\r\n}\r\n\r\nbody .cke_contents_ltr .math-featured\r\n{\r\n padding: 20px;\r\n box-shadow: 0 0 2px rgba(200, 0, 0, 1);\r\n background-color: rgba(255, 0, 0, 0.05);\r\n margin: 10px;\r\n}\r\n\r\nbody .cke_contents_ltr .image-clean\r\n{\r\n border: 0;\r\n background: none;\r\n padding: 0;\r\n}\r\n\r\nbody .cke_contents_ltr .image-clean > figcaption\r\n{\r\n font-size: .9em;\r\n text-align: right;\r\n}\r\n\r\nbody .cke_contents_ltr .image-grayscale\r\n{\r\n background-color: white;\r\n color: #666;\r\n}\r\n\r\nbody .cke_contents_ltr .image-grayscale img, img.image-grayscale\r\n{\r\n filter: grayscale(100%);\r\n}\r\n\r\nbody .cke_contents_ltr .embed-240p\r\n{\r\n max-width: 426px;\r\n max-height: 240px;\r\n margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-360p\r\n{\r\n max-width: 640px;\r\n max-height: 360px;\r\n margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-480p\r\n{\r\n max-width: 854px;\r\n max-height: 480px;\r\n margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-720p\r\n{\r\n max-width: 1280px;\r\n max-height: 720px;\r\n margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-1080p\r\n{\r\n max-width: 1920px;\r\n max-height: 1080px;\r\n margin:0 auto;\r\n}\r\n"); // EXTERNAL MODULE: ./node_modules/absol/src/JSMaker/TemplateString.js var TemplateString = __webpack_require__(369); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/ExpressionExtension.js var ExpressionExtension_name = 'expression'; var command = 'insert_expression'; function init(editor) { editor.widgets.add(ExpressionExtension_name, { button: 'Create Expression', template: '<span class="as-ck-widget-expression">{{ expression }}</span>', allowedContent: 'span(!as-ck-widget-expression)', requiredContent: 'span(as-ck-widget-expression)', upcast: function (element) { return element.name === 'span' && element.hasClass('as-ck-widget-expression'); } }); editor.ui.addButton(command, { label: 'Insert expression', command: command, }); editor.addCommand(command, { exec: function (editor) { if (editor.placeHolderElt) { editor.placeHolderElt.emit('command', { command: command, target: editor, type: 'command' }); } } }); } var parserDiv = (0,ACore._)('div'); function explicit(data, placeHolderElt) { parserDiv.innerHTML = data; (0,ACore.$$)('.as-ck-widget-expression', parserDiv).forEach(function (elt) { var text = elt.innerHTML; text.replace(/{/g, '{').replace(/}/g, '}'); elt.parentElement.replaceChild((0,ACore._)({ text: text }), elt) }); return parserDiv.innerHTML; } function implicit(data, placeHolderElt) { var template = TemplateString/* default.parse */.Z.parse(data); return template.parts.slice().map(function (part) { if (part.type === 1) { return '<span class="as-ck-widget-expression">{{ ' + part.data.trim() + ' }}</span>' } else return part.data; }).join(''); } /* harmony default export */ const ExpressionExtension = ({ name: ExpressionExtension_name, command: command, implicit: implicit, explicit: explicit, plugin: { requires: 'widget', init: init }, extendMethods: { /*** * @this CKPlaceholder * @memberOf CKPlaceholder# * @param expression * */ insertExpression: function (expression) { this.editor.insertHtml('<span class="as-ck-widget-expression">{{ ' + expression.trim() + ' }}</span>') }, getSelectedExpression: function () { var sel = this.editor.getSelection(); if (!sel) return null; var elt = sel.getSelectedElement(); if (!elt) return null; if (!elt.hasClass('cke_widget_wrapper_as-ck-widget-expression')) return null; var exp = elt.getText(); exp = exp.replace(/{|}|\{|\}/g, '').trim(); return exp; } } }); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/SimpleTextExtension.js var SimpleTextExtension_name = 'simple_text'; var SimpleTextExtension_parserDiv = (0,ACore._)('div'); function SimpleTextExtension_explicit(data, placeHolderElt) { SimpleTextExtension_parserDiv.innerHTML = data.replace(/ /g, ' '); return SimpleTextExtension_parserDiv.innerText; } function SimpleTextExtension_implicit(data, placeHolderElt) { return data //.replace(/</g, '<').replace(/</g, '>').replace(/"/g, '"').replace(/&/g, '&') .replace(/[\r\n]/g, ''); } /* harmony default export */ const SimpleTextExtension = ({ name: SimpleTextExtension_name, implicit: SimpleTextExtension_implicit, explicit: SimpleTextExtension_explicit, }); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/VariableExtension.js var VariableExtension_name = 'variable'; var VariableExtension_command = 'insert_variable'; function VariableExtension_init(editor) { editor.widgets.add(VariableExtension_name, { button: 'Create Variable', template: '<span class="as-ck-widget-variable" title="variable">variable</span>', allowedContent: 'span(!as-ck-widget-variable)', requiredContent: 'span(as-ck-widget-variable)', upcast: function (element) { return element.name === 'span' && element.hasClass('as-ck-widget-variable'); } }); editor.ui.addButton(VariableExtension_command, { label: 'Insert Variable', command: VariableExtension_command, }); editor.addCommand(VariableExtension_command, { exec: function (editor) { if (editor.placeHolderElt) { editor.placeHolderElt.emit('command', { command: VariableExtension_command, target: editor, type: 'command' }); } } }); } var VariableExtension_parserDiv = (0,ACore._)('div'); function VariableExtension_explicit(data, placeHolderElt) { VariableExtension_parserDiv.innerHTML = data; (0,ACore.$$)('.as-ck-widget-variable', VariableExtension_parserDiv).forEach(function (elt) { var text = elt.innerHTML; elt.parentElement.replaceChild((0,ACore._)({ text: text }), elt) }); return VariableExtension_parserDiv.innerHTML; } var tokenRgx = /("([^\\"]|(\\.))*")|([a-zA-Z_$A-Z]([a-zA-Z_$A-Z0-9]*))/g; function VariableExtension_implicit(data, placeHolderElt) { data = (data || '') + ''; data = data.replace(tokenRgx, function (full, isString, u1, u2, isIdent) { if (isIdent && placeHolderElt.variables && placeHolderElt.variables[isIdent]) { return placeHolderElt.makeVariableHtml(isIdent); } else return full; }); return data; } /* harmony default export */ const VariableExtension = ({ name: VariableExtension_name, command: VariableExtension_command, implicit: VariableExtension_implicit, explicit: VariableExtension_explicit, plugin: { requires: 'widget', init: VariableExtension_init }, extendMethods: { makeVariableHtml: function (variable, text) { variable = variable.trim(); if (this.variables && this.variables[variable]) { text = this.variables[variable].text; } text = text || variable; return '<span class="as-ck-widget-variable" title="' + text + '">' + variable.trim() + '</span>'; }, /*** * @this CKPlaceholder * @memberOf CKPlaceholder# * @param variable * */ insertVariable: function (variable, text) { this.editor.insertHtml(this.makeVariableHtml(variable, text)); }, getSelectedVariable: function () { var sel = this.editor.getSelection(); if (!sel) return null; var elt = sel.getSelectedElement(); if (!elt) return null; if (!elt.hasClass('cke_widget_wrapper_as-ck-widget-variable')) return null; var exp = elt.getText(); exp = exp.trim(); return exp; } } }); /*** * @name variables * @type {{}} * @memberOf CKPlaceholder# */ ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/DynamicLinkExtension.js var DynamicLinkExtension_name = 'dynamic_link'; var DynamicLinkExtension_command = 'insert_dynamic_link'; function DynamicLinkExtension_init(editor) { editor.widgets.add(DynamicLinkExtension_name, { button: 'Create Dynamic Link', template: '<a class="as-ck-widget-dynamic-link" data-link-id="1234" href="https://absol.cf">absol.cf</a>', allowedContent: 'a(!as-ck-widget-dynamic-link)', requiredContent: 'a(as-ck-widget-dynamic-link)', upcast: function (element) { return element.name === 'a' && element.hasClass('as-ck-widget-dynamic-link'); } }); editor.ui.addButton(DynamicLinkExtension_command, { label: 'Insert Dynamic Link', command: DynamicLinkExtension_command, }); editor.addCommand(DynamicLinkExtension_command, { exec: function (editor) { if (editor.placeHolderElt) { editor.placeHolderElt.emit('command', { command: DynamicLinkExtension_command, target: editor, type: 'command' }); } } }); } var DynamicLinkExtension_parserDiv = (0,ACore._)('div'); function DynamicLinkExtension_explicit(data, placeHolderElt) { DynamicLinkExtension_parserDiv.innerHTML = data; (0,ACore.$$)('.as-ck-widget-dynamic-link', DynamicLinkExtension_parserDiv).forEach(function (elt) { }); return DynamicLinkExtension_parserDiv.innerHTML; } function DynamicLinkExtension_implicit(data, placeHolderElt) { DynamicLinkExtension_parserDiv.innerHTML = data; (0,ACore.$$)('.as-ck-widget-dynamic-link', DynamicLinkExtension_parserDiv).forEach(function (elt) { var id = elt.getAttribute('data-link-id'); var info = placeHolderElt.dynamicLinks && placeHolderElt.dynamicLinks[id]; if (info){ elt.setAttribute('href', info.href); elt.innerHTML = info.text || info.href; } }); return DynamicLinkExtension_parserDiv.innerHTML; } /* harmony default export */ const DynamicLinkExtension = ({ name: DynamicLinkExtension_name, command: DynamicLinkExtension_command, implicit: DynamicLinkExtension_implicit, explicit: DynamicLinkExtension_explicit, plugin: { requires: 'widget', init: DynamicLinkExtension_init }, extendMethods: { /*** * @this CKPlaceholder * @memberOf CKPlaceholder# * @param {string} id * @param {string=} href * @param {string=} text * */ insertDynamicLink: function (id, href, text) { var info = (this.dynamicLinks && this.dynamicLinks[id]) || {href:'.', text: 'undefined'}; if (!href){ href = info.href; } if (!text){ text = info.text; } this.editor.insertHtml('<a class="as-ck-widget-dynamic-link" data-link-id="'+id+'" href="'+href+'">' + text + '</a>') }, getSelectedDynamicLink: function () { var sel = this.editor.getSelection(); if (!sel) return null; var elt = sel.getSelectedElement(); if (!elt) return null; if (!elt.hasClass('cke_widget_wrapper_as-ck-widget-dynamic-link')) return null; return (elt.$.firstChild && elt.$.firstChild.getAttribute('data-link-id')) || null; } } }); /*** * @name dynamicLinks * @type {{}} * @memberOf CKPlaceholder# */ ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/ImageFileExtension.js var ImageFileExtension_name = 'image_mgn'; var ImageFileExtension_command = 'image_mgn_dialog'; function ImageFileExtension_init(editor) { editor.ui.addButton(ImageFileExtension_command, { label: 'Insert Image', command: ImageFileExtension_command, }); editor.addCommand(ImageFileExtension_command, { exec: function (editor) { if (window.contentModule && window.contentModule.chooseFile) { window.contentModule.chooseFile({ type: "image_file" }).then(function (result) { if (result instanceof Array) result = result[0]; if (result) { editor.insertHtml('<img alt="'+(result.title|| result.name)+'" src="'+result.url+'" style="max-width: 100%; border-width: 1px; border-style: solid;"/>') } }.bind(this)); } } }); } function ImageFileExtension_explicit(data, placeHolderElt) { return data; } var ImageFileExtension_tokenRgx = /("([^\\"]|(\\.))*")|([a-zA-Z_$A-Z]([a-zA-Z_$A-Z0-9]*))/g; function ImageFileExtension_implicit(data, placeHolderElt) { return data; } /* harmony default export */ const ImageFileExtension = ({ name: ImageFileExtension_name, command: ImageFileExtension_command, // implicit: implicit, // explicit: explicit, plugin: { init: ImageFileExtension_init } }); /*** * @name variables * @type {{}} * @memberOf CKPlaceholder# */ // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/Fragment.js + 1 modules var Fragment = __webpack_require__(4861); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/MessageDialog.js var MessageDialog = __webpack_require__(3488); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/videourldialog.css var videourldialog = __webpack_require__(4607); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/videourldialog/videoUtils.js var videoUrlRules = [ [ 'youtube', /^https:\/\/www.youtube.com\//, /[^a-zAZ]v=([^&]+)/, o => 'https://www.youtube.com/embed/' + o.videoId ], [ 'youtube', /^https:\/\/www.youtube.com\/embed\//, /^https:\/\/www.youtube.com\/embed\/([^&\/]+)/, o => o.url, o => 'https://www.youtube.com/watch?v=' + o.videoId ], [ 'vimeo', /^https:\/\/vimeo.com\//, /vimeo.com\/([0-9A-Za-z_]+)/, o => 'https://player.vimeo.com/video/' + o.videoId ], [ 'dailymotion', /^https:\/\/www.dailymotion.com\/video\//, /dailymotion\.com\/video\/([0-9A-Za-z_]+)/, o => 'https://www.dailymotion.com/embed/video/' + o.videoId ], [ 'facebook', /^https:\/\/www.facebook.com\/watch/, /[^a-zAZ]v=([^&]+)/, o => 'https://www.facebook.com/plugins/video.php?height=315&width=560&show_text=false&t=0&href=' + encodeURIComponent(o.url), o => o.embedUrl ], /* INVAID VIDEO ID */ [ 'youtube', /^https:\/\/www.youtube.com(\/|$)/, 'INVALID_URL' ], [ 'vimeo', /^https:\/\/vimeo.com(\/|$)/, /vimeo.com\/([0-9A-Za-z_]+)/, 'INVALID_URL' ], [ 'dailymotion', /^https:\/\/www.dailymotion.com(\/|$)/, null ], [ 'facebook', /^https:\/\/www.facebook.com/, 'INVALID_URL' ], /********************/ [ '*', /./, /\/([^\/]+)$/, o => o.url ] ]; function parseVideoUrl(url) { url = (url || "").trim(); var res = { url: url }; videoUrlRules.some((rule) => { var matched = url.match(rule[1]); if (!matched) return false; res.hostType = rule[0]; if (rule[2] instanceof RegExp) { matched = url.match(rule[2]); if (!matched) return false; res.videoId = matched[1]; } else if (rule[2] === 'INVALID_URL') { res.videoId = "INVALID_URL"; } if (res.videoId !== 'INVALID_URL') { res.embedUrl = rule[3](res); } if (typeof rule[4] === "function") { res.originalUrl = rule[4](res); } else { res.originalUrl = res.url; } return true; }); return res; } var embedVideoSizeCache = {}; var metaRules = [ ['width', 'og:video:width', /content\s*=\s*"([0-9]+)/, 'number'], ['height', 'og:video:height', /content\s*=\s*"([0-9]+)/, 'number'], ['title', 'og:title', /content\s*=\s*"([^"]+)/, s => s.replace(/\s*-\s*Video Dailymotion$/, '')], ['image', 'og:image', /content\s*=\s*"([^"]+)/], ['width', /^video\s/, /width\s*=\s*"([0-9]+)/, 'number', true], ['height', /^video\s/, /height\s*=\s*"([0-9]+)/, 'number', true], ['image', /^img/, /src\s*=\s*"([^"]+)/, x => x.replace(/&/g, '&')], ['title', "a href=\"https://www.facebook.com/watch", />([^<]+)/], ] function getEmbedVideoInfo(url, fullPage) { // fullPage = false; var xUrl = fullPage ? 'https://absol.cf/getpage.php?url=' : 'https://absol.cf/getpagemeta.php?url='; embedVideoSizeCache[url] = embedVideoSizeCache[url] || fetch(xUrl + encodeURIComponent(url)).then(res => res.text()) .then(metaText => { if (metaText === 'DOWNLOAD_ERROR') return { error: metaText }; var lines = metaText.replace(/\n|(>\s*<)/g, '__spliter__').split('__spliter__'); var res = {}; lines.forEach(line => { metaRules.some(rule => { var key = rule[0]; if (key in res) return false; var matched; if (rule[1] instanceof RegExp) { matched = line.match(rule[1]); if (!matched) return false; } else if (typeof rule[1] === "string") { if (line.indexOf(rule[1]) < 0) return false; } matched = line.match(rule[2]); if (!matched) return false; var value = matched[1]; if (rule[3] === 'number') { value = parseFloat(value); if (isNaN(value)) return false; } else if (typeof rule[3] === "function") { value = rule[3](value); } res[key] = value; if (rule[4]) return false; return true; }); }); return res; }); return embedVideoSizeCache[url]; } var videoFileHeaderInfoCache = {}; function getVideoFileHeader(url) { videoFileHeaderInfoCache[url] = videoFileHeaderInfoCache[url] || new Promise(resolve => { var xhr = new XMLHttpRequest(); xhr.open('HEAD', url, true); xhr.onreadystatechange = function () { if (this.readyState === 4) { if (this.status === 200) { var res = { type: xhr.getResponseHeader('Content-Type') }; var title; var header = xhr.getAllResponseHeaders(); if (header && (header.indexOf('inline') !== -1 || header.indexOf('attachment') !== -1)) { var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; var matches = filenameRegex.exec(header); if (matches != null && matches[1]) { title = matches[1].replace(/['"]/g, ''); } } else { title = url.split('/').filter(x => !!x).pop() || ''; title = title.split('?').shift(); title = decodeURIComponent(title); } if (title) res.title = title; resolve(res); } else { resolve({ error: "STATUS_" + this.status }) } } }; xhr.send(); }); return videoFileHeaderInfoCache[url]; } function getVideoPreview(url) { return new Promise((resolve, reject) => { var renderDiv = (0,ACore._)({ style: { position: 'fixed', left: 0, top: 0, overflow: 'hidden', 'z-index': -1000, pointerEvents: 'none', visibility: 'hidden' } }).addTo(document.body); var videoElt = (0,ACore._)({ tag: 'video', attr: { crossorigin: "anonymous", crossOrigin: "anonymous", preload: 'metadata', src: url }, on: { loadeddata: function () { clearTimeout(timeout); var scale = Math.min(200, videoElt.videoWidth, videoElt.videoHeight) / videoElt.videoWidth; var cWidth = Math.ceil(videoElt.videoWidth * scale); var cHeight = Math.ceil(videoElt.videoHeight * scale); var canvas = (0,ACore._)({ tag: 'canvas', attr: { width: cWidth + 'px', height: cHeight + 'px' } }).addTo(renderDiv); var ctx = canvas.getContext('2d'); ctx.drawImage(videoElt, 0, 0, cWidth, cHeight); var image = canvas.toDataURL('image/jpeg', 0.1) renderDiv.remove(); resolve({ width: videoElt.videoWidth, height: videoElt.videoHeight, image: image }); }, error: function () { clearTimeout(timeout); renderDiv.remove(); reject(); } } }); renderDiv.addChild(videoElt); videoElt.currentTime = 0.1; var timeout = setTimeout(() => { renderDiv.remove(); reject(); }, 5000); }); } ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/videourldialog/VideoUrlDialog.js /*** * @extends Fragment * @constructor */ function VideoUrlDialog() { Fragment/* default.call */.Z.call(this); this.task = null; this.pendingResult = null; Object.keys(VideoUrlDialog.prototype).filter(key => key.startsWith('ev_')).forEach(key => { this[key] = this[key].bind(this); }); } OOP/* default.mixClass */.ZP.mixClass(VideoUrlDialog, Fragment/* default */.Z); VideoUrlDialog.prototype.cache = {}; VideoUrlDialog.prototype.createView = function () { this.$view = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, class: 'as-video-url-dialog-modal', child: { tag: MessageDialog/* default.tag */.Z.tag, class: 'as-video-url-dialog', props: { dialogTitle: 'Video', dialogActions: [ { text: 'OK', name: 'ok' }, { text: 'Cancel', name: 'cancel' } ] }, child: [ { class: 'as-video-url-dialog-row', child: [ { tag: 'label', child: { text: 'URL*' } }, { tag: 'input', attr: { type: 'text' }, class: ['as-video-url-dialog-url', 'as-text-input'], } ] }, { class: 'as-video-url-dialog-row', child: [ { tag: 'label', child: { text: 'Video Info' } }, { tag: 'span', class: ['as-video-url-dialog-video-info'], } ] }, { class: 'as-video-url-dialog-row', child: [ { tag: 'label', child: { text: 'Display Size' } }, { tag: 'input', class: ['as-text-input', 'as-video-url-dialog-width'], attr: { type: 'number', min: '4' } }, { tag: 'span', child: { text: ' x ' } }, { tag: 'input', class: ['as-text-input', 'as-video-url-dialog-height'], attr: { type: 'number', min: '3' } }, { tag: 'checkbox', style: { marginLeft: '1em' }, props: { text: 'keep ratio' } } ] }, { class: 'as-video-url-dialog-row', child: [ { tag: 'label', child: { text: 'Preview' } }, { tag: 'img', class: 'as-video-url-dialog-video-image' }] } ] } }); var keyTimeout = -1; this.$urlInput = (0,ACore.$)('.as-video-url-dialog-url', this.$view) .on('paste', (event) => { setTimeout(this.ev_urlChange.bind(this, event), 100); }) .on('change', this.ev_urlChange) .on('keyup', (event) => { if (keyTimeout > 0) { clearTimeout(keyTimeout); } keyTimeout = setTimeout(() => { keyTimeout = -1; this.ev_urlChange(event); }, 300); }); this.$dialog = (0,ACore.$)('.as-video-url-dialog', this.$view) .on('action', this.ev_action); this.$info = (0,ACore.$)('.as-video-url-dialog-video-info', this.$view); this.$image = (0,ACore.$)('.as-video-url-dialog-video-image', this.$view); this.$width = (0,ACore.$)('.as-video-url-dialog-width', this.$view) .on('change', this.ev_widthChange); this.$height = (0,ACore.$)('.as-video-url-dialog-height', this.$view) .on('change', this.ev_heightChange); this.$ratio = (0,ACore.$)('checkbox', this.$view) .on('change', this.ev_widthChange); this.$actionBtns = (0,ACore.$$)('.as-message-dialog-footer button', this.$view); this.$okBtn = this.$actionBtns[0]; }; VideoUrlDialog.prototype.onStart = function () { if (this.$view) { this.$urlInput.value = ''; this.$width.value = ''; this.$height.value = ''; this.$info.innerHTML = ''; this.$image.attr('src', undefined); this.$okBtn.disabled = true; } this._prevUrl = null; }; VideoUrlDialog.prototype.onResume = function () { document.body.appendChild(this.getView()); /*var testcase = [ 'https://www.facebook.com/watch?v=794088524953444', 'https://www.youtube.com/watch?v=_YzngEllRgM&list=RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVMX8mhF6HgzVA&index=14', 'https://vimeo.com/735513454', 'https://www.dailymotion.com/video/x8d2trt', 'https://www.youtube.com/embed/AoN__ZtGenc', 'https://www.youtube.com', 'https://absol.cf/share/10h.mp4(1).mp4', 'https://absol.cf/share', 'https://www.facebook.com/watch?v=386823333524397' ] this.$urlInput.value = testcase[0]; this.ev_urlChange();*/ }; VideoUrlDialog.prototype.onPause = function () { this.getView().remove(); }; VideoUrlDialog.prototype.resolveCurrentTask = function (result) { if (this.task) { this.task.resolve(result || this.pendingResult); this.task = null; } }; VideoUrlDialog.prototype.cancelCurrentTask = function () { if (this.task) { this.task.cancel(); this.task = null; } }; VideoUrlDialog.prototype.assignTask = function (task) { this.cancelCurrentTask(); this._prevUrl = null; this.task = task; if (task.initInfo) this.onInfo(task.initInfo); }; VideoUrlDialog.prototype.onInfo = function (info){ this.getView(); this._prevUrl = info.url; if (info.error) { this.pendingResult = null; this.$image.attr('src', undefined); this.$info.innerHTML = '<span style="color:#ff2c2c">Can not load video!</span>'; return; } this.pendingResult = info; if (info.image) this.$image.attr('src', info.image); else { this.$image.attr('src', undefined); } var infoText = []; if ((0,utils.isRealNumber)(info.width) && (0,utils.isRealNumber)(info.height)) { infoText.push([info.width, ' x ', info.height].join('')); } if ('displayWidth' in info){ this.$width.value = info.displayWidth; this.$height.value = info.displayHeight; this.$urlInput.value = info.url; } else if ((0,utils.isRealNumber)(info.width) && (0,utils.isRealNumber)(info.height)) { infoText.push([info.width, ' x ', info.height].join('')); this.$width.value = info.width; this.$height.value = info.height; this.$ratio.checked = true; } else { this.$width.value = 560; this.$height.value = 315; } if ('keepRatio' in info){ this.$ratio.checked = true; } if (info.type.startsWith('video/')) { infoText.push(info.type.substring(6).toUpperCase()); } if (info.title) { infoText.push('<strong>' + info.title + '</strong>'); } this.$info.innerHTML = infoText.join(', '); this.$okBtn.disabled = false; } /*** * @param event */ VideoUrlDialog.prototype.ev_urlChange = function (event) { var newUrl = this.$urlInput.value; if (this._prevUrl === newUrl) return; this.$okBtn.disabled = true; this._prevUrl = newUrl; var info = parseVideoUrl(newUrl); var sync; if (info.videoId === 'INVALID_URL') { info.error = 'INVALID_URL'; sync = Promise.resolve(); } else if (info.hostType !== '*') { info.type = 'text/html'; sync = getEmbedVideoInfo(info.originalUrl, info.hostType === 'facebook').then((result) => { if (newUrl !== this._prevUrl) return; Object.assign(info, result); if (!(0,utils.isNaturalNumber)(result.width)) { info.error = "INVALID_VIDEO"; } }); } else { sync = getVideoFileHeader(info.url).then(result => { if (newUrl !== this._prevUrl) return; Object.assign(info, result); if (result.error) { this.$info.innerHTML = '<span style="color:#ff2c2c">Can not load video!</span>'; } }).then(() => { if (newUrl !== this._prevUrl) return; if (info.error) return; if (info.type.startsWith('video/')) return getVideoPreview(info.url) .then(result1 => { if (newUrl !== this._prevUrl) return; Object.assign(info, result1); }, error1 => { info.error = "CAN_NOT_LOAD"; }); }); } sync.then(() => { if (newUrl !== this._prevUrl) return; this.onInfo(info); }); }; /*** * @param event */ VideoUrlDialog.prototype.ev_action = function (event) { setTimeout(() => { var action = event.action; if (action.name === 'cancel') { this.cancelCurrentTask() } var width = parseInt(this.$width.value); var height = parseInt(this.$height.value); var result = Object.assign({}, this.pendingResult); if (!isNaN(width) && !isNaN(height)) { result.displayWidth = width; result.displayHeight = height; } else { result.displayWidth = 560; result.displayHeight = 315; } result.keepRatio = this.$ratio.checked; if (action.name === 'ok') { this.resolveCurrentTask(result); } this.stop(); }, 100) }; VideoUrlDialog.prototype.ev_widthChange = function () { if (!this.$ratio.checked || !this.pendingResult || !(0,utils.isRealNumber)(this.pendingResult.width) || !(0,utils.isRealNumber)(this.pendingResult.height)) return; var ratio = this.pendingResult.width / this.pendingResult.height; var width = parseFloat(this.$width.value); this.$height.value = Math.round(width / ratio); }; VideoUrlDialog.prototype.ev_heightChange = function () { if (!this.$ratio.checked || !this.pendingResult || !(0,utils.isRealNumber)(this.pendingResult.width) || !(0,utils.isRealNumber)(this.pendingResult.height)) return; var ratio = this.pendingResult.width / this.pendingResult.height; var height = parseFloat(this.$height.value); this.$width.value = Math.round(height * ratio); }; /*** * @type {VideoUrlDialog} */ var shareInstance; function openVideUrlDialog(initInfo) { shareInstance = shareInstance || new VideoUrlDialog(); return new Promise((rs) => { var task = { resolved: false, canceled: false, resolve: function (info) { if (this.resolved) return; this.resolved = true; rs(info); }, cancel: function () { if (this.resolved || this.canceled) return; if (shareInstance.task !== this) return; this.canceled = true; rs(null); }, initInfo: initInfo } shareInstance.start(); shareInstance.assignTask(task); }); } /* harmony default export */ const videourldialog_VideoUrlDialog = ((/* unused pure expression or super */ null && (VideoUrlDialog))); // EXTERNAL MODULE: ./node_modules/absol/src/Converter/base64.js var base64 = __webpack_require__(9959); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/VideoExtension.js var VideoExtension_name = 'video'; var VideoExtension_command = 'insert_video'; function getInfoFromCKImage(elt) { var initInfo = null; if (elt.getAttribute('data-node-type') === 'video') { initInfo = JSON.parse((0,base64.base64DecodeUnicode)(elt.getAttribute('data-info'))); initInfo.embedUrl = elt.getAttribute('data-embed-url'); initInfo.image = elt.getAttribute('src'); initInfo.image = elt.getAttribute('src'); } return initInfo; } function VideoExtension_init(editor) { editor.ui.addButton(VideoExtension_command, { label: 'Insert Video', command: VideoExtension_command, }); editor.on('doubleclick', (event) => { var info; if (event.data && event.data.element) { info = getInfoFromCKImage(event.data.element); if (info) { event.cancel(); editor.execCommand(VideoExtension_command); } } }); editor.addCommand(VideoExtension_command, { exec: function (editor) { var initInfo; var sel = editor.getSelection(); var elt; if (sel) { elt = sel.getSelectedElement(); } if (elt) { initInfo = getInfoFromCKImage(elt); } openVideUrlDialog(initInfo).then((result) => { var savedInfo = Object.assign({}, result); delete savedInfo.image; delete savedInfo.embedUrl; if (result) { var html = `<img src="${result.image}" data-type="${result.type}" \ onload="window.ckeditorVideoInit && window.ckeditorVideoInit(this)"\ data-embed-url="${result.embedUrl}"\ width="${result.displayWidth}px" height="${result.displayHeight}px"\ data-node-type="video" \ data-info="${(0,base64.base64EncodeUnicode)(JSON.stringify(savedInfo))}" >`; editor.insertHtml(html); } }); } }); } window.ckeditorVideoInit = function (elt) { (0,ACore.$)(elt); if (!elt.isDescendantOf(document.body)) return; var newElt; var type = elt.attr('data-type'); if (type.startsWith('video/')) { newElt = (0,ACore._)({ tag: 'video', attr: { crossorigin: "anonymous", crossOrigin: "anonymous", preload: 'auto', src: elt.attr('data-embed-url'), width: elt.attr('width'), height: elt.attr('height'), controls: true }, }); } else { newElt = (0,ACore._)({ tag: 'iframe', attr: { src: elt.attr('data-embed-url'), width: elt.attr('width'), height: elt.attr('height'), } }) } elt.selfReplace(newElt); } /* harmony default export */ const VideoExtension = ({ name: VideoExtension_name, command: VideoExtension_command, plugin: { init: VideoExtension_init }, extendMethods: {} }); /*** * @name variables * @type {{}} * @memberOf CKPlaceholder# */ ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MDIPicker.js /** * @extends Follower * @constructor */ function MDIPicker() { this.$searchInput = (0,ACore.$)(Searcher/* default.tag */.Z.tag, this).on('stoptyping', this.eventHandler.searchChange); this.cancelWaiting(); var bodys = (0,ACore.$$)('.as-mdi-picker-body', this); this.$body = bodys[0]; this.$searchResult = bodys[1]; this.iconItems = []; this.$icons = {}; (0,utils.getMaterialDesignIconNames)().then(iconNames => { if (!iconNames) return; var row; var iconName; for (var i = 0; i < iconNames.length; i++) { iconName = iconNames[i]; if (i % 8 === 0) row = (0,ACore._)('.as-mdi-picker-row').addTo(this.$body); this.$icons[iconName] = (0,ACore._)({ tag: 'button', class: 'as-transparent-button', child: 'span.mdi.mdi-' + iconName, attr: { 'data-icon': iconName, title: iconName } }).addTo(row); this.iconItems.push({ text: iconName, icon: iconName }); } this.updatePosition() }); this.on('click', this.eventHandler.click); } MDIPicker.tag = 'MDIPicker'.toLowerCase(); MDIPicker.render = function () { return (0,ACore._)({ tag: Follower/* default */.Z, class: 'as-mdi-picker', extendEvent: 'pick', child: [ { tag: Searcher/* default */.Z }, { class: 'as-mdi-picker-body', }, { style: { display: 'none' }, class: 'as-mdi-picker-body', } ] }); }; MDIPicker.prototype.focus = function () { this.$searchInput.focus(); }; MDIPicker.eventHandler = {}; /** * @this MDIPicker */ MDIPicker.eventHandler.searchChange = function () { var query = this.$searchInput.value; query = query.trim().toLowerCase().replace(/\s+/g, ' '); var res, row, i; var iconName; if (query.length > 0) { this.$body.addStyle('display', 'none'); this.$searchResult.clearChild().removeStyle('display'); res = (0,search/* searchListByText */.o)(query, this.iconItems); for (i = 0; i < res.length; i++) { iconName = res[i].text; if (i % 8 === 0) row = (0,ACore._)('.as-mdi-picker-row').addTo(this.$searchResult); (0,ACore._)({ tag: 'button', class: 'as-transparent-button', child: 'span.mdi.mdi-' + iconName, attr: { 'data-icon': iconName, title: iconName } }).addTo(row); } } else { this.$searchResult.addStyle('display', 'none'); this.$body.removeStyle('display'); } }; MDIPicker.eventHandler.click = function (event) { var t = event.target; while (t) { if (t === this) break; if (t.hasClass && t.hasClass('as-transparent-button')) { this.emit('pick', { icon: t.attr('data-icon') }); } t = t.parentElement; } } ACore/* default.install */.Z.install(MDIPicker); /* harmony default export */ const js_MDIPicker = (MDIPicker); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/MDIExtension.js var MDIExtension_name = 'mdi'; var MDIExtension_command = 'mdi_dialog'; function MDIExtension_init(editor) { editor.widgets.add(MDIExtension_name, { button: 'Change MDI icon', template: '<span class="mdi"></span>', allowedContent: 'span(!as-ck-widget-mdi)', requiredContent: 'span(as-ck-widget-mdi)', upcast: function (element) { return element.name === 'div' && element.hasClass('mdi'); }, }); editor.ui.addButton(MDIExtension_command, { label: 'Insert MDI', command: MDIExtension_command, }); editor.addCommand(MDIExtension_command, { exec: function (editor) { var btn = (0,ACore.$)('.cke_button.cke_button__mdi_dialog', editor.container.$); if (!btn) return;//unknown error var zIndex = (0,utils.findMaxZIndex)(btn) + 2e3; var picker = (0,ACore._)({ tag: js_MDIPicker, style: { zIndex: zIndex, }, attr: { tabindex: 1 }, on: { pick: (event) => { picker.followTarget = null; picker.selfRemove(); editor.insertHtml(`<span class="as-ck-widget-mdi mdi mdi-${event.icon}"> </span>`); } } }).addTo(document.body); picker.followTarget = btn; setTimeout(() => { picker.focus(); }, 100); picker.on('blur', () => { setTimeout(() => { if (!document.activeElement || !AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(document.activeElement, picker)) { picker.followTarget = null; picker.selfRemove(); } }, 200); }, true); } }); } /* harmony default export */ const MDIExtension = ({ init: MDIExtension_init, name: MDIExtension_name, command: MDIExtension_command, plugin: { init: MDIExtension_init } }); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DynamicCSS.js var DynamicCSS = __webpack_require__(488); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/plugins.js var ckContentStyleUrl; var ckPluginInitialized = false; var CKExtensions = [ExpressionExtension, SimpleTextExtension, VariableExtension, DynamicLinkExtension, ImageFileExtension, VideoExtension, MDIExtension]; var CKExtensionDict = CKExtensions.reduce(function (ac, cr) { ac[cr.name] = cr; return ac; }, {}); var CKStylesSetDefault = [ { name: 'Notice', element: 'p', attributes: { class: 'as-ck-alert as-variant-notice' } }, { name: 'Warning', element: 'p', attributes: { class: 'as-ck-alert as-variant-warning' } }, { name: 'Tip', element: 'p', attributes: { class: 'as-ck-alert as-variant-info' } }, { name: 'Success', element: 'p', attributes: { class: 'as-ck-alert as-variant-success' } } ]; function ckInit() { if (!window.CKEDITOR) return; if (ckPluginInitialized) return; var styleCode = ckcontentstyle_css.replace(/\$basePath/g, CKEDITOR.basePath); ckContentStyleUrl = URL.createObjectURL((0,Converter_file.stringToBlob)(styleCode, 'css')); ckPluginInitialized = true; document.head.appendChild((0,ACore._)('<link rel="stylesheet" href="' + ckContentStyleUrl + '">')); if (!CKEDITOR.stylesSet.get('as_styles_set_default')) { CKEDITOR.stylesSet.add('as_styles_set_default', CKStylesSetDefault); } CKExtensions.forEach(function (e) { if (e.plugin) { CKEDITOR.plugins.add(e.name, e.plugin); } }) } function ckMakeDefaultConfig(config, extensions, holderElt) { ckInit(); var userImageFileDialog = !!(window.contentModule && window.contentModule.chooseFile); /* * if (!this.attributes.directUpload && window.contentModule && window.contentModule.chooseFile) { window.contentModule.chooseFile({ type: "image_file" }).then(function (result) { if (result) { this.attributes.value = result; } }.bind(this)); } * */ config = config || {}; //disable special chars encode config.entities = false; config.stylesSet = ['as_styles_set_default'].concat((0,DataStructure_Array.arrayUnique)((config.stylesSet || '').trim().split(/\s*,\s*/))) .filter(function (c) { return !!c; }).join(','); if (extensions) extensions.push('video'); if (extensions) extensions.push('mdi'); if (extensions && extensions.indexOf(VariableExtension.name) >= 0) { config.title = false; } if (config.toolbar === 'SIMPLE') { config.toolbar = [ { name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'TextColor', 'BGColor', 'NumberedList', 'BulletedList', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', userImageFileDialog ? 'image_mgn_dialog' : 'Image'] }, // { name: 'styles', items: ['Styles', 'Format', 'Font', 'FontSize'] }, { name: "extensions", items: extensions.map(function (eName) { if (CKExtensionDict[eName] && CKExtensionDict[eName].command) { return CKExtensionDict[eName].command; } }).filter(function (u) { return !!u; }) }, { name: 'tools', items: ['Maximize'] } ]; } else if (config.toolbar === 'BASIC') { config.toolbar = [ { name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'TextColor', 'BGColor', 'NumberedList', 'BulletedList', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', userImageFileDialog ? 'image_mgn_dialog' : 'Image'] }, { name: 'styles', items: ['Format', 'Font', 'FontSize'] }, { name: "paragraph", items: ['Paragraph'] }, { name: "extensions", items: extensions.map(function (eName) { if (CKExtensionDict[eName] && CKExtensionDict[eName].command) { return CKExtensionDict[eName].command; } }).filter(function (u) { return !!u; }) }, { name: 'tools', items: ['Maximize'] } ]; } else if (!config.toolbar || config.toolbar === "ADVANCED") { config.toolbar = [ { name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript'] }, { name: 'colors', items: ['TextColor', 'BGColor'] }, { name: "format", items: ['CopyFormatting', 'RemoveFormat'] }, { name: 'paragraph', items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'] }, { name: 'styles', items: ['Styles', 'Format', 'Font', 'FontSize'] }, { name: 'links', items: ['Link', 'Unlink', 'Anchor'] }, { name: 'insert', items: [userImageFileDialog ? 'image_mgn_dialog' : 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe'] }, { name: 'tools', items: ['Maximize', 'ShowBlocks'] }, { name: 'editing', items: ['Find', 'Replace'] }, { name: "extensions", items: extensions.map(function (eName) { if (CKExtensionDict[eName] && CKExtensionDict[eName].command) { return CKExtensionDict[eName].command; } }).filter(function (u) { return !!u; }) }, { name: 'document', items: ['Source'] } ]; console.log(config.toolbar) } config.toolbar = config.toolbar.filter(function (i) { return i.items && i.items.length > 0; }); config.toolbar = [config.toolbar.reduce(function (ac, cr) { // if (ac.items.length > 0) // ac.items.push('-'); var items = cr.items.filter(function (it) { return it !== '-'; }); ac.items.push.apply(ac.items, items); return ac; }, { name: 'nogroup', items: [] })]; if (!config.height) { config.height = '500px'; } var contentsCss = [ckContentStyleUrl]; if (typeof config.contentsCss === "string") { contentsCss.push(config.contentsCss); } else if (config.contentsCss instanceof Array) { contentsCss.push.apply(contentsCss, config.contentsCss); } var has = contentsCss.some(function (url) { return url.indexOf('materialdesignicons') >= 0; }); if (!has) { contentsCss.push('https://absol.cf/vendor/materialdesignicons/materialdesignicons.css'); } has = contentsCss.some(function (url) { return url.indexOf('family=Material+Icons') >= 0; }); if (!has) { contentsCss.push('https://fonts.googleapis.com/icon?family=Material+Icons'); } has = contentsCss.some(function (url) { return url.indexOf(CKEDITOR.basePath + 'contents.css') >= 0; }); if (!has) { contentsCss.push(CKEDITOR.basePath + 'contents.css?time=' + Math.random()); } config.contentsCss = contentsCss; var extraPlugins = ['image_mgn']; if (holderElt.stickyToolbar && !config.height) { extraPlugins.push('autogrow'); config.autoGrow_minHeight = 400; } if (typeof config.extraPlugins === 'string') { extraPlugins.push.apply(extraPlugins, config.extraPlugins.trim().split(/\s*,\s*/)); } else if (extraPlugins instanceof Array) { extraPlugins.push.apply(extraPlugins, config.extraPlugins) } extraPlugins = extraPlugins.filter(function (c) { return typeof c === 'string' && !!c; }); CKExtensions.forEach(function (e) { if (extensions.indexOf(e.name) >= 0 && e.plugin) extraPlugins.push(e.name); }); extraPlugins = (0,DataStructure_Array.arrayUnique)(extraPlugins); config.extraPlugins = extraPlugins.join(','); config.allowedContent = true;//false: you must add button ui => bug Object.assign(config, { //style // htmlEncodeOutput: false, // entities: false, // basicEntities: false, // // config.cloudServices_uploadUrl: 'DDFFE2739B83A73DDF16AB641ECA2', // // config.cloudServices_tokenUrl: 'https://lab.daithangminh.vn/hr_system_settings/php/uploadMedia.php', // extraPlugins: 'LinkDB, Note', // filebrowserBrowseUrl: 'js/ckfinder/ckfinder.html', // filebrowserImageBrowseUrl: 'js/ckfinder/ckfinder.html?type=Images', // filebrowserFlashBrowseUrl: 'js/ckfinder/ckfinder.html?type=Flash', // filebrowserUploadUrl: 'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files', // filebrowserImageUploadUrl: 'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images', // filebrowserFlashUploadUrl: 'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash' }); return config; } function ckAddDefaultStyleSet(ckEditor) { } ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/CKStickyToolbarController.js function CKStickyToolbarController(holderElt) { this.editor = holderElt.editor; this.$elt = this.editor.container.$; this.activated = false; this['onScroll'] = this.onScroll.bind(this); this.trackedScroller = []; } CKStickyToolbarController.prototype.start = function () { if (this.activated) return; var c = this.$elt.parentElement; while (c) { c.addEventListener('scroll', this.onScroll); c = c.parentElement; } }; CKStickyToolbarController.prototype.stop = function () { if (!this.activated) return; while (this.trackedScroller.length > 0) { this.trackedScroller.pop().removeEventListener('scroll', this.onScroll); } }; CKStickyToolbarController.prototype.onScroll = function (event) { if (!AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(this.$elt, document.body)) { this.stop(); return; } this.$toolbar = this.$toolbar || (0,ACore.$)('.cke_top', this.$elt); if (!this.$toolbar) return; var oBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this.$elt.parentElement); var bound = this.$elt.getBoundingClientRect(); var tBound = this.$toolbar.getBoundingClientRect(); if (bound.top < oBound.top && oBound.top + tBound.height + 30 < bound.bottom) { this.$toolbar.addStyle('transform', 'translate(0, ' + ((oBound.top - bound.top)) + 'px)'); } else { this.$toolbar.removeStyle('transform'); } }; /* harmony default export */ const ckeditor_CKStickyToolbarController = (CKStickyToolbarController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/CKPlaceholder.js Dom/* default.documentReady.then */.ZP.documentReady.then(function () { setTimeout(ckInit, 100); }); /*** * @extends AElement * @constructor */ function CKPlaceholder() { ckInit(); this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.$attachhook.once('attached', this.eventHandler.attached); this._pendingData = ''; this.isReady = false; this.editor = null; this._extensions = []; this._config = this._makeInitConfig(); this.afterReady = new Promise(rs => { this.on('editorready', rs); }); this.stickyToolbarCtrl = null; /*** * @type {{}} * @name config * @memberOf CKPlaceholder# */ /*** * @type {string[]} * @name extensions * @memberOf CKPlaceholder# */ /*** * * @type {boolean} */ this.stickyToolbar = true; } CKPlaceholder.tag = 'CKPlaceholder'.toLowerCase(); CKPlaceholder.render = function () { return (0,ACore._)({ extendEvent: ['editorcreated', 'editorready', 'change', 'command', 'focus'], class: 'as-ck-placeholder' }); }; CKPlaceholder.prototype.mode = 'replace'; /** * * @param {string}data * @private * @returns {string} */ CKPlaceholder.prototype._implicit = function (data) { if (typeof data !== "string") data = ''; var self = this; return this._extensions.reverse().reduce(function (ac, cr) { var extension = CKExtensionDict[cr]; if (extension.implicit) { ac = extension.implicit(ac, self); } return ac; }, data); }; /** * * @param {string}data * @private * @returns {string} */ CKPlaceholder.prototype._explicit = function (data) { var self = this; return this._extensions.reduce(function (ac, cr) { var extension = CKExtensionDict[cr]; if (extension && extension.explicit) { ac = extension.explicit(ac, self); } return ac; }, data); }; /*** * @returns {{}} * @protected */ CKPlaceholder.prototype._makeInitConfig = function () { return {}; }; CKPlaceholder.prototype.selectNext = function () { var editor = this.editor; if (!editor) return; var ranges = editor.getSelection().getRanges(); // var startIndex = editor.element.getHtml().indexOf(findString); // if (startIndex != -1) { // ranges[0].setStart(element.getFirst(), startIndex); // ranges[0].setEnd(element.getFirst(), startIndex + findString.length); // sel.selectRanges([ranges[0]]); // } }; /*** * @memberOf CKPlaceholder# * @type {{}} */ CKPlaceholder.eventHandler = {}; /*** * @this CKPlaceholder */ CKPlaceholder.eventHandler.attached = function () { this.$attachhook.remove(); var config = this.config; var width = this.style.width; if (width.endsWith('px')) config.width = width; var height = this.style.height; if (height.endsWith('px')) config.height = height; config = ckMakeDefaultConfig(this.config, this.extensions, this); this.editor = this.mode === 'replace' ? CKEDITOR.replace(this, config) : CKEDITOR.inline(this, config); this.editor.placeHolderElt = this; this.editor.on('instanceReady', this.eventHandler.instanceReady); this.editor.on('change', this.eventHandler.change); if (this.mode === 'replace') { this.editor.on('focus', function (event) { this.emit('focus', { target: this, type: 'focus', originalEvent: event }); }.bind(this)); } this._extensions.forEach(function (name) { var e = CKExtensionDict[name]; if (e && e.extendMethods) { Object.assign(this, e.extendMethods); } }.bind(this)); this.emit('editorcreated', { type: 'editorcreated', target: this, editor: this.editor }, this); }; CKPlaceholder.eventHandler.instanceReady = function () { var width = this.style.width; if (width.endsWith('px')) width = parseFloat(width.replace('px')); var height = this.style.height; if (height.endsWith('px')) height = parseFloat(height.replace('px')); if ((0,utils.isRealNumber)(width) && (0,utils.isRealNumber)(height)) { this.editor.resize(width, height); } this.isReady = true; if (this._pendingData && this._pendingData.length > 0) { this.editor.setData(this._implicit(this._pendingData)); this._pendingData = null; } this.emit('editorready', { type: 'editorready', target: this, editor: this.editor }, this); }; CKPlaceholder.eventHandler.change = function () { this.emit('change', { type: 'change', target: this, editor: this.editor }, this); }; CKPlaceholder.property = {}; CKPlaceholder.property.data = { /*** * @this CKPlaceholder * @param data */ set: function (data) { if (typeof data !== "string") data = ''; if (this.isReady) { this.editor.setData(this._implicit(data)); } else { this._pendingData = data; } }, /*** * @this CKPlaceholder * @returns {string} */ get: function () { if (this.isReady) return this._explicit(this.editor.getData()); return this._pendingData; } }; CKPlaceholder.property.rawData = { get: function () { if (this.editor) this.editor.getData(); else return this._implicit(this._pendingData); } }; CKPlaceholder.property.config = { set: function (value) { if (this.editor) { throw new Error("Can not set config after the CKEditor created"); } this._config = Object.assign(this._makeInitConfig(), value); }, get: function () { return this._config; } }; CKPlaceholder.property.extensions = { set: function (value) { if (this.editor) { throw new Error("Can not set extensions after the CKEditor created"); } value = value || []; if (typeof value === "string") value = [value]; if (!(value instanceof Array)) value = []; this._extensions = value.filter(function (c) { return typeof c === "string" && c.length > 0 && CKExtensionDict[c]; }); this._extensions = value; }, get: function () { return this._extensions; } }; CKPlaceholder.property.stickyToolbar = { set: function (value) { if (value) { this.addClass('as-has-sticky-toolbar'); } else { return this.removeClass('as-has-sticky-toolbar'); } this.afterReady.then(() => { if (this.mode !== 'replace') return; if (this.stickyToolbar) { if (!this.stickyToolbarCtrl) { this.stickyToolbarCtrl = new ckeditor_CKStickyToolbarController(this); } this.stickyToolbarCtrl.start(); } else { this.editor.container.$.classList.remove('as-has-sticky-toolbar'); if (this.stickyToolbarCtrl) this.stickyToolbarCtrl.stop(); } }); }, get: function () { return this.hasClass('as-has-sticky-toolbar'); } }; ACore/* default.install */.Z.install(CKPlaceholder); /* harmony default export */ const ckeditor_CKPlaceholder = (CKPlaceholder); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ckeditor/CKInlineShortText.js /*** * @extends CKPlaceholder * @constructor */ function CKInlineShortText() { ckeditor_CKPlaceholder.call(this); this.once('editorcreated', this.eventHandler.afterEditorCreated) .on('paste', this.eventHandler.paste, true) .once('editorready', this.eventHandler.afterEditorReady); } OOP/* default.mixClass */.ZP.mixClass(CKInlineShortText, ckeditor_CKPlaceholder); CKInlineShortText.tag = 'CKInlineShortText'.toLowerCase(); CKInlineShortText.property = Object.assign({}, ckeditor_CKPlaceholder.property); CKInlineShortText.eventHandler = Object.assign({}, ckeditor_CKPlaceholder.eventHandler); CKInlineShortText.render = function () { return (0,ACore._)({ class: 'as-ck-inline-short-text', extendEvent: ['editorcreated', 'editorready', 'change', 'command'], id: (0,stringGenerate.randomIdent)(8), attr: { contenteditable: 'true' } }); }; CKInlineShortText.prototype.mode = 'inline'; CKInlineShortText.prototype._makeInitConfig = function () { var config = { toolbar: [ { name: 'extension', items: (0,DataStructure_Array.arrayRemoveNone)(this._extensions.map(function (eName) { if (CKExtensionDict[eName] && CKExtensionDict[eName].command) { return CKExtensionDict[eName].command; } })) } ], keystrokes: [ [13 /* Enter */, 'blur'], [CKEDITOR.SHIFT + 13 /* Shift + Enter */, 'blur'] ] }; return config; }; CKInlineShortText.property.extensions = Object.assign({}, ckeditor_CKPlaceholder.property.extensions, { set: function (value) { value = value || []; value.push('simple_text') value = (0,DataStructure_Array.arrayUnique)(value); ckeditor_CKPlaceholder.property.extensions.set.call(this, value); this._config = this._makeInitConfig(); } }); CKInlineShortText.prototype._hookScroll = function () { this.$scrollers = []; var c = this.parentElement; while (c) { this.$scrollers.push(c); c = c.parentElement; } this.$scrollers.push(document); this.$scrollers.forEach(function (elt) { elt.addEventListener('scroll', this.eventHandler.scroll); }.bind(this)) }; CKInlineShortText.prototype._unhookScroll = function () { this.$scrollers.forEach(function (elt) { elt.removeEventListener('scroll', this.eventHandler.scroll); }.bind(this)) }; CKInlineShortText.eventHandler.afterEditorCreated = function () { this.editor.on('paste', function (evt) { evt.cancel(); }); }; CKInlineShortText.eventHandler.afterEditorReady = function (){ this.$toolbarElt = this.$toolbarElt || (0,ACore.$)('#cke_' + this.attr('id')); this['removeToolbar'] = this.removeToolbar; this._hookScroll(); setTimeout(this.eventHandler.tick, 5000); } CKInlineShortText.eventHandler.paste = function (event) { var self = this; var clipboardData = (event.clipboardData || window.clipboardData); /**Safari bug */ event.preventDefault(); if (clipboardData) { if (clipboardData.items) { var items = Array.prototype.slice.call(clipboardData.items); var plainTextItems = items.filter(function (item) { return item.type.indexOf('text/plain') >= 0; }); if (plainTextItems.length > 0) { var plainTextItem = plainTextItems[0];//only one item plainTextItem.getAsString(function (text) { self.editor.insertHtml(self._implicit(text)) }); } } else { var text = event.clipboardData.getData('text/plain'); if (text) { self.editor.insertHtml(self._implicit(text)) } } } }; CKInlineShortText.eventHandler.tick = function () { if (!this.isDescendantOf(document.body)) { this._unhookScroll(); return; } setTimeout(this.eventHandler.tick, 5000); } /*** * @this CKInlineShortText */ CKInlineShortText.eventHandler.scroll = function () { // If we don't have any active instance of CKEDITOR - return if (!CKEDITOR.currentInstance) { return; } if (CKEDITOR.currentInstance.element.$ !== this) return; // Save the elements we need to work with if (!this.isDescendantOf(document.body)) { this._unhookScroll(); return; } this.$toolbarElt = this.$toolbarElt || (0,ACore.$)('#cke_' + this.attr('id')); var toolbarElt = this.$toolbarElt; if (!toolbarElt) return; var bound = this.getBoundingClientRect(); var toolBound = toolbarElt.getBoundingClientRect(); var outbound = (0,Dom/* traceOutBoundingClientRect */.DI)(this); var left = Math.max(0, bound.left); var top = bound.top - toolBound.height; if (outbound.top > bound.bottom || outbound.bottom < bound.top) { top = -1000; } else if (bound.top < toolBound.height) { top = bound.bottom; } toolbarElt.addStyle({ top: top + 'px', left: left + 'px' }); }; CKInlineShortText.property.removeToolbar = { set: function (value) { this._removeToolbar = !!value; if (this.$toolbarElt) { if (this._removeToolbar) { this.$toolbarElt.addClass('as-hidden'); } else { this.$toolbarElt.removeClass('as-hidden'); } } }, get: function () { return this._removeToolbar; } }; ACore/* default.install */.Z.install(CKInlineShortText); /* harmony default export */ const ckeditor_CKInlineShortText = (CKInlineShortText); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/verticaltimeline.css var verticaltimeline = __webpack_require__(5386); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/VerticalTimeline.js /*** * @extends AElement * @constructor */ function VerticalTimeline() { this._current = 0; this._items = []; this.$items = []; this.current = 0; } VerticalTimeline.tag = 'VerticalTimeline'.toLowerCase(); VerticalTimeline.render = function () { return (0,ACore._)({ class: 'as-vertical-timeline', child: [] }); }; VerticalTimeline.prototype._makeItem = function (item, i) { var iconElt = (0,ACore._)('span.mdi.mdi-circle'); return (0,ACore._)({ class: 'as-vertical-timeline-item', props: { $icon: iconElt }, child: [ { class: 'as-vertical-timeline-icon-ctn', child: iconElt }, { class: 'as-vertical-timeline-tile', child: { tag: 'span', child: { text: item.text } } } ] }); }; VerticalTimeline.property = {}; VerticalTimeline.property.items = { /*** * @this VerticalTimeline * @param items */ set: function (items) { items = items || []; this._items = items; this.clearChild(); this.$items = items.map(function (item, i) { return this._makeItem(item, i); }.bind(this)); this.addChild(this.$items); this.current = this._current;//update }, get: function () { } }; VerticalTimeline.property.current = { set: function (value) { value = (0,utils.isRealNumber)(value) ? (value >> 0) : -1; this._current = value; var itemElt; for (var i = 0; i < this.$items.length; ++i) { itemElt = this.$items[i];//.$icon.removeClass(''); if (i < value) { itemElt.$icon.removeClass('mdi-numeric-' + (i + 1) + '-circle') .removeClass('mdi-circle') .addClass('mdi-check-circle'); itemElt.removeClass('as-inactive').removeClass('as-active'); } else if (i === value) { itemElt.$icon.addClass('mdi-numeric-' + (i + 1) + '-circle') .removeClass('mdi-circle') .removeClass('mdi-check-circle'); itemElt.removeClass('as-inactive').addClass('as-active'); } else { itemElt.addClass('as-inactive').removeClass('as-active'); itemElt.$icon.removeClass('mdi-numeric-' + (i + 1) + '-circle') .addClass('mdi-circle') .removeClass('mdi-check-circle'); } } }, get: function () { return Math.max(-1, Math.min(this._current, this._items.length)); } }; ACore/* default.install */.Z.install(VerticalTimeline); /* harmony default export */ const js_VerticalTimeline = (VerticalTimeline); // EXTERNAL MODULE: ./node_modules/absol/src/Color/Color.js var Color_Color = __webpack_require__(257); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/locationinput.css var locationinput = __webpack_require__(4899); // EXTERNAL MODULE: ./node_modules/absol/src/Network/XLoader.js var XLoader = __webpack_require__(9238); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/LocationPicker.js ///https://developers.google.com/maps/documentation/javascript/examples/geocoding-place-id var googleMapLibs = null; function getGoogleMapLib() { var jsElt; if (!googleMapLibs) { if (window.google && window.google.maps) { return Promise.resolve(window.google.maps); } else { jsElt = Array.prototype.find.call(document.head.childNodes, elt => { if ((typeof elt.src === "string") && elt.src.startsWith('https://maps.googleapis.com/maps/api/js')) return jsElt; }); if (jsElt) { return new Promise((resolve, reject) => { if (jsElt.readyState) { //IE jsElt.onreadystatechange = function () { if (jsElt.readyState === "loaded" || jsElt.readyState === "complete") { jsElt.onreadystatechange = null; resolve(); } }; } else { //Others var onLoad = () => { resolve(); jsElt.removeEventListener('load', onLoad); } jsElt.addEventListener('load', onLoad); } }) } else { throw new Error("Could not detect Google Map API!"); } } } return googleMapLibs; } var googleMarkerLibSync = null; function getGoogleMarkerLib() { if (!googleMarkerLibSync) googleMarkerLibSync = getGoogleMapLib() .then(() => google.maps.importLibrary("marker")) .then((mdl) => { google.maps.marker = mdl; return mdl; }); return googleMarkerLibSync; } var googlePlacesLibSync; function getGooglePlacesLib() { if (!googlePlacesLibSync) googlePlacesLibSync = getGoogleMapLib() .then(() => { if (google.maps.places) { } else { return google.maps.importLibrary("places").then((mdl) => { google.maps.places = mdl; return mdl; }); } }); return googleMarkerLibSync; } function createMyLocationMarkerContent() { var svgTxt = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> <circle r="10" cx="12" cy="12" style="stroke: white; stroke-width: 2px; fill: #1da1ff"></circle> </svg>`; return (0,ACore._)(svgTxt); } /*** * @extends AElement * @constructor */ function LocationPicker() { getGoogleMarkerLib(); if (BrowserDetector/* default.isMobile */.Z.isMobile) { this.addClass('as-mobile'); } this.map = new google.maps.Map(this, { mapId: (0,stringGenerate.randomIdent)(),//'DEMO_MAP_ID', zoom: 8, scaleControl: true, center: new google.maps.LatLng(21.018755, 105.839729), streetViewControl: false, fullscreenControl: false, mapTypeControl: true, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.TOP_RIGHT, } }); this.map.setOptions({ draggableCursor: 'default' }); this.map.addListener('click', this.eventHandler.clickMap); this.geocoder = new google.maps.Geocoder(); this.infoWindow = new google.maps.InfoWindow(); this.$myLocationBtn = (0,ACore._)({ tag: 'button', class: 'as-location-picker-control-btn', child: 'span.mdi.mdi-crosshairs-gps', on: { click: this.selectMyLocation.bind(this) } }); this.$rightBottomCtn = (0,ACore._)({ class: 'as-location-picker-control-ctn', child: [this.$myLocationBtn], style: { overflow: 'hidden' } }); this.$searchInput = (0,ACore._)({ tag: js_AutoCompleteInput.tag, class: 'as-location-picker-search-input', props: { adapter: this }, child: { class: 'as-location-picker-search-input-search-icon-ctn', child: 'span.mdi.mdi-magnify', on: { click: this.eventHandler.search } }, on: { change: this.eventHandler.searchChange } }); this.$searchInput.$input.on('keydown', this.eventHandler.searchKeypress) this.$topLeftCtn = (0,ACore._)({ class: ['as-location-picker-control-ctn', 'as-top'], child: [ this.$searchInput ] }); this.$okBtn = (0,ACore._)({ tag: FlexiconButton/* default.tag */.Z.tag, class: 'primary', props: { text: 'OK', disabled: true }, on: { click: this.eventHandler.clickAction.bind(this, 'OK') } } ); this.$cancelBtn = (0,ACore._)({ tag: FlexiconButton/* default.tag */.Z.tag, class: ['as-location-picker-cancel-btn', 'secondary'], props: { text: 'CANCEL' }, on: { click: this.eventHandler.clickAction.bind(this, 'CANCEL') } } ); this.$bottomLeftCtn = (0,ACore._)({ class: ['as-location-picker-control-ctn', 'as-transparent', 'as-bottom'], style: { paddingBottom: '5px' }, child: [this.$okBtn, this.$cancelBtn] }); this.map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(this.$rightBottomCtn); this.map.controls[google.maps.ControlPosition.TOP_LEFT].push(this.$topLeftCtn); this.map.controls[google.maps.ControlPosition.BOTTOM_LEFT].push(this.$bottomLeftCtn); this.autoCompleteService = new google.maps.places.AutocompleteService(this.map, { fields: ["place_id", "geometry", "name", "formatted_address"] }); this.placeService = new google.maps.places.PlacesService(this.map); this.selectedMarker = null; this.searchingMarkers = []; this.myLocationMarker = null; /*** * @type {LatLng} * @name value * @memberOf LocationPicker# */ /*** * @type {boolean} * @name readOnly * @memberOf LocationPicker# */ } LocationPicker.tag = 'LocationPicker'.toLowerCase(); LocationPicker.render = function () { return (0,ACore._)({ class: 'as-location-picker', extendEvent: ['action', 'location', 'requestlocation', 'error'] }); }; LocationPicker.prototype.queryItems = function (query) { var latLng = (0,utils.parseDMS)(query) || (0,utils.parseLatLng)(query); if (latLng) { return new Promise(resolve => { this.geocoder.geocode({ location: (0,utils.implicitLatLng)(latLng) }, (results, status) => { if (status === google.maps.GeocoderStatus.OK) { results.forEach(it => { it.description = it.formatted_address; }); resolve(results); // Returns an array of place predictions } return resolve([]); }); }); } var request = { input: query, locationBias: this.map.getBounds() }; return new Promise( (resolve)=> { this.autoCompleteService.getPlacePredictions(request, function (results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { resolve(results); } else resolve([]); }); }); }; LocationPicker.prototype.getItemText = function (item, mInput) { return item.description; }; LocationPicker.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) { return _({ class: 'as-place-search-auto-complete-item', child: [ { class: 'as-place-search-auto-complete-item-desc', child: { text: item.description } } ] }); }; LocationPicker.prototype.getBoundsZoomLevel = function (bounds) { var mapDim = this.getBoundingClientRect(); return (0,utils.getMapZoomLevel)(mapDim, bounds); } LocationPicker.prototype.clearSearchingMarkers = function () { while (this.searchingMarkers.length > 0) { this.searchingMarkers.pop().setMap(null); } }; /** * * @param place * @param {boolean=} panTo */ LocationPicker.prototype.selectPlace = function (place, panTo) { if (arguments.length === 1) panTo = true; return getGoogleMarkerLib().then(() => { this.selectedPlace = place || null; if (this.selectedMarker) { this.selectedMarker.setMap(null); } this.$okBtn.disabled = !this.selectedPlace; if (!place) return; var latLng = place.geometry && place.geometry.location; if (!latLng) return; var zoom = panTo && (place.geometry.bounds || place.geometry.viewport) ? this.getBoundsZoomLevel(place.geometry.bounds || place.geometry.viewport) : 18; if (panTo) { this.map.setZoom(zoom); setTimeout(() => { this.map.panTo(latLng); }, 100) } this.selectedMarker = new google.maps.marker.AdvancedMarkerElement({ map: this.map, position: latLng }); this.infoWindow.setContent((place.name ? place.name + ' - ' : '') + place.formatted_address); this.infoWindow.open(this.map, this.selectedMarker); }); }; LocationPicker.prototype.showSearchPlaces = function (places) { this.clearSearchingMarkers(); if (!places || places.length === 0) return; if (places.length === 1) { this.selectPlace(places[0]); return; } var bounds = places.reduce(function (ac, place) { if (place.geometry && place.geometry.location) ac.extend(place.geometry.location); return ac; }, new google.maps.LatLngBounds()); var zoom = places.length === 1 ? ((places[0].geometry.bounds || places[0].geometry.viewport) ? this.getBoundsZoomLevel((places[0].geometry.bounds || places[0].geometry.viewport)) : 18) : this.getBoundsZoomLevel(bounds); var center = places.length === 1 ? places[0].geometry.location : bounds.getCenter(); this.map.setCenter(center); this.map.setZoom(zoom); places.reduce(function (ac, place, i) { var marker; if (place.geometry && place.geometry.location) { marker = new google.maps.marker.AdvancedMarkerElement({ map: this.map, position: place.geometry.location, // icon: 'https://raw.githubusercontent.com/Concept211/Google-Maps-Markers/master/images/marker_black.png' }); ac.push(marker); marker.addListener('click', this.eventHandler.clickMarker.bind(null, marker, place)); } return ac; }.bind(this), this.searchingMarkers); }; /*** * * @param {string} placeId * @param {boolean=} panTo */ LocationPicker.prototype.selectPlaceId = function (placeId, panTo) { if (arguments.length === 1) panTo = true; return new Promise((resolve) => { this.placeService.getDetails({ placeId: placeId, fields: ["name", "formatted_address", "place_id", "geometry"] }, (place, status) => { if ( status === google.maps.places.PlacesServiceStatus.OK && place && place.geometry && place.geometry.location ) { this.selectPlace(place, panTo).then(() => { resolve(true); }); } else { resolve(false); } }); }) }; /*** * * @param latLng * @param {boolean=} panTo */ LocationPicker.prototype.selectLocation = function (latLng, panTo) { if (arguments.length === 1) panTo = true; if (arguments.length === 1) panTo = true; return getGoogleMarkerLib().then(() => { if (this.selectedMarker) { this.selectedMarker.setMap(null); } this.$okBtn.disabled = !latLng; this.selectedPlace = null; if (!latLng) return; this.selectedPlace = { geometry: { location: latLng } }; var zoom = 18; if (panTo) { this.map.setZoom(zoom); setTimeout(() => { this.map.panTo(latLng); }, 100) } this.selectedMarker = new google.maps.marker.AdvancedMarkerElement({ map: this.map, position: latLng }); }); // this.infoWindow.open(this.map, this.selectedMarker); /* return this.geocoder .geocode({ location: latLng }) .then(function (response) { if (response.results[0]) { return this.selectPlaceId(response.results[0].place_id, panTo); } else { return false; } }.bind(this)) .catch(function (e) { safeThrow(e); return false; }); */ }; LocationPicker.prototype.watchMyLocation = function (location, position) { return getGoogleMarkerLib().then(() => { if (this.myLocationMarker) return; this.accuracyCircle = new google.maps.Circle({ strokeColor: "#1988c3", strokeOpacity: 0.4, strokeWeight: 2, fillColor: "#1988c3", fillOpacity: 0.2, radius: 100, map: this.map, clickable: false }); this.accuracyCircle.setEditable(false); this.myLocationMarker = new google.maps.marker.AdvancedMarkerElement({ position: location, title: "My Location", // sName: "My Location", map: this.map, content: createMyLocationMarkerContent() }); if (position && position.coords) { this.accuracyCircle.setRadius(position.coords.accuracy); // Snackbar.show('Accuracy: ' + position.coords.accuracy.toFixed(1) + '(m)'); } var id; if (navigator.geolocation.watchPosition && navigator.geolocation.watchPosition) { id = navigator.geolocation.watchPosition(function (props) { if (!this.isDescendantOf(document.body)) { navigator.geolocation.clearWatch(id); } this.emit('location_now', { location: props.coords }); this.myLocationMarker.position = new google.maps.LatLng(props.coords.latitude, props.coords.longitude); this.accuracyCircle.setCenter(new google.maps.LatLng(props.coords.latitude, props.coords.longitude)); this.accuracyCircle.setRadius(props.coords.accuracy); // Snackbar.show('Sai số tọa độ: ' + props.coords.accuracy.toFixed(1) + ' mét'); }.bind(this), function () { }, { enableHighAccuracy: false, timeout: 5000, maximumAge: 0 }); } }) } LocationPicker.prototype.selectMyLocation = function () { var id = (0,stringGenerate.randomIdent)(); this.emit('requestlocation', { id: id }); if (navigator.geolocation) { var to = setTimeout(() => { this.emit('error', Object.assign(new Error("GPS không phản hồi!"), { id: id })); }, 10000); navigator.geolocation.getCurrentPosition((position) => { clearTimeout(to); var location = null; if (position && position.coords) { this.emit('location', { location: position.coords, id: id }); location = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); } if (location) { this.watchMyLocation(location, position); if (!this.readOnly) this.selectLocation(location); else { this.map.setCenter(location) } } }, (err) => { clearTimeout(to); if (err && err.message.indexOf('denied') >= 0) err = Object.assign(new Error("Yêu cầu lấy tọa độ bị từ chối!"), { id: id }); this.emit('error', err); }, { maximumAge: Infinity }); } }; LocationPicker.property = {}; LocationPicker.property.zoom = { set: function (value) { if (!(0,utils.isRealNumber)(value)) { value = 1; } this.map.setZoom(value); }, get: function () { return this.map.getZoom(); } }; LocationPicker.property.center = { set: function (value) { value = value || null; var latlng = null; if (value instanceof google.maps.LatLng) { latlng = value; } else if (value && (0,utils.isRealNumber)(value.latitude) && (0,utils.isRealNumber)(value.longitude)) { latlng = new google.maps.LatLng(value.latitude, value.longitude); } else if ((value instanceof Array) && (0,utils.isRealNumber)(value[0]) && (0,utils.isRealNumber)(value[1])) { latlng = new google.maps.LatLng(value[0], value[1]); } latlng = latlng || new google.maps.LatLng(21.018755, 105.839729); this.map.setCenter(latlng || new google.maps.LatLng(21.018755, 105.839729)); }, get: function () { return this.map.getCenter(); } }; LocationPicker.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; /*** * * @type {{}} * @memberOf LocationPicker# */ LocationPicker.eventHandler = {}; /*** * @this LocationPicker */ LocationPicker.eventHandler.searchKeypress = function (event) { if (event.key === 'Enter') setTimeout(function () { if (!this.$searchInput.selectedItem) { this.eventHandler.search(); } }.bind(this), 100); }; LocationPicker.eventHandler.searchChange = function () { var item = this.$searchInput.selectedItem; if (!item) return; this.placeService.getDetails({ placeId: item.place_id, fields: ["name", "formatted_address", "place_id", "geometry"] }, function (place, status) { if ( status === google.maps.places.PlacesServiceStatus.OK && place && place.geometry && place.geometry.location ) { this.selectPlace(place); } }.bind(this)); }; /*** * @this LocationPicker */ LocationPicker.eventHandler.search = function () { var request = { bounds: this.map.getBounds(), query: this.$searchInput.value }; if (!request.query) return; this.placeService.textSearch(request, function callback(results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { this.showSearchPlaces(results); } }.bind((this))); }; LocationPicker.eventHandler.clickMarker = function (marker, place) { if (this.readOnly) return; this.selectPlace(place, false); }; LocationPicker.eventHandler.clickMap = function (event) { if (this.readOnly) return; if (event.placeId) { this.selectPlaceId(event.placeId); } else if (event.latLng) { this.selectLocation(event.latLng, false); } } ; LocationPicker.eventHandler.clickAction = function (action, event) { this.emit('action', { type: 'action', action: action, originalEvent: event, target: this }, this); }; ACore/* default.install */.Z.install(LocationPicker); /* harmony default export */ const js_LocationPicker = (LocationPicker); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/LocationView.js var MARKER_RADIUS = 10; var MARKER_BORDER_COLOR = '#4945C8'; function generateColor(id) { id = id + ''; var rgb = [0, 0, 0]; var res; var white = Color_Color/* default.parse */.Z.parse('white'); var c = 100; while (c--) { for (var i = 0; i < id.length; ++i) { rgb[i % 3] = (rgb[i % 3] * 31 + id.charCodeAt(i) * 173) % 255; } res = new Color_Color/* default */.Z([rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, 1]); if (res.getContrastWith(white) > 2 && rgb[0] + rgb[1] + rgb[2] > 50) { break; } } return res; } function distanceInPixels(zoom, latLng1, latLng2) { // Calculate the geographical distance in meters var R = 6371000; // Earth's radius in meters var lat1 = latLng1.lat() * Math.PI / 180; var lat2 = latLng2.lat() * Math.PI / 180; var deltaLat = (latLng2.lat() - latLng1.lat()) * Math.PI / 180; var deltaLng = (latLng2.lng() - latLng1.lng()) * Math.PI / 180; var a = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) + Math.cos(lat1) * Math.cos(lat2) * Math.sin(deltaLng / 2) * Math.sin(deltaLng / 2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); var distanceInMeters = R * c; // Calculate the resolution (meters per pixel) var scale = 156543.03392 * Math.cos(lat1) / Math.pow(2, zoom); // Convert meters to pixels return distanceInMeters / scale; } // https://lab.daithangminh.vn/home_co/carddone/markerclusterer.js var loadMarkerClustererSync = null; var lastOpenInfo = null; /*** * * @param {LocationView} viewerElt * @param {Object} data * @constructor */ function LVPolyline(viewerElt, data) { this.viewerElt = viewerElt; this.map = viewerElt.map; this._polylines = []; this.id = data.id || (0,stringGenerate.randomIdent)(12); this.polylineData = { geodesic: true, strokeColor: data.color || generateColor(this.id).toString('hex6'), strokeOpacity: 1.0, strokeWeight: 2, }; this.polylineData.path = data.path.map(function (crd) { return (0,utils.implicitLatLng)(crd); }); this.polylineHL = new google.maps.Polyline(Object.assign({}, this.polylineData, { strokeColor: 'white', strokeWeight: 5 })); this.polyline = new google.maps.Polyline(this.polylineData); this.template = (0,ACore._)({ style: { position: 'relative', }, child: { tag: 'div', style: { width: `${MARKER_RADIUS * 2}px`, height: `${MARKER_RADIUS * 2}px`, position: 'absolute', top: `${-MARKER_RADIUS}px`, left: `${-MARKER_RADIUS}px`, borderRadius: '50%', backgroundColor: this.polylineData.strokeColor, border: `2px solid ${MARKER_BORDER_COLOR}`, boxSizing: 'border-box', } } }); this.markers = this.polylineData.path.map(function (crd, i) { var anchor = this.template.cloneNode(true); var mkr = new google.maps.marker.AdvancedMarkerElement({ position: crd, map: this.map, content: anchor, }); var infoWindow; if (data.path[i] && data.path[i].info) { infoWindow = new google.maps.InfoWindow(data.path[i].info); anchor.addEventListener('mouseover', function () { if (lastOpenInfo === infoWindow) return; try { if (lastOpenInfo) lastOpenInfo.close(); } catch (e) { } lastOpenInfo = infoWindow; infoWindow.open({ anchor: mkr, map: this.map, shouldFocus: true }); }) } return mkr; }.bind(this)); this.showRoute = viewerElt.showPolylineRoute; } LVPolyline.prototype.remove = function () { this.polyline.setMap(null); this.polylineHL.setMap(null); this.markers.forEach(function (mk) { mk.setMap(null); }) }; Object.defineProperty(LVPolyline.prototype, 'showRoute', { set: function (value) { this._showRoute = !!value; if (value) { this.polylineHL.setMap(this.map); this.polyline.setMap(this.map); } else { this.polylineHL.setMap(null); this.polyline.setMap(null); } }, get: function () { return this._showRoute; } }); Object.defineProperty(LVPolyline.prototype, 'color', { get: function () { return this.polylineData.strokeColor; } }); Object.defineProperty(LVPolyline.prototype, 'sumDistance', { get: function () { var res = 0; var path = this.polylineData.path; for (var i = 1; i < path.length; ++i) { res += (0,utils.latLngDistance)(path[i - 1], path[i]); } return res; } }); function LVPoints(viewerElt, data) { this.data = data; this.refData = [data]; this.id = data.id || (0,stringGenerate.randomIdent)(12); this.latLng = (0,utils.implicitLatLng)(data); if (!this.latLng) { console.error('Invalid data', data); return; } this.map = viewerElt.map; this.viewNumber = 0; } LVPoints.prototype.numberToHue = function (number) { var res = 0; var hs = 1; for (var i = 0; (i < 4 && number > 1); ++i) { hs *= 10; res += Math.log(Math.min(number, hs)) / Math.log(hs) * 0.25; number -= hs; } res = Math.min(0.8, res); return res; }; LVPoints.prototype.number2Image = function (number) { var data = this.data; var color = number === 1 ? data.color || generateColor(this.id).toString() : Color_Color/* default.fromHSL */.Z.fromHSL(this.numberToHue(number), 1, 0.5).toString(); try { color = Color_Color/* default.parse */.Z.parse(color); } catch (e) { color = number === 1 ? generateColor(this.id) : Color_Color/* default.fromHSL */.Z.fromHSL(this.numberToHue(number), 1, 0.4) } var textColor = color.getContrastYIQ().toString('hex8'); color = color.toString('hex8'); var outLineCount; var radius; if (number <= 1) { outLineCount = 0; radius = 10; } else { outLineCount = ((number + '').length); radius = 5 + outLineCount * 2; } var canvasSize = 2 * (radius + 5 * outLineCount + 2); var res = { tag: 'svg', style: { position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', cursor: 'pointer' }, attr: { width: canvasSize + '', height: canvasSize + '', viewBox: [-canvasSize / 2, -canvasSize / 2, canvasSize, canvasSize].join(' ') }, child: [ { tag: 'circle', attr: { cx: 0, cy: 0, r: radius, }, style: { fill: color, stroke: number === 1 ? 'white' : 'none', 'stroke-width': number === 1 ? 4 : 0, } } ] }; var path, r; var j, sAngle, eAngle; var angle; var delta = 2 * Math.PI / 5; for (var i = 0; i < outLineCount; ++i) { angle = -Math.PI / 2 - delta / 2; r = radius + 3 + i * 5; path = ''; for (j = 0; j < 5; ++j) { angle += delta; sAngle = angle + 0.1; eAngle = angle + delta - 0.1; path += ['M', Math.cos(sAngle) * r, Math.sin(sAngle) * r].join(' ') + ' '; path += ['A', r, r, 0, 0, 1, Math.cos(eAngle) * r, Math.sin(eAngle) * r].join(' ') + ' '; } res.child.push({ tag: 'path', style: { fill: 'none', stroke: color, 'stroke-width': 4 }, attr: { d: path, opacity: 0.5 - 0.5 * i / outLineCount, }, }); } if (number > 1) { res.child.push({ tag: 'text', attr: { x: 0, y: 0, 'dominant-baseline': 'middle', 'text-anchor': 'middle', fill: textColor, 'font-size': 10, 'font-weight': 'bold' }, child: { text: number + '' } }) } return Svg/* default.ShareInstance._ */.ZP.ShareInstance._(res); }; /** * * @param {number} number - <0: not show> */ LVPoints.prototype.view = function (number) { if (!(0,utils.isRealNumber)(number)) number = 0; number = Math.max(0, Math.floor(number)); if (this.viewNumber === number) return; this.viewNumber = number; var data = this.data; if (this.marker) { this.marker.setMap(null); this.marker = null; this.content = null; } if (number <= 0) return; this.content = this.number2Image(number); this.marker = new google.maps.marker.AdvancedMarkerElement({ position: this.latLng, map: this.map, content: this.content, }); this.marker.getMap = this.marker.getMap || (function () { return this.map; }); this.marker.getPosition = () => { return this.latLng; } this.marker.setMap(this.map); if (number === 1) { if (this.data.info && !this.infoWindow) { this.infoWindow = new google.maps.InfoWindow(this.data.info); } if (this.infoWindow ) { this.content.on('mouseover', () => { if (lastOpenInfo === this.infoWindow) return; try { if (lastOpenInfo) lastOpenInfo.close(); } catch (e) { } lastOpenInfo = this.infoWindow; this.infoWindow.open({ anchor: this.marker, map: this.map, shouldFocus: true }); }) } } else if (number >1) { this.content.on('click', ()=>{ this.map.setCenter(this.latLng); this.map.setZoom(this.map.getZoom()+1); }) } } LVPoints.prototype.remove = function () { if (this.marker) this.marker.setMap(null); this.content = null; this.marker = null; this.infoWindow = null; } /** * * @param {LocationView} lvElt * @param {LVPoints[]} points * @constructor */ function LVCluster(lvElt, points) { this.lvElt = lvElt; this.points = points; /** * * @type {Object<string, LVPoints>} */ this.pointDict = this.points.reduce((ac, cr) => { ac[cr.id] = cr; return ac; }, {}) this.viewingPoints = {}; this.map = lvElt.map; this.zoom = this.map.getZoom(); this.bounds = this.map.getBounds(); this.idleTO = -1; this.onIdle = this.onIdle.bind(this); } LVCluster.prototype.onProcessed = function () { if (this.idleTO >= 0) { clearTimeout(this.idleTO); } this.idleTO = setTimeout(this.onIdle, 500); }; LVCluster.prototype.onIdle = function () { this.idleTO = -1; this.bounds = this.map.getBounds(); this.zoom = this.map.getZoom(); if (!this.bounds) return; var newViewPoints = this.points.reduce((ac, point) => { if (!this.bounds.contains(point.latLng)) return ac; var rPoint; for (var rId in ac) { rPoint = this.pointDict[rId]; if (distanceInPixels(this.zoom, rPoint.latLng, point.latLng) < 50) { ac[rId]++; return ac; } } ac[point.id] = 1; return ac; }, {}); var id; var oldViewPoints = this.viewingPoints; for (id in oldViewPoints) { if (!newViewPoints[id]) { if (this.pointDict[id]) { this.pointDict[id].view(0); } } } for (id in newViewPoints) { if (this.pointDict[id]) { this.pointDict[id].view(newViewPoints[id]); } } this.viewingPoints = newViewPoints; }; /*** * @extends AElement * @constructor */ function LocationView() { this.map = new google.maps.Map(this, { zoom: 8, center: new google.maps.LatLng(21.018755, 105.839729), scaleControl: true, mapId: (0,stringGenerate.randomIdent)() }); google.maps.event.addListener(this.map, "zoom_changed", this.eventHandler.mapZoomChanged); google.maps.event.addListener(this.map, 'bounds_changed', this.eventHandler.mapBoundsChanged); this.marker = null; this._value = null; this.$domSignal = (0,ACore._)('attachhook').addTo(this); this.domSignal = new DomSignal/* default */.ZP(this.$domSignal); /*** * @type {LatLng} * @name value * @memberOf LocationView# */ /**** * * @type {LVPolyline[]} */ this.$polylines = []; this._showPolylineRoute = true; /**** * * @type {LVPoints[]} */ this.$points = []; } LocationView.tag = 'LocationView'.toLowerCase(); LocationView.render = function () { return (0,ACore._)({ class: 'as-location-view' }); }; LocationView.prototype.getPolylineById = function (id) { return this.$polylines.find(function (pll) { return pll.id === id; }) || null; }; LocationView.prototype.getPolylines = function () { return this.$polylines.slice(); }; LocationView.property = {}; LocationView.property.zoom = { set: function (value) { if (!(0,utils.isRealNumber)(value)) { value = 1; } this.map.setZoom(value); }, get: function () { return this.map.getZoom(); } }; LocationView.property.value = { set: function (value) { value = value || null; var latlng = (0,utils.implicitLatLng)(value); latlng = latlng || new google.maps.LatLng(21.018755, 105.839729); this.map.setCenter(latlng || new google.maps.LatLng(21.018755, 105.839729)); this._value = value; getGoogleMarkerLib().then(() => { if (this.marker) { this.marker.setMap(null); this.marker = null; } if (latlng && value) { this.marker = new google.maps.marker.AdvancedMarkerElement({ map: this.map, position: latlng, }); } }) }, get: function () { return this._value; } }; LocationView.property.polylines = { set: function (polylines) { this._polylines = polylines || []; this.$polylines.forEach(function (pll) { pll.remove(); }); getGoogleMarkerLib().then(() => { this.$polylines = polylines.map(function (pll) { return new LVPolyline(this, pll); }.bind(this)); var zoom; var center; var points = this.$polylines.reduce(function (ac, $polyline) { return ac.concat($polyline.polylineData.path); }, []); var bounds = points.reduce(function (ac, cr) { ac.extend(cr); return ac; }, new google.maps.LatLngBounds()); this.domSignal.once('update_view', function () { if (points.length > 1) { zoom = (0,utils.getMapZoomLevel)(this.getBoundingClientRect(), bounds); center = bounds.getCenter(); } else { zoom = 17; center = points[0] || new google.maps.LatLng(21.018755, 105.839729); } zoom = Math.min(zoom, 17); this.map.setZoom(zoom); this.map.setCenter(center); }.bind(this), 100); this.domSignal.emit('update_view'); }) }, get: function () { return this._polylines; } }; LocationView.property.showPolylineRoute = { set: function (value) { this._showPolylineRoute = !!value; this.$polylines.forEach(function (pll) { pll.showRoute = value; }) }, /** * @this LocationView * @returns {*|boolean} */ get: function () { return this._showPolylineRoute; } }; LocationView.property.points = { /** * @this LocationView * @param points */ set: function (points) { this.$points.forEach(function (point) { point.remove(); }); this._points = points || []; getGoogleMarkerLib().then(() => { var now = Date.now(); var rp = this._points.reduce(function (ac, pointData) { var id = pointData.id; var point; if (id && ac.dict[id]) { ac.dict[id].refData.push(pointData); } else { point = new LVPoints(this, pointData); ac.dict[point.id] = point; ac.arr.push(point); } return ac; }.bind(this), { arr: [], dict: {} }); this.$points = rp.arr; var zoom; var center; var latLngs = this.$points.map(function (p) { return p.latLng; }, []).filter(function (x) { return !!x; }); var bounds = latLngs.reduce(function (ac, cr) { ac.extend(cr); return ac; }, new google.maps.LatLngBounds()); this.pointsCluster = new LVCluster(this, this.$points); console.log('set points', Date.now() - now); this.domSignal.once('update_view', function () { if (points.length > 1) { zoom = (0,utils.getMapZoomLevel)(this.getBoundingClientRect(), bounds); center = bounds.getCenter(); } else { zoom = 17; center = points[0] || new google.maps.LatLng(21.018755, 105.839729); } zoom = Math.min(zoom, 17); this.map.setZoom(zoom); this.map.setCenter(center); if (this.pointsCluster) this.pointsCluster.onProcessed(); }.bind(this), 100); this.domSignal.emit('update_view'); }); }, get: function () { return this._points; } } LocationView.eventHandler = {}; LocationView.eventHandler.mapZoomChanged = function () { if (this.pointsCluster) this.pointsCluster.onProcessed(); // var now = Date.now(); // var eltRect = Rectangle.fromClientRect(this.getBoundingClientRect()); // var bounds = this.map.getBounds(); // // var mapRect = new Rectangle() // // console.log('zoom changed', Date.now() - now); }; LocationView.eventHandler.mapBoundsChanged = function () { if (this.pointsCluster) this.pointsCluster.onProcessed(); }; ACore/* default.install */.Z.install(LocationView); /* harmony default export */ const js_LocationView = (LocationView); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/adapter/PlaceSearchAutoCompleteAdapter.js /*** * * @param {PlaceSearchAutoCompleteInput} inputElt * @constructor */ function PlaceSearchAutoCompleteAdapter(inputElt) { this.inputElt = inputElt; this.service = new google.maps.places.AutocompleteService(this.inputElt.$service); } PlaceSearchAutoCompleteAdapter.prototype.queryItems = function (query, mInput) { var request = { input: query, }; return new Promise(function (resolve) { this.service.getPlacePredictions(request, function (results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { resolve(results); } else resolve([]); }); }.bind(this)); }; PlaceSearchAutoCompleteAdapter.prototype.getItemText = function (item, mInput) { return item.description; }; PlaceSearchAutoCompleteAdapter.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) { return _({ class: 'as-place-search-auto-complete-item', child: [ { class: 'as-place-search-auto-complete-item-desc', child: { text: item.description } } ] }) }; /* harmony default export */ const adapter_PlaceSearchAutoCompleteAdapter = (PlaceSearchAutoCompleteAdapter); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/placesearchautocomplete.css var placesearchautocomplete = __webpack_require__(8677); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/PlaceSearchAutoCompleteInput.js /*** * @extends AutoCompleteInput * @constructor */ function PlaceSearchAutoCompleteInput() { this.$service = (0,ACore._)('.as-place-search-auto-complete-input-service'); this.insertBefore(this.$service, null); this.adapter = new adapter_PlaceSearchAutoCompleteAdapter(this); } PlaceSearchAutoCompleteInput.tag = 'PlaceSearchAutoCompleteInput'.toLowerCase(); PlaceSearchAutoCompleteInput.render = function () { return (0,ACore._)({ tag: js_AutoCompleteInput.tag }, true); } ACore/* default.install */.Z.install(PlaceSearchAutoCompleteInput); /* harmony default export */ const js_PlaceSearchAutoCompleteInput = (PlaceSearchAutoCompleteInput); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/LocationInput.js function LocationInput() { this.$text = (0,ACore.$)('input', this) .on('change', this.eventHandler.textChange); this.$iconCtn = (0,ACore.$)('.as-location-input-icon-ctn', this) .on('click', this.eventHandler.clickIcon); /*** * @type {{latitude: number, longitude: number}} * @name latLng * @memberOf LocationInput# */ /*** * @type {string} * @name value * @memberOf LocationInput# */ /*** * @type {boolean} * @name readOnly * @memberOf LocationInput# */ } LocationInput.tag = 'LocationInput'.toLowerCase(); LocationInput.render = function () { return (0,ACore._)({ class: 'as-location-input', extendEvent: ['change'], child: [ { tag: 'input', attr: { type: 'text' }, class: 'as-location-input-text' }, { class: 'as-location-input-icon-ctn', child: 'span.mdi.mdi-google-maps' } ] }); }; LocationInput.prototype.share = { $modal: null, $picker: null, $holder: null }; LocationInput.prototype._preparePicker = function () { if (this.share.$picker) return; this.share.$picker = (0,ACore._)({ tag: js_LocationPicker.tag }); this.share.$modal = (0,ACore._)({ tag: 'modal', class: 'as-location-input-modal', child: { class: 'as-location-input-modal-window', child: this.share.$picker } }); if (BrowserDetector/* default.isMobile */.Z.isMobile) { this.share.$modal.addClass('as-mobile'); } }; /*** * @this LocationInput * @private */ LocationInput.prototype._attachPicker = function () { if (this.share.$holder) { this.share.$holder._releasePicker(); } this._preparePicker(); this.share.$holder = this; this.$iconCtn.off('click', this.eventHandler.clickIcon); document.body.appendChild(this.share.$modal); this.share.$picker.on('action', this.eventHandler.pickerAction); this.share.$picker.$searchInput.value = ''; this.share.$picker.readOnly = this.readOnly; setTimeout(function () { document.addEventListener('click', this.eventHandler.clickOut); }.bind(this), 100); var value = this.latLng; if (value) { value = new google.maps.LatLng(value.latitude, value.longitude); } if (value) this.share.$picker.selectLocation(value, true); else this.share.$picker.selectPlace(null); }; LocationInput.prototype._releasePicker = function () { if (this.share.$holder !== this) return; this.share.$picker.off('action', this.eventHandler.pickerAction); this.$iconCtn.on('click', this.eventHandler.clickIcon); document.removeEventListener('click', this.eventHandler.clickOut) this.share.$modal.remove(); this.share.$holder = null; }; /** * * @type {{}} * @memberOf LocationInput# */ LocationInput.eventHandler = {}; LocationInput.eventHandler.pickerAction = function (event) { if (!this.readOnly && event.action === 'OK' && this.share.$picker.selectedPlace && this.share.$picker.selectedPlace.geometry && this.share.$picker.selectedPlace.geometry.location) { this.$text.value = [this.share.$picker.selectedPlace.geometry.location.lat(), this.share.$picker.selectedPlace.geometry.location.lng()].join(', '); this.emit('change', { type: 'change', originalEvent: event.originalEvent || event, target: this }, this); } this._releasePicker(); }; /*** * @this LocationInput */ LocationInput.eventHandler.clickIcon = function () { this._attachPicker(); }; /*** * @this LocationInput * @param event */ LocationInput.eventHandler.clickOut = function (event) { if (event.target === this.share.$modal) this._releasePicker(); }; LocationInput.eventHandler.textChange = function (event) { this.emit('change', { type: 'change', originalEvent: event.originalEvent || event, target: this }, this); }; LocationInput.property = {}; LocationInput.property.value = { set: function (value) { value = value || null; var lat, lng; if (typeof value === "string") { this.$text.value = value; return; } if (value instanceof Array) { lat = value[0]; lng = value[1]; } else if (value && typeof value === 'object') { if (('latitude' in value) && ('longitude' in value)) { lat = value.latitude; lng = value.longitude; } else if (value instanceof google.maps.LatLng) { lat = value.lat(); lng = value.lng(); } } if ((0,utils.isRealNumber)(lat) && (0,utils.isRealNumber)(lng)) { this.$text.value = [lat, lng].join(', '); } else { this.$text.value = ''; } }, get: function () { var text = this.$text.value; return (0,utils.normalizeLatLngString)(text); } }; LocationInput.property.latLng = { get: function () { var text = this.$text.value; return (0,utils.parseDMS)(text) || (0,utils.parseLatLng)(text); } }; LocationInput.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } this.$text.readOnly = !!value; }, get: function () { return this.hasClass('as-read-only'); } }; LocationInput.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } this.$text.disabled = !!value; }, get: function () { return this.hasClass('as-disabled'); } }; ACore/* default.install */.Z.install(LocationInput); /* harmony default export */ const js_LocationInput = (LocationInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/mknavigator.css var mknavigator = __webpack_require__(9907); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MKNavigatorItem.js /*** * @extends AElement * @constructor */ function MKNavigatorItem() { this._data = []; this.$text = (0,ACore.$)('.mk-nav-item-text', this); this.$switchCtn = (0,ACore.$)('.mk-nav-item-switch-ctn', this); this.$switch = (0,ACore.$)('switch', this) .on('change', this.eventHandler.switchChange); this.$dragzone = (0,ACore.$)('.mk-nav-item-drag-zone', this); this.on('click', this.eventHandler.click); } MKNavigatorItem.tag = 'MKNavigatorItem'.toLowerCase(); MKNavigatorItem.render = function () { return (0,ACore._)({ tag: Board/* default.tag */.Z.tag, class: 'mk-nav-item', extendEvent: ['checkedchange', 'press'], child: [ { class: ['mk-nav-item-drag-zone', BoardTable/* default.DRAG_ZONE_CLASS_NAME */.ZP.DRAG_ZONE_CLASS_NAME], child: '<i class="material-icons">drag_indicator</i>' }, { class: 'mk-nav-item-text-ctn', child: { tag: 'span', class: 'mk-nav-item-text', child: { text: '' } } }, { class: 'mk-nav-item-switch-ctn', child: { tag: js_Switch.tag } } ] }); }; MKNavigatorItem.prototype.updateText = function () { this.$text.firstChild.data = this._data.text; }; MKNavigatorItem.prototype.updateChecked = function () { if (typeof this._data.checked === "boolean") { this.$switchCtn.removeStyle('display'); this.$switch.checked = this._data.checked; } else { this.$switchCtn.addStyle('display', 'none'); } }; MKNavigatorItem.prototype.updateDraggable = function () { if (this._data.draggable) { this.$dragzone.removeStyle('display'); } else { this.$dragzone.addStyle('display', 'none'); } }; MKNavigatorItem.property = {}; MKNavigatorItem.property.data = { /** * @this MKNavigatorItem * @param data */ set: function (data) { data = data || {}; this._data = data; this.updateText(); this.updateChecked(); this.updateDraggable(); }, get: function () { return this._data; } }; /*** * @memberOf MKNavigatorItem# * @type {{}} */ MKNavigatorItem.eventHandler = {}; MKNavigatorItem.eventHandler.switchChange = function (event) { this._data.checked = this.$switch.checked; this.emit('checkedchange', { type: 'checkedchange' }, this); }; MKNavigatorItem.eventHandler.click = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$switch, event) || (0,EventEmitter/* hitElement */.EY)(this.$dragzone, event)) return; this.emit('press', { type: 'press', target: this, originalEvent: event }, this); } ACore/* default.install */.Z.install(MKNavigatorItem); /* harmony default export */ const js_MKNavigatorItem = (MKNavigatorItem); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MKNavigator.js /*** * @typedef MKNavigatorItemData * @property {string} text * @property {string|number} value * @property {boolean|number=} checked */ /*** * @extends AElement * @constructor */ function MKNavigator() { this._items = []; this._value = 0; this._hiddenValues = []; this.$itemByValue = {}; this.$header = (0,ACore.$)('.mk-nav-header', this); this.$body = (0,ACore.$)('.mk-nav-body', this) .on('orderchange', this.eventHandler.bodyOrderChange) .on('dragitemstart', this.eventHandler.dragItemStart); this.$footer = (0,ACore.$)('.mk-nav-footer', this); this.on('press', (event, sender) => { this.emit('clickitem', event, sender); }); /*** * @type {MKNavigatorItemData[]} * @name item * @memberOf MKNavigator# */ /*** * @type {number[]} * @name order * @memberOf MKNavigator# */ } MKNavigator.tag = 'MKNavigator'.toLowerCase(); MKNavigator.render = function () { return (0,ACore._)({ class: 'mk-nav', extendEvent: ['orderchange', 'checkedchange', 'press', 'clickitem'], child: [ { class: 'mk-nav-header' }, { tag: BoardTable/* default.tag */.ZP.tag, class: 'mk-nav-body' }, { class: 'mk-nav-footer' } ] }); }; MKNavigator.prototype.updateValue = function () { var value = this._value; for (var iValue in this.$itemByValue) { if (iValue + '' !== value + '') { this.$itemByValue[iValue].removeClass('mk-current'); } } var order = this.order; if (this.$itemByValue[value]) { this.$itemByValue[value].addClass('mk-current'); } else if (order.length > 0) { this.$itemByValue[order[0]].addClass('mk-current'); } var idx = order.filter(value => !this.$itemByValue[value].hasClass('as-hidden')).indexOf(value); if (idx >= 0) { this.addStyle('--mk-nav-line-top', `calc(${2 * idx}em + ${12 * idx}px)`); } else { this.removeStyle('--mk-nav-line-top'); } }; MKNavigator.prototype.setTextOfItem = function (value, text) { var itemElt = this.$itemByValue[value]; if (!itemElt) return; itemElt.data.text = text; itemElt.updateText(); }; MKNavigator.prototype.mkItem = function (data) { var self = this; return (0,ACore._)({ tag: js_MKNavigatorItem.tag, attr: { "data-value": data && data.value }, props: { data: data }, on: { checkedchange: function (event) { self.emit('checkedchange', { type: 'checkedchange', target: this, originalEvent: event.originalEvent, itemData: data, checked: data.checked }, self); }, press: function (event) { self.value = data.value; self.emit('press', { type: 'press', itemElt: this, itemData: data, value: data.value, target: this, originalEvent: event.originalEvent }, self) } } }); }; MKNavigator.prototype._updateHiddenValues = function () { var hiddenDict = this._hiddenValues.reduce((ac, x) => { ac[x] = true; return ac; }, {}) Object.keys(this.$itemByValue).forEach(value => { if (hiddenDict[value]) { this.$itemByValue[value].addClass('as-hidden'); } else { this.$itemByValue[value].removeClass('as-hidden'); } }); }; MKNavigator.property = {}; MKNavigator.property.items = { /*** * @this MKNavigator * @param items */ set: function (items) { items = items || []; this._items = items; this.$itemByValue = {}; var i = 0; var item; var itemElt; this.$header.clearChild(); this.$body.clearChild(); this.$footer.clearChild(); var draggable = false; var maxTextWidth = items.reduce((ac, it) => { var tw = (0,utils.measureText)(it.text || '').width; return Math.max(ac, tw); }, 0); this.addStyle('--max-text-width', Math.ceil(maxTextWidth) + 'px'); while (i < items.length) { if (items[i].draggable) break; item = items[i]; itemElt = this.mkItem(item); this.$itemByValue[item.value] = itemElt; this.$header.addChild(itemElt); ++i; } while (i < items.length) { if (!items[i].draggable) break; draggable = true; item = items[i]; itemElt = this.mkItem(item); this.$itemByValue[item.value] = itemElt; this.$body.addChild(itemElt); ++i; } while (i < items.length) { item = items[i]; itemElt = this.mkItem(item) this.$itemByValue[item.value] = itemElt; this.$footer.addChild(itemElt); ++i; } if (draggable) { this.addClass('mk-has-draggable'); } else { this.removeClass('mk-has-draggable'); } this._updateHiddenValues(); }, get: function () { return this._items; } }; MKNavigator.property.order = { get: function () { return (0,ACore.$$)(js_MKNavigatorItem.tag, this).map(function (e) { return e.data.value; }); } }; MKNavigator.property.value = { set: function (value) { this._value = value; this.updateValue(); }, get: function () { if (this.$itemByValue[this._value]) return this._value; if (this._items.length > 0) return this._items[0]; return this._value; } }; MKNavigator.property.hiddenValues = { set: function (values) { values = values || []; if (!(values instanceof Array)) values = []; this._hiddenValues = values; this._updateHiddenValues(); this.updateValue(); }, get: function () { return this._hiddenValues; } } /*** * @memberOf MKNavigator# * @type {{}} */ MKNavigator.eventHandler = {}; MKNavigator.eventHandler.bodyOrderChange = function (event) { this.updateValue(); this._items.splice(0, this._items.length); (0,ACore.$$)(js_MKNavigatorItem.tag, this).reduce(function (ac, cr) { ac.push(cr.data); return ac; }, this._items); this.emit('orderchange', { type: 'orderchange', target: this }, this); }; /*** * @memberOf MKNavigator# * @type {{}} */ MKNavigator.eventHandler.dragItemStart = function (event) { var bound = this.getBoundingClientRect(); this.addStyle('--mk-navigator-bound-left', bound.left + 'px'); } ACore/* default.install */.Z.install(MKNavigator); ACore/* default.install */.Z.install('mknav',MKNavigator); /* harmony default export */ const js_MKNavigator = (MKNavigator); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/processlbar.css var processlbar = __webpack_require__(4715); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ProcessLBar.js /*** * @extends AElement * @constructor */ function ProcessLBar() { this.$stepCtn = (0,ACore.$)('.as-process-l-bar-step-ctn', this); this.$stepName = (0,ACore.$)('.as-process-l-bar-step-name', this); this.$items = []; this._items = []; this._lHeight = 3; this._value = null; } ProcessLBar.tag = 'ProcessLBar'.toLowerCase(); ProcessLBar.render = function () { return (0,ACore._)({ class: 'as-process-l-bar', extendEvent: 'change', child: [ { class: 'as-process-l-bar-step-ctn' }, { class: 'as-process-l-bar-step-name' } ] }); }; ProcessLBar.prototype._updateCol = function () { var colN = Math.max(this.$items.length - this._lHeight + 1, 0); while (this.$stepCtn.childNodes.length > colN) { this.$stepCtn.lastChild.remove(); } while (this.$stepCtn.childNodes.length < colN) { this.$stepCtn.addChild((0,ACore._)('.as-process-l-bar-col')); } var i; for (i = 0; i < colN; ++i) { this.$stepCtn.childNodes[i].clearChild() .addChild(this.$items[i]) } for (i = colN; i < this.$items.length; ++i) { this.$stepCtn.lastChild.addChild(this.$items[i]); } this.nameWidth = this._items.reduce(function (ac, cr) { return Math.max(ac, (0,utils.measureText)(cr.name, 'bold 14px Arial, Helvetica, sans-serif').width); }, 0); if (colN <= 1) { this.addClass('as-col-layout'); } else { this.removeClass('as-col-layout'); } if (colN <= 2) { this.addStyle('--as-process-l-bar-item-min-width', this.nameWidth + 'px'); } else { this.addStyle('--as-process-l-bar-item-min-width', ((this.nameWidth + 10) / (colN - 1) - 10) + 'px'); } }; ProcessLBar.prototype._updateValue = function () { var value = this._value; this.$items.forEach(function (elt) { if (elt.itemData.value === value) { elt.addClass('as-active'); this.$stepName.clearChild().addChild((0,ACore._)({ tag: 'span', child: { text: elt.itemData.name } })); } else { elt.removeClass('as-active'); } }.bind(this)); }; ProcessLBar.prototype.notifyChange = function (originalEvent) { this.emit('change', { type: 'change', target: this, originalEvent: originalEvent || null }, this); }; ProcessLBar.prototype._makeItem = function (item) { var self = this; var stepElt = (0,ACore._)({ class: 'as-process-l-bar-step', attr: { title: item.name }, props: { itemData: item }, on: { click: function (event) { if (self.disabled) return; var value = this._value; if (item.value === value) return; self.value = item.value; self.notifyChange(event); } } }); if (item.color) { stepElt.addStyle('--as-process-l-bar-active-color', item.color); } return stepElt; }; ProcessLBar.property = {}; ProcessLBar.property.items = { set: function (items) { items = items || []; this._items = items; this.$itemByValue = {}; this.$items = this._items.map(function (item) { return this._makeItem(item); }.bind(this)); this._updateCol(); this._updateValue(); }, get: function () { return this._items; } }; ProcessLBar.property.value = { set: function (value) { this._value = value; this._updateValue(); }, get: function () { return this._value; } }; ProcessLBar.property.lHeight = { set: function (value) { this._lHeight = value; if (value === 1){ this.addClass('as-single-line'); } else { this.removeClass('as-single-line'); } this._updateCol(); }, get: function () { return this._lHeight; } }; ProcessLBar.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } }; /* harmony default export */ const js_ProcessLBar = (ProcessLBar); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/kvcommentitem.css var kvcommentitem = __webpack_require__(5021); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/KVCommentItem.js /*** * @extends AElement * @constructor */ function KVCommentItem() { this._time = new Date(); this._text = ''; this.$text = (0,ACore.$)('.kv-comment-item-text', this); this.$time = (0,ACore.$)('.kv-comment-item-time', this); this.$avatar = (0,ACore.$)('.kv-comment-avatar', this); this.quickmenu = null; this.on('contextmenu', this.eventHandler.kv_contextmenu) ContextMenu/* default.auto */.Z.auto(); } KVCommentItem.tag = 'KVCommentItem'.toLowerCase(); KVCommentItem.render = function () { return (0,ACore._)({ extendEvent:'contextmenu', class: "kv-comment-item", child: [ { class: "kv-comment-avatar-ctn", child: { class: 'kv-comment-avatar', style: { backgroundImage: 'url(https://raw.githubusercontent.com/duthienkt/absol/master/logo.svg?sanitize=true)' } } }, { class: "kv-comment-item-content", child: [ { class: 'kv-comment-item-text', child: { text: '' } }, { class: 'kv-comment-item-time', child: { text: (0,datetime.formatDateTime)(new Date(), 'dd/MM/yyyy HH:mm') } } ] }, { class: "kv-comment-item-flag-ctn", child: ['.kv-comment-item-flag-unread'] } ] }); } KVCommentItem.property = {}; KVCommentItem.property.text = { set: function (value) { value = value || ''; if (typeof value === 'string') this.$text.innerHTML = value; else if (absol.Dom.isDomNode(value)) { this.$text.clearChild().addChild(value); } else { this.$text.clearChild().addChild((0,ACore._)(value)); } this._text = value; }, get: function () { return this._text; } } KVCommentItem.property.unread = { set: function (value) { if (value) { this.addClass('as-unread'); } else { this.removeClass('as-unread'); } }, get: function () { return this.hasClass('as-unread'); } }; KVCommentItem.property.time = { set: function (value) { this._time = value; var text = ''; if (typeof value === 'string') text = value; else if (value instanceof Date){ text = (0,datetime.formatDateTime)(value, 'dd/MM/yyyy HH:mm') } this.$time.firstChild.data = text; }, get: function () { return this._time; } }; KVCommentItem.property.avatar = { set: function (value){ value = value ||'https://raw.githubusercontent.com/duthienkt/absol/master/logo.svg?sanitize=true'; this._avatar = value; this.$avatar.addStyle('backgroundImage','url('+value+')') }, get: function (){ return this._avatar; } }; /*** * @memberOf KVCommentItem# * @type {{}} */ KVCommentItem.eventHandler = {}; /*** * @this KVCommentItem * @param event */ KVCommentItem.eventHandler.kv_contextmenu = function (event){ if (this.quickmenu){ event.showContextMenu(this.quickmenu.props, function (event){ var menuItem = (0,utils.cleanMenuItemProperty)(event.menuItem); if (this.quickmenu.onSelect){ this.quickmenu.onSelect.call(this, menuItem); } }.bind(this)) } }; ACore/* default.install */.Z.install(KVCommentItem); /* harmony default export */ const js_KVCommentItem = (KVCommentItem); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTHeadCell.js var implicitSortKeyArr = key => { var res; if (typeof key === 'string') { res = key.split(/[\s,;]+/); } else if (key instanceof Array) { res = key.slice(); } else res = []; res = res.filter(k => !!k).map(k => k + ''); return res; } /*** * * @param {DTHeadRow} row * @param data * @constructor */ function DTHeadCell(row, data) { this.row = row; this._elt = null; this._copyElt = null; this._copyElt1 = null; this._copyElt2 = null; if (data.attr) { Object.keys(data.attr).forEach(key => { var key2 = key.toLowerCase(); if (key2 !== key) data.attr[key2] = data.attr[key]; }) } this.data = data; this._idx = null; } DTHeadCell.prototype.makeAutoSortAttribute = function () { var rows = this.row.head.table.data && this.row.head.table.data.body && this.row.head.table.data.body.rows; if (!rows || !rows.length) return; if (this.elt.attr('data-sort-key')) return; var idx = this.idx; var canSort = rows.every(row => { return row.cells[idx] && (typeof row.cells[idx].innerText === 'string'); }); if (canSort) { this.elt.attr('data-sort-key', '[' + idx + ']'); this.data.sortKey = '[' + idx + ']'; this._elt.attr('data-sort-order', 'none'); // this._elt.attr('title', 'Sort'); } }; Object.defineProperty(DTHeadCell.prototype, 'idx', { set: function (value) { this._idx = value; this.elt.attr('data-col-idx', value + ''); this.makeAutoSortAttribute(); }, get: function () { return this._idx; } }); DTHeadCell.prototype.nextSortState = function (event) { if (!this.elt.attr('data-sort-key')) return; var c = this.elt.attr('data-sort-order') || 'none'; var n = { none: 'ascending', ascending: 'descending', descending: 'none' }[c] || 'none'; var sortKeyArr = implicitSortKeyArr(this.data.sortKey || c); var sortBtn = this.$sortBtn; var followerElt, menuElt, items; if (sortKeyArr.length === 1) { (0,ACore.$$)('th', this.row.elt).forEach(elt => { if (elt === this.elt) return; if (elt.attr('data-sort-key')) { elt.attr('data-sort-order', 'none'); } }) this.elt.attr('data-sort-order', n); this.row.head.table.wrapper.requestQuery(); } else { items = [{ text: 'Không sắp xếp', value: { key: sortKeyArr.join(';'), order: 'none' }, icon: 'span.mdi.mdi-sort-variant-off' }]; if (c === 'none') { items[0].extendStyle = { color: '#007bff' }; } sortKeyArr.forEach(key => { items.push('-------'); var text = this.data.sortMenu && this.data.sortMenu[key] && this.data.sortMenu[key][0]; text = text || ("Tăng theo " + key); var item = { icon: 'span.mdi.mdi-sort-ascending', text: text, value: { key: key, order: 'ascending' } }; if (key === this.elt.attr('data-sort-key') && c === 'ascending') { item.extendStyle = { color: '#007bff' } } items.push(item); text = this.data.sortMenu && this.data.sortMenu[key] && this.data.sortMenu[key][1]; text = text || ("Tăng theo " + key); item = { icon: 'span.mdi.mdi-sort-descending', text: text, value: { key: key, order: 'descending' } }; if (key === this.elt.attr('data-sort-key') && c === 'descending') { item.extendStyle = { color: '#007bff' } } items.push(item); }); menuElt = (0,ACore._)({ tag: 'vmenu', props: { items: items }, on: { press: event => { var value = event.menuItem.value; (0,ACore.$$)('th', this.row.elt).forEach(elt => { if (elt === this.elt) return; if (elt.attr('data-sort-key')) { elt.attr('data-sort-order', 'none'); } }) this.elt.attr('data-sort-order', value.order); this.elt.attr('data-sort-key', value.key); this.row.head.table.wrapper.requestQuery(); finish(); } } }); followerElt = (0,ACore._)({ tag: Follower/* default */.Z, class: 'absol-context-menu-anchor', style: { zIndex: (0,utils.findMaxZIndex)(sortBtn) + 22 }, child: [ menuElt ], props: { followTarget: sortBtn } }).addTo(document.body); var finish = () => { document.removeEventListener('click', finish); followerElt.remove(); } setTimeout(() => { followerElt.addStyle('visibility', 'visible').addStyle('opacity', 1); }, 5) } }; DTHeadCell.prototype.updateCopyContent = function () { var makeCopyChildren = () => Array.prototype.map.call(this._elt.childNodes, elt => elt.cloneNode(true)); if (this._copyElt1) { this._copyElt1.clearChild().addChild(makeCopyChildren()); } if (this._copyElt2) { this._copyElt2.clearChild().addChild(makeCopyChildren()); } if (this._copyElt) { this._copyElt.clearChild().addChild(makeCopyChildren()); } ResizeSystem/* default.updateUp */.Z.updateUp(this._elt); ResizeSystem/* default.requestUpdateUpSignal */.Z.requestUpdateUpSignal(this._elt); }; DTHeadCell.prototype.requestUpdateContent = function () { if (this.ucTO > 0) return; // this.ucTO = setTimeout(() => { this.ucTO = -1; this.updateCopyContent(); // }, 20) }; DTHeadCell.prototype.updateCopyEltSize = function () { if (!this._copyElt && !this._copyElt1 && !this._copyElt2) return; // copyElt is in space var bound = this._copyElt.getBoundingClientRect(); var matchHeight = this._elt.hasClass('as-matched-head-height'); this._elt.addStyle('width', bound.width + 'px'); if (matchHeight) this._elt.addStyle('min-width', bound.width + 'px'); if (this._copyElt1) { this._copyElt1.addStyle('width', bound.width + 'px'); if (matchHeight) this._copyElt1.addStyle('min-width', bound.width + 'px'); } if (this._copyElt2) { this._copyElt2.addStyle('width', bound.width + 'px'); if (matchHeight) this._copyElt2.addStyle('min-width', bound.width + 'px'); } }; Object.defineProperty(DTHeadCell.prototype, 'elt', { get: function () { if (this._elt) return this._elt; var eventAdded = false; var onPointerDown = (event) => { if (event.target.hasClass && event.target.hasClass('as-dt-header-cell-resizer')) return; if (!eventAdded) { document.addEventListener('pointerup', onPointerUp); eventAdded = true; } } var onPointerUp = () => { document.removeEventListener('pointerup', onPointerUp); eventAdded = false; this.nextSortState(); }; this._elt = (0,ACore._)({ tag: 'th', class: 'as-dt-header-cell' }) .on('pointerdown', onPointerDown); if (this.data.attr) { this._elt.attr(this.data.attr); } if (this.data.style) { this._elt.addStyle(this.data.style); } if (this.data.id !== null && this.data.id !== undefined) { this._elt.attr('data-col-id', this.data.id + ''); } this.row.head.table.adapter.renderHeadCell(this._elt, this.data, this); var sortKeyArr = implicitSortKeyArr(this.data.sortKey) if (sortKeyArr.length > 0) { this._elt.attr('data-sort-key', sortKeyArr.join(';')); this._elt.attr('data-sort-order', 'none'); // this._elt.attr('title', 'Sort'); } this.$sortBtn = (0,ACore._)({ tag: 'span', class: 'as-dt-sort-btn', child: [ { tag: 'span', class: ['mdi', 'mdi-menu-up'] // child: { text: '🡑' } }, { tag: 'span', class: ['mdi', 'mdi-menu-down'] } ] }); this.$resizer = (0,ACore._)({ class: 'as-dt-header-cell-resizer' }); this._elt.addChild(this.$sortBtn); this._elt.addChild(this.$resizer); var ctrl = this; // setTimeout(() => { // var addChild = this._elt.addChild; // var clearChild = this._elt.clearChild; // this._elt.addChild = function () { // ctrl.requestUpdateContent(); // addChild.apply(this, arguments); // }; // this._elt.clearChild = function () { // ctrl.requestUpdateContent(); // clearChild.apply(this, arguments); // }; // }, 10); // listenDomContentChange(this._elt, (event) => { // this.requestUpdateContent(); // }); setTimeout(()=>{ (0,utils.listenDomContentChange)(this._elt, (event) => { this.requestUpdateContent(); }); }, 10); return this._elt; } }); Object.defineProperty(DTHeadCell.prototype, 'copyElt', { get: function () { if (this._copyElt) return this._copyElt; this._copyElt = (0,ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt'); if (this.data.style && this.data.style.width) { var self = this; setTimeout(function wait() { if (self._copyElt.isDescendantOf(document.body)) { self._copyElt.addStyle('width', self._copyElt.getBoundingClientRect().width + 'px'); } else { setTimeout(wait, 10); } }, 10); } return this._copyElt; } }); Object.defineProperty(DTHeadCell.prototype, 'copyElt1', { get: function () { if (this._copyElt1) return this._copyElt1; this._copyElt1 = (0,ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt-1'); return this._copyElt1; } }); Object.defineProperty(DTHeadCell.prototype, 'copyElt2', { get: function () { if (this._copyElt2) return this._copyElt2; this._copyElt2 = (0,ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt-2'); return this._copyElt2; } }); Object.defineProperty(DTHeadCell.prototype, 'colspan', { get: function () { var value = this.data.attr && this.data.attr.colspan; if (typeof value === "string") value = parseInt(value); if (typeof value === "number") return value; else return 1; } }); Object.defineProperty(DTHeadCell.prototype, 'rowspan', { get: function () { var value = this.data.attr && this.data.attr.rowspan; if (typeof value === "string") value = parseInt(value); if (typeof value === "number") return value; else return 1; } }); /* harmony default export */ const dynamictable_DTHeadCell = (DTHeadCell); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTHeadRow.js /**** * table layer: copyElt * fixY layer : copyElt1 - elt * fixXY layer: elt * */ /*** * * @param {DTHead} head * @param data * @constructor */ function DTHeadRow(head, data) { this.head = head; this.data = data; this.cells = this.data.cells.map((cellData) => new dynamictable_DTHeadCell(this, cellData)); this._elt = null; this._copyElt = null; this._fixedXYElt = null; this._fixedXElt = null; } DTHeadRow.prototype.updateCopyEltSize = function () { if (!this._fixedXElt) return; var bound = this._copyElt.getBoundingClientRect(); if (this._fixedXElt) this._fixedXElt.addStyle('height', bound.height + 'px'); if (this._fixedXYElt) this._fixedXYElt.addStyle('height', bound.height + 'px'); this._elt.addStyle('height', bound.height + 'px'); this.cells.forEach(c => c.updateCopyEltSize()); }; Object.defineProperty(DTHeadRow.prototype, 'elt', { get: function () { if (this._elt) return this._elt; var fixedCol = this.adapter.fixedCol || 0; var child = this.cells.filter(c=> c.idx < fixedCol).map(c => c.copyElt1); var child1 = this.cells.filter(c=> c.idx >= fixedCol).map(c => c.elt); this._elt = (0,ACore._)({ tag: 'tr', class: 'as-dt-head-row', child: child.concat(child1) }); if (this.data.attr) { this.elt.attr(this.data.attr); } if (this.data.style) { this.elt.addStyle(this.data.style); } return this._elt; } }); Object.defineProperty(DTHeadRow.prototype, 'fixedXYElt', { get: function () { if (this._fixedXYElt) return this._fixedXYElt; var fixedCol = this.adapter.fixedCol || 0; this._fixedXYElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-dt-fixed-xy', child: this.cells.filter(c=> c.idx < fixedCol).map(c => c.elt) }); return this._fixedXYElt; } }); Object.defineProperty(DTHeadRow.prototype, 'fixedXElt', { get: function () { if (this._fixedXElt) return this._fixedXElt; var fixedCol = this.adapter.fixedCol || 0; this._fixedXElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-dt-fixed-x', child:this.cells.filter(c=> c.idx < fixedCol).map(c => c.copyElt2) }); return this._fixedXElt; } }); Object.defineProperty(DTHeadRow.prototype, 'copyElt', { get: function () { if (this._copyElt) return this.copyElt; var adapter = this.adapter; this._copyElt = (0,ACore._)({ elt: this.elt.cloneNode(false), child: this.cells.map(c => c.copyElt) }); return this._copyElt; } }); Object.defineProperty(DTHeadRow.prototype, 'adapter', { get: function () { return this.head.adapter; } }) /* harmony default export */ const dynamictable_DTHeadRow = (DTHeadRow); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTHead.js /*** * * @param {DTTable} table * @param {} data * @constructor */ function DTHead(table, data) { if (!data) data = {}; if (!data.rows) data.rows = []; this.table = table; this._elt = null; this._copyElt = null; this._fixedXYElt = null; this._fixedXElt = null; this.data = data; this.rows = this.data.rows.map((rowData) => new dynamictable_DTHeadRow(this, rowData)); this.makeCellIdx(); } DTHead.prototype.makeCellIdx = function () { var height = Array(200).fill(0); var i, j, k, row, cells, colIdx, cell, colspan, rowspan; for (i = 0; i < this.rows.length; ++i) { row = this.rows[i]; cells = row.cells; colIdx = 0; for (j = 0; j < cells.length; ++j) { while (height[colIdx] > i) ++colIdx; cell = cells[j]; cell.idx = colIdx; colspan = cell.colspan; rowspan = cell.rowspan; if (rowspan ===this.rows.length) { cell.elt.addClass('as-matched-head-height'); } for (k = 0; k < colspan; ++k) { height[colIdx] = i + rowspan; ++colIdx; } } } }; DTHead.prototype.lockWidth = function () { this.rows.forEach(r => r.lockWidth()); }; DTHead.prototype.updateCopyEltSize = function () { if (!this._copyElt) return; this.rows.forEach(r => r.updateCopyEltSize()); }; Object.defineProperty(DTHead.prototype, 'elt', { get: function () { if (this._elt) return this._elt; this._elt = (0,ACore._)({ tag: 'thead', class: 'as-dt-header', child: this.rows.map(r => r.elt) }); if (this.data.style) this._elt.addStyle(this.data.style); return this._elt; } }); Object.defineProperty(DTHead.prototype, 'copyElt', { get: function () { if (this._copyElt) return this._copyElt; this._copyElt = (0,ACore._)({ elt: this.elt.cloneNode(false), child: this.rows.map(r => r.copyElt) }); return this._copyElt; } }); Object.defineProperty(DTHead.prototype, 'fixedXYElt', { get: function () { if (this._fixedXYElt) return this._fixedXYElt; this._fixedXYElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-dt-fixed-xy', child: this.rows.map(r => r.fixedXYElt) }); return this._fixedXYElt; } }); Object.defineProperty(DTHead.prototype, 'fixedXElt', { get: function () { if (this._fixedXElt) return this._fixedXElt; this._fixedXElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-dt-fixed-x', child: this.rows.map(r => r.fixedXElt) }); return this._fixedXElt; } }); Object.defineProperty(DTHead.prototype, 'adapter', { get: function () { return this.table.wrapper.adapter; } }); /* harmony default export */ const dynamictable_DTHead = (DTHead); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTBodyCell.js /*** * * @param {DTBodyRow} row * @param data * @constructor */ function DTBodyCell(row, data) { this.row = row; this._elt = null; this._copyElt = null; this._idx = null; if (data.attr) { Object.keys(data.attr).forEach(key => { var key2 = key.toLowerCase(); if (key2 !== key) data.attr[key2] = data.attr[key]; }) } this.data = data; } DTBodyCell.prototype.revoke = function () { this.row = null; if (this._elt) this._elt.holder = null; this._elt = null; this._copyElt = null; this._idx = null; this.data = null; }; Object.defineProperty(DTBodyCell.prototype, 'elt', { get: function () { if (this._elt) return this._elt; this._elt = (0,ACore._)({ tag: 'td', class: 'as-dt-body-cell' }); this._elt.holder = this; var addChild = this._elt.addChild; this._elt.addChild = function () { addChild.apply(this, arguments); ResizeSystem/* default.requestUpdateUpSignal */.Z.requestUpdateUpSignal(this); return this; }; if (this.data.attr) this._elt.attr(this.data.attr); if (typeof this.data.class === "string") (0,utils.addElementClassName)(this._elt, this.data.class); if (this.data.style) this._elt.addStyle(this.data.style); if (this.data.on) { Object.keys(this.data.on).forEach(key => { var cb = this.data.on[key]; if (typeof cb !== "function") return; this._elt.on(key, event => { cb.call(this._elt, event, this); }); }); } if (this._idx !== null) this._elt.attr('data-col-idx', this._idx + ''); this.row.body.table.adapter.renderBodyCell(this.elt, this.data, this); (0,utils.listenDomContentChange)(this._elt, (event) => { this.requestUpdateContent(); }); return this._elt; } }); Object.defineProperty(DTBodyCell.prototype, 'copyElt', { get: function () { if (this._copyElt) return this._copyElt; this._copyElt = (0,ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt'); return this._copyElt; } }); DTBodyCell.prototype.requestUpdateContent = function () { if (this._copyElt) { this._copyElt.clearChild(); this._copyElt.addChild(Array.prototype.map.call(this._elt.childNodes, c => c.cloneNode(true))); } ResizeSystem/* default.updateUp */.Z.updateUp(this._elt, true); ResizeSystem/* default.requestUpdateUpSignal */.Z.requestUpdateUpSignal(this._elt, true); } Object.defineProperty(DTBodyCell.prototype, 'innerText', { get: function () { var text = this.data.innerText; if (text === undefined || text === null) text = ''; else if (!text) { text = text + ''; } else if (text.substring) { } else if (typeof text === "number") { text = text + '' } else if (typeof text === "object") { if (text instanceof Date) { return (0,datetime.formatDateTime)(text, 'dd/MM/yyyy HH:mm'); } else { return (0,utils.jsStringOf)(text); } } else if (typeof text === "function") { text = text.call(this.data, this); } return text; if (this.data.innerText) return this.data.innerText; if (this.data.getInnerText) return this.data.getInnerText(); // if ('innerText' in this.data) return this.data.innerText || ''; var res = []; function visit(node) { if (node.nodeType === 3 && node.data) { res.push(node.data); } else if (node.childNodes && node.childNodes.length > 0) { Array.prototype.forEach.call(node.childNodes, visit); } } visit(this.elt); return res.join(' '); } }); Object.defineProperty(DTBodyCell.prototype, 'idx', { set: function (value) { this._idx = value; if (this._elt) this._elt.attr('data-col-idx', value + ''); }, get: function () { return this._idx; } }); Object.defineProperty(DTBodyCell.prototype, 'colspan', { get: function () { var value = this.data.attr && this.data.attr.colspan; if (typeof value === "string") value = parseInt(value); if (typeof value === "number") return value; else return 1; } }); /* harmony default export */ const dynamictable_DTBodyCell = (DTBodyCell); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTBodyRow.js /*** * * @param {DTBody} body * @param data * @constructor */ function DTBodyRow(body, data) { this.body = body; this.data = data; this.data.cells = this.data.cells || []; this._elt = null; this._fixedXElt = null; this.filterKeys = Object.assign({}, this.data.keys); this.data.cells.reduce((ac, cr, i) => { if (typeof cr.keySort === "string") { ac['[' + i + ']'] = (0,stringFormat.nonAccentVietnamese)(cr.keySort).toLowerCase(); } else if (typeof cr.keySort === "number") { ac['[' + i + ']'] = cr.keySort; } else if (typeof cr.innerText === "string") { ac['[' + i + ']'] = (0,stringFormat.nonAccentVietnamese)(cr.innerText).toLowerCase(); } return ac; }, this.filterKeys); if ('id' in data) { this.id = data.id; } else { this.id = (0,stringGenerate.randomIdent)(8); } this._idx = null; /*** * @type {DTBodyCell[]} */ this.cells = this.data.cells.map((cellData) => new dynamictable_DTBodyCell(this, cellData)); this.cells.reduce((ac, cell) => { cell.idx = ac; return ac + cell.colspan; }, 0); } DTBodyRow.prototype.revoke = function () { while (this.cells.length) { this.cells.pop().revoke(); } this.cells = null; this.data = null; this.body = null; if (this._elt) this._elt.dtBodyRow = null; this._elt = null; this.$id = null; this.draggable = null; }; DTBodyRow.prototype.revokeResource = function () { }; DTBodyRow.prototype.remove = function () { this.body.removeRow(this); }; DTBodyRow.prototype.viewInto = function () { return this.body.viewIntoRow(this); }; DTBodyRow.prototype.updateCopyEltSize = function () { if (!this._fixedXElt) return; if (!this._elt.parentElement) return; if (this._fixedXElt.childNodes.length === 0) return;//has no fixed column var bound = this._elt.getBoundingClientRect(); this._fixedXElt.addStyle('height', bound.height + 'px'); }; DTBodyRow.prototype.updateData = function (data) { var rowIdx = this.body.rowIndexOf(this.data); this.body.data.rows[rowIdx] = data; this.data = data; if ('id' in data) { this.id = data.id; } else { this.id = (0,stringGenerate.randomIdent)(8); } this.cells = this.data.cells.map((cellData) => new dynamictable_DTBodyCell(this, cellData)); this.cells.reduce((ac, cell) => { cell.idx = ac; return ac + cell.colspan; }, 0); if (this._elt) { this._elt.attr('data-id', this.id + ''); this._elt.clearChild().addChild(this.cells.map(function (cell) { return cell.elt; })); this.$idx = (0,ACore.$)('.as-dt-row-index', this._elt); this.draggable = !!(0,ACore.$)('.as-drag-zone', this._elt); if (this.$idx) this.$idx.attr('data-idx', this._idx + 1 + ''); } this.body.onRowSplice(rowIdx); }; Object.defineProperty(DTBodyRow.prototype, 'elt', { get: function () { if (this._elt) return this._elt; var fixedCol = this.adapter.fixedCol || 0; var child = this.cells.filter(c => c.idx < fixedCol).map(c => c.copyElt); var child1 = this.cells.filter(c => c.idx >= fixedCol).map(c => c.elt); this._elt = (0,ACore._)({ tag: 'tr', class: 'as-dt-body-row', props: { dtBodyRow: this }, child: child.concat(child1) }); this._elt.attr('data-id', this.id + ''); if (this.data.class) { (0,utils.addElementClassName)(this._elt, this.data.class); } if (this.data.attr) { this._elt.attr(this.data.attr); } if (this.data.style) { this._elt.addStyle(this.data.style); } if (this.data.on) { Object.keys(this.data.on).forEach(key => { var cb = this.data.on[key]; if (typeof cb !== "function") return; this._elt.on(key, event => { cb.call(this._elt, event, this); }); }); } this.$idx = this.cells.reduce((ac, c) => { return ac || (0,ACore.$)('.as-dt-row-index', c.elt); }, null); this.draggable = !!(0,ACore.$)('.as-drag-zone', this._elt); if (this.$idx) this.$idx.attr('data-idx', this._idx + 1 + ''); var originAddStyle = this._elt.addStyle; var originRemoveStyle = this._elt.removeStyle; var originAddClass = this._elt.addClass; var originRemoveClass = this._elt.removeClass; var isOverrideStyle = x=> ['background-color', 'backgroundColor', 'color'].includes(x); var thisCTL = this; this._elt.addStyle = function (key, value) { originAddStyle.apply(this, arguments); if (thisCTL._fixedXElt && isOverrideStyle(key)) { thisCTL._fixedXElt.addStyle(key, value); } return this; }; this._elt.removeStyle = function (key) { originRemoveStyle.apply(this, arguments); if (thisCTL._fixedXElt && isOverrideStyle(key)) { thisCTL._fixedXElt.removeStyle(key); } return this; }; this._elt.addClass = function () { originAddClass.apply(this, arguments); if (thisCTL._fixedXElt) { thisCTL._fixedXElt.addClass.apply(thisCTL._fixedXElt, arguments); } return this; }; this._elt.removeClass = function () { originRemoveClass.apply(this, arguments); if (thisCTL._fixedXElt) { thisCTL._fixedXElt.removeClass.apply(thisCTL._fixedXElt, arguments); } return this; }; return this._elt; } }); Object.defineProperty(DTBodyRow.prototype, 'fixedXElt', { get: function () { if (this._fixedXElt) return this._fixedXElt; var fixedCol = this.adapter.fixedCol || 0; this._fixedXElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-dt-fixed-x', child: this.cells.slice(0, fixedCol).map(cell => cell.elt) }); return this._fixedXElt; } }); Object.defineProperty(DTBodyRow.prototype, 'innerText', { get: function () { if (this.data.innerText) return this.data.innerText; if (this.data.getInnerText) return this.data.getInnerText(); if ('innerText' in this.data) return this.data.innerText || ''; return this.cells.map(function (cell) { return cell.innerText.trim(); }).filter(text => !!text).join(' / '); } }); Object.defineProperty(DTBodyRow.prototype, 'idx', { set: function (value) { if (this.$idx) this.$idx.attr('data-idx', value + 1 + ''); this._idx = value; }, get: function () { return this._idx; } }); Object.defineProperty(DTBodyRow.prototype, 'adapter', { get: function () { return this.body.adapter; } }); /* harmony default export */ const dynamictable_DTBodyRow = (DTBodyRow); // EXTERNAL MODULE: ./node_modules/absol/src/Network/Thread.js + 1 modules var Thread = __webpack_require__(6672); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTSearchFactor.js function DTSearchFactor(global) { /*** * @typedef SelectionItem2 * @property {String} text * @property {String} desc * @property {String} __text__ * @property {String} __nvnText__ * @property {Array<String>} __words__ * @property {Array<String>} __nvnWords__ * @property {object} __wordDict__ * @property {object} __nvnWordDict__ * @module SelectionItem2 */ 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, ""); } function harmonicMean(a, b) { return 2 / (1 / a + 1 / 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); } 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)]; } var EXTRA_MATCH_SCORE = 9; var NVN_EXTRA_MATCH_SCORE = 8; var EQUAL_MATCH_SCORE = 10; var WORD_MATCH_SCORE = 3; var HAS_WORD_SCORE = 30; var HAS_NVN_WORD_SCORE = 29; /*** * * @param {SelectionItem} item * @returns {*} */ function prepareSearchForItem(item) { if (!item.text || !item.text.charAt) item.text = item.text + ''; var splitter = /([_\s\b\-()\[\]"']| | | ")+/g; var text = item.text.replace(splitter, ' '); var __words__ = text.split(/\s+/).filter(w=>!!w).map(w=>w.toLowerCase()); var __text__ = __words__.join(' '); var __wordDict__ = __words__.reduce((ac, cr, i) => { ac[cr] = ac[cr] || i + 1; return ac; }, {}); var __nvnText__ = nonAccentVietnamese(__text__); var __nvnWords__ = __words__.map(w=>nonAccentVietnamese(w)); var __nvnWordDict__ = __nvnWords__.reduce((ac, cr, i) => { ac[cr] = ac[cr] || i + 1; return ac; }, {}); Object.defineProperties(item, { __text__: { configurable: true, enumerable: false, writable: true, value: __text__ }, __words__: { configurable: true, enumerable: false, writable: true, value: __words__ }, __wordDict__: { configurable: true, enumerable: false, writable: true, value: __wordDict__ }, __textNoneCase__: { configurable: true, enumerable: false, writable: true, value: __text__ }, __wordsNoneCase__: { configurable: true, enumerable: false, writable: true, value: __words__ }, __nvnText__: { configurable: true, enumerable: false, writable: true, value: __nvnText__ }, __nvnWords__: { configurable: true, enumerable: false, writable: true, value: __nvnWords__ }, __nvnWordDict__: { configurable: true, enumerable: false, writable: true, value: __nvnWordDict__ }, __nvnTextNoneCase__: { configurable: true, enumerable: false, writable: true, value: __nvnText__ }, __nvnWordsNoneCase__: { configurable: true, enumerable: false, writable: true, value: __nvnWords__ } }); return item; } function isItemMustIncluded(queryItem, item) { if (!queryItem) return true; if (item.__nvnText__.indexOf(queryItem.__nvnText__) >= 0) { return true; } var dict1 = queryItem.__nvnWordDict__; var dict2 = item.__nvnWordDict__; for (var i in dict1) { for (var j in dict2) { if (j.indexOf(i) < 0) return false; } } return true; } function calcItemMatchScore(queryItem, item) { var score = 0; if (!item.__text__) return 0; function calcByWordDict(queryWords, wordDict) { var hwScore = 0; var i; wordDict = Object.assign({}, wordDict); var bestWordMatched, bestWordMatchScore = 0; var word, wordScore; for (i = 0; i < queryWords.length; ++i) { bestWordMatchScore = 0; bestWordMatched = null; for (word in wordDict) { wordScore = wordLike(word, queryWords[i]) - 1e-3 * wordDict[word]; if (wordScore > bestWordMatchScore) { bestWordMatched = word; bestWordMatchScore = wordScore; } } if (bestWordMatchScore >0) { hwScore += bestWordMatchScore * WORD_MATCH_SCORE; delete wordDict[bestWordMatched]; } } return hwScore; } score += calcByWordDict(queryItem.__words__, item.__wordDict__); score += calcByWordDict(queryItem.__nvnWords__, item.__nvnWordDict__); if (item.__text__ === queryItem.__text__) { score += EQUAL_MATCH_SCORE; } var extraIndex = item.__text__.indexOf(queryItem.__text__); if (extraIndex >= 0) { score += EXTRA_MATCH_SCORE; } extraIndex = item.__nvnText__.indexOf(queryItem.__nvnText__); if (extraIndex >= 0) { score += EXTRA_MATCH_SCORE; } score += Math.max(wordsMatch(queryItem.__words__, item.__words__), wordsMatch(queryItem.__nvnWords__, item.__nvnWords__))/ Math.max(queryItem.__words__.length + 1, 1); return score; } function scoreCmp(a, b) { if (b.score === a.score) { if (b.item.__nvnText__ > a.item.__nvnText__) return -1; return 1; } return b.score - a.score; } function keyStringOf(o) { var type = typeof o; var keys; if (o && type === "object") { if (o.getTime) { return 'd(' + o.getTime() + ')'; } else if (o.length && o.map) { return 'a(' + o.map(val => keyStringOf(val)).join(',') + ')'; } else { keys = Object.keys(o); keys.sort(); return 'o(' + keys.map(key => key + ':' + keyStringOf(o[key])).join(',') + ')'; } } else { return type[0] + '(' + o + ')'; } } function matchFilter(item, filter) { if (!filter) return true; var keys = item.keys; if (!keys) return false; for (var i in filter) { if (!keyCmp(keys[i], filter[i])) return false; } return true; } function toComparable(x) { if (!x) return x; var type = typeof x; if (type === 'string') return x; if (type === "number") return x; if (type === "boolean") return x; if (type.getTime) return type.getTime(); return x; } function keyCmp(itemKey, filterKey) { if (itemKey === filterKey) return true; if (!itemKey !== !filterKey) return false; if (!itemKey || !filterKey) return false; var filterKeyString = keyStringOf(filterKey) function withFilter(x) { var xString = keyStringOf(x) var res = xString === filterKeyString; if (!res && (typeof filterKey === "object")) { if (filterKey.some) { res = filterKey.some(function (y) { return keyStringOf(y) === x; }); } else if (('min' in filterKey) || ('max' in filterKey)) { res = true; if ('min' in filterKey) { res = res && toComparable(x) >= toComparable(filterKey.min); } if ('max' in filterKey) { res = res && toComparable(x) <= toComparable(filterKey.max); } } } return res; } if (itemKey.some) { return itemKey.some(withFilter); } else return withFilter(itemKey); } var benchmark = global.calcBenchmark(); /******************************************************************************************************************/ var slaves = {}; function SearchingSlave(id) { this.id = id; this.items = []; this.itemVersion = -1; this.tranferFinished = true; this.pendingTask = null; this.taskSession = Math.random() + ''; this.scoredHolders = []; this.searchingSession = Math.random() + ''; } SearchingSlave.prototype.onReceiveItems = function (n, start, end, items, version) { if (this.scoredHolders.length > start) { this.scoredHolders.splice(start); } var cItems = this.items; if (cItems.length < n) { // sessionItems cItems.push(null); } if (cItems.length > n) { cItems.splice(n); } this.itemVersion = version; for (var i = start; i < end; ++i) { cItems[i] = items[i - start]; } if (end === n) { this.tranferFinished = true; this.doTask(); } else { this.tranferFinished = false; } }; SearchingSlave.prototype.doTask = function () { if (!this.pendingTask) return; if (this.searchingSession === this.taskSession) return; var self = this; this.searchingSession = this.taskSession; var session = this.searchingSession; var items = this.items; var its = this.scoredHolders; var taskData = this.pendingTask; var itemVersion = this.itemVersion; var queryText = taskData.query.text; var filter = taskData.query.filter; var sort = taskData.query.sort; var queryTextItem = null; if (queryText) queryTextItem = prepareSearchForItem({ text: queryText }); var sortCmp = (a, b) => { var aKeys = a.item.keys; var bKeys = b.item.keys; var key; var av, bv; var d = 0; if (aKeys && !bKeys) { d = 1; } else if (!aKeys && bKeys) { d = -1; } else if (aKeys && bKeys) { for (var i = 0; i < sort.length; ++i) { key = sort[i].key; d = aKeys[key] - bKeys[key]; if (isNaN(d)) { if (aKeys[key] < bKeys[key]) { d = -1; } else if (aKeys[key] === bKeys[key]) { d = 0; } else { d = 1; } } if (sort[i].order === 'descending') d = -d; if (d !== 0) break; } } if (d === 0) { d = a.i - b.i; } return d; }; function likeSort(items) { var minValue = Infinity; var maxValue = -Infinity; var i; var n = items.length; var item; for (i = 0; i < n; ++i) { item = items[i]; if (item.score < minValue) minValue = item.score; if (item.score > maxValue) maxValue = item.score; } var segments = [[], [], [], [], [], [], [], []]; var threshold = maxValue - (maxValue - minValue) / 4; if (maxValue < 3) threshold = maxValue - (maxValue - minValue) / 8; var d = (maxValue - threshold) / (segments.length - 1); var v; var k; for (i = 0; i < n; ++i) { item = items[i]; v = item.score; if (item.mustIncluded) v = Math.max(threshold + 0.1, v); if (v < threshold || v < 0.8) continue; if (v >= maxValue) segments[segments.length - 1].push(item) else { k = ((v - threshold) / d) >> 0; segments[k].push(item); } } var res = []; var segment; while (segments.length > 0) { segment = segments.pop(); if (segment.length > 0) { if (sort) { segment.sort(sortCmp); } else { if (segment.length + res.length < 1000) segment.sort(scoreCmp); } res = res.concat(segment); } } return res; } function sortScore() { var result = its; if (filter) { result = result.filter(function (x) { return !!x; }) } // var now = new Date().getTime(); if (queryTextItem) { result = likeSort(result); } else if (sort) { result.sort(sortCmp); } // console.log("SortTime:", new Date().getTime() - now) result = result.map(function (it) { return it.i; }); self.searchingSession = 'done'; global.emit('searchEnd', self.id, Object({ hash: taskData.hash, idx: taskData.idx, result: result, itemVersion: self.itemVersion })); } function tick() { if (self.taskSession !== session) return; if (self.itemVersion !== itemVersion) { return; } if (its.length >= items.length) { sortScore(); return; } var k = benchmark * 5; if (!queryTextItem) k *= 30; var i = its.length; var n = items.length while (k-- && i < n) { if (!filter || matchFilter(items[i], filter)) { if (!items[i].prepare && queryTextItem) { items[i].prepare = true; prepareSearchForItem(items[i]); } its.push({ i: i, item: items[i], score: queryTextItem ? calcItemMatchScore(queryTextItem, items[i]) : 0, mustIncluded: isItemMustIncluded(queryTextItem, items[i]) }); } else { its.push(null); } ++i; } setTimeout(tick, 5); } tick(); }; SearchingSlave.prototype.receiveTask = function (taskData) { this.pendingTask = taskData && taskData.query && taskData; this.taskSession = taskData && taskData.idx; this.scoredHolders = []; if (this.tranferFinished && this.pendingTask) this.doTask(); } SearchingSlave.prototype.destroy = function () { this.items = null; delete slaves[this.id]; }; global.destroySlave = function (id) { slaves[id] && slaves[id].destroy(); }; /******************************************************************************************************************/ var data = {}; global.transferTask = function (id, taskData) { slaves[id] = slaves[id] || new SearchingSlave(id); slaves[id] && slaves[id].receiveTask(taskData); }; global.transferSearchItems = function (id, n, start, end, items, version) { slaves[id] = slaves[id] || new SearchingSlave(id); slaves[id].onReceiveItems(n, start, end, items, version); }; global.search = function (session, query) { var holder = data[session]; if (!holder) return false; var searchingSession = Math.random() + ''; holder.searchingSession = searchingSession; var now = new Date().getTime(); var items = data[session] && data[session].items; var its = Array(items.length); var queryItem = prepareSearchForItem({ text: query }); var resolve; var sync = new Promise(function (rs) { resolve = rs; }); function calcValue() { var i = 0; var n = items.length; function tick() { if (searchingSession !== holder.searchingSession) { resolve(false); return; } var c = benchmark * 5; while (c-- && i < n) { its[i] = { i: i, item: items[i], score: calcItemMatchScore(queryItem, items[i]) }; ++i; } if (i < n) { setTimeout(tick, 3); } else { setTimeout(sortScore, 3); } } tick(); } function sortScore() { if (searchingSession !== holder.searchingSession) { resolve(false); return; } now = new Date().getTime(); var result = likeSort(its).map(function (it) { return it.i; }); resolve(result); } setTimeout(calcValue, 3); return sync; }; } /* harmony default export */ const dynamictable_DTSearchFactor = (DTSearchFactor); DTSearchFactor.exportCode = function () { var res = DTSearchFactor + '' + '\n\nDTSearchFactor(this)'; return res; } ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTBody.js /*** * * @param {DTBody} body * @constructor */ function SearchingMaster(body) { this.body = body; this.mode = body.modes.searching; this.waitingCtrl = body.table.wrapper.waitingCtl; this.initWorker(); this.id = (0,stringGenerate.randomIdent)(10); this.transferSession = Math.random() + ''; this.transferred = 0; this.isTranferring = false; this.share.instances[this.id] = this; this.itemVersion = 0; this.outputCache = {}; this.lastTaskIdx = 0; } SearchingMaster.prototype.destroy = function () { this.share.thread.invoke('destroySlave', this.id); this.share.instances[this.id] = null; this.transferSession = "DIE"; delete this.share.instances[this.id]; this.outputCache = {}; this.body = null; }; SearchingMaster.prototype.transferFrom = function (offset) { if (this.transferSession === "DIE") { return; } this.outputCache = {}; if (offset < this.transferred) { this.transferred = offset; this.itemVersion++; } if (this.isTranferring) return; var waitingCtrl = this.waitingCtrl; var wTkn = waitingCtrl.begin(); var self = this; var transferSession = Math.random() + ''; self.transferSession = transferSession; self.isTranferring = true; setTimeout(function tick() { if (self.transferSession !== transferSession) { waitingCtrl.end(wTkn); return; } var i = self.transferred; var rows = self.body.rows; var n = self.body.rows.length; if (i >= n) { if (n === 0) { self.share.thread.invoke('transferSearchItems', self.id, n, 0, 0, [], self.itemVersion); } self.isTranferring = false; self.onFinishTransfer(); waitingCtrl.end(wTkn); return; } self.share.benchmark = self.share.benchmark || BrowserDetector/* default.calcBenchmark */.Z.calcBenchmark(); var k = self.share.benchmark >> 2; var items = []; var item; var start = i; while (i < n && k--) { item = { text: rows[i].innerText, value: i, keys: rows[i].filterKeys }; items.push(item); ++i; } var sync = self.share.thread.invoke('transferSearchItems', self.id, n, start, i, items, self.itemVersion); self.transferred = i; Promise.all([sync, new Promise(function (rs) { setTimeout(rs, 5); })]).then(tick); }, 5); }; SearchingMaster.prototype.onFinishTransfer = function () { // console.log('finish'); }; SearchingMaster.prototype.sendTask = function (query) { if (this.transferSession === "DIE") { return; } this.lastTaskIdx++; var taskData = { idx: this.lastTaskIdx, query: query, hash: (0,utils.calcDTQueryHash)(query) }; if (this.outputCache[taskData.hash]) { setTimeout(this.onResult.bind(this, this.outputCache[taskData.hash], true), 5); } else { this.share.thread.invoke('transferTask', this.id, taskData); } return taskData; }; SearchingMaster.prototype.onResult = function (response, dontCache) { if (this.itemVersion !== response.itemVersion) return; if (!dontCache) { this.outputCache[response.hash] = response; } this.body.modes.searching.onResult(response); }; SearchingMaster.prototype.share = { thread: null, benchmark: 0, instances: {} }; SearchingMaster.prototype.initWorker = function () { if (!this.share.thread) { this.share.thread = new Thread/* default */.Z({ methods: { calcBenchmark: BrowserDetector/* default.calcBenchmark */.Z.calcBenchmark }, extendCode: dynamictable_DTSearchFactor.exportCode() }); this.share.thread.on('alert', function (mess) { alert(mess); }); this.share.thread.on('searchEnd', function (id, response) { this.share.instances[id] && this.share.instances[id].onResult(response); }.bind(this)); setTimeout(function () { this.share.benchmark = this.share.benchmark || BrowserDetector/* default.calcBenchmark */.Z.calcBenchmark(); }.bind(this)); } }; /*** * * @param {DTBody} body * @constructor */ function BaseMode(body) { this.body = body; this.offset = 0; this.rowOffset = -1000; this.boundCache = null; this.viewedRows = null; } BaseMode.prototype.name = 'base'; NormalMode.prototype.revoke = function () { this.body = null; }; BaseMode.prototype.resetViewParam = function () { this.offset = 0; this.rowOffset = -1000; this.boundCache = null; this.viewedRows = null; }; BaseMode.prototype.getBoundOfRows = function () { if (this.boundCache) return this.boundCache; if (!this.body.table.wrapper.isDescendantOf(document.body)) return null; var bodyBound = this.body.elt.getBoundingClientRect(); if (!bodyBound || bodyBound.width <= 0 || bodyBound.height <= 0) return null; var elt = this.body.elt; var childNodes = elt.childNodes; this.boundCache = Array.prototype.map.call(childNodes, elt => { var eBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(elt.getBoundingClientRect()); eBound.y -= bodyBound.top; return eBound; }); this.boundCache.body = Rectangle/* default.fromClientRect */.Z.fromClientRect(bodyBound); this.boundCache.header = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.body.table.header.elt.getBoundingClientRect()); return this.boundCache; }; BaseMode.prototype.updateRowsIfNeed = function () { throw Error("Not implement!"); }; BaseMode.prototype.render = function () { this.updateRowsIfNeed(); var bounds = this.getBoundOfRows(); if (!bounds) { setTimeout(() => { if (this.body.elt.isDescendantOf(document.body)) { this.render(); } }, 5); return; } var dy = 0, rowIdx; if (bounds.length > 0) { rowIdx = Math.floor(this.offset - this.rowOffset); //todo: fix bounds[rowIdx] undefined if (!bounds[rowIdx]) return; dy = bounds[rowIdx].y + (this.offset - this.rowOffset - rowIdx) * bounds[rowIdx].height; } var availableHeight; if (bounds.length > 0) { availableHeight = this.body.table.wrapper.$viewport.getBoundingClientRect().height - bounds.header.height; if (bounds[bounds.length - 1].y + bounds[bounds.length - 1].height - dy < availableHeight - 1) { dy = -availableHeight + bounds[bounds.length - 1].y + bounds[bounds.length - 1].height + 1;//1: last border } } dy = Math.max(0, dy); //small padding top var hs = this.body.table.wrapper.$vscrollbar.innerOffset / ((this.body.table.wrapper.$vscrollbar.innerHeight - this.body.table.wrapper.$vscrollbar.outerHeight) || 1) dy += hs * 100; this.body.table.wrapper.$space.addStyle('top', -dy + 'px'); this.body.table.wrapper.$fixedXCtn.addStyle('top', -dy + 'px'); }; /*** * @extends BaseMode * @param {DTBody} body * @constructor */ function SearchingMode(body) { BaseMode.call(this, body); this.status = 'STANDBY'; this.waitingToken = 'none'; this.waitingCtrl = body.table.wrapper.waitingCtl; this.taskHash = 0; this.renderingHash = -1; this.resultItems = []; this.viewedRows = []; } OOP/* default.mixClass */.ZP.mixClass(SearchingMode, BaseMode); SearchingMode.prototype.name = 'search'; SearchingMode.prototype.revoke = function () { this.resultItems = []; this.viewedRows = []; }; SearchingMode.prototype.start = function () { this.status = "RUNNING"; this.searchingCache = {}; this.body.table.wrapper.addClass('as-searching'); this.renderingHash = -1; }; SearchingMode.prototype.end = function () { this.body.table.wrapper.removeClass('as-searching'); this.searchingItems = null; this.status = "STOP"; this.waitingCtrl.end(this.waitingToken); if (this.body.master) this.body.master.sendTask(null); }; SearchingMode.prototype.updateRowsIfNeed = function () { var screenSize = (0,Dom/* getScreenSize */.tE)(); var rowPerPage = Math.ceil(Math.ceil(screenSize.height / 40) / 25) * 25; if (this.body.table.wrapper.hasClass('as-adapt-infinity-grow')) rowPerPage = 1e7; var newRowOffset = Math.floor(this.offset / rowPerPage) * rowPerPage; if (this.resultItems.length - newRowOffset < rowPerPage) { newRowOffset = Math.max(0, newRowOffset - rowPerPage); } if (newRowOffset === this.rowOffset) return; this.rowOffset = newRowOffset; var start = this.rowOffset; var end = Math.min(start + rowPerPage * 2, this.resultItems.length); var elt = this.body.elt; var fixedXElt = this.body.fixedXElt; var rows = this.body.rows; var nRows = []; for (var i = start; i < end; ++i) { nRows.push(rows[this.resultItems[i]]); } var nChildren = nRows.map(r => r.elt); var nFixedXChildren = nRows.map(r => r.fixedXElt); (0,utils.replaceChildrenInElt)(elt, nChildren); (0,utils.replaceChildrenInElt)(fixedXElt, nFixedXChildren); this.boundCache = null; var bounds = this.getBoundOfRows(); if (bounds) { for (var i = 0; i < nRows.length; ++i) { nRows[i].updateCopyEltSize(); } this.body.table.wrapper.layoutCtrl.onResize(); this.body.table.updateCopyEltSize(); } var updateFx = () => { if (counter > 20) return; if (this.body.elt.isDescendantOf(document.body)) { var bounds = this.getBoundOfRows(); if (bounds) { for (var i = 0; i < nRows.length; ++i) { nRows[i].updateCopyEltSize(); } this.body.table.wrapper.layoutCtrl.onResize(); this.body.table.updateCopyEltSize(); } counter += 3; setTimeout(updateFx, (counter++) * 5); } else { setTimeout(updateFx, (counter++) * 5) } }; var counter = 1; if (!bounds) { setTimeout(updateFx, 1); } }; SearchingMode.prototype.onRowSplice = function (idx) { this.rowOffset = -1000; this.render(); } SearchingMode.prototype.onRowRemoved = function (idx, n) { n = n || 1; this.resultItems = this.resultItems.reduce(function (ac, cr) { if (cr >= idx + n) { ac.push(cr - n); } else if (cr < idx) { ac.push(cr); } return ac; }, []); }; SearchingMode.prototype.onRowAdded = function (idx, n) { n = n || 1; this.resultItems = this.resultItems.reduce(function (ac, cr) { if (cr >= idx) { ac.push(cr + n); } else { ac.push(cr); } return ac; }, []); }; SearchingMode.prototype.viewIntoRow = function (row) { console.log(row); }; SearchingMode.prototype.query = function (query) { this.waitingCtrl.end(this.waitingToken); this.waitingToken = this.waitingCtrl.begin(); if (!this.body.master) { this.body.master = new SearchingMaster(this.body); this.body.master.transferFrom(0); } var taskHolder = this.body.master.sendTask(query); this.taskHash = taskHolder.hash; }; SearchingMode.prototype.onResult = function (response) { if (this.status !== 'RUNNING' || response.hash !== this.taskHash) return; this.waitingCtrl.end(this.waitingToken); if (this.renderingHash !== response.hash) { this.renderingHash = response.hash; this.offset = 0; this.rowOffset = -1000; } this.resultItems = response.result; this.viewedRows = this.resultItems.map(rIdx => this.body.rows[rIdx]); this.render(); }; SearchingMode.prototype.share = { thread: null }; /*** * @extends BaseMode * @param {DTBody} body * @constructor */ function NormalMode(body) { BaseMode.call(this, body); } OOP/* default.mixClass */.ZP.mixClass(NormalMode, BaseMode); NormalMode.prototype.name = 'normal'; NormalMode.prototype.start = function () { this.resetViewParam(); this.viewedRows = this.body.rows; this.render(); }; NormalMode.prototype.end = function () { }; NormalMode.prototype.updateRowsIfNeed = function () { var screenSize = (0,Dom/* getScreenSize */.tE)(); var rowPerPage = Math.ceil(Math.ceil(screenSize.height / 40 + 1) / 100) * 100; if (this.body.table.wrapper.hasClass('as-adapt-infinity-grow')) rowPerPage = 1e7; var newRowOffset = Math.floor(this.offset / rowPerPage) * rowPerPage; var data = this.body.data; if (data.rows.length - newRowOffset < rowPerPage) { newRowOffset = Math.max(0, newRowOffset - rowPerPage); } if (newRowOffset === this.rowOffset) return; this.rowOffset = newRowOffset; var start = this.rowOffset; var elt = this.body.elt; var fixedXElt = this.body.fixedXElt; var end = Math.min(start + rowPerPage * 2, data.rows.length); var rows = this.body.rows; elt.clearChild(); fixedXElt.clearChild(); for (var i = start; i < end; ++i) { elt.addChild(rows[i].elt); fixedXElt.addChild(rows[i].fixedXElt); } this.boundCache = null; var bounds = this.getBoundOfRows(); if (bounds) { for (var i = start; i < end; ++i) { rows[i].updateCopyEltSize(); } this.body.table.wrapper.layoutCtrl.onResize(); this.body.table.updateCopyEltSize(); } var counter = 1; var fx = () => { if (counter> 20) return; if (this.body.elt.isDescendantOf(document.body)) { var bounds = this.getBoundOfRows(); if (bounds) { for (var i = start; i < end; ++i) { rows[i].updateCopyEltSize(); } this.body.table.wrapper.layoutCtrl.onResize(); this.body.table.updateCopyEltSize(); } counter += 3; setTimeout(fx, counter * 5); } else { setTimeout(fx, (counter++) * 5); } }; if (!bounds) { setTimeout(fx, 1); } this.body.table.wrapper.rowDragCtrl.ev_rowRenderChange(); ResizeSystem/* default.requestUpdateUpSignal */.Z.requestUpdateUpSignal(this.body.elt); } NormalMode.prototype.onRowSplice = function (idx) { this.rowOffset = -1; this.render(); }; NormalMode.prototype.viewIntoRow = function (o) { var idx = this.viewedRows.findIndex(row => { if (o === row._elt) return true; if (o === row) return true; if (o === row.data) return true; if (o === row.id || row.data.id === o) return true; return false; }); if (idx <= 0) return; var scrollbar = this.body.table.wrapper.$vscrollbar; scrollbar.innerOffset = Math.max(0, Math.min(idx - scrollbar.outerHeight / 3, scrollbar.innerHeight - scrollbar.outerHeight)); scrollbar.emit('scroll'); }; /*** * * @param {DTTable} table * @param data * @constructor */ function DTBody(table, data) { this.table = table; this.data = data; this._elt = null; this._fixedXElt = null; /** * @type {DTBodyRow[]} */ this.rows = this.data.rows.map((rowData, i) => { var row = new dynamictable_DTBodyRow(this, rowData); row.idx = i; return row; }); this.modes = { normal: new NormalMode(this), searching: new SearchingMode(this) }; // // this.curentMode = this.modes.normal; this.curentMode.start(); this.curentMode.render(); this.master = null; // // this.master = new SearchingMaster(this); // this.master.transferFrom(0); /*** * @name offset * @type {number} * @memberOf DTBody# */ } DTBody.prototype.revokeResource = function () { if (this.master) { this.master.destroy(); this.master = null; } while (this.rows.length) { this.rows.pop().revoke(); } this.modes.normal.revoke(); this.modes.searching.revoke(); this.rows = []; this.data = null; }; DTBody.prototype.requireRows = function (start, end) { if (typeof start !== "number") start = 0; if (typeof end !== "number") end = Infinity; end = Math.min(end, this.data.rows.length); return this.rows.slice(start, end); }; DTBody.prototype.reindexRows = function (start, end) { if (typeof start !== "number") start = 0; if (typeof end !== "number") end = Infinity; end = Math.min(end, this.data.rows.length); for (var i = start; i < end; ++i) { if (this.rows[i]) this.rows[i].idx = i; } }; DTBody.prototype.onRowSplice = function (idx) { this.curentMode.onRowSplice(idx); if (this.master) this.master.transferFrom(idx); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); } DTBody.prototype.rowIndexOf = function (o) { var n = this.rows.length; for (var i = 0; i < n; ++i) { if (o === this.rows[i]._elt) return i; if (o === this.rows[i]) return i; if (o === this.data.rows[i]) return i; if (o === this.data.rows[i].id) return i; } return -1; }; DTBody.prototype.addRowBefore = function (rowData, bf) { var idx; if (bf === null || bf === undefined) { return this.addRow(rowData); } else { idx = this.rowIndexOf(bf); if (idx < 0) throw new Error("$bf not is a row in table"); return this.addRow(rowData, idx); } }; DTBody.prototype.addRowAfter = function (rowData, at) { var idx; if (at === null || at === undefined) { return this.addRow(rowData, 0); } else { idx = this.rowIndexOf(at); if (idx < 0) throw new Error("$bf not is a row in table"); return this.addRow(rowData, idx + 1); } }; DTBody.prototype.addRow = function (rowData, idx) { if (!(0,utils.isNaturalNumber)(idx) || idx >= this.rows.length) { idx = this.rows.length; } var row; if (idx >= this.rows.length) { idx = this.rows.length; this.data.rows.push(rowData); row = new dynamictable_DTBodyRow(this, rowData) row.idx = idx; this.rows.push(row); if (this.curentMode.onRowAdded) this.curentMode.onRowAdded(idx, 1); this.onRowSplice(this.rows.length - 1); } else { row = new dynamictable_DTBodyRow(this, rowData); row.idx = idx; this.rows.splice(idx, 0, row); this.data.rows.splice(idx, 0, rowData); this.reindexRows(idx + 1); this.onRowSplice(idx); } return row; }; DTBody.prototype.addRows = function (rowsData, idx) { if (!(0,utils.isNaturalNumber)(idx) || idx >= this.rows.length) { idx = this.rows.length; } var res = []; var row, i, rowData; if (idx >= this.rows.length) { idx = this.rows.length; for (i = 0; i < rowsData.length; ++i) { rowData = rowsData[i]; row = new dynamictable_DTBodyRow(this, rowData); row.idx = i + idx; this.data.rows.push(rowData); res.push(row); this.rows.push(row); } } else { for (i = 0; i < rowsData.length; ++i) { rowData = rowsData[i]; row = new dynamictable_DTBodyRow(this, rowData); row.idx = i + idx; res.push(row); this.data.rows.splice(idx + i, 0, rowData); this.rows.splice(idx + i, 0, row); } this.reindexRows(idx + rowsData.length); } if (this.curentMode.onRowAdded) this.curentMode.onRowAdded(idx, rowsData.length); this.onRowSplice(idx); return res; }; DTBody.prototype.removeRow = function (row) { var idx = this.rowIndexOf(row); if (idx < 0) return; this.rows.splice(idx, 1); this.data.rows.splice(idx, 1); this.reindexRows(idx); if (this.curentMode.onRowRemoved) this.curentMode.onRowRemoved(idx); this.onRowSplice(idx); }; DTBody.prototype.moveRowAt = function (idx, newIdx) { var row = this.rows.splice(idx, 1)[0]; var rowData = this.data.rows.splice(idx, 1)[0]; this.rows.splice(newIdx, 0, row); this.data.rows.splice(newIdx, 0, rowData); this.reindexRows(Math.min(idx, newIdx)); this.onRowSplice(Math.min(idx, newIdx)); }; DTBody.prototype.clearRows = function () { var n = this.rows.length; this.rows.splice(0); this.data.rows.splice(0); if (this.curentMode.onRowRemoved) this.curentMode.onRowRemoved(0, n); this.onRowSplice(0); }; DTBody.prototype.rowAt = function (idx) { if (this.rows[idx]) return this.rows[idx]; var rowData = this.data.rows[idx]; if (rowData) { this.rows[idx] = new dynamictable_DTBodyRow(this, rowData); this.rows[idx].idx = idx; } else return null; }; DTBody.prototype.rowOf = function (o) { var idx = this.rowIndexOf(o); return this.rowAt(idx); }; DTBody.prototype.viewIntoRow = function (row) { return this.curentMode.viewIntoRow(row); }; DTBody.prototype.startSearchingIfNeed = function () { if (this.curentMode !== this.modes.searching) { this.curentMode.end(); this.curentMode = this.modes.searching; this.curentMode.start(); } }; DTBody.prototype.stopSearchIfNeed = function () { if (this.curentMode === this.modes.searching) { this.curentMode.end(); this.curentMode = this.modes.normal; this.curentMode.start(); } }; DTBody.prototype.query = function (query) { var now = new Date().getTime(); if (query) { this.startSearchingIfNeed(); } else if (!query) { this.stopSearchIfNeed(); this.curentMode.render(); } if (this.curentMode.query && query) { this.curentMode.query(query); } }; DTBody.prototype.updateCopyEltSize = function () { this.rows.forEach(row => row.updateCopyEltSize()); }; Object.defineProperties(DTBody.prototype, { offset: { set: function (value) { this._offset = value; this.curentMode.offset = value; this.curentMode.render(); }, get: function () { return this._offset; } }, searching: { get: function () { return this.elt.hasClass('as-searching'); } } }); Object.defineProperty(DTBody.prototype, 'elt', { get: function () { if (this._elt) return this._elt; this._elt = (0,ACore._)({ tag: 'tbody', class: 'as-dt-body', }); if (this.data.on) { Object.keys(this.data.on).forEach(key => { var cb = this.data.on[key]; if (typeof cb !== "function") return; this._elt.on(key, event => { cb.call(this._elt, event, this); }); }); } return this._elt; } }); Object.defineProperty(DTBody.prototype, 'fixedXElt', { get: function () { if (this._fixedXElt) return this._fixedXElt; this._fixedXElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-fixed-x', }); return this._fixedXElt; } }); Object.defineProperty(DTBody.prototype, 'adapter', { get: function () { return this.table.adapter; } }); /* harmony default export */ const dynamictable_DTBody = (DTBody); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTTable.js /*** * * @param {DynamicTable} elt * @param {} data * @constructor */ function DTTable(wrapper, data) { this.wrapper = wrapper; this._elt = null; this._fixedXElt = null; this._fixedXYElt = null; this._fixedYElt = null; /*** * * @type {DTDataTable|null|*|string} */ this.adapter = this.wrapper._adapter; this.data = data; this.header = new dynamictable_DTHead(this, this.data.head); this.body = new dynamictable_DTBody(this, this.data.body); } DTTable.prototype.updateCopyEltSize = function () { if (!this._fixedYElt) return; var bound = this._elt.getBoundingClientRect(); this._fixedYElt.parentElement.addStyle('width', bound.width + 'px'); this.header.updateCopyEltSize(); this.body.updateCopyEltSize(); } DTTable.prototype.revokeResource = function () { this.wrapper = null; this._elt = null; this.adapter = null; this.data = null; this.body.revokeResource(); }; Object.defineProperty(DTTable.prototype, 'elt', { get: function () { if (this._elt) return this._elt; this._elt = (0,ACore._)({ tag: 'table', class: 'as-dynamic-table', child: [ this.header.copyElt, this.body.elt ] }); return this._elt; } }); Object.defineProperty(DTTable.prototype, 'fixedXElt', { get: function () { if (this._fixedXElt) return this._fixedXElt; this._fixedXElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-fixed-x', child: [this.header.fixedXElt, this.body.fixedXElt] }); return this._fixedXElt; } }); Object.defineProperty(DTTable.prototype, 'fixedYElt', { get: function () { if (this._fixedYElt) return this._fixedYElt; this._fixedYElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-dt-fixed-y', child: [this.header.elt] }); return this._fixedYElt; } }); Object.defineProperty(DTTable.prototype, 'fixedXYElt', { get: function () { if (this._fixedXYElt) return this._fixedXYElt; this._fixedXYElt = (0,ACore._)({ elt: this.elt.cloneNode(false), class: 'as-dt-fixed-y', child: [this.header.fixedXYElt] }); return this._fixedXYElt; } }); /* harmony default export */ const dynamictable_DTTable = (DTTable); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTDataAdapter.js /*** * @typedef DTDataRow * @property */ /*** * @typedef DTDataBody * @property {DTDataRow[]} row */ /*** * @typedef DTDataHead * @property {DTDataHRow[]} row */ /*** * @typedef DTDataTable * @property head * @property body * @property {number} rowsPerPage * @property {number} fixedCol */ /*** * * @param {DynamicTable} tableElt * @param {DTDataAdapter} opt * @constructor */ function DTDataAdapter(tableElt, opt) { this.tableElt = tableElt; /*** * * @type {null|DTDataTable} */ this.data = null; this.rowsPerPage = 20; this.fixedCol = 0; Object.assign(this, opt); if (this.fixedCol === 0) { this.tableElt.removeClass('as-has-fixed-col'); } else { this.tableElt.addClass('as-has-fixed-col'); } } DTDataAdapter.prototype.revoke = function () { this.tableElt = null; this.data = null; }; DTDataAdapter.prototype.render = function () { if (this.tableElt.table) this.tableElt.table.revokeResource(); this.tableElt.table = new dynamictable_DTTable(this.tableElt, this.data); }; DTDataAdapter.prototype.renderHeadCell = function (elt, data, controller) { if (data.child) { if (data.child.map) { elt.addChild(data.child.map(function (it) { return (0,ACore._)(it); })); } else { elt.addChild((0,ACore._)(data.child)); } } if (data.render) { data.render.call(null, elt, data, controller); } }; DTDataAdapter.prototype.renderBodyCell = function (elt, data, controller) { if (data.child) { if (data.child.map) { elt.addChild(data.child.map(function (it) { return (0,ACore._)(it); })) } else { elt.addChild((0,ACore._)(data.child)); } } if (data.render) { data.render.call(null, elt, data, controller); } if (data.style) { elt.addStyle(data.style); } }; /* harmony default export */ const dynamictable_DTDataAdapter = (DTDataAdapter); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dynamictable.css var dynamictable = __webpack_require__(5984); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DTWaitingViewController.js /*** * * @param {DynamicTable} tableElt * @constructor */ function DTWaitingViewController(tableElt) { this.tableElt = tableElt; this.tokens = {}; this.traceToken = {}; this.timeoutIdx = -1; } DTWaitingViewController.prototype.begin = function () { var token = Math.random() + ''; if (this.tableElt.$searchInput) this.tableElt.$searchInput.waiting = true; this.tokens[token] = true; this.traceToken[token] = new Error(token); if (this.timeoutIdx > 0) { clearTimeout(this.timeoutIdx); this.timeoutIdx = -1; } return token; }; DTWaitingViewController.prototype.end = function (token) { delete this.tokens[token]; delete this.traceToken[token]; if (this.timeoutIdx > 0) { clearTimeout(this.timeoutIdx); } this.timeoutIdx = setTimeout(function () { this.timeoutIdx = -1; for (var i in this.tokens) return; if (this.tableElt.$searchInput) this.tableElt.$searchInput.waiting = false; }.bind(this), 100); }; /* harmony default export */ const dynamictable_DTWaitingViewController = (DTWaitingViewController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dynamictable/DynamicTable.js var loadStyleSheet = function () { var dynamicStyleSheet = {}; var key = Array(20).fill(0).map((u, i) => [ '.as-dynamic-table-wrapper.as-hide-col-' + i + ' td[data-col-idx="' + i + '"]', '.as-dynamic-table-wrapper.as-hide-col-' + i + ' th[data-col-idx="' + i + '"]' ].join(', ')).join(',\n'); dynamicStyleSheet[key] = { display: 'none' }; (0,utils.buildCss)(dynamicStyleSheet); loadStyleSheet = noop/* default */.Z; } function DynamicTableManager() { this.tables = []; this.storageChanged = false; } DynamicTableManager.prototype.STORE_KEY = 'DynamicTableSetting'; DynamicTableManager.prototype.VER = 2; DynamicTableManager.prototype.initIfNeed = function () { if (this.css) return; this.css = new DynamicCSS/* default */.Z(); this.css.elt.setAttribute('id', "dynamic_mng"); this.tables = []; try { var json = localStorage.getItem(this.STORE_KEY); if (json) { this.data = JSON.parse(json); if (!this.data || this.data.ver !== this.VER) this.data = null; } } catch (er) { } this.data = this.data || { ver: this.VER, colWidth: {} }; this.initCss(); }; DynamicTableManager.prototype.initCss = function () { Object.keys(this.data.colWidth).forEach(tableId => { Object.keys(this.data.colWidth[tableId]).forEach(colId => { var value = this.data.colWidth[tableId][colId]; this.css.setProperty(`#${tableId} th[data-col-id="${colId}"]`, 'width', value + 'px') }); }); this.css.commit(); }; DynamicTableManager.prototype.add = function (table) { this.tables.push(table); }; DynamicTableManager.prototype.removeTrash = function () { this.tables = this.tables.filter(table => table.isDescendantOf(document.body)); }; DynamicTableManager.prototype.commitColWidth = function (sender, tableId, colId, value, storage) { this.setColWidth(tableId, colId, value, storage); this.removeTrash(); this.commit(); this.tables.forEach(table => { if (table.id === table && table !== sender) { table.requestUpdateSize(); } }); }; DynamicTableManager.prototype.hasColSize = function (tableId, colId) { return this.data.colWidth[tableId] && this.data.colWidth[tableId][colId]; }; DynamicTableManager.prototype.setColWidth = function (tableId, colId, value, storage) { if (storage) { this.data.colWidth[tableId] = this.data.colWidth[tableId] || {}; this.data.colWidth[tableId][colId] = value; this.storageChanged = true; } this.css.setProperty(`#${tableId} th[data-col-id="${colId}"]:not([colspan])`, 'width', value + 'px'); }; DynamicTableManager.prototype.commit = function () { if (this.storageChanged) { localStorage.setItem(this.STORE_KEY, JSON.stringify(this.data)); this.storageChanged = false; } this.css.commit(); } var manager = new DynamicTableManager(); var pendingTables = {}; /*** * @extends AElement * @constructor */ function DynamicTable() { this._pendingId = (0,stringGenerate.randomIdent)(4); pendingTables[this._pendingId] = this; manager.initIfNeed(); loadStyleSheet(); this.css = new DynamicCSS/* default */.Z(); this._hiddenColumns = []; /*** * * @type {SearchTextInput|null} */ this.$searchInput = null; /*** * * @type {AElement} */ this.$table = (0,ACore.$)('.as-dynamic-table', this); /*** * * @type {AElement} */ this.$thead = (0,ACore.$)('.as-dynamic-table>thead', this.$table); /*** * * @type {AElement} */ this.$tbody = (0,ACore.$)('.as-dynamic-table>tbody', this.$table); this.$filterInputs = []; this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.$domSignal = (0,ACore._)('attachhook').addTo(this); this.domSignal = new DomSignal/* default */.ZP(this.$domSignal); //controller this.table = null; this.$space = (0,ACore.$)('.as-dynamic-table-space', this); this.$fixedYCtn = (0,ACore.$)('.as-dynamic-table-fixed-y-ctn', this); this.$fixedXCtn = (0,ACore.$)('.as-dynamic-table-fixed-x-ctn', this); this.$fixedXYCtn = (0,ACore.$)('.as-dynamic-table-fixed-xy-ctn', this); this.$viewport = (0,ACore.$)('.as-dynamic-table-viewport', this); this.$hscrollbar = (0,ACore.$)('.as-dynamic-table-hb', this); this.$vscrollbar = (0,ACore.$)('.as-dynamic-table-vb', this); this.$pageSelector = new VirtualPageSelector(this); this.extendStyle = Object.assign(new AppPattern_Attributes(this), this.extendStyle); this.extendStyle.loadAttributeHandlers(this.styleHandlers); // this.$attachhook.requestUpdateSize = this.fixedContentCtrl.updateSize.bind(this.fixedContentCtrl); this.$attachhook.requestUpdateSize = this.requestUpdateSize.bind(this); var trashTO = -1; this.readySync = new Promise(rs => { this.onReady = rs; }); this.$attachhook.once('attached', () => { delete pendingTables[this._pendingId]; // setTimeout(()=>{ // Object.values(pendingTables).forEach(table=>{ // if (!table.isDescendantOf(document.body)) // table.revokeResource(); // }); // }, 5000); ResizeSystem/* default.add */.Z.add(this.$attachhook); this.layoutCtrl.onAttached(); this.colSizeCtrl.onAttached(); manager.add(this); setTimeout(() => { this.requestUpdateSize(); if (this.onReady) { this.onReady(); this.onReady = null; } }, 10); clearTimeout(trashTO); var checkAlive = () => { if (this.isDescendantOf(document.body)) { setTimeout(checkAlive, 2000); } else { this.revokeResource(); } }; setTimeout(checkAlive, 500); }); /*** * * @type {{data: DTDataTable}||null} */ this.adapter = null; this.waitingCtl = new dynamictable_DTWaitingViewController(this); this.layoutCtrl = new LayoutController(this); this.pointerCtrl = new PointerController(this); this.colSizeCtrl = new ColSizeController(this); this.rowDragCtrl = new RowDragController(this); } DynamicTable.tag = 'DynamicTable'.toLowerCase(); DynamicTable.render = function (data, domDesc) { var width = domDesc.style && domDesc.style.width; var classList = ['as-dynamic-table-wrapper']; if (width === 'match_parent' || width === '100%') { classList.push('as-width-match-parent'); } return (0,ACore._)({ id: 'no-id-' + (0,stringGenerate.randomIdent)(10), extendEvent: ['orderchange', 'colresize'], class: classList, child: [ { tag: Hanger/* default.tag */.Z.tag, class: 'as-dynamic-table-viewport', child: [ { class: 'as-dynamic-table-space', }, { class: 'as-dynamic-table-fixed-y-ctn' }, { class: 'as-dynamic-table-fixed-x-ctn' }, { class: 'as-dynamic-table-fixed-xy-ctn' } ] }, { tag: Scroller/* VScrollbar */.eP, class: 'as-dynamic-table-vb' }, { tag: Scroller/* HScrollbar */.MP, class: 'as-dynamic-table-hb' }, ] }); }; DynamicTable.prototype.extendStyle = {};//init value DynamicTable.prototype.extendStyle.tableLayout = 'fixed'; DynamicTable.prototype.extendStyle.width = 'auto'; DynamicTable.prototype.extendStyle.minWidth = 'unset'; DynamicTable.prototype.styleHandlers = {}; DynamicTable.prototype.styleHandlers.minWidth = { set: function (value) { var parsedValue = (0,attribute.parseMeasureValue)(value); if (!parsedValue) value = 'unset'; else if (parsedValue.value === 'match_parent') value = '100%'; else if (parsedValue.unit === 'px') value = parsedValue.value + parsedValue.unit; if (parsedValue && parsedValue.unit) { this.style.minWidth = value; this.addClass('as-has-min-width'); } else { this.removeClass('as-has-min-width'); } return value; } }; DynamicTable.prototype.styleHandlers.width = { set: function (value) { var parsedValue = (0,attribute.parseMeasureValue)(value); if (!parsedValue) value = 'auto'; else if (parsedValue.value === 'match_parent') value = '100%'; else if (parsedValue.unit === 'px') value = parsedValue.value + parsedValue.unit; if (parsedValue && parsedValue.unit) { this.style.width = value; this.removeClass('as-width-auto'); } else { this.addClass('as-width-auto'); } return value; } }; DynamicTable.prototype.styleHandlers.height = { set: function (value) {//todo: handle expression var parsedValue; if (value && value.indexOf && value.indexOf('--') > 0) { this.style.height = value; } else { parsedValue = (0,attribute.computeMeasureExpression)(value, { elt: this, parentSize: 0 }); if (!parsedValue) value = 'auto'; else if (parsedValue.value === 'match_parent') value = '100%'; else if (parsedValue.unit === 'px') value = parsedValue.value + parsedValue.unit; if (parsedValue && parsedValue.unit) { this.style.height = value; this.removeClass('as-auto-height'); } else { this.addClass('as-auto-height'); } } return value; } }; // // DynamicTable.prototype.width = function (value) { // this.extendStyle.minWidth = value; // }; // DynamicTable.prototype.styleHandlers.tableLayout = { /*** * @this {DynamicTable} * @param value */ set: function (value) { if (value === 'fixed') { this.addClass('as-table-layout-fixed'); } else { this.removeClass('as-table-layout-fixed'); value = 'auto'; } return value; } }; DynamicTable.prototype.addStyle = function (arg0, arg1) { if ((typeof arg0 === "string") && (arg0 in this.extendStyle)) { if (arg0.indexOf('-') > 0) arg0 = (0,stringFormat.kebabCaseToCamelCase)(arg0);//not -- this.extendStyle[arg0] = arg1; } else { AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } return this; }; DynamicTable.prototype.requestUpdateSize = function () { this.layoutCtrl.onResize(); }; DynamicTable.prototype.revokeResource = function () { this.$attachhook.cancelWaiting(); delete pendingTables[this._pendingId]; this.css.stop(); this.css = null; this.revokeResource = noop/* default */.Z; return; var row, cell, keys, key; var rows = this._adapterData && this._adapterData.data && this._adapterData.data.body && this._adapterData.data.body.rows; // if (rows) { // while (rows.length) { // row = rows.pop(); // while (row.cells.length) { // cell = row.cells.pop(); // keys = Object.keys(cell); // while (keys.length){ // key = keys.pop(); // cell[key] = null; // delete cell[key]; // } // } // } // } // revokeResource(rows); if (this.table) { this.table.revokeResource(); this.table = null; } if (this._adapter) { this._adapter.revoke(); this._adapter = null; } this.attachSearchInput(null); this.filterInputs = []; this.waitingCtl = null; this.layoutCtrl = null; this.pointerCtrl = null; this.colSizeCtrl = null; this.rowDragCtrl = null; manager.removeTrash(); ResizeSystem/* default.removeTrash */.Z.removeTrash(); }; DynamicTable.prototype.getSavedState = function () { var res = {}; res.scrollTop = this.$vscrollbar.innerOffset; res.scrollLeft = this.$hscrollbar.innerOffset; return res; }; DynamicTable.prototype.setSavedState = function (state) { this.readySync.then(() => { state = state || {}; this.$vscrollbar.innerOffset = state.scrollTop || 0; this.$hscrollbar.innerOffset = state.scrollLeft || 0; this.$hscrollbar.emit('scroll'); this.$vscrollbar.emit('scroll'); }); }; DynamicTable.prototype.addRowBefore = function (rowData, bf) { return this.table.body.addRowBefore(rowData, bf); }; DynamicTable.prototype.addRowAfter = function (rowData, at) { return this.table.body.addRowAfter(rowData, at); }; DynamicTable.prototype.replaceRow = function (rowData, rp) { var row = this.rowOf(rp); if (row) { row.updateData(rowData); } ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); }; DynamicTable.prototype.addRow = function (rowData, idx) { return this.table.body.addRow(rowData, idx); }; DynamicTable.prototype.addRows = function (rowsData, idx) { return this.table.body.addRows(rowsData, idx); }; DynamicTable.prototype.removeRow = function (row) { return this.table.body.removeRow(row); }; DynamicTable.prototype.rowAt = function (idx) { return this.table.body.rowAt(idx); }; DynamicTable.prototype.rowOf = function (o) { return this.table.body.rowOf(o); }; DynamicTable.prototype.rowIndexOf = function (o) { return this.table.body.rowIndexOf(o); }; DynamicTable.prototype.getRows = function () { return this.table.body.rows.slice(); }; DynamicTable.prototype.requireRows = function (start, end) { return this.table.body.requireRows(start, end); }; DynamicTable.prototype.clearRows = function () { return this.table.body.clearRows(); }; DynamicTable.prototype.viewIntoRow = function (row) { var counter = 300; var wait = () => { counter--; if (this.isDescendantOf(document.body)) { if (this.hasClass('as-adapt-infinity-grow') || !this.hasClass('as-overflow-y')) { row = this.rowOf(row); if (row) { (0,utils.vScrollIntoView)(row.elt); } } else { this.table.body.viewIntoRow(row);//TODO: CHECK MORE } } else if (counter > 0) { setTimeout(wait, 30); } } setTimeout(wait, 130); }; DynamicTable.prototype.attachSearchInput = function (inputElt) { if (this.$searchInput) { this.$searchInput.off('stoptyping', this.eventHandler.searchModify); this.$searchInput.off('keyup', this.eventHandler.searchKeyUp); } this.$searchInput = inputElt; if (this.$searchInput) { if (this.$searchInput.$table) { this.$searchInput.off('stoptyping', this.$searchInput.$table.eventHandler.searchModify); this.$searchInput.off('keyup', this.$searchInput.$table.eventHandler.searchKeyUp); } this.$searchInput.$table = this; this.$searchInput.on('stoptyping', this.eventHandler.searchModify); this.$searchInput.on('keyup', this.eventHandler.searchKeyUp); } }; DynamicTable.prototype.filter = function (filter) { var query = {}; var queryText = (this.$searchInput && this.$searchInput.value) || ''; queryText = queryText.trim().replace(/\s\s+/g, ' '); var i; if (filter) { for (i in filter) { query.filter = filter; break; } } if (queryText && queryText.length > 0) query.text = queryText; for (i in query) { this.query(query); return; } this.query(null); }; DynamicTable.prototype.makeQuery = function () { var query = {}; var textQuery = this.$searchInput && this.$searchInput.value.trim().replace(/\s\s+/, ' '); if (textQuery && textQuery.length > 0) query.text = textQuery; var i; var filter = this.$filterInputs.reduce(function (ac, elt) { if (elt.exportFilter) { elt.exportFilter(ac); } else if (elt.name) { ac[elt.name] = elt.value; } return ac; }, {}); var sort = (0,ACore.$$)('th', this.table.header.elt).reduce((ac, cr) => { var key = cr.attr('data-sort-key'); var order = cr.attr('data-sort-order'); if (key && order && order !== 'none') { ac.push({ key: key, order: order }); } return ac; }, []); for (i in filter) { query.filter = filter; break; } if (sort.length > 0) { query.sort = sort; } for (i in query) { return query; } return null; }; DynamicTable.prototype.requestQuery = function () { var query = this.makeQuery(); this.query(query); }; DynamicTable.prototype.query = function (query) { this.table.body.query(query); }; DynamicTable.prototype.addFilter = function (inputElt) { if (inputElt.$dynamicTable) { inputElt.$dynamicTable.removeFilter(inputElt); } inputElt.$dynamicTable = this; inputElt.on('change', this.eventHandler.searchModify); this.$filterInputs.push(inputElt); }; DynamicTable.prototype.removeFilter = function (inputElt) { if (inputElt.$dynamicTable !== this) return; inputElt.$dynamicTable = null; inputElt.off('change', this.eventHandler.searchModify); var idx = this.$filterInputs.indexOf(inputElt); if (idx >= 0) this.$filterInputs.splice(idx, 1); }; DynamicTable.prototype.notifyRowChange = function (row) { var idx = this.table.body.rowIndexOf(row); if (idx >= 0) this.table.body.onRowSplice(idx) }; DynamicTable.prototype.notifyRowsChange = noop/* default */.Z; DynamicTable.property = {}; DynamicTable.property.adapter = { /*** * @this DynamicTable * @param data */ set: function (data) { if (!data) return this._adapterData = data; this._adapter = new dynamictable_DTDataAdapter(this, data); this.layoutCtrl.onAdapter(); this.table = new dynamictable_DTTable(this, this._adapterData.data); this.$space.clearChild().addChild(this.table.elt); this.$fixedYCtn.clearChild().addChild(this.table.fixedYElt); this.$fixedXCtn.clearChild().addChild(this.table.fixedXElt); this.$fixedXYCtn.clearChild().addChild(this.table.fixedXYElt); if (this.extendStyle) this.addStyle(this.extendStyle); setTimeout(() => { this.requestUpdateSize(); }, 10); setTimeout(() => { this.requestUpdateSize(); }, 30); setTimeout(() => { this.requestUpdateSize(); }, 100); }, get: function () { return this._adapterData; } }; DynamicTable.property.filterInputs = { set: function (inputs) { inputs = inputs || []; this.$filterInputs.slice().forEach(input => { this.removeFilter(input); }); inputs.forEach(input => this.addFilter(input)); }, get: function () { return this.$filterInputs; } }; DynamicTable.property.hiddenColumns = { set: function (value) { value = value || []; this._hiddenColumns.forEach(function (idxV) { this.removeClass('as-hide-col-' + idxV); }.bind(this)); this._hiddenColumns = value; this._hiddenColumns.forEach(function (idxV) { this.addClass('as-hide-col-' + idxV); }.bind(this)); var c = this.parentElement; while (c) { if (c.hasClass && c.hasClass('absol-table-vscroller') && c.update) { c.update(); break; } c = c.parentElement; } ResizeSystem/* default.update */.Z.update(); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); }, get: function () { return this._hiddenColumns; } } /*** * @memberOf {DynamicTable#} * @type {{}} */ DynamicTable.eventHandler = {}; /*** * @this DynamicTable# * @param event */ DynamicTable.eventHandler.searchModify = function (event) { this.requestQuery(); }; /*** * @this DynamicTable# * @param event */ DynamicTable.eventHandler.searchKeyUp = function (event) { setTimeout(function () { var query = this.$searchInput.value; query = query.trim().replace(/\s+/, ' '); if (query.length) this.table.body.startSearchingIfNeed(); }.bind(this), 30); }; DynamicTable.prototype.getColWidth = function () { return this.colSizeCtrl.getColWidth(); }; DynamicTable.prototype.setColWidth = function (colId, value) { return this.colSizeCtrl.setColWidth(colId, value); }; ACore/* default.install */.Z.install(DynamicTable); /* harmony default export */ const dynamictable_DynamicTable = (DynamicTable); /*** * * @param {DynamicTable} elt * @constructor */ function LayoutController(elt) { /*** * * @type {DynamicTable} */ this.elt = elt; this.maxRows = Math.ceil(Math.max((0,Dom/* getScreenSize */.tE)().height / 40, 1080 / 40)); this.offset = Vec2/* default.ZERO */.Z.ZERO; Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) this[key] = this[key].bind(this); }); this.elt.$hscrollbar.on('scroll', this.ev_hScrollbarScroll); this.elt.$vscrollbar.on('scroll', this.ev_vScrollbarScroll); this.elt.$viewport.on('scroll', this.ev_viewportScroll); this.elt.on('wheel', this.ev_wheel); this.scrollingDir = Vec2/* default.ZERO */.Z.ZERO; this.scrollingStartOffset = Vec2/* default.ZERO */.Z.ZERO; } /*** * * @param {WheelEvent} event */ LayoutController.prototype.ev_wheel = function (event) { var vScroller = (0,utils.findVScrollContainer)(event.target); if (vScroller && vScroller.hasClass && vScroller.hasClass('as-bscroller')) return; var isOverflowY = this.elt.hasClass('as-overflow-y'); var isOverflowX = this.elt.hasClass('as-overflow-x'); var dy = event.deltaY; var prevOffset; if (isOverflowY && (!event.shiftKey || !isOverflowX)) { prevOffset = this.elt.$vscrollbar.innerOffset; if (dy > 0) { this.elt.$vscrollbar.innerOffset = Math.max( Math.min(prevOffset + 100 / 40, this.elt.$vscrollbar.innerHeight - this.elt.$vscrollbar.outerHeight), 0); if (prevOffset !== this.elt.$vscrollbar.innerOffset) { event.preventDefault(); this.elt.$vscrollbar.emit('scroll'); } } else if (dy < 0) { this.elt.$vscrollbar.innerOffset = Math.max( Math.min(prevOffset - 100 / 40, this.elt.$vscrollbar.innerHeight - this.elt.$vscrollbar.outerHeight), 0); if (prevOffset !== this.elt.$vscrollbar.innerOffset) { event.preventDefault(); this.elt.$vscrollbar.emit('scroll'); } } } else if (isOverflowX && (event.shiftKey || !isOverflowY)) { prevOffset = this.elt.$hscrollbar.innerOffset; if (dy > 0) { this.elt.$hscrollbar.innerOffset = Math.max( Math.min(prevOffset + 100, this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth), 0); if (prevOffset !== this.elt.$hscrollbar.innerOffset) { event.preventDefault(); this.elt.$hscrollbar.emit('scroll'); } } else if (dy < 0) { this.elt.$hscrollbar.innerOffset = Math.max( Math.min(prevOffset - 100, this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth), 0); if (prevOffset !== this.elt.$hscrollbar.innerOffset) { event.preventDefault(); this.elt.$hscrollbar.emit('scroll'); } } } }; LayoutController.prototype.onAdapter = function () { var adapter = this.elt.adapter; if (this.elt.style.height === 'auto') { this.elt.removeStyle('height'); this.elt.addClass('as-adapt-infinity-grow'); } if (adapter.fixedCol > 0) { this.elt.addClass('as-has-fixed-col'); } else { this.elt.removeClass('as-has-fixed-col'); } if (adapter.rowsPerPage === Infinity) { this.elt.addClass('as-adapt-infinity-grow'); } if (!adapter.data.head || !adapter.data.head.rows || !adapter.data.head.rows[0] || !adapter.data.head.rows[0].cells || !adapter.data.head.rows[0].cells[0]) { this.elt.addClass('as-headless'); } else { this.elt.removeClass('as-headless'); } }; LayoutController.prototype.handleMinWidth = function () { var minWidth = this.elt.extendStyle.minWidth || this.elt.table.elt.getComputedStyleValue('min-width'); var mv = (0,attribute.parseMeasureValue)(minWidth); if (!mv) return; if (mv.unit !== 'px') return; if (!this.elt.table.elt.firstChild || !this.elt.table.elt.firstChild.firstChild) return; var bound = this.elt.table.elt.firstChild.firstChild.getBoundingClientRect(); if (bound.width >= mv.value) return; //copyElt var cells = this.elt.table.header.rows[0].cells; var freeCells = cells.filter(cell => { return !cell.data.style || !cell.data.style.width; }); if (freeCells.length === 0) return; var cellWidths = freeCells.map(cell => cell.copyElt.getBoundingClientRect().width); var sumWidth = cellWidths.reduce((ac, w) => ac + w, 0); var needGrowUp = mv.value - bound.width; freeCells.forEach((cell, i) => { var width = cellWidths[i]; var newWidth = width + width / sumWidth * needGrowUp; var paddingLeft = cell.copyElt.getComputedStyleValue('padding-left') || '0px'; var paddingRight = cell.copyElt.getComputedStyleValue('padding-right') || '0px'; paddingLeft = parseFloat(paddingLeft.replace('px', '')); paddingRight = parseFloat(paddingRight.replace('px', '')); cell.copyElt.addStyle('width', newWidth + 'px'); cell.copyElt.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px'); cell.elt.addClass('as-col-width-auto'); cell.copyElt.addClass('as-col-width-auto'); cell.elt.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px'); if (cell._copyElt1) { cell._copyElt1.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px'); cell._copyElt1.addClass('as-col-width-auto'); } if (cell._copyElt2) { cell._copyElt2.addClass('as-col-width-auto'); cell._copyElt2.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px'); } }); }; LayoutController.prototype.handleDisplay = function () { if (!this.elt.hasClass('as-width-match-parent')) { return; } var tableWidth = this.elt.table.elt.getBoundingClientRect().width; var viewportWidth = this.elt.$viewport.getBoundingClientRect().width; if (tableWidth < viewportWidth - 17 && !this.elt.hasClass('as-table-layout-fixed')) { this.elt.table.elt.addStyle('width', viewportWidth - 17 + 'px'); } if (!this.elt.hasClass('as-table-layout-fixed')) { this.elt.table.elt.addStyle('min-width', viewportWidth - 17 + 'px'); } }; LayoutController.prototype.onAttached = function () { ResizeSystem/* default.updateUp */.Z.updateUp(this.elt.parentElement); this.update(); if (this.elt.table) { this.handleDisplay(); this.handleMinWidth(); this.elt.table.updateCopyEltSize(); this.updateOverflowStatus(); this.elt.$vscrollbar.once('scroll', () => { // return; setTimeout(() => { if (this.elt.table.body.rows.length === 0) return; var tableId = this.elt.id; var rows = this.elt.table.header.rows; if (!rows || rows.length === 0) return; var changed = false; var colDict = {}; rows.forEach(row => { var cells = row.cells; if (!cells) return; cells.forEach(cell => { var colId = cell.data.id; var bound; if (cell.colspan > 1) return; if (!colId && !colDict[cell.idx]) {//local style bound = cell.copyElt.getBoundingClientRect(); if (bound.width > 0) { this.elt.css.setProperty(`#${this.elt.id} th[data-col-idx="${cell.idx}"]:not(colspan)`, 'width', bound.width + 'px') .commit(); } return; } if (!manager.hasColSize(tableId, colId)) { bound = cell.copyElt.getBoundingClientRect(); if (bound.width) { manager.setColWidth(tableId, colId, bound.width); changed = true; } } }); }) if (changed) manager.commit(); }, 100); }); } }; LayoutController.prototype.update = function () { var stWidth = this.elt.extendStyle.width; var psWidth = (0,attribute.parseMeasureValue)(this.elt.extendStyle.width); var stHeight = this.elt.extendStyle.height; var psHeight = (0,attribute.computeMeasureExpression)(stHeight, { elt: this, parentSize: (this.elt.parentElement ? this.elt.parentElement.getBoundingClientRect().height : 0) }); var cpStyle = getComputedStyle(this.elt); var psMaxHeight = (0,attribute.parseMeasureValue)(cpStyle.getPropertyValue('max-height')); var psMinWidth = (0,attribute.parseMeasureValue)(cpStyle.getPropertyValue('min-width')); var parentElt = this.elt.parentElement; var parentCpStyle; var parentBound; var screenSize; var singleView = (() => { var ctn = this.elt.parentElement && this.elt.parentElement.parentElement; if (!ctn) return false; if (!ctn.hasClass || !ctn.hasClass('absol-single-page-scroller-viewport')) return false; if (ctn.lastChild === ctn.firstChild && ctn.firstChild === this.elt) return singleView; })(); var singleViewBound; var getMaxBoundHeight = () => { var mxH = Infinity; if (this.elt.hasClass('as-adapt-infinity-grow')) return Infinity; if (!psHeight) { } else if (psHeight.unit === 'px') { mxH = psHeight.value; } else if (psHeight.unit === '%' && parentElt) { parentBound = parentBound || parentElt.getBoundingClientRect(); mxH = parentBound.height * psHeight.value / 100; } else if (psHeight.unit === 'vh') { screenSize = screenSize || (0,Dom/* getScreenSize */.tE)(); mxH = screenSize.height * psHeight.value / 100; } if (psMaxHeight && psMaxHeight.unit === 'px') { mxH = Math.min(mxH, psMaxHeight.value); } return mxH; } var getMinInnerWidth = () => { var mnWidth = 0; var paddingLeft, paddingRight; if (!psWidth) { } else if (psWidth.unit === 'px') { mnWidth = psWidth.value; } else if (psWidth.unit === '%' && parentElt) { parentBound = parentBound || parentElt.getBoundingClientRect(); parentCpStyle = parentCpStyle || getComputedStyle(parentElt); paddingLeft = parseFloat((parentCpStyle.getPropertyValue('padding-left') || '0px').replace('px', '')); paddingRight = parseFloat((parentCpStyle.getPropertyValue('padding-right') || '0px').replace('px', '')); mnWidth = (parentBound.width - paddingLeft - paddingRight) * psWidth.value / 100; } else if (psWidth.unit === 'vw') { screenSize = screenSize || (0,Dom/* getScreenSize */.tE)(); mnWidth = screenSize.width * psWidth.value / 100; } if (psMinWidth && psMinWidth.unit === 'px') { mnWidth = Math.max(mnWidth, psMinWidth.value); } return mnWidth; }; var bound, tbBound; var maxHeight; if (!this.elt.table) return; if (stWidth === 'auto') {//table max-width is 100% of parentWidth this.elt.table.elt.addStyle('min-width', Math.max(getMinInnerWidth() - 17, 0) + 'px'); } else if (psWidth.unit === 'px' || psWidth.unit === 'vw' || psWidth.unit === '%') { this.elt.table.elt.addStyle('min-width', getMinInnerWidth() - 17 + 'px'); bound = this.elt.getBoundingClientRect(); if (bound.width > 0 && !this.elt.table.body.offset) {//if overflowY this.elt.table.body.offset >0 tbBound = this.elt.table.elt.getBoundingClientRect(); // if (singleView) { // // singleViewBound = // } // if (this.elt.parentElement && this.elt.parentElement.) maxHeight = getMaxBoundHeight(); if (!maxHeight || maxHeight.value >= tbBound) { this.elt.table.elt.addStyle('min-width', getMinInnerWidth() + 'px'); //isOverflowY = false; } else { //isOverflowY = true; } } } }; LayoutController.prototype.onResize = function () { this.update(); this.updateOverflowStatus(); this.updateScrollbarStatus(); if (this.elt.table) { this.elt.table.updateCopyEltSize(); this.updateLines(); } }; LayoutController.prototype.updateOverflowStatus = function () { var contentBound = this.elt.table ? this.elt.table.elt.getBoundingClientRect() : { width: 0, height: 0 }; var bound = this.elt.getBoundingClientRect(); var cpStyle = getComputedStyle(this.elt); var psMaxHeight = (0,attribute.parseMeasureValue)(cpStyle.getPropertyValue('max-height')); if (bound.width < contentBound.width) { this.elt.addClass('as-overflow-x'); } else { this.elt.removeClass('as-overflow-x'); this.elt.$space.removeStyle('left'); } if (this.elt.hasClass('as-adapt-infinity-grow')) { this.elt.removeClass('as-overflow-y'); this.elt.$space.removeStyle('top'); } else if (bound.height < contentBound.height || (psMaxHeight && psMaxHeight.unit === 'px' && bound.width < contentBound.width + 17 && psMaxHeight.value < contentBound.height + 18)) { this.elt.addClass('as-overflow-y'); } else { this.elt.removeClass('as-overflow-y'); this.elt.$space.removeStyle('top'); } this.elt.addStyle('--dt-content-height', contentBound.height + 'px'); this.elt.addStyle('--dt-content-width', contentBound.width + 'px'); }; LayoutController.prototype.updateScrollbarStatus = function () { //todo: not overflow y if (!this.elt.table) return; var childNodes = this.elt.table.body.elt.childNodes; var vBound = this.elt.$viewport.getBoundingClientRect(); var headBound = this.elt.table.header.elt.getBoundingClientRect(); var availableHeight = vBound.height - headBound.height; var rBound; var outer = 0; var sHeight = 1;//border of last row for (var i = 0; i < childNodes.length; ++i) { rBound = childNodes[childNodes.length - 1 - i].getBoundingClientRect(); sHeight += rBound.height; if (sHeight >= availableHeight) { outer = i + (1 - (sHeight - availableHeight) / rBound.height); break; } } this.elt.$vscrollbar.outerHeight = outer; this.elt.$vscrollbar.innerHeight = this.elt.table.body.curentMode.viewedRows.length; this.elt.$vscrollbar.innerOffset = this.elt.table.body.curentMode.offset; var viewportBound = this.elt.$viewport.getBoundingClientRect(); var tableBound = this.elt.table.elt.getBoundingClientRect(); this.elt.$hscrollbar.innerWidth = tableBound.width; this.elt.$hscrollbar.outerWidth = viewportBound.width; if (this.elt.$hscrollbar.innerOffset + this.elt.$hscrollbar.outerWidth > this.elt.$hscrollbar.innerWidth) { this.elt.$hscrollbar.innerOffset = Math.max(0, this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth); this.elt.$hscrollbar.emit('scroll'); } if (tableBound.width < viewportBound.width) { this.elt.$vscrollbar.addStyle('right', viewportBound.width - tableBound.width + 'px'); } else { this.elt.$vscrollbar.removeStyle('right'); } // this.$vscrollbar }; LayoutController.prototype.updateLines = function () { var fixXBound, headerBound; if (this.elt.hasClass('as-overflow-x') && this.elt.hasClass('as-has-fixed-col')) { fixXBound = this.elt.$fixedXCtn.getBoundingClientRect(); this.elt.addStyle('--dt-fixed-x-width', fixXBound.width + 'px'); } if (this.elt.hasClass('as-overflow-y')) { headerBound = this.elt.$fixedYCtn.firstChild.getBoundingClientRect(); this.elt.addStyle('--dt-header-height', headerBound.height + 'px'); } }; LayoutController.prototype.ev_hScrollbarScroll = function (event) { this.elt.$space.addStyle('left', -this.elt.$hscrollbar.innerOffset + 'px'); this.elt.$fixedYCtn.addStyle('left', -this.elt.$hscrollbar.innerOffset + 'px'); this.elt.$viewport.emit('scroll'); }; LayoutController.prototype.ev_vScrollbarScroll = function () { if (!this.elt.table || !this.elt.table.body) return; this.elt.table.body.offset = this.elt.$vscrollbar.innerOffset; this.elt.$viewport.emit('scroll'); }; LayoutController.prototype.ev_dragStart = function (event) { var isOverflowY = this.elt.hasClass('as-overflow-y'); var isOverflowX = this.elt.hasClass('as-overflow-x'); var dir = event.currentPoint.sub(event.startingPoint); if (isOverflowY && Math.abs(dir.y) > Math.abs(dir.x)) { this.scrollingDir = new Vec2/* default */.Z(0, 1); event.preventDefault(); } else if (isOverflowX && Math.abs(dir.y) < Math.abs(dir.x)) { this.scrollingDir = new Vec2/* default */.Z(1, 0); event.preventDefault(); } else { this.scrollingDir = Vec2/* default.ZERO */.Z.ZERO; } this.scrollingStartOffset = new Vec2/* default */.Z(this.elt.$hscrollbar.innerOffset, this.elt.$vscrollbar.innerOffset); }; LayoutController.prototype.ev_drag = function (event) { var changed = false; var dir = event.currentPoint.sub(event.startingPoint); var newOffset = new Vec2/* default */.Z(0, 0); if (this.scrollingDir.x !== 0) { newOffset.x = Math.max(0, Math.min(this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth, this.scrollingStartOffset.x - dir.x)); if (this.elt.$hscrollbar.innerOffset !== newOffset.x) { changed = true; this.elt.$hscrollbar.innerOffset = newOffset.x; this.elt.$hscrollbar.emit('scroll'); } } else if (this.scrollingDir.y !== 0) { newOffset.y = Math.max(0, Math.min(this.elt.$vscrollbar.innerHeight - this.elt.$vscrollbar.outerHeight, this.scrollingStartOffset.y - dir.y / 40)); if (this.elt.$vscrollbar.innerOffset !== newOffset.y) { changed = true; this.elt.$vscrollbar.innerOffset = newOffset.y; this.elt.$vscrollbar.emit('scroll'); } } if (changed) event.preventDefault(); }; LayoutController.prototype.ev_dragEnd = function (event) { }; LayoutController.prototype.ev_viewportScroll = function (event) { if (this.elt.$viewport.scrollLeft !== 0) { this.elt.$hscrollbar.innerOffset += this.elt.$viewport.scrollLeft; this.elt.$viewport.scrollLeft = 0; this.elt.$hscrollbar.emit('scroll'); } if (this.elt.$viewport.scrollTop !== 0) { this.elt.$vscrollbar.innerOffset += this.elt.$viewport.scrollTop / 30;//todo: better solution this.elt.$viewport.scrollTop = 0; this.elt.$vscrollbar.emit('scroll'); } }; /*** * * @param {DynamicTable} elt * @constructor */ function PointerController(elt) { Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) this[key] = this[key].bind(this); }); /*** * * @type {DynamicTable} */ this.elt = elt; this.elt.$viewport.hangon = 5; this.elt.$viewport.on('draginit', this.ev_dragInit); this.elt.$viewport.on('dragstart', this.ev_dragStart); this.elt.$viewport.on('drag', this.ev_drag); this.elt.$viewport.on('dragend', this.ev_dragEnd); this.destHandler = null; } PointerController.prototype.isInDragZone = function (elt) { while (elt && elt !== this.elt) { if (elt.classList.contains('as-drag-zone')) return true; elt = elt.parentElement; } return false; }; PointerController.prototype.isInInput = function (elt) { while (elt) { if (elt.tagName === 'INPUT') return true; if (elt.tagName === 'TD') return false; var clazz = elt.getAttribute('class') || ''; if (clazz.indexOf('input') >= 0) return true; if (clazz.indexOf('input') >= 0) return true; if (clazz.indexOf('menu') >= 0) return true; elt = elt.parentElement; } return false; }; PointerController.prototype.isInColResizer = function (elt) { return !!(elt.hasClass && elt.hasClass('as-dt-header-cell-resizer')); }; PointerController.prototype.ev_dragInit = function (event) { if (this.isInDragZone(event.target)) { event.preventDefault(); this.destHandler = this.elt.rowDragCtrl; } if (this.isInColResizer(event.target)) { event.preventDefault(); this.destHandler = this.elt.colSizeCtrl; } else if (this.isInInput(event.target)) { event.cancel(); return; } else if (event.isTouch) { // event.preventDefault();//todo: check } } PointerController.prototype.ev_dragStart = function (event) { var dir = event.currentPoint.sub(event.startingPoint).normalized(); var ox = new Vec2/* default */.Z(1, 0); var oy = new Vec2/* default */.Z(0, 1); if (this.destHandler) { event.preventDefault && event.preventDefault(); this.destHandler.ev_dragStart(event); } else if (event.isTouch && (Math.abs(dir.dot(ox)) < 0.3 || Math.abs(dir.dot(oy)) < 0.3)) { event.preventDefault && event.preventDefault(); this.destHandler = this.elt.layoutCtrl; this.destHandler.ev_dragStart(event); } else { this.destHandler = null; } }; PointerController.prototype.ev_drag = function (event) { if (this.destHandler) { event.preventDefault && event.preventDefault(); this.destHandler.ev_drag(event); } } PointerController.prototype.ev_dragEnd = function (event) { if (this.destHandler) { event.preventDefault && event.preventDefault(); this.destHandler.ev_dragEnd(event); } this.destHandler = null; }; PointerController.prototype.ev_dragDeinit = function (event) { }; /*** * * @param {DynamicTable} elt * @constructor */ function ColSizeController(elt) { this.elt = elt; this.colId = null;//number: col index, string: ident this.startingBound = null; this.cellElt = null; this.cell = null; } ColSizeController.prototype.onAttached = function () { }; ColSizeController.prototype.onAdapter = function () { }; ColSizeController.prototype.ev_dragStart = function (event) { if (!this.elt.isDescendantOf(document.body)) return; this.dragOK = true; this.colId = event.target.parentElement.attr('data-col-id') || parseInt(event.target.parentElement.attr('data-col-idx')); this.cell = this.elt.table.header.rows[0].cells.find(cell => cell.data.id === this.colId || cell.idx === this.colId); if (!this.cell) { this.dragOK = false; return; } this.cellElt = this.cell.copyElt; this.startingBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.cellElt.getBoundingClientRect()); }; ColSizeController.prototype.ev_drag = function (event) { if (!this.dragOK) return; if (!this.elt.isDescendantOf(document.body)) return; var newWidth = this.startingBound.width + event.currentPoint.sub(event.startingPoint).x; this.cellElt.addStyle('width', newWidth + 'px'); this.elt.table.updateCopyEltSize(); //todo: split code var viewportBound = this.elt.$viewport.getBoundingClientRect(); var tableBound = this.elt.table.elt.getBoundingClientRect(); if (tableBound.width < viewportBound.width) { this.elt.$vscrollbar.addStyle('right', viewportBound.width - tableBound.width + 'px'); } else { this.elt.$vscrollbar.removeStyle('right'); } this.elt.addStyle('--dt-content-height', tableBound.height + 'px'); this.elt.addStyle('--dt-content-width', tableBound.width + 'px'); }; ColSizeController.prototype.ev_dragEnd = function (event) { if (!this.dragOK) return; if (!this.cell) return; if (!this.elt.isDescendantOf(document.body)) return; if (typeof this.colId === "string") { if (this.cell.colspan === 1) manager.commitColWidth(this.elt, this.elt.id, this.cell.data.id, this.cellElt.getBoundingClientRect().width, true); this.notifyColResize(event); } else { if (this.cell.colspan === 1) this.elt.css.setProperty(`#${this.elt.id} th[data-col-idx="${this.colId}"]:not([colspan])`, 'width', this.cellElt.getBoundingClientRect().width + 'px').commit(); } this.elt.requestUpdateSize(); setTimeout(() => { if (!this.cellElt.isDescendantOf(document.body)) return; this.cellElt.removeStyle('width'); this.elt.requestUpdateSize(); }, 150); }; ColSizeController.prototype.getColWidth = function () { var res = {}; this.elt.table.header.rows[0].cells.forEach(cell => { var id = cell.data.id; if (typeof id === "string" || typeof id === "number") id = '' + id; if (!id) return; Object.defineProperty(res, id, { enumerable: true, get: () => { return cell.copyElt.getBoundingClientRect().width; } }) }); return res; }; ColSizeController.prototype.setColWidth = function (colId, value) { var cell = this.elt.table.header.rows[0].cells.find(cell => cell.data.id === colId || cell.idx === colId); cell.copyElt.removeStyle('width'); if (typeof colId === "string") { if (cell.colspan !== 1) manager.commitColWidth(this.elt, this.elt.id, colId, value, true); } else { this.elt.css.setProperty(`#${this.elt.id} th[data-col-idx="${colId}"]:not([colspan])`, 'width', value + 'px').commit(); } this.elt.requestUpdateSize(); }; ColSizeController.prototype.notifyColResize = function (originalEvent) { var event = { type: 'colresize', target: this, colId: this.colId, width: this.cellElt.getBoundingClientRect().width, originalEvent: originalEvent.originalEvent || event }; var colWidth; Object.defineProperty(event, 'colWidth', { get: () => { if (colWidth) return colWidth; colWidth = this.getColWidth(); return colWidth; } }); this.elt.emit('colresize', event, this); }; /** * new version * @param {DynamicTable} elt * @constructor */ function RowDragController(elt) { this.elt = elt; this._isDragging = false; this.prevDragedRow = null; this.ev_clickOutDraggedRow = this.ev_clickOutDraggedRow.bind(this); } RowDragController.prototype._findRow = function (cElt) { while (cElt && cElt !== this.elt) { if (cElt.dtBodyRow) { return cElt.dtBodyRow; } cElt = cElt.parentElement; } return null; } RowDragController.prototype._getZIndex = function () { var e = this.elt.$fixedXYCtn; return (0,utils.findMaxZIndex)(e); }; RowDragController.prototype._updateClass = function () { this.row.body.rows.forEach((row, i) => { if (!row._elt) return; if (this.newIdx < this.rowIdx) { if (i < this.newIdx || i >= this.rowIdx) { row._elt.addStyle('transform', `translate(0, 0)`); } else if (i < this.rowIdx) { row._elt.addStyle('transform', `translate(0, ${this.rowRect.height}px)`); } } else if (this.newIdx > this.rowIdx) { if (i <= this.rowIdx || i > this.newIdx) { row._elt.addStyle('transform', `translate(0, 0)`); row._elt._transformY = this.rowRect.height; } else if (i <= this.newIdx) { row._elt.addStyle('transform', `translate(0, ${-this.rowRect.height}px)`); row._elt._transformY = -this.rowRect.height; } } else { row._elt.addStyle('transform', `translate(0, 0)`); row._elt._transformY = 0; } }) }; RowDragController.prototype._computeRowBound = function () { this.firstBoundIdx = this.elt.rowIndexOf(this.row.body.elt.firstChild); this.bounds = Array.prototype.map.call(this.row.body.elt.childNodes, (elt, i) => { var rect = Rectangle/* default.fromClientRect */.Z.fromClientRect(elt.getBoundingClientRect()); rect.y -= elt._transformY || 0; return rect; }); }; RowDragController.prototype._computeNewIdx = function () { var firstBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.row.body.elt.firstChild.getBoundingClientRect()); var delta = firstBound.A().sub(this.bounds[0].A()); var cBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.ctn.getBoundingClientRect()); var y0 = this.bounds[0].y + delta.y; var nearest = Infinity; this.newIdx = this.firstBoundIdx; var cur; var S = []; S['-1'] = 0; var i, y; for (i = 0; i < this.bounds.length; ++i) { S.push(S[i - 1] + this.bounds[i].height); } for (i = 0; i < this.bounds.length; ++i) { cur = this.firstBoundIdx + i; if (cur <= this.rowIdx) { y = y0 + S[i - 1]; } else { y = y0 + S[i] - cBound.height; } if (nearest > Math.abs(cBound.y - y) + 0.1 && this.row.body.rows[cur].draggable) { nearest = Math.abs(cBound.y - y); this.newIdx = cur; } } }; RowDragController.prototype.ev_dragStart = function (event) { if (this.elt.table.body.curentMode.name !== 'normal') return; if (this.prevDragRow) { this.prevDragRow.elt.removeClass('as-dragged'); this.prevDragRow = null; } this.elt.addClass('as-row-dragging'); this.row = this._findRow(event.target); this.body = this.row.body; this.rowIdx = this.elt.rowIndexOf(this.row); this.newIdx = this.rowIdx; this.clonedTable = this._cloneTableRow(this.row); this.ctn = (0,ACore._)({ class: 'as-dt-body-row-cloned-ctn', style: { zIndex: this._getZIndex() + 20, cursor: 'move', opacity: 0.9 }, child: (0,ACore.$)(this._cloneTableRow(this.row)).removeStyle('transform') }).addTo(document.body); this.row.elt.addClass('as-dragging'); this.rowRect = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.row.elt.getBoundingClientRect()); this.elt.addStyle('--dt-dragging-row-height', this.rowRect.height); this.viewportRect = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.elt.$viewport.getBoundingClientRect()); this.headerRect = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.elt.$fixedYCtn.getBoundingClientRect()); this.pointeroffset = event.startingPoint.sub(this.rowRect.A()); this.ctn.addStyle({ top: this.rowRect.y + 'px', left: this.rowRect.x + 'px' }); this._computeRowBound(); this._computeNewIdx(); this._updateClass(); this._isDragging = true; }; RowDragController.prototype.ev_rowRenderChange = function () { if (!this._isDragging) return; this._computeRowBound(); this._computeNewIdx(); this._computeNewIdx(); this._updateClass(); }; /** * * @param {DTBodyRow}row * @private */ RowDragController.prototype._cloneTableRow = function (row) { var tableElt = (0,ACore.$)(row.body.table.elt.cloneNode(false)) .addStyle({ tableLayout: 'fixed', width: row.body.table.elt.getBoundingClientRect().width + 'px' }); var tBodyElt = (0,ACore.$)(row.body.elt.cloneNode(false)); tableElt.addChild(tBodyElt); var rowElt = (0,ACore.$)(this.row.elt.cloneNode(false)).addStyle({ height: this.row.elt.getBoundingClientRect().height + 'px', backgroundColor: '#FFF9C4'//this.row.elt.getComputedStyleValue('background-color') }); tBodyElt.addChild(rowElt); this.row.cells.forEach(cell => { var width = cell.elt.getBoundingClientRect().width; (0,ACore.$)(cell.elt.cloneNode(true)).addStyle({ width: width + 'px' }).addTo(rowElt); }); return tableElt; }; RowDragController.prototype.ev_drag = function (event) { var newY = event.currentPoint.sub(this.pointeroffset).y; this.ctn.addStyle('top', newY + 'px'); clearTimeout(this._dragOutTO); var ctnBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.ctn.getBoundingClientRect()); var onDragOutPositive = () => { var dy = ctnBound.D().y - this.viewportRect.D().y; dy /= 1000 / 60 / 4 * this.rowRect.height; dy = Math.min(dy, this.elt.$vscrollbar.innerHeight - this.elt.$vscrollbar.outerHeight - this.elt.$vscrollbar.innerOffset); if (dy > 0.5) {//dy may be very small this.elt.$vscrollbar.innerOffset += dy; this.elt.$vscrollbar.emit('scroll'); } this._computeNewIdx(); this._updateClass(); clearTimeout(this._dragOutTO); this._dragOutTO = setTimeout(onDragOutPositive, 33); }; var onDragOutNegative = () => { var dy = ctnBound.y - this.headerRect.D().y; dy /= 1000 / 60 / 4 * this.rowRect.height; dy = Math.max(dy, -this.elt.$vscrollbar.innerOffset); if (dy < -0.5) {//dy may be very small this.elt.$vscrollbar.innerOffset += dy; this.elt.$vscrollbar.emit('scroll'); } this._computeNewIdx(); this._updateClass(); clearTimeout(this._dragOutTO); this._dragOutTO = setTimeout(onDragOutNegative, 33); }; if (this.viewportRect.D().y < ctnBound.D().y) { this._dragOutTO = setTimeout(onDragOutPositive, 1000 / 60); } else if (this.headerRect.D().y > ctnBound.y) { this._dragOutTO = setTimeout(onDragOutNegative, 100 / 60); } else { this._computeNewIdx(); this._updateClass(); } }; RowDragController.prototype.ev_dragEnd = function (event) { this.elt.addClass('as-row-dragging'); this.elt.removeClass('as-row-dragging'); this.elt.removeStyle('--dragging-row-height'); this.row.elt.removeClass('as-dragging'); this._isDragging = false; clearTimeout(this._dragOutTO); this.ctn.remove(); this.row.body.rows.forEach(row => { if (row._elt) { row._elt.removeStyle('transform'); row._elt._transformY = 0; } }); if (this.newIdx !== this.rowIdx) { this.row.body.moveRowAt(this.rowIdx, this.newIdx); var eventData = { type: 'orderchange', target: this.row, from: this.rowIdx, to: this.newIdx, originalEvent: event, row: this.row, data: this.row.data } if (this.row.data.on && this.row.data.on.orderchange) { this.row.data.on.orderchange.call(this.row, eventData, this.row) } if (this.prevDragRow) { this.prevDragRow.elt.removeClass('as-dragged'); } this.prevDragRow = this.row; this.prevDragRow.elt.addClass('as-dragged'); this.elt.emit('orderchange', eventData, this.body.table.wrapper); setTimeout(() => { document.addEventListener('click', this.ev_clickOutDraggedRow); }, 400); } }; RowDragController.prototype.ev_clickOutDraggedRow = function (event) { var finished = false; if (!this.prevDragRow) { finished = true; } else if (event.target && AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(event.target, this.prevDragRow.elt)) { finished = false; } else if (event.target && event.target.classList && (event.target.classList.contains('absol-scrollbar-button') || event.target.classList.contains('absol-scrollbar'))) { finished = false; } else { finished = true; } if (finished) { if (this.prevDragRow) { this.prevDragRow.elt.removeClass('as-dragged'); this.prevDragRow = null; } document.removeEventListener('click', this.ev_clickOutDraggedRow); } }; function VirtualPageSelector(elt) { this.elt = elt; } VirtualPageSelector.prototype.getSelectedPage = function () { return this.elt.$vscrollbar.innerOffset / 25; }; VirtualPageSelector.prototype.selectPage = function (value) { this.elt.$vscrollbar.innerOffset = value * 25; this.elt.$vscrollbar.emit('scroll'); }; // EXTERNAL MODULE: ./node_modules/absol-acomp/css/objectmergetool.css var objectmergetool = __webpack_require__(4112); // EXTERNAL MODULE: ./node_modules/absol/src/JSMaker/generator.js var generator = __webpack_require__(2914); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/dialog/OMTSelectOptionsDialog.js /*** * @extends Fragment * @param {OMTBaseType} node * @constructor */ function OMTSelectOptionsDialog(node) { Fragment/* default.call */.Z.call(this); this.node = node; this.calc(); this.getView(); this.start(); } OOP/* default.mixClass */.ZP.mixClass(OMTSelectOptionsDialog, Fragment/* default */.Z); OMTSelectOptionsDialog.prototype.calc = function () { this.options = this.node.getSelectOptions(); this.curHash = this.node.getHash(); this.selectedHash = this.curHash; this.selectedOption = null; this.ident = (0,stringGenerate.randomIdent)(5); }; OMTSelectOptionsDialog.prototype.onStart = function () { this.$modal.addTo(document.body); }; OMTSelectOptionsDialog.prototype.onStop = function () { this.$modal.remove(); }; OMTSelectOptionsDialog.prototype.assignResult = function () { if (this.curHash !== this.selectedHash) { this.node.assign(this.selectedOption); this.node.updateRaw(); this.node.notifyChange(); } }; OMTSelectOptionsDialog.prototype._makeOptionRow = function (opt, i, dict) { var descriptor = Object.assign({}, this.node.descriptor); if (i < 0) { descriptor.desc = '(current-mixed)'; } var clazz = this.node.constructor; var node = new clazz(this.node.tool, this.node.parent, descriptor); node.assign(opt); var nodeHash = node.getHash(); if (dict[nodeHash]) return null; dict[nodeHash] = node; var self = this; var radio = (0,ACore._)({ tag: RadioButton/* default.tag */.Z.tag, style: { marginRight: '10px' }, props: { name: this.ident, checked: nodeHash === this.curHash }, on: { change: function () { if (radio.checked) { self.selectedHash = nodeHash; self.selectedOption = opt; } } } }); return (0,ACore._)({ class: 'as-omt-option-row', child: [ radio, node.elt ] }); }; OMTSelectOptionsDialog.prototype.createView = function () { var self = this; this.$view = (0,ACore._)({ tag: MessageDialog/* default.tag */.Z.tag, class: 'as-omt-dialog', props: { dialogTitle: {mlKey:'txt_option'}, dialogActions: [ { text: {mlKey:'txt_ok'}, name: 'ok' }, { text: {mlKey:'txt_cancel'}, name: 'cancel' } ] }, on: { action: function (event) { self.stop() var action = event.action; if (action.name === 'cancel') return; if (action.name === 'ok') { self.assignResult(); } } } }); var dict = {}; var rows = this.options.map((opt, i) => this._makeOptionRow(opt, i, dict)).filter(x => !!x); if (!dict[this.curHash]) { rows.unshift(this._makeOptionRow(this.node.export(), -1, dict)); } this.$view.addChild(rows); this.$modal = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, style:{ zIndex: 1000000, }, child: this.$view }); }; /* harmony default export */ const dialog_OMTSelectOptionsDialog = (OMTSelectOptionsDialog); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTBaseType.js /** * * @constructor */ function OMTBaseType(tool, parent, descriptor) { this.tool = tool; this.parent = parent; this.level = parent ? parent.level + 1 : 0; this.descriptor = descriptor; this.render(); this.elt.omtNode = this; } OMTBaseType.prototype.type = 'base'; OMTBaseType.prototype.commands = [ { name: 'select_other', icon: 'span.mdi.mdi-menu-down', title: 'Select' } ]; OMTBaseType.prototype.render = function () { var self = this; var displayName = 'ROOT'; if (this.descriptor.displayName !== undefined) displayName = this.descriptor.displayName + ''; else if (this.descriptor.name !== undefined) displayName = this.descriptor.name + ''; if (this.descriptor.desc) displayName += this.descriptor.desc; this.elt = (0,ACore._)({ class: ['as-omt-field', 'as-type-' + this.type], style: { '--level': this.level }, child: [ { class: 'as-omt-field-header', child: [ { class: 'as-omt-field-name', child: { text: displayName } } ] }, { class: 'as-omt-field-body' }, { class: 'as-omt-field-raw-ctn' }, { class: 'as-omt-field-command-ctn', child: this.commands.map(command => ({ tag: FlexiconButton/* default.tag */.Z.tag, attr: { 'data-command': command.name }, props: { icon: command.icon, title: command.title }, on: { click: this.execCmd.bind(this, command.name, command) } })) } ], on: { dblclick: function (event) { var target = event.target; while (target) { if (target === this) break; if (target.tagName === 'BUTTON') return; target = target.parentElement; } this.execCmd('select_other'); }.bind(this) } }); this.$commandCtn = (0,ACore.$)('.as-omt-field-command-ctn', this.elt); this.$rawCtn = (0,ACore.$)('.as-omt-field-raw-ctn', this.elt); this.$viewModeBtn = (0,ACore._)({ tag: FlexiconButton/* default.tag */.Z.tag, attr: { 'data-command': 'view_mode' }, props: { icon: 'span.mdi.mdi.mdi-code-braces',//code-braces title: 'View Raw' }, on: { click: function () { if (self.elt.hasClass('as-mode-raw')) { self.elt.removeClass('as-mode-raw'); this.icon = 'span.mdi.mdi-code-braces'; this.title = 'View Raw'; } else { self.elt.addClass('as-mode-raw'); this.icon = 'span.mdi.mdi-view-dashboard-edit-outline'; this.title = 'View Guide'; self.updateRaw(); } } } }); this.$commandCtn.addChild(this.$viewModeBtn); this.$body = (0,ACore.$)('.as-omt-field-body', this.elt); }; OMTBaseType.prototype.updateRaw = function () { var rawElt = (0,ACore._)(this.getRaw()); this.$rawCtn.clearChild().addChild(rawElt); }; OMTBaseType.prototype.notifyChange = function () { this.descriptor.onchange && this.descriptor.onchange.call(this, { type: 'change', target: this, descriptor: this.descriptor }, this); this.tool.notifyChange(); }; OMTBaseType.prototype.getRaw = function () { return { child: [ { tag: 'span', class: 'as-omt-field-name', child: {text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '} }, { tag: 'code', child: {text: (0,generator/* generateJSVariable */.NQ)(this.export())} } ] }; }; OMTBaseType.prototype.assign = function (o) { this.value = o; this.$body.clearChild().addChild((0,ACore._)({ tag: 'code', child: { text: (0,generator/* generateJSVariable */.NQ)(o) } })); }; OMTBaseType.prototype.getHash = function () { return (0,stringUtils/* stringHashCode */.$)((0,generator/* generateJSVariable */.NQ)(this.export())); }; OMTBaseType.prototype.export = function () { return this.value; }; OMTBaseType.prototype.execCmd = function (commandName, command) { if (commandName === 'select_other') { this.userSelect(); } }; OMTBaseType.prototype.getSelectOptions = function () { if (!this.parent) return this.tool.objects; var parentOptions = this.parent.getSelectOptions().filter(x => !!x); var name = this.descriptor.name; return parentOptions.map(ot => ot[name]).filter(ot => ot !== undefined); }; OMTBaseType.prototype.userSelect = function () { new dialog_OMTSelectOptionsDialog(this); }; OMTBaseType.classes = {}; /*** * * @param tool * @param parent * @param descriptor * @returns {OMTBaseType} */ OMTBaseType.make = function (tool, parent, descriptor) { var clazz = OMTBaseType.classes[descriptor.type] || OMTBaseType; return new clazz(tool, parent, descriptor); }; /* harmony default export */ const type_OMTBaseType = (OMTBaseType); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTStruct.js /*** * @extends OMTBaseType * @constructor */ function OMTStruct() { type_OMTBaseType.apply(this, arguments); this.children = (this.descriptor.fields || []).map(field => type_OMTBaseType.make(this.tool, this, field)); this.$body.addChild(this.children.map(child => child.elt)); this.data = null; } OOP/* default.mixClass */.ZP.mixClass(OMTStruct, type_OMTBaseType); OMTStruct.prototype.type = 'struct'; OMTStruct.prototype.assign = function (o) { if (o !== null && typeof o === "object") { this.elt.removeClass('as-null'); this.children.forEach(child => { var name = child.descriptor.name; child.assign(o[name]); }); } else { this.elt.addClass('as-null'); } }; OMTStruct.prototype.export = function () { return this.children.reduce((ac, cr) => { ac[cr.descriptor.name] = cr.export(); return ac; }, {}); }; OMTStruct.prototype.getHash = function () { var hash = this.children.map(c => c.getHash()).join('_'); return (0,stringUtils/* stringHashCode */.$)(hash); }; OMTStruct.prototype.getRaw = function () { return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT")+': ' } }, { style:{paddingLeft: '25px'}, child: this.children.map((child=> child.getRaw())) } ] }; }; type_OMTBaseType.classes.struct = OMTStruct; /* harmony default export */ const type_OMTStruct = ((/* unused pure expression or super */ null && (OMTStruct))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTString.js /*** * @extends OMTBaseType * @constructor */ function OMTString() { type_OMTBaseType.apply(this, arguments); this.value = null; } OOP/* default.mixClass */.ZP.mixClass(OMTString, type_OMTBaseType); type_OMTBaseType.classes.string = OMTString; OMTString.prototype.assign = function (o) { this.value = o; this.$body.clearChild(); this.$value = (0,ACore._)({ tag: 'span', child: { text: (o || '') + '' } }); this.$body.addChild(this.$value); }; OMTString.prototype.getRaw = function () { return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': ' } }, { tag: 'span', child: { text: this.export() } } ] }; }; /* harmony default export */ const type_OMTString = ((/* unused pure expression or super */ null && (OMTString))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTFile.js /*** * @extends OMTBaseType * @constructor */ function OMTFile() { type_OMTBaseType.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(OMTFile, type_OMTBaseType); type_OMTBaseType.classes.file = OMTFile; type_OMTBaseType.prototype.type = 'file'; OMTFile.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: js_FileListItem.tag, class: 'as-omt-field-value' }); this.$body.addChild(this.$value); }; OMTFile.prototype.assign = function (o) { this.value = o; if (o) { this.$value.value = o; this.$value.removeStyle('display'); } else { this.$value.addStyle('display', 'none'); } }; OMTFile.prototype.getRaw = function () { var info = (0,utils.fileInfoOf)(this.value); var href = info.url; return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': ' } }, { tag: 'a', props: { href: href, target:'_blank' }, child: { text: info.name } } ] }; }; /* harmony default export */ const type_OMTFile = (OMTFile); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTImage.js /*** * @extends OMTBaseType * @constructor */ function OMTImage() { type_OMTBaseType.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(OMTImage, type_OMTBaseType); type_OMTBaseType.classes.image = OMTImage; type_OMTBaseType.prototype.type = 'image'; OMTImage.prototype.assign = function (o) { this.value = o; var title = ''; this.$body.clearChild(); var handle = (val) => { if (!val) return; if (val && val.then) { val.then(handle); return; } if (val && val.url) { handle(val.url); return; } if ((val instanceof File) || (val instanceof Blob)) { val.url = val.url || URL.createObjectURL(val); if (!title && val.filename) title = val.filename; handle(val); return; } if (!title) title = val.split('/').pop().split('?').shift(); this.$value = (0,ACore._)({ tag: 'img', class: 'as-omt-field-value', props: { src: val, title: title } }); this.$body.addChild(this.$value); } handle(o); }; OMTImage.prototype.getRaw = type_OMTFile.prototype.getRaw; /* harmony default export */ const type_OMTImage = ((/* unused pure expression or super */ null && (OMTImage))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTEnum.js /*** * @extends OMTBaseType * @constructor */ function OMTEnum() { type_OMTBaseType.apply(this, arguments); this.value = null; } OOP/* default.mixClass */.ZP.mixClass(OMTEnum, type_OMTBaseType); type_OMTBaseType.classes["enum"] = OMTEnum; OMTEnum.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: js_SelectTreeMenu.tag, class: 'as-border-none', style: { height: '18px' }, props: { readOnly: true, } }); this.$body.addChild(this.$value); if (this.descriptor.items && this.descriptor.items.then) { this.descriptor.items.then(items => { this.$value.items = items; }); } else { this.$value.items = this.descriptor.items; } } OMTEnum.prototype.assign = function (o) { this.value = o; this.$value.value = o; }; OMTEnum.prototype.getRaw = function () { var text = ''; var holders = this.$value.findItemsByValue(this.export()); if (holders && holders.length > 0) { text = holders[0].item.text; if (holders[0].item.desc) text += ' - ' + holders[0].item.desc; } return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': ' } }, { tag: 'span', child: { text: text } } ] }; }; /* harmony default export */ const type_OMTEnum = ((/* unused pure expression or super */ null && (OMTEnum))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/dialog/OMTArrayMergeDialog.js function hashArrayOf(node) { var res = (node.children || []).map(child => child.getHash()); res.sort((a, b) => a - b); return (0,DataStructure_Array.arrayUnique)(res); } /*** * @extends Fragment * @param {OMTArray} node * @constructor */ function OMTArrayMergeDialog(node) { Fragment/* default.call */.Z.call(this); this.node = node; this.calc(); this.getView(); this.start(); } OOP/* default.mixClass */.ZP.mixClass(OMTArrayMergeDialog, Fragment/* default */.Z); OMTArrayMergeDialog.prototype.calc = function () { this.options = this.node.getSelectOptions(); this.curHash = hashArrayOf(this.node); this.selectedNodes = {}; }; OMTArrayMergeDialog.prototype.onStart = function () { this.$modal.addTo(document.body); }; OMTArrayMergeDialog.prototype.onStop = function () { this.$modal.remove(); }; OMTArrayMergeDialog.prototype.assignResult = function () { var dict = {}; var itemArr = []; var hashArr = []; var node for (var key in this.selectedNodes) { node = this.selectedNodes[key]; if (node.children) { node.children.forEach(cr => { var hash = cr.getHash(); if (dict[hash]) return; dict[hash] = true; itemArr.push(cr.export()); hashArr.push(hash); }); } } if (this.curHash === hashArr && (0,DataStructure_Array.arrayUnique)(this.curHash.concat(hashArr)).length === this.curHash.length) return; this.node.assign(itemArr); this.node.updateRaw(); this.node.notifyChange(); }; OMTArrayMergeDialog.prototype._makeOptionRow = function (opt, i, dict) { var self = this; var descriptor = Object.assign({}, this.node.descriptor); var clazz = this.node.constructor; var node = new clazz(this.node.tool, this.node.parent, descriptor); node.assign(opt); var nodeHash = (0,stringUtils/* stringHashCode */.$)(hashArrayOf(node).join(',')); if (dict[nodeHash]) return null; dict[nodeHash] = node; var checked = (0,DataStructure_Array.arrayUnique)(this.curHash.concat(hashArrayOf(node))).length === this.curHash.length; if (checked) this.selectedNodes[nodeHash] = node; var radio = (0,ACore._)({ tag: CheckBoxInput/* default.tag */.Z.tag, style: { marginRight: '10px' }, props: { checked: checked }, on: { change: function () { if (radio.checked) { self.selectedNodes[nodeHash] = node; } else { delete self.selectedNodes[nodeHash]; } self.$view.$actionBtns[1].disabled = Object.keys(self.selectedNodes).length === 0; } } }); return (0,ACore._)({ class: 'as-omt-option-row', child: [ radio, node.elt ] }); }; OMTArrayMergeDialog.prototype.createView = function () { var self = this; /*** * @type MessageDialog */ this.$view = (0,ACore._)({ tag: MessageDialog/* default.tag */.Z.tag, class: 'as-omt-dialog', props: { dialogTitle: {mlKey:'txt_option'}, dialogActions: [ { text: 'OK', name: 'ok' }, { text: 'Cancel', name: 'cancel' } ] }, on: { action: function (event) { self.stop() var action = event.action; if (action.name === 'cancel') return; if (action.name === 'ok') { self.assignResult(); } } } }); var dict = {}; var rows = this.options.map((opt, i) => this._makeOptionRow(opt, i, dict)).filter(x => !!x); this.$view.addChild(rows); this.$modal = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, style:{ zIndex: 1000000, }, child: this.$view }); }; /* harmony default export */ const dialog_OMTArrayMergeDialog = (OMTArrayMergeDialog); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTArray.js /*** * @extends OMTBaseType * @constructor */ function OMTArray() { type_OMTBaseType.apply(this, arguments); this.value = null; } OOP/* default.mixClass */.ZP.mixClass(OMTArray, type_OMTBaseType); type_OMTBaseType.classes.array = OMTArray; OMTArray.prototype.commands = OMTArray.prototype.commands.concat([ { name: 'merge', icon: 'span.mdi.mdi-set-merge', title: 'Merge' } ]); OMTArray.prototype.execCmd = function (commandName) { type_OMTBaseType.prototype.execCmd.call(this, commandName); if (commandName === 'merge') { new dialog_OMTArrayMergeDialog(this); } }; OMTArray.prototype.assign = function (o) { this.$body.clearChild(); this.children = (o || []).map((it, i) => { var desc = Object.assign({ name: i, displayName: i + 1 + '' }, this.descriptor.of); if (!desc.displayName) desc.displayName = i + 1 + ''; var res = type_OMTBaseType.make(this.tool, this.parent, desc); res.assign(it); return res; }); this.$body.addChild(this.children.map(c => c.elt)); }; OMTArray.prototype.export = function () { return this.children.map(c => c.export()); }; OMTArray.prototype.getRaw = function () { return { child: [ { tag: 'span', class: 'as-omt-field-name', child: {text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '} }, { style: {paddingLeft: '25px'}, child: this.children.map((child => child.getRaw())) } ] }; }; /* harmony default export */ const type_OMTArray = (OMTArray); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/dialog/OMTEnumSetMergeDialog.js /*** * @extends Fragment * @param {OMTEnumSet} node * @constructor */ function OMTEnumSetMergeDialog(node) { Fragment/* default.call */.Z.call(this); this.node = node; this.calc(); this.getView(); this.start(); } OOP/* default.mixClass */.ZP.mixClass(OMTEnumSetMergeDialog, Fragment/* default */.Z); OMTEnumSetMergeDialog.prototype.calc = function () { this.currentValues = this.node.export(); this.descriptor = this.node.descriptor; this.selectOptions = this.node.getSelectOptions(); this.selected = {}; }; OMTEnumSetMergeDialog.prototype.onStart = function () { this.$modal.addTo(document.body); }; OMTEnumSetMergeDialog.prototype.onStop = function () { this.$modal.remove(); }; OMTEnumSetMergeDialog.prototype.assignResult = function () { var selectedValues = this._getCurrent(); if (selectedValues.length > 0) { this.node.assign((0,DataStructure_Array.arrayUnique)(this.currentValues.concat(selectedValues))); this.node.notifyChange(); } }; OMTEnumSetMergeDialog.prototype._getCurrent = function () { var selectedValues = this.selectOptions.reduce((ac, cr, i) => { if (this.selected[i]) ac = ac.concat(cr); return ac; }, []); selectedValues = (0,DataStructure_Array.arrayUnique)(selectedValues); return selectedValues; } OMTEnumSetMergeDialog.prototype._makeOptionRow = function (opt, i) { var self = this; var checked = (0,DataStructure_Array.arrayUnique)(this.currentValues.concat(opt)).length === (0,DataStructure_Array.arrayUnique)(this.currentValues).length; this.selected[i] = checked; var checkbox = (0,ACore._)({ tag: CheckBoxInput/* default.tag */.Z.tag, style: { marginRight: '10px', }, props: { checked: checked }, on: { change: function () { self.selected[i] = checkbox.checked; var currentValues = self._getCurrent(); self.previewNode.assign(currentValues); self.$view.$actionBtns[1].disabled = currentValues.length === 0; } } }); var mSelect = (0,ACore._)({ tag: js_MultiCheckTreeMenu.tag, class: 'as-border-none', props: { pendingValues: opt, readOnly: true } }); return (0,ACore._)({ class: 'as-omt-option-row', child: [ checkbox, mSelect ] }); }; OMTEnumSetMergeDialog.prototype.createView = function () { var self = this; this.$optionRows = this.selectOptions.map((opt, i) => this._makeOptionRow(opt, i)); this.previewNode = new this.node.constructor(this.node.tool, this.node.parent, this.node.descriptor); this.previewNode.assign(this.currentValues); this.$view = (0,ACore._)({ tag: MessageDialog/* default.tag */.Z.tag, class: ['as-omt-dialog'], props: { dialogTitle: 'Merge', dialogActions: [ { text: 'OK', name: 'ok' }, { text: 'Cancel', name: 'cancel' } ], }, on: { action: function (event) { self.stop(); if (event.action.name === 'ok') { self.assignResult(); } } }, child: [ this.previewNode, { child: [ { class: 'as-omt-field-name', child: { text: 'Merge From' } } ].concat(this.$optionRows) } ] }); Promise.resolve(this.descriptor.items).then(items => { (0,ACore.$$)(js_MultiCheckTreeMenu.tag, this.$view).forEach(elt => { elt.items = items; elt.values = elt.pendingValues; }); }); this.$modal = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, style:{ zIndex: 1000000, }, child: this.$view }); }; /* harmony default export */ const dialog_OMTEnumSetMergeDialog = (OMTEnumSetMergeDialog); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTEnumSet.js /*** * @extends OMTBaseType * @constructor */ function OMTEnumSet() { type_OMTBaseType.apply(this, arguments); this.value = null; this._flatTreeItems(); } OOP/* default.mixClass */.ZP.mixClass(OMTEnumSet, type_OMTBaseType); type_OMTBaseType.classes["{enum}"] = OMTEnumSet; OMTEnumSet.prototype.commands = type_OMTArray.prototype.commands.slice(); OMTEnumSet.prototype._flatTreeItems = function () { if (!this.descriptor.flat) { this.descriptor.flat = true; this.descriptor.items = this.descriptor.items.reduce(function visit(ac, cr) { var item = Object.assign({}, cr); ac.push(item); if (item.items && item.items.length > 0) { item.items.reduce(visit, ac); } delete item.items; return ac; }, []); } }; OMTEnumSet.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: js_MultiCheckMenu.tag, class: 'as-border-none', style: { height: '18px' }, props: { readOnly: true, strictValue: false } }); this.$body.addChild(this.$value); this.$value.items = this.descriptor.items; this.$value.values = this.value; } OMTEnumSet.prototype.assign = function (o) { this.value = o; this.$value.values = o; }; OMTEnumSet.prototype.execCmd = function (commandName) { type_OMTBaseType.prototype.execCmd.call(this, commandName); if (commandName === 'merge') { this.userMerge(); } }; OMTEnumSet.prototype.userMerge = function () { //as-omt-option-row new dialog_OMTEnumSetMergeDialog(this); }; OMTEnumSet.prototype.getRaw = function () { var textItems = this.export().map(value => { var text = ''; var holders = this.$value.findItemsByValue(value); if (holders && holders.length > 0) { text = holders[0].item.text; if (holders[0].item.desc) text += ' - ' + holders[0].item.desc; } return text; }) return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': ' } }, { style: { paddingLeft: '25px' }, child: textItems.map(text => ({ tag: 'li', child: { text: text } })) } ] }; }; /* harmony default export */ const type_OMTEnumSet = ((/* unused pure expression or super */ null && (OMTEnumSet))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTFileArray.js /*** * @extends OMTBaseType * @constructor */ function OMTFileArray() { type_OMTBaseType.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(OMTFileArray, type_OMTBaseType); type_OMTBaseType.classes["file[]"] = OMTFileArray; OMTFileArray.prototype.type = 'file[]'; OMTFileArray.prototype.commands = type_OMTArray.prototype.commands.slice(); OMTFileArray.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: js_FileListInput.tag, class: ['as-omt-field-value', 'as-border-none'], props: { readOnly: true } }); this.$body.addChild(this.$value); }; OMTFileArray.prototype.assign = function (o) { this.value = o; if (o instanceof Array) { this.$value.files = o; this.$value.removeStyle('display'); } else { this.$value.addStyle('display', 'none'); } }; OMTFileArray.prototype.getHash = function () { return (0,utils.calcDTQueryHash)(this.value); }; OMTFileArray.prototype.getRaw = function () { var infoArr = (this.value || []).map(it => (0,utils.fileInfoOf)(it)); return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': ' } }, { style: { paddingLeft: '25px' }, child: infoArr.map(info => ({ tag: 'a', props: info.url ? { href: info.url, target: '_blank' } : {}, child: { text: info.name } })) } ] }; }; /* harmony default export */ const type_OMTFileArray = ((/* unused pure expression or super */ null && (OMTFileArray))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTColor.js /*** * @extends OMTBaseType * @constructor */ function OMTColor() { type_OMTBaseType.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(OMTColor, type_OMTBaseType); type_OMTBaseType.classes.color = OMTColor; OMTColor.prototype.type = 'color'; OMTColor.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ class: "as-omt-field-color-value-bg", child: '.as-omt-field-color-value' }); this.$body.addChild(this.$value); }; OMTColor.prototype.assign = function (o) { this.value = o; var color = 'transparent'; try { if (o instanceof Color_Color/* default */.Z) { color = o.toString("hex8"); } else if (typeof o === "string") { color = Color_Color/* default.parse */.Z.parse(o).toString("hex8"); } } catch (err) { } this.color = color; this.$value.addStyle('--omt-color-value', color); }; OMTColor.prototype.getHash = function () { return (0,stringUtils/* stringHashCode */.$)(this.color+''); }; OMTColor.prototype.getRaw = function () { var color = Color_Color/* default.parse */.Z.parse(this.color); return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': ' } }, { tag: 'span', style: {color: color.toString('hex6')}, child: { text: this.color } } ] } }; /* harmony default export */ const type_OMTColor = ((/* unused pure expression or super */ null && (OMTColor))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTBool.js /*** * @extends OMTBaseType * @constructor */ function OMTBool() { type_OMTBaseType.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(OMTBool, type_OMTBaseType); type_OMTBaseType.classes.bool = OMTBool; OMTBool.prototype.type = 'bool'; OMTBool.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: CheckBoxInput/* default */.Z, props: { readOnly: true } }); this.$body.addChild(this.$value); }; OMTBool.prototype.assign = function (o) { this.value = o; this.$value.checked = !!o; }; /* harmony default export */ const type_OMTBool = ((/* unused pure expression or super */ null && (OMTBool))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTHtml.js /*** * @extends OMTBaseType * @constructor */ function OMTHtml() { type_OMTBaseType.apply(this, arguments); this.value = null; } OOP/* default.mixClass */.ZP.mixClass(OMTHtml, type_OMTBaseType); type_OMTBaseType.classes.html = OMTHtml; OMTHtml.prototype.type = 'html'; OMTHtml.prototype.assign = function (o) { this.value = o; this.$body.clearChild(); this.$value = (0,ACore._)({ tag: 'div', props:{ innerHTML: o } }); this.$body.addChild(this.$value); }; OMTHtml.prototype.getRaw = function () { return { child: [ { tag: 'span', class: 'as-omt-field-name', child: { text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': ' } }, { tag: 'span', child: { text: this.export() } } ] }; }; /* harmony default export */ const type_OMTHtml = ((/* unused pure expression or super */ null && (OMTHtml))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMDateTime.js /*** * @extends OMTBaseType * @constructor */ function OMTDateTime() { type_OMTBaseType.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(OMTDateTime, type_OMTBaseType); type_OMTBaseType.classes.datetime = OMTDateTime; OMTDateTime.prototype.type = 'datetime'; OMTDateTime.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: js_DateTimeInput.tag, class: 'as-border-none', props: { readOnly: true } }); if (this.descriptor.format) this.$value.format = this.descriptor.format; this.$body.addChild(this.$value); }; OMTDateTime.prototype.assign = function (o) { this.value = o; this.$value.value = o; }; OMTDateTime.prototype.getRaw = function () { return { child: [ { tag: 'span', class: 'as-omt-field-name', child: {text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '} }, { tag: 'span', child: { text: this.$value.text } } ] } }; /* harmony default export */ const OMDateTime = ((/* unused pure expression or super */ null && (OMTDateTime))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMDate.js /*** * @extends OMTBaseType * @constructor */ function OMTDate() { type_OMTBaseType.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(OMTDate, type_OMTBaseType); type_OMTBaseType.classes.date = OMTDate; OMTDate.prototype.type = 'date'; OMTDate.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: js_DateInput2.tag, class: 'as-border-none', props: { readOnly: true } }); if (this.descriptor.format) this.$value.format = this.descriptor.format; this.$body.addChild(this.$value); }; OMTDate.prototype.assign = function (o) { this.value = o; this.$value.value = o; }; OMTDate.prototype.getRaw = function () { return { child: [ { tag: 'span', class: 'as-omt-field-name', child: {text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '} }, { tag: 'span', child: { text: this.$value.text } } ] } }; /* harmony default export */ const OMDate = ((/* unused pure expression or super */ null && (OMTDate))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/type/OMTEnumOfPair.js /*** * @extends OMTBaseType * @constructor */ function OMTEnumOfPair() { type_OMTBaseType.apply(this, arguments); this.value = null; } OOP/* default.mixClass */.ZP.mixClass(OMTEnumOfPair, type_OMTBaseType); type_OMTBaseType.classes["enum<pair>"] = OMTEnumOfPair; OMTEnumOfPair.prototype.type = 'enum<pair>'; OMTEnumOfPair.prototype.render = function () { type_OMTBaseType.prototype.render.call(this); this.$value = (0,ACore._)({ tag: js_DualSelectMenu.tag, class: 'as-border-none', style: {height: '18px'}, props: { readOnly: true, } }); this.$body.addChild(this.$value); if (this.descriptor.items && this.descriptor.items.then) { this.descriptor.items.then(items => { this.$value.items = items; }); } else { this.$value.items = this.descriptor.items; } } OMTEnumOfPair.prototype.assign = function (o) { this.value = o; this.$value.value = o; }; OMTEnumOfPair.prototype.getRaw = function () { var text = this.$value.$item && this.$value.$item.innerText; return { child: [ { tag: 'span', class: 'as-omt-field-name', child: {text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '} }, { tag: 'span', child: {text: text} } ] }; }; /* harmony default export */ const type_OMTEnumOfPair = ((/* unused pure expression or super */ null && (OMTEnumOfPair))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/objectmergetool/ObjectMergeTool.js /*** * @extends AElement * @constructor */ function ObjectMergeTool() { this._descriptors = null; this._objects = null; this.root = null; this.$body = (0,ACore.$)('.as-omt-body', this) .on('mouseover', this.eventHandler.mouseOverNode); this.hoveringNode = null; /** * @type {Object[]} * @memberOf ObjectMergeTool# * @name objects */ /** * @type {Object} * @memberOf ObjectMergeTool# * @name descriptors */ } ObjectMergeTool.tag = 'ObjectMergeTool'.toLowerCase(); ObjectMergeTool.render = function () { return (0,ACore._)({ class: 'as-omt', extendEvent: ['change'], child: [ { class: 'as-omt-body' } ] }); }; ObjectMergeTool.prototype._tryFlushData = function () { if (this.root && this.objects && this.objects.length > 0) { this.root.assign(this.objects[0]); } }; ObjectMergeTool.prototype._findNode = function (targetElt) { while (targetElt && targetElt !== this) { if (targetElt.omtNode) return targetElt.omtNode; targetElt = targetElt.parentElement; } return null; }; ObjectMergeTool.prototype.notifyChange = function () { this.emit('change', { type: 'change', target: this }, this); }; ObjectMergeTool.property = {}; ObjectMergeTool.property.descriptor = { set: function (value) { this._descriptor = value || {}; this.$body.clearChild(); this.root = type_OMTBaseType.make(this, null, this._descriptor); this.$body.addChild(this.root.elt); this._tryFlushData(); }, get: function () { return this._descriptor; } }; ObjectMergeTool.property.objects = { set: function (value) { this._objects = value || []; this._tryFlushData(); }, get: function () { return this._objects; } }; ObjectMergeTool.property.data = { get: function () { if (this.root) { return this.root.export(); } if (this._objects && this.objects.length > 0) return this._objects[0]; return null; } }; /*** * @type {{}} * @memberOf ObjectMergeTool# */ ObjectMergeTool.eventHandler = {}; /*** * @this ObjectMergeTool * @param {MouseEvent} event */ ObjectMergeTool.eventHandler.mouseOverNode = function (event) { var node = this._findNode(event.target); if (this.hoveringNode === node) return; if (this.hoveringNode) { this.hoveringNode.elt.removeClass('as-hover'); } this.hoveringNode = node; if (this.hoveringNode) { this.hoveringNode.elt.addClass('as-hover'); } }; ACore/* default.install */.Z.install(ObjectMergeTool); /* harmony default export */ const objectmergetool_ObjectMergeTool = (ObjectMergeTool); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tokenizeinput.css var tokenizeinput = __webpack_require__(1323); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/tokenizeiput/TIHistory.js /*** * @param {TokenizeInput} elt * @constructor */ function TIHistory(elt){ this.elt = elt; this.stack = []; this.topIdx = -1; } TIHistory.prototype.commit = function (text, offset){ while (this.topIdx < this.stack.length - 1) { this.stack.pop(); } var lastText = this.stack.length > 0 ? this.stack[this.stack.length - 1].text : null; if (text === lastText) { if (this.stack[this.stack.length - 1].offset !== offset) this.stack[this.stack.length - 1].offset = offset; } else { this.topIdx = this.stack.length; var record = { text: text, offset: offset }; this.stack.push(record); this.elt.emit('change', { target: this, value: record.text, action: 'commit', record: record, type: 'change' }, this); } }; TIHistory.prototype.undo = function (){ if (this.topIdx <= 0) return; this.topIdx--; var record = this.stack[this.topIdx]; this.elt.applyData(record.text, record.offset); this.elt.emit('change', { target: this, value: record.text, action: 'undo', record: record, type: 'change' }, this); }; TIHistory.prototype.redo = function (){ if (this.topIdx + 1 >= this.stack.length) return; this.topIdx++; var record = this.stack[this.topIdx]; this.elt.applyData(record.text, record.offset); this.elt.emit('change', { target: this, value: record.text, action: 'redo', record: record, type: 'change' }, this); }; /* harmony default export */ const tokenizeiput_TIHistory = (TIHistory); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/tokenizeiput/TITextController.js var TITextController = __webpack_require__(1875); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/tokenizeiput/tiutils.js var tiutils = __webpack_require__(3421); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/tokenizeiput/TISelectionController.js /**** * * @param {TokenizeInput} elt * @constructor */ function TISelectionController(elt) { this.elt = elt; this.prevRange = null; } TISelectionController.prototype.onSelect = function () { var key = (this.elt.prevKey && (new Date().getTime() - this.elt.prevKey.time < 100)) ? this.elt.prevKey.value : ''; var sel = document.getSelection(); var range = sel.getRangeAt(0); var direction = (0,utils.getSelectionRangeDirection)(range); var newRange; var handleEmojiToken = () => { var startCtn = range.startContainer; var startOffset = range.startOffset; var startToken; var endCtn = range.endContainer; var endOffset = range.endOffset; var endToken; var changed = 0; var textData; var nextTextNode; var prevTextNode; var displayText; var newText; if ((0,tiutils/* isTokenText */.tk)(startCtn)) { startToken = startCtn.parentElement; displayText = startToken.getAttribute('data-display'); textData = startCtn.data; if (range.collapsed) { if (textData.length < displayText.length) { prevTextNode = this.getPrevTextNode(startCtn); if (!(0,tiutils/* isText */.Gs)(prevTextNode)) { prevTextNode = document.createTextNode(''); startToken.parentElement.insertBefore(prevTextNode, startToken); } startToken.remove(); startCtn = prevTextNode; startOffset = prevTextNode.data.length; changed = 1; } else if (textData === displayText && startOffset < displayText.length && startOffset > 0) { if (key === 'arrowright' || !key) { startOffset = displayText.length; changed = 1; } else if (key === 'arrowleft') { startOffset = 0; changed = 1; } else if (key === 'mouseup') { startOffset = 0; endOffset = displayText.length; changed = 2; } } else if (textData.length > displayText.length) { if (startOffset === textData.length) { nextTextNode = startToken.nextSibling; if (!(0,tiutils/* isText */.Gs)(nextTextNode)) { newText = document.createTextNode(''); nextTextNode.parentElement.insertBefore(newText, nextTextNode); nextTextNode = newText; } nextTextNode.data = textData.substring(displayText.length) + nextTextNode.data; startCtn.data = displayText; startCtn = nextTextNode; startOffset = textData.length - displayText.length; changed = 1; } else { prevTextNode = startToken.previousSibling; if (!(0,tiutils/* isText */.Gs)(prevTextNode)) { newText = document.createTextNode(''); startToken.parentElement.insertBefore(newText, startToken); prevTextNode = newText; } prevTextNode.data += textData.substring(0, textData.length - displayText.length); startCtn.data = displayText; startCtn = prevTextNode; startOffset = startCtn.data.length; } } } else { if (startOffset > 0 && startOffset < displayText.length) { startOffset = 0; changed = 2; } } } if ((0,tiutils/* isTokenText */.tk)(endCtn)) { endToken = endCtn.parentElement; displayText = endToken.getAttribute('data-display'); if (!range.collapsed) { if (endOffset < displayText.length) { endOffset = displayText.length changed = 2; } } } if (changed > 0) { newRange = document.createRange(); newRange.setStart(startCtn, startOffset); if (changed > 1) { newRange.setEnd(endCtn, endOffset); } else { //for saving endOffset = startOffset; endCtn = startCtn; } (0,utils.setSelectionRange)(newRange, direction === 'backward'); } var nextToken, nextText; if ((0,tiutils/* isToken */.hD)(endCtn.nextSibling)) { nextToken = endCtn.nextSibling; displayText = nextToken.getAttribute('data-display'); nextText = (0,tiutils/* getFirstTextNode */.ot)(nextToken); if (!nextText || nextText.data !== displayText) nextToken.remove(); } this.prevRange = { startOffset: startOffset, startContainer: startCtn, endOffset: endOffset, endContainer: endCtn }; } handleEmojiToken(); }; TISelectionController.prototype.getNextTextNode = function (current) { return (0,tiutils/* findNextTextNode */.M4)(this.elt, current); }; TISelectionController.prototype.getPrevTextNode = function (current) { return (0,tiutils/* findPrevTextNode */.LD)(this.elt, current); }; TISelectionController.prototype.setRangeByOffset = function (offset) { var start, end, direction; if (typeof offset === "number") { start = offset; end = offset; direction = 'forward'; } else { start = offset.start; end = offset.end; direction = offset.direction || 'forward'; } var startCtn = null; var startOffset = 0; var endCtn = null; var endOffset = 0; var st = ''; var nodes = Array.prototype.slice.call(this.elt.childNodes); if ((0,tiutils/* isNewLine */.K0)(nodes[nodes.length - 1])) nodes.pop(); var node; for (var i = 0; i < nodes.length; ++i) { node = nodes[i]; if ((0,tiutils/* isText */.Gs)(node)) { st += node.data; if (!startCtn && st.length >= start) { startCtn = node; startOffset = node.data.length - (st.length - start); } if (!endCtn && st.length >= end) { endCtn = node; endOffset = node.data.length - (st.length - end); } } else if ((0,tiutils/* isToken */.hD)(node)) { st += node.getAttribute('data-text'); if (!startCtn && st.length >= start) { startCtn = (0,tiutils/* getFirstTextNode */.ot)(node); startOffset = startCtn.data.length; } if (!endCtn && st.length >= end) { endCtn = (0,tiutils/* getFirstTextNode */.ot)(node); endOffset = endCtn.data.length; } } else if ((0,tiutils/* isNewLine */.K0)(node)) { st += '\n'; if (!startCtn && st >= start) { startCtn = this.elt; startOffset = i + 1; } if (!endCtn && st.length >= end) { endCtn = this.elt; endOffset = i + 1; } } } if (!startCtn) { if (nodes.length > 0) { node = nodes[nodes.length - 1] if ((0,tiutils/* isNewLine */.K0)(node)) { startCtn = this.elt; startOffset = nodes.length; } else if ((0,tiutils/* isText */.Gs)(node)) { startCtn = node; startOffset = node.length; } else { startCtn = (0,tiutils/* getLastTextNode */.No)(node); startOffset = node.length; } } else { startCtn = this.elt; startOffset = 0; } } if (!endCtn) { endCtn = startCtn; endOffset = startOffset; } this.prevRange = { startContainer: startCtn, startOffset: startOffset, endContainer: endCtn, endOffset: endOffset } var range = document.createRange(); range.setStart(startCtn, startOffset); range.setEnd(endCtn, endOffset); (0,utils.setSelectionRange)(range, direction === 'backward'); }; TISelectionController.prototype.getOffset = function (range) { range = range || this.elt.selectionCtrl.prevRange; if (!range) return null; var nodes = Array.prototype.slice.call(this.elt.childNodes); if ((0,tiutils/* isNewLine */.K0)(nodes[nodes.length - 1])) nodes.pop(); var startCtn = range.startContainer; var startOffset = range.startOffset; var endCtn = range.endContainer; var endOffset = range.endOffset; if (startCtn === this.elt) { startCtn = this.elt.childNodes[startOffset - 1]; startOffset = 1; } else if ((0,tiutils/* isTokenText */.tk)(startCtn)) { startCtn = startCtn.parentElement; if (startOffset > 0) startOffset = startCtn.getAttribute('data-text').length; } if (endCtn === this.elt) { endCtn = this.elt.childNodes[endOffset]; endOffset = 1; } else if ((0,tiutils/* isTokenText */.tk)(endCtn)) { endCtn = endCtn.parentElement; if (endOffset > 0) endOffset = endCtn.getAttribute('data-text').length; } var start = undefined; var end = undefined; var direction = (0,utils.getSelectionRangeDirection)(range); var st = ''; var node; for (var i = 0; i < nodes.length; ++i) { node = nodes[i]; if ((0,tiutils/* isText */.Gs)(node)) { if (start === undefined && node === startCtn) { start = st.length + startOffset; } if (end === undefined && node === endCtn) { end = st.length + endOffset; } st += node.data; } else if ((0,tiutils/* isToken */.hD)(node)) { if (start === undefined && node === startCtn) { start = st.length + startOffset; } if (end === undefined && node === endCtn) { end = st.length + endOffset; } st += node.getAttribute('data-text'); } else if ((0,tiutils/* isNewLine */.K0)(node)) { st += '\n'; if (start === undefined && node === startCtn) { start = st.length; } if (end === undefined && node === endCtn) { end = st.length; } } } if (start === undefined) start = 0; if (end === undefined) { end = start; } return { start: start, end: end, direction: direction } } /* harmony default export */ const tokenizeiput_TISelectionController = (TISelectionController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/tokenizeiput/TokenizeHyperInput.js var TokenizeHyperInput_textDelay = BrowserDetector/* default.isSafari */.Z.isSafari ? 100 : 1; /*** * @extends AElement * @constructor */ function TokenizeHyperInput() { this._tagMap = {}; this.$br = (0,ACore.$)('br', this); this.historyCtrl = new tokenizeiput_TIHistory(this); this.textCtrl = new TITextController/* default */.Z(this); this.selectionCtrl = new tokenizeiput_TISelectionController(this); this.prevKey = null; this.defineEvent(['pasteimg', 'pastefile', 'pastetext', 'change']); this.on('paste', this.eventHandler.paste); this.on('keydown', this.eventHandler.keydown); this.on('mouseup', this.eventHandler.mouseup); this.value = ''; this.historyCtrl.commit('', 0); /*** * @type {{}} * @name tagMap *@memberOf TokenizeHyperInput# * */ } TokenizeHyperInput.tag = 'TokenizeHyperInput'.toLowerCase(); TokenizeHyperInput.render = function () { return (0,ACore._)({ tag: 'pre', class: 'as-tokenize-hyper-input', attr: { contenteditable: 'true', spellcheck: "false" }, child: 'br' }); }; TokenizeHyperInput.prototype.applyData = function (text, offset) { this.textCtrl.applyData(text, offset); }; TokenizeHyperInput.prototype.select = function (offset) { if (document.activeElement !== this) this.focus(); this.applyData(this.value, offset); }; TokenizeHyperInput.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; } }; TokenizeHyperInput.prototype.undo = function () { this.historyCtrl.undo(); }; TokenizeHyperInput.prototype.redo = function () { this.historyCtrl.redo(); }; TokenizeHyperInput.prototype.commitChange = function (text, offset) { this.historyCtrl.commit(text, offset); this.emit('change', {}, this); }; TokenizeHyperInput.prototype.waitToCommit = function (text, offset) { var thisInput = this; if (this._commitTimeout > 0) clearTimeout(this._commitTimeout); this._commitTimeout = setTimeout(function () { thisInput.commitChange(text, offset); }, TokenizeHyperInput_textDelay); }; TokenizeHyperInput.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); }; TokenizeHyperInput.prototype.getSelectPosition = function () { return this.selectionCtrl.getOffset(); }; /** * @type {TokenizeHyperInput} */ TokenizeHyperInput.eventHandler = {}; TokenizeHyperInput.eventHandler.paste = function (event) { var clipboardData = (event.clipboardData || window.clipboardData); if (!clipboardData) { alert('Input not support browser without clipboard API!'); return; } if (clipboardData.items) { var items = Array.prototype.slice.call(clipboardData.items); var imgItems = items.filter(item => item.type.indexOf('image') >= 0); var fileItems = items.filter(item => item.type !== 'text/plain' && item.type.indexOf('image') < 0); var plainTextItems = items.filter((item) => 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, originalEvent: event }, this); } if (fileItems.length > 0) { var files = fileItems.map(item => item.getAsFile()); this.emit('pastefile', { target: this, file: files[0], files: files, originalEvent: event }, this); } if (plainTextItems.length > 0) { var plainTextItem = plainTextItems[0];//only one item plainTextItem.getAsString(text => { this.textCtrl.insertText(text); }); } event.preventDefault(); } else { var text = event.clipboardData.getData('text/plain'); if (text) { event.preventDefault(); this.textCtrl.insertText(text); } } this.waitToCommit(); }; TokenizeHyperInput.eventHandler.keydown = function (event) { this.prevKey = { time: new Date().getTime(), value: (0,keyboard/* keyboardEventToKeyBindingIdent */.Ej)(event) }; setTimeout(() => { this.selectionCtrl.onSelect(); this.waitToCommit(); }, TokenizeHyperInput_textDelay); }; /*** * @this TokenizeHyperInput * @param event */ TokenizeHyperInput.eventHandler.mouseup = function (event) { this.prevKey = { time: new Date().getTime(), value: 'mouseup' }; this.selectionCtrl.onSelect(); } TokenizeHyperInput.property = {}; TokenizeHyperInput.property.value = { set: function (value) { value = value || ''; this.textCtrl.setText(value); // this.applyData(value, value.length); this.commitChange(value, value.length); }, get: function () { return this.textCtrl.getText(); } }; TokenizeHyperInput.property.disabled = { set: function (value) { value = !!value; if (value === this.hasClass('as-disabled')) return; if (value) { this.addClass('as-disabled'); this.attr({ contenteditable: undefined, oncut: 'return false', onpaste: 'return false', onkeydown: 'if(event.metaKey) return true; return false;' }); } else { this.removeClass('as-disabled'); this.attr({ contenteditable: true, oncut: undefined, onpaste: undefined, onkeydown: undefined }); } }, get: function () { return this.hasClass('as-disabled'); } }; TokenizeHyperInput.property.tagList = { get: function () { return (0,utils.getTagListInTextMessage)(this.value); } }; TokenizeHyperInput.property.tagMap = { set: function (o) { o = o || {}; this._tagMap = o; Array.prototype.forEach.call(this.childNodes, child => { var id, text; if (child.classList && child.classList.contains('as-tag-token')) { id = (child.getAttribute('data-text') || ''); id = id.substring(5, id.length - 1); text = this._tagMap[id]; if (text) { child.getAttribute('data-display', '@' + text); child.firstChild.data = '@' + text; } } }) }, get: function () { return this._tagMap; } } ACore/* default.install */.Z.install(TokenizeHyperInput); /* harmony default export */ const tokenizeiput_TokenizeHyperInput = (TokenizeHyperInput); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/SelectListBoxPropHandlers.js var SelectListBoxPropHandlers = {}; SelectListBoxPropHandlers.enableSearch = { /*** * @this SelectListBox * @param {boolean} value */ set: function (value) { if (value) this.addClass('as-enable-search'); else this.removeClass('as-enable-search'); }, /*** * @this SelectListBox */ get: function () { return this.hasClass('as-enable-search'); } }; SelectListBoxPropHandlers.items = { /*** * @this SelectListBox * @param {{}} items */ set: function (items) { this.itemListCtrl.setItems(items); }, get: function () { return this.itemListCtrl.getItems(); } }; /* harmony default export */ const selectlistbox_SelectListBoxPropHandlers = (SelectListBoxPropHandlers); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/SLBItemHolder.js function SLBItemHolder(parent, data) { this.data = data; this.parent = parent; this._elt = null; } Object.defineProperty(SLBItemHolder.prototype, 'elt', { get: function () { if (!this._elt) { this._elt = (0,ACore._)({ tag: SelectListItem/* default.tag */.ZP.tag, props: { data: this.data } }); } return this._elt; } }); /* harmony default export */ const selectlistbox_SLBItemHolder = (SLBItemHolder); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/SLBModes.js function SLBModeNormal(elt, items) { this.elt = elt; this.$scroller = this.elt.$scroller; this.$content = this.elt.$content; this.items = items; this.children = items.map(item => new selectlistbox_SLBItemHolder(this, item)); this.children.forEach((child, i) => { child.idx = i; // child.elt; }); this.$pages = []; } SLBModeNormal.prototype._getPageElt = function (idx) { if (this.$pages[idx]) return this.$pages[idx]; while (this.$pages.length <= idx) this.$pages.push(undefined); var children = this.children.slice(idx * 50, idx * 50 + 50); var pageElt = (0,ACore._)({ class: 'as-select-list-box-page', style: { top: 20 * idx * 50 + 'px' }, child: children.map(child => child.elt) }); this.$pages[idx] = pageElt; return pageElt; }; SLBModeNormal.prototype._getPageCount = function () { return Math.ceil(this.items.length / 50); } SLBModeNormal.prototype.onStart = function () { this.elt.$content.addStyle('height', this.items.length * 20 + 'px'); // var n = this._getPageCount(); // for (var i =0; i < n; ++i){ // this.$content.addChild(this._getPageElt(i)); // } this.updateListView(); }; SLBModeNormal.prototype.onStop = function () { }; SLBModeNormal.prototype.updateListView = function () { var maxHeight = Math.max(4096, (0,Dom/* getScreenSize */.tE)().height); var startIdx = Math.floor(this.$scroller.scrollTop / 1000) - 1; var endIdx = startIdx + Math.ceil(maxHeight / 1000) + 1; startIdx = Math.max(0, startIdx); endIdx = Math.min(this._getPageCount(), endIdx); var needViewPages = Array(endIdx - startIdx).fill(null).map((u, i) => this._getPageElt(startIdx + i)); Array.prototype.forEach.call(this.$content.childNodes, elt => { if (needViewPages.indexOf(elt) < 0) { elt.remove(); } }); needViewPages.forEach(elt=>{ if (!elt.parentElement){ this.$content.addChild(elt); } }); } function SLBModeSearch(elt, items) { this.items = items; } OOP/* default.mixClass */.ZP.mixClass(SLBModeSearch, SLBModeNormal); // SLBModeSearch.prototype.onStart ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/SLBItemListController.js /*** * @extends ListDictionary * @param {SelectListBox} elt * @constructor */ function SLBItemListController(elt) { this.elt = elt; this.items = []; this.elt.$scroller.on('scroll', this.updateListView.bind(this)); } OOP/* default.mixClass */.ZP.mixClass(SLBItemListController, ListDictionary/* default */.Z) SLBItemListController.itemHeight = 20; SLBItemListController.preLoadN = 3; SLBItemListController.prototype.toLoadNextY = 200; SLBItemListController.prototype.getItems = function () { return (0,utils.copySelectionItemArray)(this.items); }; SLBItemListController.prototype.setItems = function (items) { this.items = (0,utils.copySelectionItemArray)(items ||[]); var mode = new SLBModeNormal(this.elt, this.items); this.elt.modes.normal = mode; this.elt.mode = mode; mode.onStart(); }; SLBItemListController.prototype.updateListView = function (){ this.elt.mode.updateListView(); } /* harmony default export */ const selectlistbox_SLBItemListController = (SLBItemListController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selectlistbox/SelectListBox.js /*** * @extends AElement * @constructor */ function SelectListBox_SelectListBox() { this.$box = this; this.$content = $('.as-select-list-box-content', this); this.$scroller = $('.as-select-list-box-scroller', this); this.itemListCtrl = new selectlistbox_SLBItemListController(this); this.modes = { normal: new SLBModeNormal(this, []), search: null }; this.mode = this.modes.normal; } SelectListBox_SelectListBox.tag = 'selectlistbox_v2'.toLowerCase(); SelectListBox_SelectListBox.render = function () { return (0,ACore._)({ 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_SelectListBox.prototype.preLoadN).fill('.as-select-list-box-page') } ] }, 'attachhook.as-dom-signal' ], props: { anchor: [1, 6, 2, 5] } }); } SelectListBox_SelectListBox.property = selectlistbox_SelectListBoxPropHandlers; ACore/* default.install */.Z.install('selectlistbox_v2', SelectListBox_SelectListBox); /* harmony default export */ const selectlistbox_SelectListBox = (SelectListBox_SelectListBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/pathmenu.css var pathmenu = __webpack_require__(924); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/PathMenu.js /*** * @extends AElement * @constructor */ function PathMenu() { this._path = []; this.$items = []; } PathMenu.tag = 'PathMenu'.toLowerCase(); PathMenu.render = function () { return (0,ACore._)({ attr: { tabindex: '1' }, extendEvent: ['press', 'change'], class: 'as-path-menu' }); }; PathMenu.prototype._makeItem = function (data, idx) { var self = this; var button = (0,ACore._)({ class: ['as-ribbon-split-button', 'as-path-menu-item'], 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: (data.name || data.text || '') + '' } } }, { tag: 'button', attr: { 'tabindex': '-1' }, class: 'as-ribbon-split-button-extend', child: ['span.mdi.mdi-chevron-right'] } ] } }); button.on('mouseenter', function () { if (document.activeElement && AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(document.activeElement, self) && self.hasClass('as-opening-item')) { if (button.quickMenu) button.quickMenu.open(); } }); var extendIconElt = (0,ACore.$)('.as-ribbon-split-button-extend .mdi', button); var primaryBtn = (0,ACore.$)('.as-ribbon-split-button-primary', button) .on('click', function () { self.emit('press', { target: self, pathItem: data, index: idx }, self); }); //as-ribbon-split-button-icon var icon = null; if (data.icon) { icon = (0,ACore._)(data.icon); } else if (data.iconSrc) { icon = (0,ACore._)({ tag: 'img', props: { src: data.iconSrc } }) } if (icon) { if (icon.parentElement) icon = (0,ACore.$)(icon.cloneNode(true)); icon.addClass('as-ribbon-split-button-icon'); primaryBtn.addChildBefore(icon, primaryBtn.firstChild); } var quickTrigger = (0,ACore.$)('.as-ribbon-split-button-extend', button); if (data.items && data.items.length > 0) { button.quickMenu = QuickMenu/* default.toggleWhenClick */.Z.toggleWhenClick(quickTrigger, { getMenuProps: function () { return { items: data.items.map(function (it, menuIndex) { if (typeof it === "string") return it; if (typeof it === "object") { if (it.icon || it.iconSrc || it.name || it.text) { return { text: it.name || it.text, menuIndex: menuIndex, icon: it.iconSrc ? { tag: 'img', props: { src: it.iconSrc } } : (it.icon || undefined), extendStyle: it.extendStyle || {}, extendClass: it.extendClass || [], } } } return it; }) } }, anchor: [1, 6, 0, 7], onOpen: function () { self.addClass('as-opening-item'); extendIconElt.addClass('mdi-rotate-90'); }, onClose: function () { self.removeClass('as-opening-item'); extendIconElt.removeClass('mdi-rotate-90'); }, onSelect: function (item) { var dataItem = data.items[item.menuIndex]; self.emit('change', { target: self, pathItem: data, item: dataItem, index: idx }, self); button.removeClass('as-open'); } }); } else { button.addClass('as-has-no-item'); } return button; }; PathMenu.property = {}; PathMenu.property.path = { set: function (path) { this._path = path || []; this.$items.forEach(elt => elt.remove()); this.$items = this._path.map((it, i) => this._makeItem(it, i)); this.addChild(this.$items); }, get: function () { return this._path; } }; ACore/* default.install */.Z.install(PathMenu); /* harmony default export */ const js_PathMenu = (PathMenu); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multichecktreemenu/MCTMPropHandlers.js var MCTMPropHandlers = {}; MCTMPropHandlers.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; MCTMPropHandlers.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } }; MCTMPropHandlers.items = { set: function (items) { this.$box.items = items; this.tokenCtrl.updateFromViewValues(); }, get: function () { return this.$box.items; } }; MCTMPropHandlers.values = { set: function (values) { this.$box.values = values || []; this.tokenCtrl.updateFromViewValues(); }, get: function () { if (this.isFocus) { return this.savedValues; } else { return this.$box.values; } } }; MCTMPropHandlers.leafOnly = { set: function (value) { if (!!value === this.hasClass('as-leaf-only')) return; if (value) { this.addClass('as-leaf-only'); this.$box.leafOnly = true; } else { this.removeClass('as-leaf-only'); this.$box.leafOnly = false; } this.tokenCtrl.updateFromViewValues(); }, get: function () { return this.hasClass('as-leaf-only'); } }; MCTMPropHandlers.isFocus = { /*** * @this MultiCheckTreeMenu * @param value */ set: function (value) { if (value && (this.disabled || this.readOnly)) return; if (!!value === this.hasClass('as-focus')) return; if (value) { this.savedValues = this.$box.values; this.addClass('as-focus'); this.boxCtrl.onFocus(); } else { this.removeClass('as-focus'); this.boxCtrl.onBlur(); var newValues = this.values; if (!(0,DataStructure_Array.arrayCompare)(this.savedValues, newValues)) { this.notifyChange(); } else { this.tokenCtrl.updateFromViewValues(); } this.savedValues = this.values; } }, get: function () { return this.hasClass('as-focus'); } }; MCTMPropHandlers.enableSearch = { set: function (value){ this.$box.enableSearch = value; }, get: function (){ return this.$box.enableSearch ; } }; /* harmony default export */ const multichecktreemenu_MCTMPropHandlers = (MCTMPropHandlers); /**************************** ADAPT OLD VERSION **********************************************************************/ MCTMPropHandlers.$checkTreeBox = { get: function () { return this.$box; } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multichecktreeleafmenu/MCTLMPropHandler.js var MCTLMPropHandler = Object.assign({}, multichecktreemenu_MCTMPropHandlers); MCTLMPropHandler.leafOnly = { value: true, enumerable: true }; /* harmony default export */ const multichecktreeleafmenu_MCTLMPropHandler = (MCTLMPropHandler); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multichecktreemenu/MMCTMBoxController.js /*** * * @param elt * @constructor */ function MMCTMBoxController(elt) { this.elt = elt; this.$box = elt.$box; for (var key in this) { if (key.startsWith('ev_')) this[key] = this[key].bind(this); } this.elt.on('click', this.ev_click); this.$box.on('close', this.ev_close); this.$box.on('cancel', this.ev_cancel); this.$box.on('change', this.ev_boxValuesChange); } MMCTMBoxController.prototype.onFocus = function () { this.$box.addTo(document.body); this.elt.off('click', this.ev_click); }; MMCTMBoxController.prototype.onBlur = function () { this.$box.remove(); setTimeout(() => { this.elt.on('click', this.ev_click); }, 50) }; MMCTMBoxController.prototype.ev_click = function (event) { if (!this.elt.disabled && !this.elt.readOnly && (event.target === this.elt || event.target === this.elt.$itemCtn)) { this.elt.isFocus = true; } }; MMCTMBoxController.prototype.ev_close = function (event) { this.elt.isFocus = false; }; MMCTMBoxController.prototype.ev_cancel = function (event) { this.$box.values = this.elt.savedValues; this.elt.isFocus = false; }; MMCTMBoxController.prototype.ev_boxValuesChange = function () { this.elt.tokenCtrl.updateFromViewValues(); }; /* harmony default export */ const multichecktreemenu_MMCTMBoxController = (MMCTMBoxController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multichecktreemenu/MCTMTokenController.js /**** * * @param {MultiCheckTreeMenu} elt * @constructor */ function MCTMTokenController(elt) { this.elt = elt; this.$box = elt.$box; this.$itemCtn = elt.$itemCtn; } MCTMTokenController.prototype.updateFromViewValues = function () { var values = this.$box.viewValues; this.requireItems(values.length); var holder; for (var i = 0; i < values.length; ++i) { holder = this.$box.getHolderByValue(values[i]); this.$itemCtn.childNodes[i].data = holder.data; } }; MCTMTokenController.prototype.requireItems = function (count) { while (this.$itemCtn.childNodes.length < count) { this.$itemCtn.addChild(this.makeToken()); } while (this.$itemCtn.childNodes.length > count) { this.$itemCtn.lastChild.remove(); } }; MCTMTokenController.prototype.removeValue = function (targetValue) { this.$box.select(targetValue, false); this.updateFromViewValues(); if (!this.elt.isFocus) { this.elt.notifyChange(); } }; MCTMTokenController.prototype.makeToken = function () { var ctrl = this; return (0,ACore._)({ tag: js_SelectBoxItem, on: { close: function () { ctrl.removeValue(this.value); } } }); }; /* harmony default export */ const multichecktreemenu_MCTMTokenController = (MCTMTokenController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multichecktreemenu/MultiCheckTreeMenu.js /*** * @extends AElement * @constructor */ function MultiCheckTreeMenu_MultiCheckTreeMenu() { this.$box = (0,ACore._)({ tag: this.classes.Box }); this.$itemCtn = (0,ACore.$)('.as-multi-select-menu-item-ctn', this); this.boxCtrl = new multichecktreemenu_MMCTMBoxController(this); this.tokenCtrl = new multichecktreemenu_MCTMTokenController(this);//mobile only } MultiCheckTreeMenu_MultiCheckTreeMenu.tag = 'MultiCheckTreeMenu'.toLowerCase(); MultiCheckTreeMenu_MultiCheckTreeMenu.prototype.classes = { Box: checktreebox_MCheckTreeBox }; MultiCheckTreeMenu_MultiCheckTreeMenu.render = function () { return (0,ACore._)({ class: ['as-multi-select-menu', 'as-multi-check-tree-menu'], extendEvent: ['change'], 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' ] }); }; MultiCheckTreeMenu_MultiCheckTreeMenu.prototype.notifyChange = function () { this.emit('change', { type: 'change', target: this }, this); }; MultiCheckTreeMenu_MultiCheckTreeMenu.property = multichecktreemenu_MCTMPropHandlers; ACore/* default.install */.Z.install(MultiCheckTreeMenu_MultiCheckTreeMenu); /* harmony default export */ const multichecktreemenu_MultiCheckTreeMenu = (MultiCheckTreeMenu_MultiCheckTreeMenu); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreeleafbox/CTLBPropHandlers.js var CTLBPropHandlers = Object.keys(checktreebox_CTBPropHandlers).reduce((ac, key) => { ac[key] = Object.assign({}, checktreebox_CTBPropHandlers[key]); return ac; }, {}); CTLBPropHandlers.leafOnly = { enumerable: true, value: true }; /* harmony default export */ const checktreeleafbox_CTLBPropHandlers = (CTLBPropHandlers); /*** * * @type {boolean} * @name enableSearch * @memberOf MCheckTreeBox# */ ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreeleafbox/CTLIPropHandlers.js var CTLIPropHandlers = Object.keys(checktreebox_CTIPropHandlers).reduce((ac, key) => { ac[key] = Object.assign({}, checktreebox_CTIPropHandlers[key]); return ac; }, {}); /* harmony default export */ const checktreeleafbox_CTLIPropHandlers = (CTLIPropHandlers); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreeleafbox/CheckTreeLeafItem.js /*** * @extends AElement * @constructor */ function CheckTreeLeafItem() { this._data = null; this._status = 'none'; this.$text = (0,ACore.$)('.am-check-tree-item-text', this).firstChild; this.$desc = (0,ACore.$)('.am-check-tree-item-desc', this).firstChild; this.$iconCtn = (0,ACore.$)('.am-check-tree-item-icon-ctn', this); this.$checkbox = (0,ACore.$)('checkboxinput', this) .on('change', this.eventHandler.checkboxChange); this.addEventListener('click', this.eventHandler.click); } OOP/* default.mixClass */.ZP.mixClass(CheckTreeLeafItem, MCheckTreeItem); CheckTreeLeafItem.tag = 'CheckTreeLeafItem'.toLowerCase(); CheckTreeLeafItem.render = function () { return (0,ACore._)({ extendEvent: ['checkedchange', 'click', 'statuschange'], class: ['am-check-tree-leaf-item', 'am-check-tree-item', 'am-dropdown-box-item'], child: [ { class: 'am-check-tree-item-toggle-ctn', child: 'toggler-ico' }, { class: 'am-check-tree-item-icon-ctn' }, { class: 'am-check-tree-item-checkbox-ctn', child: 'checkboxinput' }, { class: 'am-check-tree-item-text', child: { text: '' } }, { class: 'am-check-tree-item-desc', child: { text: '' } } ] }); }; CheckTreeLeafItem.eventHandler = Object.assign({}, MCheckTreeItem.eventHandler); CheckTreeLeafItem.property = checktreeleafbox_CTLIPropHandlers; /*** * @name data * @memberOf CheckTreeLeafItem# */ /***. * @name text * @type {string} * @memberOf CheckTreeLeafItem# */ /*** * @name desc * @type {string} * @memberOf CheckTreeLeafItem# */ /*** * @name value * @memberOf CheckTreeLeafItem# */ /* harmony default export */ const checktreeleafbox_CheckTreeLeafItem = (CheckTreeLeafItem); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreeleafbox/CTLBModes.js /*** * @extends CTBModeNormal * @param {MCheckTreeBox} elt * @param {[]} items * @constructor */ function CTLBModeNormal(elt, items) { CTBModeNormal.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(CTLBModeNormal, CTBModeNormal); CTLBModeNormal.prototype.getViewValues = function () { var values = []; this.children.forEach(function visit(node) { if (node.selected === 'all' && node.data.isLeaf) { values.push(node.data.value); } else if (node.children) { node.children.forEach(visit); } }); return values; }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/checktreeleafbox/MCheckTreeLeafBox.js /*** * @extends MCheckTreeBox * @constructor */ function MCheckTreeLeafBox() { checktreebox_MCheckTreeBox.apply(this, arguments); this.$box.addClass('as-check-tree-leaf-box'); } OOP/* default.mixClass */.ZP.mixClass(MCheckTreeLeafBox, checktreebox_MCheckTreeBox); MCheckTreeLeafBox.tag = 'MCheckTreeLeafBox'.toLowerCase(); MCheckTreeLeafBox.prototype.classes = Object.assign({}, checktreebox_MCheckTreeBox.prototype.classes, { ItemElement: checktreeleafbox_CheckTreeLeafItem, ModeNormal: CTLBModeNormal }); MCheckTreeLeafBox.render = function () { return checktreebox_MCheckTreeBox.render(); }; MCheckTreeLeafBox.property = checktreeleafbox_CTLBPropHandlers; MCheckTreeLeafBox.prototype.findItemByValue = function (value) { return this.itemListCtrl.getItemByValue(value); }; MCheckTreeLeafBox.eventHandler = Object.assign({}, checktreebox_MCheckTreeBox.eventHandler); ACore/* default.install */.Z.install(MCheckTreeLeafBox); /* harmony default export */ const checktreeleafbox_MCheckTreeLeafBox = (MCheckTreeLeafBox); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/multichecktreeleafmenu/MultiCheckTreeLeafMenu.js /** * @extends MultiCheckTreeMenu * @constructor */ function MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu() { multichecktreemenu_MultiCheckTreeMenu.apply(this, arguments) } OOP/* default.mixClass */.ZP.mixClass(MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu, multichecktreemenu_MultiCheckTreeMenu); MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu.tag = 'MultiCheckTreeLeafMenu'.toLowerCase(); MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu.prototype.classes = { Box: checktreeleafbox_MCheckTreeLeafBox } MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu.render = function () { return multichecktreemenu_MultiCheckTreeMenu.render().addClass('as-multi-check-tree-leaf-menu'); }; MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu.prototype.findItemsByValue = function (value) { return this.$box.findItemByValue(value); }; MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu.property = multichecktreeleafmenu_MCTLMPropHandler; ACore/* default.install */.Z.install(MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu); /* harmony default export */ const multichecktreeleafmenu_MultiCheckTreeLeafMenu = (MultiCheckTreeLeafMenu_MultiCheckTreeLeafMenu); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/selecttreeleafmenu/SelectTreeLeafMenu.js /* harmony default export */ const selecttreeleafmenu_SelectTreeLeafMenu = ((/* unused pure expression or super */ null && (SelectTreeLeafMenu))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dualselectbox/DSBPropHandlers.js var DSBPropHandlers = {}; DSBPropHandlers.items = { set: function (items) { this.itemListCtrl.setItems(items); if ('savedValue' in this) { this.modes.normal.setValue(this.savedValue, this.strictValue); } }, get: function () { return this.itemListCtrl.getItems(); } }; DSBPropHandlers.value = { set: function (value) { this.savedValue = value; this.modes.normal.setValue(value, this.strictValue); }, get: function () { return this.modes.normal.getValue(this.strictValue); } }; DSBPropHandlers.selectedItem = { get: function (){ return this.modes.normal.getSelectedItem(); } }; DSBPropHandlers.strictValue = { set: function (value) { if (value) { this.$box.addClass('as-strict-value'); } else { this.$box.removeClass('as-strict-value'); } }, get: function () { return this.$box.hasClass('as-strict-value'); } }; DSBPropHandlers.enableSearch = { set: function (value) { if (value) { this.$box.addClass('as-enable-search'); } else { this.$box.removeClass('as-enable-search'); } }, get: function () { return this.$box.hasClass('as-enable-search'); } }; /* harmony default export */ const dualselectbox_DSBPropHandlers = (DSBPropHandlers); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dualselectbox/DSBModes.js function DSBModeNormal(elt, items) { this.items = items; this.value = [undefined, undefined]; this.elt = elt; this.$lists = this.elt.$lists; this.$leftItems = items.map((item) => this._makeLeftItem(item)); this.$leftItemDict = this.$leftItems.reduce((ac, cr) => { ac[(0,utils.keyStringOf)(cr.itemData.value)] = cr; return ac; }, {}); this.$rightItemDict = {}; this.$rightItems = []; this.rightListDict = {}; if (items.length > 0) { this.viewRight(items[0].value) } this.$selectedLeft = null; this.$selectedRight = null; } DSBModeNormal.prototype._makeLeftItem = function (item) { var self = this; var itemElt = (0,ACore._)({ class: 'absol-selectlist-item', attr: { 'data-key': (0,utils.keyStringOf)(item.value) }, child: { tag: 'span', class:'absol-selectlist-item-text', child: { text: item.text } }, on: { click: function () { self.selectLeft(item.value); self.viewToSelected(); self.elt.notifyChange(); } } }); itemElt.itemData = item; return itemElt; }; DSBModeNormal.prototype._makeRightItem = function (leftItem, item) { var self = this; var itemElt = (0,ACore._)({ class: 'absol-selectlist-item', attr: { 'data-key': (0,utils.keyStringOf)(item.value) }, child: { tag: 'span', class:'absol-selectlist-item-text', child: { text: item.text } }, on: { click: function () { self.selectLeft(leftItem.value); self.selectRight(item.value); self.elt.notifyChange(); } } }); itemElt.itemData = item; return itemElt; } DSBModeNormal.prototype.selectLeft = function (leftValue) { var itemElt = this.$leftItemDict[(0,utils.keyStringOf)(leftValue)]; if (!itemElt) return false; if (this.$selectedLeft === itemElt) return true; if (this.$selectedLeft) { this.$selectedLeft.removeClass('as-selected'); this.$selectedLeft = null; } itemElt.addClass('as-selected'); this.$selectedLeft = itemElt; this.value[0] = leftValue; this.viewRight(leftValue); var ok = this.selectRight(this.value[1]); var sItems; if (!ok) { sItems = itemElt.itemData.items; if (sItems && sItems.length > 0) this.selectRight(sItems[0].value); } return true; }; DSBModeNormal.prototype.viewRight = function (leftValue) { var key = (0,utils.keyStringOf)(leftValue); var holder = this.rightListDict[key]; var items; var leftItem; if (!holder) { leftItem = this.$leftItemDict[key] && this.$leftItemDict[key].itemData; items = leftItem && leftItem.items; if (items) { holder = {}; holder.list = items.map(sItem => this._makeRightItem(leftItem, sItem)); holder.dict = holder.list.reduce((ac, cr) => { ac[(0,utils.keyStringOf)(cr.itemData.value)] = cr; return ac; }, {}); this.rightListDict[key] = holder; } } if (holder) { if (this.$rightItems !== holder.list) { this.$rightItems = holder.list; this.$rightItemDict = holder.dict; this.$lists[1].clearChild().addChild(this.$rightItems); } } else { this.$lists[1].clearChild(); this.$rightItems = null; this.$rightItemDict = {}; } } DSBModeNormal.prototype.selectRight = function (value) { var itemElt = this.$rightItemDict[(0,utils.keyStringOf)(value)]; if (!itemElt) return false; if (this.$selectedRight === itemElt) return true; if (this.$selectedRight) { this.$selectedRight.removeClass('as-selected'); this.$selectedRight = null; } itemElt.addClass('as-selected'); this.$selectedRight = itemElt; this.value[1] = value; return true; }; DSBModeNormal.prototype.onStart = function () { this.$lists[0].clearChild().addChild(this.$leftItems); this.$lists[1].clearChild().addChild(this.$rightItems); this.viewToSelected(); }; DSBModeNormal.prototype.onStop = noop/* default */.Z; DSBModeNormal.prototype.setValue = function (value, strictValue) { if (!(value instanceof Array)) { value = [undefined, undefined]; } while (value.length < 2) { value.push(undefined); } while (value.length > 2) value.pop(); var leftOK = this.selectLeft(value[0]); if (!leftOK && strictValue) { if (this.items.length > 0) { leftOK = this.selectLeft(this.items[0].value); } } if (leftOK) this.viewRight(this.value[0]); var rightOK = this.selectRight(value[1]); if (!rightOK && strictValue) { if (this.$selectedLeft && this.$selectedLeft.itemData.items && this.$selectedLeft.itemData.items.length > 0) { rightOK = this.selectRight(this.$selectedLeft.itemData.items[0].value); } } this.viewToSelected(); }; DSBModeNormal.prototype.getValue = function (strictValue) { var value = this.value.slice(); if (!strictValue) return value; if (!this.$leftItemDict[(0,utils.keyStringOf)(value[0])]) { value[0] = this.items[0] && this.items[0].value; } var rightHolder = this.rightListDict[(0,utils.keyStringOf)(value[0])]; if (rightHolder) { if (!rightHolder.dict[(0,utils.keyStringOf)(value[1])]) { if (rightHolder.list.length > 0) { value[1] = rightHolder.list[0].itemData.value; } } } return value; }; DSBModeNormal.prototype.getSelectedItem = function () { var value = this.value.slice(); var item = [null, null]; if (this.$leftItemDict[(0,utils.keyStringOf)(value[0])]) { item[0] = this.$leftItemDict[(0,utils.keyStringOf)(value[0])].itemData; } var rightHolder = this.rightListDict[(0,utils.keyStringOf)(value[0])]; if (rightHolder) { if (rightHolder.dict[(0,utils.keyStringOf)(value[1])]) { item[1] = rightHolder.dict[(0,utils.keyStringOf)(value[1])].itemData; } } return item; } DSBModeNormal.prototype.viewToSelected = function () { setTimeout(() => { if (this.$selectedLeft) { (0,utils.vScrollIntoView)(this.$selectedLeft); } if (this.$selectedRight) { (0,utils.vScrollIntoView)(this.$selectedRight); } }, 50); }; /*** * @extends DSBModeNormal * @param elt * @param items * @constructor */ function DSBModeSearch(elt, items) { DSBModeNormal.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(DSBModeSearch, DSBModeNormal); delete DSBModeSearch.prototype.getValue; delete DSBModeSearch.prototype.setValue; DSBModeSearch.prototype.onStart = function () { DSBModeNormal.prototype.onStart.call(this); this.$lists[0].scrollTop = 0; this.$lists[1].scrollTop = 0; if (this.$selectedLeft) { this.$selectedLeft.removeClass('as-selected'); this.$selectedLeft = null; } if (this.$selectedRight) { this.$selectedRight.removeClass('as-selected'); this.$selectedRight = null; } } DSBModeSearch.prototype.updateSelectedFromRef = function () { var normalMode = this.elt.modes.normal; if (normalMode.$selectedLeft) { this.selectLeft(normalMode.$selectedLeft.itemData.value, true); } if (normalMode.$selectedRight) { this.selectRight(normalMode.$selectedRight.itemData.value, true); } }; DSBModeSearch.prototype.selectLeft = function (leftValue, viewOnly) { if (!viewOnly) this.elt.modes.normal.selectLeft(leftValue); var itemElt = this.$leftItemDict[(0,utils.keyStringOf)(leftValue)]; if (this.$selectedLeft === itemElt) return true; if (this.$selectedLeft) { this.$selectedLeft.removeClass('as-selected'); this.$selectedLeft = null; } if (!itemElt) return false; itemElt.addClass('as-selected'); this.$selectedLeft = itemElt; this.viewRight(leftValue); var sItems = itemElt.itemData.items; if (sItems && sItems.length > 0 && !viewOnly) this.selectRight(sItems[0].value); return true; }; DSBModeSearch.prototype.selectRight = function (value, viewOnly) { if (!viewOnly) this.elt.modes.normal.selectRight(value); var itemElt = this.$rightItemDict[(0,utils.keyStringOf)(value)]; if (this.$selectedRight === itemElt) return true; if (this.$selectedRight) { this.$selectedRight.removeClass('as-selected'); this.$selectedRight = null; } if (!itemElt) return false; itemElt.addClass('as-selected'); this.$selectedRight = itemElt; return true; }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dualselectbox/MDSBItemListController.js function MDSBItemListController(elt) { this.elt = elt; this.items = []; this._searchItems = []; this._searchCache = {}; } MDSBItemListController.prototype.setItems = function (items) { this.items = (0,utils.copySelectionItemArray)(items); this._searchItems = (0,search/* prepareSearchForList */.Lb)((0,utils.copySelectionItemArray)(this.items)); this._searchCache = {}; var mode = new DSBModeNormal(this.elt, this.items); this.elt.modes.normal = mode; this.elt.mode = mode; mode.onStart(); }; MDSBItemListController.prototype.getItems = function () { return (0,utils.copySelectionItemArray)(this.items); }; MDSBItemListController.prototype.makeSearch = function (query) { if (this._searchCache[query]) return this._searchCache[query].resetAndGet(); var items = this._searchItems; var queryItem = (0,search/* default */.ZP)({ text: query }); var maxScore = 0; var holders = items.map(function (item) { var h = { item: item, itemScore: (0,search/* calcItemMatchScore */.lk)(queryItem, item), }; maxScore = Math.max(maxScore, h.itemScore); var childMaxScore = 0; if (item.items && item.items.length > 0) { h.child = item.items.map(function (cItem) { var cItemScore = (0,search/* calcItemMatchScore */.lk)(queryItem, cItem); maxScore = Math.max(maxScore, cItemScore); childMaxScore = Math.max(childMaxScore, cItemScore); return { item: cItem, itemScore: cItemScore }; }); h.childScore = childMaxScore; } return h; }); holders.sort(function (a, b) { return -Math.max(a.itemScore, a.childScore) + Math.max(b.itemScore, b.childScore) }); var midScore = maxScore / 2; holders = holders.filter(function (holder) { return Math.max(holder.itemScore, holder.childScore) >= midScore; }); var searchingResultItems = holders.map(function (holder) { var oldItem = holder.item; var item = { text: oldItem.text, value: oldItem.value }; var childHolders; if (holder.child) { childHolders = holder.child.slice(); childHolders.sort(function (a, b) { return -a.itemScore + b.itemScore; }); item.items = childHolders.map(function (cHolder) { return cHolder.item; }); item.isSearchItem = true; } return item; }); var mode = new DSBModeSearch(this.elt, searchingResultItems); this._searchCache[query] = { mode: mode, resetAndGet: function (){ return this.mode } }; return mode; }; /* harmony default export */ const dualselectbox_MDSBItemListController = (MDSBItemListController); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/dualselectbox.css var dualselectbox = __webpack_require__(560); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dualselectbox/MDualSelectBox.js /*** * @extends {AElement} * @constructor */ function MDualSelectBox() { this.$box = (0,ACore.$)('.am-dropdown-box', this); this.$lists = (0,ACore.$$)('.as-dual-select-box-list', this); this.itemListCtrl = new dualselectbox_MDSBItemListController(this); this.$searchInput = (0,ACore.$)(Searcher/* default.tag */.Z.tag, this) .on('stoptyping', this.eventHandler.searchModify); this.$closeBtn = (0,ACore.$)('.am-dropdown-box-close-btn', this); this.modes = { normal: new DSBModeNormal(this, []) } this.mode = this.modes.normal; this.strictValue = true; this.on('click', this.eventHandler.click); } MDualSelectBox.tag = 'MDualSelectBox'.toLowerCase(); MDualSelectBox.render = function () { return (0,ACore._)({ extendEvent: ['change', 'close'], class: ['am-modal', 'am-dropdown-box-modal'], child: { class: ['am-dual-select-box', 'am-dropdown-box', 'as-dropdown-box-common-style'], child: [ { class: 'am-dropdown-box-header', child: [ { tag: Searcher/* default.tag */.Z.tag }, { tag: 'button', class: 'am-dropdown-box-close-btn', child: 'span.mdi.mdi-close' } ] }, { class: ['am-dropdown-box-body', 'am-check-tree-box-body', 'as-dual-select-box-list-ctn'], child: [ { class: ['as-dual-select-box-list', 'absol-selectlist'], }, { class: 'as-dual-select-box-arrow-ctn', child: 'span.mdi.mdi-menu-right' }, { class: ['as-dual-select-box-list', 'absol-selectlist'] } ] } ] } }); }; MDualSelectBox.prototype.viewToSelected = function () { this.modes.normal.viewToSelected(); }; MDualSelectBox.prototype.notifyChange = function () { var newValue = this.value; if ((0,utils.keyStringOf)(newValue) !== (0,utils.keyStringOf)(this['savedValue'])) { this.savedValue = newValue; this.emit('change', { type: 'change', target: this }, this); } }; MDualSelectBox.prototype.resetSearchState = function () { this.$searchInput.value = ''; this.eventHandler.searchModify(); } MDualSelectBox.property = dualselectbox_DSBPropHandlers; MDualSelectBox.eventHandler = {}; MDualSelectBox.eventHandler.searchModify = function () { var query = this.$searchInput.value.trim().replace(/\s+/g, ' '); if (query.length > 0) { if (this.mode === this.modes.normal) { this.mode.onStop(); this.$box.addClass('as-searching'); } this.mode.search = this.itemListCtrl.makeSearch(query); this.mode = this.mode.search; this.mode.onStart(); } else { if (this.mode !== this.modes.normal) { this.mode.onStop(); this.mode = this.modes.normal; this.mode.onStart(); this.$box.removeClass('as-searching'); } } }; MDualSelectBox.eventHandler.click = function (event) { if (event.target === this || (0,EventEmitter/* hitElement */.EY)(this.$closeBtn, event)) { this.emit('close', { type: 'close', target: this, originalEvent: event }, this); } }; /* harmony default export */ const dualselectbox_MDualSelectBox = (MDualSelectBox); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dualselectmenu/MDSMBoxController.js function MDSMBoxController(elt) { this.elt = elt; this.$box = elt.$box; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.elt.on('click', this.ev_click); this.$box.on('close', this.ev_close); } MDSMBoxController.prototype.ev_click = function () { this.elt.isFocus = true; }; MDSMBoxController.prototype.ev_close = function () { this.elt.isFocus = false; }; MDSMBoxController.prototype.onFocus = function (){ this.$box.addTo(document.body); this.$box.viewToSelected(); this.elt.off('click', this.ev_click); }; MDSMBoxController.prototype.onBlur = function (){ this.$box.remove(); setTimeout(()=>{ this.elt.on('click', this.ev_click); }, 50); }; /* harmony default export */ const dualselectmenu_MDSMBoxController = (MDSMBoxController); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/VarScope.js var VarScope = __webpack_require__(1312); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dualselectmenu/DSMPropsHandlers.js var DSMPropsHandlers = {}; DSMPropsHandlers.isFocus = { set: function (value) { if (this.disabled || this.readOnly) value = false; value = !!value; if (value === this.hasClass('as-focus')) return; if (value) { this.savedValue = this.$box.value; this.addClass('as-focus'); this.boxCtrl.onFocus(); } else { this.removeClass('as-focus'); this.boxCtrl.onBlur(); this.updateText(); if ((0,utils.keyStringOf)(this.savedValue) !== (0,utils.keyStringOf)(this.$box.value)) { delete this.savedValue; this.notifyChange(); } } }, get: function () { return this.hasClass('as-focus'); } }; DSMPropsHandlers.items = { set: function (items) { this.$box.items = items; if ('pendingValue' in this) { this.$box.value = this.pendingValue; } this.updateText(); }, get: function () { return this.$box.items; } }; DSMPropsHandlers.value = { set: function (value) { this.pendingValue = value; this.$box.value = value; this.updateText(); }, get: function () { if (!this.strictValue && ('pendingValue' in this)) { return this.pendingValue; } var value = this.$box.value; var selectedItem = this.$box.selectedItem; if (!selectedItem || !selectedItem[0] || !selectedItem[1]) return null; return value; } }; DSMPropsHandlers.format = { set: function (value) { this.attr('data-format', value); this.updateText(); }, get: function () { return this.attr('data-format') || '$0, $1'; } }; DSMPropsHandlers.strictValue = { set: function (value) { this.$box.strictValue = value; if (value) { this.addClass('as-strict-value'); } else { this.removeClass('as-strict-value'); } }, get: function () { return this.$box.strictValue; } }; DSMPropsHandlers.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.hasClass('as-disabled'); } }; DSMPropsHandlers.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.hasClass('as-read-only'); } }; /* harmony default export */ const dualselectmenu_DSMPropsHandlers = (DSMPropsHandlers); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dualselectmenu/DualSelectMenu.js function DualSelectMenu_DualSelectMenu() { this.$box = (0,ACore._)({ tag: dualselectbox_MDualSelectBox, }); this.$item = (0,ACore.$)('.absol-selectlist-item', this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$box, 'enableSearch'); this.boxCtrl = new dualselectmenu_MDSMBoxController(this); this.strictValue = true; } DualSelectMenu_DualSelectMenu.tag = 'DualSelectMenu'.toLowerCase(); DualSelectMenu_DualSelectMenu.render = function () { return (0,ACore._)({ class: ['am-dual-select-menu', 'absol-selectmenu', 'as-dual-select-menu'], extendEvent: ['change'], attr: { tabindex: '1' }, child: [ { class: 'absol-selectmenu-holder-item', child: '.absol-selectlist-item' }, { tag: 'button', class: 'absol-selectmenu-btn', child: ['dropdown-ico'] }, 'attachhook', ] }); }; DualSelectMenu_DualSelectMenu.prototype.notifyChange = function () { // console.log('change') delete this['pendingValue']; this.emit('change', { type: 'change', target: this }, this); }; DualSelectMenu_DualSelectMenu.prototype.updateText = function () { var selectedItem = this.$box.selectedItem; var format = this.format; var firstToken = '__'; var secToken = '__'; if (selectedItem[0]) { firstToken = selectedItem[0].text + '' } if (selectedItem[1]) { secToken = selectedItem[1].text + '' } var text = format.replace('$0', firstToken) .replace('$1', secToken); this.$item.clearChild().addChild((0,ACore._)({ tag: 'span', class:'absol-selectlist-item-text', child: { text: text } })); }; DualSelectMenu_DualSelectMenu.property = dualselectmenu_DSMPropsHandlers; DualSelectMenu_DualSelectMenu.eventHandler = {}; /* harmony default export */ const dualselectmenu_DualSelectMenu = (DualSelectMenu_DualSelectMenu); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTHeadCell.js /*** * * @param {TTHeadRow} row * @param {TTDHeadCell} data * @constructor */ function TTHeadCell(row, data){ this.row = row; this.data = data; this.elt = (0,ACore._)({ tag:'th', class: 'as-tree-table-head-cell' }); if (data.attr) this.elt.attr(data.attr); if (data.style) this.elt.addStyle(data.style); this.row.head.table.elt.mAdapter.renderHeadCell(this.elt, this.data, this); } TTHeadCell.prototype.render = function (){ }; /* harmony default export */ const treetable_TTHeadCell = (TTHeadCell); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTHeadRow.js /** * * @param {TTHead} head * @param {TTDHeadRow} data * @constructor */ function TTHeadRow(head, data) { this.head = head; this.data = data; this.cells = this.data.cells.map(cellData => new treetable_TTHeadCell(this, cellData)); this.elt = (0,ACore._)({ tag:'tr', class:'as-tree-table-head-row' }); this.elt.addChild(this.cells.map((cell, i)=> cell.elt.attr('data-col-idx', ''+i))); } /* harmony default export */ const treetable_TTHeadRow = (TTHeadRow); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTHead.js /*** * * @param {TTTable} table * @param {TTDHead} data * @constructor */ function TTHead(table, data) { this.data = data; this.table = table; this.elt = this.table.elt.$head; this.rows = (this.data.rows || []).map(rowData => new treetable_TTHeadRow(this, rowData)); this.elt.clearChild().addChild(this.rows.map(r=> r.elt)); } /* harmony default export */ const treetable_TTHead = (TTHead); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTCell.js /*** * * @param {TTRow} row * @param {TTDCell} data * @constructor */ function TTCell(row, data) { this.row = row; this.data = data; } Object.defineProperty(TTCell.prototype, 'elt', { get: function () { if (!this._elt) { this._elt = (0,ACore._)({ tag: 'td', class: 'as-tree-table-cell', props: { ttCell: this }, on: { click: (event) => { if (this.data && this.data.on && this.data.on.click) { this.data.on.click.call(this._elt, event, this); } } } }); if (typeof this.data.class === "string") { (0,utils.addElementClassName)(this._elt, this.data.class); } if (this.data.attr) this._elt.attr(this.data.attr); if (this.data.class) this._elt.addClass(this.data.class); if (this.data.style) this._elt.addStyle(this.data.style); this.row.body.table.elt.mAdapter.renderBodyCell(this.elt, this.data, this); } return this._elt; } }); Object.defineProperty(TTCell.prototype, 'innerText', Object.getOwnPropertyDescriptor(dynamictable_DTBodyCell.prototype, 'innerText')); /* harmony default export */ const treetable_TTCell = (TTCell); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTRow.js /*** * * @param {TTBody} body * @param {TTDRow}data * @param parentRow * @constructor */ function TTRow(body, data, parentRow) { this.id = (0,stringGenerate.randomIdent)(8); this.level = parentRow ? parentRow.level + 1 : 0; this.body = body; this.data = data; this.parentRow = parentRow; this.clonedRow = null; this.cells = (this.data.cells || []).map(cellData => new treetable_TTCell(this, cellData)); this.subRows = (this.data.subRows || []).map(rowData => new TTRow(body, rowData, this)); if (!(0,utils.isNone)(data.id) && data.subRows && data.subRows.length > 0 && (data.id in this.body.table.elt.savedState)) { this.isOpened = !!this.body.table.elt.savedState[data.id]; } else if (typeof data.initOpened === 'boolean') { this.isOpened = data.initOpened; } else if (typeof body.table.data.initOpened === "boolean") { this.isOpened = body.table.data.initOpened; } else if (typeof body.table.elt.initOpened === 'boolean') { this.isOpened = body.table.elt.initOpened; } else if ((typeof body.table.data.initOpened === 'number')) { this.isOpened = this.level < body.table.data.initOpened ; } } TTRow.prototype.isOpened = false; /*** * * @param {Array<AElement>=} ac */ TTRow.prototype.getRowElements = function (ac) { ac = ac || []; ac.push(this.elt); if (this.isOpened) { this.subRows.forEach(row => row.getRowElements(ac)); } return ac; }; TTRow.prototype.toggle = function () { if (this.isOpened) this.close(); else this.open(); }; TTRow.prototype.open = function () { if (this.isOpened) return; if (this.subRows.length === 0) return; this.isOpened = true; if (!(0,utils.isNone)(this.data.id) && this.cells)//real node this.body.table.elt.savedState[this.data.id] = this.isOpened; this.elt.addClass('as-is-opened'); var rowElements = this.getRowElements(); rowElements.shift(); var bodyElt = this.body.elt; var bf = this.body.elt.findChildAfter(this.elt); if (bf) { rowElements.forEach(elt => bodyElt.addChildBefore(elt, bf)); } else { bodyElt.addChild(rowElements); } this.updateSizeUp(); this.requestParentUpdateContent(); }; TTRow.prototype.close = function () { if (!this.isOpened) return; var rowElements = this.getRowElements(); rowElements.shift(); rowElements.forEach(elt => elt.remove()); this.isOpened = false; if (!(0,utils.isNone)(this.data.id) && this.cells) this.body.table.elt.savedState[this.data.id] = this.isOpened; this._elt.removeClass('as-is-opened'); this.updateSizeUp(); this.requestParentUpdateContent(); }; TTRow.prototype.updateSizeUp = function () { this.body.table.elt.notifySizeChange(); }; TTRow.prototype.requestParentUpdateContent = function () { var c = this.body.table.elt.parentElement; while (c) { if (c.updateContent) { console.log('update content'); c.updateContent(); break; } else c = c.parentElement; } }; TTRow.prototype.remove = function () { var idx = -1; var rowElements; var removeRow = (idx, rows, dataRows) => { rows.splice(idx, 1); dataRows.splice(idx, 1); if (this.clonedRow) this.clonedRow.remove(); if (this.elt.parentElement) { rowElements = this.clonedRow ? this.clonedRow.getRowElements() : this.getRowElements(); rowElements.forEach(elt => elt.selfRemove()); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); } this.body.table.elt.queryCtrl.requestTransferSearchItems(); } if (this.parentRow) { idx = this.parentRow.subRows.indexOf(this); if (idx >= 0) { removeRow(idx, this.parentRow.subRows, this.parentRow.data.subRows); if (this.parentRow.subRows.length === 0) this.parentRow.elt.removeClass('as-has-sub-row'); } } else { idx = this.body.rows.indexOf(this); if (idx >= 0) { removeRow(idx, this.body.rows, this.body.data.rows); } } }; /*** * @param {TTDRow} rowData */ TTRow.prototype.addSubRow = function (rowData) { var row = new TTRow(this.body, rowData, this); var clonedRow; if (this.clonedRow) clonedRow = new TTClonedRow(row, null, this.subRows.length);//idx is not important var rowElements; var bf; if (this.elt.parentElement && this.isOpened) { rowElements = this.clonedRow ? this.clonedRow.getRowElements() : this.getRowElements(); bf = this.body.elt.findChildAfter(rowElements[rowElements.length - 1]); rowElements = clonedRow ? clonedRow.getRowElements() : row.getRowElements(); if (bf) { rowElements.forEach(elt => this.body.elt.addChildBefore(elt, bf)); } else { rowElements.forEach(elt => this.body.elt.addChild(elt)); } ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); } this.subRows.push(row); if (this.data.subRows) { this.data.subRows.push(rowData); } else { this.data.subRows = [rowData]; } if (this.clonedRow) this.clonedRow.addSubRow(clonedRow); if (this._elt) this.elt.addClass('as-has-sub-row'); this.body.table.elt.queryCtrl.requestTransferSearchItems(); }; /*** * @param {TTDRow} newRowData */ TTRow.prototype.replace = function (newRowData) { var idx = -1; var rowElements; var bf; var newRow; var newClonedRow; var needView; var makeReplaceRow = (idx, rows, dataRows) => { newRow = new TTRow(this.body, newRowData, this.parentRow); rows.splice(idx, 1, newRow); dataRows.splice(idx, 1, newRowData); if (this.clonedRow) { newClonedRow = new TTClonedRow(newRow, null, idx); this.clonedRow.replace(newClonedRow) } if (this.elt.parentElement) { rowElements = this.clonedRow ? this.clonedRow.getRowElements() : this.getRowElements(); bf = this.body.elt.findChildAfter(rowElements[rowElements.length - 1]); rowElements.forEach(elt => elt.selfRemove()); rowElements = newClonedRow ? newClonedRow.getRowElements() : newRow.getRowElements(); if (bf) { rowElements.forEach(elt => this.body.elt.addChildBefore(elt, bf)); } else { rowElements.forEach(elt => this.body.elt.addChild(elt)); } ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); } this.body.table.elt.queryCtrl.requestTransferSearchItems(); } if (this.parentRow) { idx = this.parentRow.subRows.indexOf(this); if (idx >= 0) { makeReplaceRow(idx, this.parentRow.subRows, this.parentRow.data.subRows); } } else { idx = this.body.rows.indexOf(this); if (idx >= 0) { makeReplaceRow(idx, this.body.rows, this.body.data.rows); } } }; /*** * @param {TTDRow} newRowData */ TTRow.prototype.addRowBefore = function (newRowData) { var idx = -1; var makeNewRowBefore = (idx, rows, dataRows) => { var row, clonedRow; var rowElements; row = new TTRow(this.body, newRowData, this.parentRow); if (this.clonedRow) { clonedRow = new TTClonedRow(row, null, idx); } if (this.elt.parentElement) { rowElements = clonedRow ? clonedRow.getRowElements() : row.getRowElements(); rowElements.forEach(elt => this.body.elt.addChildBefore(elt, this.elt)); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); } rows.splice(idx, 0, row); dataRows.splice(idx, 0, newRowData); if (this.clonedRow) { this.clonedRow.addRowBefore(clonedRow); } this.body.table.elt.queryCtrl.requestTransferSearchItems(); } if (this.parentRow) { idx = this.parentRow.subRows.indexOf(this); if (idx >= 0) { makeNewRowBefore(idx, this.parentRow.subRows, this.parentRow.data.subRows) } } else { idx = this.body.rows.indexOf(this); if (idx >= 0) { makeNewRowBefore(idx, this.body.rows, this.body.data.rows); } } }; /*** * @param {TTDRow} newRowData */ TTRow.prototype.addRowAfter = function (newRowData) { var idx = -1; var rowElements; var bf; var makeNewRowAfter = (idx, rows, dataRows) => { var row = new TTRow(this.body, newRowData, this.parentRow); var clonedRow; if (this.clonedRow) clonedRow = new TTClonedRow(row, null, idx); if (this.elt.parentElement) { rowElements = this.clonedRow ? this.clonedRow.getRowElements() : this.getRowElements(); bf = this.body.elt.findChildAfter(rowElements[rowElements.length - 1]); rowElements = clonedRow ? clonedRow.getRowElements() : row.getRowElements(); if (bf) { rowElements.forEach(elt => this.body.elt.addChildBefore(elt, bf)); } else { rowElements.forEach(elt => this.body.elt.addChild(elt)); } ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); } rows.splice(idx + 1, 0, row); dataRows.splice(idx + 1, 0, newRowData); if (this.clonedRow) this.clonedRow.addRowBefore(clonedRow); this.body.table.elt.queryCtrl.requestTransferSearchItems(); } if (this.parentRow) { idx = this.parentRow.subRows.indexOf(this); if (idx >= 0) { makeNewRowAfter(idx, this.parentRow.subRows, this.parentRow.data.subRows); } } else { idx = this.body.rows.indexOf(this); if (idx >= 0) { makeNewRowAfter(idx, this.body.rows, this.body.data.rows); } } }; Object.defineProperty(TTRow.prototype, 'elt', { get: function () { if (!this._elt) { this._elt = (0,ACore._)({ tag: 'tr', class: 'as-tree-table-row', attr: { 'data-level': this.level + '' }, props: { ttRow: this } }); if (this.data.id) this._elt.attr('data-id', this.data.id); if (this.isOpened) this._elt.addClass('as-is-opened'); if (this.subRows.length > 0) this._elt.addClass('as-has-sub-row'); this._elt.addChild(this.cells.map((cell, i) => (cell.elt).attr('data-col-idx', i + ''))); if (this.data.on && (typeof this.data.on.click === "function")) { this._elt.on('click', (event)=>{ this.data.on.click.call(this._elt, event, this); }); } this.$toggle = (0,ACore.$)('.as-tree-table-toggle', this._elt); if (this.$toggle) { this.$toggleCell = this.$toggle.parentElement; this.$toggleCell.addClass('as-has-toggle'); this.$toggle = (0,ACore._)({ elt: this.$toggle, child: 'toggler-ico', on: { click: () => { if (this.clonedRow) { this.clonedRow.toggle(); } else { this.toggle(); } } } }); } } return this._elt; } }); Object.defineProperty(TTRow.prototype, 'innerText', Object.getOwnPropertyDescriptor(dynamictable_DTBodyRow.prototype, 'innerText')); /* harmony default export */ const treetable_TTRow = (TTRow); /*** * * @param {TTRow} origin * @param queryResult * @param idx * @constructor */ function TTClonedRow(origin, queryResult, idx) { this.body = origin.body; this.idx = idx; this.id = origin.id; this._elt = origin.elt; this.elt = origin.elt; this.data = origin.data; this.origin = origin; this.score = queryResult && queryResult[this.id]; if (!queryResult) this.score = 1e6; this.isOpened = this.score && this.score[0] <= this.score[1]; this.attach(); if (this.isOpened) { this.subRows = this.origin.subRows.filter(row => queryResult[row.id]) .map((row, i) => new TTClonedRow(row, queryResult, i)); this.subRows.sort((a, b) => { var sa = a.score[1]; var sb = b.score[1]; if (sa !== sb) return sb - sa; return a.idx - b.idx; }); } else { this.subRows = this.origin.subRows.map((row, i) => new TTClonedRow(row, queryResult, i)); } } ['toggle', 'open', 'close', 'getRowElements', 'updateSizeUp'].forEach(key => { TTClonedRow.prototype[key] = TTRow.prototype[key]; }); TTClonedRow.prototype.remove = function () { var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow; var idx; if (parentRow) { idx = parentRow.subRows.indexOf(this); if (idx >= 0) { parentRow.subRows.splice(idx, 1); } } else { idx = this.origin.body.clonedRows.indexOf(this); if (idx >= 0) { this.origin.body.clonedRows.splice(idx, 1); } } }; TTClonedRow.prototype.replace = function (newClonedRow) { var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow; var idx; if (parentRow) { idx = parentRow.subRows.indexOf(this); if (idx >= 0) { parentRow.subRows.splice(idx, 1, newClonedRow); } } else { idx = this.origin.body.clonedRows.indexOf(this); if (idx >= 0) { this.origin.body.clonedRows.splice(idx, 1, newClonedRow); } } }; TTClonedRow.prototype.addRowBefore = function (newClonedRow) { var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow; var idx; if (parentRow) { idx = parentRow.subRows.indexOf(this); if (idx >= 0) { parentRow.subRows.splice(idx, 0, newClonedRow); } } else { idx = this.origin.body.clonedRows.indexOf(this); if (idx >= 0) { this.origin.body.clonedRows.splice(idx, 0, newClonedRow); } } }; TTClonedRow.prototype.addRowAfter = function (newClonedRow) { var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow; var idx; if (parentRow) { idx = parentRow.subRows.indexOf(this); if (idx >= 0) { parentRow.subRows.splice(idx + 1, 0, newClonedRow); } } else { idx = this.origin.body.clonedRows.indexOf(this); if (idx >= 0) { this.origin.body.clonedRows.splice(idx + 1, 0, newClonedRow); } } }; TTClonedRow.prototype.addSubRow = function (newClonedRow) { this.subRows.push(newClonedRow); }; TTClonedRow.prototype.attach = function () { if (this.isOpened) { this.origin.elt.addClass('as-is-opened'); } else { this.origin.elt.removeClass('as-is-opened'); } this.origin.clonedRow = this; }; TTClonedRow.prototype.detach = function () { if (this.origin.isOpened) { this.origin.elt.addClass('as-is-opened'); } else { this.origin.elt.removeClass('as-is-opened'); } this.origin.clonedRow = null; this.subRows.forEach(row => row.detach()); }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTBody.js /*** * * @param {TTTable}table * @param {TTDBody} data * @constructor */ function TTBody(table, data) { this.table = table; this.data = data; this.elt = this.table.elt.$body; /*** * * @type {TTRow[]} */ this.rows = (this.data.rows || []).map(rowData => new treetable_TTRow(this, rowData, null)); this.clonedRows = null; this.renderRows(); } TTBody.prototype.applyQueryResult = function (queryResult) { this.clearClonedRows(); if (queryResult) { this.table.elt.addClass('as-searching'); this.clonedRows = this.rows.filter(row => queryResult[row.id]) .map((row, i) => new TTClonedRow(row, queryResult, i)); this.clonedRows.sort((a, b) => { var sa = a.score[1]; var sb = b.score[1]; if (sa !== sb) return sb - sa; return a.idx - b.idx; }); this.renderRows(this.clonedRows); this.table.elt.notifySizeChange(); } else { this.table.elt.removeClass('as-searching'); this.renderRows(); } }; TTBody.prototype.clearClonedRows = function () { if (this.clonedRows) this.clonedRows.forEach(row => row.detach()); this.clonedRows = null; }; /*** * */ TTBody.prototype.renderRows = function (rows) { rows = rows || this.rows; this.elt.clearChild().addChild(rows.reduce((ac, row) => { row.getRowElements(ac); return ac; }, [])); }; /*** * * @param data */ TTBody.prototype.rowOf = function (data) { if (data instanceof treetable_TTRow) { data = data.data; } var result = null; var queue = this.rows.slice(); var cr; while (queue.length > 0 && !result) { cr = queue.shift(); if (cr.data === data || cr.data.id === data || (data.id && cr.data.id === data.id)) { result = cr; } else { queue.push.apply(queue, cr.subRows); } } return result; }; /*** * * @param {TTDRow} rowData */ TTBody.prototype.addRow = function (rowData) { var row = new treetable_TTRow(this, rowData, null); this.data.rows.push(rowData); this.rows.push(row); var elements = row.getRowElements(); elements.forEach(elt => this.elt.addChild(elt)); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); }; /* harmony default export */ const treetable_TTBody = (TTBody); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTTable.js /*** * * @param {TreeTable} elt * @param data * @constructor */ function TTTable(elt, data) { this.data = data; this.elt = elt; this.head = new treetable_TTHead(this, this.data.head); this.body = new treetable_TTBody(this, this.data.body); } /* harmony default export */ const treetable_TTTable = (TTTable); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTDataAdapter.js /*** * * @param {TreeTable} tableElt * @param opt * @constructor */ function TTDataAdapter(tableElt, opt) { this.tableElt = tableElt; this.data = null; Object.assign(this, opt || {}); } TTDataAdapter.prototype.render = function () { if (this.tableElt.table) { } this.tableElt.table = new treetable_TTTable(this.tableElt, this.data); }; /*** * * @param {AElement} elt * @param {TTDHeadCell} data * @param {TTHeadCell} controller */ TTDataAdapter.prototype.renderHeadCell = function (elt, data, controller) { if (data.child) { if (data.child.map) { elt.addChild(data.child.map(function (it) { return (0,ACore._)(it); })); } else { elt.addChild((0,ACore._)(data.child)); } } if (data.render) { data.render.call(null, elt, data, controller); } if (data.style) { elt.addStyle(data.style); } }; /*** * * @param {AElement} elt * @param {TTDCell} data * @param {TTCell} controller */ TTDataAdapter.prototype.renderBodyCell = function (elt, data, controller) { if (data.child) { if (data.child.map) { elt.addChild(data.child.map(function (it) { return (0,ACore._)(it); })) } else { elt.addChild((0,ACore._)(data.child)); } } if (data.render) { data.render.call(null, elt, data, controller); } if (data.style) { elt.addStyle(data.style); } if (data.class) { elt.addClass(data.class); } if (data.attr) { elt.attr(data.attr); } }; /* harmony default export */ const treetable_TTDataAdapter = (TTDataAdapter); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/treetable.css var treetable = __webpack_require__(7961); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TTQueryController.js /*** * * @param {TreeTable} elt * @constructor */ function TTQueryController(elt) { this.searchMaster = new ListSearchMaster/* default */.Z(); this.elt = elt; this.$filterInputs = []; this.$searchInput = null; this['request'] = this['request'].bind(this); this._waitDestroy(); this._rtsiIdx = -1; } TTQueryController.prototype._waitDestroy = function (){ setTimeout(()=>{ if (this.elt.isDescendantOf(document.body)) { this._waitDestroy(); } else { this.searchMaster.destroy(); } }, 10000); }; TTQueryController.prototype.attachFilterInput = function (input) { if (this.$filterInputs.indexOf(input) >= 0) return; if (input.detachTreeTable) input.detachTreeTable(); input.$treeTable = this; if ((0,ACore.$)(input).isSupportedEvent('stoptyping')) { input.on('stoptyping', this.request); } else { input.on('change', this.request); } input.detachTreeTable = this.detachFilterInput.bind(this, input); this.$filterInputs.push(input); }; TTQueryController.prototype.detachFilterInput = function (input) { var idx = this.$filterInputs.indexOf(input); if (idx < 0) return; this.$filterInputs.splice(idx, 1); input.off(this.$searchInput.isSupportedEvent('stoptyping') ? 'stoptyping' : 'change', this.request); input.detachTreeTable = null; }; TTQueryController.prototype.attachSearchInput = function (input) { if (this.$searchInput === input) return; if (input.detachTreeTable) input.detachTreeTable(); this.$searchInput = input; if ((0,ACore.$)(input).isSupportedEvent('stoptyping')) { input.on('stoptyping', this.request); } else { input.on('change', this.request); } input.detachTreeTable = this.detachSearchInput.bind(this, input) }; TTQueryController.prototype.detachSearchInput = function (input) { input = input || this.$searchInput; if (input !== this.$searchInput) return; input.off(this.$searchInput.isSupportedEvent('stoptyping') ? 'stoptyping' : 'change', this.request); input.detachTreeTable = null; this.$searchInput = null; }; TTQueryController.prototype.makeQuery = function () { var res = {}; if (this.$searchInput && this.$searchInput.value.trim().length > 0) { res.text = this.$searchInput.value.trim(); } for (var key in res) { return res; } return null; } TTQueryController.prototype.request = function () { var query = this.makeQuery(); if (query) this.searchMaster.query(query).then(searchResult => { this.elt.table.body.applyQueryResult(searchResult); }); else this.elt.table.body.applyQueryResult(null); }; TTQueryController.prototype.getSearchItems = function () { var getSearchItemOf = row => { var res = {}; res.text = row.innerText; res.value = row.id; if (row.subRows && row.subRows.length > 0) { res.items = row.subRows.map(getSearchItemOf) } return res; } return this.elt.table.body.rows.map(getSearchItemOf); }; TTQueryController.prototype.transferSearchItems = function () { this.searchMaster.transfer(this.getSearchItems()); }; TTQueryController.prototype.requestTransferSearchItems = function (){ if (this._rtsiIdx > 0) return; this._rtsiIdx = setTimeout(()=>{ this._rtsiIdx = -1; this.transferSearchItems(); }, 0); }; /* harmony default export */ const treetable_TTQueryController = (TTQueryController); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/LinearColorTinyBar.js /*** * @extends {AElement} * @constructor */ function LinearColorTinyBar() { this._value = 0; this._colorMapping = 0; this._colorMapping = this.BUILDIN_COLORS_RANGE.rainbow; this.$textCtn = (0,ACore.$)('.as-linear-color-tiny-text', this); /*** * * @type {Text} */ this.$text = this.$textCtn.firstChild; /*** * @type {string} valueText * @memberOf LinearColorTinyBar# * @name valueText */ /*** * @type {number} from 0..1..Inf * @memberOf LinearColorTinyBar# * @name value */ /*** * @type {Array} - from 0..1..Inf * @memberOf LinearColorTinyBar# * @name colorMapping# */ } LinearColorTinyBar.tag = 'LinearColorTinyBar'.toLowerCase(); LinearColorTinyBar.render = function () { return (0,ACore._)({ class: 'as-linear-color-tiny-bar', child: [ { tag: 'span', class: 'as-linear-color-tiny-text', style: { display: 'none' }, child: { text: '' } }, '.as-linear-color-tiny-bar-rect', ] }); } LinearColorTinyBar.prototype.BUILDIN_COLORS_RANGE = js_LinearColorBar.prototype.BUILDIN_COLORS_RANGE; LinearColorTinyBar.prototype._updateColor = function () { var value = this._value; var colorMapping = this.colorMapping; var i = 0; while (i < colorMapping.length) { if (i + 1 == colorMapping.length || colorMapping[i + 1].value > value) break; ++i; } this.addStyle('--color', colorMapping[i].color + ''); }; LinearColorTinyBar.property = {}; LinearColorTinyBar.property.value = { set: function (value) { if (typeof value === "string") value = parseFloat(value); if (typeof value !== "number") value = 0; if (isNaN(value)) value = 0; this._value = Math.max(value, 0); this.addStyle('--value', this._value + ''); this._updateColor(); }, get: function () { return this._value; } }; LinearColorTinyBar.property.valueText = { set: function (value) { if (typeof value === "string" || typeof value === 'number') { this.$text.data = value; this.$textCtn.removeStyle('display', 'none'); } else { this.$text.data = ''; this.$textCtn.addStyle('display', 'none'); } }, get: function () { return this.$text.data; } }; LinearColorTinyBar.property.colorMapping = { set: function (value) { var ok = true; if (typeof value === 'string') { if (!(value in this.BUILDIN_COLORS_RANGE)) { value = 'rainbow' } value = this.BUILDIN_COLORS_RANGE[value]; } else if (value instanceof Array) { ok = value.length > 1; if (!ok) { console.warn("colorMapping.length must > 1", value); } } else { console.warn("Invalid colorMapping", value); } if (!ok) value = this.BUILDIN_COLORS_RANGE.rainbow; this._colorMapping = value; this._updateColor(); }, get: function () { return this._colorMapping; } }; ACore/* default.install */.Z.install(LinearColorTinyBar); /* harmony default export */ const js_LinearColorTinyBar = (LinearColorTinyBar); printer.ShareSerializer.addHandlerBefore({ match: (elt, scope, stack) => { return elt.hasClass && elt.hasClass('as-linear-color-tiny-bar-rect'); }, exec: (printer, elt, scope, stack, accept) => { var bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(elt.getBoundingClientRect()); bound.x -= printer.O.x; bound.y -= printer.O.y; printer.rect(bound, { fill: elt.getComputedStyleValue('background-color') }); } }, '*') ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/treetable/TreeTable.js /*** * @typedef {Object} TTDHeadCell * @property {AbsolConstructDescriptor|Array<AbsolConstructDescriptor>|AElement} [child] * @property {function(elt:AElement, data:TTDHeadCell, controller:TTCell): void} render * @property {CSSStyleDeclaration} style */ /*** * @typedef {Object} TTDHeadRow * @property {Array<TTDHeadCell>} cells * @property {Array<TTDHeadRow>} subRows */ /*** * @typedef {Object} TTDHead * @property {Array<TTDHeadRow>} rows */ /*** * @typedef {Object} TTDCell * @property {AbsolConstructDescriptor|Array<AbsolConstructDescriptor>|AElement} [child] * @property {function(elt:AElement, data:TTDCell, controller:TTCell): void} render * @property {CSSStyleDeclaration} [style] * @property {string|Array<string>} class * @property {Object} attr */ /*** * @typedef {Object} TTDRow * @property {Array<TTDCell>} cells * @property {Array<TTDRow>} subRows * @property {string} [id] * */ /*** * @typedef {Object} TTDHead * @property {Array<TTDHeadRow>} rows */ /*** * @typedef {Object} TTDBody * @property {Array<TTDRow>} rows */ /*** * @typedef {Object} TTData * @property {TTDHead} head * @property {TTDBody} body * @property {boolean} [initOpened] */ /*** * @typedef {Object} TTDAdapter * @property {TTData} data */ var loadCss = () => { var dynamicCss = new DynamicCSS/* default */.Z(); dynamicCss.setRules(Array(20).fill(null).reduce((ac, cr, i) => { ac[`.as-tree-table-row[data-level="${i}"] .as-tree-table-toggle::before`] = { width: 2 * i + 'em' } ac[['.as-tree-table.as-hide-col-' + i + ' td[data-col-idx="' + i + '"]', '.as-tree-table.as-hide-col-' + i + ' th[data-col-idx="' + i + '"]'].join(',')] = { display: 'none' } ac[`.as-tree-table-row[data-level="${i}"] .as-tree-table-cell.as-has-toggle`] = { 'padding-left': `calc(5px + ${2 * i + 1.5}em)` } ac[`.as-printer-content .as-tree-table-row[data-level="${i}"] .as-tree-table-cell.as-has-toggle`] = { 'padding-left': `calc(5px + ${2 * i}em)` } return ac; }, {})).commit(); loadCss = noop/* default */.Z; } /*** * @extends AElement * @constructor */ function TreeTable() { loadCss(); this._hiddenColumns = []; this.$head = (0,ACore.$)('thead', this); this.$body = (0,ACore.$)('tbody', this); this.savedState = {}; /** * * @type {null|TTTable} */ this.table = null; /*** * * @type {null|TTDataAdapter} */ this.mAdapter = null; this.queryCtrl = new treetable_TTQueryController(this); this.rowMoveTool = new TTRowMoveTool(this); /*** * @name adapter * @type TTDAdapter * @memberOf TreeTable# */ /*** * @name searchInput * @type SearchTextInput * @memberOf TreeTable# */ } TreeTable.tag = 'TreeTable'.toLowerCase(); TreeTable.render = function () { return (0,ACore._)({ extendEvent: ['orderchange'], tag: 'table', class: 'as-tree-table', child: [ { tag: 'thead', class: 'as-tree-table-head' }, { tag: 'tbody' } ] }); }; TreeTable.prototype.removeRow = function (rowData) { if (!this.table) return; var row = this.table.body.rowOf(rowData); if (row) row.remove(); }; TreeTable.prototype.replaceRow = function (rowData, oldRowData) { if (!this.table) return; var row = this.table.body.rowOf(oldRowData); if (row) row.replace(rowData); }; TreeTable.prototype.getRows = function () { return this.table.body.rows.slice(); }; /*** * * @param rowData * @param {any|null} parentRow */ TreeTable.prototype.addRowIn = function (rowData, parentRow) { if (!this.table) return; var row; if (parentRow) { row = this.table.body.rowOf(parentRow); if (row) row.addSubRow(rowData); else { console.error('Can not find row', parentRow) } } else { this.table.body.addRow(rowData); } }; TreeTable.prototype.addRow = function (rowData) { if (!this.table) return; this.table.body.addRow(rowData); }; TreeTable.prototype.addRows = function (rowDataArr) { if (!this.table) return; rowDataArr.forEach(rowData => { this.table.body.addRow(rowData); }); }; /*** * * @param rowData * @param {any|null} bfRow */ TreeTable.prototype.addRowBefore = function (rowData, bfRow) { if (!this.table) return; var row; if (bfRow) { row = this.table.body.rowOf(bfRow); if (row) row.addRowBefore(rowData); else { console.error('Can not find row', bfRow) } } else { this.table.body.addRow(rowData); } }; /*** * * @param rowData * @param {any|null} atRow */ TreeTable.prototype.addRowAfter = function (rowData, atRow) { if (!this.table) return; var row; if (atRow) { row = this.table.body.rowOf(atRow); if (row) row.addRowAfter(rowData); else { console.error('Can not find row', atRow) } } else { if (this.table.body.rows.length === 0) { this.table.body.addRow(rowData); } else { this.table.body.rows[0].addRowBefore(rowData); } } }; TreeTable.prototype.rowOf = function (rowData) { return this.table.body.rowOf(rowData); }; TreeTable.prototype.viewIntoRow = function (row) { var counter = 300; var wait = () => { counter--; if (this.isDescendantOf(document.body)) { row = this.rowOf(row); if (row) { (0,utils.vScrollIntoView)(row.elt); } } else if (counter > 0) { setTimeout(wait, 30); } } setTimeout(wait, 10); }; TreeTable.prototype.notifySizeChange = function () { var c = this.parentElement; while (c) { if (typeof c.updateSize === 'function') c.updateSize(); else if (typeof c.requestUpdateSize === 'function') c.requestUpdateSize(); c = c.parentElement; } }; TreeTable.prototype.attachSearchInput = function (input) { this.searchInput = input; }; TreeTable.property = {}; TreeTable.property.adapter = { set: function (adapter) { if (adapter.type === 'struct') { adapter = ttStructAdapter2TTDAdapter(adapter); } this._adapterData = adapter; if (adapter && adapter.data) { adapter.data.initOpened = adapter.data.initOpened || adapter.initOpened;//adapt param } this.mAdapter = new treetable_TTDataAdapter(this, adapter); this.mAdapter.render(); this.queryCtrl.transferSearchItems(); var c = this.parentElement; while (c) { if (c.hasClass && c.hasClass('absol-table-vscroller') && c.update) { c.update(); break; } c = c.parentElement; } ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); var td = (0,ACore.$)('td', this); if (td) { var attachhook = (0,ACore._)('attachhook').once('attached', () => { attachhook.remove(); ResizeSystem/* default.requestUpdateSignal */.Z.requestUpdateSignal(); }).addTo(td); } }, get: function () { return this._adapterData; } }; TreeTable.property.filterInputs = { set: function (inputs) { }, get: function () { } }; TreeTable.property.searchInput = { set: function (input) { if (input) this.queryCtrl.attachSearchInput(input); else this.queryCtrl.detachSearchInput(); }, get: function () { return this.queryCtrl.$searchInput; } }; TreeTable.property.hiddenColumns = { set: function (value) { value = value || []; this._hiddenColumns.forEach(function (idxV) { this.removeClass('as-hide-col-' + idxV); }.bind(this)); this._hiddenColumns = value; this._hiddenColumns.forEach(function (idxV) { this.addClass('as-hide-col-' + idxV); }.bind(this)); var c = this.parentElement; while (c) { if (c.hasClass && (c.hasClass('absol-table-vscroller') || c.hasClass('absol-table-scroller')) && (c.update || c.updateContent)) { (c.update || c.updateContent).call(c); break; } c = c.parentElement; } if (this.isDescendantOf(document.body)) ResizeSystem/* default.update */.Z.update(); }, get: function () { return this._hiddenColumns; } }; ACore/* default.install */.Z.install(TreeTable); /* harmony default export */ const treetable_TreeTable = (TreeTable); /** * * @param {TreeTable} elt * @constructor */ function TTRowMoveTool(elt) { this.elt = elt; this.dragListenners = { dragstart: this.ev_dragStart.bind(this), drag: this.ev_drag.bind(this), dragend: this.ev_dragEnd.bind(this), dragdeinit: this.ev_dragDeinit.bind(this) }; this.$body = (0,ACore._)({ tag: Hanger/* default */.Z, elt: this.elt.$body, props: { hangOn: 3 } }).on('draginit', this.ev_dragInit.bind(this)); /** * * @type {null|TTRow} */ this.inParent = null; /** * * @type {null|TTRow} */ this.row = null; this.siblingRows = []; this.siblingBounds = []; } TTRowMoveTool.prototype._getZIndex = function () { var res = 0; var c = this.elt; while (c) { res = Math.max(res, parseInt(getComputedStyle(c).getPropertyValue('z-index'), 10) || 0); c = c.parentElement; } return res; }; TTRowMoveTool.prototype.ev_dragInit = function (event) { var row = this._findRow(event.target, true); if (!row) return; if (this.elt.table.body.clonedRows) return;// searching this.inParent = row.parentRow; this.row = row; this.$body.on(this.dragListenners); event.preventDefault(); }; TTRowMoveTool.prototype.ev_dragDeinit = function () { this.$body.off(this.dragListenners); }; TTRowMoveTool.prototype.ev_dragStart = function (event) { event.preventDefault(); var row = this.row; var originTableElt = this.elt.table.elt; var originBody = originTableElt.lastChild; var tableBound = originTableElt.getBoundingClientRect(); var zIndex = this._getZIndex(); this.$clonedTable = (0,ACore.$)(originTableElt.cloneNode(false)) .addClass('as-dt-body-row-cloned-ctn')//reuse class this.$clonedTable.addStyle({ tableLayout: 'fixed', width: tableBound.width + 'px', zIndex: zIndex + 200 }).addTo(document.body); this.$modal = this.$modal || (0,ACore._)({ tag: Modal/* default */.Z, style: { zIndex: zIndex + 201, userSelect: 'none' } }); this.$modal.addTo(document.body); this.$clonedBody = (0,ACore.$)(originBody.cloneNode()); this.$clonedTable.addChild(this.$clonedBody); var originRowElt = row.elt; this.$clonedRow = (0,ACore.$)(originRowElt.cloneNode(true)).addStyle({ backgroundColor: originRowElt.getComputedStyleValue('background-color') }); this.$clonedBody.addChild(this.$clonedRow); var rowBound = originRowElt.getBoundingClientRect(); this.$clonedTable.addStyle({ top: rowBound.top + 'px', left: rowBound.left + 'px' }); this.$newPostLine = this.$newPostLine || (0,ACore._)('.as-dt-insert-line'); this.$newPostLine.addStyle({ left: rowBound.left + 'px', width: rowBound.width + 'px' }); this.$newPostLine.addTo(document.body); this.rowBond = Rectangle/* default.fromClientRect */.Z.fromClientRect(rowBound); this.mouseOffset = event.currentPoint.sub(this.rowBond.A()); Array.prototype.forEach.call(this.$clonedRow.childNodes, (td, i) => { var originTd = originRowElt.childNodes[i]; var bound = originTd.getBoundingClientRect(); (0,ACore.$)(td).addStyle({ 'width': bound.width + 'px', boxSizing: 'border-box' }); }); this.siblingRows = this.inParent ? this.inParent.subRows.slice() : this.elt.table.body.rows.slice(); this.firstSiblingRow = this.inParent ? this.inParent.subRows[0] : this.elt.table.body.rows[0]; this.siblingBounds = (this.inParent ? this.inParent.subRows : this.elt.table.body.rows).map(row => this._boundOfRow(row)); this.idx = this.siblingRows.indexOf(this.row); this.newIdx = this.idx; this.$scroller = (0,utils.findVScrollContainer)(this.elt); if (this.$scroller === document.body.parentElement) this.$scroller = null; this.overflowCheckITV = setInterval(() => { if (!this.$scroller) return; var scrollerBound = this.$scroller.getBoundingClientRect(); var cloneBound = this.$clonedTable.getBoundingClientRect(); if (cloneBound.height >= scrollerBound.height) return; var newScrollTop = this.$scroller.scrollTop; if (cloneBound.top < scrollerBound.top) { newScrollTop = newScrollTop - Math.min(100, (scrollerBound.top - cloneBound.top) / 6); } else if (cloneBound.bottom > scrollerBound.bottom) { newScrollTop = newScrollTop - Math.min(100, (scrollerBound.bottom - cloneBound.bottom) / 6); newScrollTop = Math.min(this.$scroller.scrollHeight - this.$scroller.clientHeight, newScrollTop); } newScrollTop = Math.max(0, newScrollTop); if (newScrollTop !== this.$scroller.scrollTop) { this.$scroller.scrollTop = newScrollTop; } }, 33); }; TTRowMoveTool.prototype._boundOfRow = function (row) { var rowElements = row.getRowElements(); var bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(rowElements[0].getBoundingClientRect()); if (rowElements.length > 1) { bound = bound.merge( Rectangle/* default.fromClientRect */.Z.fromClientRect(rowElements[rowElements.length - 1].getBoundingClientRect()) ); } return bound; }; TTRowMoveTool.prototype.ev_drag = function (event) { event.preventDefault(); var newPos = event.currentPoint.sub(this.mouseOffset); this.$clonedTable.addStyle('top', newPos.y + 'px'); var firstSiblingRowBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.firstSiblingRow.elt.getBoundingClientRect()); var viewDelta = firstSiblingRowBound.A().sub(this.siblingBounds[0].A()).y; var y = newPos.y + this.rowBond.height / 2 - viewDelta; var beforeIdx = this.siblingBounds.length; var rBound; for (var i = 0; i < this.siblingBounds.length; ++i) { rBound = this.siblingBounds[i]; if (rBound.centerPoint().y > y) { beforeIdx = i; break; } } if ((beforeIdx === this.idx + 1 || beforeIdx === this.idx)) { this.$newPostLine.addStyle('display', 'none'); this.newIdx = this.idx; } else { this.$newPostLine.removeStyle('display'); if (beforeIdx < this.siblingBounds.length) { this.$newPostLine.addStyle('top', this.siblingBounds[beforeIdx].y + viewDelta + 'px'); if (beforeIdx < this.idx) { this.newIdx = beforeIdx; } else { this.newIdx = beforeIdx - 1; } } else { this.newIdx = this.siblingBounds.length - 1; this.$newPostLine.addStyle('top', this.siblingBounds[this.siblingBounds.length - 1].C().y + viewDelta + 'px'); } } }; TTRowMoveTool.prototype.ev_dragEnd = function (event) { clearInterval(this.overflowCheckITV); this.$modal.remove(); this.$newPostLine.remove(); this.$clonedTable.remove(); if (this.newIdx !== this.idx) { if (this.inParent) { this.inParent.subRows.splice(this.idx, 1); this.inParent.subRows.splice(this.newIdx, 0, this.row); this.inParent.data.subRows.splice(this.idx, 1); this.inParent.data.subRows.splice(this.newIdx, 0, this.row.data); } else { this.elt.table.body.rows.splice(this.idx, 1); this.elt.table.body.rows.splice(this.newIdx, 0, this.row); this.elt.table.body.data.rows.splice(this.idx, 1); this.elt.table.body.data.rows.splice(this.newIdx, 0, this.row.data); } this.elt.table.body.renderRows(); this.elt.emit('orderchange', { type: 'orderchange', target: this.row, inParent: this.inParent || this.elt.table.body, inParentData: this.inParent ? this.inParent.data : this.elt.table.body.data, from: this.idx, to: this.newIdx, originalEvent: event, row: this.row, data: this.row.data, devMessage: this.inParent ? 'order change in array event.inParent.subRows' : 'order change in array event.inParent.rows' }); } }; TTRowMoveTool.prototype._findRow = function (elt, inDraZone) { var hitDragZone = false; while (elt) { if (elt.classList.contains('as-drag-zone')) hitDragZone = true; if (elt.ttRow) { if (hitDragZone || !inDraZone) return elt.ttRow; return null; } elt = elt.parentElement; } return null; }; /*** * * @param adapterData * @returns {TTDAdapter} */ function ttStructAdapter2TTDAdapter(adapterData) { var toString = { 'Date': x => x ? (0,datetime.formatDateTime)(x, 'dd/MM/yyyy') : '', 'DateTime': x => x ? (0,datetime.formatDateTime)(x, 'dd/MM/yyyy HH:mm') : '', text: x => (x || '') + '' }; var getItemDict = desc => { var dict = desc.__dict__; if (!dict) { Object.defineProperty(desc, '__dict__', { enumerable: false, writable: true, configurable: true, value: (desc.items || []).reduce(function makeDict(ac, cr) { var key = (0,utils.keyStringOf)(cr.value); ac[key] = cr; if (cr.items && cr.items.reduce) { cr.items.reduce(makeDict, ac); } return ac; }, {}) }); dict = desc.__dict__; } return dict; } var handlers = { 'Date': x => [{ tag: 'span', child: { text: x ? (0,datetime.formatDateTime)(x, 'dd/MM/yyyy') : '' } }], 'DateTime': x => [{ tag: 'span', child: { text: x ? (0,datetime.formatDateTime)(x, 'dd/MM/yyyy HH:mm') : '' } }], text: x => [{ tag: 'span', child: { text: (x || '') + '' } }], performance: (x, desc) => { return [{ tag: js_LinearColorTinyBar.tag, props: { colorMapping: desc.colorMapping || 'performance', value: x, extend: (typeof desc.extend === "number") && (desc.extend > 0) ? desc.extend : 0.5, valueText: typeof x === 'number' ? (x * 100).toFixed(2) + '%' : x + '' } }] }, enum: (x, desc) => { var dict = getItemDict(desc); var item = dict[(0,utils.keyStringOf)(x)]; if (item) return [{ tag: 'span', child: { text: item.text } }]; else return [{ tag: 'span', child: { text: '' } }]; }, '{enum}': (x, desc) => { var dict = getItemDict(desc); if (!(x instanceof Array)) return [{ tag: 'span', child: { text: '' } }]; var items = x.map(it => dict[(0,utils.keyStringOf)(it)]).filter(it => !!it); var text = items.map(it => it.text).join(', '); return [{ tag: 'span', child: { text: text } }]; } } /** * * @type {TTDAdapter} */ var res = { data: { initOpened: true, head: { rows: [ { cells: adapterData.propertyNames.map(name => { var cellData = { child: { text: name } }; var descriptor = adapterData.propertyDescriptors[name]; if (descriptor && descriptor.text) cellData.child.text = descriptor.text; return cellData; }) } ] }, body: { rows: adapterData.records.map(function visit(it) { var row = {}; row.cells = adapterData.propertyNames.map(name => { var descriptor = adapterData.propertyDescriptors[name]; var type = (descriptor && descriptor.type) || 'text' var value = it[name]; var f = toString[type] || toString.text; var text = f(value); var handler = handlers[type] || handlers.text; var cell = { innerText: text, attr: { 'data-type': type }, child: handler(value, descriptor) }; if (name === adapterData.treeBy) { cell.child.unshift('.as-tree-table-toggle'); } return cell; }); if (it.__children__) { row.subRows = it.__children__.map(visit); } return row; }) } } }; return res; } printer.ShareSerializer.addHandlerBefore({ id: 'TreeTableCellBorder', match: (elt, scope, stack) => { if (!elt.hasClass) return false; if (!elt.hasClass('as-tree-table-head-cell') && !elt.hasClass('as-tree-table-cell')) return false; var style = getComputedStyle(elt); var borderColor = style.getPropertyValue('border-color'); var borderStyle = style.getPropertyValue('border-style'); var borderWidth = style.getPropertyValue('border-width'); var borderRadius = style.getPropertyValue('border-radius'); if (borderStyle === 'none' || borderWidth === '0px') return false; scope.declare('borderStyle', { width: parseFloat(borderWidth.replace('px', '')), radius: (0,attribute.parseMeasureValue)(borderRadius), color: borderColor, }); return true; }, exec: (printer, elt, scope, stack, accept) => { var borderStyle = scope.get('borderStyle'); var bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(elt.getBoundingClientRect()); var rect = bound.clone(); var strokeWidth = borderStyle.width; rect.x -= printer.O.x; rect.y -= printer.O.y; var radius = borderStyle.radius; var rounded; if (radius) { switch (radius.unit) { case '%': rounded = [radius.value * rect.width / 100, radius.value * rect.height / 100]; break; case 'px': rounded = radius.value; break; } } printer.rect(rect, { stroke: borderStyle.color, rounded: rounded, strokeWidth: strokeWidth }); return true; } }, 'Border'); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/finder/Finder.js + 2 modules var Finder = __webpack_require__(8556); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/treechart.css var treechart = __webpack_require__(255); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TreeChart.js function autoThemeVariable(viewElt) { var cp = getComputedStyle(document.body); var color = cp.getPropertyValue('--menu-background-color') || cp.getPropertyValue('--variant-color-primary') || 'blue'; color = Color.parse(color.trim()); var hsla = color.toHSLA(); hsla[2] = (hsla[2] + 1) / 2; hsla[1] = (hsla[1] + 0.2) / 2; var nColor = Color.fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]); viewElt.addStyle('--vert-node-background-color', nColor.toString('rgba')); nColor = nColor.getContrastYIQ(); viewElt.addStyle('--vert-node-text-color', nColor.toString('rgba')); hsla[0] += 0.1; if (hsla[0] > 1) hsla[0] -= 1; nColor = Color.fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]); viewElt.addStyle('--horz-node-background-color', nColor.toString('rgba')); nColor = nColor.getContrastYIQ(); viewElt.addStyle('--horz-node-text-color', nColor.toString('rgba')); hsla[0] -= 0.2; if (hsla[0] < 0) hsla[0] += 1; nColor = Color.fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]); viewElt.addStyle('--root-background-color', nColor.toString('rgba')); nColor = nColor.getContrastYIQ(); viewElt.addStyle('--root-text-color', nColor.toString('rgba')); } /*** * @extends AElement * @constructor */ function TreeChart() { // autoThemeVariable(this); this.$domSignal = (0,ACore._)('attachhook').addTo(this); this.domSignal = new DomSignal/* default */.ZP(this.$domSignal); this.domSignal.on('formatSize', this._formatSize.bind(this)); this.domSignal.on('fixWidth', this._fixWidth.bind(this)); this.$root = null; this._maxHorizonLevel = 2; /*** * @name data * @type {any} * @memberOf TreeChart# */ /*** * @name maxHorizonLevel * @type {number} * @memberOf TreeChart# */ } TreeChart.tag = 'TreeChart'; TreeChart.render = function () { return (0,ACore._)({ class: 'as-tree-chart' }); }; TreeChart.prototype._updateContent = function () { if (this.$root) { this.$root.remove(); this.$root = null; } var data = this.data; if (!data) return; var makeTree = (nodeData, level) => { var textChildren = []; if (nodeData.icon) { textChildren.push((0,ACore._)(nodeData.icon).addClass('as-tree-chart-icon')); } textChildren.push({ tag: 'span', class: 'as-tree-chart-text', child: { text: nodeData.text || nodeData.name } }); var elt = (0,ACore._)({ class: 'as-tree-chart-node', attr: { "data-level": level + '' }, child: [ { class: 'as-tree-chart-content-ctn', child: { class: 'as-tree-chart-content', child: textChildren } }, { class: 'as-tree-chart-child-ctn' } ] }); elt.$content = (0,ACore.$)('.as-tree-chart-content', elt); elt.$childCtn = (0,ACore.$)('.as-tree-chart-child-ctn', elt); var fillColor, textColor; if (typeof nodeData.fill === "string") { fillColor = Color_Color/* default.parse */.Z.parse(nodeData.fill); } else if (nodeData.fill instanceof Color_Color/* default */.Z) { fillColor = nodeData.fill; } if (fillColor) { textColor = fillColor.getContrastYIQ(); elt.$content.addStyle({ color: textColor.toString('hex8'), backgroundColor: fillColor.toString('hex8'), }); } if (level === this.maxHorizonLevel) elt.addClass('as-horizontal'); if (nodeData.isLeaf) elt.addClass('as-is-leaf'); if (nodeData.items && nodeData.items.length > 0) { elt.addClass('as-has-children'); /*** * @type {AElement[]} */ elt.$children = nodeData.items.map((it) => makeTree(it, level + 1)); elt.$childCtn.addChild(elt.$children); } return elt; }; this.$root = makeTree(data, 0).addTo(this); this.domSignal.emit('formatSize'); }; TreeChart.prototype._formatSize = function () { if (!this.$root) return; var cBound = this.getBoundingClientRect(); var maxHorizonLevel = this.maxHorizonLevel; var visit = (elt, level) => { if (!elt.$children) return; var sArr, maxS; if (level < maxHorizonLevel) { sArr = elt.$children.map(e => e.$content.getBoundingClientRect().height); maxS = Math.max.apply(Math, sArr); elt.$children.forEach((elt, i) => { if (sArr[i] < maxS) { elt.$content.addStyle('height', maxS + 'px'); } }); } else { sArr = elt.$children.map(e => e.$content.getBoundingClientRect().width); maxS = Math.max.apply(Math, sArr); elt.$children.forEach((elt, i) => { if (sArr[i] < maxS) { elt.$content.addStyle('width', maxS + 'px'); } }); } elt.$children.forEach(c => visit(c, level + 1)); }; visit(this.$root, 0); var newBound = this.getBoundingClientRect(); if (cBound.width !== newBound.width || cBound.height !== newBound.height) { ResizeSystem/* default.update */.Z.update(); } this.domSignal.emit('fixWidth'); }; TreeChart.prototype._fixWidth = function () { if (!this.$root) return; var cBound = this.getBoundingClientRect(); var maxHorizonLevel = this.maxHorizonLevel; var visit = (elt) => { if (!elt.$children) return; elt.$children.forEach(c => visit(c)); var bound, cBound; bound = elt.$childCtn.getBoundingClientRect(); cBound = elt.$childCtn.getBoundingRecursiveRect(100); if (cBound.width > bound.width) { elt.$childCtn.addStyle('width', cBound.width + 'px'); } }; visit(this.$root); var newBound = this.getBoundingClientRect(); if (cBound.width !== newBound.width || cBound.height !== newBound.height) { ResizeSystem/* default.update */.Z.update(); } }; TreeChart.property = {}; TreeChart.property.data = { set: function (data) { data = (0,generator/* copyJSVariable */.Ew)(data || null); this._data = data; this._updateContent(); }, get: function () { return this._data; } }; TreeChart.property.maxHorizonLevel = { set: function (value) { if (!(0,utils.isNaturalNumber)(value)) value = 2;//default this._maxHorizonLevel = value; this._updateContent(); }, get: function () { return this._maxHorizonLevel; } } ACore/* default.install */.Z.install(TreeChart); /* harmony default export */ const js_TreeChart = (TreeChart); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Clipboard.js var Clipboard = __webpack_require__(5164); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/MultiLanguageText.js /*** * @extends AElement * @constructor */ function MultiLanguageText() { this._v = Array(5).fill(null); this._key = null; this.$text = document.createTextNode(''); this.addChild(this.$text); } MultiLanguageText.tag = 'mlt'; MultiLanguageText.render = function () { return (0,ACore._)('span'); }; MultiLanguageText.prototype._updateText = function () { var text = ''; if (this._key && window.LanguageModule && window.LanguageModule.text2) { text = window.LanguageModule.text2(this._key, this._v); } text = text.replace(/<br>/g, '\n'); this.$text.data = text; }; MultiLanguageText.attribute = Array(5).fill(0).reduce((ac, u, i) => { ac['v' + i] = { set: function (value) { this._v[i] = value; this._updateText(); }, get: function () { return this._v[i]; }, remove: function () { this._v[i] = null; } } return ac; }, {}); MultiLanguageText.attribute.key = { set: function (value) { this._key = value; this._updateText(); }, get: function () { return this._key; }, remove: function () { this._key = null; } }; MultiLanguageText.replaceAll = function (root) { (0,ACore.$$)('mlt', root).forEach(elt=>{ if (elt.tagName !== 'MLT') return; var attr = Array.prototype.reduce.call(elt.attributes,(ac, at)=>{ ac[at.name] = at.value; return ac; },{}); elt.selfReplace((0,ACore._)({ tag: MultiLanguageText, attr: attr })); }); }; /* harmony default export */ const js_MultiLanguageText = (MultiLanguageText); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CopyableIconTooltip.js /*** * @extends {AElement} * @constructor */ function CopyableIconTooltip() { this._content = ''; this.$content = null; this._value = ''; this._icon = 'span.mdi.mdi-information-outline'; this.$icon = (0,ACore.$)('.as-cit-icon', this); this.tooltip = new TooltipController(this); } CopyableIconTooltip.tag = 'CopyableIconTooltip'.toLowerCase(); CopyableIconTooltip.render = function () { return (0,ACore._)({ tag: 'button', class: 'as-copyable-icon-tooltip', child: 'span.mdi.mdi-information-outline.as-cit-icon' }); }; CopyableIconTooltip.property = {}; CopyableIconTooltip.property.content = { set: function (value) { this._content = value || ''; if (typeof this._content === "object") { this.$content = (0,ACore._)(this._content); } else if (typeof this._content === "string") { this.$content = (0,ACore._)({ tag: 'span', style:{'white-space':'pre-wrap'}, props:{ innerHTML: this._content } }); js_MultiLanguageText.replaceAll(this.$content); } }, get: function () { return this._content; } }; CopyableIconTooltip.property.icon = { set: function (value) { value = value || ''; this._icon = value; this.clearChild(); this.$icon = null; if (value) { if ((0,Dom/* isDomNode */.mV)(value)) { if (value.parentElement) value = value.cloneNode(true); } else value = (0,ACore._)(value); this.$icon = (0,ACore.$)(value).addClass('as-cit-icon'); this.addChild(this.$icon); } }, get: function () { return this._icon; } }; CopyableIconTooltip.property.value = { set: function (value) { this._value = value; }, get: function () { return this._value; } }; /*** * * @param {CopyableIconTooltip} elt * @constructor */ function TooltipController(elt) { /*** * * @type {CopyableIconTooltip} */ this.elt = elt; this.elt.on('mouseenter', this.ev_mouseEnter.bind(this)); this.elt.on('mouseleave', this.ev_mouseLeave.bind(this)); this.elt.on('click', this.ev_click.bind(this)); this.session = -2; this.timeout = -1; } TooltipController.prototype.ev_mouseEnter = function () { clearTimeout(this.timeout); if (this.elt.$content) this.session = Tooltip/* default.show */.Z.show(this.elt, this.elt.$content, 'auto'); }; TooltipController.prototype.ev_mouseLeave = function () { this.timeout = setTimeout(() => { Tooltip/* default.close */.Z.close(this.session); }, 500) }; TooltipController.prototype.ev_click = function () { var text; if (this.elt._value !== null && this.elt._value !== undefined) { text = this.elt._value + ''; } else if (typeof this.elt._content === "string") { text = this.elt._content; } else { text = this.elt.$content.innerText; } (0,Clipboard.copyText)(text); Snackbar.show('Copied: ' + text); }; /* harmony default export */ const js_CopyableIconTooltip = (CopyableIconTooltip); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/DateNLevelInput.js /** * @extends {AElement} * @constructor */ function DateNLevelInput() { this.$level = (0,ACore.$)('.as-date-n-level-input-select-level', this); /** * * @type {DateInput} */ this.$date = (0,ACore.$)('dateinput', this); this.ctrl = new DateNLevelInputCtrl(this); this._allowLevels = this.defaultAllowLevels.slice(); (0,OOP/* drillProperty */.pj)(this, this.$date, 'min'); (0,OOP/* drillProperty */.pj)(this, this.$date, 'max'); /** * @name level * @type {"date"| "week" | "month" | "quarter" | "year"} * @memberOf DateNLevelInput# * */ /** * @name allowLevels * @type {Array<"date"| "week" | "month" | "quarter" | "year">} * @memberOf DateNLevelInput# * */ /** * @name value * @type {Date} * @memberOf DateNLevelInput# * */ /** * @readonly * @name format * @type {string} * @memberOf DateNLevelInput# * */ } DateNLevelInput.tag = 'DateNLevelInput'.toLowerCase(); DateNLevelInput.prototype.leve2format = { date: 'dd/MM/yyyy', week: 'Tuần ww, yyyy', month: 'MM/yyyy', quarter: 'Quý QQ, yyyy', year: 'yyyy' }; DateNLevelInput.prototype.leve2Name = { date: 'Ngày', week: 'Tuần', month: 'Tháng', quarter: 'Quý', year: 'Năm' } DateNLevelInput.prototype.defaultAllowLevels = ['date', 'month', 'year']; DateNLevelInput.render = function () { return (0,ACore._)({ class: 'as-date-n-level-input', extendEvent: ['change'], child: [ { tag: 'dateinput', props: { format: 'dd/MM/yyyy' } }, { tag: 'button', class: ['as-transparent-button', 'as-date-n-level-input-select-level'], child: 'span.mdi.mdi-cog' } ] }); }; DateNLevelInput.property = {}; DateNLevelInput.property.allowLevels = { set: function (value) { if (typeof value === "string") { value = value.split(/\s*,\s*/); } if (!(value instanceof Array)) { value = this.defaultAllowLevels.slice(); } value = value.filter(x => !!this.leve2format[x]); if (!value || value.length === 0) value = this.defaultAllowLevels.slice(); var prevLevel = this.level; this._allowLevels = value; var newLevel = this.level; if (prevLevel !== newLevel) { this.level = newLevel;//update } }, get: function () { return this._allowLevels.slice(); } }; DateNLevelInput.property.level = { set: function (value) { if (!this.leve2format[value]) value = 'date'; this.attr('data-level', value); this.$date.format = this.leve2format[value]; this.ctrl.prevVal = this.$date.value; this.ctrl.level = value; }, get: function () { var level = this.ctrl.level; if (this._allowLevels.indexOf(level) < 0) level = this._allowLevels[0]; return level; } }; DateNLevelInput.property.format = { get: function () { return this.$date.format; } }; DateNLevelInput.property.value = { set: function (value) { this.$date.value = value; this.ctrl.prevVal = this.$date.value; }, get: function () { return this.$date.value; } }; DateNLevelInput.property.readOnly = { set: function (value) { this.$date.readOnly = value; if (value) { this.addClass('as-read-only'); } else { this.removeClass('as-read-only'); } }, get: function () { return this.$date.readOnly; } }; DateNLevelInput.property.disabled = { set: function (value) { this.$date.disabled = value; this.$level.disabled = value; if (value) { this.addClass('as-disabled'); } else { this.removeClass('as-disabled'); } }, get: function () { return this.$date.disabled; } }; function DateNLevelInputCtrl(elt) { this.elt = elt; this.prevVal = this.elt.value; this.elt.$date.on('change', this.ev_dateChange.bind(this)); this.level = 'date'; QuickMenu/* default.toggleWhenClick */.Z.toggleWhenClick(this.elt.$level, { getMenuProps: () => { var props = {}; props.items = this.elt._allowLevels.map(name => { return { text: `${this.elt.leve2Name[name]} (${this.elt.leve2format[name]})`, level: name, icon: name === this.level ? 'span.mdi.mdi-check' : null } }); return props; }, onSelect: item => { if (this.level !== item.level) { this.level = item.level; this.ev_levelChange(); } } }) } DateNLevelInputCtrl.prototype.ev_dateChange = function (event) { this.notifyCanBeChanged(); }; DateNLevelInputCtrl.prototype.ev_levelChange = function (event) { var value = this.level; this.elt.attr('data-level', value); this.elt.$date.format = this.elt.leve2format[value]; this.elt.$date.value = null; this.notifyCanBeChanged(); }; DateNLevelInputCtrl.prototype.notifyCanBeChanged = function (force) { var value = this.elt.$date.value; if (force || !value !== !this.prevVal || (value && (0,datetime.compareDate)(value, this.prevVal) !== 0)) { this.elt.emit('change', Object.assign({}, { value: value, prevValue: this.prevVal, target: this.elt }), this.elt); this.prevVal = value; } }; /* harmony default export */ const js_DateNLevelInput = (DateNLevelInput); ACore/* default.install */.Z.install(DateNLevelInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/tableoftextinput.css var tableoftextinput = __webpack_require__(978); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/swatchestable.css var swatchestable = __webpack_require__(4132); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/red_cross.tpl /* harmony default export */ const red_cross = ("<svg width=\"$width\" height=\"$height\" version=\"1.1\" viewBox=\"0 0 $width $height\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g fill=\"none\" stroke=\"#f00\">\r\n <path d=\"m0 0 $width $height\"/>\r\n <path d=\"m$width 0-$width $heightz\" stroke-width=\"1px\"/>\r\n </g>\r\n</svg>\r\n"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/colorpicker/SwatchesTable.js /** * @extends AElement * @constructor */ function ColorCell() { this.$value = this.firstChild; if (!ColorCell.css) { ColorCell.css = new DynamicCSS/* default */.Z() .setProperty('.as-color-cell.as-null .as-color-cell-value', 'background-image', `url("data:image/svg+xml;base64,${(0,base64.base64EncodeUnicode)(red_cross.replace(/\$width/g, '24').replace(/\$height/g, '24'))}")`) .commit(); } } ColorCell.tag = 'ColorCell'.toString(); ColorCell.render = function () { return (0,ACore._)({ class: 'as-color-cell', child: [ '.as-color-cell-value' ] }); }; ColorCell.property = {}; ColorCell.property.value = { set: function (value) { if (value === null || value === undefined) { this.addClass('as-null'); } else if (value) { this.removeClass('as-null'); this.$value.addStyle('background-color', value + ''); } this._value = value; }, get: function () { return this._value; } }; function SwatchesTable() { this._data = []; this._poolCells = []; this._poolRows = []; this._dict = {}; } SwatchesTable.tag = 'SwatchesTable'.toLowerCase(); SwatchesTable.render = function () { return (0,ACore._)({ extendEvent: 'presscell', class: 'as-swatches-table' }); }; SwatchesTable.prototype.getCell = function () { if (arguments.length === 1) { var key = arguments[0]; if (key.toHex8) { key = key.toHex8(); } else if (typeof key == 'string') { key = Color_Color/* default.parse */.Z.parse(key); if (key) key = key.toHex8(); } key = key + ''; return this._dict[key]; } else if (arguments.length === 2) { return this.childNodes[arguments[0]] && this.childNodes[arguments[0]].childNodes[arguments[1]]; } }; SwatchesTable.eventHandler = {}; SwatchesTable.eventHandler.clickCell = function (cell, event) { this.emit('presscell', { target: this, cellElt: cell, value: cell.__swatchescell_value, rowIdx: cell.__swatchescell_row_idx, colIdx: cell.__swatchescell_col_idx }); } SwatchesTable.property = {}; SwatchesTable.property.data = { set: function (value) { this._dict = {}; value = value || [[null]]; if (typeof value == 'string') { value = { classic: MoqupsClassicSwathes, material: MaterialSwatches, bootstrap: BootstrapSwatches, ios: iOsSwatches, moqupsclassic: MoqupsClassicSwathes }[value] || [[null]]; } this._data = value; var child; while (this.childNodes.length > value.length) { child = this.firstChild; this._poolRows.push(child); this.removeChild(child); } while (this.childNodes.length < value.length) { if (this._poolRows.length > 0) child = this._poolRows.pop(); else child = (0,ACore._)('.as-swatches-table-row'); this.addChild(child); } var rowElt; var row; for (var i = 0; i < value.length; ++i) { rowElt = this.childNodes[i]; row = value[i]; while (rowElt.childNodes.length > row.length) { child = rowElt.firstChild; this._poolCells.push(child); rowElt.removeChild(child); } while (rowElt.childNodes.length < row.length) { if (this._poolCells.length > 0) child = this._poolCells.pop(); else { child = (0,ACore._)({ tag: ColorCell, class:'as-swatches-table-cell' }); child.on('click', this.eventHandler.clickCell.bind(this, child)); } rowElt.addChild(child); } for (var j = 0; j < row.length; ++j) { rowElt.childNodes[j].__swatchescell_row_idx = i; rowElt.childNodes[j].__swatchescell_col_idx = j; if (!row[j]) { rowElt.childNodes[j] .attr('title', null) // rowElt.childNodes[j].firstChild.removeStyle('background-color'); rowElt.childNodes[j].__swatchescell_value = row[j]; this._dict['null'] = rowElt.childNodes[j]; } else if (row[j].toHex8) { rowElt.childNodes[j].value = row[j]; rowElt.childNodes[j].attr('title', null); rowElt.childNodes[j].__swatchescell_value = row[j]; this._dict[row[j].toHex8()] = rowElt.childNodes[j]; } else if (typeof row[j] == 'object') { if (row[j].value) { rowElt.childNodes[j].value = row[j].value; // rowElt.childNodes[j].firstChild.addStyle('background-color', row[j].value); rowElt.childNodes[j].__swatchescell_value = row[j].value; this._dict[Color_Color/* default.parse */.Z.parse(row[j].value + '').toHex8()] = rowElt.childNodes[j]; } else { rowElt.childNodes[j].firstChild.removeStyle('background-color'); this._dict[Color_Color/* default.parse */.Z.parse('transparent').toHex8()] = rowElt.childNodes[j]; } rowElt.childNodes[j].attr('title', row[j].name || null) } else if (typeof row[j] == 'string') { rowElt.childNodes[j].value = row[j]; rowElt.childNodes[j].attr('title', null); rowElt.childNodes[j].__swatchescell_value = row[j]; this._dict[Color_Color/* default.parse */.Z.parse(row[j]).toHex8()] = rowElt.childNodes[j]; } } } }, get: function () { return this._data; } }; var MoqupsClassicSwathes = [ [ { "name": "White", "value": "#ffffff" }, { "name": "± Wild Sand", "value": "#f7f6f6" }, { "name": "± Gallery", "value": "#ebebeb" }, { "name": "± Alto", "value": "#d6d6d6" }, { "name": "Silver", "value": "#c0c0c0" }, { "name": "± Silver Chalice", "value": "#aaaaaa" }, { "name": "± Gray", "value": "#929292" }, { "name": "Boulder", "value": "#7a7a7a" }, { "name": "± Scorpion", "value": "#606060" }, { "name": "± Tundora", "value": "#444444" }, { "name": "± Mine Shaft", "value": "#232323" }, { "name": "Black", "value": "#000000" } ], [ { "name": "± Prussian Blue", "value": "#003748" }, { "name": "± Green Vogue", "value": "#021f54" }, { "name": "± Black Rock", "value": "#120639" }, { "name": "± Violet", "value": "#2f073b" }, { "name": "± Bulgarian Rose", "value": "#3d051b" }, { "name": "± Lonestar", "value": "#5e0202" }, { "name": "± Brown Bramble", "value": "#5b1a04" }, { "name": "± Cioccolato", "value": "#58330a" }, { "name": "± Bronze Olive", "value": "#553d0d" }, { "name": "± Himalaya", "value": "#656119" }, { "name": "± West Coast", "value": "#4e5516" }, { "name": "± Seaweed", "value": "#243e16" } ], [ { "name": "± Astronaut Blue", "value": "#004e63" }, { "name": "± Catalina Blue", "value": "#033076" }, { "name": "± Violet", "value": "#1c0c4f" }, { "name": "± Jagger", "value": "#460e56" }, { "name": "± Maroon Oak", "value": "#570e28" }, { "name": "± Dark Burgundy", "value": "#840705" }, { "name": "± Kenyan Copper", "value": "#7d2709" }, { "name": "± Raw Umber", "value": "#7b4812" }, { "name": "± Raw Umber", "value": "#785616" }, { "name": "± Wasabi", "value": "#8c8525" }, { "name": "± Fern Frond", "value": "#6e7623" }, { "name": "± Woodland", "value": "#355723" } ], [ { "name": "± Blue Lagoon", "value": "#006e8c" }, { "name": "± Cobalt", "value": "#0844a4" }, { "name": "± Persian Indigo", "value": "#2e1572" }, { "name": "± Honey Flower", "value": "#631878" }, { "name": "± Claret", "value": "#7a163c" }, { "name": "± Milano Red", "value": "#b70f0a" }, { "name": "± Rust", "value": "#af3a11" }, { "name": "± Desert", "value": "#aa671d" }, { "name": "± Reef Gold", "value": "#a77a23" }, { "name": "± Earls Green", "value": "#c3bb38" }, { "name": "± Sushi", "value": "#99a534" }, { "name": "± Fern Green", "value": "#4c7a34" } ], [ { "name": "± Bondi Blue", "value": "#008db1" }, { "name": "± Denim", "value": "#0c59cf" }, { "name": "± Daisy Bush", "value": "#3b1d8f" }, { "name": "± Seance", "value": "#7e2199" }, { "name": "± Disco", "value": "#9c1f4d" }, { "name": "± Crimson", "value": "#e61610" }, { "name": "± Orange Roughy", "value": "#dc4c18" }, { "name": "± Brandy Punch", "value": "#d68227" }, { "name": "± Hokey Pokey", "value": "#d39c2f" }, { "name": "± Starship", "value": "#f4eb49" }, { "name": "± Turmeric", "value": "#c1d045" }, { "name": "± Apple", "value": "#629c44" } ], [ { "name": "± Cerulean", "value": "#00a4d3" }, { "name": "± Blue Ribbon", "value": "#1464f6" }, { "name": "± Daisy Bush", "value": "#5125ad" }, { "name": "± Purple Heart", "value": "#9c29b7" }, { "name": "± Maroon Flush", "value": "#bb285c" }, { "name": "± Red Orange", "value": "#ff3823" }, { "name": "± Orange", "value": "#ff6624" }, { "name": "± Sunshade", "value": "#ffa834" }, { "name": "± Bright Sun", "value": "#fec63d" }, { "name": "± Laser Lemon", "value": "#fefb64" }, { "name": "± Confetti", "value": "#d7eb5a" }, { "name": "± Mantis", "value": "#72bb53" } ], [ { "name": "± Bright Turquoise", "value": "#00c8f8" }, { "name": "± Dodger Blue", "value": "#3d8af7" }, { "name": "± Purple Heart", "value": "#6334e3" }, { "name": "± Electric Violet", "value": "#c238eb" }, { "name": "± Cerise Red", "value": "#e93578" }, { "name": "± Persimmon", "value": "#ff5d55" }, { "name": "± Coral", "value": "#ff8351" }, { "name": "± Texas Rose", "value": "#ffb253" }, { "name": "± Golden Tainoi", "value": "#ffc957" }, { "name": "± Dolly", "value": "#fef67f" }, { "name": "± Manz", "value": "#e2ee79" }, { "name": "± Feijoa", "value": "#92d36e" } ], [ { "name": "± Malibu", "value": "#4dd7fa" }, { "name": "± Malibu", "value": "#75a9f9" }, { "name": "± Cornflower Blue", "value": "#8b51f5" }, { "name": "± Heliotrope", "value": "#d757f6" }, { "name": "± Froly", "value": "#f06e9c" }, { "name": "± Vivid Tangerine", "value": "#ff8a84" }, { "name": "± Hit Pink", "value": "#ffa382" }, { "name": "± Macaroni and Cheese", "value": "#ffc581" }, { "name": "± Grandis", "value": "#ffd783" }, { "name": "± Picasso", "value": "#fef8a0" }, { "name": "± Khaki", "value": "#e9f29b" }, { "name": "± Feijoa", "value": "#aedd94" } ], [ { "name": "± Anakiwa", "value": "#91e4fb" }, { "name": "± Sail", "value": "#a8c6fa" }, { "name": "± Perfume", "value": "#b38df7" }, { "name": "± Heliotrope", "value": "#e692f8" }, { "name": "± Illusion", "value": "#f6a2bf" }, { "name": "± Sundown", "value": "#ffb4b0" }, { "name": "± Wax Flower", "value": "#ffc3ae" }, { "name": "± Caramel", "value": "#ffd8ad" }, { "name": "± Navajo White", "value": "#ffe3ae" }, { "name": "± Pale Prim", "value": "#fefac0" }, { "name": "± Corn Field", "value": "#f1f6be" }, { "name": "± Tea Green", "value": "#cbe8ba" } ], [ { "name": "± French Pass", "value": "#c9f1fd" }, { "name": "± Hawkes Blue", "value": "#d4e3fc" }, { "name": "± Perfume", "value": "#dacafb" }, { "name": "± Perfume", "value": "#f2c9fb" }, { "name": "± Chantilly", "value": "#fad2e0" }, { "name": "± Cosmos", "value": "#ffdad8" }, { "name": "± Peach Schnapps", "value": "#ffe2d8" }, { "name": "± Derby", "value": "#ffecd7" }, { "name": "± Pink Lady", "value": "#fff1d7" }, { "name": "± Off Yellow", "value": "#fefce0" }, { "name": "± Citrine White", "value": "#f7fade" }, { "name": "± Zanah", "value": "#dfedd6" } ] ]; var MaterialSwatches = [ [ { "name": "Red 50", "value": "#ffebee" }, { "name": "Red 100", "value": "#ffcdd2" }, { "name": "Red 200", "value": "#ef9a9a" }, { "name": "Red 300", "value": "#e57373" }, { "name": "Red 400", "value": "#ef5350" }, { "name": "Red 500", "value": "#f44336" }, { "name": "Red 600", "value": "#e53935" }, { "name": "Red 700", "value": "#d32f2f" }, { "name": "Red 800", "value": "#c62828" }, { "name": "Red 900", "value": "#b71c1c" } ], [ { "name": "Pink 50", "value": "#fce4ec" }, { "name": "Pink 100", "value": "#f8bbd0" }, { "name": "Pink 200", "value": "#f48fb1" }, { "name": "Pink 300", "value": "#f06292" }, { "name": "Pink 400", "value": "#ec407a" }, { "name": "Pink 500", "value": "#e91e63" }, { "name": "Pink 600", "value": "#d81b60" }, { "name": "Pink 700", "value": "#c2185b" }, { "name": "Pink 800", "value": "#ad1457" }, { "name": "Pink 900", "value": "#880e4f" } ], [ { "name": "Purple 50", "value": "#f3e5f5" }, { "name": "Purple 100", "value": "#e1bee7" }, { "name": "Purple 200", "value": "#ce93d8" }, { "name": "Purple 300", "value": "#ba68c8" }, { "name": "Purple 400", "value": "#ab47bc" }, { "name": "Purple 500", "value": "#9c27b0" }, { "name": "Purple 600", "value": "#8e24aa" }, { "name": "Purple 700", "value": "#7b1fa2" }, { "name": "Purple 800", "value": "#6a1b9a" }, { "name": "Purple 900", "value": "#4a148c" } ], [ { "name": "Deep Purple 50", "value": "#ede7f6" }, { "name": "Deep Purple 100", "value": "#d1c4e9" }, { "name": "Deep Purple 200", "value": "#b39ddb" }, { "name": "Deep Purple 300", "value": "#9575cd" }, { "name": "Deep Purple 400", "value": "#7e57c2" }, { "name": "Deep Purple 500", "value": "#673ab7" }, { "name": "Deep Purple 600", "value": "#5e35b1" }, { "name": "Deep Purple 700", "value": "#512da8" }, { "name": "Deep Purple 800", "value": "#4527a0" }, { "name": "Deep Purple 900", "value": "#311b92" } ], [ { "name": "Indigo 50", "value": "#e8eaf6" }, { "name": "Indigo 100", "value": "#c5cae9" }, { "name": "Indigo 200", "value": "#9fa8da" }, { "name": "Indigo 300", "value": "#7986cb" }, { "name": "Indigo 400", "value": "#5c6bc0" }, { "name": "Indigo 500", "value": "#3f51b5" }, { "name": "Indigo 600", "value": "#3949ab" }, { "name": "Indigo 700", "value": "#303f9f" }, { "name": "Indigo 800", "value": "#283593" }, { "name": "Indigo 900", "value": "#1a237e" } ], [ { "name": "Blue 50", "value": "#e3f2fd" }, { "name": "Blue 100", "value": "#bbdefb" }, { "name": "Blue 200", "value": "#90caf9" }, { "name": "Blue 300", "value": "#64b5f6" }, { "name": "Blue 400", "value": "#42a5f5" }, { "name": "Blue 500", "value": "#2196f3" }, { "name": "Blue 600", "value": "#1e88e5" }, { "name": "Blue 700", "value": "#1976d2" }, { "name": "Blue 800", "value": "#1565c0" }, { "name": "Blue 900", "value": "#0d47a1" } ], [ { "name": "Light Blue 50", "value": "#e1f5fe" }, { "name": "Light Blue 100", "value": "#b3e5fc" }, { "name": "Light Blue 200", "value": "#81d4fa" }, { "name": "Light Blue 300", "value": "#4fc3f7" }, { "name": "Light Blue 400", "value": "#29b6f6" }, { "name": "Light Blue 500", "value": "#03a9f4" }, { "name": "Light Blue 600", "value": "#039be5" }, { "name": "Light Blue 700", "value": "#0288d1" }, { "name": "Light Blue 800", "value": "#0277bd" }, { "name": "Light Blue 900", "value": "#01579b" } ], [ { "name": "Cyan 50", "value": "#e0f7fa" }, { "name": "Cyan 100", "value": "#b2ebf2" }, { "name": "Cyan 200", "value": "#80deea" }, { "name": "Cyan 300", "value": "#4dd0e1" }, { "name": "Cyan 400", "value": "#26c6da" }, { "name": "Cyan 500", "value": "#00bcd4" }, { "name": "Cyan 600", "value": "#00acc1" }, { "name": "Cyan 700", "value": "#0097a7" }, { "name": "Cyan 800", "value": "#00838f" }, { "name": "Cyan 900", "value": "#006064" } ], [ { "name": "Teal 50", "value": "#e0f2f1" }, { "name": "Teal 100", "value": "#b2dfdb" }, { "name": "Teal 200", "value": "#80cbc4" }, { "name": "Teal 300", "value": "#4db6ac" }, { "name": "Teal 400", "value": "#26a69a" }, { "name": "Teal 500", "value": "#009688" }, { "name": "Teal 600", "value": "#00897b" }, { "name": "Teal 700", "value": "#00796b" }, { "name": "Teal 800", "value": "#00695c" }, { "name": "Teal 900", "value": "#004d40" } ], [ { "name": "Green 50", "value": "#e8f5e9" }, { "name": "Green 100", "value": "#c8e6c9" }, { "name": "Green 200", "value": "#a5d6a7" }, { "name": "Green 300", "value": "#81c784" }, { "name": "Green 400", "value": "#66bb6a" }, { "name": "Green 500", "value": "#4caf50" }, { "name": "Green 600", "value": "#43a047" }, { "name": "Green 700", "value": "#388e3c" }, { "name": "Green 800", "value": "#2e7d32" }, { "name": "Green 900", "value": "#1b5e20" } ], [ { "name": "Light Green 50", "value": "#f1f8e9" }, { "name": "Light Green 100", "value": "#dcedc8" }, { "name": "Light Green 200", "value": "#c5e1a5" }, { "name": "Light Green 300", "value": "#aed581" }, { "name": "Light Green 400", "value": "#9ccc65" }, { "name": "Light Green 500", "value": "#8bc34a" }, { "name": "Light Green 600", "value": "#7cb342" }, { "name": "Light Green 700", "value": "#689f38" }, { "name": "Light Green 800", "value": "#558b2f" }, { "name": "Light Green 900", "value": "#33691e" } ], [ { "name": "Lime 50", "value": "#f9fbe7" }, { "name": "Lime 100", "value": "#f0f4c3" }, { "name": "Lime 200", "value": "#e6ee9c" }, { "name": "Lime 300", "value": "#dce775" }, { "name": "Lime 400", "value": "#d4e157" }, { "name": "Lime 500", "value": "#cddc39" }, { "name": "Lime 600", "value": "#c0ca33" }, { "name": "Lime 700", "value": "#afb42b" }, { "name": "Lime 800", "value": "#9e9d24" }, { "name": "Lime 900", "value": "#827717" } ], [ { "name": "Yellow 50", "value": "#fffde7" }, { "name": "Yellow 100", "value": "#fff9c4" }, { "name": "Yellow 200", "value": "#fff59d" }, { "name": "Yellow 300", "value": "#fff176" }, { "name": "Yellow 400", "value": "#ffee58" }, { "name": "Yellow 500", "value": "#ffeb3b" }, { "name": "Yellow 600", "value": "#fdd835" }, { "name": "Yellow 700", "value": "#fbc02d" }, { "name": "Yellow 800", "value": "#f9a825" }, { "name": "Yellow 900", "value": "#f57f17" } ], [ { "name": "Amber 50", "value": "#fff8e1" }, { "name": "Amber 100", "value": "#ffecb3" }, { "name": "Amber 200", "value": "#ffe082" }, { "name": "Amber 300", "value": "#ffd54f" }, { "name": "Amber 400", "value": "#ffca28" }, { "name": "Amber 500", "value": "#ffc107" }, { "name": "Amber 600", "value": "#ffb300" }, { "name": "Amber 700", "value": "#ffa000" }, { "name": "Amber 800", "value": "#ff8f00" }, { "name": "Amber 900", "value": "#ff6f00" } ], [ { "name": "Orange 50", "value": "#fff3e0" }, { "name": "Orange 100", "value": "#ffe0b2" }, { "name": "Orange 200", "value": "#ffcc80" }, { "name": "Orange 300", "value": "#ffb74d" }, { "name": "Orange 400", "value": "#ffa726" }, { "name": "Orange 500", "value": "#ff9800" }, { "name": "Orange 600", "value": "#fb8c00" }, { "name": "Orange 700", "value": "#f57c00" }, { "name": "Orange 800", "value": "#ef6c00" }, { "name": "Orange 900", "value": "#e65100" } ], [ { "name": "Deep Orange 50", "value": "#fbe9e7" }, { "name": "Deep Orange 100", "value": "#ffccbc" }, { "name": "Deep Orange 200", "value": "#ffab91" }, { "name": "Deep Orange 300", "value": "#ff8a65" }, { "name": "Deep Orange 400", "value": "#ff7043" }, { "name": "Deep Orange 500", "value": "#ff5722" }, { "name": "Deep Orange 600", "value": "#f4511e" }, { "name": "Deep Orange 700", "value": "#e64a19" }, { "name": "Deep Orange 800", "value": "#d84315" }, { "name": "Deep Orange 900", "value": "#bf360c" } ], [ { "name": "Brown 50", "value": "#efebe9" }, { "name": "Brown 100", "value": "#d7ccc8" }, { "name": "Brown 200", "value": "#bcaaa4" }, { "name": "Brown 300", "value": "#a1887f" }, { "name": "Brown 400", "value": "#8d6e63" }, { "name": "Brown 500", "value": "#795548" }, { "name": "Brown 600", "value": "#6d4c41" }, { "name": "Brown 700", "value": "#5d4037" }, { "name": "Brown 800", "value": "#4e342e" }, { "name": "Brown 900", "value": "#3e2723" } ], [ { "name": "Grey 50", "value": "#fafafa" }, { "name": "Grey 100", "value": "#f5f5f5" }, { "name": "Grey 200", "value": "#eeeeee" }, { "name": "Grey 300", "value": "#e0e0e0" }, { "name": "Grey 400", "value": "#bdbdbd" }, { "name": "Grey 500", "value": "#9e9e9e" }, { "name": "Grey 600", "value": "#757575" }, { "name": "Grey 700", "value": "#616161" }, { "name": "Grey 800", "value": "#424242" }, { "name": "Grey 900", "value": "#212121" } ], [ { "name": "Blue Grey 50", "value": "#eceff1" }, { "name": "Blue Grey 100", "value": "#cfd8dc" }, { "name": "Blue Grey 200", "value": "#b0bec5" }, { "name": "Blue Grey 300", "value": "#90a4ae" }, { "name": "Blue Grey 400", "value": "#78909c" }, { "name": "Blue Grey 500", "value": "#607d8b" }, { "name": "Blue Grey 600", "value": "#546e7a" }, { "name": "Blue Grey 700", "value": "#455a64" }, { "name": "Blue Grey 800", "value": "#37474f" }, { "name": "Blue Grey 900", "value": "#263238" } ], [ { "name": "White", "value": "#ffffff" }, { "name": "Black", "value": "#000000" } ] ]; var BootstrapSwatches = [ [ { "name": "Gray Light", "value": "#777777" }, { "name": "Base", "value": "#000000" }, { "name": "Highlight Blue", "value": "#0055cc" }, { "name": "Dark Blue", "value": "#005580" }, { "name": "Success Text Green", "value": "#468847" }, { "name": "Orange", "value": "#f89406" }, { "name": "Red", "value": "#9d261d" }, { "name": "Purple", "value": "#7a43b6" } ], [ { "name": "Border Gray", "value": "#cccccc" }, { "name": "Gray Darker", "value": "#222222" }, { "name": "Primary Blue", "value": "#337ab7" }, { "name": "Info Blue", "value": "#2f96b4" }, { "name": "Green", "value": "#46a546" }, { "name": "Light Orange", "value": "#fbb450" }, { "name": "Danger Button Red", "value": "#bd362f" }, { "name": "Pink", "value": "#c3325f" } ], [ { "name": "Gray Lighter", "value": "#eeeeee" }, { "name": "Gray Dark", "value": "#333333" }, { "name": "Link Blue", "value": "#0088cc" }, { "name": "Info Light Blue", "value": "#5bc0de" }, { "name": "Success Button Green", "value": "#62c462" }, { "name": "Yellow", "value": "#ffc40d" }, { "name": "Error Text Red", "value": "#b94a48" }, { "name": "Danger Highlight Red", "value": "#ee5f5b" } ], [ { "name": "White", "value": "#ffffff" }, { "name": "Gray", "value": "#555555" }, { "name": "Accent Blue", "value": "#049cdb" }, { "name": "Info Lighter Blue", "value": "#d9edf7" }, { "name": "Success Background Green", "value": "#dff0d8" }, { "name": "Warning Background Brown", "value": "#f3edd2" }, { "name": "Warning Text Brown", "value": "#c09853" }, { "name": "Danger Background Red", "value": "#f2dede" } ] ]; var iOsSwatches = [ [ { "name": "Red", "value": "#ff3b30" }, { "name": "Orange", "value": "#ff9500" }, { "name": "Yellow", "value": "#ffcc00" }, { "name": "Green", "value": "#4cd964" }, { "name": "Teal Blue", "value": "#5ac8fa" }, { "name": "Blue", "value": "#007aff" }, { "name": "Purple", "value": "#5856d6" }, { "name": "Pink", "value": "#ff2d55" } ], [ { "name": "White", "value": "#ffffff" }, { "name": "Custom Gray", "value": "#efeff4" }, { "name": "Light Gray", "value": "#e5e5ea" }, { "name": "Light Gray 2", "value": "#d1d1d6" }, { "name": "Mid Gray", "value": "#c7c7cc" }, { "name": "Gray", "value": "#8e8e93" }, { "name": "Black", "value": "#000000" } ] ]; ACore/* default.install */.Z.install('swatchestable', SwatchesTable); /* harmony default export */ const colorpicker_SwatchesTable = ((/* unused pure expression or super */ null && (SwatchesTable))); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/solidcolorpicker.css var solidcolorpicker = __webpack_require__(4558); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/spectrumcolor.css var spectrumcolor = __webpack_require__(7702); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/colorpicker/SpectrumColor.js function SpectrumColor() { } SpectrumColor.tag = 'SpectrumColor'.toLowerCase(); SpectrumColor.render = function () { return (0,ACore._)({ class:'as-spectrum-color', child: { class:'as-spectrum-color-sat', child:'.as-spectrum-color-val' } }); }; ACore/* default.install */.Z.install('spectrumcolor', SpectrumColor); /* harmony default export */ const colorpicker_SpectrumColor = (SpectrumColor); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/colorpicker/SolidColorPicker.js /** * @extends AElement * @constructor */ function SolidColorPicker() { if (!SolidColorPicker.css) { SolidColorPicker.css = new DynamicCSS/* default */.Z() .setProperty('.as-color-cell.as-solid-color-picker-selected.as-null .as-color-cell-value', 'background-image', `url("data:image/svg+xml;base64,${(0,base64.base64EncodeUnicode)(red_cross.replace(/\$width/g, '58').replace(/\$height/g, '22'))}")`) .commit(); } this.swatchMode = new SCPSWatchMode(this); this.pickerMode = new SCPPickerMode(this); this.modes = [this.swatchMode, this.pickerMode]; this.modeCtrl = new SCPSWatchModeController(this); OOP/* default.drillProperty */.ZP.drillProperty(this, this.modeCtrl, 'mode'); this.footerCtrl = new SCPFooterController(this); this.$opacity = this.footerCtrl.$opacity; this.$hex = this.footerCtrl.$hex; this.$selected = this.footerCtrl.$selected; this.historyCtrl = new SCPHistoryController(this); this.$swatchesName = this.modeCtrl.$swatchesName; this.on('keydown', this.eventHandler.keydown); this._lastEmitHex8 = ''; this.rawValue = new Color_Color/* default */.Z([1, 0, 0, 1]); this._swatchesNames = ['Material Design', 'Moqups Classic', 'Bootstrap', 'iOS']; this._swatchesShortName = ['material', 'moqups', 'bootstrap', 'ios']; this._swatchesIcons = ['span.mdi.mdi-palette', 'span.mdi.mdi-material-design', 'span.mdi.mdi-bootstrap', 'span.mdi.mdi-apple-ios']; this._swatchesData = [MaterialSwatches, MoqupsClassicSwathes, BootstrapSwatches, iOsSwatches]; /** * @type {import('absol-acomp/js/BScroller').default} */ this.$swatchesTableCtn = this.swatchMode.$swatchesTableCtn; this.$selectedDot = (0,ACore._)('.as-solid-color-picker-selected-dot');//share /** * @type {import('./SwatchesTable').default} */ this.$swatchesTable = this.swatchMode.$swatchesTable; this.$recentSwatchesTable = this.historyCtrl.$recentSwatchesTable; this.$attachhook = (0,ACore._)('attachhook') .on('attached', this.eventHandler.attached).addTo(this); this.$spectrum = this.pickerMode.$spectrum; this.$spectrumDot = this.pickerMode.$spectrumDot; this.$alpha = this.pickerMode.$alpha; this.$submitBtn = (0,ACore.$)('.as-solid-color-picker-submit-btn', this) .on('click', this.notifySubmit.bind(this)); /** * @name hasOpacity * @type {boolean} * @memberof SolidColorPicker# */ /** * @name nullable * @type {boolean} * @memberof SolidColorPicker# */ /** * @name value * @type {Color|null} * @memberof SolidColorPicker# */ /** * @name hex8Value * @type {string} * @memberof SolidColorPicker# */ } SolidColorPicker.tag = 'SolidColorPicker'.toLowerCase(); SolidColorPicker.render = function () { return (0,ACore._)({ attr: { tabindex: '1' }, extendEvent: ['change', 'sizechange', 'submit'], class: ['as-solid-color-picker', 'as-has-opacity'], child: [ { class: 'as-solid-color-picker-header', child: [ { class: 'as-solid-color-picker-mode-ctn', child: { tag: 'buttonarray', class: 'as-solid-color-picker-mode', props: { items: [ { text: 'SWATCHES', value: 'swatches' }, { text: 'PICKER', value: 'picker' }, ] } } }, ] }, { class: 'as-solid-color-picker-body', child: [ { class: ['as-solid-color-picker-swatches-select-ctn'], child: [ { tag: 'span', child: { text: 'Color Scheme: ' } }, { class: 'as-solid-color-picker-swatches-name', tag: 'a', child: { text: 'Material Design' } }, 'span.mdi.mdi-menu-down' ] }, { tag: 'bscroller', class: ['as-solid-color-picker-swatches-ctn'], child: { tag: 'swatchestable', props: { data: MaterialSwatches } } }, { tag: colorpicker_SpectrumColor, class: 'as-solid-color-picker-spectrum', child: '.as-solid-color-picker-spectrum-dot' }, { class: 'as-solid-color-picker-hue', child: '.as-solid-color-picker-hue-dot' }, { class: 'as-solid-color-picker-alpha', child: [ '.as-solid-color-picker-alpha-color', '.as-solid-color-picker-alpha-dot', ] }, { tag: 'swatchestable', class: 'as-solid-color-picker-near' }, { class: 'as-solid-color-picker-none-ctn', child: [ { tag: ColorCell, class: 'as-solid-color-picker-none-cell', props: { value: null } }, { child: { text: 'None' } } ] }, { class: 'as-solid-color-picker-recent-title', child: { text: 'RECENT COLOR' } }, { class: ['as-solid-color-picker-recent-swatches-ctn'], child: { tag: 'swatchestable', props: { data: MoqupsClassicSwathes.slice(0, 2) } } } ] }, { class: 'as-solid-color-picker-footer', child: [ { tag: ColorCell, class: 'as-solid-color-picker-selected' }, { tag: 'flexiconinput', class: 'as-solid-color-picker-color-hex', props: { value: 'ffffff', icon: '<svg viewBox="0 0 64 64" id="mq-icon-hex"><path d="M60 24v-6H46V4h-6v14H24V4h-6v14H4v6h14v16H4v6h14v14h6V46h16v14h6V46h14v-6H46V24h14zM40 40H24V24h16v16z"></path></svg>' } }, { tag: 'flexiconinput', class: 'as-solid-color-picker-color-opacity', props: { icon: 'span.mdi.mdi-opacity', unit: '%', value: 100 } }, { tag: 'flexiconbutton', class: 'as-solid-color-picker-submit-btn', props: { icon: 'span.mdi.mdi-check-bold' } } ] } ] }); }; SolidColorPicker._settingKey = "absol_solid_color_setting"; //only Hex6 SolidColorPicker.setting = { recentColors: ['#ffffff', '#00ffff', '#0000ff', '#ffffff', '#000000'] }; SolidColorPicker._loadSetting = function () { var setting = localStorage.getItem(SolidColorPicker._settingKey); try { setting = JSON.parse(setting); } catch (e) { setting = {}; } if (setting) { Object.assign(SolidColorPicker.setting, setting); } }; SolidColorPicker._loadSetting(); SolidColorPicker._writeSetting = function () { localStorage.setItem(SolidColorPicker._settingKey, JSON.stringify(SolidColorPicker.setting)); SolidColorPicker.updateInstancesSetting(); }; SolidColorPicker.pushInstances = function (elt) { var instances = SolidColorPicker.$instances; var aliveInstance = []; var instance; var found = false; while (instances.length > 0) { instance = instances.pop(); if (instance.isDescendantOf(document.body)) { aliveInstance.push(instance); } if (instance === elt) found = true; } while (aliveInstance.length > 0) { instances.push(aliveInstance.pop()); } if (!found) { instances.push(elt); } }; SolidColorPicker.updateInstancesSetting = function () { var instances = SolidColorPicker.$instances; var aliveInstance = []; var instance; while (instances.length > 0) { instance = instances.pop(); if (instance.isDescendantOf(document.body)) { aliveInstance.push(instance); } } while (aliveInstance.length > 0) { instance = aliveInstance.pop(); instances.push(instance); instance.reloadSetting(); } }; SolidColorPicker.$instances = []; SolidColorPicker.css = null; /** * @param {Color} color */ SolidColorPicker.pushColorHistory = function (color) { if (!color) return; var hex6Color = color.toString('hex6'); var recentColors = SolidColorPicker.setting.recentColors; var index = recentColors.indexOf(hex6Color); if (index >= 0) { recentColors.splice(index, 1); } recentColors.unshift(hex6Color); while (recentColors.length > 24) recentColors.pop(); setTimeout(SolidColorPicker._writeSetting.bind(SolidColorPicker), 1) }; SolidColorPicker.prototype.reloadSetting = function () { var recentColors = SolidColorPicker.setting.recentColors.slice(); var swatches = []; while (recentColors.length > 0) { swatches.push(recentColors.splice(0, 12)); } this.$recentSwatchesTable.data = swatches; this.swatchMode.viewValue(); }; SolidColorPicker.prototype.notifyCanBeChanged = function () { var cHex8 = this.hex8Value; if (cHex8 !== this._lastEmitHex8) { this._lastEmitHex8 = cHex8; this.notifyChange(); } }; SolidColorPicker.prototype.notifyChange = function () { this.emit('change', { target: this, value: this.value, type: 'change' }, this); }; SolidColorPicker.prototype.notifySizeCanBeChanged = function () { var bound = this.getBoundingClientRect(); if (!this._lastSize || this._lastSize.width !== bound.width || this._lastSize.height !== bound.height) { this._lastSize = { width: bound.width, height: bound.height }; this.notifySizeChange(); } }; SolidColorPicker.prototype.notifySizeChange = function () { this.emit('sizechange', { target: this, size: this._lastSize, type: 'sizechange' }, this); }; SolidColorPicker.prototype.notifySubmit = function () { SolidColorPicker.pushColorHistory(this.rawValue); this.emit('submit', { target: this, value: this.rawValue, type: 'submit' }, this); }; SolidColorPicker.property = {}; /** * @type {SolidColorPicker} */ SolidColorPicker.property.value = { /** * * @param {Color} value */ set: function (value) { value = value || null; if (value && !value.toHex8) {//is try { value = Color_Color/* default.parse */.Z.parse(value + ''); } catch (e) { value = new Color_Color/* default */.Z([0, 0, 0, 0]); } } this.rawValue = value; this._lastEmitHex8 = this.hex8Value; this.footerCtrl.viewValue(); this.pickerMode.viewValue(); this.swatchMode.viewValue(); }, get: function () { var nullable = this.nullable; var hasOpacity = this.hasOpacity; var value = this.rawValue || null;// if (!nullable && !value) value = new Color_Color/* default */.Z([0, 0, 0, 0]); if (!hasOpacity && value) value.rgba[3] = 1; return value; } }; SolidColorPicker.property.hex8Value = { get: function () { var value = this.value; if (value) return value.toHex8(); return 'null'; } }; /** * @type {SolidColorPicker} */ SolidColorPicker.property.swatches = { set: function (value) { var index = this._swatchesShortName.indexOf(value); index = Math.max(index, 0); value = this._swatchesShortName[index]; if (this._swatches != value) { this._swatches = value; this.$swatchesTable.data = this._swatchesData[index]; this.$swatchesName.childNodes[0].data = this._swatchesNames[index]; } this.swatchMode.viewValue(); }, get: function () { return this._swatches; } }; SolidColorPicker.property.nullable = { set: function (value) { if (value) { this.addClass('as-nullable'); } else { this.removeClass('as-nullable'); } this.footerCtrl.viewValue(); this.pickerMode.viewValue(); this.swatchMode.viewValue(); }, get: function () { return this.hasClass('as-nullable'); } }; SolidColorPicker.property.hasOpacity = { /** * @this SolidColorPicker# * @param value */ set: function (value) { if (value) { this.addClass('as-has-opacity'); } else { this.removeClass('as-has-opacity'); } this.footerCtrl.viewValue(); this.swatchMode.viewValue(); this.pickerMode.viewValue(); }, get: function () { return this.hasClass('as-has-opacity'); } }; /** * @type {SolidColorPicker} */ SolidColorPicker.eventHandler = {}; SolidColorPicker.eventHandler.attached = function () { SolidColorPicker.pushInstances(this); this.reloadSetting(); }; SolidColorPicker.eventHandler.keydown = function (event) { if (event.key === 'Enter') { event.preventDefault(); event.target.blur(); this.notifySubmit(); } }; ACore/* default.install */.Z.install('solidcolorpicker', SolidColorPicker); /** * * @param {SolidColorPicker} elt * * @constructor */ function SCPHistoryController(elt) { this.elt = elt; this.$recentSwatchesTable = (0,ACore.$)('.as-solid-color-picker-recent-swatches-ctn swatchestable', this.elt) .on('presscell', this.elt.swatchMode.ev_pressCell.bind(this)); } /** * * @param {SolidColorPicker} elt * @constructor */ function SCPSWatchModeController(elt) { this.elt = elt; this.$swatchesName = (0,ACore.$)('.as-solid-color-picker-swatches-name', this.elt); QuickMenu/* default.toggleWhenClick */.Z.toggleWhenClick(this.$swatchesName, { anchor: [1, 6], getMenuProps: () => { return { extendClasses: 'as-solid-color-picker-swatches-name-menu', extendStyle: { 'font-size': this.elt.getComputedStyleValue('font-size') }, items: this.elt._swatchesNames.map((name, i) => { return { text: name, value: this.elt._swatchesShortName[i], icon: this.elt._swatchesIcons[i] }; }) } }, onSelect: (item) => { this.elt.swatches = item.value; } }); this.$mode = (0,ACore.$)('.as-solid-color-picker-mode', this.elt) .on('change', this.updateMode.bind(this)); this.viewingMode = null; this.updateMode(); } SCPSWatchModeController.prototype.updateMode = function () { var value = this.$mode.value; if (value === this.viewingMode) return; this.elt.removeClass('as-solid-color-picker-mode-' + this.viewingMode); this.viewingMode = value + ''; this.elt.addClass('as-solid-color-picker-mode-' + this.viewingMode); this.$mode.value = this.viewingMode; this.elt.notifySizeCanBeChanged(); }; Object.defineProperty(SCPSWatchModeController.prototype, 'mode', { set: function (value) { this.$mode.value = value; this.updateMode(); }, get: function () { return this.$mode.value; } }); /** * * @param {SolidColorPicker} elt * @constructor */ function SCPSWatchMode(elt) { this.elt = elt; /** * * @type {BScroller} */ this.$swatchesTableCtn = (0,ACore.$)('.as-solid-color-picker-swatches-ctn', this.elt); /** * @type {SwatchesTable} */ this.$swatchesTable = (0,ACore.$)('.as-solid-color-picker-swatches-ctn swatchestable', this.elt) .on('presscell', this.ev_pressCell.bind(this)); this.$noneCtn = (0,ACore.$)('.as-solid-color-picker-none-ctn', this.elt).on('click', this.ev_clickNone.bind(this)); } SCPPickerMode.prototype.name = "swatches"; SCPPickerMode.prototype.displayName = "SWATCHES"; SCPSWatchMode.prototype.ev_pressCell = function (event) { try { var value = Color_Color/* default.parse */.Z.parse(event.value + ''); var hC = value.getContrastYIQ(); hC.rgba[3] = 0.7; value.rgba[3] = this.elt.footerCtrl.opacity; this.elt.rawValue = value; this.elt.footerCtrl.viewValue(); this.elt.$selectedDot.addStyle('box-shadow', `inset 0px 0px 0.3em 0.125em ${hC.toString('rgba')}`); event.cellElt.addChild(this.elt.$selectedDot); this.$noneCtn.removeClass('as-selected'); this.elt.pickerMode.viewValue(); // } catch (e) { // this.$selectedDot.removeStyle('box-shadow'); // this.$hex.value = 'ffffff'; } this.elt.notifyCanBeChanged(); }; SCPSWatchMode.prototype.ev_clickNone = function (event) { this.elt.rawValue = null; this.viewValue(); this.elt.footerCtrl.viewValue(); this.elt.swatchMode.viewValue(); this.elt.pickerMode.viewValue(); this.elt.notifyCanBeChanged(); }; SCPSWatchMode.prototype.viewValue = function () { this.elt.$selectedDot.remove(); var cell, hC; /** * * @type {Color|null} */ var value = this.elt.value; if (!value) this.$noneCtn.addClass('as-selected'); else this.$noneCtn.removeClass('as-selected'); if (this.elt.modeCtrl.mode === 'swatches' && value) { cell = this.$swatchesTable.getCell(value.toString('hex6')); if (cell) this.$swatchesTableCtn.scrollInto(cell); } if (!cell && value) { cell = this.elt.$recentSwatchesTable.getCell(value.toString('hex6')); } if (cell) { hC = value.getContrastYIQ(); hC.rgba[3] = 0.7; this.elt.$selectedDot.addStyle('box-shadow', `inset 0px 0px 0.3em 0.125em ${hC.toString('rgba')}`); cell.addChild(this.elt.$selectedDot); } }; /** * * @param {SolidColorPicker} elt * @constructor */ function SCPPickerMode(elt) { this.elt = elt; this.$spectrum = (0,ACore._)({ tag: 'hanger', elt: (0,ACore.$)('.as-solid-color-picker-spectrum', this.elt) }) .on('predrag', this.ev_spectrumDrag.bind(this)) .on('drag', this.ev_spectrumDrag.bind(this)); this.$hueDot = (0,ACore.$)('.as-solid-color-picker-hue-dot', this.elt); this.$spectrumDot = (0,ACore.$)('.as-solid-color-picker-spectrum-dot', this.elt); this.$alpha = (0,ACore._)({ tag: 'hanger', elt: (0,ACore.$)('.as-solid-color-picker-alpha', this.elt) }) .on('predrag', this.ev_alphaDrag.bind(this)) .on('drag', this.ev_alphaDrag.bind(this)); this.$alphaDot = (0,ACore.$)('.as-solid-color-picker-alpha-dot', this.elt); this.$hue = (0,ACore._)({ tag: 'hanger', elt: (0,ACore.$)('.as-solid-color-picker-hue', this.elt) }) .on('predrag', this.ev_hueDrag.bind(this)) .on('drag', this.ev_hueDrag.bind(this)); this.$near = (0,ACore.$)('.as-solid-color-picker-near', this.elt) .on('presscell', this.ev_nearPressCell.bind(this)); this._hue = 0; this._sat = 1; this._brightness = 1; } SCPPickerMode.prototype.name = 'picker'; SCPPickerMode.prototype.displayName = 'PICKER'; SCPPickerMode.prototype.viewValue = function () { var value = this.elt.value || new Color_Color/* default */.Z([0, 0, 0, 1]); var hsba = Color_Color/* default.rgbaToHSBA */.Z.rgbaToHSBA(value.rgba); this._setHue(hsba[0] * 360); this._setSatBrightness(hsba[1] * 100, hsba[2] * 100); this._updateOpacity(); this._updateNear(); }; SCPPickerMode.prototype._updateSpectrumDot = function () { var value = this.elt.value || new Color_Color/* default */.Z([0, 0, 0, 1]); var dotColor = value.getContrastYIQ(); dotColor.rgba[3] = 0.7; this.$spectrumDot.addStyle({ bottom: 'calc(' + this._brightness + '% - 0.5em)', left: 'calc(' + this._sat + '% - 0.5em)', 'box-shadow': 'inset 0px 0px 0.3em 0.125em ' + dotColor.toString() }); }; SCPPickerMode.prototype._updateNear = function () { var value = this.elt.value || new Color_Color/* default */.Z([0, 0, 0, 1]); var hsba = Color_Color/* default.rgbaToHSBA */.Z.rgbaToHSBA(value.rgba); var sat = hsba[1]; var hue = hsba[0]; var brightness = hsba[2]; var whiterColors = Array(7).fill(null).map(function (u, i) { return Color_Color/* default.fromHSB */.Z.fromHSB(hue, sat * (7 - i) / 8, brightness); }); var darkerColors = Array(7).fill(null).map(function (u, i) { return Color_Color/* default.fromHSB */.Z.fromHSB(hue, sat, brightness * (7 - i) / 8); }); var hueNearColors = [-5, -3, -2, 1, 2, 3, 5].map(function (u) { var nHue = hue + u / 40; if (nHue > 1) nHue -= 1; else if (nHue < 0) nHue += 1; return Color_Color/* default.fromHSB */.Z.fromHSB(nHue, sat, brightness); }); this.$near.data = [whiterColors, darkerColors, hueNearColors]; }; SCPPickerMode.prototype._setHue = function (hue) { this._hue = hue; var spectrumColor = Color_Color/* default.fromHSB */.Z.fromHSB(hue / 360, 1, 1); var hueDotColor = spectrumColor.getContrastYIQ(); hueDotColor.rgba[3] = 0.7; this.$hueDot.addStyle({ 'box-shadow': 'inset 0px 0px 0.3em 0.125em ' + hueDotColor.toString(), left: 'calc(' + (hue / 3.6) + '% - 0.5em)' }) this.$spectrum.addStyle('background-color', spectrumColor.toString()); this._updateSpectrumDot(); }; SCPPickerMode.prototype._setSatBrightness = function (sat, brightness) { this._sat = sat; this._brightness = brightness; this._updateSpectrumDot(); }; SCPPickerMode.prototype._updateOpacity = function () { this.$alphaDot.addStyle('left', 'calc(' + (this.elt.footerCtrl.opacity * 100) + '% - 0.5em)'); }; SCPPickerMode.prototype.ev_spectrumDrag = function (event) { event.preventDefault(); var sBound = this.$spectrum.getBoundingClientRect(); var brightness = (sBound.bottom - event.clientY) * 100 / sBound.height; brightness = Math.max(0, Math.min(100, Math.round(brightness))); var sat = (event.clientX - sBound.left) * 100 / sBound.width; sat = Math.max(0, Math.min(100, Math.round(sat))); this.elt.rawValue = Color_Color/* default.fromHSBA */.Z.fromHSBA(this._hue / 360, sat / 100, brightness / 100, this.elt.footerCtrl.opacity); this._setSatBrightness(sat, brightness); this._updateNear(); this.elt.footerCtrl.viewValue(); this.elt.swatchMode.viewValue(); this.elt.notifyCanBeChanged(); }; SCPPickerMode.prototype.ev_alphaDrag = function (event) { event.preventDefault(); var aBound = this.$alpha.getBoundingClientRect(); var opacity = (event.clientX - aBound.left) * 100 / aBound.width; opacity = Math.max(0, Math.min(100, Math.round(opacity))); var color = this.elt.value || new Color_Color/* default */.Z([0, 0, 0, 0]); color.rgba[3] = opacity / 100; this.elt.rawValue = color; this.elt.footerCtrl.viewValue(); this._updateOpacity(); // this._setOpacityPercent(opacity); this.elt.notifyCanBeChanged(); }; SCPPickerMode.prototype.ev_hueDrag = function (event) { event.preventDefault(); var hBound = this.$hue.getBoundingClientRect(); var hue = (event.clientX - hBound.left) * 360 / hBound.width; hue = Math.max(0, Math.min(360, Math.round(hue))); this.elt.rawValue = Color_Color/* default.fromHSBA */.Z.fromHSBA(hue / 360, this._sat / 100, this._brightness / 100, this.elt.footerCtrl.opacity); this._setHue(hue); this.elt.footerCtrl.viewValue(); this.elt.swatchMode.viewValue(); this._updateNear(); this.elt.notifyCanBeChanged(); }; SCPPickerMode.prototype.ev_nearPressCell = function (event) { var value = event.value.clone(); value.rgba[3] = this.elt.footerCtrl.opacity; this.elt.rawValue = value; this.viewValue(); this.elt.footerCtrl.viewValue(); this.elt.pickerMode.viewValue(); }; /** * * @param {SolidColorPicker} elt * @constructor */ function SCPFooterController(elt) { this.elt = elt; this.$selected = (0,ACore.$)('.as-solid-color-picker-selected', this.elt); this.$opacity = (0,ACore.$)('.as-solid-color-picker-color-opacity', this.elt) .on('change', this.ev_opacityChange.bind(this)) .on('keyup', this.ev_opacityKeyUp.bind(this)); this.$hex = (0,ACore.$)('.as-solid-color-picker-color-hex', this.elt) .on('keyup', this.ev_hexKeyUp.bind(this)) .on('change', this.ev_hexChange.bind(this)); } SCPFooterController.prototype.ev_opacityChange = function (event) { var color = this.elt.value; var opacityTxt = color ? Math.round(color.rgba[3] * 100) : '100'; if (color && this.$opacity.value !== opacityTxt) { this.$opacity.value = opacityTxt; } }; SCPFooterController.prototype.ev_opacityKeyUp = function (event) { var opacity = parseFloat(this.$opacity.value); if (!isNaN(opacity)) { opacity = Math.round(Math.max(0, Math.min(opacity, 100))); var color = this.elt.value || new Color_Color/* default */.Z(0, 0, 0, 1); color.rgba[3] = opacity / 100; this.elt.rawValue = color; this.elt.pickerMode.viewValue(); this.$selected.value = color; this.elt.notifyCanBeChanged(); } }; SCPFooterController.prototype.ev_hexKeyUp = function (event) { // var prevValue = this.elt.value; var value; var nullable = this.elt.nullable; var hex = this.$hex.value.trim(); try { if (nullable && hex.length === 0) { value = null; } else { value = Color_Color/* default.parse */.Z.parse('#' + hex); } } catch (e) { // console.error(e); } if (!value && !nullable) return; if (value) value.rgba[3] = this.opacity; this.elt.rawValue = value; this.$selected.value = value; this.elt.pickerMode.viewValue(); this.elt.swatchMode.viewValue(); this.elt.notifyCanBeChanged(); }; SCPFooterController.prototype.ev_hexChange = function (event) { var value = this.elt.value; if (value) this.$hex.value = value.toHex6(); }; SCPFooterController.prototype.viewValue = function () { var value = this.elt.value; var hasOpacity = this.elt.hasOpacity; this.$selected.value = value; this.$hex.value = value ? (value.toHex6()) : ''; if (hasOpacity && value) { this.$opacity.value = Math.round(value.rgba[3] * 100) + ''; } else this.$opacity.value = '100'; }; Object.defineProperty(SCPFooterController.prototype, 'opacity', { get: function () { if (!this.elt.hasOpacity) return 1; var opFromText = parseFloat(this.$opacity.value) / 100; if ((0,utils.isRealNumber)(opFromText)) { opFromText = Math.max(0, Math.min(opFromText, 1)); return opFromText; } var value = this.elt.value; if (!value) return 1; return value.rgba[3]; } }); /* harmony default export */ const colorpicker_SolidColorPicker = (SolidColorPicker); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/colorpicker/FontColorButton.js /** * @extends AElement * @constructor */ function FontColorButton() { this.$value = (0,ACore.$)('.as-font-color-button-value', this); this.$primary = (0,ACore.$)('.as-ribbon-split-button-primary', this).on('click', () => { this.emit('submit', { type: 'submit', target: this }, this); }); this.$extend = (0,ACore.$)('.as-ribbon-split-button-extend', this); new FCBPickerController(this); /** * @type {string} * @name value * @memberof FontColorButton# */ } FontColorButton.tag = 'FontColorButton'.toLowerCase(); FontColorButton.render = function () { return (0,ACore._)({ extendEvent: ['submit', 'change'], attr: { 'tabindex': '0' }, class: ['as-ribbon-split-button'], child: { class: 'as-ribbon-split-button-content', child: [ { tag: 'button', attr: { 'tabindex': '-1' }, class: 'as-ribbon-split-button-primary', child: { tag: Icons/* FontColorIcon */.Tj, class: 'as-font-color-button-value', style: { width: '18px', height: '18px' } } }, { tag: 'button', attr: { 'tabindex': '-1' }, class: 'as-ribbon-split-button-extend', child: ['span.as-ribbon-split-button-text', 'span.mdi.mdi-chevron-down'] } ] } }); }; FontColorButton.property = {}; FontColorButton.property.value = { set: function (value) { this.$value.value = value; }, get: function () { return this.$value.value; } }; /* harmony default export */ const colorpicker_FontColorButton = (FontColorButton); /** * * @param {FontColorButton} elt * @constructor */ function FCBPickerController(elt) { this.elt = elt; this['ev_clickExtend'] = this['ev_clickExtend'].bind(this); this['ev_clickOut'] = this['ev_clickOut'].bind(this); this['ev_submit'] = this['ev_submit'].bind(this); this['ev_change'] = this['ev_change'].bind(this); this.elt.$extend.on('click', this.ev_clickExtend); } FCBPickerController.prototype.ev_clickExtend = function () { this.openPicker(); }; FCBPickerController.prototype.ev_clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.share.$picker, event)) return; this.closePicker(); }; FCBPickerController.prototype.ev_submit = function () { var prevValue = this.elt.value; this.elt.value = this.share.$picker.value; this.closePicker(); if (prevValue !== this.elt.value) { this.elt.emit('change', { type: 'change', target: this.elt }, this.elt); } this.elt.emit('submit', { type: 'submit', target: this.elt }, this.elt); }; FCBPickerController.prototype.ev_change = function () { var prevValue = this.elt.value; this.elt.value = this.share.$picker.value; if (prevValue !== this.elt.value) { this.elt.emit('change', { type: 'change', target: this.elt }, this.elt); } }; FCBPickerController.prototype.share = { $picker: null, $follower: null, holder: null }; FCBPickerController.prototype.prepare = function () { if (this.share.$follower) return; this.share.$picker = (0,ACore._)({ tag: colorpicker_SolidColorPicker, props: { hasOpacity: false } }); this.share.$follower = (0,ACore._)({ tag: Follower/* default */.Z, child: this.share.$picker, props: { anchor: [2, 1, 6, 5, 9, 11] } }); }; FCBPickerController.prototype.openPicker = function () { this.prepare(); if (this.share.holder) this.share.holder.closePicker(); this.share.holder = this; this.share.$follower.addStyle('visibility', 'hidden'); this.share.$follower.addTo(document.body); this.share.$follower.followTarget = this.elt.$extend; this.share.$follower.sponsorElement = this.elt.$extend; this.share.$follower.addStyle('z-index', (0,utils.findMaxZIndex)(this.elt.$extend) + 70); this.share.$follower.removeStyle('visibility'); this.elt.$extend.off('click', this.ev_clickExtend); this.share.$picker.on('submit', this.ev_submit); this.share.$picker.on('change', this.ev_change); this.share.$picker.value = this.elt.value; setTimeout(() => { document.addEventListener('click', this.ev_clickOut); }, 5); }; FCBPickerController.prototype.closePicker = function () { if (this.share.holder !== this) return; this.share.holder = null; document.removeEventListener('click', this.ev_clickOut); this.share.$picker.off('submit', this.ev_submit); this.share.$picker.off('change', this.ev_change); setTimeout(() => { this.elt.$extend.on('click', this.ev_clickExtend); }, 5) this.share.$follower.followTarget = null; this.share.$follower.remove(); }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/TableOfTextInput.js /** * @typedef TEIDataRow * @property {TEIDataCell[]} cells */ /** * @typedef TEIData * @property {TEIDataRow[]} rows */ /** * @typedef TEIDataCell * @property {{color?:string, fontSize?: number, fontWeight?: ("bool"|"normal")}} [style] * @property {string} value */ /** * @extends AElement * @constructor */ function TableOfTextInput() { /** * * @type {TEITable} */ this.teiTable = new TEITable(this); /** * @name data * @type {TEICell[]} */ OOP/* default.drillProperty */.ZP.drillProperty(this, this.teiTable, ['minCol', 'maxCol', 'data', 'excelRichTextRows']); } /** * * @param name * @param value * @returns {this} */ TableOfTextInput.prototype.addStyle = function (name, value) { if (name === 'display') { if ((typeof value === "string") && value.indexOf('inline')) { this.addClass('as-inline'); } else { this.removeClass('as-inline'); } return this; } else return AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); }; TableOfTextInput.tag = 'TableOfTextInput'.toLowerCase(); TableOfTextInput.render = function () { return (0,ACore._)({ class: 'as-table-of-text-input-wrapper', child: [ { class: 'as-table-of-text-input-content-ctn', child: { tag: 'table', extendEvent: ['change'], class: 'as-table-of-text-input', child: [ { tag: 'tbody', child: [] } ] } } ] }); }; /* harmony default export */ const js_TableOfTextInput = (TableOfTextInput); ACore/* default.install */.Z.install(TableOfTextInput); /** * * @param {TableOfTextInput} wrapper * @constructor */ function TEITable(wrapper) { this._minCol = 3; this._maxCol = 3; this._minRow = 1; this._maxRow = 9; this.wrapper = wrapper; this.elt = (0,ACore.$)('table', wrapper); this.$body = (0,ACore.$)('tbody', this.elt); /** * * @type {TEIRow[]} */ this.rows = []; this.formatTool = new TEIFormatTool(this); } TEITable.prototype.defaultData = { rows: [ { cells: [ { value: '' }, { value: '' }, { value: '' } ] } ] } TEITable.prototype.notifyChange = function (data) { this.elt.emit('change', Object.assign({ type: 'change', target: this }, data), this.elt); }; TEITable.prototype.calcCellPos = function () { var n = this.rows[0].cells.reduce((ac, cell) => ac + cell.colspan, 0); var m = this.rows.length; var heights = Array(n).fill(0); var row, i, j, k; var cell, colspan, rowspan, colIdx; for (i = 0; i < m; ++i) { row = this.rows[i]; colIdx = 0; for (j = 0; j < row.cells.length; ++j) { cell = row.cells[j]; while (heights[colIdx] > i) colIdx++; colspan = cell.colspan; rowspan = cell.rowspan; cell.td.attr('data-col-idx', colIdx); for (k = 0; k < colspan; ++k) { heights[colIdx] = i + rowspan; } } } }; Object.defineProperties(TEITable.prototype, { minCol: { /** * @this TableOfTextInput * @param value */ set: function (value) { if (!(0,utils.isNaturalNumber)(value)) value = 1; value = Math.max(1, Math.floor(value)); this._minCol = value; }, get: function () { return this._minCol; } }, maxCol: { /** * @this TableOfTextInput * @param value */ set: function (value) { if (!(0,utils.isNaturalNumber)(value)) value = 20; value = Math.min(20, Math.max(1, Math.floor(value))); this._maxCol = value; }, get: function () { return Math.max(this._minCol, this._maxCol); } }, minRow: { /** * @this TableOfTextInput * @param value */ set: function (value) { if (!(0,utils.isNaturalNumber)(value)) value = 1; value = Math.max(1, Math.floor(value)); this._minRow = value; }, get: function () { return this._minRow; } }, maxRow: { /** * @this TableOfTextInput * @param value */ set: function (value) { if (!(0,utils.isNaturalNumber)(value)) value = 20; value = Math.min(20, Math.max(1, Math.floor(value))); this._maxRow = value; }, get: function () { return Math.max(this._minRow, this._maxRow); } }, data: { set: function (value) { if (typeof value === "string") { value = { rows: [ { cells: [{ value: value }] } ] }; } value = (0,generator/* copyJSVariable */.Ew)(value || this.defaultData); if (!(value.rows instanceof Array)) value.rows = (0,generator/* copyJSVariable */.Ew)(this.defaultData.rows); value.rows.forEach(row => { if (!(row.cells instanceof Array)) { row.cells = [] } if (row.cells.length === 0) { row.cells.push({ value: '' }); } }); this.rows.forEach(row => row.tr.remove()); this.rows = value.rows.map(rowData => new TEIRow(this, rowData)); this.$body.addChild(this.rows.map(row => row.tr)); this.calcCellPos(); }, get: function () { return { rows: this.rows.map(row => row.data) } } }, excelRichTextRows: { get: function () { var cBound = this.elt.getBoundingClientRect(); var placeHolderElt; var renderSpace; if (!cBound.width || !cBound.height) { if (this.parentElement) { placeHolderElt = (0,ACore._)({ style: { display: 'none' } }); this.selfReplace(placeHolderElt); } renderSpace = (0,ACore._)({ style: { position: 'fixed', zIndex: -1000, visibility: 'hidden', opacity: 0 } }).addTo(document.body); } var textNodes = (0,Text.getTextNodesIn)(this.elt).filter(t => !!t.data); var lineHeight = 25.662879943847656; cBound = this.elt.getBoundingClientRect(); var y0 = cBound.top + 4 + 3.2348480224609375; var textInfos = textNodes.reduce((ac, txt) => { var cell = cellOf(txt); var style = cell.style.export(); var bounds = (0,utils.getTextNodeBounds)(txt); bounds.forEach(bound => { var excelData = { text: bound.text.replace(/\n+$/, ''), }; if (excelData.text.trim().length === 0) return; excelData.font = { 'name': 'Calibri' }; if (style.color) { excelData.font.color = { argb: 'ff' + Color_Color/* default.parse */.Z.parse(style.color).toString('hex6').substring(1).toLowerCase() }; } if (style.fontWeight === 'bold') { excelData.font.bold = true; } if (style.fontStyle === 'italic') { excelData.font.italic = true; } if (style.fontSize) { excelData.font.size = style.fontSize; } ac.push({ rowIdx: Math.round((bound.rect.y - y0) / lineHeight), bound: bound.rect, text: excelData.text, excelData: excelData }); }); return ac; }, []); textInfos.sort((a, b) => { if (a.rowIdx === b.rowIdx) { return a.bound.x - b.bound.x; } else { return a.bound.y - b.bound.y; } }); var richTextRows = textInfos.reduce((ac, cr, i) => { var rowIdx = cr.rowIdx; while (ac.richTextRows.length <= rowIdx) { ac.x = ac.x0; ac.richTextRows.push([]); } var marginTextL = Math.floor((cr.bound.x - ac.x) / 3.314239501953125); if (marginTextL > 0) { ac.richTextRows[ac.richTextRows.length - 1].push({ text: ' '.repeat(marginTextL), font: { 'name': 'Calibri' } }); } ac.richTextRows[ac.richTextRows.length - 1].push(cr.excelData); ac.x = cr.bound.x + cr.bound.width; ac.y = cr.bound.y; return ac; }, { richTextRows: [], x: cBound.left + 5, x0: cBound.left + 5, }).richTextRows; if (placeHolderElt) { placeHolderElt.selfReplace(this); } if (renderSpace) renderSpace.remove(); return richTextRows; } } }); /** * * @param {TEITable} table * @param data * @constructor */ function TEIRow(table, data) { data = data || {}; if (!(data.cells instanceof Array)) data.cells = []; this.table = table; this.tr = (0,ACore._)('tr'); /** * * @type {TEICell[]} */ this.cells = []; this.data = data; } Object.defineProperty(TEIRow.prototype, 'data', { set: function (data) { this.cells = data.cells.map(cellData => new TEICell(this, cellData)); this.tr.clearChild().addChild(this.cells.map(cell => cell.td)); }, get: function () { return { cells: this.cells.map(cell => cell.data) } } }); var cellOf = node => { while (node) { if (node.teiCell) return node.teiCell; node = node.parentElement; } return null; } /** * * @param {TEIRow} row * @param {TEIDataCell} data * @constructor */ function TEICell(row, data) { this.row = row; this.table = row.table; this.td = (0,ACore._)({ tag: 'td', class: 'as-table-of-text-input-cell', on: { click: (event) => { if (event.target === this.td) this.focus(); }, }, child: { tag: js_PreInput, attr: { spellcheck: 'false' }, props: { teiCell: this }, on: { focus: () => { this.table.formatTool.onFocus(this); }, blur: () => { this.table.formatTool.onBlur(this); }, change: (event) => { if (event.originalEvent) this.table.elt.emit('change', { type: 'change', target: this.table, cell: this }, this.table.elt); } } } }); this.$input = (0,ACore.$)('preinput', this.td); this.data = data; this.style = new AppPattern_Attributes(this); Object.assign(this.style, data.style); this.style.loadAttributeHandlers(this.styleHandlers); } TEICell.prototype.focus = function () { this.$input.focus(); var textNode = (0,Text.getTextNodesIn)(this.$input).pop(); if (!textNode) return; var range = document.createRange(); range.setStart(textNode, textNode.data.length); range.setEnd(textNode, textNode.data.length); var sel = getSelection(); sel.removeAllRanges(); sel.addRange(range); }; TEICell.prototype.remove = function () { this.td.remove(); var idx = this.table.cells.indexOf(this); if (idx >= 0) this.table.cells.splice(idx, 1); }; TEICell.prototype.styleHandlers = { fontWeight: { set: function (value) { if (value === 'bold') { this.td.addClass('as-bold'); } else { this.td.removeClass('as-bold'); } }, get: function () { if (this.td.hasClass('as-bold')) return 'bold'; return 'normal'; }, export: function () { if (this.td.hasClass('as-bold')) return 'bold'; return undefined; } }, fontStyle: { set: function (value) { if (value === 'italic') { this.td.addClass('as-italic'); } else { this.td.removeClass('as-italic'); } }, get: function () { if (this.td.hasClass('as-italic')) return 'italic'; return 'normal'; }, export: function () { if (this.td.hasClass('as-italic')) return 'italic'; return undefined; } }, fontSize: { set: function (value) { if (typeof value === "string") value = parseInt(value.replace(/[^0-9.]/g, ''), 10); if (!(0,utils.isRealNumber)(value)) value = 11; value = Math.abs(value); value = value || 11; this.td.addStyle('font-size', value + 'pt'); return value; }, get: function (ref) { var value = ref.get(); return value || 11; }, export: function (ref) { var value = ref.get(); if (value === 11) value = undefined; return value || undefined; } }, color: { set: function (value) { try { var cValue = Color_Color/* default.parse */.Z.parse(value); value = cValue.toString('hex6'); } catch (err) { value = '#000000'; } this.td.addStyle('color', value); return value; }, get: function (ref) { return ref.get() || '#000000'; }, export: function (ref) { var value = ref.get(); if (value === '#000000') value = undefined; return value || undefined; } }, textAlign: { set: function (value) { if (!['left', 'right', 'center'].includes(value)) value = 'left'; this.td.addStyle('text-align', value); return value; }, get: function (ref) { var value = ref.get(); return value || 'left'; }, export: function (ref) { var value = ref.get(); if (value === 'left') value = undefined; return value; } } }; Object.defineProperty(TEICell.prototype, "data", { set: function (value) { value = value || {}; if (typeof value === "string") value = { value: value }; if (typeof value.value === "string") { this.$input.value = value.value; } else { this.$input.value = ""; } }, get: function () { var res = {}; res.value = this.$input.value; res.style = this.style.export(); Object.keys(res.style).forEach(key => { if (res.style[key] === undefined) delete res.style[key]; }); return res; } }); Object.defineProperties(TEICell.prototype, { colspan: { set: function (value) { }, get: function () { var value = this.td.attr('colspan') || '1'; value = parseInt(value); if ((0,utils.isNaturalNumber)(value)) return value; return 1; } }, rowspan: { set: function (value) { }, get: function () { var value = this.td.attr('rowspan') || '1'; value = parseInt(value); if ((0,utils.isNaturalNumber)(value)) return value; return 1; } }, colpos: { get: function () { } }, rowpos: { get: function () { } } }); function TEIFormatTool(table) { Object.keys(TEIFormatTool.prototype).filter(k => k.startsWith('ev_')).forEach(k => this[k] = this[k].bind(this)); this.table = table; this.table.elt.on('keydown', this.ev_keydown) this.$tool = (0,ACore._)({ class: 'as-table-of-text-input-tool', child: [ { tag: 'numberinput', class: 'as-table-of-text-input-tool-font-size', props: { value: 14 }, attr: { title: 'Ctrl+< | Ctrl+>' } }, { tag: 'button', attr: { title: 'Ctrl+B' }, class: ['as-transparent-button', 'as-table-of-text-input-tool-bold'/*, 'as-checked'*/], child: 'span.mdi.mdi-format-bold' }, { tag: 'button', attr: { title: 'Ctrl+I' }, class: ['as-transparent-button', 'as-table-of-text-input-tool-italic'], child: 'span.mdi.mdi-format-italic' }, { tag: colorpicker_FontColorButton }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-text-align'], child: 'span.mdi.mdi-format-align-left', attr: { 'data-align': 'left', title: 'Ctrl+L' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-text-align'], child: 'span.mdi.mdi-format-align-center', attr: { 'data-align': 'center', title: 'Ctrl+E' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-text-align'], child: 'span.mdi.mdi-format-align-right', attr: { 'data-align': 'right', title: 'Ctrl+R' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-column-plus-before', attr: { 'data-command': 'left' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-column-plus-after', attr: { 'data-command': 'right' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-row-plus-before', attr: { 'data-command': 'above' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-row-plus-after', attr: { 'data-command': 'bellow' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'], attr: { 'data-command': 'removeCol' }, child: { tag: 'span', class: ['mdi', 'mdi-table-column-remove'], }, }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'], attr: { 'data-command': 'removeRow' }, child: { tag: 'span', class: ['mdi', 'mdi-table-row-remove'], }, }, ] }); this.table.wrapper.addChildBefore(this.$tool, this.table.wrapper.firstChild); this.$fontSize = (0,ACore.$)('.as-table-of-text-input-tool-font-size', this.$tool).on('change', this.ev_fontSizeChange); this.$bold = (0,ACore.$)('.as-table-of-text-input-tool-bold', this.$tool).on('click', this.ev_clickBold); this.$italic = (0,ACore.$)('.as-table-of-text-input-tool-italic', this.$tool).on('click', this.ev_clickItalic); this.$fontColor = (0,ACore.$)(colorpicker_FontColorButton.tag, this.$tool).on('submit', this.ev_fontColorSubmit); this.$alignBtns = (0,ACore.$$)('.as-table-of-text-input-tool-text-align', this.$tool) .reduce((ac, btn) => { var value = btn.attr('data-align'); btn.on('click', ev => { this.ev_clickAlign(value, ev); }); ac[value] = btn; return ac; }, {}); this.$commandBtns = (0,ACore.$$)('.as-table-of-text-input-tool-command', this.$tool) .reduce((ac, btn) => { var value = btn.attr('data-command'); btn.on('click', ev => { this.commands[value].exec.call(this); // this.ev_clickInsert(value, ev); }); ac[value] = btn; return ac; }, {}); // this.$removeBtn = $('.as-table-of-text-input-tool-remove-col', this.$tool) // .on('click', this.ev_clickRemove); this.focusCell = null; this.table.elt.on('change', () => this.updateAvailableCommands()); } TEIFormatTool.prototype.commands = { left: { /** * @this TEIFormatTool */ available: function () { return this.focusCell.row.cells.length < this.table.maxCol; }, /** * @this TEIFormatTool */ exec: function () { var idx = this.focusCell.row.cells.indexOf(this.focusCell); this.table.rows.forEach(row => { var newCell = new TEICell(row, { value: '' }); row.tr.addChildBefore(newCell.td, row.cells[idx].td); row.cells.splice(idx, 0, newCell); }); this.table.elt.emit('change', { type: 'change', target: this.table }, this.table.elt); } }, right: { /** * @this TEIFormatTool */ exec: function () { var idx = this.focusCell.row.cells.indexOf(this.focusCell); this.table.rows.forEach(row => { var newCell = new TEICell(row, { value: '' }); row.tr.addChildAfter(newCell.td, row.cells[idx].td); row.cells.splice(idx + 1, 0, newCell); }); this.table.elt.emit('change', { type: 'change', target: this.table }, this.table.elt); } }, above: { /** * @this TEIFormatTool */ available: function () { return this.table.rows.length < this.table.maxRow; }, /** * @this TEIFormatTool */ exec: function () { if (!this.focusCell) return; var colN = this.table.rows[0].cells.length; var focusRow = this.focusCell.row; var idx = this.table.rows.indexOf(focusRow); var newRow = new TEIRow(this.table, { cells: Array(colN).fill().map(() => ({ value: '' })) }); this.table.rows.splice(idx, 0, newRow); this.table.$body.addChildBefore(newRow.tr, focusRow.tr); this.table.notifyChange({ newRow: newRow }); } }, bellow: { /** * @this TEIFormatTool */ exec: function () { if (!this.focusCell) return; var colN = this.table.rows[0].cells.length; var focusRow = this.focusCell.row; var idx = this.table.rows.indexOf(focusRow); var newRow = new TEIRow(this.table, { cells: Array(colN).fill().map(() => ({ value: '' })) }); this.table.rows.splice(idx + 1, 0, newRow); this.table.$body.addChildAfter(newRow.tr, focusRow.tr); this.table.notifyChange({ newRow: newRow }); } }, removeCol: { /** * @this TEIFormatTool */ available: function () { return this.table.minCol < this.focusCell.row.cells.length; }, /** * @this TEIFormatTool */ exec: function () { if (!this.focusCell) return; var focusRow = this.focusCell.row; var idx = focusRow.cells.indexOf(this.focusCell); this.table.rows.forEach(row => { var cell = row.cells[idx]; cell.td.remove(); row.cells.splice(idx, 1); }); this.table.elt.emit('change', { type: 'change', target: this.table }, this.table.elt); var cellNext = focusRow.cells[idx - 1] || focusRow.cells[idx]; if (cellNext) cellNext.focus(); } }, removeRow: { /** * @this TEIFormatTool */ available: function () { return this.table.minRow < this.table.rows.length; }, /** * @this TEIFormatTool */ exec: function () { if (!this.focusCell) return; var focusRow = this.focusCell.row; var idx = this.table.rows.indexOf(focusRow); var colIdx = focusRow.cells.indexOf(this.focusCell); focusRow.tr.remove(); this.table.rows.splice(idx, 1); this.table.elt.emit('change', { type: 'change', target: this.table }, this.table.elt); var nextRow = this.table.rows[idx] || this.table.rows[idx - 1]; var nexCell; if (nextRow) { nexCell = nextRow.cells[colIdx]; if (nexCell) nexCell.focus(); } } } }; TEIFormatTool.prototype.commands.right.available = TEIFormatTool.prototype.commands.left.available; TEIFormatTool.prototype.commands.bellow.available = TEIFormatTool.prototype.commands.above.available; TEIFormatTool.prototype.onFocus = function (cell) { if (this.focusCell !== cell && this.focusCell) { this.focusCell.td.removeClass('as-focus'); } if (!this.focusCell) { setTimeout(() => { document.addEventListener('click', this.ev_clickOut); }, 30); } this.focusCell = cell; this.focusCell.td.addClass('as-focus'); this.$fontSize.value = this.focusCell.style.fontSize; if (this.focusCell.style.fontWeight === 'bold') this.$bold.addClass('as-checked'); else this.$bold.removeClass('as-checked'); if (this.focusCell.style.fontStyle === 'italic') this.$italic.addClass('as-checked'); else this.$italic.removeClass('as-checked'); this.$fontColor.value = this.focusCell.style.color; var textAlign = this.focusCell.style.textAlign; for (var align in this.$alignBtns) { if (align === textAlign) { this.$alignBtns[align].addClass('as-checked'); } else { this.$alignBtns[align].removeClass('as-checked'); } } this.updateAvailableCommands(); }; TEIFormatTool.prototype.updateAvailableCommands = function () { Object.keys(this.$commandBtns).forEach(key => { var available = this.focusCell && this.commands[key].available.call(this); this.$commandBtns[key].disabled = !available; }); }; TEIFormatTool.prototype.onBlur = function (cell) { }; TEIFormatTool.prototype.ev_clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.table.wrapper, event)) return; if (this.focusCell) { this.focusCell.td.removeClass('as-focus'); this.focusCell = null; } document.removeEventListener('click', this.ev_clickOut); }; TEIFormatTool.prototype.ev_fontSizeChange = function () { if (!this.focusCell) return; var prevValue = this.focusCell.style.fontSize; var newValue = this.$fontSize.value; if (newValue !== prevValue) { this.focusCell.style.fontSize = newValue; this.table.elt.emit('change', { type: 'change', target: this.table, cell: this }, this); } }; TEIFormatTool.prototype.ev_clickBold = function () { if (this.$bold.hasClass('as-checked')) { this.$bold.removeClass('as-checked'); this.focusCell.style.fontWeight = 'normal'; } else { this.$bold.addClass('as-checked'); this.focusCell.style.fontWeight = 'bold'; } this.table.elt.emit('change', { type: 'change', target: this.table, cell: this }, this); }; TEIFormatTool.prototype.ev_clickItalic = function () { if (!this.focusCell) return; if (this.$italic.hasClass('as-checked')) { this.$italic.removeClass('as-checked'); this.focusCell.style.fontStyle = 'normal'; } else { this.$italic.addClass('as-checked'); this.focusCell.style.fontStyle = 'italic'; } this.table.elt.emit('change', { type: 'change', target: this.table, cell: this }, this); }; TEIFormatTool.prototype.ev_fontColorSubmit = function () { if (!this.focusCell) return; var prevColor = this.focusCell.style.color; var newColor = this.$fontColor.value; if (prevColor !== newColor) { this.focusCell.style.color = newColor; this.table.elt.emit('change', { type: 'change', target: this.table, cell: this }, this); } }; TEIFormatTool.prototype.ev_clickAlign = function (newValue, event) { if (!this.focusCell) return; var prevValue = this.focusCell.style.textAlign; if (prevValue !== newValue) { this.$alignBtns[prevValue].removeClass('as-checked'); this.$alignBtns[newValue].addClass('as-checked'); this.focusCell.style.textAlign = newValue; this.table.elt.emit('change', { type: 'change', target: this.table, cell: this }, this); } }; TEIFormatTool.prototype.ev_clickInsert = function (at, event) { if (!this.focusCell) return; var idx = this.table.cells.indexOf(this.focusCell); var bfIdx = at === 'left' ? idx : idx + 1; var newCell = new TEICell(this.table, { value: '' }); if (bfIdx >= this.table.cells.length) { this.table.$row.addChild(newCell.td); this.table.cells.push(newCell); } else { this.table.$row.addChildBefore(newCell.td, this.table.cells[bfIdx].td); this.table.cells.splice(bfIdx, 0, newCell); } this.table.elt.emit('change', { type: 'change', target: this.table, cell: this }, this); }; TEIFormatTool.prototype.ev_clickRemove = function () { if (!this.focusCell) return; this.focusCell.remove(); this.table.elt.emit('change', { type: 'change', target: this.table, cell: this.focusCell }, this.table); this.focusCell = null; }; TEIFormatTool.prototype.ev_keydown = function (event) { var key = (0,keyboard/* keyboardEventToKeyBindingIdent */.Ej)(event); switch (key) { case 'ctrl-b': this.ev_clickBold(event); event.preventDefault(); break; case 'ctrl-i': this.ev_clickItalic(); event.preventDefault(); break; case 'ctrl-l': this.ev_clickAlign('left', event); event.preventDefault(); break; case 'ctrl-e': this.ev_clickAlign('center', event); event.preventDefault(); break; case 'ctrl-r': this.ev_clickAlign('right', event); event.preventDefault(); break; } }; // EXTERNAL MODULE: ./node_modules/absol-acomp/js/mobile/MHeaderBar.js var MHeaderBar = __webpack_require__(9277); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/mobileapp.css var mobileapp = __webpack_require__(8789); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/Context.js var Context = __webpack_require__(5721); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/mobile/MExplore.js var makeTextToNode = (data, pElt) => { var node; if (typeof data === "string") { node = (0,ACore._)({ text: data }); } else if (data instanceof Array) { data.forEach(it => makeTextToNode(it, pElt)); } if (node) pElt.addChild(node); } var makeIconToNode = (data, pElt) => { var node; if (data) node = (0,ACore._)(data); pElt.clearChild(); if (node) pElt.addChild(node); } function MExploreSectionBreak() { this._name = ''; this.$name = (0,ACore.$)('.am-explore-section-break-name', this); } MExploreSectionBreak.tag = 'MExploreSectionBreak'.toLowerCase(); MExploreSectionBreak.render = function () { return (0,ACore._)({ class: 'am-explore-section-break', child: [ { class: 'am-explore-section-break-name', }, '.am-explore-section-break-line' ] }); }; MExploreSectionBreak.property = {}; MExploreSectionBreak.property.name = { set: function (value) { if (value === null || value === undefined) value = ''; this._name = value; this.$name.clearChild(); makeTextToNode(value, this.$name); }, get: function () { return this._name; } }; function MExploreItemBlock() { this.$name = (0,ACore.$)('.am-explore-item-block-name', this); this._name = ''; this._icon = null; this.$icon = (0,ACore.$)('.am-explore-item-block-icon', this); this.$name = (0,ACore.$)('.am-explore-item-block-name', this); /** * @name name * @type {string} * @memberof MExploreItemBlock# */ /** * @name icon * @memberof MExploreItemBlock# */ } MExploreItemBlock.tag = 'MExploreItemBlock'.toLowerCase(); MExploreItemBlock.render = function () { return (0,ACore._)({ attr: { tabindex: '1' }, class: 'am-explore-item-block', child: [ { class: 'am-explore-item-block-icon' }, { class: 'am-explore-item-block-name' } ] }); }; MExploreItemBlock.property = {}; MExploreItemBlock.property.icon = { set: function (value) { value = value || null; this._icon = value; makeIconToNode(value, this.$icon) }, get: function () { return this._icon; } }; MExploreItemBlock.property.name = { set: function (value) { if (value === null || value === undefined) value = ''; makeTextToNode(value, this.$name); this._name = value; }, get: function () { return this._name; } }; MExploreItemBlock.property.hidden = { set: function (value) { if (value) { this.addClass('as-hidden'); } else { this.removeClass('as-hidden'); } }, get: function () { return this.hasClass('as-hidden'); } } function MExploreItemList() { } MExploreItemList.tag = 'MExploreItemList'.toLowerCase(); MExploreItemList.render = function () { } /** * @extends AElement * @constructor */ function MExploreGroup() { this.$br = (0,ACore.$)(MExploreSectionBreak.tag, this); this._items = []; this.$items = []; this.$itemCtn = (0,ACore.$)('.am-explore-group-item-ctn', this); /** * @name name * @type {string} * @memberof MExploreGroup# /** * @name items * @type {[]} * @memberof MExploreGroup# */ } MExploreGroup.tag = 'MExploreGroup'.toLowerCase(); MExploreGroup.render = function () { return (0,ACore._)({ class: 'am-explore-group', extendEvent: ['press'], child: [ { tag: MExploreSectionBreak }, { class: 'am-explore-group-item-ctn' } ] }); }; MExploreGroup.property = {}; MExploreGroup.property.name = { set: function (value) { value = value || ''; this.$br.name = value; if (value) { this.$br.removeStyle('display'); } else { this.$br.addStyle('display', 'none'); } }, get: function () { return this.$br.name; } }; MExploreGroup.property.items = { /** * @this MExploreGroup * @param items */ set: function (items) { if (!items || !items.slice || !items.map) items = []; items = items.slice(); this._items = items; while (this.$items.length) { this.$items.pop().selfRemove(); } this.$items = items.map(it => { var elt = (0,ACore._)({ tag: MExploreItemBlock, props: { data: it, name: it.name, icon: it.icon, hidden: !!it.hidden }, on: { click: event => { this.emit('press', { type: 'press', target: elt, itemData: it, originalEvent: event, itemElt: elt }, this); } } }); if (window.ABSOL_DEBUG) { elt.attr('title', 'score: ' + it.score); } return elt; }); this.$itemCtn.addChild(this.$items); }, get: function () { return this._items; } } MExploreGroup.property.hidden = { set: function (value) { if (value) { this.addClass('as-hidden'); } else { this.removeClass('as-hidden'); } }, get: function () { return this.hasClass('as-hidden'); } }; /** * @extends AElement * @constructor */ function MSpringboardMenu() { if (BrowserDetector/* default.isMobile */.Z.isMobile) { this.addClass('as-mobile'); } this.keyboardCtrl = new MSMKeyboardController(this); this.$groups = []; this.$attachHook = (0,ACore._)('attachhook').addTo(this); this.$attachHook.on('attached', () => { ResizeSystem/* default.add */.Z.add(this); this.updateSize(); this.keyboardCtrl.lowPriorityFocus(); }); this.$attachHook.requestUpdateSize = this.updateSize.bind(this); this.searchingPlugin = new MSMSearchingPlugin(this); /** * @name searching * @type {{input: SearchTextInput, items: []}} * @memberof MSpringboardMenu# */ } MSpringboardMenu.tag = 'MSpringboardMenu'.toLowerCase(); MSpringboardMenu.render = function () { return (0,ACore._)({ attr: { tabindex: '1' }, class: 'am-springboard-menu', extendEvent: ['press'] }); }; MSpringboardMenu.prototype.updateSize = function () { if (!this.isDescendantOf(document.body)) return; if (this.$groups.length === 0) return; var maxChildLength = 0; var longestGroupElt = this.$groups[0]; var groupElt; for (var i = 0; i < this.$groups.length; ++i) { groupElt = this.$groups[i]; if (groupElt.$items.length > maxChildLength) { longestGroupElt = groupElt; maxChildLength = groupElt.$items.length; } } var style = getComputedStyle(groupElt.$itemCtn); var width = parseFloat(style.width.replace('px', '')); if (width < 10) return; var paddingLeft = parseFloat(style.paddingLeft.replace('px', '')); var paddingRight = parseFloat(style.paddingRight.replace('px', '')); var rowLength = Math.max(1, Math.floor((width - paddingLeft - paddingRight) / 150)); var itemWidth = Math.floor((width - paddingLeft - paddingRight) / rowLength) - 1; this.addStyle('--item-width', itemWidth + 'px'); }; MSpringboardMenu.property = {}; MSpringboardMenu.property.groups = { /** * @this MSpringboardMenu * @param groups */ set: function (groups) { if (!(groups instanceof Array)) groups = []; this.$groups.forEach(elt => elt.selfRemove()); this.$groups = groups.map(group => { var hidden = group.hidden || !group.items || group.items.length === 0 || group.items.every(it => it.hidden); var elt = (0,ACore._)({ tag: MExploreGroup, props: { data: group, name: group.name, items: group.items || [], hidden: hidden }, on: { press: (event) => { this.emit('press', Object.assign({ groupElt: elt, groupData: group }, event), this); } } }); return elt; }); this.addChild(this.$groups); this.updateSize(); }, get: function () { return this.$groups.map(gr => gr.data); } }; ACore/* default.install */.Z.install(MSpringboardMenu); /** * * @param {MSpringboardMenu} elt * @constructor */ function MSMKeyboardController(elt) { this.elt = elt; if (!BrowserDetector/* default.isMobile */.Z.isMobile) this.elt.on('keydown', this.ev_keydown.bind(this)); this.itemsMatrix = []; } MSMKeyboardController.prototype.canLowPriorityFocus = function () { var elt = document.activeElement; if (!elt || elt === document.body || elt === this.elt) { return true; } if (elt.hasClass && elt.hasClass('am-explore-item-block') && elt.isDescendantOf(this.elt)) return false; var style; while (elt && elt !== document.body && elt !== this.elt) { style = getComputedStyle(elt); if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') { return true; } elt = elt.parentElement; } return false; }; MSMKeyboardController.prototype.lowPriorityFocus = function () { if (!this.canLowPriorityFocus()) return; this.elt.focus(); // var firstItem = null; // for (var i = 0; i < this.elt.$groups.length; ++i) { // var group = this.elt.$groups[i]; // if (group.$items.length > 0) { // firstItem = group.$items[0]; // break; // } // } // if (firstItem) { // firstItem.focus(); // } }; MSMKeyboardController.prototype.calcItemsMatrix = function () { var arr = []; var group; var item; for (var i = 0; i < this.elt.$groups.length; ++i) { group = this.elt.$groups[i]; for (var j = 0; j < group.$items.length; ++j) { item = group.$items[j]; if (item.hidden) continue; arr.push(item); } } arr = arr.map(item => { var rect = item.getBoundingClientRect(); return { item: item, ii: Math.round(rect.top / 30), jj: Math.round(rect.left / 30) } }); var rows = arr.reduce((ac, it) => { ac[it.ii] = ac[it.ii] || []; ac[it.ii].push(it); return ac; }, {}); rows = Object.values(rows); rows.sort((a, b) => { return a[0].ii - b[0].ii; }); rows.forEach(row => { row.sort((a, b) => { return a.jj - b.jj; }); }); this.itemsMatrix = rows.map(row => row.map(it => it.item)); return rows; }; MSMKeyboardController.prototype.findItemsStartsWith = function (prefix) { prefix = prefix.toLowerCase(); var res = []; var group; var item; for (var i = 0; i < this.elt.$groups.length; ++i) { group = this.elt.$groups[i]; for (var j = 0; j < group.$items.length; ++j) { item = group.$items[j]; if (item.hidden) continue; if ((0,stringFormat.nonAccentVietnamese)(item.name.toLowerCase()).startsWith(prefix)) { res.push(item); } } } return res; }; /** * * @param elt */ MSMKeyboardController.prototype.positionOf = function (elt) { if (!elt) return null; if (elt.hidden) return null; var row; var item; for (var i = 0; i < this.itemsMatrix.length; ++i) { row = this.itemsMatrix[i]; for (var j = 0; j < row.length; ++j) { item = row[j]; if (item === elt) { return [i, j]; } } } return null; }; MSMKeyboardController.prototype.ev_keydown = function (event) { if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') return; var key = (0,keyboard/* keyboardEventToKeyBindingIdent */.Ej)(event); var focusElt = document.activeElement; if (!focusElt || !focusElt.hasClass) focusElt = null; if (focusElt && !focusElt.hasClass('am-explore-item-block')) focusElt = null; if (focusElt && focusElt.hidden) focusElt = null; if (focusElt && !focusElt.isDescendantOf(this.elt)) focusElt = null; var focusIdx; var itemEltArr; var itemPos; if (key.length === 1) { itemEltArr = this.findItemsStartsWith(key); focusIdx = itemEltArr.indexOf(focusElt); if (itemEltArr.length > 0) { itemEltArr[(focusIdx + 1) % itemEltArr.length].focus(); } } else if (['arrowdown', 'arrowup', 'arrowleft', 'arrowright'].indexOf(key) >= 0) { event.preventDefault(); this.calcItemsMatrix(); itemPos = this.positionOf(focusElt); switch (key) { case 'arrowdown': itemPos = itemPos || [-1, 0]; if (itemPos[0] < this.itemsMatrix.length - 1) { itemPos[0]++; itemPos[1] = Math.min(itemPos[1], this.itemsMatrix[itemPos[0]].length - 1); } break; case 'arrowup': itemPos = itemPos || [1, 0]; if (itemPos[0] > 0) { itemPos[0]--; itemPos[1] = Math.min(itemPos[1], this.itemsMatrix[itemPos[0]].length - 1); } break; case 'arrowleft': itemPos = itemPos || [0, 1]; if (itemPos[1] > 0) { itemPos[1]--; } else if (itemPos[0] > 0) { itemPos[0]--; itemPos[1] = this.itemsMatrix[itemPos[0]].length - 1; } break; case 'arrowright': itemPos = itemPos || [0, -1]; if (itemPos[1] < this.itemsMatrix[itemPos[0]].length - 1) { itemPos[1]++; } else if (itemPos[0] < this.itemsMatrix.length - 1) { itemPos[0]++; itemPos[1] = 0; } break; } focusElt = this.itemsMatrix[itemPos[0]] && this.itemsMatrix[itemPos[0]][itemPos[1]]; if (focusElt) focusElt.focus(); } else if (key === 'enter') { event.preventDefault(); if (focusElt) focusElt.click(); } }; /** * @extends Context * @param {MSpringboardMenu} elt * @constructor */ function MSMSearchingPlugin(elt) { Context/* default.call */.Z.call(this); this.elt = elt; this._data = null; OOP/* default.drillProperty */.ZP.drillProperty(this.elt, this, 'searching', 'data'); this.ev_inputStopTyping = this.ev_inputStopTyping.bind(this); /** * @type {SearchTextInput|null} */ this.$input = null; this.itemHolders = []; this.$seachGroups = []; } (0,OOP/* mixClass */.Jx)(MSMSearchingPlugin, Context/* default */.Z); MSMSearchingPlugin.prototype.onStart = function () { this.$input = this._data && this._data.input; if (!this.$input) { this.$input = (0,ACore._)({ tag: Searcher/* default */.Z }); this.elt.addChildBefore(this.$input, this.elt.firstChild); } this.$input.on('stoptyping', this.ev_inputStopTyping); this.calcItemHoldersFromItems(); }; MSMSearchingPlugin.prototype.calcItemHoldersFromItems = function () { // var holders = []; var count = 0; var virtualGroups = []; var visit = (item, parent) => { if (item.hidden) return; count++; var holder = this.makeHolder(item); holder.path = parent.path.concat([parent.item.name]); holder.count = count; if (holder.type === 'group') { virtualGroups.push(holder); } else { parent.children = parent.children || []; parent.children.push(holder); } if (item.items && item.items.length > 0) { if (holder.type !== 'group') { holder = Object.assign({}, holder, { type: 'group', children: [] }); virtualGroups.push(holder); } item.items.forEach((child) => visit(child, holder)); } } var rootHolder = Object.assign({}, this.makeHolder({ name: 'root' }), { children: [], path: [], type: 'group' }); virtualGroups.push(rootHolder); this._data.items.forEach((item) => visit(item, rootHolder)); virtualGroups = virtualGroups.filter(it => it.children && it.children.length > 0); this.itemHolders = virtualGroups; }; MSMSearchingPlugin.prototype.onResume = function () { this.elt.addClass('as-searching'); //view search }; MSMSearchingPlugin.prototype.onPause = function () { this.elt.removeClass('as-searching'); //view origin }; MSMSearchingPlugin.prototype.onStop = function () { this.$input.on('stopchange', this.ev_inputStopTyping); if (this.$input.isDescendantOf(this.elt)) { this.$input.remove(); } //turn off event }; MSMSearchingPlugin.prototype.makeHolder = function (item) { var spliter = /[\s,-\.+?\_]+/; var notEmp = function (e) { return e.length > 0; }; var res = { item: item, text: item.name || item.searchName || '', hidden: !!item.hidden, type: item.type }; if (item.hidden) return res; res.text = res.text.toLowerCase(); res.words = res.text.split(spliter).filter(notEmp); res.text = res.words.join(' '); res.nacWords = res.words.map(txt => (0,stringFormat.nonAccentVietnamese)(txt)); res.nacText = res.nacWords.join(' '); res.wordDict = res.words.reduce((ac, cr) => { ac[cr] = true; return ac; }, {}); res.nacWordDict = res.nacWords.reduce((ac, cr) => { ac[cr] = true; return ac; }, {}); return res; }; MSMSearchingPlugin.prototype.calcScore = function (queryHolder, itemHolder) { var score = 0; var mustIncluded = false; if (itemHolder.nacText.indexOf(queryHolder.nacText) >= 0) mustIncluded = true; if (itemHolder.text.indexOf(queryHolder.text) >= 0) mustIncluded = true; score += (0,stringMatching.wordsMatch)(queryHolder.words, itemHolder.words) / ((0,Math_int.harmonicMean)(queryHolder.words.length, itemHolder.words.length) || 1); score += (0,stringMatching.wordsMatch)(queryHolder.nacWords, itemHolder.nacWords) / ((0,Math_int.harmonicMean)(queryHolder.nacWords.length, itemHolder.nacWords.length) || 1); var dict = Object.keys(itemHolder.nacWordDict); Object.keys(queryHolder.nacWordDict).forEach(function (qWord) { var bestWordScore = 0; var bestWord = ''; var word; for (word in dict) { if ((0,stringMatching.wordLike)(qWord, word) > bestWordScore) { bestWordScore = (0,stringMatching.wordLike)(qWord, word); bestWord = word; } } if (bestWordScore > 0) { score += bestWordScore / ((0,Math_int.harmonicMean)(qWord.length, bestWord.length) || 1); delete dict[bestWord]; } }); return { score: score, mustIncluded: mustIncluded }; }; MSMSearchingPlugin.prototype.ev_inputStopTyping = function () { var query = this.$input.value; this.query(query); }; MSMSearchingPlugin.prototype.query = function (query) { query = query || ''; query = query.trim(); if (query && query.length > 0 && this.state !== 'RUNNING') { this.start(); } else if (!query || query.length === 0) { this.pause(); return; } var scoreList = []; var queryHolder = this.makeHolder({ name: query }, -1); var visit2calcScore = (holder) => { var res = Object.assign({ item: holder.item, type: holder.type, path: holder.path }, this.calcScore(queryHolder, holder)); scoreList.push(res.score); if (holder.children) { res.children = holder.children.map(visit2calcScore); res.childrenScore = res.children.reduce((ac, cr) => Math.max(ac, cr.score, cr.childrenScore || 0), 0); res.treeScore = Math.max(res.score, res.childrenScore || 0); } return res; }; var itemsHolders = this.itemHolders.map(visit2calcScore); scoreList.push(0); scoreList.sort((a, b) => b - a); var maxScore = scoreList[0] || 0; var midScore; if (maxScore < 1) { midScore = Math.max(maxScore - 0.2, 0.1); midScore = Math.max(midScore, scoreList[Math.floor(scoreList.length * 0.2 * maxScore)] - 0.01); } else { midScore = maxScore * 0.6; midScore = Math.max(midScore, scoreList[Math.floor(scoreList.length * 0.3)] - 0.1); } var visit2filter = function (holder) { var score = holder.score; var childrenScore = holder.childrenScore || 0; if (holder.mustIncluded) return true; if (score >= midScore && childrenScore <= score) return true; if (holder.children) { holder.children = holder.children.filter(visit2filter); return holder.children.length > 0; } return false; }; itemsHolders = itemsHolders.filter(visit2filter); itemsHolders.forEach(holder => { if (holder.children) holder.children.sort((a, b) => b.treeScore - a.treeScore); }); itemsHolders.sort((a, b) => b.treeScore - a.treeScore); this.$seachGroups.forEach(elt => elt.remove()); this.$seachGroups = itemsHolders.map(holder => { var elt = (0,ACore._)({ tag: MExploreGroup, class: 'as-search-result', props: {}, on: { press: (event) => { this.elt.emit('press', Object.assign({ groupElt: elt, groupData: holder.item }, event), this.elt); } } }); if (window.ABSOL_DEBUG) { elt.attr('title', 'score: ' + holder.score + ', childrenScore: ' + holder.childrenScore); } if (holder.item.name === 'root') { elt.name = '/'; } else { elt.name = holder.path.slice(1).concat(holder.item.name).join(' / '); } if (holder.children) { elt.items = holder.children.map(child => Object.assign({ score: child.score }, child.item)); } return elt; }); this.elt.addChild(this.$seachGroups); }; Object.defineProperty(MSMSearchingPlugin.prototype, 'data', { get: function () { return this._data; }, set: function (value) { this.stop(); value = value || null; if (value && !value.items) value = null; if (value && !value.items.length) value = null; this._data = value; if (value) this.start(true); } }); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/colorpickerbutton.css var colorpickerbutton = __webpack_require__(9693); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/colorpicker/ColorPicker.js function ColorPicker() { var res = (0,ACore._)(['<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 = (0,ACore.$)('.f-mode', res); res.$sep0 = (0,ACore.$)('.separator0', res); res.$sep1 = (0,ACore.$)('.separator1', res); res.$sep2 = (0,ACore.$)('.separator2', res); res.$num0 = (0,ACore._)('editabletext.num0'); res.$num1 = (0,ACore._)('editabletext.num1'); res.$num2 = (0,ACore._)('editabletext.num2'); res.$num3 = (0,ACore._)('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); (0,ACore.$)(".absol-editabe-text.num0", res).selfReplace(res.$num0); (0,ACore.$)(".absol-editabe-text.num1", res).selfReplace(res.$num1); (0,ACore.$)(".absol-editabe-text.num2", res).selfReplace(res.$num2); (0,ACore.$)(".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 = (0,ACore.$)('.absol-color-picker-color', res); res.$colorVal = (0,ACore.$)('.absol-color-picker-val', res); res.$draggerVal = (0,ACore.$)('.absol-color-dragger', res.$colorVal); res.eventHandler = OOP/* default.bindFunctions */.ZP.bindFunctions(res, ColorPicker.eventHandler); res.$colorVal.on('pointerdown', res.eventHandler.colorPointerDown, true); res.$hue = (0,ACore.$)('.absol-color-picker-hue', res); res.$draggerHue = (0,ACore.$)('.absol-color-dragger', res.$hue); res.$hue.on('pointerdown', res.eventHandler.huePointerDown); res.$alpha = (0,ACore.$)('.absol-color-picker-alpha', res); res.$alpha.on('pointerdown', res.eventHandler.alphaPointerDown); res.$draggerAlpha = (0,ACore.$)('.absol-color-dragger', res.$alpha); res.$textContainer = (0,ACore.$)('.absol-color-picker-text-container', res); res.$mode = (0,ACore.$)('.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 = (0,ACore.$)('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/* default.parse */.Z.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/* default.fromHSBA */.Z.fromHSBA(this.hue, this.saturation, this.brightness, this.alpha); } } ColorPicker.property.RGBA = { set: function (value) { var hsba = Color_Color/* default.rgbaToHSBA */.Z.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/* default.hsbaToRGBA */.Z.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/* default.hsbaToRGBA */.Z.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/* default.hsbaToRGBA */.Z.hsbaToRGBA([this.hue, 1, 1, 1]); this.$color.addStyle('background', 'rgba(' + rgba.map((x, i) => i < 3 ? x * 255 : x).join(',') + ')'); rgba = Color_Color/* default.hsbaToRGBA */.Z.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/* default */.Z['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/* default */.Z[(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]; }; ACore/* default.install */.Z.install('ColorPicker'.toLowerCase(),ColorPicker); /* harmony default export */ const colorpicker_ColorPicker = ((/* unused pure expression or super */ null && (ColorPicker))); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/colorpicker/ColorPickerButton.js var ColorPickerButton_isMobile = BrowserDetector/* default.isMobile */.Z.isMobile; /*** * @extends AElement * @constructor */ function ColorPickerButton() { if (!ColorPickerButton.css) { ColorPickerButton.css = new DynamicCSS/* default */.Z() .setProperty('.as-color-cell.as-color-picker-button-inner.as-null .as-color-cell-value', 'background-image', `url("data:image/svg+xml;base64,${(0,base64.base64EncodeUnicode)(red_cross.replace(/\$width/g, '33').replace(/\$height/g, '18'))}")`) .commit(); } this.mode = 'OBJECT'; this.$innerValue = (0,ACore.$)('.as-color-picker-button-inner', this); this.prepare(); this.on('click', this.eventHandler.click); /*** * @name value * @type {string|Color} * @memberOf ColorPickerButton# */ /*** * @name hasOpacity * @type {boolean} * @memberOf ColorPickerButton# */ /*** * @name nullable * @type {boolean} * @memberOf ColorPickerButton# */ /*** * @name readOnly * @type {boolean} * @memberOf ColorPickerButton# */ } ColorPickerButton.tag = 'ColorPickerButton'.toLowerCase(); ColorPickerButton.prototype.supportedModes = ['OBJECT', 'RGBA', 'RGB', 'HEX8', 'HEX6', 'HEX4', 'HEX3']; ColorPickerButton.prototype.hasOpacityModes = ['OBJECT', 'RGBA', 'HEX8', 'HEX4']; ColorPickerButton.eventHandler = {}; ColorPickerButton.eventHandler.click = function (event) { this.togglePicker(); }; ColorPickerButton.eventHandler.changeColor = function (event) { this._value = event.value; this.$innerValue.value = event.value; this.emit('change', event, this); }; ColorPickerButton.eventHandler.clickBody = function (event) { if (EventEmitter/* default.hitElement */.ZP.hitElement(this, event) || EventEmitter/* default.hitElement */.ZP.hitElement(this.$ColorPicker, event)) return; this.closePicker(); }; ColorPickerButton.eventHandler.submit = function (event) { this.closePicker(); }; ColorPickerButton.prototype.togglePicker = function () { if (this.hasClass('as-color-picker-selecting')) { this.closePicker(); } else { this.openPicker(); } }; ColorPickerButton.prototype.openPicker = function () { if (this.readOnly) return; if (this.hasClass('as-color-picker-selecting')) return; 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); if (ColorPickerButton.$ColorPicker.$attachhook) {//prevent stuck setTimeOut ColorPickerButton.$ColorPicker.$attachhook.emit('attached'); } this.$follower.followTarget = this; this.$follower.sponsorElement = this; setTimeout(function () { document.addEventListener('click', this.eventHandler.clickBody); }.bind(this), 100); this._lastValue = this.value; this.$ColorPicker.nullable = this.nullable; this.$ColorPicker.hasOpacity = this.hasOpacity; ColorPickerButton.$ColorPicker.value = this.value; setTimeout(function () { thisBt.$follower.removeStyle('visibility'); }, 1); //10p }; ColorPickerButton.prototype.closePicker = function () { if (!this.hasClass('as-color-picker-selecting')) return; this.removeClass('as-color-picker-selecting'); if (ColorPickerButton.lastOpen === this) { ColorPickerButton.lastOpen = null; this.$follower.selfRemove(); } this.$ColorPicker.off('change', this.eventHandler.changeColor) .off('submit', this.eventHandler.submit); document.removeEventListener('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 = (0,ACore._)('modal').on('click', function (event) { if (event.tagert === this) { if (ColorPickerButton.lastOpen) ColorPickerButton.lastOpen.closePicker(); } }); } else { ColorPickerButton.$follower = (0,ACore._)('follower.as-color-picker-button-follower'); ColorPickerButton.$follower.cancelWaiting(); } ColorPickerButton.$ColorPicker = (0,ACore._)({ tag: 'solidcolorpicker' }).addTo(ColorPickerButton.$follower); if (ColorPickerButton.$ColorPicker.$attachhook) {//prevent stuck setTimeOut ColorPickerButton.$ColorPicker.$attachhook.cancelWaiting(); } ColorPickerButton.lastOpen = null; } this.$follower = ColorPickerButton.$follower; this.$ColorPicker = ColorPickerButton.$ColorPicker; }; ColorPickerButton.render = function () { return (0,ACore._)({ tag: 'button', extendEvent: ['change', 'stopchange'], class: 'as-color-picker-button', child: [ { tag: ColorCell, class: "as-color-picker-button-inner", } ] }); }; ColorPickerButton.property = {}; ColorPickerButton.property.value = { set: function (value) { this._value = value; this.$innerValue.value = value || null; }, get: function () { var nullable = this.nullable; var value = this._value; if (!this._value && nullable) return value;//null, "" if (!this._value && !nullable) { value = new Color_Color/* default */.Z([0, 0, 0, 1]); } if (this.mode.match(/HEX4|HEX6|HEX8|RGB|RGBA/) && value && value.toHex3) { value = this._value.toString(this.mode); } return value; } }; ColorPickerButton.property.mode = { set: function (value) { value = value || 'OBJECT'; value = value.toUpperCase(); if (this.supportedModes.indexOf(value) < 0) value = 'OBJECT'; this.attr('data-mode', value); this._mode = value; }, get: function () { return this._mode; } }; ColorPickerButton.property.hasOpacity = { get: function () { return this.hasOpacityModes.indexOf(this._mode) >= 0; } }; ColorPickerButton.property.nullable = { set: function (value) { if (value) { this.addClass('as-nullable'); } else { this.removeClass('as-null-nullable'); } }, get: function () { return this.hasClass('as-nullable'); } }; ColorPickerButton.property.readOnly = { set: function (value) { if (value) { this.addClass('as-readonly'); } else { this.removeClass('as-readonly'); } }, get: function () { return this.hasClass('as-readonly'); } }; ACore/* default.install */.Z.install(ColorPickerButton); /* harmony default export */ const colorpicker_ColorPickerButton = (ColorPickerButton); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/colorpicker/SelectColorSchemeMenu.js var SelectColorSchemeMenu = __webpack_require__(5830); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/progressbar.css var progressbar = __webpack_require__(9862); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ProgressCircle.js var ProgressCircle_ = ACore/* default._ */.Z._; var ProgressCircle_$ = ACore/* default.$ */.Z.$; function ProgressCircle() { this._text = 'Loading\n$value'; this._value = 0; this._variant = null; this._viewValue = 0; this.$pie = ProgressCircle_$('.as-progress-circle-pie', this); this.$inner = ProgressCircle_$('.as-progress-circle-inner', this); this.$end = ProgressCircle_$('.as-progress-circle-end', this); this.$text = ProgressCircle_$('.as-progress-circle-text', this); this._animated = true; } ProgressCircle.tag = 'ProgressCircle'.toLowerCase(); ProgressCircle.render = function () { return ProgressCircle_({ class: 'as-progress-circle', child: [ '.as-progress-circle-start', '.as-progress-circle-pie', '.as-progress-circle-end', { class: 'as-progress-circle-inner', child: { class: 'as-progress-circle-text', child: { text: '' } } } ] // child: { // class: 'as-progress-bar-value' // } }); }; ProgressCircle.property = {}; ProgressCircle.prototype._updateValue = function () { if (Math.abs(this._value - this._viewValue) < 0.05 || !this._animated) this._viewValue = this._value; else { if (this._value > this._viewValue) this._viewValue += 0.05; else this._viewValue -= 0.05; } var value = this._viewValue; var angle = Math.PI * (-0.5 + value * 2); var cosAngle = Math.cos(angle); var sinAngle = Math.sin(angle); var pl = 'polygon(50% 0%, 100% 0%, '; if (value >= 0.25) pl += '100% 100%, '; if (value >= 0.5) pl += '0% 100%, '; if (value >= 0.75) pl += '0% 0%, '; pl += `${50 + 50 * cosAngle}% ${50 + 50 * sinAngle}%`; pl += ', 50% 50%)'; this.$pie.addStyle('clipPath', pl); this.$end.addStyle({ left: `calc(${50 + 50 * cosAngle}% - ${(cosAngle + 1) * 0.8/2}em)`, top: `calc(${50 + 50 * sinAngle}% - ${(sinAngle + 1) * 0.8/2}em)` }); if (this._value !== this._viewValue) { requestAnimationFrame(() => this._updateValue()); } } ProgressCircle.prototype._updateText = function () { var value = this._value; var text = this._text; text = text.replace('$value', Math.round(value * 100) + '%'); this.$text.firstChild.data = text; }; /** * @type {ProgressCircle} */ ProgressCircle.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; } }; ProgressCircle.property.value = { /** * @this ProgressCircle * @param value */ set: function (value) { value = Math.max(0, Math.min(1, value || 0)); this._value = value; this._updateValue(); this._updateText(); }, get: function () { return this._value; } }; ProgressCircle.property.text = { set: function (value) { value = value || ''; if (typeof value !== "string") value = ''; this._text = value; this._updateText(); }, get: function () { return this._text; } } ProgressCircle.property.animated = { set: function (value) { value = !!value; this._animated = value; if (value) { this.addClass('as-animated'); } else { this.removeClass('as-animated'); } }, get: function () { return this._animated; } } ACore/* default.install */.Z.install(ProgressCircle); /* harmony default export */ const js_ProgressCircle = (ProgressCircle); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/expressioninput.css var expressioninput = __webpack_require__(3386); // EXTERNAL MODULE: ./node_modules/absol/src/SCLang/SCGrammar.js var SCGrammar = __webpack_require__(3224); // EXTERNAL MODULE: ./node_modules/absol/src/Pharse/DPParser.js + 1 modules var DPParser = __webpack_require__(3281); // EXTERNAL MODULE: ./node_modules/absol/src/Pharse/DPParseInstance.js var DPParseInstance = __webpack_require__(56); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ExpressionInput.js /*** * @extends PositionTracker * @constructor */ function ExpressionInput() { this.domSignal = new DelaySignal/* default */.Z(); this.$rangeCtn = (0,ACore.$)('.as-expression-input-range-ctn', this); this.$content = (0,ACore.$)('.as-expression-input-content', this); this.$iconCtn = (0,ACore.$)('.as-expression-input-icon-ctn', this); // this.$forground = $('.as-expression-input-foreground', this); /** * * @type {null|AElement} */ this.$icon = null; this.$alertIcon = (0,ACore.$)('.mdi.mdi-alert-circle', this.$iconCtn); this.engine = new EIEngine(this); this.userActionCtrl = new EIUserActionController(this); // this.selection = new EISelection(this); this.autoCompleteCtrl = new EIAutoCompleteController(this); this.undoMgn = new EIUndoManager(this); this.cmdTool = new EICommandTool(this); this._icon = null; /**** * @name value * @type {string} * @memberOf ExpressionInput# */ /** * @type {{variables: string[], functions: string[], sampleJS?:{getFunctions: function(): string[], getVariables: function(): string[]}}} * @memberOf ExpressionInput# * @name autocomplete */ /** * @type {*} * @memberOf ExpressionInput# * @name icon */ } ExpressionInput.tag = 'ExpressionInput'.toLowerCase(); ExpressionInput.render = function () { return (0,ACore._)({ tag: js_PositionTracker, extendEvent: ['stopchange', 'blur', 'focus'], class: ['as-expression-input'], child: [ { class: 'as-expression-input-icon-ctn', child: ['span.mdi.mdi-alert-circle'] }, { class: 'as-expression-input-content', attr: { contenteditable: 'true', spellcheck: 'false' } }//, // { class: 'as-expression-input-range-ctn' }, ] }); }; ExpressionInput.prototype.requestUpdateSize = function () { if (this.cmdTool && this.cmdTool.$ctn && this.cmdTool.$ctn.parentElement) { this.cmdTool.$ctn.updatePosition(); } }; ExpressionInput.prototype.notifySizeCanBeChanged = function () { var bound = this.getBoundingClientRect(); if (!this._prevSize || this._prevSize.width !== bound.width || this._prevSize.height !== bound.height) { ResizeSystem/* default.updateUp */.Z.updateUp(this, true); } this._prevSize = { width: bound.width, height: bound.height }; }; ExpressionInput.prototype.revokeResource = function () { (0,utils.revokeResource)(this.engine); (0,utils.revokeResource)(this.autoCompleteCtrl); (0,utils.revokeResource)(this.undoMgn); (0,utils.revokeResource)(this.cmdTool); (0,utils.revokeResource)(this.domSignal); }; ExpressionInput.prototype.focus = function () { this.$content.focus(); this.engine.setSelectedPosition(this.engine.value.length); }; ExpressionInput.property = {}; ExpressionInput.property.readOnly = { set: function (value) { if (value) { this.addClass('as-read-only'); this.$content.removeAttribute('contenteditable'); } else { this.removeClass('as-read-only'); if (!this.hasClass('as-disabled')) { this.$content.setAttribute('contenteditable', 'true'); } } }, get: function () { return this.hasClass('as-read-only'); } }; ExpressionInput.property.disabled = { set: function (value) { if (value) { this.addClass('as-disabled'); this.$content.removeAttribute('contenteditable'); } else { this.removeClass('as-disabled'); if (!this.hasClass('as-read-only')) { this.$content.setAttribute('contenteditable', 'true'); } } }, get: function () { return this.hasClass('as-disabled'); } } ExpressionInput.property.value = { get: function () { return this.engine.value; }, set: function (value) { this.engine.value = value; this.undoMgn.reset(); } }; ExpressionInput.property.icon = { /** * @this ExpressionInput * @param value */ set: function (value) { if (this.$icon) this.$icon.remove(); this.$iconCtn.clearChild(); var elt; if ((0,Dom/* isDomNode */.mV)(value)) { if (value.parentElt) value = value.cloneNode(true); elt = value; } else if (value && (typeof value === 'string' || typeof value === 'object')) { if (value === 'default') value = 'span.mdi.mdi-equal'; elt = (0,ACore._)(value); } if (elt) { this.$iconCtn.addChild(elt); this.$icon = elt; this.addClass('as-has-icon'); } else { this.$icon = null; value = null; this.removeClass('as-has-icon'); } this._icon = value; }, get: function () { return this._icon; } }; /*** * @memberOf ExpressionInput# * @type {{}} */ ExpressionInput.eventHandler = {}; ACore/* default.install */.Z.install(ExpressionInput); /* harmony default export */ const js_ExpressionInput = (ExpressionInput); /** * * @param {ExpressionInput} elt * @constructor */ function EIUserActionController(elt) { this.elt = elt; this.$content = elt.$content; this._stopChangeTO = -1; /** * * @type {EIEngine} */ this.engine = elt.engine; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.elt.on('stopchange', () => { this.elt.undoMgn.commit(); this.elt.engine.highlightError(); }); this.$content.on({ cut: this.ev_cut, blur: this.ev_blur, focus: this.ev_focus, paste: this.ev_paste, keydown: this.ev_keydown }); } EIUserActionController.prototype.delayNotifyStopChange = function () { if (this._stopChangeTO > 0) { clearTimeout(this._stopChangeTO); } this._stopChangeTO = setTimeout(function () { this._stopChangeTO = -1; this.elt.emit('stopchange', {}, this.elt); }.bind(this), 200); }; EIUserActionController.prototype.ev_keydown = function (event) { var key = (0,keyboard/* keyboardEventToKeyBindingIdent */.Ej)(event); if (key.match(/^[a-zA-Z0-9]$/)) { this.elt.engine.requestRedrawTokens(); setTimeout(() => { this.elt.autoCompleteCtrl.openDropdownIfNeed(); if (this.elt.autoCompleteCtrl.isOpen) { this.elt.autoCompleteCtrl.updateDropDownContent(); } }, 200); } else if (key === 'enter') { event.preventDefault(); if (this.elt.autoCompleteCtrl.isSelecting()) { this.elt.autoCompleteCtrl.applySelectingSuggestion(); } else { this.engine.breakLine(); } } else if (key === 'arrowleft' || key === 'arrowright' || key.match(/^[^a-zA-Z0-9]$/)) { this.elt.autoCompleteCtrl.closeDropdownIfNeed(); } else if (key === 'arrowup' || key === 'arrowdown') { if (this.elt.autoCompleteCtrl.isSelecting()) { event.preventDefault(); this.elt.autoCompleteCtrl.moveSelectingSuggestion(key === 'arrowup' ? 'up' : 'down'); } } else if (key === 'ctrl-space') { this.engine.redrawTokens(); this.elt.autoCompleteCtrl.openDropdown(); } else if (key === 'escape') { if (this.elt.autoCompleteCtrl.isOpen) { this.elt.autoCompleteCtrl.closeDropdown(); event.preventDefault(); } } else if (key === 'ctrl-z') { event.preventDefault(); this.elt.undoMgn.undo(); } else if (key === 'ctrl-y') { event.preventDefault(); this.elt.undoMgn.redo(); } else if ((event.ctrlKey && event.key === 'X') || (!event.ctrlKey && event.key.length === 1) || event.key === 'Delete' || event.key === 'Backspace') { this.elt.engine.requestRedrawTokens(); setTimeout(() => { this.elt.autoCompleteCtrl.openDropdownIfNeed(); if (this.elt.autoCompleteCtrl.isOpen) { this.elt.autoCompleteCtrl.updateDropDownContent(); } }, 200); } this.delayNotifyStopChange(); setTimeout(() => { this.elt.notifySizeCanBeChanged(); }, 1); }; EIUserActionController.prototype.ev_paste = function (event) { var paste = (event.clipboardData || window.clipboardData).getData('text'); paste = paste.replace(/[\r\n]+/g, ' '); event.preventDefault(); var pos = this.elt.engine.getSelectPosition(); if (!pos || !paste) return; var value = this.elt.value; this.elt.engine.value = value.substring(0, pos.start) + paste + value.substring(pos.end); this.elt.engine.setSelectedPosition(pos.start + paste.length); this.elt.engine.highlightError(); this.elt.notifySizeCanBeChanged(); }; EIUserActionController.prototype.ev_cut = function (event) { this.elt.domSignal.emit('redrawTokens'); this.delayNotifyStopChange(); this.elt.notifySizeCanBeChanged(); }; EIUserActionController.prototype.ev_focus = function (event) { this.elt.engine.clearErrorHighlight(); setTimeout(function () { //todo this.elt.engine.getSelectPosition(); }.bind(this), 100); }; EIUserActionController.prototype.ev_blur = function (event) { this.elt.engine.highlightError(); }; EIUserActionController.prototype.ev_dragInit = function (event) { }; /** * * @param {ExpressionInput} elt * @constructor */ function EIEngine(elt) { this.elt = elt; this.lastSelectedPosition = { start: 0, end: 0, direction: 'forward' }; this.$content = elt.$content; /** * * @type {null|Range} */ this.range = null; this.elt.domSignal.on('redrawTokens', this.redrawTokens.bind(this)); for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this._isListenSelectionChange = false; this.$content.on('focus', this.ev_focus); } EIEngine.prototype.ev_focus = function () { if (!this._isListenSelectionChange) { document.addEventListener('selectionchange', this.ev_range); this._isListenSelectionChange = true; } }; EIEngine.prototype.ev_range = function () { if (!this.elt.isDescendantOf(document.body)) { document.removeEventListener('selectionchange', this.ev_range); this._isListenSelectionChange = false; } this.updateRange(); }; EIEngine.prototype.revokeResource = function () { if (this._isListenSelectionChange) { document.removeEventListener('selectionchange', this.ev_range); this._isListenSelectionChange = false; } }; EIEngine.prototype.requestRedrawTokens = function () { this.elt.domSignal.emit('redrawTokens'); } EIEngine.prototype.highlightError = function () { var elt = this.elt; var contentElt = this.$content; var value = elt.value.trim(); var it = EIParser.parse(value, 'exp'); var i, notSkipCount = 0; var tokenErrorIdx = -1; if (value && it.error) { elt.addClass('as-error'); elt.attr('title', it.error.message); tokenErrorIdx = it.error.tokenIdx; } else { elt.removeClass('as-error'); } for (i = 0; i < contentElt.childNodes.length; ++i) {//todo: fix conflict (run before redraw) if (contentElt.childNodes[i].getAttribute &&contentElt.childNodes[i].classList.contains('as-token') && contentElt.childNodes[i].getAttribute('data-type') !== 'skip') { if (notSkipCount === tokenErrorIdx) { contentElt.childNodes[i].classList.add('as-unexpected-token'); } else { contentElt.childNodes[i].classList.remove('as-unexpected-token'); } notSkipCount++; } } }; EIEngine.prototype.clearErrorHighlight = function () { var contentElt = this.$content; for (var i = 0; i < contentElt.length; ++i) { if (contentElt.childNodes[i].classList.contains('as-token') && contentElt.childNodes[i].getAttribute('data-type') !== 'skip') { contentElt.childNodes[i].classList.remove('as-unexpected-token'); } } }; EIEngine.prototype.drawTokensContent = function () { var selectedPos = this.getSelectPosition(); var value = this.value; var tokens = EIParser.tokenizer.tokenize(value); var tokenEltChain = Array.prototype.slice.call(this.$content.childNodes); while (tokenEltChain[tokenEltChain.length - 1] && tokenEltChain[tokenEltChain.length - 1].tagName === 'BR') { tokenEltChain.pop(); } var leftPassed = 0; while (leftPassed < tokenEltChain.length && leftPassed < tokens.length) { if (!tokenEltChain[leftPassed].firstChild || !tokenEltChain[leftPassed].classList.contains('as-token') || tokens[leftPassed].content !== tokenEltChain[leftPassed].firstChild.data) break; if (!tokenEltChain[leftPassed].token || tokenEltChain[leftPassed].getAttribute('data-type') !== tokens[leftPassed].type) { tokenEltChain[leftPassed].setAttribute('data-type', tokens[leftPassed].type); } leftPassed++; } var rightPassed = 0; while (rightPassed < tokenEltChain.length && rightPassed < tokens.length) { if (!tokenEltChain[tokenEltChain.length - 1 - rightPassed].firstChild || !tokenEltChain[tokenEltChain.length - 1 - rightPassed].classList.contains('as-token') || tokens[tokens.length - 1 - rightPassed].content !== tokenEltChain[tokenEltChain.length - 1 - rightPassed].firstChild.data) break; if (tokenEltChain[tokenEltChain.length - 1 - rightPassed].getAttribute('data-type') !== tokens[tokens.length - 1 - rightPassed].type) { tokenEltChain[tokenEltChain.length - 1 - rightPassed].setAttribute('data-type', tokens[tokens.length - 1 - rightPassed].type); } rightPassed++; } var beforeToken; if (leftPassed + rightPassed < Math.max(tokenEltChain.length, tokens.length)) { beforeToken = tokenEltChain[tokenEltChain.length - rightPassed]; tokenEltChain.splice(leftPassed, tokenEltChain.length - leftPassed - rightPassed).forEach(function (elt) { elt.remove(); }); tokens.slice(leftPassed, tokens.length - rightPassed).forEach(function (token) { var tokenElt = this.makeTokenElt(token); if (beforeToken) { this.$content.addChildBefore(tokenElt, beforeToken); } else { this.$content.addChild(tokenElt); } }.bind(this)); } if (selectedPos) this.setSelectedPosition(selectedPos); }; EIEngine.prototype.updateTokenExType = function () { /** * @type {HTMLElement[]} */ var tokenEltChain = Array.prototype.slice.call(this.$content.childNodes); var token, nextToken; var i, j; for (i = 0; i < tokenEltChain.length; ++i) { token = tokenEltChain[i]; if (this.isTextNode(token)) continue; if (token.innerText === "true" || token.innerText === "false") { token.setAttribute('data-ex-type', 'boolean'); } else if (token.getAttribute('data-type') === 'word') { j = i + 1; nextToken = tokenEltChain[i + 1]; while (nextToken) { if (nextToken.getAttribute('data-type') === 'symbol' && nextToken.innerText === '(') { token.setAttribute('data-ex-type', 'function'); break; } else if (nextToken.getAttribute('data-type') === 'skip') { nextToken = tokenEltChain[++j]; } else { break; } } } else { token.removeAttribute('data-ex-type'); } } }; EIEngine.prototype.redrawTokens = function () { this.drawTokensContent(); this.updateTokenExType(); this.elt.notifySizeCanBeChanged(); }; /** * * @param {{type: string, content: string}} token * @returns {*} */ EIEngine.prototype.makeTokenElt = function (token) { if (token.content === '\n') return (0,ACore._)('br'); return (0,ACore._)({ tag: 'span', class: ['as-token'], attr: { 'data-type': token.type }, child: { text: token.content } }); }; EIEngine.prototype.insertText = function (text) { var lastPos = this.getSelectPosition(); var value; if (this.lastSelectedPosition) { value = this.elt.value; this.value = value.substring(0, lastPos.start) + text + value.substring(lastPos.end); this.lastSelectedPosition = Object.assign({ direction: 'forward', start: lastPos.start + text.length, end: lastPos.start + text.length }); if (document.activeElement === this.elt.$content) { this.setSelectedPosition(this.lastSelectedPosition); } } else this.appendText(text); this.elt.userActionCtrl.delayNotifyStopChange(); }; EIEngine.prototype.appendText = function (text) { var newValue = this.value + text; this.value = newValue; if (document.activeElement === this.$content) { this.setSelectedPosition(newValue.length); } this.elt.userActionCtrl.delayNotifyStopChange(); }; EIEngine.prototype.isValidRange = function (range) { return AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(range.startContainer, this.$content) && AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(range.endContainer, this.$content); }; EIEngine.prototype.updateRange = function () { var sel = window.getSelection(); var range; for (var i = 0; i < sel.rangeCount; ++i) { range = sel.getRangeAt(i); if (this.isValidRange(range)) this.range = range; } }; EIEngine.prototype.isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; }; EIEngine.prototype.isWordToken = function (node) { if (this.isTextNode(node)) return false; return node.getAttribute('data-type') === 'word'; }; EIEngine.prototype.isSymbolToken = function (node) { if (this.isTextNode(node)) return false; return node.getAttribute('data-type') === 'symbol'; }; EIEngine.prototype.isMemberSymbolToken = function (node) { return this.isSymbolToken(node) && node.innerText === '->'; }; EIEngine.prototype.isSkipToken = function (node) { if (this.isTextNode(node)) return false; return node.getAttribute('data-type') === 'skip'; } EIEngine.prototype.getRange = function () { this.updateRange(); return this.range; }; /** * * @param {Range} range */ EIEngine.prototype.setRange = function (range) { this.range = range; var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); }; EIEngine.prototype.childIndexOf = function (node) { if (!node.parentElement) return 0; return Array.prototype.indexOf.call(node.parentElement.childNodes, node); }; EIEngine.prototype.lcaOf = function (nd1, nd2) { var track1 = []; var track2 = []; var rootNode = this.elt; while (nd1 && (nd1 !== rootNode)) { track1.unshift(nd1); nd1 = nd1.parentElement; } while (nd2 && (nd2 !== rootNode)) { track2.unshift(nd2); nd2 = nd2.parentElement; } var res = null; for (var i = 0; i < track1.length && i < track2.length; ++i) { if (track1[i] === track2[i]) res = track1[i]; else break; } return res; }; EIEngine.prototype.trimLeft = function (nd, ofs) { if (this.isTextNode(nd)) { nd.data = nd.data.substring(ofs); } else { for (var i = 0; i < ofs; ++i) { nd.removeChild(nd.firstChild); } } }; EIEngine.prototype.trimRight = function (nd, ofs) { if (this.isTextNode(nd)) { nd.data = nd.data.substring(0, ofs); } else { while (nd.childNodes.length > ofs) { nd.removeChild(nd.lastChild); } } }; EIEngine.prototype.breakTextNode = function (textNode, offset) { var parent = (0,ACore.$)(textNode.parentElement); var text = textNode.data; var newTextNode = (0,ACore._)({ text: text.substring(offset) }); textNode.data = text.substring(0, offset); parent.addChildAfter(newTextNode, textNode); return newTextNode; }; EIEngine.prototype.breakElement = function (elt, offset) { var parent = (0,ACore.$)(elt.parentElement); var newElt = elt.cloneNode(false); var rightChildren = Array.prototype.slice.call(elt.childNodes, offset); for (var i = 0; i < rightChildren.length; ++i) { newElt.appendChild(rightChildren[i]); } parent.addChildAfter(newElt, elt); return newElt; }; EIEngine.prototype.breakNode = function (node, offset) { if (this.isTextNode(node)) { return this.breakTextNode(node, offset); } else { return this.breakElement(node, offset); } }; EIEngine.prototype.breakLine = function () { var range = this.getRange(); if (!range) return; var startCtn = range.startContainer; var endCtn = range.endContainer; var startOfs = range.startOffset; var endOfs = range.endOffset; var newNd; var lcaNd = this.lcaOf(startCtn, endCtn); while (startCtn !== lcaNd) { this.trimRight(startCtn, startOfs); startOfs = this.childIndexOf(startCtn) + 1; startCtn = startCtn.parentElement; } while (endCtn !== lcaNd) { this.trimLeft(endCtn, endOfs); endOfs = this.childIndexOf(endCtn); endCtn = endCtn.parentElement; } if (this.isTextNode(startCtn)) { newNd = startCtn.parentElement.cloneNode(false); newNd.appendChild((0,ACore._)({ text: startCtn.data.substring(0, startOfs) })); startCtn.parentElement.parentElement.insertBefore(newNd, startCtn.parentElement); startCtn.data = startCtn.data.substring(endOfs); newNd = (0,ACore._)('br'); startCtn.parentElement.parentElement.insertBefore(newNd, startCtn.parentElement); startCtn = newNd.parentElement; startOfs = this.childIndexOf(newNd) + 1; endCtn = startCtn; endOfs = startOfs; } else if (startCtn === this.$content) { Array.prototype.slice.call(startCtn.childNodes, startOfs, endOfs - 1).forEach(nd => nd.remove()); newNd = (0,ACore._)('br'); startCtn.insertBefore(newNd, startCtn.childNodes[startOfs]); endOfs = startOfs + 1; startOfs = endOfs; } else { endCtn = this.breakElement(startCtn, startOfs); endOfs -= startCtn; if (endOfs >= 0) { newNd = this.breakElement(endCtn, endOfs); endCtn.remove(); endCtn = newNd; endOfs = 0; } newNd = (0,ACore._)('br'); endCtn.parentElement.insertBefore(newNd, endCtn); startCtn = newNd.parentElement; startOfs = this.childIndexOf(newNd) + 1; endCtn = startCtn; endOfs = startOfs; } var childNodes = Array.prototype.slice.call(this.$content.childNodes); var nd; for (var i = 0; i < childNodes.length; ++i) { nd = childNodes[i]; if (nd.tagName === 'BR') continue; if (this.stringOf(nd).length === 0) { if (AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(startCtn, nd)) { startCtn = this.$content; startOfs = this.childIndexOf(nd); } if (AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(endCtn, nd)) { endCtn = this.$content; endOfs = this.childIndexOf(nd); } nd.remove(); } } range = document.createRange(); range.setStart(startCtn, startOfs); range.setEnd(endCtn, endOfs); this.setRange(range); }; EIEngine.prototype.domRange2SelectPosition = function (range) { var sel = window.getSelection(); if (!range) return null; var direction = 'forward'; if (!range) return null; var cmpPosition = sel.anchorNode.compareDocumentPosition(sel.focusNode); if (cmpPosition === 4) { direction = 'forward'; } else if (cmpPosition === 2) { direction = 'backward' } else if (!cmpPosition && sel.anchorOffset > sel.focusOffset || cmpPosition === Node.DOCUMENT_POSITION_PRECEDING) { direction = 'backward'; } 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, direction: direction, startCtn: range.startContainer, startOffset: range.startOffset, endCtn: range.endContainer, endOffset: range.endOffset }; }; EIEngine.prototype.getSelectPosition = function () { var range = this.getRange(); this.lastSelectedPosition = this.domRange2SelectPosition(range) || this.lastSelectedPosition; return this.lastSelectedPosition; }; /** * * @param {null|number|{start: number, end: number}=}pos */ EIEngine.prototype.setSelectedPosition = function (pos) { var start; var end; if (typeof pos === "number") { start = pos; end = pos; } else if (pos === null) { return; } else { start = pos.start; end = pos.end; } var startCtn, startOfs, endCtn, endOfs; var text; text = ''; var visit = (nd) => { var prevText = text; var parent = nd.parentElement; if (this.isTextNode(nd)) { text += nd.data; if (text.length > start && prevText.length <= start) { startCtn = nd; startOfs = start - prevText.length; } if (text.length > end && prevText.length <= end) { endCtn = nd; endOfs = end - prevText.length; } } else if (nd.tagName === 'BR' && parent && parent.lastChild !== nd) { text += '\n'; if (text.length > start && prevText.length <= start) { startCtn = parent; startOfs = this.childIndexOf(nd); } if (text.length > end && prevText.length <= end) { endCtn = parent; endOfs = this.childIndexOf(nd); } } else { for (var i = 0; i < nd.childNodes.length; ++i) { visit(nd.childNodes[i]); } } } visit(this.$content); if (!startCtn) { startCtn = this.$content; startOfs = this.$content.childNodes.length; } if (!endCtn) { endCtn = startCtn; endOfs = startOfs; } var range = document.createRange(); range.setStart(startCtn, startOfs); range.setEnd(endCtn, endOfs); this.setRange(range); }; EIEngine.prototype.getPosition = function (node, offset) { var text = ''; var found = false; var visit = (nd) => { var i; if (found) return; if (nd === node) { if (this.isTextNode(nd)) { text += nd.data.substring(0, offset); } else { for (i = 0; i < nd.childNodes.length && i < offset; ++i) { visit(nd.childNodes[i]); } } found = true; return; } var parent = nd.parentElement; if (nd.tagName === 'BR' && parent && parent.lastChild !== nd) { text += '\n'; } if (this.isTextNode(nd)) { text += nd.data; } else { for (i = 0; i < nd.childNodes.length && !found; ++i) { visit(nd.childNodes[i]); } } } visit(this.$content); return text.length; }; EIEngine.prototype.stringOf = function (node) { if (!node) return ''; if (node.nodeType === 3) { return node.data; } var res = ''; var parent = node.parentElement; if ((node.tagName === 'BR' || node.tagName === 'br') && parent && parent.lastChild !== node) { return '\n'; } else if ((node.tagName === 'DIV' || node.tagName === 'div') && parent && parent.firstChild !== node) { res += '\n'; } return res + Array.prototype.map.call(node.childNodes, (cNode, index, arr) => { return this.stringOf(cNode, node); }).join(''); }; /** * * @param offset * @returns {AElement} */ EIEngine.prototype.tokenAt = function (offset) { var l = 0; var res = null; var nd, i; for (i = 0; i < this.$content.childNodes.length; ++i) { nd = this.$content.childNodes[i]; l += this.stringOf(nd).length; if (l > offset || (i + 1 === this.$content.childNodes.length && l === offset)) { res = nd; break; } } return res; }; /** * * @param {AElement}token * @returns {AElement} */ EIEngine.prototype.findPrefixWordTokenOf = function (token) { if (!token) return null; if (!this.isWordToken(token) && this.stringOf(token) !== '->') return null; var temp = token; var prefixStartElt = null; var state = this.isWordToken(temp) ? 0 : 1;//0: after is word, 1: symbol temp = temp.previousSibling; while (temp) { if (this.isSkipToken(temp)) { temp = temp.previousSibling; continue; } if (state === 0) { if (this.stringOf(temp) === '->') { state = 1; } else break; } else { if (this.isWordToken(temp)) { prefixStartElt = temp; state = 0; } else break; } temp = temp.previousSibling; } return prefixStartElt || null; }; // // EIEngine.prototype.selectCurrentMemberExpression = function () { // var rage = this.getRange(); // if (!rage) return; // var startCtn = rage.startContainer; // var endCtn = rage.endContainer; // var startOfs = rage.startOffset; // var endOfs = rage.endOffset; // // }; Object.defineProperty(EIEngine.prototype, 'value', { get: function () { return Array.prototype.map.call(this.$content.childNodes, nd => this.stringOf(nd)).join(''); }, set: function (value) { var tokens = EIParser.tokenizer.tokenize(value || ''); this.$content.clearChild() .addChild(tokens.map(function (token) { return this.makeTokenElt(token); }.bind(this))); this.updateTokenExType(); this.lastSelectedPosition = { start: value.length, end: value.length, direction: 'forward' }; } }); /** * * @param {ExpressionInput} elt * @constructor */ function EIUndoManager(elt) { this.elt = elt; this.reset(); } /** * * @returns {boolean} is changed value and commit success */ EIUndoManager.prototype.commit = function () { var text = this.elt.value; var range = this.elt.engine.getSelectPosition() || { start: text.length, end: text.length }; var curValue = this.stack[this.idx].value; if (curValue === text) return false; var newItem = { value: text, range: { start: range.start, end: range.end, direction: range.direction || 'forward' } }; while (this.stack.length > this.idx + 1) { this.stack.pop(); } this.idx = this.stack.length; this.stack.push(newItem); return true; }; EIUndoManager.prototype.reset = function () { var value = this.elt.value; this.stack = [{ value: value, range: { start: value.length, end: value.length, direction: "forward" } }]; this.idx = 0; }; EIUndoManager.prototype.undo = function () { if (this.idx <= 0) return; this.idx--; var item = this.stack[this.idx]; this.elt.engine.value = item.value; this.elt.engine.setSelectedPosition(item.range); }; EIUndoManager.prototype.redo = function () { if (this.idx + 1 >= this.stack.length) return; this.idx++; var item = this.stack[this.idx]; this.elt.engine.value = item.value; this.elt.engine.setSelectedPosition(item.range); }; /** * * @param {ExpressionInput} elt * @constructor */ function EIAutoCompleteController(elt) { this.elt = elt; this.$content = elt.$content; this.$tokenTarget = null; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.rawSuggestionCache = { value: null, time: 0 } /** * * @type {EISuggestionList |null} */ this.$suggestionList = null; this.query = null; this.isOpen = false; this.dropIsDown = true; } EIAutoCompleteController.prototype.revokeResource = function () { }; EIAutoCompleteController.prototype.openDropdownIfNeed = function () { if (this.isOpen) return; var query = this.getCurrentSearch(); if (query && query.value && query.value.trim()) { this.openDropdown(); } } /** * */ EIAutoCompleteController.prototype.openDropdown = function () { if (this.isOpen) { this.updateDropDownContent(); return; } if (!this.hasSuggestions()) return; this.isOpen = true; this.dropIsDown = true; if (!this.$suggestionList) { this.$suggestionList = (0,ACore._)({ tag: EISuggestionList, style: { top: '10px', left: '10px', position: 'fixed' }, on: { select: (event) => { this.applySuggestion(event.data); this.closeDropdown(); } } }); } this.$suggestionList.addTo(this.elt); var zIndex = (0,utils.findMaxZIndex)(this.elt) + 1; this.$suggestionList.addStyle('z-index', zIndex + ''); this.$suggestionList.reset(); this.elt.startTrackPosition(); // this.$dropDown.addTo(this.elt); this.$tokenTarget = null; this.updateDropDownContent(); this.updateDropDownPosition(); setTimeout(() => { document.addEventListener('click', this.ev_clickOut); }, 200); }; EIAutoCompleteController.prototype.closeDropdown = function () { if (!this.isOpen) return; this.isOpen = false; this.elt.stopTrackPosition(); this.$suggestionList.remove(); document.removeEventListener('click', this.ev_clickOut); } /** * * @returns {null|{prefix: string, value, tokenElt: HTMLElement, prefixStartElt: HTMLElement}} */ EIAutoCompleteController.prototype.getCurrentSearch = function () { var engine = this.elt.engine; var pos = this.elt.engine.getSelectPosition(); if (!pos) return null;//all var tokenElt = this.elt.engine.tokenAt(pos.start); if (!tokenElt) return null; if (!engine.isWordToken(tokenElt)) { tokenElt = tokenElt.previousSibling; } if (!tokenElt) return null; var temp = tokenElt; while (temp) { if (engine.isSymbolToken(temp)) { if ((engine.stringOf(temp) === '->')) { tokenElt = temp; } else { break; } } else if (engine.isSkipToken(temp)) { } else if (engine.isWordToken(temp)) { tokenElt = temp; } temp = temp.nextSibling; } if (!engine.isWordToken(tokenElt) && !engine.isMemberSymbolToken(tokenElt)) return null; var res = { prefix: '', value: '', tokenElt: null, prefixStartElt: null }; temp = tokenElt; var prefixStartElt = engine.findPrefixWordTokenOf(tokenElt); res.value = engine.stringOf(tokenElt); res.tokenElt = tokenElt; if (prefixStartElt) { res.prefixStartElt = prefixStartElt; temp = prefixStartElt; while (temp !== tokenElt) { if (engine.isSkipToken(temp)) { temp = temp.nextSibling; continue; } res.prefix += engine.stringOf(temp); temp = temp.nextSibling; } } return res; }; EIAutoCompleteController.prototype.getCurrentText = function () { var pos = this.elt.engine.getSelectPosition(); if (!pos) return ''; var res = { value: '', tokenElt: null }; var tokenElt = this.elt.engine.tokenAt(pos.start); if (!tokenElt || !tokenElt.getAttribute || tokenElt.getAttribute('data-type') !== 'word') { res.tokenElt = tokenElt; res.value = ''; tokenElt = null; } if (!tokenElt && pos && pos.start > 0) { tokenElt = this.elt.engine.tokenAt(pos.start - 1); } if (tokenElt && tokenElt.getAttribute && tokenElt.getAttribute('data-type') === 'word') { res.value = tokenElt.innerText; res.tokenElt = tokenElt; } console.log(res); return res; }; EIAutoCompleteController.prototype.updateDropDownContent = function () { if (!this.isOpen) return; this.query = this.getCurrentSearch(); this.$suggestionList.data = this.getSuggestionTree(this.query); this.$suggestionList.selectMaxScoreItem(); this.updateDropDownPosition(); }; EIAutoCompleteController.prototype.updateDropDownPosition = function () { if (!this.isOpen) return; var bound; var targetELt = this.query && this.query.tokenElt; var range = this.elt.engine.getRange(); var selected = this.elt.engine.getSelectPosition(); var dropBound = this.$suggestionList.getBoundingClientRect(); if (targetELt) { bound = targetELt.getBoundingClientRect(); } if (!bound) { bound = range.getBoundingClientRect(); if (!bound.width || !bound.height) bound = null; } if (!bound && selected) { targetELt = this.elt.engine.tokenAt(selected.start); if (targetELt) { bound = targetELt.getBoundingClientRect(); } } if (!bound) { bound = this.elt.$content.getBoundingClientRect(); } var screenHeight = (0,Dom/* getScreenSize */.tE)().height; var aTop = bound.top - 10; var aBottom = screenHeight - bound.bottom - 10; var contentHeight = this.$suggestionList.scrollHeight; if (this.dropIsDown) { if (aBottom < contentHeight && aBottom <= aTop) { this.dropIsDown = false; } } else { if (aTop < contentHeight && aTop <= aBottom) { this.dropIsDown = true; } } var screenSize = (0,Dom/* getScreenSize */.tE)(); this.$suggestionList.addStyle('left', Math.max(0, Math.min(bound.left, screenSize.width - dropBound.width)) + 'px'); this.$suggestionList.addStyle('max-height', this.dropIsDown ? aBottom + 'px' : aTop + 'px'); var listBound; if (this.dropIsDown) { this.$suggestionList.addStyle('top', bound.bottom + 'px'); } else { listBound = this.$suggestionList.getBoundingClientRect(); this.$suggestionList.addStyle('top', (bound.top - listBound.height) + 'px'); } }; EIAutoCompleteController.prototype.getRawSuggestion = function () { var now = Date.now(); if (now - this.rawSuggestionCache.time < 3000) { return this.rawSuggestionCache.value; } var variables = []; var functions = []; var temp; if (this.elt.autocomplete) { temp = this.elt.autocomplete.variables; if (typeof temp === "function") temp = temp(); if (Array.isArray(temp)) { temp = temp.filter(x => typeof x === 'string'); variables = variables.concat(temp); } temp = this.elt.autocomplete.functions; if (typeof temp === "function") temp = temp(); if (Array.isArray(temp)) { temp = temp.filter(x => typeof x === 'string'); functions = functions.concat(temp); } if (this.elt.sampleJS && (typeof this.elt.sampleJS.getFunctions === "function")) { temp = this.elt.sampleJS.getFunctions(); if (Array.isArray(temp)) { temp = temp.filter(x => typeof x === 'string'); functions = functions.concat(temp); } } } variables = (0,DataStructure_Array.arrayUnique)(variables); functions = (0,DataStructure_Array.arrayUnique)(functions); this.rawSuggestionCache.value = { variables: variables, functions: functions } this.rawSuggestionCache.time = now; return this.rawSuggestionCache.value; }; EIAutoCompleteController.prototype.hasSuggestions = function () { var rawSuggestions = this.getRawSuggestion(); return rawSuggestions.variables.length > 0 || rawSuggestions.functions.length > 0; }; /** * * @param {string} text * @param {string} prefix */ EIAutoCompleteController.prototype.getSuggestionList = function (text, prefix) { var res = []; prefix = prefix || ''; text = text || ''; text = text.toLowerCase(); var rawSuggestion = this.getRawSuggestion(); var variables = rawSuggestion.variables; var functions = rawSuggestion.functions; var i; var itemText, score; for (i = 0; i < variables.length; ++i) { itemText = variables[i]; score = (0,stringMatching.phraseMatch)(itemText.toLowerCase(), text); res.push({ text: itemText, score: score, type: 'variable' }); } for (i = 0; i < functions.length; ++i) { itemText = functions[i]; score = (0,stringMatching.phraseMatch)(itemText.toLowerCase(), text); res.push({ text: itemText, score: score, type: 'function' }); } res.sort(function (a, b) { if (a.score === b.score) { return a.text > b.text ? 1 : -1; } return b.score - a.score; }); if (text) res = res.filter(x => x.score > 0); return res; }; EIAutoCompleteController.prototype.computeScore = function (queryWords, itemWords) { if (queryWords.length === 0) return 1; queryWords = queryWords.map(x => x.toLowerCase()); itemWords = itemWords.map(x => x.toLowerCase()); var score = 0; var wordScore = 1 / queryWords.length; var i, j; for (i = 0; i < queryWords.length && i < itemWords.length; ++i) { if (queryWords[i] === itemWords[i]) { score += wordScore; } else { score += wordScore * (0,stringMatching.wordLike)(queryWords[i], itemWords[i]); } } var qDict = queryWords.reduce((ac, cr) => { ac[cr] = true; return ac; }, {}); var iDict = itemWords.reduce((ac, cr) => { ac[cr] = true; return ac; }, {}); var bestMatch, bestWord, curWordScore; queryWords = Object.keys(qDict); itemWords = Object.keys(iDict); for (i = 0; i < queryWords.length; ++i) { bestMatch = 0; bestWord = ''; for (j = 0; j < itemWords.length; ++j) { if (queryWords[i] === itemWords[j]) { bestMatch = wordScore; bestWord = itemWords[j]; break; } else { curWordScore = wordScore * (0,stringMatching.wordLike)(queryWords[i], itemWords[j]); if (curWordScore > bestMatch) { bestMatch = curWordScore; bestWord = itemWords[j]; } } } if (bestWord) { iDict[bestWord] = false; score += bestMatch; } } return score; }; EIAutoCompleteController.prototype.getSuggestionTree = function (query) { var splitWords = (text) => text.split(/[^a-zA-Z0-9_$]+/).filter(x => x.length > 0); var queryWords = query ? splitWords(query.prefix + ' ' + query.value) : []; var rawSuggestion = this.getRawSuggestion(); var variables = rawSuggestion.variables; var functions = rawSuggestion.functions; var items = []; var item; var i; for (i = 0; i < variables.length; ++i) { items.push({ text: variables[i], type: 'variable', words: splitWords(variables[i]) }); } for (i = 0; i < functions.length; ++i) { items.push({ text: functions[i], type: 'function', words: splitWords(functions[i]) }); } var min = Infinity, max = -Infinity; for (i = 0; i < items.length; ++i) { item = items[i]; item.score = this.computeScore(queryWords, item.words); if (item.score < min) min = item.score; if (item.score > max) max = item.score; } var idx; if (query) { for (i = 0; i < items.length; ++i) { item = items[i]; idx = item.text.toLowerCase().indexOf(query.value.toLowerCase()); if (idx >= 0) item.score = max - (idx / 1000); } } items.sort((a, b) => b.score - a.score); var mid = (max + min) / 2; items = items.filter(x => x.score >= mid); var trees = []; var nodeDict = { "*": { text: "", children: trees } }; items.forEach(item => { var words = item.words; var k; var key = ''; var nd; var parent = nodeDict['*']; for (k = 0; k < words.length; ++k) { if (k > 0) key += '->'; key += words[k]; nd = nodeDict[key]; if (!nd) { nd = { text: words[k], children: [], key: key, score: 0 }; nodeDict[key] = nd; parent.children.push(nd); } parent = nd; } parent.item = item; parent.score = item.score; }); return trees; }; EIAutoCompleteController.prototype.applySuggestion = function (suggestion) { var engine = this.elt.engine; var query = this.query; var key = suggestion.key; var words = key.split('->'); var startToken = query && query.prefixStartElt; var endToken = query && query.tokenElt; startToken = startToken || endToken; var range; var rangeStartCtn, rangeStartOffset, rangeEndCtn, rangeEndOffset; var i, tokenElt; var oldValue, newValue; var selected; if (startToken && endToken && engine.isWordToken(startToken) && (engine.isWordToken(endToken) || engine.stringOf(endToken) === '->')) { for (i = 0; i < words.length; ++i) { if (i > 0) { tokenElt = engine.makeTokenElt({ type: 'symbol', content: '->' }); this.elt.$content.insertBefore(tokenElt, startToken); } tokenElt = engine.makeTokenElt({ type: 'word', content: words[i] }); this.elt.$content.insertBefore(tokenElt, startToken); if (i + 1 === words.length) { rangeStartCtn = this.elt.$content; rangeStartOffset = engine.childIndexOf(tokenElt) + 1; rangeEndCtn = rangeStartCtn; rangeEndOffset = rangeStartOffset; } } while (startToken !== endToken) { tokenElt = startToken.nextSibling; startToken.remove(); startToken = tokenElt; } endToken.remove(); range = document.createRange(); range.setStart(rangeStartCtn, rangeStartOffset); range.setEnd(rangeEndCtn, rangeEndOffset); engine.setRange(range); } else { oldValue = this.elt.value; selected = engine.getSelectPosition(); newValue = oldValue.substring(0, selected.start) + key + oldValue.substring(selected.end); this.elt.engine.value = newValue; this.elt.engine.setSelectedPosition(selected.start + key.length); } engine.updateTokenExType(); }; EIAutoCompleteController.prototype.isSelecting = function () { return this.isOpen && this.$suggestionList && this.$suggestionList.$selectedNode && true; }; EIAutoCompleteController.prototype.applySelectingSuggestion = function () { if (this.isSelecting()) { this.applySuggestion(this.$suggestionList.$selectedNode.data); //todo // this.applySuggestion(this.$item[this.selectedIdx].getAttribute('data-suggestion')); this.closeDropdown(); } }; EIAutoCompleteController.prototype.closeDropdownIfNeed = function () { setTimeout(() => { var text = this.getCurrentText(); this.$tokenTarget = text && text.tokenElt; if (this.isOpen) { if (!this.$tokenTarget || this.$tokenTarget.getAttribute('data-type') !== 'word') { this.closeDropdown(); } } }, 5); }; /** * * @param {"down"|"up"} direction * @returns {boolean} */ EIAutoCompleteController.prototype.moveSelectingSuggestion = function (direction) { if (direction !== 'down' && direction !== 'up') return false; if (!this.hasSuggestions()) return false; if (this.isSelecting()) { if (direction === 'down') { return this.$suggestionList.moveToNextSuggestion(); } else { return this.$suggestionList.moveToPrevSuggestion(); } } }; EIAutoCompleteController.prototype.ev_positionChange = function (event) { if (!this.elt.isDescendantOf(document.body)) { this.elt.stopTrackPosition(); return; } //todo }; EIAutoCompleteController.prototype.ev_clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$suggestionList, event)) return; this.closeDropdown(); }; /** * * @param {ExpressionInput} elt * @constructor */ function EICommandTool(elt) { this.elt = elt; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.isOpen = false; this.$ctn = (0,ACore._)({ tag: Follower/* default */.Z, class: 'as-ei-command-tool', props: { anchor: [6, 1] }, child: [ // { // tag: 'button', // class: 'as-transparent-button', // child: 'span.mdi.mdi-function-variant', // attr: { // title: 'Insert [Ctrl + I]' // }, // }, { tag: 'button', class: 'as-transparent-button', child: 'span.mdi.mdi-magnify', attr: { title: 'Hint [Ctrl + Space]' }, on: { click: () => { this.elt.autoCompleteCtrl.openDropdown(); this.elt.engine.setSelectedPosition(this.elt.engine.lastSelectedPosition); } } } ] }); this.elt.$content.on('focus', this.ev_focus); } EICommandTool.prototype.open = function () { if (this.isOpen) return; this.elt.emit('focus', { type: 'focus', originalEvent: event, target: this.elt }, this.elt); if (this.elt.autoCompleteCtrl.getSuggestionList().length === 0) return; this.isOpen = true; this.$ctn.addTo(this.elt); this.$ctn.followTarget = this.elt; var zIndex = (0,utils.findMaxZIndex)(this.elt) + 1; this.$ctn.addStyle('z-index', zIndex); document.addEventListener('click', this.ev_clickOut); }; EICommandTool.prototype.close = function () { if (!this.isOpen) return; this.isOpen = false; this.elt.emit('blur', { type: 'blur', originalEvent: event, target: this.elt }, this.elt); document.removeEventListener('click', this.ev_clickOut); this.$ctn.selfRemove(); }; EICommandTool.prototype.ev_focus = function (event) { this.open(); }; EICommandTool.prototype.ev_clickOut = function (ev) { if ((0,EventEmitter/* hitElement */.EY)(this.elt, ev)) return; this.close(); }; EICommandTool.prototype.revokeResource = function () { this.elt.$content.on('focus', this.ev_focus); this.close(); }; /** * @extends {AElement} * @constructor */ function EISuggestionList() { /** * * @type {EISuggestionNode} */ this.$selectedNode = null; this._data = []; this.$children = []; } EISuggestionList.prototype.reset = function () { //todo: select first suggestion } EISuggestionList.prototype.moveToNextSuggestion = function () { if (this.$selectedNode) { return this.selectElt(this.$selectedNode.nextSibling || this.childNodes[0]); } else { return this.selectElt(this.$children[0]); } }; EISuggestionList.prototype.moveToPrevSuggestion = function () { if (this.$selectedNode) { return this.selectElt(this.$selectedNode.previousSibling || this.lastChild); } else { return this.selectElt(this.lastChild); } }; EISuggestionList.render = function () { return (0,ACore._)({ extendEvent: ['select'], class: ['am-select-tree-leaf-box-list', 'as-bscroller', 'as-dropdown-box-common-style', 'as-ei-suggestion-list'], }); }; EISuggestionList.prototype.selectElt = function (elt) { elt = elt || null; if (elt === this.$selectedNode) return false; if (this.$selectedNode) { this.$selectedNode.removeClass('as-selected'); } this.$selectedNode = elt; if (elt) { elt.addClass('as-selected'); } if (this.isDescendantOf(document.body)) { (0,utils.vScrollIntoView)(elt); } return true; } EISuggestionList.prototype.selectMaxScoreItem = function () { var maxPath = []; var maxScore = 0; var visit = (nd, path) => { if (nd.data.score > maxScore) { maxScore = nd.data.score; maxPath = path.concat([nd]); } path.push(nd); nd.$children.forEach(child => { visit(child, path); }); path.pop(); } this.$children.forEach((node) => { visit(node, []); }); maxPath.forEach((node) => { node.open() }); if (maxPath.length > 0) { this.selectElt(maxPath[maxPath.length - 1]); } }; EISuggestionList.property = {}; EISuggestionList.property.data = { set: function (data) { data = data || []; this._data = data; this.clearChild(); this.$children = data.map((it) => { return (0,ACore._)({ tag: EISuggestionNode, props: { data: it } }) }); var viewElements = []; this.$children.forEach(function (child) { child.getViewElements(viewElements); }); this.addChild(viewElements); }, get: function () { return this._data; } }; EISuggestionList.property.selectedSuggestions = { get: function () { return this.$selectedNode ? this.$selectedNode.data : null; } }; /** * @typedef {Object} EISuggestionNodeData * @property {string} text * @property {string} value * @property {string} [desc] * @property {string} type * @property {boolean} [noSelect] * @property {EISuggestionNodeData[]} [children] */ /** * @extends {AElement} * @constructor */ function EISuggestionNode() { this.$text = (0,ACore.$)('.as-eisli-text', this); this.$desc = (0,ACore.$)('.as-eisli-desc', this); this.$iconCtn = (0,ACore.$)('.as-eisli-icon-ctn', this); this._level = 0; this._data = { text: '', desc: '' }; this.on('click', (event) => { this.parentElement.emit('select', { type: 'select', originalEvent: event, target: this, data: this.data }, this); }); /** * * @type {EISuggestionNode[]} */ this.$children = []; /** * @type {"none"|"open"|"close"} * @name status * @memberOf EISuggestionNode# */ /** * @type {EISuggestionNodeData} * @name data * @memberOf EISuggestionNode# */ /** * @type {number} * @name level * @memberOf EISuggestionNode# */ } EISuggestionNode.render = function () { return (0,ACore._)({ class: ['as-ei-suggestion-list-item'], child: [ { class: 'as-eisli-toggler', child: 'toggler-ico' }, { class: 'as-eisli-icon-ctn' }, { class: 'as-eisli-text', child: { text: '' } }, { class: 'as-eisli-desc', child: { text: '' } } ] }); } EISuggestionNode.prototype.getViewElements = function (ac) { ac = ac || []; ac.push(this); if (this.status === 'open') { this.$children.forEach(function (child) { child.getViewElements(ac); }); } return ac; }; EISuggestionNode.prototype.close = function () { if (!this.hasClass(' as-status-open')) return; var viewElements = this.getViewElements(); this.addClass('as-status-close').removeClass('as-status-open'); viewElements.shift(); for (var i = 0; i < viewElements.length; ++i) { viewElements[i].remove(); } }; EISuggestionNode.prototype.open = function () { if (!this.hasClass(' as-status-close')) return; this.addClass('as-status-open').removeClass('as-status-close'); var nextSibling = this.nextSibling; var viewElements = this.getViewElements(); for (var i = 0; i < viewElements.length; ++i) { this.insertBefore(viewElements[i], nextSibling); } }; EISuggestionNode.property = {}; EISuggestionNode.property.data = { /** * @this {EISuggestionNode} * @param {EISuggestionNodeData} data */ set: function (data) { this._data = data || {}; this.$text.firstChild.data = data.text || ''; this.$desc.firstChild.data = data.desc || ''; if (data.noSelect) { this.addClass('as-no-select'); } this.$children = (data.children || []).map((childData) => { return (0,ACore._)({ tag: EISuggestionNode, props: { data: childData, level: this.level + 1 } }); }); this.$iconCtn.clearChild(); if (data.item) { switch (data.item.type) { case 'variable': this.$iconCtn.addChild((0,ACore._)('span.mdi.mdi-variable')); if (data.children && data.children.length > 0) { this.status = 'open'; } break; case 'function': this.$iconCtn.addChild((0,ACore._)('span.mdi.mdi-function')); break; } } else { this.status = 'open'; this.$iconCtn.addChild((0,ACore._)('span.mdi.mdi-code-json')); } }, get: function () { return this._data; } }; EISuggestionNode.property.level = { set: function (value) { this.addStyle('--level', value + ''); this._level = value; this.$children.forEach((child) => { child.level = value + 1; }); }, get: function () { return this._level; } } EISuggestionNode.property.status = { set: function (value) { if (value === 'open') { this.addClass('as-status-open').removeClass('as-status-close'); } else if (value === 'close') { this.addClass('as-status-close').removeClass('as-status-open'); } }, get: function () { if (this.hasClass('as-status-open')) return 'open'; if (this.hasClass('as-status-close')) return 'close'; return 'none'; } } /********************************* * EXPRESSION */ var rules = []; var operatorOrder = { 'NOT': 4, '!': 4, '*': 5, '/': 5, 'MOD': 5, '%': 5, '+': 6, '-': 6, '<': 9, '>': 9, '<=': 9, '>=': 9, '==': 9, '=': 9, '===': 9, '!=': 9, 'AND': 14, '&&': 14, 'OR': 15, '||': 15, 'XOR': 15, } rules.push({ target: 'null', elements: ['_null'], toAST: function (parsedNode) { return { type: 'NullLiteral', } } }); rules.push({ target: 'ident', elements: ['.word'], toAST: function (parsedNode) { return { type: 'Identifier', name: parsedNode.children[0].content } } }); rules.push({ target: 'args_list', elements: ['exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); }, toASTChain: function (parsedNode) { return [(0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode)]; } }); rules.push({ target: 'args_list', elements: ['args_list', '_,', 'exp'], longestOnly: true, ident: 'args_list_rec', toASTChain: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToASTChain */.xI)(parsedNode.children[0]).concat((0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2])); } }); rules.push({ target: 'function_callee', elements: ['ident'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'function_callee', elements: ['mem_exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }) rules.push({ target: 'function_call', elements: ['function_callee', '_(', 'args_list', '_)'], toAST: function (parsedNode) { return { type: 'CallExpression', arguments: parsedNode.children[2].rule.toASTChain(parsedNode.children[2]), callee: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]) } } }); rules.push({ target: 'function_call', elements: ['function_callee', '_(', '_)'], toAST: function (parsedNode) { return { type: 'CallExpression', arguments: [], callee: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]) }; } }); rules.push({ target: 'new_expression', elements: ['_new', 'function_call'], toAST: function (parsedNode) { var callAst = (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[1]) return { type: 'NewExpression', arguments: callAst.arguments, callee: callAst.callee } } }); rules.push({ target: 'exp', elements: ['new_expression'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['null'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['ident'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'number', elements: ['.number'], toAST: function (parsedNode) { return { type: 'NumericLiteral', value: parseFloat(parsedNode.children[0].content) } } }); rules.push({ target: 'string', elements: ['.string'], toAST: function (parsedNode) { var content = parsedNode.children[0].content; if (content[0] === "'") content = '"' + content.substring(1, content.length - 1).replace(/["]/g, '\\"') + '"'; return { type: 'StringLiteral', value: JSON.parse(content) } } }); rules.push({ target: 'boolean', elements: ['_true'], toAST: function (parsedNode) { return { type: 'BooleanLiteral', value: true }; } }); rules.push({ target: 'boolean', elements: ['_false'], toAST: function (parsedNode) { return { type: 'BooleanLiteral', value: false }; } }); rules.push({ target: 'exp', elements: ['number'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['string'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['boolean'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); ['+', '-', '*', '/', '%', '&&', '||', 'XOR', "=", '==', '===', '!=', '<', '>', '>=', '<='].forEach(function (op) { rules.push({ target: 'bin_op', elements: ['_' + op], toAST: function (parsedNode) { return { type: "BinaryOperator", content: op } } }); }); var x = Math.m rules.push({ target: 'exp', elements: ['exp', 'bin_op', 'exp'], // longestOnly: true,//* error when parse return (...)... ident: 'bin_op_rec', toASTChain: function (parseNode) { var res = []; if (parseNode.children[0].rule === this) { res = res.concat(this.toASTChain(parseNode.children[0])); } else { res.push((0,DPParseInstance/* parsedNodeToAST */.Hg)(parseNode.children[0])); } res.push(parseNode.children[1].children[0]); if (parseNode.children[2].rule === this) { res = res.concat(this.toASTChain(parseNode.children[2])); } else { res.push((0,DPParseInstance/* parsedNodeToAST */.Hg)(parseNode.children[2])); } return res; }, toAST: function (parsedNode) { var chain = this.toASTChain(parsedNode); var stack = []; var item; var newNode; while (chain.length > 0) { item = chain.shift(); if (item.content in operatorOrder) { while (stack.length >= 3 && operatorOrder[stack[stack.length - 2].content] <= operatorOrder[item.content]) { newNode = { type: 'BinaryExpression' }; newNode.right = stack.pop(); newNode.operator = stack.pop(); newNode.left = stack.pop(); stack.push(newNode); } } stack.push(item); } while (stack.length >= 3) { newNode = { type: 'BinaryExpression' }; newNode.right = stack.pop(); newNode.operator = stack.pop(); newNode.left = stack.pop(); stack.push(newNode); } return stack.pop(); } }); rules.push({ target: 'exp', elements: ['function_call'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'bracket_group', elements: ['_(', 'exp', '_)'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[1]); } }); rules.push({ target: 'exp', elements: ['bracket_group'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); // rules.push({ // target: 'exp', // elements: ['_(', 'exp', '_)'], // toAST: function (parsedNode) { // return parsedNodeToAST(parsedNode.children[1]); // } // }); ['+', '-', '!'].forEach(function (op) { ['number', 'bracket_group', 'ident', 'function_call', 'mem_exp', 'unary_exp'].forEach(function (arg) { rules.push({ target: 'unary_exp', elements: ['_' + op, arg], toAST: function (parsedNode) { return { type: 'UnaryExpression', argument: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[1]), operator: { type: 'UnaryOperator', content: op } } } }); }); }); rules.push({ target: 'exp', elements: ['unary_exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'mem_exp', elements: ['ident', '_->', 'ident'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['ident', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['new_expression', '_->', 'ident'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['new_expression', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['mem_exp', '_->', 'ident'], longestOnly: true, ident: 'mem_exp_ident_rev', toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['mem_exp', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['bracket_group', '_->', 'ident'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['bracket_group', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), property: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'exp', elements: ['mem_exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); /**********************************************************************************************************************/ rules.push({ target: 'object_exp', elements: ['_{', '_}'], toAST: function (parsedNode) { return { type: 'ObjectExpression', properties: [] } } }); rules.push({ target: 'object_exp', elements: ['_{', 'object_property_list', '_}'], toAST: function (parsedNode) { return { type: 'ObjectExpression', properties: (0,DPParseInstance/* parsedNodeToASTChain */.xI)(parsedNode.children[1]) } } }); rules.push({ target: 'exp', elements: ['object_exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'object_property', elements: ['ident', '_:', 'exp'], toAST: function (parsedNode) { return { type: 'ObjectProperty', key: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), value: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) }; } }); rules.push({ target: 'object_property', elements: ['string', '_:', 'exp'], toAST: function (parsedNode) { return { type: 'ObjectProperty', key: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]), value: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2]) }; } }); rules.push({ target: 'object_property_list', elements: ['object_property'], toASTChain: function (parsedNode) { return [(0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0])]; } }); rules.push({ target: 'object_property_list', elements: ['object_property_list', '_,', 'object_property'], longestOnly: true, ident: 'object_property_list_rec', toASTChain: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToASTChain */.xI)(parsedNode.children[0]).concat([(0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2])]); } }); /**********************************************************************************************************************/ rules.push({ target: 'exp', elements: ['array_exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'array_exp', elements: ['_[', '_]'], toAST: function (parsedNode) { return { type: "ArrayExpression", elements: [] }; } }); rules.push({ target: 'array_exp', elements: ['_[', 'array_item_list', '_]'], toAST: function (parsedNode) { return { type: "ArrayExpression", elements: (0,DPParseInstance/* parsedNodeToASTChain */.xI)(parsedNode.children[1]) }; } }); rules.push({ target: 'array_item_list', elements: ['exp'], toASTChain: function (parsedNode) { return [(0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0])]; } }); rules.push({ target: 'array_item_list', elements: ['array_item_list', '_,', 'exp'], longestOnly: true, ident: 'array_item_list_rec', toASTChain: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToASTChain */.xI)(parsedNode.children[0]).concat([(0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2])]); } }); /**********************************************************************************************************************/ var elementRegexes = [ ['string', /("(?:[^"\\\n]|\\.)*?")|('(?:[^'\\\n]|\\.)*?')/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['skip', /([\s\r\n])|(\/\/[^\n]*)|(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)/], ['dsymbol', /\+\+|--|==|!=|<=|>=|\|\||&&|->/], ['tsymbol', /\.\.\./], ['symbol', /[^\s_a-zA-Z0-9]/], ]; var EIGrammar = { elementRegexes: elementRegexes, operatorOrder: SCGrammar/* default.operatorOrder */.Z.operatorOrder, rules: rules }; var EIParser = new DPParser/* default */.Z(EIGrammar); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/IdentTextInput.js /*** * @augments HTMLInputElement * @augments AElement * @constructor */ function IdentTextInput() { this.history = new ITIHistory(this); this.textCtrl = new ITITextController(this); // this.on('keydown', this.eventHandler.identTextKeyDown) // .on('paste', this.applyData ? this.eventHandler.identTextPaste : this.eventHandler.identTextPaste1); } IdentTextInput.tag = 'IdentTextInput'.toLowerCase(); IdentTextInput.render = function () { return (0,ACore._)('input.as-text-input[type="text"]'); }; IdentTextInput.prototype._filterHistory = function () { if (!this.history) return; var temp = this.history.filter(function (t) { return !t.text.match(/(^[^a-zA-Z_$])|([^a-zA-Z$_0-9]+)/); }); this.history.splice(0, this.history.length); this.history.push.apply(this.history, temp); }; IdentTextInput.prototype._setNewText = function (text, caretPos) { this._filterHistory(); if (typeof caretPos !== "number") caretPos = text.length; caretPos = Math.max(0, Math.min(text.length, caretPos >> 0)); if (this.applyData) { this.applyData(text, { start: caretPos, end: caretPos, direction: 'forward' }); } else { this.value = text; (0,Text.setCaretPosition)(this, caretPos); } }; IdentTextInput.property = {}; IdentTextInput.property.lowerCaseOnly = { set: function (value) { if (value) { this.addClass('as-lower-case-only'); this.value = this.value.toLowerCase(); } else { this.removeClass('as-lower-case-only'); } }, get: function () { return this.addClass('as-lower-case-only'); } }; ACore/* default.install */.Z.install(IdentTextInput); /* harmony default export */ const js_IdentTextInput = (IdentTextInput); /** * * @param {IdentTextInput} elt * @constructor */ function ITIHistory(elt) { this.elt = elt; } /** * * @param {IdentTextInput} elt * @constructor */ function ITITextController(elt) { this.elt = elt; Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) this[key] = this[key].bind(this); }); this.elt.on('keydown', this.ev_keydown); } ITITextController.prototype.keyboardRegex = /[a-zA-Z$_0-9]/; ITITextController.prototype.getSelectionStart = function () { var start = 0; if (this.elt.selectionStart || this.elt.selectionStart === 0) start = this.elt.selectionStart; return start; }; ITITextController.prototype.getSelectionEnd = function () { var end = 0; if (this.elt.selectionEnd || this.elt.selectionEnd === 0) end = this.elt.selectionEnd; return end; }; ITITextController.prototype.ev_keydown = function (event) { var selectedPositionStart; var key = event.key; if (key === ' ') { event.preventDefault(); } else if (key === 'Enter') { event.preventDefault(); this.elt.blur(); } else if (key === "Escape") { // this.value = this._prevValue || ''; this.elt.blur(); } else if (!event.ctrlKey && !event.altKey && key.length === 1) { // if (nonAccentVietnamese(key).match(this.keyboardRegex)) { // selectedPositionStart = this.getSelectionStart(); // if (selectedPositionStart === 0 && key.match(/[0-9]/)) { // event.preventDefault(); // } // } // else { // event.preventDefault(); // } } }; // EXTERNAL MODULE: ./node_modules/absol/src/Code/safeThrow.js var safeThrow = __webpack_require__(5650); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/EfficientTable.js var execAsync = (commands, whileFunc) => { return commands.reduce((ac, act) => { if (whileFunc && !whileFunc()) return; if (ac && ac.then) { if (typeof act === "function") { return ac.then(act); } else { return ac.then(() => act); } } if (typeof act === 'function') return act(ac); else return act; }, null); } var getMaxRowCount = () => { var screenSize = (0,Dom/* getScreenSize */.tE)(); return Math.ceil(Math.max(2048, screenSize.height) / 40.0) * 3; } var waitAll = (variables, thenCb) => { var hasPromise = variables.findIndex(v => v && (typeof v.then === "function")); if (hasPromise >= 0) return Promise.all(variables).then(thenCb); else return thenCb(variables); } var waitValue = (value, thenCb) => { if (value && (typeof value.then === "function")) { return value.then(thenCb); } else return thenCb(value); } /** * @extends AElement * @constructor */ function EfficientTable() { this.layoutCtrl = new ETLayoutController(this); this.fixHeaderCtrl = new ETFixHeaderController(this); this._adapter = null; this.table = null; this.extendStyle = this.extendStyle || {}; this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.$attachhook.requestUpdateSize = this.layoutCtrl.requestUpdateSize.bind(this); this.colWidth = new ETColWidthDeclaration(this); /** * @name adapter * @type {ETAdapter} * @memberof EfficientTable# */ } EfficientTable.tag = 'EfficientTable'.toLowerCase(); EfficientTable.render = function (data, domDesc) { var width = domDesc.style && domDesc.style.width; var classList = ['as-efficient-table-wrapper']; if (width === 'match_parent') { classList.push('as-width-match-parent'); } var id = domDesc.id || (domDesc.attr && domDesc.attr.id) || 'no-id-' + (0,stringGenerate.randomIdent)(10); return (0,ACore._)({ id: id, extendEvent: ['colresize'], class: classList, props: { extendStyle: domDesc.style }, child: [ { class: 'as-dynamic-table-fixed-y-ctn' } ] }); }; EfficientTable.prototype.addStyle = function (name, value) { if (name === 'width') { this.extendStyle[name] = value; } else { AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } return this; }; EfficientTable.prototype.getColWidth = function () { var table = this.table; if (!table) return null; if (arguments.length === 0) return this.colWidth.export(); else return this.colWidth.getProperty(...arguments); }; EfficientTable.prototype.setColWidth = function () { var table = this.table; if (!table) return null; if (arguments.length === 0) Object.assign(this.colWidth); else this.colWidth.setProperty(...arguments); }; /** * * @param {string|number|function}arg */ EfficientTable.prototype.findRow = function (arg) { if (this.table) { return this.table.body.findRow(arg); } return null; }; EfficientTable.prototype.requestUpdateSize = function () { this.layoutCtrl.requestUpdateSize(); }; EfficientTable.prototype.notifyDataSheetChange = function () { if (this.adapter) this.adapter.notifyDataSheetChange(); }; EfficientTable.prototype.notifyRowModifiedAt = function (idx) { if (this.adapter) this.adapter.notifyRowModifiedAt(idx); }; EfficientTable.prototype.notifyRowRemoveAt = function (idx) { if (this.adapter) this.adapter.notifyRowRemoveAt(idx); }; EfficientTable.prototype.notifyAddRowAt = function (idx) { if (this.adapter) this.adapter.notifyAddRowAt(idx); }; EfficientTable.prototype.revokeResource = function () { this.fixHeaderCtrl.revokeResource(); //todo: revoke all resource }; EfficientTable.property = {}; EfficientTable.property.adapter = { set: function (value) { this.colWidth.revokeResource(); this.fixHeaderCtrl.reset(); this._adapter = new ETAdapter(this, value); this.table = new ETTable(this, this._adapter.data); this.addChild(this.table.elt); this._adapter.notifyDataSheetChange(); this.colWidth = new ETColWidthDeclaration(this); }, get: function () { return this._adapter; } }; /* harmony default export */ const js_EfficientTable = (EfficientTable); ACore/* default.install */.Z.install(EfficientTable); // ETAdapter.prototype. /** * * @param {EfficientTable} elt * @constructor */ function ETFixHeaderController(elt) { this.elt = elt; this.$cloneTable = null; this.$cloneHead = null; } ETFixHeaderController.prototype.updateSize = function () { }; ETFixHeaderController.prototype.reset = function () { if (this.isWrapped) { } }; ETFixHeaderController.prototype.revokeResource = function () { this.revokeResource = noop/* default */.Z; this.elt = null; } /** * * @param {EfficientTable} elt * @constructor */ function ETLayoutController(elt) { this.elt = elt; /*** * * @type {SearchTextInput|null} */ this.$searchInput = null; /*** * * @type {AElement} */ this.$table = (0,ACore.$)('.as-dynamic-table', elt); /*** * * @type {AElement} */ this.$thead = (0,ACore.$)('.as-dynamic-table>thead', this.$table); /*** * * @type {AElement} */ this.$tbody = (0,ACore.$)('.as-dynamic-table>tbody', this.$table); this.$filterInputs = []; this.$attachhook = (0,ACore._)('attachhook').addTo(elt); this.domSignal = new DomSignal/* default */.ZP((0,ACore._)('attachhook').addTo(elt)); //controller this.$fixedYCtn = (0,ACore.$)('.as-dynamic-table-fixed-y-ctn', elt); this.extendStyle = {}; // this.$attachhook.requestUpdateSize = this.fixedContentCtrl.updateSize.bind(this.fixedContentCtrl); this.$attachhook.requestUpdateSize = this.requestUpdateSize.bind(this); this.$attachhook.on('attached', () => { ResizeSystem/* default.add */.Z.add(this.$attachhook); this.onAttached(); this.onAttached(); // manager.add(this); setTimeout(() => { this.requestUpdateSize(); }, 10); }); this.ev_scroll = this.ev_scroll.bind(this); this.$BindedScrollers = []; this.stopScrollTO = -1; } ETLayoutController.prototype.onAttached = function () { this.bindScroller(); }; ETLayoutController.prototype.requestUpdateSize = function () { this.elt.table.body.updateYOffset(true); var beforeRect = this.elt.table.body.size; this.viewSize(); this.viewByScroll(); this.elt.table.body.calcSize(); var newRect = this.elt.table.body.size; if (newRect.width !== beforeRect.width || newRect.height !== beforeRect.height) { ResizeSystem/* default.updateUp */.Z.updateUp(this.elt.parentElement); } }; ETLayoutController.prototype.viewSize = function () { this.elt.table.calcSize(); var size = this.elt.table.size; if (size.trueValue) { this.elt.addClass('as-true-size'); } this.elt.addStyle('height', (size.height + 1) + 'px'); }; ETLayoutController.prototype.bindScroller = function () { var p = this.elt.parentElement; while (p) { p.addEventListener('scroll', this.ev_scroll); this.$BindedScrollers.push(p); p = p.parentElement; } document.addEventListener('scroll', this.ev_scroll); this.$BindedScrollers.push(document); }; ETLayoutController.prototype.unBindScroller = function () { while (this.$BindedScrollers.length) { this.$BindedScrollers.pop().removeEventListener('scroll', this.ev_scroll); } }; ETLayoutController.prototype.viewByScroll = function () { if (!this.elt.table) return; if (this.elt.table.size.trueValue) return; var bound = this.elt.getBoundingClientRect(); var outbound = (0,Dom/* traceOutBoundingClientRect */.DI)(this.elt);//todo: small than scroller var head = this.elt.table.head; var hs = 0; if (bound.top >= outbound.top) { hs = 0; this.elt.table.elt.addStyle('top', 0); return; } else if (bound.bottom < outbound.bottom) { hs = 1; } else { hs = (outbound.top - (bound.top + head.size.height)) / (bound.height - head.size.height - outbound.height); } var rowLNIdx = this.elt.adapter.length * hs; var y = outbound.top + head.size.height + hs * (outbound.height - head.size.height); var rowIdx = Math.floor(rowLNIdx); if (hs === 1) rowIdx = this.elt.adapter.length - 1; var body = this.elt.table.body; var currentOffset = body.rowOffset; this.elt.table.body.requestVisible(rowIdx); this.elt.table.body.waitLoaded(() => { if (currentOffset !== body.rowOffset) return; this.elt.table.body.updateYOffset(); var row = body.rows[rowIdx - body.rowOffset]; if (!row) return;//out of date, don't update var rowLNY = row.offsetY + row.offsetHeight * hs; var dy = y - bound.top - rowLNY - hs;//hs for border 1px this.elt.table.elt.addStyle('top', dy + 'px'); }); } ETLayoutController.prototype.ev_scroll = function () { this.viewByScroll(); clearTimeout(this.stopScrollTO); this.stopScrollTO = setTimeout(() => { this.viewByScroll(); }, 100); }; /** * * @param elt * @param adapterData * @constructor */ function ETAdapter(elt, adapterData) { this.elt = elt; this.data = adapterData.data; this.raw = adapterData; this.asyncSession = Math.random(); this.sync = null; } ETAdapter.prototype.notifyDataSheetChange = function () { var asyncSession = Math.random(); this.asyncSession = asyncSession; var cmdArr = [ () => this.getLength(), () => { var body = this.elt.table.body; var head = this.elt.table.head; body.clear(); body.drawFrom(0); var makeSize = () => { body.waitLoaded(() => { body.updateYOffset(true); this.elt.layoutCtrl.requestUpdateSize(); }); } if (this.elt.isDescendantOf(document.body)) { makeSize(); } else { this.elt.$attachhook.once('attached', makeSize); } } ]; execAsync(cmdArr, () => this.asyncSession === asyncSession); }; ETAdapter.prototype.notifyRowModifiedAt = function (idx) { this.sync = execAsync([ this.sync, () => { this.elt.table.body.modifiedRowAt(idx); if (this.elt.isDescendantOf(document.body)) { this.elt.table.body.waitLoaded(() => { this.elt.layoutCtrl.requestUpdateSize(); }); } } ]); }; ETAdapter.prototype.notifyRowRemoveAt = function (idx) { this.sync = execAsync([ this.sync, () => this.getLength(), () => { this.elt.table.body.removeRowAt(idx); if (this.elt.isDescendantOf(document.body)) { this.elt.table.body.waitLoaded(() => { this.elt.layoutCtrl.requestUpdateSize(); }); } } ]); }; ETAdapter.prototype.notifyAddRowAt = function (idx) { this.sync = execAsync([ this.sync, () => this.getLength(), () => { this.elt.table.body.addRowAt(idx); if (this.elt.isDescendantOf(document.body)) { this.elt.table.body.waitLoaded(() => { this.elt.layoutCtrl.viewSize(); }); } } ]); }; ETAdapter.prototype.getLength = function () { return execAsync([() => { var body = this.raw.data.body; var length; if (typeof body.length === "number") { length = body.rows.length; } else if (body.length && body.length.then) { length = body.length; } else if (typeof body.getLength === "function") { try { length = this.raw.data.body.getLength(this); } catch (e) { (0,safeThrow/* default */.Z)(e); } } else if (body.rows) length = body.rows.length; return length; }, l => { this.length = l; return l; }]); }; ETAdapter.prototype.getRowAt = function (idx) { var data; var body = this.raw.data.body; if (typeof body.getRowAt === "function") { try { data = body.getRowAt(idx, this); } catch (e) { (0,safeThrow/* default */.Z)(e); } } else if (body.rows) data = body.rows[idx]; return data; }; ETAdapter.prototype.renderHeadCell = function (elt, data, controller) { if (data.child) { if (data.child.map) { elt.addChild(data.child.map(function (it) { return (0,ACore._)(it); })); } else { elt.addChild((0,ACore._)(data.child)); } } if (data.render) { data.render.call(null, elt, data, controller); } }; ETAdapter.prototype.renderBodyCell = function (elt, data, idx, controller) { var body = this.raw.data.body; var template = body.rowTemplate; var cellTpl = template.cells[idx]; if (cellTpl.child) { if (cellTpl.child.map) { elt.addChild(cellTpl.child.map(function (it) { return (0,ACore._)(it); })); } else { elt.addChild((0,ACore._)(cellTpl.child)); } } if (cellTpl.render) { cellTpl.render.call(null, elt, data, controller); } if (cellTpl.style) elt.addStyle(cellTpl.style); }; ETAdapter.prototype.getRowLength = function () { var body = this.raw.data.body; var template = body.rowTemplate; return template.cells.length; }; /** * * @param {EfficientTable} wrapper * @param data * @constructor */ function ETTable(wrapper, data) { this.wrapper = wrapper; this.adapter = this.wrapper.adapter; this.data = data; this.head = new ETHead(this, this.data.head); this.body = new ETBody(this, this.data.body); this.elt = (0,ACore._)({ tag: 'table', class: 'as-dynamic-table', child: [ this.head.elt, this.body.elt ] }); this.handleStyle(); this.size = new Rectangle/* default */.Z(0, 0, 0, 0); this.size.trueValue = false; } ETTable.prototype.handleStyle = function () { var style = this.wrapper.extendStyle; var value; if (style.width) { value = (0,attribute.parseMeasureValue)(style.width); if (value) { if (value.unit === '%') { this.wrapper.style.setProperty('width', value); this.elt.addStyle('width', '100%'); } } } }; ETTable.prototype.calcSize = function () { this.head.calcSize(); this.body.calcSize(); this.size = this.head.size.clone(); this.size.height += this.body.size.height; this.size.trueValue = this.body.size.trueValue; }; /** * * @param {ETTable} table * @param data * @constructor */ function ETHead(table, data) { this.table = table; this.data = data || {}; if (!this.data.rows) this.data.rows = []; this.rows = this.data.rows.map(rowData => new ETHeadRow(this, rowData)); this.elt = (0,ACore._)({ tag: 'thead', class: 'as-dt-header', child: this.rows.map(it => it.elt) }); this.size = new Rectangle/* default */.Z(0, 0, 0, 0); } ETHead.prototype.calcSize = function () { var bound = this.elt.getBoundingClientRect(); this.size = Rectangle/* default.fromClientRect */.Z.fromClientRect(bound); }; /** * * @param {ETHead} head * @param data * @constructor */ function ETHeadRow(head, data) { this.head = head; this.data = data || {}; if (!this.data.cells) this.data.cells = []; this.cells = this.data.cells.map(cellData => new ETHeadCell(this, cellData)) this.elt = (0,ACore._)({ tag: 'tr', class: 'as-dt-header-row', child: this.cells.map(it => it.elt) }); } // (ETHeadRow) function ETHeadCell(row, data) { this.row = row; this.data = data || {}; this.elt = (0,ACore._)({ tag: 'th', class: 'as-dt-header-cell' }); if (data.attr && (0,utils.isNaturalNumber)(data.attr.colspan)) { this.elt.attr('colspan', data.attr.colspan); } if (data.attr && (0,utils.isNaturalNumber)(data.attr.rowspan)) { this.elt.attr('colspan', data.attr.rowspan); } if (data.style) this.elt.addStyle(data.style); this.row.head.table.adapter.renderHeadCell(this.elt, this.data, this); } /** * * @param {ETTable} table * @param data * @constructor */ function ETBody(table, data) { this.data = data; this.table = table; this.elt = (0,ACore._)({ tag: 'tbody', class: 'as-dt-body' }); this.rowOffset = 0; this.rows = []; /** * * @type {Rectangle|{trueValue:boolean}} */ this.size = new Rectangle/* default */.Z(0, 0, 0, 0); this.size.trueValue = false; this.needUpdateYOffset = false; this.sync = null; } ETBody.prototype.clear = function () { this.rowOffset = 0; var row; while (this.rows.length) { row = this.rows.shift(); this.rowOffset++; row.elt.remove(); row.revokeResource(); } this.needUpdateYOffset = true; }; ETBody.prototype.removeRowAt = function (idx) { var localIdx = idx - this.rowOffset; var row = this.rows[localIdx]; if (!row) return false; row.elt.selfRemove(); this.rows.splice(localIdx, 1); row.revokeResource(); for (var i = 0; i < this.rows.length; ++i) { this.rows[i].updateIdx(i + this.rowOffset); } this.drawFrom(this.rowOffset); }; ETBody.prototype.modifiedRowAt = function (idx) { var localIdx = idx - this.rowOffset; var row = this.rows[localIdx]; if (!row) return false; var newRow = new ETBodyRow(this, this.table.wrapper.adapter.getRowAt(idx)); newRow.updateIdx(idx); this.rows[localIdx] = newRow; row.elt.selfReplace(newRow.elt); this.needUpdateYOffset = true; }; ETBody.prototype.addRowAt = function (idx) { var localIdx = idx - this.rowOffset; var row = this.rows[localIdx]; if (!row) return false; var newRow = new ETBodyRow(this, this.table.wrapper.adapter.getRowAt(idx)); this.rows.splice(localIdx, 0, newRow); row.elt.parentElement.addChildBefore(newRow.elt, row.elt); for (var i = 0; i < this.rows.length; ++i) { this.rows[i].updateIdx(i + this.rowOffset); } this.needUpdateYOffset = true; }; ETBody.prototype.requestVisible = function (idx) { var maxRow = getMaxRowCount(); var length = this.table.wrapper.adapter.length; var pageIdx; var pageN = Math.ceil(Math.max(length / (maxRow / 3))); idx = Math.max(0, idx); idx = Math.min(length - 1, idx); pageIdx = Math.floor(idx / (maxRow / 3)); pageIdx = Math.min(pageN - 3, pageIdx - 1); pageIdx = Math.max(0, pageIdx); this.drawFrom(pageIdx * Math.floor(maxRow / 3)); }; ETBody.prototype.drawFrom = function (idx) { var adapter = this.table.wrapper.adapter; var maxRowCount = getMaxRowCount(); idx = Math.max(0, idx); var endIdx = Math.min(idx + maxRowCount, adapter.length); idx = Math.max(0, Math.min(endIdx - 1, idx)); var row; while (this.rowOffset + this.rows.length > idx + maxRowCount && this.rows.length) { row = this.rows.pop(); row.elt.remove(); } while (this.rowOffset < idx && this.rows.length) { row = this.rows.shift(); this.rowOffset++; row.elt.remove(); row.revokeResource(); this.needUpdateYOffset = true; } if (this.rows.length === 0) this.rowOffset = Math.min(adapter.length, idx + 1); var newRows = []; var newRow; while (this.rowOffset > idx && this.rowOffset > 0) { this.rowOffset--; newRow = new ETBodyRow(this, adapter.getRowAt(this.rowOffset)); newRows.push(newRow); newRow.updateIdx(this.rowOffset); this.rows.unshift(newRow); this.elt.addChildBefore(newRow.elt, this.elt.firstChild); this.needUpdateYOffset = true; } while (this.rowOffset + this.rows.length < endIdx) { newRow = new ETBodyRow(this, adapter.getRowAt(this.rowOffset + this.rows.length)); newRow.updateIdx(this.rowOffset + this.rows.length); newRows.push(newRow); this.rows.push(newRow); this.elt.addChild(newRow.elt); this.needUpdateYOffset = true; } }; /** * * @param {boolean} force */ ETBody.prototype.updateYOffset = function (force) { if (!this.needUpdateYOffset && !force) return; this.needUpdateYOffset = false; var tableBound = this.table.elt.getBoundingClientRect(); this.rows.forEach((row) => { row.calcSize(); var rowBound = row.size; row.offsetY = rowBound.y - tableBound.top; row.offsetHeight = rowBound.height; }); }; ETBody.prototype.calcSize = function () { var adapter = this.table.wrapper.adapter; var bound = this.elt.getBoundingClientRect(); if (this.rows.length === adapter.length) { this.size = Rectangle/* default.fromClientRect */.Z.fromClientRect(bound); this.size.trueValue = true; } else { this.size = Rectangle/* default.fromClientRect */.Z.fromClientRect(bound); this.size.height = bound.height / this.rows.length * adapter.length; this.size.trueValue = false; } }; ETBody.prototype.waitLoaded = function (cb) { waitAll(this.rows.map(row => row.data), cb); }; function ETBodyRow(body, data) { this.elt = (0,ACore._)({ tag: 'tr', class: 'as-dt-body-row' }); this.offsetY = 0; this.data = data; this.body = body; this.idx = 0; this.$idx = undefined; waitValue(this.data, data => { this.data = data; var adapter = body.table.wrapper.adapter; var length = adapter.getRowLength(); this.cells = Array(length).fill(null).map((u, i) => new ETBodyCell(this, i)); this.elt.addChild(this.cells.map(cell => cell.elt)); this.$idx = (0,ACore.$)('.as-dt-row-index', this.elt) || null; if (this.$idx) this.$idx.attr('data-idx', this.idx + 1); if (data.on && (data.on.click)) { this.elt.on('click', (event) => { data.on.click.call(this.elt, event, this); }); } if (adapter.data.body.rowTemplate.on && (typeof adapter.data.body.rowTemplate.on.click === "function")) { this.elt.on('click', (event) => { adapter.data.body.rowTemplate.on.click.call(this.elt, event, this); }); } }); this.size = new Rectangle/* default */.Z(0, 0, 0, 0); // this.cells = data.cells.map(cell => new ETBodyCell(this, cell)); /** * @name adapter * @type {ETAdapter} * @memberof ETBodyRow# */ } ETBodyRow.prototype.updateIdx = function (value) { this.idx = value; if (!this.cells) return; if (this.$idx === undefined) this.$idx = (0,ACore.$)('.as-dt-row-index', this.elt) || null; if (this.$idx) this.$idx.attr('data-idx', this.idx + 1); }; ETBodyRow.prototype.calcSize = function () { this.size = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.elt.getBoundingClientRect()); }; ETBodyRow.prototype.notifyRemove = function () { if (this.adapter) this.adapter.notifyRowRemoveAt(this.idx); }; ETBodyRow.prototype.notifyModified = function () { if (this.adapter) this.adapter.notifyRowModifiedAt(this.idx); } ETBodyRow.prototype.revokeResource = function () { // return; this.revokeResource = noop/* default */.Z; (0,utils.revokeResource)(this.elt); delete this.elt; this.body = null; this.notifyRemove = noop/* default */.Z; }; Object.defineProperty(ETBodyRow.prototype, 'adapter', { /** * * @returns {ETAdapter} */ get: function () { return this.body && this.body.table.wrapper && this.body.table.wrapper.adapter; } }) function ETBodyCell(row, idx) { this.elt = (0,ACore._)({ tag: 'td', class: 'as-dt-body-cell' }); this.row = row; var adapter = this.row.body.table.wrapper.adapter; adapter.renderBodyCell(this.elt, row.data, idx, this); } /** * @extends Attributes * @param {EfficientTable} elt * @constructor */ function ETColWidthDeclaration(elt) { AppPattern_Attributes.call(this, this); if (!elt.table) return; var temp = elt.table.head.rows.reduce((ac, row) => { var l = row.cells.reduce((ac1, cell) => { var colspan = cell.data.attr && (cell.data.attrs.colspan || cell.data.attrs.colSpan); colspan = parseInt(colspan + '', 10); if (!(0,utils.isNaturalNumber)(colspan) || !colspan) colspan = 1; var id = cell.data.id; if (id && (typeof id === "string")) { ac.id2idx[id] = ac1; } if (colspan === 1) { if (!ac.idx2cells[ac1]) ac.idx2cells[ac1] = []; ac.idx2cells[ac1].push(cell); } return ac1 + colspan; }, 0); ac.length = (Math.max(ac.length, l)); return ac; }, { length: 0, id2idx: {}, idx2cells: {} }); Array(temp.length).fill(0).forEach((u, i) => { this.defineProperty('' + i, { set: function (value, ...args) { var unit; if (args.length > 1) unit = args[0]; var headWith; var originValue = this.getProperty('' + i); var pOValue = (0,attribute.parseMeasureValue)(originValue); if (!(0,utils.isRealNumber)(value) || value < 0) { value = 'auto'; } else if (unit === 'px') { if (pOValue.unit === '%') { headWith = elt.table.head.elt.getBoundingClientRect().width; value = value / headWith * 100 + '%'; } else { value = value + 'px'; } } else if (unit === '%') { headWith = elt.table.head.elt.getBoundingClientRect().width; if (pOValue.unit === 'px') { value = value / 188 * headWith; } else { value = value + '%'; } } if (typeof value === "number") value = value + 'px'; var cells = temp.idx2cells[i] || []; cells.forEach(cell => { if (value === 'auto') { if (cell.data.style) { delete cell.data.style.width; cell.elt.removeStyle('width'); } } else { if (!cell.data.style) cell.data.style = {}; cell.data.style.width = value; cell.elt.addStyle('width', value); } }); }, get: function (...args) { var unit; if (args.length > 1) unit = args[0]; var ref = args[args.length - 1]; var value = ref.get(); var cells = temp.idx2cells[i] || []; if (cells.length === 0) return 0; if (unit === 'px') { value = cells[0].elt.getBoundingClientRect().width; } else if (unit === '%') { value = cells[0].elt.getBoundingClientRect().width / elt.table.head.elt.getBoundingClientRect().width * 100; } else { value = cells.reduce((ac, cell) => { var pValue; if (cell.data.style && cell.data.style.width) { pValue = (0,attribute.parseMeasureValue)(cell.data.style.width); if (!pValue || pValue.unit !== 'px') return ac; return pValue.value; } return ac; }, 'auto'); } return value; } }) }); Object.keys(temp.id2idx).forEach(id => { var idx = temp.id2idx[id]; this.defineProperty(id, { set: function (...args) { return this.setProperty(idx, ...args.slice(1)); }, get: function (...args) { return this.getProperty(idx, ...args.slice(1)); } }); }); } OOP/* default.mixClass */.ZP.mixClass(ETColWidthDeclaration, AppPattern_Attributes); Object.defineProperty(ETColWidthDeclaration.prototype, 'revokeResource', { value: function () { delete this.$node; delete this.revokeResource; }, writable: true, enumerable: false, configurable: true }) // EXTERNAL MODULE: ./node_modules/absol-acomp/css/compactdatagrid.css var compactdatagrid = __webpack_require__(2407); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/assets/icon/table_header_add.tpl /* harmony default export */ const table_header_add = ("<svg\n viewBox=\"0 0 24 24\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n class=\"as-toggle-header-ico\">\n <path\n class=\"as-icon-table\"\n d=\"M 1 1 L 1 1.5 L 1 23 L 23 23 L 23 1 L 1 1 z M 2 2 L 22 2 L 22 10 L 2 10 L 2 2 z M 2 11 L 5 11 L 5 14 L 2 14 L 2 11 z M 6 11 L 9 11 L 9 14 L 6 14 L 6 11 z M 10 11 L 14 11 L 14 14 L 10 14 L 10 11 z M 15 11 L 18 11 L 18 14 L 15 14 L 15 11 z M 19 11 L 22 11 L 22 14 L 19 14 L 19 11 z M 2 15 L 5 15 L 5 18 L 2 18 L 2 15 z M 6 15 L 9 15 L 9 18 L 6 18 L 6 15 z M 10 15 L 14 15 L 14 18 L 10 18 L 10 15 z M 15 15 L 18 15 L 18 18 L 15 18 L 15 15 z M 19 15 L 22 15 L 22 18 L 19 18 L 19 15 z M 2 19 L 5 19 L 5 22 L 2 22 L 2 19 z M 6 19 L 9 19 L 9 22 L 6 22 L 6 19 z M 10 19 L 14 19 L 14 22 L 10 22 L 10 19 z M 15 19 L 18 19 L 18 22 L 15 22 L 15 19 z M 19 19 L 22 19 L 22 22 L 19 22 L 19 19 z \" />\n <path\n style=\"fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;\"\n d=\"m 9,6 h 6\"\n class=\"as-icon-minus\" />\n <path\n style=\"fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;\"\n d=\"M 12,9 V 3\"\n class=\"as-icon-add\" />\n</svg>\n"); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CompactDataGridEditor.js var EV_SELECTED_CELL_CHANGE = 'SELECTED_CELL_CHANGE'.toLowerCase(); var EV_CELL_DATA_CHANGE = 'change'; var EV_UNDO_APPLY = 'EV_UNDO_APPLY'.toLowerCase(); /** * loc: [row, col, rowHeight, colHeight] * @param {AElement} cell * @returns {number[]} */ var locOfCell = cell => (cell.getAttribute('data-loc') || 'Nan,NaN').split(',') .concat([cell.getAttribute('rowspan') || '1', cell.getAttribute('colspan') || '1']) .map(it => parseInt(it, 10)); var locOfCells = cells => { return cells.reduce((ac, cell) => { var cellLoc = locOfCell(cell); if (!ac) return cellLoc; return mergeLoc(ac, cellLoc) }, null); } function mergeLoc(loc1, loc2) { var rowLow = Math.min(loc1[0], loc2[0]); var colLow = Math.min(loc1[1], loc2[1]); var rowHigh = Math.max(loc1[0] + loc1[2] - 1, loc2[0] + loc2[2] - 1); var colHigh = Math.max(loc1[1] + loc1[3] - 1, loc2[1] + loc2[3] - 1); var res = [rowLow, colLow, rowHigh - rowLow + 1, colHigh - colLow + 1]; if (arguments[2]) res = mergeLoc(res, arguments[2]); return res; }; var locInLoc = (loc, ctn) => { var mlc = mergeLoc(loc, ctn); return locEqual(mlc, ctn); }; var locEqual = (loc1, loc2) => { return loc1[0] === loc2[0] && loc1[1] === loc2[1] && loc1[2] === loc2[2] && loc1[3] === loc2[3]; } var locCollapse = (loc1, loc2) => { if (loc1[0] + loc1[2] <= loc2[0]) return false; if (loc2[0] + loc2[2] <= loc1[0]) return false; if (loc1[1] + loc1[3] <= loc2[1]) return false; if (loc2[1] + loc2[3] <= loc1[1]) return false; return true; }; var varNameOf = o => { var res; if (!o) res = undefined; else if (typeof o === "string") res = o; else if (o.attr) res = o.attr('data-name'); else if (typeof o.name === "string") res = o.name; return res || undefined; }; var varTitleOf = o => { var res = undefined; if (!o) res = undefined; else if (o.attr) { res = o.attr('data-title'); if (typeof res !== "string") res = undefined; } else if (typeof o.title === "string") res = o.title; return res; }; var normalizeVariableData = data => { if (typeof data === "string") { data = data.trim(); if (data.length === 0) return null; return { name: data, title: data }; } else if (typeof data === "object" && data) { data = Object.assign({}, data); if (typeof data.name !== "string" || data.name.trim().length === 0) return null; data.name = data.name.trim(); if (typeof data.title !== "string" || data.title.trim().length === 0) data.title = data.name; return data; } return null; }; var normalizeUsedVariable = data => { if (typeof data === "string") { data = data.trim(); if (data.length === 0) return null; return { name: data }; } else if (typeof data === "object" && data) { data = Object.assign({}, data); if (typeof data.name !== "string" || data.name.trim().length === 0) return null; data.name = data.name.trim(); if (('title' in data) && (typeof data.title !== "string")) delete data.title; return data; } return null; } var variableDataOfElt = elt => { if (!elt.attr) return null; if (!elt.attr('data-default-title')) return null; var res = {}; res.name = elt.attr('data-name'); if (typeof res.name !== "string" || !res.name) return null; var title = elt.attr && elt.attr('data-title'); if (typeof title === "string") res.title = title; return res; } var varEltOfCell = cell => { return Array.prototype.filter.call(cell.childNodes, c => !!c.attr('data-default-title')); } var isChangeParent = (parentElt, elt, bf) => { if (parentElt !== elt.parentElement) return true; var children = varEltOfCell(parentElt); var idx; if (bf === 'end') { return children[children.length - 1] !== bf; } else { if (bf === elt) return false; idx = children.indexOf(bf); return children[idx - 1] !== elt; } }; var hoverXOf = (cell, bf) => { var children = varEltOfCell(cell); var bound, cBound; if (children.length > 0) { bound = cell.getBoundingClientRect(); if (bf === 'end') { cBound = children[children.length - 1].getBoundingClientRect(); return cBound.right + 10 - bound.left; } else { cBound = bf.getBoundingClientRect(); return cBound.left - bound.left; } } else { return 20; } } var defaultTextAlignOfElt = elt => { if (elt.tagName === 'TD') return 'left'; return 'center'; }; var textAlignOfElt = elt => { return elt.style.textAlign || defaultTextAlignOfElt(elt); } var defaultFontWeightOfElt = elt => { if (elt.tagName === 'TD') return 'normal'; return 'bold'; }; var fontWeightOfElt = elt => { return elt.style.fontWeight || defaultFontWeightOfElt(elt); }; var fontStyleOfElt = elt => { return elt.style.fontStyle || 'normal'; }; /** * @extends AElement * @constructor */ function CompactDataGridEditor() { /** * * @type {CDContext} */ var context = { editor: this, table: null, formatTool: null, varMng: null, selectCtrl: null, lcEmitter: new EventEmitter/* default */.ZP() } context.table = new CDTable(context); this.$body = (0,ACore.$)('.as-compact-data-grid-editor-body', this); this.$body.addChild(context.table.$table); context.undoMng = new CDUndoManager(context); context.selectCtrl = new CDSelectController(context); context.formatTool = new CDGFormatTool(context); context.varMng = new CDGVariableManager(context); // OOP.drillProperty(this, context.table, 'header', 'data'); // OOP.drillProperty(this, context.table, 'data', 'data'); OOP/* default.drillProperty */.ZP.drillProperty(this, context.varMng, 'variables'); var dataTO = -1; Object.defineProperties(this, { header: { set: function (value) { if (value) { context.table.header.data = value; context.table.header.hidden = false; } else { context.table.header.hidden = true; } clearTimeout(dataTO); dataTO = setTimeout(() => { context.table.autoFixRowsWidth(); context.formatTool.updateAvailableCommands(); context.undoMng.reset().commit(); }); }, get: function () { clearTimeout(dataTO); context.table.autoFixRowsWidth(); if (context.table.header.hidden) return null; return context.table.header.data; }, configurable: true }, data: { set: function (value) { context.varMng.rejectAllVariables(); context.table.body.data = value; clearTimeout(dataTO); dataTO = setTimeout(() => { context.table.autoFixRowsWidth(); context.formatTool.updateAvailableCommands(); context.undoMng.reset().commit(); }); }, get: function () { clearTimeout(dataTO); context.table.autoFixRowsWidth(); return context.table.body.data; }, configurable: true } }); var count = 0; context.lcEmitter.on(EV_CELL_DATA_CHANGE, () => { context.undoMng.commit(); context.formatTool.updateAvailableCommands(); if (window.ABSOL_DEBUG) Snackbar.show('change ' + (++count)); this.emit('change', { type: 'change', target: this }, this); }); context.lcEmitter.on(EV_UNDO_APPLY, () => { context.formatTool.updateAvailableCommands(); if (window.ABSOL_DEBUG) Snackbar.show('change ' + (++count)); this.emit('change', { type: 'change', target: this }, this); }); /** * @name data * @memberof CompactDataGridEditor# */ /** * @name header * @memberof CompactDataGridEditor# */ } /** * @typedef CDContext * @property {CompactDataGridEditor} editor * @property {CDTable} table * @property {CDGVariableManager} varMng * @property {CDUndoManager} undoMng * @property {CDGFormatTool} formatTool * @property {CDSelectController} selectCtrl * @property {EventEmitter} lcEmitter * */ CompactDataGridEditor.tag = 'CompactDataGridEditor'.toLowerCase(); CompactDataGridEditor.render = function () { return (0,ACore._)({ attr: { tabindex: 1 }, extendEvent: ['change'], class: 'as-compact-data-grid-editor', child: ['.as-compact-data-grid-editor-body'] }); }; CompactDataGridEditor.prototype.revokeResource = function () { var data = this.data; var header = this.header; Object.defineProperties(this, { data: { value: data, configurable: true, writable: true }, header: { value: header, configurable: true, writable: true } }); (0,utils.revokeResource)(this.grid); (0,utils.revokeResource)(this.varMng); this.grid = undefined; this.varMng = undefined; while (this.firstChild) { (0,utils.revokeResource)(this.firstChild); this.firstChild.remove(); } }; CompactDataGridEditor.prototype.init = function (props) { props = Object.assign({}, props); this.variables = props.variables; this.header = props.header; this.data = props.data; delete props.variables; delete props.header; delete props.data; Object.assign(this, props); }; ACore/* default.install */.Z.install(CompactDataGridEditor); /* harmony default export */ const js_CompactDataGridEditor = (CompactDataGridEditor); /** * * @param {CDContext} context * @constructor */ function CDGrid(context) { this.context = context; this.$grid = (0,ACore._)(this.gridCt); // /** // * @type {CompactDataGridEditor} // */ // this.elt = this.context.elt; // this.$body = $('tbody', this.elt); } CDGrid.prototype.gridCt = 'tbody'; CDGrid.prototype.rowCt = 'tr'; CDGrid.prototype.cellCt = 'td'; CDGrid.prototype.makeCell = function (data) { var attr = {}; if ((0,utils.isNaturalNumber)(data.rowSpan) && data.rowSpan > 1) { attr.rowspan = data.rowSpan; } else if ((0,utils.isNaturalNumber)(data.rowspan) && data.rowspan > 1) { attr.rowspan = data.rowspan; } if ((0,utils.isNaturalNumber)(data.colSpan) && data.colSpan > 1) { attr.colspan = data.colSpan; } else if ((0,utils.isNaturalNumber)(data.colspan) && data.colspan > 1) { attr.colspan = data.colspan; } return (0,ACore._)({ tag: this.cellCt, attr: attr, class: 'as-ca-cell', style: data.style || {} // child: }); }; CDGrid.prototype.hasCell = function (cell) { return cell.isDescendantOf(this.$grid); }; CDGrid.prototype.styleOfCell = function (cellElt) { var res = {}; ['textAlign', 'color', 'backgroundColor', 'fontWeight', 'whiteSpace'].forEach(key => { if (cellElt.style[key]) res[key] = cellElt.style[key]; }); if (res.textAlign === defaultTextAlignOfElt(cellElt)) delete res.textAlign; if (res.fontWeight === defaultFontWeightOfElt(cellElt)) delete res.fontWeight; if (res.whiteSpace !== 'nowrap') delete res.whiteSpace; for (var k in res) return res; return null; }; CDGrid.prototype.dataOfCell = function (cellElt) { var cellData = {}; var loc = locOfCell(cellElt); if (loc[2] > 1) cellData.rowSpan = loc[2]; if (loc[3] > 1) cellData.colSpan = loc[3]; var style = this.styleOfCell(cellElt); if (style) cellData.style = style; return cellData; }; CDGrid.prototype.makeRow = function (data) { var cells = data.cells || []; return (0,ACore._)({ tag: this.rowCt, class: 'as-ca-row', child: cells.map(it => this.makeCell(it)) }); }; CDGrid.prototype.updateCellLoc = function () { var row, cell; var gridElt = this.$grid; var height = Array(100).fill(0); var jj, loc; for (var i = 0; i < gridElt.childNodes.length; ++i) { row = gridElt.childNodes[i]; jj = 0; for (var j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; loc = locOfCell(cell); while (height[jj] > i) jj++; cell.attr('data-loc', i + ',' + jj); for (var k = 0; k < loc[3]; ++k) { height[jj + k] = i + loc[2]; } jj += loc[3]; } } var nCol = height.indexOf(0); gridElt.attr('data-width', nCol); return nCol; }; CDGrid.prototype.calcWidth = function () { var row, cell; var gridElt = this.$grid; var height = Array(100).fill(0); var jj, loc; for (var i = 0; i < gridElt.childNodes.length; ++i) { row = gridElt.childNodes[i]; jj = 0; for (var j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; loc = locOfCell(cell); while (height[jj] > i) jj++; for (var k = 0; k < loc[3]; ++k) { height[jj + k] = i + loc[2]; } jj += loc[3]; } } var nCol = height.indexOf(0); gridElt.attr('data-width', nCol); return nCol; }; CDGrid.prototype.getSize = function () { return { width: parseInt(this.$grid.attr('data-width'), 10), height: this.$grid.childNodes.length } }; CDGrid.prototype.fixRowLength = function (rowLength) { rowLength = rowLength || 1; var row, cell; var gridElt = this.$grid; var height = Array(100).fill(0); var jj, colspan, rowspan; for (var i = 0; i < gridElt.childNodes.length; ++i) { row = gridElt.childNodes[i]; jj = 0; for (var j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; colspan = parseInt(cell.attr('colspan'), 10) || 1; rowspan = parseInt(cell.attr('rowspan'), 10) || 1; while (height[jj] > i) jj++; for (var k = 0; k < colspan; ++k) { height[jj + k] = i + rowspan; } jj += colspan; } for (j = jj; j < rowLength; ++j) { row.addChild(this.makeCell({}).attr('data-loc', i + ',' + j)); height[j] = i + 1; } } }; CDGrid.prototype.getCellsFromLoc = function (loc) { var row, cell, cellLoc; var res = []; var gridElt = this.$grid; for (var i = 0; i < gridElt.childNodes.length; ++i) { row = gridElt.childNodes[i]; for (var j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; cellLoc = locOfCell(cell); if (locCollapse(cellLoc, loc)) res.push(cell); } } var newLoc = locOfCells(res); if (!locEqual(newLoc, loc)) res = this.getCellsFromLoc(newLoc); return res; }; CDGrid.prototype.addRowAt = function (newRowIdx) { var height = Array(50).fill(0); var row, cell, jj; var gridElt = this.$grid; var loc; if (gridElt.firstChild && gridElt.firstChild.lastChild) loc = locOfCell(gridElt.firstChild.lastChild); else loc = [0, 0, 1, 1]; var rowLength = loc[1] + loc[3]; for (var i = 0; i < gridElt.childNodes.length; ++i) { if (i === newRowIdx) { row = this.makeRow({ cell: [] }); gridElt.addChildBefore(row, gridElt.childNodes[i]); jj = 0; while (jj < rowLength) { while (height[jj] > newRowIdx) { jj++; } row.addChild(this.makeCell({})); height[jj] = i + 1; jj++; } ++i; } row = gridElt.childNodes[i]; jj = 0; for (var j = 0; j < row.childNodes.length; ++j) { while (height[jj] > i + 1) jj++; cell = row.childNodes[j]; loc = locOfCell(cell); if (i <= newRowIdx && i + loc[2] > newRowIdx) { loc[2]++; cell.attr('rowspan', loc[2]); } for (var k = 0; k < loc[3]; ++k) { height[jj + k] = i + loc[2]; } jj += loc[3]; } } if (newRowIdx === gridElt.childNodes.length) { row = this.makeRow({ cell: [] }) gridElt.addChild(row); jj = 0; while (jj < rowLength) { while (height[jj] > newRowIdx) jj++; row.addChild(this.makeCell({})); jj++; } } this.updateCellLoc(); } CDGrid.prototype.addColAt = function (newColIdx) { var height = Array(50).fill(0); var row, cell, jj; var gridElt = this.$grid; var colspan, rowspan; for (var i = 0; i < gridElt.childNodes.length; ++i) { row = gridElt.childNodes[i]; jj = 0; for (var j = 0; j < row.childNodes.length; ++j) { while (height[jj] > i) jj++; cell = row.childNodes[j]; colspan = parseInt(cell.getAttribute('colspan'), 10) || 1; rowspan = parseInt(cell.getAttribute('rowspan'), 10) || 1; if (jj === newColIdx) { row.addChildBefore(this.makeCell({}), cell); height[jj] = i + 1; j++; jj++; } else if (jj <= newColIdx && jj + colspan > newColIdx) { colspan++; cell.attr('colspan', colspan); } height[jj] = i + rowspan; jj += colspan; } if (jj === newColIdx) { row.addChild(this.makeCell({})); height[jj] = i + 1; } } this.updateCellLoc(); }; /** * * @param rowIdx * @param {number=} rowHeight */ CDGrid.prototype.removeRowAt = function (rowIdx, rowHeight) { if (!(0,utils.isNaturalNumber)(rowHeight)) rowHeight = 1; rowHeight = rowHeight || 1; var body = this.$grid; var row, cell; var loc; var rmLoc = [rowIdx, 0, rowHeight, 100]; var needSplitLocs = []; var needSplitCells = []; var childSplitCells = []; var i, j; for (i = 0; i < body.childNodes.length; ++i) { row = body.childNodes[i]; for (j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; loc = locOfCell(cell); if ((loc[2] > 1 || loc[3] > 1) && locCollapse(rmLoc, loc) && !locInLoc(loc, rmLoc)) { needSplitLocs.push(loc); needSplitCells.push(cell); childSplitCells.push(Array.prototype.slice.call(cell.childNodes)); } } } for (i = 0; i < needSplitCells.length; ++i) { this.splitCell(needSplitCells[i]); loc = needSplitLocs[i]; if (loc[0] < rowIdx) { if (loc[0] + loc[2] <= rowIdx + rowHeight) { loc[2] = rowIdx - loc[0]; } else { loc[2] -= rowHeight; } } else { loc[2] -= rowIdx + rowHeight - loc[0]; } } for (i = rowIdx + rowHeight - 1; i >= rowIdx; --i) { body.childNodes[i].remove(); } this.updateCellLoc(); var cells; for (i = 0; i < needSplitLocs.length; ++i) { loc = needSplitLocs[i]; cells = this.getCellsFromLoc(loc); cells[0].addChild(childSplitCells[i]); this.mergeCells(cells); } this.updateCellLoc(); }; /** * * @param colIdx * @param {number=} colWidth */ CDGrid.prototype.removeColAt = function (colIdx, colWidth) { if (!(0,utils.isNaturalNumber)(colWidth)) colWidth = 1; colWidth = colWidth || 1; var gridElt = this.$grid; var row, cell; var loc; var rmLoc = [0, colIdx, 100, colWidth]; var needSplitLocs = []; var needSplitCells = []; var childSplitCells = []; var i, j; for (i = 0; i < gridElt.childNodes.length; ++i) { row = gridElt.childNodes[i]; for (j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; loc = locOfCell(cell); if ((loc[2] > 1 || loc[3] > 1) && locCollapse(rmLoc, loc) && !locInLoc(loc, rmLoc)) { needSplitLocs.push(loc); needSplitCells.push(cell); childSplitCells.push(Array.prototype.slice.call(cell.childNodes)); } } } for (i = 0; i < needSplitCells.length; ++i) { this.splitCell(needSplitCells[i]); loc = needSplitLocs[i]; if (loc[1] < colIdx) { if (loc[1] + loc[3] <= colIdx + colWidth) { loc[3] = colIdx - loc[1]; } else { loc[3] -= colWidth; } } else { loc[3] -= colIdx + colWidth - loc[1]; } } var cells = this.getCellsFromLoc(rmLoc); cells.forEach(cell => cell.remove()); this.updateCellLoc(); for (i = 0; i < needSplitLocs.length; ++i) { loc = needSplitLocs[i]; cells = this.getCellsFromLoc(loc); cells[0].addChild(childSplitCells[i]); this.mergeCells(cells); } this.updateCellLoc(); }; CDGrid.prototype.mergeCells = function (cells) { var loc = locOfCells(cells); var cell0 = cells[0]; cell0.attr({ rowspan: loc[2], colspan: loc[3] }); for (var i = 1; i < cells.length; ++i) { cell0.addChild((0,ACore.$$)('.as-cag-var', cells[i])); cells[i].remove(); } this.updateCellLoc(); }; CDGrid.prototype.splitCell = function (originalCell) { // var originalLoc = locOfCell(originalCell); var height = Array(100).fill(0); var loc; var gridElt = this.$grid; var size = this.getSize(); loc = [0, 0, size.height, size.width]; var rowLength = loc[1] + loc[3]; originalCell.attr('rowspan', undefined); originalCell.attr('colspan', undefined); var row, cell; var jj; for (var i = 0; i < gridElt.childNodes.length; ++i) { row = gridElt.childNodes[i]; jj = 0; while (height[jj] > i) ++jj; for (var j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; loc = locOfCell(cell); while (jj < loc[1]) { if (height[jj] <= i) { row.addChildBefore(this.makeCell({}), cell); height[jj] = i + 1; ++j; } ++jj; } for (var k = 0; k < loc[3]; ++k) { height[jj + k] = i + loc[2]; } jj += loc[3]; while (height[jj] > i) ++jj; } while (jj < rowLength) { row.addChild(this.makeCell({})); height[jj] = i + 1; ++jj; ++j; } } this.updateCellLoc(); }; /** * @typedef CDGData * @property {CDGDataRow[]} */ /** * @typedef CDGDataRow * @property {CDGDataCell[]} */ /** * @typedef CDGDataCell * @property {{}} style * @property {string} text */ Object.defineProperty(CDGrid.prototype, 'data', { set: function (value) { this.$grid.clearChild(); var rows = (value && value.rows) || []; if (rows.length === 0) rows.push({ cells: [{}] }); this.$grid.addChild(rows.map(it => this.makeRow(it))); var nCol = this.updateCellLoc(); this.fixRowLength(nCol); }, get: function () { var res = {}; res.rows = Array.prototype.map.call(this.$grid.childNodes, (rowElt) => { var rowData = {}; rowData.cells = Array.prototype.map.call(rowElt.childNodes, cellElt => { return this.dataOfCell(cellElt); }); return rowData; }) return res; }, configurable: true }); /** * @extends CDGrid * @param {CDContext} context * @param {CDTable} table * @constructor */ function CDTableBody(context, table) { CDGrid.call(this, context); this.table = table; } (0,OOP/* mixClass */.Jx)(CDTableBody, CDGrid); CDTableBody.prototype.gridCt = 'tbody'; CDTableBody.prototype.makeCell = function (data) { var variables = data.variables || []; var attr = {}; if ((0,utils.isNaturalNumber)(data.rowSpan) && data.rowSpan > 1) { attr.rowspan = data.rowSpan; } else if ((0,utils.isNaturalNumber)(data.rowspan) && data.rowspan > 1) { attr.rowspan = data.rowspan; } if ((0,utils.isNaturalNumber)(data.colSpan) && data.colSpan > 1) { attr.colspan = data.colSpan; } else if ((0,utils.isNaturalNumber)(data.colspan) && data.colspan > 1) { attr.colspan = data.colspan; } return (0,ACore._)({ tag: 'td', attr: attr, class: 'as-ca-cell', style: data.style ||{}, child: variables.map(it => { it = normalizeUsedVariable(it); var name = it.name; return this.context.varMng.pickVariable(name); }) }); }; CDTableBody.prototype.dataOfCell = function (cellElt) { var cellData = CDGrid.prototype.dataOfCell.call(this, cellElt); var variables = (0,ACore.$$)('.as-cag-var', cellElt).map(varElt => variableDataOfElt(varElt)).filter(x => !!x); if (variables.length > 0) cellData.variables = variables; return cellData; }; /** * * @param {CDContext} context * @constructor */ function CDTable(context) { /** * * @type {CDContext} */ this.context = context; this.header = new CDTableHeader(context, this); this.body = new CDTableBody(context, this); this.$table = (0,ACore._)({ tag: 'table', class: 'as-cdg-table', child: [ this.header.$grid, this.body.$grid ] }); this.header.hidden = true;//default this.header.data = { rows: [{ cells: [{}] }] } } CDTable.prototype.autoFixRowsWidth = function () { var hL = this.header.calcWidth(); var bL = Math.max(1, this.body.calcWidth()); if (hL < bL) { this.header.fixRowLength(bL); } else if (hL > bL) { this.body.fixRowLength(bL); } }; /** * @extends CDGrid * @param {CDContext} context * @param {CDTable} table * @constructor */ function CDTableHeader(context, table) { CDGrid.call(this, context); this.table = table; } (0,OOP/* mixClass */.Jx)(CDTableHeader, CDGrid); CDTableHeader.prototype.gridCt = 'thead'; CDTableHeader.prototype.cellCt = 'th'; CDTableHeader.prototype.makeCell = function (data) { var res = CDGrid.prototype.makeCell.call(this, data); var beforeValue; var input = (0,ACore._)({ tag: js_PreInput, attr: { contenteditable: 'true', spellcheck: 'false' }, props: { value: (data.text || ' ') + '' }, on: { focus: function () { beforeValue = input.value; }, blur: () => { if (input.value !== beforeValue) { this.context.lcEmitter.emit(EV_CELL_DATA_CHANGE); } beforeValue = undefined; } } }); res.addChild(input); return res; }; CDTableHeader.prototype.dataOfCell = function (cellElt) { var cellData = CDGrid.prototype.dataOfCell.call(this, cellElt); cellData.text = cellElt.firstChild.value; return cellData; }; Object.defineProperty(CDTableHeader.prototype, 'hidden', { set: function (value) { if (value) { this.$grid.addClass('as-hidden'); } else { this.$grid.removeClass('as-hidden'); } }, get: function () { return this.$grid.hasClass('as-hidden'); }, configurable: true }); /** * * @param {CDContext} context * @constructor */ function CDSelectController(context) { this.context = context; this.editor = context.editor; this.lcEmitter = context.lcEmitter; Object.keys(this.constructor.prototype).filter(k => k.startsWith('ev_')) .forEach(key => this[key] = this[key].bind(this)); this.selectedGrid = null; this.selectedCells = []; (0,ACore._)({ tag: 'hanger', elt: this.context.table.$table, on: { draginit: this.ev_dragInit, drag: this.ev_drag, dragdeinit: this.ev_dragDeinit } }); } CDSelectController.prototype.cellOf = function (o) { while (o) { if (o.hasClass && o.hasClass('as-ca-cell')) return o; o = o.parentElement; } return null; }; /** * * @param {Vec2} pos */ CDSelectController.prototype.cellOfScreenPos = function (pos) { var row, cell, bound; var body = this.startingGrid.$grid; for (var i = 0; i < body.childNodes.length; ++i) { row = body.childNodes[i]; for (var j = 0; j < row.childNodes.length; ++j) { cell = row.childNodes[j]; bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(cell.getBoundingClientRect()); if (bound.containsPoint(pos)) return cell; } } return null; }; CDSelectController.prototype.ev_dragInit = function (event) { var cell = null; if (event.target.hasClass && event.target.hasClass('as-ca-cell')) { cell = event.target; } this.startingCell = cell; this.mouseDownCell = this.cellOf(event.target); if (this.mouseDownCell) { this.startingGrid = this.mouseDownCell.isDescendantOf(this.context.table.header.$grid) ? this.context.table.header : this.context.table.body; } this.hoveringCells = []; }; CDSelectController.prototype.ev_drag = function (event) { if (!this.startingCell) return; var curCell = this.cellOfScreenPos(event.currentPoint); if (!curCell) return; var startingLoc = locOfCell(this.startingCell); var endingLoc = locOfCell(curCell); var selectedLoc = mergeLoc(startingLoc, endingLoc); this.hoveringCells.forEach(cell => { cell.removeClass('as-hovering'); }); this.hoveringCells = this.startingGrid.getCellsFromLoc(selectedLoc); this.hoveringCells.forEach(cell => { cell.addClass('as-hovering'); }); }; CDSelectController.prototype.ev_dragDeinit = function (event) { this.hoveringCells.forEach(cell => { cell.removeClass('as-hovering'); }); if (this.hoveringCells.length > 0) { this.selectCells(this.hoveringCells); } else if (this.cellOf(event.target) === this.mouseDownCell) { this.selectCells([this.mouseDownCell]); } this.hoveringCells = null; this.hoveringCells = []; }; CDSelectController.prototype.selectCells = function (cells) { this.selectedCells.forEach(cell => cell.removeClass('as-selected')); this.selectedCells = cells.slice(); this.selectedCells.forEach(cell => cell.addClass('as-selected')); var focsVar = (0,ACore.$)('td.as-selected .as-cag-var.as-focus', this.editor); if (!focsVar) { focsVar = (0,ACore.$)('td.as-selected .as-cag-var', this.editor); this.context.varMng.focus(focsVar || null); } var sel, range; if (!focsVar) { focsVar = (0,ACore.$)('th.as-selected preinput', this.editor); if (focsVar) { sel = document.getSelection(); if (sel.rangeCount) { range = sel.getRangeAt(0); if (range.startContainer.nodeType !== Node.TEXT_NODE || range.startContainer.parentElement !== focsVar) { focsVar.focus(); focsVar.select(focsVar.value.length); } } else { focsVar.focus(); focsVar.select(focsVar.value.length); } } } this.lcEmitter.emit(EV_SELECTED_CELL_CHANGE); }; /** * * @param context * @constructor */ function CDGVariableManager(context) { this.context = context; this.editor = context.editor; this.lcEmitter = context.lcEmitter; /** * * @type {CDGrid} */ this.body = context.table.body; this.createView(); this._variables = []; this.variableDict = {}; this.pickedVariables = {}; this.availableVariables = {}; Object.keys(this.constructor.prototype).filter(k => k.startsWith('ev_')) .forEach(key => this[key] = this[key].bind(this)); this.focusVariable = null; } CDGVariableManager.prototype.focus = function (varElt) { if (this.focusVariable) { this.focusVariable.removeClass('as-focus'); } this.focusVariable = varElt; if (this.focusVariable) { this.focusVariable.addClass('as-focus'); } }; CDGVariableManager.revokeResource = function () { this.editor = undefined; this.grid = undefined; }; CDGVariableManager.prototype.createView = function () { this.$varMng = (0,ACore._)({ class: 'as-cag-var-mng', child: [] }); this.editor.addChildAfter(this.$varMng, this.context.formatTool.$tool); }; /** * * @param {string} name * @returns {*} */ CDGVariableManager.prototype.makeVariable = function (name) { var info = this.variableDict[name] || {}; var elt = (0,ACore._)({ tag: 'hanger', class: 'as-cag-var', attr: { 'data-name': name, }, child: [ // { tag: 'span', child: { text: name } } ], props: { hangOn: 3, }, on: { dragstart: this.ev_dragStart, dragend: this.ev_dragEnd, drag: this.ev_drag, click: () => { this.focus(elt); } } }); if (typeof info.title === "string") { elt.attr('data-title', info.title); } if (info) { elt.attr('data-default-title', info.title); } return elt; }; CDGVariableManager.prototype.pickVariable = function (name) { if (this.availableVariables[name]) { this.pickedVariables[name] = this.availableVariables[name]; delete this.availableVariables[name]; } else if (!this.pickedVariables[name]) { this.pickedVariables[name] = this.makeVariable(name); } return this.pickedVariables[name]; }; CDGVariableManager.prototype.rejectVariable = function (name) { if (this.pickedVariables[name]) { this.availableVariables[name] = this.pickedVariables[name]; delete this.pickedVariables[name]; } this.$varMng.addChild(this.availableVariables[name]); return this.availableVariables[name]; }; CDGVariableManager.prototype.rejectAllVariables = function () { Object.keys(this.pickedVariables).forEach(name => this.rejectVariable(name)); }; CDGVariableManager.prototype.variableElementOf = function (o) { var name = varNameOf(o); if (name === "string") return this.availableVariables[o] || this.pickedVariables[o]; if ((0,Dom/* isDomNode */.mV)(o)) { while (o) { if (o.hasClass && o.hasClass('as-cag-var')) { return o; } o = o.parentElement; } } return null; }; CDGVariableManager.prototype.findVariableLocation = function (rect) { var cells = (0,ACore.$$)('.as-ca-cell', this.body.$grid); var best = 0; var cellRect; var bestCell; var square; var i; for (i = 0; i < cells.length; ++i) { cellRect = Rectangle/* default.fromClientRect */.Z.fromClientRect(cells[i].getBoundingClientRect()); square = rect.collapsedSquare(cellRect); if (square > best) { bestCell = cells[i]; } } var res = { in: null }; if (bestCell) { res.in = bestCell; } else { res.in = null; } var varEltList, varElt, varBound; if (res.in) { varEltList = (0,ACore.$$)('.as-cag-var', res.in); res.bf = 'end'; for (i = varEltList.length - 1; i >= 0; --i) { varElt = varEltList[i]; if (!varElt.attr('data-default-title')) continue; varBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(varElt.getBoundingClientRect()); if (varBound.centerPoint().x > rect.centerPoint().x) { res.bf = varElt; } else break; } return res; } else { return null; } }; /** * * @param {AElement=} elt */ CDGVariableManager.prototype.openEditVariableDialog = function (elt) { elt = elt || this.focusVariable; if (!elt) return; var flushData = () => { var newTile = checkbox.checked ? undefined : titleInput.value; var oldTile = elt.attr('data-title'); if (typeof oldTile !== "string") oldTile = undefined; if (newTile !== oldTile) { elt.attr('data-title', newTile); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } } var finish = () => { flushData(); cancel(); } var cancel = () => { document.removeEventListener('click', clickOut); elt = null; follower.followTarget = null; follower.clearChild(); follower.remove(); ResizeSystem/* default.removeTrash */.Z.removeTrash(); finish = undefined; cancel = undefined; clickOut = undefined; } var clickOut = event => { if ((0,EventEmitter/* hitElement */.EY)(follower, event)) return; cancel(); }; setTimeout(() => { document.addEventListener('click', clickOut); }, 100); var checkboxUpdate = () => { if (checkbox.checked) { titleInput.disabled = true; titleInput.savedData = titleInput.value; titleInput.value = ''; } else { titleInput.disabled = false; titleInput.value = titleInput.value || titleInput.savedData || ''; } } var follower = (0,ACore._)({ tag: Follower/* default */.Z, class: ['as-dropdown-box-common-style', 'as-cdg-variable-edit-dialog'], style: { zIndex: (0,utils.findMaxZIndex)(elt) + 10, }, child: [ { style: { fontWeight: 'bold', padding: '10px 5px' }, child: { text: 'Tiêu đề' } }, { class: 'as-table-grid', child: [ { class: 'as-table-grid-row', child: [ { class: 'as-table-grid-cell', child: { tag: 'span', child: { text: 'Mặc định' } } }, { class: 'as-table-grid-cell', child: { tag: 'checkboxinput', props: { checked: typeof elt.attr('data-title') !== "string" }, on: { change: checkboxUpdate } } }, ] }, { class: 'as-table-grid-row', child: [ { class: 'as-table-grid-cell', child: { tag: 'span', child: { text: 'Giá trị' } } }, { class: 'as-table-grid-cell', child: { tag: 'input', attr: { type: 'text' }, props: { value: elt.attr('data-title') || '' }, class: 'as-text-input' } }, ] } ] }, { style: { textAlign: 'center', padding: '10px' }, child: [{ tag: 'flexiconbutton', props: { text: 'Xác nhận' }, style: { marginRight: '20px' }, on: { click: finish } }, { tag: 'flexiconbutton', props: { text: 'Hủy' }, on: { click: cancel } } ] } ], props: { followTarget: elt, } }).addTo(document.body); var checkbox = (0,ACore.$)('checkboxinput', follower); var titleInput = (0,ACore.$)('input[type="text"]', follower); checkboxUpdate(); }; CDGVariableManager.prototype.ev_dragStart = function (event) { var varElt = this.variableElementOf(event.target); var eltBound = varElt.getBoundingClientRect(); var offset = event.currentPoint.sub(new Vec2/* default */.Z(eltBound.left, eltBound.top)); this.draggingElt = varElt; this.dragOffset = offset; this.clonedElt = (0,ACore.$)(varElt.cloneNode(true)).addClass('as-clone-var').addStyle({ position: 'fixed', zIndex: (0,utils.findMaxZIndex)(varElt) + 2, left: eltBound.left + 'px', top: eltBound.top + 'px' }).addTo(document.body); varElt.addStyle('opacity', 0.8); this.hoverCell = null; }; CDGVariableManager.prototype.ev_drag = function (event) { var newPos = event.currentPoint.sub(this.dragOffset); this.clonedElt.addStyle({ left: newPos.x + 'px', top: newPos.y + 'px' }); var pointerRect = new Rectangle/* default */.Z(event.currentPoint.x - 10, event.currentPoint.y - 10, 20, 20); this.newLocation = this.findVariableLocation(pointerRect); var newLocation = this.newLocation; if (newLocation) { if (newLocation.in !== this.hoverCell) { if (this.hoverCell) this.hoverCell.removeClass('as-drag-over'); this.hoverCell = newLocation.in; this.hoverCell.addClass('as-drag-over'); } if (isChangeParent(newLocation.in, this.draggingElt, newLocation.bf)) { this.hoverCell.addClass('as-bf'); this.hoverCell.addStyle('--hover-x', hoverXOf(newLocation.in, newLocation.bf) + 'px'); } else { this.hoverCell.removeClass('as-bf').removeStyle('--hover-x'); } } else { if (this.hoverCell) this.hoverCell.removeClass('as-drag-over') .removeClass('as-bf').removeStyle('--hover-x'); } }; CDGVariableManager.prototype.ev_dragEnd = function () { this.draggingElt.removeStyle('opacity'); this.clonedElt.remove(); if (this.hoverCell) this.hoverCell.removeClass('as-drag-over'); var name = this.draggingElt.attr('data-name'); var newLocation = this.newLocation; if (newLocation) { if (isChangeParent(newLocation.in, this.draggingElt, newLocation.bf)) { this.draggingElt.selfRemove(); if (newLocation.bf === 'end') { newLocation.in.addChild(this.draggingElt); } else { newLocation.in.addChildBefore(this.draggingElt, newLocation.bf); } this.pickVariable(name); this.context.selectCtrl.selectCells([this.newLocation.in]); this.context.varMng.focus(this.draggingElt); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } } else { if (this.draggingElt.parentElement !== this.$varMng) { this.rejectVariable(name); this.$varMng.addChild(this.draggingElt); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } } }; CDGVariableManager.prototype.updateVariableInfo = function () { var i, elt; var varInfo; for (i in this.availableVariables) { elt = this.availableVariables[i]; varInfo = this.variableDict[i]; if (varInfo) elt.attr('data-default-title', varInfo.title) } for (i in this.pickedVariables) { elt = this.pickedVariables[i]; varInfo = this.variableDict[i]; if (varInfo) elt.attr('data-default-title', varInfo.title); } for (i = 0; i < this._variables.length; ++i) { varInfo = this._variables[i]; if (this.pickedVariables[varInfo.name] || this.availableVariables[varInfo.name]) continue; this.availableVariables[varInfo.name] = this.makeVariable(varInfo.name); this.$varMng.addChild(this.availableVariables[varInfo.name]); } } /// nếu không c trong danh sách thì tự bỏ ra Object.defineProperty(CDGVariableManager.prototype, 'variables', { set: function (variables) { if (!Array.isArray(variables)) variables = []; variables = variables.map(v => normalizeVariableData(v)).filter(x => !!x); var t = variables.reduce((ac, cr) => { if (!ac.dict[cr.name]) { ac.dict[cr.name] = cr; ac.arr.push(cr); } return ac; }, { arr: [], dict: {} }); this._variables = t.arr; this.variableDict = t.dict; this.updateVariableInfo(); // // this.availableVariables = {}; // this.$varMng.clearChild(); }, get: function () { return this._variables; } }); /** * * @param {CDContext} context * @constructor */ function CDUndoManager(context) { this.context = context; this.data = []; this.idx = -1; } CDUndoManager.prototype.revokeResource = function () { this.data = []; this.idx = -1; }; CDUndoManager.prototype.reset = function () { this.data = []; this.idx = -1; return this; } CDUndoManager.prototype.commit = function () { while (this.data.length - 1 > this.idx) this.data.pop(); var item = { header: this.context.table.header.data, data: this.context.table.body.data, headerHidden: this.context.table.header.hidden }; this.data.push(item); this.idx = this.data.length - 1; return this; }; CDUndoManager.prototype._applyTop = function () { var item = this.data[this.idx]; this.context.varMng.rejectAllVariables(); this.context.table.header.data = item.header; this.context.table.header.hidden = item.headerHidden; this.context.table.body.data = item.data; this.context.lcEmitter.emit(EV_UNDO_APPLY); } CDUndoManager.prototype.undo = function () { if (!this.canUndo()) return this; this.idx--; this._applyTop(); return this; }; CDUndoManager.prototype.redo = function () { if (!this.canRedo()) return this; this.idx++; this._applyTop(); return this; }; CDUndoManager.prototype.canRedo = function () { return this.idx + 1 < this.data.length; }; CDUndoManager.prototype.canUndo = function () { return this.idx > 0; }; /** * * @param {CDContext} context * @constructor */ function CDGFormatTool(context) { this.context = context; this.table = context.table; this.editor = context.editor; this.lcEmitter = context.lcEmitter; Object.keys(this.constructor.prototype).filter(k => k.startsWith('ev_')).forEach(k => this[k] = this[k].bind(this)); this.$tool = (0,ACore._)({ class: 'as-table-of-text-input-tool', child: [ { class: 'as-table-of-text-input-tool-group', child: [ { tag: RibbonButton/* default */.Z, attr: { "data-command": 'toggle_header' }, props: { items: [ { text: 'Show Header', arg: true, icon: (0,ACore._)(table_header_add).addClass('as-show-header') }, { text: 'Hide Header', arg: false, icon: table_header_add } ], icon: (0,ACore._)(table_header_add).addClass('as-show-header') } } ] }, { class: 'as-table-of-text-input-tool-group', child: [ { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-undo', attr: { 'data-command': 'undo', title: 'Undo' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-redo', attr: { 'data-command': 'redo', title: 'Redo' } }, ] }, { class: 'as-table-of-text-input-tool-group', child: [ { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-column-plus-before', attr: { 'data-command': 'left', title: 'Insert 1 column left' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-column-plus-after', attr: { 'data-command': 'right', title: 'Insert 1 column right' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-row-plus-before', attr: { 'data-command': 'above', title: 'Insert 1 row above' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], child: 'span.mdi.mdi-table-row-plus-after', attr: { 'data-command': 'bellow', title: 'Insert 1 row bellow' } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'], attr: { 'data-command': 'removeCol', title: 'Delete column' }, child: { tag: 'span', class: ['mdi', 'mdi-table-column-remove'], } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'], attr: { 'data-command': 'removeRow', title: 'Delete row' }, child: { tag: 'span', class: ['mdi', 'mdi-table-row-remove'], }, }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'],//can checked attr: { 'data-command': 'merge', title: 'Merge Cells' }, child: { tag: 'span', class: ['mdi', 'mdi-table-merge-cells'], }, }] }, { class: 'as-table-of-text-input-tool-group', child: [ { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'],//can checked attr: { 'data-command': 'textAlignLeft', title: 'Format text align left' }, child: { tag: 'span', class: ['mdi', 'mdi-format-align-left'], } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'],//can checked attr: { 'data-command': 'textAlignCenter', title: 'Format text align center' }, child: { tag: 'span', class: ['mdi', 'mdi-format-align-center'], } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'],//can checked attr: { 'data-command': 'textAlignRight', title: 'Format text align right' }, child: { tag: 'span', class: ['mdi', 'mdi-format-align-right'], } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'],//can checked attr: { 'data-command': 'textFormatBold', title: 'Bold' }, child: { tag: 'span', class: ['mdi', 'mdi-format-bold'], } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'],//can checked attr: { 'data-command': 'textFormatItalic', title: 'Italic' }, child: { tag: 'span', class: ['mdi', 'mdi-format-italic'], } }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'],//can checked attr: { 'data-command': 'wrap', title: 'Allow text wrap', }, child: { tag: 'span', class: ['mdi', 'mdi-wrap'], } } ] }, { tag: 'button', class: ['as-transparent-button', 'as-table-of-text-input-tool-command'], attr: { 'data-command': 'edit_variable' }, child: { tag: 'span', class: ['mdi', 'mdi-tag-edit-outline'], } } ] }); this.editor.addChildAfter(this.$tool, null); this.$commandBtns = (0,ACore.$$)('.as-table-of-text-input-tool >button', this.$tool).concat((0,ACore.$$)('.as-table-of-text-input-tool-group >button', this.$tool)) .reduce((ac, btn) => { var value = btn.attr('data-command'); if (!value) return ac; if (btn.isSupportedEvent('select')) { btn.on('select', (event) => { this.commands[value].exec.call(this, event.item.arg); }); } else btn.on('click', ev => { if (this.commands[value].checked) { this.commands[value].exec.call(this, !btn.hasClass('as-checked')); } else { this.commands[value].exec.call(this); } }); ac[value] = btn; return ac; }, {}); this.updateAvailableCommands(); this.lcEmitter.on(EV_SELECTED_CELL_CHANGE, this.updateAvailableCommands.bind(this)); } CDGFormatTool.prototype.updateAvailableCommands = function () { Object.values(this.$commandBtns).forEach(btn => { var name = btn.attr('data-command'); if (this.commands[name] && this.commands[name].available) { btn.disabled = !this.commands[name].available.call(this); } if (this.commands[name] && this.commands[name].checked) { if (this.commands[name].checked.call(this)) { btn.addClass('as-checked'); } else { btn.removeClass('as-checked'); } } else if (this.commands[name] && this.commands[name].getIcon) { btn.icon = this.commands[name].getIcon.call(this); } }); }; CDGFormatTool.prototype.addColAt = function (newColIdx) { this.table.header.addColAt(newColIdx); this.table.body.addColAt(newColIdx); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); }; CDGFormatTool.prototype.addRowAt = function (grid, newRowIdx) {//todo: wrong grid.addRowAt(newRowIdx); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); }; CDGFormatTool.prototype.removeRowAt = function (grid, rowIdx, rowHeight) { grid.removeRowAt(rowIdx, rowHeight); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); }; CDGFormatTool.prototype.removeColAt = function (rowIdx, colWidth) { this.table.header.removeColAt(rowIdx, colWidth); this.table.body.removeColAt(rowIdx, colWidth); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); }; CDGFormatTool.prototype.mergeCells = function (grid, cells) { grid.mergeCells(cells); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); }; CDGFormatTool.prototype.splitCell = function (grid, originalCell) { grid.splitCell(originalCell); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); }; /** * @this CDGFormatTool */ function hasSelectedCell() { var selectedCells = this.context.selectCtrl.selectedCells; return selectedCells.length > 0; } var checkTextAlign = alignVal => function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; for (var i = 0; i < selectedCells.length; ++i) { if (textAlignOfElt(selectedCells[i]) !== alignVal) return false; } return true; }; CDGFormatTool.prototype.commands = { undo: { /** * @this CDGFormatTool */ available: function () { return this.context.undoMng.canUndo(); }, exec: function () { this.context.undoMng.undo(); } }, redo: { available: function () { return this.context.undoMng.canRedo(); }, exec: function () { this.context.undoMng.redo(); } }, toggle_header: { /** * @this CDGFormatTool */ getIcon: function () { if (this.context && this.context.table.header.hidden) { return (0,ACore._)(table_header_add); } else { return (0,ACore._)(table_header_add).addClass('as-show-header') } }, /** * @this CDGFormatTool */ exec: function (arg) { if (!this.context.table.header.hidden === !!arg) return; this.context.table.header.hidden = !arg; this.lcEmitter.emit(EV_SELECTED_CELL_CHANGE); this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } }, left: { available: hasSelectedCell, /** * @this CDGFormatTool */ exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return; var loc = locOfCells(selectedCells); var newColIdx = loc[1]; this.addColAt(newColIdx); } }, right: { available: hasSelectedCell, /** * @this CDGFormatTool */ exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return; var loc = locOfCells(selectedCells); var newColIdx = loc[1] + loc[3]; this.addColAt(newColIdx); } }, above: { available: hasSelectedCell, /** * @this CDGFormatTool */ exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return; var loc = locOfCells(selectedCells); var newRowIdx = loc[0]; var grid = this.context.table.body; if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header; this.addRowAt(grid, newRowIdx); } }, bellow: { available: hasSelectedCell, /** * @this CDGFormatTool */ exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return; var loc = locOfCells(selectedCells); var newRowIdx = loc[0] + loc[2]; var grid = this.context.table.body; if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header; this.addRowAt(grid, newRowIdx); } }, removeRow: { available: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var loc = locOfCells(selectedCells); var grid = this.context.table.body; if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header; var size = grid.getSize(); return loc[2] < size.height; }, exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return; var loc = locOfCells(selectedCells); var grid = this.context.table.body; if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header; this.removeRowAt(grid, loc[0], loc[2]); this.context.selectCtrl.selectCells([]); } }, removeCol: { available: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var loc = locOfCells(selectedCells); var grid = this.context.table.body; if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header; var size = grid.getSize(); return loc[3] < size.width; }, exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return; var loc = locOfCells(selectedCells); // var grid = this.context.table.body; // if (this.context.table.header.hasCell(selectedCells[0])) // grid = this.context.table.header; this.removeColAt(loc[1], loc[3]); this.context.selectCtrl.selectCells([]); } }, merge: { checked: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (selectedCells.length !== 1) return false; var loc = locOfCells(selectedCells); return loc[2] > 1 || loc[3] > 1; }, available: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var loc = locOfCells(selectedCells); return loc[2] > 1 || loc[3] > 1; }, exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var loc = locOfCells(selectedCells); var grid = this.context.table.body; if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header; var isMerged = selectedCells.length === 1 && (loc[2] > 1 || loc[3] > 1); if (isMerged) this.splitCell(grid, selectedCells[0]) else this.mergeCells(grid, selectedCells); selectedCells = grid.getCellsFromLoc(loc); this.context.selectCtrl.selectCells(selectedCells); } }, edit_variable: { /** * @this CDGFormatTool */ available: function () { var fv = this.context.varMng && this.context.varMng.focusVariable; return !!(fv && fv.isDescendantOf(this.context.editor)); }, /** * @this CDGFormatTool */ exec: function () { this.context.varMng.openEditVariableDialog(); } }, textAlignCenter: { checked: checkTextAlign('center'), available: hasSelectedCell, exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var changed = false; var cell; for (var i = 0; i < selectedCells.length; ++i) { cell = selectedCells[i]; if ((cell.style.textAlign || defaultTextAlignOfElt(cell)) !== 'center') { cell.style.textAlign = 'center'; changed = true; } } if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } }, textAlignRight: { checked: checkTextAlign('right'), available: hasSelectedCell, exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var changed = false; var cell; for (var i = 0; i < selectedCells.length; ++i) { cell = selectedCells[i]; if ((cell.style.textAlign || defaultTextAlignOfElt(cell)) !== 'right') { cell.style.textAlign = 'right'; changed = true; } } if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } }, textAlignLeft: { checked: checkTextAlign('left'), available: hasSelectedCell, exec: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var changed = false; var cell; for (var i = 0; i < selectedCells.length; ++i) { cell = selectedCells[i]; if ((cell.style.textAlign || defaultTextAlignOfElt(cell)) !== 'left') { cell.style.textAlign = 'left'; changed = true; } } if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } }, wrap: { checked: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; for (var i = 0; i < selectedCells.length; ++i) { if (selectedCells[i].style.whiteSpace === 'nowrap') return false; } return true; }, available: hasSelectedCell, exec: function (flag) { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var changed = false; var cell; for (var i = 0; i < selectedCells.length; ++i) { cell = selectedCells[i]; if (cell.style.whiteSpace === 'nowrap') { if (flag) { cell.style.whiteSpace = null; changed = true; } } else { if (!flag) { cell.style.whiteSpace = 'nowrap'; changed = true; } } } if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } }, textFormatBold: { checked: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; for (var i = 0; i < selectedCells.length; ++i) { if (fontWeightOfElt(selectedCells[i]) !== 'bold') return false; } return true; }, available: hasSelectedCell, exec: function (flag) { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var changed = false; var cell; for (var i = 0; i < selectedCells.length; ++i) { cell = selectedCells[i]; if (fontWeightOfElt(cell) === 'bold') { if (!flag) { cell.style.fontWeight = 'normal'; changed = true; } } else { if (flag) { cell.style.fontWeight = 'bold'; changed = true; } } } if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } }, textFormatItalic: { checked: function () { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; for (var i = 0; i < selectedCells.length; ++i) { if (fontStyleOfElt(selectedCells[i]) !== 'italic') return false; } return true; }, available: hasSelectedCell, exec: function (flag) { var selectedCells = this.context.selectCtrl.selectedCells; if (!selectedCells.length) return false; var changed = false; var cell; for (var i = 0; i < selectedCells.length; ++i) { cell = selectedCells[i]; if (fontStyleOfElt(cell) === 'italic') { if (!flag) { cell.style.fontStyle = 'normal'; changed = true; } } else { if (flag) { cell.style.fontStyle = 'italic'; changed = true; } } } if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE); } } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/SelectRibbonMenu.js var addSelectedClass = item => { if (!item) return; if (Array.isArray(item.extendClasses)) { item.extendClasses.push('as-ribbon-selected'); } else { item.extendClasses = [item.extendClasses, 'as-ribbon-selected'].filter(x => !!x); } } var removeSelectedClass = item => { if (!item) return; if (Array.isArray(item.extendClasses)) { item.extendClasses = item.extendClasses.filter(it => it !== 'as-ribbon-selected'); } } /** * @extends {RibbonButton} * @constructor */ function SelectRibbonMenu() { RibbonButton/* default.apply */.Z.apply(this, arguments); this.addClass('as-select-ribbon-menu'); this._itemDict = {}; this._value = null; this.defineEvent('change'); this.on('select', (ev) => { var value = ev.item.value; if (this.value !== value) { this.value = value; this.emit('change', { target: this, type: 'change' }, this); } }); } SelectRibbonMenu.tag = 'SelectRibbonMenu'.toLowerCase(); SelectRibbonMenu.render = RibbonButton/* default.render */.Z.render; SelectRibbonMenu.property = Object.assign({}, RibbonButton/* default.property */.Z.property); SelectRibbonMenu.property.items = { set: function (items) { removeSelectedClass(this.selectedItem); items = items || []; RibbonButton/* default.property.items.set.call */.Z.property.items.set.call(this, items); this._itemDict = {}; var visit = (it) => { var key = (0,utils.keyStringOf)(it.value); this._itemDict[key] = it; } items.forEach(it => visit(it)); var selectedItem = this.selectedItem; addSelectedClass(selectedItem); selectedItem = Object.assign({ text: '', icon: null }, selectedItem); this.text = selectedItem.text; this.icon = selectedItem.icon; }, get: RibbonButton/* default.property.items.get */.Z.property.items.get } SelectRibbonMenu.property.value = { set: function (value) { var selectedItem = this.selectedItem; console.log('clear', selectedItem) removeSelectedClass(selectedItem); this._value = value; selectedItem = this.selectedItem; addSelectedClass(selectedItem); selectedItem = Object.assign({ text: '', icon: null }, selectedItem); this.text = selectedItem.text; this.icon = selectedItem.icon; }, get: function () { if (!this._items || !this._items.length || this._itemDict[(0,utils.keyStringOf)(this._value)]) return this._value; return this._items[0].value; } }; SelectRibbonMenu.property.selectedItem = { get: function () { if (this._itemDict[(0,utils.keyStringOf)(this._value)]) return this._itemDict[(0,utils.keyStringOf)(this._value)]; if (this._items && this._items.length) return this._items[0]; return null; } }; /* harmony default export */ const js_SelectRibbonMenu = (SelectRibbonMenu); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/PathView.js /*** * @extends AElement * @constructor */ function PathView() { this._items = []; this.$items = []; } PathView.tag = 'PathView'.toLowerCase(); PathView.render = function () { return (0,ACore._)({ extendEvent: ['press'], class: 'as-path-view' }); }; PathView.property = {}; PathView.property.items = { set: function (value) { this.clearChild(); this._items = value || []; this.$items = this._items.map((item, i, array) => { item = item || {}; var $item = (0,ACore._)({ tag: 'button', class: ['as-path-view-item'], child: [] }); if (item.icon) { $item.addChild((0,ACore._)(item.icon).addClass('as-path-view-item-icon')); } if (item.text || item.name) { $item.addChild((0,ACore._)({ class: 'as-path-view-item-text', child: { text: item.text || item.name || '' } })); } if (i < array.length - 1) { $item.addChild((0,ACore._)({ class: 'as-path-view-item-arrow', child: 'span.mdi.mdi-chevron-right' })); } $item.on('click', (event) => { this.emit('press', { item: item, index: i, items: array, type: 'click', value: item.value, originalEvent: event }); }); this.$items.push($item); return $item; }); this.addChild(this.$items); }, get: function () { return this._items; } }; ACore/* default.install */.Z.install(PathView); /* harmony default export */ const js_PathView = (PathView); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/fontinput.css var fontinput = __webpack_require__(8965); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/FontInput.js const fonts = [ 'Arial', 'Verdana', 'Times New Roman', 'Courier New', 'Georgia', 'Palatino', 'Garamond', 'Bookman', 'Comic Sans MS', 'Trebuchet MS', 'Arial Black', 'Impact', "'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" ];//only for test /** * @extends Follower * @constructor */ function FontFamilySelectList() { this.on('preupdateposition', this.eventHandler.ffPreUpdatePosition); this.$content = (0,ACore.$)('.as-font-family-select-list-content', this); this.$items = []; this.$selectedItem = null; this.$itemByValue = {}; this.$searchInput = (0,ACore.$)(Searcher/* default.tag */.Z.tag, this); this.$searchInput.on('stoptyping', this.eventHandler.searchChange); /** * * @type {string[]} * @memberOf FontFamilySelectList# */ this.items = fonts; this._searchingHolders = null;//not prepared } FontFamilySelectList.tag = 'FontFamilySelectList'.toLowerCase(); FontFamilySelectList.render = function () { return (0,ACore._)({ tag: Follower/* default */.Z, class: ['as-font-family-select-list', 'as-dropdown-box-common-style'], child: [ { class: 'as-font-family-select-list-header', child: { tag: Searcher/* default */.Z } }, { class: ['as-bscroller', 'as-font-family-select-list-content'], } ] }, true); }; FontFamilySelectList.property = {}; FontFamilySelectList.property.items = { set: function (items) { if (!Array.isArray(items)) items = []; this._items = items; this.$content.clearChild(); this.$itemByValue = {}; this._searchingHolders = null; this.$items = items.map(item => { var text = item.replace(/'/g, ''); text = text.replace(/,.+/, ''); var itemElt = (0,ACore._)({ class: 'as-font-family-select-item', style: { fontFamily: item }, attr: { 'data-value': item }, child: { text: text }, on: { click: () => { this.value = item; this.emit('select', { value: item }); } } }); this.$itemByValue[item] = itemElt; return itemElt; }); this.$content.addChild(this.$items); }, get: function () { return this._items; } }; FontFamilySelectList.property.value = { set: function (value) { if (this.$selectedItem) this.$selectedItem.removeClass('as-selected'); this._value = value; this.$selectedItem = this.$itemByValue[value]; if (this.$selectedItem) this.$selectedItem.addClass('as-selected'); }, get: function () { if (this.$itemByValue[this._value]) return this._value; return null; } }; FontFamilySelectList.prototype._makeHolder = function (item, value) { var res = { value: value, text: item }; res.text = res.text.trim().toLowerCase(); res.words = res.text.split(/\s+/).filter(w => !!w); res.text = res.words.join(' '); res.nacWords = res.words.map(w => (0,stringFormat.nonAccentVietnamese)(w)); res.nacText = res.nacWords.join(' '); res.nacWordDict = res.nacWords.reduce(function (ac, word) { ac[word] = true; return ac; }, {}); return res; }; FontFamilySelectList.prototype._prepareSearchingHolders = function () { if (this._searchingHolders) return; this._searchingHolders = this.items.map((item, idx) => this._makeHolder(item, idx)); }; FontFamilySelectList.prototype._calcMatching = function (queryHolder, itemHolder) { var res = {}; var score = 0; if (itemHolder.text.indexOf(queryHolder.text) >= 0 || itemHolder.nacText.indexOf(queryHolder.nacText) >= 0) { res.mustIncluded = true; } score += (0,stringMatching.wordsMatch)(queryHolder.words, itemHolder.words) / (0,Math_int.harmonicMean)(queryHolder.words.length, itemHolder.words.length); score += (0,stringMatching.wordsMatch)(queryHolder.nacWords, itemHolder.nacWords) / (0,Math_int.harmonicMean)(queryHolder.nacWords.length, itemHolder.nacWords.length); var dict = Object.keys(itemHolder.nacWordDict); Object.keys(queryHolder.nacWordDict).forEach(function (qWord) { var bestWordScore = 0; var bestWord = ''; var word; for (word in dict) { if ((0,stringMatching.wordLike)(qWord, word) > bestWordScore) { bestWordScore = (0,stringMatching.wordLike)(qWord, word); bestWord = word; } } if (bestWordScore > 0) { score += bestWordScore / (0,Math_int.harmonicMean)(qWord.length, bestWord.length); delete dict[bestWord]; } }); res.score = score; return res; }; FontFamilySelectList.eventHandler = {}; FontFamilySelectList.eventHandler.ffPreUpdatePosition = function () { if (!this.followTarget) return; var bound = this.followTarget.getBoundingClientRect(); var screenSizes = (0,Dom/* getScreenSize */.tE)(); var availableHeight = screenSizes.height - bound.bottom; availableHeight = Math.max(availableHeight, bound.top); availableHeight -= 50; this.$content.addStyle('max-height', availableHeight + 'px'); }; /** * @this FontFamilySelectList */ FontFamilySelectList.eventHandler.searchChange = function () { var query = this.$searchInput.value.trim(); var queryHolder = this._makeHolder(query, -1); var resultHolders, midScore, viewItemElements; if (query.length > 0) { this._prepareSearchingHolders(); this._searchingHolders.forEach((itemHolder) => { var match = this._calcMatching(queryHolder, itemHolder); Object.assign(itemHolder, match); }); resultHolders = this._searchingHolders.slice(); resultHolders.sort(function (a, b) { return b.score - a.score; }); midScore = resultHolders[0].score * 0.7; resultHolders = resultHolders.filter(function (holder) { return holder.score >= midScore || holder.mustIncluded; }); viewItemElements = resultHolders.map(holder => this.$items[holder.value]); this.$content.clearChild().addChild(viewItemElements); } else { this.$content.clearChild().addChild(this.$items); } this.updatePosition(); console.log(query) }; ACore/* default.install */.Z.install(FontFamilySelectList); /** * @extends AElement * @constructor */ function FontInput() { /** * @type {FontFamilySelectList} */ this.$selectList = (0,ACore._)('fontfamilyselectlist'); this.$selectList.cancelWaiting(); this.$selectList.sponsorElement = this; setTimeout(() => { this.$selectList.addTo(document.body); this.$selectList.followTarget = this; }, 100) } FontInput.tag = 'FontInput'.toLowerCase(); FontInput.render = function () { return (0,ACore._)({ class: 'as-font-input', }); }; FontInput.property = {}; /* harmony default export */ const js_FontInput = (FontInput); ACore/* default.install */.Z.install(FontInput); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/collapsibletreenavigator.css var collapsibletreenavigator = __webpack_require__(3478); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CollapsibleTreeNavigator.js /** * note * CTCollapsibleNode can only be selected when it has no children and noSelect = false. * CTNNode can be selected and can have children. */ var NODE_CONTENT_HEIGHT = BrowserDetector/* default.isMobile */.Z.isMobile? 45: 30; var css = new DynamicCSS/* default */.Z(); css.setRule('div.as-collapsible-tree-navigator', { '--node-content-height': NODE_CONTENT_HEIGHT + 'px' }).commit(); /** * @typedef {Object} CTNItemData * @property {string} text * @property {any} string * @property [icon] * @property [noSelect] - default = false */ /** * @extends AElement * @constructor */ function CollapsibleTreeNavigator() { /** * * @type {CTRoot} */ this.root = new CTRoot(this); /** * @type {{text:string, id:any, actiions:{}[]}[]} * @name items * @memberOf CollapsibleTreeNavigator# */ /** * @type {any} * @name value * @memberOf CollapsibleTreeNavigator# */ } CollapsibleTreeNavigator.tag = 'CollapsibleTreeNavigator'.toLowerCase(); CollapsibleTreeNavigator.render = function () { return (0,ACore._)({ class: 'as-collapsible-tree-navigator', extendEvent: ['change', 'action', 'clickitem'] }); }; CollapsibleTreeNavigator.prototype.nodeOf = function (nodeValue) { return this.root.nodeOf(nodeValue); }; CollapsibleTreeNavigator.prototype.updateNode = function (nodeValue, fieldName, value) { var nd = this.nodeOf(nodeValue); if (!nd) return; nd.rawData[fieldName] = value; if (['items', 'text', 'icon', 'value', 'count', 'color'].indexOf(fieldName) >= 0) { nd[fieldName] = value; this.root.updateSize(); } }; /** * * @param {any=}data */ CollapsibleTreeNavigator.prototype.notifyChange = function (data) { var nd; if (!data) {//fallback nd = this.root.nodeByValue[(0,utils.keyStringOf)(this.value)]; data = nd && nd.data; } data = data || null; var value = this.value; if (data) value = data.value; this.emit('change', { type: 'change', value: value, data: data }, this); }; /** * * @param {any=}data */ CollapsibleTreeNavigator.prototype.notifyClick = function (data) { this.emit('clickitem', { type: 'clickitem', data: data }, this); }; CollapsibleTreeNavigator.property = {}; CollapsibleTreeNavigator.property.value = { set: function (value) { this.root.value = value; }, get: function () { return this.root.value; } }; CollapsibleTreeNavigator.property.items = { set: function (items) { this.root.items = items; }, get: function () { return this.root.items; } }; ACore/* default.install */.Z.install(CollapsibleTreeNavigator); /* harmony default export */ const js_CollapsibleTreeNavigator = (CollapsibleTreeNavigator); /** * * @param {CollapsibleTreeNavigator} elt * @constructor */ function CTRoot(elt) { this.elt = elt; /** * * @type {CTCollapsibleNode[]} */ this.children = []; this.nodeByValue = {}; this.iconCount = 0; this.level = 0; this.looked = 0; } CTRoot.prototype.nodeOf = function (nodeValue) { return this.nodeByValue[(0,utils.keyStringOf)(nodeValue)]; } CTRoot.prototype.updateSelectedLine = function () { if (this.looked) return; var selectedNode = this.nodeOf(this.value); if (!selectedNode) return; var path = []; var c = selectedNode; while (c && c !== this) { path.unshift(c); c = c.parent; } var viewingNode = null; while (path.length) { c = path.shift(); viewingNode = c; if (c.status !== 'open') { break; } } if (!viewingNode) return; this.elt.addStyle('--selected-y', viewingNode.offsetY + 'px'); }; CTRoot.prototype.updateSize = function () { if (this.looked) return; this.elt.addStyle('min-width', Math.ceil(this.minWidth) + 'px'); if (this.elt.isDescendantOf(document.body)) { window.dispatchEvent(new Event('resize')); } }; CTRoot.prototype.clear = function () { while (this.children.length > 0) { this.children[0].remove(); } }; CTRoot.prototype.select = function (value) { this.children.forEach(c => c.select(value)); }; Object.defineProperty(CTRoot.prototype, 'offsetHeight', { get: function () { return this.children.reduce((ac, cr) => ac + cr.offsetHeight, 0) } }); Object.defineProperty(CTRoot.prototype, 'offsetY', { get: function () { return 0; } }); Object.defineProperty(CTRoot.prototype, 'contentHeight', { get: function () { return 0; } }); Object.defineProperty(CTRoot.prototype, 'items', { set: function (items) { this.looked++; var prevState = Object.keys(this.nodeByValue).reduce((ac, key) => { ac[key] = this.nodeByValue[key].status; return ac; }, {}); this.clear(); this.children = items.map(function (item) { return new CTCollapsibleNode(this, item); }, this); this.elt.addChild(this.children.map(nd => nd.domElt)); this.select(this.value); Object.keys(this.nodeByValue).forEach(key => { var nd = this.nodeByValue[key]; if (prevState[key] === 'open' && nd.status === 'close') { nd.status = 'open'; } else if (prevState === 'close' && nd.status === 'open') { nd.status = 'close'; } }); this.looked--; this.updateSize(); this.updateSelectedLine(); }, get: function () { return this.children.map((chd) => { return chd.data; }); } }); Object.defineProperty(CTRoot.prototype, 'value', { set: function (value) { this._value = value; this.looked++; this.select(value); this.looked--; this.updateSelectedLine(); }, get: function () { return this._value; } }); Object.defineProperty(CTRoot.prototype, 'data', { set: function (data) { data = Object.assign({ items: [], value: 0 }, data); this.items = data.items; this.value = data.value; }, get: function () { return { items: this.items, value: this.value }; } }); Object.defineProperty(CTRoot.prototype, 'minWidth', { get: function () { return this.children.reduce((ac, cr) => Math.max(ac, cr.minWidth), 0) + 4; } }) /** * * @param {CTRoot} parent * @param data * @constructor */ function CTCollapsibleNode(parent, data) { this.parent = parent; this.nodeByValue = parent.nodeByValue; this.root = parent; this.level = parent.level + 1; this.children = []; this.domElt = (0,ACore._)({ class: 'as-ctn-collapse-node', style: { '--level': this.level + '' }, child: [ { class: 'as-ctn-collapse-node-content', child: [ 'toggler-ico', { class: 'as-ctn-icon-ctn' }, { tag: 'span', class: 'as-ctn-text', child: { text: '' } }, { tag: 'span', class: 'as-ctn-count', style: { display: 'none' }, child: { text: '' } }, { class: 'as-ctn-right', } ], }, { class: 'as-ctn-collapse-node-children-ctn' } ] }); this.$toggler = (0,ACore.$)('toggler-ico', this.domElt); this.$content = (0,ACore.$)('.as-ctn-collapse-node-content', this.domElt); this.$childrenCtn = (0,ACore.$)('.as-ctn-collapse-node-children-ctn', this.domElt); this.$iconCtn = (0,ACore.$)('.as-ctn-icon-ctn', this.domElt); this.$text = (0,ACore.$)('.as-ctn-text', this.domElt); this.$count = (0,ACore.$)('.as-ctn-count', this.domElt); this.$right = (0,ACore.$)('.as-ctn-right', this.domElt); this.data = data; this.$content.on('click', this.ev_click.bind(this)); } CTCollapsibleNode.prototype.remove = function () { this.children.slice().forEach(child => child.remove()); var idx = this.parent.children.indexOf(this); var value = this.value; if (idx >= 0) { delete this.nodeByValue[(0,utils.keyStringOf)(value)]; this.parent.children.splice(idx, 1); this.domElt.remove(); } }; CTCollapsibleNode.prototype.select = function (value) { var res = false; if (this.data.value === value) { this.domElt.addClass('as-selected'); res = true; } else { this.domElt.removeClass('as-selected'); } var childRes = this.children.reduce((ac, it) => it.select(value) || ac, false); if (childRes && this.status === 'close') { this.status = 'open'; } res = res || childRes; return res; }; CTCollapsibleNode.prototype.ev_click = function (event) { if (this.$right && (0,EventEmitter/* hitElement */.EY)(this.$right, event)) return; var rootElt; if (this.domElt.hasClass('as-closing')) return; var isClickItem = false; var noSelect = this.rawData && this.rawData.noSelect; var tgBound; if (this.status === 'none') { isClickItem = !noSelect; } else { tgBound = this.$toggler.getBoundingClientRect(); if (noSelect || event.clientX < tgBound.right) { if (this.status === 'open') { this.status = 'close'; } else if (this.status === 'close') { this.status = 'open'; } } else { isClickItem = true; } } if (isClickItem) { rootElt = this.root.elt; if (rootElt && rootElt.value !== this.value) { rootElt.value = this.value; rootElt.notifyChange(this.data); } rootElt.notifyClick(this.data); } }; Object.defineProperty(CTCollapsibleNode.prototype, 'status', { set: function (value) { var prev = this.status; if (this.children.length > 0) { if (value !== 'open') value = 'close'; } else { value = 'none'; } if (prev === value) return; this._status = value; switch (value) { case 'open': // this.domElt.addStyle('--children-height', this.childrenHeight + 'px'); this.domElt.addClass('as-open').removeClass('as-close'); break; case 'close': // this.domElt.addStyle('--children-height', this.childrenHeight + 'px'); this.domElt.addClass('as-close').removeClass('as-open'); break; default: this.domElt.removeClass('as-open').removeClass('as-close'); break; } this.root.updateSelectedLine(); }, get: function () { return this._status || 'none'; } }); Object.defineProperty(CTCollapsibleNode.prototype, 'icon', { get: function () { return this._icon || null; }, set: function (value) { this.$iconCtn.clearChild(); value = value || null; this._icon = value; if (value) { this.$iconCtn.addChild((0,ACore._)(value)); } } }); Object.defineProperty(CTCollapsibleNode.prototype, 'text', { get: function () { return this._text; }, set: function (value) { if (typeof value === 'number') value = value + ''; value = value || ''; this._text = value; this.$text.firstChild.data = value; } }); Object.defineProperty(CTCollapsibleNode.prototype, 'count', { get: function () { return this._count; }, set: function (value) { if (typeof value !== 'number') value = parseInt(value); value = Math.round(value); if (!(0,utils.isNaturalNumber)(value)) value = 0; this._count = value; if (value) { this.$count.removeStyle('display'); this.$count.firstChild.data = value; } else { this.$count.addStyle('display', 'none'); this.$count.firstChild.data = ''; } } }); Object.defineProperty(CTCollapsibleNode.prototype, 'countDesc', { get: function () { return this._countDesc; }, set: function (value) { value = value || null; this._countDesc = value; if (value) { this.$count.attr('title', value); } else { this.$count.removeAttribute('title'); } } }); Object.defineProperty(CTCollapsibleNode.prototype, 'value', { get: function () { return this._value; }, set: function (value) { var prevValue = this._value; var key = (0,utils.keyStringOf)(prevValue); if (this.nodeByValue[key] === this) { delete this.nodeByValue[key]; } key = (0,utils.keyStringOf)(value); if (this.nodeByValue[key]) { value = value + '_' + (0,stringGenerate.randomIdent)(5); } this._value = value; key = (0,utils.keyStringOf)(value); this.nodeByValue[key] = this; this.domElt.attr('data-value', value + ''); } }); Object.defineProperty(CTCollapsibleNode.prototype, 'color', { get: function () { return this._color; }, set: function (value) { if (typeof value === 'string') { try { value = Color_Color/* default.parse */.Z.parse(value) } catch (e) { value = null; } } else if (!value || !value.getContrastYIQ) { value = null; } var textColor; if (value) { textColor = value.getContrastYIQ(); this.$content.addStyle('color', textColor + ''); this.$content.addStyle('background-color', value + ''); } else { this.$content.removeStyle('color'); this.$content.removeStyle('background-color'); } this._color = value + ''; } }); Object.defineProperty(CTCollapsibleNode.prototype, 'items', { set: function (items) { while (this.children.length > 0) { this.children[0].remove(); } if (!Array.isArray(items)) items = []; this.children = items.map(it => new CTNNode(this, it)); this.$childrenCtn.addChild(this.children.map(c => c.domElt)); if (this.children.length) { if (this.rawData && this.rawData.initOpened) { this.status = 'open'; } else { this.status = 'close'; } } else { this.status = 'none'; } this.root.updateSelectedLine(); }, get: function () { return this.children.map(ch => ch.data); } }); Object.defineProperty(CTCollapsibleNode.prototype, 'actions', { set: function (actions) { if (!Array.isArray(actions)) actions = []; this._actions = actions; this.$right.clearChild(); actions.forEach(action => { var btn = (0,ACore._)({ tag: 'button', class: ['as-transparent-button'], child: action.icon, on: { click: (event) => { this.root.elt.emit('action', { action: action, data: this.rawData, type: 'action' }, this.root.elt); } } }); if (action.text) btn.attr('title', action.text); this.$right.addChild(btn); }); }, get: function () { return this._actions; } }) Object.defineProperty(CTCollapsibleNode.prototype, 'data', { set: function (data) { this.rawData = data || {}; data = Object.assign({ text: '', value: 0, icon: null, count: 0 }, data || {}); this.value = data.value; this.text = data.text; this.icon = data.icon; this.count = data.count; this.items = data.items; this.color = data.color; this.actions = data.actions; this.countDesc = data.countDesc || null; }, get: function () { var res = Object.assign({}, this.rawData, { text: this.text, value: this.value }); if (this.actions && this.actions.length) { res.actions = this.actions; } if (this.icon) res.icon = this.icon; if (this.count) res.count = this.count; if (this.color) res.color = this.color; return res; } }); Object.defineProperty(CTCollapsibleNode.prototype, 'contentHeight', { get: function () { return NODE_CONTENT_HEIGHT + 1;//+1 for border } }); Object.defineProperty(CTCollapsibleNode.prototype, 'childrenHeight', { get: function () { return this.children.reduce((ac, cr) => ac + cr.offsetHeight, 0); } }); Object.defineProperty(CTCollapsibleNode.prototype, 'offsetHeight', { get: function () { var res = this.contentHeight; if (this.status === 'open') res += this.childrenHeight; return res; } }); Object.defineProperty(CTCollapsibleNode.prototype, 'offsetY', { get: function () { var offsetY = this.parent.offsetY + this.parent.contentHeight; var sbs = this.parent.children; var sb; for (var i = 0; i < sbs.length; i++) { sb = sbs[i]; if (sb === this) break; offsetY += sb.offsetHeight; } return offsetY; } }); Object.defineProperty(CTCollapsibleNode.prototype, 'minWidth', { get: function () { var res = 50 + 8;//padding res += 14;//tg icon res += 7;//text margin res += Math.ceil((0,utils.measureText)(this.text, '14px arial').width); var countWidth = 0; if (this.count) { countWidth = (0,utils.measureText)(this.count + '', '14px arial').width + 10;//padding 5 countWidth = Math.ceil(countWidth); countWidth = Math.max(countWidth, 20);//min-width countWidth += 5; //margin } if (this.icon) res += 21; res += countWidth; res = this.children.reduce((ac, cr) => Math.max(ac, cr.minWidth), res); this.domElt.attr('data-min-width', res + ''); return res; } }); /** * * @param {CTNNode|CTCollapsibleNode} parent * @param data * @constructor */ function CTNNode(parent, data) { this.parent = parent; this.nodeByValue = parent.nodeByValue; this.root = parent.root; this.level = parent.level + 1; this.children = []; this.domElt = (0,ACore._)({ class: 'as-ctn-node', style: { '--level': this.level + '' }, child: [ { class: 'as-ctn-node-content', child: [ 'toggler-ico', { class: 'as-ctn-icon-ctn' }, { tag: 'span', class: 'as-ctn-text', child: { text: '' } }, { tag: 'span', class: 'as-ctn-count', style: { display: 'none' }, child: { text: '' } }, '.as-ctn-right' ] }, { class: 'as-ctn-node-children-ctn' } ] }); this.$content = (0,ACore.$)('.as-ctn-node-content', this.domElt); this.$toggler = (0,ACore.$)('toggler-ico', this.domElt); this.$content.on('click', this.ev_click.bind(this)); this.$childrenCtn = (0,ACore.$)('.as-ctn-node-children-ctn', this.domElt); this.$iconCtn = (0,ACore.$)('.as-ctn-icon-ctn', this.domElt); this.$text = (0,ACore.$)('.as-ctn-text', this.domElt); this.$count = (0,ACore.$)('.as-ctn-count', this.domElt); this.$right = (0,ACore.$)('.as-ctn-right', this.domElt); this.data = data; } //copy ['status', 'offsetHeight', 'childrenHeight', 'offsetY', 'select', 'text', 'count', 'countDesc','icon', 'value', 'data', 'items', 'actions', 'remove', 'ev_click', 'color'].forEach(method => { Object.defineProperty(CTNNode.prototype, method, Object.getOwnPropertyDescriptor(CTCollapsibleNode.prototype, method)); }); Object.defineProperty(CTNNode.prototype, 'minWidth', { get: function () { var res = this.level * 25 - 20 + 10;//padding res += 14;//tg icon res += 7;//text margin res += Math.ceil((0,utils.measureText)(this.text, '14px arial').width); this.domElt.attr('data-text-width', Math.ceil((0,utils.measureText)(this.text, '14px arial').width)) var countWidth = 0; if (this.count) { countWidth = (0,utils.measureText)(this.count + '', '14px arial').width + 10;//padding 5 countWidth = Math.ceil(countWidth); countWidth = Math.max(countWidth, 20);//min-width countWidth += 5; //margin-left } res += countWidth; this.domElt.attr('data-local-min-width', res + ''); res = this.children.reduce((ac, cr) => Math.max(ac, cr.minWidth), res); this.domElt.attr('data-min-width', res + ''); return res; } }); Object.defineProperty(CTNNode.prototype, 'contentHeight', { get: function () { return NODE_CONTENT_HEIGHT; } }); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/NotificationPanel.js var NotificationPanel = __webpack_require__(7570); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/pickinglist.css var pickinglist = __webpack_require__(3316); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/PickingList.js /** * @extends AElement * @constructor */ function PickingList() { this._items = []; this._values = []; /** * @type {PLItem[]} */ this.$items = []; /** * @type {any[]} * @name values * @memberOf PickingList# */ /** * @type {{text:string, value}[]} * @name items * @memberOf PickingList# */ } PickingList.tag = 'PickingList'.toLowerCase(); PickingList.render = function () { return (0,ACore._)({ class: 'as-picking-list', extendEvent: 'change', child: [] }) }; PickingList.property = {}; PickingList.property.items = { set: function (items) { items = items || []; this._items = items; this.$items.forEach(function (item) { item.remove(); }); var valuedDict = this._values.reduce((ac, cr) => { ac[(0,utils.keyStringOf)(cr)] = true; return ac; }, {}) this.$items = items.map(it => { var elt = (0,ACore._)({ tag: PLItem, props: { text: it.text + '', value: it.value, checked: valuedDict[(0,utils.keyStringOf)(it.value)] }, on: { click: () => { elt.checked = !elt.checked; this.emit('change', { target: this, type: 'change' }, this); } } }); return elt; }); this.addChild(this.$items); }, get: function () { return this._items; } }; PickingList.property.values = { set: function (values) { this._values = values || []; var valuedDict = this._values.reduce((ac, cr) => { ac[(0,utils.keyStringOf)(cr)] = true; return ac; }, {}); this.$items.forEach(function (item) { item.checked = !!valuedDict[(0,utils.keyStringOf)(item.value)]; }) }, get: function () { return this.$items.reduce(function (ac, itemElt) { if (itemElt.checked) { ac.push(itemElt.value); } return ac; }, []); } }; PickingList.property.selectedItems = { get: function () { var valuedDict = this._values.reduce((ac, cr) => { ac[(0,utils.keyStringOf)(cr)] = true; return ac; }, {}); return (this._items || []).filter(it => valuedDict[(0,utils.keyStringOf)(it.value)]); } }; /* harmony default export */ const js_PickingList = (PickingList); ACore/* default.install */.Z.install(PickingList); /** * @extends AElement * @constructor */ function PLItem() { this.$text = (0,ACore.$)('.as-picking-list-item-text', this); } PLItem.tag = 'PLItem'.toLowerCase(); PLItem.render = function () { return (0,ACore._)({ class: 'as-picking-list-item', child: [ { class: 'as-picking-list-item-text', child: { text: '' } }, { class: 'as-picking-list-item-checked', child: 'span.mdi.mdi-check' } ] }); }; PLItem.property = {}; PLItem.property.text = { set: function (value) { this.$text.firstChild.data = value + ''; }, get: function () { return this.$text.firstChild.data; } }; PLItem.property.value = { set: function (value) { this._value = value; this.attr('data-value', (0,utils.keyStringOf)(value)); }, get: function () { return this._value; } }; PLItem.property.checked = { set: function (value) { if (value) { this.addClass('as-checked'); } else { this.removeClass('as-checked'); } }, get: function () { return this.hasClass('as-checked'); } } // EXTERNAL MODULE: ./node_modules/absol-acomp/css/listcomparetool.css var listcomparetool = __webpack_require__(3); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/cmdtool.css var cmdtool = __webpack_require__(9144); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CMDTool.js /** * @typedef {Object} CMDTabListNodeDeclaration * @property {"tab_list"} type * @property {CMDTabNodeDeclaration[]} children */ /** * @typedef {Object} CMDTabNodeDeclaration * @property {"tab"} type * @property {string} name * @property {CMDGrupX2NodeDeclaration[]|CMDgroup_x1NodeDeclaration[]} children */ /** * @typedef {Object} CMDGrupX2NodeDeclaration * @property {"group_x2"} type * @property {CMDGrupX2NodeDeclaration[]|CMDgroup_x1NodeDeclaration[]} children */ /** * @typedef {Object} CMDgroup_x1NodeDeclaration * @property {"group_x1"} type * @property {CMDGrupX2NodeDeclaration[]|CMDgroup_x1NodeDeclaration[]} children */ /** * @typedef {Object} CMDCommandNodeDeclaration * @property {"trigger"|"font"|"color"} type */ /** * @extends Fragment * @constructor */ function CMDTool() { Fragment/* default.call */.Z.call(this); this.$nodes = {}; OOP/* default.drillProperty */.ZP.drillProperty(this, this, '$buttons', '$nodes');//adapt old version this.updateVisibility = this.updateVisibility.bind(this); } OOP/* default.mixClass */.ZP.mixClass(CMDTool, Fragment/* default */.Z); CMDTool.prototype.onStart = function () { this.getView(); }; /** * * if param is empty, update all buttons */ CMDTool.prototype.updateVisibility = function (...args) { var delegate = this.delegate; if (!delegate) return; var keys = []; if (args.length === 0) { keys = Object.keys(this.$nodes).filter(k=>k !== 'undefined');//remove apt nodes } else { keys = args.reduce((ac, cr) => { if (Array.isArray(cr)) ac = ac.concat(cr); else if (typeof cr === "string") ac.push(cr); return ac; }, []); } keys.forEach((name) => { if (!this.$nodes[name]) return; var descriptor = delegate.getCmdDescriptor(name); if (!descriptor) return; this.updateNode(this.$nodes[name], descriptor); }); }; CMDTool.prototype.onResume = function () { this.updateVisibility(); }; CMDTool.prototype.getView = function () { if (this.$view) return this.$view; this.$view = (0,ACore._)({ tag: 'bscroller', class: "as-form-cmd-tool", }); this.refresh(); return this.$view; }; CMDTool.prototype.createNode = function (nd, par) { var handler; if (Array.isArray(nd)) { nd = { type: 'group_x2', children: nd }; handler = this.cmdNodeHandlers[nd.type]; } else if (typeof nd === "string") { nd = Object.assign({ name: nd, type: 'trigger' }, this.delegate.getCmdDescriptor(nd)); if (typeof nd.desc === "function") { nd.desc = nd.desc.call(this.delegate); } handler = this.cmdNodeHandlers[nd.type]; } else handler = this.cmdNodeHandlers[nd.type]; var nodeElt = null; if (handler) { nodeElt = handler.create.call(this, nd, par); nodeElt.descriptor = nd; nodeElt.parentDescriptor = par; this.$nodes[nd.name] = nodeElt; } else { console.error("Not support node type: ", nd.type, nd); } return nodeElt; }; CMDTool.prototype.updateNode = function (nodeElt, nd) { if (!nodeElt) return; nd = Object.assign({}, nodeElt.descriptor,{disabled: false}, nd);//default disabled = false if (typeof nd.desc === "function") { nd.desc = nd.desc.call(this.delegate); } nodeElt.descriptor = nd; var par = nodeElt.parentDescriptor; var handler = this.cmdNodeHandlers[nd.type]; if (handler) { if (handler.update) handler.update.call(this, nd, par, nodeElt); } else { console.error("Not support node type: ", nd.type, nd); } }; CMDTool.prototype.refresh = function () { var delegate = this.delegate; if (!delegate) return; this.getView(); this.$view.clearChild(); this.$nodes = {}; var groupTree = delegate.getCmdGroupTree(); var visit = (node) => { return this.createNode(node, null); } this.$view.addChild(visit(groupTree)); }; CMDTool.prototype.cmdNodeHandlers = { tab_list: { /** * @this {CMDTool} * @param nd * @param par */ create: function (nd, par) { var items = nd.children.map((ch, idx) => { return { text: ch.name, value: idx + '' }; }); if (!this.$tabBar) { this.$tabBar = (0,ACore._)({ tag: js_StaticTabbar, style: { display: 'inline-block', fontSize: 12 / 0.7 + 'px', marginBottom: '5px' }, props: { value: '0' }, on: { change: () => { var idx = parseInt(this.$tabBar.value); this.$frames.forEach((frame, i) => { frame.addStyle('display', i === idx ? '' : 'none'); }); ResizeSystem/* default.updateUp */.Z.updateUp(this.$tabBar); } } }); this.$tabBarCtn = (0,ACore._)({ style: { textAlign: 'center', backgroundColor: 'rgba(169, 169, 169, 0.15)' }, child: [this.$tabBar] }); } this.$tabBar.items = items; if (!items[this.$tabBar.value]) this.$tabBar.value = '0'; if (!this.$tabList) { this.$tabList = (0,ACore._)({}); } this.$tabList.clearChild(); this.$tabList.addChild(this.$tabBarCtn); this.$frames = nd.children.map((ch, idx) => { return this.createNode(ch, nd).addStyle('display', idx + '' === this.$tabBar.value ? '' : 'none').addStyle('textAlign', 'left'); }); this.$tabList.addChild(this.$frames); return this.$tabList; }, /** * @this {CMDTool} * @param nd * @param par */ update: function (nd, par) { } }, tab: { /** * @this {CMDTool} * @param nd * @param par */ create: function (nd, par) { return (0,ACore._)({ class: 'as-cmd-tool-tab', attr: { 'data-name': nd.name }, child: (nd.children || []).map((ch) => { return this.createNode(ch, nd); }) }); }, /** * @this {CMDTool} * @param nd * @param par */ update: function (nd, par) { } }, group_x2: { /** * @this {CMDTool} * @param nd * @param par */ create: function (nd, par) { return (0,ACore._)({ class: 'as-cmd-tool-group-x2', child: (nd.children || []).map((ch) => { return this.createNode(ch, nd); }) }); }, /** * @this {CMDTool} * @param nd * @param par */ update: function (nd, par) { } }, group_x1: { /** * @this {CMDTool} * @param nd * @param par */ create: function (nd, par) { return (0,ACore._)({}); }, /** * @this {CMDTool} * @param nd * @param par */ update: function (nd, par) { } }, trigger: { /** * @this {CMDTool} * @param nd * @param par */ create: function (nd, par) { var extClasses = (!par || ['array', 'group_x2'].indexOf(par.type) >= 0) ? ['as-big'] : []; var title = nd.desc; var btn = (0,ACore._)({ tag: RibbonButton/* default */.Z, class: extClasses, attr: { title: title, 'data-cmd-name': nd.name }, props: { disabled: !!nd.disabled, descriptor: nd, text: nd.desc, icon: nd.icon, }, on: { click: () => { this.execCmd.apply(this, [nd.name].concat(btn.descriptor.args || [])); } } }); this.$nodes[nd.name] = btn; return btn; }, /** * @this {CMDTool} * @param nd * @param par * @param nodeElt */ update: function (nd, par, nodeElt) { nodeElt.disabled = !!nd.disabled; nodeElt.text = nd.desc; nodeElt.icon = nd.icon; } }, toggle_switch: { /** * @this {CMDTool} */ create: function (nd, par) { var name = nd.name; var self = this; var title = nd.desc; var btn = (0,ACore._)({ tag: RibbonButton/* default */.Z, class: ['as-type-toggle-switch', 'as-big'], attr: { title: title, 'data-group': nd.group, "data-name": name, 'data-cmd-name': name }, props: { text: nd.desc, icon: nd.icon, disabled: !!nd.disabled, descriptor: nd }, on: { click: function () { var newChecked = !this.hasClass('as-checked'); if (newChecked && nd.group) Object.keys(self.$nodes).forEach(function (otherName) { var otherBtn = self.$nodes[otherName]; if (otherName === name) return; if (otherBtn.hasClass('as-type-toggle-switch') && otherBtn.descriptor.group === nd.group && otherBtn.hasClass('as-checked')) { otherBtn.removeClass('as-checked'); self.execCmd.apply(self, [otherBtn.attr('data-name'), false].concat(otherBtn.descriptor.args || [])); } }); if (newChecked) { this.addClass('as-checked'); } else { this.removeClass('as-checked'); } self.execCmd.apply(self, [name, newChecked].concat(nd.args || [])); } } }); if (nd.checked) btn.addClass('as-checked'); return btn; }, /** * @this {CMDTool} * @param nd * @param par * @param nodeElt */ update: function (nd, par, nodeElt) { if (nd.checked) nodeElt.addClass('as-checked'); else { nodeElt.removeClass('as-checked'); } nodeElt.disabled = !!nd.disabled; nodeElt.text = nd.desc; nodeElt.icon = nd.icon; } }, ribbon: { create: function (nd, par) { var name = nd.name; var self = this; var btn = (0,ACore._)({ tag: RibbonButton/* default.tag */.Z.tag, class: 'as-big', attr: { 'data-cmd-name': name }, props: { icon: nd.icon || nd.items[0].icon, items: nd.items, descriptor: nd, disabled: !!nd.disabled, text: nd.desc }, on: { select: function (event) { //select a item in menu var item = event.item; this.icon = item.icon; self.execCmd.apply(self, [name].concat(item.args || []).concat(this.descriptor.args || [])); }, } }); return btn; }, update: function (nd, par, nodeElt) { nodeElt.items = nd.items; } }, color: { create: function (nd, par) { var name = nd.name; var btn = (0,ACore._)({ tag: RibbonButton/* default */.Z, class: ['as-big', 'as-type-color'], style: { '--value': nd.value || 'black' }, props: { icon: nd.icon, descriptor: nd, text: nd.desc, } }); btn.on('click', () => { if (btn.hasClass('as-checked')) return; btn.addClass('as-checked'); var onClickOut = (event) => { if ((0,EventEmitter/* hitElement */.EY)(picker, event)) return; finish(); } var finish = () => { btn.removeClass('as-checked'); picker.remove(); document.removeEventListener('click', onClickOut); }; setTimeout(() => { document.addEventListener('click', onClickOut); }, 100) var applyValue = value => { btn.addStyle('--value', value.toString('hex6')); //todo: call cmd this.execCmd(name, value); } var picker = (0,ACore._)({ tag: colorpicker_SolidColorPicker, style: { position: 'fixed', left: '0px', top: '0px', zIndex: (0,utils.findMaxZIndex)(btn) + 1 + '', visibility: 'hidden' }, props: { value: nd.value || 'black' } }).addTo(document.body); var pickerBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(picker.getBoundingClientRect()); var btnBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(btn.getBoundingClientRect()); var screenSize = (0,Dom/* getScreenSize */.tE)(); var screenBound = new Rectangle/* default */.Z(0, 0, screenSize.width, screenSize.height); var aBounds = [ new Rectangle/* default */.Z(btnBound.x, btnBound.y + btnBound.height, pickerBound.width, pickerBound.height), new Rectangle/* default */.Z(btnBound.x + btnBound.width - pickerBound.width, btnBound.y + btnBound.height, pickerBound.width, pickerBound.height), new Rectangle/* default */.Z(btnBound.x, btnBound.y - pickerBound.height, pickerBound.width, pickerBound.height), new Rectangle/* default */.Z(btnBound.x + btnBound.width - pickerBound.width, btnBound.y - pickerBound.height, pickerBound.width, pickerBound.height) ]; var bestSquare = 0; var bestBound; var square; for (var i = 0; i < aBounds.length; ++i) { square = aBounds[i].collapsedSquare(screenBound); if (square > bestSquare) { bestSquare = square; bestBound = aBounds[i]; } } picker.addStyle({ left: bestBound.x + 'px', top: bestBound.y + 'px', visibility: 'visible' }); picker.on('change', (event) => { applyValue(picker.value); }); picker.on('submit', (event) => { finish(); }); }); return btn; }, update: function (nd, par, nodeElt) { nodeElt.addStyle('--value', nd.value || 'black'); } }, font: { create: function (nd, par) { var btn = (0,ACore._)({ tag: RibbonButton/* default */.Z, props: { icon: nd.icon, text: nd.desc, } }); return btn; }, update: function (nd, par, nodeElt) { } } }; CMDTool.prototype.execCmd = function () { if (this._delegate) this._delegate.execCmd.apply(this._delegate, arguments); }; Object.defineProperty(CMDTool.prototype, 'delegate', { /** * * @param {CMDToolDelegate} value */ set: function (value) { if (this._delegate) { this._delegate.cmdToolPartner = null; } this._delegate = value; if (this._delegate) { this._delegate.cmdToolPartner = this; } }, get: function () { return this._delegate; } }); /* harmony default export */ const js_CMDTool = (CMDTool); function CMDToolDelegate() { /** * * @type {null|CMDTool} */ this.cmdToolPartner = null; /** * @type {null|CMDRunner} * @name cmdRunner * @memberOf CMDToolDelegate# */ } /** * * @returns {*[]} */ CMDToolDelegate.prototype.getCmdGroupTree = function () { return []; }; /** * * @param name * @returns {{type: string, icon: string, desc}} - return default descriptor */ CMDToolDelegate.prototype.getCmdDescriptor = function (name) { return { type: 'trigger', icon: 'span.mdi.mdi-command', desc: name }; }; CMDToolDelegate.prototype.execCmd = function (name, ...args) { if (this.cmdRunner) return this.cmdRunner.invoke(name, ...args); }; CMDToolDelegate.prototype.refresh = function () { if (this.cmdToolPartner) this.cmdToolPartner.refresh(); }; CMDToolDelegate.prototype.updateVisibility = function (...args) { if (this.cmdToolPartner) this.cmdToolPartner.updateVisibility(...args); }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/ListCompareTool.js var ListCompareTool_g = Svg/* default.ShareInstance._ */.ZP.ShareInstance._; /** * @typedef ListCompareToolItem * @property {string} text * @property {string} value * @property {string} [icon] - mdi icon or map from tag in form */ /** * @extends {AElement} * @constructor */ function ListCompareTool() { this.$header = (0,ACore.$)('.as-list-compare-tool-header', this); this.$before = (0,ACore.$)('.as-list-compare-tool-before', this); this.$after = (0,ACore.$)('.as-list-compare-tool-after', this); this.beforeCtrl = new LCTListController(this, this.$before); this.afterCtrl = new LCTListController(this, this.$after); this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.$body = (0,ACore.$)('.as-list-compare-tool-body', this); this.$attachhook.on('attached', () => { ResizeSystem/* default.add */.Z.add(this.$attachhook); this.$attachhook.requestUpdateSize(); }); this.$attachhook.requestUpdateSize = this.requestUpdateSize.bind(this); this.$operators = (0,ACore.$)('.as-list-compare-tool-operators', this); this.mapOperatorCtr = new LCTMapOperatorController(this); this.headerCtr = new LCTHeaderController(this); this.newLineTool = new LCTNewLineTool(this); this.removeLineTool = new LCTRemoveLineTool(this); this.cmdTool = new js_CMDTool(); this.cmdDelegate = new LCTCommandDelegate(this); this.cmdTool.delegate = this.cmdDelegate; this.$header.addChildAfter(this.cmdTool.getView(), null); this.layoutCtr = new LCTLayoutController(this); (0,OOP/* drillProperty */.pj)(this, this.mapOperatorCtr, 'mapOperators'); (0,OOP/* drillProperty */.pj)(this, this.beforeCtrl, 'beforeItems', 'items'); (0,OOP/* drillProperty */.pj)(this, this.afterCtrl, 'afterItems', 'items'); /** * @type {ListCompareToolItem[]} * @memberOf ListCompareTool# * @name beforeItems */ /** * @type {ListCompareToolItem[]} * @memberOf ListCompareTool# * @name afterItems */ /** * @type {mapOperators[]} * @memberOf ListCompareTool# * @name afterItems */ } ListCompareTool.tag = 'ListCompareTool'; ListCompareTool.render = function () { return (0,ACore._)({ extendEvent: 'change', attr: { tabindex: 1 }, class: ['as-list-compare-tool', 'as-width-auto', 'as-height-auto', 'as-max-height-auto'], child: [ { class: 'as-list-compare-tool-header', child: [ { class: 'as-list-compare-tool-check-ctn', child: [ { tag: js_CheckBox, class: 'as-list-compare-tool-changed-only-checkbox', props: { text: 'Chỉ hiện phần thay đổi', checked: false } } ] }, ] }, { class: 'as-list-compare-tool-body', child: [ '.as-list-compare-tool-before-title', '.as-list-compare-tool-after-title', { class: ['as-list-compare-tool-before', 'as-bscroller'], }, { class: 'as-list-compare-tool-spacing', }, { class: ['as-list-compare-tool-after', 'as-bscroller'], }, { class: 'as-list-compare-tool-operators', child: ListCompareTool_g({ tag: 'svg', child: [ { tag: 'defs', child: [ { tag: 'marker', class: 'as-lct-arrow', attr: { id: 'arrow', markerWidth: '3', markerHeight: '8', orient: 'auto', refX: '4.1', refY: '4' }, child: { tag: 'path', attr: { d: 'M0,0 V8 L4,4 Z' }, style: { fill: 'var(--line-color)' } } }, { tag: 'marker', class: 'as-lct-same-value-arrow', attr: { id: 'same-value-arrow', markerWidth: '3', markerHeight: '8', orient: 'auto', refX: '4.1', refY: '4' }, child: { tag: 'path', attr: { d: 'M0,0 V8 L4,4 Z' }, style: { fill: 'var(--line-color)' } } }, { tag: 'marker', class: 'as-lct-new-line-arrow', attr: { id: 'new-line-arrow', markerWidth: '3', markerHeight: '8', orient: 'auto', refX: '4.1', refY: '4' }, child: { tag: 'path', attr: { d: 'M0,0 V8 L4,4 Z' }, style: { fill: 'var(--line-color)' } } } ] } ] }) }, ] } ] }); }; ListCompareTool.property = {}; ListCompareTool.property.unchangeText = { set: function (text) { }, get: function () { } }; ListCompareTool.property.changeText = { set: function (text) { }, get: function () { } }; ListCompareTool.prototype.commands = { newLineTool: { /** * @this {ListCompareTool} */ exec: function () { setTimeout(() => { this.removeLineTool.disable(true); this.newLineTool.disable(false); this.cmdDelegate.updateVisibility(); }); }, descriptor: { type: 'toggle_switch', icon: 'span.mdi.mdi-pencil-plus', desc: () => 'Vẽ đường nối' } }, removeLineTool: { exec: function () { setTimeout(() => { this.newLineTool.disable(true); this.removeLineTool.disable(false); this.cmdDelegate.updateVisibility(); }); }, descriptor: { type: 'toggle_switch', icon: 'span.mdi.mdi-eraser', desc: () => 'Xóa đường nối' } } }; ListCompareTool.prototype.requestUpdateSize = function () { this.layoutCtr.onSizeChange(); this.mapOperatorCtr.updateStyleValues(); this.mapOperatorCtr.updatePosition(); }; ListCompareTool.prototype.notifyChange = function () { this.emit('change', {type: 'change', target: this}, this); }; /* harmony default export */ const js_ListCompareTool = (ListCompareTool); ACore/* default.install */.Z.install(ListCompareTool); /** * @extends CMDToolDelegate * @param {ListCompareTool} elt * @constructor */ function LCTCommandDelegate(elt) { CMDToolDelegate.call(this); this.elt = elt; } (0,OOP/* mixClass */.Jx)(LCTCommandDelegate, CMDToolDelegate); LCTCommandDelegate.prototype.getCmdGroupTree = function () { return ['newLineTool', 'removeLineTool']; }; LCTCommandDelegate.prototype.getCmdDescriptor = function (name) { if (name === 'undefined') console.trace(1) var res = Object.assign(this.elt.commands[name].descriptor); if (name === 'newLineTool') { res.checked = this.elt.newLineTool.state !== this.elt.newLineTool.ST_DISABLED; } else if (name === 'removeLineTool') { res.checked = this.elt.removeLineTool.state !== this.elt.newLineTool.ST_DISABLED; } return res; } LCTCommandDelegate.prototype.execCmd = function (name, ...args) { var cmd = this.elt.commands[name]; if (!cmd) return; cmd.exec.call(this.elt, args); } function LCTMapOperatorController(elt) { this.elt = elt; this.$ctn = (0,ACore.$)('.as-list-compare-tool-operators', this.elt); this.$canvas = (0,ACore.$)('svg', this.$ctn); this._mapOperators = []; /** * * @type {LCTMapLine[]} */ this.mapLines = []; } LCTMapOperatorController.prototype.updateStyleValues = function () { var bound = this.$ctn.getBoundingClientRect(); this.$canvas.attr('viewBox', '-0.5 -0.5 ' + bound.width + ' ' + bound.height) .attr('width', bound.width) .attr('height', bound.height); }; LCTMapOperatorController.prototype.updatePosition = function () { this.mapLines.forEach(line => { line.updatePosition(); }) }; LCTMapOperatorController.prototype.updateModifiedItems = function () { var mappedValues = this.mapLines.reduce((ac, cr) => { if (cr.beforeValue === cr.afterValue) return ac; ac[(0,utils.keyStringOf)(cr.beforeValue)] = true; ac[(0,utils.keyStringOf)(cr.afterValue)] = true; return ac; }, {}); this.elt.beforeCtrl.$items.forEach(it => { if (mappedValues[(0,utils.keyStringOf)(it.value)]) { it.addClass('as-mapped'); } else { it.removeClass('as-mapped'); } if (this.elt.afterCtrl.hasValue(it.value)) { it.removeClass('as-removed'); } else { it.addClass('as-removed'); } }); this.elt.afterCtrl.$items.forEach(it => { if (mappedValues[(0,utils.keyStringOf)(it.value)]) { it.addClass('as-mapped'); } else { it.removeClass('as-mapped'); } if (this.elt.beforeCtrl.hasValue(it.value)) { it.removeClass('as-added'); } else { it.addClass('as-added'); } }); }; LCTMapOperatorController.prototype.addNewMapOp = function (beforeValue, afterValue) { if (!this.elt.beforeCtrl.hasValue(beforeValue) || !this.elt.afterCtrl.hasValue(afterValue)) return; this.mapLines = this.mapLines.filter(it => { if (it.beforeValue === beforeValue || it.afterValue === afterValue) { it.remove(); return false; } return true; }); var line = new LCTMapLine(this.elt, beforeValue, afterValue); this.mapLines.push(line); this._mapOperators = this.mapLines.filter(it => it.beforeValue !== it.afterValue).map(it => it.exportData());//save this.updateModifiedItems(); this.updateStyleValues(); this.updatePosition(); }; LCTMapOperatorController.prototype.removeLine = function (line) { if (line.beforeValue === line.afterValue) return;//view only line var idx = this.mapLines.indexOf(line); if (idx < 0) return; this.mapLines.splice(idx, 1); line.remove(); var changedDict = this.mapLines.reduce((ac, it) => { ac[(0,utils.keyStringOf)(it.beforeValue)] = true; ac[(0,utils.keyStringOf)(it.afterValue)] = true; return ac; }, {}); var u = line.beforeValue; var v = line.afterValue; if (this.elt.beforeCtrl.hasValue(u) && this.elt.afterCtrl.hasValue(u) && !changedDict[(0,utils.keyStringOf)(u)]) { line = new LCTMapLine(this.elt, u, u); this.mapLines.push(line); } if (this.elt.beforeCtrl.hasValue(v) && this.elt.afterCtrl.hasValue(v) && !changedDict[(0,utils.keyStringOf)(v)]) { line = new LCTMapLine(this.elt, v, v); this.mapLines.push(line); } this._mapOperators = this.mapLines.filter(it => it.beforeValue !== it.afterValue).map(it => it.exportData());//save this.updateModifiedItems(); this.updateStyleValues(); this.updatePosition(); }; LCTMapOperatorController.prototype.redrawMapLines = function () { this.mapLines.forEach(it => { it.remove(); }); this.mapLines = []; var beforeItems = this.elt.beforeCtrl.items; var changedDict = this._mapOperators.reduce((ac, it) => { ac[(0,utils.keyStringOf)(it.u)] = true; ac[(0,utils.keyStringOf)(it.v)] = true; return ac; }, {}); beforeItems.forEach(it => { if (changedDict[(0,utils.keyStringOf)(it.value)]) return; if (this.elt.afterCtrl.hasValue(it.value)) { var line = new LCTMapLine(this.elt, it.value, it.value); this.mapLines.push(line); } }); var addedOpts = {}; this._mapOperators.forEach(it => { var key = (0,utils.keyStringOf)(it.u) + '|' + (0,utils.keyStringOf)(it.v); if (addedOpts[key]) return; addedOpts[key] = true; var line = new LCTMapLine(this.elt, it.u, it.v); this.mapLines.push(line); }); }; Object.defineProperty(LCTMapOperatorController.prototype, 'mapOperators', { set: function (operators) { if (!Array.isArray(operators)) operators = []; this._mapOperators = operators; this.redrawMapLines(); this.updateModifiedItems(); }, get: function () { return this.mapLines.filter(it => it.beforeValue !== it.afterValue).map(it => it.exportData()); } }); /** * * @param {ListCompareTool} elt * @constructor */ function LCTHeaderController(elt) { this.elt = elt; this.ev_viewChange = this.ev_viewChange.bind(this); this.$changedOnly = (0,ACore.$)('.as-list-compare-tool-changed-only-checkbox', elt); this.$changedOnly.on('change', this.ev_viewChange); } LCTHeaderController.prototype.ev_viewChange = function () { if (this.$changedOnly.checked) this.elt.addClass('as-view-changed-only'); else { this.elt.removeClass('as-view-changed-only'); } this.elt.requestUpdateSize(); } /** * * @param {ListCompareTool} elt * @param {AElement} ctnElt * @constructor */ function LCTListController(elt, ctnElt) { this.elt = elt; /** * * @type {AElement} */ this.$ctn = ctnElt; this.$ctn.on('scroll', this.ev_scroll.bind(this)); /** * * @type {LCTItem[]} */ this.$items = []; this._items = []; this.$itemByValue = {}; } LCTListController.prototype.updateStyleValues = function () { var minWidth = this.elt.beforeCtrl.$items.reduce((ac, it) => { return Math.max(ac, it.minWidth); }, 0); minWidth = this.elt.afterCtrl.$items.reduce((ac, it) => { return Math.max(ac, it.minWidth); }, minWidth); this.elt.addStyle('--item-min-width', minWidth + 'px'); }; LCTListController.prototype.itemEltOfValue = function (value) { return this.$itemByValue[(0,utils.keyStringOf)(value)] || null; }; LCTListController.prototype.hasValue = function (value) { return !!this.$itemByValue[(0,utils.keyStringOf)(value)]; }; LCTListController.prototype.ev_scroll = function () { this.elt.mapOperatorCtr.updatePosition(); }; Object.defineProperty(LCTListController.prototype, 'items', { set: function (items) { items = items || []; this._items = items; this.$ctn.clearChild(); this.$items = items.map(it => (0,ACore._)({ tag: LCTItem, props: { text: it.text, value: it.value, icon: it.icon } })); this.$ctn.addChild(this.$items); this.$itemByValue = this.$items.reduce((ac, it) => { ac[(0,utils.keyStringOf)(it.value)] = it; return ac; }, {}); this.updateStyleValues(); this.elt.mapOperatorCtr.updateStyleValues(); this.elt.mapOperatorCtr.updateModifiedItems(); this.elt.mapOperatorCtr.redrawMapLines(); }, get: function () { return this._items; } }); /** * * @param {ListCompareTool} elt * @constructor */ function LCTLayoutController(elt) { this.elt = elt; this._height = 'auto'; this._maxHeight = 'auto'; } LCTLayoutController.prototype.setHeight = function (height) { this._height = this.normalizeSizeValue(height); this.updateHeightStyle(); }; LCTLayoutController.prototype.setMaxHeight = function (maxHeight) { this._maxHeight = this.normalizeSizeValue(maxHeight); this.updateHeightStyle(); }; LCTLayoutController.prototype.normalizeSizeValue = function (value) { var parsed = (0,attribute.parseMeasureValue)(value); if (parsed) { value = parsed.value + parsed.unit; } else if (typeof value === "string") { if (value.indexOf('calc') < 0 && value.indexOf('var') < 0) { value = 'auto' } } else value = 'auto'; return value; }; LCTLayoutController.prototype.updateHeightStyle = function () { var height = this._height; var maxHeight = this._maxHeight; if (height === 'auto') { this.elt.style.removeProperty('--height'); this.elt.addClass('as-height-auto'); } else { this.elt.style.setProperty('--height', height); this.elt.removeClass('as-height-auto'); } if (maxHeight === 'auto') { this.elt.style.removeProperty('--max-height'); this.elt.addClass('as-max-height-auto'); } else { this.elt.style.setProperty('--max-height', maxHeight); this.elt.removeClass('as-max-height-auto'); } }; LCTLayoutController.prototype.onSizeChange = function () { var style = getComputedStyle(this.elt); var maxHeight = style.getPropertyValue('max-height'); if (maxHeight && maxHeight.indexOf('px') >= 0) { maxHeight = parseFloat(maxHeight.replace('px', '')); this.elt.addStyle('--list-max-height', maxHeight - 66 - 22 - 20 + 'px'); } else { this.elt.removeStyle('--list-max-height'); } }; /** * @param {ListCompareTool} elt * @param beforeValue * @param afterValue * @constructor */ function LCTMapLine(elt, beforeValue, afterValue) { this.beforeValue = beforeValue; this.afterValue = afterValue; this.elt = elt; this.$line = ListCompareTool_g({ tag: 'path', class: 'as-lct-line', attr: { 'marker-end': "url(#arrow)" }, }); this.$hitBox = ListCompareTool_g({ tag: 'path', class: 'as-lct-line-hit-box', }); this.$group = ListCompareTool_g({ tag: 'g', class: 'as-lct-line-group', child: [ this.$line, this.$hitBox ] }); this.$group.lctMapLine = this; this.elt.mapOperatorCtr.$canvas.addChild(this.$group); if (this.beforeValue === this.afterValue) { this.$group.addClass('as-same-value'); this.$line.attr('marker-end', "url(#same-value-arrow)"); } } LCTMapLine.prototype.exportData = function () { return { u: this.beforeValue, v: this.afterValue, } }; LCTMapLine.prototype.updatePosition = function () { var beforeItemElt = this.elt.beforeCtrl.itemEltOfValue(this.beforeValue); var afterItemElt = this.elt.afterCtrl.itemEltOfValue(this.afterValue); if (!beforeItemElt || !afterItemElt) { this.$line.attr('d', null); return; } var beforeBound = beforeItemElt.getBoundingClientRect(); if (!beforeBound.width) { this.$line.attr('d', null); this.$hitBox.attr('d', null); return; } var afterBound = afterItemElt.getBoundingClientRect(); if (!afterBound.width) { this.$hitBox.attr('d', null); this.$line.attr('d', null); return; } var canvasBound = this.elt.mapOperatorCtr.$canvas.getBoundingClientRect(); // if (canvasBound.top > beforeBound.bottom || canvasBound.bottom < beforeBound.top) { // if (canvasBound.top > afterBound.bottom || canvasBound.bottom < afterBound.top) { // this.$hitBox.attr('d', null); // this.$line.attr('d', null); // return; // } // } var x, y; var canvasOffsetPoint = new Vec2/* default */.Z(canvasBound.left, canvasBound.top); x = beforeBound.right - 5; y = beforeBound.top + beforeBound.height / 2 - 1;//1 is border var startPoint = new Vec2/* default */.Z(x, y).sub(canvasOffsetPoint); x = afterBound.left + 5; y = afterBound.top + afterBound.height / 2 - 1; var endPoint = new Vec2/* default */.Z(x, y).sub(canvasOffsetPoint); var d = 'M' + startPoint.x + ' ' + startPoint.y + ' L' + endPoint.x + ' ' + endPoint.y; this.$line.attr('d', d); this.$hitBox.attr('d', d); }; LCTMapLine.prototype.remove = function () { this.$group.remove(); }; /** * * @param {ListCompareTool} elt * @constructor */ function LCTNewLineTool(elt) { this.elt = elt; this.state = this.ST_NONE; for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } this.elt.on('click', this.ev_click); this.$beforeItem = null; this.$afterItem = null; this.$line = ListCompareTool_g({ tag: 'path', class: ['as-lct-line', 'as-new-line'], attr: { 'marker-end': "url(#new-line-arrow)" }, }); this.elt.mapOperatorCtr.$canvas.addChild(this.$line); } LCTNewLineTool.prototype.ST_DISABLED = 'DISABLED'; LCTNewLineTool.prototype.ST_NONE = 'NONE'; LCTNewLineTool.prototype.ST_STARTED = 'STATED'; LCTNewLineTool.prototype.disable = function (flag) { if (this.state === this.ST_NONE && flag) { this.state = this.ST_DISABLED; } else if (this.state === this.ST_DISABLED && !flag) { this.state = this.ST_NONE; } } LCTNewLineTool.prototype.findItemElt = function (elt) { while (elt) { if (elt.hasClass && elt.hasClass('as-lct-item')) { return elt; } elt = elt.parentElement; } return null; } LCTNewLineTool.prototype.isBeforeItemElt = function (elt) { return elt && elt.isDescendantOf(this.elt.beforeCtrl.$ctn); }; LCTNewLineTool.prototype.ev_click = function (event) { var itemElt; if (this.state === this.ST_NONE) { itemElt = this.findItemElt(event.target); if (itemElt && (itemElt.hasClass('as-removed') || itemElt.hasClass('as-added'))) { if (this.isBeforeItemElt(itemElt)) { this.$beforeItem = itemElt; } else { this.$afterItem = itemElt; } itemElt.addClass('as-active'); this.state = this.ST_STARTED; setTimeout(() => { document.addEventListener('click', this.ev_clickOut); }, 1); document.addEventListener('mousemove', this.ev_mouseMove); } } else if (this.state === this.ST_STARTED) { itemElt = this.findItemElt(event.target); if (itemElt && (itemElt.hasClass('as-removed') || itemElt.hasClass('as-added'))) { if (this.isBeforeItemElt(itemElt)) { if (this.$beforeItem) { this.$beforeItem.removeClass('as-active'); } if (this.$beforeItem === itemElt) { this.$beforeItem = null; } else { this.$beforeItem = itemElt; itemElt.addClass('as-active'); } } else { if (this.$afterItem) { this.$afterItem.removeClass('as-active'); } if (this.$afterItem === itemElt) { this.$afterItem = null; } else { this.$afterItem = itemElt; itemElt.addClass('as-active'); } } if (this.$beforeItem && this.$afterItem) { this.elt.mapOperatorCtr.addNewMapOp(this.$beforeItem.value, this.$afterItem.value); this.$beforeItem.removeClass('as-active'); this.$afterItem.removeClass('as-active'); this.state = this.ST_NONE; this.elt.notifyChange(); } else if (!this.$beforeItem && !this.$afterItem) { this.state = this.ST_NONE; } else { this.$line.attr('d', null); } } else { } if (this.state === this.ST_NONE) {//finish this.$beforeItem = null; this.$afterItem = null; this.$line.attr('d', null); document.removeEventListener('click', this.ev_clickOut); document.removeEventListener('mousemove', this.ev_mouseMove); } } }; LCTNewLineTool.prototype.ev_mouseMove = function (event) { if (this.state !== this.ST_STARTED) return; var currentPoint = new Vec2/* default */.Z(event.clientX, event.clientY); var startPoint; var endPoint; var canvasBound = this.elt.mapOperatorCtr.$canvas.getBoundingClientRect(); var canvasOffsetPoint = new Vec2/* default */.Z(canvasBound.left, canvasBound.top); var itemBound; if (this.$beforeItem) { itemBound = this.$beforeItem.getBoundingClientRect(); startPoint = new Vec2/* default */.Z(itemBound.right - 5, itemBound.top + itemBound.height / 2 - 1).sub(canvasOffsetPoint); endPoint = currentPoint.sub(canvasOffsetPoint); } else if (this.$afterItem) { itemBound = this.$afterItem.getBoundingClientRect(); startPoint = currentPoint.sub(canvasOffsetPoint); endPoint = new Vec2/* default */.Z(itemBound.left + 5, itemBound.top + itemBound.height / 2 - 1).sub(canvasOffsetPoint); } this.$line.attr('d', 'M' + startPoint.x + ' ' + startPoint.y + ' L' + endPoint.x + ' ' + endPoint.y); }; LCTNewLineTool.prototype.ev_clickOut = function (event) { var itemElt = this.findItemElt(event.target); if (itemElt && (itemElt.hasClass('as-removed') || itemElt.hasClass('as-added'))) return; if (this.$beforeItem) { this.$beforeItem.removeClass('as-active'); } if (this.$afterItem) { this.$afterItem.removeClass('as-active'); } this.$beforeItem = null; this.$afterItem = null; this.$line.attr('d', null); this.state = this.ST_NONE; document.removeEventListener('click', this.ev_clickOut); document.removeEventListener('mousemove', this.ev_mouseMove); } LCTNewLineTool.prototype.ev_keydown = function (event) { }; function LCTRemoveLineTool(elt) { this.elt = elt; this.state = this.ST_DISABLED; this.$cursor = null; this.ev_mouseMove = this.ev_mouseMove.bind(this); this.ev_click = this.ev_click.bind(this); this.elt.mapOperatorCtr.$canvas.on('click', this.ev_click); } LCTRemoveLineTool.prototype.ST_DISABLED = 'DISABLED'; LCTRemoveLineTool.prototype.ST_NONE = 'NONE'; LCTRemoveLineTool.prototype.disable = function (flag) { if (this.state === this.ST_NONE && flag) { this.state = this.ST_DISABLED; this.elt.removeClass('as-remove-line-tool-active'); this.$cursor.remove(); } else if (this.state === this.ST_DISABLED && !flag) { this.state = this.ST_NONE; this.elt.addClass('as-remove-line-tool-active'); this.$cursor = (0,ACore._)({ class: 'as-lct-cursor', child: 'span.mdi.mdi-eraser' }).addTo(this.elt.$body); document.addEventListener('mousemove', this.ev_mouseMove); } } LCTRemoveLineTool.prototype.findMapLine = function (elt) { while (elt) { if (elt.lctMapLine) { return elt.lctMapLine; } elt = elt.parentElement; } return null; } LCTRemoveLineTool.prototype.ev_click = function (event) { if (this.state === this.ST_DISABLED) return; var line = this.findMapLine(event.target); if (line) { this.elt.mapOperatorCtr.removeLine(line); this.elt.notifyChange(); } }; LCTRemoveLineTool.prototype.ev_mouseMove = function (event) { var point = new Vec2/* default */.Z(event.clientX, event.clientY); var bodyBound = this.elt.$body.getBoundingClientRect(); if (bodyBound.width === 0) { document.removeEventListener('mousemove', this.ev_mouseMove);//element is removed } point = point.sub(new Vec2/* default */.Z(bodyBound.left, bodyBound.top)); this.$cursor.addStyle({ left: point.x - 9 + 'px', top: point.y - 24 + 'px' }); }; LCTRemoveLineTool.prototype.ev_mouseDown = function (event) { }; LCTRemoveLineTool.prototype.ev_mouseUp = function (event) { }; /** * @extends {AElement} * @constructor */ function LCTItem() { this.$text = (0,ACore.$)('.as-lct-item-text', this); this.$iconCtn = (0,ACore.$)('.as-lct-item-icon-ctn', this); this._icon = null; /** * @name icon * @memberOf LCTItem# */ /** * @type string * @name text * @memberOf LCTItem# */ /** * @type any * @name value * @memberOf LCTItem# */ /** * @type number * @name minWidth * @memberOf LCTItem# */ } LCTItem.tag = 'LCTItem'.toLowerCase(); LCTItem.render = function () { return (0,ACore._)({ class: 'as-lct-item', child: [ { class: 'as-lct-item-icon-ctn', }, { class: 'as-lct-item-text' } ] }); }; LCTItem.property = {}; LCTItem.property.text = { set: function (value) { value = value || ''; value = value + ''; this.$text.attr('data-text', value); }, get: function () { return this.$text.attr('data-text'); } }; LCTItem.property.value = { set: function (value) { this._value = value; this.attr('data-value', value + ''); }, get: function () { return this._value; } }; LCTItem.property.icon = { set: function (value) { value = value || ''; this._icon = value; this.$iconCtn.clearChild(); this.$icon = null; if (value) { if ((0,Dom/* isDomNode */.mV)(value)) { if (value.parentElement) value = value.cloneNode(true); } else value = (0,ACore._)(value); this.$icon = (0,ACore.$)(value).addClass('as-lct-icon'); this.$iconCtn.addChild(this.$icon); } }, get: function () { return this._icon; } }; LCTItem.property.minWidth = { get: function () { var res = 25 + 10; res += TextMeasure/* default.measureWidth */.Z.measureWidth(this.text, TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14) + 20; return Math.ceil(res) } }; ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/dom/install.js var publicCreators = [ Icons/* MdiStoreMarkerOutline */.CY, js_AutoCompleteInput, BoardTable/* default */.ZP, Board/* default */.Z, js_BScroller, js_ButtonArray, js_ButtonRange, js_CalendarInput, OldCalendarInput, CheckBoxInput/* default */.Z, js_CheckBox, CheckboxButton/* default */.Z, js_CheckListItem, CheckListBox, js_CheckTreeLeafOnlyBox, ChromeCalendar/* default */.Z, js_ChromeTimePicker, js_ChromeTime24Picker, js_CircleSectionLabel, js_CountdownClock, js_CountdownText, js_CollapsibleTreeNavigator, js_DateInYearPicker, js_DateInYearInput, js_DateTimeInput, DropZone/* default */.Z, js_ExpressionInput, js_IdentTextInput, js_EmojiPickerTooltip, js_FileInputBox, js_FileListItem, js_FileListInput, Finder/* default */.ZP, FontFamilySelectList, js_FontInput, Scroller/* Scrollbar */.LW, Scroller/* VScrollbar */.eP, Scroller/* HScrollbar */.MP, Scroller/* VScroller */.k$, Scroller/* HScroller */.bJ, ContextMenu/* default */.Z, Menu/* HMenu */.ch, Menu/* VMenuItem */.zV, Menu/* VMenu */.T$, Menu/* Dropright */.KZ, Menu/* VMenuLine */.ee, Menu/* Dropdown */.Lt, Menu/* HMenuItem */.E, Menu/* VMenu */.T$, Menu/* VRootMenu */.p, Menu/* MenuButton */.j2, js_DateInput2, js_DateNLevelInput, Hanger/* default */.Z, js_DraggableHStack, js_DraggableVStack, js_DropPanel, js_DropPanelStack, js_EditableText, EmojiPicker/* default */.Z, js_EmojiCounter, js_EmojiCounterList, Sprite/* default */.ZP, ExpTree/* ExpNode */.$P, ExpTree/* default */.ZP, ExpTree/* ExpGroup */.uz, js_DVExpTree, FlexiconButton/* default */.Z, js_FlexiconInput, Follower/* default */.Z, js_FollowerToggler, js_Frame, js_FrameView, js_TabFrame, TabView/* default */.Z, js_SinglePage, js_HexaSectionLabel, js_VRuler, js_HRuler, js_IconSprite, js_LinearColorBar, js_LinearColorTinyBar, js_MediaInput, MessageInput/* default */.ZP, MessageInput/* MessageQuote */.RD, Modal/* default */.Z, js_LoadingCubeModal, numberinput_NumberInput, js_NumberSpanInput, OnsScreenWindow, OnScreenWidget/* default */.Z, js_PageIndicator, js_PageSelector, js_PreInput, ProgressBar/* default */.Z, js_ProgressCircle, js_QuickListButton, QuickMenu/* default */.Z, js_QuickPath, js_PathMenu, js_PathView, Radio/* default */.Z, RadioButton/* default */.Z, js_RadioInput, RibbonSplitButton/* default */.Z, RibbonButton/* default */.Z, js_SelectRibbonMenu, js_RotatedText, SelectList/* default */.ZP, js_RemoteSvg, ResizeBox/* default */.Z, Searcher/* default */.Z, js_SelectListBox, js_SelectTreeBox, SelectMenu2, js_SelectBox, js_MultiSelectMenu, js_MultiCheckTreeLeafBox, BrowserDetector/* default.isMobile */.Z.isMobile ? multichecktreeleafmenu_MultiCheckTreeLeafMenu : js_MultiCheckTreeLeafMenu, js_SelectBoxItem, js_DualSelectBox, BrowserDetector/* default.isMobile */.Z.isMobile ? dualselectmenu_DualSelectMenu : js_DualSelectMenu, js_SelectTable, js_SelectTable2, js_SelectTreeMenu, js_SelectTreeLeafBox, /*BrowserDetector.isMobile ? SelectTreeLeafMenuV2 :*/ js_SelectTreeLeafMenu, js_SpanInput, Snackbar, js_StaticTabbar, js_Switch, tablescroller_TableScroller, js_TableVScroller, treetable_TreeTable, TextArea2/* default */.Z, js_TextClipboard, js_TimeInput, js_Time24Input, js_TimeRange24Input, js_TimeSelectInput, js_TimePicker, js_DateTimeInput, Tooltip/* default */.Z, js_CopyableIconTooltip, Toast/* default */.Z, js_TreeList, js_TreeListItem, js_TokenField, WidthHeightSizer, js_TrackBar, js_TrackBarInput, Icons/* SpinnerIco */.i_, Icons/* ProcessOutlineIcon */.Vt, Icons/* ProcedureOutlineIcon */.V4, Icons/* ImportantOutlineIcon */.Bm, Icons/* EmojiMutedIcon */.Ty, VerticalTreeDiagramNode, js_VerticalTreeDiagram, js_MultiCheckMenu, js_CheckTreeItem, js_CheckTreeBox, js_MultiCheckTreeMenu, MessageDialog/* default */.Z, YesNoQuestionDialog/* default */.Z, js_TOCItem, js_TOCList, ckeditor_CKPlaceholder, ckeditor_CKInlineShortText, js_VerticalTimeline, WindowBox/* default */.Z, js_LocationView, js_LocationPicker, js_LocationInput, js_PlaceSearchAutoCompleteInput, js_MKNavigator, js_ProcessLBar, js_KVCommentItem, dynamictable_DynamicTable, js_EfficientTable, objectmergetool_ObjectMergeTool, tokenizeiput_TokenizeHyperInput, selectlistbox_SelectListBox, // MCheckTreeBox, checktreeleafbox_MCheckTreeLeafBox, selecttreeleafbox_MSelectTreeLeafBox, dualselectbox_MDualSelectBox, js_PickingList, js_TreeChart, js_TableOfTextInput, js_CompactDataGridEditor, MHeaderBar/* default */.Z, MExploreSectionBreak, MExploreItemBlock, MExploreGroup, MSpringboardMenu, colorpicker_SolidColorPicker, colorpicker_ColorPickerButton, ColorCell, SelectColorSchemeMenu/* default */.ZP, NotificationPanel/* MNPNotificationVirtualDropdown */.FW, NotificationPanel/* NPDropdownButton */.sP, NotificationPanel/* default */.ZP, NotificationPanel/* NPSection */.PL, NotificationPanel/* NPItem */.Ee, NotificationPanel/* NPList */.Bd, js_ListCompareTool ]; /*** * * @param {Dom} core */ function install(core) { core.install(publicCreators); core.install('checkboxbutton', CheckBoxInput/* default */.Z); core.install('selectbox', js_MultiSelectMenu); if (BrowserDetector/* default.isMobile */.Z.isMobile) { core.install('selectmenu', selectmenu_MSelectMenu); core.install('mselectmenu', selectmenu_MSelectMenu); // core.install('selecttreemenu', MSelectTreeMenu) } // core.install('mselectmenu', SelectMenu2); core.install('mselecttreemenu', js_SelectTreeMenu) core.install('MSelectTreeLeafMenu'.toLowerCase(), js_SelectTreeLeafMenu); core.install('MMultiCheckTreeMenu'.toLowerCase(), js_MultiCheckTreeMenu); core.install('MMultiCheckTreeLeafMenu'.toLowerCase(), js_MultiCheckTreeLeafMenu); core.install('mknav', js_MKNavigator); } /* harmony default export */ const dom_install = (install); /***/ }), /***/ 8556: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Vm": () => (/* binding */ FinderFileSystem), "ZP": () => (/* binding */ finder_Finder) }); // UNUSED EXPORTS: FinderCommands // EXTERNAL MODULE: ./node_modules/absol-acomp/css/finder.css var finder = __webpack_require__(5277); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/mobileapp.css var mobileapp = __webpack_require__(8789); // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(3855); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/ResizeSystem.js var ResizeSystem = __webpack_require__(6700); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/FlexiconButton.js var FlexiconButton = __webpack_require__(3929); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ExpTree.js var ExpTree = __webpack_require__(2917); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/messageinput/MessageInput.js + 2 modules var MessageInput = __webpack_require__(4877); // EXTERNAL MODULE: ./node_modules/absol/src/Converter/ext2MineType.js var ext2MineType = __webpack_require__(9691); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/utils.js var utils = __webpack_require__(1477); // EXTERNAL MODULE: ./node_modules/absol/src/Math/random.js var random = __webpack_require__(7848); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate = __webpack_require__(1334); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/EventEmitter.js var EventEmitter = __webpack_require__(863); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/TaskManager.js /*** * * @param {TaskManager} manager * @param {function(finishTask: function, bundle: any): (void|Promise)=} func * @param {any=} bundle * @constructor */ function Task(manager, func, bundle) { this.manager = manager; this.id = (0,stringGenerate.randomIdent)(12); this.func = func; this.bundle = bundle; this.state = 0; } Task.prototype.begin = function () { if (this.state !== 0) return; this.state = 1; var sync; if (this.func) { try { sync = this.func(this.end.bind(this), this.bundle); } catch (error) { console.error(error); } } if (sync && sync.then) sync.catch(error => console.error(error)).then(this.end.bind(this)); }; Task.prototype.end = function () { if (this.state !== 1) return; this.state = 2; this.manager.onFinishTask(this); }; function TaskManager(opt) { EventEmitter/* default.call */.ZP.call(this); opt = opt || {}; this.limit = ((typeof opt.limit === "number") && opt.limit >= 1) ? opt.limit : Infinity; this.pendingTasks = []; this.runningTasks = []; } OOP/* default.mixClass */.ZP.mixClass(TaskManager, EventEmitter/* default */.ZP); /*** * * @param {function(finishTask: function, bundle: any): (void|Promise)} func * @param {any} bundle */ TaskManager.prototype.requestTask = function (func, bundle) { var task = new Task(this, func, bundle); if (this.runningTasks.length < this.limit) { this.runningTasks.push(task); this.emit('task_begin', { type: 'task_begin', task }, this); task.begin(); } else { this.pendingTasks.push(task); } } TaskManager.prototype.onFinishTask = function (task) { var idx = this.runningTasks.indexOf(task); if (idx < 0) return; this.runningTasks.splice(idx, 1); this.emit('task_end', { type: 'task_end', task }, this); while (this.pendingTasks.length > 0 && this.runningTasks.length < this.limit) { task = this.pendingTasks.shift(); this.runningTasks.push(task); this.emit('task_begin', { type: 'task_begin', task }, this); task.begin(); } } TaskManager.prototype.newTask = function () { var task = new Task(this, null, null); this.runningTasks.push(task); this.emit('task_begin', { type: 'task_begin', task }, this); task.begin(); return task; }; /* harmony default export */ const AppPattern_TaskManager = (TaskManager); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Modal.js var Modal = __webpack_require__(9826); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/MessageDialog.js var MessageDialog = __webpack_require__(3488); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Hanger.js var Hanger = __webpack_require__(655); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Vec2.js var Vec2 = __webpack_require__(557); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Rectangle.js var Rectangle = __webpack_require__(2759); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/WindowBox.js var WindowBox = __webpack_require__(774); // EXTERNAL MODULE: ./node_modules/absol/src/Network/FileSaver.js var FileSaver = __webpack_require__(5447); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/DropZone.js var DropZone = __webpack_require__(1577); // EXTERNAL MODULE: ./node_modules/absol/src/Detector/BrowserDetector.js var BrowserDetector = __webpack_require__(9399); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ContextMenu.js var ContextMenu = __webpack_require__(7054); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TextArea2.js var TextArea2 = __webpack_require__(5789); // EXTERNAL MODULE: ./node_modules/absol-acomp/assets/exticons/catalog.json var catalog = __webpack_require__(2398); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/finder/FileThumbnail.js var thumbnailCache = {}; var dbSync; var getDb = () => { dbSync = dbSync || new Promise((resolve) => { var request = window.indexedDB.open('FileThumbnailDB', 1); request.onupgradeneeded = (event) => { var db = event.target.result db.createObjectStore("files", {}); }; request.onsuccess = (event) => { var db = event.target.result; var request1; if (localStorage.getItem('FileThumbnail_clear_cache') === '1') { localStorage.removeItem('FileThumbnail_clear_cache'); request1 = db.transaction('files', 'readwrite').objectStore('files').clear(); request1.onsuccess = () => { resolve(db); } request1.onerror = () => { resolve(null); } } else resolve(db); } request.onerror = () => { resolve(null); } }); return dbSync; } var dbGetItem = (key) => { return getDb().then(db => { if (!db) return null; var request = db.transaction('files').objectStore('files').get(key); return new Promise(resolve => { request.onsuccess = (event) => { var data = event.target.result; resolve(data); }; request.onerror = () => { resolve(null); } }) }); }; var dbSetItem = (key, value) => { return getDb().then(db => { if (!db) return null; var objectStore = db.transaction('files', 'readwrite').objectStore('files'); var request = objectStore.put(value, key); return new Promise(resolve => { request.onsuccess = (event) => { var data = event.target.result; resolve(data); }; request.onerror = () => { resolve(null); } }); }); }; document.addEventListener('keydown', (event) => { if (event.ctrlKey && event.key === 'F5') { localStorage.setItem('FileThumbnail_clear_cache', '1'); } }); var url2small = url => { return new Promise(resolve => { var image = new Image(); image.crossOrigin = 'anonymous'; image.crossorigin = 'anonymous'; image.src = url; image.onload = function () { var now = new Date(); if (image.naturalWidth <= 200 && image.naturalHeight < 200) { resolve(url); return; } var scale = Math.min(200 / image.naturalWidth, 200 / image.naturalHeight); var width = Math.round(image.naturalWidth * scale); var height = Math.round(image.naturalHeight * scale); var canvas = document.createElement('canvas'); canvas.width = width; canvas.height = height; var ctx = canvas.getContext('2d'); for (var i = 0; i < 20; ++i) for (var j = 0; j < 20; ++j) { ctx.fillStyle = (i ^ j) & 1 ? '#BBBBBB' : '#FFFFFF'; ctx.fillRect(i * 10, j * 10, 10, 10); } ctx.drawImage(image, 0, 0, width, height); resolve(canvas.toDataURL('image/jpeg', 0.5)); }; }); }; var getThumbnailUrl = url => { if (!thumbnailCache[url]) { thumbnailCache[url] = dbGetItem(url).then(result => { if (!result) { result = url2small(url).then(canvasResult => { if (canvasResult) dbSetItem(url, canvasResult); return canvasResult; }); } return result; }); } return thumbnailCache[url]; }; function FileThumbnail() { this._value = null; this.$fileName = (0,ACore.$)('.as-file-thumbnail-file-name', this); this.$bg = (0,ACore.$)('.as-file-thumbnail-background', this); /*** * @type {string} * @name fileName * @memberOf FileThumbnail# */ /*** * @type {string|null} * @name fileType * @memberOf FileThumbnail# */ /*** * @type {string|null} * @name thumbnail * @memberOf FileThumbnail# */ /*** * @type {boolean} * @name isDirectory * @memberOf FileThumbnail# */ } FileThumbnail.tag = 'FileThumbnail'.toLowerCase(); FileThumbnail.render = function () { return (0,ACore._)({ class: 'as-file-thumbnail', child: [ { class: 'as-file-thumbnail-background' }, { class: 'as-file-thumbnail-file-name', child: [] }, { class: 'as-file-thumbnail-check', child: 'span.mdi.mdi-check-bold' } ] }); }; FileThumbnail.prototype._updateFileName = function () { var fileName = this.fileName; if (!fileName) { return; } var parts; var matched; matched = fileName.match(/([^_+\-.]+)|([_+\-.]+)/g); parts = matched || []; if (parts.length > 2 && parts[parts.length - 2] === '.') { parts[parts.length - 2] += parts[parts.length - 1]; parts.pop(); } parts = parts.map(txt => { return (0,ACore._)({ tag: 'span', child: { text: txt } }); }); this.$fileName.clearChild().addChild(parts); }; FileThumbnail.prototype._updateThumbnail = function () { var previewUrl; var thumbnail = this.thumbnail; var fileType = this.isDirectory ? 'folder' : this.fileType; if (thumbnail) { if (typeof thumbnail === "string") { this._previewUrl = thumbnail; getThumbnailUrl(thumbnail).then(smallerUrl => { if (thumbnail !== this._previewUrl) return; this.$bg.addStyle('backgroundImage', 'url("' + smallerUrl + '")'); }) } else if (thumbnail instanceof Blob || thumbnail instanceof File) { thumbnail.url = thumbnail.url || URL.createObjectURL(thumbnail); this._previewUrl = thumbnail.url; } } if (catalog.indexOf(fileType) >= 0) { previewUrl = MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + fileType + '.svg'; } else { previewUrl = MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/' + 'blank' + '.svg'; } if (previewUrl) { this.$bg.addStyle('backgroundImage', 'url("' + encodeURI(previewUrl) + '")'); } else { this.$bg.removeStyle('backgroundImage'); } } FileThumbnail.property = {}; FileThumbnail.property.value = { set: function (value) { value = value || null; this._value = value; this._valueInfo = (0,utils.fileInfoOf)(value); this._updateFileName(); this._updateThumbnail(); }, get: function () { return this._value; } }; FileThumbnail.property.fileName = { set: function (value) { this._fileName = value; this._updateFileName(); }, get: function () { return this._fileName || (this._valueInfo && this._valueInfo.name) || null; } }; FileThumbnail.property.fileType = { set: function (value) { this._fileType = value; this._updateThumbnail(); }, /*** * @this FileInputBox * @return {*} */ get: function () { if (this.isDirectory) return null; return this._fileType || (this._valueInfo && this._valueInfo.type) || null; } }; FileThumbnail.property.checked = { set: function (value) { if (value) { this.addClass('as-checked'); } else { this.removeClass('as-checked'); } }, get: function () { return this.hasClass('as-checked'); } }; FileThumbnail.property.thumbnail = { set: function (value) { this._thumbnail = value || null; this._updateThumbnail(); }, get: function () { return this._thumbnail; } }; FileThumbnail.property.isDirectory = { set: function (value) { if (value) { this.addClass('as-is-directory'); } else { this.removeClass('as-is-directory'); } }, get: function () { return this.hasClass('as-is-directory'); } } ACore/* default.install */.Z.install(FileThumbnail); /* harmony default export */ const finder_FileThumbnail = (FileThumbnail); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Searcher.js var Searcher = __webpack_require__(9024); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/Context.js var Context = __webpack_require__(5721); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringFormat.js var stringFormat = __webpack_require__(6382); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DomSignal.js var DomSignal = __webpack_require__(5150); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/RibbonButton.js var RibbonButton = __webpack_require__(9664); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(6628); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/finder/Finder.js var isMobile = BrowserDetector/* default.isMobile */.Z.isMobile; /*** * @extends AElement * @constructor */ function Finder() { if (isMobile) this.addClass('as-mobile'); // if (BrowserDetector.isMobile) alert("Chưa hỗ trợ điện thoại!"); this.$attachhook = (0,ACore._)('attachhook').addTo(this); this.$attachhook.requestUpdateSize = () => { this.layoutCtn.update(); this.navCtrl.notifyVisibleContentItems(); }; this.$attachhook.once('attached', () => { ResizeSystem/* default.add */.Z.add(this.$attachhook); this.layoutCtn.update(); this.navCtrl.onStart(); this.navCtrl.notifyVisibleContentItems(); ContextMenu/* default.auto */.Z.auto(); }); this.domSignal = new DomSignal/* default */.ZP((0,ACore._)('attachhook').addTo(this)); this.$header = (0,ACore.$)('.as-finder-header', this); this.$nomalActionCtn = (0,ACore.$)('.as-finder-normal-action-button-ctn', this); this.$tinyActionCtn = (0,ACore.$)('.as-finder-tiny-action-button-ctn', this); this.$contentHeader = (0,ACore.$)('.as-finder-content-header', this); this.$navCtn = (0,ACore.$)('.as-finder-nav-ctn', this); this.$nav = (0,ACore.$)(ExpTree/* ExpGroup.tag */.uz.tag, this.$navCtn); this.$searchCtn = (0,ACore.$)('.as-finder-search-ctn', this); this.$contentCtn = (0,ACore.$)('.as-finder-content-ctn', this); this.$content = (0,ACore.$)('.as-finder-content', this); this.$body = (0,ACore.$)('.as-finder-body', this); this.$commandButtons = (0,ACore.$$)('.as-finder-nav-header button', this) .concat((0,ACore.$$)('.as-finder-content-header button', this)) .concat((0,ACore.$$)('.as-finder-search-footer button', this)) .concat((0,ACore.$$)('.as-finder-search-header button', this)) .reduce((ac, cr) => { var name = cr.attr('name'); ac[name] = cr; if (cr.items) {//ribbon button cr.on('select', (event) => { this.execCommand(name, event.item.value, event.item); }); } else { cr.on('click', () => { this.execCommand(name); }); } return ac; }, {}); this.$searchTypeSelect = (0,ACore.$)('.as-finder-search-type-select', this); this.$searchText = (0,ACore.$)('.as-finder-search-text', this); this.fileSystem = new AbsolFileSystem(); this.layoutCtn = new LayoutController(this); this.navCtrl = new NavigatorController(this); this.selectCtrl = isMobile ? new MobileSelectController(this) : new SelectController(this); this.uploadCtrl = new UploadController(this); this.commandCtrl = new CommandController(this); this.folderDialog = new FolderDialog(this); this.searchCtrl = new SearchController(this); /*** * @type {string} * @name displayPath * @memberOf Finder# */ /*** * @type {string} * @name path * @memberOf Finder# */ /*** * @type {string} * @name rootPath * @memberOf Finder# */ /*** * @type {string} * @name accept * @memberOf Finder# */ } Finder.tag = 'Finder'.toLowerCase(); Finder.render = function () { return (0,ACore._)({ class: 'as-finder', extendEvent: ['selectedchange', 'dblclickfile'], attr: { 'data-selected-file-count': '0', 'data-selected-folder-count': '0' }, child: [ { class: 'as-finder-header', child: [ { class: 'as-finder-normal-action-button-ctn', /* child: Finder.prototype.actions.map(act => ({ tag: FlexiconButton.tag, attr: { name: act.name }, props: { text: act.text, // icon: act.icon } }))*/ }, { class: 'as-finder-tiny-action-button-ctn', /*child: Finder.prototype.actions.map(act => ({ tag: 'button', attr: { name: act.name, title: act.text }, child: act.icon }))*/ } ] }, { class: ['as-finder-nav-ctn'], child: [ { class: 'as-finder-nav-header', child: [ { class: 'as-finder-nav-header-left', child: [{ tag: 'button', class: 'as-transparent-button', attr: { title: "Close Navigator", name: 'nav_toggle' }, child: 'span.mdi.mdi-menu-open' }] }, { class: 'as-finder-nav-header-right', child: [ { tag: 'button', class: 'as-transparent-button', attr: { title: "Search", name: 'switch_to_search' }, child: 'span.mdi.mdi-magnify', }, { tag: 'button', class: 'as-transparent-button', attr: { title: "Expand All", name: 'nav_expand_all' }, child: 'span.mdi.mdi-arrow-expand-vertical', }, { tag: 'button', class: 'as-transparent-button', attr: { title: "Collapse All", name: 'nav_collapse_all' }, child: 'span.mdi.mdi-arrow-collapse-vertical' }, { tag: 'button', class: 'as-transparent-button', attr: { title: "Reload", name: 'reload' }, child: 'span.mdi.mdi-reload' } ] } ] }, { tag: ExpTree/* ExpGroup.tag */.uz.tag, class: 'as-bscroller' } ] }, { class: 'as-finder-search-ctn', child: [ { class: 'as-finder-search-header', child: [{ tag: 'button', class: 'as-transparent-button', attr: { title: "Close Navigator", name: 'nav_toggle' }, child: 'span.mdi.mdi-menu-open' }] }, { class: 'as-finder-search-body', child: [ { tag: Searcher/* default.tag */.Z.tag, class: 'as-finder-search-text', }, { class: 'as-finder-search-field', child: [ { child: { text: 'Kiểu' } }, { child: { tag: 'selectmenu', class: 'as-finder-search-type-select', props: { items: [ { text: 'Tất cả', value: 'all', icon: 'span.mdi.mdi-asterisk' }, { text: 'Hình ảnh', value: 'image', icon: 'span.mdi.mdi-image-outline' }, { text: 'Tài liệu', value: 'document', icon: 'span.mdi.mdi-file-document' } ] } } } ] }, { class: 'as-finder-search-footer', child: [ { tag: FlexiconButton/* default.tag */.Z.tag, attr: { name: 'start_search' }, props: { text: 'OK' } }, { tag: FlexiconButton/* default.tag */.Z.tag, attr: { name: 'cancel_search' }, props: { text: 'Hủy' } } ] } ] } ] }, { tag: DropZone/* default.tag */.Z.tag, attr: { 'data-view-as': 'list' }, class: ['as-finder-body'], child: [ { class: 'as-finder-content-header', child: [ { class: 'as-finder-content-header-left', child: [ { tag: 'button', attr: { title: 'Open Navigator', name: 'nav_toggle' }, class: 'as-transparent-button', child: ['span.mdi.mdi-menu'] }, { tag: RibbonButton/* default */.Z, attr: { title: 'View As', name: 'content_view_as' }, class: 'as-transparent-button', props: { text: 'List', icon: 'span.mdi.mdi-format-list-bulleted-square', items: [ { icon: 'span.mdi.mdi-format-list-bulleted-square', text: 'List', value: 'list', }, { text: 'Medium Icons', icon: 'span.mdi.mdi-grid', value: 'content' }, { text: 'Lage Icons', icon: 'span.mdi.mdi-image-outline', value: 'lage_icons' } ] }, // child: ['span.mdi.mdi-format-list-bulleted-square'] } ] }, { class: 'as-finder-content-header-right', } ] }, { tag: Hanger/* default.tag */.Z.tag, class: 'as-finder-content-ctn', props: { hangOn: 5 }, child: { class: ['as-finder-content',] } }, { class: 'as-finder-upload-overlay', child: [ { class: 'as-finder-upload-overlay-icon-ctn', child: 'span.mdi.mdi-cloud-upload-outline' }, { child: { text: 'Thả file vào đây để tải lên' } } ] } ] } ] }); }; Finder.property = {}; Finder.property.fileSystem = { set: function (fs) { this._fileSystem = fs; }, get: function () { return this._fileSystem; } }; Finder.property.path = { set: function (path) { this.navCtrl.path = path; }, get: function () { return this.navCtrl.path; } }; Finder.property.displayPath = { // set: function (path) { // this.navCtrl.path = path; // }, get: function () { return this.navCtrl.displayPath; } }; Finder.property.rootPath = { set: function (path) { this.navCtrl.rootPath = path; }, get: function () { return this.navCtrl.rootPath; } }; Finder.property.selectedFiles = { get: function () { return this.selectCtrl.$selectedItems.filter(elt => elt.stat && !elt.stat.isDirectory).map(elt => elt.stat); } } Finder.prototype.execCommand = function (name) { return this.commandCtrl.execCommand.apply(this.commandCtrl, arguments); }; Finder.prototype.addCommand = function (name, descriptor) { this.commandCtrl.addCommand(name, descriptor); }; Finder.prototype.addButton = function (name, bf) { this.commandCtrl.addButton(name, bf); }; /**** * * @param {string} name * @param {string=} bf */ Finder.prototype.addFolderMenuItem = function (name, bf) { this.commandCtrl.addFolderMenuItem(name, bf); }; Finder.prototype.findZIndex = function () { var c = this; var res = 0; var zIndex; while (c) { zIndex = parseInt(getComputedStyle(c).getPropertyValue('z-index')); if (!isNaN(zIndex)) res = Math.max(zIndex, res); c = c.parentElement; } return res; }; ACore/* default.install */.Z.install(Finder); /* harmony default export */ const finder_Finder = (Finder); var FinderCommands = {}; Finder.prototype.commands = FinderCommands; FinderCommands.upload = { text: 'Tải lên', icon: 'span.mdi.mdi-upload-outline', match: function (fileElt) { return !fileElt && this.searchCtrl.state !== 'RUNNING' && this.dirStat && this.dirStat.writable; }, /*** * @this Finder */ exec: function () { (0,utils.openFileDialog)({ multiple: true }).then(files => { if (files && files.length > 0) { this.uploadCtrl.upload(files); } }) } }; FinderCommands.upload_to_folder = { text: 'Tải lên', icon: 'span.mdi.mdi-upload-outline', match: function (treElt) { return treElt && treElt.stat && treElt.stat.writable; }, /*** * @this Finder */ exec: function () { //todo: selected folder (0,utils.openFileDialog)({ multiple: true }).then(files => { if (files && files.length > 0) { this.uploadCtrl.upload(files); } }) } }; FinderCommands.delete = { icon: 'span.mdi.mdi-delete-outline', text: 'Xóa', /*** * @this Finder */ match: function (fileElt) { return fileElt && this.selectCtrl.$selectedItems.length > 0 && this.selectCtrl.$selectedItems.every(elt => elt.stat && !elt.stat.isDirectory && elt.stat.writable); }, /*** * @this Finder */ exec: function () { var paths = this.selectCtrl.$selectedItems.map(elt => elt.stat.path); var names = this.selectCtrl.$selectedItems.map(elt => elt.fileName); if (names.length === 0) return; var contentElt = (0,ACore._)({ style: { maxHeight: '50vh', overflow: 'auto' }, child: { style: { display: 'table' }, child: names.map(name => ({ style: { display: 'table-row' }, child: [ { style: { display: 'table-cell', padding: '5px 20px 5px 10px' }, child: { style: { 'min-width': '30em', }, child: { text: name } } }, { style: { display: 'table-cell', padding: '5px 10px' }, child: { class: 'as-finder-task-check', style: { 'min-width': '3em', textAlign: 'right', }, child: 'span' } } ] })) } }); var modal = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, style: { zIndex: this.findZIndex() + 9000 }, child: { tag: MessageDialog/* default.tag */.Z.tag, props: { dialogTitle: 'Xóa file', dialogActions: [ { name: "ok", text: "OK" }, { name: 'cancel', text: 'Hủy' } ] }, child: [{ child: { tag: 'span', child: { text: "Xác nhận xóa những file dưới đây: " } } }, contentElt], on: { action: (event, sender) => { var promises; var errors = []; if (event.action.name === 'ok') { sender.$actionBtns[0].disabled = true; sender.$actionBtns[0].text = "Đang tiến hành xóa.."; sender.$actionBtns[1].disabled = true; promises = paths.map((path, i) => { return this.fileSystem.unlink(path).then(() => { (0,ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]).addChild((0,ACore._)('span.mdi.mdi-check')) }).catch(err => { errors.push(err); (0,ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]) .addChild((0,ACore._)('span.mdi.mdi-alert-decagram-outline')) .addChild((0,ACore._)({ tag: 'span', class: '.as-finder-task-error-message', child: { text: err.message } })) }); }); Promise.all(promises).then(() => { var commands = {}; if (errors.length > 0) { errors.forEach(err => { if (err.command) { commands[err.command] = true; } }); if (commands.reload) this.execCommand('reload'); sender.$actionBtns[1].disabled = false; sender.$actionBtns[0].text = "Hoàn thành"; } else { this.navCtrl.reload(this.path, true).then(() => modal.remove()); } }); } else { modal.remove(); } } } } }).addTo(document.body); } }; FinderCommands.view = { icon: 'span.mdi.mdi-eye-outline', text: 'Xem', match: function (fileElt) { return !!fileElt; }, /*** * @this Finder */ exec: function () { var elt = this.selectCtrl.$selectedItems[0]; if (!elt) return; if (elt.stat.isDirectory) { this.navCtrl.viewDir(elt.stat.path); return; } var url = elt.stat.url; if (!url) return; var type = elt.fileType; if (type === 'xlsx' || type === 'docx' || type === 'xls' || type === 'doc' || type === 'ppt' || type === 'pptx') { url = 'https://view.officeapps.live.com/op/embed.aspx?src=' + encodeURIComponent(url); } else { url = encodeURI(url); } var mineType = ext2MineType/* default */.Z[type] || 'none'; var content; if (mineType.startsWith('video')) { content = (0,ACore._)({ tag: 'video', style: { maxWidth: 'calc(90vw - 20px)', maxHeight: 'calc(90vh - 80px)', width: '900px', height: 'auto' }, attr: { autoplay: 'true', controls: 'true' }, props: { src: url } }); } else if (mineType.startsWith('audio')) { content = (0,ACore._)({ tag: 'audio', style: { margin: '5px' }, attr: { autoplay: 'true', controls: 'true' }, props: { src: url } }); } else if (mineType.startsWith('image')) { content = (0,ACore._)({ tag: 'img', style: { maxWidth: 'calc(90vw - 20px)', maxHeight: 'calc(90vh - 80px)', width: 'auto', height: 'auto' }, attr: {}, props: { src: url } }); } else { content = (0,ACore._)({ tag: 'iframe', style: { maxWidth: 'calc(90vw - 20px)', maxHeight: 'calc(90vh - 80px)', width: '900px', height: '600px' }, props: { src: url, onload: function () { // console.log(this.contentWindow.document.body.offsetHeight, this.contentWindow.document.body.offsetWidth) } } }); } var modal = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, style: { zIndex: this.findZIndex() + 9000 }, child: { tag: WindowBox/* default.tag */.Z.tag, child: content, props: { windowTitle: elt.stat.displayName || elt.stat.name, windowActions: [ { name: 'close', icon: 'span.mdi.mdi-close' } ] }, on: { action: () => { modal.remove(); } } } }).addTo(document.body); } }; FinderCommands.download = { icon: 'span.mdi.mdi-download-outline', text: 'Tải về', match: function (elt) { return elt && this.selectCtrl.$selectedItems.length > 0 && this.selectCtrl.$selectedItems.every(elt => elt.stat && !elt.stat.isDirectory); }, /*** * @this Finder */ exec: function () { var taskMng = new AppPattern_TaskManager({ limit: 4 }); this.selectCtrl.$selectedItems.forEach(elt => { if (elt.isDirectory) return; var url = elt.stat.url; if (!url) return; taskMng.requestTask(function (onFinish, bundle) { (0,FileSaver.saveAs)(bundle.url, bundle.name) setTimeout(onFinish, 100); }, { url: url, name: elt.fileName }); }); } }; FinderCommands.rename = { icon: 'span.mdi.mdi-rename', text: 'Đổi tên', /*** * @this Finder */ match: function (elt) { return elt && this.selectCtrl.$selectedItems.length === 1 && elt.stat && !elt.stat.isDirectory && elt.stat.writable;//todo: rename folder }, /*** * @this Finder */ exec: function () { var elt = this.selectCtrl.$selectedItems[0]; if (!elt) return; var path = elt.stat.path; var value = elt.fileName; var input = (0,ACore._)({ tag: TextArea2/* default.tag */.Z.tag, style: { outline: 'none', position: 'absolute', zIndex: 100, left: 0, bottom: 0, width: '100%' }, props: { value: elt.fileName }, on: { blur: () => { var newValue = input.value.replace(/<>:\\\/\|\?\*\^/g, '').trim(); input.remove(); if (!value) return; if (value === newValue) return; this.fileSystem.rename(path, newValue).then(newStat => { elt.stat = newStat; elt.value = newStat.url; elt.fileName = newStat.displayName || newStat.name; }); } } }); elt.addChild(input); input.on('keydown', function (event) { if (event.key.match(/<>:\\\/\|\?\*\^/)) { event.preventDefault(); setTimeout(() => input.updateSize(), 30) } else if (event.key === 'Enter') { input.blur(); } else if (event.key === 'Escape') { input.value = value; input.updateSize(); input.blur(); } }, true); input.updateSize(); input.focus(); var ext = value.match(/\.[a-zA-Z0-9]+$/); if (ext) { ext = ext[0]; } else { ext = ''; } input.setSelectionRange(0, value.length - ext.length); } }; FinderCommands.copy = { icon: 'span.mdi.mdi-content-copy', text: 'Sao chép', exec: function () { } }; FinderCommands.move = { text: 'Di chuyển', icon: 'span.mdi.mdi-file-move-outline', match: function (fileElt) { if (arguments.length === 0) { return this.selectCtrl.$selectedItems.every(elt => elt.stat.writable); } return fileElt && fileElt.stat && fileElt.stat.writable; }, /*** * @this Finder */ exec: function () { var itemElements = this.selectCtrl.$selectedItems.slice(); var paths = itemElements.map(elt => elt.stat.path); var names = itemElements.map(elt => elt.fileName); if (names.length === 0) return; var currentFolderPath = this.path; this.folderDialog.open(currentFolderPath, false, (newFolderPath, stat) => newFolderPath !== currentFolderPath && stat.writable, 'Di chuyển file').then(newFolderPath => { if (!newFolderPath) return; if (newFolderPath === currentFolderPath) return; var contentElt = (0,ACore._)({ style: { maxHeight: '50vh', overflow: 'auto' }, child: { style: { display: 'table' }, child: names.map(name => ({ style: { display: 'table-row' }, child: [ { style: { display: 'table-cell', padding: '5px 20px 5px 10px' }, child: { style: { 'min-width': '30em', }, child: { text: name } } }, { style: { display: 'table-cell', padding: '5px 10px' }, child: { class: 'as-finder-task-check', style: { 'min-width': '3em', textAlign: 'right', }, child: 'span' } } ] })) } }); var modal = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, style: { zIndex: this.findZIndex() + 9000 }, child: { tag: MessageDialog/* default.tag */.Z.tag, props: { dialogTitle: 'Di chuyển file', dialogActions: [{ name: 'close', text: 'Đóng' }] }, child: [{ child: { tag: 'span', child: { text: "Danh sách đang di chuyển: " } } }, contentElt], on: { action: (event, sender) => { modal.remove(); } } } }).addTo(document.body); var errors = []; var promises = paths.map((path, i) => { var newPath = newFolderPath + '/' + path.split('/').pop(); return this.fileSystem.move(path, newPath).then(() => { (0,ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]).addChild((0,ACore._)('span.mdi.mdi-check')) }).catch(err => { errors.push(err); (0,ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]) .addChild((0,ACore._)('span.mdi.mdi-alert-decagram-outline')).addChild((0,ACore._)({ tag: 'span', class: '.as-finder-task-error-message', child: { text: err.message } })); }); }); Promise.all(promises).then(() => { var commands = {}; if (errors.length > 0) { errors.forEach(err => { if (err.command) { commands[err.command] = true; } }); if (commands.reload) this.execCommand('reload'); } else { this.navCtrl.reload(this.path, true).then(() => modal.remove()); } }); }); } }; FinderCommands.move_dir = { text: 'Di chuyển', icon: 'span.mdi.mdi-folder-arrow-right-outline', match: function (expElt) { return expElt && expElt.stat && expElt.stat.writable && !expElt.stat.isVirtual; }, /*** * @this Finder */ exec: function (expElt) { var path = expElt.stat.path; var currentFolderPath = path.split('/'); var name = currentFolderPath.pop(); currentFolderPath = currentFolderPath.join('/'); this.folderDialog.open(currentFolderPath, true, newPath => !newPath.startsWith(path), 'Di chuyển thư mục').then(newFolderPath => { if (!newFolderPath) return; return this.fileSystem.move(path, newFolderPath + '/' + name).then(() => { this.path = newFolderPath + '/' + name; this.navCtrl.reload(this.rootPath).then(() => { this.navCtrl.viewDir(this.path) }); }); }) } }; FinderCommands.rmdir = { text: 'Xóa', icon: 'span.mdi.mdi-delete-outline', /*** * @this Finder * @param elt */ match: function (elt) { if (elt.stat && elt.stat.isVirtual) return false; if (elt) return elt.stat && elt.stat.writable; return false; }, exec: function (elt) { } }; FinderCommands.select_all = { text: 'Chọn tất cả', icon: 'span.mdi.mdi-select-all', match: function (fileElt) { return !fileElt; }, /*** * @this Finder */ exec: function () { this.selectCtrl.selectAll(); } }; FinderCommands.nav_expand_all = { /*** * @this Finder */ exec: function () { this.navCtrl.expandAll(); } }; FinderCommands.nav_collapse_all = { /*** * @this Finder */ exec: function () { this.navCtrl.collapseAll(); } }; FinderCommands.reload = { /*** * @this Finder */ exec: function () { this.fileSystem.clearCache(); this.navCtrl.reload().then(() => { this.navCtrl.viewDir(this.path); }); } }; FinderCommands.content_view_as = { /*** * @this Finder */ exec: function (value, item) { this.$commandButtons['content_view_as'].text = item.text; this.$commandButtons['content_view_as'].icon = item.icon; this.$body.attr('data-view-as', value); } }; FinderCommands.switch_to_search = { /*** * @this Finder */ exec: function () { this.searchCtrl.start(); } }; FinderCommands.cancel_search = { /*** * @this Finder */ exec: function () { this.searchCtrl.stop(); this.navCtrl.viewDir(this.path); } }; FinderCommands.start_search = { /*** * @this Finder */ exec: function () { this.searchCtrl.search(); } }; FinderCommands.nav_toggle = { icon: 'span.mdi.mdi-menu', exec: function () { if (this.hasClass('as-nav-open')) { this.removeClass('as-nav-open'); } else { this.addClass('as-nav-open'); } } }; /*** * * @param {Finder} elt * @constructor */ function LayoutController(elt) { this.elt = elt; this.actionButtonWidth = 0; this.elt.domSignal.on('requestUpdateActionButtonSize', this.updateActionButtonSize.bind(this)); this.elt.on('click', this.ev_click.bind(this)) } LayoutController.prototype.requestUpdateActionButtonSize = function () { this.elt.domSignal.emit('requestUpdateActionButtonSize'); }; LayoutController.prototype.updateActionButtonSize = function () { var font = this.elt.$nomalActionCtn.getComputedStyleValue('font'); var fontSize = this.elt.$nomalActionCtn.getFontSize(); this.actionButtonWidth = Array.prototype.reduce.call(this.elt.$nomalActionCtn.childNodes, (ac, cr) => { return ac + Math.max(110, 0.715 * fontSize * 2 + (0,utils.measureText)(cr.text, font).width) + 10; }, 60); this.update(); }; LayoutController.prototype.update = function () { var bound = this.elt.getBoundingClientRect(); if (bound.width < 500) { if (!this.elt.hasClass('as-mini-layout')) this.elt.addClass('as-mini-layout'); } else { if (this.elt.hasClass('as-mini-layout')) { this.elt.removeClass('as-mini-layout'); this.elt.removeClass('as-nav-open'); } } if (this.elt.hasClass('as-action-button-minimized')) { if (this.actionButtonWidth <= bound.width) { this.elt.removeClass('as-action-button-minimized'); } } else { if (this.actionButtonWidth > bound.width) { this.elt.addClass('as-action-button-minimized'); } } var bodyBound = this.elt.$body.getBoundingClientRect(); var col = Math.floor(bodyBound.width / 300) || 1; this.elt.$body.addStyle('--col', col + ''); }; LayoutController.prototype.ev_click = function (event) { if (event.target === this.elt) { this.elt.removeClass('as-nav-open'); } }; /*** * * @param {Finder} elt * @constructor */ function CommandController(elt) { Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } }); this.elt = elt; this.$normalActionCtn = this.elt.$nomalActionCtn; this.$tinyActionCtn = this.elt.$tinyActionCtn; this.commands = Object.assign({}, this.elt.commands); this.buttonNames = ['upload', 'view', 'download', 'move', 'rename', 'delete']; this.folderMenuItemNames = ['upload_to_folder', 'move_dir']; this.contentMenuItemNames = ['view', 'download', 'upload', 'select_all', 'move', 'delete', 'rename']; this.$navCtn = this.elt.$navCtn; this.$navCtn.defineEvent('contextmenu').on('contextmenu', this.ev_navContextMenu); this.$contentCtn = this.elt.$contentCtn; this.$contentCtn.defineEvent('contextmenu').on('contextmenu', this.ev_contentContextMenu); this.updateButtons(); } CommandController.prototype.updateButtons = function () { this.$normalActionCtn.clearChild(); var buttons = this.buttonNames.map(name => { var desc = this.commands[name] || {}; return (0,ACore._)({ tag: FlexiconButton/* default.tag */.Z.tag, attr: { name: name }, props: { text: desc.text || name }, on: { click: () => { this.execCommand(name); } } }); }); this.$normalActionCtn.addChild(buttons); buttons = this.buttonNames.map(name => { var desc = this.commands[name] || {}; return (0,ACore._)({ tag: 'button', class: 'as-transparent-button', attr: { name: name }, child: desc.icon, on: { click: () => { this.execCommand(name); } } }); }); this.$tinyActionCtn.addChild(buttons); this.elt.layoutCtn.requestUpdateActionButtonSize(); }; CommandController.prototype.execCommand = function (name) { var args = Array.prototype.slice.call(arguments, 1); var desc = this.commands[name]; if (desc && typeof desc.exec === 'function') { return desc.exec.apply(this.elt, args); } return null; }; CommandController.prototype.addCommand = function (name, desc) { this.commands[name] = Object.assign({}, this.commands[name], desc); }; /**** * * @param {string} name * @param {string=} bf */ CommandController.prototype.addButton = function (name, bf) { var idx = this.buttonNames.indexOf(bf); var bfElt, smallBfElt; if (idx >= 0) { this.buttonNames.splice(idx, 0, name); bfElt = (0,ACore.$)(`button[name="${name}"]`, this.$normalActionCtn); smallBfElt = (0,ACore.$)(`button[name="${name}"]`, this.$tinyActionCtn); } else { this.buttonNames.push(name); } var desc = this.commands[name] || {}; this.$normalActionCtn.addChildBefore((0,ACore._)({ tag: FlexiconButton/* default.tag */.Z.tag, attr: { name: name }, props: { text: desc.text || name }, on: { click: () => { this.execCommand(name); } } }), bfElt); this.$tinyActionCtn.addChild((0,ACore._)({ tag: 'button', class: 'as-transparent-button', attr: { name: name }, child: desc.icon, on: { click: () => { this.execCommand(name); } } }), smallBfElt); this.elt.layoutCtn.requestUpdateActionButtonSize(); }; /**** * * @param {string} name * @param {string=} bf */ CommandController.prototype.addFolderMenuItem = function (name, bf) { idx = this.folderMenuItemNames.indexOf(name); if (idx >= 0) return; var idx = this.folderMenuItemNames.indexOf(bf); if (idx >= 0) this.folderMenuItemNames.splice(idx, 0, name); else this.folderMenuItemNames.push(name); }; /**** * * @param {string} name * @param {string=} bf */ CommandController.prototype.addContentMenuItem = function (name, bf) { idx = this.folderMenuItemNames.indexOf(name); if (idx >= 0) return;//todo var idx = this.folderMenuItemNames.indexOf(bf); if (idx >= 0) this.folderMenuItemNames.splice(idx, 0, name); else this.folderMenuItemNames.push(name); }; CommandController.prototype.ev_navContextMenu = function (event) { var expTree; var c = event.target; while (c && !expTree) { if (c.stat) expTree = c; c = c.parentElement; } if (expTree) this.elt.navCtrl.viewDir(expTree.stat.path, [this.elt.rootPath].concat(expTree.getPath()).join('/')); var items = this.folderMenuItemNames.map(name => { var desc = this.commands[name]; if (!desc) return null; if (typeof desc.match === "function") { if (!desc.match.call(this.elt, expTree)) return null; } return { text: desc.text, icon: desc.icon, cmd: name } }).filter(x => !!x); if (items.length > 0) { event.showContextMenu({ items: items }, (event) => { var cmd = event.menuItem.cmd; this.execCommand(cmd, expTree); }); } }; CommandController.prototype.ev_contentContextMenu = function (event) { var fileElt; var c = event.target; while (c && !fileElt) { if (c.stat) fileElt = c; c = c.parentElement; } var selectedElements = this.elt.selectCtrl.$selectedItems; if (fileElt && selectedElements.indexOf(fileElt) < 0) { this.elt.selectCtrl.deselectAll(); this.elt.selectCtrl.select(fileElt); } // if (expTree) this.elt.navCtrl.viewDir(expTree.stat.path, [this.elt.rootPath].concat(expTree.getPath()).join('/')); var items = this.contentMenuItemNames.map(name => { var desc = this.commands[name]; if (!desc) return null; if (typeof desc.match === "function") { if (!desc.match.call(this.elt, fileElt)) return null; } return { text: desc.text, icon: desc.icon, cmd: name } }).filter(x => !!x); if (items.length > 0) { event.showContextMenu({ items: items }, (event) => { var cmd = event.menuItem.cmd; this.execCommand(cmd, fileElt); }); } }; /*** * for desktop * @param {Finder} elt * @constructor */ function SelectController(elt) { this.elt = elt; this.$selectedItems = [];// first element is focus this.$content = this.elt.$content; this.$contentCtn = this.elt.$contentCtn; Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } }); this._setupSelectTool(); } /*** * * @protected */ SelectController.prototype._setupSelectTool = function () { this._draged = false; this._dragOffset = new Vec2/* default */.Z(0, 0); this.$selectArea = (0,ACore._)('.as-finder-select-area'); this.$contentCtn.on('draginit', this.ev_dragInit) .on('dragdeinit', this.ev_dragDeinit) .on('dragstart', this.ev_dragStart) .on('drag', this.ev_drag) .on('dragend', this.ev_dragEnd); }; SelectController.prototype.deselectAll = function () { while (this.$selectedItems.length > 0) { this.$selectedItems.pop().checked = false; } this._updateCount(); this.elt.emit('selectedchange'); }; SelectController.prototype.select = function (elt) {//todo: more option this.deselectAll(); this.$selectedItems.push(elt); elt.checked = true; this._updateCount(); this.elt.emit('selectedchange'); }; SelectController.prototype.selectAll = function () {//todo: more option this.deselectAll(); var fileElements = Array.prototype.slice.call(this.$content.childNodes); this.$selectedItems.push.apply(this.$selectedItems, fileElements); fileElements.forEach(elt => { elt.checked = true; }); this._updateCount(); this.elt.emit('selectedchange'); }; SelectController.prototype.ev_dragInit = function (event) { if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') { event.cancel(); return; } // event.preventDefault(); this._draged = false; }; SelectController.prototype.ev_dragDeinit = function (event) { if (!this._draged) this.ev_click(event); }; SelectController.prototype.ev_dragStart = function (event) { this._draged = true; this.elt.addClass('as-dragging'); this.$selectArea.addStyle('z-index', this.elt.findZIndex() + 100 + '').addTo(document.body); var bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.$content.getBoundingClientRect()); this._dragOffset = event.currentPoint.sub(bound.A()); var pos = bound.A().add(this._dragOffset); this.$selectArea.addStyle({ left: pos.x + 'px', top: pos.y + 'px', }); }; SelectController.prototype.ev_drag = function (event) { this._draged = true; var bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.$content.getBoundingClientRect()); var A = bound.A().add(this._dragOffset); var C = event.currentPoint; var sRect = Rectangle/* default.boundingPoints */.Z.boundingPoints([A, C]); this.$selectArea.addStyle({ left: sRect.x + 'px', top: sRect.y + 'px', width: sRect.width + 'px', height: sRect.height + 'px', }); }; SelectController.prototype.ev_dragEnd = function () { while (this.$selectedItems.length > 0) { this.$selectedItems.pop().checked = false; } var selectBound = Rectangle/* default.fromClientRect */.Z.fromClientRect(this.$selectArea.getBoundingClientRect()); Array.prototype.forEach.call(this.$content.childNodes, elt => { var bound = Rectangle/* default.fromClientRect */.Z.fromClientRect(elt.getBoundingClientRect()); if (selectBound.isCollapse(bound, 0)) { this.$selectedItems.push(elt); elt.checked = true; } }); this._draged = true; this.$selectArea.remove(); this.elt.removeClass('as-dragging'); this._updateCount(); this.elt.layoutCtn.update(); this.elt.emit('selectedchange'); }; SelectController.prototype._updateCount = function () { var folderCount = this.$selectedItems.filter(elt => elt.stat.isDirectory).length; this.elt.attr('data-selected-file-count', this.$selectedItems.length - folderCount + ''); this.elt.attr('data-selected-folder-count', folderCount + ''); } SelectController.prototype.ev_click = function (event) { event = event.originalEvent || event.originEvent || event; var c = event.target; var itemElt; while (c && !itemElt) { if (c.hasClass && c.hasClass('as-file-thumbnail')) { itemElt = c; break; } c = c.parentElement; } var focusIdx; var currentIdx; if (this.$selectedItems.length === 0 && itemElt) { this.$selectedItems.push(itemElt); itemElt.checked = true; } else if ((0,EventEmitter/* isMouseRight */.Ed)(event)) { } else if (!event.ctrlKey && !event.shiftKey) { while (this.$selectedItems.length > 0) { this.$selectedItems.pop().checked = false; } if (itemElt) { this.$selectedItems.push(itemElt); itemElt.checked = true; } } else if (event.shiftKey) { if (itemElt) { focusIdx = Array.prototype.indexOf.call(this.$content.childNodes, this.$selectedItems[0]); currentIdx = Array.prototype.indexOf.call(this.$content.childNodes, itemElt); while (this.$selectedItems.length > 1) { this.$selectedItems.pop().checked = false; } while (currentIdx !== focusIdx) { itemElt = this.$content.childNodes[currentIdx]; this.$selectedItems.push(itemElt); itemElt.checked = true; if (currentIdx < focusIdx) currentIdx++; else currentIdx--; } } } else if (event.ctrlKey) { if (itemElt) { currentIdx = this.$selectedItems.indexOf(itemElt); if (currentIdx >= 0) { this.$selectedItems.splice(currentIdx, 1); itemElt.checked = false; } else { this.$selectedItems.unshift(itemElt); itemElt.checked = true; } } } this._updateCount(); this.elt.layoutCtn.update(); this.elt.emit('selectedchange'); }; /*** * @extends SelectController * @param elt * @constructor */ function MobileSelectController(elt) { SelectController.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(MobileSelectController, SelectController); MobileSelectController.prototype._setupSelectTool = function () { this.$content.on('click', this.ev_click); }; /*** * * @param {Finder} elt * @constructor */ function UploadController(elt) { /*** * * @type {Finder} */ this.elt = elt; this.$body = this.elt.$body; Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } }); this.$body.on({ fileenter: this.ev_fileEnter, filedrop: this.ev_fileDrop }) } UploadController.prototype.upload = function (files) { var screenSize = (0,Dom/* getScreenSize */.tE)(); var contentElt = (0,ACore._)({ style: { maxHeight: '50vh', overflow: 'auto' }, child: { style: { display: 'table' }, child: files.map(file => ({ style: { display: 'table-row' }, child: [ { style: { display: 'table-cell', padding: '5px 20px 5px 10px' }, child: { style: { 'width': Math.min(screenSize.width - 180, 800) / 14 + 'em', textOverflow: 'ellipsis', overflow: 'hidden' }, child: { text: file.name } } }, { style: { display: 'table-cell', padding: '5px 10px' }, child: { class: 'as-upload-percent', style: { 'min-width': '3em', textAlign: 'right', color: 'rgb(30,237,219)' }, child: { text: '' } } } ] })) } }); var modal = (0,ACore._)({ tag: Modal/* default.tag */.Z.tag, style: { zIndex: this.elt.findZIndex() + 9000 }, child: { tag: MessageDialog/* default.tag */.Z.tag, props: { dialogTitle: 'Tải lên', }, child: contentElt } }).addTo(document.body); //because file system in keeview not allow writing multiple file at the same time var syncs = files.reduce((sync, file, i) => { var percentText = (0,ACore.$)('.as-upload-percent', contentElt.firstChild.childNodes[i]); return sync.then(()=>{ return this.elt.fileSystem.writeFile(this.elt.path + '/' + file.name, file, done => { var textBound = percentText.getBoundingClientRect(); var ctnBound = contentElt.getBoundingClientRect(); if (textBound.bottom > ctnBound.bottom) { contentElt.scrollTop += textBound.bottom - ctnBound.bottom; } percentText.firstChild.data = Math.round(done * 100) + '%'; }); }); }, Promise.resolve()); syncs.then(() => { this.elt.navCtrl.reload(this.elt.path, true).then(() => modal.remove()); }); }; UploadController.prototype.ev_fileEnter = function (event) { var files = Array.prototype.slice.call(event.dataTransfer.files); if (files.length === 0) return; }; UploadController.prototype.ev_fileDrop = function (event) { if (this.elt.searchCtrl.state === "RUNNING") return; var files = event.files; if (files.length > 0) this.upload(files); }; /*** * @extends EventEmitter * @param {Finder} elt * @constructor */ function FolderDialog(elt) { EventEmitter/* default.call */.ZP.call(this); this.elt = elt; } OOP/* default.mixClass */.ZP.mixClass(FolderDialog, EventEmitter/* default */.ZP); FolderDialog.prototype._init = function () { if (this.$modal) return; this.$modal = (0,ACore._)({ tag: 'modal', class: 'as-finder-folder-dialog-modal', child: { tag: MessageDialog/* default.tag */.Z.tag, props: { dialogTitle: 'Duyệt thư mục', dialogActions: [ { name: 'ok', text: 'OK' }, { name: 'cancel', text: 'Hủy' } ] }, child: [ { class: 'as-finder-folder-dialog-content', child: [ { class: 'as-finder-folder-dialog-selected-ctn', child: [ { tag: 'span', child: { text: 'Đã chọn thư mục: ' } }, { tag: 'span', child: { text: ' ... ' } } ] }, { class: 'as-finder-folder-dialog-tree-ctn', child: [ { tag: ExpTree/* ExpGroup.tag */.uz.tag }, { tag: ExpTree/* ExpTree.tag */.yb.tag, class: 'as-finder-folder-dialog-tree-root', props: { name: 'root', icon: 'span.mdi.mdi-harddisk' } } ] } ] } ] } }); this.$dialog = (0,ACore.$)(MessageDialog/* default.tag */.Z.tag, this.$modal); this.$treeCtn = (0,ACore.$)('.as-finder-folder-dialog-tree-ctn', this.$modal); this.$rootTree = (0,ACore.$)('.as-finder-folder-dialog-tree-root', this.$modal); this.$content = (0,ACore.$)('.as-finder-folder-dialog-content', this.$modal); this.$expGroup = (0,ACore.$)(ExpTree/* ExpGroup.tag */.uz.tag, this.$content); this.$selectedCtn = (0,ACore.$)('.as-finder-folder-dialog-selected-ctn', this.$content); this.$selectedPath = this.$selectedCtn.childNodes[1]; this.$activeNode = null; } FolderDialog.prototype.open = function (initPath, showRoot, checkFunc, title) { var cPath = initPath; this._init(); var fileSystem = this.elt.fileSystem; var zIndex = this.elt.findZIndex() + 9000; this.$modal.addStyle('z-index', zIndex + ''); this.$modal.addTo(document.body); if (this.$activeNode) { this.$activeNode.active = false; this.$activeNode = null; } this.$dialog.$actionBtns[0].disabled = true; this.$dialog.dialogTitle = title || 'Duyệt'; var makeTree = (path, ctnElt, level) => { level = level || 0; return fileSystem.readDir(path).then(dirs => Promise.all(dirs.map(dir => fileSystem.stat(path + '/' + dir)))) .then(stats => stats.filter(stat => { return stat.isDirectory })) .then(stats => { var syncs = []; ctnElt.clearChild(); var children = stats.map(stat => { var nodePath = path + '/' + stat.name; var node = (0,ACore._)({ tag: ExpTree/* ExpTree.tag */.yb.tag, props: { stat: stat, name: stat.displayName || stat.name, icon: { tag: 'img', props: { src: MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/folder.svg' } }, path: nodePath }, on: { statuschage: () => { }, press: () => { if (this.$activeNode) this.$activeNode.active = false; this.$activeNode = node; this.$activeNode.active = true; this.$selectedPath.firstChild.data = node.getPath().join('/'); cPath = nodePath; if (checkFunc && !checkFunc(cPath, stat)) { this.$dialog.$actionBtns[0].disabled = true; } else { this.$dialog.$actionBtns[0].disabled = false; } } } }); if (nodePath === cPath) { node.active = true; this.$activeNode = node; } if (checkFunc && !checkFunc(nodePath, stat)) { node.getNode().addStyle('opacity', 0.3 + ''); } node.getNode().on({ dblclick: () => { if (node.status === 'close') { node.status = 'open'; } else if (node.status === 'open') { node.status = 'close'; } } }); if (stat.name !== 'node_modules') syncs.push(makeTree(nodePath, node, level + 1)); return node; }); children.forEach(c => { ctnElt.addChild(c); }); if (children.length) { ctnElt.status = level > 1 ? 'close' : 'open'; } else { ctnElt.status = 'none'; } return Promise.all(syncs); }); } var onRootPress; if (showRoot) { this.$expGroup.addStyle('display', 'none'); this.$rootTree.removeStyle('display'); if (cPath === this.elt.rootPath) { this.$activeNode = this.$rootTree; this.$activeNode.active = true; } onRootPress = () => { var node = this.$rootTree; var nodePath = this.elt.rootPath; if (this.$activeNode) this.$activeNode.active = false; this.$activeNode = node; this.$activeNode.active = true; this.$selectedPath.firstChild.data = node.getPath().join('/'); cPath = nodePath; if (cPath === initPath || (checkFunc && !checkFunc(cPath, { writable: true }))) { this.$dialog.$actionBtns[0].disabled = true; } else { this.$dialog.$actionBtns[0].disabled = false; } }; this.$rootTree.on('press', onRootPress); } else { this.$expGroup.removeStyle('display'); this.$rootTree.addStyle('display', 'none'); } makeTree(this.elt.rootPath, showRoot ? this.$rootTree : this.$expGroup).then(() => { var p; if (this.$activeNode) { this.$selectedPath.firstChild.data = this.$activeNode.getPath().join('/'); p = this.$activeNode.getParent(); while (p) { if (p.status === 'close') { p.status = 'open'; } p = p.getParent && p.getParent(); } setTimeout(() => { (0,utils.vScrollIntoView)(this.$activeNode.firstChild); }, 10) } }); return new Promise((resolve) => { var finish = (event) => { this.$dialog.off('action', finish); this.$modal.remove(); if (event.action.name === 'cancel') resolve(null); else resolve(cPath); if (onRootPress) { this.$rootTree.off('press', onRootPress); } } this.$dialog.on('action', finish); }); }; var isMatchAccept = (accept, statInfo) => { if (accept && (typeof accept === "object") && accept.accept) accept = accept.accept; if (typeof accept !== "string") return true; if (!accept) return true; if (statInfo.isDirectory) return true; var fileInfo = (0,utils.fileInfoOf)(statInfo); if (accept.startsWith('image')) { return fileInfo.mimeType && fileInfo.mimeType.startsWith('image'); } return true;// not handle other case } /*** * * @param {Finder} elt * @constructor */ function NavigatorController(elt) { this.elt = elt; this.path = ''; this.rootPath = ''; this._states = {}; this._notifiedVisibleIdx = 0; this.$navCtn = this.elt.$navCtn; this.$nav = this.elt.$nav; this.$contentCtn = this.elt.$contentCtn; this.$content = this.elt.$content; Object.keys(this.constructor.prototype).forEach(key => { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } }); this.$contentCtn.on('scroll', this.ev_contentScroll); } NavigatorController.prototype.onStart = function () { /** * * @type {AbsolFileSystem} */ this.fileSystem = this.elt.fileSystem; this.$treeByPath = {}; this.$treeByPath[this.rootPath || '..'] = this.$nav; this.reload(this.rootPath, true); }; NavigatorController.prototype.reload = function (fromPath, autoOpen) { var opened = !autoOpen; var makeTree = (path, ctnElt) => { if (!opened && ctnElt.path) { this.viewDir(ctnElt.path, [this.elt.rootPath].concat(ctnElt.getPath()).join('/')); opened = true; } return this.fileSystem.readDir(path).then(dirs => Promise.all(dirs.map(dir => this.fileSystem.stat(path + '/' + dir)))) .then(stats => stats.filter(stat => { return stat.isDirectory })) .then(stats => { var syncs = []; ctnElt.clearChild(); var children = stats.map(stat => { var nodePath = path + '/' + stat.name; var node = (0,ACore._)({ tag: ExpTree/* ExpTree.tag */.yb.tag, props: { stat: stat, name: stat.displayName || stat.name, icon: { tag: 'img', props: { src: MessageInput/* default.iconAssetRoot */.ZP.iconAssetRoot + '/folder.svg' } }, path: nodePath, }, on: { statuschage: () => { this._states[path + '/' + stat.name] = node.status; }, press: () => { if (this.path !== nodePath) this.viewDir(nodePath, [this.elt.rootPath].concat(node.getPath()).join('/')); } } }); node.getNode().on({ dblclick: () => { if (node.status === 'close') { node.status = 'open'; } else if (node.status === 'open') { node.status = 'close'; } this._states[nodePath] = node.status; } }); this.$treeByPath[nodePath] = node; if (stat.name !== 'node_modules') syncs.push(makeTree(nodePath, node)); if (!opened) { this.viewDir(nodePath, [this.elt.rootPath].concat(node.getPath()).join('/')); opened = true; } return node; }); children.forEach(c => { ctnElt.addChild(c); }); if (children.length) { if (this._states[ctnElt.path] === 'close' || this._states[ctnElt.path] === 'open') { ctnElt.status = this._states[ctnElt.path]; } else { ctnElt.status = 'close'; } } else { ctnElt.status = 'none'; } return Promise.all(syncs); }); } if (this.$treeByPath[fromPath || '..']) return makeTree(fromPath, this.$treeByPath[fromPath || '..']); return Promise.resolve(); }; NavigatorController.prototype.viewDir = function (path) { this.elt.selectCtrl.deselectAll(); if (this.$treeByPath[this.path]) { this.$treeByPath[this.path].active = false; this.$treeByPath[this.path].active = false; } this.path = path; this.$treeByPath[this.path].active = true; var c = this.$treeByPath[this.path].getParent(); while (c) { if (c.status === 'close') c.status = 'open'; c = c.getParent && c.getParent(); } (0,utils.vScrollIntoView)(this.$treeByPath[this.path].firstChild); this.fileSystem.stat(path).then(stat => { this.elt.dirStat = stat; if (this.path !== path) return; if (stat.writable) this.elt.addClass('as-writable-folder'); else this.elt.removeClass('as-writable-folder'); if (stat.isVirtual) { this.elt.addClass('as-virtual-folder'); } else { this.elt.removeClass('as-virtual-folder'); } }) this.fileSystem.readDir(path).then(dirs => Promise.all(dirs.map(dir => this.fileSystem.stat(path + '/' + dir)))) .then(stats => { if (this.path !== path) return; stats.sort((a, b) => { var aName, bName; if (a.isDirectory === b.isDirectory) { aName = a.displayName || a.name; bName = b.displayName || b.name; if (aName < bName) return -1; return 1; } else { if (a.isDirectory) return -1; return 1; } }); stats = stats.filter(x => isMatchAccept(this.elt.accept, x)); this.viewContent(stats); }); }; NavigatorController.prototype.viewContent = function (stats) { this.clearContent(); stats.forEach(stat => { this.pushContentItem(stat); }); this.notifyVisibleContentItems(); }; NavigatorController.prototype.clearContent = function () { this._notifiedVisibleIdx = 0; this.$content.clearChild(); }; NavigatorController.prototype.pushContentItem = function (stat) { var elt = (0,ACore._)({ tag: finder_FileThumbnail.tag, extendEvent: ['visible'], attr: { title: stat.displayName || stat.name }, props: { isDirectory: stat.isDirectory, value: stat.url, fileName: stat.displayName || stat.name, stat: stat }, on: { visible: () => { var mineType = ext2MineType/* default */.Z[elt.fileType]; if (mineType && mineType.startsWith('image/')) { elt.thumbnail = stat.url; } }, dblclick: () => { var prevented = false; var event; if (!stat.isDirectory) { event = { fileElt: elt, stat: stat, preventDefault: () => { prevented = true; } }; this.elt.emit('dblclickfile', event); } if (!prevented) this.elt.execCommand('view'); } } }); this.$content.addChild(elt); }; NavigatorController.prototype.notifyVisibleContentItems = function () { var elt; var bound = this.$contentCtn.getBoundingClientRect(); var eBound; while (this._notifiedVisibleIdx < this.$content.childNodes.length) { elt = this.$content.childNodes[this._notifiedVisibleIdx]; eBound = elt.getBoundingClientRect(); if (eBound.top < bound.bottom) { elt.emit('visible'); } else { break; } this._notifiedVisibleIdx++; } }; NavigatorController.prototype.expandAll = function () { var visit = nodeElt => { if (nodeElt.status === 'close') { nodeElt.status = 'open'; this._states[nodeElt.path] = 'open'; } if (nodeElt.status === 'open') { nodeElt.getChildren().forEach(visit); } }; Array.prototype.forEach.call(this.$nav.childNodes, visit); }; NavigatorController.prototype.collapseAll = function () { var visit = nodeElt => { if (nodeElt.status === 'open') { nodeElt.status = 'close'; this._states[nodeElt.path] = 'close'; } if (nodeElt.status === 'close') { nodeElt.getChildren().forEach(visit); } }; Array.prototype.forEach.call(this.$nav.childNodes, visit); }; NavigatorController.prototype.ev_contentScroll = function (event) { this.notifyVisibleContentItems(); }; var fileTextQuery2Regex = text => { var code = (0,stringFormat.nonAccentVietnamese)(text.toLowerCase()) .replace(/[.,+^$()\[\]{}|\\]/g, x => '\\' + x) .replace(/\*+/g, '(.*)') .replace(/\?/g, '.'); return new RegExp(code, 'i'); } /*** * @extends Context * @param {Finder} elt * @constructor */ function SearchController(elt) { Context/* default.apply */.Z.apply(this); this.elt = elt; this.$searchText = this.elt.$searchText.on('keydown', event => { if (event.key === 'Enter') { this.$searchText.blur(); this.search(); } }); } OOP/* default.mixClass */.ZP.mixClass(SearchController, Context/* default */.Z); SearchController.prototype.onStart = function () { // console.log('start') this.elt.addClass('as-searching'); this.$searchText.value = ''; this.$searchText.focus(); }; SearchController.prototype.onStop = function () { this.elt.removeClass('as-searching'); this.session = (0,stringGenerate.randomIdent)(10); this.$searchText.waiting = false; }; SearchController.prototype.search = function () { var session = (0,stringGenerate.randomIdent)(10); this.session = session; this.elt.navCtrl.clearContent(); this.$searchText.waiting = true; var fileSystem = this.elt.fileSystem; var rootPath = this.elt.rootPath; var result = []; var type = this.elt.$searchTypeSelect.value; var text = this.$searchText.value.trim(); var regex = fileTextQuery2Regex(text); var isMatched = stat => { var fileInfo = (0,utils.fileInfoOf)(stat.displayName || stat.name); var mineType = fileInfo.mimeType || ''; var fileType = fileInfo.type || ''; fileType = fileType.toLowerCase(); if (mineType && type !== 'all') { if (type === 'image' && !mineType.startsWith('image') && type !== 'svg') { return false; } else if (type === 'document' && ['doc', 'docx', 'pdf', 'xlsx'].indexOf(fileType) < 0 && !mineType.startsWith('text')) { return false; } } if (text.length === 0) return true; if (stat.displayName && stat.displayName.match(regex)) return true; if (stat.name && (0,stringFormat.nonAccentVietnamese)(stat.name.toLowerCase()).match(regex)) return true; return false; } var handleStat = stat => { if (session !== this.session) return; if (stat.isDirectory) return new Promise(rs => { setTimeout(() => { rs(visitDir(stat.path)); }, 5); }); if (isMatched(stat)) { this.elt.navCtrl.pushContentItem(stat); this.elt.navCtrl.notifyVisibleContentItems(); } }; var handleDirResult = (dir, names) => { var syncs = names.map(name => { return fileSystem.stat(dir + '/' + name).then(stat => { if (session !== this.session) return; if (stat) return handleStat(stat); }); }); return Promise.all(syncs); } var visitDir = path => { return fileSystem.readDir(path).then((names => handleDirResult(path, names))); } visitDir(rootPath).then(() => { if (session !== this.session) return; this.$searchText.waiting = false; }); }; /*** * * @constructor */ function FinderFileSystem() { } FinderFileSystem.prototype.supporteDisplayName = false; FinderFileSystem.prototype.readDir = function (path) { }; FinderFileSystem.prototype.unlink = function (path) { console.log(path); }; FinderFileSystem.prototype.stat = function (path) { }; FinderFileSystem.prototype.rmdir = function (path) { }; FinderFileSystem.prototype.mkdir = function (path) { }; FinderFileSystem.prototype.writeFile = function (file, data) { }; FinderFileSystem.prototype.copy = function () { }; FinderFileSystem.prototype.rename = function (path, name) { }; FinderFileSystem.prototype.move = function (oldPath, newPath) { }; FinderFileSystem.prototype.clearCache = function () { }; /*** * @extends FinderFileSystem * @constructor */ function AbsolFileSystem() { FinderFileSystem.apply(this, arguments); this.sync = Promise.resolve(); this.cache = { readDir: {}, stats: {} }; this.taskMng = new AppPattern_TaskManager({ limit: 4 }); } OOP/* default.mixClass */.ZP.mixClass(AbsolFileSystem, FinderFileSystem); AbsolFileSystem.prototype.API_PREFIX = location.href.indexOf('localhost') >= 0 ? 'https://absol.cf' : ''; AbsolFileSystem.prototype.clearCache = function () { this.cache = { readDir: {}, stats: {} }; }; AbsolFileSystem.prototype.readDir = function (path) { this.sync = this.sync.then(() => { if (this.cache.readDir[path || '..']) return this.cache.readDir[path || '..']; return fetch(this.API_PREFIX + '/filesystem/ls.php', { method: 'POST', cache: "no-cache", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ path: path }) }).then(res => res.json()).then(res => { res = res.filter(c => c.path.startsWith('/html')); res.forEach(c => { c.name = c.path.split('/').pop(); c.url = c.path.replace('/html', this.API_PREFIX ||location.origin) }); this.cache.readDir[path || '..'] = res.map(c => c.name); res.forEach(c => { this.cache.stats[c.path] = c; }); }).then(() => { return this.cache.readDir[path || '..']; }); }); return this.sync; }; AbsolFileSystem.prototype.stat = function (path) { return this.sync.then(() => { path = path || ''; if (this.cache.stats[path || '..']) return this.cache.stats[path || '..']; var dir = path.split('/'); dir.pop(); dir = dir.join('/'); return this.readDir(dir).then(() => { return this.cache.stats[path || '..']; }) }); } /*** * * @param file * @param {File|Blob}data * @param {function(done: number):void=}onProcess */ AbsolFileSystem.prototype.writeFile = function (file, data, onProcess) { if (file.toLowerCase().endsWith('.php')) file += '.txt'; var folderPath = file.split('/'); folderPath.pop(); folderPath = folderPath.join('/'); delete this.cache.readDir[folderPath]; var prefix = ['file', new Date().getTime(), (0,random/* randomArbitrary */.Ld)(0, 1000000) >> 0].join('_'); var parts = []; var chuck_limit = 2 << 20; var partName; var fileSize = data.size; var fileStartOffset = 0; var fileEndOffset = 0; var idx = 0; var syncs = []; var syncDone = 0; var bundle; var began = false; var handle = bundle => { return new Promise(rs => { this.taskMng.requestTask((finishTask, bundle) => { if (typeof onProcess === "function" && !began) { began = true; onProcess(syncDone / (syncs.length || 1)); } var form = new FormData(); form.append('action', 'upload_part'); form.append('fileUpload', bundle.file, bundle.name); fetch(this.API_PREFIX + '/filesystem/writefile.php', { method: 'POST', body: form }).then(res => res.text()).then(text => { if (text !== 'OK') throw new Error(text); syncDone++; if (typeof onProcess === "function") { onProcess(syncDone / (syncs.length || 1)); } rs(location.origin); finishTask(); }); }, bundle); }) } while (fileStartOffset < fileSize) { fileEndOffset = Math.min(fileStartOffset + chuck_limit, fileSize); partName = prefix + '.p' + idx; parts.push(partName); bundle = { file: data.slice(fileStartOffset, fileEndOffset), idx: idx, name: partName }; idx++; fileStartOffset = fileEndOffset; syncs.push(handle(bundle)); } return Promise.all(syncs).then(() => { var form = new FormData(); form.append('action', 'join_parts'); form.append('parts', parts.join(';')); form.append('path', file); fetch(this.API_PREFIX + '/filesystem/writefile.php', { method: 'POST', body: form }).then(res => res.text()).then(text => { if (text !== 'OK') throw new Error(text); }); }); }; AbsolFileSystem.prototype.unlink = function (path) { var folderPath = path.split('/'); folderPath.pop(); folderPath = folderPath.join('/'); delete this.cache.readDir[folderPath]; var form = new FormData(); form.append('action', 'delete_files'); form.append('paths', path); return fetch(this.API_PREFIX + '/filesystem/writefile.php', { method: 'POST', body: form }).then(res => res.text()).then(text => { if (text !== 'OK') throw new Error(text); }); }; AbsolFileSystem.prototype.rename = function (path, name) { var folderPath = path.split('/'); folderPath.pop(); folderPath = folderPath.join('/'); var form = new FormData(); form.append('action', 'rename'); form.append('path', path); form.append('new_name', name); return fetch(this.API_PREFIX + '/filesystem/writefile.php', { method: 'POST', body: form }).then(res => res.text()).then(text => { if (text !== 'OK') throw new Error(text); var newPath = folderPath + '/' + name; delete this.cache.readDir[folderPath]; delete this.cache.stats[path]; return { url: newPath.replace('/html', this.API_PREFIX || location.origin), path: newPath, name: name } }); }; AbsolFileSystem.prototype.move = function (oldPath, newPath) { var oldFolderPath = oldPath.split('/'); oldFolderPath.pop(); oldFolderPath = oldFolderPath.join('/'); var newFolderPath = newPath.split('/'); newFolderPath.pop(); newFolderPath = newFolderPath.join('/'); var form = new FormData(); form.append('action', 'move'); form.append('old_path', oldPath); form.append('new_path', newPath); return fetch(this.API_PREFIX + '/filesystem/writefile.php', { method: 'POST', body: form }).then(res => res.text()).then(text => { if (text !== 'OK') throw new Error(text); delete this.cache.readDir[oldFolderPath]; delete this.cache.readDir[newFolderPath]; delete this.cache.stats[oldPath]; }); }; /***/ }), /***/ 103: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1477); /*** * * @param {SelectionItem[]} arr * @constructor */ function ItemDictionary(arr, opt) { this.opt = Object.assign({ depth: true }, opt || {}); this.arr = arr; this.dict = {}; this.dupKeys = []; this.update(); } ItemDictionary.prototype.update = function () { this.dict = {}; var dict = this.dict; var depth = this.opt.depth; var dupKeyDict = {}; function scan(arr) { var item; var key; for (var i = 0; i < arr.length; ++i) { item = arr[i]; key = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.keyStringOf)(item.value); if (dict[key]) { dict[key].dupItems = dict[key].dupItems || []; dict[key].dupItems.push(item); dupKeyDict[key] = 1; } else { dict[key] = { idx: i, item: item }; } if (depth && item.items && item.items.length > 0) { scan(item.items); } } } scan(this.arr); this.dupKeys = Object.keys(dupKeyDict); }; /*** * * @param {String | Number} value * @returns {SelectionItem | null} */ ItemDictionary.prototype.getItemByValue = function (value) { var iDict = this.dict[(0,_utils__WEBPACK_IMPORTED_MODULE_0__.keyStringOf)(value)]; if (iDict) return iDict.item; return null; }; /*** * * @param {String | Number} value * @returns {Array<SelectionItem> } */ ItemDictionary.prototype.getAllItemByValue = function (value) { var key = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.keyStringOf)(value); var iDict = this.dict[key]; if (iDict) return [iDict.item].concat(iDict.dupItems[key] || []); return []; }; ItemDictionary.prototype.getDuplicateKeys = function () { return this.dupKeys; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ItemDictionary); /***/ }), /***/ 4623: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ list_ListSearchMaster) }); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate = __webpack_require__(1334); // EXTERNAL MODULE: ./node_modules/absol/src/Network/Thread.js + 1 modules var Thread = __webpack_require__(6672); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/list/ListSearchFactor.js function ListSearchFactor(global) { /*** * @typedef SelectionItem2 * @property {String} text * @property {String} desc * @property {String} __text__ * @property {String} __nvnText__ * @property {Array<String>} __words__ * @property {Array<String>} __nvnWords__ * @property {object} __wordDict__ * @property {object} __nvnWordDict__ * @module SelectionItem2 */ function revokeResource(o) { if (!o) return; var oc, ocs; var keys, key; if (Array.isArray(o)) { while (o.length) { oc = o.pop(); try { revokeResource(oc); } catch (err) { } } } else if (o.removeResource) { o.removeResource(); } else if (typeof o === "object") { keys = []; ocs = []; for (key in o) { keys.push(key); } while (keys.length) { key = keys.pop(); ocs.push(o[keys]); try { delete o[key]; } catch (err) { } } while (ocs.length) { try { revokeResource(ocs.pop()); } catch (err) { } } } ocs = undefined; oc = undefined; keys = undefined; key = undefined; o = undefined; } 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, ""); } function harmonicMean(a, b) { return 2 / (1 / a + 1 / 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); } 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)]; } var EXTRA_MATCH_SCORE = 9; var NVN_EXTRA_MATCH_SCORE = 8; var EQUAL_MATCH_SCORE = 10; var WORD_MATCH_SCORE = 3; var HAS_WORD_SCORE = 30; var HAS_NVN_WORD_SCORE = 29; /*** * * @param {SelectionItem2} item * @returns {*} */ function prepareSearchForItem(item) { if (!item.text || !item.text.charAt) item.text = item.text + ''; var splitter = /([_\s\b\-()\[\]"']| | | ")+/g; var text = item.text.replace(splitter, ' '); var __words__ = text.split(/\s+/).filter(w=>!!w).map(w=>w.toLowerCase()); var __text__ = __words__.join(' '); var __wordDict__ = __words__.reduce((ac, cr, i) => { ac[cr] = ac[cr] || i + 1; return ac; }, {}); var __nvnText__ = nonAccentVietnamese(__text__); var __nvnWords__ = __words__.map(w=>nonAccentVietnamese(w)); var __nvnWordDict__ = __nvnWords__.reduce((ac, cr, i) => { ac[cr] = ac[cr] || i + 1; return ac; }, {}); Object.defineProperties(item, { __text__: { configurable: true, enumerable: false, writable: true, value: __text__ }, __words__: { configurable: true, enumerable: false, writable: true, value: __words__ }, __wordDict__: { configurable: true, enumerable: false, writable: true, value: __wordDict__ }, __textNoneCase__: { configurable: true, enumerable: false, writable: true, value: __text__ }, __wordsNoneCase__: { configurable: true, enumerable: false, writable: true, value: __words__ }, __nvnText__: { configurable: true, enumerable: false, writable: true, value: __nvnText__ }, __nvnWords__: { configurable: true, enumerable: false, writable: true, value: __nvnWords__ }, __nvnWordDict__: { configurable: true, enumerable: false, writable: true, value: __nvnWordDict__ }, __nvnTextNoneCase__: { configurable: true, enumerable: false, writable: true, value: __nvnText__ }, __nvnWordsNoneCase__: { configurable: true, enumerable: false, writable: true, value: __nvnWords__ } }); return item; } function isItemMustIncluded(queryItem, item) { if (!queryItem) return true; if (item.__nvnText__.indexOf(queryItem.__nvnText__) >= 0) { return true; } var dict1 = queryItem.__nvnWordDict__; var dict2 = item.__nvnWordDict__; for (var i in dict1) { for (var j in dict2) { if (j.indexOf(i) < 0) return false; } } return true; } function calcItemMatchScore(queryItem, item) { var score = 0; if (!item.__text__) return 0; function calcByWordDict(queryWords, wordDict) { var hwScore = 0; var i; wordDict = Object.assign({}, wordDict); var bestWordMatched, bestWordMatchScore = 0; var word, wordScore; for (i = 0; i < queryWords.length; ++i) { bestWordMatchScore = 0; bestWordMatched = null; for (word in wordDict) { wordScore = wordLike(word, queryWords[i]) - 1e-3 * wordDict[word]; if (wordScore > bestWordMatchScore) { bestWordMatched = word; bestWordMatchScore = wordScore; } } if (bestWordMatchScore >0) { hwScore += bestWordMatchScore * WORD_MATCH_SCORE; delete wordDict[bestWordMatched]; } } return hwScore; } score += calcByWordDict(queryItem.__words__, item.__wordDict__); score += calcByWordDict(queryItem.__nvnWords__, item.__nvnWordDict__); if (item.__text__ === queryItem.__text__) { score += EQUAL_MATCH_SCORE; } var extraIndex = item.__text__.indexOf(queryItem.__text__); if (extraIndex >= 0) { score += EXTRA_MATCH_SCORE; } extraIndex = item.__nvnText__.indexOf(queryItem.__nvnText__); if (extraIndex >= 0) { score += EXTRA_MATCH_SCORE; } score += Math.max(wordsMatch(queryItem.__words__, item.__words__), wordsMatch(queryItem.__nvnWords__, item.__nvnWords__))/ Math.max(queryItem.__words__.length + 1, 1); return score; } function scoreCmp(a, b) { if (b.score === a.score) { if (b.item.__nvnText__ > a.item.__nvnText__) return -1; return 1; } return b.score - a.score; } function keyStringOf(o) { var type = typeof o; var keys; if (o && type === "object") { if (o.getTime) { return 'd(' + o.getTime() + ')'; } else if (o.length && o.map) { return 'a(' + o.map(val => keyStringOf(val)).join(',') + ')'; } else { keys = Object.keys(o); keys.sort(); return 'o(' + keys.map(key => key + ':' + keyStringOf(o[key])).join(',') + ')'; } } else { return type[0] + '(' + o + ')'; } } function matchFilter(item, filter) { if (!filter) return true; var keys = item.keys; if (!keys) return false; for (var i in filter) { if (!keyCmp(keys[i], filter[i])) return false; } return true; } function toComparable(x) { if (!x) return x; var type = typeof x; if (type === 'string') return x; if (type === "number") return x; if (type === "boolean") return x; if (type.getTime) return type.getTime(); return x; } function keyCmp(itemKey, filterKey) { if (itemKey === filterKey) return true; if (!itemKey !== !filterKey) return false; if (!itemKey || !filterKey) return false; var filterKeyString = keyStringOf(filterKey) function withFilter(x) { var xString = keyStringOf(x) var res = xString === filterKeyString; if (!res && (typeof filterKey === "object")) { if (filterKey.some) { res = filterKey.some(function (y) { return keyStringOf(y) === x; }); } else if (('min' in filterKey) || ('max' in filterKey)) { res = true; if ('min' in filterKey) { res = res && toComparable(x) >= toComparable(filterKey.min); } if ('max' in filterKey) { res = res && toComparable(x) <= toComparable(filterKey.max); } } } return res; } if (itemKey.some) { return itemKey.some(withFilter); } else return withFilter(itemKey); } function Slave() { this.items = []; } Slave.prototype.revokeResource = function () { revokeResource(this.items); this.items = undefined; } Slave.prototype.processItems = function (items) { this.items = items; this.items.forEach(function visit(item) { prepareSearchForItem(item); if (item.items) item.items.forEach(visit); }) }; Slave.prototype.callQuery = function (query) { prepareSearchForItem(query); var minScore = Infinity; var maxScore = -Infinity; var scoreHolders = this.items.map(function visit(item) { var res = {}; res.score = calcItemMatchScore(query, item); res.mustIncluded = isItemMustIncluded(query, item); res.value = item.value; res.maxChildScore = -Infinity; if (item.items) { res.child = item.items.map(visit); res.maxChildScore = res.child.reduce((ac, cr) => Math.max(ac, cr.maxChildScore, cr.score), res.maxChildScore); } minScore = Math.min(minScore, res.score); maxScore = Math.max(maxScore, res.score); return res; }); var threshold = maxScore - (maxScore - minScore) / 4; if (maxScore < 3) threshold = maxScore - (maxScore - minScore) / 8; var resDict = scoreHolders.reduce(function rValue(ac, cr) { if (Math.max(cr.maxChildScore, cr.score) >= threshold || cr.mustIncluded) ac[cr.value] = [cr.score, cr.maxChildScore]; if (cr.child) cr.child.reduce(rValue, ac); return ac; }, {}); return resDict; }; var slaves = {}; global.transferSearchItems = function (id, items) { if (!slaves[id]) slaves[id] = new Slave(); slaves[id].processItems(items); }; global.callQuery = function (id, query) { if (slaves[id]) return slaves[id].callQuery(query); return null; }; global.destroySlave = function (id) { revokeResource(slaves); delete slaves[id]; }; } // EXTERNAL MODULE: ./node_modules/absol-acomp/js/utils.js var utils = __webpack_require__(1477); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/list/ListSearchMaster.js function ListSearchMaster() { this.prepare(); this.id = (0,stringGenerate.randomIdent)(8); this.cache = {}; this.share.instances.push(this.id); } ListSearchMaster.prototype.share = { worker: null, instances: [] }; ListSearchMaster.prototype.prepare = function () { if (this.share.worker) return; this.share.worker = new Thread/* default */.Z({ methods: { init: ListSearchFactor }, extendCode: 'init(this)' }); }; ListSearchMaster.prototype.transfer = function (items) { this.prepare(); this.cache = {}; return this.share.worker.invoke('transferSearchItems', this.id, items); }; ListSearchMaster.prototype.query = function (query) { var key = (0,utils.calcDTQueryHash)(query); if (!this.cache[key]) { this.cache[key] = this.share.worker.invoke('callQuery', this.id, query); } return this.cache[key]; }; ListSearchMaster.prototype.destroy = function () { // return; this.cache = {}; this.share.worker.invoke('destroySlave', this.id); var idx = this.share.instances.indexOf(this.id); this.destroy = noop/* default */.Z; if (idx >= 0) { this.share.instances.splice(idx, 1); } }; ListSearchMaster.prototype.revokeResource = function () { }; /* harmony default export */ const list_ListSearchMaster = (ListSearchMaster); /***/ }), /***/ 2551: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (/* binding */ prepareSearchForItem), /* harmony export */ "Lb": () => (/* binding */ prepareSearchForList), /* harmony export */ "lk": () => (/* binding */ calcItemMatchScore), /* harmony export */ "o": () => (/* binding */ searchListByText), /* harmony export */ "$l": () => (/* binding */ searchTreeListByText) /* harmony export */ }); /* unused harmony export searchCheckListByText */ /* harmony import */ var absol_src_String_stringFormat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6382); /* harmony import */ var absol_src_String_stringMatching__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(991); var UNCASE_MATCH_SCORE = 4; var UVN_MATCH_SCORE = 3; var EXTRA_MATCH_SCORE = 9; var NVN_EXTRA_MATCH_SCORE = 8; var EQUAL_MATCH_SCORE = 10; var WORD_MATCH_SCORE = 3; var HAS_WORD_SCORE = 30; var HAS_NVN_WORD_SCORE = 29; /*** * * @param {SelectionItem} item * @returns {*} */ function prepareSearchForItem(item) { if (!item.text || !item.text.charAt) item.text = item.text + ''; var splitter = /([_\s\b\-()\[\]"']| | | ")+/g; var text = item.text.replace(splitter, ' '); var __words__ = text.split(/\s+/).filter(w=>!!w).map(w=>w.toLowerCase()); var __text__ = __words__.join(' '); var __wordDict__ = __words__.reduce((ac, cr, i) => { ac[cr] = ac[cr] || i + 1; return ac; }, {}); var __nvnText__ = (0,absol_src_String_stringFormat__WEBPACK_IMPORTED_MODULE_0__.nonAccentVietnamese)(__text__); var __nvnWords__ = __words__.map(w=>(0,absol_src_String_stringFormat__WEBPACK_IMPORTED_MODULE_0__.nonAccentVietnamese)(w)); var __nvnWordDict__ = __nvnWords__.reduce((ac, cr, i) => { ac[cr] = ac[cr] || i + 1; return ac; }, {}); Object.defineProperties(item, { __text__: { configurable: true, enumerable: false, writable: true, value: __text__ }, __words__: { configurable: true, enumerable: false, writable: true, value: __words__ }, __wordDict__: { configurable: true, enumerable: false, writable: true, value: __wordDict__ }, __textNoneCase__: { configurable: true, enumerable: false, writable: true, value: __text__ }, __wordsNoneCase__: { configurable: true, enumerable: false, writable: true, value: __words__ }, __nvnText__: { configurable: true, enumerable: false, writable: true, value: __nvnText__ }, __nvnWords__: { configurable: true, enumerable: false, writable: true, value: __nvnWords__ }, __nvnWordDict__: { configurable: true, enumerable: false, writable: true, value: __nvnWordDict__ }, __nvnTextNoneCase__: { configurable: true, enumerable: false, writable: true, value: __nvnText__ }, __nvnWordsNoneCase__: { configurable: true, enumerable: false, writable: true, value: __nvnWords__ } }); 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__) return 0; function calcByWordDict(queryWords, wordDict) { var hwScore = 0; var i; wordDict = Object.assign({}, wordDict); var bestWordMatched, bestWordMatchScore = 0; var word, wordScore; for (i = 0; i < queryWords.length; ++i) { bestWordMatchScore = 0; bestWordMatched = null; for (word in wordDict) { wordScore = (0,absol_src_String_stringMatching__WEBPACK_IMPORTED_MODULE_1__.wordLike)(word, queryWords[i]) - 1e-3 * wordDict[word]; if (wordScore > bestWordMatchScore) { bestWordMatched = word; bestWordMatchScore = wordScore; } } if (bestWordMatchScore >0) { hwScore += bestWordMatchScore * WORD_MATCH_SCORE; delete wordDict[bestWordMatched]; } } return hwScore; } score += calcByWordDict(queryItem.__words__, item.__wordDict__); score += calcByWordDict(queryItem.__nvnWords__, item.__nvnWordDict__); if (item.__text__ === queryItem.__text__) { score += EQUAL_MATCH_SCORE; } var extraIndex = item.__text__.indexOf(queryItem.__text__); if (extraIndex >= 0) { score += EXTRA_MATCH_SCORE; } extraIndex = item.__nvnText__.indexOf(queryItem.__nvnText__); if (extraIndex >= 0) { score += EXTRA_MATCH_SCORE; } score += Math.max((0,absol_src_String_stringMatching__WEBPACK_IMPORTED_MODULE_1__.wordsMatch)(queryItem.__words__, item.__words__), (0,absol_src_String_stringMatching__WEBPACK_IMPORTED_MODULE_1__.wordsMatch)(queryItem.__nvnWords__, item.__nvnWords__))/ Math.max(queryItem.__words__.length + 1, 1); return score; } function isItemMustIncluded(queryItem, item) { if (!queryItem) return true; if (item.__nvnText__.indexOf(queryItem.__nvnText__) >= 0) { return true; } var dict1 = queryItem.__nvnWordDict__; var dict2 = item.__nvnWordDict__; for (var i in dict1) { for (var j in dict2) { if (j.indexOf(i) < 0) return false; } } return true; } /*** * * @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) { if (!item.__text__) prepareSearchForItem(item); return { item: item, score: calcItemMatchScore(queryItem, item), mustIncluded: isItemMustIncluded(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 || it.mustIncluded; }).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); var mustIncluded = isItemMustIncluded(queryItem, item); gmaxScore = Math.max(score, gmaxScore); gminScore = Math.min(score, gminScore); var children = (item.items || []).map(function (item) { return makeScoreRecursive(item); }); mustIncluded = mustIncluded || children.some(c => c.mustIncluded); var maxScore = children.reduce(function (ac, cr) { return Math.max(ac, cr.maxScore); }, score); return { score: score, maxScore: maxScore, item: item, children: children, mustIncluded: mustIncluded } } 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 || node.mustIncluded; }).map(function (node) { var res; if (typeof node.item == 'string') { res = node.item; } else { res = Object.assign({}, node.item); res.ref = 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; items = filterItems(scoredItems, medianScore); return items; } /*** * checked is bestValue * @param {String} query * @param {Array<SelectionItem|{checked:boolean, text: string}>} items */ function searchCheckListByText(query, items) { var res = items.filter(it=> it.checked); var nItems = items.filter(it=> !it.checked); prepareSearchForList(items); nItems = searchListByText(query, nItems); return res.concat(nItems); } /***/ }), /***/ 4877: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "RD": () => (/* binding */ MessageQuote), "ZP": () => (/* binding */ messageinput_MessageInput), "kW": () => (/* binding */ parseMessage) }); // UNUSED EXPORTS: MODE_EDIT, MODE_NEW, prepareIcon // EXTERNAL MODULE: ./node_modules/absol-acomp/css/messageinput.css var messageinput = __webpack_require__(1813); // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(3855); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/EventEmitter.js var EventEmitter = __webpack_require__(863); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/utils.js var utils = __webpack_require__(1477); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiAnims.js var EmojiAnims = __webpack_require__(4670); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiPicker.js var EmojiPicker = __webpack_require__(2948); // EXTERNAL MODULE: ./node_modules/absol/src/Detector/BrowserDetector.js var BrowserDetector = __webpack_require__(9399); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate = __webpack_require__(1334); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/CMDRunner.js var CMDRunner = __webpack_require__(2243); // EXTERNAL MODULE: ./node_modules/absol/src/Input/keyboard.js var keyboard = __webpack_require__(27); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/tokenizeiput/tiutils.js var tiutils = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/messageinput/MessageInputPlugin.js /*** * @typedef MessageInputPluginOption * @property {string} [id] * @property {string|Object|AElement} icon * @property {function(_thisAdapter: MessageInputPlugin, _:Dom._, Dom.$):AElement} createContent * @property {function(_thisAdapter:MessageInputPlugin):void} onPressTrigger * @property {"left"|"right"} popupAlign * @property {boolean=} alwaysVisible */ /*** * * @param {MessageInput} inputElt * @param {MessageInputPluginOption} opt * @constructor */ function MessageInputPlugin(inputElt, opt) { this.opt = opt || {}; this.inputElt = inputElt; this.icon = opt.icon; this.id = opt.id || (0,stringGenerate.randomIdent)(16); this.alwaysVisible = !!opt.alwaysVisible; this.$icon = null; this.$triggerBtn = null; this.$content = null; this.$popup = null; if (opt.createContent) this.createContent = opt.createContent; if (opt.onPressTrigger) this.onPressTrigger = opt.onPressTrigger; this.autoClose = true; if ('autoClose' in opt) { this.autoClose = !!opt.autoClose; } this.popupAlign = opt.popupAlign || 'left'; this.ev_pressTrigger = this.ev_pressTrigger.bind(this); this.ev_pressOut = this.ev_pressOut.bind(this); } MessageInputPlugin.prototype.isMessagePlugin = true; 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/* default.hitElement */.ZP.hitElement(this.getTriggerButton(), event)) return; if (EventEmitter/* default.hitElement */.ZP.hitElement(this.getPopup(), event)) return; if (!this.autoClose) return; this.closePopup(); }; MessageInputPlugin.prototype.getIconElt = function () { if (!this.$icon) this.$icon = (0,ACore._)(this.icon); return this.$icon; }; MessageInputPlugin.prototype.getTriggerButton = function () { if (!this.$triggerBtn) { this.$triggerBtn = (0,ACore._)({ tag: 'button', class: ['as-message-input-plugin-btn', 'as-message-input-plugin-' + this.id], child: this.getIconElt(), on: { click: this.ev_pressTrigger } }); if (this.alwaysVisible) { this.$triggerBtn.addClass('as-always-visible'); } } return this.$triggerBtn; }; MessageInputPlugin.prototype.createContent = function (_thisAdapter, _, $) { return _({ tag: 'div' }); }; /*** * * @type {null|function(_thisAdapter:MessageInputPlugin):void} */ MessageInputPlugin.prototype.onPressTrigger = null; MessageInputPlugin.prototype.getContent = function () { if (!this.$content) this.$content = this.createContent(this.inputElt, ACore._, ACore.$); return this.$content; }; MessageInputPlugin.prototype.getPopup = function () { if (!this.$popup) { this.$popup = (0,ACore._)({ class: ['as-message-input-external-tools-popup', 'as-align-' + this.popupAlign], 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); this.onOpen(); if (this.opt.onOpen) { this.opt.onOpen.call(this, this.inputElt, ACore._, ACore.$); } }; MessageInputPlugin.prototype.closePopup = function () { if (!this.isPopupOpened()) return; if (this.opt.onClose) { this.opt.onClose.call(this, this.inputElt, ACore._, ACore.$); } this.onClose(); this.getPopup().remove(); document.body.removeEventListener('click', this.ev_pressOut); }; MessageInputPlugin.prototype.isPopupOpened = function () { return !!this.getPopup().parentElement; }; MessageInputPlugin.prototype.onOpen = noop/* default */.Z; MessageInputPlugin.prototype.onClose = noop/* default */.Z; Object.defineProperty(MessageInputPlugin.prototype, 'contentElt', { get: function () { return this.getContent(); } }); /* harmony default export */ const messageinput_MessageInputPlugin = (MessageInputPlugin); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/messageinput/MIEmojiPlugin.js /**** * @extends MessageInputPlugin * @constructor */ function MIEmojiPlugin(inputElt) { messageinput_MessageInputPlugin.call(this, inputElt, { id: 'emoji_picker', icon: 'span.mdi.mdi-emoticon-happy-outline' }); for (var key in this) { if (key.startsWith('ev_')) { this[key] = this[key].bind(this); } } } OOP/* default.mixClass */.ZP.mixClass(MIEmojiPlugin, messageinput_MessageInputPlugin); MIEmojiPlugin.prototype.createContent = function () { return (0,ACore._)('emojipicker')//.addTo(this.$emojiPickerCtn) .on('pick', this.ev_PickEmoji); }; MIEmojiPlugin.prototype.ev_PickEmoji = function (event) { var text = this.inputElt.$preInput.value; var selected = this._lastInputSelectPosion; var newText = text.substr(0, selected.start) + event.key + text.substr(selected.end); var newOffset = selected.start + event.key.length; this._lastInputSelectPosion = { start: newOffset, end: newOffset }; this.inputElt.$preInput.focus(); this.inputElt.$preInput.applyData(newText, newOffset); this.inputElt.$preInput.commitChange(newText, newOffset); this.inputElt.notifySizeChange(); this.inputElt.$preInput.focus(); }; MIEmojiPlugin.prototype.onOpen = function (){ var value = this.inputElt.$preInput.value; this._lastInputSelectPosion = this.inputElt.$preInput.getSelectPosition() || { start: value.length, end: value.length }; this.inputElt.$preInput.focus(); } /* harmony default export */ const messageinput_MIEmojiPlugin = (MIEmojiPlugin); // EXTERNAL MODULE: ./node_modules/absol-acomp/assets/exticons/catalog.json var catalog = __webpack_require__(2398); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/messageinput/MessageInput.js var _ = ACore/* default._ */.Z._; var $ = ACore/* default.$ */.Z.$; var $$ = ACore/* default.$$ */.Z.$$; /*** * * @typedef {{text:string, desc: string, img?:string, file?:string}|string} MessageInputQuote */ var MODE_NEW = 0; var MODE_EDIT = 1; var isMobile = BrowserDetector/* default.isMobile */.Z.isMobile; /*** * @extends AElement * @constructor */ function MessageInput() { this._cmdRunner = new CMDRunner/* default */.Z(this); this._keyMaps = {}; this._plugins = []; this._mode = MODE_NEW;//edit this._editingText = ""; prepareIcon(); /** * @type {import('../PreInput').default} */ this.$preInput = $('.as-message-input-pre', 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 = $('messagequote.as-message-input-quote', this) .on('pressremove', this.eventHandler.clickQuoteRemoveBtn); this.$left = $('.as-message-input-left', this); this.$right = $('.as-message-input-right', this); this.$attachmentCtn = $('.as-message-input-attachment-ctn', this); this.$fileBtn = $('.as-message-input-plugin-file', this) .on('click', this.openFileDialog.bind(this)); this.$attachmentAddBtn = $('.as-message-input-attachment-add-btn', this) .on('click', this.openFileDialog.bind(this)); this.$sendBtn = $('.as-message-input-plugin-send', this) .on('click', this.notifySend.bind(this)); this.$cancelBtn = $('.as-message-input-plugin-cancel', this) .on('click', this.notifyCancel.bind(this)); this.$attachhook = _('attachhook').addTo(this) .on('attached', this.notifySizeChange.bind(this)) .on('attached', this._updateSize.bind(this)); this.on('drop', this.eventHandler.drop) .on('dragover', this.eventHandler.dragover); OOP/* default.drillProperty */.ZP.drillProperty(this, this.$preInput, 'tagList'); this.autoSend = false; /*** * * @type {MessageInputQuote|null} */ this.quote = null; this.addPlugin(new messageinput_MIEmojiPlugin(this)); } MessageInput.MODE_EDIT = MODE_EDIT; MessageInput.MODE_NEW = MODE_NEW; MessageInput.iconAssetRoot = (function () { if (location.hostname.match(/^.*(\.?absol\.cf|absol\.ddns\.net)$/) || location.hostname === 'localhost') 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 _({ attr: { 'data-icon-asset-root': MessageInput.iconAssetRoot }, class: ['as-message-input'].concat(data.v2 ? ['as-v2'] : []), extendEvent: ['sendtext', 'sendimage', 'sendfile', 'sendquote', 'cancel', 'change', 'sizechange', 'send', 'useraddfile'], 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-left' }, { 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: "+" } } ] }] }, (data.v2 ? 'tokenizehyperinput' : 'preinput') + '.as-message-input-pre.absol-bscroller' ] } ] }); }; 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"); } this._updateSize(); }; MessageInput.prototype._updateSize = function () { var fs = this.getFontSize() || 14; this.addStyle('--right-width', this.$right.getBoundingClientRect().width / fs + 'em'); }; 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 = _({ 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-info', child: [ { class: 'as-message-input-attach-preview-name', child: { text: file.name } }, { class: 'as-message-input-attach-preview-size', child: { text: (0,utils.fileSize2Text)(file.size) } } ] } ] }).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 = _({ 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-info', child: [ { class: 'as-message-input-attach-preview-name', child: { text: file.name } }, { class: 'as-message-input-attach-preview-size', child: { text: (0,utils.fileSize2Text)(file.size) } } ] } ] }); thisMi.$attachmentCtn.addChildBefore(itemElt, thisMi.$attachmentAddBtn); }); }); this._updateAttachmentClass(); thisMi.notifySizeChange(); }; MessageInput.prototype.closeEmoji = function () { if (!this.hasClass('as-message-input-show-emoji')) return; this.removeClass('as-message-input-show-emoji'); this.removeChild(this.$emojiPickerCtn); $(document.body).off('mousedown', this.eventHandler.mousedownOutEmoji); }; MessageInput.prototype.notifyAddFiles = function (files) { var event = { resolvedAsync: Promise.resolve(files), files: files, resolve: function (result) { if (!result) { this.resolvedAsync = Promise.resolve(undefined); } else if (result.then) { this.resolvedAsync = result; } else { this.resolvedAsync = Promise.resolve(result); } } }; this.emit('useraddfile', event); return event.resolvedAsync; } MessageInput.prototype.openFileDialog = function () { var thisMi = this; (0,utils.openFileDialog)({ multiple: true }).then(function (files) { if (!thisMi.autoSend) thisMi.$preInput.focus(); thisMi.notifyAddFiles(files).then(function (files) { if (files && files.length > 0) thisMi.handleAddingFileByType(files); }); }); }; 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; if (option.isMessagePlugin) { plugin = option; } else { plugin = new this.PluginConstructor(this, option); } plugin.idx = this._plugins.length + 1; this._plugins.push(plugin); this._plugins.sort(function (a, b) { var av = (typeof a.opt.order === "number") ? a.opt.order : a.idx * 1000; var bv = (typeof b.opt.order === "number") ? b.opt.order : b.idx * 1000; return av - bv; }); var plugins = this._plugins.slice(); plugins.forEach(pl => pl.getTriggerButton().remove()); this.$left.addChild(plugins.shift().getTriggerButton()); while (plugins.length > 0) { this.$right.addChildBefore(plugins.shift().getTriggerButton(), this.$right.firstChild); } return plugin; }; /*** * * @param {{name?:string, exec:function(_this:MessageInput):void, keyBiding?:string}} option */ MessageInput.prototype.addCommand = function (option) { option.name = option.name || (0,stringGenerate.randomIdent)(20); this._cmdRunner.add(option.name, option.exec); if (option.keyBiding && option.keyBiding.trim) { var keyBindingIdent = (0,keyboard/* normalizeKeyBindingIdent */.DB)(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._updateSize(); 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._updateSize(); 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 = (0,keyboard/* keyboardEventToKeyBindingIdent */.Ej)(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; var files = Array.prototype.slice.call(event.imageFiles); var urls = event.urls && Array.prototype.slice.call(event.urls); this.notifyAddFiles(files).then(function (newFiles) { if (!newFiles || newFiles.length === 0) return; var newUrls = urls && newFiles.map(function (file) { return urls[files.indexOf(file)]; }); this.addImageFiles(newFiles, newUrls); this.notifyChange(); }.bind(this)); }; 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/* default.hitElement */.ZP.hitElement(this.$emojiPicker, event) || EventEmitter/* default.hitElement */.ZP.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: this._updateSize(); }; MessageInput.eventHandler.drop = function (event) { event.preventDefault(); 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(); if (!file.type && file.size % 4096 == 0) { //todo: folder } else { files.push(file); } } } } else { for (var i = 0; i < event.dataTransfer.files.length; i++) { file = event.dataTransfer.files[i]; if (!file.type && file.size % 4096 == 0) { } else { files.push(file); } } } this.notifyAddFiles(files).then(function (files) { this.handleAddingFileByType(files); }.bind(this)); }; MessageInput.eventHandler.clickQuoteRemoveBtn = function () { this.quote = null; this.notifyChange(); } MessageInput.property = {}; MessageInput.property.files = { set: function (value) { $$('.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) { $$('.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'); this._updateSize(); }, 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; this._updateSize(); }, 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.hasClass('as-auto-send'); } }; MessageInput.property.quote = { set: function (quote) { this._quote = quote; this._updateQuote(); }, get: function () { return this._quote; } }; MessageInput.property.tagMap = { set: function (value) { this.$preInput.tagMap = value || {}; this.$quote.tagMap = value || {}; }, get: function () { return this.$preInput.tagMap; } } ACore/* default.install */.Z.install(MessageInput); /* harmony default export */ const messageinput_MessageInput = (MessageInput); var urlRex = /^(firefox|opera|chrome|https|http|wss|ws):\/\/[^\s]+$/; /*** * * @param {string}text * @param {{emojiAssetRoot?:string, staticSize?:number, animSize?:number, tagMap?:{}, lengthLimit?:number, inline?:boolean}=} data * @returns {Array} */ function parseMessage(text, data) { data = data || {}; data.emojiAssetRoot = data.emojiAssetRoot || EmojiPicker/* default.assetRoot */.Z.assetRoot; data.staticSize = data.staticSize || 20; data.animSize = data.animSize || 60; var tagMap = data.tagMap || {}; var tokens = (0,tiutils/* tokenizeMessageText */.Dx)(text).reduce((ac, token) => { if (token.type !== 'TEXT') { ac.push(token); return ac; } var urls = token.value.match(/(firefox|opera|chrome|https|http|wss|ws):\/\/[^\s]+/g); var splitter = Math.random() + ''; var normals = token.value.replace(/(firefox|opera|chrome|https|http|wss|ws):\/\/[^\s]+/, splitter).split(splitter); for (var i = 0; i < normals.length; ++i) { if (i > 0) { ac.push({ type: 'URL', value: urls[i - 1] }); } ac.push({ type: 'TEXT', value: normals[i] }); } return ac; }, []); if (data.lengthLimit > 0) { tokens = tokens.reduce((ac, token) => { if (ac.l >= data.lengthLimit) { return ac; } switch (token.type) { case 'TAG': ac.l += ('@' + (tagMap[token.value] ? tagMap[token.value] : '[id:' + token.value + ']')).length; break; case 'EMOJI': ac.l += 1; break; case 'NEW_LINE': ac.l += 1; break; default: ac.l += token.value.length; } if (ac.l > data.lengthLimit) { if (token.type === 'TEXT') { token.value = token.value.substring(0, Math.max(0, token.value.length - (ac.l - data.lengthLimit) - 3)) + '...'; ac.tokens.push(token); } } else { ac.tokens.push(token); } return ac; }, { l: 0, tokens: [] }).tokens; } var res = tokens.reduce((ac, token) => { switch (token.type) { case 'TAG': ac.push({ tag: 'span', class: 'as-tag-token', child: { text: '@' + (tagMap[token.value] ? tagMap[token.value] : '[id:' + token.value + ']') } }); break; case 'EMOJI': ac.push({ tag: 'span', class: 'as-emoji-text', child: { text: token.value } }); ac.push({ tag: 'img', class: 'as-emoji', props: { src: data.emojiAssetRoot + '/static/x' + data.staticSize + '/' + EmojiAnims/* EmojiAnimByIdent */.M[token.value][1] } }) break; case 'NEW_LINE': ac.push({ tag: 'br' }); break; case 'URL': ac.push({ tag: 'a', class: 'as-protocal-' + token.value.split(':').shift(), child: { text: token.value }, props: { href: token.value, target: '_blank' } }) break; case 'TEXT': default: ac.push({ tag: 'span', child: { text: token.value } }) break; } return ac; }, []); if (!data.inline && 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) { MessageInput.iconSupportAsync = Promise.resolve(catalog) } return MessageInput.iconSupportAsync; } function MessageQuote() { prepareIcon(); this._tagMap = {}; /*** * * @type {null|MessageInputQuote} * @private */ this._data = null; this.$img = $('.as-message-quote-img', this); this.$text = $('.as-message-quote-text', this); this.$desc = $('.as-message-quote-desc', this); this.$removeBtn = $('.as-message-quote-remove-btn', this) .on('click', this.eventHandler.clickRemoveBtn); Object.defineProperty(this, '$text', { set: function () { console.trace(); }, get: function () { return $('.as-message-quote-text', this); } }) } MessageQuote.tag = 'MessageQuote'.toLowerCase(); MessageQuote.render = function () { return _({ 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.hasClass('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.hasClass('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, { tagMap: this.tagMap }); var textEltChain = parsedText.map(function (c) { return _(c); }); this.$text.clearChild().addChild(textEltChain); this.$desc.firstChild.data = desc; } }, get: function () { return this._data; } }; MessageQuote.property.tagMap = { set: function (value) { this._tagMap = value || {}; this.data = this['data']; }, get: function () { return this._tagMap; } }; MessageQuote.eventHandler.clickRemoveBtn = function () { this.emit('pressremove', { target: this, type: 'pressclose' }, this); }; ACore/* default.install */.Z.install(MessageQuote); MessageInput.prototype.PluginConstructor = messageinput_MessageInputPlugin; /***/ }), /***/ 9277: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_mobileapp_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8789); /* harmony import */ var _css_mobileapp_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_mobileapp_css__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _QuickMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1274); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1477); /* harmony import */ var absol_src_HTML5_DynamicCSS__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(488); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(863); /** * @exatends AElement * @constructor */ function MHeaderBar() { this._title = null; this._titleDesc = null; this._actionIcon = null; this._commands = []; this._quickmenuHolder = null; this._quickmenu = null; this.$right = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__.$)('.am-header-bar-right', this); this.$leftBtn = null; this.$titleCtn = null; this.$title = null; this.$titleDesc = null; this.$notificationActionBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__.$)(".as-header-bar-notification-action", this).on('click', (event) => { MHeaderBar.emit('clicknotification', { type: 'clicknotification', target: this }, this); }); this.$commands = []; } MHeaderBar.tag = 'MHeaderBar'.toLowerCase(); MHeaderBar.render = function () { return (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ extendEvent: ['action', 'command'], class: 'am-header-bar', child: [ { class: 'am-header-bar-right', child: [ { tag: 'button', class: ['am-header-bar-command', 'as-header-bar-notification-action'], child: [ 'span.mdi.mdi-bell', '.as-header-bar-notification-action-count', ] } ] } ] }); }; MHeaderBar.prototype.notifyAction = function () { this.emit('action', { type: 'action', target: this }, this); }; MHeaderBar.prototype.notifyCommand = function (commandItem) { this.emit('command', { type: 'command', target: this, commandName: commandItem.name, commandItem }, this); }; MHeaderBar.prototype.showTitle = function (flag) { if (!this.$titleCtn && flag) { this.$titleCtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ class: 'am-header-bar-title-ctn', child: [ { class: 'am-header-bar-no-size-wrapper', child: { class: 'am-header-bar-title-wrapper', child: [ { class: 'am-header-bar-title', }, { class: 'am-header-bar-title-desc' } ] } } ] }); this.$title = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__.$)('.am-header-bar-title', this.$titleCtn); this.$titleDesc = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__.$)('.am-header-bar-title-desc', this.$titleCtn); } if (flag) { this.insertBefore(this.$titleCtn, this.$right); } else { if (this.$titleCtn) this.$titleCtn.remove(); } }; MHeaderBar.prototype.showActionBtn = function (flag) { if (!this.$leftBtn && flag) { this.$leftBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ tag: 'button', class: 'am-header-bar-left-btn', child: 'span.mdi.mdi-chevron-left', on: { click: this.notifyAction.bind(this) } }); } if (flag) { this.insertBefore(this.$leftBtn, this.firstChild); } else { if (this.$leftBtn) this.$leftBtn.remove(); } }; MHeaderBar.prototype.showQuickMenu = function (flag) { if (!this.$quickmenuBtn && flag) { this.$quickmenuBtn = (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ tag: 'button', class: ['am-header-bar-action', 'am-header-bar-quickmenu-btn'], child: { class: 'am-header-bar-quickmenu-btn-circle', child: ['span.mdi.mdi-dots-horizontal-circle-outline', 'span.mdi.mdi-dots-horizontal-circle'] }, }); } if (flag) { this.$right.addChildBefore(this.$quickmenuBtn, this.$notificationActionBtn); } else { if (this.$quickmenuBtn) this.$quickmenuBtn.remove(); } }; MHeaderBar.prototype._makeCommandBtn = function (item) { return (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ tag: 'button', class: 'am-header-bar-command', child: item.icon || [], on: { click: this.notifyCommand.bind(this, item) } }); }; MHeaderBar.property = {}; /** * @type {MHeaderBar} */ MHeaderBar.property.quickmenu = { set: function (value) { if (this._quickmenuHolder) { this._quickmenuHolder.remove(); this._quickmenu = null; } if (value) { this.showQuickMenu(true); var button = this.$quickmenuBtn; var onClose = value.onClose; var onOpen = value.onOpen; value.onOpen = function () { button.addClass('am-status-active'); onOpen && onOpen.apply(this, arguments); }; value.onClose = function () { button.removeClass('am-status-active'); onClose && onClose.apply(this, arguments); }; if (!value.getAnchor) { value.getAnchor = function () { return [2]; } } if (!value.getMenuProps && value.props) { value.getMenuProps = function () { var res = Object.assign({}, value.props); if (typeof res.items === "function") { res.items = res.items(); } return res; } } this._quickmenuHolder = _QuickMenu__WEBPACK_IMPORTED_MODULE_2__/* ["default"].toggleWhenClick */ .Z.toggleWhenClick(this.$quickmenuBtn, value); } else { this.showQuickMenu(false); value = null; } this._quickmenu = value; }, get: function () { return this._quickmenu; } }; /** * @type {MHeaderBar} */ MHeaderBar.property.title = { set: function (value) { if (value) { this.showTitle(true); if (typeof value === 'string') { this.$title.innerHTML = value; } else { this.$title.clearChild().addChild((0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)(value)); } } else { this.showTitle(false); value = null; } this._title = value; }, get: function () { return this._title; } }; /** * @type {MHeaderBar} */ MHeaderBar.property.titleDesc = { set: function (value) { if (value) { value = value + ''; this.showTitle(true); this.$titleDesc.clearChild().addChild((0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ text: value })); } else { this.showTitle(false); if (this.$titleDesc) this.$titleDesc.clearChild(); value = null; } this._titleDesc = value; }, get: function () { return this._titleDesc; } }; /** * @type {MHeaderBar} */ MHeaderBar.property.actionIcon = { set: function (value) { if (value) { this.showActionBtn(true); this.$leftBtn.clearChild() .addChild((0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)(value)); } else { this.showActionBtn(false); value = null; } this._actionIcon = value; }, get: function () { return this._actionIcon; } }; /** * @type {MHeaderBar} */ MHeaderBar.property.commands = { set: function (value) { this.$commands.forEach(function (e) { e.selftRemove(); }); this.$commands = []; var commandBtn; var i; if (value) { var firstChild = this.$right.firstChild; if (firstChild) { for (i = 0; i < value.length; ++i) { commandBtn = this._makeCommandBtn(value[i]); this.$right.addChildBefore(commandBtn, firstChild) } } else { for (i = 0; i < value.length; ++i) { commandBtn = this._makeCommandBtn(value[i]); this.$right.addChild(commandBtn); } } } else { this._commands = []; } this._commands = value; }, get: function () { return this._commands; } }; _ACore__WEBPACK_IMPORTED_MODULE_1__/* ["default"].install */ .Z.install(MHeaderBar); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MHeaderBar); var notyEmitter = new absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .ZP(); MHeaderBar.on = notyEmitter.on.bind(notyEmitter); MHeaderBar.once = notyEmitter.once.bind(notyEmitter); MHeaderBar.off = notyEmitter.off.bind(notyEmitter); MHeaderBar.emit = notyEmitter.emit.bind(notyEmitter); var notificationCount = 0; /** * * @type {null|DynamicCSS} */ var ncCSS = null; function updateNotificationCountText() { if (!ncCSS) ncCSS = new absol_src_HTML5_DynamicCSS__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z(); console.log("notificationCount", notificationCount); ncCSS.setRule("button .as-header-bar-notification-action-count::before", { display: notificationCount > 0 ? 'block' : 'none', content: `"${notificationCount > 9 ? "+9" : notificationCount}"`, }).commit(); } Object.defineProperty(MHeaderBar, 'notificationCount', { set: function (value) { value = Math.round(value); if (!(0,_utils__WEBPACK_IMPORTED_MODULE_3__.isNaturalNumber)(value)) value = 0; notificationCount = value; updateNotificationCountText(); }, get: function () { return notificationCount; } }); /***/ }), /***/ 1875: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "U": () => (/* binding */ EMPTY_2_SPACES), /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _EmojiAnims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4670); /* harmony import */ var absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6628); /* harmony import */ var _EmojiPicker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2948); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1477); /* harmony import */ var _tiutils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3421); var EMPTY_2_SPACES = String.fromCharCode(0x2003); var emojiCSSLoaded = false; function loadEmojiCSS(){ if (emojiCSSLoaded) return; emojiCSSLoaded = true; absol_src_HTML5_Dom__WEBPACK_IMPORTED_MODULE_1__/* ["default"].documentReady.then */ .ZP.documentReady.then(() => { var styleSheet = {}; for (var name in _EmojiAnims__WEBPACK_IMPORTED_MODULE_0__/* .EmojiAnimByIdent */ .M) { styleSheet['.as-emoji-token[data-text="' + name + '"]'] = { 'background-image': 'url(' + _EmojiPicker__WEBPACK_IMPORTED_MODULE_2__/* ["default"].assetRoot */ .Z.assetRoot + '/static/x20/' + _EmojiAnims__WEBPACK_IMPORTED_MODULE_0__/* .EmojiAnimByIdent */ .M[name][1] + ')' } } (0,_utils__WEBPACK_IMPORTED_MODULE_3__.buildCss)(styleSheet) }); } /*** * * @param {TokenizeHyperInput} elt * @constructor */ function TITextController(elt) { loadEmojiCSS(); this.elt = elt; } TITextController.prototype.setText = function (text) { this.elt.clearChild(); this.elt.addChild((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .text2ContentElements */ .fw)(text, { tagMap: this.elt.tagMap })); this.elt.addChild(this.elt.$br); }; TITextController.prototype.getText = function () { var nodes = Array.prototype.slice.call(this.elt.childNodes); if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isNewLine */ .K0)(nodes[nodes.length - 1])) { nodes.pop(); } return nodes.map(node => { if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isText */ .Gs)(node)) { return node.data; } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isToken */ .hD)(node)) { return node.getAttribute('data-text') || ''; } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isNewLine */ .K0)(node)) return '\n'; }).join(''); }; /*** * * @param {Range=} range default: previous selected range */ TITextController.prototype.getTextByRange = function (range) { range = range || this.elt.selectionCtrl.prevRange; if (!range) return this.getText(); var nodes = Array.prototype.slice.call(this.elt.childNodes); if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isNewLine */ .K0)(nodes[nodes.length - 1])) nodes.pop(); var startCtn = range.startContainer; var startOffset = range.startOffset; var endCtn = range.endContainer; var endOffset = range.endOffset; if (startCtn === this.elt) { startCtn = this.elt.childNodes[startOffset - 1]; startOffset = 0; } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isTokenText */ .tk)(startCtn)) { startCtn = startCtn.parentElement; } if (endCtn === this.elt) { endCtn = this.elt.childNodes[endOffset]; endOffset = 0; } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isTokenText */ .tk)(endCtn)) { endCtn = endCtn.parentElement; } if (startCtn === endCtn) { if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isToken */ .hD)(startCtn)) { return startCtn.getAttribute('data-text'); } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isText */ .Gs)(startCtn)) { return startCtn.data.substring(startOffset, endOffset); } return ''; } var res = ''; var node; var started = false; for (var i = 0; i < nodes.length; ++i) { node = nodes[i]; if (started) { if (endCtn === node) { if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isToken */ .hD)(endCtn)) { res += node.getAttribute('data-text'); } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isText */ .Gs)(node)) { res += node.data.substring(0, endOffset); } break; } else { if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isToken */ .hD)(node)) { res += node.getAttribute('data-text'); } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isText */ .Gs)(node)) { res += node.data; } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isNewLine */ .K0)(node)) { res += '\n'; } } } else { if (startCtn === node) { started = true; if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isText */ .Gs)(node)) { res += node.data.substring(startOffset); } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isToken */ .hD)(node)) { if (startOffset === 0) { res += node.getAttribute('data-text'); } } } } } return res; } TITextController.prototype.applyData = function (text, offset) { this.setText(text); this.elt.selectionCtrl.setRangeByOffset(offset); }; TITextController.prototype.insertText = function (text) { var range = document.getSelection().getRangeAt(0); range.deleteContents(); this.elt.selectionCtrl.onSelect(); range = document.getSelection().getRangeAt(0); var eltChain = (0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .text2ContentElements */ .fw)(text, { tagMap: this.elt.tagMap }); var startCtn = range.startContainer; var at; if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isTokenText */ .tk)(startCtn)) { at = startCtn.parentElement; } else if (startCtn === this.elt) { at = this.elt.childNodes[range.startOffset - 1]; } var newNode; while (eltChain.length > 0) { newNode = eltChain.shift(); if (!at) { this.elt.addChildBefore(newNode, this.elt.firstChild); at = newNode; } else if ((0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isText */ .Gs)(at) && (0,_tiutils__WEBPACK_IMPORTED_MODULE_4__/* .isText */ .Gs)(newNode)) { at.data += newNode.data; } else { this.elt.addChildAfter(newNode, at); at = newNode; } } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TITextController); /***/ }), /***/ 3421: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Dx": () => (/* binding */ tokenizeMessageText), /* harmony export */ "Gs": () => (/* binding */ isText), /* harmony export */ "K0": () => (/* binding */ isNewLine), /* harmony export */ "ot": () => (/* binding */ getFirstTextNode), /* harmony export */ "No": () => (/* binding */ getLastTextNode), /* harmony export */ "tk": () => (/* binding */ isTokenText), /* harmony export */ "hD": () => (/* binding */ isToken), /* harmony export */ "M4": () => (/* binding */ findNextTextNode), /* harmony export */ "LD": () => (/* binding */ findPrevTextNode), /* harmony export */ "fw": () => (/* binding */ text2ContentElements) /* harmony export */ }); /* harmony import */ var _EmojiAnims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4670); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3855); /* harmony import */ var _TITextController__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1875); function tokenizeMessageText(text) { var emojis = _EmojiAnims__WEBPACK_IMPORTED_MODULE_0__/* .EmojiAnimByIdent */ .M; var splitter = Object.keys(_EmojiAnims__WEBPACK_IMPORTED_MODULE_0__/* .EmojiAnimByIdent */ .M).concat(['\n']); var tagTokens = text.match(/@\[id:\d+]/g) || []; var otherTokens = text.split(/@\[id:\d+]/g); var tokens = otherTokens.reduce((ac, cr, i) => { ac.push(cr); if (i < tagTokens.length) ac.push(tagTokens[i]); return ac; }, []); tokens = splitter.reduce((chain, splitter) => { return chain.reduce((ac, token) => { var subChain = token.split(splitter); for (var i = 0; i < subChain.length; ++i) { if (subChain[i]) { ac.push(subChain[i]); } if (i + 1 < subChain.length) { ac.push(splitter); } } return ac; }, []); }, tokens); tokens = tokens.map(text => { var tagId; if (text === '\n') { return { type: 'NEW_LINE' }; } else if (emojis[text]) { return { type: 'EMOJI', value: text }; } else if (text.match(/^@\[id:\d+]$/)) { tagId = text.substring(5, text.length - 1); return { type: "TAG", value: tagId }; } else return { type: 'TEXT', value: text }; }); return tokens; } var isText = node => { return node && node.nodeType === Node.TEXT_NODE; } var isNewLine = node => { return node && node.tagName === 'BR'; } /*** * * @param {Text|AElement}node * @returns {null|*} */ var getFirstTextNode = node => { if (node.nodeType === Node.TEXT_NODE || node.tagName === 'BR') return node; var nodes = node.childNodes; var res = null; for (var i = 0; i < nodes.length && !res; ++i) { res = res || getFirstTextNode(nodes[i]); } return res; }; var getLastTextNode = node => { if (node.nodeType === Node.TEXT_NODE || node.tagName === 'BR') return node; var nodes = node.childNodes; var res = null; for (var i = nodes.length - 1; i > 0 && !res; --i) { res = res || getLastTextNode(node); } return res; }; var isTokenText = node => { if (node.nodeType !== Node.TEXT_NODE) return false; return isToken(node.parentElement); } var isToken = node => { return node && node.classList && (node.classList.contains('as-emoji-token') || node.classList.contains('as-tag-token')); } function findNextTextNode(root, current) { var nextTextNode = node => { var res = null; var next = node.nextSibling; while (next && !res) { res = getFirstTextNode(next); next = next.nextSibling; } if (!res && node.parentElement !== root) { res = nextTextNode(node.parentElement); } return res; } return nextTextNode(current); } function findPrevTextNode(root, current) { var prevTextNode = node => { var res = null; var prev = node.previousSibling; while (prev && !res) { res = getLastTextNode(prev); prev = prev.previousSibling; } if (!res && node.parentElement !== root) { res = prevTextNode(node.parentElement); } return res; } return prevTextNode(current); } function text2ContentElements(text, opt) { return tokenizeMessageText(text).map((token) => { var textOfTag; switch (token.type) { case 'NEW_LINE': return (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)('br'); case 'EMOJI': return (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ tag: 'span', class: 'as-emoji-token', attr: { 'data-display': _TITextController__WEBPACK_IMPORTED_MODULE_2__/* .EMPTY_2_SPACES */ .U, 'data-text': token.value }, child: { text: _TITextController__WEBPACK_IMPORTED_MODULE_2__/* .EMPTY_2_SPACES */ .U } }) case 'TAG': textOfTag = opt.tagMap && opt.tagMap[token.value]; return (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ tag: 'span', class: 'as-tag-token', attr: { 'data-text': '@[id:' + token.value + ']', 'data-display': textOfTag ? '@' + textOfTag : '@[id:' + token.value + ']' }, child: { text: textOfTag ? '@' + textOfTag : '@[id:' + token.value + ']' } }); case 'TEXT': default: return (0,_ACore__WEBPACK_IMPORTED_MODULE_1__._)({ text: token.value }); } }); } /***/ }), /***/ 9346: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(863); var STATE_INIT = 0; var STATE_ATTACHED = 1; var STATE_RELEASED = 2; var STATE_FIRED = 3; var STATE_DESTROYED = 4; /*** * * @param {AElement[]|AElement} eltList * @param {"click"|"mousedown"} eventType * @param {function} callback * @param {number=} initAfter * @param {number=} fireDelay * @param {*[]=} args * @constructor */ function BlurTrigger(eltList, eventType, callback, initAfter, fireDelay, args) { this.args = args || []; this.callback = callback; this.eltTargets = eltList || []; this.initAfter = initAfter || 0; this.fireDelay = fireDelay || 0; this.state = STATE_INIT; this.eventType = eventType; this['ev_mouse'] = this.ev_mouse.bind(this); this['ev_blur'] = this.ev_blur.bind(this); if (this.initAfter > 0) { setTimeout(this._attach.bind(this)); } else this._attach(); } BlurTrigger.prototype._attach = function () { if (this.state !== STATE_INIT) return; document.addEventListener(this.eventType, this.ev_mouse); window.addEventListener('blur', this.ev_blur); this.state = STATE_ATTACHED; }; BlurTrigger.prototype._fire = function () { if (this.state !== STATE_RELEASED) return; this.callback.apply(this, this.args); this.state = STATE_FIRED; }; BlurTrigger.prototype._release = function () { if (this.state !== STATE_ATTACHED) return; document.removeEventListener(this.eventType, this.ev_mouse); window.removeEventListener('blur', this.ev_blur); this.state = STATE_RELEASED; }; BlurTrigger.prototype.destroy = function () { if (this.state === 4) return; if (this.state === STATE_ATTACHED) this._release(); this.state = STATE_DESTROYED; }; BlurTrigger.prototype._prepareFire = function () { if (this.fireDelay > 0) { setTimeout(this._fire.bind(this), this.fireDelay); } else { this._fire(); } } BlurTrigger.prototype.ev_mouse = function (event) { var hit = false; if (this.eltTargets instanceof Array) { hit = this.eltTargets.some(function (elt) { return (0,absol_src_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* .hitElement */ .EY)(elt, event); }); } else if (typeof hit === "function") { hit = this.eltTargets.call(this, event.target); } if (!hit) { this._release(); this._prepareFire(); } }; BlurTrigger.prototype.ev_blur = function () { setTimeout(function () { if (this.state !== STATE_ATTACHED) return; var tagName = (document.activeElement && document.activeElement.tagName) || ''; tagName = tagName.toLowerCase(); if (tagName === 'iframe') { this._release(); this._prepareFire(); } }.bind(this), 0); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BlurTrigger); /***/ }), /***/ 1866: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @deprecated use TextMeasure instead * @param opts * @constructor */ function TextMeasurement(opts) { opts = opts || {}; this.chars = opts.chars || (" !\"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "[\\]^_abcdefghijklmnopqrstuvwxyz{|}" + "¥©ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚÝàáâãèéêìíñòóôõùúýĂăĐđĨĩŨũƠơƯưẠ̌̀́̃̉Р" + "ийксуẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊị" + "ỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹ–’“”…₫€?").split(''); this.computed = Object.assign({}, opts.computed || {}); } TextMeasurement.prototype.compute = function (font) { if (this.computed[font]) return true; if (!('document' in window)) return false; if (!this.canvas) { this.canvas = document.createElement('canvas'); this.ctx = this.canvas.getContext('2d'); } var ctx = this.ctx; ctx.font = font; var data = {}; var charBoxes = {}; data.charBoxes = charBoxes; var c, d, i, j; var metrics; var n = this.chars.length; var chars = this.chars; for (i = 0; i < n; ++i) { c = chars[i]; metrics = ctx.measureText(c); charBoxes[c] = metrics.width; } var spacing = {}; data.spacing = spacing; var pair; for (i = 0; i < n; ++i) { c = chars[i]; for (j = 0; j < n; ++j) { d = chars[j]; pair = c + d; metrics = ctx.measureText(pair); spacing[pair] = metrics.width - charBoxes[c] - charBoxes[d]; } } this.computed[font] = data; return true; }; /*** * * @param {string} text * @param {string=} font * @return {number} */ TextMeasurement.prototype.measureTextWidth = function (text, font) { var l = text.length; if (l === 0) return 0; var width = 0; var data = this.computed[font]; var charBoxes = data.charBoxes; var spacing = data.spacing; var c, pc; pc = text[0]; width += charBoxes[pc] || charBoxes['0']; for (var i = 1; i < l; ++i) { c = text[i]; width += spacing[pc + c]; width += charBoxes[c] || charBoxes['0']; pc = c; } return width; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TextMeasurement); /***/ }), /***/ 1477: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "getSelectionRangeDirection": () => (/* binding */ getSelectionRangeDirection), /* harmony export */ "setSelectionRange": () => (/* binding */ setSelectionRange), /* harmony export */ "insertTextAtCursor": () => (/* binding */ insertTextAtCursor), /* harmony export */ "contenteditableTextOnly": () => (/* binding */ contenteditableTextOnly), /* harmony export */ "getSelectionText": () => (/* binding */ getSelectionText), /* harmony export */ "positiveIntMod": () => (/* binding */ positiveIntMod), /* harmony export */ "nearFloor": () => (/* binding */ nearFloor), /* harmony export */ "measureText": () => (/* binding */ measureText), /* harmony export */ "getCaretPosition": () => (/* binding */ getCaretPosition), /* harmony export */ "preventNotNumberInput": () => (/* binding */ preventNotNumberInput), /* harmony export */ "buildCss": () => (/* binding */ buildCss), /* harmony export */ "forwardEvent": () => (/* binding */ forwardEvent), /* harmony export */ "forwardMethod": () => (/* binding */ forwardMethod), /* harmony export */ "openFileDialog": () => (/* binding */ openFileDialog), /* harmony export */ "openYesNoQuestionDialog": () => (/* binding */ openYesNoQuestionDialog), /* harmony export */ "charWidth": () => (/* binding */ charWidth), /* harmony export */ "estimateWidth14": () => (/* binding */ estimateWidth14), /* harmony export */ "getTextNodeBounds": () => (/* binding */ getTextNodeBounds), /* harmony export */ "absCeil": () => (/* binding */ absCeil), /* harmony export */ "zeroPadding": () => (/* binding */ zeroPadding), /* harmony export */ "cleanMenuItemProperty": () => (/* binding */ cleanMenuItemProperty), /* harmony export */ "getTagListInTextMessage": () => (/* binding */ getTagListInTextMessage), /* harmony export */ "swapElt": () => (/* binding */ swapElt), /* harmony export */ "swapChildrenInElt": () => (/* binding */ swapChildrenInElt), /* harmony export */ "replaceChildrenInElt": () => (/* binding */ replaceChildrenInElt), /* harmony export */ "findVScrollContainer": () => (/* binding */ findVScrollContainer), /* harmony export */ "vScrollIntoView": () => (/* binding */ vScrollIntoView), /* harmony export */ "fileSize2Text": () => (/* binding */ fileSize2Text), /* harmony export */ "isDateTimeFormatToken": () => (/* binding */ isDateTimeFormatToken), /* harmony export */ "normalizeMinuteOfMillis": () => (/* binding */ normalizeMinuteOfMillis), /* harmony export */ "millisToClock": () => (/* binding */ millisToClock), /* harmony export */ "clockToMillis": () => (/* binding */ clockToMillis), /* harmony export */ "isRealNumber": () => (/* binding */ isRealNumber), /* harmony export */ "isNaturalNumber": () => (/* binding */ isNaturalNumber), /* harmony export */ "isInteger": () => (/* binding */ isInteger), /* harmony export */ "parseLocalFloat": () => (/* binding */ parseLocalFloat), /* harmony export */ "formatLocalFloat": () => (/* binding */ formatLocalFloat), /* harmony export */ "isURLAddress": () => (/* binding */ isURLAddress), /* harmony export */ "fileAccept": () => (/* binding */ fileAccept), /* harmony export */ "fileInfoOf": () => (/* binding */ fileInfoOf), /* harmony export */ "addElementsBefore": () => (/* binding */ addElementsBefore), /* harmony export */ "addElementAfter": () => (/* binding */ addElementAfter), /* harmony export */ "addElementClassName": () => (/* binding */ addElementClassName), /* harmony export */ "findMaxZIndex": () => (/* binding */ findMaxZIndex), /* harmony export */ "getAncestorElementOf": () => (/* binding */ getAncestorElementOf), /* harmony export */ "checkedValues2RootTreeValues": () => (/* binding */ checkedValues2RootTreeValues), /* harmony export */ "rootTreeValues2CheckedValues": () => (/* binding */ rootTreeValues2CheckedValues), /* harmony export */ "copySelectionItemArray": () => (/* binding */ copySelectionItemArray), /* harmony export */ "isScrolledToBottom": () => (/* binding */ isScrolledToBottom), /* harmony export */ "parseDMS": () => (/* binding */ parseDMS), /* harmony export */ "parseLatLng": () => (/* binding */ parseLatLng), /* harmony export */ "normalizeLatLngString": () => (/* binding */ normalizeLatLngString), /* harmony export */ "implicitLatLng": () => (/* binding */ implicitLatLng), /* harmony export */ "getMapZoomLevel": () => (/* binding */ getMapZoomLevel), /* harmony export */ "latLngDistance": () => (/* binding */ latLngDistance), /* harmony export */ "keyStringOf": () => (/* binding */ keyStringOf), /* harmony export */ "jsStringOf": () => (/* binding */ jsStringOf), /* harmony export */ "calcDTQueryHash": () => (/* binding */ calcDTQueryHash), /* harmony export */ "replaceInObject": () => (/* binding */ replaceInObject), /* harmony export */ "replaceFileInObject": () => (/* binding */ replaceFileInObject), /* harmony export */ "revokeResource": () => (/* reexport safe */ absol_src_DataStructure_Object__WEBPACK_IMPORTED_MODULE_9__.bU), /* harmony export */ "isNone": () => (/* binding */ isNone), /* harmony export */ "wrapWord": () => (/* binding */ wrapWord), /* harmony export */ "wrapText": () => (/* binding */ wrapText), /* harmony export */ "listenDomContentChange": () => (/* binding */ listenDomContentChange), /* harmony export */ "getMaterialDesignIconNames": () => (/* binding */ getMaterialDesignIconNames) /* harmony export */ }); /* harmony import */ var _ACore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3855); /* harmony import */ var absol_src_String_stringUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2973); /* harmony import */ var _YesNoQuestionDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5466); /* harmony import */ var _Modal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9826); /* harmony import */ var absol_src_Converter_ext2MineType__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9691); /* harmony import */ var _tool_TextMeasurement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1866); /* harmony import */ var absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7807); /* harmony import */ var absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2759); /* harmony import */ var absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7951); /* harmony import */ var absol_src_DataStructure_Object__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2722); function getSelectionRangeDirection(range) { var sel = document.getSelection(); var direction = 'forward'; var cmpPosition = sel.anchorNode.compareDocumentPosition(sel.focusNode); if (cmpPosition === 4) { direction = 'forward'; } else if (cmpPosition === 2) { direction = 'backward' } else if (!cmpPosition && sel.anchorOffset > sel.focusOffset || cmpPosition === Node.DOCUMENT_POSITION_PRECEDING) { direction = 'backward'; } return direction; } /*** * * @param {Range} range * @param {boolean=} backward */ function setSelectionRange(range, backward) { var sel = document.getSelection(); if (backward) { if (typeof sel.extend != "undefined") { var endRange = range.cloneRange(); endRange.collapse(false); sel.removeAllRanges(); sel.addRange(endRange); sel.extend(range.startContainer, range.startOffset); } } else { sel.removeAllRanges(); sel.addRange(range); } } 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 nearFloor(x, epsilon) { var y = Math.floor(x); if (x - y + epsilon >= 1) y++; return y; } 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; } function 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 || getCaretPosition(this) > 0)) event.preventDefault(); } else event.preventDefault(); } }); } function buildCss(StyleSheet) { return (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ 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); } function forwardEvent(elt, fromName, toName) { elt.defineEvent(toName); elt.on(fromName, function (event) { event = Object.assign({}, event); event.type = toName; this.emit.apply(this, [toName, event].concat(Array.prototype.slice.call(arguments, 1))); }); } function forwardMethod(elt, fromName, toName) { elt[fromName] = function () { this[toName].apply(this, arguments); } } /*** * * @param {"camera"|"microphone"|"camcorder"|{accept:("image/*"|"audio/*"|"video/*"|undefined), capture:boolean|undefined, multiple:boolean|undefined}|{}=} props * @param {boolean=}unSafe * @return {Promise<File[]>} */ function openFileDialog(props, unSafe) { return new Promise(function (resolve) { var input = _ACore__WEBPACK_IMPORTED_MODULE_0__/* ["default"]._ */ .Z._({ 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); }); } function openYesNoQuestionDialog(title, message) { return new Promise(resolve => { if (window.ModalElement && window.ModalElement.question) { window.ModalElement.question({ title: title, message: message, onclick: function (sel) { if (sel === 0) { resolve(true); } else { resolve(false); } } }); } else { var modal = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)({ tag: _Modal__WEBPACK_IMPORTED_MODULE_2__/* ["default"].tag */ .Z.tag, child: { tag: _YesNoQuestionDialog__WEBPACK_IMPORTED_MODULE_1__/* ["default"].tag */ .Z.tag, props: { textYes: 'Có', textNo: 'Không', message: message, dialogTitle: title }, on: { action: (event) => { modal.remove(); resolve(event.action.name === 'yes'); } } } }).addTo(document.body); } }); } var charWidth = { "A": 9.337890625, "Á": 9.337890625, "À": 9.337890625, "Ả": 9.337890625, "Ã": 9.337890625, "Ạ": 9.337890625, "a": 7.7861328125, "á": 7.7861328125, "à": 7.7861328125, "ả": 7.7861328125, "ã": 7.7861328125, "ạ": 7.7861328125, "Ă": 9.337890625, "Ắ": 9.337890625, "Ằ": 9.337890625, "Ẳ": 9.337890625, "Ẵ": 9.337890625, "Ặ": 9.337890625, "ă": 7.7861328125, "ắ": 7.7861328125, "ằ": 7.7861328125, "ẳ": 7.7861328125, "ẵ": 7.7861328125, "ặ": 7.7861328125, "Â": 9.337890625, "Ấ": 9.337890625, "Ầ": 9.337890625, "Ẩ": 9.337890625, "Ẫ": 9.337890625, "Ậ": 9.337890625, "â": 7.7861328125, "ấ": 7.7861328125, "ầ": 7.7861328125, "ẩ": 7.7861328125, "ẫ": 7.7861328125, "ậ": 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, "É": 9.337890625, "È": 9.337890625, "Ẻ": 9.337890625, "Ẽ": 9.337890625, "Ẹ": 9.337890625, "e": 7.7861328125, "é": 7.7861328125, "è": 7.7861328125, "ẻ": 7.7861328125, "ẽ": 7.7861328125, "ẹ": 7.7861328125, "Ê": 9.337890625, "Ế": 9.337890625, "Ề": 9.337890625, "Ể": 9.337890625, "Ễ": 9.337890625, "Ệ": 9.337890625, "ê": 7.7861328125, "ế": 7.7861328125, "ề": 7.7861328125, "ể": 7.7861328125, "ễ": 7.7861328125, "ệ": 7.7861328125, "G": 10.8896484375, "g": 7.7861328125, "H": 10.1103515625, "h": 7.7861328125, "I": 3.8896484375, "Í": 3.8896484375, "Ì": 3.8896484375, "Ỉ": 3.8896484375, "Ĩ": 3.8896484375, "Ị": 3.8896484375, "i": 3.1103515625, "í": 3.1103515625, "ì": 3.1103515625, "ỉ": 3.1103515625, "ĩ": 3.1103515625, "ị": 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, "Ó": 10.8896484375, "Ò": 10.8896484375, "Ỏ": 10.8896484375, "Õ": 10.8896484375, "Ọ": 10.8896484375, "o": 7.7861328125, "ó": 7.7861328125, "ò": 7.7861328125, "ỏ": 7.7861328125, "õ": 7.7861328125, "ọ": 7.7861328125, "Ô": 10.8896484375, "Ố": 10.8896484375, "Ồ": 10.8896484375, "Ổ": 10.8896484375, "Ỗ": 10.8896484375, "Ộ": 10.8896484375, "ô": 7.7861328125, "ố": 7.7861328125, "ồ": 7.7861328125, "ổ": 7.7861328125, "ỗ": 7.7861328125, "ộ": 7.7861328125, "Ơ": 12.00390625, "Ớ": 12.00390625, "Ờ": 12.00390625, "Ở": 12.00390625, "Ỡ": 12.00390625, "Ợ": 12.00390625, "ơ": 9.1806640625, "ớ": 9.1806640625, "ờ": 9.1806640625, "ở": 9.1806640625, "ỡ": 9.1806640625, "ợ": 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, "Ú": 10.1103515625, "Ù": 10.1103515625, "Ủ": 10.1103515625, "Ũ": 10.1103515625, "Ụ": 10.1103515625, "u": 7.7861328125, "ú": 7.7861328125, "ù": 7.7861328125, "ủ": 7.7861328125, "ũ": 7.7861328125, "ụ": 7.7861328125, "Ư": 11.9560546875, "Ứ": 11.9560546875, "Ừ": 11.9560546875, "Ử": 11.9560546875, "Ữ": 11.9560546875, "Ự": 11.9560546875, "ư": 9.3720703125, "ứ": 9.3720703125, "ừ": 9.3720703125, "ử": 9.3720703125, "ữ": 9.3720703125, "ự": 9.3720703125, "V": 9.337890625, "v": 7, "X": 9.337890625, "x": 7, "Y": 9.337890625, "Ý": 9.337890625, "Ỳ": 9.337890625, "Ỷ": 9.337890625, "Ỹ": 9.337890625, "Ỵ": 9.337890625, "y": 7, "ý": 7, "ỳ": 7, "ỷ": 7, "ỹ": 7, "ỵ": 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; } /** *TODO: import from absol-acomp * @param {Text} text * @param {number=} startOffset * @param {number=} endOffset * @returns {*[]} */ function getTextNodeBounds(text, startOffset, endOffset) { if (!text || text.nodeType !== Node.TEXT_NODE || !text.parentElement) return null; var style = getComputedStyle(text.parentElement); var fontSize = parseFloat(style.getPropertyValue('font-size').replace('px', '')); var lineHeight = style.getPropertyValue('line-height'); if (lineHeight === 'normal') lineHeight = 1.2; else lineHeight = parseFloat(lineHeight.replace('px', '')) / fontSize; var txt = text.data; var y = -Infinity; var c; var range; var parts = []; var cPart; var j; var delta = lineHeight * fontSize / 3; var rect; var i = 0; if (isNaturalNumber(startOffset)) i = Math.max(startOffset, i); if (isNaturalNumber(endOffset)) endOffset = Math.min(txt.length, endOffset); else endOffset = txt.length while (i < endOffset) { c = txt[i]; j = i + 1; range = document.createRange(); range.setStart(text, i); range.setEnd(text, j); rect = absol_src_Math_Rectangle__WEBPACK_IMPORTED_MODULE_6__/* ["default"].fromClientRect */ .Z.fromClientRect(range.getBoundingClientRect()); if (Math.abs(rect.y - y) < delta) { cPart.end = j; cPart.rect = cPart.rect.merge(rect); } else { cPart = { start: i, end: j, rect: rect }; y = rect.y; parts.push(cPart); } i = j; } parts.forEach(part => { rect = part.rect; part.text = txt.substring(part.start, part.end); }); return parts; } /*** * * @param {number} v * @returns {number} */ function absCeil(v) { var a = Math.ceil(Math.abs(v)); return v < 0 ? -a : a; } /*** * * @param {number} x * @param {number} l * @returns {String} */ function zeroPadding(x, l) { var res = Math.abs(x) + ''; while (res.length < l) { res = '0' + res; } if (x < 0) res = '-' + res; return res; } 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", "autoFixParentSize", "sync", "$dropper", "$vmenu", "$button", "$text", "$key", "$arrow", "$iconCtn", "_textMarginRight", "_tabIndex", '$icon', '_icon', '$textNode', '$primaryBtn', '$extendBtn', '_menuHolder', '_items', 'hasClass'].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; } function getTagListInTextMessage(text) { var rg = /@\[id:(\d+)]/g; var matched = rg.exec(text); var dict = {}; var v; var res = []; while (matched) { v = parseInt(matched[1]); if (isNaN(v)) v = matched[1]; if (!dict[v]) { dict[v] = true; res.push(v); } matched = rg.exec(text); } return res; } /*** * * @param {AElement} e1 * @param {AElement} e2 */ function swapElt(e1, e2) { var temp = (0,_ACore__WEBPACK_IMPORTED_MODULE_0__._)('div'); e1.parentElement.replaceChild(temp, e1); e2.parentElement.replaceChild(e1, e2); temp.parentElement.replaceChild(e2, temp); } function swapChildrenInElt(e1, e2) { var c1 = Array.prototype.slice.call(e1.childNodes); var c2 = Array.prototype.slice.call(e2.childNodes); (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)(e1).clearChild(); (0,_ACore__WEBPACK_IMPORTED_MODULE_0__.$)(e2).clearChild(); while (c2.length > 0) { e1.appendChild(c2.shift()); } while (c1.length > 0) { e2.appendChild(c1.shift()); } } function replaceChildrenInElt(elt, childNodes) { var nChildren = childNodes.slice(); var cChildren = Array.prototype.slice.call(elt.childNodes); var cC, nC; while (cChildren.length > 0 && nChildren.length > 0) { cC = cChildren[0]; nC = nChildren[0]; if (cC === nC) { cChildren.shift(); nChildren.shift(); } else { break; } } cChildren.forEach((elt) => { elt.remove(); }); elt.addChild(nChildren); } function findVScrollContainer(elt) { if (!elt) return null; var parent = elt.parentElement; var overflowStyle; while (parent) { overflowStyle = window.getComputedStyle(parent)['overflow']; if ((overflowStyle === 'auto scroll' || overflowStyle === 'auto' || overflowStyle === 'hidden auto' || overflowStyle === 'scroll' || parent.tagName === 'HTML') && (parent.clientHeight < parent.scrollHeight)) { break; } parent = parent.parentElement; } if (!parent || parent === document || parent.tagName === "HTML" || parent.tagName === "html") { parent = document.body.parentElement; } return parent; } /** * * @param {HTMLElement} elt */ function vScrollIntoView(elt) { var parent = findVScrollContainer(elt); 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; } } function fileSize2Text(s) { if (typeof s !== "number" || isNaN(s)) return ''; var units = ['B', 'KB', 'MB', 'GB', 'TB']; var b = 1; for (var i = 0; i < units.length; ++i) { if (s <= b * 1024) { return Math.floor(s / b * 100) / 100 + units[i]; } b *= 1024; } return Math.floor(s / b * 10) / 100 + 'PB'; } function isDateTimeFormatToken(text) { //ND: like (Next day) return ['d', 'dd', 'M', 'MM', 'y', 'yyyy', 'h', 'hh', 'H', 'HH', 'm', 'mm', 'a', 'w', 'ww', 'Q', 'QQ', 'ND'].indexOf(text) >= 0; } var normalizeMinuteOfMillis = mil => { mil = mil >> 0; mil = Math.floor(mil / 6e4) * 6e4; if (mil === absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_5__.MILLIS_PER_DAY) return mil; mil = mil % absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_5__.MILLIS_PER_DAY; if (mil < 0) mil += absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_5__.MILLIS_PER_DAY; return mil; }; /** * * @param {number} mil * @returns {{hour: number, minute: number, isNextDate: boolean}} */ var millisToClock = mil => { var res = {}; res.minute = Math.floor(mil / 6e4) % 60; var hour = Math.floor(mil / 36e5); if (hour >= 24) { res.hour = hour % 24; res.isNextDate = true; } else { res.hour = hour; } return res; }; var clockToMillis = (hour, minute) => { var res = hour * absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_5__.MILLIS_PER_HOUR + minute * absol_src_Time_datetime__WEBPACK_IMPORTED_MODULE_5__.MILLIS_PER_MINUTE; if (isNaturalNumber(res)) return res; return null; }; function isRealNumber(value) { return (isFinite(value) && (typeof value === "number")); } function isNaturalNumber(value) { return (isInteger(value) && value >= 0); } function isInteger(value) { return (isFinite(value) && (typeof value === "number") && Math.floor(value) === value); } /**** * * @param {string} text * @param {{locales?:string}|string =} opt */ function parseLocalFloat(text, opt) { if (typeof opt === "string") opt = { locales: opt }; var locales = (opt && opt.locales) || (window.systemconfig && window.systemconfig.numberFormatLocales); var sample = locales ? (new Intl.NumberFormat(locales).format(123456.78)) : (123456.78.toLocaleString()); // decimal-separator, thousand-separator. var thousandSeparator = sample.match(/3(.?)4/)[1] || ''; var decimalSeparator = sample.match(/6(.?)7/)[1]; text = text.replace(new RegExp('[' + thousandSeparator + ']', 'g'), '') .replace(new RegExp('[' + decimalSeparator + ']', 'g'), '.'); return parseFloat(text); } function formatLocalFloat(value, opt) { if (typeof opt === "string") opt = { locales: opt }; var formatOpt = Object.assign({}, opt); delete formatOpt.locales; var locales = (opt && opt.locales) || (window.systemconfig && window.systemconfig.numberFormatLocales); var sample; var thousandSeparator; var decimalSeparator; if (!locales) { sample = (123456.78.toLocaleString()); thousandSeparator = sample.match(/3(.?)4/)[1] || ''; decimalSeparator = sample.match(/6(.?)7/)[1]; if (decimalSeparator === '.') locales = 'en-US'; else if (decimalSeparator === ',') { locales = 'vi-VN'; } } return new Intl.NumberFormat(locales, formatOpt).format(value); } /*** * * @param {String} text * @returns {Boolean} */ function isURLAddress(text) { if (typeof text != "string") return false; return text.startsWith('.') || text.startsWith('http://') || text.startsWith('https://') || text.startsWith('/'); } /*** * * @param {string | null} pattern * @param {string} typeString * @returns {boolean} */ function fileAccept(pattern, typeString) { if (!pattern) return true; var parts = pattern.split(',').map(function (x) { return x.trim().toLowerCase(); }); var ext = typeString.split('.').pop().toLowerCase(); var mineType = typeString.split('/').shift().toLowerCase(); return parts.some(function (part) { if (part === '*') return true; if (part === 'audio/*') { return mineType === 'audio' || ['.3gp', '.aa', '.aac', '.aax', '.act', '.aiff', '.alac', '.amr', '.ape', '.au', '.awb', '.dss', '.flac', '.gsm', '.m4a', '.m4b', '.m4p', '.mp3', '.mpc', '.ogg, .oga, .mogg' , '.opus', '.ra', '.rm', '.raw', '.rf64', '.sln', '.tta', '.voc', '.vox', '.wav', '.wma', '.wv', '.webm', '.8svx', '.cda'].indexOf(ext) >= 0; } else if (part === 'video/*') { return mineType === 'video' || ['.webm', '.mkv', '.flv', '.flv', '.vob', '.drc', '.gif', '.gifv', '.mng', '.avi', '.wmv', '.yuv', '.rm', '.rmvb', '.viv', '.asf', '.amv', '.m4v', '.svi', '.3gp', '.3g2', '.mxf', '.roq', '.nsv'].indexOf(ext) >= 0; } else if (part === 'image/*') { return mineType === 'video' || [ "ase", "art", "bmp", "blp", "cd5", "cit", "cpt", "cr2", "cut", "dds", "dib", "djvu", "egt", "exif", "gif", "gpl", "grf", "icns", "ico", "iff", "jng", "jpeg", "jpg", "jfif", "jp2", "jps", "lbm", "max", "miff", "mng", "msp", "nef", "nitf", "ota", "pbm", "pc1", "pc2", "pc3", "pcf", "pcx", "pdn", "pgm", "PI1", "PI2", "PI3", "pict", "pct", "pnm", "pns", "ppm", "psb", "psd", "pdd", "psp", "px", "pxm", "pxr", "qfx", "raw", "rle", "sct", "sgi", "rgb", "int", "bw", "tga", "tiff", "tif", "vtf", "xbm", "xcf", "xpm", "3dv", "amf", "ai", "awg", "cgm", "cdr", "cmx", "dxf", "e2d", "egt", "eps", "fs", "gbr", "odg", "svg", "stl", "vrml", "x3d", "sxd", "v2d", "vnd", "wmf", "emf", "art", "xar", "png", "webp", "jxr", "hdp", "wdp", "cur", "ecw", "iff", "lbm", "liff", "nrrd", "pam", "pcx", "pgf", "sgi", "rgb", "rgba", "bw", "int", "inta", "sid", "ras", "sun", "tga", "heic", "heif" ].indexOf(ext) >= 0; } else if (part.startsWith('.')) { return '.' + ext === part; } else { return part === ext || part === mineType; } }); } /*** * * @param {File|Blob|string|{url:string}} fi */ function fileInfoOf(fi) { var res = {}; var handle = o => { var parts; if (typeof o === "string") { res.name = res.name || (o.split('/').pop() || '').replace(/%([\dA-Fa-f][\dA-Fa-f])/g, (all, g1) => { var n = parseInt(g1, 16); if (typeof n === "number") { return String.fromCharCode(n); } return all; }).replace(/\?.+$/, ''); if (!res.url && isURLAddress(o)) res.url = o; parts = res.name.split('.'); if (!res.type && parts.length > 1) { res.type = parts.pop(); } else if (typeof res.url === 'string') { parts = res.url.split('.'); res.type = parts.pop(); } if (res.type === 'upload') res.type = parts.pop(); } else if ((typeof o === "object") && o) { if (o instanceof Blob) { res.mimeType = o.type; } if (!res.name && (typeof o.name === "string")) { res.name = o.name; } if (!res.size && (typeof o.size === "number")) { res.size = o.size; } if (typeof o.url === "string") { res.url = o.url; handle(o.url); } } }; handle(fi); if (res.name) { res.name = res.name.replace(/\.upload$/, '') } if (!res.type && res.name) { res.type = res.name.toLowerCase().split('.').slice(1).pop(); } if (!res.mimeType && res.type) { res.mimeType = absol_src_Converter_ext2MineType__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z[res.type]; } for (var k in res) { if (res[k] === undefined) delete res[k]; } return res; } function addElementsBefore(inElement, elements, at) { for (var i = 0; i < elements.length; ++i) { (inElement.addChildBefore || inElement.insertBefore).call(inElement, elements[i], at); } } function addElementAfter(inElement, elements, at) { var atIdx; var before; var i; if (at) { atIdx = Array.prototype.indexOf.call(inElement.childNodes, at); if (at && atIdx < 0) throw new Error("The node before which the new node is to be inserted is not a child of this node."); before = inElement.childNodes[atIdx + 1]; if (before) { for (i = 0; i < elements.length; ++i) { (inElement.addChildBefore || inElement.insertBefore).call(inElement, elements[i], before); } } else { for (i = 0; i < elements.length; ++i) { (inElement.addChild || inElement.appendChild).call(inElement, elements[i]); } } } else { before = inElement.firstChild; for (i = 0; i < elements.length; ++i) { (inElement.addChildBefore || inElement.insertBefore).call(inElement, elements[i], before); } } } function addElementClassName(elt, className) { if (typeof className === "string") { className = className.trim().split(/\s+/); } if (className instanceof Array) { className.forEach(cls => elt.classList.add(cls)); } } function findMaxZIndex(elt) { var e = elt var style; var res = 0; while (e && e !== document.body) { style = getComputedStyle(e); res = Math.max(parseFloat(style.getPropertyValue('z-index')) || 0); e = e.parentElement; } return res; } function getAncestorElementOf(elt) { while (elt.parentElement) { elt = elt.parentElement; } return elt; } function checkedValues2RootTreeValues(items, values) { var keyOf = (x) => (typeof x) + x; var dict = values.reduce((ac, cr) => { ac[keyOf(cr)] = true; return ac; }, {}); var checkScan = item => { if (dict[keyOf(item.value)]) return true; if (item.items && item.items.length > 0) { item.items.forEach(sItem => checkScan(sItem)); dict[keyOf(item.value)] = item.items.every(sItem => dict[keyOf(sItem.value)]); } return dict[keyOf(item.value)]; } var res = []; var scan = item => { if (dict[keyOf(item.value)]) { res.push(item.value); } else if (item.items && item.items.length > 0) { item.items.forEach(sItem => scan(sItem)); } } items.forEach(sItem => scan(sItem)); return res; } function rootTreeValues2CheckedValues(items, values) { var keyOf = (x) => (typeof x) + x; var dict = values.reduce((ac, cr) => { ac[keyOf(cr)] = true; return ac; }, {}); var res = []; var visit = (item, checked) => { if (checked) res.push(item.value); if (item.items && item.items.length > 0) { item.items.forEach(cr => visit(cr, checked || dict[keyOf(cr.value)])); } } items.forEach(cr => visit(cr, dict[keyOf(cr.value)])) return res; } /*** * * @param {SelectionItem[]} items * @param {{removeNoView?: boolean, removeNewLine?:boolean}=} opt * @returns {SelectionItem[]} */ function copySelectionItemArray(items, opt) { opt = opt || {}; if (opt.removeNoView) { items = items.filter((item) => !item.noView); } if (opt.removeNewLine) { items.forEach(it => { if (it.text && it.text.indexOf && it.text.indexOf('\n') >= 0) { it.text = it.text.replace(/[\r\n]/g, ''); } }) } return items.map(item => { var newItem; if (typeof item === "object" && ('text' in item)) { newItem = Object.assign({}, item); } else { newItem = { text: item + '', value: item } } if (item.items) { newItem.items = copySelectionItemArray(item.items, opt); } return newItem; }); } function compareSelectionItemArray(a, b) { if (a === b) return true; var aEmpty = !a || !a.length; var bEmpty = !b || !b.length; if (!aEmpty && aEmpty === bEmpty) return true; if (aEmpty !== bEmpty) return false; if (a.length !== b.length) return false; var n = a.length; var ait, bit; for (var i = 0; i < n; ++i) { ait = a[i]; bit = b[i]; if (ait === bit) continue; if (ait.text !== bit.text) return false; if (ait.text !== bit.text) return false; if (!compareSelectionItemArray(ait.items, bit.items)) return false; } return true; } /*** * * @param {AElement|HTMLElement} element * @param {number} padding */ function isScrolledToBottom(element, padding) { if (!isRealNumber(padding)) padding = 0; return (element.scrollHeight - element.scrollTop - padding <= element.clientHeight); } /** * parse a DMS string into latitude and longitude from google maps * @param {string} input * @returns {{latitude: number, longitude: number}|null} */ function parseDMS(input) { input = input.trim(); var regex = /([+-]?\d+)°(\d+)'([\d.]+)"([NS])\s*,?\s*([+-]?\d+)°(\d+)'([\d.]+)"([EW])/; var match = input.match(regex); if (!match) { return null; } var [, latDeg, latMin, latSec, latDir, lngDeg, lngMin, lngSec, lngDir] = match; // Convert DMS to decimal var lat = (parseInt(latDeg) + parseInt(latMin) / 60 + parseFloat(latSec) / 3600) * (latDir === "N" ? 1 : -1); var lng = (parseInt(lngDeg) + parseInt(lngMin) / 60 + parseFloat(lngSec) / 3600) * (lngDir === "E" ? 1 : -1); return { latitude: lat, longitude: lng }; } function parseLatLng(value) { value = value.trim(); value = value.replace(/(^\(\s*)|(\s*\)*)/g, ''); var nums = value.split(/\s*,\s*/); if (nums.length !== 2) return null; nums = nums.map((t) => { return parseFloat(t); }); if (isRealNumber(nums[0]) && isRealNumber(nums[1])) { return { latitude: nums[0], longitude: nums[1] }; } return null; } function normalizeLatLngString(text) { var latLgn = parseDMS(text) || parseLatLng(text); var lat, lng; if (latLgn) { lat = latLgn.latitude; lng = latLgn.longitude; lat = Math.max(-90, Math.min(90, lat)); if (lng < 180 && lng > 180) lng = (lng + 180 + 360 * Math.ceil(Math.abs(lng) / 360 + 2)) % 360 - 180; return [lat, lng].join(', '); } else return ''; } function implicitLatLng(value) { var latlng = null; var nums; if (typeof value === "string") { latlng = parseDMS(value); if (latlng) { latlng = new google.maps.LatLng(latlng.latitude, latlng.longitude); } else { latlng = parseLatLng(value); if (latlng) { } nums = value.split(/\s*,\s*/).map(function (t) { return parseFloat(t); }); if (isRealNumber(nums[0]) && isRealNumber(nums[1])) { latlng = new google.maps.LatLng(nums[0], nums[1]); } } } else if (value instanceof google.maps.LatLng) { latlng = value; } else if (value && isRealNumber(value.latitude) && isRealNumber(value.longitude)) { latlng = new google.maps.LatLng(value.latitude, value.longitude); } else if (value && isRealNumber(value.lat) && isRealNumber(value.lng)) { latlng = new google.maps.LatLng(value.lat, value.lng); } else if ((value instanceof Array) && isRealNumber(value[0]) && isRealNumber(value[1])) { latlng = new google.maps.LatLng(value[0], value[1]); } return latlng; } function getMapZoomLevel(mapDim, bounds) { var WORLD_DIM = { height: 256, width: 256 }; var ZOOM_MAX = 21; function latRad(lat) { var sin = Math.sin(lat * Math.PI / 180); var radX2 = Math.log((1 + sin) / (1 - sin)) / 2; return Math.max(Math.min(radX2, Math.PI), -Math.PI) / 2; } function zoom(mapPx, worldPx, fraction) { return Math.floor(Math.log(mapPx / worldPx / fraction) / Math.LN2); } if (!bounds) return 17; if (!mapDim) return 17; var ne = bounds.getNorthEast(); var sw = bounds.getSouthWest(); if (!ne || !ne.lat) return 17; if (!sw || !sw.lat) return 17; var latFraction = (latRad(ne.lat()) - latRad(sw.lat())) / Math.PI; var lngDiff = ne.lng() - sw.lng(); var lngFraction = ((lngDiff < 0) ? (lngDiff + 360) : lngDiff) / 360; var latZoom = zoom(mapDim.height, WORLD_DIM.height, latFraction); var lngZoom = zoom(mapDim.width, WORLD_DIM.width, lngFraction); return Math.min(latZoom, lngZoom, ZOOM_MAX); } /*** * * @param p0 * @param p1 * @returns {number} */ function latLngDistance(p0, p1) { var lat0 = p0.lat(); var lat1 = p1.lat(); var lng0 = p0.lng(); var lng1 = p1.lng(); var toRad = function (value) { return value * Math.PI / 180; }; var R = 6371; var dLat = toRad(lat1 - lat0); var dLng = toRad(lng1 - lng0); lat0 = toRad(lat0); lat1 = toRad(lat1); var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLng / 2) * Math.sin(dLng / 2) * Math.cos(lat0) * Math.cos(lat1); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); var d = R * c; return d; } function keyStringOf(o) { var type = typeof o; var keys; if (o && type === "object") { if (typeof o.getTime === "function") { return 'd(' + o.getTime() + ')'; } else if (typeof o.map === "function") { return 'a(' + o.map(val => keyStringOf(val)).join(',') + ')'; } else { keys = Object.keys(o); keys.sort(); return 'o(' + keys.map(key => key + ':' + keyStringOf(o[key])).join(',') + ')'; } } else { return type[0] + '(' + o + ')'; } } function jsStringOf(x) { if (x === null) return 'null'; if (x === undefined) return 'undefined'; var type = typeof x; if (type === 'string' || type === 'number') return JSON.stringify(x); if (x instanceof Date) return 'new Date(' + x.getTime() + ')'; var keys; keys = Object.keys(x); keys.sort(); return '{' + keys.map(function (key) { return JSON.stringify(key) + ':' + jsStringOf(x[key]); }).join(',') + '}'; } function calcDTQueryHash(o) { var s = jsStringOf(o); return (0,absol_src_String_stringUtils__WEBPACK_IMPORTED_MODULE_8__/* .stringHashCode */ .$)(s); } function replaceInObject(o, replacer, test) { return new Promise((rs) => { var sync = []; function visit(so) { Object.keys(so).forEach((key) => { var newValue; if (test(so[key])) { newValue = replacer(so[key], key, so); if (newValue && newValue.then) { sync.push(newValue); newValue.then(newValue => so[key] = newValue); } else { so[key] = newValue; } } else if (typeof so[key] === "object" && so[key]) { visit(so[key]); } }); } visit(o); Promise.all(sync).then(() => { rs(o); }) }); } function replaceFileInObject(o, replacer) { return replaceInObject(o, replacer, (value, key, object) => { return (value instanceof File) || (value instanceof Blob); }); } function isNone(x) { return x === null || x === undefined; } var measureTool = new _tool_TextMeasurement__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z(); function wrapWord(text, width, font) { font = font || '14px arial'; measureTool.compute(font); var res = []; var i = 1; var prevText = ''; var curText; while (text.length > 0) { if (i > text.length && text) { res.push(text); break; } curText = text.substring(0, i); if (measureTool.measureTextWidth(curText, font) <= width || !prevText) { prevText = curText; } else { text = text.substring(prevText.length).trimStart(); res.push(prevText); prevText = ''; i = 1; continue; } ++i; } return res; } function wrapText(text, width, font) { font = font || '14px arial'; measureTool.compute(font); var res = []; var i = 1; var prevText = ''; var prevWidth = 0; var curText, curWidth; while (text.length > 0) { if (i > text.length && text) { prevText = text; prevWidth = measureTool.measureTextWidth(prevText, font); if (prevWidth <= width) { res.push(prevText); } else { res.push.apply(res, wrapWord(prevText, width, font)); } break; } if (!text[i - 1].match(/[\s\n]/) && (!text[i] || text[i].match(/[\s\n]/))) { curText = text.substring(0, i); curWidth = measureTool.measureTextWidth(curText, font); if (curWidth <= width || !prevText) { prevText = curText; prevWidth = curWidth; } else { if (prevWidth <= width) { res.push(prevText); } else { prevText = wrapWord(prevText, width, font).shift(); res.push(prevText); } text = text.substring(prevText.length).trimStart(); prevText = ''; i = 1; continue; } } ++i; } return res; } var listenMethodNames = ['appendChild', 'insertBefore', 'addStyle', 'removeStyle', 'removeChild', 'remove']; var originalMethodNames = listenMethodNames.map(x => 'original_' + x); function listenDomContentChange(elt, callback) { function emit(name, event) { if (!callback) return; if (name === 'change') { if (typeof callback === "function") callback(event); else if (callback.change) { callback.change(event); } } else if (typeof callback[name] === "function") callback[name](event); } var overrideMethods = listenMethodNames.map((name, i) => { if (i < 2) { return function (child) { var res = this[originalMethodNames[i]].apply(this, arguments); addHook(child); emit('change', { target: this, method: name, args: Array.prototype.slice.call(arguments) }) return res; } } else if (i < 4) { return function () { var res = this[originalMethodNames[i]].apply(this, arguments); if (arguments[0] === 'display') emit('change', { target: this, method: name, args: Array.prototype.slice.call(arguments) }); return res; } } else if (i < 5) { return function (child) { var res = this[originalMethodNames[i]].apply(this, arguments); removeHook(child); emit('change', { target: this, method: name, args: Array.prototype.slice.call(arguments) }); return res; } } else { return function () { var res = this[originalMethodNames[i]].apply(this, arguments); removeHook(this); emit('change', { target: this, method: name, args: Array.prototype.slice.call(arguments) }); return res; } } }); /** * * @param {HTMLElement|AElement|Node} child */ var addHook = (child) => { if (!child) return; if (child.nodeType !== Node.ELEMENT_NODE) return; if (child.domHooked) return; child.domHooked = true; var i; var ln; for (i = 0; i < listenMethodNames.length; ++i) { ln = listenMethodNames[i]; if (!absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_7__/* ["default"].prototype */ .Z.prototype[ln] || absol_src_HTML5_AElement__WEBPACK_IMPORTED_MODULE_7__/* ["default"].prototype */ .Z.prototype[ln] === child[ln]) { child[originalMethodNames[i]] = child[ln]; child[ln] = overrideMethods[i]; } } if (callback && callback.scrollIntoView) { child.scrollIntoView1 = child.scrollIntoView; child.scrollIntoView = function () { emit('scrollIntoView', { target: this, method: name, args: Array.prototype.slice.call(arguments) }); }; } if (!child._azar_extendTags || Object.keys(child._azar_extendTags).length === 0) { for (i = 0; i < child.childNodes.length; ++i) addHook(child.childNodes[i]); } } var removeHook = (child) => { if (!child) return; if (child.nodeType !== Node.ELEMENT_NODE) return; if (!child.domHooked) return; delete child.domHooked; var i; for (i = 0; i < listenMethodNames.length; ++i) { if (child[originalMethodNames[i]]) { child[listenMethodNames[i]] = child[originalMethodNames[i]]; delete child[originalMethodNames[i]]; } } if (child.scrollIntoView1) { child.scrollIntoView = child.scrollIntoView1; delete child.scrollIntoView1; } for (i = 0; i < child.childNodes.length; ++i) removeHook(child.childNodes[i]); } addHook(elt); } var mdiLoadSync; function getMaterialDesignIconNames() { if (mdiLoadSync) return mdiLoadSync; mdiLoadSync = fetch('https://absol.cf/vendor/materialdesignicons/materialdesignicons.css') .then(res => res.text()).then(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; }).catch(err => { mdiLoadSync = null; }); return mdiLoadSync; } /***/ }), /***/ 2243: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (CMDRunner); /***/ }), /***/ 5721: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Code_noop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1432); function Context() { /**** * * @type {"CREATE"|"PAUSE"|"RUNNING"|"STANDBY"|"DIE"|"STOP"} */ 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.warn(this, 'NOT READY!', this.state); return; } if (this.state === "RUNNING") return; this.state = "RUNNING"; this.onResume && this.onResume(); }; /*** * @param {boolean=} standBy start but waiting for resume() */ Context.prototype.start = function (standBy) { if (this.state.match(/DIE/)) { // console.warn(this, 'DIED!'); return; } if (this.state.match(/RUNNING/)) return; if (this.state.match(/STOP|CREATE/)) { this.state = "STANDBY"; this.onStart && this.onStart(); } if (!standBy && 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 = _Code_noop__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z; Context.prototype.onStop = _Code_noop__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z; Context.prototype.onStart = _Code_noop__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z; Context.prototype.onResume = _Code_noop__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z; Context.prototype.onPause = _Code_noop__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z; Context.prototype.onDetached = _Code_noop__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z; Context.prototype.onAttached = _Code_noop__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Context); /***/ }), /***/ 6372: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (ContextManager); /***/ }), /***/ 4861: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ AppPattern_Fragment) }); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/ContextManager.js var ContextManager = __webpack_require__(6372); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/Context.js var Context = __webpack_require__(5721); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/GrandContext.js /*** * @extends Context * @constructor */ function GrandContext(){ Context/* default.call */.Z.call(this); this.ctxMng = new ContextManager/* default */.Z(); } OOP/* default.mixClass */.ZP.mixClass(GrandContext, Context/* default */.Z); /* harmony default export */ const AppPattern_GrandContext = (GrandContext); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Fragment.js /*** * @extends GrandContext * @constructor */ function Fragment() { AppPattern_GrandContext.call(this); } OOP/* default.mixClass */.ZP.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/* default */.Z; Fragment.prototype.revokeResource = function () { this.destroy(); }; /* harmony default export */ const AppPattern_Fragment = (Fragment); /***/ }), /***/ 4446: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /*** * * @param {T} value * @param {*=} type * @constructor * @template T */ function Ref(value, type) { this.type = type; this.value = value; } Ref.prototype.toString = function () { return this.value + ''; }; /*** * * @return {T} */ Ref.prototype.valueOf = function () { return this.value; }; /*** * * @param {T}value */ Ref.prototype.set = function (value) { this.value = value; }; /** * * @return {T} */ Ref.prototype.get = function () { return this.value; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Ref); /***/ }), /***/ 1312: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); function VarScope(parent) { this.parent = parent; this.data = {}; } VarScope.prototype.revoke = function (name) { delete this.data[name]; return this; }; VarScope.prototype.isDeclared = function (name) { return (name in this.data); }; /*** * * @param name * @param initValue * @param {boolean=} force * @return {VarScope} */ VarScope.prototype.declare = function (name, initValue, force) { if ((name in this.data) && !force) throw new Error(name + ' is already delared in this scope!'); this.data[name] = initValue; return this; }; 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (VarScope); /***/ }), /***/ 1432: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (/* binding */ noop) /* harmony export */ }); function noop(){}; /***/ }), /***/ 5650: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (/* binding */ safeThrow) /* harmony export */ }); function safeThrow(error) { var func = function () { if (error.stack) { try { error.message += '\n' + error.stack; } catch (e){ //can not modify message } } throw error; } if (window.Thread && window.Thread.setTimeout) { window.Thread.setTimeout({ func: func, time: 1, type: 'background', args: [], stack: error.stack || "" }); } else { setTimeout(func, 1); } } /***/ }), /***/ 257: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _JSMaker_TemplateString__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(369); function Color(rgba) { this.rgba = rgba.slice(); } /*** * * @returns {string} */ 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(''); }; /*** * * @returns {string} */ Color.prototype.toHex8 = function () { return this.rgba.map(function (b) { b = b * 255 >> 0; return (b < 16 ? '0' : '') + b.toString(16); }).join(''); }; /*** * * @returns {string} */ Color.prototype.toHex3 = function () { return this.rgba.slice(0, 3).map(function (b) { b = b * 255 / 17 >> 0; return b.toString(16); }).join(''); }; /*** * * @returns {string} */ Color.prototype.toHex4 = function () { return this.rgba.map(function (b) { b = b * 255 / 17 >> 0; return b.toString(16); }).join(''); }; /*** * * @returns {number[]} */ Color.prototype.toHSLA = function () { return Color.rgbaToHSLA(this.rgba); }; /*** * * @returns {number[]} */ Color.prototype.toHSBA = function () { return Color.rgbaToHSBA(this.rgba); }; /*** * * @returns {number[]} */ Color.prototype.toHWBA = function () { return Color.rgbaToHWBA(this.rgba); }; /*** * * @returns {number[]} */ Color.prototype.toCMYK = function () { return Color.rgbToCMYK(this.rgba); }; /*** * * @returns {Color} */ Color.prototype.getHighContrastColor = 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.getHightContrastColor = Color.prototype.getHighContrastColor; Color.prototype.getLuminance = function () { var a = this.rgba.slice(0, 3).map(function (v) { return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); }); return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722; }; /*** * * @param {Color} other * @returns {number} */ Color.prototype.getContrastWith = function (other) { var lum1 = this.getLuminance(); var lum2 = other.getLuminance(); var brightest = Math.max(lum1, lum2); var darkest = Math.min(lum1, lum2); return (brightest + 0.05) / (darkest + 0.05); }; /*** * * @returns {Color} */ 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]); }; /** * * @returns {Color} */ Color.prototype.clone = function () { return new Color(this.rgba.slice()); }; /** * * ['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}}'], * ['hex6', '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]}})'] * ['cmyk', 'toCMYK()', 'hwba({{x[0] * 100%}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'] */ /**** * * @param {"rgba"|"rgb"|"hsl"|"hsla"|"hsb"|"hsba"|"hex3"|"hex4"|"hex6"|"hex6"|hex8|"hwb"|"hwba"} mode * @returns {string} */ Color.prototype.toString = function (mode) { mode = mode || 'rgba'; mode = mode.toLocaleLowerCase(); return Color.templates[mode](this); }; /*** * * @param notStandard * @param {number[]} hsbWeight * @returns {Color} */ 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]}})'], ['cmyk', 'toCMYK()', 'cmyk({{x[0] * 100}}%, {{x[1] * 100}}%, {{x[2] * 100}}%)'] ].reduce(function (ac, cr) { ac[cr[0]] = new Function('color', [ 'var x = color.' + cr[1] + ';', 'return ' + _JSMaker_TemplateString__WEBPACK_IMPORTED_MODULE_0__/* ["default"].parse */ .Z.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.regexes.cmyk = new RegExp( [ '^cmyk\\(', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$' ].join(Color.regexes.whiteSpace.source), 'i' ); /*** * * @param {number} code * @param {32|24|16|8} bits * @returns {Color} */ 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]); }; /** * * @param {number} r * @param {number} g * @param {number} b * @returns {Color} */ Color.fromRGB = function (r, g, b) { return new Color([r, g, b, 1]); }; /** * * @param {number} r * @param {number} g * @param {number} b * @param {number} a * @returns {Color} */ Color.fromRGBA = function (r, g, b, a) { return new Color([r, g, b, a]); }; /*** * * @param {number} h * @param {number} s * @param {number} l * @returns {Color} */ Color.fromHSL = function (h, s, l) { var rgba = this.hslaToRGBA([h, s, l, 1]); return new Color(rgba); }; /*** * * @param {number} h * @param {number} s * @param {number} l * @param {number} a * @returns {Color} */ Color.fromHSLA = function (h, s, l, a) { var rgba = this.hslaToRGBA([h, s, l, a]); return new Color(rgba); }; /*** * * @param {number} h * @param {number} s * @param {number} b * @returns {Color} */ Color.fromHSB = function (h, s, b) { var rgba = this.hsbaToRGBA([h, s, b, 1]); return new Color(rgba); }; /*** * * @param {number} h * @param {number} s * @param {number} b * @param {number} a * @returns {Color} */ Color.fromHSBA = function (h, s, b, a) { var rgba = this.hsbaToRGBA([h, s, b, a]); return new Color(rgba); }; /*** * * @param {number} h * @param {number} s * @param {number} b * @returns {Color} */ Color.fromHWB = function (h, s, b) { var rgba = this.hwbaToRGBA([h, s, b, 1]); return new Color(rgba); }; /*** * * @param {number} h * @param {number} s * @param {number} b * @param {number} a * @returns {Color} */ Color.fromHWBA = function (h, s, b, a) { var rgba = this.hwbaToRGBA([h, s, b, a]); return new Color(rgba); }; Color.fromCMYK = function (c, m, y, k) { var rgba = this.cmykToRGB([c, m, y, k]).concat([0]); 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) / 255 : parseFloat(v); })); } 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) / 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) / 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) / (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) / (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) / (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) / (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) / (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) / (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) / (i == 0 ? 360 : i < 3 ? 100 : 1); })); } else if (this.regexes.cmyk.test(text)) { return this.fromCMYK.apply(this, this.regexes.cmyk.exec(text) .slice(1) .map(function (v, i) { return parseFloat(v) /100; })); } 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.cmykToText = function (cmyk) { return 'cmyk(' + cmyk.map(function (x) { return x * 100 + '%' }).join(', ') + ')'; }; 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)); }; Color.cmykToRGB = function (cmyk) { var c = cmyk[0]; var m = cmyk[1]; var y = cmyk[2]; var k = cmyk[3]; c = c * (1 - k) + k; m = m * (1 - k) + k; y = y * (1 - k) + k; var r = 1 - c; var g = 1 - m; var b = 1 - y; return [r, g, b]; }; Color.rgbToCMYK = function (rgb) { var r = rgb[0]; var g = rgb[1]; var b = rgb[2]; var c = 1 - r; var m = 1 - g; var y = 1 - b; var k = Math.min(c, Math.min(m, y)); c = (c - k) / (1 - k); m = (m - k) / (1 - k); y = (y - k) / (1 - k); c = isNaN(c) ? 0 : c; m = isNaN(m) ? 0 : m; y = isNaN(y) ? 0 : y; k = isNaN(k) ? 0 : k; return [c, m, y, k]; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Color); /***/ }), /***/ 9959: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "base64EncodeUnicode": () => (/* binding */ base64EncodeUnicode), /* harmony export */ "base64DecodeUnicode": () => (/* binding */ base64DecodeUnicode), /* harmony export */ "UnicodeBase64Converter": () => (/* binding */ UnicodeBase64Converter) /* harmony export */ }); 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 }; /***/ }), /***/ 9691: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var ext2MineType = { "323": "text/h323", "*": "application/octet-stream", "3g2": "video/3gpp2", "3gp": "video/3gpp", "7z": "application/x-7z-compressed", aac: "audio/aac", abw: "application/x-abiword", acx: "application/internet-property-stream", ai: "application/postscript", aif: "audio/x-aiff", aifc: "audio/x-aiff", aiff: "audio/x-aiff", arc: "application/x-freearc", asf: "video/x-ms-asf", asr: "video/x-ms-asf", asx: "video/x-ms-asf", au: "audio/basic", avi: "video/x-msvideo", axs: "application/olescript", azw: "application/vnd.amazon.ebook", bas: "text/plain", bcpio: "application/x-bcpio", bin: "application/octet-stream", bmp: "image/bmp", bz: "application/x-bzip", bz2: "application/x-bzip2", c: "text/plain", cat: "application/vnd.ms-pkiseccat", cda: "application/x-cdf", cdf: "application/x-netcdf", cer: "application/x-x509-ca-cert", class: "application/octet-stream", clp: "application/x-msclip", cmx: "image/x-cmx", cod: "image/cis-cod", cpio: "application/x-cpio", crd: "application/x-mscardfile", crl: "application/pkix-crl", crt: "application/x-x509-ca-cert", csh: "application/x-csh", css: "text/css", csv: "text/csv", dcr: "application/x-director", der: "application/x-x509-ca-cert", dir: "application/x-director", dll: "application/x-msdownload", dms: "application/octet-stream", doc: "application/msword", docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", dot: "application/msword", dvi: "application/x-dvi", dxr: "application/x-director", eot: "application/vnd.ms-fontobject", eps: "application/postscript", epub: "application/epub+zip", etx: "text/x-setext", evy: "application/envoy", exe: "application/octet-stream", fif: "application/fractals", flr: "x-world/x-vrml", gif: "image/gif", gtar: "application/x-gtar", gz: "application/gzip", h: "text/plain", hdf: "application/x-hdf", hlp: "application/winhlp", hqx: "application/mac-binhex40", hta: "application/hta", htc: "text/x-component", htm: "text/html", html: "text/html", htt: "text/webviewhtml", ico: "image/vnd.microsoft.icon", ics: "text/calendar", ief: "image/ief", iii: "application/x-iphone", ins: "application/x-internet-signup", isp: "application/x-internet-signup", jar: "application/java-archive", jfif: "image/pipeg", jpe: "image/jpeg", jpeg: "image/jpeg", jpg: "image/jpeg", js: "text/javascript", json: "application/json", jsonld: "application/ld+json", latex: "application/x-latex", lha: "application/octet-stream", lsf: "video/x-la-asf", lsx: "video/x-la-asf", lzh: "application/octet-stream", m13: "application/x-msmediaview", m14: "application/x-msmediaview", m3u: "audio/x-mpegurl", man: "application/x-troff-man", mdb: "application/x-msaccess", me: "application/x-troff-me", mht: "message/rfc822", mhtml: "message/rfc822", mid: "audio/midi", midi: "audio/midi", mjs: "text/javascript", mny: "application/x-msmoney", mov: "video/quicktime", movie: "video/x-sgi-movie", mp2: "video/mpeg", mp3: "audio/mpeg", mp4: "video/mp4", mpa: "video/mpeg", mpe: "video/mpeg", mpeg: "video/mpeg", mpg: "video/mpeg", mpkg: "application/vnd.apple.installer+xml", mpp: "application/vnd.ms-project", mpv2: "video/mpeg", ms: "application/x-troff-ms", msg: "application/vnd.ms-outlook", mvb: "application/x-msmediaview", nc: "application/x-netcdf", nws: "message/rfc822", oda: "application/oda", odp: "application/vnd.oasis.opendocument.presentation", ods: "application/vnd.oasis.opendocument.spreadsheet", odt: "application/vnd.oasis.opendocument.text", oga: "audio/ogg", ogv: "video/ogg", ogx: "application/ogg", opus: "audio/opus", otf: "font/otf", p10: "application/pkcs10", p12: "application/x-pkcs12", p7b: "application/x-pkcs7-certificates", p7c: "application/x-pkcs7-mime", p7m: "application/x-pkcs7-mime", p7r: "application/x-pkcs7-certreqresp", p7s: "application/x-pkcs7-signature", pbm: "image/x-portable-bitmap", pdf: "application/pdf", pfx: "application/x-pkcs12", pgm: "image/x-portable-graymap", php: "application/x-httpd-php", pko: "application/ynd.ms-pkipko", pma: "application/x-perfmon", pmc: "application/x-perfmon", pml: "application/x-perfmon", pmr: "application/x-perfmon", pmw: "application/x-perfmon", png: "image/png", pnm: "image/x-portable-anymap", pot: "application/vnd.ms-powerpoint", ppm: "image/x-portable-pixmap", pps: "application/vnd.ms-powerpoint", ppt: "application/vnd.ms-powerpoint", pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation", prf: "application/pics-rules", ps: "application/postscript", pub: "application/x-mspublisher", qt: "video/quicktime", ra: "audio/x-pn-realaudio", ram: "audio/x-pn-realaudio", rar: "application/vnd.rar", ras: "image/x-cmu-raster", rgb: "image/x-rgb", rmi: "audio/mid", roff: "application/x-troff", rtf: "application/rtf", rtx: "text/richtext", scd: "application/x-msschedule", sct: "text/scriptlet", setpay: "application/set-payment-initiation", setreg: "application/set-registration-initiation", sh: "application/x-sh", shar: "application/x-shar", sit: "application/x-stuffit", snd: "audio/basic", spc: "application/x-pkcs7-certificates", spl: "application/futuresplash", src: "application/x-wais-source", sst: "application/vnd.ms-pkicertstore", stl: "application/vnd.ms-pkistl", stm: "text/html", sv4cpio: "application/x-sv4cpio", sv4crc: "application/x-sv4crc", svg: "image/svg+xml", swf: "application/x-shockwave-flash", t: "application/x-troff", tar: "application/x-tar", tcl: "application/x-tcl", tex: "application/x-tex", texi: "application/x-texinfo", texinfo: "application/x-texinfo", tgz: "application/x-compressed", tif: "image/tiff", tiff: "image/tiff", tr: "application/x-troff", trm: "application/x-msterminal", ts: "video/mp2t", tsv: "text/tab-separated-values", ttf: "font/ttf", txt: "text/plain", uls: "text/iuls", ustar: "application/x-ustar", vcf: "text/x-vcard", vrml: "x-world/x-vrml", vsd: "application/vnd.visio", wav: "audio/wav", wcm: "application/vnd.ms-works", wdb: "application/vnd.ms-works", weba: "audio/webm", webm: "video/webm", webp: "image/webp", wks: "application/vnd.ms-works", wmf: "application/x-msmetafile", woff: "font/woff", woff2: "font/woff2", wps: "application/vnd.ms-works", wri: "application/x-mswrite", wrl: "x-world/x-vrml", wrz: "x-world/x-vrml", xaf: "x-world/x-vrml", xbm: "image/x-xbitmap", xhtml: "application/xhtml+xml", xla: "application/vnd.ms-excel", xlc: "application/vnd.ms-excel", xlm: "application/vnd.ms-excel", xls: "application/vnd.ms-excel", xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", xlt: "application/vnd.ms-excel", xlw: "application/vnd.ms-excel", xml: "application/xml", xof: "x-world/x-vrml", xpm: "image/x-xpixmap", xul: "application/vnd.mozilla.xul+xml", xwd: "image/x-xwindowdump", z: "application/x-compress", zip: "application/zip" }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ext2MineType); /***/ }), /***/ 4574: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "blobToFile": () => (/* binding */ blobToFile), /* harmony export */ "dataURItoBlob": () => (/* binding */ dataURItoBlob), /* harmony export */ "blobToArrayBuffer": () => (/* binding */ blobToArrayBuffer), /* harmony export */ "stringToBlob": () => (/* binding */ stringToBlob) /* harmony export */ }); /* harmony import */ var _ext2MineType__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9691); 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) { type = type || 'text/plain'; var mineTye = type.split('/').length === 2 ? type : (_ext2MineType__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z[type] || 'text/plain'); return new Blob([text], { type: mineTye }); } /***/ }), /***/ 7835: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "arrayUnique": () => (/* binding */ arrayUnique), /* harmony export */ "arrayRemoveNone": () => (/* binding */ arrayRemoveNone), /* harmony export */ "arrayIntersection": () => (/* binding */ arrayIntersection), /* harmony export */ "arrayIsSubset": () => (/* binding */ arrayIsSubset), /* harmony export */ "arrayCompare": () => (/* binding */ arrayCompare), /* harmony export */ "arrayLexicographicalCompare": () => (/* binding */ arrayLexicographicalCompare), /* harmony export */ "arrayShuffle": () => (/* binding */ arrayShuffle) /* harmony export */ }); /*** * * @param {(string|number|boolean|null)[]} arr * @returns {(string|number|boolean|null)[]} */ function arrayUnique(arr) { var dict = {}; return arr.reduce(function (ac, cr) { var key = (typeof cr) + '//' + cr; if (key in dict) return ac; ac.push(cr); dict[key] = true; return ac; }, []); } /*** * * @param {[]}arr * @return {[]} */ function arrayRemoveNone(arr) { return arr.filter(function (c) { return c !== null && c !== undefined; }); } function arrayIntersection(a1, a2) { var dict1 = a1.reduce((ac, cr) => { ac[(typeof cr) + cr] = true; return ac; }, {}); var dict2 = a2.reduce((ac, cr) => { ac[(typeof cr) + cr] = true; return ac; }, {}); var dictAdded = {}; var res = []; var i, k, x; for (i = 0; i < a1.length; ++i) { x = a1[i]; k = (typeof x) + x; if (dict1[k] && dict2[k] && !dictAdded[k]) { res.push(x); dictAdded[k] = true; } } for (i = 0; i < a2.length; ++i) { x = a2[i]; k = (typeof x) + x; if (dict1[k] && dict2[k] && !dictAdded[k]) { res.push(x); dictAdded[k] = true; } } return res; } function arrayIsSubset(childArr, parentArr) { if (!(childArr instanceof Array) || !(parentArr instanceof Array)) return false; var dict2 = parentArr.reduce((ac, cr) => { ac[(typeof cr) + cr] = true; return ac; }, {}); var res = true; var n = childArr.length; var k; for (var i = 0; i < n; ++i) { k = (typeof childArr[i]) + childArr[i]; if (!dict2[k]) { res = false; break; } } return res; } /*** * * @param {[]}a1 * @param {[]}a2 * @param {boolean=} order * @returns {boolean} */ function arrayCompare(a1, a2, order) { if (a1 === a2) return true; if (!a1 || !a2) return false; if (a1.length !== a2.length) return false; if (!a1.sort || !a2.sort) return false; if (!order) { a1.sort(); a2.sort(); } var n = a1.length; for (var i = 0; i < n; ++i) { if (a1[i] !== a2[i]) return false; } return true; } /** * * @param {number[]} a1 * @param {number[]} a2 * @returns {number} */ function arrayLexicographicalCompare(a1, a2) { var minLength = Math.min(a1.length, a2.length); for (var i = 0; i < minLength; i++) { if (a1[i] < a2[i]) { return -1; // array1 nhỏ hơn array2 } else if (a1[i] > a2[i]) { return 1; // array1 lớn hơn array2 } } if (a1.length < a2.length) { return -1; } else if (a1.length > a2.length) { return 1; } else { return 0; } } /*** * * @param {Array} arr */ function arrayShuffle(arr) { var temp; var j; for (var i = 0; i < arr.length; ++i) { j = Math.floor(Math.random() * arr.length); if (i !== j) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } /***/ }), /***/ 5491: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports defaultCmp, heapDown, heapUp, heapify, heapPop, heapPush */ 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (Heap); /***/ }), /***/ 2722: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "bU": () => (/* binding */ revokeResource), /* harmony export */ "U": () => (/* binding */ observePropertyChanges), /* harmony export */ "i3": () => (/* binding */ unobservePropertyChanges) /* harmony export */ }); function revokeResource(o) { if (!o) return; var oc, ocs; var keys, key; if (Array.isArray(o)) { while (o.length) { oc = o.pop(); try { revokeResource(oc); } catch (err) { } } } else if (o.revokeResource) { o.revokeResource(); } else if (o.nodeType === 1 || o.nodeType === 3) { if (o.revokeResource) o.revokeResource(); else { while (o.lastChild) { oc = o.lastChild; revokeResource(oc); // if (oc.selfRemove) { // oc.selfRemove(); // } // else { oc.remove(); // } } } } else if (typeof o === "object") { keys = []; ocs = []; for (key in o) { keys.push(key); } while (keys.length) { key = keys.pop(); ocs.push(o[keys]); try { delete o[key]; } catch (err) { } } while (ocs.length) { try { revokeResource(ocs.pop()); } catch (err) { } } } ocs = undefined; oc = undefined; keys = undefined; key = undefined; o = undefined; } /** * * @param obj * @param {string|Array<string>} keys * @param {function} callback */ function observePropertyChanges(obj, keys, callback) { var value; if (Array.isArray(keys)) { keys.forEach(key => { observePropertyChanges(obj, key, callback); }); } else { value = obj[keys]; Object.defineProperty(obj, keys, { get: function () { return value; }, set: function (newValue) { value = newValue; callback(keys, newValue); }, configurable: true, enumerable: true }); } } /** * * @param obj * @param {string|Array<string>} keys */ function unobservePropertyChanges(obj, keys) { var value; if (Array.isArray(keys)) { keys.forEach(key=>{ unobservePropertyChanges(obj, key); }) } else { value = obj[keys]; delete obj[keys]; obj[keys] = value; } } /***/ }), /***/ 9399: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony export calcBenchmark */ /* harmony import */ var _BrowserRules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2777); /* harmony import */ var _BrowserRules__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_BrowserRules__WEBPACK_IMPORTED_MODULE_0__); /** * * @param rulesheet * @param {string=} userAgent */ function BrowserDetector(rulesheet, userAgent) { this.au = userAgent || (__webpack_require__.g.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 = this.au.toLowerCase().indexOf('firefox') > -1; this.isCococ = this.au.toLowerCase().indexOf('coc_coc_browser') >= 1; this.isSafari = this.browser.type === 'safari' || (!this.isCococ && this.au.toLowerCase().indexOf('safari') > -1 && this.au.toLowerCase().indexOf('win') < 0 && this.au.toLowerCase().indexOf('android') < 0); // this.isSafari = /constructor/i.test(window.HTMLElement) || window.safari; var isMobile = this.au.indexOf('KFFOWI') > -1 || this.au.toLowerCase().indexOf('mobile') > -1 || this.device.type === 'iphone' || this.device.type === 'ipad' || this.device.type === 'android'; Object.defineProperty(this, 'isMobile', { get: function () { return isMobile || window.isMobile || !!window['mobileHost']; }, set: v => { //do nothing } }); this.isMacOSWebView = /Macintosh/.test(this.au) && /AppWebkit/.test(this.au) && !/Safari/.test(this.au); this.isChromeIOS = /CriOS\/[\d]+/.test(this.au); this.hasTouch = 'ontouchstart' in __webpack_require__.g || __webpack_require__.g.DocumentTouch && document instanceof __webpack_require__.g.DocumentTouch || (__webpack_require__.g.navigator && (navigator.maxTouchPoints > 0 || __webpack_require__.g.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; } }); __webpack_require__.g.addEventListener('test', null, opts); __webpack_require__.g.removeEventListener('test', null, opts); } catch (e) { } return supportsPassiveOption; })(); this.supportGridLayout = __webpack_require__.g.document && (typeof document.createElement('div').style.grid === 'string'); Object.defineProperty(this, 'zoom', { get: function () { return this.getZoom(); }, enumerable: true, configurable: false }); } BrowserDetector.prototype.detectByRules = function (rules) { var result = {}; for (var i = 0; i < rules.length; ++i) { var rule = rules[i]; var type = rule[0]; var rgx = rule[1]; if (typeof (rgx) == 'function') { rgx = rgx(this.au.toLowerCase()); } if (Object.prototype.toString.call(rgx).indexOf('RegExp') >= 0) { var matched = this.au.toLowerCase().match(rgx); if (matched) { result.type = type; if (matched[1]) { result.version = matched[1].replace(/_/g, '.'); } break; } } else if (typeof (rgx) == 'string') { if (this.au.toLowerCase().indexOf(rgx) >= 0) { result.type = type; } } } result.type = result.type || 'unknow'; result.version = result.version || '0'; return result; }; BrowserDetector.prototype.getZoom = function () { //todo: wrong on chrome var type; if ('chrome' in __webpack_require__.g) { type = "chrome"; } else if (this.isSafari) { type = 'safari'; } else if ('orientation' in __webpack_require__.g && 'webkitRequestAnimationFrame' in __webpack_require__.g) { type = 'webkitMobile'; } else if ('webkitRequestAnimationFrame' in __webpack_require__.g) { type = 'webkit'; } switch (type) { case 'chrome': return Math.round(((__webpack_require__.g.outerWidth) / __webpack_require__.g.innerWidth) * 100) / 100; case 'safari': return Math.round(((document.documentElement.clientWidth) / __webpack_require__.g.innerWidth) * 100) / 100; case 'webkitMobile': return ((Math.abs(__webpack_require__.g.orientation) == 90) ? screen.height : screen.width) / __webpack_require__.g.innerWidth; case 'webkit': return (() => { var important = (str) => { return str.replace(/;/g, " !important;"); }; var div = document.createElement('div'); div.innerHTML = "1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0"; div.setAttribute('style', important('font: 100px/1em sans-serif; -webkit-text-size-adjust: none; text-size-adjust: none; height: auto; width: 1em; padding: 0; overflow: visible;')); var container = document.createElement('div'); container.setAttribute('style', important('width:0; height:0; overflow:hidden; visibility:hidden; position: absolute;')); container.appendChild(div); document.body.appendChild(container); var zoom = 1000 / div.clientHeight; zoom = Math.round(zoom * 100) / 100; document.body.removeChild(container); return zoom; })(); default: return 1; } return 1; }; function calcBenchmark() { var now = new Date().getTime(); var i = 0; while (now === new Date().getTime()) { } now++; while (now === new Date().getTime()) { ++i } return i; } BrowserDetector.prototype.calcBenchmark = calcBenchmark; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new BrowserDetector((_BrowserRules__WEBPACK_IMPORTED_MODULE_0___default()))); /***/ }), /***/ 2777: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const external = __webpack_require__.g.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"], ["linux", /\blinux\s(?:[xi][0-9_]+;)\srv:([0-9.]+)/],//Linux x86_64; rv:34.0 ["windowsce", /\bwindows ce(?: ([0-9.]+))?/], ["cros", /\bcros armv7l ([0-9.]+)/],//CrOS armv7l 7077.134.0 ["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 __webpack_require__.g && "CSS" in __webpack_require__.g && /\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.]+)/], ["edge-android",/ (?:edga)\/([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\/([0-9.]+)\b/], ["webview", /os x (?:[0-9._]+).+\bapplewebkit\/([0-9.]+)\b/], ["firefox", /\bfirefox\/([0-9.ab]+)/], ["nokia", /\bnokiabrowser\/([0-9.]+)/] ]; module.exports = { device: DEVICES, os: OS, browser: BROWSER, engine: ENGINE, re_msie: re_msie, }; /***/ }), /***/ 7951: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _EventEmitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(863); /* harmony import */ var _Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9399); /* harmony import */ var _OOP__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3349); /*** * @augments Node * @augments ChildNode * @augments ParentNode * @augments Element * @augments HTMLElement * @augments EventEmitter * @augments ElementCSSInlineStyle * @constructor */ function AElement() { _EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"].call */ .ZP.call(this); this._azar_extendAttributes = this._azar_extendAttributes || {}; this._azar_extendTags = {}; this.eventHandler = {}; } _OOP__WEBPACK_IMPORTED_MODULE_2__/* ["default"].mixClass */ .ZP.mixClass(AElement, _EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP); 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 {this} */ /** * add style * @param {CSSStyleDeclaration|string|{}} arg0 * @param {string|[]=} arg1 * @returns {this} */ AElement.prototype.addStyle = function (arg0, arg1) { if (typeof arg0 == 'string') if (arg0.indexOf('-') >= 0) { if (arg1 && arg1.forEach) { this.style.setProperty.apply(this.style, [arg0].concat(arg1)); } else { 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 {this} */ 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.lastChild) { this.removeChild(this.lastChild); } return this; }; /** * * @param {string|Array} className * @returns {Boolean} */ AElement.prototype.hasClass = function (className) { return this.classList.contains(className); }; /** * * @param {string|Array} className * @returns {this} */ 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 {this} */ 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 atIdx; if (at) { atIdx = Array.prototype.indexOf.call(this.childNodes, at); if (atIdx >= 0) { this.insertBefore(newItem, this.childNodes[atIdx + 1]); } else { throw new Error("Failed to execute 'addChildAfter' on 'Node': The node before which the new node is to be inserted is not a child of this node."); } } else { this.insertBefore(newItem, this.firstChild); } return this; }; /** * @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) { if (!parent || !parent.childNodes || !parent.childNodes.length) return false; 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"].isSafari */ .Z.isSafari && !_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_1__/* ["default"].isMobile */ .Z.isMobile && false) {} if (_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_1__/* ["default"].isFirefox */ .Z.isFirefox && false) {} }()); 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (AElement); /***/ }), /***/ 2510: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7951); /* harmony import */ var _OOP__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3349); /*** * @augments AElement * @augments SVGGraphicsElement * @constructor */ function AElementNS() { _AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"].call */ .Z.call(this); } _AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"].prototype.afterAttached */ .Z.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"].mixClass */ .ZP.mixClass(AElementNS, _AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z); 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (AElementNS); /***/ }), /***/ 5675: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony export AttachHook */ /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7951); /* harmony import */ var _EventEmitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(863); window.pendingAttachHooks = {}; var pendingId = 0; /*** * @extends AElement * @constructor */ function AttachHook() { this._attached = false; this._canceled = false; this._pendingId = ++pendingId; this._eventAdded = false; this.counter = 0; this.delayTime = 0; } AttachHook.prototype._addAttachedEvent = function () { if (this._eventAdded) return; this.addEventListener('error', function (event) { if (!this._attached && this.isDescendantOf(document.body)) { this._attached = true; if (this.waitTimeout > 0) clearTimeout(this.waitTimeout); delete pendingAttachHooks[this._pendingId]; if (this._canceled) return; this.emit('attached', event, this); } }); this._eventAdded = true; if (!this._canceled) { pendingAttachHooks[this._pendingId] = this; this.waitAttaching(); } }; AttachHook.prototype.eventEmittorOnWithTime = function (isOnce, arg0, arg1, arg2) { if (arg0 === 'attached') { this._addAttachedEvent(); return _AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"].prototype.eventEmittorOnWithTime.apply */ .Z.prototype.eventEmittorOnWithTime.apply(this, arguments); } else { return _AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"].prototype.eventEmittorOnWithTime.apply */ .Z.prototype.eventEmittorOnWithTime.apply(this, arguments); } }; /* AttachHook.prototype.on = function () { if (arguments[0] === 'attached') { this._addAttachedEvent(); AElement.prototype.on.apply(this, arguments); } else { AElement.prototype.on.apply(this, arguments); } return this; }; AttachHook.prototype.once = function () { if (arguments[0] === 'attached') { this._addAttachedEvent(); AElement.prototype.once.apply(this, arguments); } else { AElement.prototype.once.apply(this, arguments); } return this; };*/ AttachHook.render = function (data, option, domInstance) { var attributes = {}; var tag; if (domInstance.defaultTag === 'div') { attributes.src = ''; tag = 'img'; } else { tag = 'image'; attributes.href = ''; } return domInstance._({ tag: tag, class: 'absol-attachhook', extendEvent: ['attached'], style: { display: 'none' }, attr: attributes, props: { domInstance: domInstance } }); }; AttachHook.prototype.waitAttaching = function () { if (this._canceled) return; var self = this; // if (BrowserDetector.browser.type.startsWith('chrome') && parseInt((BrowserDetector.browser.version || '').split('.').shift()) >= 113) { if (this.waitTimeout > 0) clearTimeout(this.waitTimeout); this.waitTimeout = setTimeout(function wait() { self.waitTimeout = -1; self.counter++; if (self.counter === 1) self.delayTime = 10; else if (self.counter === 5) self.delayTime = 30; else if (self.counter === 50) self.delayTime = 60; else if (self.counter === 100) self.delayTime = 100; else if (self.counter === 500) self.delayTime = 1000; if (!self._attached && self.isDescendantOf(document.body)) { self._attached = true; delete pendingAttachHooks[self._pendingId]; if (self._canceled) return; self.emit('attached', { target: this }, self); } else if (!self._attached && !self._canceled) { self.waitTimeout = setTimeout(wait, self.delayTime); } }, this.delayTime); // } }; AttachHook.prototype.cancelWaiting = function () { if (this.waitTimeout > 0) clearTimeout(this.waitTimeout); this._canceled = true; delete pendingAttachHooks[this._pendingId]; } AttachHook.prototype.resetState = function () { if (this.waitTimeout > 0) clearTimeout(this.waitTimeout); this._attached = false; this._canceled = false; this.counter = 0; this.delayTime = 1; if (this.tagName.toLowerCase() === 'img') { this.attr('src', ''); } else { this.attr('href', ''); } pendingAttachHooks[this._pendingId] = this; this.waitAttaching(); }; AttachHook.property = { attached: { get: function () { return !!this._attached; } }, canceled: { get: function () { return !!this._canceled; } } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AttachHook); /***/ }), /***/ 5164: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "copyImage": () => (/* binding */ copyImage), /* harmony export */ "copyText": () => (/* binding */ copyText), /* harmony export */ "pasteText": () => (/* binding */ pasteText) /* harmony export */ }); 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); } function fallbackReadTextFromClipboard() { return new Promise(function (resolve, reject) { var textArea = document.createElement("textarea"); // Avoid scrolling to bottom textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; document.body.appendChild(textArea); textArea.focus(); try { var successful = document.execCommand('paste'); if (successful) { resolve(textArea.value); } else { reject(); } } catch (err) { reject(err); } document.body.removeChild(textArea); }); } function pasteText() { if (navigator.clipboard) { return navigator.clipboard.readText(); } else { return fallbackReadTextFromClipboard(); } } /***/ }), /***/ 8098: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _EventEmitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(863); /* harmony import */ var _OOP__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3349); /** * @extends EventEmitter * @constructor */ function DelaySignal() { _EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"].call */ .ZP.call(this); this.signals = {}; this.to = this.NO_WAIT; this.execSignal = this.execSignal.bind(this); } (0,_OOP__WEBPACK_IMPORTED_MODULE_1__/* .mixClass */ .Jx)(DelaySignal, _EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP); DelaySignal.NO_WAIT = -1; DelaySignal.prototype.NO_WAIT = DelaySignal.NO_WAIT; DelaySignal.prototype.delay = 4; DelaySignal.prototype.execSignal = function () { this.to = this.NO_WAIT; var signals = this.signals; this.signals = {}; for (var name in signals) { this.fire.apply(this, [name].concat(signals[name])); } }; DelaySignal.prototype.emit = function (name) { this.signals[name] = Array.prototype.slice.call(arguments, 1); if (this.to === this.NO_WAIT) { if (window.Thread && window.Thread.setTimeout) { this.to = window.Thread.setTimeout({ func: this.execSignal, time: this.delay, type: 'background', args: [] }); } else { this.to = setTimeout(this.execSignal, this.delay); } } return this; }; DelaySignal.prototype.revokeResource = function () { if (this.to !== this.NO_WAIT) { clearTimeout(this.to); } delete this.signals; delete this.execSignal; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DelaySignal); /***/ }), /***/ 6628: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "E7": () => (/* binding */ copyStyleRule), "ZP": () => (/* binding */ HTML5_Dom), "qE": () => (/* binding */ depthClone), "tE": () => (/* binding */ getScreenSize), "Z4": () => (/* binding */ getSystemFontSize), "m1": () => (/* binding */ getTextNodeBound), "mV": () => (/* binding */ isDomNode), "DI": () => (/* binding */ traceOutBoundingClientRect), "Lp": () => (/* binding */ waitImageLoaded) }); // UNUSED EXPORTS: FeatureClass, activeFullScreen, deactiveFullScreen, depthCloneWithStyle, fontFaceIsLoaded, getConstructDescriptor, getScrollSize, imageToCanvas, inactiveFullScreen, isFullScreen, isVisibilityOnScreen, waitIFrameLoaded // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/JSPath.js var JSPath = __webpack_require__(8706); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); ;// 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__(1321); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElement.js var AElement = __webpack_require__(7951); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/ResizeSystem.js var ResizeSystem = __webpack_require__(6700); // EXTERNAL MODULE: ./node_modules/absol/src/JSX/attribute.js + 1 modules var attribute = __webpack_require__(2953); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AttachHook.js var AttachHook = __webpack_require__(5675); ;// 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:function(event:(UiEvent|Event)):void,afterprint:function(event:Event):void,animationend:function(event:AnimationEvent):void,animationiteration:function(event:AnimationEvent):void,animationstart:function(event:AnimationEvent):void,beforeprint:function(event:Event):void,beforeunload:function(event:(UiEvent|Event)):void,blur:function(event:FocusEvent):void,canplay:function(event:Event):void,canplaythrough:function(event:Event):void,change:function(event:Event):void,click:function(event:MouseEvent):void,contextmenu:function(event:MouseEvent):void,copy:function(event:ClipboardEvent):void,cut:function(event:ClipboardEvent):void,dblclick:function(event:MouseEvent):void,drag:function(event:DragEvent):void,dragend:function(event:DragEvent):void,dragenter:function(event:DragEvent):void,dragleave:function(event:DragEvent):void,dragover:function(event:DragEvent):void,dragstart:function(event:DragEvent):void,drop:function(event:DragEvent):void,durationchange:function(event:Event):void,ended:function(event:Event):void,error:function(event:(ProgressEvent|UiEvent|Event)):void,focus:function(event:FocusEvent):void,focusin:function(event:FocusEvent):void,focusout:function(event:FocusEvent):void,fullscreenchange:function(event:Event):void,fullscreenerror:function(event:Event):void,hashchange:function(event:HashChangeEvent):void,input:function(event:(InputEvent|Event)):void,invalid:function(event:Event):void,keydown:function(event:KeyboardEvent):void,keypress:function(event:KeyboardEvent):void,keyup:function(event:KeyboardEvent):void,load:function(event:(UiEvent|Event)):void,loadeddata:function(event:Event):void,loadedmetadata:function(event:Event):void,loadstart:function(event:ProgressEvent):void,message:function(event:Event):void,mousedown:function(event:MouseEvent):void,mouseenter:function(event:MouseEvent):void,mouseleave:function(event:MouseEvent):void,mousemove:function(event:MouseEvent):void,mouseover:function(event:MouseEvent):void,mouseout:function(event:MouseEvent):void,mouseup:function(event:MouseEvent):void,mousewheel:function(event:WheelEvent):void,offline:function(event:Event):void,online:function(event:Event):void,open:function(event:Event):void,pagehide:function(event:PageTransitionEvent):void,pageshow:function(event:PageTransitionEvent):void,paste:function(event:ClipboardEvent):void,pause:function(event:Event):void,play:function(event:Event):void,playing:function(event:Event):void,popstate:function(event:PopStateEvent):void,progress:function(event:Event):void,ratechange:function(event:Event):void,resize:function(event:(UiEvent|Event)):void,reset:function(event:Event):void,scroll:function(event:(UiEvent|Event)):void,search:function(event:Event):void,seeked:function(event:Event):void,seeking:function(event:Event):void,select:function(event:(UiEvent|Event)):void,show:function(event:Event):void,stalled:function(event:Event):void,storage:function(event:StorageEvent):void,submit:function(event:Event):void,suspend:function(event:Event):void,timeupdate:function(event:Event):void,toggle:function(event:Event):void,touchcancel:function(event:TouchEvent):void,touchend:function(event:TouchEvent):void,touchmove:function(event:TouchEvent):void,touchstart:function(event:TouchEvent):void,transitionend:function(event:TransitionEvent):void,unload:function(event:(UiEvent|Event)):void,volumechange:function(event:Event):void,waiting:function(event:Event):void,wheel:function(event:WheelEvent):void}} AElementEventDescriptor */ /*** * @typedef AbsolConstructDescriptor * @property {string | function |null} tag * @property {CSSStyleDeclaration} style * @property {Array | string} extendEvent * @property {Array | string} class * @property {Object} data * @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 * */ 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/* default.prototype */.Z.prototype); Object.defineProperties(element, prototypes); AElement/* default.call */.Z.call(element); return element; }; /*** * * @param {*=} option * @constructor */ function Dom(option) { 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 AttachHook/* default */.Z; } } }); this['$ '.trim()] = this.$.bind(this); this['_ '.trim()] = this._.bind(this); this['$' + '$'] = this.$$.bind(this); this.buildDom = this._; } Dom.prototype.defaultTag = 'div'; 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/* default.prototype */.Z.prototype); Object.defineProperties(element, prototypes); AElement/* default.call */.Z.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/* default.compileJSPath */.Z.compileJSPath(query); return matcher.findFirst(root, onFound); }; var FeatureClass = { AElementNS: { constructor: ElementNS/* default */.Z, prototypeKeys: Object.keys(ElementNS/* default.prototype */.Z.prototype) }, AElement: { constructor: AElement/* default */.Z, prototypeKeys: Object.keys(AElement/* default.prototype */.Z.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 * @param {boolean=} isInherited * @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/* default.parseQuery */.Z.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 = this._(option.elt); } else { if (!res) { if (creator) { if (creator.render) { res = creator.render(option.data, option, this); } else { res = creator(option.data, option, this); } } 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/* default.extends */.ZP["extends"](res, creator.prototype); creator.attribute && res.defineAttributes(creator.attribute); if (creator.render) { if (creator.eventHandler) { res.eventHandler = res.eventHandler || {}; var eventHandler = OOP/* default.bindFunctions */.ZP.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); var children = option.child; if (children) { if (!children.forEach || !children.map) { children = [children]; } for (var i = 0; i < children.length; ++i) { res.addChild(this._(children[i], false)); } } 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/* default.ALLOW_KEYBOARD_INPUT */.Z.ALLOW_KEYBOARD_INPUT); } else if (element.msRequestFullscreen) { element.msRequestFullscreen(); } } Dom.activeFullScreen = activeFullScreen; function inactiveFullScreen() { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } } Dom.inactiveFullScreen = inactiveFullScreen; //adapt var deactiveFullScreen = inactiveFullScreen; 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; var ox, oy, fixed; var bound; while (current) { fixed = AElement/* default.prototype.getComputedStyleValue.call */.Z.prototype.getComputedStyleValue.call(current, 'position') == "fixed"; ox = AElement/* default.prototype.getComputedStyleValue.call */.Z.prototype.getComputedStyleValue.call(current, 'overflow-x') !== "visible"; oy = AElement/* default.prototype.getComputedStyleValue.call */.Z.prototype.getComputedStyleValue.call(current, 'overflow-y') !== "visible"; var isHtml = current.tagName.toLowerCase() === 'html'; if (ox || oy || isHtml || fixed) { if (isHtml) { bound = Object.assign({ left: 0, top: 0 }, getScreenSize()); bound.bottom = bound.height; bound.right = bound.width; } else { bound = current.getBoundingClientRect(); } if (ox || isHtml || fixed) { left = Math.max(left, bound.left); right = Math.min(right, bound.right); } if (oy || isHtml || fixed) { top = Math.max(top, bound.top); bottom = Math.min(bottom, bound.bottom); } } if (isHtml || fixed) 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(); if (!img.src) return Promise.resolve(); return new Promise(function (rs) { if (img.addEventListener) { img.addEventListener('load', rs, false); img.addEventListener('error', 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 * @param afterCloneCb * @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/* default.prototype.getCSSRules.call */.Z.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/* default.prototype.getComputedStyleValue.call */.Z.prototype.getComputedStyleValue.call(sourceElt, key); } return destElt; } Dom.copyStyleRule = copyStyleRule; /** * */ function getSystemFontSize() { if (window.mobileHost && window.mobileHost.systemFont) { return window.mobileHost.systemFont.pointSize; } var _ = Dom.ShareInstance._; var initSpan = Dom.ShareInstance._({ tag: 'span', style: { font: 'inherit', } }); var appleSpan = Dom.ShareInstance._({ tag: 'span', style: { font: '-apple-system-body', } }).addTo(document.body); var renderer = _({ style: { font: 'initial', position: 'fixed', top: 0, left: 0, visibility: 'hidden', opacity: 0, zIndex: -100 }, child: [initSpan && appleSpan] }).addTo(document.body); var appleSize = appleSpan.getFontSize(); var initSize = initSpan.getFontSize(); var defaultSize = appleSize !== initSize ? appleSize : initSize; renderer.remove(); return Math.round(defaultSize * 14 / 16); } function getTextNodeBound(textNode) { if (document.createRange) { var range = document.createRange(); range.selectNodeContents(textNode); if (range.getBoundingClientRect) { return range.getBoundingClientRect(); } } return null; } Dom.getTextNodeBound = getTextNodeBound; /*** * 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 = (0,attribute.parseClassAttr)(classAttr); if (classList && classList.length > 0) obj.class = classList; var styleAttr = elt.getAttribute('style'); var style; if (styleAttr) style = (0,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/* default.add */.Z.add(element); }; Dom.updateResizeSystem = function () { ResizeSystem/* default.update */.Z.update(); } Dom.updateSizeUp = function (fromElt) { ResizeSystem/* default.updateUp */.Z.updateUp(fromElt); }; /* harmony default export */ const HTML5_Dom = (Dom); /** * * @param elt */ function isVisibilityOnScreen(elt) { if (!elt) return false; if (!AElement/* default.prototype.isDescendantOf.call */.Z.prototype.isDescendantOf.call(elt, document.body)) { return false; } var current = elt; var comStyle; while (current) { if (current === document.body) break; comStyle = window.getComputedStyle(current, null); if (comStyle.getPropertyValue('display') === 'none') return false; if (comStyle.getPropertyValue('visisbility') === 'hidden') return false; if (comStyle.getPropertyValue('opacity') === '0') return false; current = current.parentElement; } var bound = elt.getBoundingClientRect(); var outBound = traceOutBoundingClientRect(elt); if (bound.top > outBound.bottom) return false; if (bound.bottom < outBound.top) return false; if (bound.left > outBound.right) return false; if (bound.right < outBound.left) return false; return true; } Dom.isVisibilityOnScreen = isVisibilityOnScreen; /***/ }), /***/ 5150: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "J6": () => (/* binding */ setDomImmediate), /* harmony export */ "fi": () => (/* binding */ clearDomImmediate) /* harmony export */ }); /* harmony import */ var _EventEmitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(863); /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7951); /* harmony import */ var _OOP__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3349); /* harmony import */ var _AttachHook__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5675); /* harmony import */ var _Code_safeThrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5650); /*** * * @extends EventEmitter * @param {AElement=} attachHookElt * @constructor */ function DomSignal(attachHookElt) { _EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"].call */ .ZP.call(this); this.signals = {}; this.ev_attached = this.ev_attached.bind(this); this.$attachhook = attachHookElt || this.createBuildInAttachHook(); this.$attachhookParent = (attachHookElt && attachHookElt.parentElement) || null; this.$attachhook.on('attached', this.ev_attached); this.$attachhook.ofDS = this; this.isPending = false; } _OOP__WEBPACK_IMPORTED_MODULE_2__/* ["default"].mixClass */ .ZP.mixClass(DomSignal, _EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP); DomSignal.prototype.createBuildInAttachHook = function () { var elt = document.createElement('img'); Object.defineProperties(elt, Object.getOwnPropertyDescriptors(_AElement__WEBPACK_IMPORTED_MODULE_1__/* ["default"].prototype */ .Z.prototype)); Object.defineProperties(elt, Object.getOwnPropertyDescriptors(_AttachHook__WEBPACK_IMPORTED_MODULE_3__/* ["default"].prototype */ .Z.prototype)); Object.defineProperties(elt, _AttachHook__WEBPACK_IMPORTED_MODULE_3__/* ["default"].property */ .Z.property); _AElement__WEBPACK_IMPORTED_MODULE_1__/* ["default"].call */ .Z.call(elt); elt.setAttribute('src', ''); elt.defineEvent('attached'); elt.addStyle('display', 'none'); _AttachHook__WEBPACK_IMPORTED_MODULE_3__/* ["default"].call */ .Z.call(elt); elt.cancelWaiting(); return elt; } DomSignal.prototype.execSignal = function () { var signals = this.signals; this.signals = {}; this.isPending = false; for (var name in signals) { this.fire.apply(this, [name].concat(signals[name])); } }; DomSignal.prototype.emit = function (name) { if (this.$attachhook && (this.$attachhook.canceled || this.$attachhook.attached) && !this.isPending) { this.$attachhook.remove(); this.$attachhook.resetState(); } this.signals[name] = Array.prototype.slice.call(arguments, 1); this.isPending = true; if (!this.$attachhookParent) { this.$attachhookParent = document.body; } if (!this.$attachhook.parentElement) { this.$attachhook.resetState(); this.$attachhookParent.appendChild(this.$attachhook); } }; DomSignal.prototype.ev_attached = function () { this.execSignal(); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DomSignal); var currentAT = null; var callbackList = {}; var id = 0; function setDomImmediate(callback) { var cid = ++id; callbackList[cid] = { exec: callback, args: Array.prototype.slice.call(arguments, 1) }; if (!currentAT) { currentAT = document.createElement('img'); currentAT.setAttribute('src', ''); currentAT.addEventListener('error', function () { currentAT.remove(); currentAT = null; Object.keys(callbackList).map(function (key) { var cb = callbackList[key]; delete callbackList[key]; if (cb) { try { cb.exec.call(null, cb.args); } catch (error) { (0,_Code_safeThrow__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(error); } } }) }) } return cid; } function clearDomImmediate(id) { delete callbackList[id]; } /***/ }), /***/ 488: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); function DynamicCSS() { this.elt = document.createElement('style'); this.data = {}; this.state = 'STANDBY'; this.start(); } /** * * @returns {this} */ DynamicCSS.prototype.commit = function () { this.elt.innerHTML = Object.keys(this.data).map(ruleQuery => { var rule = this.data[ruleQuery]; return [ ruleQuery + ' {', ' ' + Object.keys(rule).map(name => name + ': ' + rule[name] + ';').join('\n'), '}' ].join('\n'); } ).join('\n\n'); return this; }; DynamicCSS.prototype.start = function () { if (this.state !== 'STANDBY' && this.state !== 'STOP') return; this.state = 'RUNNING'; document.head.appendChild(this.elt); return this; }; DynamicCSS.prototype.stop = function () { if (this.state !== 'RUNNING') return; this.elt.remove(); return this; }; DynamicCSS.prototype.destroy = function () { this.stop(); if (this.state !== 'STOP') return; this.elt = null; return this; }; /*** * * @param {string} ruleQuery * @param {string} name * @param {string} value * @returns {this} */ DynamicCSS.prototype.setProperty = function (ruleQuery, name, value) { this.data[ruleQuery] = this.data[ruleQuery] || {}; this.data[ruleQuery][name] = value; return this; }; /** * * @param ruleQuery * @param name * @returns {*|undefined} */ DynamicCSS.prototype.getProperty = function (ruleQuery, name) { var rule = this.data[ruleQuery]; return rule ? rule[name] : undefined; }; /*** * * @param ruleQuery * @param property * @returns {DynamicCSS} */ DynamicCSS.prototype.removeProperty = function (ruleQuery, property) { var rule = this.data[ruleQuery]; if (rule) delete rule[property]; return this; }; /*** * * @param ruleQuery * @param {object} properties * @returns {this} */ DynamicCSS.prototype.setRule = function (ruleQuery, properties) { this.data[ruleQuery] = Object.assign({}, properties); return this; }; /*** * * @param ruleQuery * @param {object} properties * @returns {this} */ DynamicCSS.prototype.modifyRule = function (ruleQuery, properties) { this.data[ruleQuery] = Object.assign(this.data[ruleQuery] || {}, properties); return this; }; /*** * * @param {string} ruleQuery * @returns {object} */ DynamicCSS.prototype.getRule = function (ruleQuery) { return this.data[ruleQuery]; }; /** * * @param {string} ruleQuery * @returns {this} */ DynamicCSS.prototype.removeRule = function (ruleQuery) { delete this.data[ruleQuery]; return this; }; /*** * * @param {object} rules * @returns {this} */ DynamicCSS.prototype.setRules = function (rules) { Object.keys(rules).forEach(key => this.setRule(key, rules[key])); return this; }; DynamicCSS.prototype.getRules = function () { return this.data; }; DynamicCSS.prototype.modifyRules = function (rules) { Object.keys(rules).forEach(key => this.modifyRule(key, rules[key])); return this; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DynamicCSS); /***/ }), /***/ 1487: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7951); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z); /***/ }), /***/ 1321: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AElementNS__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2510); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_AElementNS__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z); /***/ }), /***/ 863: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Ed": () => (/* binding */ isMouseRight), /* harmony export */ "FQ": () => (/* binding */ isMouseLeft), /* harmony export */ "EY": () => (/* binding */ hitElement), /* harmony export */ "FG": () => (/* binding */ copyEvent), /* harmony export */ "VY": () => (/* binding */ findChangedTouchByIdent), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports eventProperties, touchProperties, isMouseMiddle, copyTouch, findTouchByIdent */ /* harmony import */ var _Code_safeThrow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5650); 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); var listenerList; var i; var startTime, endTime; if (this.isSupportedEvent(eventName)) { if (this._azar_extendEvents.prioritize[eventName]) { listenerList = this._azar_extendEvents.prioritize[eventName].slice(); for (i = 0; i < listenerList.length; ++i) { try { startTime = Date.now(); listenerList[i].wrappedCallback.apply(this, others); endTime = Date.now(); if (endTime - startTime > 200) { console.log('slow function call ('+(endTime - startTime)+')', listenerList[i]); } } catch (e) { (0,_Code_safeThrow__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)(e); } } } if (this._azar_extendEvents.nonprioritize[eventName]) { listenerList = this._azar_extendEvents.nonprioritize[eventName].slice(); for (i = 0; i < listenerList.length; ++i) { try { startTime = Date.now(); listenerList[i].wrappedCallback.apply(this, others); endTime = Date.now(); if (endTime - startTime > 200) { console.log('slow function call ('+(endTime - startTime)+')', listenerList[i]); } } catch (e) { (0,_Code_safeThrow__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)(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 () { this.off(event.eventName, event.wrappedCallback, event.cap); event.callback.apply(this, arguments); }; } 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 === 0; return isLeftMB; } function isMouseMiddle(event) { var isMiddleMB = false; if ("which" in event) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera isMiddleMB = event.which === 2; else if ("button" in event) // IE, Opera isMiddleMB = event.button === 1; return isMiddleMB; } /** * * @type AElement * @name sponsorElement * @memberof AElement# */ /** * * @param {AElement} element * @param {Event |{target: AElement}} event * @returns {boolean} */ function hitElement(element, event) { var current = event.target; while (current) { if (current === element) return true; if (current.sponsorElement && current.sponsorElement !== current.parentElement) {// sponsorElement like trigger of quick-menu if (hitElement(element, { target: current.sponsorElement })) 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (EventEmitter); /***/ }), /***/ 8706: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (JSPath); /***/ }), /***/ 6013: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports LangSys, textNodeLanguageChangeHandler, elementLanguageChangeHandler */ /* harmony import */ var _ResizeSystem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6700); /* harmony import */ var _Code_safeThrow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5650); /*** * @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) { (0,_Code_safeThrow__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z)(err); } if (elt.childNodes && elt.childNodes.length > 0) { Array.prototype.forEach.call(elt.childNodes, visit); } } } visit(document.body); if (sizeChange) _ResizeSystem__WEBPACK_IMPORTED_MODULE_0__/* ["default"].update */ .Z.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(); LangSys.getText = function () { if (window.LanguageModule && window.LanguageModule.text){ LangSys.addExtension({ getText: function () { var text = window.LanguageModule.text.apply(window.LanguageModule, arguments); if (text && (text.startsWith('[key:') && text.charAt(text.length - 1) === ']')) return null; return text || null; } }); LangSys.getText = LanguageSystem.prototype.getText; return this.getText.apply(this, arguments); } return LanguageSystem.prototype.getText.apply(this, arguments); } 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (LangSys); /***/ }), /***/ 3349: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "pj": () => (/* binding */ drillProperty), /* harmony export */ "Jx": () => (/* binding */ mixClass), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports overrideMethod, bindFunctions, inheritCreator */ /** * @param {Object} object * @param {String} key * @param {Function} method */ function overrideMethod(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); } } function extendsObject(object, prototype) { // do not use setter, getter for (var key in prototype) { if (key !== 'constructor' && key !== '__proto__') { if ((typeof prototype[key] == 'function')) { overrideMethod(object, key, prototype[key]); } else if (prototype[key] !== undefined && prototype[key] !== null) { object[key] = prototype[key];//just copy } } } }; function quickInheritObject(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; }; } } }); }; function drillProperty(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]; }, configurable: true }); } else { if (keyTop instanceof Array) { for (var i = 0; i < keyTop.length; ++i) { drillProperty(topObject, botObject, keyTop[i], keyTop[i]); } } else { for (var key in keyTop) { drillProperty(topObject, botObject, key, keyTop[key]); } } } }; function bindFunctions(_this, handlers) { var res = {}; for (var key in handlers) { res[key] = handlers[key].bind(_this); } return res; }; function inheritCreator(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 */ function mixClass(constructor) { var descriptors = {}; for (var i = 1; i < arguments.length; ++i) { Object.assign(descriptors, Object.getOwnPropertyDescriptors(arguments[i].prototype)); } delete descriptors.constructor; Object.defineProperties(constructor.prototype, descriptors); } var OOP = { overrideMethod: overrideMethod, extends: extendsObject, inherit: quickInheritObject, mixClass: mixClass, inheritCreator: inheritCreator, drillProperty: drillProperty, bindFunctions: bindFunctions }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OOP); /***/ }), /***/ 6700: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7951); /* harmony import */ var _AElementNS__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2510); /* harmony import */ var _DelaySignal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8098); /** * @name requestUpdateSize * @type {function} * @memberof AElement# */ /** * @name updateSize * @type {function} * @memberof AElement# */ /** * @name onresize * @type {function} * @memberof AElement# */ /** * @name requestRevokeResource * @type {function} * @memberof AElement# */ /** * * @constructor */ function ResizeSystem() { this.elts = []; this.cache = []; this.cacheOf = null; this.lastResizeTime = 0; this.pendingElts = {}; window.addEventListener('resize', this.update.bind(this)); this['goDown' + 'AndCache'] = this.goDownAndCache.bind(this); this['notify' + 'ToElt'] = this.notifyToElt.bind(this); var setup = ()=>{ this.domSignal = new _DelaySignal__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(); this.domSignal.on('request_update_signal', this.update.bind(this)); this.domSignal.on('request_update_pending_signal', this.updatePending.bind(this)); window.removeEventListener("load", setup); } if (document.body) { setup(); } else { window.addEventListener("load", setup); } } /*** * * @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) { try { 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; } } catch (err) { console.error(err); } }; ResizeSystem.prototype.update = function () { var now = Date.now(); 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.requestUpdateSignal = function () { if (!this.domSignal) return; this.domSignal.emit('request_update_signal'); }; ResizeSystem.prototype.removeTrash = function () { var oldArr = this.elts; var newArr = []; var elt; var n = oldArr.length; for (var i = 0; i < n; ++i) { elt = oldArr[i]; if (_AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"].prototype.isDescendantOf.call */ .Z.prototype.isDescendantOf.call(elt, document.body)) { newArr.push(elt); } else if (typeof elt.requestRevokeResource === "function") { elt.requestRevokeResource(); } } this.elts = newArr; }; /*** * * @param {AElement| AElementNS | Node} fromElt * @param {boolean=} toRoot * @returns {boolean} */ ResizeSystem.prototype.updateUp = function (fromElt, toRoot) { var found = false; while (fromElt && (!found || toRoot)) { found = this.notifyToElt(fromElt); fromElt = fromElt.parentElement; } return found; }; ResizeSystem.prototype.updatePending = function () { var o = this.pendingElts; this.pendingElts = {}; for (var key in o) { this.notifyToElt(o[key]); } }; /*** * * @param {AElement| AElementNS | Node} fromElt * @param {boolean=} toRoot * @returns {boolean} */ ResizeSystem.prototype.requestUpdateUpSignal = function (fromElt, toRoot) { if (!this.domSignal) return; var elts = []; var found = false; while (fromElt && (!found || toRoot)) { if (typeof fromElt.requestUpdateSize == 'function' || typeof fromElt.updateSize == 'function' || typeof fromElt.onresize == 'function' ) { elts.push(fromElt); found = true; } fromElt = fromElt.parentElement; } var pendingElts = this.pendingElts; elts.forEach(function (elt) { if (!elt.__resize_ident__) elt.__resize_ident__ = Date.now() + '_' + Math.random(); if (!pendingElts[elt.__resize_ident__]) pendingElts[elt.__resize_ident__] = elt; }); this.domSignal.emit('request_update_pending_signal'); return found; }; /*** * * @param {AElement| AElementNS | Node} fromElt * @returns {boolean} */ ResizeSystem.prototype.updateDown = function (fromElt) { var now = Date.now(); 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"].prototype.isDescendantOf.call */ .Z.prototype.isDescendantOf.call(elt, this.elts[i])) { return false; } this.elts = this.elts.filter(function (e) { return !_AElement__WEBPACK_IMPORTED_MODULE_0__/* ["default"].prototype.isDescendantOf.call */ .Z.prototype.isDescendantOf.call(e, elt); }); this.removeTrash(); this.cache = undefined; this.elts.push(elt); return true; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new ResizeSystem()); /***/ }), /***/ 6821: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports svgToRasterImageUrl, svgToExportedString */ /* harmony import */ var _Dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6628); /* harmony import */ var _ElementNS__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1321); /* harmony import */ var _AElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7951); /* harmony import */ var _Color_Color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(257); /* harmony import */ var _AttachHook__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5675); /* harmony import */ var _OOP__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3349); /*** * @extends Dom * @param option * @constructor */ function Svg(option) { _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].call */ .ZP.call(this, option); this.svgNS = "http://www.w3.org/2000/svg"; Object.defineProperties(this.creator, { sattachhook: { set: function () { //do nothing }, get: function () { return _AttachHook__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z; } } }); delete this.buidDom; this.buildSvg = this.create.bind(this); } _OOP__WEBPACK_IMPORTED_MODULE_5__/* ["default"].mixClass */ .ZP.mixClass(Svg, _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP); Svg.prototype.defaultTag = 'g'; 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(_AElement__WEBPACK_IMPORTED_MODULE_2__/* ["default"].prototype */ .Z.prototype); Object.defineProperties(element, prototypes); _AElement__WEBPACK_IMPORTED_MODULE_2__/* ["default"].call */ .Z.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"].prototype */ .Z.prototype); Object.defineProperties(element, prototypes); _ElementNS__WEBPACK_IMPORTED_MODULE_1__/* ["default"].call */ .Z.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"].ShareInstance.$ */ .ZP.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 style = getComputedStyle(originElt); var key, value; for (var i = 0; i < style.length; ++i) { key = style[i]; value = style.getPropertyValue(key); if (value && value.length > 0 && value !== 'auto') { newElt.style.setProperty(key, value); } } 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"].ShareInstance._ */ .ZP.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"].ShareInstance._ */ .ZP.ShareInstance._('img'); image.attr('src', src) .addTo(renderSpace); var canvas = document.createElement("canvas"); renderSpace.addChild(canvas); return _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].waitImageLoaded */ .ZP.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; /** * * @param {string|AElement}element * @param {"print"|null=} option * @returns {string} */ function svgToExportedString(element, option) { if (typeof element == 'string') { element = _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].ShareInstance.$ */ .ZP.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 = _AElement__WEBPACK_IMPORTED_MODULE_2__/* ["default"].prototype.getCSSRules.call */ .Z.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] = _AElement__WEBPACK_IMPORTED_MODULE_2__/* ["default"].prototype.getComputedStyleValue.call */ .Z.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"].ShareInstance._ */ .ZP.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; /** * * @param element * @param {"print"|null=}option * @returns {string} */ function svgToSvgUrl(element, option) { var svg = svgToExportedString(element, option); 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; /*** * * @param {AElement|String | {computeStyle?: boolean, elt: AElement, keepBackgroundColor?:boolean,convertSVG?:boolean}} option * @return {Promise<unknown>} */ _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].printElement */ .ZP.printElement = function (option) { var _ = _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].ShareInstance._ */ .ZP.ShareInstance._; var $ = _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].ShareInstance.$ */ .ZP.ShareInstance.$; option = option || {}; if (typeof option == 'string') { option = { elt: _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].ShareInstance.$ */ .ZP.ShareInstance.$(option) }; } else if (typeof option.elt == 'string') { option.elt = $(option.elt); } else if (_Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].isDomNode */ .ZP.isDomNode(option)) { option = { elt: option }; } option = Object.assign({ keepBackgroundColor: true, convertSVG: false, computeStyle: false }, option); if (_Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].isDomNode */ .ZP.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; var needKeepBackgroundColor = option.keepBackgroundColor; var printViewBox; if (tagName === 'canvas' || (tagName === 'svg' && option.convertSVG)) { if (tagName === "canvas") { url = originElt.toDataURL(); } else { url = svgToSvgUrl(originElt, 'print');//todo: option } img = _({ tag: 'img', props: { src: url } }); $(newElt).selfReplace(img); newElt = img; needCopyStyle = true; } else if (tagName === 'svg' && originElt.getAttribute('data-print-view-box')) { printViewBox = originElt.getAttribute('data-print-view-box').split(' ').map(function (v) { return parseFloat(v); }); newElt.setAttribute('viewBox', printViewBox.join(' ')); newElt.setAttribute('width', printViewBox[2]); newElt.setAttribute('height', printViewBox[3]); newElt.style.setProperty('width', printViewBox[2] + 'px'); newElt.style.setProperty('height', printViewBox[3] + 'px'); } else if (tagName === 'script') { newElt.remove(); } else if (tagName === 'img') { newElt.setAttribute('src', originElt.src); } else if (tagName === 'input') { if (originElt.getAttribute('type') === 'radio' || originElt.getAttribute('type') === 'checkbox') { if (originElt.checked) { newElt.setAttribute('checked', true); } } else if (originElt.getAttribute('type') === 'text' || !originElt.getAttribute('type') || originElt.getAttribute('type') === 'number') { newElt.setAttribute('value', originElt.value); } } if (needCopyStyle) { (0,_Dom__WEBPACK_IMPORTED_MODULE_0__/* .copyStyleRule */ .E7)(originElt, newElt); } if (needKeepBackgroundColor) { try { var bgColor = _AElement__WEBPACK_IMPORTED_MODULE_2__/* ["default"].prototype.getComputedStyleValue.call */ .Z.prototype.getComputedStyleValue.call(originElt, 'background-color'); if (bgColor) { bgColor = _Color_Color__WEBPACK_IMPORTED_MODULE_3__/* ["default"].parse */ .Z.parse(bgColor); if (bgColor.rgba[3] > 0) { newElt.style.setProperty('background-color', bgColor.toString('hex8'), 'important'); } } } catch (e) { } } return newElt; } var newElt = (0,_Dom__WEBPACK_IMPORTED_MODULE_0__/* .depthClone */ .qE)(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) { var temp = elt.cloneNode(false); //copy absolute url temp.setAttribute('href', elt.href); renderSpace.addChild(temp); }); if (!option.computeStyle) { $('style', document.head, function (elt) { if (elt == _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].$printStyle */ .ZP.$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 */ const __WEBPACK_DEFAULT_EXPORT__ = (Svg); /***/ }), /***/ 5827: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "getTextNodesIn": () => (/* binding */ getTextNodesIn), /* harmony export */ "setSelectionRangeStart": () => (/* binding */ setSelectionRangeStart), /* harmony export */ "setSelectionRangeEnd": () => (/* binding */ setSelectionRangeEnd), /* harmony export */ "setSelectionRange": () => (/* binding */ setSelectionRange), /* harmony export */ "getTextIn": () => (/* binding */ getTextIn), /* harmony export */ "textToNodes": () => (/* binding */ textToNodes), /* harmony export */ "getCaretPosition": () => (/* binding */ getCaretPosition), /* harmony export */ "setCaretPosition": () => (/* binding */ setCaretPosition), /* harmony export */ "measureText": () => (/* binding */ measureText) /* harmony export */ }); /* harmony import */ var _Dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6628); 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__WEBPACK_IMPORTED_MODULE_0__/* ["default"].ShareInstance._ */ .ZP.ShareInstance._({ child: { tag: 'br' } }); } else { return _Dom__WEBPACK_IMPORTED_MODULE_0__/* ["default"].ShareInstance._ */ .ZP.ShareInstance._({ child: { text: text } }); } }); } /* ** Returns the caret (cursor) position of the specified text field (oField). ** Return value range is 0-oField.value.length. */ function 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; } /***/ }), /***/ 27: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "DB": () => (/* binding */ normalizeKeyBindingIdent), /* harmony export */ "Ej": () => (/* binding */ keyboardEventToKeyBindingIdent) /* harmony export */ }); /* unused harmony exports isFnKey, isSpaceKey, isCtrlKey, isAltKey, isShiftKey, isMetaKey */ 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 = []; var keyName = event.key || String.fromCharCode(event.which || event.keyCode); 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(keyName)) { keys.push('space'); } else if (isFnKey(keyName)) { keys.push(keyName.toLowerCase()) } else if (!isMetaKey(keyName) && !isAltKey(keyName) && !isCtrlKey(keyName) && !isShiftKey(keyName)) keys.push(keyName.toLowerCase()); return keys.join('-'); } /***/ }), /***/ 369: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); 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 new TemplateString({ parts: [] }); } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TemplateString); /***/ }), /***/ 2914: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "NQ": () => (/* binding */ generateJSVariable), /* harmony export */ "Ew": () => (/* binding */ copyJSVariable), /* harmony export */ "wP": () => (/* binding */ replaceDateStringJSVariable) /* harmony export */ }); /* unused harmony export isJSVariableEqual */ /** * * @param obj * @param {string=}indent * @param {object=}opt * @returns {string} */ function generateJSVariable(obj,indent, opt) { indent = indent || ''; var childIndent = indent + ' '; if (obj === null) { return 'null'; } else if (obj instanceof Date) { return 'new Date(' + obj.getTime() + ')'; } else if (obj instanceof Array) { if (obj.length === 0) return '[]'; return '[\n' + obj.map(function (it) { return childIndent + generateJSVariable(it, childIndent, opt); }).join(',\n') + '\n' + indent + ']'; } else if (obj instanceof Error) { return generateJSVariable({message: obj.message, stack: obj.stack}); } else if (typeof obj === 'object') { var keys = Object.keys(obj); if (keys.length === 0) return '{}'; return '{\n' + keys.map(function (key) { var value = obj[key]; if (!key.match(/^[a-zA-Z_$]([a-zA-Z_0-9$]*)$/)) key = JSON.stringify(key); return childIndent + key + ': ' + generateJSVariable(value, childIndent, opt) }).join(',\n') + '\n' + indent + '}'; } else if (obj === undefined) { return 'undefined'; } else { return JSON.stringify(obj); } } /*** * * @param o * @param {Array<{test, replace}>| null=} replacers * @returns {*} */ function copyJSVariable(o, replacers) { var replacer; if (replacers && replacers.length > 0) { replacer = replacers.find((rp) => { return rp.test.apply(rp, [o].concat(Array.prototype.slice.call(arguments, 2))); }); if (replacer) { return replacer.replace.apply(replacer, [o].concat(Array.prototype.slice.call(arguments, 2))); } } if (o === null) return null; if (o === undefined) return undefined; var type = typeof o; if (type === "boolean") return o; if (o instanceof Date || (typeof o.getTime === "function")) return new Date(o.getTime()); if (type === "number") return o; if (type === "string") return o + ''; if (typeof o.map === "function") { return o.map((it, i) => copyJSVariable(it, replacers, i, o)); } if (type === "object" && o.constructor === Object) { return Object.keys(o).reduce((ac, cr) => { ac[cr] = copyJSVariable(o[cr], replacers, cr, o); return ac; }, {}); } return o; } function replaceDateStringJSVariable(o) { return copyJSVariable(o, [{ test: (x) => { return (typeof x === "string") && x.match(/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+([a-zA-Z]{3})\s+[\d\s:]+GMT[\d+]+\s*\([^)]+\)$/) && !isNaN(new Date(x).getTime()); }, replace: x => new Date(x) }]); } /*** * * @param a * @param b * @return {boolean} */ function isJSVariableEqual(a, b) { if (a === b) return true;//1 var tA = typeof a; var tB = typeof b; if (tA !== tB) return false; //2 if (!a !== !b) return false; if (tA === 'string') return false;//because 1 & 2 if (tA === "number"){ if (isNaN(a) && isNaN(b)) return true;//because 2 return false;//because 1 } var aIsDate = a instanceof Date; var bIsDate = b instanceof Date; if (aIsDate !== bIsDate) return false; if (aIsDate) return isJSVariableEqual(a.getTime(), b.getTime()); var aIsArray = a instanceof Array; var bIsArray = a instanceof Array; if (aIsArray !== bIsArray) return false; var i; if (aIsArray) { if (a.length !== b.length) return false; for (i = 0; i < a.length; ++i) { if (!isJSVariableEqual(a[i], b[i])) return false; } return true; } //object if (a.equals) return a.equals(b); var aKeys = Object.keys(a); var bKeys = Object.keys(b); aKeys.sort(); bKeys.sort(); if (!isJSVariableEqual(aKeys, bKeys)) return false; for (i = 0; i < aKeys.length; ++i) { if (!isJSVariableEqual(a[aKeys[i]], b[aKeys[i]])) return false; } return true; } /***/ }), /***/ 2953: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "computeMeasureExpression": () => (/* reexport */ computeMeasureExpression), "parseClassAttr": () => (/* binding */ parseClassAttr), "parseMeasureValue": () => (/* binding */ parseMeasureValue), "parseStyleAttr": () => (/* binding */ parseStyleAttr) }); // EXTERNAL MODULE: ./node_modules/absol/src/Pharse/DPParser.js + 1 modules var DPParser = __webpack_require__(3281); // EXTERNAL MODULE: ./node_modules/absol/src/Pharse/DPParseInstance.js var DPParseInstance = __webpack_require__(56); ;// CONCATENATED MODULE: ./node_modules/absol/src/JSX/CSSParser.js /***** css expression rules****/ // var exp = `calc(var(--abcd) + 15px + 15%)`; var elementRegexes = [ ['varname', /--[a-z-]+/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['msnumber', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)(vh|vw|px|%|pt)/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['symbol', /[^\s_a-zA-Z0-9]/], ['string', /("(?:[^"\\]|\\.)*?")|('(?:[^'\\]|\\.)*?')/] ]; var rules = []; rules.push({ target: 'measure_num', elements: ['.msnumber'], toAST: function (pN) { pN = pN.children[0]; return { type: "MeasureLiteral", value: parseFloat(pN.content.replace(/vh|vw|px|%|pt/, '')), unit: pN.content.match(/px|%|pt|vw|vh/)[0] } } }); rules.push({ target: 'number', elements: ['.number'], toAST: function (pN) { pN = pN.children[0]; return { type: "NumericLiteral", value: parseFloat(pN.content), } } }); rules.push({ target: 'exp', elements: ['measure_num'], toAST: function (pN) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(pN.children[0]); } }); rules.push({ target: 'bracket_group', elements: ['_(', 'exp', '_)'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[1]); } }); rules.push({ target: 'exp', elements: ['bracket_group'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'variable_name', elements: ['.varname'], toAST: function (parsedNode) { return { type: 'VariableName', name: parsedNode.children[0].content } } }); rules.push({ target: 'exp', elements: ['variable_name'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); ['+', '-', '*', '/'].forEach(function (op) { rules.push({ target: 'bin_op', elements: ['_' + op], toAST: function (parsedNode) { return { type: "BinaryOperator", content: op } } }); }); var operatorOrder = { '*': 5, '/': 5, '%': 5, '+': 6, '-': 6 } var operatorTokenToAst = token => ({ type: token.type, content: token.content }); rules.push({ target: 'exp', elements: ['exp', 'bin_op', 'exp'], // longestOnly: true,//* error when parse return (...)... ident: 'bin_op_rec', toASTChain: function (parseNode) { var res = []; if (parseNode.children[0].rule === this) { res = res.concat(this.toASTChain(parseNode.children[0])); } else { res.push((0,DPParseInstance/* parsedNodeToAST */.Hg)(parseNode.children[0])); } res.push(parseNode.children[1].children[0]); if (parseNode.children[2].rule === this) { res = res.concat(this.toASTChain(parseNode.children[2])); } else { res.push((0,DPParseInstance/* parsedNodeToAST */.Hg)(parseNode.children[2])); } return res; }, toAST: function (parsedNode) { var chain = this.toASTChain(parsedNode); var stack = []; var item; var newNode; while (chain.length > 0) { item = chain.shift(); if (item.content in operatorOrder) { while (stack.length >= 3 && operatorOrder[stack[stack.length - 2].content] <= operatorOrder[item.content]) { newNode = { type: 'BinaryExpression' }; newNode.right = stack.pop(); newNode.operator = operatorTokenToAst(stack.pop()); newNode.left = stack.pop(); stack.push(newNode); } } stack.push(item); } while (stack.length >= 3) { newNode = { type: 'BinaryExpression' }; newNode.right = stack.pop(); newNode.operator = operatorTokenToAst(stack.pop()); newNode.left = stack.pop(); stack.push(newNode); } return stack.pop(); } }); rules.push({ target: 'args_list', elements: ['exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); }, toASTChain: function (parsedNode) { return [(0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode)]; } }); rules.push({ target: 'ident', elements: ['.word'], toAST: function (parsedNode) { return { type: 'Identifier', name: parsedNode.children[0].content } } }); rules.push({ target: 'number', elements: ['.number'], toAST: function (parsedNode) { return { type: 'NumericLiteral', value: parseFloat(parsedNode.children[0].content) } } }); rules.push({ target: 'args_list', elements: ['args_list', '_,', 'exp'], longestOnly: true, ident: 'args_list_rec', toASTChain: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToASTChain */.xI)(parsedNode.children[0]).concat((0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[2])); } }); rules.push({ target: 'function_callee', elements: ['ident'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'function_callee', elements: ['mem_exp'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }) rules.push({ target: 'function_call', elements: ['function_callee', '_(', 'args_list', '_)'], toAST: function (parsedNode) { return { type: 'CallExpression', arguments: parsedNode.children[2].rule.toASTChain(parsedNode.children[2]), callee: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]) } } }); rules.push({ target: 'function_call', elements: ['function_callee', '_(', '_)'], toAST: function (parsedNode) { return { type: 'CallExpression', arguments: [], callee: (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]) }; } }); rules.push({ target: 'exp', elements: ['function_call'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['number'], toAST: function (parsedNode) { return (0,DPParseInstance/* parsedNodeToAST */.Hg)(parsedNode.children[0]); } }); var cssExpressionParser = new DPParser/* default */.Z({ elementRegexes: elementRegexes, rules: rules }); var getScreenViewSize = () => { var div = document.createElement('div'); div.style.width = '100vw'; div.style.height = '100vh'; div.style.zIndex = '-10000'; div.style.visibility = 'hidden'; div.style.position = 'fixed'; document.body.appendChild(div); var res = div.getBoundingClientRect(); div.remove(); return { width: res.width, height: res.height }; } var fx = { calc: function (x) { return x; }, 'var': function (x, ctx) { if (!ctx.style) { if (ctx.elt) { ctx.style = getComputedStyle(ctx.elt); } } if (ctx.style) { if (ctx.style.getPropertyValue) { return ctx.style.getPropertyValue(x); } else { return ctx.style[x]; } } throw new Error("Miss style:CSSStyleDeclaration in ctx"); }, '*': function (x, y, ctx) { if (x && x.unit) { if (y && y.unit) { throw Error(`Can not call ${x.value + x.unit} * ${y.value + y.unit}`); } else { return { value: x.value * y, unit: x.unit }; } } else { if (y && y.unit) { return { value: x * y.value, unit: y.unit }; } else return x * y; } }, '/': function (x, y, ctx) { if (x && x.unit) { if (y && y.unit) { throw Error(`Can not call ${x.value + x.unit} / ${y.value + y.unit}`); } else { return { value: x.value / y, unit: x.unit }; } } else { if (y && y.unit) { throw Error(`Can not call ${x} / ${y.value + y.unit}`); } else return x * y; } }, '+': function add(x, y, ctx) { if (x && x.unit) { if (y && y.unit) { if (x.unit === y.unit) { return { value: x.value + y.value, unit: x.unit }; } else { return fx['+'](fx.toPx(x, ctx), fx.toPx(y, ctx)); } } else { throw Error(`Can not call ${x.value + x.unit} + ${y}`); } } else { if (y && y.unit) { throw Error(`Can not call ${x} + ${y.value + y.unit}`); } else return x + y; } }, '-': function add(x, y, ctx) { if (x && x.unit) { if (y && y.unit) { if (x.unit === y.unit) { return { value: x.value - y.value, unit: x.unit }; } else { return fx['+'](fx.toPx(x, ctx), fx.toPx(y, ctx)); } } else { throw Error(`Can not call ${x.value - x.unit} + ${y}`); } } else { if (y && y.unit) { throw Error(`Can not call ${x} - ${y.value + y.unit}`); } else return x + y; } }, toPx: (val, ctx) => { switch (val.unit) { case '%': if (typeof ctx.parentSize !== "number") throw new Error("Miss parentSize:number(px) in ctx"); return { value: ctx.parentSize * val.value / 100, unit: 'px' }; case 'vh': if (!ctx.screenSize) { ctx.screenSize = getScreenViewSize(); } return { value: ctx.screenSize.height * val.value / 100, unit: 'px' }; case 'vw': if (!ctx.screenSize) { ctx.screenSize = getScreenViewSize(); } return { value: ctx.screenSize.width * val.value / 100, unit: 'px' }; default: break; } return val; } }; var visitors = { CallExpression: (astNode, ctx) => { var args = astNode.arguments.map(it => accept(it, ctx)); args.push(ctx); return fx[astNode.callee.name].apply(null, args); }, BinaryExpression: (astNode, ctx) => { var left = accept(astNode.left, ctx); var right = accept(astNode.right, ctx); var func = fx[astNode.operator.content]; return func(left, right, ctx); }, MeasureLiteral: (astNode, ctx) => { return { value: astNode.value, unit: astNode.unit } }, NumericLiteral: (astNode, ctx) => { return astNode.value; }, VariableName: (astNode, ctx) => { return astNode.name; } }; var accept = (astNode, ctx) => { return visitors[astNode.type](astNode, ctx); } /** * * @param {string} exp * @param {{parentSize?: number, screenViewSize?:{width: number, height: number}, style?:CSSStyleDeclaration|Object, elt:AElement|any}} ctx * @param {boolean=} debug * @returns {*|null} */ function computeMeasureExpression(exp, ctx, debug) { try { var p = cssExpressionParser.parse(exp, 'exp'); if (p.ast) { return accept(p.ast, ctx); } return null; } catch (error) { return null; } } function getQuerySelectorSpecificity(selector) { let inline = 0; let idCount = 0; let classCount = 0; let tagCount = 0; // Remove pseudo-elements selector = selector.replace(/::\w+/g, ''); // Check for inline styles (not directly calculable from selector string) if (selector.includes('style="')) { inline = 1; } // Count ID selectors idCount = (selector.match(/#[\w-]+/g) || []).length; // Count class selectors, attributes selectors, and pseudo-classes classCount = (selector.match(/\.[\w-]+/g) || []).length + (selector.match(/\[[^\]]+\]/g) || []).length + (selector.match(/:(?!:)[\w-]+/g) || []).length; // Count element selectors and pseudo-elements tagCount = (selector.match(/^[\w-]+|\s[\w-]+/g) || []).length; return [inline, idCount, classCount, tagCount]; } function compareQuerySelectorSpecificity(selector1, selector2) { const specificity1 = getQuerySelectorSpecificity(selector1); const specificity2 = getQuerySelectorSpecificity(selector2); return arrayLexicographicalCompare(selector1, specificity2); } ;// CONCATENATED MODULE: ./node_modules/absol/src/JSX/attribute.js /** * * @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+/); } /** * * @param mValue * @returns {{unit: null, value: string}|{unit: string, value: number}|null} */ function parseMeasureValue(mValue) { if (mValue === 'auto') return { unit: null, value: 'auto' }; if (mValue === 'match_parent') return { unit: null, value: 'match_parent' }; var value = NaN; var unit = null; var matched; if (typeof mValue === "number") { value = mValue; unit = 'px'; } else if (typeof mValue === "string") { matched = mValue.match(/([+-]?([0-9]*[.])?[0-9]+([eE][+-]?[0-9]+)?)(px|%|vw|vh|em|rem|pt)?/i); if (matched) { value = parseFloat(matched[1]); unit = matched[4]; } } if (isNaN(value)) return null; unit = unit || 'px'; return { value: value, unit: unit }; } /***/ }), /***/ 9846: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Vec2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(557); 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 _Vec2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z(x, y); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Mat3); /***/ }), /***/ 9894: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Vec2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(557); /*** * * @param {Vec2[]} vertices * @constructor */ function Polygon(vertices) { this.vertices = vertices; } /*** * * @param {Vec2} P * @returns {-1|0|1} */ Polygon.prototype.pointLocalIn = function (P) { var A = this.vertices[this.vertices.length - 1]; var B; var AB, PA, PB; var t, x; var count = 0; for (var i = 0; i < this.vertices.length; ++i) { B = this.vertices[i]; PA = A.sub(P); PB = B.sub(P); if (PA.cross(PB) === 0 && PA.dot(PB) <= 0) { return 0; } AB = B.sub(A); if (A.y !== B.y) { t = -PA.y / AB.y; x = A.x + AB.x * t; if (t >= 0 && t < 1 && x > P.x) { count++; } } A = B; } return count % 2 === 1 ? 1 : -1; }; Polygon.prototype.getPathString = function () { var vts = this.vertices; var res = 'M' + vts[0].x + ' ' + vts[0].y; for (var i = 1; i < vts.length; ++i) { res += 'L' + vts[i].x + ' ' + vts[i].y; } res += 'z'; return res; }; Polygon.prototype.copy = function () { return new Polygon(this.vertices.map((v) => { return v.copy(); })); }; Polygon.make = function (vertices) { return new Polygon(vertices); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Polygon); /***/ }), /***/ 2759: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Vec2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(557); /** * * @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 _Vec2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z(this.x, this.y); }; /*** * * @return {Vec2} * @constructor */ Rectangle.prototype.B = function () { return new _Vec2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z(this.x + this.width, this.y); }; /*** * * @return {Vec2} * @constructor */ Rectangle.prototype.C = function () { return new _Vec2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z(this.x + this.width, this.y + this.height); }; /*** * * @return {Vec2} * @constructor */ Rectangle.prototype.D = function () { return new _Vec2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z(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 = _Vec2__WEBPACK_IMPORTED_MODULE_0__/* ["default"].make */ .Z.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 _Vec2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z(this.x + this.width / 2, this.y + this.height / 2); }; /*** * * @param {Rectangle} r * @param {number=} margin * @return {boolean} */ Rectangle.prototype.isCollapse = function (r, margin) { if (!margin) margin = 0; return !(this.x >= r.x + r.width + margin || this.y >= r.y + r.height + margin || r.x >= this.x + this.width + margin || r.y >= this.y + this.height + margin); }; /*** * * @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.copy = function () { return new Rectangle(this.x, this.y, this.width, this.height); }; /** * @returns {Rectangle} */ Rectangle.prototype.clone = function () { return this.copy(); }; /*** * * @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); }; /*** * * @param {Vec2[]} points * @returns {Rectangle} */ Rectangle.boundingPoints = function (points) { var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity; var point; for (var i = 0; i < points.length; ++i) { point = points[i]; minX = Math.min(minX, point.x); maxX = Math.max(maxX, point.x); minY = Math.min(minY, point.y); maxY = Math.max(maxY, point.y); } return new Rectangle(minX, minY, maxX - minX, maxY - minY); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Rectangle); /***/ }), /***/ 557: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /*** * * @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; }; /*** * * @param {Vec2} v1 * @returns {number} */ Vec2.prototype.cross = function (v1) { return this.x * v1.y - this.y * v1.x; }; /*** * * @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 {Vec2} b */ Vec2.prototype.equals = function (b){ return b && this.x === b.x && this.y === b.y; }; /*** * * @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); }; Vec2.ZERO = new Vec2(0, 0); Vec2.OX = new Vec2(1, 0); Vec2.OY = new Vec2(0, 1); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Vec2); /***/ }), /***/ 7988: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "map": () => (/* binding */ map), /* harmony export */ "sumArr": () => (/* binding */ sumArr), /* harmony export */ "radianInRange": () => (/* binding */ radianInRange), /* harmony export */ "distance": () => (/* binding */ distance), /* harmony export */ "numberToString": () => (/* binding */ numberToString), /* harmony export */ "isNumber": () => (/* binding */ isNumber), /* harmony export */ "numberAutoFixed": () => (/* binding */ numberAutoFixed), /* harmony export */ "integerZeroPadding": () => (/* binding */ integerZeroPadding), /* harmony export */ "harmonicMean": () => (/* binding */ harmonicMean) /* harmony export */ }); /** * * @param {number} x * @param {number} l * @param {number} h * @param {number} L * @param {number} H * @returns {number} */ function 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 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; } /*** * * @param value * @param {string=}decimalSeparator */ function isNumber(value, decimalSeparator) { decimalSeparator = decimalSeparator || '.'; if (typeof value === "number") return true; if (typeof value !== "string") return false; var thousandsSeparator = decimalSeparator === '.' ? ',' : '.'; value = value.split(thousandsSeparator).join(''); value = value.replace(decimalSeparator, '.'); return !!value.match(/^[+-]?\d+(\.\d+)?$/); } function numberAutoFixed(x, eDelta) { eDelta = eDelta || 10; eDelta = Math.round(eDelta); var e = parseFloat('1e+' + eDelta); return Math.round(x * e) / e; } /*** * * @param {number} number * @param {number} length * @returns {string} */ function integerZeroPadding(number, length) { var res = number + ''; while (res.length < length) res = '0' + res; return res; } function harmonicMean(a, b) { return 2 / (1 / a + 1 / b); } /***/ }), /***/ 7848: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Ld": () => (/* binding */ randomArbitrary), /* harmony export */ "Iy": () => (/* binding */ randomInt) /* harmony export */ }); /* unused harmony export randomPick */ /** * 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]; } /***/ }), /***/ 5447: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "fileExist": () => (/* binding */ fileExist), /* harmony export */ "saveAs": () => (/* binding */ saveAs), /* harmony export */ "saveTextAs": () => (/* binding */ saveTextAs) /* harmony export */ }); /* harmony import */ var _Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9399); /*** * @typedef {{revokeTimeout?: number, autoBom?:boolean }} FileSaverOpts * */ function fileExist(url) { var xhr = new XMLHttpRequest(); xhr.open('HEAD', url, true); return new Promise(function (resolve) { xhr.onreadystatechange = function () { if (this.readyState === 4) { resolve(xhr.status === 200); } }; xhr.onerror = function (err) {}; xhr.send(); }); } /*** * * @param url * @param name * @param {FileSaverOpts} opts */ function download(url, name, opts) { var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.responseType = 'blob'; xhr.onload = function () { saveAs(xhr.response, name, opts); } xhr.onerror = function () { console.error('Could not download: ' + url); }; xhr.send(null); } function bom(blob, opts) { if (typeof opts === undefined) opts = { autoBom: false }; else if (typeof opts !== 'object') opts = { autoBom: !opts }; if (opts.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type }) } return blob; } function corsEnabled(url) { var xhr = new XMLHttpRequest(); return new Promise(function (resolve) { xhr.onload = function () { resolve(xhr.status >= 200 && xhr.status < 299); }; xhr.onerror = function () { resolve(xhr.status >= 200 && xhr.status < 299); } xhr.open('HEAD', url, true); xhr.send(); }); } function click(node) { try { node.dispatchEvent(new MouseEvent('click')); } catch (e) { var evt = document.createEvent('MouseEvents'); evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null); node.dispatchEvent(evt); } } function normalSaveAs(blob, name, opts) { var URL = window.URL || window.webkitURL; var a = document.createElement('a'); name = name || blob.name || 'download'; a.download = name; a.rel = 'noopener'; if (typeof blob === 'string') { a.href = blob; if (a.origin !== location.origin) { corsEnabled(a.href).then(function (result){ if (result) { download(blob, name, opts); } else { a.target = '_blank'; click(a); } }); } else { click(a); } } else { a.href = URL.createObjectURL(blob); setTimeout(function () { }, ((opts && opts.revokeTimeout) || 4E4)); setTimeout(function () { click(a); }, 0); } } function msSaveAs(blob, name, opts) { name = name || blob.name || 'download'; if (typeof blob === 'string') { corsEnabled(blob).then(function (result) { if (result) { download(blob, name, opts); } else { var a = document.createElement('a'); a.href = blob; a.target = '_blank'; setTimeout(function () { click(a); }); } }); } else { navigator.msSaveOrOpenBlob(bom(blob, opts), name); } } function popupSaveAs(blob, name, opts, popup) { if (typeof blob === 'string') { download(blob, name, opts); return; } popup = popup || open('', '_blank'); if (popup) { popup.document.title = name || 'download'; popup.document.body.innerText = "downloading..." } name = name || blob.name || 'download'; blob.name = name; var force = blob.type === 'application/octet-stream'; var isSafari = _Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__/* ["default"].isSafari */ .Z.isSafari; var isChromeIOS = _Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__/* ["default"].isChromeIOS */ .Z.isChromeIOS; var isMacOSWebView = _Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__/* ["default"].isMacOSWebView */ .Z.isMacOSWebView; var isSafariUnder13 = (_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__/* ["default"].browser.type */ .Z.browser.type === 'safari' && parseFloat(_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__/* ["default"].browser.version */ .Z.browser.version) < 13); if ((!isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined' & !isSafariUnder13) { var reader = new FileReader(); reader.onloadend = function () { var url = reader.result; url = isChromeIOS ? url : url.replace(/^data:[^;]*/, 'data:attachment/file'); if (popup) popup.location.href = url; else location = url; popup = null; }; reader.readAsDataURL(blob); } else { var URL = window.URL || window.webkitURL; var url = URL.createObjectURL(blob); if (popup) popup.location.href = url; else location.href = url; popup = null; setTimeout(function () { URL.revokeObjectURL(blob); }, (opts && opts.revokeTimeout) || 4E4); } } /*** * * @param {string | File | Blob}blob * @param {string=} name * @param {Object=} opts * @param {Object=} popup */ function saveAs(blob, name, opts, popup) { if (typeof window !== "object" || window !== self) { console.error("FileSaver is not support!") } else if ('wkSaveAs' in navigator) { navigator.wkSaveAs(blob, name, opts); } else if ('download' in HTMLAnchorElement.prototype && !_Detector_BrowserDetector__WEBPACK_IMPORTED_MODULE_0__/* ["default"].isMacOSWebView */ .Z.isMacOSWebView) { normalSaveAs(blob, name, opts); } else if ('msSaveOrOpenBlob' in navigator) { msSaveAs(blob, name, opts); } else { setTimeout(function () { popupSaveAs(blob, name, opts, popup); }, 100) } } function saveTextAs(text, name, opts) { var blob = new Blob([text], { type: 'text/plain' }); saveAs(blob, name, opts); } /***/ }), /***/ 3154: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(863); /* harmony import */ var _String_stringGenerate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1334); /* harmony import */ var _Code_safeThrow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5650); var TYPE_WORKER = 'WORKER'; var TYPE_IFRAME = 'IFRAME'; var TYPE_IFRAME_MASTER = 'IFRAME_MASTER'; var TYPE_WORKER_MASTER = 'WORKER_MASTER'; /** * * @param {Worker|HTMLIFrameElement|WorkerGlobalScope|Window=} host */ function IFrameBridge(host) { _HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"].call */ .ZP.call(this); /*** * * @type {Worker|HTMLIFrameElement|WorkerGlobalScope|Window|WorkerGlobalScope|Window} */ this.host = host || self; this.sender = null; this.receiver = null; this.origin = null; this.type = 'NOT_DETECT'; this.id = "UNSET"; this.sync = this._detectHost().then(() => this._attach()); this.__azarResolveCallbacks = {}; this.__azarRejectCallbacks = {}; } IFrameBridge.TYPE_WORKER = TYPE_WORKER; IFrameBridge.TYPE_IFRAME = TYPE_IFRAME; IFrameBridge.TYPE_IFRAME_MASTER = TYPE_IFRAME_MASTER; IFrameBridge.TYPE_WORKER_MASTER = TYPE_WORKER_MASTER; IFrameBridge.prototype._detectHost = function () { return new Promise(rs => { var iframeLoaded = () => { if (this.host.removeEventListener) { this.host.removeEventListener("load", iframeLoaded); } else { this.host.detachEvent("onload", iframeLoaded); } this.sender = this.host.contentWindow; rs(); }; if (this.host instanceof Worker) { this.type = TYPE_WORKER_MASTER; this.sender = this.host; this.receiver = this.host; } else if (this.host.tagName === 'IFRAME') { this.type = TYPE_IFRAME_MASTER; this.receiver = self; this.id = this.host.src; this.origin = '*'; if (this.host.addEventListener) { this.host.addEventListener("load", iframeLoaded); } else { this.host.attachEvent("onload", iframeLoaded); } } else if (IFrameBridge.isInIFrame()) { this.type = TYPE_IFRAME; this.sender = window.parent; this.receiver = this.host; this.id = location.href; this.origin = '*'; } else if (IFrameBridge.isInWorker()) { this.type = TYPE_WORKER; this.sender = this.host; this.receiver = this.host; } if (this.sender) rs(); }); }; IFrameBridge.prototype._attach = function () { if (this.receiver.addEventListener) { this.receiver.addEventListener("message", this.__azarMessageListener.bind(this), false); } else if (this.receiver.attachEvent) { this.receiver.attachEvent("onmessage", this.__azarMessageListener.bind(this)); } else { this.receiver.onmessage = this.__azarMessageListener.bind(this); } }; IFrameBridge.fromIFrame = function (iframe) { return new IFrameBridge(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.fromIFrame() ? IFrameBridge.getParentUrl().match(/^(http|https):\/\/[^/]+/): null; if (rootOrigin) { rootOrigin = rootOrigin[0]; } else { rootOrigin = origin; } // IFrameBridge.shareInstance = new IFrameBridge(self, rootOrigin == origin? undefined: "*" || rootOrigin ); var host = self; IFrameBridge.shareInstance = new IFrameBridge(host, rootOrigin); } return IFrameBridge.shareInstance; }; Object.defineProperties(IFrameBridge.prototype, Object.getOwnPropertyDescriptors(_HTML5_EventEmitter__WEBPACK_IMPORTED_MODULE_0__/* ["default"].prototype */ .ZP.prototype)); IFrameBridge.prototype.constructor = IFrameBridge; IFrameBridge.isInIFrame = function () { return !IFrameBridge.isInWorker() && (top !== self) ; }; IFrameBridge.isInWorker = function () { return (typeof WorkerGlobalScope !== 'undefined') && (self instanceof WorkerGlobalScope); } 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.bridgeId !== this.id) return; if (data.type) { if (data.type == "INVOKE") { try { var result = this.__azarSelfInvoke(data.name, data.params); if (result && typeof result.then == 'function') { result.then(function (result) { this.__azarResolve(data.taskId, result); }.bind(this)) .catch(function (err) { (0,_Code_safeThrow__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)(err); this.__azarResolve(data.taskId, null, err); }.bind(this)); } else { this.__azarResolve(data.taskId, result); } } catch (err) { (0,_Code_safeThrow__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)(err); this.__azarResolve(data.taskId, null, err); } } else if (data.type == "INVOKE_RESULT") { if (this.__azarResolveCallbacks[data.taskId]) { if (data.error) { this.__azarRejectCallbacks[data.taskId](data.error); } else { this.__azarResolveCallbacks[data.taskId](data.result); } delete this.__azarResolveCallbacks[data.taskId]; delete this.__azarRejectCallbacks[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, error) { var data = { type: "INVOKE_RESULT", taskId: taskId, result: result, error: error, bridgeId: this.id }; if (this.origin) { this.sender.postMessage(data, this.origin); } else { this.sender.postMessage(data); } }; IFrameBridge.prototype.__azarSelfInvoke = 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, bridgeId: this.id }; if (this.origin) { this.sender.postMessage(data, this.origin); } else { this.sender.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 = (0,_String_stringGenerate__WEBPACK_IMPORTED_MODULE_1__.randomIdent)(32); var data = { type: 'INVOKE', params: params, taskId: indent, name: name, bridgeId: this.id }; if (this.origin) { this.host.postMessage(data, this.origin); } else { this.host.postMessage(data); } return new Promise(function (resolve, reject) { this.__azarResolveCallbacks[indent] = resolve; this.__azarRejectCallbacks[indent] = reject; }.bind(this)); }.bind(this)); }; IFrameBridge.prototype.importScriptURLs = function () { return this.invoke.apply(this, ['_receiveScriptURLs'].concat(Array.prototype.slice.call(arguments))); }; IFrameBridge.prototype.importScript = function (code) { var blob = new Blob([code], { type: 'application/javascript' }); var url = URL.createObjectURL(blob); return this.importScriptURLs(url); }; IFrameBridge.prototype.createMethod = function (name, fx) { this[name] = function () { return this.invoke.apply(this, [name].concat(Array.prototype.slice.call(arguments))); }; return this.invoke.apply(this, ['_receiveMethod', name, fx.toString()]); }; IFrameBridge.prototype._receiveScriptURLs = function () { if (self.importScripts) { self.importScripts.apply(self, arguments); } }; IFrameBridge.prototype._receiveMethod = function (name, code) { this[name] = (new Function('return ' + code))(); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IFrameBridge); /***/ }), /***/ 6672: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ Network_Thread) }); // EXTERNAL MODULE: ./node_modules/absol/src/Network/IFrameBridge.js var IFrameBridge = __webpack_require__(3154); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); ;// CONCATENATED MODULE: ./node_modules/absol/src/Network/RemoteThread.tpl /* harmony default export */ const RemoteThread = ("function safeThrow(error) {\r\n setTimeout(function () {\r\n throw error;\r\n }, 0);\r\n}\r\n\r\nfunction EventEmitter() {\r\n if (!this._azar_extendEvents) {\r\n Object.defineProperty(this, '_azar_extendEvents', {\r\n enumerable: false,\r\n value: this._azar_extendEvents || { supported: {}, prioritize: {}, nonprioritize: {} }\r\n });\r\n Object.defineProperty(this, '__azar_force', {\r\n value: true,\r\n enumerable: false\r\n });\r\n }\r\n}\r\n\r\n\r\nEventEmitter.prototype.defineEvent = function (name) {\r\n if (name instanceof Array) {\r\n for (var i = 0; i < name.length; ++i)\r\n this._azar_extendEvents.supported[name[i]] = true;\r\n }\r\n else\r\n this._azar_extendEvents.supported[name] = true;\r\n return this;\r\n};\r\n\r\nEventEmitter.prototype.isSupportedEvent = function (name) {\r\n return true;\r\n};\r\n\r\n\r\nEventEmitter.prototype.emit = function (eventName, data) {\r\n this.fire.apply(this, arguments);\r\n};\r\n\r\nEventEmitter.prototype.fire = function (eventName, data) {\r\n var others = Array.prototype.slice.call(arguments, 1);\r\n if (this.isSupportedEvent(eventName)) {\r\n var listenerList;\r\n var i;\r\n if (this._azar_extendEvents.prioritize[eventName]) {\r\n listenerList = this._azar_extendEvents.prioritize[eventName].slice();\r\n for (i = 0; i < listenerList.length; ++i) {\r\n try {\r\n listenerList[i].wrappedCallback.apply(this, others);\r\n } catch (e) {\r\n safeThrow(e);\r\n }\r\n }\r\n }\r\n\r\n if (this._azar_extendEvents.nonprioritize[eventName]) {\r\n listenerList = this._azar_extendEvents.nonprioritize[eventName].slice();\r\n for (i = 0; i < listenerList.length; ++i) {\r\n try {\r\n listenerList[i].wrappedCallback.apply(this, others);\r\n } catch (e) {\r\n safeThrow(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.dispatchEvent) {\r\n var event = new Event(eventName);\r\n data && Object.assign(event, data);\r\n this.dispatchEvent(event);\r\n }\r\n else\r\n throw new Error(\"Not support event \" + eventName);\r\n }\r\n return this;\r\n};\r\n\r\n\r\nEventEmitter.prototype.eventEmittorOnWithTime = function (isOnce, arg0, arg1, arg2) {\r\n if (typeof arg0 == 'object') {\r\n for (var key in arg0) {\r\n this.eventEmittorOnWithTime(isOnce, key, arg0[key]);\r\n }\r\n return this;\r\n }\r\n else {\r\n if (typeof arg1 == 'object') {\r\n return this.eventEmittorOnWithTime(isOnce, arg0, arg1.callback, arg1.cap);\r\n }\r\n else {\r\n var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || [];\r\n var eventIndex = -1;\r\n for (var i = 0; i < eventArr.length; ++i) {\r\n if (eventArr[i].wrappedCallback == arg1) {\r\n eventIndex = i;\r\n break;\r\n }\r\n }\r\n if (eventIndex < 0) {\r\n var event = { isOnce: isOnce, eventName: arg0, callback: arg1, cap: !!arg2 };\r\n //wrappedCallback will be call\r\n if (isOnce) {\r\n event.wrappedCallback = function () {\r\n event.callback.apply(this, arguments);\r\n this.off(event.eventName, event.wrappedCallback, event.cap);\r\n };\r\n }\r\n else {\r\n event.wrappedCallback = event.callback;\r\n }\r\n\r\n if (!this.isSupportedEvent(arg0)) {\r\n if (this.addEventListener) {\r\n this.addEventListener(arg0, event.wrappedCallback, !!arg2);\r\n }\r\n else {\r\n this.attachEvent('on' + arg0, arg1, !!arg2);\r\n }\r\n }\r\n\r\n eventArr.push(event);\r\n this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = eventArr;\r\n }\r\n else {\r\n console.warn(\"dupplicate event\");\r\n }\r\n\r\n }\r\n return this;\r\n }\r\n};\r\n\r\n\r\nEventEmitter.prototype.on = function (arg0, arg1, arg2) {\r\n this.eventEmittorOnWithTime(false, arg0, arg1, arg2);\r\n return this;\r\n};\r\n\r\n\r\nEventEmitter.prototype.once = function (arg0, arg1, arg2) {\r\n this.eventEmittorOnWithTime(true, arg0, arg1, arg2);\r\n return this;\r\n};\r\n\r\nEventEmitter.prototype.off = function (arg0, arg1, arg2) {\r\n if (typeof arg0 == 'object') {\r\n for (var key in arg0) {\r\n this.off(key, arg0[key]);\r\n }\r\n return this;\r\n }\r\n else {\r\n if (typeof arg1 == 'object') {\r\n return this.off(arg0, arg1.callback, arg1.cap);\r\n }\r\n else {\r\n var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || [];\r\n var newEventArray = [];\r\n for (var i = 0; i < eventArr.length; ++i) {\r\n var event = eventArr[i];\r\n if (event.wrappedCallback == arg1) {\r\n //Dont add to newEventArray\r\n if (this.isSupportedEvent(arg0)) {\r\n }\r\n else {\r\n if (this.removeEventListener) {\r\n this.removeEventListener(event.eventName, event.wrappedCallback, !!event.cap);\r\n }\r\n else {\r\n this.detachEvent('on' + event.eventName, event.wrappedCallback, !!event.cap);\r\n }\r\n }\r\n }\r\n else {\r\n newEventArray.push(event);\r\n }\r\n }\r\n this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = newEventArray;\r\n return this;\r\n }\r\n }\r\n\r\n};\r\n\r\n\r\nvar TYPE_WORKER = 'WORKER';\r\n\r\n/**\r\n *\r\n * @param {Worker|HTMLIFrameElement|WorkerGlobalScope|Window=} host\r\n */\r\nfunction IFrameBridge(host) {\r\n EventEmitter.call(this);\r\n /***\r\n *\r\n * @type {Worker|HTMLIFrameElement|WorkerGlobalScope|Window|WorkerGlobalScope|Window}\r\n */\r\n this.host = host || self;\r\n this.sender = null;\r\n this.receiver = null;\r\n this.origin = null;\r\n this.type = 'NOT_DETECT';\r\n this.id = \"UNSET\";\r\n\r\n this.sync = this._detectHost().then(() => this._attach());\r\n\r\n this.__azarResolveCallbacks = {};\r\n this.__azarRejectCallbacks = {};\r\n}\r\n\r\nIFrameBridge.prototype._detectHost = function () {\r\n this.type = TYPE_WORKER;\r\n this.sender = this.host;\r\n this.receiver = this.host;\r\n return Promise.resolve();\r\n};\r\n\r\n\r\nIFrameBridge.prototype._attach = function () {\r\n if (this.receiver.addEventListener) {\r\n this.receiver.addEventListener(\"message\", this.__azarMessageListener.bind(this), false);\r\n }\r\n else if (this.receiver.attachEvent) {\r\n this.receiver.attachEvent(\"onmessage\", this.__azarMessageListener.bind(this));\r\n }\r\n else {\r\n this.receiver.onmessage = this.__azarMessageListener.bind(this);\r\n }\r\n};\r\n\r\n\r\nIFrameBridge.getInstance = function () {\r\n if (!IFrameBridge.shareInstance) {\r\n var origin = location.origin;\r\n var rootOrigin = IFrameBridge.getParentUrl().match(/^(http|https):\\/\\/[^/]+/);\r\n if (rootOrigin) {\r\n rootOrigin = rootOrigin[0];\r\n }\r\n else {\r\n rootOrigin = origin;\r\n }\r\n\r\n // IFrameBridge.shareInstance = new IFrameBridge(self, rootOrigin == origin? undefined: \"*\" || rootOrigin );\r\n var host = self;\r\n IFrameBridge.shareInstance = new IFrameBridge(host, rootOrigin);\r\n }\r\n return IFrameBridge.shareInstance;\r\n};\r\n\r\n\r\nObject.defineProperties(IFrameBridge.prototype, Object.getOwnPropertyDescriptors(EventEmitter.prototype));\r\nIFrameBridge.prototype.constructor = IFrameBridge;\r\n\r\n\r\nIFrameBridge.getParentUrl = function () {\r\n var parentUrl = (window.location != window.parent.location)\r\n ? document.referrer\r\n : document.location.href;\r\n return parentUrl;\r\n};\r\n\r\nIFrameBridge.prototype.__azarMessageListener = function (event) {\r\n this.__azarHandleData(event.data);\r\n};\r\n\r\n\r\nIFrameBridge.prototype.__azarHandleData = function (data) {\r\n if (data.bridgeId !== this.id) return;\r\n if (data.type) {\r\n if (data.type == \"INVOKE\") {\r\n try {\r\n var result = this.__azarSelfInvoke(data.name, data.params);\r\n if (result && typeof result.then == 'function') {\r\n result.then(function (result) {\r\n this.__azarResolve(data.taskId, result);\r\n }.bind(this))\r\n .catch(function (err) {\r\n safeThrow(err);\r\n this.__azarResolve(data.taskId, null, err);\r\n }.bind(this));\r\n }\r\n else {\r\n this.__azarResolve(data.taskId, result);\r\n }\r\n } catch (err) {\r\n safeThrow(err);\r\n this.__azarResolve(data.taskId, null, err);\r\n }\r\n }\r\n else if (data.type == \"INVOKE_RESULT\") {\r\n if (this.__azarResolveCallbacks[data.taskId]) {\r\n if (data.error) {\r\n this.__azarRejectCallbacks[data.taskId](data.error);\r\n }\r\n else {\r\n this.__azarResolveCallbacks[data.taskId](data.result);\r\n }\r\n delete this.__azarResolveCallbacks[data.taskId];\r\n delete this.__azarRejectCallbacks[data.taskId];\r\n }\r\n }\r\n else if (data.type == \"EMIT\") {\r\n this.fire.apply(this, data.params);\r\n }\r\n else this.fire('message', data, this);\r\n }\r\n};\r\n\r\n\r\nIFrameBridge.prototype.__azarResolve = function (taskId, result, error) {\r\n var data = {\r\n type: \"INVOKE_RESULT\",\r\n taskId: taskId,\r\n result: result,\r\n error: error,\r\n bridgeId: this.id\r\n };\r\n\r\n if (this.origin) {\r\n this.sender.postMessage(data, this.origin);\r\n }\r\n else {\r\n this.sender.postMessage(data);\r\n }\r\n};\r\n\r\n\r\nIFrameBridge.prototype.__azarSelfInvoke = function (name, params) {\r\n if (typeof this[name] == 'function') {\r\n return this[name].apply(this, params);\r\n }\r\n else {\r\n return this[name];\r\n }\r\n};\r\n\r\n\r\nIFrameBridge.prototype.emit = function () {\r\n var params = [];\r\n params.push.apply(params, arguments);\r\n this.sync.then(function () {\r\n var data = {\r\n type: \"EMIT\",\r\n params: params,\r\n bridgeId: this.id\r\n };\r\n if (this.origin) {\r\n this.sender.postMessage(data, this.origin);\r\n }\r\n else {\r\n this.sender.postMessage(data);\r\n }\r\n }.bind(this));\r\n return this;\r\n};\r\n\r\n\r\nIFrameBridge.prototype.invoke = function (name) {\r\n var params = [];\r\n params.push.apply(params, arguments);\r\n params.shift();\r\n return this.sync.then(function () {\r\n var indent = randomIdent(32);\r\n var data = {\r\n type: 'INVOKE',\r\n params: params,\r\n taskId: indent,\r\n name: name,\r\n bridgeId: this.id\r\n };\r\n if (this.origin) {\r\n this.host.postMessage(data, this.origin);\r\n }\r\n else {\r\n this.host.postMessage(data);\r\n }\r\n return new Promise(function (resolve, reject) {\r\n this.__azarResolveCallbacks[indent] = resolve;\r\n this.__azarRejectCallbacks[indent] = reject;\r\n }.bind(this));\r\n }.bind(this));\r\n};\r\n\r\nIFrameBridge.prototype.importScriptURLs = function () {\r\n return this.invoke.apply(this, ['_receiveScriptURLs'].concat(Array.prototype.slice.call(arguments)));\r\n};\r\n\r\nIFrameBridge.prototype.importScript = function (code) {\r\n var blob = new Blob([code], { type: 'application/javascript' });\r\n var url = URL.createObjectURL(blob);\r\n return this.importScriptURLs(url);\r\n};\r\n\r\n\r\nIFrameBridge.prototype.createMethod = function (name, fx) {\r\n this[name] = function () {\r\n return this.invoke.apply(this, [name].concat(Array.prototype.slice.call(arguments)));\r\n };\r\n return this.invoke.apply(this, ['_receiveMethod', name, fx.toString()]);\r\n};\r\n\r\n\r\nIFrameBridge.prototype._receiveScriptURLs = function () {\r\n if (self.importScripts) {\r\n self.importScripts.apply(self, arguments);\r\n }\r\n};\r\n\r\n\r\nIFrameBridge.prototype._receiveMethod = function (name, code) {\r\n this[name] = (new Function('return ' + code))();\r\n};\r\n\r\n\r\nvar IFrameBridge_prototype_descriptors = Object.getOwnPropertyDescriptors(IFrameBridge.prototype);\r\ndelete IFrameBridge_prototype_descriptors.constructor;\r\n\r\nObject.defineProperties(self, IFrameBridge_prototype_descriptors);\r\nIFrameBridge.call(self, self);"); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); ;// CONCATENATED MODULE: ./node_modules/absol/src/Network/Thread.js /*** * * @param {{methods?:Object, extendCode: string}} opt * @constructor */ function Thread(opt) { this.worker = new Worker(this._makeCodeUrl(opt)); IFrameBridge/* default.call */.Z.call(this, this.worker); this._attachClientMethods(opt.methods); } Thread.prototype._makeCodeUrl = function (opt) { var code = [ this._makeLibCode(opt.libs), RemoteThread, this._makeMethodCode(opt.methods), this._makePropCode(opt.props), opt.extendCode || '', ].join('\n\n'); var blob = new Blob([code], { type: 'application/javascript' }); var url = URL.createObjectURL(blob); return url; }; Thread.prototype._makePropCode = function (props) { if (!props) return ''; return 'Object.assign(self, ' + JSON.stringify(props) + ');'; }; Thread.prototype._makeLibCode = function (libs) { if (!libs) return ''; return libs.map(function (lib) { return 'self.importScripts(' + JSON.stringify(lib) + ');' }).join('\n'); } Thread.prototype._makeMethodCode = function (methods) { if (!methods) return ''; return Object.keys(methods).map(function (key) { var fx = methods[key]; if (typeof fx === "function") { fx = fx.toString(); return 'self[' + JSON.stringify(key) + '] = ' + fx; } }).join('\n\n'); }; Thread.prototype._attachClientMethods = function (methods) { if (!methods) return ''; Object.keys(methods).reduce(function (ac, name) { ac[name] = function () { return this.invoke.apply(this, [name].concat(Array.prototype.slice.call(arguments))) } return ac; }, this); }; Thread.prototype.destroy = function () { if (this.worker) { this.worker.terminate(); delete this.worker; } }; Thread.prototype.revokeResource = function () { this.destroy(); this.revokeResource = noop/* default */.Z; }; OOP/* default.mixClass */.ZP.mixClass(Thread, IFrameBridge/* default */.Z); /* harmony default export */ const Network_Thread = (Thread); /***/ }), /***/ 6069: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); 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({status: 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 */ const __WEBPACK_DEFAULT_EXPORT__ = (XHR); /***/ }), /***/ 9238: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ve": () => (/* binding */ loadScript), /* harmony export */ "AU": () => (/* binding */ isImageURLAllowCrossOrigin), /* harmony export */ "t2": () => (/* binding */ loadToBlobURL) /* harmony export */ }); var XLoader = {}; function loadScript(url, onComplete, onError) { return new Promise(function (resolve, reject) { var script = document.createElement("script"); script.type = "text/javascript"; if (script.readyState) { //IE script.onreadystatechange = function () { if (script.readyState === "loaded" || script.readyState === "complete") { script.onreadystatechange = null; onComplete && onComplete(); resolve(); } }; } else { //Others script.onload = function () { script.onload = null; script.onerror = null; onComplete && onComplete(); resolve(); }; script.onerror = function () { script.onerror = null; script.onload = null; script.remove(); onError && onError(); reject(); } } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); }); } XLoader.loadScript = loadScript; function isImageURLAllowCrossOrigin(url) { return new Promise((rs, rj) => { url = url ||''; if (url.startsWith('data:') || url.startsWith('blob:')) { rs(true); return; } var img = new Image(); // img.crossOrigin = "anonymous"; img.onload = function () { var canvas = document.createElement('canvas'); canvas.width = 10; canvas.height = 10; var ctx = canvas.getContext("2d"); ctx.drawImage(this, 0, 0); try { ctx.getImageData(0, 0, 10, 10); rs(true); } catch (err) { rs(false); } } img.onerror = function (event) { rj(event.error || event); } img.src = url; }); } var blobCache = {}; /*** * * @param {string} url * @param {boolean=}noCache * @return {*} */ function loadToBlobURL(url, noCache) { if (blobCache[url]) return blobCache[url]; blobCache[url] = fetch(url).then(res=> res.blob()).then(blob=> URL.createObjectURL(blob)); return blobCache[url]; } /* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (XLoader))); /***/ }), /***/ 56: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Hg": () => (/* binding */ parsedNodeToAST), /* harmony export */ "xI": () => (/* binding */ parsedNodeToASTChain), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _DataStructure_Heap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5491); var TARGET = 0; var RULE = 1; var PASSED = 2; var LENGTH = 3; var TRACK = 4; /*** * @param {string} target * @param {Rule|null} rule * @param {number} passed * @param {number} length * @param {[]} track * * @returns {*[]} */ function mkItem(target, rule, passed, length, track) { return [target, rule, passed, length, track]; } function indexingItem(item) { return item[TARGET] + '*' + item[PASSED] + '*' + item[LENGTH]; } function arrayKey(item) { return item[TARGET] + '*' + item[PASSED]; } /**** * * @param {DPParser} parser * @param {string || []} source * @param {string} target * @constructor */ function DPParseInstance(parser, source, target) { this.target = target; this.parser = parser; this.targets = parser.targets; this.rules = parser.rules; this.tokenTypes = parser.tokenizer.types; this.error = null; this.source = source; var start = Date.now(); if (typeof source === "string") { this.tokens = parser.tokenizer.tokenize(source).filter(function (tk) { return tk.type !== 'skip'; }); } else if (source instanceof Array) { this.tokens = source } else { throw new Error("Invalid source, source must be string or array of token"); } this.tokenIdx = 0; this.priQueue = new _DataStructure_Heap__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP(this._cmpFunction); this.maxSize = 0; this.expectedArr = []; this.parsedNode = null; this.ast = null; start = Date.now(); this._dp(); this._trackBack(); if (this.parsedNode) { this._calcAST(); } else { this._findError(); } } DPParseInstance.prototype._dp = function () { while (this.tokenIdx < this.tokens.length) { this._nextToken(); } }; DPParseInstance.prototype._cmpFunction = function (a, b) { return b[LENGTH] - a[LENGTH]; }; DPParseInstance.prototype._nextToken = function () { var idx = this.tokenIdx++; var token = this.tokens[idx]; this.priQueue.push(mkItem('.' + token.type, null, 1, 1, [null, token])); this.priQueue.push(mkItem('_' + token.content, null, 1, 1, [null, token])); var expected = {}; var pushed = {}; var itemIndex; var longestChecked = {}; this.expectedArr.push(expected); var cur, next; var i, j, rule; var prevExpectedList, prevRule; var prevExpectedItem; //nếu cùng 1 rule, cùng điểm bắt dầu, cùng passed thì dài hơn lấy while (this.priQueue.size() > 0) { this.maxSize = Math.max(this.maxSize, this.priQueue.size()); cur = this.priQueue.pop(); for (i = 0; i < this.rules.length; ++i) { rule = this.rules[i]; if (rule.elements[0] === cur[TARGET]) { if (rule.elements.length === 1) { next = mkItem(rule.target, rule, cur[PASSED], cur[LENGTH], [null, cur]); itemIndex = indexingItem(next); if (!pushed[itemIndex]) { pushed[itemIndex] = true; this.priQueue.push(next); } expected['^'] = expected['^'] || []; expected['^'].push(next); } else { next = mkItem(rule.target, rule, 1, cur[LENGTH], [null, cur]); expected[rule.elements[1]] = expected[rule.elements[1]] || []; expected[rule.elements[1]].push(next); } } } prevExpectedList = this.expectedArr[idx - cur[LENGTH]] && this.expectedArr[idx - cur[LENGTH]][cur[TARGET]]; if (prevExpectedList) { for (j = 0; j < prevExpectedList.length; ++j) { prevExpectedItem = prevExpectedList[j]; prevRule = prevExpectedItem[RULE]; next = mkItem(prevRule.target, prevRule, prevExpectedItem[PASSED] + 1, prevExpectedItem[LENGTH] + cur[LENGTH], [prevExpectedItem, cur]); if (prevExpectedItem[PASSED] + 1 === prevRule.elements.length) { itemIndex = indexingItem(next); if (next[RULE] && next[RULE].longestOnly) { if (longestChecked[next[RULE].ident] && longestChecked[next[RULE].ident] >= next[LENGTH]){ continue; } longestChecked[next[RULE].ident] = next[LENGTH]; } if (!pushed[itemIndex]) { pushed[itemIndex] = true; this.priQueue.push(next); } expected['^'] = expected['^'] || []; expected['^'].push(next);//[rule index, passed, length] } else { expected[prevRule.elements[prevExpectedItem[PASSED] + 1]] = expected[prevRule.elements[prevExpectedItem[PASSED] + 1]] || []; expected[prevRule.elements[prevExpectedItem[PASSED] + 1]].push(next); } } } } }; DPParseInstance.prototype._trackBack = function () { var expectedAr = this.expectedArr; function visit(target, start, length) { var node = { type: target, start: start, end: start + length }; var matchedItem = null; var expected = expectedAr[start + length - 1]; if (!expected) return null; var itemList = expected['^']; if (!itemList) return null; var item; if (itemList) { for (var j = 0; j < itemList.length; ++j) { item = itemList[j]; if (item[TARGET] === target) { if (item[LENGTH] === length) { matchedItem = item; } } } } if (!matchedItem) { return null; } node.rule = matchedItem[RULE]; var childItem = []; var cTrack = matchedItem[TRACK]; var right, left; while (cTrack) { left = cTrack[0]; right = cTrack[1]; childItem.unshift(right); cTrack = left && left[TRACK]; } var ac = childItem.reduce(function (ac, item) { if (typeof item[TRACK][1].type === "string") { ac.child.push(item[TRACK][1]); ac.start += 1; } else { ac.child.push(visit(item[TARGET], ac.start, item[LENGTH])); ac.start += item[LENGTH]; } return ac; }, { start: start, child: [] }); node.children = ac.child; node.end = ac.start; return node; } this.parsedNode = visit(this.target, 0, this.expectedArr.length); }; DPParseInstance.prototype._findError = function () { function cmp(a, b) { return b.i - a.i; } var queue = new _DataStructure_Heap__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP(cmp); var doneArr = Array(this.expectedArr.length).fill(null).map(function () { return {} }); this.expectedArr.forEach(function (ex, i) { for (var k in ex) { ex[k].forEach(function (it) { var target = it[TARGET]; var done = doneArr[i - it[LENGTH] + 1]; done[target] = done[target] || []; done[target].push(it); }) } }); var d = {}; queue.push({ t: this.target, i: 0 }); d[this.target + '/' + 0] = true; var cr, next; var nextIdent; var item; var hasNewExpected; while (queue.size() > 0) { cr = queue.pop(); if (cr.i >= doneArr.length) { if (!this.error || this.error.tokenIdx < cr.i || this.error.type !== "expected") { this.error = { tokenIdx: cr.i, type: 'expected', expectedToken: [] } } if (cr.t[0] === '_' || cr.t[0] === '.') { this.error.expectedToken.push(cr.t); } continue; } hasNewExpected = false; if (doneArr[cr.i][cr.t]) { doneArr[cr.i][cr.t].forEach(function (item) { if (item[PASSED] < item[RULE].elements.length) { next = { i: cr.i + item[LENGTH], t: item[RULE].elements[item[PASSED]] }; nextIdent = next.t + '/' + next.i; hasNewExpected = true; if (!d[nextIdent]) { d[nextIdent] = true; queue.push(next); } } }); } this.rules.forEach(function (rule) { if (rule.target === cr.t) { next = { i: cr.i, t: rule.elements[0] }; nextIdent = next.t + '/' + next.i; if (!d[nextIdent]) { d[nextIdent] = true; queue.push(next); } } }); if (!hasNewExpected) { if (!this.error || this.error.tokenIdx < cr.i) { this.error = { tokenIdx: cr.i, type: 'unexpected' } } } } if (this.error.type === 'expected') { this.error.message = 'Expected: ' + this.error.expectedToken.map(function (t) { if (t[0] === '.') return t.substring(1); if (t[0] === '_') return JSON.stringify(t.substring(1)); }).join(', '); } else if (this.error.type === 'unexpected') { this.error.message = 'Unexpected token ' + (this.tokens[this.error.tokenIdx].content || JSON.stringify(this.tokens[this.error.tokenIdx])); } }; DPParseInstance.prototype._calcAST = function () { this.ast = this.parsedNode.rule.toAST(this.parsedNode); }; function parsedNodeToAST(parsedNode) { return parsedNode.rule.toAST(parsedNode) } function parsedNodeToASTChain(parsedNode) { return parsedNode.rule.toASTChain(parsedNode); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DPParseInstance); /***/ }), /***/ 3281: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ Pharse_DPParser) }); ;// CONCATENATED MODULE: ./node_modules/absol/src/Pharse/DPTokenizer.js function DPTokenizer(opt) { opt = opt || {}; if (opt.elementRegexes) this.elementRegexes = opt.elementRegexes; this._combineTokenRegex(); } DPTokenizer.prototype.elementRegexes = [ ['string', /("(?:[^"\\]|\\.)*?")|('(?:[^'\\]|\\.)*?')/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['skip', /([\s\r\n]+)|(\/\/[^\n]*)|(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)/], ['dsymbol', /\+\+|--|==|!=|<=|>=|\|\||&&/], ['tsymbol', /\.\.\./], ['symbol', /[^\s_a-zA-Z0-9]/], ]; DPTokenizer.prototype._combineTokenRegex = function () { var tokenRegexSource = this.elementRegexes.map(function (cr) { return '(' + cr[1].source + ')'; }).join('|'); this.tokenRegex = new RegExp(tokenRegexSource, 'g'); this.groupIndexOfTypes = this.elementRegexes.slice(0, this.elementRegexes.length - 1).reduce(function (ac, cr) { var subGroupLength = (new RegExp(cr[1].source + '|.')).exec('a').length; ac.push(ac[ac.length - 1] + subGroupLength); return ac; }, [1]); this.types = this.elementRegexes.reduce(function (ac, cr) { ac[cr[0]] = cr; return ac; }, {}) }; DPTokenizer.prototype.tokenize = function (source) { var regex = new RegExp(this.tokenRegex.source, 'g'); var elementRegexes = this.elementRegexes; var groupIndexOfTypes = this.groupIndexOfTypes; var res = []; var matched = regex.exec(source); var type, i; while (matched) { type = null; for (i = 0; i < groupIndexOfTypes.length; ++i) { if (matched[groupIndexOfTypes[i]]) { type = elementRegexes[i][0]; } } res.push({ type: type, content: matched[0], start: matched.index, end: matched.index + matched[0].length }); matched = regex.exec(source); } return res; }; /* harmony default export */ const Pharse_DPTokenizer = (DPTokenizer); // EXTERNAL MODULE: ./node_modules/absol/src/Pharse/DPParseInstance.js var DPParseInstance = __webpack_require__(56); ;// CONCATENATED MODULE: ./node_modules/absol/src/Pharse/DPParser.js /*** * @typedef Rule * @property {string} target * @property {string[]} elements */ /*** * * @param {{rules?:Array, elementRegexes?:Array}}opt * @constructor */ function DPParser(opt) { opt = opt || {}; if (opt.rules) { this.rules = opt.rules; } this.targets = {}; this.tokenizer = new Pharse_DPTokenizer(opt); this.computeTarget(); } /**** * @type {Rule[]} */ DPParser.prototype.rules = []; DPParser.prototype.computeTarget = function () { this.rules.reduce(function (ac, rule) { var target = ac[rule.target]; if (!target) { target = { rules: [] } ac[rule.target] = target; } target.rules.push(rule); return ac; }, this.targets); }; /*** * * @param {string|[]}source * @param target * @returns {DPParseInstance} */ DPParser.prototype.parse = function (source, target) { return new DPParseInstance/* default */.ZP(this, source, target); }; /* harmony default export */ const Pharse_DPParser = (DPParser); /***/ }), /***/ 1942: /***/ (() => { if (navigator.geolocation) { var getCurrentPosition = navigator.geolocation.getCurrentPosition; var lastResult = null; navigator.geolocation.getCurrentPosition = function (successCallback, errorCallback, options) { if (typeof successCallback !== "function") successCallback = function (){}; if (typeof errorCallback !== "function") errorCallback = function (){}; var ended = false; var to = setTimeout(function (){ if (lastResult && !ended) { ended = true; successCallback && successCallback(lastResult); } else if (!ended) { ended = true; errorCallback && errorCallback(new Error("GPS không phản hồi.")); } }, lastResult?5000: 10000); getCurrentPosition.call(this, function (result){ lastResult = result; if (!ended) { ended = true; successCallback && successCallback(lastResult); } }, function (error) { if (error && error.message.indexOf('deni') >0 && !ended) { ended = true; errorCallback && errorCallback(new Error("Chưa cấp quyền truy cập GPS.")); } else if (lastResult && !ended) { ended = true; successCallback && successCallback(lastResult); } else if (!ended) { ended = true; errorCallback && errorCallback(error); } }, {maximumAge: 1000}); } } /***/ }), /***/ 5421: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* unused harmony exports getComputedStyleCache, getComputedStyleValueCache, computePrintAttr */ /* harmony import */ var _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2759); /* harmony import */ var _HTML5_Svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6821); /* harmony import */ var _HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6628); /* harmony import */ var _JSX_attribute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2953); /* harmony import */ var _Network_XLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9238); var _ = _HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].ShareInstance._ */ .ZP.ShareInstance._; var $ = _HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].ShareInstance.$ */ .ZP.ShareInstance.$; var $$ = _HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* ["default"].ShareInstance.$$ */ .ZP.ShareInstance.$$; /*** * * @param {AElement|HTMLElement} elt * @param {string=} ps * @return {*} */ function getComputedStyleCache(elt, ps) { ps = ps || ''; var key = '__computedStyleCache__' + ps; if (elt[key]) return elt[key]; elt[key] = ps ? getComputedStyle(elt, ps) : getComputedStyle(elt); return elt[key]; } /*** * * @param {AElement|HTMLElement} elt * @param {string} pName * @return {string} */ function getComputedStyleValueCache(elt, pName) { return getComputedStyleCache(elt).getPropertyValue(pName); } function computePrintAttr(elt) { var style = getComputedStyleCache(elt); var fontSize = elt.getFontSize(); var lineHeight = style.getPropertyValue('line-height'); if (lineHeight === 'normal') lineHeight = 1.2; else lineHeight = parseFloat(lineHeight.replace('px', '')) / fontSize; if (!isNaN(lineHeight)) lineHeight = 1.2; var fontWeight = style.getPropertyValue('font-weight'); var fontStyle = fontWeight === '400' ? 'normal' : 'bold'; var dirs = ['top', 'right', 'bottom', 'left']; var paddingStyle = dirs.map(dir => (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('padding-' + dir))); var borderWidthStyle = dirs.map(dir => (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('border-' + dir + '-width'))); var contentBound = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); contentBound.x += paddingStyle[3].value + borderWidthStyle[3].value; contentBound.y += paddingStyle[0].value + borderWidthStyle[0].value; contentBound.width += paddingStyle[1].value + borderWidthStyle[1].value + paddingStyle[3].value + borderWidthStyle[3].value; contentBound.height += paddingStyle[2].value + borderWidthStyle[2].value + paddingStyle[0].value + borderWidthStyle[0].value; return { contentBound: contentBound, whiteSpace: style.getPropertyValue('white-space'), style: { color: style.getPropertyValue('color'), fontFamily: style.getPropertyValue('font-family'), fontStyle: fontStyle, lineHeight: lineHeight, fontSize: fontSize, align: style.getPropertyValue('text-align') } } } /*** * * @type {PSHandler[]} */ var PrintSerialHandlers = []; PrintSerialHandlers.push({ id: 'TextNode', match: (elt) => elt.nodeType === Node.TEXT_NODE, exec: (printer, text, scope, stack, accept) => { var O = printer.O; var elt = text.parentElement; var bound = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect((0,_HTML5_Dom__WEBPACK_IMPORTED_MODULE_2__/* .getTextNodeBound */ .m1)(text)); if (bound.width === 0) return; var printAttr = computePrintAttr(elt); var txt = text.data; var y = -Infinity; var c; var range; var parts = []; var cPart; var j; var delta = printAttr.style.lineHeight * printAttr.style.fontSize / 3; var rect; var i = 0; while (i < txt.length) { c = txt[i]; if (!c.match(/[\s\n]/)) { j = i + 1; while (j < txt.length) { c = txt[j]; if (c.match(/[\s\n]/)) { break; } else { ++j; } } range = document.createRange(); range.setStart(text, i); range.setEnd(text, j); rect = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(range.getBoundingClientRect()); if (Math.abs(rect.y - y) < delta) { cPart.end = j; cPart.rect = cPart.rect.merge(rect); } else { cPart = { start: i, end: j, rect: rect }; y = rect.y; parts.push(cPart); } i = j; } else { ++i; } } parts.forEach(part => { rect = part.rect; rect.x -= O.x; rect.y -= O.y; rect.width += printAttr.style.fontSize * 1000; var lineTxt = txt.substring(part.start, part.end); if (printAttr.whiteSpace === 'normal') { lineTxt = lineTxt.replace(/[\s\n]+/g, ' '); } delete printAttr.style.align;//text-node bound printer.text(lineTxt, rect, printAttr.style); }); } }); PrintSerialHandlers.push({ id: 'Border', match: (elt, scope, stack) => { if (scope.isDeclared('borderStyle')) return false; var style = getComputedStyleCache(elt); var borderColor = style.getPropertyValue('border-color'); var borderStyle = style.getPropertyValue('border-style'); var borderWidth = style.getPropertyValue('border-width'); var borderRadius = style.getPropertyValue('border-radius'); if (borderStyle === 'none' || borderWidth === '0px') return false; scope.declare('borderStyle', { width: parseFloat(borderWidth.replace('px', '')), radius: (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(borderRadius), color: borderColor, }) return true; }, exec: (printer, elt, scope, stack, accept) => { var borderStyle = scope.get('borderStyle'); var bound = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); var rect = bound.clone(); var strokeWidth = borderStyle.width; if (elt.tagName === 'TD' || elt.tagName === 'TH') { rect.x -= printer.O.x; rect.y -= printer.O.y; } else { rect.x -= printer.O.x - strokeWidth / 2; rect.y -= printer.O.y - strokeWidth / 2; rect.width -= strokeWidth; rect.height -= strokeWidth; } var radius = borderStyle.radius; var rounded; if (radius) { switch (radius.unit) { case '%': rounded = [radius.value * rect.width / 100, radius.value * rect.height / 100]; break; case 'px': rounded = radius.value; break; } } printer.rect(rect, { stroke: borderStyle.color, rounded: rounded, strokeWidth: strokeWidth }); return true; } }); PrintSerialHandlers.push({ id: 'BackgroundImage', match: (elt, scope, stack) => { return elt.getComputedStyleValue('background-image') !== 'none'; }, exec: (printer, elt, scope, stack, accept) => { var style = getComputedStyleCache(elt); var backgroundSize = style.getPropertyValue('background-size'); var url = style.getPropertyValue('background-image').trim() .replace('url("', '') .replace('")', ''); var rect = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); rect.x -= printer.O.x; rect.y -= printer.O.y; var borderRadius = ['top-left', 'top-right', 'bottom-right', 'bottom-left'].map(key => (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('border-' + key + '-radius'))); var image = (0,_Network_XLoader__WEBPACK_IMPORTED_MODULE_4__/* .isImageURLAllowCrossOrigin */ .AU)(url).then(result => { /*** * * @type {HTMLCanvasElement} */ var canvas = document.createElement('canvas'); var width = rect.width; var height = rect.height; canvas.width = width; canvas.height = height; var image = new Image(); image.crossOrigin = 'anonymous'; image.src = result ? url : 'https://absol.cf/crossdownload.php?file=' + encodeURIComponent(url); var ctx = canvas.getContext('2d'); var isRect = borderRadius.every(x => x.value === 0); var x, y, r; var eclipses = []; var points = []; if (!isRect) { r = borderRadius[0]; x = r.unit === '%' ? r.value / 100 * width : r.value; y = 0; points.push([x, y]); r = borderRadius[1]; x = r.unit === '%' ? (1 - r.value / 100) * width : width - r.value; points.push([x, y]); if (r.value > 0) { y = r.unit === '%' ? r.value / 100 * height : r.value; eclipses.push([x, y, width - x, y, 0, -Math.PI / 2, 0]) x = width; points.push([x, y]); } else { x = width; } r = borderRadius[2]; y = r.unit === '%' ? (1 - r.value / 100) * height : height - r.value; points.push([x, y]); if (r.value > 0) { x = r.unit === '%' ? (1 - r.value / 100) * width : width - r.value; eclipses.push([x, y, width - x, height - y, 0, 0, Math.PI / 2]); y = height; points.push([x, y]); } else { y = height; } r = borderRadius[3]; x = r.unit === '%' ? r.value / 100 * width : r.value; points.push([x, y]); if (r.value > 0) { y = r.unit === '%' ? (1 - r.value / 100) * height : height - r.value; eclipses.push([x, y, x, height - y, 0, Math.PI / 2, Math.PI]); x = 0; points.push([x, y]); } else { x = 0; } r = borderRadius[0]; y = r.unit === '%' ? r.value / 100 * height : r.value; points.push([x, y]); if (r.value > 0) { x = r.unit === '%' ? r.value / 100 * width : r.value; eclipses.push([x, y, x, y, 0, Math.PI, Math.PI * 3 / 2]); } ctx.beginPath(); points.forEach((p, i) => { if (i === 0) ctx.moveTo(p[0], p[1]); else ctx.lineTo(p[0], p[1]); }); ctx.closePath(); ctx.fillStyle = 'red'; ctx.fill(); eclipses.forEach(e => { ctx.beginPath(); ctx.ellipse(e[0], e[1], e[2], e[3], e[4], e[5], e[6]); ctx.fill(); }); ctx.globalCompositeOperation = 'source-in'; } return new Promise(rs => { image.onload = function () { var scale; var nW; var nH;//todo: handle more switch (backgroundSize) { case 'cover': scale = Math.max(width / image.naturalWidth, height / image.height); nW = image.naturalWidth * scale; nH = image.naturalHeight * scale ctx.drawImage(image, 0, 0, nW, nH); break; case 'auto': default: ctx.drawImage(image, 0, 0); } rs(canvas); }; image.onerror = function () { console.error('can not load ', image.src) rs(null); } }) }).catch(err => { console.error(err); }); printer.image(image, rect); return true; } }); PrintSerialHandlers.push({ id: 'BreakInside', match: (elt, scope, stack) => { return getComputedStyleValueCache(elt, 'break-inside') === 'avoid'; }, exec: (printer, elt, scope, stack, accept) => { var rect = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); rect.x -= printer.O.x; rect.y -= printer.O.y; printer.rect(rect, {}); return true; } }); PrintSerialHandlers.push({ id: 'MDI_FA', match: (elt, scope, stack) => elt.classList && (elt.classList.contains('mdi') || elt.classList.contains('fab') || elt.classList.contains('far') || elt.classList.contains('fas') || elt.classList.contains('material-icons')), exec: (printer, elt, scope, stack, accept) => { var style = elt.classList.contains('material-icons') ? getComputedStyleCache(elt) : getComputedStyleCache(elt, '::before'); var content = elt.classList.contains('material-icons') ? elt.innerHTML : style.getPropertyValue('content'); content = content.replace('"', ''); var font = style.getPropertyValue('font'); var rect = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); if (rect.width * rect.height === 0) return; var canvas = document.createElement('canvas'); canvas.width = rect.width; canvas.height = rect.height; var ctx = canvas.getContext('2d'); ctx.font = font; ctx.textBaseline = "top"; rect.x -= printer.O.x; rect.y -= printer.O.y; ctx.fillStyle = style.getPropertyValue('color'); ctx.fillText(content, 0, 0); printer.image(canvas, rect); } }); PrintSerialHandlers.push({ id: 'Img', match: elt => elt.tagName && elt.tagName.toLowerCase() === 'img' && elt.src && elt.naturalWidth, exec: (printer, elt, scope, stack, accept) => { var bound = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); if (bound.width === 0) return; var rect = bound.clone(); rect.x -= printer.O.x; rect.y -= printer.O.y; printer.image(elt, rect); } }); PrintSerialHandlers.push({ id: 'Canvas', match: elt => elt.tagName && elt.tagName.toLowerCase() === 'canvas', exec: (printer, elt, scope, stack, accept) => { var bound = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); if (bound.width === 0) return; var rect = bound.clone(); rect.x -= printer.O.x; rect.y -= printer.O.y; printer.image(elt, rect); } }); PrintSerialHandlers.push({ id: 'SVG', match: elt => elt.tagName && elt.tagName.toLowerCase() === 'svg', exec: (printer, elt, scope, stack, accept) => { var bound = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); if (bound.width === 0) return; var rect = bound.clone(); rect.x -= printer.O.x; rect.y -= printer.O.y; var res = _HTML5_Svg__WEBPACK_IMPORTED_MODULE_1__/* ["default"].svgToCanvas */ .ZP.svgToCanvas(elt.__origin__).catch(err => { console.error(err); }); res.elt = elt; printer.image(res, rect); } }); PrintSerialHandlers.push({ id: 'TextInput', match: (elt, scope, stack) => { return elt.tagName === 'INPUT' && (elt.attr('type') === 'text' || elt.attr('type') === 'number' || !elt.attr('type')); }, exec: (printer, elt, scope, stack, accept) => { var O = printer.O; var style = getComputedStyleCache(elt); var paddingLeft = (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('padding-left')); var paddingTop = (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('padding-top')); var paddingBottom = (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('padding-bottom')); var borderLeftWidth = (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('border-left-width')); var borderTopWidth = (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('border-top-width')); var borderBottomWidth = (0,_JSX_attribute__WEBPACK_IMPORTED_MODULE_3__.parseMeasureValue)(style.getPropertyValue('border-top-width')); var rect = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); var fontSize = elt.getFontSize(); var lineHeight = style.getPropertyValue('line-height'); if (lineHeight === 'normal') lineHeight = 1.2; else lineHeight = parseFloat(lineHeight.replace('px', '')) / fontSize; if (!isNaN(lineHeight)) lineHeight = 1.2; var fontWeight = style.getPropertyValue('font-weight'); var fontStyle = fontWeight === '400' ? 'normal' : 'bold'; rect.width = 700; rect.x += borderLeftWidth.value + paddingLeft.value - O.x; rect.height -= borderTopWidth.value + borderBottomWidth.value + paddingTop.value + paddingBottom.value; rect.y += borderTopWidth.value + paddingTop.value - O.y; var centerY = rect.centerPoint().y; rect.y = centerY - fontSize * lineHeight / 2; rect.height = fontSize * lineHeight; printer.text(elt.value, rect, { fontFamily: style.getPropertyValue('font-family'), fontStyle: fontStyle, fontSize: fontSize, lineHeight: lineHeight }); } }); PrintSerialHandlers.push({ id: 'BreakPage', match: elt => elt.hasClass && elt.hasClass('as-page-break'), exec: (printer, elt, scope, stack, accept) => { var rect = _Math_Rectangle__WEBPACK_IMPORTED_MODULE_0__/* ["default"].fromClientRect */ .Z.fromClientRect(elt.getBoundingClientRect()); rect.x -= printer.O.x; rect.y -= printer.O.y; printer.pageBreak(rect.A()); } }); PrintSerialHandlers.push({ id: '*', match: () => true, exec: (printer, elt, scope, stack, accept) => { if (elt.getComputedStyleValue('display') === 'none') return; if (elt.childNodes) { Array.prototype.forEach.call(elt.childNodes, child => accept(child)); } } }) /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PrintSerialHandlers); /***/ }), /***/ 9673: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "I": () => (/* binding */ mergePdfs) /* harmony export */ }); /* harmony import */ var _Network_XLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9238); // var pdLibUrl = 'https://unpkg.com/pdf-lib/dist/pdf-lib.js'; var pdLibUrl = 'https://absol.cf/vendor/pdf-lib.js'; var libSync = null; function loadVendorLib() { if (libSync) return libSync; if ('PDFLib' in window) { libSync = Promise.resolve(window.PDFLib); } else { libSync = (0,_Network_XLoader__WEBPACK_IMPORTED_MODULE_0__/* .loadScript */ .ve)(pdLibUrl).then(() => window.PDFLib) } return libSync; } function loadPdf(data) { if (typeof data === "string") { return fetch(data).then(res => res.arrayBuffer()).then(buff => loadPdf(buff)); } else if (data instanceof ArrayBuffer) { return PDFLib.PDFDocument.load(data); } else return null; } function mergePdfs(pdfsToMerges, onProcess) { var processInfo = { all: pdfsToMerges.length, loaded: 0, merged: 0 } return loadVendorLib().then(() => { var pdfSync = pdfsToMerges.map(it => loadPdf(it).then(r => { processInfo.loaded++; onProcess && onProcess(processInfo); return r; })); pdfSync.push(PDFLib.PDFDocument.create()); return Promise.all(pdfSync); }).then(pdfs => { var mergedPdf = pdfs.pop(); return pdfs.reduce((sync, pdf) => { return mergedPdf.copyPages(pdf, pdf.getPageIndices()).then(copiedPages => sync.then(() => copiedPages)) .then(copiedPages => { copiedPages.forEach((page) => { mergedPdf.addPage(page); }); processInfo.merged++; onProcess && onProcess(processInfo); }); }, Promise.resolve()).then(() => mergedPdf); }).then(mergedPdf => mergedPdf) } /***/ }), /***/ 2691: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "PaperPrinter": () => (/* reexport */ Print_PaperPrinter), "PrintSerializer": () => (/* reexport */ Print_PrintSerializer), "ShareSerializer": () => (/* binding */ ShareSerializer), "downloadAsPDF": () => (/* binding */ downloadAsPDF), "mergePdfs": () => (/* reexport */ pdf/* mergePdfs */.I) }); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(6628); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/VarScope.js var VarScope = __webpack_require__(1312); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Rectangle.js var Rectangle = __webpack_require__(2759); // EXTERNAL MODULE: ./node_modules/absol/src/Print/PrintSerialHandlers.js var PrintSerialHandlers = __webpack_require__(5421); // EXTERNAL MODULE: ./node_modules/absol/src/Network/XLoader.js var XLoader = __webpack_require__(9238); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate = __webpack_require__(1334); ;// CONCATENATED MODULE: ./node_modules/absol/src/Print/PrintSerializer.js /*** * @typedef {Object} PSHandler * @property {string} id * @property {function(elt:AElement, scope: VarScope, stack:Array<AElement>):boolean} match * @property {function(printer: PaperPrinter,elt:AElement|Text, scope: VarScope, stack:Array<{elt: AElement|Text, scope:VarScope}>, accept: function():void):(boolean|void)} exec - return true if run other handle * */ /*** * * @constructor */ function PrintSerializer() { /*** * @type {Array<PSHandler>} */ this.handlers = this.handlers.slice(); } PrintSerializer.prototype.handlers = PrintSerialHandlers/* default */.ZP; /*** * * @param {PaperPrinter} printer * @param {AElement|AElementNS|Text} elt * @param {VarScope} scope * @param {Array<{elt: AElement|Text, scope:VarScope}>} stack */ PrintSerializer.prototype.accept = function (printer, elt, scope, stack) { if (elt.nodeType === Node.ELEMENT_NODE) Dom/* default.ShareInstance.$ */.ZP.ShareInstance.$(elt); var handler; var matched, cont; for (var i = 0; (!matched || cont) && i < this.handlers.length; ++i) { handler = this.handlers[i]; matched = handler.match(elt, scope, stack); if (matched) { cont = handler.exec(printer, elt, scope, stack, elt1 => { this.accept(printer, elt1, new VarScope/* default */.Z(scope), stack.concat([{ elt: elt, scope: scope }])); }); } } }; /*** * * @param {Array<AElement> | AElement | Array<{elt: AElement, opt:Object}>} docList * @param printer * @param onProcess * @return {Promise<Awaited<unknown>[]>} */ PrintSerializer.prototype.serialize = function (docList, printer, onProcess) { var $ = Dom/* default.ShareInstance.$ */.ZP.ShareInstance.$; if (!(docList instanceof Array)) docList = [docList]; docList = docList.map(doc => { if (typeof doc === "string") { return { elt: $(doc) } } else if ((0,Dom/* isDomNode */.mV)(doc)) { return { elt: $(doc) } } else if (typeof doc === "object" && doc) { if (typeof doc.elt === "string") doc.elt = $(doc.elt); if (doc.elt && (0,Dom/* isDomNode */.mV)(doc.elt)) return doc; } else return null; }).filter(it => !!it); var sync = []; var processInfo = { state: 'RENDER_DOM', total: { all: 0, text: 0, image: 0 }, dom: { text: 0, image: 0 }, onProcess: () => { onProcess && onProcess(processInfo); } }; printer.processInfo = processInfo; var contentChildList = docList.map(doc => { var elt = doc.elt; return (0,Dom/* depthClone */.qE)(elt, (originElt, copyElt) => { copyElt.__idx__ = processInfo.total.all; copyElt.__origin__ = originElt; processInfo.total.all++; var parent, fontWeight, style; var done = false; if (originElt.nodeType === Node.TEXT_NODE) { processInfo.total.text++; sync.push(new Promise(rs => { setTimeout(() => { parent = originElt.parentElement; if (!copyElt.__fontWeight__) { style = getComputedStyle(parent); fontWeight = parseInt(style.getPropertyValue('font-weight'));//not support other style copyElt.__fontWeight__ = fontWeight; if (fontWeight <= 400) { copyElt.parentElement.style.setProperty('font-weight', 'normal'); } else if (fontWeight > 400) { copyElt.parentElement.style.setProperty('font-weight', 'bold'); } processInfo.dom.text++; } processInfo.dom.text++; rs(); }, 0) })); } else if (originElt.tagName && originElt.tagName.toLowerCase() === 'canvas') { copyElt.getContext('2d').drawImage(originElt, 0, 0); } else if (originElt.tagName === 'IMG' && !originElt.classList.contains('absol-attachhook') && originElt.src) { processInfo.total.image++; sync.push((0,XLoader/* isImageURLAllowCrossOrigin */.AU)(originElt.src).then(result => { var newElt; if (!result) { newElt = copyElt.cloneNode(); newElt.__idx__ = copyElt.__idx__; newElt.__origin__ = copyElt.__origin__; ; copyElt.parentElement.replaceChild(newElt, copyElt); return (0,XLoader/* loadToBlobURL */.t2)('https://absol.cf/crossdownload.php?file=' + encodeURIComponent(originElt.src)).then(url => newElt.src = url) .then(() => (0,Dom/* waitImageLoaded */.Lp)(newElt, 10000)) .then(() => { if (!done) { processInfo.dom.image++; processInfo.onProcess(); done = true; } }); } else { return (0,Dom/* waitImageLoaded */.Lp)(copyElt, 10000).then(() => { if (!done) { processInfo.dom.image++; processInfo.onProcess(); done = true; } }); } }, (err) => { console.error(err); if (!done) { processInfo.dom.image++; processInfo.onProcess(); done = true; } })); } else if (originElt.tagName === 'INPUT') { if (originElt.getAttribute('type') === 'text' || !originElt.getAttribute('type') || originElt.getAttribute('type') === 'number') { copyElt.value = originElt.value; } else if (originElt.getAttribute('type') === 'radio') { copyElt.setAttribute('name', (copyElt.getAttribute('name') || (0,stringGenerate.randomIdent)()) + '_for_print'); copyElt.checked = originElt.checked; } } }); }); var content = Dom/* default.ShareInstance._ */.ZP.ShareInstance._({ style: { width: 794 - 57 * 2 + 'px', //WIDTH: 1123 - 57*2 display: 'inline-block', overflow: 'visible' }, class: 'as-printer-content', child: contentChildList }); var scroller = Dom/* default.ShareInstance._ */.ZP.ShareInstance._({ class: 'as-printer', style: { 'text-size-adjust': 'none', '-webkit-text-size-adjust': 'none', '-moz-text-size-adjust': 'none', '-ms-text-size-adjust': 'none', position: 'fixed', top: '10px', bottom: '10px', left: '10px', overflow: 'scroll', width: '794px', // maxWidth: '90vw', background: 'white', // zIndex: 1000, opacity: '0', zIndex: '-100', visibility: 'hidden', pointerEvents: 'none' }, child: content }).addTo(document.body); sync.push(new Promise(rs => { setTimeout(rs, 50); })); return Promise.all(sync).then(() => { processInfo.state = "SERIALIZE"; processInfo.onProcess(); docList.forEach((doc, i) => { printer.O = Rectangle/* default.fromClientRect */.Z.fromClientRect(contentChildList[i].getBoundingClientRect()).A(); printer.addSubDocument(printer.O, doc.opt); this.accept(printer, contentChildList[i], new VarScope/* default */.Z(), []); }); }) .then(() => { scroller.remove(); processInfo.onProcess = noop/* default */.Z; return printer; }); }; /*** * * @param {PSHandler} handler * @returns {this} */ PrintSerializer.prototype.addHandler = function (handler) { this.handlers.unshift(handler); return this; }; /*** * * @param {PSHandler} handler * @param {string} bf * @returns {this} */ PrintSerializer.prototype.addHandlerBefore = function (handler, bf) { var idx = this.handlers.findIndex(value => value.id === bf); if (idx >= 0) { this.handlers.splice(idx, 0, handler); } return this; }; /*** * * @param {PSHandler} handler * @param {string} at * @returns {this} */ PrintSerializer.prototype.addHandlerAfter = function (handler, at) { var idx = this.handlers.findIndex(value => value.id === at); if (idx >= 0) { this.handlers.splice(idx + 1, 0, handler); } return this; }; /*** * * @param {Array<PSHandler>} handlers * @returns {this} */ PrintSerializer.prototype.addHandlers = function (handlers) { this.handlers.unshift.apply(this.handlers, handlers); return this; }; /*** * * @param {string} id * @returns {this} */ PrintSerializer.prototype.removeHandler = function (id) { var idx = this.handlers.findIndex(value => value.id === id); if (idx >= 0) { this.handlers.splice(idx, 1); } return this; }; /*** * * @param {string} id * @returns {PSHandler|null} */ PrintSerializer.prototype.getHandler = function (id) { var idx = this.handlers.findIndex(value => value.id === id); if (idx >= 0) { return this.handlers[idx]; } return null; }; /* harmony default export */ const Print_PrintSerializer = (PrintSerializer); // EXTERNAL MODULE: ./node_modules/absol/src/Color/Color.js var Color = __webpack_require__(257); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElement.js var AElement = __webpack_require__(7951); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Vec2.js var Vec2 = __webpack_require__(557); // EXTERNAL MODULE: ./node_modules/absol/src/JSMaker/generator.js var generator = __webpack_require__(2914); ;// CONCATENATED MODULE: ./node_modules/absol/src/Print/PaperPrinter.js var fontIdOf = fontName => { if (fontName.toLowerCase().indexOf('arial') >= 0) return 'arial'; if (fontName.toLowerCase().indexOf('times') >= 0) return 'times'; if (fontName === "Material Design Icons") return 'MDI_6_7_96'; return fontName; } var P2D = 72 / 96; var color2RGB255 = color => { try { color = Color/* default.parse */.Z.parse(color + ''); return color.rgba.slice(0, 3).map(x => x * 255 >> 0); } catch (e) { return null; } }; function PaperPrinter(opt) { this.opt = Object.assign((0,generator/* copyJSVariable */.Ew)(this.defaultOptions), opt); this.objects = []; this.processInfo = { state: "STAND_BY" }; this.subDocs = null; this.pdfDoc = null; this.pageFormat = null; this.computedPages = 0; this.sync = this.ready().then(() => { this.processInfo.state = 'READY'; }); } PaperPrinter.prototype.defaultOptions = { size: 'a4', margin: { top: 57, left: 57, bottom: 57, right: 57 }, footer: null, header: null, paddingEven: true, lastPagePaddingEven: false }; PaperPrinter.prototype.share = { jsPDFUrl: 'https://absol.cf/vendor/jspdf.umd.js', jsPDF: null, readySync: null, fonts: [ { url: 'https://absol.cf/vendor/fonts/arial.ttf', fileName: 'arial.ttf', name: 'arial', style: 'normal' }, { url: 'https://absol.cf/vendor/fonts/arialbd.ttf', fileName: 'arialbd.ttf', name: 'arial', style: 'bold' }, { url: 'https://absol.cf/vendor/fonts/ariali.ttf', fileName: 'ariali.ttf', name: 'arial', style: 'italic' }, { url: 'https://absol.cf/vendor/fonts/arialbi.ttf', fileName: 'arialbi.ttf', name: 'arial', style: 'bold_italic' }, { url: 'https://absol.cf/vendor/fonts/times.ttf', fileName: 'times.ttf', name: 'times', style: 'normal' }, { url: 'https://absol.cf/vendor/fonts/timesbd.ttf', fileName: 'timesbd.ttf', name: 'times', style: 'bold' }, { url: 'https://absol.cf/vendor/fonts/timesi.ttf', fileName: 'timesi.ttf', name: 'times', style: 'italic' }, { url: 'https://absol.cf/vendor/fonts/timesbi.ttf', fileName: 'timesbi.ttf', name: 'times', style: 'bold_italic' } ] }; PaperPrinter.prototype.ready = function () { var sync; if (!this.share.readySync) { sync = this.share.fonts.map((font) => { return fetch(font.url).then(res => res.blob()) .then(blob => { var reader = new window.FileReader(); return new Promise(rs => { reader.onload = function () { rs(this.result); } reader.readAsDataURL(blob); }) }) .then(b64Url => { var idx = b64Url.indexOf('base64,'); return b64Url.substring(idx + 'base64,'.length); }).then(b64 => { font.content = b64; }) }); if (window.jspdf) { this.share.jsPDF = window.jspdf.jsPDF; } else { sync.push((0,XLoader/* loadScript */.ve)(this.share.jsPDFUrl).then(() => { this.share.jsPDF = window.jspdf.jsPDF; })) } this.share.readySync = Promise.all(sync); } return this.share.readySync; }; /*** * * @param at * @param opt */ PaperPrinter.prototype.addSubDocument = function (at, opt) { this.objects.push({ type: 'sub_document', at: at, opt: opt }); }; /*** * * @param {string} text * @param {Vec2 | Rectangle} pos * @param {Object=}style */ PaperPrinter.prototype.text = function (text, pos, style) { this.objects.push({ type: 'text', pos: pos, text: text, style: style || {} }); return this; }; /*** * * @param {string} text * @param {Vec2} start * @param {Vec2} end * @param {Object=}style */ PaperPrinter.prototype.line = function (start, end, style) { this.objects.push({ type: 'line', start: start, end: end, style: style || {} }); return this; }; /*** * * @param {Vec2} at * @param {boolean=} paddingEven */ PaperPrinter.prototype.pageBreak = function (at, paddingEven) { this.objects.push({ type: 'page_break', at: at, paddingEven: !!paddingEven }); return this; }; /*** * * @param {Rectangle}rect * @param {Object=}style */ PaperPrinter.prototype.rect = function (rect, style) { this.objects.push({ type: 'rect', rect: rect, style: style || {} }); }; /*** * * @param {HTMLCanvasElement|AElement |Image} image * @param {Rectangle}rect * @param {Object=}style */ PaperPrinter.prototype.image = function (image, rect, style) { this.objects.push({ type: 'image', rect: rect, style: style || {}, image: image }); return this; }; PaperPrinter.prototype.boundOf = function (objectData) { return this.measures[objectData.type](objectData); }; PaperPrinter.prototype.computeObjects = function () { var objects = this.objects.slice(); if (!objects[0] || objects[0].type !== 'sub_document') { objects.unshift({ type: 'sub_document', at: Vec2/* default.ZERO */.Z.ZERO, }) } this.subDocs = objects.reduce((ac, obj) => { switch (obj.type) { case 'sub_document': ac.push({ objects: [obj] }); break; default: ac[ac.length - 1].objects.push(obj); break; } return ac; }, []); this.subDocs.forEach((doc, i) => { doc.objects.forEach((o, i) => { o.idx = i; o.bound = this.boundOf(o); }); var newDocCmd = doc.objects.shift(); doc.objects.sort((a, b) => { return a.bound.y - b.bound.y; }); doc.opt = Object.assign((0,generator/* copyJSVariable */.Ew)(this.opt), newDocCmd.opt || {}); doc.objects.unshift(newDocCmd); doc.startPage = i > 0 ? this.subDocs[i - 1].startPage + this.subDocs[i - 1].pages.length : this.computedPages; if (this.opt.paddingEven && doc.startPage % 2 > 0) doc.startPage++; var pageContentHeight = 1123 - doc.opt.margin.top - doc.opt.margin.bottom; doc.pages = doc.objects.reduce((ac, cr) => { var page = ac[ac.length - 1]; if (cr.bound.height > pageContentHeight) { page.objects.push(cr); } else { if (cr.bound.y + cr.bound.height - page.y > pageContentHeight || cr.type === 'page_break') { page = { y: cr.bound.y, objects: [cr] }; ac.push(page); } else { page.objects.push(cr); } } return ac; }, [{ objects: [], y: 0 }]); doc.pages.forEach(page => page.objects.sort((a, b) => a.idx - b.idx)); this.computedPages = doc.startPage + doc.pages.length; }); }; PaperPrinter.prototype.getDoc = function () { if (this.docSync) return this.docSync; this.docSync = this.sync.then(() => { if (this.pdfDoc) return this.pdfDoc; var jsPDF = jspdf.jsPDF; this.pdfDoc = new jsPDF({ orientation: 'p', unit: 'px', format: 'a4', putOnlyUsedFonts: true, floatPrecision: 16, dpi: 300, hotfixes: ["px_scaling"] }); this.share.fonts.forEach(font => { this.pdfDoc.addFileToVFS(font.fileName, font.content); this.pdfDoc.addFont(font.fileName, font.name, font.style); }); return this.pdfDoc; }); this.sync = this.docSync; return this.docSync; }; PaperPrinter.prototype.flush = function () { this.sync = this.getDoc().then(pdfDoc => { this.computeObjects(); var subDocs = this.subDocs; this.subDocs = null;//reset var onProcess = this.opt.onProcess; var processInfo = this.processInfo; processInfo.pdf = { all: subDocs.reduce((ac, sD) => ac + sD.objects.length, 0), done: 0 }; processInfo.onProcess = () => { onProcess && onProcess(processInfo); }; processInfo.state = 'RENDER_PDF'; return subDocs.reduce((sync, doc, i) => { return sync.then(() => { var startPage = doc.startPage; while (pdfDoc.getNumberOfPages() <= startPage) { pdfDoc.addPage(); } return doc.pages.reduce((docSync, page, i) => { return docSync.then(() => { if (pdfDoc.getNumberOfPages() <= startPage + i) { pdfDoc.addPage(); } pdfDoc.setPage(startPage + i + 1); page.O = new Vec2/* default */.Z(this.opt.margin.left, this.opt.margin.top - page.y); return page.objects.reduce((pageSync, obj) => { return pageSync.then(() => { var type = obj.type; var res = this.pdfHandlers[type](page, pdfDoc, obj); processInfo.pdf.done++; if (res && res.then) { res.then(() => processInfo.onProcess()) } return res; }); }, Promise.resolve()).then(() => { pdfDoc.setTextColor(0, 0, 0); pdfDoc.setFontSize(14 * P2D); pdfDoc.setFont('arial', 'normal'); pdfDoc.text((i + 1) + '/' + doc.pages.length, 794 - 25, 1123 - 25, { align: 'right' }); if (typeof doc.opt.footer === 'string') { pdfDoc.text(doc.opt.footer, 25, 1123 - 25, { align: 'left' }); } }); }) }, Promise.resolve()) .then(() => { if (this.opt.lastPagePaddingEven) { while (pdfDoc.getNumberOfPages() % 2 > 0) { pdfDoc.addPage(); } } }) }) }, Promise.resolve()); }); return this.sync; }; PaperPrinter.prototype.exportAsPDF = function () { return this.flush().then(() => this.pdfDoc); }; PaperPrinter.prototype.pdfHandlers = { text: function (context, doc, data) { var fontFamily = data.style.fontFamily; var lineHeight = data.style.lineHeight || 1.2; var color = color2RGB255(data.style.color) || [0, 0, 0]; doc.setTextColor(color[0], color[1], color[2]); var fontSize = data.style.fontSize || 14; var textPos = data.pos.A().add(context.O); doc.setLineHeightFactor(lineHeight); doc.setFontSize(fontSize * P2D); doc.setFont(fontIdOf(fontFamily), data.style.fontStyle); var style = { baseline: 'top', maxWidth: data.pos.width }; if (data.style.align) { //todo: check align style.align = { start: 'left', end: 'right', center: 'center' }[data.style.align] || 'left'; } doc.text(data.text, textPos.x, textPos.y + fontSize * (lineHeight - 1) / 2, style); }, rect: function (context, doc, data) { var fillColor = null; var strokeColor = null; var strokeWidth = data.style.strokeWidth || 1; var rounded = data.style.rounded; if (typeof rounded === "number") rounded = [rounded, rounded]; if (data.style.fill) { fillColor = color2RGB255(data.style.fill); } if (data.style.stroke) { strokeColor = color2RGB255(data.style.stroke); } if (fillColor) doc.setFillColor(fillColor[0], fillColor[1], fillColor[2]); if (strokeColor) { doc.setLineWidth(strokeWidth); doc.setDrawColor(strokeColor[0], strokeColor[1], strokeColor[2]); } var flat = 'F'; if (strokeColor && fillColor) flat = 'FD'; else if (strokeColor) flat = 'S'; else if (fillColor) flat = 'F'; else return; var O = context.O; var A = data.rect.A().add(O); if (rounded) { doc.roundedRect(A.x, A.y, data.rect.width, data.rect.height, rounded[0], rounded[1], flat); } else { doc.rect(A.x, A.y, data.rect.width, data.rect.height, flat); } }, line: function (context, doc, data) { var fillColor = null; var strokeColor = null; var strokeWidth = data.style.strokeWidth || 1; if (data.style.stroke) { strokeColor = color2RGB255(data.style.stroke); } if (strokeColor) { doc.setLineWidth(strokeWidth); doc.setDrawColor(strokeColor[0], strokeColor[1], strokeColor[2]); } var flat = 'S'; var O = context.O; var A = data.start.add(O); var B = data.end.add(O); doc.line(A.x, A.y, B.x, B.y, flat); }, image: function (context, doc, data) { var handleImage = image => { if (!image) return; var rect = data.rect.clone(); rect.x += context.O.x; rect.y += context.O.y; doc.addImage(image, 'PNG', rect.x, rect.y, rect.width, rect.height) } if (data.image.then) { return data.image.then(handleImage).catch(err => { }); } else return handleImage(data.image); }, page_break: function (context, doc, data) { }, sub_document: function (context, doc, data) { } }; PaperPrinter.prototype.measures = { sub_document: data => { return new Rectangle/* default */.Z(0, 0, 0, 0); }, rect: data => { return data.rect; }, text: data => { return data.pos; }, image: data => { return data.rect; }, line: data => { return Rectangle/* default.boundingPoints */.Z.boundingPoints([data.start, data.end]); }, page_break: data => { return new Rectangle/* default */.Z(0, data.at.y, 0, 0); } }; /* harmony default export */ const Print_PaperPrinter = (PaperPrinter); // EXTERNAL MODULE: ./node_modules/absol/src/Network/FileSaver.js var FileSaver = __webpack_require__(5447); // EXTERNAL MODULE: ./node_modules/absol/src/Print/pdf.js var pdf = __webpack_require__(9673); ;// CONCATENATED MODULE: ./node_modules/absol/src/Print/printer.js var ShareSerializer = new Print_PrintSerializer(); /*** * * @param elt * @param fileName * @param {function(processInfo):void=} onProcess * @returns {Promise<*>} */ /** * @type {((elt:AElement, fileName: string, onProcess: function(processInfo):void) => Promise ) & ((elt:AElement, opt: object, onProcess: function(processInfo):void) => Promise) } */ function downloadAsPDF(docList, arg2, onProcess) { var opt = { fileName: 'exports.pdf.js' }; if (typeof arg2 === 'string') opt.fileName = arg2; else Object.assign(opt, arg2); var $ = Dom/* default.ShareInstance.$ */.ZP.ShareInstance.$; if (!(docList instanceof Array)) docList = [docList]; docList = docList.map(doc => { if (typeof doc === "string") { return { elt: $(doc) } } else if ((0,Dom/* isDomNode */.mV)(doc)) { return { elt: $(doc) } } else if (typeof doc === "object" && doc) { if (typeof doc.elt === "string") doc.elt = $(doc.elt); if (doc.elt && (0,Dom/* isDomNode */.mV)(doc.elt)) return doc; } else return null; }).filter(it => !!it).map(doc => { var elt = docList[0]; if (elt.fmComponent) { if (!doc.opt) doc.opt = {}; if (!doc.opt.margin) { doc.opt.margin = { top: elt.fmComponent.style.paddingTop || 57, left: elt.fmComponent.style.paddingLeft || 57, bottom: elt.fmComponent.style.paddingBottom || 57, right: elt.fmComponent.style.paddingRight || 57 }; } } return doc; }); var serializer = ShareSerializer; opt.onProcess = (typeof onProcess === "function") ? onProcess : (function (){}); var printer = new Print_PaperPrinter(opt); return serializer.serialize(docList, printer, opt.onProcess) .then(printer => printer.exportAsPDF()) .then(doc => { (0,FileSaver.saveAs)(doc.output('blob'), opt.fileName); }); } /***/ }), /***/ 3224: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56); /********************************* * EXPRESSION */ var operatorOrder = { 'NOT': 4, '!': 4, '*': 5, '/': 5, 'MOD': 5, '%': 5, '+': 6, '-': 6, '<': 9, '>': 9, '<=': 9, '>=': 9, '==': 9, '===': 9, '!=': 9, 'AND': 14, '&&': 14, 'OR': 15, '||': 15, 'XOR': 15, } var elementRegexes = [ ['string', /("(?:[^"\\]|\\.)*?")|('(?:[^'\\]|\\.)*?')/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['skip', /([\s\r\n]+)|(\/\/[^\n]*)|(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)/], ['tsymbol', /(\.\.\.)|(===)/], ['dsymbol', /\+\+|--|==|!=|<=|>=|\|\||&&/], ['symbol', /[^\s_a-zA-Z0-9]/], ]; var rules = []; rules.push({ target: 'null', elements: ['_null'], toAST: function (parsedNode) { return { type: 'NullLiteral', } } }); rules.push({ target: 'ident', elements: ['.word'], toAST: function (parsedNode) { return { type: 'Identifier', name: parsedNode.children[0].content } } }); rules.push({ target: 'args_list', elements: ['exp'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); }, toASTChain: function (parsedNode) { return [(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode)]; } }); rules.push({ target: 'args_list', elements: ['args_list', '_,', 'exp'], longestOnly: true, ident: 'args_list_rec', toASTChain: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[0]).concat((0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2])); } }); rules.push({ target: 'function_callee', elements: ['ident'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'function_callee', elements: ['mem_exp'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }) rules.push({ target: 'function_call', elements: ['function_callee', '_(', 'args_list', '_)'], toAST: function (parsedNode) { return { type: 'CallExpression', arguments: parsedNode.children[2].rule.toASTChain(parsedNode.children[2]), callee: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) } } }); rules.push({ target: 'function_call', elements: ['function_callee', '_(', '_)'], toAST: function (parsedNode) { return { type: 'CallExpression', arguments: [], callee: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) }; } }); rules.push({ target: 'new_expression', elements: ['_new', 'function_call'], toAST: function (parsedNode) { var callAst = (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]) return { type: 'NewExpression', arguments: callAst.arguments, callee: callAst.callee } } }); rules.push({ target: 'exp', elements: ['new_expression'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['null'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['ident'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'number', elements: ['.number'], toAST: function (parsedNode) { return { type: 'NumericLiteral', value: parseFloat(parsedNode.children[0].content) } } }); rules.push({ target: 'string', elements: ['.string'], toAST: function (parsedNode) { var content = parsedNode.children[0].content; if (content[0] === "'") content = '"' + content.substring(1, content.length - 1).replace(/["]/g, '\\"') + '"'; return { type: 'StringLiteral', value: JSON.parse(content) } } }); rules.push({ target: 'boolean', elements: ['_true'], toAST: function (parsedNode) { return { type: 'BooleanLiteral', value: true }; } }); rules.push({ target: 'boolean', elements: ['_false'], toAST: function (parsedNode) { return { type: 'BooleanLiteral', value: false }; } }); rules.push({ target: 'exp', elements: ['number'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['string'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['boolean'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); ['+', '-', '*', '/', '%', '&&', '||', 'XOR', '==','===', '!=', '<', '>', '>=', '<='].forEach(function (op) { rules.push({ target: 'bin_op', elements: ['_' + op], toAST: function (parsedNode) { return { type: "BinaryOperator", content: op } } }); }); rules.push({ target: 'exp', elements: ['exp', 'bin_op', 'exp'], // longestOnly: true,//* error when parse return (...)... ident: 'bin_op_rec', toASTChain: function (parseNode) { var res = []; if (parseNode.children[0].rule === this) { res = res.concat(this.toASTChain(parseNode.children[0])); } else { res.push((0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parseNode.children[0])); } res.push(parseNode.children[1].children[0]); if (parseNode.children[2].rule === this) { res = res.concat(this.toASTChain(parseNode.children[2])); } else { res.push((0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parseNode.children[2])); } return res; }, toAST: function (parsedNode) { var chain = this.toASTChain(parsedNode); var stack = []; var item; var newNode; while (chain.length > 0) { item = chain.shift(); if (item.content in operatorOrder) { while (stack.length >= 3 && operatorOrder[stack[stack.length - 2].content] <= operatorOrder[item.content]) { newNode = { type: 'BinaryExpression' }; newNode.right = stack.pop(); newNode.operator = stack.pop(); newNode.left = stack.pop(); stack.push(newNode); } } stack.push(item); } while (stack.length >= 3) { newNode = { type: 'BinaryExpression' }; newNode.right = stack.pop(); newNode.operator = stack.pop(); newNode.left = stack.pop(); stack.push(newNode); } return stack.pop(); } }); rules.push({ target: 'condition_exp', elements: ['exp', '_?', 'exp', '_:', 'exp'], toAST: function (parsedNode) { return { type: 'ConditionalExpression', test: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), consequent: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]), alternate: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[4]) } } }); rules.push({ target: 'sequence_exp', elements: ['exp', '_,', 'exp'], toAST: function (parsedNode) { return { type: 'SequenceExpression', expressions: [(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2])] } } }); rules.push({ target: 'sequence_exp', elements: ['sequence_exp', '_,', 'exp'], toAST: function (parsedNode) { var ast = (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); ast.expressions.push((0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2])); return ast; } }); rules.push({ target: 'exp', elements: ['condition_exp'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'exp', elements: ['function_call'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'bracket_group', elements: ['_(', 'exp', '_)'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]); } }); rules.push({ target: 'exp', elements: ['bracket_group'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); // rules.push({ // target: 'exp', // elements: ['_(', 'exp', '_)'], // toAST: function (parsedNode) { // return parsedNodeToAST(parsedNode.children[1]); // } // }); ['+', '-', '!'].forEach(function (op) { ['number', 'bracket_group', 'ident', 'function_call', 'mem_exp', 'unary_exp'].forEach(function (arg) { rules.push({ target: 'unary_exp', elements: ['_' + op, arg], toAST: function (parsedNode) { return { type: 'UnaryExpression', argument: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), operator: { type: 'UnaryOperator', content: op } } } }); }); }); rules.push({ target: 'exp', elements: ['unary_exp'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'mem_exp', elements: ['ident', '_.', 'ident'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['ident', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['new_expression', '_.', 'ident'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['new_expression', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['mem_exp', '_.', 'ident'], longestOnly: true, ident: 'mem_exp_ident_rev', toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['mem_exp', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['bracket_group', '_.', 'ident'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: false, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'mem_exp', elements: ['bracket_group', '_[', 'exp', '_]'], toAST: function (parsedNode) { return { type: "MemberExpression", computed: true, object: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), property: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'exp', elements: ['mem_exp'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); /**********************************************************************************************************************/ rules.push({ target: 'object_exp', elements: ['_{', '_}'], toAST: function (parsedNode) { return { type: 'ObjectExpression', properties: [] } } }); rules.push({ target: 'object_exp', elements: ['_{', 'object_property_list', '_}'], toAST: function (parsedNode) { return { type: 'ObjectExpression', properties: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[1]) } } }); rules.push({ target: 'exp', elements: ['object_exp'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'object_property', elements: ['ident', '_:', 'exp'], toAST: function (parsedNode) { return { type: 'ObjectProperty', key: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), value: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) }; } }); rules.push({ target: 'object_property', elements: ['string', '_:', 'exp'], toAST: function (parsedNode) { return { type: 'ObjectProperty', key: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), value: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) }; } }); rules.push({ target: 'object_property_list', elements: ['object_property'], toASTChain: function (parsedNode) { return [(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0])]; } }); rules.push({ target: 'object_property_list', elements: ['object_property_list', '_,', 'object_property'], longestOnly: true, ident: 'object_property_list_rec', toASTChain: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[0]).concat([(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2])]); } }); /**********************************************************************************************************************/ rules.push({ target: 'exp', elements: ['array_exp'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'array_exp', elements: ['_[', '_]'], toAST: function (parsedNode) { return { type: "ArrayExpression", elements: [] }; } }); rules.push({ target: 'array_exp', elements: ['_[', 'array_item_list', '_]'], toAST: function (parsedNode) { return { type: "ArrayExpression", elements: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[1]) }; } }); rules.push({ target: 'array_item_list', elements: ['exp'], toASTChain: function (parsedNode) { return [(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0])]; } }); rules.push({ target: 'array_item_list', elements: ['array_item_list', '_,', 'exp'], longestOnly: true, ident: 'array_item_list_rec', toASTChain: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[0]).concat([(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2])]); } }); /**********************************************************************************************************************/ /**************FOR QUICK PARSING***********************/ rules.push({ target: 'exp', elements: ['.constance'], toAST: function (parsedNode) { return parsedNode.children[0] }, toASTChain: function (parsedNode) { return [parsedNode.children[0]]; } }); /***********************************************************************************************************************/ rules.push({ target: 'generic_type', elements: ['ident'], toAST: function (parsedNode) { return { type: 'GenericType', id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) } } }); rules.push({ target: 'linked_type', elements: ['_linktype', 'exp'], toAST: function (parsedNode) { return { type: 'LinkedType', address: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]) } } }); rules.push({ target: 'var_type', elements: ['generic_type'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) } }); rules.push({ target: 'var_type', elements: ['linked_type'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) } }); /* rules.push({ target: 'var_type', elements: ['ident', '<', 'var_type', '>'] }); rules.push({ target: 'var_type', elements: ['ident', '<', '.string', '>'] }); */ rules.push({ target: 'type_annotation', elements: ['_:', 'var_type'], toAST: function (parsedNode) { return { type: 'TypeAnnotation', typeAnnotation: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]) } } }); /**********************************************************************************************************************/ /* @decrepted ast rules.push({ target: 'variable_declaration', elements: ['_var', 'ident', 'type_annotation', '_;'], toAST: function (parsedNode) { return { type: 'VariableDeclaration', id: parsedNodeToAST(parsedNode.children[1]), typeAnnotation: parsedNodeToAST(parsedNode.children[2]) } } }); rules.push({ target: 'variable_declaration', elements: ['_var', 'ident', '_;'], toAST: function (parsedNode) { return { type: 'VariableDeclaration', id: parsedNodeToAST(parsedNode.children[1]), } } }); rules.push({ target: 'variable_declaration', elements: ['_var', 'ident', '_=', 'exp', '_;'], toAST: function (parsedNode) { return { type: 'VariableDeclaration', id: parsedNodeToAST(parsedNode.children[1]), init: parsedNodeToAST(parsedNode.children[3]) } } }); rules.push({ target: 'variable_declaration', elements: ['_var', 'ident', 'type_annotation', '_=', 'exp', '_;'], toAST: function (parsedNode) { return { type: 'VariableDeclaration', id: parsedNodeToAST(parsedNode.children[1]), typeAnnotation: parsedNodeToAST(parsedNode.children[2]), init: parsedNodeToAST(parsedNode.children[4]), kind: 'var' } } }); */ rules.push({ target: 'variable_declarator', elements: ['ident', '_=', 'exp'], toAST: function (parsedNode) { return { type: 'VariableDeclarator', id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), init: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) } } }); rules.push({ target: 'variable_declarator', elements: ['ident', 'type_annotation' ,'_=', 'exp'], toAST: function (parsedNode) { return { type: 'VariableDeclarator', id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), typeAnnotation: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), init: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[3]) } } }); rules.push({ target: 'variable_declarator', elements: ['ident'], toAST: function (parsedNode) { return { type: 'VariableDeclarator', id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), init: null } } }); rules.push({ target: 'variable_declarator', elements: ['ident', 'type_annotation'], toAST: function (parsedNode) { return { type: 'VariableDeclarator', id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), typeAnnotation: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), init: null } } }); rules.push({ target: 'variable_declarator_sequence', elements: ['variable_declarator'], toASTChain: function (parsedNode) { return [(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0])]; } }); rules.push({ target: 'variable_declarator_sequence', elements: ['variable_declarator_sequence', '_,', 'variable_declarator'], toASTChain: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[0]).concat([(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2])]); } }); rules.push({ target: 'variable_declaration', elements: ['_var', 'variable_declarator_sequence', '_;'], toAST: function (parsedNode) { return { type: 'VariableDeclaration', declarations: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[1]), kind: 'var' } } }); //todo rules.push({ target: 'expression_statement', elements: ['function_call', '_;'], toAST: function (parsedNode) { return { type: 'ExpressionStatement', expression: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) } } }); /**********************************************************************************************************************/ rules.push({ target: 'assign_expression', elements: ['ident', '_=', 'exp'], toAST: function (parseNode) { return { type: 'AssignmentExpression', left: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parseNode.children[0]), right: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parseNode.children[2]) } } }); rules.push({ target: 'assign_expression', elements: ['mem_exp', '_=', 'exp'], toAST: function (parseNode) { return { type: 'AssignmentExpression', left: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parseNode.children[0]), right: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parseNode.children[2]) } } }); rules.push({ target: 'expression_statement', elements: ['assign_expression', '_;'], toAST: function (parsedNode) { return { type: 'ExpressionStatement', expression: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) } } }); /**********************************************************************************************************************/ rules.push({ target: 'if_statement_1', elements: ['_if', '_(', 'exp', '_)', 'statement'], toAST: function (parsedNode) { return { type: 'IfStatement', test: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]), consequent: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[4]) } } }); rules.push({ target: 'if_statement_2', elements: ['if_statement_1', '_else', 'statement'], toAST: function (parsedNode) { var ast = (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); ast.alternate = (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]); return ast; } }); rules.push({ target: 'statement', elements: ['if_statement_1'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement', elements: ['if_statement_2'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); /**********************************************************************************************************************/ rules.push({ target: 'for_count_statement', elements: ['_for', 'ident', '_from', 'exp', '_to', 'exp', 'block_statement'], toAST: function (parsedNode) { return { type: 'ForCountStatement', for: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), from: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[3]), to: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[5]), body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[6]) }; } }); rules.push({ target: 'for_of_statement', elements: ['_for', 'ident', '_of', 'exp', 'block_statement'], toAST: function (parsedNode) { return { type: 'ForOfStatement', for: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), of: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[3]), body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[4]) }; } }); rules.push({ target: 'for_in_statement', elements: ['_for', 'ident', '_in', 'exp', 'block_statement'], toAST: function (parsedNode) { return { type: 'ForInStatement', for: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), in: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[3]), body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[4]) }; } }); rules.push({ target: 'iterable_range', elements: ['iterable_range_limit', '_...', 'iterable_range_limit'] }); rules.push({ target: 'iterable_range_limit', elements: ['.number'] }); rules.push({ target: 'iterable_range_limit', elements: ['ident'] }); /**************************************************************************************/ rules.push({ target: 'for_statement', elements: ['_for', 'bracket_group', 'statement'], }) /**********************************************************************************************************************/ rules.push({ target: 'while_statement', elements: ['_while', 'bracket_group', 'statement'], toAST: function (parsedNode) { return { type: 'WhileStatement', test: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2]) }; } }); rules.push({ target: 'statement', elements: ['while_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); /**********************************************************************************************************************/ rules.push({ target: 'do_while_statement', elements: ['_do', 'statement', '_while', 'bracket_group', '_;'], toAST: function (parsedNode) { return { type: 'DoWhileStatement', test: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[3]), body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]) }; } }); rules.push({ target: 'statement', elements: ['do_while_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); /**********************************************************************************************************************/ rules.push({ target: 'break_statement', elements: ['_break', '_;'], toAST: function (parsedNode) { return { type: 'BreakStatement' }; } }); rules.push({ target: 'statement', elements: ['break_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); /**********************************************************************************************************************/ rules.push({ target: 'block_statement', elements: ['_{', '_}'], toAST: function (parsedNode) { return { type: 'BlockStatement', body: [] } } }); rules.push({ target: 'block_statement', elements: ['_{', 'statement_arr', '_}'], toAST: function (parsedNode) { return { type: 'BlockStatement', body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[1]) }; } }); rules.push({ target: 'statement', elements: ['variable_declaration'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement', elements: ['block_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement', elements: ['expression_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement', elements: ['for_count_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement', elements: ['for_in_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement', elements: ['for_of_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement', elements: ['assign_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'statement_arr', elements: ['statement'], toASTChain: function (parsedNode) { return [(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0])]; } }); rules.push({ target: 'statement_arr', elements: ['statement_arr', 'statement'], longestOnly: true, toASTChain: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[0]).concat([(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1])]); } }); /**********************************************************************************************************************/ rules.push({ target: 'function_arguments_declaration', elements: ['_(', '_)'], toASTChain: function (parsedNode) { return []; } }); rules.push({ target: 'function_arguments_declaration', elements: ['_(', 'argument_declaration_list', '_)'], toASTChain: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[1]); } }); rules.push({ target: 'argument_declaration', elements: ['ident', 'type_annotation'], toAST: function (parsedNode) { return { type: "ArgumentDeclaration", id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]), typeAnnotation: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]) } } }); rules.push({ target: 'argument_declaration', elements: ['ident'], toAST: function (parsedNode) { return { type: "ArgumentDeclaration", id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]) } } }); rules.push({ target: 'argument_declaration_list', elements: ['argument_declaration'], toASTChain: function (parsedNode) { return [(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0])] } }); rules.push({ target: 'argument_declaration_list', elements: ['argument_declaration_list', '_,', 'argument_declaration'], toASTChain: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[0]).concat([(0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[2])]) } }); /**********************************************************************************************************************/ rules.push({ target: 'return_statement', elements: ['_return', 'exp', '_;'], toAST: function (parsedNode) { return { type: "ReturnStatement", argument: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]) }; } }); rules.push({ target: 'return_statement', elements: ['_return', '_;'], toAST: function (parsedNode) { return { type: "ReturnStatement" }; } }); rules.push({ target: 'statement', elements: ['return_statement'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); /**********************************************************************************************************************/ rules.push({ target: 'function_declare', elements: ['_function', 'ident', 'function_arguments_declaration', 'type_annotation', 'block_statement'], toAST: function (parsedNode) { return { type: 'FunctionDeclaration', id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), params: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[2]), returnType: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[3]), body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[4]) }; } }); rules.push({ target: 'function_declare', elements: ['_function', 'ident', 'function_arguments_declaration', 'block_statement'], toAST: function (parsedNode) { return { type: 'FunctionDeclaration', id: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[1]), params: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[2]), body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[3]) }; } }); rules.push({ target: 'statement', elements: ['function_declare'], toAST: function (parsedNode) { return (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToAST */ .Hg)(parsedNode.children[0]); } }); rules.push({ target: 'program', elements: ['statement_arr'], toAST: function (parsedNode) { return { type: "Program", body: (0,_Pharse_DPParseInstance__WEBPACK_IMPORTED_MODULE_0__/* .parsedNodeToASTChain */ .xI)(parsedNode.children[0]) } } }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ elementRegexes: elementRegexes, rules: rules, operatorOrder: operatorOrder }); /***/ }), /***/ 6382: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "wrapToLines": () => (/* binding */ wrapToLines), /* harmony export */ "nonAccentVietnamese": () => (/* binding */ nonAccentVietnamese), /* harmony export */ "pascalCaseToCamelCase": () => (/* binding */ pascalCaseToCamelCase), /* harmony export */ "kebabCaseToCamelCase": () => (/* binding */ kebabCaseToCamelCase), /* harmony export */ "underScoreToCamelCase": () => (/* binding */ underScoreToCamelCase), /* harmony export */ "camelCaseToPascalCase": () => (/* binding */ camelCaseToPascalCase), /* harmony export */ "underScoreToPascalCase": () => (/* binding */ underScoreToPascalCase), /* harmony export */ "kebabCaseToPascalCase": () => (/* binding */ kebabCaseToPascalCase), /* harmony export */ "pascalCaseToKebabCase": () => (/* binding */ pascalCaseToKebabCase), /* harmony export */ "camelCaseToKebabCase": () => (/* binding */ camelCaseToKebabCase), /* harmony export */ "underScoreToKebabCase": () => (/* binding */ underScoreToKebabCase), /* harmony export */ "pascalCaseToUnderScore": () => (/* binding */ pascalCaseToUnderScore), /* harmony export */ "pascalCaseToUpperUnderScore": () => (/* binding */ pascalCaseToUpperUnderScore), /* harmony export */ "camelCaseToUnderScore": () => (/* binding */ camelCaseToUnderScore), /* harmony export */ "camelCaseToUpperUnderScore": () => (/* binding */ camelCaseToUpperUnderScore), /* harmony export */ "kebabCaseToUnderScore": () => (/* binding */ kebabCaseToUnderScore), /* harmony export */ "kebabCaseToUpperUnderScore": () => (/* binding */ kebabCaseToUpperUnderScore), /* harmony export */ "normalizeIdent": () => (/* binding */ normalizeIdent), /* harmony export */ "breakTextToLineByLength": () => (/* binding */ breakTextToLineByLength) /* harmony export */ }); /** * * @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() }); } /*** * * @param {String} text */ function normalizeIdent(text, opt) { var spaces = '_'; if (opt && ('spaces' in opt)) { spaces = opt.spaces || ''; } var symbols = '_'; if (opt && ('symbols' in opt)) { symbols = opt.symbols || ''; } var startsWithDigit = false; if (opt && ('startsWithDigit' in opt)) { startsWithDigit = opt.startsWithDigit || false; } var res = nonAccentVietnamese(text); if (typeof spaces === "string") { res = res.replace(/\s+/g, spaces); } if (typeof symbols === 'string') { if (spaces === '_') res = res.replace(/[^a-zA-Z0-9_$]+/g, symbols); else if (spaces === '-') { res = res.replace(/[^a-zA-Z0-9_$\-]+/g, symbols); } } if (spaces) { res = res.replace(new RegExp(`([${spaces}]+)`, 'g'), spaces); } if (symbols && symbols !== spaces) { res = res.replace(new RegExp(`([${symbols}]+)`, 'g'), spaces); } if (spaces) { res = res.replace(new RegExp(`([${spaces}]+$)|(^[${spaces}]+)`, 'g'), ''); } if (symbols && symbols !== spaces) { res = res.replace(new RegExp(`([${symbols}]+$)|(^[${symbols}]+$)`, 'g'), ''); } if (!startsWithDigit && res.match(/^[0-9]/)) { res = '$' + res; } return res; } function breakTextToLineByLength(text, limitLength) { limitLength = limitLength || 256; var lines = text.split(/\n/); var newLines = []; var breakLine = line => { var testLine = nonAccentVietnamese(line).toLowerCase(); var wordRgx = /(\(?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)\)?)|([()_a-z0-9,.]+)|([^\sa-z0-9,._()])/g; var poss = []; var matched = wordRgx.exec(testLine); while (matched) { poss.push(matched.index); matched = wordRgx.exec(testLine); } if (poss[0] !== 0) poss.unshift(0); poss.push(testLine.length); poss.push(testLine.length); var start = poss[0] || 0; var end, pend = start; var newLine; var chars; for (var i = 1; i < poss.length; ++i) { end = poss[i]; if (end - start > limitLength || i + 1 === poss.length) { newLine = line.substring(start, pend).trimEnd(); if (newLine.length > limitLength) { chars = newLine.split(''); while (chars.length > 0) { newLine = chars.splice(0, limitLength).join(''); newLines.push(newLine); } } else if (newLine.length > 0) { newLines.push(newLine); } start = pend; } pend = end; } }; lines.forEach(line => breakLine(line)); return newLines.join('\n'); } // window.t = `Sử dụng công thức tính: (Luong_Gio OT150 0.5) + (Luong_Gio OT200 1.0) + (Luong_Gio OT210 1.1) + (Luong_Gio OT270 1.7) + (Luong_Gio OT300 2.0)`; // console.log(breakTextToLineByLength(t, 50)) String.nonAccentVietnamese = nonAccentVietnamese; String.prototype.nonAccentVietnamese = function () { return String.nonAccentVietnamese(this); }; /***/ }), /***/ 1334: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "identCharacters": () => (/* binding */ identCharacters), /* harmony export */ "randomIdent": () => (/* binding */ randomIdent), /* harmony export */ "parallelMatch": () => (/* binding */ parallelMatch), /* harmony export */ "ipsumLoremWord": () => (/* binding */ ipsumLoremWord), /* harmony export */ "randomWord": () => (/* binding */ randomWord), /* harmony export */ "randomPhrase": () => (/* binding */ randomPhrase), /* harmony export */ "randomSentence": () => (/* binding */ randomSentence), /* harmony export */ "randomParagraph": () => (/* binding */ randomParagraph) /* harmony export */ }); /* harmony import */ var _Math_random__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7848); 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 = (0,_Math_random__WEBPACK_IMPORTED_MODULE_0__/* .randomInt */ .Iy)(0, arr.length - 1); return arr[idx]; } /** * @param {number}arg1 * @param {number=}arg2 * @also * @param {number} arg1 * @returns {string} */ function randomPhrase(arg1, arg2) { var limitLength = arguments[arguments.length - 1]; var minLength = 1; if (arguments.length > 1) minLength = arguments[0]; if (!limitLength) limitLength = 50; var length = Math.ceil((Math.random() * (limitLength - minLength) + minLength) / 7); return new Array(length) .fill(null) .map(randomWord) .reduce(function (ac, cr) { if (ac.length + cr.length < limitLength || ac.length < minLength) { 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(function (value) { return randomPhrase(value); }) .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(limitLength) { if (!limitLength) limitLength = 1000; var length = Math.ceil(Math.random() * limitLength / 200); return new Array(length).fill(null) .map(function (value) { return randomSentence(value); }) .reduce(function (ac, cr) { if (ac.length + cr.length < limitLength) { ac.parts.push(cr); } return ac; }, { parts: [], length: 0 }).parts .join(' '); } /***/ }), /***/ 991: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "wordLike": () => (/* binding */ wordLike), /* harmony export */ "wordsMatch": () => (/* binding */ wordsMatch), /* harmony export */ "phraseMatch": () => (/* binding */ phraseMatch), /* harmony export */ "phraseLike": () => (/* binding */ phraseLike), /* harmony export */ "exportStringMatchingCode": () => (/* binding */ exportStringMatchingCode) /* harmony export */ }); /* harmony import */ var _Math_int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7988); /** * * @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)] / (0,_Math_int__WEBPACK_IMPORTED_MODULE_0__.harmonicMean)(m, n); } /** * * @param {Array<String>} sq1 * @param {Array<String>} sq2 * @param {number=} matchWordPow */ 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((0,_Math_int__WEBPACK_IMPORTED_MODULE_0__.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((0,_Math_int__WEBPACK_IMPORTED_MODULE_0__.harmonicMean)(m, n), 1); } function exportStringMatchingCode() { return [_Math_int__WEBPACK_IMPORTED_MODULE_0__.harmonicMean, phraseLike, phraseMatch, wordLike, wordsMatch].map(f => f + '').join('\n') +'\nvar _stringFormat = {harmonicMean, phraseLike, wordLike, wordsMatch};'; } /***/ }), /***/ 2973: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "$": () => (/* binding */ stringHashCode) /* harmony export */ }); function stringHashCode(st) { var hash = 0, i, chr; if (st.length === 0) return hash; for (i = 0; i < st.length; i++) { chr = st.charCodeAt(i); hash = ((hash << 5) - hash) + chr; hash |= 0; // Convert to 32bit integer } return hash; } function crc16($str) { var $CRC16_Lookup = [ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 ] var $crc16 = 0xFFFF; // the CRC var $len = $str.length; var $t; for (var $i = 0; $i < $len; $i++) { $t = ($crc16 >> 8) ^ $str.charCodeAt($i); // High byte Xor Message Byte to get index $crc16 = (($crc16 << 8) & 0xffff) ^ $CRC16_Lookup[$t]; // Update the CRC from table } $crc16 = $crc16.toString(16).toUpperCase(); return $crc16; } /***/ }), /***/ 7807: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "MILLIS_PER_DAY": () => (/* binding */ MILLIS_PER_DAY), /* harmony export */ "MILLIS_PER_HOUR": () => (/* binding */ MILLIS_PER_HOUR), /* harmony export */ "MILLIS_PER_MINUTE": () => (/* binding */ MILLIS_PER_MINUTE), /* harmony export */ "getDefaultFirstDayOfWeek": () => (/* binding */ getDefaultFirstDayOfWeek), /* harmony export */ "setDefaultFirstDayOfWeek": () => (/* binding */ setDefaultFirstDayOfWeek), /* harmony export */ "ddmmyyyy": () => (/* binding */ ddmmyyyy), /* harmony export */ "language2LocalDateFormat": () => (/* binding */ language2LocalDateFormat), /* harmony export */ "dateFormat2LocationList": () => (/* binding */ dateFormat2LocationList), /* harmony export */ "dateFormatList": () => (/* binding */ dateFormatList), /* harmony export */ "yyymmdd": () => (/* binding */ yyymmdd), /* harmony export */ "dayNames": () => (/* binding */ dayNames), /* harmony export */ "shortDayNames": () => (/* binding */ shortDayNames), /* harmony export */ "monthNames": () => (/* binding */ monthNames), /* harmony export */ "shortMonthNames": () => (/* binding */ shortMonthNames), /* harmony export */ "formatTokenRegex": () => (/* binding */ formatTokenRegex), /* harmony export */ "DATE_TIME_TOKEN_RGX": () => (/* binding */ DATE_TIME_TOKEN_RGX), /* harmony export */ "formatDateString": () => (/* binding */ formatDateString), /* harmony export */ "LOCAL_DATE_FORMAT": () => (/* binding */ LOCAL_DATE_FORMAT), /* harmony export */ "LOCAL_DATE_TIME_FORMAT": () => (/* binding */ LOCAL_DATE_TIME_FORMAT), /* harmony export */ "formartDateString": () => (/* binding */ formartDateString), /* harmony export */ "parseDateString": () => (/* binding */ parseDateString), /* harmony export */ "addDate": () => (/* binding */ addDate), /* harmony export */ "prevDate": () => (/* binding */ prevDate), /* harmony export */ "nextDate": () => (/* binding */ nextDate), /* harmony export */ "weekIndexOf": () => (/* binding */ weekIndexOf), /* harmony export */ "weekInYear": () => (/* binding */ weekInYear), /* harmony export */ "beginOfSecond": () => (/* binding */ beginOfSecond), /* harmony export */ "beginOfMinute": () => (/* binding */ beginOfMinute), /* harmony export */ "beginOfDay": () => (/* binding */ beginOfDay), /* harmony export */ "beginOfHour": () => (/* binding */ beginOfHour), /* harmony export */ "beginOfWeek": () => (/* binding */ beginOfWeek), /* harmony export */ "addWeek": () => (/* binding */ addWeek), /* harmony export */ "nextWeek": () => (/* binding */ nextWeek), /* harmony export */ "prevWeek": () => (/* binding */ prevWeek), /* harmony export */ "beginOfMonth": () => (/* binding */ beginOfMonth), /* harmony export */ "beginOfQuarter": () => (/* binding */ beginOfQuarter), /* harmony export */ "addQuarter": () => (/* binding */ addQuarter), /* harmony export */ "nextQuarter": () => (/* binding */ nextQuarter), /* harmony export */ "prevQuarter": () => (/* binding */ prevQuarter), /* harmony export */ "beginOfYear": () => (/* binding */ beginOfYear), /* harmony export */ "addYear": () => (/* binding */ addYear), /* harmony export */ "nextYear": () => (/* binding */ nextYear), /* harmony export */ "prevYear": () => (/* binding */ prevYear), /* harmony export */ "compareDate": () => (/* binding */ compareDate), /* harmony export */ "compareMonth": () => (/* binding */ compareMonth), /* harmony export */ "compareYear": () => (/* binding */ compareYear), /* harmony export */ "addMonth": () => (/* binding */ addMonth), /* harmony export */ "addMonthKeepDate": () => (/* binding */ addMonthKeepDate), /* harmony export */ "addMonthKeepDateTime": () => (/* binding */ addMonthKeepDateTime), /* harmony export */ "nextMonth": () => (/* binding */ nextMonth), /* harmony export */ "prevMonth": () => (/* binding */ prevMonth), /* harmony export */ "monthOfTwoDate": () => (/* binding */ monthOfTwoDate), /* harmony export */ "daysInMonth": () => (/* binding */ daysInMonth), /* harmony export */ "parseDateTime": () => (/* binding */ parseDateTime), /* harmony export */ "formatDateTime": () => (/* binding */ formatDateTime), /* harmony export */ "implicitDate": () => (/* binding */ implicitDate), /* harmony export */ "formatTimeRange24": () => (/* binding */ formatTimeRange24), /* harmony export */ "getTimeRangeFromStep": () => (/* binding */ getTimeRangeFromStep) /* harmony export */ }); /* harmony import */ var _String_stringFormat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6382); /* harmony import */ var _Math_int__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7988); var MILLIS_PER_DAY = 24 * 3600000; var MILLIS_PER_HOUR = 3600000; var MILLIS_PER_MINUTE = 60000; var _default_first_day_of_week = 1; function getDefaultFirstDayOfWeek() { return _default_first_day_of_week; } function setDefaultFirstDayOfWeek(value) { if (isNaN(value) || !isFinite(value)) return; value = Math.floor(value) % 7; _default_first_day_of_week = value; } /** * * @param {Date} date * @returns {String} */ function ddmmyyyy(date) { return formatDateTime(date, 'dd/MM/yyyy'); } var language2LocalDateFormat = { "af-ZA": "yyyy/mm/dd", "am-ET": "d/m/yyyy", "ar-AE": "dd/mm/yyyy", "ar-BH": "dd/mm/yyyy", "ar-DZ": "dd-mm-yyyy", "ar-EG": "dd/mm/yyyy", "ar-IQ": "dd/mm/yyyy", "ar-JO": "dd/mm/yyyy", "ar-KW": "dd/mm/yyyy", "ar-LB": "dd/mm/yyyy", "ar-LY": "dd/mm/yyyy", "ar-MA": "dd-mm-yyyy", "ar-OM": "dd/mm/yyyy", "ar-QA": "dd/mm/yyyy", "ar-SA": "dd/mm/yy", "ar-SY": "dd/mm/yyyy", "ar-TN": "dd-mm-yyyy", "ar-YE": "dd/mm/yyyy", "arn-CL": "dd-mm-yyyy", "as-IN": "dd-mm-yyyy", "az-Cyrl-AZ": "dd.mm.yyyy", "az-Latn-AZ": "dd.mm.yyyy", "ba-RU": "dd.mm.yy", "be-BY": "dd.mm.yyyy", "bg-BG": "dd.m.yyyy", "bn-BD": "dd-mm-yy", "bn-IN": "dd-mm-yy", "bo-CN": "yyyy/m/d", "br-FR": "dd/mm/yyyy", "bs-Cyrl-BA": "d.m.yyyy", "bs-Latn-BA": "d.m.yyyy", "ca-ES": "dd/mm/yyyy", "co-FR": "dd/mm/yyyy", "cs-CZ": "d.m.yyyy", "cy-GB": "dd/mm/yyyy", "da-DK": "dd-mm-yyyy", "de-AT": "dd.mm.yyyy", "de-CH": "dd.mm.yyyy", "de-DE": "dd.mm.yyyy", "de-LI": "dd.mm.yyyy", "de-LU": "dd.mm.yyyy", "dsb-DE": "d. m. yyyy", "dv-MV": "dd/mm/yy", "el-GR": "d/m/yyyy", "en-029": "mm/dd/yyyy", "en-AU": "d/mm/yyyy", "en-BZ": "dd/mm/yyyy", "en-CA": "dd/mm/yyyy", "en-GB": "dd/mm/yyyy", "en-IE": "dd/mm/yyyy", "en-IN": "dd-mm-yyyy", "en-JM": "dd/mm/yyyy", "en-MY": "d/m/yyyy", "en-NZ": "d/mm/yyyy", "en-PH": "m/d/yyyy", "en-SG": "d/m/yyyy", "en-TT": "dd/mm/yyyy", "en-US": "m/d/yyyy", "en-ZA": "yyyy/mm/dd", "en-ZW": "m/d/yyyy", "es-AR": "dd/mm/yyyy", "es-BO": "dd/mm/yyyy", "es-CL": "dd-mm-yyyy", "es-CO": "dd/mm/yyyy", "es-CR": "dd/mm/yyyy", "es-DO": "dd/mm/yyyy", "es-EC": "dd/mm/yyyy", "es-ES": "dd/mm/yyyy", "es-GT": "dd/mm/yyyy", "es-HN": "dd/mm/yyyy", "es-MX": "dd/mm/yyyy", "es-NI": "dd/mm/yyyy", "es-PA": "mm/dd/yyyy", "es-PE": "dd/mm/yyyy", "es-PR": "dd/mm/yyyy", "es-PY": "dd/mm/yyyy", "es-SV": "dd/mm/yyyy", "es-US": "m/d/yyyy", "es-UY": "dd/mm/yyyy", "es-VE": "dd/mm/yyyy", "et-EE": "d.mm.yyyy", "eu-ES": "yyyy/mm/dd", "fa-IR": "mm/dd/yyyy", "fi-FI": "d.m.yyyy", "fil-PH": "m/d/yyyy", "fo-FO": "dd-mm-yyyy", "fr-BE": "d/mm/yyyy", "fr-CA": "yyyy-mm-dd", "fr-CH": "dd.mm.yyyy", "fr-FR": "dd/mm/yyyy", "fr-LU": "dd/mm/yyyy", "fr-MC": "dd/mm/yyyy", "fy-NL": "d-m-yyyy", "ga-IE": "dd/mm/yyyy", "gd-GB": "dd/mm/yyyy", "gl-ES": "dd/mm/yy", "gsw-FR": "dd/mm/yyyy", "gu-IN": "dd-mm-yy", "ha-Latn-NG": "d/m/yyyy", "he-IL": "dd/mm/yyyy", "hi-IN": "dd-mm-yyyy", "hr-BA": "d.m.yyyy.", "hr-HR": "d.m.yyyy", "hsb-DE": "d. m. yyyy", "hu-HU": "yyyy. mm. dd.", "hy-AM": "dd.mm.yyyy", "id-ID": "dd/mm/yyyy", "ig-NG": "d/m/yyyy", "ii-CN": "yyyy/m/d", "is-IS": "d.m.yyyy", "it-CH": "dd.mm.yyyy", "it-IT": "dd/mm/yyyy", "iu-Cans-CA": "d/m/yyyy", "iu-Latn-CA": "d/mm/yyyy", "ja-JP": "yyyy/mm/dd", "ka-GE": "dd.mm.yyyy", "kk-KZ": "dd.mm.yyyy", "kl-GL": "dd-mm-yyyy", "km-KH": "yyyy-mm-dd", "kn-IN": "dd-mm-yy", "ko-KR": "yyyy-mm-dd", "kok-IN": "dd-mm-yyyy", "ky-KG": "dd.mm.yy", "lb-LU": "dd/mm/yyyy", "lo-LA": "dd/mm/yyyy", "lt-LT": "yyyy.mm.dd", "lv-LV": "yyyy.mm.dd.", "mi-NZ": "dd/mm/yyyy", "mk-MK": "dd.mm.yyyy", "ml-IN": "dd-mm-yy", "mn-MN": "yy.mm.dd", "mn-Mong-CN": "yyyy/m/d", "moh-CA": "m/d/yyyy", "mr-IN": "dd-mm-yyyy", "ms-BN": "dd/mm/yyyy", "ms-MY": "dd/mm/yyyy", "mt-MT": "dd/mm/yyyy", "nb-NO": "dd.mm.yyyy", "ne-NP": "m/d/yyyy", "nl-BE": "d/mm/yyyy", "nl-NL": "d-m-yyyy", "nn-NO": "dd.mm.yyyy", "nso-ZA": "yyyy/mm/dd", "oc-FR": "dd/mm/yyyy", "or-IN": "dd-mm-yy", "pa-IN": "dd-mm-yy", "pl-PL": "yyyy-mm-dd", "prs-AF": "dd/mm/yy", "ps-AF": "dd/mm/yy", "pt-BR": "d/m/yyyy", "pt-PT": "dd-mm-yyyy", "qut-GT": "dd/mm/yyyy", "quz-BO": "dd/mm/yyyy", "quz-EC": "dd/mm/yyyy", "quz-PE": "dd/mm/yyyy", "rm-CH": "dd/mm/yyyy", "ro-RO": "dd.mm.yyyy", "ru-RU": "dd.mm.yyyy", "rw-RW": "m/d/yyyy", "sa-IN": "dd-mm-yyyy", "sah-RU": "mm.dd.yyyy", "se-FI": "d.m.yyyy", "se-NO": "dd.mm.yyyy", "se-SE": "yyyy-mm-dd", "si-LK": "yyyy-mm-dd", "sk-SK": "d. m. yyyy", "sl-SI": "d.m.yyyy", "sma-NO": "dd.mm.yyyy", "sma-SE": "yyyy-mm-dd", "smj-NO": "dd.mm.yyyy", "smj-SE": "yyyy-mm-dd", "smn-FI": "d.m.yyyy", "sms-FI": "d.m.yyyy", "sq-AL": "yyyy-mm-dd", "sr-Cyrl-BA": "d.m.yyyy", "sr-Cyrl-CS": "d.m.yyyy", "sr-Cyrl-ME": "d.m.yyyy", "sr-Cyrl-RS": "d.m.yyyy", "sr-Latn-BA": "d.m.yyyy", "sr-Latn-CS": "d.m.yyyy", "sr-Latn-ME": "d.m.yyyy", "sr-Latn-RS": "d.m.yyyy", "sv-FI": "d.m.yyyy", "sv-SE": "yyyy-mm-dd", "sw-KE": "m/d/yyyy", "syr-SY": "dd/mm/yyyy", "ta-IN": "dd-mm-yyyy", "te-IN": "dd-mm-yy", "tg-Cyrl-TJ": "dd.mm.yy", "th-TH": "d/m/yyyy", "tk-TM": "dd.mm.yy", "tn-ZA": "yyyy/mm/dd", "tr-TR": "dd.mm.yyyy", "tt-RU": "dd.mm.yyyy", "tzm-Latn-DZ": "dd-mm-yyyy", "ug-CN": "yyyy-m-d", "uk-UA": "dd.mm.yyyy", "ur-PK": "dd/mm/yyyy", "uz-Cyrl-UZ": "dd.mm.yyyy", "uz-Latn-UZ": "dd/mm yyyy", "vi-VN": "dd/mm/yyyy", "wo-SN": "dd/mm/yyyy", "xh-ZA": "yyyy/mm/dd", "yo-NG": "d/m/yyyy", "zh-CN": "yyyy/m/d", "zh-HK": "d/m/yyyy", "zh-MO": "d/m/yyyy", "zh-SG": "d/m/yyyy", "zh-TW": "yyyy/m/d", "zu-ZA": "yyyy/mm/dd", }; var dateFormat2LocationList = Object.keys(language2LocalDateFormat).reduce(function (ac, cr) { ac[language2LocalDateFormat[cr]] = ac[language2LocalDateFormat[cr]] || []; ac[language2LocalDateFormat[cr]].push(cr); return ac; }, {}); var dateFormatList = Object.keys(dateFormat2LocationList); /** * * @param {Date} date * @returns {String} */ function yyymmdd(date) { return formatDateTime(date, 'yyyy/MM/dd'); } 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 var DATE_TIME_TOKEN_RGX = /([^\s.\/:\-,]+)|([.\/:\-,]+)/i; /** * * @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; } }); } var LOCAL_DATE_FORMAT = (function () { var d = new Date(2021, 4, 4); var s = d.toLocaleDateString(); var fm = s.replace(new RegExp(DATE_TIME_TOKEN_RGX.source, 'g'), function (token) { switch (token) { case '2021': return 'yyyy'; case '5': return 'M'; case '05': return 'MM'; case '4': return 'd'; case '04': return 'dd'; default: return token; } }); return fm; })(); var LOCAL_DATE_TIME_FORMAT = (function () { var d = new Date(2021, 4, 4, 6, 7, 3); var s = d.toLocaleString(); var fm = s.replace(new RegExp(DATE_TIME_TOKEN_RGX.source, 'g'), function (token) { switch (token) { case '2021': return 'yyyy'; case '5': return 'M'; case '05': return 'MM'; case '4': return 'd'; case '04': return 'dd'; case '06': if (new Date(2021, 4, 4, 18, 7, 3).toLocaleString().indexOf(18) >= 0) return 'HH'; return 'hh'; case '6': return 'h'; case '07': return 'mm'; case '7': return 'm'; case '03': return 'ss'; case '3': return 's'; case 'AM': return 'a' default: return token; } }); return fm; })(); function formartDateString() { window.ALogger.warn("spelled incorrectly: formartDateString"); return formatDateString.apply(null, arguments); } /** * * @param {String} text * @param {String} format * @returns {Date} */ function parseDateString(text, format) { text = (0,_String_stringFormat__WEBPACK_IMPORTED_MODULE_0__.nonAccentVietnamese)(text).toLowerCase(); format = (0,_String_stringFormat__WEBPACK_IMPORTED_MODULE_0__.nonAccentVietnamese)(format).toLowerCase(); var textTokens = text.match(formatTokenRegex) || []; var formatTokens = format.match(formatTokenRegex) || []; var year = new Date().getFullYear(); var month = 0; var day = 1; 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": case 'MM': month = parseInt(textToken) - 1; break; case "m": 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); } /*** * * @param date * @param {number} delta - must be a integer * @param {boolean=} gmt * @returns {Date} */ function addDate(date, delta, gmt) { delta = Math.round(delta); var res = beginOfDay(date, gmt); if (gmt) { res.setUTCDate(date.getUTCDate() + delta); } else { res.setDate(date.getDate() + delta); } return beginOfDay(res, gmt); } /** * @param {Date} date * @param {boolean=} gmt * @return {Date} */ function prevDate(date, gmt) { return addDate(date, -1, gmt); } /** * @param {Date} date * @param {boolean=} gmt * @return {Date} */ function nextDate(date, gmt) { return addDate(date, 1, gmt); } /**** * * @param {Date} date * @param {boolean=} gmt * @param {number=} startDayOfWeek * @returns {number} */ function weekIndexOf(date, gmt, startDayOfWeek) { if (typeof startDayOfWeek !== "number") startDayOfWeek = getDefaultFirstDayOfWeek(); var by = beginOfYear(date, gmt); var byw = beginOfWeek(by, gmt, startDayOfWeek); return Math.floor(compareDate(date, byw, gmt) / 7) ; } /*** * * @param {number} year * @param {number} weekIdx * @param {boolean=} gmt * @param {number=} startDayOfWeek * @returns {Date} */ function weekInYear(year, weekIdx, gmt, startDayOfWeek) { if (typeof startDayOfWeek !== "number") startDayOfWeek = getDefaultFirstDayOfWeek(); var bg = new Date(year, 0, 1, 0, 0, 0, 0); if (gmt) bg.setUTCHours(0); var byw = beginOfWeek(bg, gmt, startDayOfWeek); if (weekIdx === 0) return bg; return new Date(byw.getTime() + weekIdx * 7 * MILLIS_PER_DAY); } /** * @param {Date} date * @param {Boolean=} gmt default:false * @return {Date} date at xx:xx:xx:00 */ function beginOfSecond(date, gmt) { var res = new Date(date.getTime()); if (gmt) res.setUTCMilliseconds(0); else res.setMilliseconds(0); return res; } /** * @param {Date} date * @param {Boolean=} gmt default:false * @return {Date} date at xx:xx:00 */ function beginOfMinute(date, gmt) { var res = new Date(date.getTime()); if (gmt) res.setUTCSeconds(0, 0); else res.setSeconds(0, 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()); if (gmt) res.setUTCHours(0, 0, 0, 0); else res.setHours(0, 0, 0, 0) return res; } /** * @param {Date} date * @param {Boolean=} gmt default:false * @return {Date} date at xx:00 */ function beginOfHour(date, gmt) { var res = new Date(date.getTime()); if (gmt) res.setUTCMinutes(0, 0, 0); else res.setMinutes(0, 0, 0); return res; } /** * @param {Date} date * @param {Boolean=} gmt default:false * @param {number=} startDayOfWeek default:0 * @return {Date} date at 00:00 */ function beginOfWeek(date, gmt, startDayOfWeek) { if (typeof startDayOfWeek !== "number") startDayOfWeek = getDefaultFirstDayOfWeek(); var res = beginOfDay(date, gmt); if (isNaN(res.getTime())) return res; while ((gmt ? res.getUTCDay() : res.getDay()) !== startDayOfWeek) { res = prevDate(res, gmt); } return res; } /*** * * @param {Date} date * @param {number} delta * @param {boolean=} gmt */ function addWeek(date, delta, gmt) { date = beginOfWeek(date, gmt); delta = Math.round(delta); return addDate(date, delta * 7, gmt); } /**** * * @param {Date} date * @param {boolean=} gmt * @returns {Date} */ function nextWeek(date, gmt) { return addWeek(date, 1, gmt); } /**** * * @param {Date} date * @param {boolean=} gmt * @returns {Date} */ function prevWeek(date, gmt) { return addWeek(date, -1, gmt); } /** * @param {Date} date * @param {Boolean=} gmt default:false * @return {Date} date at 00:00 AM */ function beginOfMonth(date, gmt) { 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 beginOfQuarter(date, gmt) { var y = gmt ? date.getUTCFullYear() : date.getFullYear(); var m = gmt ? date.getUTCMonth() : date.getMonth(); m = Math.floor(m / 3) * 3; 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 {number=} delta * @param {boolean=} gmt */ function addQuarter(date, delta, gmt) { delta = Math.round(delta); date = beginOfQuarter(date, gmt); return addMonth(date, delta * 3, gmt); } /*** * * @param {Date} date * @param {boolean=} gmt * @returns {Date} */ function nextQuarter(date, gmt) { date = beginOfQuarter(date); return nextMonth(nextMonth(nextMonth(date, gmt), gmt), gmt); } /*** * * @param {Date} date * @param {boolean=} gmt * @returns {Date} */ function prevQuarter(date, gmt) { date = beginOfQuarter(date, gmt); return prevMonth(prevMonth(prevMonth(date, gmt), gmt), gmt); } /** * @param {Date} date * @param {Boolean=} gmt default:false * @return {Date} date at 00:00 AM */ function beginOfYear(date, gmt) { 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} date * @param {number} delta * @param {Boolean=} gmt default:false * @return {Date} date at 00:00 AM */ function addYear(date, delta, gmt) { delta = Math.round(delta); var y = gmt ? date.getUTCFullYear() : date.getFullYear(); var res = new Date(); if (gmt) res.setUTCFullYear(y + delta, 0, 1); else res.setFullYear(y + delta, 0, 1); return beginOfDay(res, gmt); } /** * @param {Date} date * @param {Boolean=} gmt default:false * @return {Date} date at 00:00 AM */ function nextYear(date, gmt) { return addYear(date, 1, gmt); } /** * @param {Date} date * @param {Boolean=} gmt default:false * @return {Date} date at 00:00 AM */ function prevYear(date, gmt) { return addYear(date, -1, gmt); } /** * @param {Date} date0 * @param {Date} date1 * @param {Boolean=} gmt default:false * @return {number} */ function compareDate(date0, date1, gmt) { date0 = beginOfDay(date0, gmt); date1 = beginOfDay(date1, gmt); //Date(1975, 5, 12) has 1 hour extend return Math.floor((date0.getTime() - date1.getTime()) / 86400000); } /** * @param {Date} date0 * @param {Date} date1 * @param {Boolean=} gmt default:false * @return {number} */ function compareMonth(date0, date1, 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); } /*** * * @param {Date} date0 * @param {Date} date1 * @param {boolean=}gmt * @returns {number} */ function compareYear(date0, date1, gmt) { var y0 = gmt ? date0.getUTCFullYear() : date0.getFullYear(); var y1 = gmt ? date1.getUTCFullYear() : date1.getFullYear(); return y0 - y1; } /** * * @param {Date} date * @param {number} delta * @param {boolean=} gmt * @returns {Date} */ function addMonth(date, delta, gmt) { var res = beginOfMonth(date, gmt); if (gmt) { res.setUTCMonth(res.getUTCMonth() + delta); } else { res.setMonth(res.getMonth() + delta); } return beginOfDay(res, gmt); } /** * * @param {Date} date * @param {number} delta * @param {boolean=} gmt * @returns {Date} */ function addMonthKeepDate(date, delta, gmt) { var res = addMonth(date, delta, gmt); var dateNum = gmt ? date.getUTCDate() : date.getDate(); var dim = daysInMonth(gmt ? date.getUTCFullYear() : date.getFullYear(), gmt ? date.getUTCFullYear() : date.getFullYear()); dateNum = Math.min(dateNum, dim); res = addDate(res, dateNum - 1, gmt); return res; } /** * * @param {Date} date * @param {number} delta * @param {boolean=} gmt * @returns {Date} */ function addMonthKeepDateTime(date, delta, gmt) { var dayOffset = date.getTime() - beginOfDay(date, gmt).getTime(); var res = addMonthKeepDate(date, delta, gmt); res = new Date(res.getTime() + dayOffset); return res; } /** * * @param {Date} date * @param {boolean=} gmt * @returns {Date} */ function nextMonth(date, gmt) { return addMonth(date, 1, gmt); } /** * * @param {Date} date * @param {boolean=} gmt * @returns {Date} */ function prevMonth(date, gmt) { return addMonth(date, -1, gmt); } /** * note:argument will be converted to 00h00 * @param date0 * @param date1 */ function monthOfTwoDate(date0, date1) { date0 = beginOfDay(date0); date1 = beginOfDay(date1); var temp; var sign = 1; var res = 0; var cmdv = compareDate(date0, date1); if (cmdv > 0) { sign = -1; temp = date0; date0 = date1; date1 = temp; } else if (cmdv === 0) return 0; var d1 = date0.getDate(); var d2 = date1.getDate(); var y0 = date0.getFullYear(); var y1 = date1.getFullYear(); var m0 = date0.getMonth(); var m1 = date1.getMonth(); var nextMD0; if (d1 <= d2) { res += (y1 - y0) * 12 + (m1 - m0); res += 2 * (d2 - d1) / (daysInMonth(y0, m0) + daysInMonth(y1, m1)); } else { res += (y1 - y0) * 12 + (m1 - m0) - 1; nextMD0 = beginOfMonth(nextMonth(date0)); res += 2 * (compareDate(nextMD0, date0) + compareDate(date1, beginOfMonth(date1))) / (daysInMonth(y0, m0) + daysInMonth(y1, m1)) } return sign * res; } /** * * @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); } /**** * * @param text * @param format support d, M, Y, Q * @param {*=} opt * @returns {Date} */ function parseDateTime(text, format, opt) { opt = Object.assign({ startDayOfWeek: 0 }, opt); var tokenMap = {}; var txtRgx = new RegExp(DATE_TIME_TOKEN_RGX.source, 'g'); var fmRgx = new RegExp(DATE_TIME_TOKEN_RGX.source, 'g'); var tkMatched, fmMatched; tkMatched = txtRgx.exec(text); fmMatched = fmRgx.exec(format); var tkText, fmText; while (tkMatched && fmMatched) { tkText = tkMatched[0]; fmText = fmMatched[0]; switch (fmText) { case 'd': case 'dd': tokenMap.day = parseInt(tkText, 10); break; case 'w': case 'ww': tokenMap.week = parseInt(tkText, 10) - 1; break; case 'M': case 'MM': tokenMap.month = parseInt(tkText, 10) - 1; break; case 'y': case 'yyyy': tokenMap.year = parseInt(tkText, 10); break; case 'h': case 'hh': case 'H': case 'HH': tokenMap.hour = parseInt(tkText, 10); break; case 'm': case 'mm': tokenMap.minute = parseInt(tkText, 10); break; case 'a': if (tkText === 'AM' || tkText === 'PM') tokenMap.period = tkText; else throw new Error('Invalid period(a):' + tkText) break; case 'Q': case 'QQ': tokenMap.month = (parseInt(tkText, 10) - 1) * 3; break; default: if (tkText !== fmText) { throw new Error('Unexpected token ' + JSON.stringify(tkText) + ' at ' + tkMatched.index + ', expected ' + fmText); } } tkMatched = txtRgx.exec(text); fmMatched = fmRgx.exec(format); } if (tokenMap.period) { if (tokenMap.period === 'AM' && tokenMap.hour === 12) tokenMap.hour = 0; else if (tokenMap.period === "PM" && tokenMap.hour < 12) tokenMap.hour += 12; } var paramNames = ['year', 'month', 'day', 'hour', 'minute', 'second']; var paramShortNames = ['y', 'M', 'd', 'h', 'm', 's']; var paramDefaultValues = [new Date().getFullYear(), 0, 1, 0, 0, 0]; var resParam = paramDefaultValues.slice(); var paramList = paramNames.reduce(function (ac, cr, i) { var sN = paramShortNames[i]; if (cr in tokenMap) { ac += sN; } return ac; }, ''); var paramName; for (var i = 0; i < paramNames.length; ++i) { paramName = paramNames[i]; resParam[i] = tokenMap[paramName] === undefined ? paramDefaultValues[i] : tokenMap[paramName]; } var weekDate; if ('week' in tokenMap && !isNaN(tokenMap.week)) { weekDate = weekInYear(resParam[0], tokenMap.week, false, opt.startDayOfWeek); resParam[1] = weekDate.getMonth(); resParam[2] = weekDate.getDate(); } switch (paramList) { case 'hm': resParam.splice(1, 2, new Date().getMonth(), new Date().getDate()); break; } return new Date(resParam[0], resParam[1], resParam[2], resParam[3], resParam[4], resParam[5]); } /*** * * @param {Date} date * @param {string} format * @param {*=} opt * @return {string} */ function formatDateTime(date, format, opt) { opt = Object.assign({ startDayOfWeek: 0 }, opt); var fmRgx = new RegExp(DATE_TIME_TOKEN_RGX.source, 'g'); return format.replace(fmRgx, function (s) { var res = s; switch (s) { case 'd': case 'dd': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(date.getDate(), s.length); break; case 'w': case 'ww': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(weekIndexOf(date, false, opt.startDayOfWeek || getDefaultFirstDayOfWeek()) + 1, s.length); break; case 'M': case 'MM': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(date.getMonth() + 1, s.length); break; case 'MMM': res = shortMonthNames[date.getMonth()]; break; case 'MMMM': res = monthNames[date.getMonth()]; break; case 'y': case 'yyyy': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(date.getFullYear(), s.length); break; case 'yy': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(date.getFullYear() % 100, s.length); break; case 'a': res = date.getHours() < 12 ? "AM" : "PM"; break; case "H": case 'HH': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(date.getHours(), s.length); break; case 'h': case 'hh': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(1 + (date.getHours() - 1) % 12, s.length); break; case 'm': case 'mm': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(date.getMinutes(), s.length); break; case 's': case 'ss': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(date.getSeconds(), s.length); break; case 'Q': case 'QQ': res = (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(Math.floor(date.getMonth() / 3) + 1, s.length) break; } return res; }); } var number = [/[+-]?\d+$/, matched => new Date(parseInt(matched[0]))]; var reISO = [/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/, matched => new Date(matched[0])]; var reMsAjax = [/^\/Date\((d|-|.*)\)[\/|\\]$/, matched => new Date(parseInt(matched[1]))]; var reString = [/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+([a-zA-Z]{3})\s+[\d\s:]+GMT[\d+]+\s*\([^)]+\)$/, matched => new Date(matched[0])]; function implicitDate(o) { var res = null; if (o instanceof Date) { res = new Date(o.getTime()); } else if (typeof o === "number") { res = new Date(o); } else if (typeof o === 'string') { [reString, reISO, reMsAjax, number].some(rule => { var matched = o.match(rule[0]); if (matched) { res = rule[1](matched); return true; } return false; }); } if (res && isNaN(res.getTime())) res = null; return res; } /*** * * @param {null|{dayOffset?: number, duration?: number}}range * @param opt */ function formatTimeRange24(range, opt) { opt = Object.assign({ nextDayText: (!window.systemconfig || (typeof window.systemconfig.language !== "string") || (window.systemconfig.language.toLowerCase().indexOf('vn') >= 0 || window.systemconfig.language.toLowerCase().indexOf('vi') >= 0)) ? 'Hôm sau' : 'Next day' }, opt || {}); range = range || {}; var m0 = Math.floor(range.dayOffset / MILLIS_PER_MINUTE); var h0 = Math.floor(m0 / 60); var d0 = Math.floor(h0 / 24); m0 = m0 % 60; h0 = h0 % 24; var endOffset = range.dayOffset + range.duration; var m1 = Math.floor(endOffset / MILLIS_PER_MINUTE); var h1 = Math.floor(m1 / 60); var d1 = Math.floor(h1 / 24); m1 = m1 % 60; h1 = h1 % 24; var res = h0 + ':' + (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(m0, 2) + ' - ' + h1 + ':' + (0,_Math_int__WEBPACK_IMPORTED_MODULE_1__.integerZeroPadding)(m1, 2); if (d0 !== d1) res += ' (' + opt.nextDayText + ')'; return res; } /** * * @param {Date} date * @param type * @param {number} n * @returns {{expireddate: Date, startdate: Date}} */ function getTimeRangeFromStep(date, type, n) { var startDate, expiredDate; var initHandlers = { month: x => beginOfMonth(x), quarter: x => beginOfQuarter(x), year: x => beginOfYear(x) } var addHandlers = { month: (x, d) => addMonth(x, d), quarter: (x, d) => addQuarter(x, d), year: (x, d) => addYear(x, d) } startDate = initHandlers[type](addHandlers[type](date, n)); expiredDate = addHandlers[type](startDate, 1); return { startdate: startDate, expireddate: expiredDate }; } /***/ }), /***/ 9892: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(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)); /***/ }), /***/ 706: /***/ ((module) => { (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; }()); /***/ }), /***/ 2634: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 outline: 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}", ""]); /***/ }), /***/ 6773: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 8020: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "/* 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}", ""]); /***/ }), /***/ 3220: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-button-array {\r\n font-size: 1rem;\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}", ""]); /***/ }), /***/ 5224: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 9278: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-calendar-input {\r\n font-size: 1rem;\r\n font-family: Arial, Helvetica, sans-serif;\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.as-border-none {\r\n border: none;\r\n}\r\n\r\n.absol-calendar-input.as-border-none > input {\r\n text-align: left;\r\n padding-left: 0;\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 border: none;\r\n background: transparent;\r\n padding: 0;\r\n font: inherit;\r\n}\r\n\r\n.absol-calendar-input:not(.as-read-only) input {\r\n cursor: pointer;\r\n}\r\n\r\n.absol-calendar-input:not(.as-read-only) > input:hover,\r\n.absol-calendar-input:not(.as-read-only) > input:focus {\r\n color: red;\r\n}\r\n\r\n.absol-calendar-input.absol-disabled {\r\n pointer-events: none;\r\n background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.absol-calendar-input.absol-disabled input {\r\n color: var(--as-disabled-text-color);\r\n}\r\n", ""]); /***/ }), /***/ 9362: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "/** align middle in table cell **/\r\n.KPIsimpletableclass td > .absol-checkbox:first-child:last-child,\r\n.KPIsimpletableclass td > .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.cardsimpletableclass > table > tbody > tr > td > .absol-checkbox:first-child:last-child {\r\n display: block;\r\n}\r\n\r\n.absol-checkbox {\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: 16px;\r\n}\r\n\r\n.absol-checkbox:not(.as-read-only):not(.as-disabled) {\r\n cursor: pointer;\r\n user-select: none;\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: var(--as-disabled-text-color);\r\n}\r\n\r\n\r\n.absol-checkbox.as-wrap-text {\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-checkbox.as-wrap-text .absol-checkbox-label {\r\n white-space: normal;\r\n}\r\n\r\n.absol-checkbox.as-wrap-text > * {\r\n vertical-align: top;\r\n}\r\n\r\n.absol-checkbox.as-wrap-text .absol-checkbox-label {\r\n max-width: calc(100% - 24px);\r\n}\r\n\r\n.absol-checkbox.as-read-only .as-checkbox-input {\r\n pointer-events: none;\r\n}\r\n\r\n.absol-checkbox.as-read-only.as-border-none .bound {\r\n display: none;\r\n}", ""]); /***/ }), /***/ 141: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 5288: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":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 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 overflow: hidden;\r\n}\r\n\r\n.as-checkbox-input:not(.as-read-only):not(.as-disabled){\r\n cursor: pointer;\r\n}\r\n\r\n\r\nlabel.as-checkbox-input:hover:not(.as-read-only) .bound,\r\n.absol-checkbox:hover:not(.as-read-only) .bound {\r\n fill: var(--candy-hover-background-color);\r\n}\r\n\r\n.as-checkbox-input .tick,\r\n.as-checkbox-input .minus {\r\n fill: #606060;\r\n}\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\n.as-checkbox-input.as-has-minus .minus {\r\n opacity: 1;\r\n}\r\n\r\n.as-checkbox-input .minus,\r\ninput.as-checkbox-input-value:checked ~ svg .minus {\r\n opacity: 0;\r\n}\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 .minus {\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}\r\n\r\n.as-checkbox-input.as-read-only.as-border-none .bound{\r\n display: none;\r\n}", ""]); /***/ }), /***/ 2896: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-check-list-box.as-select-list-box {\r\n width: calc(var(--select-list-estimate-width) + 2px + 5px + 23px + 7px);\r\n --as-width-limit: calc(100vw - 20px);\r\n}\r\n\r\n.as-check-list-box.as-select-list-box.as-enable-search .as-select-list-box-scroller {\r\n max-height: calc(var(--max-height) - 2em - 10px - 2em - 1px);\r\n}\r\n\r\n.as-check-list-box.as-select-list-box .as-select-list-box-scroller {\r\n max-height: calc(var(--max-height) - 2em - 1px);\r\n}\r\n\r\n\r\n.as-check-list-box.as-select-list-box .absol-selectlist-item-text {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: calc(var(--as-width-limit) - 0.7em - 2.5em);\r\n}\r\n", ""]); /***/ }), /***/ 8949: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-check-list-item {\r\n padding-left: 0.35em;\r\n height: calc(30rem / 14);\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n.as-check-list-item-checkbox {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-check-list-item-checkbox .as-checkbox-input-check-icon{\r\n display: block;\r\n\r\n}\r\n\r\n.absol-selectlist-item.as-check-list-item > span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: calc(30rem / 14);\r\n}\r\n\r\n.absol-selectlist-item.as-check-list-item .absol-selectlist-item-desc {\r\n line-height: calc(25rem / 14);\r\n}\r\n\r\n.as-check-list-item.as-no-select .as-check-list-item-checkbox {\r\n visibility: hidden;\r\n}\r\n\r\n.as-check-list-item.as-no-select {\r\n pointer-events: none;\r\n}", ""]); /***/ }), /***/ 4014: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-select-list-box-page > .as-check-tree-item {\r\n width: 100%;\r\n}\r\n\r\n.as-check-tree-box {\r\n min-width: 18em;\r\n}\r\n\r\n.as-check-tree-box.as-no-transition label.as-checkbox-input .minus,\r\n.as-check-tree-box.as-no-transition label.as-checkbox-input .tick {\r\n transition: none;\r\n}\r\n\r\n\r\n.as-check-tree-box.as-select-list-box.as-enable-search .as-select-list-box-scroller {\r\n max-height: calc(var(--max-height) - 2em - 10px - 2em - 1px);\r\n}\r\n\r\n.as-check-tree-box.as-select-list-box .as-select-list-box-scroller {\r\n max-height: calc(var(--max-height) - 2em - 1px);\r\n}\r\n\r\n/***********************************************************************************************************************/\r\n\r\n.am-check-tree-box .as-dropdown-box-footer,\r\n.am-check-tree-box\r\n{\r\n min-width: 18em;\r\n}\r\n\r\n.am-check-tree-box-list {\r\n --text-width: 100%;\r\n --desc-width: 0;\r\n}\r\n\r\n.am-check-tree-box-modal:not(.as-enable-search) .absol-search-text-input {\r\n visibility: hidden;\r\n opacity: 0;\r\n pointer-events: none;\r\n}\r\n\r\n.am-check-tree-box .as-check-tree-box-scroller {\r\n max-height: calc(100vh - var(--modal-margin-top) - 100px);\r\n}\r\n\r\n.am-check-tree-box {\r\n width: var(--select-list-estimate-width);\r\n /*max-width: calc(100vw - 20px);*/\r\n}\r\n\r\n.am-check-tree-box .as-check-tree-box-content {\r\n /*max-width: calc(100vw - 20px);*/\r\n}\r\n\r\n.am-check-tree-box.as-has-desc {\r\n --text-width: 50%;\r\n --desc-width: 50%;\r\n}\r\n\r\n\r\n.am-check-tree-box-body {\r\n overflow-y: auto;\r\n max-height: calc(80vh - 2em);\r\n}\r\n\r\n.am-check-tree-box.as-enable-search .am-check-tree-box-body {\r\n max-height: calc(80vh - 4em - 10px);\r\n}\r\n\r\n.am-check-tree-item {\r\n display: block;\r\n white-space: nowrap;\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n --level: 0;\r\n --icon-width: 0px;\r\n}\r\n\r\n\r\n.am-check-tree-item.as-has-icon {\r\n --icon-width: 2.7em;\r\n}\r\n\r\n\r\n.am-check-tree-item-toggle-ctn,\r\n.am-check-tree-item-icon-ctn,\r\n.am-check-tree-item-checkbox-ctn {\r\n position: absolute;\r\n white-space: nowrap;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.am-check-tree-item-toggle-ctn {\r\n left: calc(2em * var(--level) + 0.2em);\r\n width: 1.5em;\r\n text-align: center;\r\n}\r\n\r\n.am-check-tree-item-toggle-ctn > svg {\r\n width: 0.7em;\r\n height: 0.7em;\r\n}\r\n\r\n\r\n.am-check-tree-item-icon-ctn {\r\n left: calc(2em * var(--level) + 3.2em);\r\n}\r\n\r\n.am-check-tree-item-checkbox-ctn {\r\n left: calc(2em * var(--level) + 1.7em)\r\n}\r\n\r\n.am-check-tree-item-icon-ctn > svg {\r\n display: inline-block;\r\n vertical-align: middle;\r\n\r\n}\r\n\r\n\r\n.am-check-tree-item.as-status-open svg .toggle-close,\r\n.am-check-tree-item.as-status-close svg .toggle-open,\r\n.am-check-tree-item:not(.as-status-close):not(.as-status-open) .am-check-tree-item-toggle-ctn {\r\n display: none;\r\n}\r\n\r\n.am-check-tree-item-icon-ctn::before,\r\n.am-check-tree-item-toggle-ctn::before,\r\n.am-check-tree-item-checkbox-ctn::before {\r\n content: \"\";\r\n height: 100%;\r\n vertical-align: middle;\r\n display: inline-block;\r\n}\r\n\r\n.am-check-tree-item-icon-ctn:empty {\r\n display: none;\r\n}\r\n\r\n.am-check-tree-item-icon-ctn > span {\r\n font-size: 1.8em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.am-check-tree-item-icon-ctn img,\r\n.am-check-tree-item-icon-ctn svg {\r\n width: 1.8em;\r\n height: 1.8em;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.am-check-tree-item-text {\r\n width: var(--text-width);\r\n box-sizing: border-box;\r\n padding: 0.3em 0.5em 0.3em calc(3em + 2em * var(--level) + var(--icon-width));\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: 1.5;\r\n white-space: normal;\r\n}\r\n\r\n\r\n.am-check-tree-item-desc {\r\n display: none;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.am-check-tree-leaf-item:not(.as-is-leaf) .am-check-tree-item-checkbox-ctn {\r\n display: none;\r\n}\r\n\r\n.am-check-tree-leaf-item:not(.as-is-leaf) .am-check-tree-item-text {\r\n padding: 0.3em 0.5em 0.3em calc(2em * var(--level) + var(--icon-width) + 1em);\r\n}\r\n\r\n.am-check-tree-leaf-item:not(.as-is-leaf) .am-check-tree-item-icon-ctn {\r\n left: calc(2em * var(--level) + 1.5em);\r\n}\r\n\r\n.am-check-tree-box-list.as-has-desc .am-check-tree-item-desc {\r\n display: inline-block;\r\n}\r\n\r\n.am-check-tree-box.as-leaf-only .am-check-tree-item:not(.as-has-leaf) .as-checkbox-input {\r\n pointer-events: none;\r\n opacity: 0.2;\r\n}\r\n\r\n\r\n.am-check-tree-box.as-leaf-only:not(.as-has-leaf) .as-select-list-box-check-all {\r\n pointer-events: none;\r\n color: var(--as-disabled-text-color);\r\n}\r\n\r\n.am-check-tree-box.as-leaf-only:not(.as-has-leaf) .as-select-list-box-check-all label.as-checkbox-input .bound {\r\n stroke: #929292;\r\n fill: #ebebe4;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn:empty::before {\r\n position: absolute;\r\n left: 0;\r\n top: calc(50% - 1em);\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-family: Arial, Helvetica, sans-serif;\r\n padding: 0 5px;\r\n line-height: 2;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn:not(:empty):before,\r\n.as-multi-select-menu.as-read-only .as-multi-select-menu-item-ctn::before,\r\n.as-multi-select-menu.as-disabled .as-multi-select-menu-item-ctn::before {\r\n display: none;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn[data-placeholder]:empty::before {\r\n content: attr(data-placeholder);\r\n}\r\n", ""]); /***/ }), /***/ 7586: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-check-tree-item {\r\n font-size: inherit;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n height: 2em;\r\n}\r\n\r\n.as-check-tree-item:focus {\r\n background-color: unset;\r\n}\r\n\r\n.as-check-tree-item:hover:focus {\r\n background-color: rgba(169, 169, 172, 0.1);\r\n}\r\n\r\n.as-check-tree-item .as-checkbox-input {\r\n margin-right: 0.35em;\r\n}\r\n\r\n.as-check-tree-item.as-no-select .as-checkbox-input,\r\n.absol-checkbox.as-no-select {\r\n pointer-events: none;\r\n opacity: 0.3;\r\n}\r\n\r\n.as-check-tree-item.as-no-select .as-checkbox-input .bound,\r\n.absol-checkbox.as-no-select .bound {\r\n stroke: #929292;\r\n fill: #ebebe4;\r\n}\r\n\r\n.as-check-tree-item.as-no-select .as-checkbox-input .tick,\r\n.as-check-tree-item.as-no-select .as-checkbox-input .minus,\r\n.absol-checkbox.as-no-select .tick,\r\n.absol-checkbox.as-no-select .minus {\r\n display: none;\r\n opacity: 0;\r\n visibility: hidden;\r\n}\r\n\r\n.as-check-tree-item.as-check-unsafe-tree-item {\r\n padding-right: 45px;\r\n}\r\n\r\n.as-check-unsafe-tree-item .as-check-unsafe-tree-item-action-ctn {\r\n display: none;\r\n position: absolute;\r\n height: 20px;\r\n right: 5px;\r\n top: calc(50% - 10px);\r\n --as-transparent-button-text-color: rgba(107, 107, 108, 0.3);\r\n}\r\n\r\n/*.as-check-unsafe-tree-item.status-close .as-check-unsafe-tree-item-action-ctn,*/\r\n/*.as-check-unsafe-tree-item.status-open .as-check-unsafe-tree-item-action-ctn*/\r\n/*{*/\r\n/* display: block;*/\r\n/*}*/\r\n\r\n\r\n.as-check-unsafe-tree-item-action-ctn >button{\r\n width: 25px;\r\n height: 20px;\r\n}\r\n\r\n/*.as-check-unsafe-tree-item-action-ctn >button:not(:first-child) {*/\r\n/* margin-left: 5px;*/\r\n/*}*/\r\n\r\n.absol-checkbox.as-no-select {\r\n visibility: hidden;\r\n}", ""]); /***/ }), /***/ 8363: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-chrome-calendar {\r\n display: inline-block;\r\n font-family: Helvetica, Arial, sans-serif;\r\n font-size: 1rem;\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 outline: none;\r\n}\r\n\r\n.absol-chrome-calendar * {\r\n font-size: inherit;\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:not(.view-era) .absol-chrome-calendar-title {\r\n cursor: pointer;\r\n}\r\n\r\n.absol-chrome-calendar-title::after {\r\n content: \"\\25BC\";\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"era\"] .absol-chrome-calendar-title::after {\r\n content: \"\";\r\n}\r\n\r\n.absol-chrome-calendar-title > span {\r\n line-height: 1.5em;\r\n min-width: 5em;\r\n display: inline-block;\r\n}\r\n\r\n.absol-chrome-calendar-instance {\r\n margin-top: 1em;\r\n border: solid 1px rgb(140, 140, 140);\r\n width: calc(14em + 2px);\r\n position: relative;\r\n height: calc(8.4em + 3px);\r\n overflow: hidden;\r\n box-sizing: border-box;\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[data-level=\"week\"] .absol-chrome-calendar-dayofweek::before {\r\n content: \"wk\";\r\n text-align: center;\r\n line-height: 1.2;\r\n display: inline-block;\r\n color: rgb(130, 130, 255);\r\n border-bottom: solid 1px rgb(191, 191, 191);\r\n border-right: solid 1px rgb(191, 191, 191);\r\n box-sizing: border-box;\r\n width: 12.5%;\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: calc(100% / 7);\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[data-level=\"week\"] .absol-chrome-calendar-dayofweek > div {\r\n width: 12.5%;\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 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-month.as-animation {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n margin: 0;\r\n z-index: 8;\r\n transition: top 0.2s;\r\n /*opacity: 0.5;*/\r\n}\r\n\r\n.absol-chrome-calendar-month.as-animation div {\r\n pointer-events: none;\r\n transition: color 0.2s;\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"month\"] .absol-chrome-calendar-month {\r\n display: table;\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"month\"] .absol-chrome-calendar-dayofweek {\r\n display: block;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-week-in-month {\r\n display: table-row;\r\n height: 1.2em;\r\n}\r\n\r\n.absol-chrome-calendar-week-in-month > div::before {\r\n content: attr(data-date);\r\n}\r\n\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month::before {\r\n content: attr(data-week-idx-text);\r\n display: table-cell;\r\n text-align: right;\r\n padding-right: 0.4em;\r\n color: rgb(130, 130, 255);\r\n text-shadow: 1px 0 0 currentColor;\r\n border-right: solid 1px rgb(191, 191, 191);\r\n width: 12.5%;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-week-in-month > div {\r\n display: table-cell;\r\n text-align: right;\r\n padding-right: 0.4em;\r\n cursor: pointer;\r\n box-sizing: border-box;\r\n width: calc(100% / 7);\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month > div {\r\n width: calc(100% / 8);\r\n}\r\n\r\n\r\n.absol-chrome-calendar[data-level=\"day\"] .absol-chrome-calendar-week-in-month > div:hover,\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-hover-in-year > div:not(.as-not-in-year),\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-hover-in-year::before,\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-hover-not-in-year > .as-not-in-year\r\n{\r\n background-color: rgb(224, 245, 256);\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"day\"] .absol-chrome-calendar-not-in-month:not(.as-disabled),\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-not-in-month:not(.as-disabled) {\r\n color: rgb(140, 140, 140);\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.absol-chrome-calendar[data-level=\"week\"] .as-week-selected,\r\n.absol-chrome-calendar[data-level=\"quarter\"] .as-quarter-selected,\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-selected::before\r\n{\r\n background-color: rgb(188, 205, 236) !important;\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .as-week-selected .absol-chrome-calendar-selected {\r\n background-color: transparent;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-years {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 1;\r\n}\r\n\r\n.absol-chrome-calendar:not([data-view=\"year\"]) .absol-chrome-calendar-years {\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-month,\r\n.absol-chrome-calendar-dayofweek,\r\n.absol-chrome-calendar-era {\r\n display: none;\r\n}\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 box-sizing: border-box;\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-months,\r\n.absol-chrome-calendar-year.closing .absol-chrome-calendar-year-months {\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-months,\r\n.absol-chrome-calendar-year.start-closing .absol-chrome-calendar-year-months {\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-months {\r\n width: 100%;\r\n display: table;\r\n height: calc(6em + 1px);\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-year-row-months {\r\n display: table-row;\r\n line-height: 1.5;\r\n height: 2em;\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.absol-chrome-calendar-era-year:hover,\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"0\"] .absol-chrome-calendar-year-month[data-quarter=\"0\"],\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"1\"] .absol-chrome-calendar-year-month[data-quarter=\"1\"],\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"2\"] .absol-chrome-calendar-year-month[data-quarter=\"2\"],\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"3\"] .absol-chrome-calendar-year-month[data-quarter=\"3\"] {\r\n background-color: rgb(224, 245, 256);\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-week-in-month > div.as-disabled,\r\n.absol-chrome-calendar-date-disabled,\r\n.absol-chrome-calendar-era-year.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.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}\r\n\r\n.absol-chrome-calendar-era {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n z-index: 1000000;\r\n /*width: 100%;*/\r\n /*height: 100%; */\r\n width: calc(14em + 17px);\r\n box-sizing: border-box;\r\n height: 100%;\r\n background-color: white;\r\n box-shadow: 0px 0px 1px 0 black;\r\n overflow-y: scroll;\r\n overflow-x: hidden;\r\n font-size: inherit;\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"era\"] .absol-chrome-calendar-era {\r\n display: block;\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"year\"] .absol-chrome-calendar-era {\r\n display: block;\r\n}\r\n\r\n.absol-chrome-calendar-era-row {\r\n width: 14em;\r\n height: 25%;\r\n white-space: nowrap;\r\n font-size: inherit;\r\n}\r\n\r\n.absol-chrome-calendar-era-year {\r\n display: inline-block;\r\n vertical-align: top;\r\n height: 100%;\r\n width: 25%;\r\n text-align: center;\r\n line-height: 2.1em;\r\n font-size: inherit;\r\n color: rgb(140, 140, 140);\r\n}\r\n\r\n\r\n.absol-chrome-calendar-in-decade:not(.absol-chrome-calendar-date-disabled) {\r\n color: black;\r\n}\r\n\r\n/*.absol-chrome-calendar-era*/", ""]); /***/ }), /***/ 7767: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".ac-time-input.as-time-24-input {\r\n width: 13em;\r\n}\r\n\r\n.as-chrome-time-24-picker {\r\n --next-day-h24-width : 120px;\r\n --minute-width: 60px;\r\n font-size: 14px;\r\n\r\n}\r\n\r\n.as-chrome-time-24-picker .as-chrome-time-picker-h24 {\r\n width: var(--next-day-h24-width);\r\n}\r\n\r\n.as-chrome-time-24-picker .as-chrome-time-picker-list.as-chrome-time-picker-m60 {\r\n width: var(--minute-width);\r\n}\r\n\r\n.as-chrome-time-24-picker-tomorrow-text {\r\n display: none;\r\n}\r\n\r\n.as-in-tomorrow.as-chrome-time-picker-btn .as-chrome-time-24-picker-tomorrow-text {\r\n display: initial;\r\n}\r\n\r\n.as-chrome-time-24-picker .as-chrome-time-picker-btn:disabled {\r\n pointer-events: none;\r\n}", ""]); /***/ }), /***/ 5663: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-chrome-time-picker {\r\n box-sizing: border-box;\r\n vertical-align: top;\r\n display: inline-block;\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\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 -webkit-user-select: none; /* Safari */\r\n -moz-user-select: none; /* Firefox */\r\n -ms-user-select: none;\r\n background-color: rgb(255, 255, 255);\r\n /*width: calc(160px + 1.2em);*/\r\n height: 12.38em;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-chrome-time-picker.as-24h-clock .as-chrome-time-picker-scroller-h12,\r\n.as-chrome-time-picker:not(.as-24h-clock) .as-chrome-time-picker-scroller-h24,\r\n.as-chrome-time-picker.as-24h-clock .as-chrome-time-picker-period {\r\n display: none;\r\n}\r\n\r\n.as-chrome-time-picker-period {\r\n padding-top: 1.43em;\r\n padding-bottom: 1.43em;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-chrome-time-picker > div:not(:first-child) {\r\n margin-left: 5px;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-scroller {\r\n position: relative;\r\n padding-top: 1.43em;\r\n padding-bottom: 1.43em;\r\n display: inline-block;\r\n vertical-align: top;\r\n height: 100%;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-chrome-time-picker-scroller-up,\r\n.as-chrome-time-picker-scroller-down {\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n height: 1.43em;\r\n padding: 0;\r\n box-sizing: border-box;\r\n background-color: transparent;\r\n border-radius: 3px;\r\n border: none;\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-scroller-up > span,\r\n.as-chrome-time-picker-scroller-down > span {\r\n font-size: 1.5em;\r\n}\r\n\r\n.as-chrome-time-picker-scroller-up:hover,\r\n.as-chrome-time-picker-scroller-down:hover {\r\n background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n.as-chrome-time-picker-scroller-up {\r\n top: -5px;\r\n}\r\n\r\n.as-chrome-time-picker-scroller-down {\r\n bottom: -5px;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-viewport {\r\n width: 3.6em;\r\n height: 100%;\r\n overflow: hidden;\r\n white-space: normal;\r\n display: inline-block;\r\n vertical-align: top;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-list.as-chrome-time-picker-m60,\r\n.as-chrome-time-picker-list.as-chrome-time-picker-h24 {\r\n width: 120px;\r\n overflow: hidden;\r\n position: relative;\r\n}\r\n\r\n.as-chrome-time-picker-list.as-chrome-time-picker-m60>button,\r\n.as-chrome-time-picker-list.as-chrome-time-picker-h24>button{\r\n display: block;\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n font-size: inherit;\r\n}\r\n\r\n.as-chrome-time-picker-list {\r\n height: 100%;\r\n overflow-y: scroll;\r\n width: calc(100% + 18px);\r\n}\r\n\r\n.as-chrome-time-picker-btn {\r\n font-size: inherit;\r\n height: 2em;\r\n width: 100%;\r\n padding: 0;\r\n border: none;\r\n background-color: transparent;\r\n color: black;\r\n}\r\n\r\n.as-chrome-time-picker-btn:disabled {\r\n color: #dddddd;\r\n}\r\n\r\n.as-chrome-time-picker-btn:hover {\r\n background-color: rgb(224, 245, 256);\r\n}\r\n\r\n.as-chrome-time-picker-btn.as-selected {\r\n background-color: rgb(188, 205, 236);\r\n border-radius: 3px;\r\n}\r\n\r\n.as-chrome-time-picker-btn > span {\r\n font-size: calc(16em / 14);\r\n}\r\n\r\n\r\n\r\n", ""]); /***/ }), /***/ 458: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 8453: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".cke_panel {\r\n z-index: 1000000000 !important;\r\n}\r\n\r\n\r\nspan.cke_button_icon.cke_button__as-variable-box-ico_icon {\r\n background-size: cover;\r\n background-image: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPHBhdGggZmlsbD0iIzAwMDBmZiIgZD0iTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003LjQgMThDNS45IDE2LjUgNSAxNC4zIDUgMTJTNS45IDcuNSA3LjQgNkw5IDYuN0M3LjcgNy45IDcgOS45IDcgMTJTNy43IDE2LjEgOSAxNy4zTDcuNCAxOE0xMi43IDE1TDExLjkgMTNMMTAuNSAxNUg5TDExLjMgMTEuOUwxMCA5SDExLjNMMTIuMSAxMUwxMy41IDlIMTVMMTIuOCAxMkwxNC4xIDE1SDEyLjdNMTYuNiAxOEwxNSAxNy4zQzE2LjMgMTYgMTcgMTQuMSAxNyAxMlMxNi4zIDcuOSAxNSA2LjdMMTYuNiA2QzE4LjEgNy41IDE5IDkuNyAxOSAxMlMxOC4xIDE2LjUgMTYuNiAxOFoiIC8+Cjwvc3ZnPg==\");\r\n}\r\n\r\nspan.cke_button_icon.cke_button__as-expression-box-ico_icon {\r\n background-size: cover;\r\n background-image: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik01LDNIN1Y1SDVWMTBBMiwyIDAgMCwxIDMsMTJBMiwyIDAgMCwxIDUsMTRWMTlIN1YyMUg1QzMuOTMsMjAuNzMgMywyMC4xIDMsMTlWMTVBMiwyIDAgMCwwIDEsMTNIMFYxMUgxQTIsMiAwIDAsMCAzLDlWNUEyLDIgMCAwLDEgNSwzTTE5LDNBMiwyIDAgMCwxIDIxLDVWOUEyLDIgMCAwLDAgMjMsMTFIMjRWMTNIMjNBMiwyIDAgMCwwIDIxLDE1VjE5QTIsMiAwIDAsMSAxOSwyMUgxN1YxOUgxOVYxNEEyLDIgMCAwLDEgMjEsMTJBMiwyIDAgMCwxIDE5LDEwVjVIMTdWM0gxOU0xMiwxNUExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE3QTEsMSAwIDAsMSAxMSwxNkExLDEgMCAwLDEgMTIsMTVNOCwxNUExLDEgMCAwLDEgOSwxNkExLDEgMCAwLDEgOCwxN0ExLDEgMCAwLDEgNywxNkExLDEgMCAwLDEgOCwxNU0xNiwxNUExLDEgMCAwLDEgMTcsMTZBMSwxIDAgMCwxIDE2LDE3QTEsMSAwIDAsMSAxNSwxNkExLDEgMCAwLDEgMTYsMTVaIiAvPgo8L3N2Zz4=\");\r\n}\r\n\r\nspan.cke_button_icon.cke_button__insert_video_icon {\r\n background-size: cover;\r\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMCw4VjE2TDE1LDEyTDEwLDhaIiAvPgo8L3N2Zz4=\");\r\n}\r\n\r\n\r\ndiv.as-ck-inline-short-text {\r\n border: 1px solid #dddddd;\r\n height: 30px;\r\n line-height: 28px;\r\n font-size: 14px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n padding-left: var(--as-input-horizontal-padding);\r\n padding-right: var(--as-input-horizontal-padding);\r\n outline: none;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-ck-inline-short-text p {\r\n padding: 0;\r\n margin: 0;\r\n}\r\n\r\n.as-ck-inline-short-text p::after {\r\n content: \"\";\r\n}\r\n\r\n.as-ck-inline-short-text .cke_reset.cke_widget_drag_handler_container {\r\n visibility: hidden;\r\n opacity: 0;\r\n display: none;\r\n}\r\n\r\n.cke.cke_browser_webkit {\r\n z-index: 2000000 !important;\r\n}\r\n\r\n.cke.cke_browser_webkit.as-hidden {\r\n opacity: 0;\r\n visibility: hidden;\r\n pointer-events: none;\r\n}\r\n\r\n.cke.as-has-sticky-toolbar {\r\n border-top: none;\r\n}\r\n\r\n.cke.as-has-sticky-toolbar > .cke_inner > .cke_top {\r\n border-top: 1px solid #d1d1d1;\r\n z-index: 100;\r\n}\r\n\r\n\r\n.as-mdi-picker {\r\n background-color: white;\r\n border: 1px solid #dddddd;\r\n padding: 10px 0 10px 10px;\r\n min-width: 267px;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-mdi-picker-body {\r\n max-height: 40vh;\r\n overflow-y: auto;\r\n margin-top: 10px;\r\n}\r\n\r\n.as-mdi-picker button {\r\n width: 30px;\r\n height: 30px;\r\n}\r\n", ""]); /***/ }), /***/ 790: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-form-cmd-tool-window .absol-onscreen-window-body-container {\r\n overflow-y: auto;\r\n}\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 !important;\r\n}\r\n\r\n.as-from-tool-button:disabled > svg > path {\r\n fill: #c4c4c4;\r\n}\r\n\r\n.as-form-cmd-tool .as-from-tool-ribbon-button,\r\n.bsc-white .as-form-cmd-tool .as-from-tool-ribbon-button,\r\n.as-form-cmd-tool .as-from-tool-ribbon-button {\r\n font-size: 12px;\r\n height: 2em;\r\n width: 3em;\r\n padding-right: 0.2em;\r\n /**override theme*/\r\n min-width: unset !important;\r\n white-space: nowrap;\r\n border: none !important;\r\n background-color: transparent;\r\n}\r\n\r\n.as-form-cmd-tool .as-ribbon-button,\r\n.as-form-cmd-tool .as-ribbon-split-button {\r\n font-size: 12px;\r\n width: 6.5em;\r\n vertical-align: top;\r\n}\r\n\r\n\r\n.as-form-cmd-tool .as-ribbon-button.as-checked.as-type-toggle-switch,\r\n.as-form-cmd-tool .as-ribbon-button.as-checked.as-type-color {\r\n -webkit-box-shadow: inset 0px 0px 2px 0px rgba(0, 0, 0, 0.6);\r\n box-shadow: inset 0px 0px 2px 0px rgba(0, 0, 0, 0.6);\r\n background-color: rgba(0, 0, 0, 0.05);\r\n color: #1e65ea;\r\n}\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}\r\n\r\n.as-cmd-tool-group-x2 {\r\n display: inline-block;\r\n vertical-align: top;\r\n position: relative;\r\n}\r\n\r\n.as-cmd-tool-tab .as-cmd-tool-group-x2 {\r\n min-height: 60px;\r\n}\r\n\r\n\r\n.as-cmd-tool-group-x2::before {\r\n content: '';\r\n display: block;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: -1px;\r\n border: 1px solid #ddd;\r\n}\r\n\r\n.as-cmd-tool-tab {\r\n overflow: hidden;\r\n}", ""]); /***/ }), /***/ 2043: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-collapsible-tree-navigator {\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n font-size: 14px;\r\n border-bottom: 1px solid #aaaaaa;\r\n /*border-left: 1px solid #aaaaaa;*/\r\n user-select: none;\r\n padding-right: 4px;\r\n position: relative;\r\n box-sizing: border-box;\r\n --node-content-height: 30px;\r\n --level: 0;\r\n --selected-y: 0;\r\n}\r\n\r\n.as-collapsible-tree-navigator::after {\r\n content: \"\";\r\n position: absolute;\r\n transition: top 0.2s;\r\n top: var(--selected-y);\r\n height: var(--node-content-height);\r\n border-right: 4px solid rgb(20, 100, 246);\r\n right: 0;\r\n}\r\n\r\n\r\n.as-ctn-collapse-node {\r\n --children-height: 1000px;\r\n}\r\n\r\n\r\n.as-ctn-right > span.mdi {\r\n font-size: 20px;\r\n vertical-align: middle;\r\n transition: transform 0.2s ease-in-out;\r\n transform: rotate(0deg);\r\n visibility: hidden;\r\n display: inline-block;\r\n}\r\n\r\n.as-ctn-collapse-node.as-close .as-ctn-right > span.mdi-chevron-right {\r\n visibility: visible;\r\n}\r\n\r\n.as-ctn-collapse-node.as-open .as-ctn-right > span.mdi-chevron-right {\r\n visibility: visible;\r\n transform: rotate(90deg);\r\n}\r\n\r\n.as-ctn-collapse-node-content {\r\n height: calc(var(--node-content-height) + 1px);\r\n box-sizing: border-box;\r\n padding: 0 50px 0 8px;\r\n position: relative;\r\n background-color: rgb(240, 240, 242);\r\n border-top: 1px solid #aaaaaa;\r\n /*border-right: 1px solid #aaaaaa;*/\r\n}\r\n\r\n\r\n.as-ctn-collapse-node-content:hover::after,\r\n.as-ctn-node-content:hover::after {\r\n content: \"\";\r\n pointer-events: 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: 5;\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-ctn-collapse-node-content::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-ctn-collapse-node.as-open .as-ctn-collapse-node-children-ctn {\r\n /*max-height: calc(var(--children-height) + 1px);*/\r\n}\r\n\r\n\r\n.as-ctn-collapse-node.as-close .as-ctn-collapse-node-children-ctn,\r\n.as-ctn-node.as-close .as-ctn-node-children-ctn {\r\n /*max-height: 0;*/\r\n display: none;\r\n}\r\n\r\n\r\n.as-ctn-collapse-node-children-ctn,\r\n.as-ctn-node-children-ctn {\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-ctn-collapse-node.as-open .as-ctn-collapse-node-content,\r\n.as-ctn-collapse-node:not(:last-child) {\r\n /*border-bottom: 1px solid rgb(60, 60, 62);*/\r\n}\r\n\r\n.as-ctn-right {\r\n position: absolute;\r\n right: 10px;\r\n top: 0;\r\n height: 100%;\r\n}\r\n\r\n.as-ctn-right > button {\r\n width: 30px;\r\n height: 30px;\r\n\r\n}\r\n\r\n.as-ctn-right > button * {\r\n font-size: 20px;\r\n}\r\n\r\n\r\n.as-ctn-right::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-ctn-right > button:hover {\r\n background-color: var(--icon-background-cover-hover);\r\n\r\n}\r\n\r\n.as-ctn-text {\r\n margin-left: 7px;\r\n}\r\n\r\n.as-ctn-icon-ctn:empty {\r\n display: none;\r\n}\r\n\r\n\r\n.as-ctn-icon-ctn > * {\r\n font-size: 1.5em;\r\n}\r\n\r\n.as-ctn-icon-ctn > img,\r\n.as-ctn-icon-ctn > svg {\r\n width: 1em;\r\n height: 1em;\r\n}\r\n\r\n\r\n.as-ctn-text, .as-ctn-icon-ctn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-ctn-count {\r\n font-size: 14px;\r\n box-sizing: border-box;\r\n text-align: center;\r\n display: inline-block;\r\n vertical-align: middle;\r\n background-color: rgb(113, 148, 169);\r\n line-height: 20px;\r\n min-width: 20px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n height: 20px;\r\n border-radius: 10px;\r\n margin-left: 5px;\r\n color: white;\r\n}\r\n\r\n\r\n.as-ctn-node {\r\n position: relative;\r\n}\r\n\r\n\r\n.as-ctn-node-children-ctn:empty,\r\n.as-ctn-node-children-ctn:empty {\r\n display: none;\r\n}\r\n\r\n.as-ctn-node-children-ctn .as-ctn-node:first-child::before {\r\n top: -15px;\r\n height: 30px;\r\n}\r\n\r\n.as-ctn-node:not(:last-child)::before {\r\n height: 100%;\r\n}\r\n\r\n\r\n.as-ctn-node-content {\r\n position: relative;\r\n height: var(--node-content-height);\r\n padding-right: 10px;\r\n box-sizing: border-box;\r\n padding-left: calc(25px * var(--level) - 20px); /*5 is padding in level 0*/\r\n}\r\n\r\n\r\n.as-ctn-node-content::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-ctn-node-children-ctn {\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n\r\n.as-ctn-collapse-node.as-selected > .as-ctn-collapse-node-content .as-ctn-text,\r\n.as-ctn-node.as-selected > .as-ctn-node-content .as-ctn-text {\r\n text-shadow: 1px 0 0 currentColor;\r\n}\r\n\r\n\r\n.as-ctn-collapse-node-content .toggler-ico,\r\n.as-ctn-node-content .toggler-ico {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: 1em;\r\n height: 1em;\r\n}\r\n\r\n.as-ctn-collapse-node-content .toggler-ico g,\r\n.as-ctn-node-content .toggler-ico g {\r\n visibility: hidden;\r\n}\r\n\r\n.as-ctn-collapse-node.as-open > .as-ctn-collapse-node-content .toggler-ico .toggle-open,\r\n.as-ctn-collapse-node.as-close > .as-ctn-collapse-node-content .toggler-ico .toggle-close,\r\n.as-ctn-node.as-open > .as-ctn-node-content .toggler-ico .toggle-open,\r\n.as-ctn-node.as-close > .as-ctn-node-content .toggler-ico .toggle-close {\r\n visibility: visible;\r\n}\r\n", ""]); /***/ }), /***/ 1294: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}\r\n\r\n.as-color-picker-button[data-mode=\"HEX6\"] .as-null .as-color-cell-value {\r\n display: none;\r\n}\r\n\r\n.as-color-picker-button.as-border-none{\r\n border: none;\r\n}\r\n\r\n.as-select-color-scheme-menu-dropdown {\r\n font-size: 14px;\r\n padding: 5px;\r\n}\r\n\r\n.as-select-color-scheme-menu {\r\n box-sizing: border-box;\r\n padding-right: 30px;\r\n padding-left: 5px;\r\n}\r\n\r\n.as-select-color-scheme-menu::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-select-color-scheme-menu-selected-item {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-select-color-scheme-menu-selected-item .as-scsm-item-cell {\r\n width: 20px;\r\n height: 20px;\r\n}\r\n\r\n.as-scsm-item-list-row {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-scsm-item-wrapper {\r\n display: inline-block;\r\n vertical-align: top;\r\n padding: 7px;\r\n}\r\n\r\n.as-scsm-item {\r\n\r\n border-radius: 4px;\r\n overflow: hidden;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-scsm-item-wrapper:hover .as-scsm-item:not(.as-selected) {\r\n box-shadow: 0px 0px 0px 2px rgba(107, 159, 255, 0.5);\r\n}\r\n\r\n.as-scsm-item.as-selected {\r\n box-shadow: 0px 0px 0px 2px #1464f6;\r\n}\r\n\r\n.as-scsm-item-row {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-scsm-item-cell {\r\n width: 1.2em;\r\n height: 1.2em;\r\n display: inline-block;\r\n vertical-align: top;\r\n}", ""]); /***/ }), /***/ 2974: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-text-input {\r\n border-style: solid;\r\n border-width: 1px;\r\n border-radius: var(--as-input-border-radius);\r\n border-color: var(--as-input-border-color);\r\n outline: none;\r\n height: var(--as-input-height);\r\n padding-left: var(--as-input-vertical-padding);\r\n font-size: inherit;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-text-input[readonly].as-border-none {\r\n border: none;\r\n padding-left: 0;\r\n padding-right: 0;\r\n}\r\n\r\ninput[type=\"text\"].as-text-input:disabled,\r\ntextarea.as-text-input:disabled {\r\n background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n\r\n.as-blink-text {\r\n --blink-duration: 1s;\r\n --text-color: black;\r\n animation-name: as-anim-text-blink-1-1;\r\n animation-duration: var(--blink-duration);\r\n animation-iteration-count: infinite;\r\n}\r\n\r\n\r\n@keyframes as-anim-text-blink-1-1 {\r\n 0% {\r\n color: var(--text-color);\r\n }\r\n 49% {\r\n color: var(--text-color);\r\n }\r\n 50% {\r\n color: transparent;\r\n }\r\n 99% {\r\n color: transparent;\r\n }\r\n 100% {\r\n color: var(--text-color);\r\n }\r\n}\r\n\r\n.as-mti-star {\r\n font-family: 'Material Icons';\r\n color: #ffa834;\r\n font-size: var(--icon-font-size);\r\n -webkit-font-smoothing: antialiased;\r\n}\r\n\r\n.as-mti-star::before {\r\n content: \"star\";\r\n}\r\n\r\n.as-cursor-pointer {\r\n cursor: pointer;\r\n}\r\n\r\n\r\n.as-table-grid {\r\n display: table;\r\n}\r\n\r\n.as-table-grid.as-inline {\r\n display: inline-table;\r\n}\r\n\r\n.as-table-grid-row {\r\n display: table-row;\r\n}\r\n\r\n\r\n.as-table-grid-cell {\r\n display: table-cell;\r\n}\r\n\r\n\r\n.as-pseudo-align-child-center {\r\n text-align: center;\r\n}\r\n\r\n.as-pseudo-align-child-center::before {\r\n height: 100%;\r\n content: \"\";\r\n vertical-align: middle;\r\n display: inline-block;\r\n}\r\n\r\n.as-pseudo-align-child-center > * {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-transparent-button {\r\n background-color: transparent;\r\n border: none;\r\n padding: 0;\r\n margin: 0;\r\n font-size: inherit;\r\n color: var(--as-transparent-button-text-color);\r\n}\r\n\r\n.as-transparent-button:hover {\r\n color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n\r\n.as-transparent-button:active {\r\n color: var(--as-transparent-button-text-active-color);\r\n}\r\n\r\n.as-transparent-button .mdi {\r\n font-size: 1.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-transparent-button > svg,\r\n.as-transparent-button > img {\r\n width: 1.5em;\r\n height: 1.5em;\r\n}\r\n\r\n\r\n.as-transparent-button.as-variant-danger {\r\n color: var(--variant-color-danger);\r\n}\r\n\r\n.as-transparent-button.as-variant-danger:hover {\r\n color: #c03542;\r\n}\r\n\r\n\r\n\r\n.as-transparent-button.as-variant-danger:active{\r\n color: #ef0d23;\r\n}\r\n\r\nbutton.as-transparent-button:disabled {\r\n color: #dddddd;\r\n}\r\n\r\n.as-section-text-n-line {\r\n position: relative;\r\n display: block;\r\n padding-bottom: 5px;\r\n}\r\n\r\n.as-section-text-n-line span {\r\n background-color: white;\r\n position: relative;\r\n z-index: 2;\r\n padding-right: 5px;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.as-section-text-n-line::after {\r\n content: \"\";\r\n position: absolute;\r\n z-index: 1;\r\n left: 0;\r\n right: 0;\r\n top: calc(50% - 1px);\r\n border-top: 1px solid #dddddd;\r\n}\r\n", ""]); /***/ }), /***/ 2652: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-compact-data-grid-editor {\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n font-size: 14px;\r\n border: 1px solid #dddddd;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n\r\n.as-cag-var-mng {\r\n padding: 10px;\r\n border-bottom: 1px solid #dddddd;\r\n background-color: #fefefe;\r\n}\r\n\r\n.as-cag-var {\r\n display: inline-block;\r\n padding: 5px 10px;\r\n background-color: #0a90eb;\r\n border-radius: 5px;\r\n\r\n color: white;\r\n cursor: move;\r\n user-select: none;\r\n}\r\n\r\n.as-cag-var::after {\r\n content: attr(data-default-title);\r\n font-weight: inherit;\r\n font-style: inherit;\r\n}\r\n\r\n.as-cag-var:not([data-default-title]) {\r\n display: none;\r\n}\r\n\r\n\r\n.as-cag-var.as-focus {\r\n box-shadow: 0px 0px 2px 2px rgba(255, 153, 0, 0.75);\r\n}\r\n\r\n/*.as-cag-var::before {*/\r\n/* content: \"[title]: \";*/\r\n/*}*/\r\n\r\n.as-cag-var[data-title]::before {\r\n content: attr(data-title) \": \";\r\n font-style: italic;\r\n\r\n}\r\n\r\n.as-cag-var[data-title=\"\"]::before {\r\n display: none;\r\n}\r\n\r\n.as-clone-var {\r\n box-shadow: 0px 0px 0px 4px rgba(70, 70, 90, 0.95) !important;\r\n background-color: rgba(255, 255, 255, 0.7);\r\n color: rgba(0, 0, 0, 0.7);\r\n}\r\n\r\n.as-cag-var-mng .as-cag-var {\r\n margin-bottom: 5px;\r\n}\r\n\r\n.as-cag-var:not(:last-child) {\r\n margin-right: 10px;\r\n}\r\n\r\n\r\n.as-cdg-table {\r\n margin: 15px;\r\n border-collapse: collapse;\r\n user-select: none;\r\n}\r\n\r\n.as-cdg-table > thead {\r\n background-color: #e3e2e2;\r\n}\r\n\r\n.as-cdg-table > thead.as-hidden {\r\n display: none;\r\n}\r\n\r\n.as-cdg-table > thead th {\r\n border-color: #aaaaaa;\r\n height: 40px;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-cdg-table > thead pre{\r\n white-space: pre-wrap;\r\n font-family: inherit;\r\n outline: none;\r\n line-height: 1.5;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-cdg-table > thead pre:focus {\r\n background-color: rgba(255, 255, 255, 0.5);\r\n}\r\n\r\n.as-ca-cell:empty {\r\n padding: 10px 30px;\r\n text-align: center;\r\n}\r\n\r\n.as-cdg-table > tbody .as-ca-cell:empty::before {\r\n content: \"+\";\r\n font-size: 1.1em;\r\n color: #1da1ff;\r\n pointer-events: none;\r\n}\r\n\r\n.as-ca-cell {\r\n /*border: 1px dashed rgba(150, 150, 250, 0.3);*/\r\n border: 1px solid #dddddd;\r\n white-space: nowrap;\r\n padding: 5px 20px;\r\n position: relative;\r\n}\r\n\r\n.as-ca-cell.as-hovering,\r\n.as-ca-cell.as-hovering.as-selected {\r\n background-color: rgba(78, 246, 162, 0.15);\r\n}\r\n\r\n\r\n.as-ca-cell.as-selected {\r\n background-color: rgba(78, 222, 246, 0.25);\r\n}\r\n\r\n.as-ca-cell.as-drag-over::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n display: block;\r\n border: 2px solid #ff922a;\r\n pointer-events: none;\r\n}\r\n\r\n.as-ca-cell.as-drag-over.as-bf {\r\n --hover-x: 20px;\r\n\r\n}\r\n\r\n.as-ca-cell.as-drag-over.as-bf::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 4px;\r\n bottom: 4px;\r\n width: 6px;\r\n border-radius: 3px;\r\n background-color: #0a90eb;\r\n left: calc(var(--hover-x) - 8px);\r\n animation-name: as_ca_bf_blink;\r\n animation-duration: 0.5s;\r\n animation-iteration-count: infinite;\r\n}\r\n\r\n\r\n@keyframes as_ca_bf_blink {\r\n 0% {\r\n background-color: #0a90eb;\r\n }\r\n 50% {\r\n background-color: transparent;\r\n }\r\n 100% {\r\n background-color: #0a90eb;\r\n }\r\n}\r\n\r\n\r\n.as-cdg-variable-edit-dialog .as-table-grid-cell {\r\n padding: 5px 10px;\r\n}\r\n\r\n.as-cdg-variable-edit-dialog button {\r\n min-width: 100px;\r\n}\r\n\r\n\r\n.as-cdg-variable-edit-dialog input[type=\"text\"] {\r\n width: 200px;\r\n}\r\n\r\n\r\n.as-compact-data-grid-editor-body {\r\n overflow: auto;\r\n}\r\n\r\n.as-compact-data-grid-editor .as-table-of-text-input-tool .as-ribbon-button {\r\n width: 80px;\r\n}\r\n\r\n.as-compact-data-grid-editor .as-table-of-text-input-tool .as-ribbon-button svg {\r\n width: 24px;\r\n height: 24px;\r\n}\r\n\r\n.as-toggle-header-ico:not(.as-show-header) .as-icon-add {\r\n display: none;\r\n}\r\n\r\n.as-toggle-header-ico .as-icon-minus {\r\n stroke: red !important;\r\n}\r\n\r\n.as-toggle-header-ico.as-show-header .as-icon-minus,\r\n.as-toggle-header-ico.as-show-header .as-icon-add {\r\n stroke: blue !important;\r\n}", ""]); /***/ }), /***/ 8832: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: 1000000000;\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 user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n.absol-context-menu-anchor.absol-active {\r\n z-index: 1000000000 !important;\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.absol-context-menu-anchor .absol-dropright > .absol-dropright-content {\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 {\r\n font-size: var(--as-context-menu-font-size);\r\n font-family: var(--as-input-font-family);\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal,\r\n.absol-context-menu-anchor.as-anchor-modal {\r\n position: fixed;\r\n z-index: 800000000;\r\n left: 0 !important;\r\n right: 0 !important;;\r\n top: 0 !important;;\r\n bottom: 0 !important;;\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.absol-context-menu-anchor.as-anchor-modal::before,\r\n.absol-context-menu-anchor.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.absol-context-menu-anchor.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.absol-context-menu-anchor.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.absol-context-menu-anchor.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}\r\n\r\n.as-quick-menu {\r\n font-size: 1rem;\r\n}\r\n\r\n.as-quick-menu {\r\n --available-height: calc(100vh - 20px);\r\n max-height: var(--available-height);\r\n}\r\n\r\n.absol-context-menu-anchor.as-anchor-modal .as-quick-menu {\r\n max-height: calc(100vh - 20px);\r\n}", ""]); /***/ }), /***/ 3637: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 1535: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-countdown-text {\r\n\r\n}\r\n", ""]); /***/ }), /***/ 875: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-cpu-viewer{\r\n position: fixed;\r\n bottom: 5px;\r\n right: 5px;\r\n box-sizing: border-box;\r\n z-index: 1000000000;\r\n border: 1px solid black;\r\n display: inline-block;\r\n}\r\n\r\n.as-cpu-viewer canvas{\r\n display: block;\r\n}\r\n\r\n.as-pending-attachhook-count{\r\n padding: 10px;\r\n border-radius: 4px;\r\n position: fixed;\r\n z-index: 1000000;\r\n right: 10px;\r\n top: 10px;\r\n background: white;\r\n border: 1px solid red;\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n.as-pending-attachhook-count:hover {\r\n opacity: 0.0;\r\n}", ""]); /***/ }), /***/ 9008: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-date-input {\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\r\n border: 1px solid #ddd;\r\n border-radius: 3px;\r\n height: calc(2em + 2px);\r\n width: 10.5em;\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 overflow: hidden;\r\n}\r\n\r\n.as-date-input[data-format] {\r\n --format-width: 8.5em;\r\n width: calc(var(--format-width) + 2em + 1em);\r\n}\r\n\r\n.as-date-input-text {\r\n outline: none;\r\n width: calc(100% - 29px);\r\n height: 100%;\r\n border: none;\r\n background-color: transparent;\r\n display: block;\r\n padding: 0 0 0 var(--as-input-horizontal-padding);\r\n font: inherit;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-date-input-icon-ctn {\r\n font-size: inherit;\r\n border-left: 1px solid #ddd;\r\n border-right: none;\r\n border-top: none;\r\n border-bottom: none;\r\n text-align: center;\r\n position: absolute;\r\n right: 0;\r\n width: calc(2em + 1px);\r\n box-sizing: border-box;\r\n top: 0;\r\n height: 100%;\r\n background-color: rgba(169, 169, 169, 0.1);\r\n cursor: pointer;\r\n color: black;\r\n padding: 0;\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: calc(16em / 14);\r\n display: inline-block;\r\n padding: 0;\r\n}\r\n\r\n.as-date-input.as-read-only .as-date-input-icon-ctn {\r\n pointer-events: none;\r\n}\r\n\r\n.as-date-input.as-disabled {\r\n color: var(--as-disabled-text-color);\r\n pointer-events: none;\r\n}\r\n\r\n.as-date-input.as-disabled input {\r\n background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-date-input.as-value-null .as-date-input-clear-btn,\r\n.as-date-input.as-must-not-null .as-date-input-clear-btn {\r\n display: none;\r\n}\r\n\r\n.as-date-input-clear-btn {\r\n font-size: inherit;\r\n position: absolute;\r\n right: 2em;\r\n height: 2em;\r\n padding: 0 0.3em;\r\n top: calc(50% - 1em);\r\n box-sizing: border-box;\r\n background-color: transparent;\r\n border: none;\r\n color: #bbb;\r\n visibility: hidden;\r\n}\r\n\r\n.as-date-input.as-read-only .as-date-input-clear-btn {\r\n display: none;\r\n}\r\n\r\n.as-date-input-clear-btn:hover {\r\n color: rgb(132, 132, 132)\r\n}\r\n\r\n.as-date-input-clear-btn:active {\r\n color: #525555;\r\n}\r\n\r\n.as-date-input-text:focus + .as-date-input-clear-btn,\r\n.as-date-input:hover .as-date-input-clear-btn {\r\n visibility: visible;\r\n}\r\n\r\n.as-date-input.as-border-none {\r\n border: transparent;\r\n background-color: transparent;\r\n}\r\n\r\n.as-date-input.as-border-none .as-date-input-icon-ctn {\r\n display: none;\r\n}\r\n\r\n.as-date-input.as-border-none .as-date-input-text {\r\n width: 100%;\r\n padding-left: 0;\r\n}\r\n\r\n.as-date-n-level-input {\r\n white-space: nowrap;\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n width: 13.5em;\r\n height: calc(2em + 2px);\r\n}\r\n\r\n.as-date-n-level-input .as-date-input {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-date-n-level-input-select-level {\r\n position: absolute;\r\n left: 1px;\r\n top: 1px;\r\n width: 2em;\r\n height: 2em;\r\n padding: 0;\r\n}\r\n\r\n\r\n.as-date-n-level-input.as-disabled .as-date-n-level-input-select-level {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n.as-date-n-level-input.as-read-only .as-date-n-level-input-select-level {\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-date-n-level-input .as-date-input-text {\r\n padding-left: calc(var(--as-input-horizontal-padding) + 2em);\r\n width: calc(100% - 2em - 1px);\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-date-n-level-input.as-border-none.as-read-only .as-date-input {\r\n border: none;\r\n}\r\n\r\n\r\n.as-date-n-level-input.as-border-none.as-read-only .as-date-input-text {\r\n width: 100%;\r\n text-align: left;\r\n padding-left: 0;\r\n}\r\n.as-date-n-level-input.as-border-none.as-read-only button {\r\n display: none;\r\n}\r\n", ""]); /***/ }), /***/ 7256: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-date-in-year-follower {\r\n z-index: 900000000;\r\n}\r\n\r\n.as-date-in-year-picker {\r\n font-size: 1rem;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n /*width: 20em;*/\r\n box-sizing: border-box;\r\n border: 1px solid #dddddd;\r\n display: inline-block;\r\n padding: calc(10em / 14) calc(5rem / 14);\r\n box-shadow: 1px 1px 2px rgb(240, 240, 240);\r\n background-color: white;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-table {\r\n display: table;\r\n}\r\n\r\n.as-date-in-year-picker-row {\r\n display: table-row;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-row:first-child {\r\n text-align: center;\r\n line-height: 1.5;\r\n}\r\n\r\n.as-date-in-year-picker-cell {\r\n display: table-cell;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-cell:first-child {\r\n padding-right: 10px;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-month-col {\r\n position: relative;\r\n padding-top: calc(25em / 14);\r\n padding-bottom: calc(25em / 14);\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-date-in-year-picker-month-viewport {\r\n width: calc(50em / 14);\r\n overflow: hidden;\r\n\r\n}\r\n\r\n.as-date-in-year-picker-month-scroller {\r\n width: calc(100% + 17px);\r\n height: 8em;\r\n overflow-y: scroll;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\nbutton.as-date-in-year-picker-month {\r\n font-size: inherit;\r\n height: 2em;\r\n width: calc(50em / 14);\r\n padding: 0;\r\n border: none;\r\n background-color: transparent;\r\n}\r\n\r\nbutton.as-date-in-year-picker-month:hover {\r\n background-color: rgb(224, 245, 256);\r\n}\r\n\r\nbutton.as-date-in-year-picker-month.as-selected {\r\n background-color: rgb(188, 205, 236);\r\n border-radius: 3px;\r\n}\r\n\r\nbutton.as-date-in-year-picker-month > span {\r\n font-size: calc(16rem / 14);\r\n}\r\n\r\n\r\n.as-chrome-time-picker-scroller-up:hover,\r\n.as-chrome-time-picker-scroller-down:hover {\r\n background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n\r\n.as-date-in-year-picker-month-btn {\r\n position: absolute;\r\n left: 0;\r\n font-size: inherit;\r\n height: calc(20em / 14);\r\n width: calc(50em / 14);\r\n padding: 0;\r\n border: none;\r\n background-color: transparent;\r\n box-sizing: border-box;\r\n border-radius: 3px;\r\n}\r\n\r\n.as-date-in-year-picker-month-btn.as-up {\r\n top: 0;\r\n}\r\n\r\n.as-date-in-year-picker-month-btn.as-down {\r\n bottom: 0;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-month-btn:hover {\r\n background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n.as-date-in-year-picker-month-btn > span {\r\n font-size: 1.5em;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-days {\r\n display: inline-table;\r\n vertical-align: middle;\r\n border: solid 1px rgb(190, 190, 190);\r\n}\r\n\r\n.as-date-in-year-picker-week {\r\n display: table-row;\r\n}\r\n\r\n.as-date-in-year-picker-day {\r\n display: table-cell;\r\n text-align: right;\r\n padding: calc(5em / 14);\r\n line-height: calc(20em / 14);\r\n font-size: inherit;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-day:hover {\r\n background-color: rgb(224, 245, 256);\r\n cursor: default;\r\n}\r\n\r\n.as-date-in-year-picker-day.as-selected {\r\n background-color: rgb(188, 205, 236);\r\n}\r\n\r\n\r\n.as-date-time-input.as-date-in-year-input {\r\n width: calc(8em + 2px);\r\n}\r\n\r\n.as-date-in-year-input.as-must-not-null .as-time-input-clear-btn,\r\n.as-date-in-year-input.as-empty .as-time-input-clear-btn {\r\n display: none;\r\n}\r\n\r\n\r\n.as-date-in-year-follower {\r\n z-index: 1000000;\r\n}", ""]); /***/ }), /***/ 3892: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-date-time-input {\r\n border: 1px solid #ddd;\r\n border-radius: 3px;\r\n height: calc(2em + 2px);\r\n width: calc(14em + 2px);\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 overflow: hidden;\r\n}\r\n\r\n.as-date-time-input.as-disabled {\r\n color: var(--as-disabled-text-color);\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-date-time-input input {\r\n font-size: inherit;\r\n outline: none;\r\n width: calc(100% - 2em - 1px);\r\n height: 100%;\r\n border: none;\r\n display: block;\r\n padding: 0 0 0 var(--as-input-horizontal-padding);\r\n -webkit-user-select: auto;\r\n user-select: auto;\r\n -webkit-user-drag: none;\r\n color: inherit;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-date-time-input.as-disabled input {\r\n background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-date-time-input-icon-btn {\r\n border-right: none;\r\n border-top: none;\r\n border-bottom: none;\r\n border-left: 1px solid #ddd;\r\n position: absolute;\r\n right: 0;\r\n width: calc(2em + 1px);\r\n box-sizing: border-box;\r\n top: 0;\r\n bottom: 0;\r\n background-color: rgba(169, 169, 169, 0.1);\r\n cursor: pointer;\r\n border-radius: 0;\r\n color: inherit;\r\n font-size: inherit;\r\n padding: 0;\r\n}\r\n\r\n.as-date-time-input-icon-btn > span {\r\n font-size: calc(16em / 14);\r\n}\r\n\r\n\r\n.as-date-time-input-icon-btn:hover {\r\n background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-date-time-input-icon-btn:active {\r\n background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-date-time-input-icon-btn.as-disabled {\r\n color: rgb(102, 102, 102);\r\n pointer-events: none;\r\n}\r\n\r\n.as-date-time-input-follower {\r\n box-sizing: border-box;\r\n background-color: white;\r\n border: 1px solid #ddd;\r\n padding: 5px;\r\n}\r\n\r\n.as-date-time-input-date-picker {\r\n border: none;\r\n box-shadow: none;\r\n}\r\n\r\n.as-date-time-input-picker-header {\r\n text-align: right;\r\n padding-bottom: 5px;\r\n}\r\n\r\n\r\n.as-date-time-input-picker-btn {\r\n height: 20px;\r\n min-width: 25px;\r\n padding: 0 5px;\r\n box-sizing: border-box;\r\n font-size: inherit;\r\n border: 1px solid rgb(47, 82, 143);\r\n background-color: rgb(68, 144, 196);\r\n color: white;\r\n border-radius: 0;\r\n}\r\n\r\n.as-date-time-input-picker-btn:active {\r\n background-color: rgb(50, 122, 169);\r\n}\r\n\r\n\r\n.as-chrome-time-picker.as-date-time-input-time-picker {\r\n height: 11.8em;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-date-time-input-picker-ctn {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-date-time-input-picker-ctn > div {\r\n display: inline-block;\r\n white-space: initial;\r\n vertical-align: top;\r\n}\r\n\r\n.as-date-time-input-follower > div {\r\n border-color: white;\r\n}\r\n\r\n.as-date-time-input:hover .as-time-input-clear-btn {\r\n visibility: visible;\r\n}\r\n\r\n.as-date-time-input.as-must-not-null .as-time-input-clear-btn,\r\n.as-date-time-input.as-read-only .as-time-input-clear-btn {\r\n display: none;\r\n}\r\n\r\n\r\n.as-date-time-input.as-read-only .as-date-time-input-icon-btn {\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-date-time-input.as-border-none {\r\n border: none;\r\n}\r\n\r\n\r\n.as-date-time-input.as-border-none .as-date-time-input-icon-btn {\r\n display: none;\r\n}\r\n\r\n.as-date-time-input.as-border-none input {\r\n width: 100%;\r\n padding-left: 0;\r\n}\r\n\r\n.as-date-time-input[data-text].as-read-only.as-border-none input {\r\n display: none;\r\n}\r\n\r\n\r\n.as-date-time-input[data-text].as-read-only.as-border-none {\r\n width: auto;\r\n}\r\n\r\n.as-date-time-input[data-text].as-read-only.as-border-none::before {\r\n content: attr(data-text);\r\n line-height: 30px;\r\n}\r\n\r\n\r\n.as-relative-time-text[data-time-text]::after {\r\n content: attr(data-time-text);\r\n}", ""]); /***/ }), /***/ 1097: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}\r\n\r\n.as-debug-device-info {\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 999999;\r\n display: grid;\r\n grid-template-rows: auto 1fr;\r\n background: white;\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 14px;\r\n}\r\n\r\n.as-debug-device-info .as-header-bar-notification-action {\r\n display: none;\r\n}\r\n\r\n.as-debug-device-info-header {\r\n\r\n}\r\n\r\n.as-debug-device-info-body {\r\n overflow: auto;\r\n}\r\n\r\n\r\n.as-debug-device-info-content {\r\n align-content: start;\r\n padding: 10px;\r\n display: grid;\r\n grid-template-columns: auto auto;\r\n column-gap: 20px;\r\n row-gap: 10px;\r\n overflow: auto;\r\n}\r\n\r\n.as-debug-device-info-section {\r\n grid-column: span 2;\r\n font-weight: bold;\r\n}", ""]); /***/ }), /***/ 3486: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --as-input-height: calc(2rem + 2px);\r\n --as-input-font-size: 1rem;\r\n --as-input-font-family: Arial, Helvetica, sans-serif;\r\n --as-input-vertical-padding: 0.3571em;\r\n --as-input-horizontal-padding: 0.5em;\r\n --as-input-border-color: #ddd;\r\n --as-input-border-radius: 3px;\r\n --as-context-menu-font-size: 1rem;\r\n --as-context-font-family: Arial, Helvetica, sans-serif;\r\n --as-disabled-background-color: #ebebe4;\r\n --as-disabled-text-color: rgb(102, 102, 102);\r\n --icon-background-cover-hover: #91e4fb;\r\n --as-transparent-button-hover-color: rgba(169, 169, 172, 0.25);\r\n --as-transparent-button-focus-color: rgba(20, 185, 235, 0.3);\r\n --as-transparent-button-active-color: rgba(169, 169, 172, 0.2);\r\n --as-transparent-button-text-color: rgb(139, 139, 140);\r\n --as-transparent-button-text-hover-color: rgb(107, 107, 107);\r\n --as-transparent-button-text-active-color: rgb(0, 0, 0);\r\n\r\n --as-list-item-hover-background-color: #efefef;\r\n --as-list-item-selected-background-color: #dfdfdf;\r\n\r\n\r\n --modal-margin-top: 10vh;\r\n --icon-font-size: 1.42857142857rem;\r\n}\r\n\r\n", ""]); /***/ }), /***/ 4001: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 6083: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\r\n/**********************************************************************************************************************/\r\ndiv.as-dropdown-box-common-style {\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 border: solid 1px rgb(100, 100, 255);\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n background-color: white;\r\n}\r\n\r\n.as-dropdown-box-footer {\r\n height: calc(2em + 1px);\r\n border-top: 1px solid #dddddd;\r\n box-sizing: border-box;\r\n padding-left: 0.35em;\r\n white-space: nowrap;\r\n position: relative;\r\n}\r\n\r\n\r\n.as-dropdown-box-footer > *,\r\n.as-dropdown-box-footer::before,\r\n.as-dropdown-box-footer-right::before,\r\n.as-dropdown-box-footer-right > * {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-dropdown-box-footer-right::before,\r\n.as-dropdown-box-footer::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.as-dropdown-box-footer > *:not(:last-child) {\r\n margin-right: 6.5em;\r\n}\r\n\r\n.as-dropdown-box-footer .absol-checkbox-label.as-right {\r\n padding-left: 0.35em;\r\n}\r\n\r\n.as-dropdown-box-footer-right {\r\n position: absolute;\r\n right: 10px;\r\n top: 0;\r\n height: 100%;\r\n}\r\n\r\n.as-dropdown-box-footer a {\r\n cursor: pointer;\r\n margin-left: 30px;\r\n}\r\n\r\n.as-dropdown-box-footer a:hover {\r\n color: #1da1ff;\r\n}\r\n\r\n.as-dropdown-box-footer a.as-select-list-box-cancel-btn {\r\n color: #888888;\r\n}\r\n\r\n.as-dropdown-box-footer a.as-select-list-box-close-btn {\r\n padding: 0 10px;\r\n}\r\n\r\n.as-dropdown-box-footer a.as-select-list-box-cancel-btn:hover {\r\n color: #ea2121;\r\n}\r\n\r\n/********** MOBILE ***************/\r\n\r\n.am-modal.am-dropdown-box-modal{\r\n z-index: 100001000;\r\n}\r\n\r\n.am-dropdown-box {\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\r\n max-width: 95vw;\r\n}\r\n\r\n.am-dropdown-box.as-enable-search .absol-search-text-input,\r\n.am-dropdown-box-modal.as-enable-search .absol-search-text-input\r\n{\r\n visibility: visible;\r\n}\r\n\r\n.am-dropdown-box-header {\r\n height: calc(2em + 10px);\r\n display: block;\r\n white-space: nowrap;\r\n box-sizing: border-box;\r\n padding-top: 5px;\r\n padding-bottom: 5px;\r\n padding-left: 10px;\r\n border-bottom: solid 1px #dddddd;\r\n}\r\n\r\n.am-dropdown-box-header .absol-search-text-input {\r\n display: inline-block;\r\n width: calc(100% - 2em - 18px);\r\n vertical-align: middle;\r\n box-sizing: border-box;\r\n background-color: white;\r\n visibility: hidden;\r\n}\r\n\r\n.am-dropdown-box-close-btn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n border-radius: 50%;\r\n padding: 0;\r\n height: 2em;\r\n width: 2em;\r\n font-size: inherit;\r\n border: none;\r\n outline: none;\r\n margin-left: 10px;\r\n background-color: rgb(255, 255, 255);\r\n color: #7a7a7a;\r\n white-space: nowrap;\r\n}\r\n\r\n.am-dropdown-box-close-btn span {\r\n font-size: 1.5em;\r\n}\r\n\r\n.am-dropdown-box-close-btn:active {\r\n background-color: rgba(169, 169, 172, 0.3);\r\n}\r\n\r\n.am-dropdown-box-item {\r\n border-bottom: 1px solid #efefef;\r\n}\r\n", ""]); /***/ }), /***/ 9366: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\r\n.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 user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\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", ""]); /***/ }), /***/ 4517: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-drop-zone {\r\n}", ""]); /***/ }), /***/ 7008: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".am-dual-select-box {\r\n\r\n}\r\n\r\n\r\n.am-dual-select-box .absol-selectlist-item span {\r\n white-space: normal;\r\n display: inline-block;\r\n margin-right: 0;\r\n line-height: calc(30rem / 14);\r\n}\r\n\r\n.am-mobile-theme.bsc-white .am-dual-select-box .absol-selectlist-item span{\r\n line-height: calc(30rem / 14);\r\n}\r\n\r\n.am-dual-select-box .absol-selectlist-item {\r\n height: auto;\r\n}\r\n\r\n.am-mobile-theme.bsc-white .am-dual-select-box .absol-selectlist-item {\r\n height: auto;\r\n}\r\n\r\n.am-dual-select-box .absol-selectlist-item:not(:last-child) {\r\n border-bottom: 1px solid #efefef;\r\n}", ""]); /***/ }), /***/ 522: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-dual-select-box {\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 --max-height: 70vh;\r\n box-sizing: border-box;\r\n --dual-list-estimate-width: 0;\r\n width: var(--dual-list-estimate-width);\r\n z-index: 10000000;\r\n background-color: white;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\r\n\r\n}\r\n\r\n.as-dual-select-box-search-ctn {\r\n padding: 5px;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-6 .as-dual-select-box-search-ctn,\r\n.as-dual-select-box.as-enable-search.as-anchor-5 .as-dual-select-box-search-ctn {\r\n bottom: 0;\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-6,\r\n.as-dual-select-box.as-enable-search.as-anchor-5 {\r\n padding-bottom: calc(2rem + 10px);\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-1,\r\n.as-dual-select-box.as-enable-search.as-anchor-2 {\r\n padding-top: calc(2rem + 10px);\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-1 .as-dual-select-box-search-ctn,\r\n.as-dual-select-box.as-enable-search.as-anchor-2 .as-dual-select-box-search-ctn {\r\n top: 0;\r\n}\r\n\r\n\r\n.as-dual-select-box-list-ctn {\r\n white-space: nowrap;\r\n display: flex;\r\n align-items: stretch;\r\n}\r\n\r\n.as-dual-select-box:not(.as-enable-search) .as-dual-select-box-search-ctn {\r\n display: none;\r\n}\r\n\r\n.as-dual-select-box-list {\r\n display: inline-block;\r\n vertical-align: top;\r\n max-height: calc(var(--max-height) - 2em - 2em - 11px);\r\n overflow-y: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-dual-select-box.as-enable-search .as-dual-select-box-list {\r\n max-height: calc(var(--max-height) - 6rem - 11px);\r\n}\r\n\r\n.as-dual-select-box-arrow-ctn {\r\n display: inline-block;\r\n vertical-align: top;\r\n}\r\n\r\n.as-dual-select-box-arrow-ctn::before,\r\n.as-dual-select-box-arrow-ctn span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-dual-select-box-arrow-ctn::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n\r\n.as-dual-select-box-list:first-child {\r\n border-right: solid 1px #dddddd;\r\n}\r\n\r\n\r\n.as-dual-select-box-list:last-child {\r\n border-left: solid 1px #dddddd;\r\n flex-grow: 1;\r\n}\r\n\r\n.as-dual-select-menu.absol-selectmenu {\r\n min-width: calc(var(--dual-list-estimate-text-width) + 5.5em);\r\n --dual-list-estimate-text-width: 20px;\r\n}\r\n\r\n\r\n.am-dual-select-menu .absol-selectmenu-holder-item{\r\n position: relative;\r\n height: 100%;\r\n top: unset;\r\n bottom: unset;\r\n}\r\n\r\n.am-dual-select-menu{\r\n width: auto;\r\n}", ""]); /***/ }), /***/ 7078: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-dv-exp-tree {\r\n\r\n}\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .absol-exp-node-level {\r\n}\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .absol-radio-button {\r\n vertical-align: middle;\r\n display: inline-block;\r\n margin-right: 5px;\r\n /*margin-left: 5px;*/\r\n}\r\n\r\n\r\n.as-dv-exp-tree:not(.as-has-radio) > .absol-exp-node > .absol-radio-button {\r\n /*visibility: hidden;*/\r\n display: none;\r\n}\r\n\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .as-dv-exp-tree-index {\r\n box-sizing: border-box;\r\n padding: 0 0 0 0.5em;\r\n margin-left: 0.5em;\r\n outline: none;\r\n height: 1.2em;\r\n min-width: 3em;\r\n box-shadow: 0 0 0 1px #dddddd;\r\n display: inline-block;\r\n vertical-align: middle;\r\n background-color: white;\r\n}\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .as-dv-exp-tree-index:hover{\r\n box-shadow: 0 0 0 1px #aaaaaa;\r\n}\r\n\r\n.as-dv-exp-tree:not(.as-has-index-input) > .absol-exp-node > .as-dv-exp-tree-index {\r\n display: none;\r\n}\r\n\r\n/*.as-dv-exp-tree>.absol-exp-node:not(.status-open):not(.status-close)>.toggler-ico{*/\r\n/* display: none;*/\r\n/*}*/\r\n\r\n/*.as-dv-exp-tree .absol-exp-node-ext-icon{*/\r\n/* display: none;*/\r\n/*}*/", ""]); /***/ }), /***/ 6049: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --table-row-height: 40px;\r\n}\r\n\r\n\r\n.as-efficient-table-wrapper {\r\n box-sizing: border-box;\r\n position: relative;\r\n overflow: hidden;\r\n overflow-anchor: none !important;\r\n scroll-snap-stop: normal !important;\r\n overscroll-behavior: unset !important;\r\n scroll-behavior: unset !important;\r\n}\r\n\r\n.as-efficient-table-wrapper > .as-dynamic-table {\r\n position: relative;\r\n table-layout: auto;\r\n}\r\n\r\n.as-efficient-table-wrapper.as-headless .as-dynamic-table {\r\n table-layout: fixed;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper {\r\n --dt-content-height: 0px;\r\n --dt-scroll-bar-width: 17px;\r\n --dt-content-width: 0;\r\n --dt-header-height: 0;\r\n --dt-fixed-x-width: 0;\r\n --dt-dragging-row-height: 0;\r\n position: relative;\r\n\r\n /*padding-right: 17px;*/\r\n /*padding-bottom: 17px;*/\r\n box-sizing: border-box;\r\n height: calc(var(--dt-content-height) + 1px);\r\n overflow: hidden;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-width-match-parent {\r\n\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-table-layout-fixed table.as-dynamic-table {\r\n table-layout: fixed;\r\n}\r\n\r\ntd .as-dynamic-table-wrapper .as-dt-header-cell {\r\n --as-force-min-width: 0;\r\n}\r\n\r\n.as-dynamic-table-wrapper .as-dt-header-cell.as-col-width-auto::before { /*table in table bug*/\r\n content: \"\";\r\n display: block;\r\n width: var(--as-force-min-width);\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-inline {\r\n max-width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width));\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x.as-has-fixed-col .as-dynamic-table-viewport::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n border-right: 2px solid #aaa;\r\n left: calc(var(--dt-fixed-x-width) - 1px);\r\n z-index: 20;\r\n pointer-events: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y .as-dynamic-table-viewport::after {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n max-width: var(--dt-content-width);\r\n border-top: 2px solid #aaa;\r\n top: calc(var(--dt-header-height) - 1px);\r\n z-index: 20;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col {\r\n max-width: var(--dt-content-width);\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col.as-overflow-y {\r\n max-width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width));\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-inline {\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x {\r\n padding-bottom: var(--dt-scroll-bar-width);\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x {\r\n height: calc(var(--dt-content-height) + var(--dt-scroll-bar-width));\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x .as-dynamic-table-hb,\r\n.as-dynamic-table-wrapper.as-overflow-y .as-dynamic-table-vb {\r\n display: block;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y {\r\n padding-right: var(--dt-scroll-bar-width);\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y.as-width-auto {\r\n /*max-width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width)); disable for resizer testing*/\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y.as-has-fixed-col,\r\n.as-dynamic-table-wrapper.as-overflow-y:not(.as-width-match-parent) {\r\n /*max-width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width));*/\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-adapt-infinity-grow.as-auto-height {\r\n height: calc(var(--dt-content-height) + 1px) !important;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-adapt-infinity-grow {\r\n max-height: unset !important;\r\n}\r\n\r\n\r\n.as-dynamic-table-viewport {\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n position: relative;\r\n}\r\n\r\n\r\n.as-dynamic-table.as-dt-fixed-y,\r\n.as-dynamic-table.as-fixed-x {\r\n table-layout: fixed;\r\n width: auto;\r\n /*display: inline-block;*/\r\n}\r\n\r\n.as-dynamic-table-fixed-x-ctn {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n z-index: 6;\r\n display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col .as-dynamic-table-fixed-x-ctn {\r\n display: block;\r\n}\r\n\r\n.as-dynamic-table-fixed-xy-ctn {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n z-index: 9;\r\n}\r\n\r\n\r\n.as-dynamic-table-fixed-y-ctn {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 6;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-headless .as-dynamic-table-fixed-x-ctn,\r\n.as-dynamic-table-wrapper.as-headless .as-dynamic-table-fixed-y-ctn,\r\n.as-dynamic-table-wrapper.as-headless .as-dynamic-table-fixed-xy-ctn {\r\n visibility: hidden;\r\n}\r\n\r\n.as-dynamic-table-space {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n}\r\n\r\n.as-dynamic-table-space > table {\r\n vertical-align: top;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col .as-dynamic-table-space,\r\n.as-dynamic-table-wrapper.as-inline .as-dynamic-table-space {\r\n width: 8096px;\r\n}\r\n\r\n\r\n.as-dynamic-table-vb {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n height: 100%;\r\n width: var(--dt-scroll-bar-width);\r\n display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x .as-dynamic-table-vb {\r\n height: calc(100% - var(--dt-scroll-bar-width));\r\n}\r\n\r\n.as-dynamic-table-hb {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n height: var(--dt-scroll-bar-width);\r\n display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y .as-dynamic-table-hb {\r\n width: calc(100% - var(--dt-scroll-bar-width));\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-no-paging .absol-page-selector {\r\n display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper .absol-page-selector[data-page-count=\"1\"] {\r\n display: none;\r\n}\r\n\r\n\r\n.as-dynamic-table-fixed-x-col {\r\n display: none;\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: auto !important;\r\n z-index: 12;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col .as-dynamic-table-fixed-x-col {\r\n display: block;\r\n}\r\n\r\n.as-dynamic-table {\r\n font-size: 1rem;\r\n font-family: Arial, Helvetica, sans-serif;\r\n border-collapse: collapse;\r\n box-sizing: border-box;\r\n display: inline-table;\r\n table-layout: fixed;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper:not(.as-inline) .as-dynamic-table-space .as-dynamic-table {\r\n /*min-width: 100%;*/\r\n table-layout: auto;\r\n /*display: table;*/\r\n}\r\n\r\n.as-dt-header {\r\n background-color: #d6d6d6;\r\n}\r\n\r\n.as-dt-header-cell {\r\n font-weight: bold;\r\n padding: 10px;\r\n border: 1px solid #ababab;\r\n position: relative;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-dt-header-cell-resizer {\r\n position: absolute;\r\n right: -3px;\r\n top: 0;\r\n bottom: 0;\r\n width: 6px;\r\n /*border-right: 6px solid transparent;*/\r\n z-index: 5;\r\n cursor: col-resize;\r\n /*display: none;*/\r\n}\r\n\r\n/*\r\n.as-dynamic-table-wrapper[id] .as-dt-header-cell[data-col-id] .as-dt-header-cell-resizer {\r\n display: block;\r\n}*/\r\n\r\n.as-dt-header-cell[data-sort-key] {\r\n padding-right: 1.75em;\r\n cursor: pointer;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n.as-dt-sort-btn {\r\n display: none;\r\n vertical-align: middle;\r\n line-height: 1.5em;\r\n position: absolute;\r\n right: 0.25em;\r\n top: calc(50% - 0.75em);\r\n color: #a9a9a9;\r\n\r\n height: 1.5em;\r\n width: 1.5em;\r\n pointer-events: none;\r\n /*color: transparent;*/\r\n}\r\n\r\n.as-dt-header-cell[data-sort-key] .as-dt-sort-btn {\r\n display: inline-block;\r\n}\r\n\r\n.as-dt-header-cell[data-sort-order=\"ascending\"] .as-dt-sort-btn .mdi-menu-up,\r\n.as-dt-header-cell[data-sort-order=\"descending\"] .as-dt-sort-btn .mdi-menu-down {\r\n color: #007bff;\r\n}\r\n\r\n.as-dt-sort-btn span {\r\n position: absolute;\r\n display: inline-block;\r\n left: 0;\r\n font-size: 2em;\r\n\r\n}\r\n\r\n.as-dt-sort-btn .mdi-menu-up {\r\n bottom: 0.18em;\r\n}\r\n\r\n\r\n.as-dt-sort-btn .mdi-menu-down {\r\n top: 0.18em;\r\n}\r\n\r\n\r\n.as-dt-body-row:nth-child(odd) {\r\n background-color: rgb(245, 245, 245);\r\n}\r\n\r\n.as-dt-body-row:nth-child(even) {\r\n background-color: white;\r\n}\r\n\r\n.as-dt-body-cell {\r\n padding: 4px 5px;\r\n border: 1px solid #ddd;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-dt-body-row .as-drag-zone{\r\n user-select: none;\r\n}\r\n\r\n.as-dt-body-row .as-drag-zone .mdi,\r\n.as-tree-table-row .as-drag-zone .mdi {\r\n font-size: 25px;\r\n}\r\n\r\n\r\n.as-dt-body-row {\r\n height: calc(40em / 14);\r\n}\r\n\r\n.as-dt-body-row {\r\n height: var(--table-row-height);\r\n}\r\n\r\n.as-dynamic-table-wrapper:not(.as-searching) .as-dt-body-row .as-drag-zone,\r\n.as-tree-table:not(.as-searching) .as-tree-table-row .as-drag-zone {\r\n cursor: move;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-row-dragging .as-dt-body-row {\r\n transition: transform 0.2s;\r\n}\r\n\r\n.as-dt-body-row.as-dragging {\r\n opacity: 0.0;\r\n /*position: relative;*/\r\n /*z-index: 1000000;*/\r\n\r\n /*opacity: 0.8;*/\r\n}\r\n\r\n\r\n.as-dt-body-row.as-after-dragging {\r\n\r\n}\r\n\r\n\r\n.as-dt-body-row-cloned-ctn {\r\n position: fixed;\r\n cursor: move;\r\n opacity: 0.7;\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-dt-body-row-cloned-ctn > table {\r\n display: block;\r\n}\r\n\r\n.as-dt-body-row.as-drag-neighbor {\r\n position: relative;\r\n z-index: 1;\r\n transition: transform 0.05s;\r\n\r\n}\r\n\r\n.as-dt-body-row.as-dragging.as-homing {\r\n transition: transform 0.06s;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-searching .as-drag-zone {\r\n opacity: 0.3;\r\n pointer-events: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper .as-drag-zone {\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n.as-dt-insert-line {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n border-top: 2px solid blue;\r\n}\r\n\r\n.as-dt-body-cell > .absol-checkbox:last-child:first-child {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-dt-row-index::before {\r\n content: attr(data-idx);\r\n}\r\n\r\n.as-dt-row-index:not([data-idx])::before {\r\n content: \"000\";\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-header-cell,\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-body-cell {\r\n border: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-header,\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-body-row {\r\n background-color: transparent;\r\n}\r\n\r\n\r\n.absol-single-page-scroller-viewport .as-dynamic-table-wrapper:not(.as-adapt-infinity-grow) {\r\n max-height: calc(var(--single-page-scroller-height) - 2px);\r\n}\r\n\r\n.absol-single-page-scroller-viewport > div:last-child .as-dynamic-table-wrapper:not(.as-adapt-infinity-grow) {\r\n max-height: calc(var(--single-page-scroller-height) - 2px);\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper tr.as-dragged,\r\n.as-dynamic-table-wrapper tr.as-dragging{\r\n background-color: #FFF9C4;\r\n}\r\n\r\n/*.absol-single-page-scroller-viewport > div:last-child .as-dynamic-table-wrapper.as-overflow-y:not(.as-adapt-infinity-grow) {*/\r\n/* max-height: calc(var(--single-page-scroller-height) - 2px);*/\r\n/*} try remove this*/\r\n\r\n\r\n/*Keeview modal*/\r\nbody > div > table .as-dynamic-table-wrapper {\r\n width: var(--dt-content-width);\r\n max-width: calc(90vw - 50px);\r\n}\r\n\r\nbody > div > table .as-dynamic-table-wrapper.as-overflow-y {\r\n width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width));\r\n max-width: calc(90vw - 50px);\r\n}\r\n\r\n/*.as-dynamic-table-wrapper*/\r\n\r\n", ""]); /***/ }), /***/ 4284: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\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", ""]); /***/ }), /***/ 1527: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: calc(2rem + 2px);\r\n text-align: center;\r\n min-height: calc(2rem + 2px);\r\n padding: 0 8px;\r\n border-radius: calc(1rem + 1px);\r\n font-size: 1rem;\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: 1.285em;\r\n height: 1.285em;\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}", ""]); /***/ }), /***/ 1139: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-emoji-picker {\r\n font-size: calc(12em / 14);\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: 5.7em;\r\n height: calc(8em + 30px);\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% - 5.7em - 1px);\r\n height: calc(8em + 30px);\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: 2em;\r\n height: 2em;\r\n box-sizing: border-box;\r\n border-radius: 0.4em;\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}", ""]); /***/ }), /***/ 6208: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 1501: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 9446: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "/*.as-expression-input {*/\r\n/* box-sizing: border-box;*/\r\n/* border: 1px solid var(--as-input-border-color);*/\r\n/* min-height: var(--as-input-height);*/\r\n\r\n/*}*/\r\n\r\n/*.as-expression-input-content {*/\r\n/* font-size: 14px;*/\r\n/* line-height: 2;*/\r\n/* min-height: 2em;*/\r\n/*}*/\r\n\r\n/*.as-expression-input-content::before{*/\r\n/* content: \"=\";*/\r\n/* color: #aaaaaa;*/\r\n/* display: inline-block;*/\r\n/* height: 28px;*/\r\n/* vertical-align: middle;*/\r\n/* padding: 0 5px;*/\r\n/*}*/\r\n\r\n/*.asei-identifier{*/\r\n/* display: inline-block;*/\r\n/*}*/\r\n\r\n\r\n.as-expression-input {\r\n font-family: Consolas, monospace;\r\n border-color: var(--as-input-border-color);\r\n border-style: solid;\r\n box-sizing: border-box;\r\n border-width: 1px;\r\n border-radius: var(--as-input-border-radius);\r\n font-size: 14px;\r\n position: relative;\r\n line-height: 2;\r\n background-color: white;\r\n}\r\n\r\n.as-expression-input.as-disabled {\r\n background-color: var(--as-disabled-background-color);\r\n color: var(--as-disabled-text-color);\r\n pointer-events: none;\r\n}\r\n\r\n.as-expression-input.as-border-none {\r\n border: none;\r\n}\r\n\r\n.as-expression-input:not(.as-read-only):not(.as-disabled){\r\n user-select: none;\r\n}\r\n\r\n.as-expression-input-range-ctn {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 9;\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-expression-input-range {\r\n position: absolute;\r\n background-color: rgba(19, 176, 233, 0.4);\r\n}\r\n\r\n\r\n.as-expression-input-content {\r\n min-height: 28px;\r\n outline: none;\r\n line-height: inherit;\r\n white-space: pre-wrap;\r\n padding-left: var(--as-input-horizontal-padding);\r\n}\r\n\r\n.as-expression-input-range-ctn {\r\n left: var(--as-input-horizontal-padding);\r\n\r\n}\r\n\r\n.as-expression-input.as-has-icon .as-expression-input-content {\r\n padding-left: calc(18px + var(--as-input-horizontal-padding));\r\n}\r\n\r\n.as-expression-input.as-has-icon .as-expression-input-range-ctn {\r\n left: calc(18px + var(--as-input-horizontal-padding));\r\n}\r\n\r\n\r\n.as-expression-input-content .as-token[data-type=\"number\"] {\r\n color: #0289f6;\r\n}\r\n\r\n.as-expression-input-content .as-token[data-type=\"string\"] {\r\n color: darkgreen;\r\n}\r\n\r\n\r\n.as-expression-input-content .as-token[data-ex-type=\"boolean\"] {\r\n color: #f6a128;\r\n}\r\n\r\n\r\n.as-expression-input-content .as-token[data-ex-type=\"function\"] {\r\n color: #2419c8\r\n}\r\n\r\n.as-expression-input-icon-ctn {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n pointer-events: none;\r\n font-size: 1.5em;\r\n line-height: 28px;\r\n display: none;\r\n}\r\n\r\n\r\n.as-expression-input.as-has-icon .as-expression-input-icon-ctn {\r\n display: block;\r\n}\r\n\r\n.as-expression-input-icon-ctn .mdi-equal {\r\n color: rgba(169, 169, 170);\r\n}\r\n\r\n.as-expression-input-icon-ctn .mdi-alert-circle {\r\n color: red;\r\n opacity: 0.8;\r\n display: none;\r\n}\r\n\r\n\r\n.as-expression-input.as-error .as-expression-input-icon-ctn .mdi-alert-circle {\r\n display: inline-block;\r\n}\r\n\r\n.as-expression-input.as-error .as-expression-input-icon-ctn .mdi-equal {\r\n display: none;\r\n}\r\n\r\n\r\n.as-token.as-unexpected-token {\r\n background-color: red;\r\n animation-name: error_blink;\r\n animation-duration: 1s;\r\n animation-iteration-count: infinite;\r\n}\r\n\r\n.as-expression-input-autocomplete {\r\n min-width: 10em;\r\n position: fixed;\r\n z-index: 1000;\r\n}\r\n\r\n.as-expression-input-autocomplete .absol-selectlist-item {\r\n padding-right: 0.3em;\r\n}\r\n\r\n.as-ei-suggestion-list-item {\r\n --level: 0;\r\n height: 30px;\r\n padding-right: 1em;\r\n min-width: 10em;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-ei-suggestion-list-item:hover {\r\n background-color: var(--as-list-item-hover-background-color);\r\n}\r\n\r\n.as-ei-suggestion-list-item.as-selected {\r\n background-color: var(--as-list-item-selected-background-color);\r\n}\r\n\r\n\r\n.as-ei-suggestion-list-item::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.as-ei-suggestion-list-item > *,\r\n.as-ei-suggestion-list-item::before\r\n{\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-ei-suggestion-list-item:not(.as-status-open):not(.as-status-close) .as-eisli-toggler{\r\n visibility: hidden;\r\n}\r\n\r\n.as-ei-suggestion-list-item.as-status-open .toggle-close,\r\n.as-ei-suggestion-list-item.as-status-close .toggle-open\r\n{\r\n display: none;\r\n}\r\n\r\n\r\n\r\n.as-eisli-toggler {\r\n text-align: right;\r\n width: calc(1em * var(--level) + 1.5em);\r\n padding-right: 0.5em;\r\n}\r\n\r\n.as-ei-suggestion-list {\r\n max-height: calc(100vh - 100px);\r\n overflow-y:auto ;\r\n}\r\n\r\n.as-ei-suggestion-list .mdi {\r\n width: 30px;\r\n text-align: center;\r\n font-size: 1em;\r\n}\r\n\r\n.as-ei-suggestion-list .mdi.mdi-function {\r\n color: #2419c8;\r\n}\r\n\r\n.as-ei-suggestion-list .mdi.mdi-variable {\r\n color: #5b5d42;\r\n}\r\n\r\n.as-ei-suggestion-list .am-select-tree-leaf-item-icon-ctn {\r\n left: calc(2em * var(--level) - 14px)\r\n}\r\n\r\n.as-expression-input-real-input {\r\n position: absolute;\r\n z-index: 10;\r\n right: 0;\r\n top: 0;\r\n width: 100px;\r\n height: 100px;\r\n opacity: 0.5;\r\n /*visibility: hidden;*/\r\n}\r\n\r\n.as-expression-input-foreground {\r\n position: absolute;\r\n z-index: 8;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n\r\n}\r\n\r\n.as-ei-command-tool {\r\n background: white;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 3px;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n padding: 0 3px;\r\n box-sizing: border-box;\r\n height: 31px;\r\n}\r\n\r\n.as-ei-command-tool::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-ei-command-tool button {\r\n font-size: 14px;\r\n width: 25px;\r\n height: 25px;\r\n padding: 0;\r\n box-sizing: border-box;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-ei-command-tool button:hover {\r\n background-color: #f0f0f0;\r\n}\r\n\r\n.as-ei-command-tool button:not(:last-child) {\r\n margin-right: 3px;\r\n}\r\n\r\n@keyframes error_blink {\r\n 0% {\r\n background-color: red\r\n }\r\n 50% {\r\n background-color: transparent\r\n }\r\n 100% {\r\n background-color: red\r\n }\r\n}", ""]); /***/ }), /***/ 1741: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.absol-exp-node:focus,\r\n.absol-exp-node.as-active:focus {\r\n background-color: var(--as-transparent-button-focus-color);\r\n}\r\n\r\n.absol-exp-node.as-active {\r\n background-color: var(--as-transparent-button-active-color);\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\tvertical-align: middle;\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}", ""]); /***/ }), /***/ 4813: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-file-input-box {\r\n font-size: 14px;\r\n position: relative;\r\n width: 100px;\r\n height: 100px;\r\n box-sizing: border-box;\r\n border: 1px solid #dddddd;\r\n background-color: white;\r\n font-family: Arial, Helvetica, sans-serif;\r\n overflow: visible;\r\n}\r\n\r\n.as-file-input-box-trigger:hover + .as-file-input-box-upload-overlay,\r\n.as-file-input-box-trigger.as-drag-over + .as-file-input-box-upload-overlay {\r\n display: block;\r\n}\r\n\r\n.as-file-input-box-trigger input {\r\n visibility: hidden;\r\n opacity: 0;\r\n}\r\n\r\n.as-file-input-box-upload-overlay {\r\n display: none;\r\n pointer-events: none;\r\n background-color: rgba(30, 30, 80, 0.3);\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 5;\r\n overflow: hidden;\r\n text-align: center;\r\n white-space: nowrap;\r\n font-size: 3em;\r\n color: #b0fffb;\r\n}\r\n\r\n.as-file-input-box-upload-overlay::before,\r\n.as-file-input-box-upload-overlay > span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-file-input-box-upload-overlay::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n\r\n.as-file-input-box-trigger {\r\n position: absolute;\r\n z-index: 2;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n opacity: 0;\r\n}\r\n\r\n.as-file-input-box:not(.as-has-file-name) .as-file-input-box-file-name,\r\n.as-file-input-box:not(.as-has-file-name) .as-file-input-box-file-name + br,\r\n.as-file-input-box:not(.as-has-file-size) .as-file-input-box-file-size,\r\n.as-file-input-box:not(.as-has-value) .as-file-input-box-action-left,\r\n.as-file-input-box:not(.as-has-value) .as-file-input-box-action-right,\r\n.as-file-input-box:not(.as-downloadable) .as-file-input-box-action-right,\r\n.as-file-input-box:not(.as-removable) .as-file-input-box-action-left,\r\n.as-file-input-box:not(.as-allow-upload) .as-file-input-box-trigger {\r\n display: none;\r\n}\r\n\r\n\r\n.as-file-input-box-background {\r\n position: absolute;\r\n z-index: 1;\r\n left: 4%;\r\n top: 4%;\r\n right: 4%;\r\n bottom: 4%;\r\n background-size: contain;\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n overflow: hidden;\r\n}\r\n\r\n.as-file-input-box.as-allow-upload .as-file-input-box-background {\r\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNhYWFhYWEiIGQ9Ik0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTExLDE1VjEySDlWMTVINlYxN0g5VjIwSDExVjE3SDE0VjE1SDExWiIgLz4NCjwvc3ZnPg==);\r\n}\r\n\r\n\r\n.as-file-input-box-info {\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n padding: 2px;\r\n z-index: 3;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n background-color: rgba(255, 255, 255, 0.3);\r\n pointer-events: none;\r\n text-align: center;\r\n}\r\n\r\n.as-file-input-box-file-name {\r\n font-size: inherit;\r\n color: black;\r\n text-shadow: 0 0 5px white;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-file-input-box-action-left,\r\n.as-file-input-box-action-right {\r\n position: absolute;\r\n z-index: 6;\r\n top: 0;\r\n}\r\n\r\n\r\n.as-file-input-box-action-left {\r\n left: 0;\r\n}\r\n\r\n\r\n.as-file-input-box-action-right {\r\n right: 0;\r\n}\r\n\r\n.as-file-input-box button {\r\n height: 2em;\r\n width: 2em;\r\n padding: 0;\r\n border: none;\r\n background-color: rgba(255, 255, 255, 0.3);\r\n border-radius: 0;\r\n}\r\n\r\n.as-file-input-box button span {\r\n font-size: 1.5em;\r\n}\r\n\r\n.as-file-input-box .mdi-close {\r\n color: rgb(250, 100, 100);\r\n}\r\n\r\n.as-file-input-box .mdi-download {\r\n color: rgb(100, 100, 250);\r\n}\r\n\r\n.as-file-input-box button:hover .mdi-close {\r\n color: rgb(250, 50, 50);\r\n}\r\n\r\n.as-file-input-box button:hover .mdi-download {\r\n color: rgb(50, 50, 250);\r\n}\r\n\r\n.as-file-input-box button:active .mdi-close {\r\n color: rgb(250, 0, 0);\r\n}\r\n\r\n.as-file-input-box button:active .mdi-download {\r\n color: rgb(0, 0, 250);\r\n}\r\n\r\n.as-file-input-box-checked {\r\n display: none;\r\n box-sizing: border-box;\r\n z-index: 4;\r\n position: absolute;\r\n left: -1px;\r\n top: -1px;\r\n bottom: -1px;\r\n right: -1px;\r\n pointer-events: none;\r\n border: 3px solid #0a90eb;\r\n overflow: hidden;\r\n}\r\n\r\n.as-file-input-box.as-checked .as-file-input-box-checked{\r\n display: block;\r\n}\r\n\r\n.as-file-input-box-checked::before {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n right: -20px;\r\n top: -20px;\r\n width: 40px;\r\n height: 40px;\r\n transform: rotate(45deg);\r\n background-color: #0a90eb;\r\n}\r\n\r\n.as-file-input-box-checked .mdi {\r\n display: inline-block;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n font-size: 14px;\r\n color: white;\r\n}", ""]); /***/ }), /***/ 4745: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\r\n.as-file-list-input {\r\n padding: 5px;\r\n border: 1px solid #dddddd;\r\n box-sizing: border-box;\r\n overflow: auto;\r\n --item-width: 100%;\r\n --item-require-width: 300px;\r\n position: relative;\r\n min-height: 42px;\r\n}\r\n\r\n.as-file-list-input.as-border-none {\r\n border: none;\r\n padding: 0;\r\n}\r\n\r\n.as-file-list-input.as-disabled {\r\n background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-file-list-input.as-disabled > * {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n.as-file-list-input-upload-overlay {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n overflow: hidden;\r\n text-align: center;\r\n white-space: nowrap;\r\n pointer-events: none;\r\n background-color: rgba(30, 30, 80, 0.3);\r\n color: #b0fffb;\r\n}\r\n\r\n.as-file-list-input-upload-overlay::before {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n content: \"\";\r\n}\r\n\r\n.as-file-list-input-upload-overlay > span {\r\n font-size: 30px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-file-list-input:not(.as-drag-over) .as-file-list-input-upload-overlay,\r\n.as-file-list-input:not(.as-droppable) .as-file-list-input-upload-overlay,\r\n.as-file-list-input:not(.as-droppable) .as-file-list-drag-file-text,\r\n.as-file-list-input.as-read-only .as-file-list-input-upload-overlay {\r\n display: none;\r\n}\r\n\r\n/*span.mdi.mdi-upload*/\r\n\r\n.as-file-list-input .as-file-input-box {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-right: 10px;\r\n}\r\n\r\n.as-file-list-input.as-read-only .as-file-list-input-add {\r\n display: none;\r\n}\r\n\r\n.as-file-list-input-add {\r\n border: none;\r\n width: 3.5em;\r\n border-radius: 5px;\r\n background-color: rgba(235, 235, 235, 0.2);\r\n height: calc(2em + 2px);\r\n padding-bottom: 10px;\r\n box-sizing: border-box;\r\n display: inline-block;\r\n overflow: hidden;\r\n position: relative;\r\n vertical-align: middle;\r\n margin-right: 5px;\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-file-list-input-add:hover {\r\n background-color: rgb(235, 235, 235);\r\n}\r\n\r\n.as-file-list-input-add:active {\r\n background-color: rgb(212, 212, 212);\r\n}\r\n\r\n\r\n.as-file-list-input-add input {\r\n opacity: 0;\r\n visibility: hidden;\r\n}\r\n\r\n.as-file-list-input-add-icon-ctn {\r\n font-size: 1.5em;\r\n text-align: center;\r\n color: rgb(100, 100, 250);\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n white-space: nowrap;\r\n pointer-events: none;\r\n}\r\n\r\n.as-file-list-input-add-icon-ctn span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-file-list-input-add-icon-ctn::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-file-list-input.as-drag-over.as-droppable .as-file-list-input-add,\r\n.as-file-list-input.as-drag-over .as-file-list-drag-file-text {\r\n visibility: hidden;\r\n}\r\n\r\n.as-file-list-item {\r\n position: relative;\r\n height: calc(2em + 2px);\r\n font-size: 1rem;\r\n font-family: Arial, Helvetica, sans-serif;\r\n width: calc(var(--item-width) - 5px);\r\n padding-left: 2.3em;\r\n white-space: nowrap;\r\n box-sizing: border-box;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n padding-right: calc(2.3em + 5px);\r\n}\r\n\r\n.as-file-list-item .as-file-list-item-check {\r\n display: none;\r\n position: absolute;\r\n left: 0.1em;\r\n top:calc(50% - 1px - 0.5em);\r\n\r\n\r\n}\r\n\r\n\r\n.as-file-list-input.as-show-check .as-file-list-item .as-file-list-item-check {\r\n display: block;\r\n}\r\n\r\n.as-file-list-input.as-show-check .as-file-list-item\r\n{\r\n padding-left: 3.5em ;\r\n}\r\n\r\n.as-file-list-input.as-show-check .as-file-list-item .as-file-list-item-icon{\r\n left: 1.2em;\r\n}\r\n\r\n.as-file-list-item-icon {\r\n position: absolute;\r\n left: 0;\r\n top: calc(50% - 1em - 1px);\r\n bottom: 0;\r\n width: calc(2em + 2px);\r\n height: calc(2em + 2px);\r\n}\r\n\r\n\r\n.as-file-list-item-name {\r\n color: rgb(89, 89, 95);\r\n display: inline-block;\r\n overflow-x: hidden;\r\n vertical-align: middle;\r\n width: 100%;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n font-weight: bold;\r\n}\r\n\r\n\r\n.as-file-list-item::before {\r\n content: \"\";\r\n display: inline-block;\r\n height: 100%;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-file-list-input .as-file-list-item {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-bottom: 5px;\r\n margin-right: 5px;\r\n}\r\n\r\n.as-file-list-input:not(.as-empty) .as-file-list-drag-file-text,\r\n.as-file-list-input.as-read-only .as-file-list-drag-file-text {\r\n display: none;\r\n}\r\n\r\n\r\n.as-file-list-item:hover {\r\n background-color: rgba(169, 169, 172, 0.1);\r\n}\r\n\r\n\r\n.as-file-list-input .as-file-list-item:hover .as-file-list-item-quick-btn {\r\n visibility: visible;\r\n}\r\n\r\n\r\n.as-file-list-item-quick-btn {\r\n position: absolute;\r\n border: none;\r\n background-color: transparent;\r\n outline: none;\r\n border-radius: 3px;\r\n height: 2em;\r\n width: 2em;\r\n font-size: inherit;\r\n padding: 0;\r\n right: 5px;\r\n top: calc(50% - 1em);\r\n visibility: hidden;\r\n}\r\n\r\n\r\n.as-file-list-item-quick-btn.as-quick-menu-attached {\r\n display: block;\r\n}\r\n\r\n.as-file-list-item-quick-btn > span {\r\n font-size: 1.2em;\r\n}\r\n\r\n\r\n.as-file-list-item-quick-btn.as-active {\r\n background-color: rgba(20, 185, 235, 0.3);\r\n}\r\n\r\n.as-file-list-item-quick-btn:hover {\r\n background-color: #91e4fb77;\r\n}\r\n\r\n.as-file-list-item-quick-btn:active {\r\n background-color: #91e4fb;\r\n\r\n}\r\n\r\n", ""]); /***/ }), /***/ 9121: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-finder {\r\n font-size: 1rem;\r\n position: relative;\r\n --finder-header-height: 51px;\r\n --finder-nav-width: 250px;\r\n overflow: hidden;\r\n font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.as-finder.as-compact-mode {\r\n --finder-header-height: 0;\r\n}\r\n\r\n.as-finder.as-compact-mode .as-finder-header {\r\n display: none;\r\n}\r\n\r\n.as-finder-header {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: var(--finder-header-height);\r\n width: 100%;\r\n border-bottom: 1px solid #dddddd;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-finder-header .as-flexicon-button {\r\n min-width: 110px;\r\n}\r\n\r\n.as-finder-nav-ctn,\r\n.as-finder-search-ctn {\r\n position: absolute;\r\n left: 0;\r\n top: var(--finder-header-height);\r\n width: var(--finder-nav-width);\r\n bottom: 0;\r\n border-right: 1px solid #dddddd;\r\n padding-top: 29px;\r\n background-color: white;\r\n z-index: 20;\r\n}\r\n\r\n.as-finder-nav-ctn {\r\n}\r\n\r\n.as-finder-search-ctn {\r\n visibility: hidden;\r\n\r\n}\r\n\r\n\r\n.as-finder-nav-header,\r\n.as-finder-search-header {\r\n display: flex;\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n right: 0;\r\n height: 29px;\r\n box-sizing: border-box;\r\n border-bottom: 1px solid #dddddd;\r\n align-items: center;\r\n}\r\n\r\n.as-finder-nav-header-left {\r\n flex-grow: 1;\r\n}\r\n\r\n.as-finder-nav-header-right button {\r\n height: 100%;\r\n width: 30px;\r\n margin-left: 5px;\r\n}\r\n\r\n.as-finder-nav-ctn > .as-exp-group,\r\n.as-finder-search-ctn > .as-finder-search-body {\r\n overflow-y: auto;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n\r\n.as-finder-search-body {\r\n padding: 10px 5px;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-finder-search-field {\r\n padding-top: 10px;\r\n}\r\n\r\n.as-finder-search-field > div {\r\n display: inline-block;\r\n}\r\n\r\n.as-finder-search-field > div:first-child {\r\n width: 5em;\r\n}\r\n\r\n\r\n.as-finder-search-footer {\r\n text-align: center;\r\n padding-top: 20px;\r\n\r\n}\r\n\r\n.as-finder-search-footer button {\r\n min-width: 100px;\r\n}\r\n\r\n.as-finder-search-footer button:not(:last-child) {\r\n margin-right: 20px;\r\n}\r\n\r\n.as-finder-body {\r\n position: absolute;\r\n right: 0;\r\n left: var(--finder-nav-width);\r\n top: var(--finder-header-height);\r\n bottom: 0;\r\n padding-top: 29px;\r\n}\r\n\r\n.as-finder-content-header {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n right: 0;\r\n height: 29px;\r\n box-sizing: border-box;\r\n border-bottom: 1px solid white;\r\n display: flex;\r\n\r\n}\r\n\r\n.as-finder-content-header-left {\r\n flex-grow: 1;\r\n}\r\n\r\n.as-finder:not(.as-mobile) .as-finder-content-header-right::after {\r\n content: \"Kéo thả file vào đây để tải lên\";\r\n color: rgb(100, 100, 180);\r\n font-style: italic;\r\n line-height: 28px;\r\n padding-right: 10px;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.as-finder-content-ctn {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n\r\n.as-finder-normal-action-button-ctn,\r\n.as-finder-tiny-action-button-ctn {\r\n position: absolute;\r\n left: 10px;\r\n top: calc(50% - 15px);\r\n white-space: nowrap;\r\n max-width: calc(100% - 50px);\r\n overflow: hidden;\r\n}\r\n\r\n.as-finder-normal-action-button-ctn > button:not(:last-child),\r\n.as-finder-tiny-action-button-ctn > button:not(:last-child) {\r\n margin-right: 10px;\r\n}\r\n\r\n.as-finder-tiny-action-button-ctn button,\r\n.as-finder-content-header button:not(.as-ribbon-button) {\r\n background-color: transparent;\r\n border: none;\r\n border-radius: 3px;\r\n width: 30px;\r\n height: 30px;\r\n font-size: inherit;\r\n padding: 0;\r\n color: var(--as-transparent-button-text-color);\r\n}\r\n\r\n.as-finder-content-header button.as-ribbon-button {\r\n height: 30px;\r\n}\r\n\r\n\r\n\r\n.as-finder-tiny-action-button-ctn button span {\r\n font-size: 1.3em;\r\n}\r\n\r\n.as-finder-tiny-action-button-ctn button:hover {\r\n color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n.as-finder-tiny-action-button-ctn button:active {\r\n color: var(--as-transparent-button-text-active-color);\r\n}\r\n\r\n\r\n.as-action-button-minimized .as-finder-normal-action-button-ctn,\r\n.as-finder:not(.as-action-button-minimized) .as-finder-tiny-action-button-ctn {\r\n visibility: hidden;\r\n}\r\n\r\n.as-finder[data-selected-file-count=\"0\"] .as-finder-header button[name=\"view\"],\r\n.as-finder[data-selected-file-count=\"0\"] .as-finder-header button[name=\"delete\"],\r\n.as-finder:not([data-selected-folder-count=\"0\"]) .as-finder-header button[name=\"delete\"],\r\n.as-finder[data-selected-file-count=\"0\"] .as-finder-header button[name=\"download\"],\r\n.as-finder[data-selected-file-count=\"0\"][data-selected-folder-count=\"0\"] .as-finder-header button[name=\"move\"],\r\n.as-finder:not([data-selected-file-count=\"1\"][data-selected-folder-count=\"0\"]) .as-finder-header button[name=\"rename\"],\r\n.as-finder:not(.as-mini-layout) .as-finder-content-header button[name=\"nav_toggle\"],\r\n.as-finder:not(.as-mini-layout) .as-finder-nav-ctn button[name=\"nav_toggle\"] {\r\n display: none;\r\n}\r\n\r\n.as-finder-nav-ctn {\r\n overflow-y: auto;\r\n\r\n}\r\n\r\n.as-finder-content-ctn {\r\n overflow-y: auto;\r\n z-index: 1;\r\n}\r\n\r\n.as-finder.as-mini-layout .as-finder-body {\r\n left: 0;\r\n}\r\n\r\n.as-finder.as-mini-layout .as-finder-nav-ctn,\r\n.as-finder.as-mini-layout .as-finder-search-ctn {\r\n left: calc(var(--finder-nav-width) * -1);\r\n transition: left 0.2s;\r\n}\r\n\r\n\r\n.as-finder.as-mini-layout.as-nav-open .as-finder-nav-ctn,\r\n.as-finder.as-mini-layout.as-nav-open .as-finder-search-ctn {\r\n left: 0;\r\n}\r\n\r\n.as-finder.as-mini-layout.as-nav-open::after {\r\n content: \"\";\r\n display: block;\r\n z-index: 8;\r\n position: absolute;\r\n left: 0;\r\n top: var(--finder-header-height);\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(169, 169, 172, 0.2);\r\n}\r\n\r\n\r\n.as-finder-content::before,\r\n.as-finder-content::after {\r\n content: \"\";\r\n display: block;\r\n}\r\n\r\n.as-finder-content .as-file-thumbnail {\r\n display: inline-block;\r\n margin: 5px;\r\n}\r\n\r\n\r\n.as-finder-content {\r\n user-select: none;\r\n min-height: 100%;\r\n box-sizing: border-box;\r\n position: relative;\r\n}\r\n\r\n\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"upload\"],\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"delete\"],\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"rename\"],\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"move\"],\r\n.as-finder.as-disable-create-folder .as-finder-header button[name=\"new_folder\"]\r\n{\r\n display: none;\r\n}\r\n\r\n.as-finder-select-area {\r\n position: fixed;\r\n box-sizing: border-box;\r\n border: 2px solid rgba(0, 103, 240, 0.5);\r\n width: 100px;\r\n height: 100px;\r\n background-color: rgba(0, 103, 240, 0.2);\r\n /*background-color: ;*/\r\n}\r\n\r\n.as-finder:not(.as-dragging) .as-file-thumbnail:hover {\r\n background-color: rgba(29, 161, 255, 0.13);\r\n}\r\n\r\n\r\n.as-finder-upload-overlay {\r\n display: none;\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n z-index: 4;\r\n backdrop-filter: blur(1px);\r\n -webkit-backdrop-filter: blur(1px);\r\n background-color: rgba(167, 167, 167, 0.1);\r\n font-size: 2rem;\r\n text-align: center;\r\n text-shadow: 2px 2px 3px white, -2px -2px 3px white, -2px 2px 3px white, 2px -2px 3px white;\r\n color: rgb(97, 79, 100);\r\n font-weight: bold;\r\n padding-top: calc(50% - 6em);\r\n}\r\n\r\n\r\n.as-finder-upload-overlay-icon-ctn {\r\n text-align: center;\r\n color: #1da1ff;\r\n font-size: 8rem;\r\n\r\n}\r\n\r\n.as-finder:not(.as-searching) .as-finder-body.as-drag-over .as-finder-upload-overlay {\r\n display: block;\r\n}\r\n\r\n\r\n.as-finder.as-searching .as-finder-nav-ctn {\r\n visibility: hidden;\r\n}\r\n\r\n.as-finder.as-searching .as-finder-search-ctn {\r\n visibility: visible;\r\n}\r\n\r\n.as-finder.as-searching .as-finder-content-header-right,\r\n.as-finder.as-searching .as-finder-header button[name='upload'],\r\n.as-finder.as-searching .as-finder-header button[name='move'] {\r\n display: none;\r\n}\r\n\r\n.as-finder-task-check {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-finder-task-check >span{\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-finder-task-check .mdi {\r\n font-size: 1.5em;\r\n color: rgb(30, 237, 219);\r\n}\r\n\r\n\r\n.as-finder-task-check .mdi.mdi-alert-decagram-outline {\r\n color: red;\r\n}\r\n\r\n\r\n/**************************************************/\r\n\r\n.as-file-thumbnail {\r\n display: inline-block;\r\n vertical-align: top;\r\n position: relative;\r\n}\r\n\r\n.as-file-thumbnail-background {\r\n display: block;\r\n width: 100px;\r\n height: 100px;\r\n background-size: contain;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n box-sizing: border-box;\r\n border: 1px solid #c0c0c0;\r\n}\r\n\r\n.as-file-thumbnail-check {\r\n display: none;\r\n position: absolute;\r\n top: -2px;\r\n left: -2px;\r\n bottom: -2px;\r\n right: -2px;\r\n overflow: hidden;\r\n z-index: 4;\r\n pointer-events: none;\r\n border: 2px solid #0a90eb;\r\n}\r\n\r\n.as-file-thumbnail.as-checked .as-file-thumbnail-check {\r\n display: block;\r\n}\r\n\r\n.as-file-thumbnail-check::before {\r\n content: \"\";\r\n position: absolute;\r\n right: -28px;\r\n top: -28px;\r\n width: 56px;\r\n height: 56px;\r\n transform: rotate(45deg);\r\n background-color: #0a90eb;\r\n}\r\n\r\n.as-file-thumbnail-check .mdi {\r\n display: inline-block;\r\n position: absolute;\r\n right: 5px;\r\n top: 5px;\r\n font-size: 14px;\r\n color: white;\r\n}\r\n\r\n.as-file-thumbnail-file-name {\r\n word-wrap: break-word; /* IE 5.5-7 */\r\n white-space: -moz-pre-wrap; /* Firefox 1.0-2.0 */\r\n white-space: pre-wrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n width: 100px;\r\n max-height: 6.2em;\r\n line-height: 1.5;\r\n text-align: center;\r\n font-size: 13px;\r\n padding-top: 0.2em;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-file-thumbnail-file-name > span:last-child {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-finder-folder-dialog-tree-ctn {\r\n max-height: calc(90vh - 250px);\r\n overflow-y: auto;\r\n border: 1px solid #dddddd;\r\n}\r\n\r\n.as-finder-folder-dialog-tree-ctn > .as-exp-group {\r\n width: 300px;\r\n}\r\n\r\n.as-finder-folder-dialog-selected-ctn {\r\n padding-bottom: 10px;\r\n white-space: pre-wrap;\r\n}\r\n\r\n.as-finder-folder-dialog-selected-ctn > span {\r\n white-space: nowrap;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] {\r\n --col: 1;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail {\r\n display: inline-block;\r\n margin-right: 4px;\r\n height: 50px;\r\n padding-left: 60px;\r\n white-space: nowrap;\r\n box-sizing: border-box;\r\n width: calc(100% / var(--col) - 10px * var(--col));\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail::before {\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-background {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 50px;\r\n height: 50px;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-file-name {\r\n width: unset;\r\n max-width: 100%;\r\n text-align: left;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-background,\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-file-name {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\ndiv[data-view-as=\"lage_icons\"] .as-file-thumbnail-background{\r\n width: 200px;\r\n height: 200px;\r\n}\r\n\r\ndiv[data-view-as=\"lage_icons\"] .as-file-thumbnail-file-name {\r\n width: 200px;\r\n}", ""]); /***/ }), /***/ 4521: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 height: var(--as-input-height);\r\n font-size: 1rem;\r\n cursor: pointer;\r\n color: black;\r\n}\r\n\r\n.as-flexicon-button:disabled {\r\n pointer-events: none;\r\n background-color: #c7c7c7 !important;\r\n}\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:not([data-ml-key]) {\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}", ""]); /***/ }), /***/ 9677: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: 1rem;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\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.as-border-none {\r\n border: none;\r\n}\r\n\r\n.as-flexicon-input.as-disabled {\r\n background-color: var(--as-disabled-background-color);\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: inherit;\r\n font-family: inherit;\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 padding-left: 0;\r\n padding-right: 0;\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-align: inherit;\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 {\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}", ""]); /***/ }), /***/ 2893: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 4110: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-font-input {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: calc(2em + 2px);\r\n width: 12em;\r\n border-radius: 3px;\r\n border: 1px solid #ddd;\r\n\r\n}\r\n\r\n.as-font-input-family {\r\n\r\n}\r\n\r\n.as-font-input-size {\r\n\r\n}\r\n\r\n\r\n\r\n.as-font-family-select-list {\r\n font-size: 16px;\r\n cursor: default;\r\n user-select: none;\r\n min-width: 12em;\r\n padding-top: 40px;\r\n\r\n}\r\n\r\n.as-font-family-select-list-header{\r\n padding: 5px;\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n box-sizing: border-box;\r\n height: 40px;\r\n top: 0;\r\n}\r\n\r\n.as-font-family-select-list-content {\r\n overflow-y: auto;\r\n}\r\n\r\n.as-font-family-select-item {\r\n height: 2em;\r\n line-height: 2em;\r\n padding: 0 20px 0 10px;\r\n\r\n}\r\n\r\n.as-font-family-select-item:hover {\r\n background-color: var(--as-list-item-hover-background-color);\r\n}\r\n\r\n.as-font-family-select-item:active {\r\n /*background-color: var(--as-list-item-active-background-color);*/\r\n}\r\n\r\n.as-font-family-select-item.as-selected {\r\n background-color: var(--as-list-item-selected-background-color);\r\n}", ""]); /***/ }), /***/ 2774: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-frame{\r\n \r\n}", ""]); /***/ }), /***/ 6952: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 background-color: white;\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 display: block;/* avoid overflow if this div is inline-block*/\r\n}", ""]); /***/ }), /***/ 2467: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 8061: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 7292: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "/*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} ", ""]); /***/ }), /***/ 3979: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "", ""]); /***/ }), /***/ 7871: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "/****Adapt icon************/\r\n.fa-close:before {\r\n content: \"\\f00d\";\r\n}\r\n\r\n\r\n.kv-document-2-site {\r\n display: flex;\r\n align-content: stretch;\r\n}\r\n\r\n.kv-document-2-site-left {\r\n\r\n background-color: rgb(61, 29, 154);\r\n}\r\n\r\n.kv-document-2-site-right {\r\n flex-grow: 1;\r\n\r\n}\r\n\r\n.kv-document-2-site-left-header {\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n padding: 25px 20px;\r\n\r\n}\r\n\r\n.kv-document-2-site-left-header-logo {\r\n height: 65px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.kv-document-2-site-left-header-text {\r\n font-weight: bold;\r\n font-size: 25px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n color: #26afa8;\r\n}\r\n\r\n.kv-document-2-site-left .as-vertical-timeline {\r\n padding: 5px 20px;\r\n}\r\n\r\n\r\n/* For Document page */\r\n.kv-document-page {\r\n flex-direction: column;\r\n display: flex;\r\n}\r\n\r\ndiv.kv-document-page.absol-frame {\r\n display: flex;\r\n}\r\n\r\n.kv-document-page-header {\r\n position: relative;\r\n text-align: left;\r\n padding: 10px 10px 10px 10px;\r\n}\r\n\r\n.kv-document-page-title {\r\n font-size: 18px;\r\n font-weight: bold;\r\n line-height: 30px;\r\n}\r\n\r\n.kv-document-page-close-btn {\r\n float: right;\r\n}\r\n\r\n.kv-document-transparent-btn {\r\n background-color: transparent;\r\n border-radius: 50%;\r\n height: 30px;\r\n width: 30px;\r\n padding: 0;\r\n color: var(--as-transparent-button-text-color);\r\n font-size: 20px;\r\n border: none;\r\n}\r\n\r\n.kv-document-transparent-btn:hover {\r\n color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n.kv-document-transparent-btn:active {\r\n color: var(--as-transparent-button-text-active-color);\r\n}\r\n\r\n\r\n.kv-document-page-content {\r\n flex-grow: 1;\r\n overflow: auto;\r\n padding: 10px 20px 10px 20px;\r\n}\r\n\r\n.kv-document-page-footer {\r\n display: flex;\r\n position: relative;\r\n padding: 30px 20px 10px 20px;\r\n}\r\n\r\n.kv-document-page-footer .as-flexicon-button {\r\n min-width: 110px;\r\n height: 30px;\r\n}\r\n\r\n.kv-document-page-footer-left {\r\n flex-grow: 1;\r\n}\r\n\r\n.kv-document-page-footer-left > *:not(:first-child) {\r\n margin-left: 20px;\r\n}\r\n\r\n.kv-document-page-footer-right {\r\n text-align: right;\r\n}\r\n\r\n\r\n.kv-document-page-footer-right > *:not(:last-child) {\r\n margin-right: 20px;\r\n}\r\n\r\n.kv-document-link {\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 14px;\r\n color: black;\r\n cursor: pointer;\r\n height: 30px;\r\n padding: 0 20px;\r\n white-space: normal;\r\n border-radius: 3px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.kv-document-link:hover {\r\n color: rgb(20, 100, 246);\r\n}\r\n\r\n\r\n.kv-document-link > span,\r\n.kv-document-link::before {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.kv-document-link::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n\r\n.kv-document-link.kv-variant-primary {\r\n color: white;\r\n background-color: rgb(26, 146, 255);\r\n}\r\n\r\n\r\n/*************************************************************/\r\n\r\n.as-message-input-body .as-message-input-text-input {\r\n padding-left: var(--control-horizontal-distance-2);\r\n padding-top: var(--control-verticle-distance-1);\r\n padding-bottom: var(--control-verticle-distance-1);\r\n padding-right: var(--control-horizontal-distance-2);\r\n min-height: 40px;\r\n}\r\n\r\n/*TODO: find usage*/\r\n.bsc-white .absol-selectmenu-anchor-content-container {\r\n z-index: 200001;\r\n}\r\n\r\n.bsc-white .absol-context-menu-anchor {\r\n font-size: var(--font-size-right-mouse-menu);\r\n}\r\n\r\n.card-mobile-content > div:not([class]):first-child:last-child .as-dynamic-table-wrapper.as-overflow-y {\r\n height: 100%;\r\n}\r\n\r\n/* todo: normalize for all module\r\n.absol-selectmenu-holder-item .absol-selectlist-item-text,\r\n.absol-selectmenu-holder-item .absol-selectlist-item-desc {\r\n line-height: calc(var(--control-height) - 10px);\r\n}\r\n\r\n.bsc-white .absol-selectmenu {\r\n height: var(--control-height);\r\n font-size: var(--font-size-text-input);\r\n}\r\n\r\n.bsc-white .absol-selectlist .absol-selectlist-item {\r\n font-size: var(--font-size-text-input);\r\n height: 1.42857142857em;\r\n}\r\n\r\n.bsc-white .absol-selectlist .absol-selectlist-item>span {\r\n line-height: 1.42857142857;\r\n}\r\n\r\n.bsc-white .absol-search-text-input {\r\n font-size: var(--font-size-text-input);\r\n}\r\n\r\n */\r\n\r\n.absol-single-page.as-has-footer-margin > .absol-single-page-scroller{\r\n padding-bottom: var(--footer-margin);\r\n}", ""]); /***/ }), /***/ 2189: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".kv-overview-widget {\r\n background-color: rgb(212, 227, 252);\r\n padding: 0 5px 5px 5px;\r\n border-radius: 3px;\r\n box-sizing: border-box;\r\n display: inline-block;\r\n width: 25em;\r\n height: 40em;\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\r\n position: fixed;\r\n --x: 0;\r\n --y: 0;\r\n left: var(--x);\r\n top: var(--y);\r\n z-index: 3000000;\r\n}\r\n\r\n.kv-overview-widget-header {\r\n height: 2em;\r\n padding-left: calc(10em / 14);\r\n user-select: none;\r\n position: relative;\r\n}\r\n\r\n.kv-overview-widget-header-window-action {\r\n position: absolute;\r\n right: 5px;\r\n top: calc(50% - 10em / 14);\r\n height: calc(20em / 14);\r\n display: inline-block;\r\n}\r\n\r\n.kv-overview-widget-header-window-action button {\r\n background-color: transparent;\r\n border-radius: 3px;\r\n padding: 0;\r\n border: none;\r\n width: 20px;\r\n height: 20px;\r\n color: rgb(69, 69, 70);\r\n}\r\n\r\n.kv-overview-widget-header-window-action button:hover {\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.kv-overview-widget-header-window-action button:hover {\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.kv-overview-widget-title {\r\n font-weight: bold;\r\n display: inline-block;\r\n line-height: 2em;\r\n}\r\n\r\n.kv-overview-widget-body {\r\n box-sizing: border-box;\r\n padding-top: 5px;\r\n background-color: white;\r\n height: calc(100% - 2em);\r\n position: relative;\r\n}\r\n\r\n.kv-overview-widget-body > .absol-tabview > .absol-tabbar .absol-hscroller-viewport {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.kv-overview-widget-body > .absol-tabview > .absol-tabbar .absol-hscroller-viewport {\r\n padding-left: 5px;\r\n box-sizing: border-box;\r\n}\r\n\r\n.kv-overview-widget-body > .absol-tabview > .absol-tabbar .as-tab-bar-button-ext-icon-ctn {\r\n margin: 0;\r\n}\r\n\r\n.kv-overview-widget-page > div {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.kv-overview-widget-tab-view .absol-tabbar-button > .absol-tabbar-button-icon-container {\r\n display: none;\r\n}\r\n\r\n.kv-overview-widget-tab-view .absol-tabbar-button {\r\n min-width: 70px;\r\n text-align: left;\r\n}\r\n\r\n.kv-overview-widget-tab-view {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.kv-overview-widget-bubble {\r\n position: fixed;\r\n z-index: 3000000;\r\n width: 54px;\r\n height: 54px;\r\n border-radius: 50%;\r\n background-color: white;\r\n box-shadow: 2px 2px 10px 0px rgba(0, 0, 0, 0.75);\r\n -webkit-box-shadow: 2px 2px 10px 0px rgba(0, 0, 0, 0.75);\r\n -moz-box-shadow: 2px 2px 10px 0px rgba(0, 0, 0, 0.75);\r\n user-select: none;\r\n}\r\n\r\n.kv-overview-widget-bubble:hover {\r\n background-color: rgb(240, 240, 250);\r\n\r\n}\r\n\r\n.kv-overview-widget-bubble:active {\r\n box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.75);\r\n -webkit-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.75);\r\n -moz-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.75);\r\n}\r\n\r\n.kv-overview-widget-bubble-background {\r\n position: absolute;\r\n left: 20%;\r\n top: 20%;\r\n width: 60%;\r\n height: 60%;\r\n pointer-events: none;\r\n}\r\n\r\n.kv-overview-widget-bubble-badge {\r\n position: absolute;\r\n left: calc(85% - 10px);\r\n bottom: calc(85% - 10px);\r\n text-align: center;\r\n padding:0 3px ;\r\n background-color: rgba(255, 0, 0, 0.7);\r\n color: white;\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 14px;\r\n height: 30px;\r\n min-width: 30px;\r\n white-space: nowrap;\r\n border-radius: 15px;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.kv-overview-widget-bubble-badge span,\r\n.kv-overview-widget-bubble-badge::before {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.kv-overview-widget-bubble-badge::before{\r\n content:\"\" ;\r\n height: 100%;\r\n}", ""]); /***/ }), /***/ 2336: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".kv-ow-modal-manager {\r\n position: absolute;\r\n z-index: 3000010;\r\n width: 100%;\r\n height: 100%;\r\n left: 0;\r\n top: 0;\r\n font-size: 14px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n background-color: rgba(0, 0, 0, 0.502);\r\n box-sizing: border-box;\r\n overflow: auto;\r\n padding-top: 10px;\r\n padding-bottom: 10px;\r\n}\r\n\r\n.kv-ow-modal-manager:empty {\r\n display: none;\r\n}\r\n\r\n.kv-ow-modal {\r\n white-space: nowrap;\r\n text-align: center;\r\n position: absolute;\r\n z-index: 1;\r\n left: 0;\r\n right: 0;\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: border-box;\r\n padding: 60px 20px 10px 20px;\r\n}\r\n\r\n.kv-ow-modal::before {\r\n content: \"\";\r\n height: 66%;\r\n}\r\n\r\n.kv-ow-modal::before,\r\n.kv-ow-modal-window {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.kv-ow-modal-window {\r\n background-color: white;\r\n white-space: normal;\r\n text-align: left;\r\n -webkit-box-shadow: 2px 2px 6px 0 rgba(0, 0, 90, 0.55);\r\n -moz-box-shadow: 2px 2px 6px 0 rgba(0, 0, 90, 0.55);\r\n box-shadow: 2px 2px 6px 0 rgba(0, 0, 90, 0.55);\r\n border-radius: 4px;\r\n max-width: 100%;\r\n max-height: 100%;\r\n overflow: hidden;\r\n box-sizing: border-box;\r\n display: inline-flex;\r\n flex-direction: column;\r\n align-items: stretch;\r\n}\r\n\r\n.kv-ow-modal-title {\r\n font-size: 14px;\r\n line-height: 1.5;\r\n font-weight: bold;\r\n}\r\n\r\n.kv-ow-modal-header {\r\n padding: 10px 10px 5px 10px;\r\n}\r\n\r\n.kv-ow-modal-body {\r\n flex-grow: 1;\r\n overflow-y: auto;\r\n padding: 10px 10px;\r\n}\r\n\r\n.kv-ow-modal-footer {\r\n padding: 10px 10px;\r\n text-align: center;\r\n}\r\n\r\n.kv-ow-modal-header:empty,\r\n.kv-ow-modal-body:empty,\r\n.kv-ow-modal-footer:empty {\r\n display: none;\r\n}\r\n\r\n.kv-ow-modal-footer > button {\r\n height: 30px;\r\n min-width: 110px;\r\n}\r\n\r\n\r\n.kv-ow-modal-footer > button:not(:last-child) {\r\n margin-right: 20px;\r\n}", ""]); /***/ }), /***/ 657: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".kv-comment-item {\r\n font-size: 1rem;\r\n font-family: Arial, Helvetica, sans-serif;\r\n position: relative;\r\n\r\n padding: 0 calc(2em + 7px) 0 calc(2.85em + 20px);\r\n cursor: pointer;\r\n background-color: white;\r\n}\r\n\r\n.kv-comment-item:hover{\r\n background-color: #f2f5fa;\r\n}\r\n\r\n\r\n.kv-comment-avatar-ctn {\r\n position: absolute;\r\n left: 10px;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.kv-comment-avatar-ctn::before,\r\n.kv-comment-item-flag-ctn::before {\r\n content: \"\";\r\n display: inline-block;\r\n height: 100%;\r\n vertical-align: middle;\r\n}\r\n\r\n.kv-comment-avatar {\r\n width: 2.85em;\r\n height: 2.85em;\r\n background-size: cover;\r\n border-radius: 50%;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.kv-comment-item-content {\r\n padding: 5px 10px;\r\n border: 1px solid #d6d6d6;\r\n border-radius: 7px;\r\n line-height: 1.5;\r\n}\r\n\r\n\r\n.kv-comment-item-flag-ctn {\r\n position: absolute;\r\n right: 10px;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.kv-comment-item-flag-unread {\r\n display: none;\r\n vertical-align: middle;\r\n width: 0.75em;\r\n height: 0.75em;\r\n background-color: blue;\r\n border-radius: 50%;\r\n}\r\n\r\n.kv-comment-item.as-unread .kv-comment-item-flag-unread {\r\n display: inline-block;\r\n}\r\n\r\n.kv-comment-item-time {\r\n font-weight: bold;\r\n}", ""]); /***/ }), /***/ 228: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}\r\n\r\n\r\n.as-linear-color-tiny-bar {\r\n font-size: 1rem;\r\n --value: 1;\r\n --extend: 0.5;\r\n --color: green;\r\n position: relative;\r\n\r\n display: inline-block;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n}\r\n\r\n\r\n.as-linear-color-tiny-text {\r\n display: inline-block;\r\n vertical-align: middle;\r\n padding-right: 0.3em;\r\n width: 4em;\r\n text-align: right;\r\n}\r\n\r\n.as-linear-color-tiny-bar-rect {\r\n height: calc(10em / 14);\r\n width: calc(10em * var(--value) / 1.4);\r\n max-width: calc(10em / 1.4 + 10em * var(--extend) / 1.4);\r\n min-width: 3px;\r\n background-color: var(--color);\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n", ""]); /***/ }), /***/ 3526: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-list-compare-tool {\r\n border: 1px solid #ddd;\r\n box-sizing: border-box;\r\n font-size: 14px;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\r\n --item-min-width: 10px;\r\n min-width: calc(var(--item-min-width) + var(--item-min-width) + 122px + 44px);\r\n overflow: hidden;\r\n --list-max-height: auto;\r\n position: relative;\r\n}\r\n\r\n.as-remove-line-tool-active .as-list-compare-tool-body,\r\n.as-remove-line-tool-active .as-lct-item {\r\n cursor: none;\r\n}\r\n\r\n.as-lct-cursor {\r\n position: absolute;\r\n pointer-events: none;\r\n z-index: 1e9;\r\n top: -100px;\r\n left: -100px;\r\n font-size: 25px;\r\n width: 30px;\r\n height: 30px;\r\n color: rgba(0, 0, 0, 0.75);\r\n}\r\n\r\n.as-list-compare-tool-header {\r\n padding-bottom: 5px;\r\n border-bottom: 1px solid #ddd;\r\n}\r\n\r\n.as-list-compare-tool-header .as-form-cmd-tool,\r\n.as-list-compare-tool-check-ctn {\r\n display: inline-block;\r\n vertical-align: top;\r\n}\r\n\r\n.as-list-compare-tool-header .as-cmd-tool-group-x2::before {\r\n display: none;\r\n}\r\n\r\n.as-list-compare-tool-body {\r\n width: 100%;\r\n white-space: nowrap;\r\n position: relative;\r\n padding: 30px 10px 10px 10px;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n}\r\n\r\n.as-list-compare-tool-before-title,\r\n.as-list-compare-tool-after-title{\r\n position: absolute;\r\n top: 5px;\r\n line-height: 20px;\r\n background-color: white;\r\n z-index: 11;\r\n}\r\n\r\n.as-list-compare-tool-before-title {\r\n left: 10px;\r\n line-height: 20px;\r\n}\r\n\r\n.as-list-compare-tool-after-title {\r\n left: calc(50% + 60px);\r\n}\r\n\r\n.as-list-compare-tool-before-title::before {\r\n content: \"Form cũ\";\r\n}\r\n\r\n\r\n.as-list-compare-tool-after-title::before {\r\n content: \"Form mới\";\r\n}\r\n\r\n/*.as-list-compare-tool.as-display-inline {*/\r\n/* display: inline-block;*/\r\n/*}*/\r\n\r\n.as-list-compare-tool-before,\r\n.as-list-compare-tool-after,\r\n.as-list-compare-tool-spacing {\r\n display: inline-block;\r\n vertical-align: top;\r\n position: relative;\r\n\r\n}\r\n\r\n\r\n.as-list-compare-tool-before,\r\n.as-list-compare-tool-after {\r\n border: 1px solid #ddd;\r\n box-sizing: border-box;\r\n width: calc(50% - 60px);\r\n max-height: var(--list-max-height);\r\n overflow-block: auto;\r\n}\r\n\r\n\r\n.as-list-compare-tool-before .as-lct-item:not(:last-child),\r\n.as-list-compare-tool-after .as-lct-item:not(:last-child) {\r\n border-bottom: 1px solid #ddd;\r\n height: 29px;\r\n}\r\n\r\n\r\n.as-list-compare-tool-spacing {\r\n width: 120px;\r\n height: 30px;\r\n}\r\n\r\n.as-list-compare-tool-operators > svg {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-list-compare-tool-operators {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n pointer-events: none;\r\n z-index: 10;\r\n}\r\n\r\n.as-list-compare-tool-operators > svg .as-lct-line-group:not(.as-same-value) .as-lct-line-hit-box {\r\n pointer-events: all;\r\n}\r\n\r\n.as-list-compare-tool.as-view-changed {\r\n\r\n}\r\n\r\n\r\n.as-list-compare-tool.as-view-unchanged {\r\n\r\n}\r\n\r\n\r\n.as-list-compare-tool.as-remove-line-tool-active .as-lct-line-group:hover:not(.as-same-value) .as-lct-line-hit-box {\r\n stroke: rgba(255, 100, 0, 0.5);\r\n}\r\n\r\n\r\n.as-lct-line {\r\n fill: none;\r\n stroke: blue;\r\n}\r\n\r\n.as-lct-line-hit-box {\r\n stroke-width: 8px;\r\n stroke: transparent;\r\n}\r\n\r\n.as-lct-line-group.as-same-value .as-lct-line {\r\n stroke: #9cf6b6;\r\n}\r\n\r\n.as-lct-line.as-new-line {\r\n stroke: #c07777;\r\n}\r\n\r\n.as-lct-arrow {\r\n fill: blue;\r\n stroke: none;\r\n}\r\n\r\n.as-lct-same-value-arrow {\r\n fill: #9cf6b6;\r\n stroke: none;\r\n}\r\n\r\n.as-lct-new-line-arrow {\r\n stroke: none;\r\n fill: #c07777;\r\n}\r\n\r\n\r\n.as-lct-item {\r\n white-space: nowrap;\r\n height: 28px;\r\n box-sizing: border-box;\r\n padding-right: 10px;\r\n position: relative;\r\n overflow: visible;\r\n padding-left: 10px;\r\n}\r\n\r\n\r\n.as-list-compare-tool.as-view-changed-only .as-lct-item:not(.as-mapped):not(.as-removed):not(.as-added) {\r\n display: none;\r\n}\r\n\r\n.as-lct-item.as-removed {\r\n background-color: #fbcece;\r\n}\r\n\r\n.as-lct-item.as-added {\r\n background-color: #cedbfb;\r\n}\r\n\r\n\r\n.as-lct-item:hover {\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-lct-item.as-active {\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.as-lct-item::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-lct-item::after {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n z-index: 5;\r\n top: calc(50% - 5px);\r\n right: 5px;\r\n width: 10px;\r\n height: 10px;\r\n background-color: #cdcdcd;\r\n border-radius: 50%;\r\n}\r\n\r\n\r\n.as-lct-item.as-removed,\r\n.as-lct-item.as-added {\r\n cursor: pointer;\r\n}\r\n\r\n.as-lct-item.as-removed::after,\r\n.as-lct-item.as-added::after {\r\n background-color: #37e0e0;\r\n\r\n}\r\n\r\n\r\n\r\n.as-list-compare-tool-after .as-lct-item::after {\r\n left: 5px;\r\n}\r\n\r\n.as-list-compare-tool-after .as-lct-item {\r\n padding-left: 15px;\r\n}\r\n\r\n\r\n.as-lct-item-text {\r\n padding-right: 20px;\r\n}\r\n\r\n.as-lct-item-text,\r\n.as-lct-item-icon-ctn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-lct-item-icon-ctn {\r\n width: 25px;\r\n height: 20px;\r\n text-align: left;\r\n}\r\n\r\n.as-lct-item-icon-ctn > * {\r\n font-size: 20px;\r\n display: block;\r\n}\r\n\r\n.as-lct-item-text::before {\r\n content: attr(data-text);\r\n}", ""]); /***/ }), /***/ 7188: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-location-input-modal {\r\n z-index: 800001;\r\n background-color: rgb(0, 0, 0, 0.1);\r\n}\r\n\r\n\r\n.as-location-picker-control-ctn {\r\n margin: 10px;\r\n background-color: white;\r\n box-shadow: rgb(0 0 0 / 30%) 0px 1px 4px -1px;\r\n border-radius: 2px;\r\n}\r\n\r\n\r\n.as-location-picker-control-btn {\r\n width: 40px;\r\n height: 40px;\r\n padding: 0;\r\n box-sizing: border-box;\r\n background-color: transparent;\r\n border: none;\r\n color: rgb(102, 102, 102);\r\n}\r\n\r\n.as-location-picker-control-btn:hover {\r\n color: black;\r\n}\r\n\r\n.gm-ui-hover-effect {\r\n outline: none;\r\n}\r\n\r\n.as-location-picker-control-btn > span {\r\n font-size: 2em;\r\n}\r\n\r\n\r\n.as-location-picker-search-input {\r\n height: 30px;\r\n width: 250px;\r\n border-radius: 2px;\r\n padding-right: 30px;\r\n position: relative;\r\n}\r\n\r\n.as-location-picker-search-input > input {\r\n outline: none;\r\n}\r\n\r\n\r\n.as-location-picker-search-input-search-icon-ctn {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 30px;\r\n text-align: center;\r\n font-size: 20px;\r\n color: rgb(102, 102, 102);\r\n}\r\n\r\n.as-location-picker-search-input-search-icon-ctn:hover {\r\n color: black;\r\n}\r\n\r\n.as-location-picker-search-input-search-icon-ctn::before,\r\n.as-location-picker-search-input-search-icon-ctn > span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-location-picker-search-input-search-icon-ctn::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.as-location-picker-control-ctn .as-flexicon-button {\r\n font-size: 14px;\r\n min-width: 9em;\r\n height: calc(2em + 2px);\r\n}\r\n\r\n.as-location-picker-control-ctn .as-flexicon-button:not(:last-child) {\r\n margin-right: 20px;\r\n}\r\n\r\n\r\n.as-location-picker-control-ctn.as-transparent {\r\n background-color: transparent;\r\n box-shadow: none;\r\n}\r\n\r\n.as-location-picker.as-read-only .as-location-picker-cancel-btn,\r\n.as-location-picker.as-read-only .as-location-picker-search-input {\r\n display: none;\r\n}\r\n\r\n.as-location-picker-control-ctn.as-bottom button{\r\n box-shadow: 0 0px 2px 4px white;\r\n -webkit-box-shadow: 0 0 2px 4px white;\r\n -moz-box-shadow: 0 0 2px 4px white;\r\n}\r\n\r\n\r\n.as-location-input-modal {\r\n\r\n}\r\n\r\n.as-location-input-modal-window {\r\n padding: 10px;\r\n width: calc(100vw - 10px);\r\n height: calc(100vh - 10px);\r\n box-sizing: border-box;\r\n max-width: 900px;\r\n max-height: 600px;\r\n box-shadow: 0px 1px 4px -1px rgba(0, 0, 0, 0.7);\r\n -webkit-box-shadow: 0px 1px 4px -1px rgba(0, 0, 0, 0.7);\r\n border-radius: 5px;\r\n background-color: white;\r\n}\r\n\r\n\r\n.as-location-input-modal-window > .as-location-picker {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.as-location-input {\r\n height: var(--as-input-height);\r\n border-radius: var(--as-input-border-radius);\r\n border: 1px solid #dddddd;\r\n box-sizing: border-box;\r\n width: calc(13em + 50px);\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n background-color: white;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n\r\n.as-location-input.as-disabled {\r\n background-color: var(--as-disabled-background-color);\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-location-input-text {\r\n outline: none;\r\n width: calc(100% - 2em - 1px);\r\n height: 100%;\r\n border: none;\r\n background-color: transparent;\r\n display: block;\r\n padding: 0 0 0 var(--as-input-horizontal-padding);\r\n font: inherit;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-location-input-icon-ctn {\r\n border-left: 1px solid #ddd;\r\n border-right: none;\r\n border-top: none;\r\n border-bottom: none;\r\n text-align: center;\r\n position: absolute;\r\n right: 0;\r\n width: calc(2rem + 1px);\r\n box-sizing: border-box;\r\n top: 0;\r\n height: 100%;\r\n background-color: rgba(169, 169, 169, 0.1);\r\n cursor: pointer;\r\n font-size: inherit;\r\n}\r\n\r\n\r\n.as-location-input-icon-ctn:hover {\r\n background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-location-input-icon-ctn:active {\r\n background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-location-input-icon-ctn > span {\r\n line-height: 2em;\r\n font-size: calc(16em / 14);\r\n}\r\n\r\n.as-location-input.as-disabled {\r\n color: var(--as-disabled-text-color);\r\n pointer-events: none;\r\n}\r\n\r\n.as-location-input.as-disabled input {\r\n background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-location-input.as-value-null .as-location-input-clear-btn,\r\n.as-location-input.as-must-not-null .as-location-input-clear-btn {\r\n display: none;\r\n}\r\n\r\n.as-location-input-clear-btn {\r\n font-size: inherit;\r\n position: absolute;\r\n right: calc(2em + 2px);\r\n height: calc(2em + 2px);\r\n top: calc(50% - -1em - 1px);\r\n box-sizing: border-box;\r\n background-color: transparent;\r\n border: none;\r\n color: #bbb;\r\n visibility: hidden;\r\n}\r\n\r\n.as-location-input-clear-btn:hover {\r\n color: rgb(132, 132, 132)\r\n}\r\n\r\n.as-location-input-clear-btn:active {\r\n color: #525555;\r\n}\r\n\r\n.as-location-input-text:focus + .as-location-input-clear-btn,\r\n.as-location-input:hover .as-location-input-clear-btn {\r\n visibility: visible;\r\n}\r\n\r\n\r\n@media screen and (max-width: 600px) {\r\n .as-location-input-modal-window {\r\n max-width: unset;\r\n max-height: unset;\r\n\r\n }\r\n}\r\n\r\n\r\n@media screen and (max-width: 500px) {\r\n .as-location-picker-control-ctn.as-top {\r\n margin-top: 60px;\r\n width: calc(100% - 20px);\r\n }\r\n\r\n .as-location-picker-control-ctn.as-top .as-location-picker-search-input {\r\n width: 100%;\r\n }\r\n\r\n .as-location-input-modal-window {\r\n padding: 0;\r\n }\r\n\r\n .as-location-picker-control-ctn.as-bottom button{\r\n margin-top: 20px;\r\n }\r\n}\r\n\r\n\r\n.as-location-input-modal.as-mobile .as-location-input-modal-window {\r\n height: calc(100vh - 80px);\r\n}", ""]); /***/ }), /***/ 5490: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 6329: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 visibility: hidden;\r\n top: 0 !important;\r\n left: 0 !important;\r\n max-height: 99vh !important;\r\n opacity: 0;\r\n pointer-events: none;\r\n}\r\n\r\n.absol-drop-hidden > .absol-dropright-content *,\r\n.absol-drop-hidden > .absol-dropdown-content * {\r\n visibility: hidden;\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\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 display: block;\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-disabled .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-disabled .absol-vmenu-button:hover,\r\n.absol-menu-item-disabled .absol-vmenu .absol-vmenu-button-hover,\r\n.absol-menu-item-disabled .absol-hmenu-button:hover,\r\n.absol-menu-item-disabled .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-disabled {\r\n}\r\n\r\n.absol-menu-item-hidden {\r\n display: none;\r\n}\r\n\r\n.absol-menu-item-disabled button {\r\n color: rgb(155, 155, 159);\r\n}\r\n\r\n.dark .absol-menu-item-disabled 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 /*overflow-y: auto;*/\r\n /*overflow-x: hidden;*/\r\n}", ""]); /***/ }), /***/ 6114: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-message-dialog {\r\n font-size: 1rem;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n box-sizing: border-box;\r\n background-color: white;\r\n border-radius: 0.3em;\r\n border: 1px solid #dddddd;\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.as-message-dialog-header {\r\n padding: calc(5em / 14) 1em;\r\n border-bottom: 1px solid #e9ecef;\r\n}\r\n\r\n\r\n.as-message-dialog-title {\r\n font-size: 1.25em;\r\n font-weight: 500;\r\n}\r\n\r\n.as-message-dialog-body {\r\n padding: 1em;\r\n}\r\n\r\n.as-message-dialog-footer {\r\n text-align: right;\r\n padding: 10px 20px;\r\n border-top: 1px solid #e9ecef;\r\n}\r\n\r\n.as-message-dialog-footer:empty,\r\n.as-message-dialog-header:empty {\r\n display: none;\r\n}\r\n\r\n\r\n.as-message-dialog-footer button {\r\n margin-left: 1.5em;\r\n}\r\n\r\n\r\n.as-message-dialog-footer button.as-flexicon-button .as-flexicon-button-text-container {\r\n padding-left: 2em;\r\n padding-right: 2em;\r\n}", ""]); /***/ }), /***/ 4484: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-conversation-box {\r\n display: flex;\r\n flex-direction: column;\r\n font-size: 4rem;\r\n --right-width: 0;\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: calc(5em / 14);\r\n padding-bottom: calc(5em / 14);\r\n padding-left: calc(5em / 14);\r\n overflow: visible;\r\n font-size: var(--as-input-font-size);\r\n font-family: var(--as-input-font-family);\r\n}\r\n\r\n.as-message-input * {\r\n font: inherit;\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn {\r\n font-size: inherit;\r\n width: calc(40em / 14);\r\n height: calc(40em / 14);\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: calc(24em / 14);\r\n}\r\n\r\n\r\n.as-message-input-right {\r\n position: absolute;\r\n bottom: calc(10em / 14);\r\n right: calc(5em / 14);\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: calc(10em / 14);\r\n}\r\n\r\n\r\n.as-message-input-left {\r\n position: absolute;\r\n left: calc(5em / 14);\r\n bottom:calc(5em / 14);\r\n}\r\n\r\n\r\n.as-message-input-pre-ctn {\r\n position: relative;\r\n width: calc(100% - var(--right-width));\r\n border-radius: 1.8em;\r\n box-sizing: border-box;\r\n transition: width 0.1s;\r\n padding: calc(10em / 14) calc(20em / 14) calc(10em / 14) 3.57em;\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: calc(2em + 2px);\r\n vertical-align: middle;\r\n}\r\n\r\n.as-message-input:not(.as-v2) .as-message-input-pre:before {\r\n content: \"\";\r\n line-height: calc(2em + 2px);\r\n display: inline;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n/*.as-message-input.as-has-text.as-text-changed .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% - 4em - var(--always-visible-buttons-width));*/\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\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: calc(20em / 14);\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: 1.8em;\r\n}\r\n\r\n.as-message-quote-sym > span {\r\n font-size: 1.8em;\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: calc(16em / 14);\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\r\n.as-message-input-attach-preview-info {\r\n position: absolute;\r\n left: 10px;\r\n bottom: 10px;\r\n right: 10px;\r\n max-height: calc(100% - 20px);\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}\r\n\r\n.as-message-input-attach-preview-name {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.as-message-input-attach-preview-size {\r\n color: #42494c;\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\r\n max-width: 100%;\r\n bottom: 100%;\r\n background-color: white;\r\n}\r\n\r\n.as-message-input-external-tools-popup.as-align-left{\r\n left: 0;\r\n}\r\n\r\n\r\n.as-message-input-external-tools-popup.as-align-right{\r\n right: 0;\r\n}\r\n\r\n.as-message-input-external-tools-popup.as-align-fixed{\r\n right: 0;\r\n left: 0;\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}", ""]); /***/ }), /***/ 1433: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --control-horizontal-distance-2: 10px;\r\n}\r\n\r\n.mk-nav {\r\n position: relative;\r\n --mk-nav-line-top: 0;\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\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 --mk-navigator-bound-left: 0;\r\n padding-right: 4px;\r\n box-sizing: border-box;\r\n --max-text-width: 10px;\r\n min-width: calc(var(--max-text-width) + 96px);\r\n}\r\n\r\n.mk-nav::after {\r\n content: \"\";\r\n position: absolute;\r\n transition: top 0.2s;\r\n top: var(--mk-nav-line-top);\r\n height: calc(2em + 12px);\r\n border-right: 4px solid rgb(20, 100, 246);\r\n right: 0px;\r\n}\r\n\r\n.mk-nav.mk-has-draggable .mk-nav-item {\r\n padding-left: calc(2em + 2px);\r\n}\r\n\r\n.mk-nav-item {\r\n height: calc(2em + 12px);\r\n padding-left: var(--control-horizontal-distance-2);\r\n padding-right: 20px;\r\n min-width: 100px;\r\n cursor: pointer;\r\n white-space: nowrap;\r\n position: relative;\r\n overflow: visible;\r\n display: flex;\r\n align-items: center;\r\n background-color: white;\r\n}\r\n\r\n.mk-nav-item.as-board-moving {\r\n transform: none;\r\n left: var(--mk-navigator-bound-left) !important;\r\n background-color: rgb(169, 169, 172, 0.3);\r\n}\r\n\r\n.mk-nav-item:hover {\r\n background-color: rgb(169, 169, 172, 0.3);\r\n}\r\n\r\n.mk-nav-item.as-hidden{\r\n display: none;\r\n}\r\n\r\n.mk-nav-item-text-ctn {\r\n flex-grow: 1;\r\n padding-right: var(--control-horizontal-distance-2);\r\n padding-left: var(--control-horizontal-distance-2)\r\n}\r\n\r\n\r\n.mk-nav-item-switch-ctn {\r\n\r\n}\r\n\r\n/*\r\n.mk-nav-item::after {\r\n content: \"\";\r\n border: 1px solid #ddd;\r\n z-index: 2;\r\n pointer-events: none;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: -1px;\r\n}\r\n\r\n.mk-nav-item:hover::after,\r\n.mk-nav-item.mk-current::after{\r\n border-color: rgb(20, 100, 246);\r\n z-index: 3;\r\n}\r\n*/\r\n\r\n\r\n.mk-nav-item.mk-current {\r\n color: rgb(20, 100, 246);\r\n text-shadow: 1px 0 0 currentColor;\r\n}\r\n\r\n.mk-nav-item-drag-zone {\r\n position: absolute;\r\n z-index: 1;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 30px;\r\n font-size: inherit;\r\n}\r\n\r\n.mk-nav-item-drag-zone i {\r\n font-size: 1.7em;\r\n}\r\n\r\n.mk-nav-item-drag-zone::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.mk-nav-item-drag-zone::before,\r\n.mk-nav-item-drag-zone i {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}", ""]); /***/ }), /***/ 3742: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "/**** APP ***************/\r\n\r\n.am-application {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n font-size: 14px;\r\n}\r\n\r\n.am-application-frameview {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n\r\n.am-application-tabbar {\r\n display: none;\r\n}\r\n\r\n.am-application.am-show-tabbar .am-application-tabbar {\r\n display: block;\r\n}\r\n\r\n.am-application.am-show-tabbar .am-application-frameview {\r\n height: calc(100% - 3em);\r\n}\r\n\r\n\r\n/*************** HEADER****************************************/\r\n\r\n.am-header-bar {\r\n display: flex;\r\n align-items: center;\r\n background-color: var(--variant-color-primary);\r\n -webkit-box-shadow: 0px 1px 10px 2px rgba(0, 0, 0, 0.5);\r\n -moz-box-shadow: 0px 1px 10px 2px rgba(0, 0, 0, 0.5);\r\n box-shadow: 0px 1px 5px 1px rgba(0, 0, 0, 0.5);\r\n box-sizing: border-box;\r\n position: relative;\r\n font-family: Arial, Helvetica, sans-serif;\r\n color: white;\r\n height: 3em;\r\n font-size: 1rem;\r\n}\r\n\r\n\r\n.am-header-bar-left-btn,\r\nbutton.am-header-bar-command {\r\n display: inline-block;\r\n text-align: center;\r\n border: none;\r\n background-color: transparent;\r\n height: 3em;\r\n width: 3em;\r\n padding: 0;\r\n margin: 0;\r\n vertical-align: middle;\r\n color: white;\r\n outline: none;\r\n font-size: inherit;\r\n}\r\n\r\n.am-header-bar-left-btn span,\r\nbutton.am-header-bar-command span,\r\n.am-header-bar-left-btn i,\r\nbutton.am-header-bar-command i {\r\n font-size: 2em;\r\n}\r\n\r\nbutton.am-header-bar-command:not(:last-child) {\r\n margin-right: 0.6256em;\r\n}\r\n\r\n\r\n.am-header-bar-left-btn:active,\r\nbutton.am-header-bar-action:active,\r\nbutton.am-header-bar-command:active {\r\n color: rgb(220, 220, 222);\r\n}\r\n\r\n\r\n.as-header-bar-notification-action {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-header-bar-notification-action-count {\r\n position: relative;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-header-bar-notification-action-count::before {\r\n display: none;\r\n content: \"0\";\r\n position: absolute;\r\n font-size: 12px;\r\n line-height: 18px;\r\n bottom: 5px;\r\n right: -8px;\r\n background-color: rgb(221, 35, 52);\r\n color: white;\r\n text-align: center;\r\n min-width: 18px;\r\n height: 18px;\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n box-sizing: border-box;\r\n border-radius: 9px;\r\n}\r\n\r\n.am-header-bar-title-ctn {\r\n flex-grow: 1;\r\n white-space: nowrap;\r\n overflow: inherit;\r\n position: relative;\r\n height: 3em;\r\n}\r\n\r\n.am-header-bar-no-size-wrapper {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n white-space: nowrap;\r\n}\r\n\r\n.am-header-bar-no-size-wrapper::before {\r\n content: \"\";\r\n height: 100%;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-header-bar-title-wrapper {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: 100%;\r\n\r\n}\r\n\r\n.am-header-bar-title-ctn:first-child .am-header-bar-title {\r\n padding-left: 1.2em;\r\n}\r\n\r\n\r\n.am-header-bar-title {\r\n font-size: 1.2em;\r\n color: white;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n}\r\n\r\n.am-header-bar-title-desc {\r\n font-size: 0.8em;\r\n line-height: 2;\r\n}\r\n\r\n.am-header-bar-title-desc:empty {\r\n display: none;\r\n}\r\n\r\n\r\n.am-header-bar-right {\r\n\r\n}\r\n\r\n.am-header-bar-right::after {\r\n content: \"\";\r\n height: 100%;\r\n vertical-align: middle;\r\n display: inline-block;\r\n width: 0.357142857em;\r\n}\r\n\r\n\r\n.am-header-bar-right-item-ctn {\r\n vertical-align: middle;\r\n display: inline-block;\r\n}\r\n\r\n\r\nbutton.am-header-bar-action {\r\n height: 3em;\r\n width: 3em;\r\n background-color: transparent;\r\n color: white;\r\n border: none;\r\n font-size: inherit;\r\n outline: none;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-header-bar-quickmenu-btn.am-status-active .am-header-bar-quickmenu-btn-circle {\r\n background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.am-header-bar-quickmenu-btn-circle {\r\n height: 2em;\r\n width: 2em;\r\n border-radius: 50%;\r\n text-align: center;\r\n}\r\n\r\n.am-header-bar-quickmenu-btn-circle span {\r\n font-size: 1.6em;\r\n line-height: 1.25em;\r\n}\r\n\r\n.am-header-bar-quickmenu-btn.as-active .mdi-dots-horizontal-circle-outline,\r\n.am-header-bar-quickmenu-btn:not(.as-active) .mdi-dots-horizontal-circle {\r\n display: none;\r\n}\r\n\r\n\r\n.am-header-bar.am-light-weight,\r\n.am-header-bar.am-light-weight .am-header-bar-title-ctn,\r\n.am-header-bar.am-light-weight .am-header-bar-left-btn,\r\n.am-header-bar.am-light-weight button.am-header-bar-command,\r\n.am-header-bar.am-light-weight button.am-header-bar-action {\r\n height: calc(2rem + 2px);\r\n}\r\n\r\n\r\n.am-header-bar.am-light-weight .am-header-bar-left-btn span,\r\n.am-header-bar.am-light-weight button.am-header-bar-command span,\r\n.am-header-bar-left-btn i,\r\n.am-header-bar.am-light-weight button.am-header-bar-command i {\r\n font-size: 1.6em;\r\n}\r\n\r\n.am-application.am-stack > .am-activity {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n}\r\n\r\n\r\n.am-activity {\r\n width: 100%;\r\n height: 100%;\r\n background-color: white;\r\n}\r\n\r\n.am-activity.am-grid {\r\n grid-template-areas: 'header' 'body';\r\n grid-template-rows: 3em auto;\r\n display: grid;\r\n}\r\n\r\n\r\n.am-activity.am-grid > .am-header-bar {\r\n grid-area: header;\r\n}\r\n\r\n.am-activity.am-grid > .am-activity-body {\r\n grid-area: body;\r\n padding: 10px 5px;\r\n overflow: auto;\r\n}\r\n\r\n.am-explore-item-block {\r\n display: inline-block;\r\n vertical-align: top;\r\n padding: 10px 18px 15px 18px;\r\n position: relative;\r\n user-select: none;\r\n box-sizing: border-box;\r\n width: var(--item-width);\r\n outline: none;\r\n}\r\n\r\n.am-explore-item-block.as-hidden {\r\n display: none;\r\n}\r\n\r\n.am-explore-item-block:active::after,\r\n.am-explore-item-block:hover::after,\r\n.am-explore-item-block:focus::after {\r\n display: block;\r\n position: absolute;\r\n left: 10px;\r\n right: 10px;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 2;\r\n border-radius: 5px;\r\n}\r\n\r\n.am-explore-item-block:active::after {\r\n content: \"\";\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.am-explore-item-block:focus::after {\r\n content: \"\";\r\n border: 1px solid #a9a9a9;\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.am-explore-item-block-icon {\r\n display: block;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 50px;\r\n text-align: center;\r\n white-space: nowrap;\r\n color: var(--variant-color-secondary);\r\n padding: 0 5px;\r\n}\r\n\r\n.am-explore-item-block-icon::before {\r\n content: \"\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\n.am-explore-item-block-icon > span:first-child,\r\n.am-explore-item-block-icon > .mdi {\r\n display: inline-block;\r\n font-size: 50px;\r\n vertical-align: middle;\r\n line-height: 1;\r\n}\r\n\r\n.am-explore-item-block-icon > svg {\r\n width: 50px;\r\n height: 50px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.am-explore-item-block-name {\r\n width: 100%;\r\n text-align: center;\r\n padding: 10px 0 5px 0;\r\n}\r\n\r\n\r\n.am-explore-section-break {\r\n display: flex;\r\n align-content: center;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.am-explore-section-break-name {\r\n padding: 3px 5px 3px 5px;\r\n background-color: var(--variant-color-link);\r\n border-radius: 2px;\r\n color: white;\r\n\r\n}\r\n\r\n.am-explore-section-break-line {\r\n flex-grow: 1;\r\n position: relative;\r\n}\r\n\r\n.am-explore-section-break-line::after {\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n top: calc(50% - 1px);\r\n display: block;\r\n content: \"\";\r\n flex-grow: 1;\r\n border-top: 2px solid #dddddd;\r\n vertical-align: center;\r\n}\r\n\r\n.am-float-button {\r\n position: fixed;\r\n bottom: 12px;\r\n right: 12px;\r\n border-radius: 50%;\r\n width: 50px;\r\n height: 50px;\r\n transition: box-shadow 0.4s ease;\r\n background: #4610f5;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);\r\n color: #fff;\r\n font-size: 1.7rem;\r\n font-weight: bold;\r\n cursor: pointer;\r\n z-index: 500;\r\n border: none;\r\n}\r\n\r\n.am-explore-group {\r\n padding: 5px 5px 10px 5px;\r\n}\r\n\r\n.am-explore-group.as-hidden {\r\n display: none;\r\n}\r\n\r\n/******************************/\r\n.am-springboard-menu {\r\n --item-width: 150px;\r\n outline: none;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple {\r\n background-color: rgb(235, 235, 235);\r\n padding: 10px;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-group {\r\n background-color: white;\r\n border-radius: 5px;\r\n padding: 5px;\r\n\r\n}\r\n\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-group:not(:last-child) {\r\n margin-bottom: 10px;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-section-break-line {\r\n display: none;\r\n}\r\n\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-section-break-name {\r\n background-color: transparent;\r\n color: black;\r\n font-weight: bold;\r\n padding: 5px 15px;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-item-block {\r\n padding: 5px 16px;\r\n}\r\n\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-section-break {\r\n margin-bottom: 0;\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-section-break-name {\r\n background-color: white;\r\n color: black;\r\n font-weight: bold;\r\n font-size: 14px;\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-item-block:hover .am-explore-item-block-icon {\r\n color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-item-block:hover::after {\r\n content: \"\";\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-item-block:active::after {\r\n content: \"\";\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.am-springboard-menu > .absol-search-text-input {\r\n margin: 10px;\r\n max-width: 400px;\r\n box-sizing: border-box;\r\n}\r\n\r\n.am-springboard-menu::before {\r\n content: \"\";\r\n display: block;\r\n height: 1px;\r\n}\r\n\r\n/*justify-content: space-between;*/\r\n\r\n\r\n.am-springboard-menu.as-searching .am-explore-group:not(.as-search-result),\r\n.am-springboard-menu:not(.as-searching) .am-explore-group.as-search-result {\r\n display: none;\r\n}\r\n", ""]); /***/ }), /***/ 1148: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-modal {\r\n position: fixed;\r\n left: 0;\r\n height: 100%;\r\n top: 0;\r\n width: 100%;\r\n z-index: 1001000;\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\r\n.as-loading-cube-modal {\r\n background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n\r\n.as-loading-cube-modal {\r\n z-index: 1000000;\r\n background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n.as-loading-cube-modal > .as-modal-content {\r\n background-color: white;\r\n border-radius: 4px;\r\n padding: 10px;\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 display: inline-block;\r\n}\r\n\r\n.as-loading-cube-modal > .as-modal-content > svg {\r\n width: 5em;\r\n height: 5em;\r\n}\r\n\r\n\r\n.am-modal {\r\n z-index: 100005;\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n text-align: center;\r\n box-sizing: border-box;\r\n padding-top: var(--modal-margin-top);\r\n}\r\n\r\n.am-modal>div{\r\n text-align: initial;\r\n display: inline-block;\r\n}", ""]); /***/ }), /***/ 8759: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --multi-select-menu-max-height: 90px;\r\n}\r\n\r\n.as-multi-select-menu {\r\n --list-min-width: 3em;\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 white-space: normal;\r\n --as-width-limit: 100vw;\r\n max-width: var(--as-width-limit);\r\n}\r\n\r\n.as-multi-select-menu.am-multi-select-menu {\r\n min-width: unset;\r\n}\r\n\r\n.as-multi-select-menu .absol-selectbox-item-text span{\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: calc(var(--as-width-limit) - 85px);\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.as-multi-select-menu-item-ctn.as-has-more {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn.as-has-more::after {\r\n content: \"...\";\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-weight: bold;\r\n font-size: 1.5em;\r\n color: rgb(57, 57, 58);\r\n box-sizing: border-box;\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 background-color: #ebebe4;\r\n}\r\n\r\n.as-multi-select-menu-toggle-btn {\r\n\r\n}\r\n\r\n.as-multi-select-menu.as-disabled .as-multi-select-menu-item-ctn * {\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-multi-check-tree-leaf-menu {\r\n min-width: calc(var(--select-list-estimate-width) + 14px);\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-read-only .absol-selectbox-item-close,\r\n.as-multi-select-menu.as-read-only .as-multi-select-menu-toggle-btn,\r\n.as-multi-select-menu.as-disabled .absol-selectbox-item-close,\r\n.as-multi-select-menu.as-disabled .as-multi-select-menu-toggle-btn {\r\n display: none;\r\n}\r\n\r\n.as-multi-select-menu.as-read-only .absol-selectbox-item-text {\r\n padding-right: 10px;\r\n}\r\n\r\n.as-multi-select-menu.as-read-only {\r\n padding-right: 0;\r\n}\r\n\r\n.as-multi-select-menu.as-border-none {\r\n border: none;\r\n}\r\n\r\n.as-multi-select-menu.as-border-none .as-multi-select-menu-item-ctn {\r\n /*max-height: unset;*/\r\n /*overflow-y: auto;*/\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-has-max-width {\r\n --max-width: 1024px;\r\n max-width: var(--max-width);\r\n min-width: 100px !important;\r\n}\r\n\r\n.as-multi-select-menu.as-has-max-width .absol-selectbox-item-text span{\r\n max-width: calc(var(--max-width) - 85px);\r\n}", ""]); /***/ }), /***/ 7675: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --np-item-width: 370px;\r\n}\r\n\r\n\r\n.as-mobile-notification-virtual-dropdown {\r\n --np-item-width: auto;\r\n}\r\n\r\n.as-notification-panel {\r\n padding: 5px 10px;\r\n text-align: center;\r\n display: inline-block;\r\n vertical-align: top;\r\n font-size: 14px;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n\r\n.as-notification-panel > .as-np-dropdown-button:not(:last-child) {\r\n margin-right: 10px;\r\n}\r\n\r\n\r\n.as-np-dropdown-button {\r\n display: inline-block;\r\n vertical-align: center;\r\n}\r\n\r\n.as-np-db-btn {\r\n width: 40px;\r\n height: 40px;\r\n border: none;\r\n background-color: rgba(169, 169, 171, 0.2);\r\n border-radius: 50%;\r\n position: relative;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-np-db-btn:hover {\r\n background-color: rgba(169, 169, 171, 0.4);\r\n}\r\n\r\n.as-np-db-icon-ctn, .as-np-db-count {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-np-dropdown-button.as-active > .as-np-db-btn {\r\n background-color: rgba(169, 169, 220, 0.4);\r\n}\r\n\r\n\r\n.as-np-dropdown-button.as-active .as-np-db-icon-ctn {\r\n color: #0866ff;\r\n}\r\n\r\n.as-np-db-count:not([data-count]) {\r\n display: none;\r\n}\r\n\r\n.as-np-db-count {\r\n position: relative;\r\n overflow: visible;\r\n}\r\n\r\n\r\n.as-np-db-count::before {\r\n content: attr(data-count);\r\n position: absolute;\r\n font-size: 12px;\r\n line-height: 18px;\r\n bottom: 5px;\r\n left: -5px;\r\n background-color: rgb(221, 35, 52);\r\n color: white;\r\n border-radius: 9px;\r\n text-align: center;\r\n min-width: 18px;\r\n height: 18px;\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-np-db-icon-ctn > span,\r\n.as-np-db-icon-ctn > i,\r\n.as-np-db-icon-ctn > svg {\r\n font-size: 20px;\r\n color: currentColor;\r\n}\r\n\r\n\r\n.as-np-db-dropdown {\r\n position: fixed;\r\n right: 20px;\r\n\r\n background-color: white;\r\n visibility: hidden;\r\n opacity: 0;\r\n --max-height: calc(90vh - 160px);\r\n max-height: var(--max-height);\r\n z-index: -1000;\r\n text-align: left;\r\n}\r\n\r\n.as-np-db-dropdown::before {\r\n content: \"\";\r\n display: block;\r\n height: 0;\r\n}\r\n\r\n\r\n.as-np-db-dropdown:empty {\r\n display: none;\r\n}\r\n\r\n.as-np-db-dropdown-quick-menu-ctn {\r\n position: absolute;\r\n z-index: 9;\r\n left: calc(var(--np-item-width) - 30px);\r\n top: 2px;\r\n}\r\n\r\n.as-np-db-quick-menu-btn {\r\n width: 30px;\r\n height: 30px;\r\n}\r\n\r\n.as-np-db-quick-menu-btn:hover {\r\n background-color: var(--icon-background-cover-hover);\r\n}\r\n\r\n.as-np-dropdown-button.as-active .as-np-db-dropdown {\r\n z-index: 10;\r\n visibility: visible;\r\n opacity: 1;\r\n}\r\n\r\n.as-np-db-dropdown-body > h3 {\r\n font-size: 16px;\r\n margin: 0;\r\n padding: 0 10px;\r\n text-align: left;\r\n color: rgb(169, 169, 170);\r\n line-height: 34px;\r\n\r\n}\r\n\r\n.as-np-db-dropdown-body > h4 {\r\n font-size: 14px;\r\n margin: 0;\r\n padding: 0 20px;\r\n text-align: left;\r\n color: rgb(69, 69, 70);\r\n}\r\n\r\n\r\n.as-np-section-header {\r\n padding: 5px 20px;\r\n display: flex;\r\n}\r\n\r\n.as-np-section-name {\r\n font-size: 14px;\r\n font-weight: bold;\r\n flex-grow: 1;\r\n line-height: 20px;\r\n}\r\n\r\n.as-np-section-name::before {\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: 1.5;\r\n content: attr(data-name);\r\n}\r\n\r\n.as-np-section-action {\r\n cursor: pointer;\r\n color: var(--variant-color-link);\r\n padding: 0 5px;\r\n line-height: 20px;\r\n}\r\n\r\n.as-np-section-action:hover {\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-np-section-action:not([data-text]) {\r\n display: none;\r\n}\r\n\r\n.as-np-section-action::before {\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: 1.5;\r\n content: attr(data-text);\r\n}\r\n\r\n\r\n.as-np-list {\r\n overflow-y: auto;\r\n max-height: calc(var(--max-height) - 100px);\r\n}\r\n\r\n.as-np-db-dropdown.as-has-quick-menu > .as-np-db-dropdown-body > .as-np-list:first-child {\r\n margin-top: 30px;\r\n}\r\n\r\n.as-np-list-more-ctn {\r\n padding: 10px 0;\r\n text-align: center;\r\n}\r\n\r\n.as-np-list-more-btn {\r\n width: calc(100% - 20px);\r\n height: 30px;\r\n}\r\n\r\n.as-np-item {\r\n box-sizing: border-box;\r\n position: relative;\r\n cursor: pointer;\r\n border-bottom: 1px solid #dddddd;\r\n width: var(--np-item-width);\r\n}\r\n\r\n.as-np-item-body {\r\n padding-right: 26px;\r\n min-height: 52px;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-np-item-body[data-time-text]::after {\r\n display: block;\r\n font-size: 12px;\r\n color: #1da1ff;\r\n padding-left: 10px;\r\n}\r\n\r\n\r\n.as-np-item-body:hover {\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n\r\n.as-np-item-unread-btn::after {\r\n content: \"\";\r\n background-color: rgb(107, 176, 255);\r\n width: 12px;\r\n height: 12px;\r\n border-radius: 50%;\r\n display: inline-block;\r\n}\r\n\r\n.as-np-item-unread-btn {\r\n position: absolute;\r\n right: 0;\r\n top: calc(50% - 13px);\r\n width: 26px;\r\n height: 26px;\r\n padding: 0;\r\n background-color: transparent;\r\n outline: none;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n border: none;\r\n}\r\n\r\n.as-np-item-pin-btn {\r\n position: absolute;\r\n right: 0px;\r\n top: 0;\r\n width: 26px;\r\n height: 26px;\r\n padding: 0;\r\n background-color: transparent;\r\n outline: none;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n border: none;\r\n}\r\n\r\n.as-np-item-pin-btn > span {\r\n color: #aaaaaa;\r\n font-size: 20px;\r\n display: inline-block;\r\n}\r\n\r\n.as-np-item-pin-btn:hover > span {\r\n color: #dddddd;\r\n}\r\n\r\n\r\n.as-np-item.as-pin .as-np-item-unread-btn {\r\n top: calc(50% - 7px);\r\n}\r\n\r\n\r\n.as-np-item:not(.as-unread) .as-np-item-unread-btn,\r\n.as-np-item:not(.as-pin) .as-np-item-pin-btn {\r\n display: none;\r\n}\r\n\r\n\r\n.as-np-item-quick-menu-ctn {\r\n position: absolute;\r\n z-index: 1;\r\n right: 30px;\r\n top: calc(50% - 15px);\r\n visibility: hidden;\r\n\r\n}\r\n\r\n.as-np-item:hover .as-np-item-quick-menu-ctn {\r\n visibility: visible;\r\n}\r\n\r\n.as-np-item-quick-menu-btn {\r\n background-color: rgb(230, 230, 230);\r\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 50%;\r\n border: none;\r\n font-size: 20px;\r\n cursor: pointer;\r\n padding: 0;\r\n}\r\n\r\n.as-np-item-quick-menu-btn:active {\r\n box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n\r\n.as-mb-vd-header-bar .as-header-bar-notification-action {\r\n display: none;\r\n}\r\n\r\n\r\n.as-mobile-notification-virtual-dropdown {\r\n position: fixed;\r\n right: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: white;\r\n overflow: hidden;\r\n z-index: 1005;\r\n}\r\n\r\n\r\n.as-mobile-notification-virtual-dropdown.as-hidden {\r\n visibility: hidden;\r\n opacity: 0;\r\n z-index: -1000;\r\n}\r\n\r\n.as-mb-vd-body {\r\n height: calc(100% - 3em);\r\n overflow: auto;\r\n}\r\n\r\n.as-mb-vd-body .as-np-item-body {\r\n padding-right: 56px;\r\n}\r\n\r\n.as-mb-vd-body .as-np-item-quick-menu-ctn {\r\n visibility: visible;\r\n}\r\n\r\n.as-mb-vd-body .as-np-item-quick-menu-btn {\r\n background-color: transparent;\r\n box-shadow: none !important;\r\n}\r\n\r\n.as-mb-vd-body .as-np-item-quick-menu-btn:active {\r\n background-color: var(--as-transparent-button-active-color);\r\n}", ""]); /***/ }), /***/ 1099: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: 1rem;\r\n box-sizing: border-box;\r\n width: 4em;\r\n --text-width: 0.5em;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.absol-number-input.as-width-auto {\r\n width: calc(var(--text-width) + 1em);\r\n}\r\n\r\n.absol-number-input.as-has-stepper.as-width-auto {\r\n width: calc(var(--text-width) + 2.2em);\r\n}\r\n\r\n.absol-number-input-text-container {\r\n right: 0;\r\n left: 0em;\r\n top: 0;\r\n bottom: 0;\r\n position: absolute;\r\n}\r\n\r\n/*.absol-number-input.as-read-only .absol-number-input-button-up-container,*/\r\n/*.absol-number-input.as-read-only .absol-number-input-button-down-container,*/\r\n.absol-number-input-button-up-container,\r\n.absol-number-input-button-down-container {\r\n display: none;\r\n}\r\n\r\n.absol-number-input.as-read-only.as-border-none {\r\n border: none;\r\n}\r\n\r\n.absol-number-input.as-read-only.as-border-none input {\r\n /*text-align: left;*/\r\n padding-left: 0;\r\n}\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.as-has-stepper .absol-number-input-button-up-container,\r\n.absol-number-input.as-has-stepper .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 overflow: hidden;\r\n display: block;\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 font-size: inherit;\r\n}\r\n\r\n.as-printer-content .absol-number-input button {\r\n display: none;\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: rgba(101, 101, 101, 0.3);\r\n}\r\n\r\n.absol-number-input.as-has-stepper .absol-number-input-text-container {\r\n right: 1.2em;\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 text-align: right;\r\n padding: 0 0.35em;\r\n box-sizing: border-box;\r\n font: inherit;\r\n}\r\n\r\n.absol-number-input.as-has-stepper .absol-number-input-text-container > input[type=\"text\"] {\r\n padding: 0 0.2em;\r\n}\r\n\r\n.absol-number-input.absol-disabled {\r\n pointer-events: none;\r\n color: var(--as-disabled-text-color);\r\n}\r\n\r\n.absol-number-input.absol-disabled input {\r\n background-color: var(--as-disabled-background-color);\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 opacity: 0.3;\r\n}\r\n\r\nbody.as-number-input-force-dragging {\r\n user-select: none;\r\n pointer-events: none;\r\n}\r\n\r\n.as-number-input-mouse-line {\r\n border: 1px dashed #bfc1c2;\r\n position: fixed;\r\n z-index: 1e8;\r\n}", ""]); /***/ }), /***/ 8900: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-omt {\r\n display: block;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\r\n}\r\n\r\n.as-omt-node {\r\n\r\n}\r\n\r\n\r\n.as-omt-field {\r\n --level: 0;\r\n position: relative;\r\n padding-bottom: 10px;\r\n}\r\n\r\n\r\n.as-omt-field.as-hover::before {\r\n border-color: rgb(30, 101, 234);\r\n border-width: 2px;\r\n}\r\n\r\n.as-omt-field::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n top: 15px;\r\n right: 0;\r\n bottom: 0;\r\n border: 1px solid rgb(170, 170, 200);\r\n z-index: 0;\r\n pointer-events: none;\r\n}\r\n\r\n.as-omt-field-header {\r\n padding-left: 10px;\r\n line-height: 2;\r\n}\r\n\r\n\r\n.as-omt-field-body {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n min-height: 1em;\r\n}\r\n\r\n\r\n.as-omt-field-raw-ctn,\r\n.as-omt-field.as-mode-raw > .as-omt-field-body {\r\n display: none;\r\n}\r\n\r\n.as-omt-field.as-mode-raw > .as-omt-field-raw-ctn {\r\n display: block;\r\n}\r\n\r\n\r\n.as-omt-field-command-ctn {\r\n position: absolute;\r\n z-index: 20;\r\n right: 10px;\r\n top: 20px;\r\n background-color: white;\r\n height: 30px;\r\n display: none;\r\n}\r\n\r\n.bsc-white .as-omt-field-command-ctn button[data-command=\"view_mode\"] {\r\n display: none;\r\n}\r\n\r\n\r\n.as-omt-field.as-hover > .as-omt-field-command-ctn {\r\n display: block;\r\n}\r\n\r\n.as-omt-field-command-ctn > button {\r\n height: 30px;\r\n}\r\n\r\n.as-omt-field-command-ctn > button:not(:first-child) {\r\n margin-left: 5px;\r\n}\r\n\r\n.as-omt-field-command-ctn > button span {\r\n font-size: 24px;\r\n}\r\n\r\n.as-omt-field-name {\r\n font-weight: bold;\r\n background-color: white;\r\n display: inline-block;\r\n z-index: 3;\r\n position: relative;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n margin-right: 10px;\r\n}\r\n\r\n\r\n.as-omt-field-body > .as-omt-field:first-child {\r\n margin-top: 10px;\r\n}\r\n\r\n.as-omt-field code {\r\n white-space: pre-wrap;\r\n}\r\n\r\n.as-omt-field-raw-ctn {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n}\r\n\r\n.as-omt-field.as-type-struct > .as-omt-field-body {\r\n padding-left: 20px;\r\n}\r\n\r\nimg.as-omt-field-value {\r\n max-width: calc(100vw - 5em);\r\n max-height: 10em;\r\n}\r\n\r\n.as-omt-dialog .as-message-dialog-body {\r\n max-height: calc(90vh - 5em);\r\n max-width: calc(90vw - 5em);\r\n overflow: auto;\r\n}\r\n\r\n.as-omt-option-row {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.as-omt-option-row:not(:first-child) {\r\n margin-top: 5px;\r\n}\r\n\r\n.as-omt-field-raw-ctn > div > .as-omt-field-name {\r\n display: none;\r\n}\r\n\r\n.as-omt-option-row > .as-omt-field {\r\n flex-grow: 1;\r\n}\r\n\r\n\r\n.as-omt-field-color-value-bg {\r\n height: 2em;\r\n width: 5em;\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 --omt-color-value: transparent;\r\n}\r\n\r\n.as-omt-field-color-value {\r\n width: 100%;\r\n height: 100%;\r\n background-color: var(--omt-color-value);\r\n}\r\n", ""]); /***/ }), /***/ 2743: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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.as-onscreen-widget.as-size-loading {\r\n visibility: hidden;\r\n}", ""]); /***/ }), /***/ 2356: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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\r\n.absol-onscreen-window > .as-window-box {\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.absol-onscreen-window > .as-window-box > .as-window-box-body {\r\n flex-grow: 1;\r\n}\r\n\r\n.as-window-box {\r\n position: relative;\r\n\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.as-window-box-header {\r\n display: flex;\r\n min-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 align-items: center;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n}\r\n\r\n.as-window-box-header-icon-ctn:empty {\r\n display: none;\r\n}\r\n\r\n.as-window-box-header-title {\r\n flex-grow: 1;\r\n padding-left: 0.2em;\r\n}\r\n\r\n.as-window-box-header-button-ctn {\r\n}\r\n\r\n.as-window-box-header-icon {\r\n margin-right: 0.2em;\r\n font-size: inherit;\r\n}\r\n\r\nspan.as-window-box-header-icon {\r\n line-height: 1.2em;\r\n}\r\n\r\nsvg.as-window-box-header-icon {\r\n width: 1.2em;\r\n height: 1.2em;\r\n}\r\n\r\nspan.as-window-box-header-title {\r\n line-height: 1.2em;\r\n font-size: 1em;\r\n color: rgb(33, 33, 34);\r\n}\r\n\r\n\r\n.as-window-box-header-button-ctn > 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: rgb(169, 169, 169);\r\n outline: none;\r\n}\r\n\r\n.as-window-box-header-button-ctn > button:hover {\r\n color: rgb(103, 103, 103);\r\n}\r\n\r\n.as-window-box-header-button-ctn > button:active {\r\n color: rgb(33, 33, 34);\r\n}\r\n\r\n.as-window-box-header-button-ctn > button:hover > .mdi-close {\r\n color: rgb(255, 59, 59);\r\n}\r\n\r\n.as-window-box-header-button-ctn > 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: 1000000006;\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}", ""]); /***/ }), /***/ 4610: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 5622: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 font-size: 14px;\r\n font-family: Arial, Helvetica, sans-serif;\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 white-space: nowrap;\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 display: inline-block;\r\n height: calc(2em + 2px);;\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 font-size: inherit;\r\n display: inline-block;\r\n height: calc(2em + 2px);\r\n width: 3em;\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\nli.absol-page-number > a {\r\n font-size: inherit;\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 color: white;\r\n\r\n}\r\n\r\n.absol-page-number-buttons > li > a {\r\n line-height: calc(2em + 2px);\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: var(--icon-background-cover-hover);\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 font-size: inherit;\r\n width: 3em;\r\n margin-left: 0.3em;\r\n margin-right: 0.3em;\r\n text-align: center;\r\n height: 1.8em;\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}\r\n\r\n.absol-page-number a::before {\r\n content: attr(data-index-text);\r\n}\r\n\r\n.absol-page-selector.as-simple-mode .absol-page-number,\r\n.absol-page-selector.as-simple-mode .page-first,\r\n.absol-page-selector.as-simple-mode .page-last{\r\n display: none;\r\n}\r\n\r\n.absol-page-selector.as-simple-mode .mdi{\r\n font-size: 20px;\r\n line-height: 1.5;\r\n}", ""]); /***/ }), /***/ 8815: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --as-path-menu-max-text-width: 150px;\r\n}\r\n\r\n.am-mobile-theme {\r\n --as-path-menu-max-text-width: 100px;\r\n}\r\n\r\n\r\n.as-path-menu-item .mdi-chevron-right::before {\r\n transition: transform 0.1s;\r\n}\r\n\r\n.as-path-menu .as-ribbon-split-button-text {\r\n max-width: var(--as-path-menu-max-text-width);\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n display: inline-block;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-path-menu-item.as-has-no-item .as-ribbon-split-button-extend {\r\n display: none;\r\n}\r\n\r\n\r\n.as-path-view {\r\n white-space: nowrap;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n font-size: 1em;\r\n height: calc(2em + 2px);\r\n}\r\n\r\n.as-path-view-item {\r\n display: inline-block;\r\n white-space: nowrap;\r\n background: transparent;\r\n border: 1px solid transparent;\r\n box-sizing: border-box;\r\n height: 100%;\r\n position: relative;\r\n padding-left: 0.5em;\r\n padding-right: 0;\r\n cursor: pointer;\r\n font-size: inherit;\r\n}\r\n\r\n.as-path-view-item:last-child {\r\n padding-right: 0.5em;\r\n}\r\n\r\n.as-path-view-item:hover {\r\n border-color: #dddddd;\r\n}\r\n\r\n.as-path-view-item::before{\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n right: 1em;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.as-path-view-item:last-child::before{\r\n right: 0;\r\n}\r\n\r\n.as-path-view-item:hover::before {\r\n background-color: rgba(169, 169, 169, 0.15);\r\n}\r\n\r\n.as-path-view-item:active::before {\r\n background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n.as-path-view-item-icon {\r\n margin-right: 0.5em;\r\n}\r\n\r\nspan.as-path-view-item-icon,\r\ni.as-path-view-item-icon {\r\n font-size: 1.5em;\r\n line-height: 1;\r\n text-align: center;\r\n}\r\n\r\nsvg.as-path-view-item-icon,\r\nimg.as-path-view-item-icon {\r\n width: 1.5em;\r\n height: 1.5em;\r\n}\r\n\r\n\r\n\r\n.as-path-view-item-text {\r\n padding-right: 0.2em;\r\n}\r\n\r\n\r\n.as-path-view-item-arrow {\r\n width: 1em;\r\n text-align: center;\r\n}\r\n\r\n.as-path-view-item-icon,\r\n.as-path-view-item-text,\r\n.as-path-view-item-arrow {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-path-view-item:last-child .as-path-view-item-arrow {\r\n display: none;\r\n}", ""]); /***/ }), /***/ 7508: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-picking-list {\r\n font-size: 14px;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n\r\n.as-picking-list-item {\r\n height: 30px;\r\n position: relative;\r\n padding-right: 40px;\r\n padding-left: 10px;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-picking-list-item::before {\r\n content: \"\";\r\n display: inline-block;\r\n height: 100%;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-picking-list-item-text {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-picking-list-item:hover {\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-picking-list-item:active {\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.as-picking-list-item-checked {\r\n position: absolute;\r\n right: 5px;\r\n top: 0;\r\n bottom: 0;\r\n font-size: 20px;\r\n}\r\n\r\n.as-picking-list-item-checked::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.as-picking-list-item-checked::before,\r\n.as-picking-list-item-checked span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n font-size: inherit;\r\n}\r\n\r\n.as-picking-list-item:not(.as-checked) .as-picking-list-item-checked {\r\n display: none;\r\n}", ""]); /***/ }), /***/ 9963: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-autocomplete-input-item.as-place-search-auto-complete-item:not(:last-child) {\r\n border-bottom: 1px solid #dddddd;\r\n\r\n}\r\n\r\n.absol-autocomplete-input-item.as-place-search-auto-complete-item {\r\n padding: 3px 5px;\r\n height: auto;\r\n}\r\n", ""]); /***/ }), /***/ 4050: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 2819: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --as-process-l-bar-active-color: rgb(255, 160, 0);\r\n --as-process-l-bar-item-width: 60px;\r\n}\r\n\r\n.as-process-l-bar {\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 14px;\r\n display: inline-block;\r\n vertical-align: top;\r\n position: relative;\r\n --as-process-l-bar-item-min-width: 0;\r\n}\r\n\r\n\r\n\r\n.as-process-l-bar-step-ctn {\r\n white-space: nowrap;\r\n}\r\n\r\n.as-process-l-bar-col:not(:last-child) {\r\n margin-right: 10px;\r\n}\r\n\r\n.as-process-l-bar-col {\r\n vertical-align: top;\r\n display: inline-block;\r\n}\r\n\r\n.as-process-l-bar-step {\r\n width: var(--as-process-l-bar-item-width);\r\n min-width: var(--as-process-l-bar-item-min-width);\r\n height: 15px;\r\n background-color: #ebebeb;\r\n border: solid 1px #bfbfbf;\r\n transition: background-color 0.2s;\r\n position: relative;\r\n}\r\n\r\n\r\n\r\n.as-process-l-bar-step.as-active {\r\n background-color: var(--as-process-l-bar-active-color);\r\n border-color: rgb(20, 100, 246);\r\n}\r\n\r\n.as-process-l-bar-step.as-active::after {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: calc(100% + 3px);\r\n border-top: 2px solid rgb(20, 100, 246);\r\n}\r\n\r\n\r\n.as-process-l-bar-step::before {\r\n content: \"\";\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-process-l-bar.as-disabled .as-process-l-bar-step::before{\r\n display: none;\r\n}\r\n\r\n.as-process-l-bar-step:hover::before {\r\n background-color: rgba(169, 169, 172, 0.3);\r\n}\r\n\r\n.as-process-l-bar-step.as-active,\r\n.as-process-l-bar-step:hover {\r\n background-color: var(--as-process-l-bar-active-color);\r\n}\r\n\r\n\r\n.as-process-l-bar-col .as-process-l-bar-step:not(:last-child) {\r\n margin-bottom: 10px;\r\n}\r\n\r\n.as-process-l-bar-step-name {\r\n position: absolute;\r\n left: 0;\r\n top: 24px;\r\n font-weight: bold;\r\n}\r\n\r\n\r\n.as-process-l-bar.as-col-layout .as-process-l-bar-step-name {\r\n position: relative;\r\n left: initial;\r\n top: unset;\r\n}\r\n\r\n\r\n.as-process-l-bar.as-single-line .as-process-l-bar-step-ctn {\r\n white-space: normal;\r\n}\r\n\r\n\r\n.as-process-l-bar.as-single-line .as-process-l-bar-col {\r\n margin-bottom: 10px;\r\n}\r\n\r\n.as-process-l-bar.as-single-line .as-process-l-bar-step-name {\r\n position: relative;\r\n display: block;\r\n left: 0 !important;\r\n top: 0!important;\r\n}", ""]); /***/ }), /***/ 2015: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 --value-color: #007bff;\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: var(--value-color);\r\n transition: width .6s ease;\r\n}\r\n\r\n.as-progress-bar.as-variant-success,\r\n.as-progress-circle.as-variant-success {\r\n --value-color: #28a745;\r\n}\r\n\r\n.as-progress-bar.as-variant-info,\r\n.as-progress-circle.as-variant-info {\r\n --value-color: #17a2b8;\r\n}\r\n\r\n.as-progress-bar.as-variant-warning,\r\n.as-progress-circle.as-variant-warning {\r\n --value-color: #ffc107;\r\n}\r\n\r\n.as-progress-bar.as-variant-danger,\r\n.as-progress-circle.as-variant-danger {\r\n --value-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}\r\n\r\n\r\n.as-progress-circle {\r\n display: inline-block;\r\n width: 7em;\r\n height: 7em;\r\n background-color: #fcfcf6;\r\n border-radius: 50%;\r\n position: relative;\r\n --value-color: #007bff;\r\n\r\n box-shadow: 3px 2px 12px -1px rgba(0, 0, 0, 0.1) inset;\r\n overflow: hidden;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.as-progress-circle-inner {\r\n background-color: white;\r\n position: absolute;\r\n border-radius: 50%;\r\n left: 0.8em;\r\n right: 0.8em;\r\n top: 0.8em;\r\n bottom: 0.8em;\r\n font-size: 1rem;\r\n box-shadow: 3px 2px 12px -1px rgba(0, 0, 0, 0.1);\r\n white-space: nowrap;\r\n text-align: center;\r\n}\r\n\r\n\r\n.as-progress-circle-inner::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-progress-circle-text {\r\n display: inline-block;\r\n vertical-align: middle;\r\n white-space: pre-wrap;\r\n max-width: calc(100% - 0.3em);\r\n font-size: 1em;\r\n color: #454c5b;\r\n}\r\n\r\n.as-progress-circle-start,\r\n.as-progress-circle-end {\r\n border-radius: 50%;\r\n width: 0.8em;\r\n height: 0.8em;\r\n background-color: var(--value-color);\r\n /*background-color: red;*/\r\n top: 0;\r\n left: calc(50% - 0.4em);\r\n position: absolute;\r\n /*box-shadow: 3px 2px 12px -1px rgba(0, 0, 0, 0.1);*/\r\n}\r\n\r\n.as-progress-circle-pie {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n border-radius: 50%;\r\n background-color: var(--value-color);\r\n}\r\n\r\n\r\n.as-progress-circle-end {\r\n\r\n}\r\n\r\n\r\n", ""]); /***/ }), /***/ 4734: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 3346: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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", ""]); /***/ }), /***/ 9450: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 3813: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 5517: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "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}", ""]); /***/ }), /***/ 9955: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 2946: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-ribbon-button {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: calc(2em + 2);\r\n padding-left: 0.5em;\r\n padding-right: 0.5em;\r\n\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\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:disabled .as-ribbon-button-icon {\r\n color: rgba(16, 16, 16, 0.3) !important;\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.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-text::before {\r\n content: attr(data-text);\r\n}\r\n\r\n.as-ribbon-button.as-no-dropdown .as-ribbon-dropdown-icon {\r\n display: none;\r\n}\r\n\r\n.as-ribbon-button.as-big {\r\n width: 5em;\r\n height: auto;\r\n white-space: nowrap;\r\n padding-left: 0;\r\n padding-right: 0;\r\n}\r\n\r\n.as-ribbon-button.as-big span.as-ribbon-button-icon {\r\n font-size: 2em;\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n\r\n.as-ribbon-button.as-big .as-ribbon-button-text {\r\n white-space: normal;\r\n max-width: calc(100% - 1em);\r\n}\r\n\r\n.as-ribbon-button.as-big svg.as-ribbon-button-icon,\r\n.as-ribbon-button.as-big img.as-ribbon-button-icon {\r\n height: 2em;\r\n width: 2em;\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n\r\n.as-ribbon-button.as-appearance-button {\r\n height: calc(2rem + 2px);\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 font-size: 1rem;\r\n}\r\n\r\n\r\n.as-ribbon-button.as-appearance-button:hover {\r\n background-color: #D3D3D3;\r\n}\r\n\r\n.as-ribbon-button.as-appearance-button:active,\r\n.as-ribbon-button.as-appearance-button.as-quick-menu-attached {\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-select-ribbon-menu {\r\n color: #007bff;\r\n}\r\n\r\n.as-ribbon-selected {\r\n background-color: #dfdfdf;\r\n}\r\n\r\n.as-mobile-ribbon-list > button {\r\n font-size: 12px;\r\n}\r\n\r\n@media screen and (min-width: 350px) {\r\n .as-mobile-ribbon-list .as-ribbon-button.as-big {\r\n width: 25%;\r\n }\r\n}\r\n\r\n\r\n@media screen and (max-width: 350px) {\r\n .as-mobile-ribbon-list .as-ribbon-button.as-big {\r\n width: 33%;\r\n }\r\n}\r\n\r\n.as-mobile-ribbon-list .as-ribbon-button {\r\n vertical-align: top;\r\n font-size: 13px;\r\n}\r\n\r\n.as-mobile-ribbon-list .as-ribbon-button.as-big span.as-ribbon-button-icon {\r\n font-size: 20px;\r\n}", ""]); /***/ }), /***/ 8192: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-ribbon-split-button {\r\n display: inline-block;\r\n vertical-align: middle;\r\n height: calc(2em + 2px);\r\n font-family: Arial, Helvetica, sans-serif;\r\n box-sizing: border-box;\r\n font-size: 1rem;\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.2em;\r\n border-width: 1px 0px 1px 1px;\r\n color: inherit;\r\n}\r\n\r\n.as-ribbon-split-button-extend {\r\n color: rgb(37, 36, 35);\r\n width: calc(1em + 2px);\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 margin-right: 0.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\nspan.as-ribbon-split-button-icon {\r\n font-size: 1.2em;\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-text::before {\r\n content: attr(data-text);\r\n}\r\n\r\n.as-ribbon-split-button-extend .as-ribbon-split-button-text {\r\n display: none;\r\n}\r\n\r\n.as-ribbon-split-button.as-no-dropdown .as-ribbon-dropdown-icon{\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}\r\n\r\n.as-ribbon-split-button.as-big {\r\n width: 5em;\r\n height: auto;\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-content {\r\n height: auto;\r\n}\r\n\r\n.as-ribbon-split-button.as-big span.as-ribbon-split-button-icon {\r\n font-size: 2em;\r\n display: block;\r\n margin: 0;\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-extend .as-ribbon-split-button-text {\r\n display: inline-block;\r\n white-space: normal;\r\n max-width: calc(100% - 1em);\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-primary .as-ribbon-split-button-text {\r\n display: none;\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-extend {\r\n white-space: nowrap;\r\n width: 100%;\r\n height: auto;\r\n border-width: 0 1px 1px 1px;\r\n\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-primary {\r\n width: 100%;\r\n height: 2.5em;\r\n box-sizing: border-box;\r\n border-width: 1px 1px 0 1px;\r\n}\r\n\r\n.as-ribbon-split-button.as-big img.as-ribbon-split-button-icon,\r\n.as-ribbon-split-button.as-big svg.as-ribbon-split-button-icon {\r\n width: 2em;\r\n height: 2em;\r\n}", ""]); /***/ }), /***/ 1690: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 5770: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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.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-color: rgba(180, 180, 182, 0.1);\r\n overflow: hidden;\r\n}\r\n\r\n.absol-scrollbar-button {\r\n position: absolute;\r\n background-color: rgba(133, 133, 133, 0.5);\r\n border-radius: 2px;\r\n}\r\n\r\n.absol-scrollbar-button:hover, .absol-scrollbar-button:active {\r\n background-color: rgba(133, 133, 133, 1);;\r\n}\r\n\r\n\r\n.absol-scrollbar.absol-hidden {\r\n visibility: hidden;\r\n}\r\n\r\n.absol-vscrollbar .absol-scrollbar-button {\r\n width: 100%;\r\n}\r\n\r\n\r\n.absol-hscrollbar .absol-scrollbar-button {\r\n height: 100%;\r\n}\r\n\r\n.absol-table-scroller-vscrollbar-container .absol-vscrollbar:not(.as-overflow) {\r\n visibility: hidden;\r\n pointer-events: none;\r\n}\r\n\r\n.absol-table-scroller-left-vscroller-viewport:empty {\r\n display: none;\r\n}", ""]); /***/ }), /***/ 846: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: 1rem;\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: calc(16em / 14);\r\n width: calc(16em / 14);\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 .as-spinner-ico{\r\n width: 2em;\r\n height: 2em;\r\n}\r\n\r\n.absol-search-text-input:not(.as-waiting) svg.as-spinner-ico,\r\n.absol-search-text-input.as-waiting svg:not(.as-spinner-ico) {\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}", ""]); /***/ }), /***/ 7145: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --select-box-item-height: calc(20rem / 14);\r\n --select-box-item-font-size: 1rem;\r\n --select-box-item-border-radius: 9px;\r\n --select-box-item-close-opacity: 0;\r\n --select-box-min-height: calc(2rem + 2px);\r\n --select-box-focus-item-color: rgb(208, 145, 239);\r\n}\r\n\r\n.absol-selectbox {\r\n --list-min-width: 3em;\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: calc(3rem / 14);\r\n box-sizing: border-box;\r\n padding-right: var(--select-box-item-height);\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: var(--as-disabled-background-color);\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: rgb(113, 148, 169);\r\n border-color: rgb(121, 165, 192);\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: white;\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:hover {\r\n color: var(--as-transparent-button-text-hover-color);\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}", ""]); /***/ }), /***/ 7607: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: calc(20rem / 14);\r\n font-size: 1rem;\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-item.as-disabled,\r\n.absol-selectlist-item.as-disabled * {\r\n color: var(--as-disabled-text-color);\r\n pointer-events: none;\r\n}\r\n\r\n.absol-selectlist:not(.as-searching) > .absol-selectlist-item.as-last-in-group,\r\n.as-select-list-box:not(.as-searching) .as-last-in-group {\r\n position: relative;\r\n overflow: visible;\r\n}\r\n\r\n\r\n.as-select-list-box:not(.as-searching) .as-last-in-group::after,\r\n.absol-selectlist:not(.as-searching) > .absol-selectlist-item.as-last-in-group:not(:last-child)::after {\r\n content: \"\";\r\n border-bottom: 1px solid #aaaaaa;\r\n position: absolute;\r\n left: 0.2em;\r\n right: 0.2em;\r\n bottom: -0.5px;\r\n z-index: 20;\r\n}\r\n\r\n.absol-selectlist-item-text {\r\n line-height: inherit;\r\n white-space: pre;\r\n padding-left: var(--as-input-horizontal-padding);\r\n padding-right: var(--as-input-horizontal-padding);\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 height: 20px;\r\n line-height: 20px;\r\n --level: 0;\r\n padding-left: calc(0.9em * var(--level));\r\n}\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.absol-selectlist-item {\r\n padding-right: calc(0.35em + var(--select-list-desc-width));\r\n}\r\n\r\n.absol-selectlist-item-desc-container {\r\n width: var(--select-list-desc-width);\r\n}\r\n\r\n\r\n.as-select-list-icon {\r\n font-size: 1.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n padding-left: var(--as-input-horizontal-padding);\r\n}\r\n\r\n\r\n\r\n/**************** MOBILE ******************************/\r\n\r\n:root {\r\n --modal-margin-top: 80px;\r\n --modal-margin-bottom: 80px;\r\n --modal-max-width: 500px;\r\n --modal-width: calc(100vw - 80px);\r\n /*--modal-border-radius: 8px;*/\r\n --modal-border-radius: 0px;\r\n}\r\n\r\n.am-list-modal,\r\n.am-list-modal-v2 {\r\n z-index: 100005;\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n text-align: center;\r\n box-sizing: border-box;\r\n padding-top: var(--modal-margin-top);\r\n background-color: rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.am-list-modal > div,\r\n.am-list-modal-v2 > div {\r\n display: inline-block;\r\n text-align: initial;\r\n}\r\n\r\n\r\n.am-list-popup-box {\r\n box-shadow: 2px 2px 2px 0px #908787;\r\n -webkit-box-shadow: 2px 2px 2px 0px #908787;\r\n background-color: #ffffff;\r\n border-radius: var(--modal-border-radius);\r\n font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-list-popup-box.am-enable-search .absol-search-text-input,\r\n.am-list-modal-v2.as-enable-search .absol-search-text-input {\r\n visibility: visible;\r\n}\r\n\r\n\r\n.am-list-popup-header {\r\n height: calc(2em + 10px);\r\n display: block;\r\n white-space: nowrap;\r\n box-sizing: border-box;\r\n padding-top: 5px;\r\n padding-bottom: 5px;\r\n padding-left: 10px;\r\n border-bottom: solid 1px #dddddd;\r\n /*background-color: rgba(169, 169, 169, 0.2);*/\r\n}\r\n\r\n.am-list-popup-header .absol-search-text-input {\r\n display: inline-block;\r\n width: calc(100% - 2em - 18px);\r\n vertical-align: middle;\r\n box-sizing: border-box;\r\n background-color: white;\r\n}\r\n\r\n.am-list-popup-close-btn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n border-radius: 50%;\r\n padding: 0;\r\n height: 2em;\r\n width: 2em;\r\n font-size: inherit;\r\n border: none;\r\n outline: none;\r\n margin-left: 10px;\r\n background-color: rgb(255, 255, 255);\r\n color: #7a7a7a;\r\n white-space: nowrap;\r\n}\r\n\r\n.am-list-popup-close-btn:active {\r\n color: red;\r\n}\r\n\r\n\r\n.am-list-popup-close-btn:before {\r\n content: \"\";\r\n display: inline-block;\r\n height: 2em;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-list-popup-close-btn span {\r\n font-size: 24px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: 1;\r\n}\r\n\r\n.am-list-popup-box .absol-search-text-input {\r\n visibility: hidden;\r\n}\r\n\r\n.am-list-popup-paging {\r\n display: block;\r\n height: 2em;\r\n text-align: center;\r\n box-sizing: border-box;\r\n border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.am-list-popup-paging::before {\r\n content: \"\";\r\n height: 100%;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-list-popup-paging-content {\r\n padding-left: 0.5em;\r\n padding-right: 0.5em;\r\n}\r\n\r\n.am-list-popup-paging > * {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-list-popup-paging > button {\r\n padding: 0;\r\n margin-left: 0.25em;\r\n margin-right: 0.25em;\r\n width: 1.75em;\r\n height: 1.75em;\r\n display: inline-block;\r\n background-color: transparent;\r\n border: none;\r\n box-sizing: border-box;\r\n outline: none;\r\n}\r\n\r\n.am-list-popup-paging > button:active {\r\n background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n\r\ninput[type=\"number\"].am-list-popup-paging-offset {\r\n width: 4em;\r\n outline: none;\r\n margin-right: 0.2em;\r\n /*border: solid 1px #a9a9a9;*/\r\n /*border-radius: 0.3em;*/\r\n border: none;\r\n text-align: right;\r\n font-size: inherit;\r\n height: 1.25em;\r\n box-sizing: border-box;\r\n\r\n}\r\n\r\n.am-list-popup-list-scroller {\r\n width: 100%;\r\n overflow: auto;\r\n --content-height: calc(100vh - 200px);\r\n -ms-overflow-style: none; /* IE and Edge */\r\n scrollbar-width: none; /* Firefox */\r\n}\r\n\r\n\r\n.am-list-popup-list-scroller::-webkit-scrollbar {\r\n display: none;\r\n}\r\n\r\n.am-list-popup-content {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\n.am-list-popup-list-page {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: -200vh;\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.am-list-modal .am-selectlist {\r\n width: 100%;\r\n}\r\n\r\n.am-list-popup-list-page.am-selectlist {\r\n --desc-width: inherit;\r\n}\r\n\r\n.am-value-hidden .am-selectlist-item.as-selected {\r\n display: none;\r\n}\r\n\r\n.am-selectlist {\r\n display: table;\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item {\r\n display: table-row;\r\n\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item:active {\r\n background-color: rgba(169, 169, 169, 0.4);\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item.as-selected {\r\n background-color: #dfdfdf;\r\n}\r\n\r\n\r\n.am-selectlist > .am-selectlist-item {\r\n border-bottom: 0.5px solid #dddddd;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-check-ctn {\r\n display: table-cell;\r\n vertical-align: middle;\r\n padding-left: 0.35em;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-text-ctn,\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-desc-ctn {\r\n display: table-cell;\r\n padding-top: 0.5em;\r\n padding-bottom: 0.5em;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-text-ctn {\r\n padding-right: 5px;\r\n padding-left: calc(10px + 0.9em * var(--level));\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-desc-ctn {\r\n padding-left: 5px;\r\n padding-right: 10px;\r\n}\r\n\r\n\r\n.am-selectlist {\r\n --desc-width: auto;\r\n}\r\n\r\n.am-selectlist .am-selectlist-item-desc-ctn {\r\n width: var(--desc-width);\r\n}\r\n\r\n.am-check-list-page {\r\n overflow: hidden;\r\n}\r\n\r\n/******************************************************/\r\n.am-selectlist-item {\r\n --level: 0;\r\n}\r\n\r\n.am-selectlist-item-text-ctn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-selectlist-item-desc-ctn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.am-selectlist-item-desc {\r\n font-style: italic;\r\n line-height: 20px;\r\n color: rgb(80, 80, 82);\r\n white-space: pre;\r\n}\r\n\r\n\r\n.am-selectlist-item-icon {\r\n font-size: 1.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-check-list-scroller {\r\n max-height: calc(100vh - var(--modal-margin-top) - 200px);\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.am-check-list-modal {\r\n --col1-width: 100px;\r\n --col2-width: 100px;\r\n}\r\n\r\n.am-check-list-modal .am-list-popup-content {\r\n width: calc(var(--col1-width) + var(--col2-width));\r\n min-width: 300px;\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item {\r\n position: relative;\r\n min-height: 30px;\r\n box-sizing: border-box;\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item-desc-ctn {\r\n position: absolute;\r\n width: var(--col2-width);\r\n right: 0;\r\n height: 100%;\r\n white-space: nowrap;\r\n\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item-text,\r\n.am-check-list-modal .am-selectlist-item-desc {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n line-height: 20px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n white-space: pre;\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item-text-ctn {\r\n position: absolute;\r\n right: var(--col2-width);\r\n left: calc(var(--level) * 12px + 30px);\r\n height: 100%;\r\n white-space: nowrap;\r\n}\r\n\r\n\r\n.am-check-list-modal .am-selectlist-item-check-ctn {\r\n position: absolute;\r\n top: 0;\r\n left: calc(var(--level) * 12px + 5px);\r\n height: 100%;\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item-check-ctn::before,\r\n.am-check-list-modal .am-selectlist-item-check-ctn > *,\r\n.am-check-list-modal .am-selectlist-item-text-ctn::before,\r\n.am-check-list-modal .am-selectlist-item-desc-ctn::before,\r\n.am-check-list-modal .am-selectlist-item-text-ctn > span {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item-check-ctn::before,\r\n.am-check-list-modal .am-selectlist-item-text-ctn::before,\r\n.am-check-list-modal .am-selectlist-item-desc-ctn::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n\r\n.am-check-list-modal .am-selectlist-item-text-ctn {\r\n white-space: nowrap;\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item-text {\r\n max-height: 100%;\r\n line-height: 20px;\r\n white-space: pre;\r\n width: calc(var(--col1-width) - 12px * var(--level) - 30px - 21px - 10px);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.am-list-modal-v2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n height: 100%;\r\n width: 100%;\r\n box-sizing: border-box;\r\n font-size: 14px;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-list-modal-v2 .am-list-popup-list-scroller {\r\n max-height: calc(100vh - var(--modal-margin-top) - 200px);\r\n}\r\n\r\n.am-list-modal-v2 .am-list-popup-content {\r\n width: calc(var(--col1-width) + var(--col2-width));\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item-text-ctn {\r\n padding-left: 10px;\r\n white-space: nowrap;\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item-text-ctn::before,\r\n.am-list-modal-v2 .am-selectlist-item-desc-ctn::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item-text-ctn::before,\r\n.am-list-modal-v2 .am-selectlist-item-desc-ctn::before,\r\n.am-list-modal-v2 .am-selectlist-item-text,\r\n.am-list-modal-v2 .am-selectlist-item-desc {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-selectlist-item-text {\r\n white-space: pre;\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item {\r\n position: relative;\r\n height: 30px;\r\n line-height: 20px;\r\n}\r\n\r\n\r\n.am-list-modal-v2 .am-selectlist-item::after {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n border-bottom: 1px solid #eee;\r\n}\r\n\r\n.am-check-list-modal .am-selectlist-item.as-last-in-group::after{\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n border-bottom: 1px solid #aaa;\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item.as-selected {\r\n background-color: #dfdfdf;\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item-text-ctn,\r\n.am-list-modal-v2 .am-selectlist-item-desc-ctn {\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n height: 100%;\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item {\r\n white-space: nowrap;\r\n}\r\n\r\n\r\n.am-list-modal-v2 .am-selectlist-item-text-ctn {\r\n width: var(--col1-width);\r\n}\r\n\r\n.am-list-modal-v2 .am-selectlist-item-desc-ctn {\r\n width: var(--col2-width);\r\n}\r\n\r\n.am-list-modal-v2 .am-list-popup-header {\r\n height: auto;\r\n min-height: calc(2em + 10px);\r\n}\r\n\r\n.am-selectlist-item.as-disabled .as-checkbox-input{\r\n visibility: hidden;\r\n}", ""]); /***/ }), /***/ 9219: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-select-list-box {\r\n --select-list-estimate-width: 0;\r\n --max-height: calc(100vh - 80px);\r\n --as-width-limit: 100vw;\r\n position: fixed;\r\n top: 10px;\r\n left: 10px;\r\n width: calc(var(--select-list-estimate-width) + 2px + 5px + 7px);\r\n font-size: 1rem;\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.as-select-list-box.as-has-icon .absol-selectlist-item {\r\n height: calc(30rem / 14);\r\n line-height: calc(30rem / 14);\r\n}\r\n\r\n.as-select-list-box.as-enable-search {\r\n min-width: 10em;\r\n}\r\n\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item {\r\n text-align: center;\r\n}\r\n\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item-text {\r\n padding-right: calc(0.35em + 28px);\r\n}\r\n\r\n.as-select-menu.as-text-align-center {\r\n text-align: center;\r\n}\r\n\r\n.as-select-menu.as-text-align-center .absol-selectlist-item,\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item {\r\n padding-left: 0.35em;\r\n padding-right: calc(0.35em + 28px);\r\n}\r\n\r\n.as-select-menu.as-text-align-center .absol-selectlist-item-text,\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item-text {\r\n padding: 0;\r\n}\r\n\r\n\r\ndiv.absol-follower.as-select-list-box {\r\n z-index: 4000000;\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 top: unset;\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: calc(2em + 10px);\r\n padding-top: 0;\r\n}\r\n\r\n.as-select-list-box.as-enable-search,\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: calc(2em + 10px);\r\n}\r\n\r\n.as-select-list-box.as-enable-search .as-select-list-box-search-ctn,\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 bottom: unset;\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) - 2em - 10px);\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 overflow: hidden;\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 .absol-selectlist-item-text {\r\n max-width: calc(var(--as-width-limit) - var(--select-list-desc-width) - 10px);\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\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\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}\r\n\r\n\r\n/**********************************************************************************************************************/\r\n", ""]); /***/ }), /***/ 5741: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 pointer-events: none;\r\n background-color: var(--as-disabled-background-color);\r\n color: var(--as-disabled-text-color);\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: calc(2em + 2px);\r\n min-width: calc(2em + 2px);\r\n border: solid 1px #d6d6d6;\r\n border-radius: 2px;\r\n box-sizing: border-box;\r\n font-size: 1rem;\r\n outline: none;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n background-color: white;\r\n}\r\n\r\n.absol-selectmenu.as-border-none {\r\n border: none;\r\n}\r\n\r\n.absol-selectmenu.as-border-none .absol-selectlist-item span {\r\n padding-left: 0;\r\n user-select: inherit;\r\n -ms-user-select: inherit;\r\n -webkit-user-select: inherit;\r\n}\r\n\r\n.absol-selectmenu:not(.as-read-only) {\r\n cursor: pointer;\r\n}\r\n\r\n.absol-selectmenu.as-read-only .absol-selectlist-item span {\r\n user-select: inherit;\r\n -moz-user-select: inherit;\r\n -webkit-user-select: inherit;\r\n -ms-user-select: inherit;\r\n}\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.as-read-only svg.dropdown {\r\n display: none;\r\n}\r\n\r\n.absol-selectmenu:not(.as-read-only):hover svg.dropdown {\r\n width: 10px;\r\n height: 10px;\r\n fill: black;\r\n}\r\n\r\n.absol-selectmenu .absol-selectlist-item-text {\r\n display: inline-block;\r\n overflow: hidden;\r\n max-width: calc(var(--as-width-limit) - 30px);\r\n text-overflow: ellipsis;\r\n vertical-align: middle;\r\n\r\n}\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: 0;\r\n bottom: 0;\r\n /*1px for border*/\r\n white-space: nowrap;\r\n}\r\n\r\n.absol-selectmenu-holder-item::before {\r\n content: \"\";\r\n height: 100%;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-selectmenu-holder-item > .absol-selectlist-item {\r\n display: inline-block;\r\n width: 100%;\r\n vertical-align: middle;\r\n}\r\n\r\n.absol-selectmenu .absol-selectlist-item-text {\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: 0px;\r\n --select-list-desc-width: 0px;\r\n width: calc(var(--select-list-estimate-width) + 32px);\r\n min-width: calc(var(--select-list-estimate-width) + 32px);\r\n}\r\n\r\n/***********************************************************************************************************************/\r\n\r\n.am-selectmenu-modal {\r\n z-index: 100005;\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n text-align: center;\r\n box-sizing: border-box;\r\n}\r\n\r\n.am-selectmenu-modal>div{\r\n display: inline-block;\r\n text-align: initial;\r\n}\r\n\r\n.am-selectmenu-popup-box {\r\n max-width: calc(100vw - 60px);\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 background-color: #ffffff;\r\n border-radius: 0.5em;\r\n font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-selectmenu-popup-box-header{\r\n height: calc(2em + 10px);\r\n display: block;\r\n white-space: nowrap;\r\n box-sizing: border-box;\r\n padding-top: 5px;\r\n padding-bottom: 5px;\r\n padding-left: 10px;\r\n border-bottom: solid 1px #dddddd;\r\n background-color: rgba(169, 169, 169,0.2);\r\n}\r\n\r\n.am-selectmenu-popup-box-header .absol-search-text-input{\r\n display: inline-block;\r\n width: calc(100% - 2em - 25px);\r\n vertical-align: middle;\r\n box-sizing: border-box;\r\n background-color: white;\r\n}\r\n\r\n.am-selectmenu-popup-box-close-btn{\r\n display: inline-block;\r\n vertical-align: middle;\r\n border-radius:50%;\r\n padding: 0;\r\n height: 2em;\r\n width: 2em;\r\n font-size: inherit;\r\n border: none;\r\n outline: none;\r\n margin-right: 10px;\r\n background-color: rgb(255, 255, 255);\r\n color: rgb(190, 30, 30);\r\n}\r\n\r\n.am-selectmenu-popup-box-close-btn:active{\r\n color: red;\r\n}\r\n\r\n\r\n.am-selectmenu-popup-box-close-btn:before{\r\n content: \"\";\r\n display: inline-block;\r\n height: 2em;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-selectmenu-popup-box-close-btn span{\r\n font-size: 1.5em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: 1;\r\n}\r\n\r\n.am-selectmenu-scroller {\r\n max-height: calc(100vh - 140px);\r\n overflow-y: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.am-selectlist.am-selectmeu-list{\r\n min-width: 30vw;\r\n}\r\n\r\n.am-selectlist.am-selectmeu-list.as-searching{\r\n width: 100%;\r\n}\r\n\r\n.am-selectmenu-popup-box .absol-search-text-input{\r\n display: none;\r\n}\r\n\r\n\r\n.am-selectmenu-popup-box.am-enable-search .absol-search-text-input{\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.am-selectmenu{\r\n white-space: nowrap;\r\n background: white;\r\n overflow: hidden;\r\n box-sizing: border-box;\r\n padding-right: 35px;\r\n max-width: 95vw;\r\n width: var(--recommend-width);\r\n}\r\n\r\n.am-selectmenu.disabled .absol-selectmenu-btn{\r\n background-color: #ebebe4;\r\n}\r\n\r\n.am-selectmenu .absol-selectmenu-btn{\r\n background: white;\r\n}\r\n\r\n.am-selectmenu::before{\r\n content: \"\";\r\n height: 100%;\r\n vertical-align: middle;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.am-selectmenu-holder-item{\r\n display: inline-table;\r\n vertical-align: middle;\r\n width: 100%;\r\n table-layout: auto;\r\n}\r\n\r\n.am-selectmenu-holder-item>.am-selectlist-item{\r\n display: table-row;\r\n}\r\n\r\n.am-selectmenu-holder-item .am-selectlist-item-text-ctn,\r\n.am-selectmenu-holder-item .am-selectlist-item-desc-ctn{\r\n display: table-cell;\r\n padding-left: 10px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n width: auto;\r\n}\r\n\r\n\r\n.am-selectmenu.disabled {\r\n pointer-events: none;\r\n background-color: #ebebe4;\r\n}", ""]); /***/ }), /***/ 7464: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 {}", ""]); /***/ }), /***/ 2645: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".am-select-tree-leaf-box {\r\n min-width: 10em;\r\n}\r\n\r\n.am-select-tree-leaf-box-body {\r\n overflow-y: auto;\r\n max-height: calc(80vh - 2em);\r\n}\r\n\r\n.am-select-tree-leaf-box.as-enable-search .am-select-tree-leaf-box-body {\r\n max-height: calc(80vh - 4em - 10px);\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item {\r\n display: block;\r\n white-space: nowrap;\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n --level: 0;\r\n --icon-width: 0px;\r\n}\r\n\r\n.am-select-tree-leaf-item:active {\r\n background-color: #efefef;\r\n}\r\n\r\n.am-select-tree-leaf-item.as-selected {\r\n background-color: #dfdfdf;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item.as-has-icon {\r\n --icon-width: 2.7em;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-toggle-ctn,\r\n.am-select-tree-leaf-item-icon-ctn,\r\n.am-select-tree-leaf-item-checkbox-ctn {\r\n position: absolute;\r\n white-space: nowrap;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.am-select-tree-leaf-item-toggle-ctn {\r\n left: calc(2em * var(--level) + 0.2em);\r\n width: 1.5em;\r\n text-align: center;\r\n}\r\n\r\n.am-select-tree-leaf-item-toggle-ctn > svg {\r\n width: 0.7em;\r\n height: 0.7em;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-icon-ctn {\r\n left: calc(2em * var(--level) + 1.7em);\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-icon-ctn > svg {\r\n display: inline-block;\r\n vertical-align: middle;\r\n\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn {\r\n\r\n}\r\n\r\n.am-select-tree-leaf-item.as-status-open svg .toggle-close,\r\n.am-select-tree-leaf-item.as-status-close svg .toggle-open,\r\n.am-select-tree-leaf-item:not(.as-status-close):not(.as-status-open) .am-select-tree-leaf-item-toggle-ctn {\r\n display: none;\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn::before,\r\n.am-select-tree-leaf-item-toggle-ctn::before,\r\n.am-select-tree-leaf-item-checkbox-ctn::before {\r\n content: \"\";\r\n height: 100%;\r\n vertical-align: middle;\r\n display: inline-block;\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn:empty {\r\n display: none;\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn > span {\r\n font-size: 1.8em;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-icon-ctn img,\r\n.am-select-tree-leaf-item-icon-ctn svg {\r\n width: 1.8em;\r\n height: 1.8em;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-text {\r\n width: var(--text-width);\r\n box-sizing: border-box;\r\n padding: 0.3em 0.5em 0.3em calc(1.2em + 2em * var(--level) + var(--icon-width));\r\n display: inline-block;\r\n vertical-align: middle;\r\n line-height: 1.5;\r\n white-space: normal;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-desc {\r\n display: none;\r\n vertical-align: middle;\r\n}\r\n", ""]); /***/ }), /***/ 9235: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-select-tree-leaf-item:not(.as-is-leaf) > .absol-exp-node > .absol-exp-node-name,\r\n.as-select-tree-leaf-item:not(.as-is-leaf) > .absol-exp-node > .absol-exp-node-ext-icon,\r\n.as-select-tree-leaf-item.as-no-select > .absol-exp-node > .absol-exp-node-name,\r\n.as-select-tree-leaf-item.as-no-select > .absol-exp-node > .absol-exp-node-ext-icon\r\n{\r\n color: #888;\r\n}\r\n\r\n.as-select-tree-leaf-item:not(.as-is-leaf) > .absol-exp-node > .absol-exp-node-desc {\r\n color: rgb(169, 169, 172)\r\n}\r\n\r\n.as-select-tree-leaf-item > .absol-exp-node:hover,\r\n.as-select-tree-leaf-item > .absol-exp-node:focus,\r\n.as-select-tree-leaf-item > .absol-exp-node:active {\r\n background-color: transparent;\r\n}\r\n\r\n.as-select-tree-leaf-item.as-is-leaf:not(.as-no-select) > .absol-exp-node:hover {\r\n background-color: #efefef;\r\n}\r\n\r\n.as-select-tree-leaf-item.as-selected > .absol-exp-node {\r\n background-color: #dfdfdf;\r\n}\r\n\r\n.am-select-tree-menu.absol-selectmenu {\r\n width: auto;\r\n}\r\n\r\n.am-select-tree-menu .absol-selectmenu-holder-item {\r\n position: relative;\r\n left: unset;\r\n right: unset;\r\n top: unset;\r\n bottom: unset;\r\n height: 100%;\r\n max-width: 100%;\r\n}\r\n\r\n\r\n.am-select-tree-menu .absol-selectlist-item-text {\r\n max-width: calc(100vw - 200px);/**TODO: find better solution*/\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n}", ""]); /***/ }), /***/ 1542: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}\r\n\r\n.am-select-tree-menu {\r\n max-width: var(--as-width-limit);\r\n}", ""]); /***/ }), /***/ 1914: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-single-page {\r\n position: relative;\r\n overflow: hidden;\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: relative;\r\n overflow-y: auto;\r\n}\r\n\r\n.absol-single-page.as-has-header {\r\n display: grid;\r\n grid-template-rows: auto 1fr;\r\n}\r\n\r\n.absol-single-page:not(.as-has-header) .absol-single-page-scroller{\r\n width: 100%;\r\n height: 100%;\r\n box-sizing: border-box;\r\n}\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}", ""]); /***/ }), /***/ 6362: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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: 1000000000;\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", ""]); /***/ }), /***/ 5906: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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:not(.as-has-opacity) .as-solid-color-picker-color-opacity,\r\n.as-solid-color-picker:not(.as-has-opacity) .as-solid-color-picker-alpha {\r\n visibility: hidden;\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 {\r\n display: inline-block;\r\n vertical-align: middle;\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-solid-color-picker-color-hex input {\r\n margin-left: 0;\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.as-solid-color-picker.as-nullable .as-solid-color-picker-none-ctn{\r\n display: inline-block;\r\n\r\n}\r\n\r\n.as-solid-color-picker-none-ctn {\r\n display: none;\r\n margin-top: 5px;\r\n padding: 5px;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n.as-solid-color-picker-none-ctn.as-selected {\r\n box-shadow: rgba(0, 0, 0, 0.7) 0px 0px 0.3em 0.125em inset;\r\n}\r\n\r\n.as-solid-color-picker-none-ctn:hover {\r\n color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n\r\n.as-solid-color-picker-none-ctn:active {\r\n color: var(--as-transparent-button-text-active-color);\r\n}\r\n\r\n.as-solid-color-picker-none-ctn > * {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-solid-color-picker-none-cell {\r\n width: 1.5em;\r\n height: 1.5em;\r\n margin-right: 0.3em;\r\n}\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.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.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}", ""]); /***/ }), /***/ 7765: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 4200: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 3848: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 1636: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-color-cell {\r\n position: relative;\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-cell.as-null .as-color-cell-value {\r\n background-color: transparent !important;\r\n background-size: contain;\r\n background-position: center;\r\n }\r\n\r\n.as-color-cell-value {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n}\r\n\r\n.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.as-color-cell {\r\n position: relative;\r\n display: table-cell;\r\n background-size: 1.5em;\r\n\r\n}\r\n", ""]); /***/ }), /***/ 2631: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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:not(.as-read-only) .absol-switch-slider{\r\n cursor: pointer;\r\n}\r\n\r\n.absol-switch-slider {\r\n position: absolute;\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", ""]); /***/ }), /***/ 6725: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\r\n.as-table-of-text-input-wrapper {\r\n border: 1px solid #dddddd;\r\n}\r\n\r\n.as-table-of-text-input-content-ctn {\r\n overflow: auto;\r\n}\r\n\r\n\r\n.as-table-of-text-input {\r\n width: 100%;\r\n border-collapse: collapse;\r\n color: black;\r\n font-family: 'Aptos Narrow', Calibri, sans-serif, 'Mongolian Baiti', 'Microsoft Yi Baiti', 'Javanese Text', 'Yu Gothic';\r\n font-size: 11pt;\r\n margin: 10px;\r\n}\r\n\r\n.as-table-of-text-input-wrapper.as-size-a4 .as-table-of-text-input {\r\n width: 445pt;\r\n}\r\n\r\n.as-table-of-text-input pre {\r\n font: inherit;\r\n line-height: 1.75;\r\n}\r\n\r\n.as-table-of-text-input.as-inline {\r\n display: inline-table;\r\n}\r\n\r\n.as-table-of-text-input-cell {\r\n vertical-align: top;\r\n padding: 0px 5px;\r\n border: 1px dashed #808080;\r\n position: relative;\r\n}\r\n\r\n.as-table-of-text-input-cell.as-focus::before {\r\n pointer-events: none;\r\n content: \"\";\r\n position: absolute;\r\n border: 1px dashed var(--variant-color-primary);\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n\r\n.as-table-of-text-input-cell .as-preinput {\r\n outline: none;\r\n display: block;\r\n}\r\n\r\n.as-table-of-text-input-cell.as-bold {\r\n font-weight: bold;\r\n}\r\n\r\n.as-table-of-text-input-cell.as-italic {\r\n font-style: italic;\r\n}\r\n\r\n.as-table-of-text-input-tool {\r\n background-color: #f8f8f8;\r\n font-size: 14px;\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 /*border-radius: 4px;*/\r\n padding: 3px;\r\n border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.as-table-of-text-input-tool > button,\r\n.as-table-of-text-input-tool-group > button {\r\n height: 30px;\r\n width: 30px;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.as-table-of-text-input-tool-group {\r\n display: inline-block;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n}\r\n\r\n.as-table-of-text-input-tool-group:not(:last-child) {\r\n border-right: 1px solid #dddddd;\r\n}\r\n\r\n\r\n.as-table-of-text-input-tool button.as-checked {\r\n color: #2977ff;\r\n /*background-color: rgb(240, 247, 255);*/\r\n box-shadow: inset gray 0px 0px 4px -2px;\r\n}\r\n", ""]); /***/ }), /***/ 6038: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-table-scroller .absol-table-scroller-viewport {\r\n width: calc(100% + var(--scrollbar-width));\r\n height: calc(100% + var(--scrollbar-width));\r\n}\r\n\r\n.absol-table-scroller .absol-table-scroller-header-hscroller-viewport {\r\n margin-bottom: calc(0px - var(--scrollbar-width))\r\n}\r\n\r\n\r\n.absol-table-scroller {\r\n --scrollbar-width: 17px;\r\n --new-pos-y: 0;\r\n position: relative;\r\n padding-right: 17px;\r\n padding-bottom: 17px;\r\n --tvs-scroll-padding-bottom: 0px;\r\n overflow: hidden;\r\n}\r\n\r\n.absol-table-scroller:not(.as-scroll-vertical) {\r\n padding-right: 0;\r\n}\r\n\r\n\r\n.absol-table-scroller:not(.as-scroll-horizontal) {\r\n padding-bottom: 0;\r\n}\r\n\r\n.as-table-scroller-origin-table-ctn {\r\n padding-bottom: var(--tvs-scroll-padding-bottom);\r\n\r\n}\r\n\r\n\r\n.as-table-scroller-vertical-scroller {\r\n overflow-y: scroll;\r\n height: 100%;\r\n box-sizing: border-box;\r\n margin-right: calc(0px - var(--scrollbar-width));\r\n}\r\n\r\n.as-table-scroller-fixed-y-header-ctn {\r\n position: absolute;\r\n z-index: 4;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.as-table-scroller-fixed-y-header,\r\n.as-table-scroller-fixed-xy-header {\r\n table-layout: fixed;\r\n}\r\n\r\n.as-table-scroller-fixed-y-header td,\r\n.as-table-scroller-fixed-y-header tr,\r\n.as-table-scroller-fixed-y-header th,\r\n.as-table-scroller-fixed-xy-header td,\r\n.as-table-scroller-fixed-xy-header tr,\r\n.as-table-scroller-fixed-xy-header th {\r\n box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-table-scroller-fixed-x-col-ctn {\r\n position: absolute;\r\n z-index: 5;\r\n top: 0;\r\n left: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.as-table-scroller-fixed-xy-header-ctn {\r\n position: absolute;\r\n z-index: 12;\r\n top: 0;\r\n left: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.as-table-scroller-fixed-y-header-scroller {\r\n overflow-x: scroll;\r\n margin-bottom: calc(var(--scrollbar-width) * -1);\r\n}\r\n\r\n.as-mobile-theme .as-table-scroller-fixed-y-header-scroller::-webkit-scrollbar,\r\n.as-mobile-theme .absol-table-scroller-header-hscroller-viewport::-webkit-scrollbar {\r\n display: none;\r\n}\r\n\r\n\r\n.as-table-scroller-horizontal-scroller-viewport {\r\n overflow: hidden;\r\n position: relative;\r\n}\r\n\r\n.as-table-scroller-horizontal-scroller {\r\n overflow-x: scroll;\r\n width: 100%;\r\n box-sizing: border-box;\r\n margin-bottom: calc(var(--scrollbar-width) * -1);\r\n}\r\n\r\n.absol-table-scroller-content {\r\n position: relative;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\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 background-color: white;\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 background-color: white;\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 background-color: white;\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 background-color: white;\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 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: 100%;\r\n}\r\n\r\n\r\n.absol-table-scroller.as-scroll-vertical .absol-table-scroller-head-line {\r\n width: 100%;\r\n}\r\n\r\n.absol-table-scroller.as-scroll-horizontal .absol-table-scroller-left-line {\r\n height: 100%;\r\n}\r\n\r\n\r\n.absol-table-scroller:not(.as-scroll-vertical) .absol-table-scroller-head-line {\r\n display: none;\r\n}\r\n\r\n.absol-table-scroller:not(.as-scroll-horizontal) .absol-table-scroller-left-line {\r\n display: none;\r\n}\r\n\r\n\r\n.absol-table-scroller-vscrollbar-container {\r\n position: absolute;\r\n top: 0;\r\n right: 0px;\r\n width: 17px;\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: 17px;\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(.as-scroll-vertical) .absol-table-scroller-vscrollbar-container {\r\n display: none;\r\n}\r\n\r\n.absol-table-scroller:not(.as-scroll-horizontal) .absol-table-scroller-hscrollbar-container {\r\n display: none;\r\n}\r\n\r\n\r\n.absol-table-scroller.as-scroll-horizontal .absol-table-scroller-vscrollbar-container {\r\n bottom: 17px;\r\n}\r\n\r\n.absol-table-scroller.as-scroll-vertical .absol-table-scroller-hscrollbar-container {\r\n right: 17px;\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}\r\n\r\n.absol-table-scroller .as-drag-zone {\r\n cursor: move;\r\n}\r\n\r\n\r\n.absol-table-scroller tr.as-dragging {\r\n position: relative;\r\n z-index: 1;\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 opacity: 0.8;\r\n}\r\n\r\n.absol-table-scroller td.as-transparent-fix {\r\n visibility: hidden;\r\n opacity: 0;\r\n}\r\n\r\n.absol-table-scroller.as-dragging tbody tr:not(.as-dragging) {\r\n transition: transform 0.1s;\r\n}\r\n\r\n\r\n.absol-table-scroller-viewport thead .as-rotated-text-anchor,\r\n.absol-table-scroller-fixed-viewport thead .as-rotated-text-anchor,\r\n.absol-table-scroller-left-vscroller thead .as-rotated-text-anchor {\r\n display: none;\r\n}\r\n\r\n.absol-table-scroller .as-rotated-text-anchor {\r\n white-space: nowrap;\r\n}\r\n\r\n\r\n.as-table-scroller-row-index::before {\r\n content: attr(data-idx);\r\n}\r\n\r\n/*.absol-table-scroller.as-has-new-pos.as-dragging::before {*/\r\n/* content: \"\";*/\r\n/* position: absolute;*/\r\n/* left: 0;*/\r\n/* top: var(--new-pos-y);*/\r\n/* right: 0;*/\r\n/* border-top: 2px solid blue;*/\r\n/* z-index: 8;*/\r\n/* transition: top 0.1s;*/\r\n/*}*/\r\n\r\n", ""]); /***/ }), /***/ 7526: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-table-vscroller {\r\n position: relative;\r\n --tvs-scroll-padding-bottom: 1px;\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: var(--tvs-scroll-padding-bottom);\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}", ""]); /***/ }), /***/ 8601: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-tabbar {\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.absol-tabbar .as-tab-bar-add-btn {\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 white-space: nowrap;\r\n}\r\n\r\n.as-tab-bar-add-btn {\r\n padding-left: 0.5em;\r\n padding-right: 0.5em;\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 white-space: nowrap;\r\n}\r\n\r\n\r\n.as-tab-bar-button-ext-icon-ctn:empty {\r\n display: none\r\n}\r\n\r\n.as-tab-bar-button-ext-icon-ctn {\r\n display: inline-block;\r\n vertical-align: middle;\r\n padding-right: 0.35em;\r\n margin-left: -0.5em;\r\n}\r\n\r\n.absol-tabbar-button-text {\r\n display: inline-block;\r\n vertical-align: middle;\r\n max-width: 300px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.as-tab-bar-button-ext-icon-ctn span {\r\n font-size: 1.2em;\r\n}\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-block;\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 visibility: hidden;\r\n color: rgb(190, 190, 190);\r\n}\r\n\r\n.absol-tabbar-button.as-prevent-closing .absol-tabbar-button-close,\r\n.absol-tabbar-button.as-prevent-closing .absol-tabbar-button-close-circle {\r\n visibility: hidden;\r\n}\r\n\r\n.absol-tabbar-button.as-prevent-closing .absol-tabbar-button-icon-container {\r\n pointer-events: none;\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.absol-tabbar-button:not(.as-prevent-closing):hover .absol-tabbar-button-close,\r\n.absol-tabbar-button-active:not(.as-prevent-closing) .absol-tabbar-button-close,\r\n.absol-tabbar-button:hover:not(.as-prevent-closing) .absol-tabbar-button-close-circle,\r\n.absol-tabbar-button-active:not(.as-prevent-closing) .absol-tabbar-button-close-circle {\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 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.as-tabview-title {\r\n padding: 10px 10px;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: rgb(230, 230, 205);\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.bsc-white .as-tabview-title,\r\n.bsc-white .as-np-db-btn{\r\n color: var(--tab-button-font-color-hover);\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 background-color: white;\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-frame > iframe {\r\n border: none;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview .absol-tabbar-button {\r\n border-radius: 0.7em 0.7em 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 .as-tab-bar-add-btn {\r\n border-radius: 0.7em 0.7em 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}\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 position: absolute;\r\n left: 0;\r\n right: 0;\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: 1.5em;\r\n border-bottom: none;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button,\r\n.absol-tabview.xp-tiny .as-tab-bar-add-btn {\r\n height: 1.4em;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n border-radius: 0;\r\n vertical-align: bottom;\r\n margin: 0.1em 0 0 0;\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: calc(1.5em - 4px);\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: 1.5em;\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: 1.4em;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button-icon-container {\r\n display: none;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabview-container {\r\n top: 1.5em;\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.absol-tabview > .absol-tabbar .as-tab-bar-add-btn {\r\n display: none;\r\n}\r\n\r\n.absol-tabview.as-has-add-btn > .absol-tabbar .as-tab-bar-add-btn {\r\n display: inline-block;\r\n}\r\n\r\n\r\n/************************ Like Metro theme *********************/\r\n\r\n.absol-tabview.metro-flat > .absol-tabbar .absol-tabbar-button,\r\n.absol-tabview.metro-flat > .absol-tabbar .as-tab-bar-add-btn {\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\r\n/************************ Round Out theme *********************/\r\n\r\n/*.absol-tabview.rond-out > .absol-tabbar .absol-tabbar-button*/\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar {\r\n border-bottom: calc(0.1em + 1px) solid #3B4453;;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabview-container {\r\n top: 2.1em;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar {\r\n height: 2.1em;\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active {\r\n background-color: #3B4453;\r\n color: white;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button {\r\n background-color: #313946;\r\n color: rgb(169, 169, 170);\r\n\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::before,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::after {\r\n content: \"\";\r\n position: absolute;\r\n bottom: 0;\r\n width: 1em;\r\n height: 1em;\r\n z-index: 1;\r\n background-size: cover;\r\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMTYiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDguNDY2NjY2NCA0LjIzMzMzMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCguMTMzOTAzNjQgMCAwIC4yNzU0NTg5MSAtLjAzMjY2NDYxIC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzMTM5NDYiLz4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgtLjEzMzkwMzY0IDAgMCAuMjc1NDU4OTEgOC40OTkzMzE1IC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzMTM5NDYiLz4KIDwvZz4KPC9zdmc+Cg==');\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::before,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::after,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active {\r\n z-index: 3;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::before,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::after {\r\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMTYiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDguNDY2NjY2NCA0LjIzMzMzMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCguMTMzOTAzNjQgMCAwIC4yNzU0NTg5MSAtLjAzMjY2NDYxIC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzQjQ0NTMiLz4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgtLjEzMzkwMzY0IDAgMCAuMjc1NDU4OTEgOC40OTkzMzE1IC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzQjQ0NTMiLz4KIDwvZz4KPC9zdmc+Cg==');\r\n}\r\n\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button {\r\n position: relative;\r\n margin-right: 0;\r\n border: none;\r\n border-radius: 0.8em 0.8em 0 0;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-hscroller-viewport {\r\n padding-left: 1.2em;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::before {\r\n left: -0.98em;\r\n background-position: left;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::after {\r\n right: -0.98em;\r\n background-position: right;\r\n\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .as-tab-bar-add-btn {\r\n background-color: #313946;\r\n color: rgb(169, 169, 170);\r\n font-weight: bold;\r\n border: 4px solid #222933;\r\n border-radius: 0.8em 0.8em 0 0.8em;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .as-tab-bar-add-btn:active {\r\n color: white;\r\n background-color: #3B4453;\r\n font-weight: bold;\r\n}\r\n\r\n.as-tabview-right-ctn {\r\n position: absolute;\r\n z-index: 150;\r\n right: 0;\r\n top: 0;\r\n}\r\n\r\n\r\n\r\n.bsc-white .as-tabview-right-ctn {\r\n top: -10px;\r\n}\r\n\r\n.as-tabview-right-ctn> div{\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.bsc-white .as-tabview-right-ctn::before {\r\n content: \"\";\r\n height: 50px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}", ""]); /***/ }), /***/ 3970: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-textarea2 {\r\n overflow: hidden;\r\n resize: none;\r\n box-sizing: border-box;\r\n --content-height: 1.425em;\r\n height: var(--content-height);\r\n font: inherit;\r\n}\r\n\r\n.absol-textarea2.as-border-none {\r\n border: none;\r\n outline: none;\r\n}\r\n\r\n.absol-textarea2:disabled {\r\n background-color: var(--as-disabled-background-color);\r\n}", ""]); /***/ }), /***/ 6690: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".absol-text-clipboard {\r\n opacity: 0;\r\n font-size: 1px;\r\n height: 1px;\r\n width: 1px;\r\n}", ""]); /***/ }), /***/ 466: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".ac-time-input {\r\n box-sizing: border-box;\r\n height: calc(2em + 2px);\r\n width: 9em;\r\n border: solid 1px #d6d6d6;\r\n border-radius: 2px;\r\n font-size: 1rem;\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 background-color: white;\r\n position: relative;\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}\r\n\r\n.ac-time-input.as-must-not-null .as-time-input-clear-btn {\r\n display: none;\r\n}\r\n\r\n.ac-time-input.as-read-only.as-border-none {\r\n border: none;\r\n}\r\n\r\n.ac-time-input.as-read-only.as-border-none .as-time-input-icon-btn {\r\n display: none;\r\n}\r\n\r\n.ac-time-input.as-read-only.as-border-none input {\r\n padding-left: 0;\r\n}\r\n\r\n.ac-time-input input {\r\n font: inherit;\r\n outline: none;\r\n width: calc(100% - 2em - 2px);\r\n height: 100%;\r\n border: none;\r\n display: block;\r\n padding: 0 0 0 var(--as-input-horizontal-padding);\r\n -webkit-user-select: auto;\r\n user-select: auto;\r\n -webkit-user-drag: none;\r\n color: inherit;\r\n box-sizing: border-box;\r\n background-color: transparent;\r\n}\r\n\r\n.ac-time-input.as-disabled {\r\n background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-time-input-icon-btn {\r\n border-right: none;\r\n border-top: none;\r\n border-bottom: none;\r\n border-left: 1px solid #ddd;\r\n position: absolute;\r\n padding: 0;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n width: calc(2em + 1px);\r\n box-sizing: border-box;\r\n background-color: rgba(169, 169, 169, 0.1);\r\n cursor: pointer;\r\n border-radius: 0;\r\n font-size: inherit;\r\n color: inherit;\r\n}\r\n\r\n.ac-time-input.as-read-only .as-time-input-icon-btn {\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-time-input-icon-btn > span {\r\n font-size: calc(16em / 14);\r\n}\r\n\r\n\r\n.as-time-input-icon-btn:hover {\r\n background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-time-input-icon-btn:active {\r\n background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-time-input-icon-btn.as-disabled {\r\n color: rgb(102, 102, 102);\r\n pointer-events: none;\r\n}\r\n\r\n\r\n.as-time-input-clear-btn {\r\n font-size: inherit;\r\n position: absolute;\r\n right: calc(2em + 2px);\r\n height: 2em;\r\n top: calc(50% - 1em);\r\n box-sizing: border-box;\r\n background-color: transparent;\r\n border: none;\r\n color: #bbb;\r\n visibility: hidden;\r\n}\r\n\r\n\r\n.ac-time-input.as-value-null .as-time-input-clear-btn {\r\n display: none;\r\n}\r\n\r\n.as-time-input-clear-btn:hover {\r\n color: rgb(132, 132, 132);\r\n}\r\n\r\n.as-time-input-clear-btn:active {\r\n color: #525555;\r\n}\r\n\r\ninput:focus + .as-time-input-clear-btn,\r\n.ac-time-input .as-time-input-clear-btn {\r\n visibility: visible;\r\n}\r\n\r\n.as-dropdown-box-common-style .as-time-input-picker {\r\n border: none;\r\n box-shadow: none;\r\n}\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/*}*/", ""]); /***/ }), /***/ 449: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".ac-time-picker {\r\n /*like chrome-calender*/\r\n display: inline-block;\r\n font-family: Arial, Helvetica, sans-serif;\r\n font-size: 1rem;\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}", ""]); /***/ }), /***/ 9838: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-time-range-24-input {\r\n white-space: nowrap;\r\n display: inline-block;\r\n min-width: 318px;\r\n}\r\n\r\n.as-time-range-24-input.as-read-only.as-border-none {\r\n min-width: unset;\r\n}\r\n\r\n.as-time-range-24-input > div:first-child {\r\n margin-right: 10px;\r\n}\r\n\r\n\r\n.as-time-range-24-input.as-read-only.as-border-none .ac-time-input {\r\n display: none;\r\n}\r\n\r\n.as-time-range-24-input.as-read-only.as-border-none::after{\r\n content: attr(data-text);\r\n vertical-align: middle;\r\n display: inline-block;\r\n}\r\n\r\n.as-time-range-24-input.as-read-only.as-border-none::before{\r\n content: \"\";\r\n vertical-align: middle;\r\n display: inline-block;\r\n height: calc(2em + 2px);\r\n}\r\n\r\n\r\n.as-chrome-time-24-picker-follower .as-chrome-time-24-picker {\r\n border: none;\r\n box-shadow: none;\r\n}", ""]); /***/ }), /***/ 1874: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-time-select-input {\r\n display: inline-block;\r\n position: relative;\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: 1rem;\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) + 2em + 2px);\r\n min-width: calc(var(--list-min-width) + 2em + 2px);\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 font-size: inherit;\r\n}", ""]); /***/ }), /***/ 1531: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-toast-list {\r\n position: fixed;\r\n z-index: 1100000000;\r\n width: 25em;\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.as-sc {\r\n bottom: 10px;\r\n left: calc(50% - 177px);\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-sc > .as-toast,\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: calc(100vw - 20px);\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: 1rem;\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 font-size: inherit;\r\n width: 24px;\r\n height: 24px;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-toast-close-btn:hover {\r\n color: black;\r\n background-color: var(--icon-background-cover-hover);\r\n}\r\n\r\n.as-toast-close-btn span {\r\n /*font-size: 1.5em;*/\r\n font-size: 20px;\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}", ""]); /***/ }), /***/ 3573: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-toc-list {\r\n\r\n}\r\n\r\n.as-toc-list.as-searching .as-toc-list-body,\r\n.as-toc-list:not(.as-searching) .as-toc-list-searching {\r\n display: none;\r\n}\r\n\r\n.as-toc-item {\r\n font-size: 14px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n display: flex;\r\n height: 30px;\r\n align-items: stretch;\r\n --level: 0;\r\n}\r\n\r\n.as-toc-item:not(.as-status-close) .as-toc-item-toggle-ico-ctn .toggle-close,\r\n.as-toc-item:not(.as-status-open) .as-toc-item-toggle-ico-ctn .toggle-open {\r\n display: none;\r\n}\r\n\r\n.as-toc-item.as-status-none .as-toc-item-toggle-ico-ctn {\r\n visibility: hidden;\r\n}\r\n\r\n.as-toc-item.as-active {\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n\r\n.as-toc-item:hover {\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-toc-item > div {\r\n white-space: nowrap;\r\n width: 30px;\r\n}\r\n\r\n.as-toc-item > div::before,\r\n.as-toc-item > div > * {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-toc-item > div::before {\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.as-toc-item-name-ctn {\r\n flex-grow: 1;\r\n\r\n}\r\n\r\n.as-toc-item-name {\r\n user-select: none;\r\n max-width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\ndiv.as-toc-item-toggle-ico-ctn {\r\n padding-left: calc(20px * var(--level));\r\n box-sizing: content-box !important;\r\n}\r\n\r\n.as-toc-item-toggle-ico-ctn .toggler-ico {\r\n width: 0.7em;\r\n height: 0.7em;\r\n}\r\n\r\n.as-toc-item-toggle-ico-ctn .toggler-ico path {\r\n fill: rgb(104, 104, 104);\r\n}\r\n\r\n.as-toc-item-ext-icon-ctn:empty {\r\n display: none;\r\n}\r\n\r\n.as-toc-item-ext-icon-ctn > img,\r\n.as-toc-item-ext-icon-ctn > svg {\r\n width: 20px;\r\n height: 20px;\r\n}\r\n\r\n.as-toc-item-ext-icon-ctn > span {\r\n font-size: 20px;\r\n}\r\n\r\n\r\n.as-toc-item-toggle-ico-ctn,\r\n.as-toc-item-check-ctn,\r\n.as-toc-item-quick-menu-ctn,\r\n.as-toc-item-ext-icon-ctn {\r\n text-align: center;\r\n width: 30px;\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn span {\r\n font-size: 20px;\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn button {\r\n border: none;\r\n background-color: transparent;\r\n padding: 0;\r\n width: 24px;\r\n height: 24px;\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn button.as-quick-menu-attached {\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn button:hover {\r\n background-color: var(--icon-background-cover-hover);\r\n}\r\n\r\n.as-toc-item:not(.as-has-quick-menu) .as-toc-item-quick-menu-ctn {\r\n visibility: hidden;\r\n pointer-events: none;\r\n opacity: 0;\r\n}\r\n\r\n.as-toc-item-name-ctn input {\r\n font: inherit;\r\n border: none;\r\n /*background-color: transparent;*/\r\n width: 8px;\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n margin-left: -2px;\r\n margin-right: -2px;\r\n outline: none;\r\n box-sizing: content-box;\r\n background-color: #5bc0de;\r\n max-width: 100%;\r\n}\r\n\r\n.as-toc-item:not(.as-renaming) .as-toc-item-name-ctn input,\r\n.as-toc-item.as-renaming .as-toc-item-name {\r\n display: none;\r\n}\r\n", ""]); /***/ }), /***/ 7380: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-token-field {\r\n font-size: 1rem;\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: 4.3em;\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", ""]); /***/ }), /***/ 5623: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-tokenize-hyper-input {\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 font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n\r\n.as-emoji-token{\r\n font-size: inherit;\r\n overflow: hidden;\r\n box-sizing: border-box;\r\n display: inline;\r\n white-space: pre;\r\n background-size: 1.2em;\r\n background-position:left;\r\n background-repeat: no-repeat;\r\n}\r\n\r\n.as-tag-token{\r\n font-size: inherit;\r\n display: inline;\r\n white-space: pre;\r\n font-weight: bold;\r\n color: #1e1ec8;\r\n}\r\n\r\n\r\n\r\n", ""]); /***/ }), /***/ 1880: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":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.28em;\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.28em;\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.38em;\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.38em;\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}\r\n\r\n.as-copyable-icon-tooltip {\r\n font-size: inherit;\r\n display: inline-block;\r\n vertical-align: middle;\r\n color: #428bca;\r\n border: none;\r\n padding: 0;\r\n margin: 0;\r\n background-color: transparent;\r\n}\r\n\r\n.as-copyable-icon-tooltip:hover {\r\n background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-copyable-icon-tooltip:active {\r\n background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.as-cit-icon {\r\n font-size: inherit;\r\n color: inherit;\r\n display: block;\r\n}\r\n\r\n.as-cit-icon::before {\r\n display: block;\r\n}\r\n", ""]); /***/ }), /***/ 5418: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 -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 white-space: nowrap;\r\n}\r\n\r\n.absol-trackbar::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-trackbar-line {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: 100%;\r\n position: relative;\r\n height: 0.4em;\r\n box-sizing: border-box;\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}\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 width: 1.2em;\r\n margin-left: -0.6em ;\r\n background: rgb(245, 245, 245);\r\n border-radius: 50%;\r\n border: solid 1px rgb(139, 139, 139);\r\n box-sizing: border-box;\r\n}\r\n\r\n.absol-trackbar:not(.as-read-only) .absol-trackbar-button,\r\n.absol-trackbar:not(.as-read-only) .absol-trackbar-line {\r\n cursor: pointer;\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}", ""]); /***/ }), /***/ 7242: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 --input-width: 4em;\r\n font-size: 1rem;\r\n}\r\n\r\n.absol-trackbar-input::after {\r\n content: \"\";\r\n vertical-align: middle;\r\n height: 100%;\r\n}\r\n\r\n.absol-trackbar-input > .absol-trackbar {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: calc(100% - var(--input-width) - 5px);\r\n}\r\n\r\n\r\n.absol-trackbar-input > .as-flexicon-input {\r\n width: var(--input-width);\r\n vertical-align: middle;\r\n height: 2em;\r\n box-sizing: border-box;\r\n margin-left: 5px;\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 font-size: inherit;\r\n}\r\n\r\n.absol-trackbar-input.as-border-none .as-flexicon-input {\r\n border: none;\r\n}", ""]); /***/ }), /***/ 389: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-tree-chart * {\r\n box-sizing: border-box;\r\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\r\n}\r\n\r\n.as-tree-chart {\r\n --root-background-color: #ED7D31;\r\n --root-text-color: white;\r\n\r\n --vert-node-background-color: #4472C4;\r\n --vert-node-text-color: white;\r\n\r\n --horz-node-background-color: #A9D18E;\r\n --horz-node-text-color: black;\r\n\r\n --leaf-node-background-color: #F8CBAD;\r\n --leaf-node-text-color: black;\r\n\r\n\r\n font-size: 1rem;\r\n display: inline-block;\r\n}\r\n\r\n.as-tree-chart-node {\r\n display: inline-block;\r\n white-space: normal;\r\n vertical-align: top;\r\n position: relative;\r\n}\r\n\r\n.as-tree-chart-content-ctn {\r\n text-align: center;\r\n position: relative;\r\n}\r\n\r\n.as-tree-chart-node[data-level=\"0\"] >.as-tree-chart-content-ctn> .as-tree-chart-content {\r\n background-color: var(--root-background-color);\r\n color: var(--root-text-color);\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn .as-tree-chart-content{\r\n background-color: var(--horz-node-background-color);\r\n color: var(--horz-node-text-color);\r\n}\r\n\r\n.as-tree-chart-node.as-is-leaf >.as-tree-chart-content-ctn> .as-tree-chart-content {\r\n background-color: var(--leaf-node-background-color);\r\n color: var(--leaf-node-text-color);\r\n}\r\n\r\n\r\n\r\n.as-tree-chart-content {\r\n padding: 5px;\r\n border-radius: 4px;\r\n border: 1px solid black;\r\n text-align: center;\r\n position: relative;\r\n display: inline-block;\r\n background-color: var(--vert-node-background-color);\r\n color: var(--vert-node-text-color);\r\n}\r\n\r\n.as-tree-chart-icon,\r\n.as-tree-chart-text {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-tree-chart-icon {\r\n font-size: 1.25em;\r\n padding-right: 0.25em;\r\n}\r\n\r\n.as-tree-chart-node.as-has-children > .as-tree-chart-content-ctn {\r\n padding-bottom: 10px;\r\n}\r\n\r\n.as-tree-chart-node.as-has-children > .as-tree-chart-content-ctn::after {\r\n content: \"\";\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n height: 10px;\r\n border-left: 1px solid black;\r\n}\r\n\r\n.as-tree-chart-child-ctn {\r\n white-space: nowrap;\r\n padding-top: 10px;\r\n text-align: center;\r\n vertical-align: top;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-tree-chart-node:not(.as-horizontal) > .as-tree-chart-child-ctn > .as-tree-chart-node:not(:last-child) {\r\n margin-right: 10px;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node:not(:first-child):not(:last-child)::before {\r\n content: \"\";\r\n border-top: 1px solid black;\r\n position: absolute;\r\n left: 0;\r\n right: -10px;\r\n top: -10px;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node:first-child:not(:last-child)::before {\r\n content: \"\";\r\n border-top: 1px solid black;\r\n position: absolute;\r\n left: 50%;\r\n right: -10px;\r\n top: -10px;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node > .as-tree-chart-content-ctn .as-tree-chart-content::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 50%;\r\n height: 10px;\r\n top: -11px;\r\n border-left: 1px solid black;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node:not(:first-child):last-child > .as-tree-chart-content-ctn::before {\r\n content: \"\";\r\n border-top: 1px solid black;\r\n position: absolute;\r\n left: 0;\r\n width: calc(50% + 1px);\r\n top: -10px;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn .as-tree-chart-content {\r\n text-align: left;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal > .as-tree-chart-content-ctn .as-tree-chart-content {\r\n display: block;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node {\r\n display: block;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn {\r\n padding-left: 20px;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn .as-tree-chart-content-ctn {\r\n text-align: left;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-content-ctn::after {\r\n left: 10px;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node:not(:last-child)::before {\r\n right: unset;\r\n bottom: 0;\r\n border-top: none;\r\n border-left: 1px solid black;\r\n left: -10px;\r\n height: unset;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn > .as-tree-chart-node > .as-tree-chart-content-ctn .as-tree-chart-content::before {\r\n border-left: none;\r\n border-top: 1px solid black;\r\n left: -10px;\r\n width: 10px;\r\n top: 50%;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node:last-child > .as-tree-chart-content-ctn::before {\r\n content: \"\";\r\n position: absolute;\r\n left: -10px;\r\n top: -10px;\r\n height: calc(50% + 10px);\r\n border-top: none;\r\n border-left: 1px solid black;\r\n /*width: unset;*/\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node.as-has-children:last-child > .as-tree-chart-content-ctn::before {\r\n height: calc(50% + 5px);\r\n /*width: unset;*/\r\n}\r\n", ""]); /***/ }), /***/ 6332: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 2889: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\r\n.as-tree-table {\r\n font-size: 1rem;\r\n font-family: Arial, Helvetica, sans-serif;\r\n border-collapse: collapse;\r\n}\r\n\r\n.as-tree-table-toggle {\r\n position: absolute;\r\n left: 5px;\r\n top: 0;\r\n bottom: 0;\r\n vertical-align: middle;\r\n padding-right: 0.3em;\r\n white-space: nowrap;\r\n user-select: none;\r\n}\r\n\r\n\r\n\r\n.as-tree-table-toggle::before {\r\n display: inline-block;\r\n vertical-align: middle;\r\n content: \"\";\r\n height: 100%;\r\n}\r\n\r\n.as-tree-table-head {\r\n background-color: #d6d6d6;\r\n}\r\n\r\n\r\n.as-tree-table-head-cell {\r\n font-weight: bold;\r\n padding: 10px;\r\n border: 1px solid #ddd;\r\n position: relative;\r\n}\r\n\r\n\r\n.as-tree-table-row {\r\n height: calc(40em / 14);\r\n page-break-inside: avoid;\r\n break-inside: avoid;\r\n}\r\n\r\n.as-tree-table-row:nth-child(odd) {\r\n background-color: rgb(245, 245, 245);\r\n}\r\n\r\n.as-tree-table-row:nth-child(even) {\r\n background-color: white;\r\n}\r\n\r\n.as-tree-table-cell {\r\n padding: 5px;\r\n border: 1px solid #ddd;\r\n position: relative;\r\n page-break-inside: avoid;\r\n break-inside: avoid;\r\n}\r\n\r\n.as-tree-table-cell[data-type=\"number\"] {\r\n text-align: right;\r\n}\r\n\r\n.as-tree-table-row.as-is-opened .as-tree-table-toggle .toggle-close,\r\n.as-tree-table-row:not(.as-is-opened) .as-tree-table-toggle .toggle-open {\r\n display: none;\r\n}\r\n\r\n.as-tree-table-toggle .toggler-ico {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n\r\n.as-tree-table-row:not(.as-has-sub-row) .as-tree-table-toggle .toggler-ico {\r\n visibility: hidden;\r\n}\r\n\r\n/*.as-tree-table-row {*/\r\n/* height: var(--table-row-height);*/\r\n/*}*/\r\n\r\n.as-printer-content .as-tree-table-toggle svg{\r\n display: none;\r\n}\r\n\r\n.as-printer-content .as-tree-table-head-cell,\r\n.as-printer-content .as-tree-table-cell{\r\n border-color: black;\r\n}\r\n\r\n.as-tree-table-cell>span:first-child:last-child{\r\n page-break-inside: avoid;\r\n break-inside: avoid;\r\n}\r\n\r\n@media print {\r\n div[align=\"center\"]> .as-tree-table{\r\n display: block !important;\r\n }\r\n /*trick avoid break row*/\r\n .as-tree-table tbody tr td:before,\r\n .as-tree-table tbody tr td:after {\r\n content: \"\";\r\n height: 4px;\r\n display: block;\r\n }\r\n\r\n .as-tree-table-head {\r\n display: table-header-group !important;\r\n }\r\n\r\n .as-tree-table-head + tbody tr:first-child th {\r\n display: none;\r\n }\r\n}", ""]); /***/ }), /***/ 5995: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":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}", ""]); /***/ }), /***/ 3396: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ":root {\r\n --as-vertical-timeline-item-height: 40px;\r\n}\r\n\r\n.as-vertical-timeline {\r\n display: inline-block;\r\n color: white;\r\n font-size: 14px;\r\n font-family: Arial, Helvetica, sans-serif;\r\n text-align: left;\r\n padding: 5px;\r\n}\r\n\r\n.as-vertical-timeline-item {\r\n height: var(--as-vertical-timeline-item-height);\r\n white-space: nowrap;\r\n}\r\n\r\n.as-vertical-timeline-item.as-inactive {\r\n color: rgba(200, 200, 200, 0.5);\r\n}\r\n\r\n.as-vertical-timeline-item.as-active .as-vertical-timeline-tile {\r\n text-shadow: 1px 0 0 currentColor;\r\n}\r\n\r\n.as-vertical-timeline-item:not(:first-child) .as-vertical-timeline-icon-ctn::before {\r\n content: \"\";\r\n display: inline-block;\r\n height: calc(var(--as-vertical-timeline-item-height) - 30px);\r\n border-left: 2px solid currentColor;\r\n position: absolute;\r\n left: calc(50% - 1px);\r\n bottom: calc(100% + 2px);\r\n}\r\n\r\n\r\n.as-vertical-timeline-icon-ctn {\r\n display: inline-block;\r\n margin-right: 20px;\r\n position: relative;\r\n vertical-align: middle;\r\n\r\n}\r\n\r\n.as-vertical-timeline-icon-ctn span {\r\n font-size: 24px;\r\n}\r\n\r\n\r\n.as-vertical-timeline-tile {\r\n display: inline-block;\r\n vertical-align: middle;\r\n\r\n}\r\n\r\n\r\n/*//check-circle*/", ""]); /***/ }), /***/ 7829: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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}", ""]); /***/ }), /***/ 2872: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\r\n.as-video-url-dialog-url {\r\n max-width: calc(100vw - 8em - 40px);\r\n width: 500px;\r\n min-height: 30px;\r\n box-sizing: border-box;\r\n}\r\n\r\n.as-video-url-dialog input[type=\"number\"] {\r\n width: 5em;\r\n}\r\n\r\n.as-video-url-dialog-row> label {\r\n display: inline-block;\r\n vertical-align: middle;\r\n width: 6em;\r\n}\r\n\r\n.as-video-url-dialog-row {\r\n padding-bottom: 10px;\r\n white-space: pre;\r\n}\r\n\r\n.as-video-url-dialog-row > * {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.as-video-url-dialog-video-image{\r\n max-width: 200px;\r\n max-height: 200px;\r\n\r\n}", ""]); /***/ }), /***/ 9163: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "/*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}", ""]); /***/ }), /***/ 7366: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".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 */", ""]); /***/ }), /***/ 8362: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-assessment-chart {\n /*border: 1px solid red;*/\n}\n\n\n.vc-assessment-chart.simple-mode .vc-assessment-chart-area,\n.vc-assessment-chart.vc-simple-mode .vc-assessment-chart-area {\n fill: none !important;\n}\n\n.vc-assessment-chart.simple-mode .vc-assessment-chart-level:not(.last),\n.vc-assessment-chart.vc-simple-mode .vc-assessment-chart-level:not(:last-child) {\n display: none;\n}\n\n.vc-assessment-chart:not(.show-range-segment) .vc-assessment-chart-range-segment {\n display: none;\n}\n\n.vc-assessment-chart-area {\n stroke-width: 3;\n}\n\n\n.vc-assessment-chart-level {\n fill: none;\n stroke-width: 1;\n stroke: rgba(12, 30, 49, 0.333)\n}\n\n\n.vc-assessment-chart-level-value text,\n.vc-assessment-chart-level-value {\n font-size: 10px;\n}\n\n.vc-assessment-chart-level-value rect {\n fill: rgba(255, 255, 255, 0.5);\n stroke: rgba(60, 60, 70, 0.6);\n stroke-width: 1;\n}\n\n.vc-assessment-chart-range-plot {\n fill: #155757d8;\n}\n\n.vc-assessment-chart-range-line {\n stroke: #155757d8;\n stroke-width: 3;\n}\n\n.vc-assessment-chart-range-area {\n fill: rgba(200, 200, 0, 0.3);\n stroke: none;\n}\n\n.vc-assessment-chart-range-area-stroke {\n fill: none;\n stroke: rgb(255, 150, 0);\n stroke-width: 1.5;\n}", ""]); /***/ }), /***/ 7025: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-bar-stack-chart {\n\n}\n\n\n.vc-bar-stack-note-name {\n font-weight: bold;\n font-size: 16px;\n}\n\n.vc-bar-stack-block-value {\n font-size: 25px;\n text-anchor: middle;\n}\n\n.vc-bar-stack-block-percent {\n text-anchor: middle;\n font-size: 20px;\n}", ""]); /***/ }), /***/ 671: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-title {\n font-weight: bold;\n font-size: 1.125em;\n text-anchor: middle;\n}\n\n\n.vc-chart {\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: 14px;\n background-color: white;\n --vc-require-width: 100px;\n --vc-require-height: 200px;\n min-width: var(--vc-require-width);\n min-height: var(--vc-require-height);\n}\n\n.vc-oxy {\n fill: none;\n stroke: rgb(68, 114, 196);\n stroke-width: 1;\n}\n\n.vc-oxy-arrow {\n fill: rgb(68, 114, 196);\n stroke: none;\n}\n\n.vc-simple-ox {\n stroke-width: 1;\n}\n\n.vc-oy-value {\n text-anchor: end;\n}\n\n.vc-ox-label {\n text-anchor: middle;\n}\n\n.vc-white-mask {\n fill: white;\n}\n\n.vc-value-name,\n.vc-key-name {\n text-anchor: end;\n font-style: italic;\n}\n\n.vc-note {\n cursor: default;\n}\n\n.vc-note:hover text {\n fill: rgb(130, 135, 180);\n}\n\n.vc-value-text {\n text-anchor: middle;\n fill: currentColor;\n}\n\n.vc-grid {\n fill: none;\n stroke: #ddd;\n pointer-events: none;\n}\n\n@media print {\n .as-resize-box {\n display: none;\n }\n\n .vc-chart {\n max-width: 600px; /*a4 with 2in margin both*/\n height: auto;\n }\n\n}\n", ""]); /***/ }), /***/ 8392: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vchart-hidden{\n display: none;\n}\n\n.base-chart:not(:hover) .vchart-vscrollbar {\n display: none;\n}\n\n.vchart-hitbox{\n fill: rgba(0, 0, 0, 0);\n /* stroke: none; */\n}\n\n\n.vchart-debug .vchart-hitbox{\n fill: rgba(22, 129, 216, 0.247);\n stroke: rgba(22, 129, 216, 0.87);\n}\n\n\n.vchart-base{\n font-size: 14px;\n font-family: Arial;\n}\n\n\n.vchart-stroke-note-line {\n stroke-width: 2;\n}\n\n.vchart-stroke-note-text,\n.vchart-rect-note-text\n{\n font-size: 14px;\n}\n\n.vchart-rect-note-rect{\n stroke:none;\n}\n\nrect.vchart-node-grid-box{\n fill: burlywood;\n}", ""]); /***/ }), /***/ 8239: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".as-resize-box.vc-chart-resize-box {\n position: fixed;\n z-index: 8000000;\n user-select: none;\n}", ""]); /***/ }), /***/ 8658: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\n.vc-column rect {\n fill: rgb(123, 192, 247);\n}\n\n.column-chart:not(.vchart-show-inline-value) .column-chart-column text {\n display: none;\n}\n\n.vc-column.vc-value-zero text,\n.vc-chart:not(.vc-show-inline-value) .vc-column text {\n display: none;\n}", ""]); /***/ }), /***/ 154: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".av-funnel-chart {\n\n}\n\n.av-funnel {\n\n}\n\n.av-funnel-item-block {\n\n}\n\n.av-funnel-note-name {\n font-weight: bold;\n font-size: 16px;\n text-transform: uppercase;\n}\n\n.av-funnel-block-shape {\n stroke: white;\n stroke-width: 2;\n}\n\n.av-funnel-block-value {\n text-anchor: middle;\n font-size: 30px;\n}\n\n.av-funnel-block-percent{\n text-anchor: middle;\n font-size: 25px;\n}", ""]); /***/ }), /***/ 4964: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".grank-chart {\n font-size: 12px;\n font-family: Arial;\n}\n\n.grank-chart-plot {\n fill: rgb(145, 228, 251);\n stroke-width: 1;\n stroke: black;\n}\n\n.grank-chart-group-rect {\n stroke: black;\n fill: none;\n stroke-width: 1;\n}", ""]); /***/ }), /***/ 1708: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-horizontal-bar-chart {\n border: 1px solid black;\n font-size: 14px;\n}\n\n.vc-horizontal-bar-chart .base-chart-white-mask {\n /* fill: rgba(255, 0, 0, 0.4); */\n}\n\ng.vc-horizontal-bar-one-bar-note-container .vc-horizontal-bar-chart-bar {\n stroke: rgb(47, 82, 143);\n stroke-width: 1;\n fill: white;\n}\n\ng.vc-horizontal-bar-one-bar-note-container .vc-horizontal-bar-chart-range {\n stroke: rgb(47, 82, 143);\n stroke-width: 1;\n fill: rgb(157, 195, 230);\n}\n\ng.vc-horizontal-bar-one-bar-note-container {}\n\ng.vc-horizontal-bar-one-bar-note-container .vc-horizontal-bar-chart-range-min-line,\ng.vc-horizontal-bar-one-bar-note-container .vc-horizontal-bar-chart-range-max-line {\n stroke: rgb(47, 82, 143);\n stroke-width: 1px;\n stroke-dasharray: 2;\n}\n\n.vc-horizontal-bar-chart-key {\n text-anchor: end;\n}\n\ng.vc-horizontal-bar-keys-note-container {}\n\ng.vc-horizontal-bar-key-note {}\n\n\n\n.vc-horizontal-bar-chart-segment-text {\n text-anchor: middle;\n}\n\n\n.vc-horizontal-bar-chart-range {\n stroke: rgb(47, 82, 143);\n stroke-width: 1;\n}\n\n\ntext.vc-horizontal-bar-title {\n font-size: 15px;\n font-weight: bold;\n text-anchor: middle;\n}\n\n\n.vc-horizontal-bar-vline {\n stroke-width: 1;\n}\n\n\n.vc-horizontal-bar-chart-value-line {\n stroke: darkgray;\n stroke-width: 0.5;\n}\n\n.vc-horizontal-bar-vline-note>path {\n stroke-width: 2;\n}\n\n\n.vc-horizontal-bar-vline-note-box {\n stroke-width: 1;\n stroke: black;\n fill: none;\n}\n\n.vc-horizontal-bar-vline-container>path {\n stroke-width: 2;\n stroke: black;\n}", ""]); /***/ }), /***/ 6344: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".image-chart text{\n font-size: 14px;\n}\n\n.image-chart-ox {\n fill: none;\n stroke: #4472c4;\n stroke-width: 1;\n}\n\n.image-chart-base{\n fill:#7bc0f7;\n stroke: none;\n}\n\n.image-chart-bonus{\n fill:#ffcc7f;\n stroke: none;\n}\n\n.image-chart-range{\n stroke: black;\n stroke-width:1; \n}\n\n.image-chart-range-limit{\n fill: none;\n stroke: #000000;\n stroke-width: 1;\n}\n\n\n.image-chart.as-bonus-under-100-percent .image-chart-bonus {\n fill: #ff927f;\n}", ""]); /***/ }), /***/ 4561: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\n.line-chart-line {\n stroke-width: 2;\n fill: none;\n}\n\n.line-chart-plot {\n stroke: none;\n}\n\n.vc-line-chart.vc-small-col .vc-key {\n visibility: hidden;\n}\n\n.vc-line-chart .vc-plot {\n fill: var(--color);\n}\n\n.vc-line-path {\n stroke: var(--color);\n stroke-width: 2;\n fill: none;\n}\n\n.vc-line-hit-path {\n stroke-width: 6;\n fill: none;\n stroke: transparent;\n}\n\n.vc-line:hover .vc-line-hit-path{\n stroke: var(--lighter-color);\n}", ""]); /***/ }), /***/ 1132: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".mapping-chart{\n border: solid 1px gray;\n background-color: aliceblue;\n}\n\n.mapping-chart-map-line-hitbox.vchart-hitbox{\n stroke-width: 8;\n stroke: transparent;\n cursor: pointer;\n}\n\n.mapping-chart-range-text{\n stroke: none;\n fill: blue;\n font-size: 14px;\n}\n\n.mapping-chart-range-plot{\n fill:none;\n stroke: black;\n stroke-width: 2px;\n}\n\n.mapping-chart-line-plot{\n fill:green;\n stroke: red;\n stroke-width: 0.54;\n cursor: pointer;\n}\n\n.mapping-chart-title{\n font-size: 20px;\n fill: black;\n stroke: none;\n}\n\n.mapping-chart-range-line{\n stroke: black;\n stroke-width: 2px;\n}\n\n.mapping-chart-marker{\n font-size: 14px;\n /* cursor: pointer; */\n}\n\n.mapping-chart-marker:hover .mapping-chart-marker-box{\n /* fill: rgba(17, 230, 88, 0.788); */\n}\n\n.mapping-chart-marker-box{\n /* fill: rgba(17, 187, 230, 0.788); */\n fill: none;\n stroke: none;\n}\n\n\n\nsvg:not(.mapping-chart-hover-bot) .mapping-chart-marker.bot{\n visibility: hidden;\n}\n\n.mapping-chart-marker.bot:hover .mapping-chart-marker-box,\n.mapping-chart-marker.top:hover .mapping-chart-marker-box\n{\n /* fill: rgba(17, 187, 230, 0.788); */\n}\n\nsvg:not(.mapping-chart-hover-top) .mapping-chart-marker.top{\n visibility: hidden;\n}\n\n.mapping-chart-map-line{\n stroke: black;\n stroke-width: 2;\n}\n\n.mapping-chart-map-line.selected-line{\n stroke: red;\n}", ""]); /***/ }), /***/ 9799: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vchart-vscrollbar-bar{\n fill: rgba(0, 0, 0, 0.07); \n}\n\n.vchart-vscrollbar-button{\n fill:rgba(0, 0, 0, 0.1); ;\n}\n\n\n.vchart-segment-line,\n.vchart-axis,\n.vchart-line-arrow {\n stroke-width: 1;\n stroke: rgb(68, 114, 196);\n fill: rgb(68, 114, 196);\n}\n\n.vchart-scroll-arrow {\n touch-action: none;\n user-select: none;\n opacity: 0.2;\n}\n\n.vchart-scroll-arrow:hover {\n opacity: 0.6;\n}\n", ""]); /***/ }), /***/ 4596: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-note{\n\n}\n\n.vc-note-rect {\n stroke: none;\n}\n\n.vc-note-hit {\n fill: transparent;\n stroke: none;\n}\n\n.vc-note-line {\n stroke-width: 2;\n}\n\n.vc-note-text {\n font-size: 1em;\n}", ""]); /***/ }), /***/ 6660: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-piece{\n stroke-width: 1;\n stroke: white;\n}\n\n.vc-piece-value{\n font-size: 16px;\n text-anchor: middle;\n}", ""]); /***/ }), /***/ 9364: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-range-chart {\n box-sizing: border-box;\n}\n\n.base-chart,\n.range-chart {\n font-size: 12px;\n font-family: Arial, Helvetica, sans-serif;\n}\n\n\n.base-chart-title {\n font-size: 15px;\n}\n\n\n.range-chart:not(:hover) .vchart-vscrollbar {\n display: none;\n}\n\n.base-chart-title {\n font-size: 15px;\n font-weight: bold;\n}\n\n.base-chart-oxy-text {\n font-style: italic;\n fill: rgb(70, 70, 70);\n stroke: none;\n}\n\n.range-chart-value-plot {\n fill: #f7941d;\n stroke: none;\n}\n\n.range-chart-limit-line {\n stroke-width: 4;\n fill: none;\n}\n\n.range-chart-range-line {\n stroke-width: 1;\n fill: none;\n stroke: black;\n}\n\n.range-chart-limit-line.max {\n stroke: #2C82FF;\n}\n\n.range-chart-limit-line.mid {\n stroke: #58EBF4;\n}\n\n.range-chart-limit-line.min {\n stroke: #ED1C24;\n}\n\n.range-chart:not(.show-inline-value) .range-chart-inline-value {\n display: none;\n}\n\n/* .show-inline-value .range-chart-note, */\n\n.show-inline-value .range-char-note-value {\n display: none;\n}\n\n.vc-range-chart-label-full,\n.vc-range-chart-label-line,\n.vc-range-chart-label {\n text-anchor: middle;\n}\n\n.vc-range-chart.vc-ox-label-wrap .vc-range-chart-label-full,\n.vc-range-chart:not(.vc-ox-label-wrap) .vc-range-chart-label-line {\n display: none;\n}\n\n.vc-ox-value-ctn {\n text-anchor: end;\n}\n\n.vc-range-rect {\n fill: rgba(200, 230, 255, 0.5);\n}", ""]); /***/ }), /***/ 8642: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\n.range-group-chart-limit-line {\n stroke-width: 5;\n fill: none;\n}\n\n.range-group-chart-limit-line.max {\n stroke: rgb(230, 22, 16);\n}\n\n.range-group-chart-limit-line.min {\n stroke: rgb(20, 100, 246);\n}\n\n.range-group-chart-limit-line.normal {\n stroke: rgb(255, 218, 216);\n}\n\n.range-group-chart-plot {\n fill: rgb(145, 228, 251);\n stroke-width: 1;\n stroke: hsla(0, 90%, 48%, 0.685);\n}\n\n.range-group-chart-range-line {\n stroke-width: 1;\n fill: none;\n stroke: black;\n}", ""]); /***/ }), /***/ 7970: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\n.rank-chart-plot {\n stroke: black;\n stroke-width: 1;\n}\n\n.rank-chart-plot-text{\n cursor: default;\n}\n\n.rank-chart-position-rect,\n.vc-rank-position-list-rect {\n stroke: none;\n fill: rgba(0, 247, 255, 0.139);\n}", ""]); /***/ }), /***/ 9930: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vchart-resizable-div {\n position: relative;\n box-sizing: border-box;\n}\n\n.vchart-resizable-div .as-resize-box {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: none;\n}\n\n.vchart-resizable-div.vchart-resizable-div-active .as-resize-box {\n display: block;\n}", ""]); /***/ }), /***/ 1767: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-scroll-arrow-icon {\n fill: #00a5d6;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n}\n\n.vc-scroll-arrow-hit-box {\n fill: rgba(0, 0, 255, 0.03);\n}\n\n.vc-scroll-arrow:active .vc-scroll-arrow-hit-box {\n fill: rgba(0, 0, 255, 0.1);\n}", ""]); /***/ }), /***/ 1552: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "", ""]); /***/ }), /***/ 3001: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".correlation-chart-plot {\n stroke: rgba(0, 0, 0, 0.3);\n stroke-width: 1;\n}\n\n.correlation-chart-line {\n fill: none;\n stroke-width: 3;\n}\n\n.correlation-chart-normal-line {\n fill: none;\n stroke-width: 1;\n}\n\n.correlation-chart-plot.static {\n fill: rgba(85, 141, 218, 1);\n}\n\n.correlation-chart-line.static {\n stroke: rgba(85, 141, 218, 0.7);\n}\n\n.correlation-chart-normal-line.static {\n stroke: rgba(85, 141, 218, 0.5);\n}\n\n.correlation-chart-plot.dynamic {\n fill: rgba(255, 0, 0, 1);\n}\n\n.correlation-chart-line.dynamic {\n stroke: rgba(255, 0, 0, 0.7);\n}\n\n.correlation-chart-normal-line.dynamic {\n stroke: rgba(255, 0, 0, 0.7);\n}", ""]); /***/ }), /***/ 9396: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-stacked-horizontal-bar-chart {\r\n min-width: var(--vc-require-width);\r\n}", ""]); /***/ }), /***/ 2990: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\n.sunburst-chart .base-chart-title circle {\n fill: rgb(245, 203, 153);\n stroke: none;\n}\n\n.sunburst-chart-node-shape {\n fill: white;\n stroke-width: 2;\n stroke: rgb(247, 205, 155);\n}\n\n.vc-sunburst-node-name {\n font-size: 14px;\n}", ""]); /***/ }), /***/ 4614: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, ".vc-tiny-circle-blank {\r\n fill: rgb(168, 168, 168);\r\n stroke-width: 2;\r\n stroke: white;\r\n fill-rule: evenodd;\r\n}\r\n\r\n.vc-chart.vc-tiny-circle-chart {\r\n min-width: 250px;\r\n min-height: 100px;\r\n font-size: 1rem;\r\n}\r\n\r\n.vc-arc {\r\n stroke: white;\r\n stroke-width: 1;\r\n}", ""]); /***/ }), /***/ 4832: /***/ ((module, exports, __webpack_require__) => { exports = module.exports = __webpack_require__(3645)(false); // Module exports.push([module.id, "\n.vchart-tooltip-container {\n background-color: rgba(20, 20, 22, 1);\n color: rgb(231, 230, 157);\n position: absolute;\n white-space: nowrap;\n padding: 5px;\n line-height: 1.5;\n border-radius: 4px;\n bottom: 0;\n left: 0;\n}\n\n.vchart-tooltip-anchor {\n position: fixed;\n z-index: 9999999;\n pointer-events: none;\n}\n", ""]); /***/ }), /***/ 3645: /***/ ((module) => { "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 + ' */'; } /***/ }), /***/ 8267: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // Expose `IntlPolyfill` as global to add locale data into runtime later on. __webpack_require__.g.IntlPolyfill = __webpack_require__(8659); // Require all locale data for `Intl`. This module will be // ignored when bundling for the browser with Browserify/Webpack. __webpack_require__(2482); // hack to export the polyfill as global Intl if needed if (!__webpack_require__.g.Intl) { __webpack_require__.g.Intl = __webpack_require__.g.IntlPolyfill; __webpack_require__.g.IntlPolyfill.__applyLocaleSensitivePrototypes(); } // providing an idiomatic api for the nodejs version of this module module.exports = __webpack_require__.g.IntlPolyfill; /***/ }), /***/ 8659: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; var jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }(); var asyncToGenerator = function (fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }; var classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; var createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var defineEnumerableProperties = function (obj, descs) { for (var key in descs) { var desc = descs[key]; desc.configurable = desc.enumerable = true; if ("value" in desc) desc.writable = true; Object.defineProperty(obj, key, desc); } return obj; }; var defaults = function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }; var defineProperty$1 = function (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 _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }; var _instanceof = function (left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } }; var interopRequireDefault = function (obj) { return obj && obj.__esModule ? obj : { default: obj }; }; var interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }; var newArrowCheck = function (innerThis, boundThis) { if (innerThis !== boundThis) { throw new TypeError("Cannot instantiate an arrow function"); } }; var objectDestructuringEmpty = function (obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }; var objectWithoutProperties = function (obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }; var possibleConstructorReturn = function (self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }; var selfGlobal = typeof __webpack_require__.g === "undefined" ? self : __webpack_require__.g; var set = function set(object, property, value, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent !== null) { set(parent, property, value, receiver); } } else if ("value" in desc && desc.writable) { desc.value = value; } else { var setter = desc.set; if (setter !== undefined) { setter.call(receiver, value); } } return value; }; var slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var slicedToArrayLoose = function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { var _arr = []; for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { _arr.push(_step.value); if (i && _arr.length === i) break; } return _arr; } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; var taggedTemplateLiteral = function (strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }; var taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; }; var temporalRef = function (val, name, undef) { if (val === undef) { throw new ReferenceError(name + " is not defined - temporal dead zone"); } else { return val; } }; var temporalUndefined = {}; var toArray = function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); }; var toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }; var babelHelpers$1 = Object.freeze({ jsx: jsx, asyncToGenerator: asyncToGenerator, classCallCheck: classCallCheck, createClass: createClass, defineEnumerableProperties: defineEnumerableProperties, defaults: defaults, defineProperty: defineProperty$1, get: get, inherits: inherits, interopRequireDefault: interopRequireDefault, interopRequireWildcard: interopRequireWildcard, newArrowCheck: newArrowCheck, objectDestructuringEmpty: objectDestructuringEmpty, objectWithoutProperties: objectWithoutProperties, possibleConstructorReturn: possibleConstructorReturn, selfGlobal: selfGlobal, set: set, slicedToArray: slicedToArray, slicedToArrayLoose: slicedToArrayLoose, taggedTemplateLiteral: taggedTemplateLiteral, taggedTemplateLiteralLoose: taggedTemplateLiteralLoose, temporalRef: temporalRef, temporalUndefined: temporalUndefined, toArray: toArray, toConsumableArray: toConsumableArray, typeof: _typeof, extends: _extends, instanceof: _instanceof }); var realDefineProp = function () { var sentinel = function sentinel() {}; try { Object.defineProperty(sentinel, 'a', { get: function get() { return 1; } }); Object.defineProperty(sentinel, 'prototype', { writable: false }); return sentinel.a === 1 && sentinel.prototype instanceof Object; } catch (e) { return false; } }(); // Need a workaround for getters in ES3 var es3 = !realDefineProp && !Object.prototype.__defineGetter__; // We use this a lot (and need it for proto-less objects) var hop = Object.prototype.hasOwnProperty; // Naive defineProperty for compatibility var defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) { if ('get' in desc && obj.__defineGetter__) obj.__defineGetter__(name, desc.get);else if (!hop.call(obj, name) || 'value' in desc) obj[name] = desc.value; }; // Array.prototype.indexOf, as good as we need it to be var arrIndexOf = Array.prototype.indexOf || function (search) { /*jshint validthis:true */ var t = this; if (!t.length) return -1; for (var i = arguments[1] || 0, max = t.length; i < max; i++) { if (t[i] === search) return i; } return -1; }; // Create an object with the specified prototype (2nd arg required for Record) var objCreate = Object.create || function (proto, props) { var obj = void 0; function F() {} F.prototype = proto; obj = new F(); for (var k in props) { if (hop.call(props, k)) defineProperty(obj, k, props[k]); } return obj; }; // Snapshot some (hopefully still) native built-ins var arrSlice = Array.prototype.slice; var arrConcat = Array.prototype.concat; var arrPush = Array.prototype.push; var arrJoin = Array.prototype.join; var arrShift = Array.prototype.shift; // Naive Function.prototype.bind for compatibility var fnBind = Function.prototype.bind || function (thisObj) { var fn = this, args = arrSlice.call(arguments, 1); // All our (presently) bound functions have either 1 or 0 arguments. By returning // different function signatures, we can pass some tests in ES3 environments if (fn.length === 1) { return function () { return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments))); }; } return function () { return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments))); }; }; // Object housing internal properties for constructors var internals = objCreate(null); // Keep internal properties internal var secret = Math.random(); // Helper functions // ================ /** * A function to deal with the inaccuracy of calculating log10 in pre-ES6 * JavaScript environments. Math.log(num) / Math.LN10 was responsible for * causing issue #62. */ function log10Floor(n) { // ES6 provides the more accurate Math.log10 if (typeof Math.log10 === 'function') return Math.floor(Math.log10(n)); var x = Math.round(Math.log(n) * Math.LOG10E); return x - (Number('1e' + x) > n); } /** * A map that doesn't contain Object in its prototype chain */ function Record(obj) { // Copy only own properties over unless this object is already a Record instance for (var k in obj) { if (obj instanceof Record || hop.call(obj, k)) defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true }); } } Record.prototype = objCreate(null); /** * An ordered list */ function List() { defineProperty(this, 'length', { writable: true, value: 0 }); if (arguments.length) arrPush.apply(this, arrSlice.call(arguments)); } List.prototype = objCreate(null); /** * Constructs a regular expression to restore tainted RegExp properties */ function createRegExpRestore() { if (internals.disableRegExpRestore) { return function () {/* no-op */}; } var regExpCache = { lastMatch: RegExp.lastMatch || '', leftContext: RegExp.leftContext, multiline: RegExp.multiline, input: RegExp.input }, has = false; // Create a snapshot of all the 'captured' properties for (var i = 1; i <= 9; i++) { has = (regExpCache['$' + i] = RegExp['$' + i]) || has; }return function () { // Now we've snapshotted some properties, escape the lastMatch string var esc = /[.?*+^$[\]\\(){}|-]/g, lm = regExpCache.lastMatch.replace(esc, '\\$&'), reg = new List(); // If any of the captured strings were non-empty, iterate over them all if (has) { for (var _i = 1; _i <= 9; _i++) { var m = regExpCache['$' + _i]; // If it's empty, add an empty capturing group if (!m) lm = '()' + lm; // Else find the string in lm and escape & wrap it to capture it else { m = m.replace(esc, '\\$&'); lm = lm.replace(m, '(' + m + ')'); } // Push it to the reg and chop lm to make sure further groups come after arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1)); lm = lm.slice(lm.indexOf('(') + 1); } } var exprStr = arrJoin.call(reg, '') + lm; // Shorten the regex by replacing each part of the expression with a match // for a string of that exact length. This is safe for the type of // expressions generated above, because the expression matches the whole // match string, so we know each group and each segment between capturing // groups can be matched by its length alone. exprStr = exprStr.replace(/(\\\(|\\\)|[^()])+/g, function (match) { return '[\\s\\S]{' + match.replace('\\', '').length + '}'; }); // Create the regular expression that will reconstruct the RegExp properties var expr = new RegExp(exprStr, regExpCache.multiline ? 'gm' : 'g'); // Set the lastIndex of the generated expression to ensure that the match // is found in the correct index. expr.lastIndex = regExpCache.leftContext.length; expr.exec(regExpCache.input); }; } /** * Mimics ES5's abstract ToObject() function */ function toObject(arg) { if (arg === null) throw new TypeError('Cannot convert null or undefined to object'); if ((typeof arg === 'undefined' ? 'undefined' : babelHelpers$1['typeof'](arg)) === 'object') return arg; return Object(arg); } function toNumber(arg) { if (typeof arg === 'number') return arg; return Number(arg); } function toInteger(arg) { var number = toNumber(arg); if (isNaN(number)) return 0; if (number === +0 || number === -0 || number === +Infinity || number === -Infinity) return number; if (number < 0) return Math.floor(Math.abs(number)) * -1; return Math.floor(Math.abs(number)); } function toLength(arg) { var len = toInteger(arg); if (len <= 0) return 0; if (len === Infinity) return Math.pow(2, 53) - 1; return Math.min(len, Math.pow(2, 53) - 1); } /** * Returns "internal" properties for an object */ function getInternalProperties(obj) { if (hop.call(obj, '__getInternalProperties')) return obj.__getInternalProperties(secret); return objCreate(null); } /** * Defines regular expressions for various operations related to the BCP 47 syntax, * as defined at http://tools.ietf.org/html/bcp47#section-2.1 */ // extlang = 3ALPHA ; selected ISO 639 codes // *2("-" 3ALPHA) ; permanently reserved var extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}'; // language = 2*3ALPHA ; shortest ISO 639 code // ["-" extlang] ; sometimes followed by // ; extended language subtags // / 4ALPHA ; or reserved for future use // / 5*8ALPHA ; or registered language subtag var language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})'; // script = 4ALPHA ; ISO 15924 code var script = '[a-z]{4}'; // region = 2ALPHA ; ISO 3166-1 code // / 3DIGIT ; UN M.49 code var region = '(?:[a-z]{2}|\\d{3})'; // variant = 5*8alphanum ; registered variants // / (DIGIT 3alphanum) var variant = '(?:[a-z0-9]{5,8}|\\d[a-z0-9]{3})'; // ; Single alphanumerics // ; "x" reserved for private use // singleton = DIGIT ; 0 - 9 // / %x41-57 ; A - W // / %x59-5A ; Y - Z // / %x61-77 ; a - w // / %x79-7A ; y - z var singleton = '[0-9a-wy-z]'; // extension = singleton 1*("-" (2*8alphanum)) var extension = singleton + '(?:-[a-z0-9]{2,8})+'; // privateuse = "x" 1*("-" (1*8alphanum)) var privateuse = 'x(?:-[a-z0-9]{1,8})+'; // irregular = "en-GB-oed" ; irregular tags do not match // / "i-ami" ; the 'langtag' production and // / "i-bnn" ; would not otherwise be // / "i-default" ; considered 'well-formed' // / "i-enochian" ; These tags are all valid, // / "i-hak" ; but most are deprecated // / "i-klingon" ; in favor of more modern // / "i-lux" ; subtags or subtag // / "i-mingo" ; combination // / "i-navajo" // / "i-pwn" // / "i-tao" // / "i-tay" // / "i-tsu" // / "sgn-BE-FR" // / "sgn-BE-NL" // / "sgn-CH-DE" var irregular = '(?:en-GB-oed' + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)' + '|sgn-(?:BE-FR|BE-NL|CH-DE))'; // regular = "art-lojban" ; these tags match the 'langtag' // / "cel-gaulish" ; production, but their subtags // / "no-bok" ; are not extended language // / "no-nyn" ; or variant subtags: their meaning // / "zh-guoyu" ; is defined by their registration // / "zh-hakka" ; and all of these are deprecated // / "zh-min" ; in favor of a more modern // / "zh-min-nan" ; subtag or sequence of subtags // / "zh-xiang" var regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn' + '|zh-(?:guoyu|hakka|min|min-nan|xiang))'; // grandfathered = irregular ; non-redundant tags registered // / regular ; during the RFC 3066 era var grandfathered = '(?:' + irregular + '|' + regular + ')'; // langtag = language // ["-" script] // ["-" region] // *("-" variant) // *("-" extension) // ["-" privateuse] var langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-' + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?'; // Language-Tag = langtag ; normal language tags // / privateuse ; private use tag // / grandfathered ; grandfathered tags var expBCP47Syntax = RegExp('^(?:' + langtag + '|' + privateuse + '|' + grandfathered + ')$', 'i'); // Match duplicate variants in a language tag var expVariantDupes = RegExp('^(?!x).*?-(' + variant + ')-(?:\\w{4,8}-(?!x-))*\\1\\b', 'i'); // Match duplicate singletons in a language tag (except in private use) var expSingletonDupes = RegExp('^(?!x).*?-(' + singleton + ')-(?:\\w+-(?!x-))*\\1\\b', 'i'); // Match all extension sequences var expExtSequences = RegExp('-' + extension, 'ig'); // Default locale is the first-added locale data for us var defaultLocale = void 0; function setDefaultLocale(locale) { defaultLocale = locale; } // IANA Subtag Registry redundant tag and subtag maps var redundantTags = { tags: { "art-lojban": "jbo", "i-ami": "ami", "i-bnn": "bnn", "i-hak": "hak", "i-klingon": "tlh", "i-lux": "lb", "i-navajo": "nv", "i-pwn": "pwn", "i-tao": "tao", "i-tay": "tay", "i-tsu": "tsu", "no-bok": "nb", "no-nyn": "nn", "sgn-BE-FR": "sfb", "sgn-BE-NL": "vgt", "sgn-CH-DE": "sgg", "zh-guoyu": "cmn", "zh-hakka": "hak", "zh-min-nan": "nan", "zh-xiang": "hsn", "sgn-BR": "bzs", "sgn-CO": "csn", "sgn-DE": "gsg", "sgn-DK": "dsl", "sgn-ES": "ssp", "sgn-FR": "fsl", "sgn-GB": "bfi", "sgn-GR": "gss", "sgn-IE": "isg", "sgn-IT": "ise", "sgn-JP": "jsl", "sgn-MX": "mfs", "sgn-NI": "ncs", "sgn-NL": "dse", "sgn-NO": "nsl", "sgn-PT": "psr", "sgn-SE": "swl", "sgn-US": "ase", "sgn-ZA": "sfs", "zh-cmn": "cmn", "zh-cmn-Hans": "cmn-Hans", "zh-cmn-Hant": "cmn-Hant", "zh-gan": "gan", "zh-wuu": "wuu", "zh-yue": "yue" }, subtags: { BU: "MM", DD: "DE", FX: "FR", TP: "TL", YD: "YE", ZR: "CD", heploc: "alalc97", 'in': "id", iw: "he", ji: "yi", jw: "jv", mo: "ro", ayx: "nun", bjd: "drl", ccq: "rki", cjr: "mom", cka: "cmr", cmk: "xch", drh: "khk", drw: "prs", gav: "dev", hrr: "jal", ibi: "opa", kgh: "kml", lcq: "ppr", mst: "mry", myt: "mry", sca: "hle", tie: "ras", tkk: "twm", tlw: "weo", tnf: "prs", ybd: "rki", yma: "lrr" }, extLang: { aao: ["aao", "ar"], abh: ["abh", "ar"], abv: ["abv", "ar"], acm: ["acm", "ar"], acq: ["acq", "ar"], acw: ["acw", "ar"], acx: ["acx", "ar"], acy: ["acy", "ar"], adf: ["adf", "ar"], ads: ["ads", "sgn"], aeb: ["aeb", "ar"], aec: ["aec", "ar"], aed: ["aed", "sgn"], aen: ["aen", "sgn"], afb: ["afb", "ar"], afg: ["afg", "sgn"], ajp: ["ajp", "ar"], apc: ["apc", "ar"], apd: ["apd", "ar"], arb: ["arb", "ar"], arq: ["arq", "ar"], ars: ["ars", "ar"], ary: ["ary", "ar"], arz: ["arz", "ar"], ase: ["ase", "sgn"], asf: ["asf", "sgn"], asp: ["asp", "sgn"], asq: ["asq", "sgn"], asw: ["asw", "sgn"], auz: ["auz", "ar"], avl: ["avl", "ar"], ayh: ["ayh", "ar"], ayl: ["ayl", "ar"], ayn: ["ayn", "ar"], ayp: ["ayp", "ar"], bbz: ["bbz", "ar"], bfi: ["bfi", "sgn"], bfk: ["bfk", "sgn"], bjn: ["bjn", "ms"], bog: ["bog", "sgn"], bqn: ["bqn", "sgn"], bqy: ["bqy", "sgn"], btj: ["btj", "ms"], bve: ["bve", "ms"], bvl: ["bvl", "sgn"], bvu: ["bvu", "ms"], bzs: ["bzs", "sgn"], cdo: ["cdo", "zh"], cds: ["cds", "sgn"], cjy: ["cjy", "zh"], cmn: ["cmn", "zh"], coa: ["coa", "ms"], cpx: ["cpx", "zh"], csc: ["csc", "sgn"], csd: ["csd", "sgn"], cse: ["cse", "sgn"], csf: ["csf", "sgn"], csg: ["csg", "sgn"], csl: ["csl", "sgn"], csn: ["csn", "sgn"], csq: ["csq", "sgn"], csr: ["csr", "sgn"], czh: ["czh", "zh"], czo: ["czo", "zh"], doq: ["doq", "sgn"], dse: ["dse", "sgn"], dsl: ["dsl", "sgn"], dup: ["dup", "ms"], ecs: ["ecs", "sgn"], esl: ["esl", "sgn"], esn: ["esn", "sgn"], eso: ["eso", "sgn"], eth: ["eth", "sgn"], fcs: ["fcs", "sgn"], fse: ["fse", "sgn"], fsl: ["fsl", "sgn"], fss: ["fss", "sgn"], gan: ["gan", "zh"], gds: ["gds", "sgn"], gom: ["gom", "kok"], gse: ["gse", "sgn"], gsg: ["gsg", "sgn"], gsm: ["gsm", "sgn"], gss: ["gss", "sgn"], gus: ["gus", "sgn"], hab: ["hab", "sgn"], haf: ["haf", "sgn"], hak: ["hak", "zh"], hds: ["hds", "sgn"], hji: ["hji", "ms"], hks: ["hks", "sgn"], hos: ["hos", "sgn"], hps: ["hps", "sgn"], hsh: ["hsh", "sgn"], hsl: ["hsl", "sgn"], hsn: ["hsn", "zh"], icl: ["icl", "sgn"], ils: ["ils", "sgn"], inl: ["inl", "sgn"], ins: ["ins", "sgn"], ise: ["ise", "sgn"], isg: ["isg", "sgn"], isr: ["isr", "sgn"], jak: ["jak", "ms"], jax: ["jax", "ms"], jcs: ["jcs", "sgn"], jhs: ["jhs", "sgn"], jls: ["jls", "sgn"], jos: ["jos", "sgn"], jsl: ["jsl", "sgn"], jus: ["jus", "sgn"], kgi: ["kgi", "sgn"], knn: ["knn", "kok"], kvb: ["kvb", "ms"], kvk: ["kvk", "sgn"], kvr: ["kvr", "ms"], kxd: ["kxd", "ms"], lbs: ["lbs", "sgn"], lce: ["lce", "ms"], lcf: ["lcf", "ms"], liw: ["liw", "ms"], lls: ["lls", "sgn"], lsg: ["lsg", "sgn"], lsl: ["lsl", "sgn"], lso: ["lso", "sgn"], lsp: ["lsp", "sgn"], lst: ["lst", "sgn"], lsy: ["lsy", "sgn"], ltg: ["ltg", "lv"], lvs: ["lvs", "lv"], lzh: ["lzh", "zh"], max: ["max", "ms"], mdl: ["mdl", "sgn"], meo: ["meo", "ms"], mfa: ["mfa", "ms"], mfb: ["mfb", "ms"], mfs: ["mfs", "sgn"], min: ["min", "ms"], mnp: ["mnp", "zh"], mqg: ["mqg", "ms"], mre: ["mre", "sgn"], msd: ["msd", "sgn"], msi: ["msi", "ms"], msr: ["msr", "sgn"], mui: ["mui", "ms"], mzc: ["mzc", "sgn"], mzg: ["mzg", "sgn"], mzy: ["mzy", "sgn"], nan: ["nan", "zh"], nbs: ["nbs", "sgn"], ncs: ["ncs", "sgn"], nsi: ["nsi", "sgn"], nsl: ["nsl", "sgn"], nsp: ["nsp", "sgn"], nsr: ["nsr", "sgn"], nzs: ["nzs", "sgn"], okl: ["okl", "sgn"], orn: ["orn", "ms"], ors: ["ors", "ms"], pel: ["pel", "ms"], pga: ["pga", "ar"], pks: ["pks", "sgn"], prl: ["prl", "sgn"], prz: ["prz", "sgn"], psc: ["psc", "sgn"], psd: ["psd", "sgn"], pse: ["pse", "ms"], psg: ["psg", "sgn"], psl: ["psl", "sgn"], pso: ["pso", "sgn"], psp: ["psp", "sgn"], psr: ["psr", "sgn"], pys: ["pys", "sgn"], rms: ["rms", "sgn"], rsi: ["rsi", "sgn"], rsl: ["rsl", "sgn"], sdl: ["sdl", "sgn"], sfb: ["sfb", "sgn"], sfs: ["sfs", "sgn"], sgg: ["sgg", "sgn"], sgx: ["sgx", "sgn"], shu: ["shu", "ar"], slf: ["slf", "sgn"], sls: ["sls", "sgn"], sqk: ["sqk", "sgn"], sqs: ["sqs", "sgn"], ssh: ["ssh", "ar"], ssp: ["ssp", "sgn"], ssr: ["ssr", "sgn"], svk: ["svk", "sgn"], swc: ["swc", "sw"], swh: ["swh", "sw"], swl: ["swl", "sgn"], syy: ["syy", "sgn"], tmw: ["tmw", "ms"], tse: ["tse", "sgn"], tsm: ["tsm", "sgn"], tsq: ["tsq", "sgn"], tss: ["tss", "sgn"], tsy: ["tsy", "sgn"], tza: ["tza", "sgn"], ugn: ["ugn", "sgn"], ugy: ["ugy", "sgn"], ukl: ["ukl", "sgn"], uks: ["uks", "sgn"], urk: ["urk", "ms"], uzn: ["uzn", "uz"], uzs: ["uzs", "uz"], vgt: ["vgt", "sgn"], vkk: ["vkk", "ms"], vkt: ["vkt", "ms"], vsi: ["vsi", "sgn"], vsl: ["vsl", "sgn"], vsv: ["vsv", "sgn"], wuu: ["wuu", "zh"], xki: ["xki", "sgn"], xml: ["xml", "sgn"], xmm: ["xmm", "ms"], xms: ["xms", "sgn"], yds: ["yds", "sgn"], ysl: ["ysl", "sgn"], yue: ["yue", "zh"], zib: ["zib", "sgn"], zlm: ["zlm", "ms"], zmi: ["zmi", "ms"], zsl: ["zsl", "sgn"], zsm: ["zsm", "ms"] } }; /** * Convert only a-z to uppercase as per section 6.1 of the spec */ function toLatinUpperCase(str) { var i = str.length; while (i--) { var ch = str.charAt(i); if (ch >= "a" && ch <= "z") str = str.slice(0, i) + ch.toUpperCase() + str.slice(i + 1); } return str; } /** * The IsStructurallyValidLanguageTag abstract operation verifies that the locale * argument (which must be a String value) * * - represents a well-formed BCP 47 language tag as specified in RFC 5646 section * 2.1, or successor, * - does not include duplicate variant subtags, and * - does not include duplicate singleton subtags. * * The abstract operation returns true if locale can be generated from the ABNF * grammar in section 2.1 of the RFC, starting with Language-Tag, and does not * contain duplicate variant or singleton subtags (other than as a private use * subtag). It returns false otherwise. Terminal value characters in the grammar are * interpreted as the Unicode equivalents of the ASCII octet values given. */ function /* 6.2.2 */IsStructurallyValidLanguageTag(locale) { // represents a well-formed BCP 47 language tag as specified in RFC 5646 if (!expBCP47Syntax.test(locale)) return false; // does not include duplicate variant subtags, and if (expVariantDupes.test(locale)) return false; // does not include duplicate singleton subtags. if (expSingletonDupes.test(locale)) return false; return true; } /** * The CanonicalizeLanguageTag abstract operation returns the canonical and case- * regularized form of the locale argument (which must be a String value that is * a structurally valid BCP 47 language tag as verified by the * IsStructurallyValidLanguageTag abstract operation). It takes the steps * specified in RFC 5646 section 4.5, or successor, to bring the language tag * into canonical form, and to regularize the case of the subtags, but does not * take the steps to bring a language tag into “extlang form” and to reorder * variant subtags. * The specifications for extensions to BCP 47 language tags, such as RFC 6067, * may include canonicalization rules for the extension subtag sequences they * define that go beyond the canonicalization rules of RFC 5646 section 4.5. * Implementations are allowed, but not required, to apply these additional rules. */ function /* 6.2.3 */CanonicalizeLanguageTag(locale) { var match = void 0, parts = void 0; // A language tag is in 'canonical form' when the tag is well-formed // according to the rules in Sections 2.1 and 2.2 // Section 2.1 says all subtags use lowercase... locale = locale.toLowerCase(); // ...with 2 exceptions: 'two-letter and four-letter subtags that neither // appear at the start of the tag nor occur after singletons. Such two-letter // subtags are all uppercase (as in the tags "en-CA-x-ca" or "sgn-BE-FR") and // four-letter subtags are titlecase (as in the tag "az-Latn-x-latn"). parts = locale.split('-'); for (var i = 1, max = parts.length; i < max; i++) { // Two-letter subtags are all uppercase if (parts[i].length === 2) parts[i] = parts[i].toUpperCase(); // Four-letter subtags are titlecase else if (parts[i].length === 4) parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1); // Is it a singleton? else if (parts[i].length === 1 && parts[i] !== 'x') break; } locale = arrJoin.call(parts, '-'); // The steps laid out in RFC 5646 section 4.5 are as follows: // 1. Extension sequences are ordered into case-insensitive ASCII order // by singleton subtag. if ((match = locale.match(expExtSequences)) && match.length > 1) { // The built-in sort() sorts by ASCII order, so use that match.sort(); // Replace all extensions with the joined, sorted array locale = locale.replace(RegExp('(?:' + expExtSequences.source + ')+', 'i'), arrJoin.call(match, '')); } // 2. Redundant or grandfathered tags are replaced by their 'Preferred- // Value', if there is one. if (hop.call(redundantTags.tags, locale)) locale = redundantTags.tags[locale]; // 3. Subtags are replaced by their 'Preferred-Value', if there is one. // For extlangs, the original primary language subtag is also // replaced if there is a primary language subtag in the 'Preferred- // Value'. parts = locale.split('-'); for (var _i = 1, _max = parts.length; _i < _max; _i++) { if (hop.call(redundantTags.subtags, parts[_i])) parts[_i] = redundantTags.subtags[parts[_i]];else if (hop.call(redundantTags.extLang, parts[_i])) { parts[_i] = redundantTags.extLang[parts[_i]][0]; // For extlang tags, the prefix needs to be removed if it is redundant if (_i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) { parts = arrSlice.call(parts, _i++); _max -= 1; } } } return arrJoin.call(parts, '-'); } /** * The DefaultLocale abstract operation returns a String value representing the * structurally valid (6.2.2) and canonicalized (6.2.3) BCP 47 language tag for the * host environment’s current locale. */ function /* 6.2.4 */DefaultLocale() { return defaultLocale; } // Sect 6.3 Currency Codes // ======================= var expCurrencyCode = /^[A-Z]{3}$/; /** * The IsWellFormedCurrencyCode abstract operation verifies that the currency argument * (after conversion to a String value) represents a well-formed 3-letter ISO currency * code. The following steps are taken: */ function /* 6.3.1 */IsWellFormedCurrencyCode(currency) { // 1. Let `c` be ToString(currency) var c = String(currency); // 2. Let `normalized` be the result of mapping c to upper case as described // in 6.1. var normalized = toLatinUpperCase(c); // 3. If the string length of normalized is not 3, return false. // 4. If normalized contains any character that is not in the range "A" to "Z" // (U+0041 to U+005A), return false. if (expCurrencyCode.test(normalized) === false) return false; // 5. Return true return true; } var expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi; // See `extension` below function /* 9.2.1 */CanonicalizeLocaleList(locales) { // The abstract operation CanonicalizeLocaleList takes the following steps: // 1. If locales is undefined, then a. Return a new empty List if (locales === undefined) return new List(); // 2. Let seen be a new empty List. var seen = new List(); // 3. If locales is a String value, then // a. Let locales be a new array created as if by the expression new // Array(locales) where Array is the standard built-in constructor with // that name and locales is the value of locales. locales = typeof locales === 'string' ? [locales] : locales; // 4. Let O be ToObject(locales). var O = toObject(locales); // 5. Let lenValue be the result of calling the [[Get]] internal method of // O with the argument "length". // 6. Let len be ToUint32(lenValue). var len = toLength(O.length); // 7. Let k be 0. var k = 0; // 8. Repeat, while k < len while (k < len) { // a. Let Pk be ToString(k). var Pk = String(k); // b. Let kPresent be the result of calling the [[HasProperty]] internal // method of O with argument Pk. var kPresent = Pk in O; // c. If kPresent is true, then if (kPresent) { // i. Let kValue be the result of calling the [[Get]] internal // method of O with argument Pk. var kValue = O[Pk]; // ii. If the type of kValue is not String or Object, then throw a // TypeError exception. if (kValue === null || typeof kValue !== 'string' && (typeof kValue === "undefined" ? "undefined" : babelHelpers$1["typeof"](kValue)) !== 'object') throw new TypeError('String or Object type expected'); // iii. Let tag be ToString(kValue). var tag = String(kValue); // iv. If the result of calling the abstract operation // IsStructurallyValidLanguageTag (defined in 6.2.2), passing tag as // the argument, is false, then throw a RangeError exception. if (!IsStructurallyValidLanguageTag(tag)) throw new RangeError("'" + tag + "' is not a structurally valid language tag"); // v. Let tag be the result of calling the abstract operation // CanonicalizeLanguageTag (defined in 6.2.3), passing tag as the // argument. tag = CanonicalizeLanguageTag(tag); // vi. If tag is not an element of seen, then append tag as the last // element of seen. if (arrIndexOf.call(seen, tag) === -1) arrPush.call(seen, tag); } // d. Increase k by 1. k++; } // 9. Return seen. return seen; } /** * The BestAvailableLocale abstract operation compares the provided argument * locale, which must be a String value with a structurally valid and * canonicalized BCP 47 language tag, against the locales in availableLocales and * returns either the longest non-empty prefix of locale that is an element of * availableLocales, or undefined if there is no such element. It uses the * fallback mechanism of RFC 4647, section 3.4. The following steps are taken: */ function /* 9.2.2 */BestAvailableLocale(availableLocales, locale) { // 1. Let candidate be locale var candidate = locale; // 2. Repeat while (candidate) { // a. If availableLocales contains an element equal to candidate, then return // candidate. if (arrIndexOf.call(availableLocales, candidate) > -1) return candidate; // b. Let pos be the character index of the last occurrence of "-" // (U+002D) within candidate. If that character does not occur, return // undefined. var pos = candidate.lastIndexOf('-'); if (pos < 0) return; // c. If pos ≥ 2 and the character "-" occurs at index pos-2 of candidate, // then decrease pos by 2. if (pos >= 2 && candidate.charAt(pos - 2) === '-') pos -= 2; // d. Let candidate be the substring of candidate from position 0, inclusive, // to position pos, exclusive. candidate = candidate.substring(0, pos); } } /** * The LookupMatcher abstract operation compares requestedLocales, which must be * a List as returned by CanonicalizeLocaleList, against the locales in * availableLocales and determines the best available language to meet the * request. The following steps are taken: */ function /* 9.2.3 */LookupMatcher(availableLocales, requestedLocales) { // 1. Let i be 0. var i = 0; // 2. Let len be the number of elements in requestedLocales. var len = requestedLocales.length; // 3. Let availableLocale be undefined. var availableLocale = void 0; var locale = void 0, noExtensionsLocale = void 0; // 4. Repeat while i < len and availableLocale is undefined: while (i < len && !availableLocale) { // a. Let locale be the element of requestedLocales at 0-origined list // position i. locale = requestedLocales[i]; // b. Let noExtensionsLocale be the String value that is locale with all // Unicode locale extension sequences removed. noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''); // c. Let availableLocale be the result of calling the // BestAvailableLocale abstract operation (defined in 9.2.2) with // arguments availableLocales and noExtensionsLocale. availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale); // d. Increase i by 1. i++; } // 5. Let result be a new Record. var result = new Record(); // 6. If availableLocale is not undefined, then if (availableLocale !== undefined) { // a. Set result.[[locale]] to availableLocale. result['[[locale]]'] = availableLocale; // b. If locale and noExtensionsLocale are not the same String value, then if (String(locale) !== String(noExtensionsLocale)) { // i. Let extension be the String value consisting of the first // substring of locale that is a Unicode locale extension sequence. var extension = locale.match(expUnicodeExSeq)[0]; // ii. Let extensionIndex be the character position of the initial // "-" of the first Unicode locale extension sequence within locale. var extensionIndex = locale.indexOf('-u-'); // iii. Set result.[[extension]] to extension. result['[[extension]]'] = extension; // iv. Set result.[[extensionIndex]] to extensionIndex. result['[[extensionIndex]]'] = extensionIndex; } } // 7. Else else // a. Set result.[[locale]] to the value returned by the DefaultLocale abstract // operation (defined in 6.2.4). result['[[locale]]'] = DefaultLocale(); // 8. Return result return result; } /** * The BestFitMatcher abstract operation compares requestedLocales, which must be * a List as returned by CanonicalizeLocaleList, against the locales in * availableLocales and determines the best available language to meet the * request. The algorithm is implementation dependent, but should produce results * that a typical user of the requested locales would perceive as at least as * good as those produced by the LookupMatcher abstract operation. Options * specified through Unicode locale extension sequences must be ignored by the * algorithm. Information about such subsequences is returned separately. * The abstract operation returns a record with a [[locale]] field, whose value * is the language tag of the selected locale, which must be an element of * availableLocales. If the language tag of the request locale that led to the * selected locale contained a Unicode locale extension sequence, then the * returned record also contains an [[extension]] field whose value is the first * Unicode locale extension sequence, and an [[extensionIndex]] field whose value * is the index of the first Unicode locale extension sequence within the request * locale language tag. */ function /* 9.2.4 */BestFitMatcher(availableLocales, requestedLocales) { return LookupMatcher(availableLocales, requestedLocales); } /** * The ResolveLocale abstract operation compares a BCP 47 language priority list * requestedLocales against the locales in availableLocales and determines the * best available language to meet the request. availableLocales and * requestedLocales must be provided as List values, options as a Record. */ function /* 9.2.5 */ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) { if (availableLocales.length === 0) { throw new ReferenceError('No locale data has been provided for this object yet.'); } // The following steps are taken: // 1. Let matcher be the value of options.[[localeMatcher]]. var matcher = options['[[localeMatcher]]']; var r = void 0; // 2. If matcher is "lookup", then if (matcher === 'lookup') // a. Let r be the result of calling the LookupMatcher abstract operation // (defined in 9.2.3) with arguments availableLocales and // requestedLocales. r = LookupMatcher(availableLocales, requestedLocales); // 3. Else else // a. Let r be the result of calling the BestFitMatcher abstract // operation (defined in 9.2.4) with arguments availableLocales and // requestedLocales. r = BestFitMatcher(availableLocales, requestedLocales); // 4. Let foundLocale be the value of r.[[locale]]. var foundLocale = r['[[locale]]']; var extensionSubtags = void 0, extensionSubtagsLength = void 0; // 5. If r has an [[extension]] field, then if (hop.call(r, '[[extension]]')) { // a. Let extension be the value of r.[[extension]]. var extension = r['[[extension]]']; // b. Let split be the standard built-in function object defined in ES5, // 15.5.4.14. var split = String.prototype.split; // c. Let extensionSubtags be the result of calling the [[Call]] internal // method of split with extension as the this value and an argument // list containing the single item "-". extensionSubtags = split.call(extension, '-'); // d. Let extensionSubtagsLength be the result of calling the [[Get]] // internal method of extensionSubtags with argument "length". extensionSubtagsLength = extensionSubtags.length; } // 6. Let result be a new Record. var result = new Record(); // 7. Set result.[[dataLocale]] to foundLocale. result['[[dataLocale]]'] = foundLocale; // 8. Let supportedExtension be "-u". var supportedExtension = '-u'; // 9. Let i be 0. var i = 0; // 10. Let len be the result of calling the [[Get]] internal method of // relevantExtensionKeys with argument "length". var len = relevantExtensionKeys.length; // 11 Repeat while i < len: while (i < len) { // a. Let key be the result of calling the [[Get]] internal method of // relevantExtensionKeys with argument ToString(i). var key = relevantExtensionKeys[i]; // b. Let foundLocaleData be the result of calling the [[Get]] internal // method of localeData with the argument foundLocale. var foundLocaleData = localeData[foundLocale]; // c. Let keyLocaleData be the result of calling the [[Get]] internal // method of foundLocaleData with the argument key. var keyLocaleData = foundLocaleData[key]; // d. Let value be the result of calling the [[Get]] internal method of // keyLocaleData with argument "0". var value = keyLocaleData['0']; // e. Let supportedExtensionAddition be "". var supportedExtensionAddition = ''; // f. Let indexOf be the standard built-in function object defined in // ES5, 15.4.4.14. var indexOf = arrIndexOf; // g. If extensionSubtags is not undefined, then if (extensionSubtags !== undefined) { // i. Let keyPos be the result of calling the [[Call]] internal // method of indexOf with extensionSubtags as the this value and // an argument list containing the single item key. var keyPos = indexOf.call(extensionSubtags, key); // ii. If keyPos ≠ -1, then if (keyPos !== -1) { // 1. If keyPos + 1 < extensionSubtagsLength and the length of the // result of calling the [[Get]] internal method of // extensionSubtags with argument ToString(keyPos +1) is greater // than 2, then if (keyPos + 1 < extensionSubtagsLength && extensionSubtags[keyPos + 1].length > 2) { // a. Let requestedValue be the result of calling the [[Get]] // internal method of extensionSubtags with argument // ToString(keyPos + 1). var requestedValue = extensionSubtags[keyPos + 1]; // b. Let valuePos be the result of calling the [[Call]] // internal method of indexOf with keyLocaleData as the // this value and an argument list containing the single // item requestedValue. var valuePos = indexOf.call(keyLocaleData, requestedValue); // c. If valuePos ≠ -1, then if (valuePos !== -1) { // i. Let value be requestedValue. value = requestedValue, // ii. Let supportedExtensionAddition be the // concatenation of "-", key, "-", and value. supportedExtensionAddition = '-' + key + '-' + value; } } // 2. Else else { // a. Let valuePos be the result of calling the [[Call]] // internal method of indexOf with keyLocaleData as the this // value and an argument list containing the single item // "true". var _valuePos = indexOf(keyLocaleData, 'true'); // b. If valuePos ≠ -1, then if (_valuePos !== -1) // i. Let value be "true". value = 'true'; } } } // h. If options has a field [[<key>]], then if (hop.call(options, '[[' + key + ']]')) { // i. Let optionsValue be the value of options.[[<key>]]. var optionsValue = options['[[' + key + ']]']; // ii. If the result of calling the [[Call]] internal method of indexOf // with keyLocaleData as the this value and an argument list // containing the single item optionsValue is not -1, then if (indexOf.call(keyLocaleData, optionsValue) !== -1) { // 1. If optionsValue is not equal to value, then if (optionsValue !== value) { // a. Let value be optionsValue. value = optionsValue; // b. Let supportedExtensionAddition be "". supportedExtensionAddition = ''; } } } // i. Set result.[[<key>]] to value. result['[[' + key + ']]'] = value; // j. Append supportedExtensionAddition to supportedExtension. supportedExtension += supportedExtensionAddition; // k. Increase i by 1. i++; } // 12. If the length of supportedExtension is greater than 2, then if (supportedExtension.length > 2) { // a. var privateIndex = foundLocale.indexOf("-x-"); // b. if (privateIndex === -1) { // i. foundLocale = foundLocale + supportedExtension; } // c. else { // i. var preExtension = foundLocale.substring(0, privateIndex); // ii. var postExtension = foundLocale.substring(privateIndex); // iii. foundLocale = preExtension + supportedExtension + postExtension; } // d. asserting - skipping // e. foundLocale = CanonicalizeLanguageTag(foundLocale); } // 13. Set result.[[locale]] to foundLocale. result['[[locale]]'] = foundLocale; // 14. Return result. return result; } /** * The LookupSupportedLocales abstract operation returns the subset of the * provided BCP 47 language priority list requestedLocales for which * availableLocales has a matching locale when using the BCP 47 Lookup algorithm. * Locales appear in the same order in the returned list as in requestedLocales. * The following steps are taken: */ function /* 9.2.6 */LookupSupportedLocales(availableLocales, requestedLocales) { // 1. Let len be the number of elements in requestedLocales. var len = requestedLocales.length; // 2. Let subset be a new empty List. var subset = new List(); // 3. Let k be 0. var k = 0; // 4. Repeat while k < len while (k < len) { // a. Let locale be the element of requestedLocales at 0-origined list // position k. var locale = requestedLocales[k]; // b. Let noExtensionsLocale be the String value that is locale with all // Unicode locale extension sequences removed. var noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''); // c. Let availableLocale be the result of calling the // BestAvailableLocale abstract operation (defined in 9.2.2) with // arguments availableLocales and noExtensionsLocale. var availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale); // d. If availableLocale is not undefined, then append locale to the end of // subset. if (availableLocale !== undefined) arrPush.call(subset, locale); // e. Increment k by 1. k++; } // 5. Let subsetArray be a new Array object whose elements are the same // values in the same order as the elements of subset. var subsetArray = arrSlice.call(subset); // 6. Return subsetArray. return subsetArray; } /** * The BestFitSupportedLocales abstract operation returns the subset of the * provided BCP 47 language priority list requestedLocales for which * availableLocales has a matching locale when using the Best Fit Matcher * algorithm. Locales appear in the same order in the returned list as in * requestedLocales. The steps taken are implementation dependent. */ function /*9.2.7 */BestFitSupportedLocales(availableLocales, requestedLocales) { // ###TODO: implement this function as described by the specification### return LookupSupportedLocales(availableLocales, requestedLocales); } /** * The SupportedLocales abstract operation returns the subset of the provided BCP * 47 language priority list requestedLocales for which availableLocales has a * matching locale. Two algorithms are available to match the locales: the Lookup * algorithm described in RFC 4647 section 3.4, and an implementation dependent * best-fit algorithm. Locales appear in the same order in the returned list as * in requestedLocales. The following steps are taken: */ function /*9.2.8 */SupportedLocales(availableLocales, requestedLocales, options) { var matcher = void 0, subset = void 0; // 1. If options is not undefined, then if (options !== undefined) { // a. Let options be ToObject(options). options = new Record(toObject(options)); // b. Let matcher be the result of calling the [[Get]] internal method of // options with argument "localeMatcher". matcher = options.localeMatcher; // c. If matcher is not undefined, then if (matcher !== undefined) { // i. Let matcher be ToString(matcher). matcher = String(matcher); // ii. If matcher is not "lookup" or "best fit", then throw a RangeError // exception. if (matcher !== 'lookup' && matcher !== 'best fit') throw new RangeError('matcher should be "lookup" or "best fit"'); } } // 2. If matcher is undefined or "best fit", then if (matcher === undefined || matcher === 'best fit') // a. Let subset be the result of calling the BestFitSupportedLocales // abstract operation (defined in 9.2.7) with arguments // availableLocales and requestedLocales. subset = BestFitSupportedLocales(availableLocales, requestedLocales); // 3. Else else // a. Let subset be the result of calling the LookupSupportedLocales // abstract operation (defined in 9.2.6) with arguments // availableLocales and requestedLocales. subset = LookupSupportedLocales(availableLocales, requestedLocales); // 4. For each named own property name P of subset, for (var P in subset) { if (!hop.call(subset, P)) continue; // a. Let desc be the result of calling the [[GetOwnProperty]] internal // method of subset with P. // b. Set desc.[[Writable]] to false. // c. Set desc.[[Configurable]] to false. // d. Call the [[DefineOwnProperty]] internal method of subset with P, desc, // and true as arguments. defineProperty(subset, P, { writable: false, configurable: false, value: subset[P] }); } // "Freeze" the array so no new elements can be added defineProperty(subset, 'length', { writable: false }); // 5. Return subset return subset; } /** * The GetOption abstract operation extracts the value of the property named * property from the provided options object, converts it to the required type, * checks whether it is one of a List of allowed values, and fills in a fallback * value if necessary. */ function /*9.2.9 */GetOption(options, property, type, values, fallback) { // 1. Let value be the result of calling the [[Get]] internal method of // options with argument property. var value = options[property]; // 2. If value is not undefined, then if (value !== undefined) { // a. Assert: type is "boolean" or "string". // b. If type is "boolean", then let value be ToBoolean(value). // c. If type is "string", then let value be ToString(value). value = type === 'boolean' ? Boolean(value) : type === 'string' ? String(value) : value; // d. If values is not undefined, then if (values !== undefined) { // i. If values does not contain an element equal to value, then throw a // RangeError exception. if (arrIndexOf.call(values, value) === -1) throw new RangeError("'" + value + "' is not an allowed value for `" + property + '`'); } // e. Return value. return value; } // Else return fallback. return fallback; } /** * The GetNumberOption abstract operation extracts a property value from the * provided options object, converts it to a Number value, checks whether it is * in the allowed range, and fills in a fallback value if necessary. */ function /* 9.2.10 */GetNumberOption(options, property, minimum, maximum, fallback) { // 1. Let value be the result of calling the [[Get]] internal method of // options with argument property. var value = options[property]; // 2. If value is not undefined, then if (value !== undefined) { // a. Let value be ToNumber(value). value = Number(value); // b. If value is NaN or less than minimum or greater than maximum, throw a // RangeError exception. if (isNaN(value) || value < minimum || value > maximum) throw new RangeError('Value is not a number or outside accepted range'); // c. Return floor(value). return Math.floor(value); } // 3. Else return fallback. return fallback; } // 8 The Intl Object var Intl = {}; // 8.2 Function Properties of the Intl Object // 8.2.1 // @spec[tc39/ecma402/master/spec/intl.html] // @clause[sec-intl.getcanonicallocales] function getCanonicalLocales(locales) { // 1. Let ll be ? CanonicalizeLocaleList(locales). var ll = CanonicalizeLocaleList(locales); // 2. Return CreateArrayFromList(ll). { var result = []; var len = ll.length; var k = 0; while (k < len) { result[k] = ll[k]; k++; } return result; } } Object.defineProperty(Intl, 'getCanonicalLocales', { enumerable: false, configurable: true, writable: true, value: getCanonicalLocales }); // Currency minor units output from get-4217 grunt task, formatted var currencyMinorUnits = { BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0, XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3, OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0 }; // Define the NumberFormat constructor internally so it cannot be tainted function NumberFormatConstructor() { var locales = arguments[0]; var options = arguments[1]; if (!this || this === Intl) { return new Intl.NumberFormat(locales, options); } return InitializeNumberFormat(toObject(this), locales, options); } defineProperty(Intl, 'NumberFormat', { configurable: true, writable: true, value: NumberFormatConstructor }); // Must explicitly set prototypes as unwritable defineProperty(Intl.NumberFormat, 'prototype', { writable: false }); /** * The abstract operation InitializeNumberFormat accepts the arguments * numberFormat (which must be an object), locales, and options. It initializes * numberFormat as a NumberFormat object. */ function /*11.1.1.1 */InitializeNumberFormat(numberFormat, locales, options) { // This will be a internal properties object if we're not already initialized var internal = getInternalProperties(numberFormat); // Create an object whose props can be used to restore the values of RegExp props var regexpRestore = createRegExpRestore(); // 1. If numberFormat has an [[initializedIntlObject]] internal property with // value true, throw a TypeError exception. if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object'); // Need this to access the `internal` object defineProperty(numberFormat, '__getInternalProperties', { value: function value() { // NOTE: Non-standard, for internal use only if (arguments[0] === secret) return internal; } }); // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true. internal['[[initializedIntlObject]]'] = true; // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList // abstract operation (defined in 9.2.1) with argument locales. var requestedLocales = CanonicalizeLocaleList(locales); // 4. If options is undefined, then if (options === undefined) // a. Let options be the result of creating a new object as if by the // expression new Object() where Object is the standard built-in constructor // with that name. options = {}; // 5. Else else // a. Let options be ToObject(options). options = toObject(options); // 6. Let opt be a new Record. var opt = new Record(), // 7. Let matcher be the result of calling the GetOption abstract operation // (defined in 9.2.9) with the arguments options, "localeMatcher", "string", // a List containing the two String values "lookup" and "best fit", and // "best fit". matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit'); // 8. Set opt.[[localeMatcher]] to matcher. opt['[[localeMatcher]]'] = matcher; // 9. Let NumberFormat be the standard built-in object that is the initial value // of Intl.NumberFormat. // 10. Let localeData be the value of the [[localeData]] internal property of // NumberFormat. var localeData = internals.NumberFormat['[[localeData]]']; // 11. Let r be the result of calling the ResolveLocale abstract operation // (defined in 9.2.5) with the [[availableLocales]] internal property of // NumberFormat, requestedLocales, opt, the [[relevantExtensionKeys]] // internal property of NumberFormat, and localeData. var r = ResolveLocale(internals.NumberFormat['[[availableLocales]]'], requestedLocales, opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData); // 12. Set the [[locale]] internal property of numberFormat to the value of // r.[[locale]]. internal['[[locale]]'] = r['[[locale]]']; // 13. Set the [[numberingSystem]] internal property of numberFormat to the value // of r.[[nu]]. internal['[[numberingSystem]]'] = r['[[nu]]']; // The specification doesn't tell us to do this, but it's helpful later on internal['[[dataLocale]]'] = r['[[dataLocale]]']; // 14. Let dataLocale be the value of r.[[dataLocale]]. var dataLocale = r['[[dataLocale]]']; // 15. Let s be the result of calling the GetOption abstract operation with the // arguments options, "style", "string", a List containing the three String // values "decimal", "percent", and "currency", and "decimal". var s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal'); // 16. Set the [[style]] internal property of numberFormat to s. internal['[[style]]'] = s; // 17. Let c be the result of calling the GetOption abstract operation with the // arguments options, "currency", "string", undefined, and undefined. var c = GetOption(options, 'currency', 'string'); // 18. If c is not undefined and the result of calling the // IsWellFormedCurrencyCode abstract operation (defined in 6.3.1) with // argument c is false, then throw a RangeError exception. if (c !== undefined && !IsWellFormedCurrencyCode(c)) throw new RangeError("'" + c + "' is not a valid currency code"); // 19. If s is "currency" and c is undefined, throw a TypeError exception. if (s === 'currency' && c === undefined) throw new TypeError('Currency code is required when style is currency'); var cDigits = void 0; // 20. If s is "currency", then if (s === 'currency') { // a. Let c be the result of converting c to upper case as specified in 6.1. c = c.toUpperCase(); // b. Set the [[currency]] internal property of numberFormat to c. internal['[[currency]]'] = c; // c. Let cDigits be the result of calling the CurrencyDigits abstract // operation (defined below) with argument c. cDigits = CurrencyDigits(c); } // 21. Let cd be the result of calling the GetOption abstract operation with the // arguments options, "currencyDisplay", "string", a List containing the // three String values "code", "symbol", and "name", and "symbol". var cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol'); // 22. If s is "currency", then set the [[currencyDisplay]] internal property of // numberFormat to cd. if (s === 'currency') internal['[[currencyDisplay]]'] = cd; // 23. Let mnid be the result of calling the GetNumberOption abstract operation // (defined in 9.2.10) with arguments options, "minimumIntegerDigits", 1, 21, // and 1. var mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1); // 24. Set the [[minimumIntegerDigits]] internal property of numberFormat to mnid. internal['[[minimumIntegerDigits]]'] = mnid; // 25. If s is "currency", then let mnfdDefault be cDigits; else let mnfdDefault // be 0. var mnfdDefault = s === 'currency' ? cDigits : 0; // 26. Let mnfd be the result of calling the GetNumberOption abstract operation // with arguments options, "minimumFractionDigits", 0, 20, and mnfdDefault. var mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault); // 27. Set the [[minimumFractionDigits]] internal property of numberFormat to mnfd. internal['[[minimumFractionDigits]]'] = mnfd; // 28. If s is "currency", then let mxfdDefault be max(mnfd, cDigits); else if s // is "percent", then let mxfdDefault be max(mnfd, 0); else let mxfdDefault // be max(mnfd, 3). var mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits) : s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3); // 29. Let mxfd be the result of calling the GetNumberOption abstract operation // with arguments options, "maximumFractionDigits", mnfd, 20, and mxfdDefault. var mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault); // 30. Set the [[maximumFractionDigits]] internal property of numberFormat to mxfd. internal['[[maximumFractionDigits]]'] = mxfd; // 31. Let mnsd be the result of calling the [[Get]] internal method of options // with argument "minimumSignificantDigits". var mnsd = options.minimumSignificantDigits; // 32. Let mxsd be the result of calling the [[Get]] internal method of options // with argument "maximumSignificantDigits". var mxsd = options.maximumSignificantDigits; // 33. If mnsd is not undefined or mxsd is not undefined, then: if (mnsd !== undefined || mxsd !== undefined) { // a. Let mnsd be the result of calling the GetNumberOption abstract // operation with arguments options, "minimumSignificantDigits", 1, 21, // and 1. mnsd = GetNumberOption(options, 'minimumSignificantDigits', 1, 21, 1); // b. Let mxsd be the result of calling the GetNumberOption abstract // operation with arguments options, "maximumSignificantDigits", mnsd, // 21, and 21. mxsd = GetNumberOption(options, 'maximumSignificantDigits', mnsd, 21, 21); // c. Set the [[minimumSignificantDigits]] internal property of numberFormat // to mnsd, and the [[maximumSignificantDigits]] internal property of // numberFormat to mxsd. internal['[[minimumSignificantDigits]]'] = mnsd; internal['[[maximumSignificantDigits]]'] = mxsd; } // 34. Let g be the result of calling the GetOption abstract operation with the // arguments options, "useGrouping", "boolean", undefined, and true. var g = GetOption(options, 'useGrouping', 'boolean', undefined, true); // 35. Set the [[useGrouping]] internal property of numberFormat to g. internal['[[useGrouping]]'] = g; // 36. Let dataLocaleData be the result of calling the [[Get]] internal method of // localeData with argument dataLocale. var dataLocaleData = localeData[dataLocale]; // 37. Let patterns be the result of calling the [[Get]] internal method of // dataLocaleData with argument "patterns". var patterns = dataLocaleData.patterns; // 38. Assert: patterns is an object (see 11.2.3) // 39. Let stylePatterns be the result of calling the [[Get]] internal method of // patterns with argument s. var stylePatterns = patterns[s]; // 40. Set the [[positivePattern]] internal property of numberFormat to the // result of calling the [[Get]] internal method of stylePatterns with the // argument "positivePattern". internal['[[positivePattern]]'] = stylePatterns.positivePattern; // 41. Set the [[negativePattern]] internal property of numberFormat to the // result of calling the [[Get]] internal method of stylePatterns with the // argument "negativePattern". internal['[[negativePattern]]'] = stylePatterns.negativePattern; // 42. Set the [[boundFormat]] internal property of numberFormat to undefined. internal['[[boundFormat]]'] = undefined; // 43. Set the [[initializedNumberFormat]] internal property of numberFormat to // true. internal['[[initializedNumberFormat]]'] = true; // In ES3, we need to pre-bind the format() function if (es3) numberFormat.format = GetFormatNumber.call(numberFormat); // Restore the RegExp properties regexpRestore(); // Return the newly initialised object return numberFormat; } function CurrencyDigits(currency) { // When the CurrencyDigits abstract operation is called with an argument currency // (which must be an upper case String value), the following steps are taken: // 1. If the ISO 4217 currency and funds code list contains currency as an // alphabetic code, then return the minor unit value corresponding to the // currency from the list; else return 2. return currencyMinorUnits[currency] !== undefined ? currencyMinorUnits[currency] : 2; } /* 11.2.3 */internals.NumberFormat = { '[[availableLocales]]': [], '[[relevantExtensionKeys]]': ['nu'], '[[localeData]]': {} }; /** * When the supportedLocalesOf method of Intl.NumberFormat is called, the * following steps are taken: */ /* 11.2.2 */ defineProperty(Intl.NumberFormat, 'supportedLocalesOf', { configurable: true, writable: true, value: fnBind.call(function (locales) { // Bound functions only have the `this` value altered if being used as a constructor, // this lets us imitate a native function that has no constructor if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor'); // Create an object whose props can be used to restore the values of RegExp props var regexpRestore = createRegExpRestore(), // 1. If options is not provided, then let options be undefined. options = arguments[1], // 2. Let availableLocales be the value of the [[availableLocales]] internal // property of the standard built-in object that is the initial value of // Intl.NumberFormat. availableLocales = this['[[availableLocales]]'], // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList // abstract operation (defined in 9.2.1) with argument locales. requestedLocales = CanonicalizeLocaleList(locales); // Restore the RegExp properties regexpRestore(); // 4. Return the result of calling the SupportedLocales abstract operation // (defined in 9.2.8) with arguments availableLocales, requestedLocales, // and options. return SupportedLocales(availableLocales, requestedLocales, options); }, internals.NumberFormat) }); /** * This named accessor property returns a function that formats a number * according to the effective locale and the formatting options of this * NumberFormat object. */ /* 11.3.2 */defineProperty(Intl.NumberFormat.prototype, 'format', { configurable: true, get: GetFormatNumber }); function GetFormatNumber() { var internal = this !== null && babelHelpers$1["typeof"](this) === 'object' && getInternalProperties(this); // Satisfy test 11.3_b if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.'); // The value of the [[Get]] attribute is a function that takes the following // steps: // 1. If the [[boundFormat]] internal property of this NumberFormat object // is undefined, then: if (internal['[[boundFormat]]'] === undefined) { // a. Let F be a Function object, with internal properties set as // specified for built-in functions in ES5, 15, or successor, and the // length property set to 1, that takes the argument value and // performs the following steps: var F = function F(value) { // i. If value is not provided, then let value be undefined. // ii. Let x be ToNumber(value). // iii. Return the result of calling the FormatNumber abstract // operation (defined below) with arguments this and x. return FormatNumber(this, /* x = */Number(value)); }; // b. Let bind be the standard built-in function object defined in ES5, // 15.3.4.5. // c. Let bf be the result of calling the [[Call]] internal method of // bind with F as the this value and an argument list containing // the single item this. var bf = fnBind.call(F, this); // d. Set the [[boundFormat]] internal property of this NumberFormat // object to bf. internal['[[boundFormat]]'] = bf; } // Return the value of the [[boundFormat]] internal property of this // NumberFormat object. return internal['[[boundFormat]]']; } function formatToParts() { var value = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0]; var internal = this !== null && babelHelpers$1["typeof"](this) === 'object' && getInternalProperties(this); if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.NumberFormat object.'); var x = Number(value); return FormatNumberToParts(this, x); } Object.defineProperty(Intl.NumberFormat.prototype, 'formatToParts', { configurable: true, enumerable: false, writable: true, value: formatToParts }); /* * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html] * @clause[sec-formatnumbertoparts] */ function FormatNumberToParts(numberFormat, x) { // 1. Let parts be ? PartitionNumberPattern(numberFormat, x). var parts = PartitionNumberPattern(numberFormat, x); // 2. Let result be ArrayCreate(0). var result = []; // 3. Let n be 0. var n = 0; // 4. For each part in parts, do: for (var i = 0; parts.length > i; i++) { var part = parts[i]; // a. Let O be ObjectCreate(%ObjectPrototype%). var O = {}; // a. Perform ? CreateDataPropertyOrThrow(O, "type", part.[[type]]). O.type = part['[[type]]']; // a. Perform ? CreateDataPropertyOrThrow(O, "value", part.[[value]]). O.value = part['[[value]]']; // a. Perform ? CreateDataPropertyOrThrow(result, ? ToString(n), O). result[n] = O; // a. Increment n by 1. n += 1; } // 5. Return result. return result; } /* * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html] * @clause[sec-partitionnumberpattern] */ function PartitionNumberPattern(numberFormat, x) { var internal = getInternalProperties(numberFormat), locale = internal['[[dataLocale]]'], nums = internal['[[numberingSystem]]'], data = internals.NumberFormat['[[localeData]]'][locale], ild = data.symbols[nums] || data.symbols.latn, pattern = void 0; // 1. If x is not NaN and x < 0, then: if (!isNaN(x) && x < 0) { // a. Let x be -x. x = -x; // a. Let pattern be the value of numberFormat.[[negativePattern]]. pattern = internal['[[negativePattern]]']; } // 2. Else, else { // a. Let pattern be the value of numberFormat.[[positivePattern]]. pattern = internal['[[positivePattern]]']; } // 3. Let result be a new empty List. var result = new List(); // 4. Let beginIndex be Call(%StringProto_indexOf%, pattern, "{", 0). var beginIndex = pattern.indexOf('{', 0); // 5. Let endIndex be 0. var endIndex = 0; // 6. Let nextIndex be 0. var nextIndex = 0; // 7. Let length be the number of code units in pattern. var length = pattern.length; // 8. Repeat while beginIndex is an integer index into pattern: while (beginIndex > -1 && beginIndex < length) { // a. Set endIndex to Call(%StringProto_indexOf%, pattern, "}", beginIndex) endIndex = pattern.indexOf('}', beginIndex); // a. If endIndex = -1, throw new Error exception. if (endIndex === -1) throw new Error(); // a. If beginIndex is greater than nextIndex, then: if (beginIndex > nextIndex) { // i. Let literal be a substring of pattern from position nextIndex, inclusive, to position beginIndex, exclusive. var literal = pattern.substring(nextIndex, beginIndex); // ii. Add new part record { [[type]]: "literal", [[value]]: literal } as a new element of the list result. arrPush.call(result, { '[[type]]': 'literal', '[[value]]': literal }); } // a. Let p be the substring of pattern from position beginIndex, exclusive, to position endIndex, exclusive. var p = pattern.substring(beginIndex + 1, endIndex); // a. If p is equal "number", then: if (p === "number") { // i. If x is NaN, if (isNaN(x)) { // 1. Let n be an ILD String value indicating the NaN value. var n = ild.nan; // 2. Add new part record { [[type]]: "nan", [[value]]: n } as a new element of the list result. arrPush.call(result, { '[[type]]': 'nan', '[[value]]': n }); } // ii. Else if isFinite(x) is false, else if (!isFinite(x)) { // 1. Let n be an ILD String value indicating infinity. var _n = ild.infinity; // 2. Add new part record { [[type]]: "infinity", [[value]]: n } as a new element of the list result. arrPush.call(result, { '[[type]]': 'infinity', '[[value]]': _n }); } // iii. Else, else { // 1. If the value of numberFormat.[[style]] is "percent" and isFinite(x), let x be 100 × x. if (internal['[[style]]'] === 'percent' && isFinite(x)) x *= 100; var _n2 = void 0; // 2. If the numberFormat.[[minimumSignificantDigits]] and numberFormat.[[maximumSignificantDigits]] are present, then if (hop.call(internal, '[[minimumSignificantDigits]]') && hop.call(internal, '[[maximumSignificantDigits]]')) { // a. Let n be ToRawPrecision(x, numberFormat.[[minimumSignificantDigits]], numberFormat.[[maximumSignificantDigits]]). _n2 = ToRawPrecision(x, internal['[[minimumSignificantDigits]]'], internal['[[maximumSignificantDigits]]']); } // 3. Else, else { // a. Let n be ToRawFixed(x, numberFormat.[[minimumIntegerDigits]], numberFormat.[[minimumFractionDigits]], numberFormat.[[maximumFractionDigits]]). _n2 = ToRawFixed(x, internal['[[minimumIntegerDigits]]'], internal['[[minimumFractionDigits]]'], internal['[[maximumFractionDigits]]']); } // 4. If the value of the numberFormat.[[numberingSystem]] matches one of the values in the "Numbering System" column of Table 2 below, then if (numSys[nums]) { (function () { // a. Let digits be an array whose 10 String valued elements are the UTF-16 string representations of the 10 digits specified in the "Digits" column of the matching row in Table 2. var digits = numSys[nums]; // a. Replace each digit in n with the value of digits[digit]. _n2 = String(_n2).replace(/\d/g, function (digit) { return digits[digit]; }); })(); } // 5. Else use an implementation dependent algorithm to map n to the appropriate representation of n in the given numbering system. else _n2 = String(_n2); // ###TODO### var integer = void 0; var fraction = void 0; // 6. Let decimalSepIndex be Call(%StringProto_indexOf%, n, ".", 0). var decimalSepIndex = _n2.indexOf('.', 0); // 7. If decimalSepIndex > 0, then: if (decimalSepIndex > 0) { // a. Let integer be the substring of n from position 0, inclusive, to position decimalSepIndex, exclusive. integer = _n2.substring(0, decimalSepIndex); // a. Let fraction be the substring of n from position decimalSepIndex, exclusive, to the end of n. fraction = _n2.substring(decimalSepIndex + 1, decimalSepIndex.length); } // 8. Else: else { // a. Let integer be n. integer = _n2; // a. Let fraction be undefined. fraction = undefined; } // 9. If the value of the numberFormat.[[useGrouping]] is true, if (internal['[[useGrouping]]'] === true) { // a. Let groupSepSymbol be the ILND String representing the grouping separator. var groupSepSymbol = ild.group; // a. Let groups be a List whose elements are, in left to right order, the substrings defined by ILND set of locations within the integer. var groups = []; // ----> implementation: // Primary group represents the group closest to the decimal var pgSize = data.patterns.primaryGroupSize || 3; // Secondary group is every other group var sgSize = data.patterns.secondaryGroupSize || pgSize; // Group only if necessary if (integer.length > pgSize) { // Index of the primary grouping separator var end = integer.length - pgSize; // Starting index for our loop var idx = end % sgSize; var start = integer.slice(0, idx); if (start.length) arrPush.call(groups, start); // Loop to separate into secondary grouping digits while (idx < end) { arrPush.call(groups, integer.slice(idx, idx + sgSize)); idx += sgSize; } // Add the primary grouping digits arrPush.call(groups, integer.slice(end)); } else { arrPush.call(groups, integer); } // a. Assert: The number of elements in groups List is greater than 0. if (groups.length === 0) throw new Error(); // a. Repeat, while groups List is not empty: while (groups.length) { // i. Remove the first element from groups and let integerGroup be the value of that element. var integerGroup = arrShift.call(groups); // ii. Add new part record { [[type]]: "integer", [[value]]: integerGroup } as a new element of the list result. arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integerGroup }); // iii. If groups List is not empty, then: if (groups.length) { // 1. Add new part record { [[type]]: "group", [[value]]: groupSepSymbol } as a new element of the list result. arrPush.call(result, { '[[type]]': 'group', '[[value]]': groupSepSymbol }); } } } // 10. Else, else { // a. Add new part record { [[type]]: "integer", [[value]]: integer } as a new element of the list result. arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integer }); } // 11. If fraction is not undefined, then: if (fraction !== undefined) { // a. Let decimalSepSymbol be the ILND String representing the decimal separator. var decimalSepSymbol = ild.decimal; // a. Add new part record { [[type]]: "decimal", [[value]]: decimalSepSymbol } as a new element of the list result. arrPush.call(result, { '[[type]]': 'decimal', '[[value]]': decimalSepSymbol }); // a. Add new part record { [[type]]: "fraction", [[value]]: fraction } as a new element of the list result. arrPush.call(result, { '[[type]]': 'fraction', '[[value]]': fraction }); } } } // a. Else if p is equal "plusSign", then: else if (p === "plusSign") { // i. Let plusSignSymbol be the ILND String representing the plus sign. var plusSignSymbol = ild.plusSign; // ii. Add new part record { [[type]]: "plusSign", [[value]]: plusSignSymbol } as a new element of the list result. arrPush.call(result, { '[[type]]': 'plusSign', '[[value]]': plusSignSymbol }); } // a. Else if p is equal "minusSign", then: else if (p === "minusSign") { // i. Let minusSignSymbol be the ILND String representing the minus sign. var minusSignSymbol = ild.minusSign; // ii. Add new part record { [[type]]: "minusSign", [[value]]: minusSignSymbol } as a new element of the list result. arrPush.call(result, { '[[type]]': 'minusSign', '[[value]]': minusSignSymbol }); } // a. Else if p is equal "percentSign" and numberFormat.[[style]] is "percent", then: else if (p === "percentSign" && internal['[[style]]'] === "percent") { // i. Let percentSignSymbol be the ILND String representing the percent sign. var percentSignSymbol = ild.percentSign; // ii. Add new part record { [[type]]: "percentSign", [[value]]: percentSignSymbol } as a new element of the list result. arrPush.call(result, { '[[type]]': 'literal', '[[value]]': percentSignSymbol }); } // a. Else if p is equal "currency" and numberFormat.[[style]] is "currency", then: else if (p === "currency" && internal['[[style]]'] === "currency") { // i. Let currency be the value of numberFormat.[[currency]]. var currency = internal['[[currency]]']; var cd = void 0; // ii. If numberFormat.[[currencyDisplay]] is "code", then if (internal['[[currencyDisplay]]'] === "code") { // 1. Let cd be currency. cd = currency; } // iii. Else if numberFormat.[[currencyDisplay]] is "symbol", then else if (internal['[[currencyDisplay]]'] === "symbol") { // 1. Let cd be an ILD string representing currency in short form. If the implementation does not have such a representation of currency, use currency itself. cd = data.currencies[currency] || currency; } // iv. Else if numberFormat.[[currencyDisplay]] is "name", then else if (internal['[[currencyDisplay]]'] === "name") { // 1. Let cd be an ILD string representing currency in long form. If the implementation does not have such a representation of currency, then use currency itself. cd = currency; } // v. Add new part record { [[type]]: "currency", [[value]]: cd } as a new element of the list result. arrPush.call(result, { '[[type]]': 'currency', '[[value]]': cd }); } // a. Else, else { // i. Let literal be the substring of pattern from position beginIndex, inclusive, to position endIndex, inclusive. var _literal = pattern.substring(beginIndex, endIndex); // ii. Add new part record { [[type]]: "literal", [[value]]: literal } as a new element of the list result. arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal }); } // a. Set nextIndex to endIndex + 1. nextIndex = endIndex + 1; // a. Set beginIndex to Call(%StringProto_indexOf%, pattern, "{", nextIndex) beginIndex = pattern.indexOf('{', nextIndex); } // 9. If nextIndex is less than length, then: if (nextIndex < length) { // a. Let literal be the substring of pattern from position nextIndex, inclusive, to position length, exclusive. var _literal2 = pattern.substring(nextIndex, length); // a. Add new part record { [[type]]: "literal", [[value]]: literal } as a new element of the list result. arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal2 }); } // 10. Return result. return result; } /* * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html] * @clause[sec-formatnumber] */ function FormatNumber(numberFormat, x) { // 1. Let parts be ? PartitionNumberPattern(numberFormat, x). var parts = PartitionNumberPattern(numberFormat, x); // 2. Let result be an empty String. var result = ''; // 3. For each part in parts, do: for (var i = 0; parts.length > i; i++) { var part = parts[i]; // a. Set result to a String value produced by concatenating result and part.[[value]]. result += part['[[value]]']; } // 4. Return result. return result; } /** * When the ToRawPrecision abstract operation is called with arguments x (which * must be a finite non-negative number), minPrecision, and maxPrecision (both * must be integers between 1 and 21) the following steps are taken: */ function ToRawPrecision(x, minPrecision, maxPrecision) { // 1. Let p be maxPrecision. var p = maxPrecision; var m = void 0, e = void 0; // 2. If x = 0, then if (x === 0) { // a. Let m be the String consisting of p occurrences of the character "0". m = arrJoin.call(Array(p + 1), '0'); // b. Let e be 0. e = 0; } // 3. Else else { // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the // exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as // possible. If there are two such sets of e and n, pick the e and n for // which n × 10ᵉ⁻ᵖ⁺¹ is larger. e = log10Floor(Math.abs(x)); // Easier to get to m from here var f = Math.round(Math.exp(Math.abs(e - p + 1) * Math.LN10)); // b. Let m be the String consisting of the digits of the decimal // representation of n (in order, with no leading zeroes) m = String(Math.round(e - p + 1 < 0 ? x * f : x / f)); } // 4. If e ≥ p, then if (e >= p) // a. Return the concatenation of m and e-p+1 occurrences of the character "0". return m + arrJoin.call(Array(e - p + 1 + 1), '0'); // 5. If e = p-1, then else if (e === p - 1) // a. Return m. return m; // 6. If e ≥ 0, then else if (e >= 0) // a. Let m be the concatenation of the first e+1 characters of m, the character // ".", and the remaining p–(e+1) characters of m. m = m.slice(0, e + 1) + '.' + m.slice(e + 1); // 7. If e < 0, then else if (e < 0) // a. Let m be the concatenation of the String "0.", –(e+1) occurrences of the // character "0", and the string m. m = '0.' + arrJoin.call(Array(-(e + 1) + 1), '0') + m; // 8. If m contains the character ".", and maxPrecision > minPrecision, then if (m.indexOf(".") >= 0 && maxPrecision > minPrecision) { // a. Let cut be maxPrecision – minPrecision. var cut = maxPrecision - minPrecision; // b. Repeat while cut > 0 and the last character of m is "0": while (cut > 0 && m.charAt(m.length - 1) === '0') { // i. Remove the last character from m. m = m.slice(0, -1); // ii. Decrease cut by 1. cut--; } // c. If the last character of m is ".", then if (m.charAt(m.length - 1) === '.') // i. Remove the last character from m. m = m.slice(0, -1); } // 9. Return m. return m; } /** * @spec[tc39/ecma402/master/spec/numberformat.html] * @clause[sec-torawfixed] * When the ToRawFixed abstract operation is called with arguments x (which must * be a finite non-negative number), minInteger (which must be an integer between * 1 and 21), minFraction, and maxFraction (which must be integers between 0 and * 20) the following steps are taken: */ function ToRawFixed(x, minInteger, minFraction, maxFraction) { // 1. Let f be maxFraction. var f = maxFraction; // 2. Let n be an integer for which the exact mathematical value of n ÷ 10f – x is as close to zero as possible. If there are two such n, pick the larger n. var n = Math.pow(10, f) * x; // diverging... // 3. If n = 0, let m be the String "0". Otherwise, let m be the String consisting of the digits of the decimal representation of n (in order, with no leading zeroes). var m = n === 0 ? "0" : n.toFixed(0); // divering... { // this diversion is needed to take into consideration big numbers, e.g.: // 1.2344501e+37 -> 12344501000000000000000000000000000000 var idx = void 0; var exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0; if (exp) { m = m.slice(0, idx).replace('.', ''); m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0'); } } var int = void 0; // 4. If f ≠ 0, then if (f !== 0) { // a. Let k be the number of characters in m. var k = m.length; // a. If k ≤ f, then if (k <= f) { // i. Let z be the String consisting of f+1–k occurrences of the character "0". var z = arrJoin.call(Array(f + 1 - k + 1), '0'); // ii. Let m be the concatenation of Strings z and m. m = z + m; // iii. Let k be f+1. k = f + 1; } // a. Let a be the first k–f characters of m, and let b be the remaining f characters of m. var a = m.substring(0, k - f), b = m.substring(k - f, m.length); // a. Let m be the concatenation of the three Strings a, ".", and b. m = a + "." + b; // a. Let int be the number of characters in a. int = a.length; } // 5. Else, let int be the number of characters in m. else int = m.length; // 6. Let cut be maxFraction – minFraction. var cut = maxFraction - minFraction; // 7. Repeat while cut > 0 and the last character of m is "0": while (cut > 0 && m.slice(-1) === "0") { // a. Remove the last character from m. m = m.slice(0, -1); // a. Decrease cut by 1. cut--; } // 8. If the last character of m is ".", then if (m.slice(-1) === ".") { // a. Remove the last character from m. m = m.slice(0, -1); } // 9. If int < minInteger, then if (int < minInteger) { // a. Let z be the String consisting of minInteger–int occurrences of the character "0". var _z = arrJoin.call(Array(minInteger - int + 1), '0'); // a. Let m be the concatenation of Strings z and m. m = _z + m; } // 10. Return m. return m; } // Sect 11.3.2 Table 2, Numbering systems // ====================================== var numSys = { arab: ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"], arabext: ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"], bali: ["᭐", "᭑", "᭒", "᭓", "᭔", "᭕", "᭖", "᭗", "᭘", "᭙"], beng: ["০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯"], deva: ["०", "१", "२", "३", "४", "५", "६", "७", "८", "९"], fullwide: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], gujr: ["૦", "૧", "૨", "૩", "૪", "૫", "૬", "૭", "૮", "૯"], guru: ["੦", "੧", "੨", "੩", "੪", "੫", "੬", "੭", "੮", "੯"], hanidec: ["〇", "一", "二", "三", "四", "五", "六", "七", "八", "九"], khmr: ["០", "១", "២", "៣", "៤", "៥", "៦", "៧", "៨", "៩"], knda: ["೦", "೧", "೨", "೩", "೪", "೫", "೬", "೭", "೮", "೯"], laoo: ["໐", "໑", "໒", "໓", "໔", "໕", "໖", "໗", "໘", "໙"], latn: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], limb: ["᥆", "᥇", "᥈", "᥉", "᥊", "᥋", "᥌", "᥍", "᥎", "᥏"], mlym: ["൦", "൧", "൨", "൩", "൪", "൫", "൬", "൭", "൮", "൯"], mong: ["᠐", "᠑", "᠒", "᠓", "᠔", "᠕", "᠖", "᠗", "᠘", "᠙"], mymr: ["၀", "၁", "၂", "၃", "၄", "၅", "၆", "၇", "၈", "၉"], orya: ["୦", "୧", "୨", "୩", "୪", "୫", "୬", "୭", "୮", "୯"], tamldec: ["௦", "௧", "௨", "௩", "௪", "௫", "௬", "௭", "௮", "௯"], telu: ["౦", "౧", "౨", "౩", "౪", "౫", "౬", "౭", "౮", "౯"], thai: ["๐", "๑", "๒", "๓", "๔", "๕", "๖", "๗", "๘", "๙"], tibt: ["༠", "༡", "༢", "༣", "༤", "༥", "༦", "༧", "༨", "༩"] }; /** * This function provides access to the locale and formatting options computed * during initialization of the object. * * The function returns a new object whose properties and attributes are set as * if constructed by an object literal assigning to each of the following * properties the value of the corresponding internal property of this * NumberFormat object (see 11.4): locale, numberingSystem, style, currency, * currencyDisplay, minimumIntegerDigits, minimumFractionDigits, * maximumFractionDigits, minimumSignificantDigits, maximumSignificantDigits, and * useGrouping. Properties whose corresponding internal properties are not present * are not assigned. */ /* 11.3.3 */defineProperty(Intl.NumberFormat.prototype, 'resolvedOptions', { configurable: true, writable: true, value: function value() { var prop = void 0, descs = new Record(), props = ['locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping'], internal = this !== null && babelHelpers$1["typeof"](this) === 'object' && getInternalProperties(this); // Satisfy test 11.3_b if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.'); for (var i = 0, max = props.length; i < max; i++) { if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true }; } return objCreate({}, descs); } }); /* jslint esnext: true */ // Match these datetime components in a CLDR pattern, except those in single quotes var expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g; // trim patterns after transformations var expPatternTrimmer = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; // Skip over patterns with these datetime components because we don't have data // to back them up: // timezone, weekday, amoung others var unwantedDTCs = /[rqQASjJgwWIQq]/; // xXVO were removed from this list in favor of computing matches with timeZoneName values but printing as empty string var dtKeys = ["era", "year", "month", "day", "weekday", "quarter"]; var tmKeys = ["hour", "minute", "second", "hour12", "timeZoneName"]; function isDateFormatOnly(obj) { for (var i = 0; i < tmKeys.length; i += 1) { if (obj.hasOwnProperty(tmKeys[i])) { return false; } } return true; } function isTimeFormatOnly(obj) { for (var i = 0; i < dtKeys.length; i += 1) { if (obj.hasOwnProperty(dtKeys[i])) { return false; } } return true; } function joinDateAndTimeFormats(dateFormatObj, timeFormatObj) { var o = { _: {} }; for (var i = 0; i < dtKeys.length; i += 1) { if (dateFormatObj[dtKeys[i]]) { o[dtKeys[i]] = dateFormatObj[dtKeys[i]]; } if (dateFormatObj._[dtKeys[i]]) { o._[dtKeys[i]] = dateFormatObj._[dtKeys[i]]; } } for (var j = 0; j < tmKeys.length; j += 1) { if (timeFormatObj[tmKeys[j]]) { o[tmKeys[j]] = timeFormatObj[tmKeys[j]]; } if (timeFormatObj._[tmKeys[j]]) { o._[tmKeys[j]] = timeFormatObj._[tmKeys[j]]; } } return o; } function computeFinalPatterns(formatObj) { // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns: // 'In patterns, two single quotes represents a literal single quote, either // inside or outside single quotes. Text within single quotes is not // interpreted in any way (except for two adjacent single quotes).' formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) { return literal ? literal : "'"; }); // pattern 12 is always the default. we can produce the 24 by removing {ampm} formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, ''); return formatObj; } function expDTComponentsMeta($0, formatObj) { switch ($0.charAt(0)) { // --- Era case 'G': formatObj.era = ['short', 'short', 'short', 'long', 'narrow'][$0.length - 1]; return '{era}'; // --- Year case 'y': case 'Y': case 'u': case 'U': case 'r': formatObj.year = $0.length === 2 ? '2-digit' : 'numeric'; return '{year}'; // --- Quarter (not supported in this polyfill) case 'Q': case 'q': formatObj.quarter = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1]; return '{quarter}'; // --- Month case 'M': case 'L': formatObj.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1]; return '{month}'; // --- Week (not supported in this polyfill) case 'w': // week of the year formatObj.week = $0.length === 2 ? '2-digit' : 'numeric'; return '{weekday}'; case 'W': // week of the month formatObj.week = 'numeric'; return '{weekday}'; // --- Day case 'd': // day of the month formatObj.day = $0.length === 2 ? '2-digit' : 'numeric'; return '{day}'; case 'D': // day of the year case 'F': // day of the week case 'g': // 1..n: Modified Julian day formatObj.day = 'numeric'; return '{day}'; // --- Week Day case 'E': // day of the week formatObj.weekday = ['short', 'short', 'short', 'long', 'narrow', 'short'][$0.length - 1]; return '{weekday}'; case 'e': // local day of the week formatObj.weekday = ['numeric', '2-digit', 'short', 'long', 'narrow', 'short'][$0.length - 1]; return '{weekday}'; case 'c': // stand alone local day of the week formatObj.weekday = ['numeric', undefined, 'short', 'long', 'narrow', 'short'][$0.length - 1]; return '{weekday}'; // --- Period case 'a': // AM, PM case 'b': // am, pm, noon, midnight case 'B': // flexible day periods formatObj.hour12 = true; return '{ampm}'; // --- Hour case 'h': case 'H': formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric'; return '{hour}'; case 'k': case 'K': formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K) formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric'; return '{hour}'; // --- Minute case 'm': formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric'; return '{minute}'; // --- Second case 's': formatObj.second = $0.length === 2 ? '2-digit' : 'numeric'; return '{second}'; case 'S': case 'A': formatObj.second = 'numeric'; return '{second}'; // --- Timezone case 'z': // 1..3, 4: specific non-location format case 'Z': // 1..3, 4, 5: The ISO8601 varios formats case 'O': // 1, 4: miliseconds in day short, long case 'v': // 1, 4: generic non-location format case 'V': // 1, 2, 3, 4: time zone ID or city case 'X': // 1, 2, 3, 4: The ISO8601 varios formats case 'x': // 1, 2, 3, 4: The ISO8601 varios formats // this polyfill only supports much, for now, we are just doing something dummy formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long'; return '{timeZoneName}'; } } /** * Converts the CLDR availableFormats into the objects and patterns required by * the ECMAScript Internationalization API specification. */ function createDateTimeFormat(skeleton, pattern) { // we ignore certain patterns that are unsupported to avoid this expensive op. if (unwantedDTCs.test(pattern)) return undefined; var formatObj = { originalPattern: pattern, _: {} }; // Replace the pattern string with the one required by the specification, whilst // at the same time evaluating it for the subsets and formats formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) { // See which symbol we're dealing with return expDTComponentsMeta($0, formatObj._); }); // Match the skeleton string with the one required by the specification // this implementation is based on the Date Field Symbol Table: // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table // Note: we are adding extra data to the formatObject even though this polyfill // might not support it. skeleton.replace(expDTComponents, function ($0) { // See which symbol we're dealing with return expDTComponentsMeta($0, formatObj); }); return computeFinalPatterns(formatObj); } /** * Processes DateTime formats from CLDR to an easier-to-parse format. * the result of this operation should be cached the first time a particular * calendar is analyzed. * * The specification requires we support at least the following subsets of * date/time components: * * - 'weekday', 'year', 'month', 'day', 'hour', 'minute', 'second' * - 'weekday', 'year', 'month', 'day' * - 'year', 'month', 'day' * - 'year', 'month' * - 'month', 'day' * - 'hour', 'minute', 'second' * - 'hour', 'minute' * * We need to cherry pick at least these subsets from the CLDR data and convert * them into the pattern objects used in the ECMA-402 API. */ function createDateTimeFormats(formats) { var availableFormats = formats.availableFormats; var timeFormats = formats.timeFormats; var dateFormats = formats.dateFormats; var result = []; var skeleton = void 0, pattern = void 0, computed = void 0, i = void 0, j = void 0; var timeRelatedFormats = []; var dateRelatedFormats = []; // Map available (custom) formats into a pattern for createDateTimeFormats for (skeleton in availableFormats) { if (availableFormats.hasOwnProperty(skeleton)) { pattern = availableFormats[skeleton]; computed = createDateTimeFormat(skeleton, pattern); if (computed) { result.push(computed); // in some cases, the format is only displaying date specific props // or time specific props, in which case we need to also produce the // combined formats. if (isDateFormatOnly(computed)) { dateRelatedFormats.push(computed); } else if (isTimeFormatOnly(computed)) { timeRelatedFormats.push(computed); } } } } // Map time formats into a pattern for createDateTimeFormats for (skeleton in timeFormats) { if (timeFormats.hasOwnProperty(skeleton)) { pattern = timeFormats[skeleton]; computed = createDateTimeFormat(skeleton, pattern); if (computed) { result.push(computed); timeRelatedFormats.push(computed); } } } // Map date formats into a pattern for createDateTimeFormats for (skeleton in dateFormats) { if (dateFormats.hasOwnProperty(skeleton)) { pattern = dateFormats[skeleton]; computed = createDateTimeFormat(skeleton, pattern); if (computed) { result.push(computed); dateRelatedFormats.push(computed); } } } // combine custom time and custom date formats when they are orthogonals to complete the // formats supported by CLDR. // This Algo is based on section "Missing Skeleton Fields" from: // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems for (i = 0; i < timeRelatedFormats.length; i += 1) { for (j = 0; j < dateRelatedFormats.length; j += 1) { if (dateRelatedFormats[j].month === 'long') { pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long; } else if (dateRelatedFormats[j].month === 'short') { pattern = formats.medium; } else { pattern = formats.short; } computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]); computed.originalPattern = pattern; computed.extendedPattern = pattern.replace('{0}', timeRelatedFormats[i].extendedPattern).replace('{1}', dateRelatedFormats[j].extendedPattern).replace(/^[,\s]+|[,\s]+$/gi, ''); result.push(computeFinalPatterns(computed)); } } return result; } // this represents the exceptions of the rule that are not covered by CLDR availableFormats // for single property configurations, they play no role when using multiple properties, and // those that are not in this table, are not exceptions or are not covered by the data we // provide. var validSyntheticProps = { second: { numeric: 's', '2-digit': 'ss' }, minute: { numeric: 'm', '2-digit': 'mm' }, year: { numeric: 'y', '2-digit': 'yy' }, day: { numeric: 'd', '2-digit': 'dd' }, month: { numeric: 'L', '2-digit': 'LL', narrow: 'LLLLL', short: 'LLL', long: 'LLLL' }, weekday: { narrow: 'ccccc', short: 'ccc', long: 'cccc' } }; function generateSyntheticFormat(propName, propValue) { if (validSyntheticProps[propName] && validSyntheticProps[propName][propValue]) { var _ref2; return _ref2 = { originalPattern: validSyntheticProps[propName][propValue], _: defineProperty$1({}, propName, propValue), extendedPattern: "{" + propName + "}" }, defineProperty$1(_ref2, propName, propValue), defineProperty$1(_ref2, "pattern12", "{" + propName + "}"), defineProperty$1(_ref2, "pattern", "{" + propName + "}"), _ref2; } } // An object map of date component keys, saves using a regex later var dateWidths = objCreate(null, { narrow: {}, short: {}, long: {} }); /** * Returns a string for a date component, resolved using multiple inheritance as specified * as specified in the Unicode Technical Standard 35. */ function resolveDateString(data, ca, component, width, key) { // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance: // 'In clearly specified instances, resources may inherit from within the same locale. // For example, ... the Buddhist calendar inherits from the Gregorian calendar.' var obj = data[ca] && data[ca][component] ? data[ca][component] : data.gregory[component], // "sideways" inheritance resolves strings when a key doesn't exist alts = { narrow: ['short', 'long'], short: ['long', 'narrow'], long: ['short', 'narrow'] }, // resolved = hop.call(obj, width) ? obj[width] : hop.call(obj, alts[width][0]) ? obj[alts[width][0]] : obj[alts[width][1]]; // `key` wouldn't be specified for components 'dayPeriods' return key !== null ? resolved[key] : resolved; } // Define the DateTimeFormat constructor internally so it cannot be tainted function DateTimeFormatConstructor() { var locales = arguments[0]; var options = arguments[1]; if (!this || this === Intl) { return new Intl.DateTimeFormat(locales, options); } return InitializeDateTimeFormat(toObject(this), locales, options); } defineProperty(Intl, 'DateTimeFormat', { configurable: true, writable: true, value: DateTimeFormatConstructor }); // Must explicitly set prototypes as unwritable defineProperty(DateTimeFormatConstructor, 'prototype', { writable: false }); /** * The abstract operation InitializeDateTimeFormat accepts the arguments dateTimeFormat * (which must be an object), locales, and options. It initializes dateTimeFormat as a * DateTimeFormat object. */ function /* 12.1.1.1 */InitializeDateTimeFormat(dateTimeFormat, locales, options) { // This will be a internal properties object if we're not already initialized var internal = getInternalProperties(dateTimeFormat); // Create an object whose props can be used to restore the values of RegExp props var regexpRestore = createRegExpRestore(); // 1. If dateTimeFormat has an [[initializedIntlObject]] internal property with // value true, throw a TypeError exception. if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object'); // Need this to access the `internal` object defineProperty(dateTimeFormat, '__getInternalProperties', { value: function value() { // NOTE: Non-standard, for internal use only if (arguments[0] === secret) return internal; } }); // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true. internal['[[initializedIntlObject]]'] = true; // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList // abstract operation (defined in 9.2.1) with argument locales. var requestedLocales = CanonicalizeLocaleList(locales); // 4. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined below) with arguments options, "any", and "date". options = ToDateTimeOptions(options, 'any', 'date'); // 5. Let opt be a new Record. var opt = new Record(); // 6. Let matcher be the result of calling the GetOption abstract operation // (defined in 9.2.9) with arguments options, "localeMatcher", "string", a List // containing the two String values "lookup" and "best fit", and "best fit". var matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit'); // 7. Set opt.[[localeMatcher]] to matcher. opt['[[localeMatcher]]'] = matcher; // 8. Let DateTimeFormat be the standard built-in object that is the initial // value of Intl.DateTimeFormat. var DateTimeFormat = internals.DateTimeFormat; // This is what we *really* need // 9. Let localeData be the value of the [[localeData]] internal property of // DateTimeFormat. var localeData = DateTimeFormat['[[localeData]]']; // 10. Let r be the result of calling the ResolveLocale abstract operation // (defined in 9.2.5) with the [[availableLocales]] internal property of // DateTimeFormat, requestedLocales, opt, the [[relevantExtensionKeys]] // internal property of DateTimeFormat, and localeData. var r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales, opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData); // 11. Set the [[locale]] internal property of dateTimeFormat to the value of // r.[[locale]]. internal['[[locale]]'] = r['[[locale]]']; // 12. Set the [[calendar]] internal property of dateTimeFormat to the value of // r.[[ca]]. internal['[[calendar]]'] = r['[[ca]]']; // 13. Set the [[numberingSystem]] internal property of dateTimeFormat to the value of // r.[[nu]]. internal['[[numberingSystem]]'] = r['[[nu]]']; // The specification doesn't tell us to do this, but it's helpful later on internal['[[dataLocale]]'] = r['[[dataLocale]]']; // 14. Let dataLocale be the value of r.[[dataLocale]]. var dataLocale = r['[[dataLocale]]']; // 15. Let tz be the result of calling the [[Get]] internal method of options with // argument "timeZone". var tz = options.timeZone; // 16. If tz is not undefined, then if (tz !== undefined) { // a. Let tz be ToString(tz). // b. Convert tz to upper case as described in 6.1. // NOTE: If an implementation accepts additional time zone values, as permitted // under certain conditions by the Conformance clause, different casing // rules apply. tz = toLatinUpperCase(tz); // c. If tz is not "UTC", then throw a RangeError exception. // ###TODO: accept more time zones### if (tz !== 'UTC') throw new RangeError('timeZone is not supported.'); } // 17. Set the [[timeZone]] internal property of dateTimeFormat to tz. internal['[[timeZone]]'] = tz; // 18. Let opt be a new Record. opt = new Record(); // 19. For each row of Table 3, except the header row, do: for (var prop in dateTimeComponents) { if (!hop.call(dateTimeComponents, prop)) continue; // 20. Let prop be the name given in the Property column of the row. // 21. Let value be the result of calling the GetOption abstract operation, // passing as argument options, the name given in the Property column of the // row, "string", a List containing the strings given in the Values column of // the row, and undefined. var value = GetOption(options, prop, 'string', dateTimeComponents[prop]); // 22. Set opt.[[<prop>]] to value. opt['[[' + prop + ']]'] = value; } // Assigned a value below var bestFormat = void 0; // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of // localeData with argument dataLocale. var dataLocaleData = localeData[dataLocale]; // 24. Let formats be the result of calling the [[Get]] internal method of // dataLocaleData with argument "formats". // Note: we process the CLDR formats into the spec'd structure var formats = ToDateTimeFormats(dataLocaleData.formats); // 25. Let matcher be the result of calling the GetOption abstract operation with // arguments options, "formatMatcher", "string", a List containing the two String // values "basic" and "best fit", and "best fit". matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit'); // Optimization: caching the processed formats as a one time operation by // replacing the initial structure from localeData dataLocaleData.formats = formats; // 26. If matcher is "basic", then if (matcher === 'basic') { // 27. Let bestFormat be the result of calling the BasicFormatMatcher abstract // operation (defined below) with opt and formats. bestFormat = BasicFormatMatcher(opt, formats); // 28. Else } else { { // diverging var _hr = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/); opt.hour12 = _hr === undefined ? dataLocaleData.hour12 : _hr; } // 29. Let bestFormat be the result of calling the BestFitFormatMatcher // abstract operation (defined below) with opt and formats. bestFormat = BestFitFormatMatcher(opt, formats); } // 30. For each row in Table 3, except the header row, do for (var _prop in dateTimeComponents) { if (!hop.call(dateTimeComponents, _prop)) continue; // a. Let prop be the name given in the Property column of the row. // b. Let pDesc be the result of calling the [[GetOwnProperty]] internal method of // bestFormat with argument prop. // c. If pDesc is not undefined, then if (hop.call(bestFormat, _prop)) { // i. Let p be the result of calling the [[Get]] internal method of bestFormat // with argument prop. var p = bestFormat[_prop]; { // diverging p = bestFormat._ && hop.call(bestFormat._, _prop) ? bestFormat._[_prop] : p; } // ii. Set the [[<prop>]] internal property of dateTimeFormat to p. internal['[[' + _prop + ']]'] = p; } } var pattern = void 0; // Assigned a value below // 31. Let hr12 be the result of calling the GetOption abstract operation with // arguments options, "hour12", "boolean", undefined, and undefined. var hr12 = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/); // 32. If dateTimeFormat has an internal property [[hour]], then if (internal['[[hour]]']) { // a. If hr12 is undefined, then let hr12 be the result of calling the [[Get]] // internal method of dataLocaleData with argument "hour12". hr12 = hr12 === undefined ? dataLocaleData.hour12 : hr12; // b. Set the [[hour12]] internal property of dateTimeFormat to hr12. internal['[[hour12]]'] = hr12; // c. If hr12 is true, then if (hr12 === true) { // i. Let hourNo0 be the result of calling the [[Get]] internal method of // dataLocaleData with argument "hourNo0". var hourNo0 = dataLocaleData.hourNo0; // ii. Set the [[hourNo0]] internal property of dateTimeFormat to hourNo0. internal['[[hourNo0]]'] = hourNo0; // iii. Let pattern be the result of calling the [[Get]] internal method of // bestFormat with argument "pattern12". pattern = bestFormat.pattern12; } // d. Else else // i. Let pattern be the result of calling the [[Get]] internal method of // bestFormat with argument "pattern". pattern = bestFormat.pattern; } // 33. Else else // a. Let pattern be the result of calling the [[Get]] internal method of // bestFormat with argument "pattern". pattern = bestFormat.pattern; // 34. Set the [[pattern]] internal property of dateTimeFormat to pattern. internal['[[pattern]]'] = pattern; // 35. Set the [[boundFormat]] internal property of dateTimeFormat to undefined. internal['[[boundFormat]]'] = undefined; // 36. Set the [[initializedDateTimeFormat]] internal property of dateTimeFormat to // true. internal['[[initializedDateTimeFormat]]'] = true; // In ES3, we need to pre-bind the format() function if (es3) dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat); // Restore the RegExp properties regexpRestore(); // Return the newly initialised object return dateTimeFormat; } /** * Several DateTimeFormat algorithms use values from the following table, which provides * property names and allowable values for the components of date and time formats: */ var dateTimeComponents = { weekday: ["narrow", "short", "long"], era: ["narrow", "short", "long"], year: ["2-digit", "numeric"], month: ["2-digit", "numeric", "narrow", "short", "long"], day: ["2-digit", "numeric"], hour: ["2-digit", "numeric"], minute: ["2-digit", "numeric"], second: ["2-digit", "numeric"], timeZoneName: ["short", "long"] }; /** * When the ToDateTimeOptions abstract operation is called with arguments options, * required, and defaults, the following steps are taken: */ function ToDateTimeFormats(formats) { if (Object.prototype.toString.call(formats) === '[object Array]') { return formats; } return createDateTimeFormats(formats); } /** * When the ToDateTimeOptions abstract operation is called with arguments options, * required, and defaults, the following steps are taken: */ function ToDateTimeOptions(options, required, defaults) { // 1. If options is undefined, then let options be null, else let options be // ToObject(options). if (options === undefined) options = null;else { // (#12) options needs to be a Record, but it also needs to inherit properties var opt2 = toObject(options); options = new Record(); for (var k in opt2) { options[k] = opt2[k]; } } // 2. Let create be the standard built-in function object defined in ES5, 15.2.3.5. var create = objCreate; // 3. Let options be the result of calling the [[Call]] internal method of create with // undefined as the this value and an argument list containing the single item // options. options = create(options); // 4. Let needDefaults be true. var needDefaults = true; // 5. If required is "date" or "any", then if (required === 'date' || required === 'any') { // a. For each of the property names "weekday", "year", "month", "day": // i. If the result of calling the [[Get]] internal method of options with the // property name is not undefined, then let needDefaults be false. if (options.weekday !== undefined || options.year !== undefined || options.month !== undefined || options.day !== undefined) needDefaults = false; } // 6. If required is "time" or "any", then if (required === 'time' || required === 'any') { // a. For each of the property names "hour", "minute", "second": // i. If the result of calling the [[Get]] internal method of options with the // property name is not undefined, then let needDefaults be false. if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined) needDefaults = false; } // 7. If needDefaults is true and defaults is either "date" or "all", then if (needDefaults && (defaults === 'date' || defaults === 'all')) // a. For each of the property names "year", "month", "day": // i. Call the [[DefineOwnProperty]] internal method of options with the // property name, Property Descriptor {[[Value]]: "numeric", [[Writable]]: // true, [[Enumerable]]: true, [[Configurable]]: true}, and false. options.year = options.month = options.day = 'numeric'; // 8. If needDefaults is true and defaults is either "time" or "all", then if (needDefaults && (defaults === 'time' || defaults === 'all')) // a. For each of the property names "hour", "minute", "second": // i. Call the [[DefineOwnProperty]] internal method of options with the // property name, Property Descriptor {[[Value]]: "numeric", [[Writable]]: // true, [[Enumerable]]: true, [[Configurable]]: true}, and false. options.hour = options.minute = options.second = 'numeric'; // 9. Return options. return options; } /** * When the BasicFormatMatcher abstract operation is called with two arguments options and * formats, the following steps are taken: */ function BasicFormatMatcher(options, formats) { // 1. Let removalPenalty be 120. var removalPenalty = 120; // 2. Let additionPenalty be 20. var additionPenalty = 20; // 3. Let longLessPenalty be 8. var longLessPenalty = 8; // 4. Let longMorePenalty be 6. var longMorePenalty = 6; // 5. Let shortLessPenalty be 6. var shortLessPenalty = 6; // 6. Let shortMorePenalty be 3. var shortMorePenalty = 3; // 7. Let bestScore be -Infinity. var bestScore = -Infinity; // 8. Let bestFormat be undefined. var bestFormat = void 0; // 9. Let i be 0. var i = 0; // 10. Assert: formats is an Array object. // 11. Let len be the result of calling the [[Get]] internal method of formats with argument "length". var len = formats.length; // 12. Repeat while i < len: while (i < len) { // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i). var format = formats[i]; // b. Let score be 0. var score = 0; // c. For each property shown in Table 3: for (var property in dateTimeComponents) { if (!hop.call(dateTimeComponents, property)) continue; // i. Let optionsProp be options.[[<property>]]. var optionsProp = options['[[' + property + ']]']; // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format // with argument property. // iii. If formatPropDesc is not undefined, then // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property. var formatProp = hop.call(format, property) ? format[property] : undefined; // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by // additionPenalty. if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty; // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by // removalPenalty. else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty; // vi. Else else { // 1. Let values be the array ["2-digit", "numeric", "narrow", "short", // "long"]. var values = ['2-digit', 'numeric', 'narrow', 'short', 'long']; // 2. Let optionsPropIndex be the index of optionsProp within values. var optionsPropIndex = arrIndexOf.call(values, optionsProp); // 3. Let formatPropIndex be the index of formatProp within values. var formatPropIndex = arrIndexOf.call(values, formatProp); // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2). var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2); // 5. If delta = 2, decrease score by longMorePenalty. if (delta === 2) score -= longMorePenalty; // 6. Else if delta = 1, decrease score by shortMorePenalty. else if (delta === 1) score -= shortMorePenalty; // 7. Else if delta = -1, decrease score by shortLessPenalty. else if (delta === -1) score -= shortLessPenalty; // 8. Else if delta = -2, decrease score by longLessPenalty. else if (delta === -2) score -= longLessPenalty; } } // d. If score > bestScore, then if (score > bestScore) { // i. Let bestScore be score. bestScore = score; // ii. Let bestFormat be format. bestFormat = format; } // e. Increase i by 1. i++; } // 13. Return bestFormat. return bestFormat; } /** * When the BestFitFormatMatcher abstract operation is called with two arguments options * and formats, it performs implementation dependent steps, which should return a set of * component representations that a typical user of the selected locale would perceive as * at least as good as the one returned by BasicFormatMatcher. * * This polyfill defines the algorithm to be the same as BasicFormatMatcher, * with the addition of bonus points awarded where the requested format is of * the same data type as the potentially matching format. * * This algo relies on the concept of closest distance matching described here: * http://unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons * Typically a “best match” is found using a closest distance match, such as: * * Symbols requesting a best choice for the locale are replaced. * j → one of {H, k, h, K}; C → one of {a, b, B} * -> Covered by cldr.js matching process * * For fields with symbols representing the same type (year, month, day, etc): * Most symbols have a small distance from each other. * M ≅ L; E ≅ c; a ≅ b ≅ B; H ≅ k ≅ h ≅ K; ... * -> Covered by cldr.js matching process * * Width differences among fields, other than those marking text vs numeric, are given small distance from each other. * MMM ≅ MMMM * MM ≅ M * Numeric and text fields are given a larger distance from each other. * MMM ≈ MM * Symbols representing substantial differences (week of year vs week of month) are given much larger a distances from each other. * d ≋ D; ... * Missing or extra fields cause a match to fail. (But see Missing Skeleton Fields). * * * For example, * * { month: 'numeric', day: 'numeric' } * * should match * * { month: '2-digit', day: '2-digit' } * * rather than * * { month: 'short', day: 'numeric' } * * This makes sense because a user requesting a formatted date with numeric parts would * not expect to see the returned format containing narrow, short or long part names */ function BestFitFormatMatcher(options, formats) { /** Diverging: this block implements the hack for single property configuration, eg.: * * `new Intl.DateTimeFormat('en', {day: 'numeric'})` * * should produce a single digit with the day of the month. This is needed because * CLDR `availableFormats` data structure doesn't cover these cases. */ { var optionsPropNames = []; for (var property in dateTimeComponents) { if (!hop.call(dateTimeComponents, property)) continue; if (options['[[' + property + ']]'] !== undefined) { optionsPropNames.push(property); } } if (optionsPropNames.length === 1) { var _bestFormat = generateSyntheticFormat(optionsPropNames[0], options['[[' + optionsPropNames[0] + ']]']); if (_bestFormat) { return _bestFormat; } } } // 1. Let removalPenalty be 120. var removalPenalty = 120; // 2. Let additionPenalty be 20. var additionPenalty = 20; // 3. Let longLessPenalty be 8. var longLessPenalty = 8; // 4. Let longMorePenalty be 6. var longMorePenalty = 6; // 5. Let shortLessPenalty be 6. var shortLessPenalty = 6; // 6. Let shortMorePenalty be 3. var shortMorePenalty = 3; var patternPenalty = 2; var hour12Penalty = 1; // 7. Let bestScore be -Infinity. var bestScore = -Infinity; // 8. Let bestFormat be undefined. var bestFormat = void 0; // 9. Let i be 0. var i = 0; // 10. Assert: formats is an Array object. // 11. Let len be the result of calling the [[Get]] internal method of formats with argument "length". var len = formats.length; // 12. Repeat while i < len: while (i < len) { // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i). var format = formats[i]; // b. Let score be 0. var score = 0; // c. For each property shown in Table 3: for (var _property in dateTimeComponents) { if (!hop.call(dateTimeComponents, _property)) continue; // i. Let optionsProp be options.[[<property>]]. var optionsProp = options['[[' + _property + ']]']; // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format // with argument property. // iii. If formatPropDesc is not undefined, then // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property. var formatProp = hop.call(format, _property) ? format[_property] : undefined; // Diverging: using the default properties produced by the pattern/skeleton // to match it with user options, and apply a penalty var patternProp = hop.call(format._, _property) ? format._[_property] : undefined; if (optionsProp !== patternProp) { score -= patternPenalty; } // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by // additionPenalty. if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty; // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by // removalPenalty. else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty; // vi. Else else { // 1. Let values be the array ["2-digit", "numeric", "narrow", "short", // "long"]. var values = ['2-digit', 'numeric', 'narrow', 'short', 'long']; // 2. Let optionsPropIndex be the index of optionsProp within values. var optionsPropIndex = arrIndexOf.call(values, optionsProp); // 3. Let formatPropIndex be the index of formatProp within values. var formatPropIndex = arrIndexOf.call(values, formatProp); // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2). var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2); { // diverging from spec // When the bestFit argument is true, subtract additional penalty where data types are not the same if (formatPropIndex <= 1 && optionsPropIndex >= 2 || formatPropIndex >= 2 && optionsPropIndex <= 1) { // 5. If delta = 2, decrease score by longMorePenalty. if (delta > 0) score -= longMorePenalty;else if (delta < 0) score -= longLessPenalty; } else { // 5. If delta = 2, decrease score by longMorePenalty. if (delta > 1) score -= shortMorePenalty;else if (delta < -1) score -= shortLessPenalty; } } } } { // diverging to also take into consideration differences between 12 or 24 hours // which is special for the best fit only. if (format._.hour12 !== options.hour12) { score -= hour12Penalty; } } // d. If score > bestScore, then if (score > bestScore) { // i. Let bestScore be score. bestScore = score; // ii. Let bestFormat be format. bestFormat = format; } // e. Increase i by 1. i++; } // 13. Return bestFormat. return bestFormat; } /* 12.2.3 */internals.DateTimeFormat = { '[[availableLocales]]': [], '[[relevantExtensionKeys]]': ['ca', 'nu'], '[[localeData]]': {} }; /** * When the supportedLocalesOf method of Intl.DateTimeFormat is called, the * following steps are taken: */ /* 12.2.2 */ defineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', { configurable: true, writable: true, value: fnBind.call(function (locales) { // Bound functions only have the `this` value altered if being used as a constructor, // this lets us imitate a native function that has no constructor if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor'); // Create an object whose props can be used to restore the values of RegExp props var regexpRestore = createRegExpRestore(), // 1. If options is not provided, then let options be undefined. options = arguments[1], // 2. Let availableLocales be the value of the [[availableLocales]] internal // property of the standard built-in object that is the initial value of // Intl.NumberFormat. availableLocales = this['[[availableLocales]]'], // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList // abstract operation (defined in 9.2.1) with argument locales. requestedLocales = CanonicalizeLocaleList(locales); // Restore the RegExp properties regexpRestore(); // 4. Return the result of calling the SupportedLocales abstract operation // (defined in 9.2.8) with arguments availableLocales, requestedLocales, // and options. return SupportedLocales(availableLocales, requestedLocales, options); }, internals.NumberFormat) }); /** * This named accessor property returns a function that formats a number * according to the effective locale and the formatting options of this * DateTimeFormat object. */ /* 12.3.2 */defineProperty(Intl.DateTimeFormat.prototype, 'format', { configurable: true, get: GetFormatDateTime }); function GetFormatDateTime() { var internal = this !== null && babelHelpers$1["typeof"](this) === 'object' && getInternalProperties(this); // Satisfy test 12.3_b if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.'); // The value of the [[Get]] attribute is a function that takes the following // steps: // 1. If the [[boundFormat]] internal property of this DateTimeFormat object // is undefined, then: if (internal['[[boundFormat]]'] === undefined) { // a. Let F be a Function object, with internal properties set as // specified for built-in functions in ES5, 15, or successor, and the // length property set to 0, that takes the argument date and // performs the following steps: var F = function F() { var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0]; // i. If date is not provided or is undefined, then let x be the // result as if by the expression Date.now() where Date.now is // the standard built-in function defined in ES5, 15.9.4.4. // ii. Else let x be ToNumber(date). // iii. Return the result of calling the FormatDateTime abstract // operation (defined below) with arguments this and x. var x = date === undefined ? Date.now() : toNumber(date); return FormatDateTime(this, x); }; // b. Let bind be the standard built-in function object defined in ES5, // 15.3.4.5. // c. Let bf be the result of calling the [[Call]] internal method of // bind with F as the this value and an argument list containing // the single item this. var bf = fnBind.call(F, this); // d. Set the [[boundFormat]] internal property of this NumberFormat // object to bf. internal['[[boundFormat]]'] = bf; } // Return the value of the [[boundFormat]] internal property of this // NumberFormat object. return internal['[[boundFormat]]']; } function formatToParts$1() { var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0]; var internal = this !== null && babelHelpers$1["typeof"](this) === 'object' && getInternalProperties(this); if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object.'); var x = date === undefined ? Date.now() : toNumber(date); return FormatToPartsDateTime(this, x); } Object.defineProperty(Intl.DateTimeFormat.prototype, 'formatToParts', { enumerable: false, writable: true, configurable: true, value: formatToParts$1 }); function CreateDateTimeParts(dateTimeFormat, x) { // 1. If x is not a finite Number, then throw a RangeError exception. if (!isFinite(x)) throw new RangeError('Invalid valid date passed to format'); var internal = dateTimeFormat.__getInternalProperties(secret); // Creating restore point for properties on the RegExp object... please wait /* let regexpRestore = */createRegExpRestore(); // ###TODO: review this // 2. Let locale be the value of the [[locale]] internal property of dateTimeFormat. var locale = internal['[[locale]]']; // 3. Let nf be the result of creating a new NumberFormat object as if by the // expression new Intl.NumberFormat([locale], {useGrouping: false}) where // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3. var nf = new Intl.NumberFormat([locale], { useGrouping: false }); // 4. Let nf2 be the result of creating a new NumberFormat object as if by the // expression new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping: // false}) where Intl.NumberFormat is the standard built-in constructor defined in // 11.1.3. var nf2 = new Intl.NumberFormat([locale], { minimumIntegerDigits: 2, useGrouping: false }); // 5. Let tm be the result of calling the ToLocalTime abstract operation (defined // below) with x, the value of the [[calendar]] internal property of dateTimeFormat, // and the value of the [[timeZone]] internal property of dateTimeFormat. var tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']); // 6. Let result be the value of the [[pattern]] internal property of dateTimeFormat. var pattern = internal['[[pattern]]']; // 7. var result = new List(); // 8. var index = 0; // 9. var beginIndex = pattern.indexOf('{'); // 10. var endIndex = 0; // Need the locale minus any extensions var dataLocale = internal['[[dataLocale]]']; // Need the calendar data from CLDR var localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars; var ca = internal['[[calendar]]']; // 11. while (beginIndex !== -1) { var fv = void 0; // a. endIndex = pattern.indexOf('}', beginIndex); // b. if (endIndex === -1) { throw new Error('Unclosed pattern'); } // c. if (beginIndex > index) { arrPush.call(result, { type: 'literal', value: pattern.substring(index, beginIndex) }); } // d. var p = pattern.substring(beginIndex + 1, endIndex); // e. if (dateTimeComponents.hasOwnProperty(p)) { // i. Let f be the value of the [[<p>]] internal property of dateTimeFormat. var f = internal['[[' + p + ']]']; // ii. Let v be the value of tm.[[<p>]]. var v = tm['[[' + p + ']]']; // iii. If p is "year" and v ≤ 0, then let v be 1 - v. if (p === 'year' && v <= 0) { v = 1 - v; } // iv. If p is "month", then increase v by 1. else if (p === 'month') { v++; } // v. If p is "hour" and the value of the [[hour12]] internal property of // dateTimeFormat is true, then else if (p === 'hour' && internal['[[hour12]]'] === true) { // 1. Let v be v modulo 12. v = v % 12; // 2. If v is 0 and the value of the [[hourNo0]] internal property of // dateTimeFormat is true, then let v be 12. if (v === 0 && internal['[[hourNo0]]'] === true) { v = 12; } } // vi. If f is "numeric", then if (f === 'numeric') { // 1. Let fv be the result of calling the FormatNumber abstract operation // (defined in 11.3.2) with arguments nf and v. fv = FormatNumber(nf, v); } // vii. Else if f is "2-digit", then else if (f === '2-digit') { // 1. Let fv be the result of calling the FormatNumber abstract operation // with arguments nf2 and v. fv = FormatNumber(nf2, v); // 2. If the length of fv is greater than 2, let fv be the substring of fv // containing the last two characters. if (fv.length > 2) { fv = fv.slice(-2); } } // viii. Else if f is "narrow", "short", or "long", then let fv be a String // value representing f in the desired form; the String value depends upon // the implementation and the effective locale and calendar of // dateTimeFormat. If p is "month", then the String value may also depend // on whether dateTimeFormat has a [[day]] internal property. If p is // "timeZoneName", then the String value may also depend on the value of // the [[inDST]] field of tm. else if (f in dateWidths) { switch (p) { case 'month': fv = resolveDateString(localeData, ca, 'months', f, tm['[[' + p + ']]']); break; case 'weekday': try { fv = resolveDateString(localeData, ca, 'days', f, tm['[[' + p + ']]']); // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']]; } catch (e) { throw new Error('Could not find weekday data for locale ' + locale); } break; case 'timeZoneName': fv = ''; // ###TODO break; case 'era': try { fv = resolveDateString(localeData, ca, 'eras', f, tm['[[' + p + ']]']); } catch (e) { throw new Error('Could not find era data for locale ' + locale); } break; default: fv = tm['[[' + p + ']]']; } } // ix arrPush.call(result, { type: p, value: fv }); // f. } else if (p === 'ampm') { // i. var _v = tm['[[hour]]']; // ii./iii. fv = resolveDateString(localeData, ca, 'dayPeriods', _v > 11 ? 'pm' : 'am', null); // iv. arrPush.call(result, { type: 'dayPeriod', value: fv }); // g. } else { arrPush.call(result, { type: 'literal', value: pattern.substring(beginIndex, endIndex + 1) }); } // h. index = endIndex + 1; // i. beginIndex = pattern.indexOf('{', index); } // 12. if (endIndex < pattern.length - 1) { arrPush.call(result, { type: 'literal', value: pattern.substr(endIndex + 1) }); } // 13. return result; } /** * When the FormatDateTime abstract operation is called with arguments dateTimeFormat * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number * value), it returns a String value representing x (interpreted as a time value as * specified in ES5, 15.9.1.1) according to the effective locale and the formatting * options of dateTimeFormat. */ function FormatDateTime(dateTimeFormat, x) { var parts = CreateDateTimeParts(dateTimeFormat, x); var result = ''; for (var i = 0; parts.length > i; i++) { var part = parts[i]; result += part.value; } return result; } function FormatToPartsDateTime(dateTimeFormat, x) { var parts = CreateDateTimeParts(dateTimeFormat, x); var result = []; for (var i = 0; parts.length > i; i++) { var part = parts[i]; result.push({ type: part.type, value: part.value }); } return result; } /** * When the ToLocalTime abstract operation is called with arguments date, calendar, and * timeZone, the following steps are taken: */ function ToLocalTime(date, calendar, timeZone) { // 1. Apply calendrical calculations on date for the given calendar and time zone to // produce weekday, era, year, month, day, hour, minute, second, and inDST values. // The calculations should use best available information about the specified // calendar and time zone. If the calendar is "gregory", then the calculations must // match the algorithms specified in ES5, 15.9.1, except that calculations are not // bound by the restrictions on the use of best available information on time zones // for local time zone adjustment and daylight saving time adjustment imposed by // ES5, 15.9.1.7 and 15.9.1.8. // ###TODO### var d = new Date(date), m = 'get' + (timeZone || ''); // 2. Return a Record with fields [[weekday]], [[era]], [[year]], [[month]], [[day]], // [[hour]], [[minute]], [[second]], and [[inDST]], each with the corresponding // calculated value. return new Record({ '[[weekday]]': d[m + 'Day'](), '[[era]]': +(d[m + 'FullYear']() >= 0), '[[year]]': d[m + 'FullYear'](), '[[month]]': d[m + 'Month'](), '[[day]]': d[m + 'Date'](), '[[hour]]': d[m + 'Hours'](), '[[minute]]': d[m + 'Minutes'](), '[[second]]': d[m + 'Seconds'](), '[[inDST]]': false // ###TODO### }); } /** * The function returns a new object whose properties and attributes are set as if * constructed by an object literal assigning to each of the following properties the * value of the corresponding internal property of this DateTimeFormat object (see 12.4): * locale, calendar, numberingSystem, timeZone, hour12, weekday, era, year, month, day, * hour, minute, second, and timeZoneName. Properties whose corresponding internal * properties are not present are not assigned. */ /* 12.3.3 */defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', { writable: true, configurable: true, value: function value() { var prop = void 0, descs = new Record(), props = ['locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName'], internal = this !== null && babelHelpers$1["typeof"](this) === 'object' && getInternalProperties(this); // Satisfy test 12.3_b if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.'); for (var i = 0, max = props.length; i < max; i++) { if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true }; } return objCreate({}, descs); } }); var ls = Intl.__localeSensitiveProtos = { Number: {}, Date: {} }; /** * When the toLocaleString method is called with optional arguments locales and options, * the following steps are taken: */ /* 13.2.1 */ls.Number.toLocaleString = function () { // Satisfy test 13.2.1_1 if (Object.prototype.toString.call(this) !== '[object Number]') throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()'); // 1. Let x be this Number value (as defined in ES5, 15.7.4). // 2. If locales is not provided, then let locales be undefined. // 3. If options is not provided, then let options be undefined. // 4. Let numberFormat be the result of creating a new object as if by the // expression new Intl.NumberFormat(locales, options) where // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3. // 5. Return the result of calling the FormatNumber abstract operation // (defined in 11.3.2) with arguments numberFormat and x. return FormatNumber(new NumberFormatConstructor(arguments[0], arguments[1]), this); }; /** * When the toLocaleString method is called with optional arguments locales and options, * the following steps are taken: */ /* 13.3.1 */ls.Date.toLocaleString = function () { // Satisfy test 13.3.0_1 if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()'); // 1. Let x be this time value (as defined in ES5, 15.9.5). var x = +this; // 2. If x is NaN, then return "Invalid Date". if (isNaN(x)) return 'Invalid Date'; // 3. If locales is not provided, then let locales be undefined. var locales = arguments[0]; // 4. If options is not provided, then let options be undefined. var options = arguments[1]; // 5. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined in 12.1.1) with arguments options, "any", and "all". options = ToDateTimeOptions(options, 'any', 'all'); // 6. Let dateTimeFormat be the result of creating a new object as if by the // expression new Intl.DateTimeFormat(locales, options) where // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3. var dateTimeFormat = new DateTimeFormatConstructor(locales, options); // 7. Return the result of calling the FormatDateTime abstract operation (defined // in 12.3.2) with arguments dateTimeFormat and x. return FormatDateTime(dateTimeFormat, x); }; /** * When the toLocaleDateString method is called with optional arguments locales and * options, the following steps are taken: */ /* 13.3.2 */ls.Date.toLocaleDateString = function () { // Satisfy test 13.3.0_1 if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()'); // 1. Let x be this time value (as defined in ES5, 15.9.5). var x = +this; // 2. If x is NaN, then return "Invalid Date". if (isNaN(x)) return 'Invalid Date'; // 3. If locales is not provided, then let locales be undefined. var locales = arguments[0], // 4. If options is not provided, then let options be undefined. options = arguments[1]; // 5. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined in 12.1.1) with arguments options, "date", and "date". options = ToDateTimeOptions(options, 'date', 'date'); // 6. Let dateTimeFormat be the result of creating a new object as if by the // expression new Intl.DateTimeFormat(locales, options) where // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3. var dateTimeFormat = new DateTimeFormatConstructor(locales, options); // 7. Return the result of calling the FormatDateTime abstract operation (defined // in 12.3.2) with arguments dateTimeFormat and x. return FormatDateTime(dateTimeFormat, x); }; /** * When the toLocaleTimeString method is called with optional arguments locales and * options, the following steps are taken: */ /* 13.3.3 */ls.Date.toLocaleTimeString = function () { // Satisfy test 13.3.0_1 if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()'); // 1. Let x be this time value (as defined in ES5, 15.9.5). var x = +this; // 2. If x is NaN, then return "Invalid Date". if (isNaN(x)) return 'Invalid Date'; // 3. If locales is not provided, then let locales be undefined. var locales = arguments[0]; // 4. If options is not provided, then let options be undefined. var options = arguments[1]; // 5. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined in 12.1.1) with arguments options, "time", and "time". options = ToDateTimeOptions(options, 'time', 'time'); // 6. Let dateTimeFormat be the result of creating a new object as if by the // expression new Intl.DateTimeFormat(locales, options) where // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3. var dateTimeFormat = new DateTimeFormatConstructor(locales, options); // 7. Return the result of calling the FormatDateTime abstract operation (defined // in 12.3.2) with arguments dateTimeFormat and x. return FormatDateTime(dateTimeFormat, x); }; defineProperty(Intl, '__applyLocaleSensitivePrototypes', { writable: true, configurable: true, value: function value() { defineProperty(Number.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Number.toLocaleString }); // Need this here for IE 8, to avoid the _DontEnum_ bug defineProperty(Date.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Date.toLocaleString }); for (var k in ls.Date) { if (hop.call(ls.Date, k)) defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] }); } } }); /** * Can't really ship a single script with data for hundreds of locales, so we provide * this __addLocaleData method as a means for the developer to add the data on an * as-needed basis */ defineProperty(Intl, '__addLocaleData', { value: function value(data) { if (!IsStructurallyValidLanguageTag(data.locale)) throw new Error("Object passed doesn't identify itself with a valid language tag"); addLocaleData(data, data.locale); } }); function addLocaleData(data, tag) { // Both NumberFormat and DateTimeFormat require number data, so throw if it isn't present if (!data.number) throw new Error("Object passed doesn't contain locale data for Intl.NumberFormat"); var locale = void 0, locales = [tag], parts = tag.split('-'); // Create fallbacks for locale data with scripts, e.g. Latn, Hans, Vaii, etc if (parts.length > 2 && parts[1].length === 4) arrPush.call(locales, parts[0] + '-' + parts[2]); while (locale = arrShift.call(locales)) { // Add to NumberFormat internal properties as per 11.2.3 arrPush.call(internals.NumberFormat['[[availableLocales]]'], locale); internals.NumberFormat['[[localeData]]'][locale] = data.number; // ...and DateTimeFormat internal properties as per 12.2.3 if (data.date) { data.date.nu = data.number.nu; arrPush.call(internals.DateTimeFormat['[[availableLocales]]'], locale); internals.DateTimeFormat['[[localeData]]'][locale] = data.date; } } // If this is the first set of locale data added, make it the default if (defaultLocale === undefined) setDefaultLocale(tag); } defineProperty(Intl, '__disableRegExpRestore', { value: function value() { internals.disableRegExpRestore = true; } }); module.exports = Intl; /***/ }), /***/ 2317: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2634); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9936: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6773); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3283: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8020); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 439: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3220); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9872: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5224); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3623: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9278); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1239: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9362); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2435: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(141); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3144: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5288); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6801: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2896); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1100: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8949); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 254: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4014); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 785: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7586); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9708: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8363); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9216: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7767); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6171: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5663); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9022: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(458); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2285: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8453); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9144: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(790); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3478: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2043); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9693: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1294); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8826: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2974); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2407: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2652); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7994: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8832); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5197: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3637); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9803: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1535); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8858: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(875); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8094: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9008); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8563: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7256); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8000: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3892); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7388: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1097); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4630: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3486); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5166: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4001); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8618: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6083); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8133: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9366); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6950: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4517); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 560: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7008); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9273: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(522); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2265: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7078); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5984: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6049); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4854: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4284); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8364: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1527); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6683: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1139); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1158: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6208); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9864: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1501); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3386: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9446); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3234: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1741); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5252: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4813); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7288: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4745); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5277: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9121); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 279: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4521); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9365: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9677); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1415: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2893); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8965: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4110); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1427: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2774); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7027: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6952); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8859: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2467); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3964: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8061); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1138: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7292); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6734: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3979); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1561: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7871); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2553: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2189); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4672: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2336); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5021: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(657); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3262: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(228); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3526); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4899: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7188); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3475: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5490); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4286: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6329); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3163: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6114); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1813: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4484); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9907: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1433); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8789: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3742); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6881: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1148); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3010: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8759); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5810: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7675); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5699: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1099); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4112: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8900); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7832: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2743); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8848: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2356); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8895: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4610); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8526: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5622); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 924: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8815); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3316: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7508); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8677: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9963); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4981: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4050); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4715: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2819); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9862: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2015); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5674: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4734); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7786: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3346); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 330: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9450); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2578: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3813); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1646: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5517); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7585: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9955); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8896: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2946); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6949: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8192); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1854: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1690); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6618: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5770); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1696: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(846); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7694: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7145); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5121: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7607); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6250: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9219); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7001: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5741); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 32: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7464); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4946: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2645); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9953: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9235); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7665: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1542); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6813: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1914); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3007: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6362); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4558: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5906); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5351: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7765); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7702: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4200); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4322: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3848); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4132: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1636); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8252: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2631); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 978: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6725); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5436: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6038); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2908: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7526); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3759: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8601); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2764: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3970); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2568: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6690); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9392: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(466); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9099: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(449); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4697: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9838); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7931: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1874); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5822: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1531); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5322: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3573); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5347: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7380); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1323: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5623); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5071: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1880); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5220: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5418); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 502: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7242); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 255: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(389); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7009: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6332); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7961: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2889); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6483: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(5995); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5386: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3396); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7817: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7829); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4607: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2872); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9786: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9163); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9360: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7366); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 286: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8362); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5768: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7025); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9957: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(671); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8184: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8392); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4601: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8239); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2687: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8658); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8901: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(154); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1595: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4964); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 5233: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1708); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4516: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6344); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2312: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4561); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8856: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1132); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 1799: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9799); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 2859: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4596); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 3468: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(6660); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 4695: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9364); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9033: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(8642); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6053: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(7970); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7139: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9930); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6227: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1767); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 9563: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(1552); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 301: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(3001); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7399: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(9396); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 622: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(2990); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 7381: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4614); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 8734: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var content = __webpack_require__(4832); if(typeof content === 'string') content = [[module.id, content, '']]; var transform; var insertInto; var options = {"hmr":true} options.transform = transform options.insertInto = undefined; var update = __webpack_require__(6723)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), /***/ 6723: /***/ ((module, __unused_webpack_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__(1947); 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); } /***/ }), /***/ 1947: /***/ ((module) => { /** * 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; }; /***/ }), /***/ 2482: /***/ (() => { /* (ignored) */ /***/ }), /***/ 2398: /***/ ((module) => { "use strict"; module.exports = JSON.parse('["3g2","3ga","3gp","7z","aa","aac","ac","accdb","accdt","ace","adn","ai","aif","aifc","aiff","ait","amr","ani","apk","app","applescript","asax","asc","ascx","asf","ash","ashx","asm","asmx","asp","aspx","asx","au","aup","avi","axd","aze","bak","bash","bat","bin","blank","bmp","bowerrc","bpg","browser","bz2","bzempty","c","cab","cad","caf","cal","cd","cdda","cer","cfg","cfm","cfml","cgi","chm","class","cmd","code-workspace","codekit","coffee","coffeelintignore","com","compile","conf","config","cpp","cptx","cr2","crdownload","crt","crypt","cs","csh","cson","csproj","css","csv","cue","cur","dart","dat","data","db","dbf","deb","default","dgn","dist","diz","dll","dmg","dng","doc","docb","docm","docx","dot","dotm","dotx","download","dpj","ds_store","dsn","dtd","dwg","dxf","editorconfig","el","elf","eml","enc","eot","eps","epub","eslintignore","exe","f4v","fax","fb2","fla","flac","flv","fnt","folder","fon","gadget","gdp","gem","gif","gitattributes","gitignore","go","gpg","gpl","gradle","gz","h","handlebars","hbs","heic","hlp","hs","hsl","htm","html","ibooks","icns","ico","ics","idx","iff","ifo","image","img","iml","in","inc","indd","inf","info","ini","inv","iso","j2","jar","java","jpe","jpeg","jpg","js","json","jsp","jsx","key","kf8","kmk","ksh","kt","kts","kup","less","lex","licx","lisp","lit","lnk","lock","log","lua","m","m2v","m3u","m3u8","m4","m4a","m4r","m4v","map","master","mc","md","mdb","mdf","me","mi","mid","midi","mk","mkv","mm","mng","mo","mobi","mod","mov","mp2","mp3","mp4","mpa","mpd","mpe","mpeg","mpg","mpga","mpp","mpt","msg","msi","msu","nef","nes","nfo","nix","npmignore","ocx","odb","ods","odt","ogg","ogv","ost","otf","ott","ova","ovf","p12","p7b","pages","part","pcd","pdb","pdf","pem","pfx","pgp","ph","phar","php","pid","pkg","pl","plist","pm","png","po","pom","pot","potx","pps","ppsx","ppt","pptm","pptx","prop","ps","ps1","psd","psp","pst","pub","py","pyc","qt","ra","ram","rar","raw","rb","rdf","rdl","reg","resx","retry","rm","rom","rpm","rpt","rsa","rss","rst","rtf","ru","rub","sass","scss","sdf","sed","sh","sit","sitemap","skin","sldm","sldx","sln","sol","sphinx","sql","sqlite","step","stl","svg","swd","swf","swift","swp","sys","tar","tax","tcsh","tex","tfignore","tga","tgz","tif","tiff","tmp","tmx","torrent","tpl","ts","tsv","ttf","twig","txt","udf","vb","vbproj","vbs","vcd","vcf","vcs","vdi","vdx","vmdk","vob","vox","vscodeignore","vsd","vss","vst","vsx","vtx","war","wav","wbk","webinfo","webm","webp","wma","wmf","wmv","woff","woff2","wps","wsf","xaml","xcf","xfl","xlm","xls","xlsm","xlsx","xlt","xltm","xltx","xml","xpi","xps","xrb","xsd","xsl","xspf","xz","yaml","yml","z","zip","zsh"]'); /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ id: moduleId, /******/ loaded: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/amd options */ /******/ (() => { /******/ __webpack_require__.amdO = {}; /******/ })(); /******/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/global */ /******/ (() => { /******/ __webpack_require__.g = (function() { /******/ if (typeof globalThis === 'object') return globalThis; /******/ try { /******/ return this || new Function('return this')(); /******/ } catch (e) { /******/ if (typeof window === 'object') return window; /******/ } /******/ })(); /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/node module decorator */ /******/ (() => { /******/ __webpack_require__.nmd = (module) => { /******/ module.paths = []; /******/ if (!module.children) module.children = []; /******/ return module; /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; // NAMESPACE OBJECT: ./node_modules/absol/src/JSX/dom.js var dom_namespaceObject = {}; __webpack_require__.r(dom_namespaceObject); __webpack_require__.d(dom_namespaceObject, { "domVisitor": () => (domVisitor), "parseDom": () => (parseDom) }); // NAMESPACE OBJECT: ./node_modules/absol/src/Math/measurements.js var measurements_namespaceObject = {}; __webpack_require__.r(measurements_namespaceObject); __webpack_require__.d(measurements_namespaceObject, { "PAGE_SIZE_IN_DOT": () => (PAGE_SIZE_IN_DOT), "PAGE_SIZE_IN_POINT": () => (PAGE_SIZE_IN_POINT), "centimeterToPx": () => (centimeterToPx), "dotToPoint": () => (dotToPoint), "feetToMeter": () => (feetToMeter), "latLngDistance": () => (latLngDistance), "latLngRectFromCenter": () => (latLngRectFromCenter), "meterToFeet": () => (meterToFeet), "meterToInch": () => (meterToInch), "meterToMile": () => (meterToMile), "meterToYard": () => (meterToYard), "mileToMeter": () => (mileToMeter), "pointToDot": () => (pointToDot), "pxToCentimeter": () => (pxToCentimeter), "yardToMeter": () => (yardToMeter) }); // EXTERNAL MODULE: ./node_modules/atob/browser-atob.js var browser_atob = __webpack_require__(9892); var browser_atob_default = /*#__PURE__*/__webpack_require__.n(browser_atob); // EXTERNAL MODULE: ./node_modules/btoa/index.js var btoa = __webpack_require__(706); var btoa_default = /*#__PURE__*/__webpack_require__.n(btoa); // EXTERNAL MODULE: ./node_modules/intl/index.js var intl = __webpack_require__(8267); var intl_default = /*#__PURE__*/__webpack_require__.n(intl); ;// CONCATENATED MODULE: ./node_modules/absol/src/Polyfill/polyfill.js if (!('Intl' in window)){ window.Intl = (intl_default()); } if (!('atob' in window)) { window.atob = (browser_atob_default()); } if (!('btoa' in window)) { window.btoa = (btoa_default()); } !function (e, n) { "object" == typeof exports && "undefined" != "object" ? n() : "function" == typeof define && __webpack_require__.amdO ? 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 __webpack_require__.g) return __webpack_require__.g; 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; }; } })(); // EXTERNAL MODULE: ./node_modules/absol/src/Polyfill/gps.js var gps = __webpack_require__(1942); ;// CONCATENATED MODULE: ./node_modules/absol/src/polyfill.js // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/EventEmitter.js var EventEmitter = __webpack_require__(863); // EXTERNAL MODULE: ./node_modules/absol/src/Detector/BrowserDetector.js var BrowserDetector = __webpack_require__(9399); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/JSPath.js var JSPath = __webpack_require__(8706); // EXTERNAL MODULE: ./node_modules/absol/src/JSMaker/TemplateString.js var TemplateString = __webpack_require__(369); ;// 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 */ const 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 */ const 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 */ const 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 */ const 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 */ const 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 */ const 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 */ const 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/* default.parse */.Z.parse(node.attributes[key]).toJSCode(); }).join(', ') + '}'); } if (node.attributes['az-props']) { body.push('props: ' + TemplateString/* default.parse */.Z.parse(node.attributes['az-props']).toJSCode() ); } if (node.attributes['az-data']) { body.push('data: ' + TemplateString/* default.parse */.Z.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/* default.parse */.Z.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 */ const JSMaker_TemplateXML = (TemplateXML); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var HTML5_Dom = __webpack_require__(6628); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Svg.js var Svg = __webpack_require__(6821); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); // EXTERNAL MODULE: ./node_modules/absol/src/Color/Color.js var Color = __webpack_require__(257); // EXTERNAL MODULE: ./node_modules/absol/src/Network/IFrameBridge.js var IFrameBridge = __webpack_require__(3154); ;// CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/templates/document.tpl /* harmony default export */ const 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 */ const 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 */ const 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 */ const DocxTpl = ({ document: new Function('pageSetting', 'return ' + TemplateString/* default.parse */.Z.parse(templates_document).toJSCode()), mht_document: new Function('htmlSource', 'contentParts', 'return ' + TemplateString/* default.parse */.Z.parse(mht_document).toJSCode()), mht_part: new Function('contentType', 'contentEncoding', 'contentLocation', 'encodedContent', 'return ' + TemplateString/* default.parse */.Z.parse(mht_part).toJSCode()) }); ;// CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/assets/content_types.xml /* harmony default export */ const content_types = ("<?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"); ;// CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/assets/rels.xml /* harmony default export */ const rels = ("<?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"); ;// CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/assets/document.xml.rels /* harmony default export */ const document_xml = ("<?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"); ;// CONCATENATED MODULE: ./node_modules/absol/src/JSDocx/JSDocx.js var JSZip = window.JSZip; 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.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.mht_document(htmlSource, imageContentParts.join('\n') ); }; /** * @param {JSZip} zip */ JSDocx._generateDocument = function (zip) { return zip.generateAsync({ type: 'arraybuffer' }).then(function (buffer) { var props = {}; if (__webpack_require__.g.Blob) props.blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); else if (__webpack_require__.g.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.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', content_types); zip.folder('_rels') .file('.rels', rels); zip.folder('word') .file('document.xml', DocxTpl.document(pageSetting)); zip.folder('word') .file('document.xml', JSDocx._renderDocumentFile(pageSetting)) .file('afchunk.mht', JSDocx._getMHTdocument(htmlSource)) .folder('_rels') .file('document.xml.rels', document_xml); return zip; }; JSDocx.fromHTMLCode = function (html, options) { var zip = new JSZip(); 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/* default.ShareInstance.$ */.ZP.ShareInstance.$(element); } if (!element) throw new Error('@param element must be HTMLElement'); var preRender; if (!isWorkingElement) { preRender = HTML5_Dom/* default.ShareInstance._ */.ZP.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/* default.ShareInstance.$ */.ZP.ShareInstance.$('script', preRender, function (e) { e.parentElement.removeChild(e); return false; }); var imageTask = []; HTML5_Dom/* default.ShareInstance.$ */.ZP.ShareInstance.$('img', preRender, function (e) { if (e.src && !e.src.match(/data:/)) { var task = HTML5_Dom/* default.imageToCanvas */.ZP.imageToCanvas(e).then(function (canvas) { var newSrc = canvas.toDataURL(); e.src = newSrc; }); imageTask.push(task); } return false; }); HTML5_Dom/* default.ShareInstance.$ */.ZP.ShareInstance.$('svg', preRender, function (e) { var task = Svg/* default.svgToCanvas */.ZP.svgToCanvas(e).then(function (canvas) { var newSrc = canvas.toDataURL(); var image = HTML5_Dom/* default.ShareInstance._ */.ZP.ShareInstance._('img'); image.src = newSrc; HTML5_Dom/* default.ShareInstance.$ */.ZP.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 */ const JSDocx_JSDocx = (JSDocx); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringGenerate.js var stringGenerate = __webpack_require__(1334); ;// CONCATENATED MODULE: ./node_modules/absol/src/Network/Broadcast.js // it can be replace BroadcastChanel function Broadcast(channel, id) { EventEmitter/* default.call */.ZP.call(this); this.channel = channel; this.id = id || (0,stringGenerate.randomIdent)(32); this._ev_message = this._ev_message.bind(this); this._ev_storage = this._ev_storage.bind(this); this._init(); } OOP/* default.mixClass */.ZP.mixClass(Broadcast, EventEmitter/* default */.ZP); 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 */ const Network_Broadcast = (Broadcast); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Text.js var Text = __webpack_require__(5827); // EXTERNAL MODULE: ./node_modules/absol/src/Converter/file.js var file = __webpack_require__(4574); // EXTERNAL MODULE: ./node_modules/absol/src/Converter/base64.js var base64 = __webpack_require__(9959); ;// 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 */ const Time_Alarm = (Alarm); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/Ref.js var Ref = __webpack_require__(4446); // EXTERNAL MODULE: ./node_modules/absol/src/Network/XHR.js var XHR = __webpack_require__(6069); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringFormat.js var stringFormat = __webpack_require__(6382); // EXTERNAL MODULE: ./node_modules/absol/src/JSX/attribute.js + 1 modules var JSX_attribute = __webpack_require__(2953); ;// 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 = (0,JSX_attribute.parseStyleAttr)(attribute.value); } else if (attribute.key == 'class') { var classList = (0,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 accept(node, ac) { return node && visitor[node.type] && visitor[node.type](node, ac); } return { acept: accept, accept: accept, 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/AppPattern/Context.js var Context = __webpack_require__(5721); ;// 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() { Context/* default.call */.Z.call(this); } Object.defineProperties(Activity.prototype, Object.getOwnPropertyDescriptors(Context/* default.prototype */.Z.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 */ const AppPattern_Activity = (Activity); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/ContextManager.js var ContextManager = __webpack_require__(6372); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Application.js /** * @class */ function Application() { Context/* default.call */.Z.call(this); this.activityStack = []; /** @type {Activity} */ this.currentActivity = null; } Object.defineProperties(Application.prototype, Object.getOwnPropertyDescriptors(Context/* default.prototype */.Z.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 */ const AppPattern_Application = (Application); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/VarScope.js var VarScope = __webpack_require__(1312); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/Fragment.js + 1 modules var Fragment = __webpack_require__(4861); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Rectangle.js var Rectangle = __webpack_require__(2759); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Vec2.js var Vec2 = __webpack_require__(557); // EXTERNAL MODULE: ./node_modules/absol/src/Math/int.js var Math_int = __webpack_require__(7988); ;// 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 ((0,Math_int.distance)(this.x, this.y, p.x, p.y) > r) return false; return (0,Math_int.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 Vec2/* default */.Z(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 Vec2/* default */.Z(x, y); }; Arc.make = function (x, y, r, start, end) { return new Arc(x, y, r, start, end); }; /* harmony default export */ const Math_Arc = (Arc); ;// CONCATENATED MODULE: ./node_modules/absol/src/Math/NumRange.js /** * * @param {Number} start * @param {Number} length */ 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 {NumRange} */ 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 */ const Math_NumRange = (NumRange); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Clipboard.js var Clipboard = __webpack_require__(5164); // EXTERNAL MODULE: ./node_modules/absol/src/DataStructure/Heap.js var Heap = __webpack_require__(5491); // EXTERNAL MODULE: ./node_modules/absol/src/Time/datetime.js var datetime = __webpack_require__(7807); // EXTERNAL MODULE: ./node_modules/absol/src/AppPattern/CMDRunner.js var CMDRunner = __webpack_require__(2243); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Element.js var Element = __webpack_require__(1487); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElementNS.js var AElementNS = __webpack_require__(2510); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DomSignal.js var DomSignal = __webpack_require__(5150); ;// CONCATENATED MODULE: ./node_modules/absol/src/Cookie/CookieStore.js function CookieStore(converter) { this.converter = converter || base64.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 */ const 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 HTML5_ResizeSystem = __webpack_require__(6700); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Mat3.js var Mat3 = __webpack_require__(9846); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/LanguageSystem.js var LanguageSystem = __webpack_require__(6013); ;// CONCATENATED MODULE: ./node_modules/absol/src/Code/FlagManager.js /*** * @extends EventEmitter * @constructor */ function FlagManager() { EventEmitter/* default.call */.ZP.call(this); this.flag = {}; this.readSetting(); } OOP/* default.mixClass */.ZP.mixClass(FlagManager, EventEmitter/* default */.ZP); 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 */ const Code_FlagManager = (new FlagManager()); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); ;// CONCATENATED MODULE: ./node_modules/absol/src/Code/ALogger.js Code_FlagManager.add('ABSOL_DEBUG', false); function ALogger() { Code_FlagManager.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/* default */.Z; this[name] = cFunction || noop/* default */.Z; }.bind(this)); }; ALogger.prototype.log = noop/* default */.Z; ALogger.prototype.table = noop/* default */.Z; ALogger.prototype.error = noop/* default */.Z; ALogger.prototype.warn = noop/* default */.Z; (window || __webpack_require__.g).ALogger = new ALogger(); /* harmony default export */ const Code_ALogger = (ALogger); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/ObservableArray.js /*** * @augments EventEmitter * @extends Array * @constructor */ function ObservableArray(array) { EventEmitter/* default.call */.ZP.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/* default.prototype */.ZP.prototype).forEach(function (name) { if (!(name in ObservableArray.prototype)) { Object.defineProperty(ObservableArray.prototype, name, { configurable: false, enumerable: false, writable: false, value: EventEmitter/* default.prototype */.ZP.prototype[name] }); } }); /* harmony default export */ const AppPattern_ObservableArray = (ObservableArray); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/ObservableStruct.js /*** * @extends EventEmitter * @param {Object} o * @constructor */ function ObservableStruct(o) { EventEmitter/* default.call */.ZP.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/* default.prototype */.ZP.prototype).forEach(function (name) { if (!(name in ObservableStruct.prototype)) { Object.defineProperty(ObservableStruct.prototype, name, { configurable: false, enumerable: false, writable: false, value: EventEmitter/* default.prototype */.ZP.prototype[name] }); } }); /* harmony default export */ const AppPattern_ObservableStruct = (ObservableStruct); // EXTERNAL MODULE: ./node_modules/absol/src/Code/safeThrow.js var safeThrow = __webpack_require__(5650); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/circuit/CCBlock.js /*** * * @param {{id?:string}=} opt * @constructor */ function CCBlock(opt) { opt = opt || {}; this.id = opt.id || (0,stringGenerate.randomIdent)(16); Object.defineProperty(this, '__cc_listener__', { enumerable: false, configurable: true, writable: false, value: {} }); Object.defineProperty(this, '__cc_line_list_by_id__', { enumerable: false, configurable: true, writable: false, value: {} }); } /*** * * @param {string} pinName * @param {function} listener * @return {CCBlock} */ CCBlock.prototype.pinOn = function (pinName, listener) { var cbList; if (this.__cc_listener__[pinName]) { cbList = this.__cc_listener__[pinName]; } else { cbList = []; this.__cc_listener__[pinName] = cbList; } if (cbList.indexOf(listener) < 0) { cbList.push(listener); } else { console.warn("Duplicate pin listener!"); } return this; }; CCBlock.prototype.pinOff = function (pinName, listener) { if (!this.__cc_listener__[pinName]) return this; var cbList = this.__cc_listener__[pinName]; var cbIdx = cbList.indexOf(listener); if (cbIdx >= 0) { cbList.splice(cbIdx); } return this; }; CCBlock.prototype.pinFire = function (pinName) { if (!this.__cc_listener__[pinName]) return this; var cbList = this.__cc_listener__[pinName].slice(); if (cbList.length === 0) return; //avoid call pinGetValue var args = Array.prototype.slice.call(arguments, 1); if (args.length === 0 && this.pinHandlers[pinName] && this.pinHandlers[pinName].get && cbList.length > 0) args.push(this.pinGetValue(pinName)); for (var i = 0; i < cbList.length; ++i) { try { cbList[i].apply(this, args); } catch (e) { (0,safeThrow/* default */.Z)(e); } } }; CCBlock.prototype.pinFireAll = function () { var pinNames = Object.keys(this.pinHandlers); var pinName; for (var i = 0; i < pinNames.length; ++i) { pinName = pinNames[i]; if (this.pinHandlers[pinName] && this.pinHandlers[pinName].get) this.pinFire(pinName); } }; CCBlock.prototype.pinReceives = function (pinName) { var args = Array.prototype.slice.call(arguments, 1); if (this.pinHandlers[pinName] && this.pinHandlers[pinName].receives) { this.pinHandlers[pinName].receives.apply(this, args); } }; CCBlock.prototype.pinGetValue = function (pinName) { var args = Array.prototype.slice.call(arguments, 1); if (this.pinHandlers[pinName] && this.pinHandlers[pinName].get) { return this.pinHandlers[pinName].get.apply(this, args); } return undefined; }; CCBlock.prototype.pinGetDescriptor = function (pinName) { var args = Array.prototype.slice.call(arguments, 1); var descriptor = this.pinHandlers[pinName] && this.pinHandlers[pinName].descriptor; if (descriptor) { if (typeof descriptor === "function") return this.pinHandlers[pinName].get.apply(this, args); return descriptor; } return undefined; }; Object.defineProperty(CCBlock.prototype, 'pinLines', { get: function () { var lineList = this.__cc_line_list_by_id__; return Object.keys(lineList).map(function (id) { return lineList[id]; }); } }); CCBlock.prototype.pinHandlers = {}; /* harmony default export */ const circuit_CCBlock = (CCBlock); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/circuit/CCLine.js /*** * * @param {CCBlock} u * @param {string} uPinName * @param {CCBlock} v * @param {string} vPinName * @param {boolean=} twoWay * @param {{id?:string}=} opt * @constructor */ function CCLine(u, uPinName, v, vPinName, twoWay, opt) { opt = opt || {}; twoWay = !!twoWay; Object.defineProperty(this, 'id', { enumerable: true, writable: false, value: opt.id || (0,stringGenerate.randomIdent)(32) }); Object.defineProperty(this, 'u', { enumerable: true, writable: false, value: u }); Object.defineProperty(this, 'v', { enumerable: true, writable: false, value: v }); Object.defineProperty(this, 'uPinName', { enumerable: true, writable: false, value: uPinName }); Object.defineProperty(this, 'vPinName', { enumerable: true, writable: false, value: vPinName }); Object.defineProperty(this, 'twoWay', { enumerable: true, writable: false, value: twoWay }); this.vToU = this.vToU.bind(this); this.uToV = this.uToV.bind(this); this.u.pinOn(this.uPinName, this.uToV); if (this.twoWay) this.v.pinOn(this.vPinName, this.vToU); this.u.__cc_line_list_by_id__[this.id] = this; this.v.__cc_line_list_by_id__[this.id] = this; } CCLine.prototype.remove = function () { this.u.pinOff(this.uPinName, this.uToV); if (this.twoWay) this.v.pinOff(this.vPinName, this.vToU); delete this.u.__cc_line_list_by_id__[this.id]; delete this.v.__cc_line_list_by_id__[this.id]; }; CCLine.prototype.uToV = function () { var args = [this.vPinName].concat(Array.prototype.slice.call(arguments)); this.v.pinReceives.apply(this.v, args); }; CCLine.prototype.vToU = function () { var args = [this.uPinName].concat(Array.prototype.slice.call(arguments)); this.u.pinReceives.apply(this.u, args); }; /* harmony default export */ const circuit_CCLine = (CCLine); // EXTERNAL MODULE: ./node_modules/absol/src/Network/FileSaver.js var FileSaver = __webpack_require__(5447); // EXTERNAL MODULE: ./node_modules/absol/src/Network/Thread.js + 1 modules var Thread = __webpack_require__(6672); // EXTERNAL MODULE: ./node_modules/absol/src/JSMaker/generator.js var generator = __webpack_require__(2914); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/ShareConfiguration.js /** * * @param {{storageKey: string}} opt * @constructor */ function ShareConfiguration(opt) { this.opt = Object.assign({ storageKey: "AS_SHARE_CONFIGURATION", }, opt); Object.defineProperty(this, 'data', { value: {}, enumerable: true, writable: false }); Object.defineProperty(this, '__listener__', { value: {}, enumerable: false, writable: false }); this.to = -1; this._load(); } ShareConfiguration.prototype.version = 1; ShareConfiguration.prototype._load = function () { var js = localStorage.getItem(this.opt.storageKey); if (!js) return; try { var obj = (new Function('return ' + js))(); if (obj && obj.version === this.version) { Object.assign(this.data, obj.data || {}); } } catch (e) { } }; /*** * * @param {string} key * @param {*|undefined} value * @returns this */ ShareConfiguration.prototype.set = function (key, value) { var prev = this.data[key]; if (value === undefined) { delete this.data[key]; } else { this.data[key] = value; } if (value !== prev) { this.emit(key, value, this); } return this; }; /*** *@returns this */ ShareConfiguration.prototype.save = function () { clearTimeout(this.to); var obj = { data: this.data, version: this.version }; var js = (0,generator/* generateJSVariable */.NQ)(obj); localStorage.setItem(this.opt.storageKey, js); }; /*** *@returns this */ ShareConfiguration.prototype.saveDelay = function () { clearTimeout(this.to); this.to = setTimeout(() => this.save(), 100); }; ShareConfiguration.prototype.emit = function (key) { var args = Array.prototype.slice.call(arguments, 1); var self = this; if (this.__listener__[key]) { this.__listener__[key].slice().forEach(function (f) { try { f.apply(self, args); } catch (err) { (0,safeThrow/* default */.Z)(err); } }); } return this; }; /*** * * @param {string|Object} key * @param {function=}listener * @return {ShareConfiguration} */ ShareConfiguration.prototype.on = function (key, listener) { if (typeof key === "string") { if (!this.__listener__[key]) this.__listener__[key] = []; if (this.__listener__[key].indexOf(listener) < 0) { this.__listener__[key].push(listener); } } else if (typeof key === "object") { for (var key1 in key) { this.on(key1, key[key1]); } } return this; }; /*** * * @param {string|Object} key * @param {function=}listener * @return {ShareConfiguration} */ ShareConfiguration.prototype.off = function (key, listener) { if (typeof key === "string" && this.__listener__[key]) { var idx = this.__listener__[key].indexOf(listener); if (idx >= 0) { this.__listener__[key].splice(idx, 1); } } else if (typeof key === "object") { for (var key1 in key) { this.off(key1, key[key1]); } } return this; }; /*** * * @param {string} key * @param {*=} defaultValue * @return {*} */ ShareConfiguration.prototype.get = function (key, defaultValue) { var value = this.data[key]; if (value === undefined) return defaultValue; return value; }; ShareConfiguration.prototype.contains = function (key) { return this.data[key] !== undefined; }; ShareConfiguration.instance = new ShareConfiguration(); /* harmony default export */ const AppPattern_ShareConfiguration = (ShareConfiguration); // EXTERNAL MODULE: ./node_modules/absol/src/DataStructure/Array.js var DataStructure_Array = __webpack_require__(7835); ;// CONCATENATED MODULE: ./node_modules/absol/src/Network/url.js /*** * * @param {string} current * @param {string} target * @return {string} */ function resolveUrl(current, target) { current = current.trim(); target = target.trim(); if (target.match(/[a-z]+:\/\//)) return target; var origin = current.match(/^[a-z]+:\/\/[a-zA-Z0-9._]+(:[0-9]+)?/); if (origin) origin = origin[0]; var cPath = current.replace(/^[a-z]+:\/\/[a-zA-Z0-9._]+(:[0-9]+)?/, ''); if (target.startsWith('/')) return origin ? origin + target : target; var cParts = cPath.split('/'); cParts.pop(); var tParts = target.split('/'); var t; //todo: normal current while (tParts.length > 0) { t = tParts.shift().trim(); if (t === '..') { cParts.pop(); } else if (t !== '.' && t.length > 0) { cParts.push(t); } } if (origin) { if (cParts[0].length === 0) cParts.shift(); cParts.unshift(origin) } return cParts.join('/'); } ;// CONCATENATED MODULE: ./node_modules/absol/src/Network/remoteRequireNodeAsync.js function remoteRequireNodeAsync(filename, entry) { var moduleCache = {}; var factors = {}; var resources = {}; function getFileName(path) { return path.split('/').pop(); } function getExtension(fileName) { return fileName.split('.').slice(1).pop() || null; } function require(currentLoc, fn) { var fullPath = resolveUrl(currentLoc, fn); if (factors[fullPath + '.js']) fullPath = fullPath + '.js'; var filename = getFileName(fullPath);//__filename var module = moduleCache[fullPath]; if (!module) { if (factors[fullPath]) { module = { 'exports': {} }; moduleCache[fullPath] = module; factors[fullPath](require.bind(null, fullPath), module, module.exports, resolveUrl(fullPath, '.'), filename, window) } else { throw new Error("Could not find module :" + fullPath); } } return module.exports; } function findAllRequire(s) { var regex0 = /[^a-zA-Z_.0-9]require\s*\([^\)]+\)/gm; var regex1 = /require\s*\([^)]+\)/gm; var regex2 = /\([^)]+\)/gm; var es = s.match(regex0); if (!es) return []; return es.map(function (s) { s = s.match(regex1)[0]; s = s.match(regex2)[0]; s = s.replace(/['"()]/gm, ''); if (!getExtension(getFileName(s))) s += '.js'; return s; }); } function fetchResource(fullPath) { if (resources[fullPath]) return Promise.resolve(); var resource = {}; resources[fullPath] = resource; var ext = getExtension(getFileName(fullPath)); resource.sync = fetch(fullPath, { cache: "no-cache" }).then(res => res.text()).then(text => { resource.text = text; switch (ext) { case 'js': factors[fullPath] = new Function('require', 'module', 'exports', '__dir', '__filename', 'global', text) break; case 'json': factors[fullPath] = true; moduleCache[fullPath] = { exports: JSON.parse(text) }; break; default: factors[fullPath] = true; moduleCache[fullPath] = { exports: text }; } var requiredNodes; if (ext === 'js') { requiredNodes = findAllRequire(text); var syncs = requiredNodes.map(ident => fetchResource(resolveUrl(fullPath, ident))); return Promise.all(syncs); } }); return resource.sync; } var absoluteEntry = location.href; function requireCode(filename, entry, fileList) { if (!fileList) fileList = {}; if (!entry) entry = absoluteEntry; var fullPath = resolveUrl(entry, filename); if (fileList[fullPath] === 'pending') { return Promise.resolve(); } else if (fileList[fullPath] !== undefined && fileList[fullPath] !== 'pending') { return Promise.resolve(); } fileList[fullPath] = true; fileList[fullPath] = 'pending'; return fetch(fullPath, { cache: "no-cache" }).then(res => res.text()).then(text => { fileList[fullPath] = text; var requirePath = findAllRequire(text); var waitCode = requirePath.map(function (e) { return requireCode(e, fullPath, fileList); }); return Promise.all(waitCode).then(function () { return fileList; }); }); } if (!entry) entry = absoluteEntry; if (!getExtension(filename)) filename += '.js'; var fullPath = resolveUrl(entry, filename); return fetchResource(fullPath).then(() => { return require('', fullPath); }); } // EXTERNAL MODULE: ./node_modules/absol/src/Math/Polygon.js var Polygon = __webpack_require__(9894); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DynamicCSS.js var HTML5_DynamicCSS = __webpack_require__(488); // EXTERNAL MODULE: ./node_modules/absol/src/Pharse/DPParser.js + 1 modules var DPParser = __webpack_require__(3281); // EXTERNAL MODULE: ./node_modules/absol/src/SCLang/SCGrammar.js var SCGrammar = __webpack_require__(3224); ;// CONCATENATED MODULE: ./node_modules/absol/src/SCLang/SCParser.js /*** * @type {DPParser} */ var SCParser = new DPParser/* default */.Z(SCGrammar/* default */.Z); /* harmony default export */ const SCLang_SCParser = (SCParser); ;// CONCATENATED MODULE: ./node_modules/absol/src/SCLang/SCOperatorExecutor.js function OperatorExecutor() { this.oFXYs = {}; this.oFXs = {}; } /*** * * @param {string} operator * @param {function(x, y, next: function):void} fxy */ OperatorExecutor.prototype.addBinaryOperator = function (operator, fxy) { if (!this.oFXYs[operator]) this.oFXYs[operator] = []; this.oFXYs[operator].unshift(fxy); }; /*** * * @param {string} operator * @param {function(x, next: function):void} fx */ OperatorExecutor.prototype.addUnaryOperator = function (operator, fx) { if (!this.oFXs[operator]) this.oFXs[operator] = []; this.oFXs[operator].unshift(fx); }; OperatorExecutor.prototype.executeBinaryOperator = function (operator, x, y) { var fXYs = this.oFXYs[operator]; var i, next; if (fXYs) { i = -1; next = () => { ++i; if (i >= fXYs.length) throw { message: 'Could not match any function for operator' + operator, x: x, y: y }; return fXYs[i](x, y, next); }; return next(); } else { throw { message: 'Could not find operate: ' + operator }; } }; OperatorExecutor.prototype.executeUnaryOperator = function (operator, x) { var fXs = this.oFXs[operator]; var i, next; if (fXs) { i = -1; next = () => { ++i; if (i >= fXs.length) throw { message: 'Could not match any function for operator' + operator, x: x }; return fXs[i](x, next); }; return next(); } else { throw { message: 'Could not find operate: ' + operator }; } }; /*** * @type {OperatorExecutor} */ var SCOperatorExecutor = new OperatorExecutor(); /* harmony default export */ const SCLang_SCOperatorExecutor = (SCOperatorExecutor); ;// CONCATENATED MODULE: ./node_modules/absol/src/SCLang/SCOperators.js function ADD(a, b) { var type_a = typeof a; var type_b = typeof b; if (type_a === "number") { if (type_b === "number" || type_b === 'string') return a + b; } if (type_a === "undefined" && type_b === "undefined") return undefined; if (type_a === 'string') { if (type_b === "string") return a + b; if (b instanceof Date) return a + (0,datetime.formatDateTime)(b, 'dd/MM/yyyy'); if (type_b === "number") return a + b; } if (a instanceof Date) { if (type_b === 'number') { return new Date(a.getTime() + datetime.MILLIS_PER_DAY * b); } else if (type_b === 'string') { return (0,datetime.formatDateTime)(a, 'dd/MM/yyyy') + b; } } if (a.add && a.constructor === b.constructor) return a.add(b); console.error("Can not add: ", a, b); return NaN; } SCLang_SCOperatorExecutor.addBinaryOperator('+', ADD); function SUB(a, b) { var type_a = typeof a; var type_b = typeof b; if (type_a === "number" && type_b === "number") { return a - b; } if (type_a === "undefined" && type_b === "undefined") return undefined; if (a instanceof Date) { if (type_b === 'number') { return new Date(a.getTime() - datetime.MILLIS_PER_DAY * b); } } if (a.sub && a.constructor === b.constructor) return a.sub(b); console.error("Can not sub: ", a, b); return NaN; } SCLang_SCOperatorExecutor.addBinaryOperator('-', SUB); function MUL(a, b) { var type_a = typeof a; var type_b = typeof b; if (type_a === "number" && type_b === "number") { return a * b; } if (type_a === "undefined" && type_b === "undefined") return undefined; if (type_a === "string" && type_b === "number") { return a.repeat(b); } console.error("Can not mul: ", a, b); return NaN; } SCLang_SCOperatorExecutor.addBinaryOperator('*', MUL); function DIV(a, b) { var type_a = typeof a; var type_b = typeof b; if (type_a === "number" && type_b === "number") { return a / b; } if (type_a === "undefined" && type_b === "undefined") return undefined; console.error("Can not div: ", a, b); return NaN; } SCLang_SCOperatorExecutor.addBinaryOperator('/', DIV); function MOD(x, m) { return x % m; } SCLang_SCOperatorExecutor.addBinaryOperator('%', MOD); function NEGATIVE(x) { return -x; } SCLang_SCOperatorExecutor.addUnaryOperator('-', NEGATIVE); function POSITIVE(x) { return x; } SCLang_SCOperatorExecutor.addUnaryOperator('+', POSITIVE); function NOT(x) { return !x; } SCLang_SCOperatorExecutor.addUnaryOperator('!', NOT); function LESS_THAN(a, b) { if (a instanceof Date) a = a.getTime(); if (b instanceof Date) b = b.getTime(); return (a < b); } SCLang_SCOperatorExecutor.addBinaryOperator('<', LESS_THAN); function MORE_THAN(a, b) { if (a instanceof Date) a = a.getTime(); if (b instanceof Date) b = b.getTime(); return (a > b); } SCLang_SCOperatorExecutor.addBinaryOperator('>', MORE_THAN); function EQUAL(a, b) { if (a instanceof Date) a = a.getTime(); if (b instanceof Date) b = b.getTime(); return (a == b); } SCLang_SCOperatorExecutor.addBinaryOperator('==', EQUAL); function EXTRACT_EQUAL(a, b) { if (a instanceof Date) a = a.getTime(); if (b instanceof Date) b = b.getTime(); return (a === b); } SCLang_SCOperatorExecutor.addBinaryOperator('===', EXTRACT_EQUAL); function LESS_AND_EQUAL(a, b) { if (a instanceof Date) a = a.getTime(); if (b instanceof Date) b = b.getTime(); return (a <= b); } SCLang_SCOperatorExecutor.addBinaryOperator('<=', LESS_AND_EQUAL); function MORE_AND_EQUAL(a, b) { if (a instanceof Date) a = a.getTime(); if (b instanceof Date) b = b.getTime(); return (a >= b); } SCLang_SCOperatorExecutor.addBinaryOperator('>=', MORE_AND_EQUAL); function NOT_EQUAL(a, b) { if (a instanceof Date) a = a.getTime(); if (b instanceof Date) b = b.getTime(); return (a != b); } SCLang_SCOperatorExecutor.addBinaryOperator('!=', NOT_EQUAL); function AND(a, b) { return a && b; } SCLang_SCOperatorExecutor.addBinaryOperator('&&', AND); function OR(a, b) { return a || b; } SCLang_SCOperatorExecutor.addBinaryOperator('||', OR); ;// CONCATENATED MODULE: ./node_modules/absol/src/AppPattern/Const.js /*** * * @param {T} value * @param {*=} type * @constructor * @template T */ function Const(value, type) { this.value = value; this.type = type; } Const.prototype.toString = function () { return this.value + ''; }; /*** * * @return {T} */ Const.prototype.valueOf = function () { return this.value; }; /** * * @return {T} */ Const.prototype.get = function () { return this.value; } /* harmony default export */ const AppPattern_Const = (Const); ;// CONCATENATED MODULE: ./node_modules/absol/src/SCLang/SCScope.js /*** * * @param {SCScope=} parent * @constructor */ function SCScope(parent) { this.parent = parent; /*** * * @type {Object<string, Ref|Const>} */ this.data = {}; } SCScope.prototype.set = function (name, value) { var ref = this.findRef(name); if (!ref) throw new Error('"' + name + '" was not declared!'); if (ref.set) { ref.set(value); } else { throw new Error('"' + name + '" defined with const cannot be modified!'); } }; SCScope.prototype.get = function (name) { var ref = this.findRef(name); if (!ref) throw new Error('"' + name + '" was not declared!'); return ref.get(); }; SCScope.prototype.declareConst = function (name, value, force, type) { if ((name in this.data) && !force) throw new Error("Cannot redefine variable, " + name + " is already declared!"); this.data[name] = new AppPattern_Const(value, type); }; SCScope.prototype.declareVar = function (name, value, force, type) { if ((name in this.data) && !force) throw new Error("Cannot redefine variable, " + name + " is already declared!"); this.data[name] = new Ref/* default */.Z(value, type); }; SCScope.prototype.revoke = function (name) { delete this.data[name]; }; /*** * * @param {string} name * @return {Ref|Const|null} */ SCScope.prototype.findRef = function (name) { return this.data[name] || (this.parent && this.parent.findRef(name)) || null; }; /*** * * @param {string} name * @return {SCScope|null} */ SCScope.prototype.findScope = function (name) { if (this.data[name]) return this; if (this.parent) return this.parent.findScope(name); return null; }; /** * * @returns {SCScope} */ SCScope.prototype.makeFlattenedScope = function () { var res; if (this.parent) res = this.parent.makeFlattenedScope(); else res = new SCScope(); Object.assign(res.data, this.data); return res; }; /* harmony default export */ const SCLang_SCScope = (SCScope); ;// CONCATENATED MODULE: ./node_modules/absol/src/SCLang/SCCodeGenerator.js /*** * * @constructor */ function SCCodeGenerator() { } SCCodeGenerator.prototype.accept = function (node) { if (!node) return '/*TODO*/'; var visitor = this.visitors[node.type]; if (visitor) { try { return this.visitors[node.type].apply(this, arguments); } catch (e) { console.error(e, node) } } else { return '[' + node.type + ']'; // throw { message: 'Can not handle ', node: node }; } }; SCCodeGenerator.prototype.generate = function (ast) { return this.accept(ast); }; /*** * * @type {Object<string, function>} */ SCCodeGenerator.prototype.visitors = { Program: function (node) { return node.body.map(st => this.accept(st)).join('\n'); }, FunctionDeclaration: function (node) { var bodyCode = this.accept(node.body); var argsCode = node.params.map(arg => this.accept(arg)).join(', '); return `function ${node.id.name}(${argsCode}) ${bodyCode}`; }, ArgumentDeclaration: function (node) { var res = node.id.name; var typeText; if (node.typeAnnotation) typeText = this.accept(node.typeAnnotation); if (typeText && typeText !== 'any') res += ': ' + typeText; return res; }, TypeAnnotation: function (node) { return this.accept(node.typeAnnotation); }, GenericType: function (node) { var typeText = this.accept(node.id); if (node.typeParameters && node.typeParameters.length > 0) { typeText += '<'; typeText += node.typeParameters.map(it => this.accept(it)).join(', '); typeText += '>'; } return typeText; }, LinkedType: function (node) { return 'linktype ' + this.accept(node.address); }, Identifier: function (node) { return node.name; }, VariableDeclarator: function (node) { var res = node.id.name; var typeText; if (node.typeAnnotation) typeText = this.accept(node.typeAnnotation); if (typeText && typeText !== 'any') res += ': ' + typeText; if (node.init) res += ' = ' + this.accept(node.init); res += ';'; return res; }, VariableDeclaration: function (node) { var res = 'var '; if (node.declarations) { res += node.declarations.map(arg => this.accept(arg)).join(', '); } else { node = Object.assign({}, node); node.type = 'VariableDeclarator'; res += this.accept(node); //adapter for old version } return res; }, BlockStatement: function (node) { var bodyCode = node.body.map(it => this.accept(it)).join('\n'); if (bodyCode.length > 0) { bodyCode = bodyCode.split('\n').map(r => ' ' + r).join('\n'); } return ['{', bodyCode, '}'].join('\n'); }, AssignStatement: function (node) { //@deprecated return this.accept(node.left) + ' = ' + this.accept(node.right) + ';'; }, AssignmentExpression: function (node) { return this.accept(node.left) + ' = ' + this.accept(node.right); }, BooleanLiteral: function (node) { return node.value ? 'true' : 'false'; }, NullLiteral: function (node) { return "null"; }, NewExpression: function (node) { var res = 'new '; if (node.callee.type === 'Identifier' || node.callee.type === 'MemberExpression') { res += this.accept(node.callee); } else { res += '(' + this.accept(node.callee) + ')'; } res += '('; res += node.arguments.map(arg => this.accept(arg)).join(', '); res += ')'; return res; }, CallExpression: function (node) { var res = ''; if (node.callee && (node.callee.type === 'Identifier' || node.callee.type === 'MemberExpression')) { res += this.accept(node.callee); } else { res += '(' + this.accept(node.callee) + ')'; } res += '('; res += node.arguments.map(arg => this.accept(arg)).join(', '); res += ')'; return res; }, MemberExpression: function (node) { var res = ''; if (node.object.type === 'Identifier' || node.object.type === 'MemberExpression') { res += this.accept(node.object); } else { res += '(' + this.accept(node.object) + ')'; } if (node.computed) { res += '['; res += this.accept(node.property); res += ']'; } else { res += '.'; res += this.accept(node.property); } return res; }, IfStatement: function (node) { var res = 'if ('; res += this.accept(node.test); res += ') '; res += this.accept(node.consequent); if (node.alternate) { res += '\nelse '; res += this.accept(node.alternate); } return res; }, WhileStatement: function (node) { var res = 'while ('; res += this.accept(node.test); res += ') '; res += this.accept(node.body); return res; }, ForCountStatement: function (node) { var res = ['for', this.accept(node.for), 'from', this.accept(node.from), 'to', this.accept(node.to)].join(' ') + ' '; res += this.accept(node.body) return res; }, ForOfStatement: function (node) { var res = ['for', this.accept(node.for), 'of', this.accept(node.of)].join(' ') + ' '; res += this.accept(node.body) return res; }, ForInStatement: function (node) { var res = ['for', this.accept(node.for), 'in', this.accept(node.in)].join(' ') + ' '; res += this.accept(node.body); return res; }, BreakStatement: function () { return 'break;'; }, ReturnStatement: function (node) { if (node.argument) return 'return ' + this.accept(node.argument) + ';'; return 'return;'; }, BinaryExpression: function (node) { var callOrderOf = snode => { if (!snode) return 100; if (snode.type === 'BinaryExpression') { return Math.max(SCGrammar/* default.operatorOrder */.Z.operatorOrder[snode.operator.content], callOrderOf(snode.right), callOrderOf(snode.right)); } else if (snode.type === 'UnaryExpression') return -1; else return -2; }; var operatorContent = node.operator.content; var cOrder = SCGrammar/* default.operatorOrder */.Z.operatorOrder[operatorContent]; var left = this.accept(node.left); var right = this.accept(node.right); var leftOrder = callOrderOf(node.left); var rightOrder = callOrderOf(node.right); if (leftOrder > cOrder) left = '(' + left + ')'; if (rightOrder >= cOrder) right = '(' + right + ')'; return [left, operatorContent, right].join(' '); }, UnaryExpression: function (node) { var res = node.operator.content; if (node.argument && node.argument.type === 'BinaryExpression') { res += '(' + this.accept(node.argument) + ')'; } else { res += this.accept(node.argument); } return res; }, ExpressionStatement: function (node) { return this.accept(node.expression) + ';'; }, NumericLiteral: function (node) { if (typeof node.value === "number") return node.value.toString(); return '0'; }, StringLiteral: function (node) { return JSON.stringify(node.value); }, ArrayExpression: function (node) { var res = '['; var elementTexts = node.elements.map(arg => this.accept(arg)); var needWrap = elementTexts.some(et => { return et.length > 60; }); if (needWrap) { res += '\n'; res += elementTexts.join(',\n').split('\n').map(t => ' ' + t).join('\n'); res += '\n'; } else { res += elementTexts.join(', '); } res += ']'; return res; }, ObjectProperty: function (node) { return this.accept(node.key) + ': ' + this.accept(node.value); }, ObjectExpression: function (node) { var res = '{'; var propertyTexts = node.properties.map(arg => this.accept(arg)); var needWrap = propertyTexts.some(et => { return et.length > 60; }); if (needWrap) { res += '\n'; res += propertyTexts.join(',\n').split('\n').map(t => ' ' + t).join('\n'); res += '\n'; } else { res += propertyTexts.join(', '); } res += '}'; return res; }, ConditionalExpression: function (node) { return [this.accept(node.test), '?', this.accept(node.consequent), ':', this.accept(node.alternate)].join(' '); } }; /* harmony default export */ const SCLang_SCCodeGenerator = (SCCodeGenerator); /*** * @extends SCCodeGenerator * @constructor */ function SCCodeHighlightingGenerator() { SCCodeGenerator.apply(this, arguments); } OOP/* default.mixClass */.ZP.mixClass(SCCodeHighlightingGenerator, SCCodeGenerator); SCCodeHighlightingGenerator.prototype.accept = function (node) { if (!node) return '/*TODO*/'; var visitor = this.visitors[node.type]; if (visitor) { try { return `<div class="sclang-node sclang-${node.type}${node.error ? ' sclang-error' : ''}"${node.error ? ('title=' + JSON.stringify(node.error)) : ''}>${this.visitors[node.type].apply(this, arguments)}</div>`; } catch (e) { console.error(e, node) } } else { return '[' + node.type + ']'; // throw { message: 'Can not handle ', node: node }; } }; SCCodeHighlightingGenerator.prototype.visitors = Object.assign({}, SCCodeGenerator.prototype.visitors, { IfStatement: function (node) { var res = '<span class="sclang-keyword">if</span> ('; res += this.accept(node.test); res += ') '; res += this.accept(node.consequent); if (node.alternate) { res += '\n<span class="sclang-keyword">else</span> '; res += this.accept(node.alternate); } return res; }, FunctionDeclaration: function (node) { var bodyCode = this.accept(node.body); var argsCode = node.params.map(arg => this.accept(arg)).join(', '); return `<span class="sclang-keyword">function</span> ${node.id.name}(${argsCode}) ${bodyCode}`; }, ForStatement: function (node) { }, ForCountStatement: function (node) { var res = ['<span class="sclang-keyword">for</span>', this.accept(node.for), '<span class="sclang-keyword">from</span>', this.accept(node.from), '<span class="sclang-keyword">to</span>', this.accept(node.to)].join(' ') + ' '; res += this.accept(node.body) return res; }, ForOfStatement: function (node) { var res = ['<span class="sclang-keyword">for</span>', this.accept(node.for), '<span class="sclang-keyword">of</span>', this.accept(node.of)].join(' ') + ' '; res += this.accept(node.body) return res; }, ForInStatement: function (node) { var res = ['<span class="sclang-keyword">for</span>', this.accept(node.for), '<span class="sclang-keyword">in</span>', this.accept(node.in)].join(' ') + ' '; res += this.accept(node.body) return res; }, VariableDeclarator: function (node) { var res = node.id.name; var typeText; if (node.typeAnnotation) typeText = this.accept(node.typeAnnotation); if (typeText && typeText !== 'any') res += ': ' + typeText; if (node.init) res += ' = ' + this.accept(node.init); return res; }, VariableDeclaration: function (node) { var res = '<span class="sclang-keyword">var</span> '; if (node.declarations) { res += node.declarations.map(arg => this.accept(arg)).join(', '); } else { node = Object.assign({}, node); node.type = 'VariableDeclarator'; res += this.accept(node); //adapter for old version } res += ';'; return res; }, LinkedType: function (node) { return '<span class="sclang-keyword">linktype</span> ' + this.accept(node.address); }, }); SCCodeHighlightingGenerator.prototype.generate = function (ast) { var text = this.accept(ast); return text.split('\n').map(text => { return text.replace(/^\s+/, (full) => { return `<span>${' '.repeat(full.length)}</span>` }); }).join('<br>'); }; function generateSCCode(ast) { var generator = new SCCodeGenerator(); return generator.generate(ast); } function generateSCHighlightPreviewCode(ast) { var generator = new SCCodeHighlightingGenerator(); return generator.generate(ast); } // EXTERNAL MODULE: ./node_modules/absol/src/Converter/ext2MineType.js var ext2MineType = __webpack_require__(9691); ;// CONCATENATED MODULE: ./node_modules/absol/src/SCLang/SCProgramInstance.js var SCStaticLibScope = new SCLang_SCScope(); var SCDynamicLibScope = new SCLang_SCScope(SCStaticLibScope); function SCProgramInstance(ast, env) { env = env || {}; if (env instanceof SCLang_SCScope) { this.global = env; } else { this.global = new SCLang_SCScope(SCDynamicLibScope); Object.keys(env).forEach(key => { this.global.declareConst(key, env[key]); }); } this.topScope = this.global; this.stack = [{ scope: this.global }]; this.ast = ast; } SCProgramInstance.prototype.exec = function () { return this.accept(this.ast); }; SCProgramInstance.prototype.accept = function (node) { var visitor = this.visitors[node.type]; if (visitor) { return this.visitors[node.type].apply(this, arguments); // try { // // } catch (e) { // console.error(e, node) // } } else { throw this.makeError("NotHandle", 'Can not handle node type ' + node && node.type, node); } }; SCProgramInstance.prototype.makeError = function (type, message, node) { var err = {}; var copy = o => { if (!o) return o; if (o instanceof Array) { return o.map(e => copy(e)); } if (o instanceof Date) return new Date(o.getTime()); if (o.constructor === Object) return Object.keys(o).reduce((ac, key) => { ac[key] = copy(o[key]); return ac; }, o === node ? { error: message || type || true } : {}); return o; } err.ast = copy(this.ast); err.message = message; err.errorNode = node; err._shown = false; Object.defineProperty(err, 'SHOW_ERROR', { enumerable: false, get: function () { if (this._shown) return; this._shown = true; var text = generateSCHighlightPreviewCode(this.ast); var html = `<html><head><title>Error</title> <style> .sclang-Program { font-family: Consolas, serif; white-space: pre-wrap; line-height: 1.5; } .sclang-keyword { color: #2C82FF; } .sclang-node { display: inline; } .sclang-error { animation: 1s linear infinite condemned_blink_effect; } @keyframes condemned_blink_effect { 0% { background-color: transparent; } 50% { background-color: transparent; } 51% { background-color: #f76868; } 100% { background-color: #f76868; } } .sclang-CallExpression > .sclang-MemberExpression:first-child > .sclang-Identifier:last-child, .sclang-CallExpression > .sclang-Identifier:first-child{ color: #41a01b; }</style></head><body>${text}</body></html>` var blob = new Blob([html], { type: ext2MineType/* default.html */.Z.html }); var url = URL.createObjectURL(blob); window.open(url, '_blank'); setTimeout(() => { URL.revokeObjectURL(url); }, 4000); return true; } }) return err; }; SCProgramInstance.prototype.getRefOf = function (name) { return this.topScope.findRef(name); }; SCProgramInstance.prototype.isFunctionReturned = function () { var topStack = this.stack[this.stack.length - 1]; if (topStack.isFunctionReturned) { return topStack.isFunctionReturned(); } return false; }; SCProgramInstance.prototype.functionReturn = function (res) { var topStack = this.stack[this.stack.length - 1]; if (topStack.functionReturn) { return topStack.functionReturn(res); } }; SCProgramInstance.prototype.isLoopBroken = function () { var topStack = this.stack[this.stack.length - 1]; if (topStack.loop && topStack.loop.length > 0) { // console.log(topStack.loop[topStack.loop.length - 1].isBroken()); return topStack.loop[topStack.loop.length - 1].isBroken() } return false; }; SCProgramInstance.prototype.loopPush = function (holder) { var topStack = this.stack[this.stack.length - 1]; topStack.loop = topStack.loop || []; topStack.loop.push(holder); }; SCProgramInstance.prototype.loopPop = function () { var topStack = this.stack[this.stack.length - 1]; topStack.loop.pop(); }; SCProgramInstance.prototype.loopBreak = function () { var topStack = this.stack[this.stack.length - 1]; topStack.loop[topStack.loop.length - 1].break(); } SCProgramInstance.prototype.visitors = { Program: function (node) { var i = 0; var statements = node.body; var returnWith; var res = new Promise(rs => returnWith = rs); var runStep = () => { var statement; var sResult; while (i < statements.length) { statement = statements[i++]; sResult = this.accept(statement); if (sResult && sResult.then) { sResult.then(runStep); return; } } returnWith(0); } runStep(); return res; }, BooleanLiteral: function (node) { return node.value; }, BlockStatement: function (node) { var i = 0; var statements = node.body; var returnWith; var resolved = false; var result = undefined; var sync = new Promise(rs => { returnWith = (res) => { resolved = true; result = res; rs(res); } }); var runStep = () => { var statement; var sResult; while (i < statements.length && !this.isFunctionReturned() && !this.isLoopBroken()) { statement = statements[i++]; sResult = this.accept(statement); if (sResult && sResult.then) { sResult.then(runStep); return; } } returnWith(0); } runStep(); if (resolved) { return this.result; } else return sync; }, ExpressionStatement: function (node) { return this.accept(node.expression); }, VariableDeclarator: function (node, kind) { var initValue = null; if (node.init) { initValue = this.accept(node.init, 'const'); } if (initValue && initValue.then) { return initValue.then((result) => { if (kind === 'const') { this.topScope.declareConst(node.id.name, result); } else { this.topScope.declareVar(node.id.name, result); } }); } else { if (kind === 'const') { this.topScope.declareConst(node.id.name, initValue); } else { this.topScope.declareVar(node.id.name, initValue); } } }, VariableDeclaration: function (node) { var resolved = false; var sync; var resolve; var doStep; var i; var declarations = node.declarations; if (declarations) { i = 0; doStep = () => { var dResult; while (i < declarations.length) { dResult = this.accept(declarations[i++], node.kind); if (dResult && dResult.then) { if (!sync) { sync = new Promise(rs => { resolve = rs; }); } dResult.then(doStep); return; } } if (resolve) resolve(); else resolved = true; } doStep(); if (!resolved) return sync; } else { node = Object.assign({}, node); node.type = 'VariableDeclarator'; return this.accept(node); //adapter for old version } }, ArrayExpression: function (node) { var res = []; var resolved = false; var resolve; var sync = new Promise(rs => { resolve = () => { resolved = true; rs(res); }; }); var elements = node.elements; var i = 0; var doStep = () => { var eResult; while (i < elements.length) { eResult = this.accept(elements[i++], 'const'); if (eResult && eResult.then) { eResult.then((item) => { res.push(item); doStep(); }); return; } else { res.push(eResult); } } resolve(); } doStep(); if (resolved) { return res; } else { return sync; } }, ForCountStatement: function (node) { var idRef = this.accept(node.for, 'ref'); var from = this.accept(node.from, 'const'); var to = this.accept(node.to, 'const'); var result; var resolved = false; var resolveWith; var sync = new Promise(function (rs) { resolveWith = (res) => { result = res; resolved = true; rs(res); } }); var i = from; var runStep = () => { while (i <= to) { idRef.set(i); ++i; var stResult = this.accept(node.body); if (stResult && stResult.then) { stResult.then(runStep); return; } } resolveWith(0); } runStep(); if (resolved) { return result; } else { return sync; } }, WhileStatement: function (node) { var resolved = false; var resolve; var sync = new Promise(rs => { resolve = () => { resolved = true; rs(undefined); }; }); this.loopPush({ break: () => { resolved = true; }, isBroken: () => { return resolved; } }); var state = 0; var doStep = () => { var sResult; while (!resolved) { if (this.isFunctionReturned()) { resolve(); return; } if (state === 0) { sResult = this.accept(node.test, 'const'); state = 1; } else { sResult = this.accept(node.body); state = 0; } if (sResult && (typeof sResult.then === "function")) { sResult.then((sResult) => { if (state === 0 || sResult) { doStep(); } else { resolve(); } }); return; } else { if (state === 1 && !sResult) { resolve(); } } } } doStep(); if (resolved) { this.loopPop(); return undefined; } else { return sync.then(() => this.loopPop()); } }, DoWhileStatement: function (node) { var resolved = false; var resolve; var sync = new Promise(rs => { resolve = () => { resolved = true; rs(undefined); }; }); var state = 1; var doStep = () => { var sResult; while (!resolved) { if (state === 0) { sResult = this.accept(node.test, 'const'); state = 1; } else { sResult = this.accept(node.body); state = 0; } if (sResult && (typeof sResult.then === "function")) { sResult.then((sResult) => { if (state === 0 || sResult) { doStep(); } else { resolve(); } }); return; } else { if (state === 1 && !sResult) { resolve(); } } } } doStep(); if (resolved) { return undefined; } else { return sync; } }, ForOfStatement: function (node) { var valRef = this.accept(node.for, 'ref'); var of = this.accept(node.of, 'const'); var values; var result; var resolved = false; var resolveWith; var sync = new Promise(function (rs) { resolveWith = (res) => { result = res; resolved = true; rs(res); } }); var i = 0; var runStep = () => { while (i < values.length) { valRef.set(values[i]); ++i; var stResult = this.accept(node.body); if (stResult && stResult.then) { stResult.then(runStep); return; } } resolveWith(0); } if (of.then) of.then((value) => { of = value; values = (of instanceof Array) ? of : Object.values(value); runStep(); }); else { values = (of instanceof Array) ? of : Object.values(value); runStep(); } if (resolved) { return result; } else { return sync; } }, ForInStatement: function (node) { var valRef = this.accept(node.for, 'ref'); var inObj = this.accept(node.in, 'const'); var keys; var result; var resolved = false; var resolveWith; var sync = new Promise(function (rs) { resolveWith = (res) => { result = res; resolved = true; rs(res); } }); var i = 0; var runStep = () => { while (i < keys.length) { valRef.set(keys[i]); ++i; var stResult = this.accept(node.body); if (stResult && stResult.then) { stResult.then(runStep); return; } } resolveWith(0); } if (inObj.then) inObj.then((value) => { inObj = value; keys = Object.keys(inObj); runStep(); }); else { keys = Object.keys(inObj) runStep(); } if (resolved) { return result; } else { return sync; } }, AssignStatement: function (node) { //@deprecated var leftRef = this.accept(node.left, 'ref'); var right = this.accept(node.right, 'const'); if (right && right.then) { return right.then(function (value) { leftRef.set(value); return value; }); } else { leftRef.set(right); return right; } }, AssignmentExpression: function (node) { var leftRef = this.accept(node.left, 'ref'); var right = this.accept(node.right, 'const'); if (right && right.then) { return right.then(function (value) { leftRef.set(value); return value; }); } else { leftRef.set(right); return right; } }, IfStatement: function (node) { var test = this.accept(node.test, 'const'); if (test && (typeof test.then === 'function')) { return test.then((test) => { if (test) { return this.accept(node.consequent); } else if (node.alternate) { return this.accept(node.alternate); } }); } else { if (test) { return this.accept(node.consequent); } else if (node.alternate) { return this.accept(node.alternate); } } }, ConditionalExpression: function (node) { var test = this.accept(node.test, 'const'); if (test && (typeof test.then === 'function')) { return test.then((test) => { if (test) { return this.accept(node.consequent); } else { return this.accept(node.alternate); } }); } else { if (test) { return this.accept(node.consequent); } else { return this.accept(node.alternate); } } }, NullLiteral: function (node) { return null; }, NumericLiteral: function (node) { return (node.value); }, StringLiteral: function (node) { return node.value; }, BinaryExpression: function (node) { var op = node.operator.content; var leftValue = this.accept(node.left, 'const'); if (op === '&&' && !leftValue) { return leftValue; } else if (op === '||' && (leftValue && !leftValue.then)) { return leftValue; } var rightValue = this.accept(node.right, 'const'); var sync = []; if (leftValue && leftValue.then) { sync.push(leftValue); leftValue.then(result => leftValue = result); } if (rightValue && rightValue.then) { sync.push(rightValue); rightValue.then(result => rightValue = result); } if (sync.length === 0) { return SCLang_SCOperatorExecutor.executeBinaryOperator(node.operator.content, leftValue, rightValue); } else { return Promise.all(sync).then(u => { return SCLang_SCOperatorExecutor.executeBinaryOperator(node.operator.content, leftValue, rightValue); }); } }, UnaryExpression: function (node) { var arg = this.accept(node.argument, 'const'); if (arg && arg.then) { return arg.then(value => SCLang_SCOperatorExecutor.executeUnaryOperator(node.operator.content, value)); } else { return SCLang_SCOperatorExecutor.executeUnaryOperator(node.operator.content, arg); } }, Identifier: function (node, type) { var ref; if (type === 'const') { ref = this.getRefOf(node.name); if (ref) { return ref.get(); } else { throw this.makeError("NotDeclare", "", node); } } else if (type === 'ref') { ref = this.getRefOf(node.name); if (ref) { return ref; } else { this.makeError("NotDeclare", "", node); } } return node.name; }, CallExpression: function (node) { var calleeFunction; var object = null; var ref; if (node.callee.type === "Identifier") { ref = this.getRefOf(node.callee.name); calleeFunction = ref.get(); } else if (node.callee.type === 'MemberExpression') { ref = this.accept(node.callee); calleeFunction = ref.get(); object = ref.object; } var argumentValues = node.arguments.map((exp) => { return this.accept(exp, 'const'); }); var sync = []; argumentValues.forEach((arg, i) => { if (arg && arg.then) { sync.push(arg.then(result => { argumentValues[i] = result; })); } }); if (sync.length > 0) { return Promise.all(sync).then(() => { if (!calleeFunction) { throw { message: 'Undefined function ' + generateSCCode(node.callee), ast: node } } return calleeFunction.apply(object, argumentValues); }); } else { if (!calleeFunction) { throw { message: 'Undefined function ' + generateSCCode(node.callee), ast: node } } return calleeFunction.apply(object, argumentValues); } }, NewExpression: function (node) { var calleeFunction; var ref; if (node.callee.type === "Identifier") { ref = this.getRefOf(node.callee.name); calleeFunction = ref.get(); } else if (node.callee.type === 'MemberExpression') { ref = this.accept(node.callee); calleeFunction = ref.get(); } var argumentValues = node.arguments.map((exp) => { return this.accept(exp, 'const'); }); var code = `return new clazz(${argumentValues.map((u, i) => `args[${i}]`).join(', ')});`; var f = new Function('clazz', 'args', code); return f(calleeFunction, argumentValues); }, MemberExpression: function (node, type) { var object = this.accept(node.object, 'const'); var key; if (node.property.type === 'Identifier' && !node.computed) { key = node.property.name; } else { key = this.accept(node.property, 'const'); } if (key && key.then) { return key.then(key => { if (!object) { throw { message: 'Can not access ' + JSON.stringify(key) + ' from ' + generateSCCode(node.object) }; } if (type === 'const') return object[key]; return { set: function (value) { return object[key] = value; }, get: function () { return object[key]; }, object: object } }); } else { if (type === 'const') return object[key]; return { set: function (value) { return object[key] = value; }, get: function () { return object[key]; }, object: object } } }, ObjectProperty: function (node) { var res = {}; var key = this.accept(node.key); var value = this.accept(node.value, 'const'); if (value && (typeof value.then === 'function')) { return value.then(value => { res[key] = value; return res; }); } else { res[key] = value; } return res; }, ObjectExpression: function (node) { var res = {}; var resolved = false; var resolve; var sync = new Promise(rs => { resolve = () => { resolved = true; rs(res); } }); var i = 0; var properties = node.properties; var doStep = () => { var pResult; while (i < properties.length) { pResult = this.accept(properties[i++]); if (pResult && (typeof pResult.then === "function")) { pResult.then((pO) => { Object.assign(res, pO); }); return; } else { Object.assign(res, pResult); } } resolve(); }; doStep(); if (resolved) { return res; } else { return sync; } }, FunctionDeclaration: function (node) { var self = this; //todo: overloading var functionName = node.id.name; function f() { var scope = new SCLang_SCScope(self.topScope); var result = undefined; var resolved = false; var functionReturn = (res) => { resolved = true; result = res; } var isFunctionReturned = () => { return resolved; } self.stack.push({ scope: scope, functionReturn: functionReturn, isFunctionReturned: isFunctionReturned }); self.topScope = scope; for (var i = 0; i < node.params.length; ++i) { scope.declareVar(node.params[i].id.name, arguments[i]); } scope.declareVar('arguments', arguments); var res = self.accept(node.body); if (res && (typeof res.then === "function")) { return res.then(res => { if (self.stack[self.stack.length - 1].scope === scope) { self.stack.pop(); self.topScope = self.stack[self.stack.length - 1].scope; return result; } else { throw new Error('EngineError: Bug in stack!'); } }); } else { if (self.stack[self.stack.length - 1].scope === scope) { self.stack.pop(); self.topScope = self.stack[self.stack.length - 1].scope; return result; } else { throw new Error('EngineError: Bug in stack!'); } } } var code = `return function ${functionName}(${node.params.map(pr => pr.id.name || (0,stringGenerate.randomIdent)(5)).join(',')}) { return f.apply(this, arguments); }`; var func = (new Function('f', code))(f); this.topScope.declareVar(functionName, func); return func; }, BreakStatement: function (node) { this.loopBreak(); }, ReturnStatement: function (node) { var res = undefined; if (node.argument) { res = this.accept(node.argument, 'const'); } if (res && res.then) { res.then(res => { this.functionReturn(res); }); } else { this.functionReturn(res); } } }; /* harmony default export */ const SCLang_SCProgramInstance = (SCProgramInstance); // EXTERNAL MODULE: ./node_modules/absol/src/Print/printer.js + 2 modules var Print_printer = __webpack_require__(2691); ;// CONCATENATED MODULE: ./node_modules/absol/src/Math/measurements.js function feetToMeter(ft) { return ft / 3.28084; } function meterToFeet(mt) { return mt * 3.28084; } function meterToInch(mt) { return mt * 39.3701; } function mileToMeter(ml) { return ml * 1609.34; } function meterToMile(ml) { return ml / 1609.34; } function meterToYard(mt) { return mt * 1.09361 } function yardToMeter(yd) { return yd / 1.09361; } /** * dot is same pixel in web * @param p * @returns {number} */ function pointToDot(p) { return p * 72 / 96; } function dotToPoint(d) { return d * 96 / 72; } function pxToCentimeter(px) { } function centimeterToPx(cm) { return meterToInch(cm / 100) * 96; } var PAGE_SIZE_IN_DOT = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] }; var PAGE_SIZE_IN_POINT = Object.keys(PAGE_SIZE_IN_DOT).reduce((ac, key) => { ac[key] = PAGE_SIZE_IN_DOT[key].map(d => dotToPoint(d)); return ac; }, {}); function latLngRectFromCenter(center, distance) { var lat = center.latitude; var lng = center.longitude; var r_earth = 6378; var pi = Math.PI; var northLat = lat + (distance / r_earth) * (180 / pi); var eastLng = lng + (distance / r_earth) * (180 / pi) / Math.cos(lat * pi / 180); var southLat = lat - (distance / r_earth) * (180 / pi); var westLng = lng - (distance / r_earth) * (180 / pi) / Math.cos(lat * pi / 180) return { latitude: { min: Math.min(northLat, southLat), max: Math.max(northLat, southLat) }, longitude: { min: Math.min(eastLng, westLng), max: Math.max(eastLng, westLng) } } } /*** * * @param p0 * @param p1 * @returns {number} in km */ function latLngDistance(p0, p1) { var lat0 = p0.latitude; var lat1 = p1.latitude; var lng0 = p0.longitude; var lng1 = p1.longitude; var toRad = function (value) { return value * Math.PI / 180; }; var R = 6371; var dLat = toRad(lat1 - lat0); var dLng = toRad(lng1 - lng0); lat0 = toRad(lat0); lat1 = toRad(lat1); var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLng / 2) * Math.sin(dLng / 2) * Math.cos(lat0) * Math.cos(lat1); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); return R * c; } ;// CONCATENATED MODULE: ./node_modules/absol/src/Converter/QRCode.js function QR8bitByte(data) { this.mode = QRMode.MODE_8BIT_BYTE; this.data = data; this.parsedData = []; // Added to support UTF-8 Characters for (var i = 0, l = this.data.length; i < l; i++) { var byteArray = []; var code = this.data.charCodeAt(i); if (code > 0x10000) { byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18); byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12); byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6); byteArray[3] = 0x80 | (code & 0x3F); } else if (code > 0x800) { byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12); byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6); byteArray[2] = 0x80 | (code & 0x3F); } else if (code > 0x80) { byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6); byteArray[1] = 0x80 | (code & 0x3F); } else { byteArray[0] = code; } this.parsedData.push(byteArray); } this.parsedData = Array.prototype.concat.apply([], this.parsedData); if (this.parsedData.length !== this.data.length) { this.parsedData.unshift(191); this.parsedData.unshift(187); this.parsedData.unshift(239); } } QR8bitByte.prototype.getLength = function () { return this.parsedData.length; }; QR8bitByte.prototype.write = function (buffer) { for (var i = 0, l = this.parsedData.length; i < l; i++) { buffer.put(this.parsedData[i], 8); } } function QRCodeModel(typeNumber, errorCorrectLevel) { this.typeNumber = typeNumber; this.errorCorrectLevel = errorCorrectLevel; this.modules = null; this.moduleCount = 0; this.dataCache = null; this.dataList = []; } QRCodeModel.prototype.addData = function (data) { var newData = new QR8bitByte(data); this.dataList.push(newData); this.dataCache = null; }; QRCodeModel.prototype.isDark = function (row, col) { if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) { throw new Error(row + "," + col); } return this.modules[row][col]; }; QRCodeModel.prototype.getModuleCount = function () { return this.moduleCount; }; QRCodeModel.prototype.make = function () { this.makeImpl(false, this.getBestMaskPattern()); }; QRCodeModel.prototype.makeImpl = function (test, maskPattern) { this.moduleCount = this.typeNumber * 4 + 17; this.modules = new Array(this.moduleCount); for (var row = 0; row < this.moduleCount; row++) { this.modules[row] = new Array(this.moduleCount); for (var col = 0; col < this.moduleCount; col++) { this.modules[row][col] = null; } } this.setupPositionProbePattern(0, 0); this.setupPositionProbePattern(this.moduleCount - 7, 0); this.setupPositionProbePattern(0, this.moduleCount - 7); this.setupPositionAdjustPattern(); this.setupTimingPattern(); this.setupTypeInfo(test, maskPattern); if (this.typeNumber >= 7) { this.setupTypeNumber(test); } if (this.dataCache == null) { this.dataCache = QRCodeModel.createData(this.typeNumber, this.errorCorrectLevel, this.dataList); } this.mapData(this.dataCache, maskPattern); }; QRCodeModel.prototype.setupPositionProbePattern = function (row, col) { for (var r = -1; r <= 7; r++) { if (row + r <= -1 || this.moduleCount <= row + r) continue; for (var c = -1; c <= 7; c++) { if (col + c <= -1 || this.moduleCount <= col + c) continue; if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) { this.modules[row + r][col + c] = true; } else { this.modules[row + r][col + c] = false; } } } }; QRCodeModel.prototype.getBestMaskPattern = function () { var minLostPoint = 0; var pattern = 0; for (var i = 0; i < 8; i++) { this.makeImpl(true, i); var lostPoint = QRUtil.getLostPoint(this); if (i == 0 || minLostPoint > lostPoint) { minLostPoint = lostPoint; pattern = i; } } return pattern; }; QRCodeModel.prototype.setupTimingPattern = function () { for (var r = 8; r < this.moduleCount - 8; r++) { if (this.modules[r][6] != null) { continue; } this.modules[r][6] = (r % 2 == 0); } for (var c = 8; c < this.moduleCount - 8; c++) { if (this.modules[6][c] != null) { continue; } this.modules[6][c] = (c % 2 == 0); } }; QRCodeModel.prototype.setupPositionAdjustPattern = function () { var pos = QRUtil.getPatternPosition(this.typeNumber); for (var i = 0; i < pos.length; i++) { for (var j = 0; j < pos.length; j++) { var row = pos[i]; var col = pos[j]; if (this.modules[row][col] != null) { continue; } for (var r = -2; r <= 2; r++) { for (var c = -2; c <= 2; c++) { if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) { this.modules[row + r][col + c] = true; } else { this.modules[row + r][col + c] = false; } } } } } }; QRCodeModel.prototype.setupTypeNumber = function (test) { var bits = QRUtil.getBCHTypeNumber(this.typeNumber); for (var i = 0; i < 18; i++) { var mod = (!test && ((bits >> i) & 1) == 1); this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod; } for (var i = 0; i < 18; i++) { var mod = (!test && ((bits >> i) & 1) == 1); this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod; } }; QRCodeModel.prototype.setupTypeInfo = function (test, maskPattern) { var data = (this.errorCorrectLevel << 3) | maskPattern; var bits = QRUtil.getBCHTypeInfo(data); for (var i = 0; i < 15; i++) { var mod = (!test && ((bits >> i) & 1) == 1); if (i < 6) { this.modules[i][8] = mod; } else if (i < 8) { this.modules[i + 1][8] = mod; } else { this.modules[this.moduleCount - 15 + i][8] = mod; } } for (var i = 0; i < 15; i++) { var mod = (!test && ((bits >> i) & 1) == 1); if (i < 8) { this.modules[8][this.moduleCount - i - 1] = mod; } else if (i < 9) { this.modules[8][15 - i - 1 + 1] = mod; } else { this.modules[8][15 - i - 1] = mod; } } this.modules[this.moduleCount - 8][8] = (!test); }; QRCodeModel.prototype.mapData = function (data, maskPattern) { var inc = -1; var row = this.moduleCount - 1; var bitIndex = 7; var byteIndex = 0; for (var col = this.moduleCount - 1; col > 0; col -= 2) { if (col == 6) col--; while (true) { for (var c = 0; c < 2; c++) { if (this.modules[row][col - c] == null) { var dark = false; if (byteIndex < data.length) { dark = (((data[byteIndex] >>> bitIndex) & 1) == 1); } var mask = QRUtil.getMask(maskPattern, row, col - c); if (mask) { dark = !dark; } this.modules[row][col - c] = dark; bitIndex--; if (bitIndex == -1) { byteIndex++; bitIndex = 7; } } } row += inc; if (row < 0 || this.moduleCount <= row) { row -= inc; inc = -inc; break; } } } }; QRCodeModel.PAD0 = 0xEC; QRCodeModel.PAD1 = 0x11; QRCodeModel.createData = function (typeNumber, errorCorrectLevel, dataList) { var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); var buffer = new QRBitBuffer(); for (var i = 0; i < dataList.length; i++) { var data = dataList[i]; buffer.put(data.mode, 4); buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber)); data.write(buffer); } var totalDataCount = 0; for (var i = 0; i < rsBlocks.length; i++) { totalDataCount += rsBlocks[i].dataCount; } if (buffer.getLengthInBits() > totalDataCount * 8) { throw new Error("code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")"); } if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { buffer.put(0, 4); } while (buffer.getLengthInBits() % 8 != 0) { buffer.putBit(false); } while (true) { if (buffer.getLengthInBits() >= totalDataCount * 8) { break; } buffer.put(QRCodeModel.PAD0, 8); if (buffer.getLengthInBits() >= totalDataCount * 8) { break; } buffer.put(QRCodeModel.PAD1, 8); } return QRCodeModel.createBytes(buffer, rsBlocks); }; QRCodeModel.createBytes = function (buffer, rsBlocks) { var offset = 0; var maxDcCount = 0; var maxEcCount = 0; var dcdata = new Array(rsBlocks.length); var ecdata = new Array(rsBlocks.length); for (var r = 0; r < rsBlocks.length; r++) { var dcCount = rsBlocks[r].dataCount; var ecCount = rsBlocks[r].totalCount - dcCount; maxDcCount = Math.max(maxDcCount, dcCount); maxEcCount = Math.max(maxEcCount, ecCount); dcdata[r] = new Array(dcCount); for (var i = 0; i < dcdata[r].length; i++) { dcdata[r][i] = 0xff & buffer.buffer[i + offset]; } offset += dcCount; var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1); var modPoly = rawPoly.mod(rsPoly); ecdata[r] = new Array(rsPoly.getLength() - 1); for (var i = 0; i < ecdata[r].length; i++) { var modIndex = i + modPoly.getLength() - ecdata[r].length; ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0; } } var totalCodeCount = 0; for (var i = 0; i < rsBlocks.length; i++) { totalCodeCount += rsBlocks[i].totalCount; } var data = new Array(totalCodeCount); var index = 0; for (var i = 0; i < maxDcCount; i++) { for (var r = 0; r < rsBlocks.length; r++) { if (i < dcdata[r].length) { data[index++] = dcdata[r][i]; } } } for (var i = 0; i < maxEcCount; i++) { for (var r = 0; r < rsBlocks.length; r++) { if (i < ecdata[r].length) { data[index++] = ecdata[r][i]; } } } return data; }; var QRMode = { MODE_NUMBER: 1 << 0, MODE_ALPHA_NUM: 1 << 1, MODE_8BIT_BYTE: 1 << 2, MODE_KANJI: 1 << 3 }; var QRErrorCorrectLevel = { L: 1, M: 0, Q: 3, H: 2 }; var QRMaskPattern = { PATTERN000: 0, PATTERN001: 1, PATTERN010: 2, PATTERN011: 3, PATTERN100: 4, PATTERN101: 5, PATTERN110: 6, PATTERN111: 7 }; var QRUtil = { PATTERN_POSITION_TABLE: [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]], G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0), G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0), G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1), getBCHTypeInfo: function (data) { var d = data << 10; while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) { d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15))); } return ((data << 10) | d) ^ QRUtil.G15_MASK; }, getBCHTypeNumber: function (data) { var d = data << 12; while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) { d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18))); } return (data << 12) | d; }, getBCHDigit: function (data) { var digit = 0; while (data != 0) { digit++; data >>>= 1; } return digit; }, getPatternPosition: function (typeNumber) { return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]; }, getMask: function (maskPattern, i, j) { switch (maskPattern) { case QRMaskPattern.PATTERN000: return (i + j) % 2 === 0; case QRMaskPattern.PATTERN001: return i % 2 === 0; case QRMaskPattern.PATTERN010: return j % 3 === 0; case QRMaskPattern.PATTERN011: return (i + j) % 3 === 0; case QRMaskPattern.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0; case QRMaskPattern.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0; case QRMaskPattern.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0; case QRMaskPattern.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0; default: throw new Error("bad maskPattern:" + maskPattern); } }, getErrorCorrectPolynomial: function (errorCorrectLength) { var a = new QRPolynomial([1], 0); for (var i = 0; i < errorCorrectLength; i++) { a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0)); } return a; }, getLengthInBits: function (mode, type) { if (1 <= type && type < 10) { switch (mode) { case QRMode.MODE_NUMBER: return 10; case QRMode.MODE_ALPHA_NUM: return 9; case QRMode.MODE_8BIT_BYTE: return 8; case QRMode.MODE_KANJI: return 8; default: throw new Error("mode:" + mode); } } else if (type < 27) { switch (mode) { case QRMode.MODE_NUMBER: return 12; case QRMode.MODE_ALPHA_NUM: return 11; case QRMode.MODE_8BIT_BYTE: return 16; case QRMode.MODE_KANJI: return 10; default: throw new Error("mode:" + mode); } } else if (type < 41) { switch (mode) { case QRMode.MODE_NUMBER: return 14; case QRMode.MODE_ALPHA_NUM: return 13; case QRMode.MODE_8BIT_BYTE: return 16; case QRMode.MODE_KANJI: return 12; default: throw new Error("mode:" + mode); } } else { throw new Error("type:" + type); } }, getLostPoint: function (qrCode) { var moduleCount = qrCode.getModuleCount(); var lostPoint = 0; for (var row = 0; row < moduleCount; row++) { for (var col = 0; col < moduleCount; col++) { var sameCount = 0; var dark = qrCode.isDark(row, col); for (var r = -1; r <= 1; r++) { if (row + r < 0 || moduleCount <= row + r) { continue; } for (var c = -1; c <= 1; c++) { if (col + c < 0 || moduleCount <= col + c) { continue; } if (r == 0 && c == 0) { continue; } if (dark == qrCode.isDark(row + r, col + c)) { sameCount++; } } } if (sameCount > 5) { lostPoint += (3 + sameCount - 5); } } } for (var row = 0; row < moduleCount - 1; row++) { for (var col = 0; col < moduleCount - 1; col++) { var count = 0; if (qrCode.isDark(row, col)) count++; if (qrCode.isDark(row + 1, col)) count++; if (qrCode.isDark(row, col + 1)) count++; if (qrCode.isDark(row + 1, col + 1)) count++; if (count == 0 || count == 4) { lostPoint += 3; } } } for (var row = 0; row < moduleCount; row++) { for (var col = 0; col < moduleCount - 6; col++) { if (qrCode.isDark(row, col) && !qrCode.isDark(row, col + 1) && qrCode.isDark(row, col + 2) && qrCode.isDark(row, col + 3) && qrCode.isDark(row, col + 4) && !qrCode.isDark(row, col + 5) && qrCode.isDark(row, col + 6)) { lostPoint += 40; } } } for (var col = 0; col < moduleCount; col++) { for (var row = 0; row < moduleCount - 6; row++) { if (qrCode.isDark(row, col) && !qrCode.isDark(row + 1, col) && qrCode.isDark(row + 2, col) && qrCode.isDark(row + 3, col) && qrCode.isDark(row + 4, col) && !qrCode.isDark(row + 5, col) && qrCode.isDark(row + 6, col)) { lostPoint += 40; } } } var darkCount = 0; for (var col = 0; col < moduleCount; col++) { for (var row = 0; row < moduleCount; row++) { if (qrCode.isDark(row, col)) { darkCount++; } } } var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; lostPoint += ratio * 10; return lostPoint; } }; var QRMath = { glog: function (n) { if (n < 1) { throw new Error("glog(" + n + ")"); } return QRMath.LOG_TABLE[n]; }, gexp: function (n) { while (n < 0) { n += 255; } while (n >= 256) { n -= 255; } return QRMath.EXP_TABLE[n]; }, LOG_TABLE: new Array(256) }; QRMath.EXP_TABLE = (function () { var arr = Array(256); var i; for (i = 0; i < 8; ++i) { arr[i] = (1 << i); } for (i = 8; i < 256; ++i) { arr[i] = (arr[i - 4] ^ arr[i - 5] ^ arr[i - 6] ^ arr[i - 8]); } return arr; })(); QRMath.LOG_TABLE = (function () { var arr = Array(256).fill(0); for (var i = 0; i < 255; i++) { arr[QRMath.EXP_TABLE[i]] = i; } return arr; })(); function QRPolynomial(num, shift) { if (num.length == undefined) { throw new Error(num.length + "/" + shift); } var offset = 0; while (offset < num.length && num[offset] == 0) { offset++; } this.num = new Array(num.length - offset + shift); for (var i = 0; i < num.length - offset; i++) { this.num[i] = num[i + offset]; } } QRPolynomial.prototype.get = function (index) { return this.num[index]; }; QRPolynomial.prototype.getLength = function () { return this.num.length; }; QRPolynomial.prototype.multiply = function (e) { var num = new Array(this.getLength() + e.getLength() - 1); for (var i = 0; i < this.getLength(); i++) { for (var j = 0; j < e.getLength(); j++) { num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j))); } } return new QRPolynomial(num, 0); }; QRPolynomial.prototype.mod = function (e) { if (this.getLength() - e.getLength() < 0) { return this; } var ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0)); var num = new Array(this.getLength()); for (var i = 0; i < this.getLength(); i++) { num[i] = this.get(i); } for (var i = 0; i < e.getLength(); i++) { num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio); } return new QRPolynomial(num, 0).mod(e); }; function QRRSBlock(totalCount, dataCount) { this.totalCount = totalCount; this.dataCount = dataCount; } QRRSBlock.RS_BLOCK_TABLE = [[1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], [2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15], [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16], [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], [3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12], [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16], [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], [8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16], [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16], [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]]; QRRSBlock.getRSBlocks = function (typeNumber, errorCorrectLevel) { var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel); if (rsBlock == undefined) { throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel); } var length = rsBlock.length / 3; var list = []; for (var i = 0; i < length; i++) { var count = rsBlock[i * 3 + 0]; var totalCount = rsBlock[i * 3 + 1]; var dataCount = rsBlock[i * 3 + 2]; for (var j = 0; j < count; j++) { list.push(new QRRSBlock(totalCount, dataCount)); } } return list; }; QRRSBlock.getRsBlockTable = function (typeNumber, errorCorrectLevel) { switch (errorCorrectLevel) { case QRErrorCorrectLevel.L: return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; case QRErrorCorrectLevel.M: return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; case QRErrorCorrectLevel.Q: return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; case QRErrorCorrectLevel.H: return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; default: return undefined; } }; function QRBitBuffer() { this.buffer = []; this.length = 0; } QRBitBuffer.prototype.get = function (index) { var bufIndex = Math.floor(index / 8); return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1; }; QRBitBuffer.prototype.put = function (num, length) { for (var i = 0; i < length; i++) { this.putBit(((num >>> (length - i - 1)) & 1) === 1); } }; QRBitBuffer.prototype.getLengthInBits = function () { return this.length; }; QRBitBuffer.prototype.putBit = function (bit) { var bufIndex = Math.floor(this.length / 8); if (this.buffer.length <= bufIndex) { this.buffer.push(0); } if (bit) { this.buffer[bufIndex] |= (0x80 >>> (this.length % 8)); } this.length++; }; var QRCodeLimitLength = [[17, 14, 11, 7], [32, 26, 20, 14], [53, 42, 32, 24], [78, 62, 46, 34], [106, 84, 60, 44], [134, 106, 74, 58], [154, 122, 86, 64], [192, 152, 108, 84], [230, 180, 130, 98], [271, 213, 151, 119], [321, 251, 177, 137], [367, 287, 203, 155], [425, 331, 241, 177], [458, 362, 258, 194], [520, 412, 292, 220], [586, 450, 322, 250], [644, 504, 364, 280], [718, 560, 394, 310], [792, 624, 442, 338], [858, 666, 482, 382], [929, 711, 509, 403], [1003, 779, 565, 439], [1091, 857, 611, 461], [1171, 911, 661, 511], [1273, 997, 715, 535], [1367, 1059, 751, 593], [1465, 1125, 805, 625], [1528, 1190, 868, 658], [1628, 1264, 908, 698], [1732, 1370, 982, 742], [1840, 1452, 1030, 790], [1952, 1538, 1112, 842], [2068, 1628, 1168, 898], [2188, 1722, 1228, 958], [2303, 1809, 1283, 983], [2431, 1911, 1351, 1051], [2563, 1989, 1423, 1093], [2699, 2099, 1499, 1139], [2809, 2213, 1579, 1219], [2953, 2331, 1663, 1273]]; /** * Get the type by string length * * @private * @param {String} sText * @param {Number} nCorrectLevel * @return {Number} type */ function _getTypeNumber(sText, nCorrectLevel) { var nType = 1; var length = _getUTF8Length(sText); for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) { var nLimit = 0; switch (nCorrectLevel) { case QRErrorCorrectLevel.L : nLimit = QRCodeLimitLength[i][0]; break; case QRErrorCorrectLevel.M : nLimit = QRCodeLimitLength[i][1]; break; case QRErrorCorrectLevel.Q : nLimit = QRCodeLimitLength[i][2]; break; case QRErrorCorrectLevel.H : nLimit = QRCodeLimitLength[i][3]; break; } if (length <= nLimit) { break; } else { nType++; } } if (nType > QRCodeLimitLength.length) { throw new Error("Too long data"); } return nType; } function _getUTF8Length(sText) { var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a'); return replacedText.length + (replacedText.length != sText ? 3 : 0); } function QRCode(opt) { this.opt = { width: 255, height: 255, typeNumber: 4, correctLevel: QRErrorCorrectLevel.H }; if (typeof opt === 'string') { this.opt.text = opt; } else Object.assign(this.opt, opt); if (this.opt.text) { this.makeCode(this.opt.text); } } /** * Make the QRCode * * @param {String} sText link data */ QRCode.prototype.makeCode = function (sText) { this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this.opt.correctLevel), this.opt.correctLevel); this._oQRCode.addData(sText); this._oQRCode.make(); }; QRCode.prototype.getBitmap = function () { var n = this._oQRCode.getModuleCount(); return Array(n).fill(null).map((u, i) => Array(n).fill(null).map((u, j) => this._oQRCode.isDark(i, j))); }; /** * @name QRCode.CorrectLevel */ QRCode.CorrectLevel = QRErrorCorrectLevel; /* harmony default export */ const Converter_QRCode = (QRCode); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DelaySignal.js var DelaySignal = __webpack_require__(8098); ;// CONCATENATED MODULE: ./node_modules/absol/src/Math/BezierCurve.js /** * * @param {Vec2} startPoint * @param {Vec2} ctrlPoint1 * @param {Vec2} ctrlPoint2 * @param {Vec2} endPoint * @constructor */ function BezierCurve(startPoint, ctrlPoint1, ctrlPoint2, endPoint) { this.startPoint = startPoint; this.ctrlPoint1 = ctrlPoint1; this.ctrlPoint2 = ctrlPoint2; this.endPoint = endPoint; } /** * * @param {number} t */ BezierCurve.prototype.pointAt = function (t) { var s1 = this.ctrlPoint1.sub(this.startPoint).mult(t).add(this.startPoint); var s2 = this.ctrlPoint2.sub(this.ctrlPoint1).mult(t).add(this.ctrlPoint1); var s3 = this.endPoint.sub(this.ctrlPoint2).mult(t).add(this.ctrlPoint2); var s4 = s2.sub(s1).mult(t).add(s1); var s5 = s3.sub(s2).mult(t).add(s2); return s5.sub(s4).mult(t).add(s4); }; /** * * @param {Vec2} point * @returns {number} */ BezierCurve.prototype.nearestBzParamToPoint = function (point) { var low = 0; var high = 1; var ml; var mh; var delta = 0.00001; while (high - low > delta) { ml = low + (high - low) / 3; mh = high - (high - low) / 3; if (this.pointAt(ml).dist(point) < this.pointAt(mh).dist(point)) { high = mh; } else { low = ml; } } return (low + high) / 2; }; /** * * @param {Vec2} point * @returns {*} */ BezierCurve.prototype.distanceToPoint = function (point) { return this.pointAt(this.nearestBzParamToPoint(point)).dist(point); }; /** * * @param {BezierCurve} otherCurve * @returns {{current: number, other: number}} */ BezierCurve.prototype.nearestBParamToOtherBzCurve = function (otherCurve) { var res = { current: 0, other: 0 }; var delta = 0.00001; var low = 0; var high = 1; var ml; var mh; var currentPointL, currentPointH; while (high - low > delta) { ml = low + (high - low) / 3; mh = high - (high - low) / 3; currentPointL = this.pointAt(ml); currentPointH = this.pointAt(mh); if (otherCurve.distanceToPoint(currentPointL) < otherCurve.distanceToPoint(currentPointH)) { high = mh; } else { low = ml; } } res.current = (low + high) / 2; currentPointL = this.pointAt(res.current); res.other = otherCurve.nearestBzParamToPoint(currentPointL); return res; }; /** * @returns {BezierCurve} */ BezierCurve.prototype.copy = function () { return new BezierCurve(this.startPoint.copy(), this.ctrlPoint1.copy(), this.ctrlPoint2.copy(), this.endPoint.copy()); }; /* harmony default export */ const Math_BezierCurve = (BezierCurve); ;// CONCATENATED MODULE: ./node_modules/absol/src/SCLang/SCCodeValidation.js /** * @typedef {Object} SCCodeValidationOption * @property {string} target - default: "program" * @variables {string[]} variables * */ /** * * @param {string} source * @param {SCCodeValidationOption} opt * @constructor */ function SCCodeValidation(source, opt) { this.source = source; this.opt = opt || {}; this.error = null; this.parsed = null; this.usedGlobalVariables = []; this.glolbalScope = new VarScope/* default */.Z(); this.topScope = new VarScope/* default */.Z(this.glolbalScope); console.log(this.topScope) this.stack = [ { scope: this.glolbalScope, }, { scope: this.topScope, } ]; this.execute(); } SCCodeValidation.prototype.execute = function () { this.parsed = SCLang_SCParser.parse(this.source, this.opt.target || 'program'); this.calcErrorMessages(); if (!this.parsed.error) { this.accept(this.parsed.ast); this.calcNameError(); } }; SCCodeValidation.prototype.accept = function (node) { var visitor = this.visitors[node.type]; if (visitor) { return this.visitors[node.type].apply(this, arguments); // try { // // } catch (e) { // console.error(e, node) // } } else { // throw this.makeError("NotHandle", 'Can not handle node type ' + node && node.type, node); } }; SCCodeValidation.prototype.visitors = { Program: function (nd) { var i = 0; var statements = nd.body; while (i < statements.length) { this.accept(statements[i]); i++; } }, BlockStatement: function (nd) { var i = 0; var statements = nd.body; while (i < statements.length) { this.accept(statements[i]); i++; } }, ExpressionStatement: function (nd) { this.accept(nd.expression); }, VariableDeclarator: function (nd) { var name = this.accept(nd.id); this.topScope.declare(name, null, true); if (nd.init) this.accept(nd.init, 'get_var'); }, VariableDeclaration: function (nd) { if (nd.declarations) nd.declarations.forEach(it => { this.accept(it); }) }, ArrayExpression: function (nd) { nd.elements.forEach(it => { this.accept(it); }); }, ForCountStatement: function (nd) { this.accept(nd.from, 'get_var'); this.accept(nd.to, 'get_var'); this.accept(nd.for, 'get_var'); this.accept(nd.body); }, WhileStatement: function (nd) { this.accept(nd.test, 'get_var'); this.accept(nd.body); }, DoWhileStatement: function (nd) { this.accept(nd.test, 'get_var'); this.accept(nd.body); }, ForOfStatement: function (nd) { this.accept(nd.for, 'get_var'); this.accept(nd.of, 'get_var'); this.accept(nd.body); }, ForInStatement: function (nd) { this.accept(nd.for, 'get_var'); this.accept(nd.in, 'get_var'); this.accept(nd.body); }, AssignmentExpression: function (nd) { this.accept(nd.left, 'get_var'); this.accept(nd.right, 'get_var'); }, IfStatement: function (nd) { this.accept(nd.test, 'get_var'); this.accept(nd.consequent); if (nd.alternate) { this.accept(nd.alternate); } }, ConditionalExpression: function (nd) { this.accept(nd.test, 'get_var'); this.accept(nd.consequent); this.accept(nd.alternate); }, BinaryExpression: function (nd) { this.accept(nd.left, 'get_var'); this.accept(nd.right, 'get_var'); }, UnaryExpression: function (nd) { this.accept(nd.argument, 'get_var'); }, CallExpression: function (nd) { this.accept(nd.callee, 'get_var'); nd.arguments.forEach(it => { this.accept(it, 'get_var'); }); }, FunctionDeclaration: function (nd) { }, NewExpression: function (nd) { this.accept(nd.callee, 'get_var'); nd.arguments.forEach(it => { this.accept(it, 'get_var'); }); }, ObjectProperty: function (nd) { this.accept(nd.value, 'get_var'); }, ObjectExpression: function (nd) { nd.properties.forEach(it => { this.accept(it, 'get_var'); }) }, /** * @this {SCCodeValidation} * @param nd */ MemberExpression: function (nd) { this.accept(nd.object, 'get_var'); if (nd.computed) { this.accept(nd.property, 'get_var'); } }, ReturnStatement: function (nd){ this.accept(nd.argument, 'get_var'); }, Identifier: function (nd, type) { var name = nd.name; var scope; if (type === 'get_var') { scope = this.topScope.findScope(name); if (!scope) { this.glolbalScope.declare(name, null, true); } } return name; }, } SCCodeValidation.prototype.calcErrorMessages = function () { var rawError = this.parsed.error; var ist = this.parsed; var rows; var errorText = ''; var error = ist.error; var token, charIdx, rowIdx; if (rawError) { rows = this.source.split('\n'); switch (error.type) { case 'unexpected': errorText = `<span style="color:red;">${error.message}</span>`; token = ist.tokens[error.tokenIdx]; charIdx = token.start; rowIdx = 0; while (rowIdx < rows.length) { if (charIdx <= rows[rowIdx].length) { errorText = `<strong>Line ${rowIdx + 1}:</strong> ` + errorText errorText += '<br>'; errorText += `<div style="color:blue; white-space: pre-wrap; font-family: Consolas, serif;">${rows[rowIdx]}</div>`; errorText += `<div style=" --text-color:red; white-space: pre-wrap; font-family: Consolas, serif;" class="as-blink-text">${' '.repeat(charIdx)}^</div>`; break; } charIdx -= rows[rowIdx].length + 1;//by \n rowIdx++; } break; default: errorText = `<span style="color:red">${error.message}</span>`; break; } this.error = { type: 'syntax', message: rawError.message, htmlMessage: errorText }; } }; SCCodeValidation.prototype.calcNameError = function (){ var variables = this.opt.variables || []; var variableDict = variables.reduce((ac, cr)=>{ ac[cr] = true; return ac; }, {}); var undefinedVariables = Object.keys(this.glolbalScope.data).filter(name=> !variableDict[name]); if (undefinedVariables.length > 0){ this.error = { type: 'name', message: 'Undefined variables: ' + undefinedVariables.join(', '), htmlMessage: `<span style="color:red;">Undefined variables: ${undefinedVariables.join(', ')}</span>` } } }; /* harmony default export */ const SCLang_SCCodeValidation = ((/* unused pure expression or super */ null && (SCCodeValidation))); function validateSCCode(code, opt) { return new SCCodeValidation(code, opt); } /* var d = absol.sclang.validateSCCode(` var name = nd.name; var scope; var a; a = b; var m = {a: a, b: b, d: d}; if (type === 'get_var') { x = y; scope = this.topScope.findScope(nd.object); if (!scope) { this.glolbalScope.declare(name, null, true); } } z = Math.max(x,y, scope[a]); return name;`, {variables: ['Math', 'Date', 'x','this']}); if (d.error) { console.log(d.error); var div = document.createElement('div'); setTimeout(() => { document.body.appendChild(div); div.innerHTML = d.error.htmlMessage; }, 100) } */ ;// CONCATENATED MODULE: ./node_modules/absol/src/index.js var src_absol = { int: Math_int, array: DataStructure_Array, safeThrow: safeThrow/* default */.Z, Rectangle: Rectangle/* default */.Z, BezierCurve: Math_BezierCurve, ResizeSystem: HTML5_ResizeSystem/* default */.Z, Arc: Math_Arc, Polygon: Polygon/* default */.Z, NumRange: Math_NumRange, CookieStore: Cookie_CookieStore, parseCookieString: parseCookieString, CMDRunner: CMDRunner/* default */.Z, ContextManager: ContextManager/* default */.Z, Application: AppPattern_Application, Fragment: Fragment/* default */.Z, VarScope: VarScope/* default */.Z, Context: Context/* default */.Z, Activity: AppPattern_Activity, Element: Element/* default */.Z, ElementNS: AElementNS/* default */.Z, AElement: Element/* default */.Z, AElementNS: AElementNS/* default */.Z, DomSignal: DomSignal/* default */.ZP, DelaySignal: DelaySignal/* default */.Z, JSPath: JSPath/* default */.Z, TemplateString: TemplateString/* default */.Z, TemplateXML: JSMaker_TemplateXML, Dom: HTML5_Dom/* default */.ZP, Svg: Svg/* default */.ZP, BrowserDetector: BrowserDetector/* default */.Z, OOP: OOP/* default */.ZP, XML: XML_XML, Color: Color/* default */.Z, EventEmitter: EventEmitter/* default */.ZP, JSZip: window.JSZip, IFrameBridge: IFrameBridge/* default */.Z, JSDocx: JSDocx_JSDocx, Broadcast: Network_Broadcast, text: Text, file: file, base64: base64, Alarm: Time_Alarm, coreDom: HTML5_Dom/* default.ShareInstance */.ZP.ShareInstance, coreSvg: Svg/* default.ShareInstance */.ZP.ShareInstance, require: function (tagName) { return this.coreDom.require(tagName) || this.coreSvg.require(tagName); }, domCreator: HTML5_Dom/* default.ShareInstance.creator */.ZP.ShareInstance.creator, svgCreator: HTML5_Dom/* default.ShareInstance.creator */.ZP.ShareInstance.creator, _: HTML5_Dom/* default.ShareInstance._ */.ZP.ShareInstance._, $: HTML5_Dom/* default.ShareInstance.$ */.ZP.ShareInstance.$, $$: HTML5_Dom/* default.ShareInstance.$$ */.ZP.ShareInstance.$$, _svg: Svg/* default.ShareInstance._ */.ZP.ShareInstance._, $svg: Svg/* default.ShareInstance.$ */.ZP.ShareInstance.$, Ref: Ref/* default */.Z, Const: AppPattern_Const, XHR: XHR/* default */.Z, string: Object.assign({}, stringFormat, stringGenerate), jsx: { dom: dom_namespaceObject, attribute: JSX_attribute }, QRCode:Converter_QRCode, clipboard: Clipboard, dataStructure: { Heap: Heap/* default */.ZP }, datetime: datetime, Vec2: Vec2/* default */.Z, Mat3: Mat3/* default */.Z, LanguageSystem: LanguageSystem/* default */.ZP, ALogger: Code_ALogger, FlagManager: Code_FlagManager, ObservableArray: AppPattern_ObservableArray, ObservableStruct: AppPattern_ObservableStruct, circuit: { CCBlock: circuit_CCBlock, CCLine: circuit_CCLine }, FileSaver: FileSaver, Thread: Thread/* default */.Z, setDomImmediate: DomSignal/* setDomImmediate */.J6, clearDomImmediate: DomSignal/* clearDomImmediate */.fi, generateJSVariable: generator/* generateJSVariable */.NQ, copyJSVariable: generator/* copyJSVariable */.Ew, normalizeIdent: stringFormat.normalizeIdent, replaceDateStringJSVariable: generator/* replaceDateStringJSVariable */.wP, remoteNodeRequireAsync: remoteRequireNodeAsync, shareConfiguration: AppPattern_ShareConfiguration.instance, DynamicCSS: HTML5_DynamicCSS/* default */.Z, getSystemFontSize: HTML5_Dom/* getSystemFontSize */.Z4, sclang:{ 'SCParser': SCLang_SCParser, 'SCProgramInstance': SCLang_SCProgramInstance, 'SCOperatorExecutor': SCLang_SCOperatorExecutor, 'SCStaticLibScope':SCStaticLibScope, 'SCDynamicLibScope': SCDynamicLibScope, 'SCScope': SCLang_SCScope, 'SCCodeGenerator': SCLang_SCCodeGenerator, 'generateSCCode': generateSCCode, 'generateSCHighlightPreviewCode': generateSCHighlightPreviewCode, 'validateSCCode': validateSCCode }, printer: Print_printer, measurements: measurements_namespaceObject }; /* harmony default export */ const src = (src_absol); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElement.js var AElement = __webpack_require__(7951); ;// 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]; } }); }); /** * @deprecated * @param {string|Array} className * @returns {Boolean} */ AElement/* default.prototype.containsClass */.Z.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); }; /** * @deprecated * @param {string|Array} className * @returns {Boolean} */ AElementNS/* default.prototype.containsClass */.Z.prototype.containsClass = AElement/* default.prototype.containsClass */.Z.prototype.containsClass; // EXTERNAL MODULE: ./node_modules/absol-acomp/AComp.js + 1 modules var AComp = __webpack_require__(6657); // EXTERNAL MODULE: ./node_modules/absol/src/String/stringMatching.js var stringMatching = __webpack_require__(991); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/keeview.css var keeview = __webpack_require__(1561); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/QuickMenu.js var QuickMenu = __webpack_require__(1274); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ChromeCalendar.js var ChromeCalendar = __webpack_require__(4845); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Radio.js var Radio = __webpack_require__(7002); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiChars.js var EmojiChars = __webpack_require__(7712); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiAnims.js var EmojiAnims = __webpack_require__(4670); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/messageinput/MessageInput.js + 2 modules var MessageInput = __webpack_require__(4877); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/EmojiPicker.js var EmojiPicker = __webpack_require__(2948); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ContextMenu.js var ContextMenu = __webpack_require__(7054); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/dom/install.js + 242 modules var install = __webpack_require__(6369); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Searcher.js var Searcher = __webpack_require__(9024); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/utils.js var utils = __webpack_require__(1477); // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var absol_acomp_ACore = __webpack_require__(3855); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/materializeIconTrigger.js function materializeIconTrigger() { Dom.documentReady.then(function () { var linkMaterial = ACore.$('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.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._({ tag: 'i', class:"material-icons", style: { fontSize: '14px', position: 'fixed', 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); }); } // EXTERNAL MODULE: ./node_modules/absol-acomp/js/VariantColors.js var VariantColors = __webpack_require__(8494); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Tooltip.js var Tooltip = __webpack_require__(5194); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TextMeasure.js + 1 modules var TextMeasure = __webpack_require__(2610); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/BContextCapture.js var BContextCapture = __webpack_require__(9782); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/cpuviewer.css var cpuviewer = __webpack_require__(8858); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/CPUViewer.js /*** * @extends AElement * @constructor */ function CPUViewer() { /*** * * @type {HTMLCanvasElement} */ this.$canvas = (0,absol_acomp_ACore.$)('canvas', this); this.ctx = this.$canvas.getContext('2d'); this.offsetTime = 0; this.inv = -1; this.usage = Array(120).fill(0); this.holdStart = 0; this.holdTime = 0; this.logOffset = 0; this.counter = 0; this['tick'] = this.tick.bind(this); } CPUViewer.tag = 'CPUViewer'.toLowerCase(); CPUViewer.render = function () { return (0,absol_acomp_ACore._)({ class: 'as-cpu-viewer', child: { tag: 'canvas', attr: { width: '120px', height: '50px' } } }); }; CPUViewer.prototype.start = function () { if (this.inv < 0) { this.offsetTime = new Date().getTime(); setInterval(this.tick, 250) } }; CPUViewer.prototype.stop = function () { if (this.inv > 0) { clearInterval(this.inv); this.inv = -1; } }; CPUViewer.prototype.tick = function () { while (this.holdTime > 250) { this.holdTime -= 250; this.usage.push(100); } this.usage.push(this.holdTime * 100 / 250); while (this.usage.length > 120) { this.usage.shift(); } this.ctx.fillStyle = 'black'; this.ctx.fillRect(0, 0, 120, 50); var y; this.ctx.fillStyle = 'yellow'; for (var x = 0; x < this.usage.length; ++x) { y = this.usage[x] / 2; this.ctx.fillRect(x, 50 - y, 1, y); } var now = new Date().getTime(); this.logOffset = now; this.holdStart = now; this.holdTime = 0; }; CPUViewer.prototype.hold = function () { if (this.counter === 0) { this.holdStart = new Date().getTime(); } this.counter++; }; CPUViewer.prototype.release = function () { if (this.counter <= 0) return; this.counter--; if (this.counter === 0) { this.holdTime += new Date().getTime() - this.holdStart; } }; /*** * * @type {CPUViewer} */ CPUViewer.instance = null; CPUViewer.state = 'NOT_INIT'; CPUViewer.start = function () { if (!this.instance) { this.instance = (0,absol_acomp_ACore._)('cpuviewer'); this.state = "NOT_ATTACHED"; } if (this.state === "NOT_ATTACHED") { this.state = "RUNNING"; HTML5_Dom/* default.documentReady.then */.ZP.documentReady.then(function () { document.body.appendChild(this.instance); }.bind(this)); } this.instance.start(); CPUViewer.hold = function () { this.instance.hold(); }; CPUViewer.release = function () { this.instance.release(); }; }; CPUViewer.stop = function () { if (!this.instance) return; if (this.state !== "RUNNING") return; this.instance.stop(); this.instance.remove(); this.state = 'NOT_ATTACHED'; }; CPUViewer.hold = function () { }; CPUViewer.release = function () { }; absol_acomp_ACore/* default.install */.Z.install(CPUViewer); /* harmony default export */ const js_CPUViewer = (CPUViewer); function AttachHookView() { } HTML5_Dom/* default.documentReady.then */.ZP.documentReady.then(() => { return; if (!window.ABSOL_DEBUG && location.href.indexOf('localhost') < 0) { return; } var elt = (0,absol_acomp_ACore._)({ class:'as-pending-attachhook-count' }).addTo(document.body); setInterval(() => { elt.innerHTML = '' + Object.keys(pendingAttachHooks).length }, 2000); }); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/list/ListDictionary.js var ListDictionary = __webpack_require__(103); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/keeview/overviewwidget.css var overviewwidget = __webpack_require__(2553); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TabView.js + 2 modules var TabView = __webpack_require__(7); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Hanger.js var Hanger = __webpack_require__(655); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/OnScreenWidget.js var OnScreenWidget = __webpack_require__(7315); // EXTERNAL MODULE: ./node_modules/absol-acomp/css/keeview/owmodal.css var owmodal = __webpack_require__(4672); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/FlexiconButton.js var FlexiconButton = __webpack_require__(3929); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/keeview/OWModalManager.js function implicitNode(data) { if (!data) return (0,absol_acomp_ACore._)('div'); if (data instanceof Array) { return data.map(implicitNode); } else if ((0,HTML5_Dom/* isDomNode */.mV)(data)) { return data; } else if (typeof data === "string") { return (0,absol_acomp_ACore._)({ tag: 'span', child: { text: data } }); } else if (typeof data === "object") { return (0,absol_acomp_ACore._)(data); } else return (0,absol_acomp_ACore._)('div'); } /*** * * @constructor */ function OWModalManager() { } OWModalManager.prototype.getView = function () { if (!this.$view) this.createView(); return this.$view; }; OWModalManager.prototype.createView = function () { this.$view = (0,absol_acomp_ACore._)('.kv-ow-modal-manager'); }; OWModalManager.prototype.createModal = function (opt, caller) { console.trace(1); opt = opt || {}; var modal = (0,absol_acomp_ACore._)({ class: 'kv-ow-modal', child: { class: 'kv-ow-modal-window', child: [ { class: 'kv-ow-modal-header', child: [ { class: 'kv-ow-modal-title', child: { text: 'Tiêu đề' } } ] }, { class: 'kv-ow-modal-body', child: Array(3).fill({ tag: 'span', child: { text: 'Bạn có chắc muốn thoát khỏi nhóm? Đây là nội dung hơi bị dài luôn nè' } }) }, { class: 'kv-ow-modal-footer' } ] } }); modal.$body = (0,absol_acomp_ACore.$)('.kv-ow-modal-body', modal); modal.$title = (0,absol_acomp_ACore.$)('.kv-ow-modal-title', modal); modal.$footer = (0,absol_acomp_ACore.$)('.kv-ow-modal-footer', modal); if (modal.$title) { if (typeof opt.title === "string") { modal.$title.clearChild().addChild((0,absol_acomp_ACore._)({ text: opt.title })); } else { modal.$title.clearChild().addChild(implicitNode(opt.title)); } } else { modal.$title.addStyle('display', 'none'); } modal.$body.clearChild(); if (opt.content || opt.contentbody) { modal.$body.addChild(implicitNode(opt.content || opt.contentbody)); } modal.$footer.clearChild(); if (opt.buttons || opt.buttonlist) { modal.$footer.addChild((opt.buttons || opt.buttonlist).map(function (bt) { var props = Object.assign({}, bt); delete props.onclick; var onclick = bt.onclick; return (0,absol_acomp_ACore._)({ tag: FlexiconButton/* default.tag */.Z.tag, props: props, on: { click: function (event) { if (typeof onclick === "function") { onclick.call(this, event, modal, caller); } } } }) })); } return modal; }; OWModalManager.prototype.showModal = function (opt, caller) { var modal = this.createModal(opt, caller); var minZIndex = Array.prototype.reduce.call(this.getView(), function (ac, cr) { return Math.max(ac, parseFloat(cr.style.zIndex) || 0) }, 0); modal.addStyle('zIndex', minZIndex + 1 + ''); this.$view.addChild(modal); return modal; }; /* harmony default export */ const keeview_OWModalManager = (OWModalManager); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/keeview/OverviewWidget.js /*** * @extends Fragment * @param {{}} host * @param {Fragment[]} children * @constructor */ function OverviewWidget(host, children) { Fragment/* default.call */.Z.call(this); this.setting = { viewPos: { x: 0, y: 0 }, minimize: true }; this.host = host; this.children = children || []; this.childrenById = this.children.reduce(function (ac, child) { ac[child.id] = child; return ac; }, {}); this._position = new Vec2/* default */.Z(0, 0); this.setContext("OVERVIEW_WIDGET", this); this.children.forEach(function (fg) { fg.attach(this); }.bind(this)); this.modalMng = new keeview_OWModalManager(); } OOP/* default.mixClass */.ZP.mixClass(OverviewWidget, Fragment/* default */.Z); OverviewWidget.prototype.createView = function () { this.$title = (0,absol_acomp_ACore._)({ tag: 'span', class: 'kv-overview-widget-title', child: { text: '...' } }); this.$tabs = this.children.map(function (fg) { return (0,absol_acomp_ACore._)({ tag: 'tabframe', class: 'kv-overview-widget-page', child: fg.getView(), props: { name: ' '.repeat(5),//||fg.name, tabIcon: fg.tabIcon, id: fg.id } }); }); this.$view = (0,absol_acomp_ACore._)({ class: 'kv-overview-widget', style: { '--x': '0px', '--y': '0px', visibility: 'hidden' }, child: [ { tag: Hanger/* default.tag */.Z.tag, class: 'kv-overview-widget-header', child: [ this.$title, { class: 'kv-overview-widget-header-window-action', child: [ { tag: 'button', child: 'span.mdi.mdi-window-minimize', on: { click: this.minimize.bind(this) } } ] } ], on: { predrag: this.ev_headerPredrag.bind(this), dragstart: this.ev_headerDragStart.bind(this), drag: this.ev_headerDrag.bind(this), dragend: this.ev_headerDragEnd.bind(this), } }, { class: 'kv-overview-widget-body', child: { tag: TabView/* default.tag */.Z.tag, class: ['kv-overview-widget-tab-view', 'xp-tiny'], child: this.$tabs, on: { activetab: this.ev_activeTab.bind(this) } } }, this.modalMng.getView() ] }); this._updateViewPosition(); this.$bubble = (0,absol_acomp_ACore._)({ tag: OnScreenWidget/* default.tag */.Z.tag, class: 'kv-overview-widget-bubble', id: 'overview_widget_bubble', style: { // visibility: 'hidden' '--cx': '0.02', '--cy': '0.96' }, child: [ '<svg class="kv-overview-widget-bubble-background" viewBox="0 0 24 24">\n' + ' <path fill="currentColor" d="M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z" />\n' + '</svg>', { class: 'kv-overview-widget-bubble-badge', child: { tag: 'span', child: { text: '0' } } } ], on: { click: this.toggle.bind(this) } }); this.$tabview = (0,absol_acomp_ACore.$)('.kv-overview-widget-tab-view', this.$view); this.$action = (0,absol_acomp_ACore.$)('.kv-overview-widget-header-window-action', this.$view); this.$bubbleBadge = (0,absol_acomp_ACore.$)('.kv-overview-widget-bubble-badge', this.$bubble); this.$badgeText = (0,absol_acomp_ACore.$)('span', this.$bubbleBadge); this.$badgeText.requestUpdateSize = this._updateViewPosition.bind(this); var self = this; this.$tabs.forEach(function (tabElt) { tabElt.on('active', function () { self.childrenById[this.id].start(); }); tabElt.on('deactive', function () { self.childrenById[this.id].pause(); }); }); this.updateCounter(); }; OverviewWidget.prototype.saveSetting = function () { localStorage.setItem('overview_widget_setting', JSON.stringify(this.setting)); }; OverviewWidget.prototype.loadSetting = function () { var setting = {}; try { var settingJson = localStorage.getItem('overview_widget_setting'); if (settingJson) setting = JSON.parse(settingJson); } catch (err) { } Object.assign(this.setting, setting); this._position = new Vec2/* default */.Z(this.setting.viewPos.x, this.setting.viewPos.y); this._updateViewPosition(); }; OverviewWidget.prototype.updateCounter = function (from) { var id; var tabElt; var counter; if (from) { id = from.id; tabElt = this.$tabview.getTabById(id); counter = from.counter; if (counter) tabElt.name = '(' + counter + ')'; else tabElt.name = ' '.repeat(5); } else { this.$tabs.forEach(function (tabElt) { id = tabElt.id; var frg = this.childrenById[id]; var counter = frg.counter; if (counter) tabElt.name = '(' + counter + ')'; else tabElt.name = ' '.repeat(5); }.bind(this)); } var sumCounter = this.children.reduce(function (ac, cr) { return ac + cr.counter; }, 0); this.$badgeText.firstChild.data = sumCounter + ''; if (sumCounter > 0) { this.$bubbleBadge.removeStyle('visibility'); } else { this.$bubbleBadge.addStyle('visibility', 'hidden'); } }; OverviewWidget.prototype.onStart = function () { this.getView(); this.loadSetting(); this.$view.addTo(document.body); this.$bubble.addTo(document.body); HTML5_ResizeSystem/* default.add */.Z.add(this.$badgeText); this._updateViewPosition(); if (this.setting.minimize) { this.$bubble.removeStyle('visibility'); } else { this.$view.removeStyle('visibility'); } this.children.forEach(function (fg) { fg.start(true); }); var activeTabId = this.$tabview.getActiveTabId(); this.childrenById[activeTabId].start(); }; OverviewWidget.prototype.onStop = function () { this.getView().remove(); }; OverviewWidget.prototype.ev_activeTab = function (event) { var frag = this.childrenById[event.id]; this.$title.firstChild.data = frag.name + ''; }; OverviewWidget.prototype.ev_headerPredrag = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.$action, event)) { event.cancel(); } }; OverviewWidget.prototype.ev_headerDragStart = function (event) { var bound = this.$view.getBoundingClientRect(); this._dragData = { bound: bound, p0: new Vec2/* default */.Z(bound.left, bound.top), modal: (0,absol_acomp_ACore._)({ style: { position: 'fixed', zIndex: '1000000000', left: 0, right: 0, top: 0, bottom: 0, background: 'transparent' } }).addTo(document.body) }; }; OverviewWidget.prototype.ev_headerDrag = function (event) { var d = event.currentPoint.sub(event.startingPoint); this._position = this._dragData.p0.add(d); this._updateViewPosition(); }; OverviewWidget.prototype.ev_headerDragEnd = function (event) { this._dragData.modal.remove(); this.setting.viewPos.x = this._position.x; this.setting.viewPos.y = this._position.y; this.saveSetting(); }; OverviewWidget.prototype._updateViewPosition = function () { if (!this.$view) return; var screenSize = (0,HTML5_Dom/* getScreenSize */.tE)(); var bound = this.$view.getBoundingClientRect(); var x = Math.max(0, Math.min(this._position.x, screenSize.width - bound.width)); var y = Math.max(0, Math.min(this._position.y, screenSize.height - bound.height)); this.$view.addStyle({ '--x': x + 'px', '--y': y + 'px' }); }; OverviewWidget.prototype.showModal = function (opt) { return this.modalMng.showModal(opt, this); }; Object.defineProperty(OverviewWidget.prototype, 'position', { set: function (value) { if (!value) value = new Vec2/* default */.Z(0, 0); if (value instanceof Array) { if ((0,utils.isRealNumber)(value[0] && (0,utils.isRealNumber)(value[1]))) { value = new Vec2/* default */.Z(value[0], value[1]); } else { value = new Vec2/* default */.Z(0, 0); } } else if (!(value instanceof Vec2/* default */.Z)) { if ((0,utils.isRealNumber)(value.x && (0,utils.isRealNumber)(value.y))) { value = new Vec2/* default */.Z(value[0], value[1]); } else { value = new Vec2/* default */.Z(0, 0); } } this._position = value; this._updateViewPosition(); }, get: function () { return this._position; } }); OverviewWidget.prototype.minimize = function () { this.$view.addStyle('visibility', 'hidden'); // this.$bubble.removeStyle('visibility'); this.setting.minimize = true; this.saveSetting(); var activeTabId = this.$tabview.getActiveTabId(); this.childrenById[activeTabId].pause(); }; OverviewWidget.prototype.maximize = function () { // this.$bubble.addStyle('visibility', 'hidden'); this.$view.removeStyle('visibility'); this.setting.minimize = false; this.saveSetting(); var activeTabId = this.$tabview.getActiveTabId(); this.childrenById[activeTabId].start(); }; OverviewWidget.prototype.toggle = function () { if (this.setting.minimize) { this.maximize(); } else { this.minimize(); } }; /* harmony default export */ const keeview_OverviewWidget = (OverviewWidget); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/keeview/OverviewPage.js /*** * @extends Fragment * @param {{}} host * @constructor */ function OverviewPage(host) { Fragment/* default.call */.Z.call(this); this.host = host; this.id = (0,stringGenerate.randomIdent)(5); this._counter = 0; } OOP/* default.mixClass */.ZP.mixClass(OverviewPage, Fragment/* default */.Z); OverviewPage.prototype.tabIcon = 'span.mdi.mdi-cube-outline'; OverviewPage.prototype.name = 'Overview Page'; OverviewPage.prototype.createView = function () { return (0,absol_acomp_ACore._)({ child: { tag: 'span', child: { text: 'OverviewPage' } } }); }; OverviewPage.prototype.showModal = function (opt) { if (this.parent && this.parent.showModal) return this.parent.showModal(opt, this); }; Object.defineProperty(OverviewPage.prototype, 'counter', { set: function (value) { /*** * * @type {OverviewWidget} */ var parent = this.parent; if (!(0,utils.isRealNumber)(value)) value = 0; value = Math.max(0, value >> 0); this._counter = value; parent.updateCounter(); }, get: function () { return this._counter; } }); /* harmony default export */ const keeview_OverviewPage = (OverviewPage); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/finder/Finder.js + 2 modules var Finder = __webpack_require__(8556); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Toast.js var Toast = __webpack_require__(1376); // EXTERNAL MODULE: ./node_modules/absol/src/Print/pdf.js var pdf = __webpack_require__(9673); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ProgressBar.js var ProgressBar = __webpack_require__(6535); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/printer.js function silentDownloadAsPdf(adapter) { if (!adapter) throw new Error("Invalid print data"); adapter.parallel = adapter.parallel || 8; adapter.delay = adapter.delay || 0; adapter.chuckLength = 100; adapter.fileName = adapter.fileName || 'exports.pdf'; if (adapter.paddingEven !== false) { adapter.paddingEven = true; } if (!adapter.fileName.toLowerCase().endsWith('.pdf')) adapter.fileName += '.pdf'; var hiddenDiv = (0,absol_acomp_ACore._)({ style: { overflow: 'scroll', visibility: 'hidden', opacity: 0, pointerEvents: 'none', position: 'fixed', zIndex: -1000, } }).addTo(document.body); var progressBar = (0,absol_acomp_ACore._)({ tag: ProgressBar/* default */.Z, style: { margin: '5px' } }); var message = (0,absol_acomp_ACore._)({ tag: 'span', style: { margin: '5px' }, child: { text: 'Render' } }); /*** * * @type {Toast} */ var toast = Toast/* default.make */.Z.make({ props: { htitle: "Export DPF" }, child: [ { tag: 'div', style: { margin: '5px' }, child: { tag: 'strong', child: { text: adapter.fileName } } }, message, progressBar ] }); return new Promise(resolve => { var docs = adapter.docs.slice(); var docsN = docs.length; var serializer = Print_printer.ShareSerializer; var chucks = []; var chuckRemain; var printer; var finish = () => { message.firstChild.data = "Create PDF"; (0,pdf/* mergePdfs */.I)(chucks, pData => { progressBar.value = 0.9 + (pData.loaded + pData.merged) / (pData.all || 1) / 10; }).then(mergedPdf => { mergedPdf.save().then(file => { (0,FileSaver.saveAs)(new Blob([file]), adapter.fileName); progressBar.value = 1; message.firstChild.data = "Complete"; setTimeout(() => { toast.disappear(); }, 5000); }); }) } var nextChuck = () => { chuckRemain = Math.min(adapter.chuckLength, docs.length); printer = new Print_printer.PaperPrinter(Object.assign({ lastPagePaddingEven: docs.length <= chuckRemain }, adapter)); process(); } var finishChuck = () => { chucks.push(printer.pdfDoc.output('arraybuffer')); if (docs.length > 0) { nextChuck(); } else { finish(); } }; var process = () => { message.firstChild.data = 'Render (' + (docsN - docs.length) + '/' + docsN + ')'; var pg0 = 0.9 * (1 - docs.length / (docsN || 1)); progressBar.value = pg0; if (chuckRemain === 0) { finishChuck(); return; } var cDocs = docs.splice(0, Math.min(adapter.parallel, chuckRemain)); chuckRemain -= cDocs.length; var localSync = cDocs.map(doc => { var ctn = (0,absol_acomp_ACore._)({ style: { width: '2048px' } }).addTo(hiddenDiv); var renderSync = doc.render(ctn, doc); if (renderSync && renderSync.then) { renderSync = renderSync.then(() => Object.assign({}, doc, { elt: ctn.firstChild })); } else { renderSync = Promise.resolve(Object.assign({}, doc, { elt: ctn.firstChild })); } return renderSync.then(doc => { var delaySync = []; delaySync.push(new Promise(resolve => { setTimeout(resolve, adapter.delay); })) var elt = doc.elt; if (elt.fmComponent) { if (!doc.opt) doc.opt = {}; if (!doc.opt.margin) { doc.opt.margin = { top: elt.fmComponent.style.paddingTop || 57, left: elt.fmComponent.style.paddingLeft || 57, bottom: elt.fmComponent.style.paddingBottom || 57, right: elt.fmComponent.style.paddingRight || 57 }; } delaySync.push(elt.fmComponent.fragment.afterEntryCompleted()); } return Promise.all(delaySync).then(() => doc); }) }); Promise.all(localSync).then(docList => { return serializer.serialize(docList, printer, (pData) => { if (!pData.pdf) return; var ng1 = pg0 + pData.pdf.done / (pData.pdf.all || 1) * cDocs.length / (docsN || 1) * 0.9; if (ng1 - progressBar.value > 0.05) { progressBar.value = ng1; } }); }).then(() => printer.flush()) .then(() => process()); }; nextChuck(); }); } // EXTERNAL MODULE: ./node_modules/absol-acomp/css/mobileapp.css var mobileapp = __webpack_require__(8789); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/mobile/MApplication.js /** * @extends Fragment * @constructor */ function MApplication() { Fragment/* default.call */.Z.call(this); this.stack = []; this.pendingLoop = []; this.loopRunning = false; } OOP/* default.mixClass */.ZP.mixClass(MApplication, Fragment/* default */.Z); MApplication.prototype.createView = function () { this.$view = (0,absol_acomp_ACore._)({ class: ['am-application', 'am-stack'] }) }; MApplication.prototype.postHandler = function (handler) { this.pendingLoop.push(handler); if (this.loopRunning) return; while (this.pendingLoop.length > 0) { this.pendingLoop.shift()(); } }; MApplication.prototype.startActivity = function (clazz, bundle) { var handle = () => { var curAct = this.stack[this.stack.length - 1]; if (curAct) { curAct.pause(); } var newAct = new clazz(bundle); var view = newAct.getView(); this.$view.addChild(view); this.stack.push(newAct); newAct.attach(this); newAct.onCreated(); if (this.state === "PAUSE") { newAct.start(true); } else if (this.state === 'RUNNING') { if (curAct) curAct.pause(); newAct.start(); } } this.postHandler(handle); }; MApplication.prototype.replaceActivity = function (clazz, bundle) { var curAct = this.stack[this.stack.length - 1]; if (curAct) this.finishActivity(curAct, true); this.startActivity(clazz, bundle); }; /** * * @param act * @param {boolean=} replace */ MApplication.prototype.finishActivity = function (act, replace) { this.postHandler(() => { var curAct = this.stack[this.stack.length - 1]; if (curAct) { if (curAct !== act) throw new Error("Activity stack error!"); curAct.detach(); curAct.getView().remove(); this.stack.pop(); curAct.destroy(); curAct = this.stack[this.stack.length - 1]; if (curAct && this.state === 'RUNNING' && !replace) { curAct.resume(); } } }); }; MApplication.prototype.onStart = function () { for (var i = 0; i < this.stack.length; ++i) { this.stack[i].start(true); } }; MApplication.prototype.onResume = function () { var curAct = this.stack[this.stack.length - 1]; if (curAct) { curAct.resume(true); } }; MApplication.prototype.onPause = function () { var curAct = this.stack[this.stack.length - 1]; if (curAct) { curAct.pause(); } }; MApplication.prototype.onStop = function () { for (var i = this.stack.length - 1; i >= 0; --i) { this.stack[i].stop(); } }; MApplication.prototype.onDestroy = function () { while (this.stack.length) { this.stack.pop().destroy(); } }; /* harmony default export */ const mobile_MApplication = (MApplication); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/js/mobile/MActivity.js function MActivity(bundle) { Fragment/* default.call */.Z.call(this); this.caller = null; this.arguments = null; this.result = null; } OOP/* default.mixClass */.ZP.mixClass(MActivity, Fragment/* default */.Z); MActivity.prototype.createView = function () { this.$view = (0,absol_acomp_ACore._)({ class: 'am-activity' }); }; // // // MActivity.prototype.finish = function () { // if (!this.session) { // throw new Error("Activity is not started!"); // } // this.stop(); // if (this.onFinished) this.onFinished(); // if (this.caller) { // this.caller.activityReturn(this.session, this, this.result); // this.caller= null; // this.result = null; // this.arguments = null; // this.session = null; // } // }; // // /** // * @param {MActivity} activity // * @param {*} bundle // */ // MActivity.prototype.startActivity = function (session, activity, args) { // activity.stop();//stop before call new // this.pause(); // activity.caller = this; // activity.arguments = args; // activity.result = null; // activity.session = session; // activity.attach(this); // activity.viewToApp(); // activity.start(); // }; // // MActivity.prototype.activityReturn = function (session, act, result) { // if (this.onActivityReturn) { // this.onActivityReturn(session, act, result); // } // // this.viewToApp(); // this.resume(); // }; /* harmony default export */ const mobile_MActivity = (MActivity); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/list/ListSearchMaster.js + 1 modules var ListSearchMaster = __webpack_require__(4623); ;// CONCATENATED MODULE: ./node_modules/absol-acomp/dev.js absol.VariantColors = VariantColors/* default */.Z; absol.parseMessage = MessageInput/* parseMessage */.kW; absol.vScrollIntoView = utils.vScrollIntoView; //for export to window absol.Tooltip = Tooltip/* default */.Z; absol.QuickMenu = QuickMenu/* default */.Z; absol.AComp = AComp/* default */.Z; absol.Radio = Radio/* default */.Z; absol.EmojiChars = EmojiChars/* default */.Z; absol.EmojiAnims = EmojiAnims/* default */.Z; absol.ChromeCalendar = ChromeCalendar/* default */.Z; (0,install/* default */.Z)(absol.coreDom); //old module absol.coreDom.install('searchcrosstextinput', Searcher/* default */.Z); Object.assign(absol.string, stringMatching); absol.MessageInput = MessageInput/* default */.ZP absol.EmojiPicker = EmojiPicker/* default */.Z; absol.ContextCaptor = ContextMenu/* default */.Z; absol.ListDictionary = ListDictionary/* default */.Z; absol.FinderFileSystem = Finder/* FinderFileSystem */.Vm; window.AComp = absol.AComp; absol.TextMeasure = TextMeasure/* default */.Z; absol.printer.silentDownloadAsPdf = silentDownloadAsPdf; absol.ListSearchMaster = ListSearchMaster/* default */.Z; HTML5_Dom/* default.documentReady.then */.ZP.documentReady.then(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: 'https://absol.cf/vendor/materialdesignicons/materialdesignicons.css' } }).addTo(document.head); } }); Object.assign(absol.$, utils); // materializeIconTrigger(); absol.openFileDialog = utils.openFileDialog; absol.CPUViewer = js_CPUViewer; absol.OverviewWidget = keeview_OverviewWidget; absol.OverviewPage = keeview_OverviewPage; absol.MApplication = mobile_MApplication; absol.MActivity = mobile_MActivity; HTML5_Dom/* default.documentReady.then */.ZP.documentReady.then(function () { ContextMenu/* default.auto */.Z.auto(); }); function testFont() { var dynamicCSs = new DynamicCSS(); var value = parseInt(localStorage.getItem('as_test_font_size')) || 14; var fontSizeInput = absol._({ tag: 'numberinput', props: { step: 1, min: 5, value: value }, on: { change: () => { localStorage.setItem('as_test_font_size', fontSizeInput.value + ''); dynamicCSs.setProperty(':root', 'font-size', fontSizeInput.value + 'px') .commit(); window.dispatchEvent(new Event('resize')) } } }); dynamicCSs.setProperty(':root', 'font-size', fontSizeInput.value + 'px') .commit(); window.dispatchEvent(new Event('resize')) var modal = absol._({ style: { background: 'white', position: 'fixed', top: '5px', right: '5px', padding: '5px', border: '1px solid #ddd', zIndex: 1e9 }, child: ['<label>font-size </label>', fontSizeInput] }).addTo(document.body); } if (location.href.indexOf('localhost') >= 0) { // Dom.documentReady.then(testFont); } })(); // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; // NAMESPACE OBJECT: ./src/helper.js var helper_namespaceObject = {}; __webpack_require__.r(helper_namespaceObject); __webpack_require__.d(helper_namespaceObject, { "addDevContextMenu": () => (addDevContextMenu), "autoCurve": () => (autoCurve), "beautyStep": () => (beautyStep), "calBeautySegment": () => (calBeautySegment), "circle": () => (circle), "fresherColor": () => (fresherColor), "generateBackgroundColors": () => (generateBackgroundColors), "getGlobalBBox": () => (getGlobalBBox), "getMaxHeightBox": () => (getMaxHeightBox), "getMaxWidthBox": () => (getMaxWidthBox), "getMinHeightBox": () => (getMinHeightBox), "getMinWidthBox": () => (getMinWidthBox), "getSubNumberArray": () => (getSubNumberArray), "hline": () => (hline), "isNumber": () => (isNumber), "lighterColor": () => (lighterColor), "line": () => (line), "map": () => (map), "measureArial14TextWidth": () => (measureArial14TextWidth), "moveHLine": () => (moveHLine), "moveVLine": () => (moveVLine), "paddingLeft": () => (paddingLeft), "pathTokenize": () => (pathTokenize), "rect": () => (rect), "text": () => (helper_text), "toLocalString": () => (toLocalString), "vline": () => (vline), "wrapChartInWHResizer": () => (wrapChartInWHResizer), "wrapToLines": () => (wrapToLines) }); // NAMESPACE OBJECT: ./src/template.js var template_namespaceObject = {}; __webpack_require__.r(template_namespaceObject); __webpack_require__.d(template_namespaceObject, { "rotate": () => (rotate), "translate": () => (translate) }); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Svg.js var Svg = __webpack_require__(6821); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/svg/Core.js var Core = new Svg/* default */.ZP(); /* harmony default export */ const svg_Core = (Core); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElementNS.js var AElementNS = __webpack_require__(2510); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Vec2.js var Vec2 = __webpack_require__(557); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/controller/Turtle.js /** * @typedef TurtleCommand * @property {String} cmd * @property {String} action * @property {Number[]} args * @property {Vec2} dest * @property {Vec2} tangent */ /*** * * @constructor */ function Turtle() { /** * @type {Array<TurtleCommand>} */ this._commands = []; /** * @type {Vec2} */ this._pos = new Vec2/* default */.Z(0, 0); /** * @type {Vec2} */ this._startPos = this._pos; /** * @type {Vec2} */ this._tangent = new Vec2/* default */.Z(0, 0); } /** * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.moveBy = function (dx, dy) { this._tangent = new Vec2/* default */.Z(dx, dy); this._pos = this._pos.add(this._tangent); this._startPos = this._pos; this._commands.push({ cmd: 'm', action: 'moveBy', args: [dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} x * @param {Number} y * @returns {Turtle} */ Turtle.prototype.moveTo = function (x, y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._startPos = this._pos; this._commands.push({ cmd: 'M', action: 'moveTo', args: [x, y], dest: this._pos, tangent: this._tangent }); return this; }; Turtle.prototype.moveForward = function (length) { var dV = this._tangent.normalized().mult(length); this._pos = this._pos.add(dV); this._startPos = this._pos; this._commands.push({ cmd: 'm', action: 'moveTo', args: [dV.x, dV.y], dest: this._pos, tangent: this._tangent }); return this; }; Turtle.prototype.lineForward = function (length) { var dV = this._tangent.normalized().mult(length); this._pos = this._pos.add(dV); this._startPos = this._pos; this._commands.push({ cmd: 'l', action: 'moveTo', args: [dV.x, dV.y], dest: this._pos, tangent: this._tangent }); return this; }; /*** * * @param {Number} angle - degree * @returns {Turtle} */ Turtle.prototype.rotateDirTo = function (angle) { this._tangent = Vec2/* default.fromDirection */.Z.fromDirection(angle * Math.PI / 180); return this; }; /*** * * @param {Number} dAngle * @returns {Turtle} */ Turtle.prototype.rotateDirBy = function (dAngle) { this._tangent = this._tangent.rotate(dAngle * Math.PI / 180); return this; }; /** * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.lineBy = function (dx, dy) { this._tangent = new Vec2/* default */.Z(x, y); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'l', action: 'lineBy', args: [dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} x * @param {Number} y * @returns {Turtle} */ Turtle.prototype.lineTo = function (x, y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'L', action: 'lineTo', args: [x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.lineBy = function (dx, dy) { this._tangent = new Vec2/* default */.Z(dx, dy); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'l', action: 'lineBy', args: [dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} x * @returns {Turtle} */ Turtle.prototype.hLineTo = function (x) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, this._pos.y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'H', action: 'hLineTo', args: [x], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} x * @returns {Turtle} */ Turtle.prototype.hLineBy = function (x) { this._tangent = new Vec2/* default */.Z(x, 0); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'h', action: 'hLineBy', args: [x], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} y * @returns {Turtle} */ Turtle.prototype.vLineTo = function (y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(this._pos.x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'V', action: 'vLineTo', args: [y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} y * @returns {Turtle} */ Turtle.prototype.vLineBy = function (y) { this._tangent = new Vec2/* default */.Z(0, y); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'v', action: 'vLineBy', args: [y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c1x * @param {Number} c1y * @param {Number} c2x * @param {Number} c2y * @param {Number} x * @param {Number} y * @returns {Turtle} */ Turtle.prototype.cubicBezierTo = function (c1x, c1y, c2x, c2y, x, y) { this._tangent = new Vec2/* default */.Z(c2x, c2y); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'C', action: 'cubicBezierTo', args: [c1x, c1y, c2x, c2y, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c1dx * @param {Number} c1dy * @param {Number} c2dx * @param {Number} c2dy * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.cubicBezierBy = function (c1dx, c1dy, c2dx, c2dy, dx, dy) { this._tangent = this._pos.add(new Vec2/* default */.Z(c2dx, c2dy)); this._pos = new Vec2/* default */.Z(dx, dy); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'c', action: 'cubicBezierBy', args: [c1dx, c1dy, c2dx, c2dy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c2x * @param {Number} c2y * @param {Number} x * @param {Number} y * @returns {Turtle} */ Turtle.prototype.smoothCubicBezierTo = function (c2x, c2y, x, y) { this._tangent = new Vec2/* default */.Z(c2x, c2y); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'S', action: 'smoothCubicBezierTo', args: [c2x, c2y, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c2dx * @param {Number} c2dy * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.smoothCubicBezierBy = function (c2dx, c2dy, dx, dy) { this._tangent = this._pos.add(new Vec2/* default */.Z(c2dx, c2dy)); this._pos = new Vec2/* default */.Z(dx, dy); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 's', action: 'smoothCubicBezierBy', args: [c2dx, c2dy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cx * @param {Number} cy * @param {Number} x * @param {Number} y * @returns {Turtle} */ Turtle.prototype.quadraticBezierTo = function (cx, cy, x, y) { this._tangent = new Vec2/* default */.Z(cx, cy); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'Q', action: 'quadraticBezierTo', args: [cx, cy, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cdx * @param {Number} cdy * @param {Number} cdx * @param {Number} cdy * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.quadraticBezierBy = function (cdx, cdy, dx, dy) { this._tangent = this._pos.add(new Vec2/* default */.Z(cdx, cdy)); this._pos = new Vec2/* default */.Z(dx, dy); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'q', action: 'quadraticBezierBy', args: [cdx, cdy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cx * @param {Number} cy * @param {Number} x * @param {Number} y * @returns {Turtle} */ Turtle.prototype.smoothQuadraticBezierTo = function (cx, cy, x, y) { this._tangent = new Vec2/* default */.Z(cx, cy); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'T', action: 'smoothQuadraticBezierTo', args: [cx, cy, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cdx * @param {Number} cdy * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.smoothQuadraticBezierBy = function (cdx, cdy, dx, dy) { this._tangent = this._pos.add(new Vec(cdx, cdy)); this._pos = new Vec2/* default */.Z(dx, dy); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 't', action: 'smoothQuadraticBezierBy', args: [cdx, cdy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /*** * * @param {Number} rx * @param {Number} ry * @param {Number} angle * @param {Number} large * @param {Number} sweep * @param {Number} x * @param {Number} y * @return {Turtle} */ Turtle.prototype.arcTo = function (rx, ry, angle, large, sweep, x, y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, y); var AB = this._pos.sub(this._tangent); //in ellipse var AB_inE = AB.rotate(-angle / 180 * Math.PI); //in circle var AB_inC = new Vec2/* default */.Z(AB_inE.x / rx, AB_inE.y / ry); var AH_inC; var HO_length_inC; var AH_length_inC; var HO_inC; var BO_inC; var tangent_inC; var tangent_inE; AH_inC = AB_inC.div(2); AH_length_inC = AH_inC.abs(); HO_length_inC = Math.sqrt(1 - AH_length_inC * AH_length_inC); if (!sweep != !large) { HO_inC = AB_inC.rotate90().normalized().mult(HO_length_inC); BO_inC = AH_inC.inv().add(HO_inC); tangent_inC = BO_inC.rotate90().inv(); } else { HO_inC = AB_inC.rotate90().inv().normalized().mult(HO_length_inC);//ok BO_inC = AH_inC.inv().add(HO_inC); tangent_inC = BO_inC.rotate90(); } if (large) tangent_inC = tangent_inC.inv(); tangent_inE = new Vec2/* default */.Z(tangent_inC.x * rx, tangent_inC.y * ry); this._tangent = tangent_inE.rotate(angle / 180 * Math.PI); this._commands.push({ cmd: 'A', action: 'lineTo', args: [rx, ry, angle, large, sweep, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /*** * * @param {Number} rx * @param {Number} ry * @param {Number} angle * @param {Number} large * @param {Number} sweep * @param {Number} dx * @param {Number} dy * @return {Turtle} */ Turtle.prototype.arcBy = function (rx, ry, angle, large, sweep, dx, dy) { //todo: wrong_tangent this._tangent = new Vec2/* default */.Z(dx, dy); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'a', action: 'arcBy', args: [rx, ry, angle, large, sweep, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @returns {Turtle} */ Turtle.prototype.closePath = function () { this._tangent = this._pos; this._pos = this._startPos; this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'z', action: 'closePath', args: [], dest: this._pos }); return this; }; /** * @param {Number} dx * @param {Number} dy * @returns {Turtle} */ Turtle.prototype.translate = function (dx, dy) { var command; var deltaVec = new Vec2/* default */.Z(dx, dy); for (var i = 0; i < this._commands.length; ++i) { command = this._commands[i]; command.dest = command.dest.add(deltaVec); switch (command.cmd) { case 'M': case 'L': command.args[0] = command.dest.x; command.args[1] = command.dest.y; break; case 'H': command.args[0] = command.dest.x; break; case 'V': command.args[0] = command.dest.y; break; case 'C': command.args[0] += dx; command.args[1] += dy; command.args[2] += dx; command.args[3] += dy; command.args[4] = command.dest.x; command.args[5] = command.dest.y; break; case 'Q': command.args[0] += dx; command.args[1] += dy; command.args[3] = command.dest.x; command.args[4] = command.dest.y; break; case 'A': command.args[5] = command.dest.x; command.args[6] = command.dest.y; break; } } return this; }; /** * @returns {String} */ Turtle.prototype.getPath = function () { return this._commands.map(function (command) { return command.cmd + ' ' + command.args.join(','); }).join(' '); }; /*** * * @return {Turtle} */ Turtle.prototype.reset = function () { this._commands = []; this._pos = new Vec2/* default */.Z(0, 0); this._startPos = this._pos; this._tangent = new Vec2/* default */.Z(0, 0); return this; }; Turtle.prototype.clone = function () { var res = new Turtle(); res._commands.push.apply(res._commands, this._commands); res._pos = this._pos.copy(); res._startPos = this._startPos.copy(); res._tangent = this._tangent.copy() return res; }; /* harmony default export */ const controller_Turtle = (Turtle); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/svg/Shape.js var _ = svg_Core._; var $ = svg_Core.$; /*** * @extends {AElementNS} * @constructor */ function Shape() { this._turtle = new controller_Turtle(); } Shape.tag = 'shape'; Shape.render = function () { return _('path'); }; /*** * * @return {Shape} */ Shape.prototype.begin = function () { this._turtle.reset(); return this; }; /*** * * @return {Shape} */ Shape.prototype.end = function () { this.attr('d', this._turtle.getPath()); return this; }; /*** * * @param {Number} angle - degree * @returns {Shape} */ Shape.prototype.rotateDirTo = function (angle) { this._turtle.rotateDirTo(angle); return this; }; /*** * * @param {Number} dAngle * @returns {Shape} */ Shape.prototype.rotateDirBy = function (dAngle) { this._turtle.rotateDirBy(dAngle); return this; }; /*** * * @param {Number} x * @param {Number} y * @return {Shape} */ Shape.prototype.moveTo = function (x, y) { this._turtle.moveTo(x, y); return this; }; /*** * * @param {Number} dx * @param {Number} dy * @return {Shape} */ Shape.prototype.moveBy = function (dx, dy) { this._turtle.moveBy(dx, dy); return this; }; /*** * * @return {Shape} */ Shape.prototype.closePath = function () { this._turtle.closePath(); return this; } /*** * * @param {Number} x * @param {Number} y * @return {Shape} */ Shape.prototype.lineTo = function (x, y) { this._turtle.lineTo(x, y); return this; }; /*** * * @param {Number} dx * @param {Number} dy * @return {Shape} */ Shape.prototype.lineBy = function (dx, dy) { this._turtle.lineBy(dx, dy); return this; }; /*** * * @param {Number} x * @return {Shape} */ Shape.prototype.hLineTo = function (x) { this._turtle.hLineTo(x); return this; }; /*** * * @param {Number} dx * @return {Shape} */ Shape.prototype.hLineBy = function (dx) { this._turtle.hLineBy(x); return this; }; /*** * * @param {Number} y * @return {Shape} */ Shape.prototype.vLineTo = function (y) { this._turtle.vLineTo(y); return this; }; /*** * * @param {Number} dy * @return {Shape} */ Shape.prototype.vLineBy = function (dy) { this._turtle.vLineBy(dy); return this; }; /** * @param {Number} c1x * @param {Number} c1y * @param {Number} c2x * @param {Number} c2y * @param {Number} x * @param {Number} y * @returns {Shape} */ Shape.prototype.cubicBezierTo = function (c1x, c1y, c2x, c2y, x, y) { this._turtle.cubicBezierTo(c1x, c1y, c2x, c2y, x, y); return this; }; /** * @param {Number} c1dx * @param {Number} c1dy * @param {Number} c2dx * @param {Number} c2dy * @param {Number} dx * @param {Number} dy * @returns {Shape} */ Shape.prototype.cubicBezierBy = function (c1dx, c1dy, c2dx, c2dy, dx, dy) { this._turtle.cubicBezierBy(c1dx, c1dy, c2dx, c2dy, dx, dy); return this; }; /** * @param {Number} c2x * @param {Number} c2y * @param {Number} x * @param {Number} y * @returns {Shape} */ Shape.prototype.smoothCubicBezierTo = function (c2x, c2y, x, y) { this._turtle.smoothCubicBezierTo(c2x, c2y, x, y); return this; }; /** * @param {Number} c2dx * @param {Number} c2dy * @param {Number} dx * @param {Number} dy * @returns {Shape} */ Shape.prototype.smoothCubicBezierBy = function (c2dx, c2dy, dx, dy) { this._turtle.smoothCubicBezierBy(c2dx, c2dy, dx, dy); return this; }; /** * @param {Number} cx * @param {Number} cy * @param {Number} x * @param {Number} y * @returns {Shape} */ Shape.prototype.quadraticBezierTo = function (cx, cy, x, y) { this._turtle.quadraticBezierTo(cx, cy, x, y); return this; }; /** * @param {Number} cdx * @param {Number} cdy * @param {Number} cdx * @param {Number} cdy * @param {Number} dx * @param {Number} dy * @returns {Shape} */ Shape.prototype.quadraticBezierBy = function (cdx, cdy, dx, dy) { this._turtle.quadraticBezierBy(cdx, cdy, dx, dy); return this; }; /** * @param {Number} cx * @param {Number} cy * @param {Number} x * @param {Number} y * @returns {Shape} */ Shape.prototype.smoothQuadraticBezierTo = function (cx, cy, x, y) { this._turtle.smoothQuadraticBezierTo(cx, cy, x, y); return this; }; /** * @param {Number} cdx * @param {Number} cdy * @param {Number} dx * @param {Number} dy * @returns {Shape} */ Shape.prototype.smoothQuadraticBezierBy = function (cdx, cdy, dx, dy) { this._turtle.smoothQuadraticBezierBy(cdx, cdy, dx, dy); return this; }; /*** * * @param {Number} x * @param {Number} y * @param {Number} rx * @param {Number} ry * @param {Number} lf * @param {Number} sf * @param {Number} xRotate * @return {Shape} */ Shape.prototype.arcTo = function (x, y, rx, ry, lf, sf, xRotate) { ry = ry || rx; lf = lf || 0; sf = sf || 0; xRotate = xRotate || 0; this._turtle.arcTo(rx, ry, xRotate, lf, sf, x, y); return this; }; /*** * * @param {Number} dx * @param {Number} yd * @param {Number} rx * @param {Number} ry * @param {Number} lf * @param {Number} sf * @param {Number} xRotate * @return {Shape} */ Shape.prototype.arcBy = function (dx, yd, rx, ry, lf, sf, xRotate) { ry = ry || rx; lf = lf || 0; sf = sf || 0; xRotate = xRotate || 0; this._turtle.arcBy(rx, ry, xRotate, lf, sf, dx, yd); return this; }; /*** * * @param {Number} x * @param {Number} y * @param {Number} x0 * @param {Number} y0 * @param {Number} x1 * @param {Number} y1 * @return {Shape} */ Shape.prototype.curveTo = function (x, y, x0, y0, x1, y1) { this._turtle.cubicBezierTo(x0, y0, x1, y1, x, y); return this; }; svg_Core.install(Shape); /* harmony default export */ const svg_Shape = (Shape); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/Dom.js + 1 modules var Dom = __webpack_require__(6628); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/ResizeSystem.js var ResizeSystem = __webpack_require__(6700); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/controller/CSvgBox.js /*** * * @param {SvgCanvas} $svg * @constructor */ function CSvgBox($svg) { this.$svg = $svg; this._width = 0; this._height = 0; this.width = 0; this.height = 0; } /*** * * @param {number} width * @param {number} height */ CSvgBox.prototype.setSize = function (width, height) { this.$svg.attr('width', width + ''); this.$svg.attr('height', height + ''); this.$svg.attr('viewBox', [-0.5, -0.5, width, height].join(' ')); this._width = width; this._height = height; }; Object.defineProperty(CSvgBox.prototype, 'width', { /*** * * @param {Number} width */ set: function (width) { this.setSize(width, this._height); }, /*** * * @return {number} */ get: function () { return this._width; } }); Object.defineProperty(CSvgBox.prototype, 'height', { /*** * * @param {Number} height */ set: function (height) { this.setSize(this._width, height); }, /*** * * @return {number} */ get: function () { return this._height; } }); Object.defineProperty(CSvgBox.prototype, 'size', { /*** * * @param {{width: number, height:number}} size */ set: function (size) { this.setSize(size.width, size.height); }, /*** * * @return {{width: number, height: number}} */ get: function () { return { width: this._width, height: this._height }; } }); /* harmony default export */ const controller_CSvgBox = (CSvgBox); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/svg/SvgCanvas.js var SvgCanvas_ = svg_Core._; var SvgCanvas_$ = svg_Core.$; /*** * @extends AElementNS * @constructor */ function SvgCanvas() { var thisSC = this; this.box = new controller_CSvgBox(this); this.$attachhook = SvgCanvas_$('sattachhook', this) .on('attached', this.eventHandler.svgAttached); this.$attachhook.requestUpdateSize = function (){ thisSC.updateSize(); } } SvgCanvas.tag = 'svgcanvas'; SvgCanvas.render = function () { return SvgCanvas_({ tag: 'svg', class:'ag-canvas', child: 'sattachhook' }); }; SvgCanvas.prototype.clearChild = function () { while (this.lastChild && this.lastChild !== this.$attachhook) { this.removeChild(this.firstChild); } return this; }; SvgCanvas.prototype._updateCanvasSize = function () { var bound = this.getBoundingClientRect(); var width = bound.width; var height = bound.height; this.box.setSize(width, height); }; SvgCanvas.prototype.updateSize = function (){ this._updateCanvasSize(); }; /*** * @type {SvgCanvas} */ SvgCanvas.eventHandler = {}; SvgCanvas.eventHandler.svgAttached = function (){ ResizeSystem/* default.add */.Z.add(this.$attachhook); this.updateSize(); } svg_Core.install(SvgCanvas); /* harmony default export */ const svg_SvgCanvas = (SvgCanvas); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/controller/CContainerBox.js /*** * * @param {GContainer} $g * @constructor */ function CContainerBox($g) { this.$g = $g; this._width = 0; this._height = 0; this._x = 0; this._y = 0; this.width = 0; this.height = 0; this.x = 0; this.y = 0; } /*** * * @param {number} width * @param {number} height * @returns {CContainerBox} */ CContainerBox.prototype.setSize = function (width, height) { this._width = width; this._height = height; return this; }; /*** * * @param {number} x * @param {number} y * @returns {CContainerBox} */ CContainerBox.prototype.setPosition = function (x, y) { if (x === 0 && y === 0) { } else { this.$g.attr('transform', 'translate(' + x + ',' + y + ')'); } this._x = x; this._y = y; }; Object.defineProperty(CContainerBox.prototype, 'width', { /*** * * @param {number} width */ set: function (width) { this.setSize(width, this._height); }, /*** * * @return {number} */ get: function () { return this._width; } }); Object.defineProperty(CContainerBox.prototype, 'height', { /*** * * @param {number} height */ set: function (height) { this.setSize(this._width, height); }, /*** * * @return {number} */ get: function () { return this._height; } }); Object.defineProperty(CContainerBox.prototype, 'size', { /*** * * @param {{width: number, height:number}} size */ set: function (size) { this.setSize(size.width, size.height); }, /*** * * @return {{width: number, height: number}} */ get: function () { return { width: this._width, height: this._height }; } }); Object.defineProperty(CContainerBox.prototype, 'x', { /*** * * @param {number} x */ set: function (x) { this.setPosition(x, this._y); }, /*** * * @return {number} */ get: function () { return this._x; } }); Object.defineProperty(CContainerBox.prototype, 'y', { /*** * * @param {number} y */ set: function (y) { this.setPosition(this._x, y); }, /*** * * @return {number} */ get: function () { return this._y; } }); Object.defineProperty(CContainerBox.prototype, 'position', { /*** * * @param {{x: number, y:number}} position */ set: function (position) { this.setPosition(position.x, position.y); }, /*** * * @return {{x: number, y:number}} */ get: function () { return { x: this._x, y: this._y }; } }); /* harmony default export */ const controller_CContainerBox = (CContainerBox); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/svg/GContainer.js var GContainer_ = svg_Core._; var GContainer_$ = svg_Core.$; /*** * @extends {AElementNS} * @constructor */ function GContainer() { this.box = new controller_CContainerBox(this); } GContainer.tag = 'gcontainer'; GContainer.render = function () { return GContainer_('g'); }; /* harmony default export */ const svg_GContainer = (GContainer); ;// CONCATENATED MODULE: ./node_modules/absol-svg/js/svg/install.js var Creators = [ svg_Shape, svg_SvgCanvas, svg_GContainer ]; /*** * * @param {Dom | Svg} core */ function install(core) { core.install(Creators); }; ;// CONCATENATED MODULE: ./src/VCore.js var VCore = new Svg/* default */.ZP(); install(VCore); var VCore_ = VCore._; var VCore_$ = VCore.$; /* harmony default export */ const src_VCore = (VCore); // EXTERNAL MODULE: ./src/style/minicomp.css var minicomp = __webpack_require__(1799); // EXTERNAL MODULE: ./src/style/basechart.css var basechart = __webpack_require__(8184); // EXTERNAL MODULE: ./src/style/linechart.css var linechart = __webpack_require__(2312); // EXTERNAL MODULE: ./src/style/tooltip.css var tooltip = __webpack_require__(8734); // EXTERNAL MODULE: ./src/style/rangechart.css var rangechart = __webpack_require__(4695); // EXTERNAL MODULE: ./src/style/assessmentchart.css var assessmentchart = __webpack_require__(286); // EXTERNAL MODULE: ./src/style/columnchart.css var columnchart = __webpack_require__(2687); // EXTERNAL MODULE: ./src/style/rangegroupchart.css var rangegroupchart = __webpack_require__(9033); // EXTERNAL MODULE: ./src/style/rankchart.css var rankchart = __webpack_require__(6053); // EXTERNAL MODULE: ./src/style/sunburstchart.css var sunburstchart = __webpack_require__(622); // EXTERNAL MODULE: ./src/style/squarechart.css var squarechart = __webpack_require__(301); // EXTERNAL MODULE: ./src/style/grouprankchart.css var grouprankchart = __webpack_require__(1595); // EXTERNAL MODULE: ./src/style/mappingchart.css var mappingchart = __webpack_require__(8856); // EXTERNAL MODULE: ./src/style/imagechart.css var imagechart = __webpack_require__(4516); // EXTERNAL MODULE: ./src/style/horizontalbarchart.css var horizontalbarchart = __webpack_require__(5233); // EXTERNAL MODULE: ./src/style/resizeablediv.css var resizeablediv = __webpack_require__(7139); ;// CONCATENATED MODULE: ./src/style/vchartStyle.js /* harmony default export */ const vchartStyle = ({}); ;// CONCATENATED MODULE: ./src/Axis.js var Axis_ = src_VCore._; var Axis_$ = src_VCore.$; /*** * @extends GContainer * @constructor */ function Axis() { this.$oxy = Axis_$('#oxy', this); this.$oxArrow = Axis_$('#ox-arrow', this); this.$oyArrow = Axis_$('#oy-arrow', this); this.$oyDivision = Axis_$('.cv-oy-division', this); this.oxLength = 1; this.oyLength = 1; this.oyPadding = 0; this.oyDivision = NaN; } Axis.tag = 'Axis'.toLowerCase(); Axis.render = function () { return Axis_({ tag: 'gcontainer', "class": "vchart-axis", child: [{ tag: 'path', id: "oy-arrow", attr: { d: "m-5 0h10l-5-6.8z" } }, { tag: 'path', id: "ox-arrow", attr: { d: 'm0 -5v10l6.8 -5z' } }, { tag: 'path', id: 'oxy', attr: { d: 'm0 -1v1 h1', fill: 'none' } }, { tag: 'path', "class": 'cv-oy-division', style: { display: 'none' } }] }); }; Axis.prototype.updateOyDivision = function () { if (this.oyDivision) { this.$oyDivision.removeStyle('display'); var y = this.oyDivision + this.oyPadding; if (this.oyPadding) y -= this.oyDivision; var d = ''; while (y <= this.oyLength) { d += 'M-2 ' + -y + 'H 2 '; y += this.oyDivision; } this.$oyDivision.attr('d', d); } else { this.$oyDivision.addStyle('display', 'none'); } }; Axis.prototype.updateSize = function () { this.$oxy.attr('d', 'm0 ' + -this.oyLength + 'v' + this.oyLength + ' h' + this.oxLength); this.$oxArrow.attr('transform', 'translate(' + this.oxLength + ', 0)'); this.$oyArrow.attr('transform', 'translate(0, ' + -this.oyLength + ')'); this.updateOyDivision(); }; Axis.prototype.resize = function (oxLength, oyLength) { this.oxLength = oxLength; this.oyLength = oyLength; this.updateSize(); }; Axis.prototype.moveTo = function (x, y) { this.attr('transform', 'translate(' + x + ',' + y + ')'); }; Axis.prototype.init = function (props) { if (props) { if (props.oxLength && props.oyLength) this.resize(props.oxLength, props.oyLength); if (props.x && props.y) this.moveTo(props.x, props.y); } }; src_VCore.install(Axis); /* harmony default export */ const src_Axis = ((/* unused pure expression or super */ null && (Axis))); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Mat3.js var Mat3 = __webpack_require__(9846); // EXTERNAL MODULE: ./src/style/scrollarrow.css var scrollarrow = __webpack_require__(6227); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/EventEmitter.js var EventEmitter = __webpack_require__(863); ;// CONCATENATED MODULE: ./src/ScrollArrow.js var ScrollArrow_ = src_VCore._; var ScrollArrow_$ = src_VCore.$; function ScrollArrow() { this.$left = ScrollArrow_$('.vc-scroll-arrow-left', this); this.$right = ScrollArrow_$('.vc-scroll-arrow-right', this); this.width = 100; this.on('pointerdown', this.eventHandler.pointerDown); this.$leftArrow = this.$left; this.$rightArrow = this.$right; this._pointerItv = -1; // .on('pointerdown', function (event) { // event.preventDefault(); // var iv = setInterval(function () { // res.emit('pressleft', event, res); // }, 30); // // function finish(event) { // clearInterval(iv); // this.off('pointerleave', finish); // this.off('pointerup', finish); // }; // this.on('pointerleave', finish); // this.on('pointerup', finish); // }); // // res.$hitBoxLeft = _({ // tag: 'rect', // attr: { // x: -5, // y: -5, // width: 30, // height: 37, // rx: 5, // ry: 5 // }, // style: { // fill: 'rgba(0, 0, 255, 0.1)' // } // }).addTo(res.$leftArrow); // // res.$rightArrow = _( // [ // '<g>', // '<g transform="translate(0,-270)">', // '<g transform="matrix(.26164 0 0 .26164 .23843 218.56)" style="fill:#00a5d6">', // '<path d="m0.99976 198 49.214 48.519-49.213 49.481v-14.201l35.215-35.079-35.164-34.611z" style="fill:#00a5d6"/>', // '<path d="m28.531 198.44v13.96l35.057 34.608-35.057 34.963v13.555l48.91-48.844z" style="fill:#00a5d6"/>', // '</g>', // '</g>', // '</g>' // ].join('') // ).addTo(res) // .on('pointerdown', function (event) { // event.preventDefault(); // var iv = setInterval(function () { // res.emit('pressright', event, res); // }, 30); // // function finish(event) { // clearInterval(iv); // this.off('pointerleave', finish); // this.off('pointerup', finish); // }; // this.on('pointerleave', finish); // this.on('pointerup', finish); // }); // // res.$hitBoxRight = _({ // tag: 'rect', // attr: { // x: -5, // y: -5, // width: 30, // height: 37, // rx: 5, // ry: 5 // }, // style: { // fill: 'rgba(0, 0, 255, 0.1)' // } // }).addTo(res.$rightArrow); // // return res; } Mat3/* default.prototype.apply2DTransform */.Z.prototype.apply2DTransform = function (v, isPoint) { var a = this.data; var x0 = v.x; var y0 = v.y; var x = x0 * a[0] + y0 * a[3] + (isPoint ? a[6] : 0); var y = x0 * a[1] + y0 * a[4] + (isPoint ? a[7] : 0); return new Vec2/* default */.Z(x, y); }; ScrollArrow.tag = 'ScrollArrow'.toLowerCase(); ScrollArrow.render = function () { return ScrollArrow_({ tag: 'gcontainer', extendEvent: ['pressleft', 'pressright'], "class": 'vc-scroll-arrow', child: [{ attr: {// transform: "matrix(.26164 0 0 .26164 .23843 218.56)" }, child: [{ tag: 'gcontainer', "class": 'vc-scroll-arrow-left', child: [{ tag: 'rect', "class": 'vc-scroll-arrow-hit-box', attr: { x: 0, y: -19, width: 30, height: 38, rx: 5, ry: 5 } }, { tag: 'path', "class": 'vc-scroll-arrow-icon', attr: { d: 'm 24.02314720639999998 -12.3647199999999984 -12.876350959999998 12.69451116 12.87608932 12.946208839999999' + ' v -3.71554964 l -9.2136526 -9.178069559999999 9.20030896 -9.05562204 z' + ' M 17.226420839999999 -12.4798416000000003 v 3.6524944 l -9.17231348 9.054837119999998 9.17231348 9.14771932' + ' v 3.5465302 l -12.796812399999999 -12.77954416 z' } }] }, { tag: 'gcontainer', "class": 'vc-scroll-arrow-right', child: [{ tag: 'rect', "class": 'vc-scroll-arrow-hit-box', attr: { x: -30, y: -19, width: 30, height: 38, rx: 5, ry: 5 } }, { tag: 'path', "class": 'vc-scroll-arrow-icon', attr: { d: 'm -22.5000072064 -12.3647199999999984 12.876350959999998 12.69451116 -12.87608932 12.946208839999999' + ' v -3.71554964 l 9.2136526 -9.178069559999999 -9.20030896 -9.05562204 z ' + 'M -15.70328084 -12.4798416000000003 v 3.6524944 l 9.17231348 9.054837119999998 ' + '-9.17231348 9.14771932 v 3.5465302 l 12.796812399999999 -12.77954416 z' } }] }] }] }); }; ScrollArrow.property = { width: { set: function set(value) { this.box.width = value; this.$right.box.x = value; }, get: function get() { return this.box.width; } } }; ScrollArrow.eventHandler = {}; ScrollArrow.eventHandler.pointerDown = function (event) { event.preventDefault(); var button = EventEmitter/* default.hitElement */.ZP.hitElement(this.$left, event) ? 0 : 1; var thisSB = this; this._buttonIdx = button; if (this._pointerItv < 0) { this._pointerItv = setInterval(function () { if (thisSB._buttonIdx === 0) { thisSB.emit('pressleft', event, thisSB); } else if (thisSB._buttonIdx === 1) { thisSB.emit('pressright', event, thisSB); } }, 30); } ScrollArrow_$(document.body).on('pointerup', this.eventHandler.pointerUp); if (thisSB._buttonIdx === 0) { thisSB.emit('pressleft', event, thisSB); } else if (thisSB._buttonIdx === 1) { thisSB.emit('pressright', event, thisSB); } }; ScrollArrow.eventHandler.pointerUp = function () { clearInterval(this._pointerItv); this._pointerItv = -1; ScrollArrow_$(document.body).off('pointerup', this.eventHandler.pointerUp); }; src_VCore.install(ScrollArrow); /* harmony default export */ const src_ScrollArrow = ((/* unused pure expression or super */ null && (ScrollArrow))); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/OOP.js var OOP = __webpack_require__(3349); // EXTERNAL MODULE: ./node_modules/absol/src/Color/Color.js var Color = __webpack_require__(257); // EXTERNAL MODULE: ./node_modules/absol-acomp/AComp.js + 1 modules var AComp = __webpack_require__(6657); // EXTERNAL MODULE: ./node_modules/absol-acomp/ACore.js var ACore = __webpack_require__(3855); ;// CONCATENATED MODULE: ./src/vchart.resizablediv.js var vchart_resizablediv_ = ACore/* default._ */.Z._; var vchart_resizablediv_$ = ACore/* default.$ */.Z.$; function ResizeableDiv() { this.$resizebox = vchart_resizablediv_$('resizebox', this).on('beginmove', this.eventHandler.beginMove); this.on('click', this.eventHandler.click); } ResizeableDiv.tag = 'ResizeableDiv'.toLowerCase(); ResizeableDiv.render = function () { return vchart_resizablediv_({ "class": ['vchart-resizable-div'], extendEvent: 'sizechange', child: { tag: 'resizebox', props: { canResize: true } } }); }; ACore/* default.install */.Z.install('resizablediv', ResizeableDiv); ResizeableDiv.eventHandler = {}; ResizeableDiv.eventHandler.click = function () { this.enableResize(); }; ResizeableDiv.eventHandler.clickBody = function (event) { if (EventEmitter/* default.hitElement */.ZP.hitElement(this.$modal, event) || EventEmitter/* default.hitElement */.ZP.hitElement(this, event)) return; this.disableResize(); }; ResizeableDiv.eventHandler.beginMove = function (event) { this.$modal = (this.$modal || vchart_resizablediv_({ style: { position: 'fixed', left: '1px', right: '1px', top: '1px', bottom: '1px', zIndex: '1000' } })).addTo(document.body); this.$resizebox.on('moving', this.eventHandler.moving); this.$resizebox.on('endmove', this.eventHandler.endMove); this._preBound = this.getBoundingClientRect(); }; ResizeableDiv.eventHandler.moving = function (event) { var w = this._preBound.width; var h = this._preBound.height; if (event.option.bottom) { h += event.clientDY; this.addStyle('height', this._preBound.height + event.clientDY + 'px'); } if (event.option.right) { w += event.clientDX; this.addStyle('width', this._preBound.width + event.clientDX + 'px'); } this.emit('sizechange', { type: 'type', target: this, width: w, height: h, originEvent: event.originEvent || event }); }; ResizeableDiv.eventHandler.endMove = function (event) { this.$resizebox.off('moving', this.eventHandler.moving); this.$resizebox.off('endmove', this.eventHandler.endMove); this.$modal.remove(); }; ResizeableDiv.prototype.enableResize = function () { if (this.containsClass('vchart-resizable-div-active')) return; this.addClass('vchart-resizable-div-active'); vchart_resizablediv_$(document.body).on('click', this.eventHandler.clickBody); }; ResizeableDiv.prototype.disableResize = function () { if (!this.containsClass('vchart-resizable-div-active')) return; this.removeClass('vchart-resizable-div-active'); vchart_resizablediv_$(document.body).off('click', this.eventHandler.clickBody); }; /* harmony default export */ const vchart_resizablediv = ((/* unused pure expression or super */ null && (ResizeableDiv))); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/TextMeasure.js + 1 modules var TextMeasure = __webpack_require__(2610); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/BContextCapture.js var BContextCapture = __webpack_require__(9782); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Rectangle.js var Math_Rectangle = __webpack_require__(2759); ;// CONCATENATED MODULE: ./src/helper.js var helper_ = src_VCore._; var beautyStep = [0.001, 0.002, 0.0025, 0.005, 0.01, 0.02, 0.025, 0.05, 0.1, 0.2, 0.25, 0.5, 1, 2, 5].concat(function () { var res = []; var h = 1; while (h < 10000000000) { res.push(10 * h); res.push(20 * h); res.push(25 * h); res.push(50 * h); h *= 10; } return res; }()); function circle(x, y, r, eClss) { return helper_({ tag: 'circle', "class": eClss, attr: { cx: x, cy: y, r: r } }); } ; /** * @param {String} text * @param {Number} x * @param {Number} y * @param {String=} eClss * @returns {SVGTextElement} */ function helper_text(text, x, y, eClss) { if (eClss instanceof Array) eClss = eClss.join(' '); return helper_('<text x="' + x + '" y="' + y + '" ' + (eClss ? 'class="' + eClss + '"' : '') + '>' + text + '</text>'); } function vline(x, y, length, eClss) { return helper_({ tag: 'path', "class": eClss, attr: { d: 'm' + x + ' ' + y + 'v' + length } }); } function moveVLine(e, x, y, length) { return e.attr('d', 'm' + x + ' ' + y + 'v' + length); } function hline(x, y, length, eClss) { return helper_({ tag: 'path', "class": eClss, attr: { d: 'm' + x + ' ' + y + 'h' + length } }); } function moveHLine(e, x, y, length) { return e.attr('d', 'm' + x + ' ' + y + 'h' + length); } /** * * @param {Number} x * @param {Number} y * @param {Number} width * @param {Number} height * @param {Number} eClss * @returns {SVGRect} */ function rect(x, y, width, height, eClss) { var option = { tag: 'rect', attr: { x: x, y: y, width: width, height: height }, "class": eClss }; return helper_(option); } function line(x0, y0, x1, y1) { return helper_({ tag: 'path', "class": eClss, attr: { d: 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1 } }); } function calBeautySegment(maxSegment, minValue, maxValue, integerOnly) { var i = 0; var res = { step: 1, segmentCount: maxValue - minValue, maxValue: maxValue, minValue: minValue }; while (i < beautyStep.length) { var step = beautyStep[i]; if (!integerOnly || step >= 1) { var bot = Math.floor(minValue / step); var top = Math.ceil(maxValue / step); if (top - bot <= maxSegment) { res.step = step; res.segmentCount = top - bot; res.maxValue = top * step; res.minValue = bot * step; break; } } ++i; } return res; } //x[i] < x[i+1] function autoCurve(points, strong, free) { if (!(strong > 0)) strong = 0.5; if (points.length == 0) { return ''; } var paddingLeft = points[0].slice(); var paddingRight = points[points.length - 1].slice(); if (typeof free == "number") { paddingLeft[0] -= (points[1][0] - points[0][0]) * free; paddingLeft[1] -= (points[1][1] - points[0][1]) * free; paddingRight[0] += (points[points.length - 1][0] - points[points.length - 2][0]) * free; paddingRight[1] += (points[points.length - 1][1] - points[points.length - 2][1]) * free; } else if (free instanceof Array) { paddingLeft[0] -= free[0][0]; paddingLeft[1] -= free[0][1]; paddingRight[0] += free[1][0]; paddingRight[1] += free[1][1]; } points = [paddingLeft].concat(points).concat([paddingRight]); var Cs = []; Cs.push('M' + points[1].join(' ')); for (var i = 1; i < points.length - 2; ++i) { var A = Vec2/* default.make */.Z.make(points[i - 1]); var B = Vec2/* default.make */.Z.make(points[i]); var C = Vec2/* default.make */.Z.make(points[i + 1]); var D = Vec2/* default.make */.Z.make(points[i + 2]); var AB = B.sub(A); var BC = C.sub(B); var CB = BC.inv(); var DC = C.sub(D); var lAB = AB.abs(); var lBC = BC.abs(); var lDC = DC.abs(); var lCB = lBC; var h1 = Math.sqrt(lAB * lBC); var h2 = Math.sqrt(lBC * lDC); if (h1 == 0) h1 = 1; if (h2 == 0) h2 = 1; var N1 = AB.normalized().add(BC.normalized()).normalized(); var N2 = CB.normalized().add(DC.normalized()).normalized(); var lN1 = lBC == 0 ? 0 : lBC * (N1.dot(BC) / (N1.abs() * BC.abs())) * h1 / (h1 + h2) * strong; var lN2 = lCB == 0 ? 0 : lCB * (N2.dot(CB) / (N2.abs() * CB.abs())) * h2 / (h1 + h2) * strong; N1 = N1.mult(lN1); N2 = N2.mult(lN2); var P1 = B.add(N1); var P2 = C.add(N2); var x1 = P1.x; var y1 = P1.y; var x2 = P2.x; var y2 = P2.y; var x = C.x; var y = C.y; Cs.push('C ' + x1 + ' ' + y1 + ', ' + x2 + ' ' + y2 + ', ' + x + ' ' + y); } return Cs.join(''); } ; function generateBackgroundColors(n) { var l = Math.ceil(Math.sqrt(n)); var arrs = Array(n).fill(null).reduce(function (ac, cr, i) { var tail = ac[ac.length - 1]; if (tail.length >= l) { tail = []; ac.push(tail); } var color = Color/* default.fromHSL */.Z.fromHSL(i / n, 0.5, 0.5); tail.push(color); return ac; }, [[]]); var res = []; var i = 0; while (res.length < n) { if (arrs[i].length > 0) { res.push(arrs[i].shift()); } i = (i + 1) % arrs.length; } return res; } function isNumber(x) { return -Infinity < x && x < Infinity && typeof x == 'number'; } function toLocalString(fixedRight) { var separatorReal = 1.5.toLocaleString().replace(/[0-9]/g, ''); var separatorInt = 10000 .toLocaleString().replace(/[0-9]/g, ''); return function (value) { var x = Math.abs(value); if (fixedRight !== undefined) x = x.toFixed(fixedRight); var s = x.toString().split('.'); var _int = s[0] || ''; var realText = s[1] || ''; _int = _int.split('').reduce(function (ac, cr, i, arr) { if (i == 0 || (arr.length - i) % 3 == 0) { ac.push(cr); } else { ac[ac.length - 1] += cr; } return ac; }, []).join(separatorInt); return (value < 0 ? '-' : '') + _int + (realText.length > 0 ? separatorReal + realText : ''); }; } ; function map(x, l, h, L, H) { return L + (x - l) * (H - L) / (h - l); } function getSubNumberArray(arr) { return arr.reduce(function (ac, value, j) { if (isNumber(value)) { var cr; if (ac.last + 1 < j) { cr = { start: j, values: [] }; ac.currentSubArea = cr; ac.result.push(cr); } else { cr = ac.currentSubArea; } ac.last = j; cr.values.push(value); } return ac; }, { last: -100, result: [], currentSubArea: null }).result; } function wrapChartInWHResizer(chartElt, outerParam) { outerParam = outerParam || {}; var newVersion = chartElt.containsClass('ag-canvas'); if (newVersion) { outerParam.style = outerParam.style || {}; outerParam.style.width = outerParam.width || chartElt.style.width; outerParam.style.height = outerParam.width || chartElt.style.height; if (chartElt._isAutoWidth) { outerParam.style.width = 'auto'; chartElt.addStyle({ height: '100%' }); setTimeout(function () { res.addStyle('width', chartElt.getBoundingClientRect().width + 'px'); chartElt.addStyle({ width: '100%', height: '100%' }); }, 1000); } else { chartElt.addStyle({ width: '100%', height: '100%' }); } } var res = AComp/* default._ */.Z._({ tag: 'resizablediv', style: { display: 'inline-block', verticalAlign: 'top' }, child: chartElt, on: { sizechange: function sizechange(event) { if (chartElt.update) { if (event.width) { chartElt.canvasWidth = event.width; } if (event.height) { chartElt.canvasHeight = event.height; } chartElt.update(); } else if (newVersion) { chartElt.updateSize(); } } } }, false, true).addStyle(outerParam.style || {}); return res; } function paddingLeft(text, _char, length) { while (text.length < length) { text = _char + '' + text; } return text; } /** * * @param {String} text */ function pathTokenize(text) { return text.match(/[a-zA-Z]+|(\-?[0-9\.]+(e\-?[0-9]+)?)/g); } /** * @argument {Array<SVGElement>} * @returns {Number} */ function getMinWidthBox() { return Array.prototype.reduce.call(arguments, function (ac, elt) { return Math.min(ac, elt.getBBox().width); }, 100000000); } /** * @argument {Array<SVGElement>} * @returns {Number} */ function getMinHeightBox() { return Array.prototype.reduce.call(arguments, function (ac, elt) { return Math.min(ac, elt.getBBox().height); }, 100000000); } /** * @argument {Array<SVGElement>} * @returns {Number} */ function getMaxWidthBox() { return Array.prototype.reduce.call(arguments, function (ac, elt) { return Math.max(ac, elt.getBBox().width); }, -100000000); } /** * @argument {Array<SVGElement>} * @returns {Number} */ function getMaxHeightBox() { return Array.prototype.reduce.call(arguments, function (ac, elt) { return Math.max(ac, elt.getBBox().height); }, -100000000); } /** * * @param {import ('absol/src/Color/Color').default} color * @returns {import ('absol/src/Color/Color').default} */ function lighterColor(color, delta) { delta = delta || 0; var hsla = color.toHSLA(); hsla[2] = Math.max(0, Math.min(1, hsla[2] + delta)); return Color/* default.fromHSLA.apply */.Z.fromHSLA.apply(Color/* default */.Z, hsla); } function fresherColor(color, delta) { delta = delta || 0.2; var hsla = color.toHSLA(); hsla[1] = Math.max(0, Math.min(1, hsla[1] + delta)); return Color/* default.fromHSLA.apply */.Z.fromHSLA.apply(Color/* default */.Z, hsla); } /*** * Default font size: Arial * @param {string} text * @param {number} fontSize * @param {number} width */ function wrapToLines(text, fontSize, width) { var words = text.split(' '); var line = [words.shift()]; var lines = [line]; var newText; for (var i = 0; i < words.length; ++i) { newText = line.concat([words[i]]).join(' '); if (TextMeasure/* default.measureWidth */.Z.measureWidth(newText, 'Arial', 14) <= width) { line.push(words[i]); } else { line = [words[i]]; lines.push(line); } } for (var i = 0; i < lines.length; ++i) { lines[i] = lines[i].join(' '); } return lines; } function addDevContextMenu(svg) { BContextCapture/* default.auto */.Z.auto(); svg.defineEvent('contextmenu'); svg.on({ contextmenu: function contextmenu(event) { var img = this; event.showContextMenu({ items: [{ icon: 'span.mdi.mdi-download-outline', text: 'Download as SVG', cmd: 'download' }] }, function (ev) { var menuItem = ev.menuItem; if (menuItem.cmd === 'download') { var url = absol.Svg.svgToSvgUrl(img); var a = absol._({ tag: 'a', style: { display: 'none' }, attr: { href: url, download: 'export.svg' } }).addTo(document.body); a.click(); a.remove(); } }); } }); } function measureArial14TextWidth(text) { return TextMeasure/* default.measureWidth */.Z.measureWidth(text, 'Arial', 14); } function getGlobalBBox(svgElement) { var bbox = svgElement.getBBox(); var matrix = svgElement.getCTM(); var points = [svgElement.ownerSVGElement.createSVGPoint(), svgElement.ownerSVGElement.createSVGPoint(), svgElement.ownerSVGElement.createSVGPoint(), svgElement.ownerSVGElement.createSVGPoint()]; points[0].x = bbox.x; points[0].y = bbox.y; points[1].x = bbox.x + bbox.width; points[1].y = bbox.y; points[2].x = bbox.x; points[2].y = bbox.y + bbox.height; points[3].x = bbox.x + bbox.width; points[3].y = bbox.y + bbox.height; points = points.map(function (point) { return point.matrixTransform(matrix); }); var minX = Math.min(points[0].x, points[1].x, points[2].x, points[3].x); var minY = Math.min(points[0].y, points[1].y, points[2].y, points[3].y); var maxX = Math.max(points[0].x, points[1].x, points[2].x, points[3].x); var maxY = Math.max(points[0].y, points[1].y, points[2].y, points[3].y); return new Math_Rectangle/* default */.Z(minX, minY, maxX - minX, maxY - minY); } ;// CONCATENATED MODULE: ./src/template.js function translate(x, y) { return 'translate(' + x + ', ' + y + ')'; } ; function rotate() { return 'rotate(' + Array.prototype.join.call(arguments, ',') + ')'; } ; ;// CONCATENATED MODULE: ./src/BaseChart.js var BaseChart_ = src_VCore._; var BaseChart_$ = src_VCore.$; function BaseChart() { var _ = vchart._; var $ = vchart.$; var res = _({ tag: 'svg', "class": 'base-chart', child: [{ tag: 'g', attr: { id: 'contentBox' }, child: 'g#content' }, { tag: 'path', "class": 'base-chart-white-mask', attr: { fill: 'white', stroke: 'white', 'fill-rule': 'evenodd', d: 'M0,0 0,2000 2000,2000 2000,0zM100,0 0,200 200,200 200,0z' } }, 'axis', 'hscrollbar'] }); res.sync = res.afterAttached(); res.$axis = $('axis', res); res.$whiteBoxMask = $('.base-chart-white-mask', res); res.$content = $('g#content', res); res.eventHandler = OOP/* default.bindFunctions */.ZP.bindFunctions(res, BaseChart.eventHandler); // res.on('wheel', res.eventHandler.wheel); res.$hscrollbar = $('hscrollbar', res).on('scroll', res.eventHandler.scrollbarscroll); res.integerOnly = false; return res; } ; BaseChart.prototype.integerOnly = false; BaseChart.eventHandler = {}; BaseChart.eventHandler.wheel = function (event) { var d = this.scrollBy(event.deltaY); if (d != 0) { event.preventDefault(); } }; BaseChart.eventHandler.scrollArrowsPressLeft = function (event) { this.scrollBy(-60); }; BaseChart.eventHandler.scrollArrowsPressRight = function (event) { this.scrollBy(60); }; BaseChart.eventHandler.scrollbarscroll = function (event) { this.scrollLeft = this.$hscrollbar.scrollLeft; event.preventDefault(); }; BaseChart.prototype.scrollBy = function (dX) { var scrollLeft = this.scrollLeft + dX / 5; var scrollLeft = Math.max(0, Math.min(this.oxContentLength - this.oxLength, scrollLeft)); var deltaX = scrollLeft - this.scrollLeft; if (deltaX != 0) { this.scrollLeft = scrollLeft; this.$hscrollbar.scrollLeft = scrollLeft; } return deltaX; }; BaseChart.prototype._createOyValues = function (minValue, step, segmentCount, extendOY) { var child = Array(segmentCount + 1 + (extendOY ? 1 : 0)).fill(0).map(function (u, i) { var value; if (extendOY) { if (i == 0) { value = 0; } else { value = minValue + (i - 1) * step; } } else { value = minValue + i * step; } return { tag: 'text', attr: { x: '-14', y: '0', 'text-anchor': 'end' }, props: { innerHTML: this.numberToString(value) } }; }.bind(this)); return vchart._({ tag: 'g', child: child }); }; BaseChart.prototype._createOYSegmentLines = function (n) { var _ = vchart._; var res = _({ tag: 'g', child: Array(n).fill('path.vchart-segment-line') }); return res; }; BaseChart.prototype.numberToString = function (value) { return value.toString(); }; BaseChart.prototype.mapOYValue = function (val) { return -this.paddingnAxisBottom + (this.extendOY ? -this.oySegmentLength : 0) - map(val, this.oyMinValue, this.oyMaxValue, 0, this.oyLength - (this.extendOY ? this.oySegmentLength : 0)); }; BaseChart.prototype.preInit = function () {}; BaseChart.prototype.updateSize = function () { this.attr({ width: this.canvasWidth + '', height: this.canvasHeight + '', viewBox: [0, 0, this.canvasWidth, this.canvasHeight].join(' ') }); }; BaseChart.prototype.updateOyValues = function () { this.oyLength = this.oxyBottom - 70 - this.paddingnAxisBottom; this.oySegmentLength = this.oyLength / (this.oySegmentCount + (this.extendOY ? 1 : 0)); Array.prototype.forEach.call(this.$oyValues.childNodes, function (e, i) { e.attr({ y: -i * this.oySegmentLength + 5 - this.paddingnAxisBottom, x: -10 }); }.bind(this)); var oyValuesBox = this.$oyValues.getBBox(); this.oxyLeft = Math.max(this.oxyLeft, oyValuesBox.width + 14, this.$oyName.getBBox().width); this.oxLength = this.oxLength || this.canvasWidth - this.oxyLeft - 50; this.$oyValues.attr('transform', 'translate(' + this.oxyLeft + ',' + this.oxyBottom + ')'); }; BaseChart.prototype.updateOYSegmentLines = function () { this.$oySegmentLines.attr('transform', 'translate(' + this.oxyLeft + ',' + this.oxyBottom + ')'); Array.prototype.forEach.call(this.$oySegmentLines.childNodes, function (e, i) { moveHLine(e, -2, -i * this.oySegmentLength - this.paddingnAxisBottom, 4); }.bind(this)); }; BaseChart.prototype.updateBackComp = function () { this.$title.attr('x', this.canvasWidth / 2); this.updateOyValues(); this.updateOYSegmentLines(); }; BaseChart.prototype.updateAxis = function () { this.$axis.attr('transform', translate(this.oxyLeft, this.oxyBottom)); this.$axis.resize(this.canvasWidth - this.oxyLeft - 10, this.oxyBottom - 50); this.$oyName.attr({ x: this.oxyLeft, y: 30, 'text-anchor': 'end' }); this.$whiteBoxMask.attr('d', 'M0,0 0,cvh cvw,cvh cvw,0zMleft,top left,bottom right,bottom right,topz'.replace(/cvh/g, this.canvasHeight).replace(/cvw/g, this.canvasWidth).replace(/left/g, this.oxyLeft).replace(/top/g, 1).replace(/bottom/g, this.canvasHeight).replace(/right/g, this.canvasWidth - 10)); this.$content.attr('transform', 'translate(' + this.oxyLeft + ',' + this.oxyBottom + ')'); this.$oxName.attr({ x: this.canvasWidth - this.$oxName.getBBox().width - 3, y: this.oxyBottom - 9 }); }; BaseChart.prototype.updateFrontComp = function () {}; BaseChart.prototype.updateComp = function () {}; BaseChart.prototype.updateScrollArrows = function () { this.$scrollArrows.box.setPosition(this.oxyLeft + 7, this.oxyBottom - this.oyLength / 2); this.$scrollArrows.width = this.oxLength - 15; this.scrollLeft = this.scrollLeft + 0; //update this.$hscrollbar.resize(this.oxLength, 10); this.$hscrollbar.moveTo(this.oxyLeft, this.oxyBottom - 10); this.$hscrollbar.outterWidth = this.oxLength; this.$hscrollbar.innerWidth = this.oxContentLength; }; BaseChart.prototype.update = function () { if (typeof this.canvasWidth != 'number') { this.canvasWidth = 300; this.autoWidth = true; } this.oxLength = 0; //init this.updateSize(); this.updateBackComp(); this.updateAxis(); this.updateComp(); this.updateScrollArrows(); this.updateFrontComp(); requestAnimationFrame(function () { if (this.autoWidth) { var requireWidth = this.canvasWidth + this.overflowOX; var proviceWidth = this.parentElement.getBoundingClientRect().width; this.canvasWidth = Math.max(Math.min(requireWidth, proviceWidth), 300); this.autoWidth = false; this.update(); } }.bind(this)); }; BaseChart.prototype.initScroll = function () { this.$scrollArrows = vchart._('scrollarrow').addTo(this).on('pressleft', this.eventHandler.scrollArrowsPressLeft).on('pressright', this.eventHandler.scrollArrowsPressRight); }; BaseChart.prototype.preInit = function () { this.canvasWidth = 900; this.canvasHeight = 600; this.paddingnAxisBottom = 0; this.maxSegment = 9; this.oyMaxValue = 10; this.oyMinValue = 0; this.valueName = ''; this.keyName = ''; this.colorTable = ['#821616', ' #824116', '#826C16', '#6C8216', '#418216', '#168216', '#168241', '#16826C', '#166C82', '#164182', '#161682', '#411682', '#6C1682', '#82166C', '#821641']; }; BaseChart.prototype.processMinMax = function () { this.minValue = 0; this.maxValue = 10; }; BaseChart.prototype.beautifyMinMax = function () { if (!(this.maxValue >= this.minValue)) { this.maxValue = 10; this.minValue = 0; } if (this.maxValue == this.minValue) this.maxValue += this.maxSegment; var btSgmt = calBeautySegment(this.maxSegment, this.minValue, this.maxValue, this.integerOnly); this.oySegmentCount = btSgmt.segmentCount; this.oyMinValue = btSgmt.minValue; this.oyMaxValue = btSgmt.maxValue; this.extendOY = !!(this.zeroOY && this.oyMinValue > 0); this.oyStep = btSgmt.step; this.oxyLeft = 20; this.oxyBottom = this.canvasHeight - 40; }; BaseChart.prototype.initBackComp = function () { this.$oyValues = this._createOyValues(this.oyMinValue, this.oyStep, this.oySegmentCount, this.extendOY).addTo(this); this.$oySegmentLines = this._createOYSegmentLines(this.oySegmentCount + 1 + (this.extendOY ? 1 : 0)).addTo(this); this.$title = helper_text(this.title || '', 0, 19, 'base-chart-title').attr('text-anchor', 'middle').addTo(this); this.$oyName = helper_text(this.valueName || '', 0, 0, 'base-chart-oxy-text').addTo(this); this.$oxName = helper_text(this.keyName || '', 0, 0, 'base-chart-oxy-text').addTo(this); }; BaseChart.prototype.initComp = function () {}; BaseChart.prototype.initFrontComp = function () {}; BaseChart.prototype.initScroll = function () { this.$scrollArrows = vchart._('scrollarrow').addTo(this).on('pressleft', this.eventHandler.scrollArrowsPressLeft).on('pressright', this.eventHandler.scrollArrowsPressRight); }; BaseChart.prototype.init = function (props) { for (var key in props) { if (props[key] === undefined) delete props[key]; } this.preInit(); this["super"](props); this.processMinMax(); this.beautifyMinMax(); this.initBackComp(); this.initComp(); this.initFrontComp(); this.initScroll(); this.sync = this.sync.then(this.update.bind(this)); }; BaseChart.property = {}; BaseChart.property.scrollLeft = { set: function set(value) { this._scrollLeft = value || 0; this.$content.attr('transform', 'translate(' + (this.oxyLeft - this.scrollLeft) + ',' + this.oxyBottom + ')'); if (this.scrollLeft > 0.001) { this.$scrollArrows.$leftArrow.removeStyle('display'); } else { this.$scrollArrows.$leftArrow.addStyle('display', 'none'); } if (this.oxContentLength - this.oxLength > this.scrollLeft + 0.001) { this.$scrollArrows.$rightArrow.removeStyle('display'); } else { this.$scrollArrows.$rightArrow.addStyle('display', 'none'); } }, get: function get() { return this._scrollLeft || 0; } }; BaseChart.property.overflowOX = { get: function get() { return Math.max(0, this.oxContentLength - this.oxLength); } }; BaseChart.property.showInlineValue = { set: function set(value) { if (value) { this.addClass('vchart-show-inline-value'); } else { this.removeClass('vchart-show-inline-value'); } }, get: function get() { return this.containsClass('vchart-show-inline-value'); } }; src_VCore.creator.basechart = BaseChart; /* harmony default export */ const src_BaseChart = (BaseChart); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/utils.js var utils = __webpack_require__(1477); ;// CONCATENATED MODULE: ./src/ToolTip.js function TooltipSession(content, x, y) { this.content = content; this.x = (0,utils.isRealNumber)(x) ? x : 0; this.y = (0,utils.isRealNumber)(y) ? y : 0; this.open(); } /** * * @type {{$ctn: AElement, $anchor: AElement, holder: TooltipSession}} */ TooltipSession.prototype.share = { $anchor: null, $ctn: null, holder: null }; TooltipSession.prototype._prepare = function () { if (this.share.$anchor) return; this.share.$ctn = (0,ACore._)({ "class": "vchart-tooltip-container" }); this.share.$anchor = (0,ACore._)({ "class": 'vchart-tooltip-anchor', child: this.share.$ctn }); }; TooltipSession.prototype.open = function () { var _this = this; this._prepare(); if (this.share.holder === this) return; if (this.share.holder) { this.share.holder.close(); } this.share.holder = this; this.share.$anchor.addStyle({ visibility: 'hidden', left: this.x + 'px', top: this.y + 'px' }).addTo(document.body); this.share.$ctn.clearChild(); if (typeof this.content === "string") { this.content.split(/\r?\n/).forEach(function (line, i) { if (i) (0,ACore._)('br').addTo(_this.share.$ctn); (0,ACore._)({ tag: 'span', child: { text: line } }).addTo(_this.share.$ctn); }); } else { console.error("Not support tooltip.content ", this.content); } var bound = this.share.$ctn.getBoundingClientRect(); var screenBound = (0,Dom/* getScreenSize */.tE)(); if (this.y < bound.height) { this.share.$ctn.addStyle('top', '0').addStyle('bottom', 'unset'); } else { this.share.$ctn.removeStyle('top').removeStyle('bottom'); } if (this.x + bound.width > screenBound.width) { this.share.$ctn.addStyle('right', '0').addStyle('left', 'unset'); } else { this.share.$ctn.removeStyle('right').removeStyle('left'); } this.share.$anchor.removeStyle('visibility'); }; TooltipSession.prototype.close = function () { if (this.share.holder !== this) return; this.share.holder = null; this.share.$ctn.clearChild(); this.share.$anchor.remove(); }; /** * adapt old version * @param cb * @returns {TooltipSession} */ TooltipSession.prototype.then = function (cb) { if (typeof cb === "string") { cb(this); } return this; }; function showTooltip(text, clientX, clientY) { return new TooltipSession(text, clientX, clientY); } function closeTooltip(token) { if (token && token.close) token.close(); } ;// CONCATENATED MODULE: ./src/HLineArrow.js var HLineArrow_ = src_VCore._; var HLineArrow_$ = src_VCore.$; /*** * @extends AElementNS * @constructor */ function HLineArrow() { this._length = 0; this.$line = HLineArrow_$('path.vchart-line-arrow-line', this); this.$arrow = HLineArrow_$('.vchart-line-arrow-rect', this); this.length = 0; } HLineArrow.tag = 'HLineArrow'.toLowerCase(); HLineArrow.render = function () { return HLineArrow_({ "class": 'vchart-line-arrow', child: ['path.vchart-line-arrow-line', { tag: 'path', "class": 'vchart-line-arrow-rect', attr: { d: 'm-6.8 -5v10l6.8 -5z' } }] }); }; HLineArrow.prototype.resize = function (length) { if (typeof length !== 'number') length = parseFloat(length + ''); length = length || 0; if (length < 0) length = 0; this._length = length; this.$arrow.attr('transform', translate(length, 0)); moveHLine(this.$line, 0, 0, length); this._length = length; }; HLineArrow.property = {}; HLineArrow.property.length = { set: function set(value) { this.resize(this._length); }, get: function get() { return this._length; } }; src_VCore.creator.hlinearrow = HLineArrow; /* harmony default export */ const src_HLineArrow = ((/* unused pure expression or super */ null && (HLineArrow))); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Draggable.js var Draggable = __webpack_require__(5611); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Hanger.js var Hanger = __webpack_require__(655); ;// CONCATENATED MODULE: ./src/HScrollBar.js var HScrollBar_ = src_VCore._; var HScrollBar_$ = src_VCore.$; /** * @augments Hanger * @augments GContainer * @constructor */ function HScrollBar() { var res = HScrollBar_({ tag: Hanger/* default */.Z, elt: this }); this._scrollLeft = 0; this.on('predrag', res.eventHandler.predrag).on('drag', res.eventHandler.drag); this.$bar = HScrollBar_$('.vchart-vscrollbar-bar', this); this.$button = HScrollBar_$('.vchart-vscrollbar-button', this); } HScrollBar.tag = 'HScrollBar'.toLowerCase(); HScrollBar.render = function () { return HScrollBar_({ tag: 'gcontainer', extendEvent: ['scroll'], "class": 'vchart-vscrollbar', child: [{ tag: 'rect', "class": 'vchart-vscrollbar-bar', attr: { x: '0', y: '0' } }, { tag: 'rect', "class": 'vchart-vscrollbar-button' }] }); }; HScrollBar.eventHandler = {}; HScrollBar.eventHandler.predrag = function (event) { var bBox = this.$bar.getBBox(); var bound = this.$bar.getBoundingClientRect(); if (event.target !== this.$button) { var centerOfset = Math.max(0, Math.min(1, (event.clientX - bound.left) / bound.width)); var newScrollLeft = centerOfset * this.innerWidth - this.outterWidth / 2; newScrollLeft = Math.max(0, Math.min(this.innerWidth - this.outterWidth, newScrollLeft)); this._scrollLeft = newScrollLeft; this.updateButtonPosition(); } this.__predragScrollLeft = this._scrollLeft; this.emit('scroll', event, this); }; HScrollBar.eventHandler.drag = function (event) { event.preventDefault(); var bBox = this.$bar.getBBox(); var bound = this.$bar.getBoundingClientRect(); var scaleX = bBox.width / bound.width * this.innerWidth / this.outterWidth; event.moveDX = event.currentPoint.sub(event.startingPoint).x; var newScrollLeft = this.__predragScrollLeft + event.moveDX * scaleX; newScrollLeft = Math.max(0, Math.min(this.innerWidth - this.outterWidth, newScrollLeft)); this._scrollLeft = newScrollLeft; this.updateButtonPosition(); this.emit('scroll', event, this); }; HScrollBar.prototype.updateButtonPosition = function () { var maxButtonX = (this.innerWidth - this.outterWidth) / this.innerWidth * this.width; var buttonX = this.scrollLeft / this.innerWidth * this.width; if (maxButtonX < 0) maxButtonX = 0; if (!(buttonX >= 0)) buttonX = 0; if (!(buttonX <= maxButtonX)) buttonX = maxButtonX; this.$button.attr('x', buttonX + ''); }; HScrollBar.prototype.updateView = function () { if (this.outterWidth >= this.innerWidth) { this.addClass('vchart-hidden'); } else { this.removeClass('vchart-hidden'); this.$bar.attr({ rx: this.height / 2.5 + '', ry: this.height / 2.5 + '' }); var buttonWidth = 1 / (this.innerWidth / this.outterWidth) * this.width; if (!(buttonWidth >= 0 && buttonWidth < Infinity)) buttonWidth = 0; this.$button.attr('width', buttonWidth + ''); this.$button.attr({ height: this.height * 0.8 + '', y: this.height / 10 + '', rx: this.height / 2.5 + '', ry: this.height / 2.5 + '' }); this.updateButtonPosition(); } }; HScrollBar.property = { width: { set: function set(value) { this.$bar.attr('width', value + ''); this.updateView(); }, get: function get() { var r = (this.$bar.attr('width') || '0').replace(/px|em|rem/g, ''); var c = parseFloat(r); if (c > 0) return c; return 0; } }, height: { set: function set(value) { this.$bar.attr('height', value + ''); this.updateView(); }, get: function get() { var r = (this.$bar.attr('height') || '0').replace(/px|em|rem/g, ''); var c = parseFloat(r); if (c > 0) return c; return 0; } }, innerWidth: { set: function set(value) { if (value >= 0) { this._innerWidth = value; this.updateView(); } }, get: function get() { return this._innerWidth || 0; } }, outterWidth: { set: function set(value) { if (value >= 0) { this._outterWidth = value; this.updateView(); } }, get: function get() { return this._outterWidth || 0; } }, scrollLeft: { set: function set(value) { value = Math.max(0, value); value = Math.min(value, this.innerWidth - this.outterWidth); this._scrollLeft = value; this.updateView(); }, get: function get() { return this._scrollLeft || 0; } } }; HScrollBar.prototype.resize = function (width, height) { this.height = height; this.width = width; }; HScrollBar.prototype.moveTo = function (x, y) { this.attr('transform', translate(x, y)); }; src_VCore.creator.hscrollbar = HScrollBar; /* harmony default export */ const src_HScrollBar = ((/* unused pure expression or super */ null && (HScrollBar))); // EXTERNAL MODULE: ./src/style/base.css var base = __webpack_require__(9957); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DomSignal.js var DomSignal = __webpack_require__(5150); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/ResizeBox.js var ResizeBox = __webpack_require__(4860); // EXTERNAL MODULE: ./src/style/chartresizebox.css var chartresizebox = __webpack_require__(4601); ;// CONCATENATED MODULE: ./src/ChartResizeBox.js var ChartResizeBox_ = ACore/* default._ */.Z._; var ChartResizeBox_$ = ACore/* default.$ */.Z.$; /*** * @augments AElement * @extends ResizeBox * @constructor */ function ChartResizeBox() { /*** * * @type {null|AElement} */ this.$target = null; this._listenInterval = -1; this.$attachhook = ChartResizeBox_$('attachhook', this); this.updateSize = this.updateSize.bind(this); this.$attachhook.requestUpdateSize = this.updateSize; this.$attachhook.cancelWaiting(); this.$trackedScrollers = []; this.canResize = true; this._endMoveTime = 0; this.on({ beginmove: this.eventHandler.crbBeginMove, moving: this.eventHandler.crbMove, endmove: function endmove() { this._endMoveTime = new Date().getTime(); } }); } ChartResizeBox.tag = 'ChartResizeBox'.toLowerCase(); ChartResizeBox.render = function () { return ChartResizeBox_({ tag: ResizeBox/* default.tag */.Z.tag, "class": 'vc-chart-resize-box', child: ['attachhook'] }, true); }; ChartResizeBox.prototype.isAttached = function (target) { return this.$target === target; }; ChartResizeBox.prototype.isAfterMoving = function () { return new Date().getTime() - this._endMoveTime < 5; }; ChartResizeBox.prototype.attachTo = function (target) { if (this.$target === target) return; this.detach(); if (!target || !(0,Dom/* isDomNode */.mV)(target)) return; ResizeSystem/* default.add */.Z.add(this.$attachhook); this.$target = target; this.sponsorElement = target; var pe = target.parentElement; if (pe) { pe.appendChild(this); } while (pe) { if (pe.addEventListener) { pe.addEventListener('scroll', this.updateSize); this.$trackedScrollers.push(pe); } else break; pe = pe.parentElement; } document.addEventListener('scroll', this.updateSize); this.$trackedScrollers.push(document); this.updateSize(); }; ChartResizeBox.prototype.detach = function () { clearInterval(this._listenInterval); this._listenInterval = -1; while (this.$trackedScrollers.length > 0) { this.$trackedScrollers.pop().removeEventListener('scroll', this.updateSize); } this.remove(); this.$target = null; }; ChartResizeBox.prototype.updateSize = function () { var target = this.$target; if (!target) return; var bound = target.getBoundingClientRect(); this.addStyle({ left: bound.left + 'px', top: bound.top + 'px', width: bound.width + 'px', height: bound.height + 'px' }); }; ChartResizeBox.eventHandler = {}; ChartResizeBox.eventHandler.crbBeginMove = function (event) { this._targetInitBound = this.$target.getBoundingClientRect(); }; ChartResizeBox.eventHandler.crbMove = function (event) { if (event.option.right) { this.$target.addStyle('width', this._targetInitBound.width + event.clientDX + 'px'); } if (event.option.bottom) { this.$target.addStyle('height', this._targetInitBound.height + event.clientDY + 'px'); } ResizeSystem/* default.update */.Z.update(); }; ACore/* default.install */.Z.install(ChartResizeBox); /* harmony default export */ const src_ChartResizeBox = (ChartResizeBox); // EXTERNAL MODULE: ./node_modules/absol-acomp/js/colorpicker/SelectColorSchemeMenu.js var SelectColorSchemeMenu = __webpack_require__(5830); // EXTERNAL MODULE: ./src/style/note.css var note = __webpack_require__(2859); ;// CONCATENATED MODULE: ./src/KeyNote.js /** * @typedef KeyNoteItem * @property {string} text * @property {null|"rect"|"point"|"line"} noteType * @property {string|Color} color * @property {string} key */ /** * @extends {GContainer} * @constructor */ function KeyNote() { this._noteType = null; this._text = ''; this._color = 'black'; this.$type = null; this.$hitbox = VCore_$('.vc-note-hit', this); this.$text = VCore_$('.vc-note-text', this); } KeyNote.tag = 'KeyNote'.toLowerCase(); KeyNote.render = function () { // var fontSize = AElement.prototype.getComputedStyleValue.call(document.body, 'font-size'); // fontSize = parseFloat((fontSize || '14px').replace('px', '')); var fontSize = 14; return VCore_({ tag: svg_GContainer, "class": 'vc-note', child: [{ tag: 'rect', "class": 'vc-note-hit', attr: { x: 0, y: 0, // width: measureArial14TextWidth(), height: fontSize + '' } }, { tag: 'text', "class": 'vc-note-text', attr: { x: Math.ceil(30 * fontSize / 14) + '', y: Math.ceil(11 * fontSize / 14) + '' } }] }); }; KeyNote.prototype.typeHandlers = {}; KeyNote.prototype.typeHandlers["null"] = { view: function view() { // var fontSize = getComputedStyle(document.body).getPropertyValue('font-size'); // fontSize = parseFloat((fontSize || '14px').replace('px', '')); var fontSize = 14; this.$type = VCore_({ tag: 'rect', "class": 'vc-note-rect', attr: { x: 0, y: 0, width: Math.ceil(24 * fontSize / 14) + '', height: fontSize + '' } }); }, color: function color(value) { this.$type.addStyle('fill', value); } }; KeyNote.prototype.typeHandlers.rect = KeyNote.prototype.typeHandlers["null"]; KeyNote.prototype.typeHandlers.rhombus = { view: function view() { var fontSize = 14; this.$rhombus = VCore_({ tag: 'rect', "class": 'vc-note-rect', attr: { x: -fontSize / 2.8, y: -fontSize / 2.8, width: fontSize / 1.4, height: fontSize / 1.4, transform: 'rotate(45)' } }); this.$type = VCore_({ tag: svg_GContainer, child: this.$rhombus }); this.$type.box.x = Math.ceil(24 * fontSize / 14 / 2); this.$type.box.y = Math.ceil(fontSize / 2); }, color: function color(value) { this.$rhombus.addStyle('fill', value); } }; KeyNote.prototype.typeHandlers.point = { view: function view() { // var fontSize = getComputedStyle(document.body).getPropertyValue('font-size'); // fontSize = parseFloat((fontSize || '14px').replace('px', '')); var fontSize = 14; this.$type = VCore_({ tag: 'circle', "class": 'vc-note-point', style: { strokeWidth: 2, stroke: 'white' }, attr: { cx: Math.ceil(10 * fontSize / 14) + '', cy: Math.ceil(7 * fontSize / 14) + '', r: Math.ceil(8 * fontSize / 14) + '' } }); }, color: function color(value) { this.$type.addStyle('fill', value); } }; KeyNote.prototype.typeHandlers.line = { view: function view() { this.$type = VCore_({ tag: 'path', "class": 'vc-note-line', attr: { d: 'M0 9 h24' } }); }, color: function color(value) { this.$type.addStyle('stroke', value); } }; KeyNote.prototype.typeHandlers.stroke = KeyNote.prototype.typeHandlers.line; KeyNote.property = { noteType: { set: function set(value) { if (!this.typeHandlers[value]) { value = null; } if (this._noteType === value) return; this._noteType = value; if (this.$type) { this.$type.remove(); this.$type = null; } this.typeHandlers[value + ''].view.call(this); if (this.$type) this.typeHandlers[value + ''].color.call(this, this._color + ''); this.addChildAfter(this.$type, this.$hitbox); }, get: function get() { return this._noteType; } }, text: { set: function set(value) { // var fontSize = getComputedStyle(document.body).getPropertyValue('font-size'); // fontSize = parseFloat((fontSize || '14px').replace('px', '')); var fontSize = 14; value = value || ''; this._text = value; this.$text.clearChild().addChild(VCore_({ text: value })); var width = 30 * fontSize / 14 + measureArial14TextWidth(value); this.$hitbox.attr('width', 30 * fontSize / 14 + measureArial14TextWidth(value)); this.box.width = width; this.box.height = Math.ceil(24 * fontSize / 14); }, get: function get() { return this._text; } }, color: { set: function set(value) { this._color = value; if (this.typeHandlers[this._noteType + ''] && this.$type) { this.typeHandlers[this._noteType + ''].color.call(this, value.toString()); } }, /** * @this {KeyNote} * @returns {*} */ get: function get() { return this._color; } }, key: { set: function set(value) { this.attr('data-key', value + ''); }, get: function get() { return this.attr('data-key'); } } }; src_VCore.install(KeyNote); /* harmony default export */ const src_KeyNote = (KeyNote); /** * @extends GContainer * @constructor */ function KeyNoteGroup() { this.extendStyle = {}; /** * * @type {KeyNote[]} */ this.$items = []; /** * * @type {KeyNoteItem[]} * @private */ this._items = []; /** * @type {KeyNoteItem[]} * @name items * @memberof KeyNoteGroup# */ } KeyNoteGroup.tag = 'KeyNodeGroup'.toLowerCase(); KeyNoteGroup.render = function () { return VCore_({ tag: svg_GContainer }); }; KeyNoteGroup.prototype.updateSize = function () { var maxWidth = this.$items.reduce(function (ac, it) { return Math.max(ac, it.box.width); }, 0); maxWidth = Math.ceil(maxWidth) + 20; var col = Math.floor(this.box.width / maxWidth) || 1; var y = 0; var itemElt; var height = 0; for (var i = 0; i < this.$items.length; ++i) { itemElt = this.$items[i]; itemElt.box.position = { x: maxWidth * (i % col), y: y }; height = y + itemElt.box.height; if ((i + 1) % col === 0) { y += itemElt.box.height * 1.5; } } this.box.height = height; }; // // KeyNoteGroup.prototype.styleHandlers = {}; // // KeyNoteGroup.prototype.styleHandlers.width = function (value) { // console.log(value) // }; // // // KeyNoteGroup.prototype.addStyle = function (arg0, arg1) { // var handler; // if ((typeof arg0 === "string")) { // handler = this.styleHandlers[arg0] || this.styleHandlers[kebabCaseToCamelCase(arg0)] // } // // if (handler) handler.call(this, arg1); // else AElementNS.prototype.addStyle.apply(this, arguments); // return this; // }; // KeyNoteGroup.prototype.removeStyle = function (arg0) { // this.addStyle(arg0, ''); // return this; // }; KeyNoteGroup.property = {}; KeyNoteGroup.property.items = { /** * @this KeyNoteGroup * @param items */ set: function set(items) { items = items || []; this._items = items; this.clearChild(); this.$items = items.map(function (it) { return VCore_({ tag: KeyNote, props: Object.assign({}, it) }); }); this.addChild(this.$items); }, /** * @this KeyNoteGroup */ get: function get() { return this._items; }, configurable: true }; // EXTERNAL MODULE: ./node_modules/absol-acomp/js/Tooltip.js var Tooltip = __webpack_require__(5194); // EXTERNAL MODULE: ./node_modules/absol/src/Code/noop.js var noop = __webpack_require__(1432); // EXTERNAL MODULE: ./node_modules/absol/src/DataStructure/Object.js var DataStructure_Object = __webpack_require__(2722); ;// CONCATENATED MODULE: ./src/BChart.js var BChart_ = src_VCore._; var BChart_$ = src_VCore.$; /** * * @param chartElt * @constructor */ function ChartResizeController(chartElt) { this.chartElt = chartElt; this.ev_click = this.ev_click.bind(this); this.ev_clickOut = this.ev_clickOut.bind(this); this.chartElt.on('click', this.ev_click); } ChartResizeController.prototype.ev_click = function (event) { if (!this.chartElt.resizable) return; this.prepare(); if (this.share.$resizebox.isAttached(this.chartElt)) return; this.share.$resizebox.attachTo(this.chartElt); document.addEventListener('click', this.ev_clickOut); }; ChartResizeController.prototype.ev_clickOut = function (event) { if ((0,EventEmitter/* hitElement */.EY)(this.chartElt, event)) return; if (this.share.$resizebox.isAfterMoving()) return; if (this.share.$resizebox.isAttached(this.chartElt)) this.share.$resizebox.detach(); document.removeEventListener('click', this.ev_clickOut); }; ChartResizeController.prototype.revokeResource = function () { document.removeEventListener('click', this.ev_clickOut); }; ChartResizeController.prototype.share = { /** * @type {ChartResizeBox} */ $resizebox: null }; ChartResizeController.prototype.prepare = function () { if (this.share.$resizebox) return; this.share.$resizebox = ACore/* default._ */.Z._({ tag: src_ChartResizeBox.tag }); }; /** * * @param {BChart|SvgCanvas} elt * @constructor */ function ChartTitleController(elt) { var _this = this; this.elt = elt; Object.keys(this.constructor.prototype).filter(function (key) { return key.startsWith('ev_'); }).forEach(function (key) { return _this[key] = _this[key].bind(_this); }); this.elt.on('mouseover', this.ev_mouseEnter).on('mouseout', this.ev_mouseOut); this.titleElt = null; this.contentElt = ACore/* default._ */.Z._({ tag: 'div', style: { font: '14px Arial' } }).on('mouseover', this.ev_mouseEnter).on('mouseout', this.ev_mouseOut); this.closeTO = -1; this.sessonToken = null; } ChartTitleController.prototype.revokeResource = function () { this.elt.off('mouseover', this.ev_mouseEnter).off('mouseout', this.ev_mouseOut); this.contentElt.off('mouseover', this.ev_mouseEnter).off('mouseout', this.ev_mouseOut); (0,utils.revokeResource)(this.contentElt); delete this.elt; delete this.contentElt; this.revokeResource = (0,noop/* default */.Z)(); }; ChartTitleController.prototype.ev_mouseEnter = function (event) { var _this2 = this; if ((0,EventEmitter/* hitElement */.EY)(this.contentElt, event)) { clearTimeout(this.closeTO); return; } var hasTileElt = this.findTitleElt(event.target); if (hasTileElt) { clearTimeout(this.closeTO); if (hasTileElt !== this.titleElt) { this.titleElt = hasTileElt; this.sessonToken = Tooltip/* default.show */.Z.show(this.titleElt, this.makeTooltipContent(this.titleElt.attr('title'))); } } else { if (this.titleElt) { clearTimeout(this.closeTO); this.closeTO = setTimeout(function () { _this2.titleElt = null; Tooltip/* default.close */.Z.close(_this2.sessonToken); }, 500); } } }; ChartTitleController.prototype.ev_mouseOut = function (event) { var _this3 = this; if (this.titleElt && (event.target === this.titleElt || event.target === this.contentElt || event.target.isDescendantOf && !event.target.isDescendantOf(this.titleElt) && !event.target.isDescendantOf(this.contentElt))) { clearTimeout(this.closeTO); this.closeTO = setTimeout(function () { _this3.titleElt = null; Tooltip/* default.close */.Z.close(_this3.sessonToken); }, 500); } }; ChartTitleController.prototype.makeTooltipContent = function (text) { this.contentElt.clearChild(); return ACore/* default._ */.Z._({ elt: this.contentElt, child: text.split('\n').reduce(function (ac, cr) { ac.push({ text: cr }, 'br'); return ac; }, []) }); }; ChartTitleController.prototype.findTitleElt = function (elt) { while (elt && elt !== this.elt) { if (elt.attr && elt.attr('title')) return elt; elt = elt.parentElement; } return null; }; /*** * @extends SvgCanvas * @constructor */ function BChart() { var _this4 = this; this.resizable = false; this.ready = false; this.contentPadding = 5; this.title = ''; this.domSignal = new DomSignal/* default */.ZP(BChart_$('sattachhook.vc-dom-signal', this)); this.domSignal.on({ updateContent: this.updateContent.bind(this) }); /** * @type {GContainer} */ this.$body = BChart_$('.vc-body', this); /** * @type {GContainer} */ this.$noteCtn = BChart_$('.vc-note-ctn', this); this.domSignal.emit('updateContent'); this.$title = BChart_$('.vc-title', this); this.computedData = { /*** * @type {Array<{color: Color, type: ("stroke"|"rect"), text:string}>} */ notes: [] }; this.resizeCtrl = new ChartResizeController(this); this.titleCtrl = new ChartTitleController(this); if (!this.numberToText) { OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'numberToText', 'numberToString'); } (0,DataStructure_Object/* observePropertyChanges */.U)(this, this.dataKeys, function () { if (_this4.domSignal) _this4.domSignal.emit('updateContent'); }); /** * @name colorScheme * @type {null|number} * @memberof BChart# */ } BChart.tag = 'BChart'.toLowerCase(); BChart.render = function (data, o, dom) { var res = BChart_({ tag: 'svgcanvas', "class": 'vc-chart', child: [{ tag: 'gcontainer', "class": 'vc-body' }, { tag: 'text', "class": 'vc-title', child: { text: '' } }, { tag: 'gcontainer', "class": 'vc-note-ctn' }, 'sattachhook.vc-dom-signal'] }); var colorScheme = o && o.props && o.props.colorScheme; if ((0,utils.isNaturalNumber)(colorScheme)) { colorScheme = Math.max(0, Math.min(SelectColorSchemeMenu/* DEFAULT_CHART_COLOR_SCHEMES.length */.cF.length, colorScheme)); res.attr('data-color-scheme', colorScheme + ''); } return res; }; BChart.prototype.dataKeys = ['title']; BChart.prototype.revokeResource = function () { (0,DataStructure_Object/* unobservePropertyChanges */.i3)(this, this.dataKeys); (0,utils.revokeResource)(this.resizeCtrl); (0,utils.revokeResource)(this.titleCtrl); while (this.lastChild) { (0,utils.revokeResource)(this.lastChild); this.lastChild.remove(); } this.revokeResource = noop/* default */.Z; this.computedData = null; }; BChart.prototype.normalizeData = function () {}; BChart.prototype.computeData = function () { this.computedData.notes = this.computeNotes(); }; BChart.prototype._createNote = function () { var _this5 = this; var thisC = this; this.$noteCtn.clearChild(); this.$notes = this.computedData.notes.map(function (note, idx) { var noteElt = BChart_({ tag: src_KeyNote, props: { color: note.color, text: note.text, noteType: note.type }, attr: { 'data-idx': idx }, on: { mouseenter: function mouseenter(event) { if (_this5.eventHandler['mouseEnterNote']) { _this5.eventHandler['mouseEnterNote'](idx, event); } }, mouseleave: function mouseleave(event) { if (_this5.eventHandler['mouseLeaveNote']) { _this5.eventHandler['mouseLeaveNote'](idx, event); } } } }); thisC.$noteCtn.addChild(noteElt); return noteElt; }); }; BChart.prototype._createTitle = function () { this.$title.firstChild.data = this.title || ''; }; BChart.prototype.createContent = function () { this.ready = true; this._createTitle(); this._createNote(); }; BChart.prototype._updateNotesPosition = function () { var noteBoundWidth = this.$notes.reduce(function (ac, noteElt) { var box = noteElt.getBBox(); return Math.max(ac, box.width); }, 0); var noteCtnMaxWidth = Math.max(this.box.width - this.contentPadding * 2, noteBoundWidth + 1); var x = 0; var y = 0; var pieceElt; for (var i = 0; i < this.$notes.length; ++i) { pieceElt = this.$notes[i]; if (x + noteBoundWidth > noteCtnMaxWidth) { x = 0; y += 20; } pieceElt.box.setPosition(x, y); x += noteBoundWidth + 15; } var noteCtnBound = this.$noteCtn.getBBox(); this.$noteCtn.box.setPosition(this.box.width / 2 - noteCtnBound.width / 2, this.box.height - this.contentPadding - noteCtnBound.height); }; BChart.prototype._updateTitlePosition = function () { this.$title.attr({ x: this.box.width / 2, y: 18 }); }; BChart.prototype.updateBodyPosition = function () { var titleHeight = this.$title.getBBox().height; var top = this.contentPadding; if (titleHeight > 0) top += titleHeight + 10; this.$body.box.setPosition(this.contentPadding, top); this.$body.box.setSize(this.box.width - this.contentPadding * 2, this.$noteCtn.box.y - top - 10); }; BChart.prototype.updateContentPosition = function () { this._updateTitlePosition(); this._updateNotesPosition(); this.updateBodyPosition(); }; /*** * * @returns {{color: Color, text: string, type: ("stroke"|"rect")}[]} */ BChart.prototype.computeNotes = function () { return []; }; BChart.prototype.updateContent = function () { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('updateContent'); return; } this.normalizeData(); this.computeData(); this.createContent(); this.updateContentPosition(); }; BChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); if (!this.ready) return; this.updateContentPosition(); }; BChart.property = {}; BChart.property.canvasWidth = { get: function get() { return this.box.width; }, set: function set(value) { this.addStyle('width', value + 'px'); this.updateSize(); } }; BChart.property.canvasHeight = { get: function get() { return this.box.height; }, set: function set(value) { this.addStyle('height', value + 'px'); this.updateSize(); } }; BChart.property.showInlineValue = { set: function set(value) { if (value) { this.addClass('vc-show-inline-value'); } else { this.removeClass('vc-show-inline-value'); } }, get: function get() { return this.containsClass('vc-show-inline-value'); } }; BChart.property.colorScheme = { set: function set(value) { this.attr('data-color-scheme', value + ''); if (this.isDescendantOf(document.body)) { this.domSignal.emit("updateContent"); } }, get: function get() { var res = this.attr('data-color-scheme'); if (res) res = parseInt(res, 10); if (!(0,utils.isNaturalNumber)(res)) res = null; return res; } }; BChart.eventHandler = {}; src_VCore.install(BChart); /* harmony default export */ const src_BChart = (BChart); // EXTERNAL MODULE: ./node_modules/absol/src/Math/int.js var Math_int = __webpack_require__(7988); ;// CONCATENATED MODULE: ./src/LineChart.js function LineChart() { this.titleCtrl = new ChartTitleController(this); } LineChart.tag = 'LineChart'.toLowerCase(); LineChart.render = function () { return VCore_('basechart', true); }; LineChart.prototype.processMinMax = function () { this.minValue = this.lines.reduce(function (minValue, line) { return line.values.reduce(function (minValue, value) { if (!isNumber(value)) return minValue; return Math.min(minValue, value); }, minValue); }, 1000000000); this.maxValue = this.lines.reduce(function (maxValue, line) { return line.values.reduce(function (maxValue, value) { if (!isNumber(value)) return maxValue; return Math.max(maxValue, value); }, maxValue); }, -1000000000); if (this.minValue > this.maxValue) { this.minValue = 0; this.maxValue = this.minValue + 10; } }; LineChart.prototype._createLineNote = function (name, color) { var res = VCore_('g'); res.$line = hline(0, -5, this.noteLineLength, 'line-chart-line').addStyle('stroke', color).addTo(res); res.$name = helper_text(name, this.noteLineLength + 5, 0).addTo(res); return res; }; LineChart.prototype._createKeyName = function (key) { var res = VCore_('g'); res.$text = helper_text(key, 0, 5).addTo(res); return res; }; LineChart.prototype._createLine = function (line, color) { var res = VCore_({ tag: 'g', style: { fill: color, stroke: color } }); res.$path = VCore_('shape.line-chart-line').addTo(res); res.$plots = line.values.map(function (u, i) { var plot = circle(0, 0, this.plotRadius, 'line-chart-plot').addTo(res); var text = line.texts && line.texts[i]; if (text) plot.attr('title', text); // .on('mouseenter', function (event) { // var text = line.texts && line.texts[i]; // if (!text) return; // // var currentBound = this.getBoundingClientRect(); // // showTooltip(text, (currentBound.left + currentBound.right) / 2, (currentBound.top + currentBound.bottom) / 2).then(function (token) { // this.once('mouseleave', function () { // setTimeout(function () { // closeTooltip(token); // }, 1000); // }); // }.bind(this)); // }); if (line.plotColors && line.plotColors[i]) { plot.addStyle('fill', line.plotColors[i]); } return plot; }.bind(this)); return res; }; LineChart.prototype.initBackComp = function () { this["super"](); this.colors = this.lines.map(function (line, i, arr) { if (line.color) return line.color; return this.colorTable[Math.floor(this.colorTable.length * i / arr.length)]; }.bind(this)); this.$lineNotes = this.lines.map(function (line, i) { return this._createLineNote(line.name, this.colors[i]).addTo(this); }.bind(this)); this.$keyNames = this.keys.map(function (key) { return this._createKeyName(key).addTo(this.$content); }.bind(this)); }; LineChart.prototype.updateBackComp = function () { this["super"](); this.oxyBottom = this.canvasHeight - 25; var lineNoteWidth = this.$lineNotes.reduce(function (lineNoteWidth, $lineNote) { return lineNoteWidth + $lineNote.getBBox().width + 15; }.bind(this), 0); this.$lineNotes.reduce(function (x, $lineNote) { $lineNote.attr('transform', translate(x, this.canvasHeight - 5)); return x + $lineNote.getBBox().width + 15; }.bind(this), (this.canvasWidth - lineNoteWidth) / 2); var maxKeyNameWidth = this.$keyNames.reduce(function (w, $keyName) { return Math.max(w, $keyName.$text.getBBox().width); }, 0); this.oxSegmentLength = this.oxLength / this.keys.length; this.oxContentLength = this.oxLength; if (this.oxSegmentLength < maxKeyNameWidth + this.keyPaddingH * 2) { this.rotateText = true; } else if (this.minOXSegmentLength > this.oxSegmentLength) { this.oxSegmentLength = this.minOXSegmentLength; this.rotateText = true; this.oxContentLength = this.oxSegmentLength * this.keys.length; } if (this.rotateText) { this.$keyNames.forEach(function (e, i) { e.attr('transform', translate((i + 0.5) * this.oxSegmentLength - 5, 12)); e.$text.attr('transform', rotate(45)); }.bind(this)); this.oxyBottom -= maxKeyNameWidth / 1.4 + 12; } else { this.$keyNames.forEach(function (e, i) { e.attr('transform', translate((i + 0.5) * this.oxSegmentLength, 12)); e.$text.attr('text-anchor', 'middle'); }.bind(this)); this.oxyBottom -= 30; } //reupdate because update oxybottom this["super"](); }; LineChart.prototype.initComp = function () { this.$lines = this.lines.map(function (line, i) { return this._createLine(line, this.colors[i]).addTo(this.$content); }.bind(this)); }; LineChart.prototype.updateComp = function () { this.$lines.map(function ($line, i) { var line = this.lines[i]; $line.$plots.forEach(function ($plot, j) { $plot.attr('display'); var value = line.values[j]; if (isNumber(value)) { $plot.attr({ cx: this.oxSegmentLength * (j + 0.5), cy: this.mapOYValue(value) }); } else { $plot.attr('display', 'none'); } }.bind(this)); $line.$path.begin(); line.values.reduce(function (state, value, j) { if (line.length == 1) { if (!isNumber(value)) return 'NOT_START'; var y = this.mapOYValue(value); var x = this.oxSegmentLength * j; $line.$path.moveTo(x, y); x = this.oxSegmentLength * (j + 1); $line.$path.lineTo(x, y); return "IN_LINE"; } if (state == "NOT_START") { if (!isNumber(value)) return 'NOT_START'; var y = this.mapOYValue(value); var x = this.oxSegmentLength * (j + 0.5); $line.$path.moveTo(x, y); return 'IN_LINE'; } else if (state == 'IN_LINE') { if (!isNumber(value)) return 'NOT_START'; var y = this.mapOYValue(value); var x = this.oxSegmentLength * (j + 0.5); $line.$path.lineTo(x, y); return 'IN_LINE'; } return ac; }.bind(this), "NOT_START"); $line.$path.end(); }.bind(this)); }; LineChart.prototype.preInit = function () { this["super"](); this.rotateText = true; this.noteLineLength = 40; this.plotRadius = 6; this.keyPaddingH = 4; this.minOXSegmentLength = 25; this.colorTable = ['#821616', ' #824116', '#826C16', '#6C8216', '#418216', '#168216', '#168241', '#16826C', '#166C82', '#164182', '#161682', '#411682', '#6C1682', '#82166C', '#821641']; this.lines = []; }; src_VCore.install(LineChart); /* harmony default export */ const src_LineChart = (LineChart); /** * @extends SvgCanvas * @constructor */ function LineChart2() { this.titleCtrl = new ChartTitleController(this); this.$title = VCore_$('.vc-title', this); /** * * @type {KeyNoteGroup} */ this.$keyNoteGroup = VCore_$(KeyNoteGroup.tag, this); this.$oyLabelCtn = VCore_$('.vc-oy-label-ctn', this); this.$body = VCore_$('.vc-body', this); this.$keyCtn = VCore_$('.vc-key-ctn', this); this.$oxy = VCore_$('.vc-oxy', this); this.$oxyArrow = VCore_$('.vc-oxy-arrow', this); this.$content = VCore_$('.vc-content', this); this.$valueName = VCore_$('.vc-value-name', this); this.$keyName = VCore_$('.vc-key-name', this); this.$lines = []; this.cpData = { min: 0, max: 1, oyLabelLength: 0, keyNameWidth: 0, valueNameWidth: 0 }; this.$keys = []; /** * @type {{name: string, values: number[], texts: string[], color: string, plotColors: (string|Color)[]}[]} * @name lines * @memberof LineChart2# */ /** * * @type {string[]} * @name keys */ /** * * @type {boolean} * @name zeroOY * @memberof LineChart2# */ /** * * @type {string} * @name keyName * @memberof LineChart2# */ /** * * @type {string} * @name valueName * @memberof LineChart2# */ } LineChart2.tag = 'LineChart2'.toLowerCase(); LineChart2.render = function () { return VCore_({ tag: svg_SvgCanvas, "class": ['vc-chart', 'vc-line-chart'], child: [{ tag: 'text', "class": 'vc-title', child: { text: "" } }, { tag: svg_GContainer, "class": 'vc-body', child: [{ tag: 'path', "class": 'vc-oxy' }, { tag: 'path', "class": 'vc-oxy-arrow' }, { tag: 'text', "class": 'vc-value-name', child: { text: '' } }, { tag: 'text', "class": 'vc-key-name', child: { text: '' } }, { tag: svg_GContainer, "class": 'vc-oy-label-ctn' }, { tag: svg_GContainer, "class": 'vc-key-ctn' }, { tag: svg_GContainer, "class": 'vc-content' }] }, { tag: KeyNoteGroup }] }); }; LineChart2.prototype.colorTable = ['#821616', ' #824116', '#826C16', '#6C8216', '#418216', '#168216', '#168241', '#16826C', '#166C82', '#164182', '#161682', '#411682', '#6C1682', '#82166C', '#821641']; LineChart2.prototype.paddingContent = 5; LineChart2.prototype.plotRadius = 6; LineChart2.prototype.integerOnly = false; LineChart2.prototype.numberToString = function (value) { return (0,Math_int.numberToString)(value); }; LineChart2.prototype.requestUpdate = function () { var _this = this; if (this.pendingUpdate) return; this.pendingUpdate = true; setTimeout(function () { _this.updateContent(); _this.updatePosition(); }); }; LineChart2.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this.updatePosition(); }; LineChart2.prototype.computeData = function () { var cpData = this.cpData; var lines = this.lines || []; cpData.max = lines.reduce(function (ac, cr) { var values = cr.values || []; return values.reduce(function (ac2, cr2) { return Math.max(ac2, cr2); }, ac); }, this.zeroOY ? 0 : -1000000000); cpData.min = lines.reduce(function (ac, cr) { var values = cr.values || []; return values.reduce(function (ac2, cr2) { return Math.min(ac2, cr2); }, ac); }, this.zeroOY ? 0 : 1000000000); if (cpData.min > cpData.max) { cpData.min = 0; cpData.max = 1; } else if (cpData.min === cpData.max) { cpData.max = cpData.min + 1; } cpData.oyLabelLength = Math.max((cpData.max + '').length, (cpData.min + '').length); cpData.keyNameWidth = 0; if (this.keyName) { cpData.keyNameWidth = TextMeasure/* default.measureWidth */.Z.measureWidth(this.keyName, TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14); } else { cpData.keyNameWidth = 0; } cpData.keyNameWidth = Math.round(cpData.keyNameWidth); if (this.valueName) { cpData.valueNameWidth = TextMeasure/* default.measureWidth */.Z.measureWidth(this.valueName, TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14); } else { cpData.valueNameWidth = 0; } cpData.valueNameWidth = Math.round(cpData.valueNameWidth); }; LineChart2.prototype.makeLine = function (lineData, i) { var _this2 = this; var color = lineData.color || this.colorTable[i % this.colorTable.length]; var lighterColor = Color/* default.parse */.Z.parse(color + ''); var hsla = lighterColor.toHSLA(); hsla[1] += 0.2; hsla[2] += 0.2; if (hsla[1] > 0.8) hsla[1] = 0.8; if (hsla[2] > 1) hsla[2] = 1; lighterColor = Color/* default.fromHSLA */.Z.fromHSLA(hsla[0], hsla[1], hsla[2], 0.3); var values = lineData.values || []; var res = VCore_({ "class": 'vc-line', style: { '--color': color + '', '--lighter-color': lighterColor + '' }, child: [{ tag: 'path', "class": 'vc-line-path' }, { tag: 'path', "class": 'vc-line-hit-path' }] }); var plotEltArr = values.map(function (value, i) { var text = lineData.texts && lineData.texts[i]; var plotColor = null; if (lineData.plotColors && lineData.plotColors.length > 0) { plotColor = lineData.plotColors[i]; } var plotElt = VCore_({ tag: 'circle', "class": 'vc-plot', attr: { r: _this2.plotRadius, cy: 0, cx: 0 } }); if (text) plotElt.attr('title', text); if (plotColor) { plotElt.addStyle('--color', plotColor + ''); } return plotElt; }); res.addChild(plotEltArr); var linePathElt = VCore_$('.vc-line-path', res); var lineHitPathElt = VCore_$('.vc-line-hit-path', res); res.updatePosition = function () { var width = _this2.$body.box.width; var height = _this2.$body.box.height; var nCol = _this2.$keys.length; var turtle = new controller_Turtle(); var value; var x, y; var sm = _this2.cpData.sm; for (var i = 0; i < nCol; ++i) { if (i >= values.length) break; value = values[i]; x = map(i + 0.5, 0, nCol, 0, width); y = map(value, sm.minValue, sm.maxValue, 0, -height); if ((0,utils.isRealNumber)(value)) { plotEltArr[i].removeStyle('display', 'none'); plotEltArr[i].attr({ cx: x, cy: y }); if (i === 0) { turtle.moveTo(x, y); } else { turtle.lineTo(x, y); } } else { plotEltArr[i].addStyle('display', 'none'); } } linePathElt.attr('d', turtle.getPath()); lineHitPathElt.attr('d', turtle.getPath()); }; return res; // color = Color.parse(color); }; LineChart2.prototype.updateNotes = function () { var _this3 = this; var lines = this.lines || []; this.$keyNoteGroup.items = lines.map(function (line, i) { return { noteType: 'line', text: line.name || '', color: line.color || _this3.colorTable[i % _this3.colorTable.length] }; }); }; LineChart2.prototype.updateKeys = function () { var keys = this.keys || []; this.$keys = keys.map(function (key) { return VCore_({ tag: svg_GContainer, "class": 'vc-key', child: { tag: 'text', attr: { x: 0, y: 5, transform: 'rotate(45)' }, child: { text: key || '' } } }); }); this.$keyCtn.clearChild().addChild(this.$keys); }; LineChart2.prototype.updateLines = function () { var _this4 = this; this.$content.clearChild(); var lines = this.lines || []; this.$lines = lines.map(function (line, i) { return _this4.makeLine(line, i); }); this.$content.addChild(this.$lines); }; LineChart2.prototype.updateContent = function () { this.computeData(); this.updateNotes(); this.updateKeys(); this.updateLines(); }; LineChart2.prototype.updateAxisPosition = function () { var turtle = new controller_Turtle(); var width = this.$body.box.width; var height = this.$body.box.height; var cpData = this.cpData; var sm = calBeautySegment(Math.floor(height / 50), cpData.min, cpData.max, this.integerOnly); this.$valueName.attr({ x: -10, y: -height - 15 }); this.$keyName.attr({ x: width + 5 + cpData.keyNameWidth, y: -10 }); cpData.sm = sm; turtle.moveTo(0, -height - 10).vLineBy(height + 10).hLineBy(width + 10); var i; for (i = 1; i <= sm.segmentCount; ++i) { turtle.moveTo(-2, map(i, 0, sm.segmentCount, 0, -height)); turtle.hLineBy(4); } this.$oxy.attr('d', turtle.getPath()); turtle = new controller_Turtle(); turtle.moveTo(0, -height - 12).lineBy(-6, 6).hLineBy(12).closePath().moveTo(width + 12, 0).lineBy(-6, -6).vLineBy(12).closePath(); this.$oxyArrow.attr('d', turtle.getPath()); var nOyLb = sm.segmentCount + 1; while (this.$oyLabelCtn.childNodes.length > nOyLb) { this.$oyLabelCtn.lastChild.remove(); } while (this.$oyLabelCtn.childNodes.length < nOyLb) { this.$oyLabelCtn.addChild(VCore_({ tag: 'text', "class": 'vc-oy-value', attr: { x: -10, y: 0 }, child: { text: '' } })); } var elt; for (i = 0; i < nOyLb; ++i) { elt = this.$oyLabelCtn.childNodes[i]; elt.firstChild.data = this.numberToString(sm.minValue + sm.step * i); elt.attr('y', map(i, 0, sm.segmentCount, 0, -height) + 5); } }; LineChart2.prototype.updateKeysPosition = function () { var width = this.$body.box.width; this.$keys.forEach(function (elt, i, arr) { elt.box.x = map(i + 0.5, 0, arr.length, 0, width); }); }; LineChart2.prototype.updatePosition = function () { if (!this.box.width || !this.box.height) return; if (!this.isDescendantOf(document.body)) return; if (this.pendingUpdate) this.updateContent(); var width = this.box.width; var height = this.box.height; var cpData = this.cpData; this.$title.attr({ x: width / 2, y: this.paddingContent + 17 }); this.$keyNoteGroup.box.width = width - this.paddingContent * 2; this.$keyNoteGroup.updateSize(); this.$keyNoteGroup.box.x = width / 2 - this.$keyNoteGroup.getBBox().width / 2; this.$keyNoteGroup.box.y = height - this.paddingContent - (this.$keyNoteGroup.box.height || 0); this.$keyCtn.box.y = 20; var textYWidth = TextMeasure/* default.measureWidth */.Z.measureWidth('0'.repeat(cpData.oyLabelLength), TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14); if (this.valueName) { textYWidth = Math.max(textYWidth, cpData.valueNameWidth); } this.$body.box.x = textYWidth + this.paddingContent + 10; this.$body.box.width = width - this.$body.box.x - cpData.keyNameWidth - this.paddingContent - 12; if (this.$body.box.width / (this.$keys.length || 1) > 20) { this.removeClass('vc-small-col'); this.$keyCtn.box.height = this.$keyCtn.getBBox().height; } else { this.addClass('vc-small-col'); this.$keyCtn.box.height = 0; } this.$body.box.y = this.$keyNoteGroup.box.y - this.$keyCtn.box.height - 20; this.$body.box.height = this.$body.box.y - this.paddingContent - 20 - 10 - 20 - 10; this.updateAxisPosition(); this.updateKeysPosition(); this.$lines.forEach(function (lineElt) { lineElt.updatePosition(); }); }; LineChart2.property = {}; LineChart2.property.lines = { set: function set(lines) { lines = lines || []; this._lines = lines; this.requestUpdate(); }, get: function get() { return this._lines; } }; //adapt old LineChart2.property.canvasWidth = { set: function set(value) { if ((0,utils.isRealNumber)(value)) { this.addStyle('width', value + 'px'); } else if (typeof value === "string") { this.addStyle('width', value); } }, get: function get() { var value = this.style.width + ''; if (value.endsWith('px')) value = parseFloat(value.replace('px', '')); return value || 0; } }; LineChart2.property.canvasHeight = { set: function set(value) { if ((0,utils.isRealNumber)(value)) { this.addStyle('height', value + 'px'); } else if (typeof value === "string") { this.addStyle('height', value); } }, get: function get() { var value = this.style.height + ''; if (value.endsWith('px')) value = parseFloat(value.replace('px', '')); return value || 0; } }; LineChart2.property.title = { set: function set(value) { value = (value || '') + ''; this.$title.firstChild.data = value; }, get: function get() { return this.$title.firstChild.data; } }; LineChart2.property.valueName = { set: function set(value) { this.$valueName.firstChild.data = (value || '') + ''; }, get: function get() { return this.$valueName.firstChild.data; } }; LineChart2.property.keyName = { set: function set(value) { this.$keyName.firstChild.data = (value || '') + ''; }, get: function get() { return this.$keyName.firstChild.data; } }; src_VCore.install(LineChart2); ;// CONCATENATED MODULE: ./src/DualChart.js var DualChart_ = src_VCore._; var DualChart_$ = src_VCore.$; function DualChart() { this.titleCtrl = new ChartTitleController(this); } DualChart.tag = 'DualChart'.toLowerCase(); DualChart.render = function () { return DualChart_('basechart.dualchart', true); }; DualChart.prototype.processMinMax = function () { this.minValue = this.lines.reduce(function (minValue, line) { return line.values.reduce(function (minValue, value) { if (!isNumber(value)) return minValue; return Math.min(minValue, value); }, minValue); }, 1000000000); this.minValue = this.areas.reduce(function (minValue, area) { return area.values.reduce(function (minValue, value) { if (!isNumber(value)) return minValue; return Math.min(minValue, value); }, minValue); }, this.minValue); this.maxValue = this.lines.reduce(function (maxValue, line) { return line.values.reduce(function (maxValue, value) { if (!isNumber(value)) return maxValue; return Math.max(maxValue, value); }, maxValue); }, -1000000000); this.maxValue = this.areas.reduce(function (maxValue, area) { return area.values.reduce(function (maxValue, value) { if (!isNumber(value)) return maxValue; return Math.max(maxValue, value); }, maxValue); }, this.maxValue); if (this.minValue > this.maxValue) { this.minValue = 0; this.maxValue = this.minValue + 10; } }; DualChart.prototype._createArea = function (area, color) { var res = DualChart_({ tag: 'shape', "class": 'dualchart-area', style: { fill: color, stroke: color } }); return res; }; DualChart.prototype._createAreaNote = function (area, color) { var res = DualChart_({ tag: 'g' }); res.$rect = rect(0, -14, 14, 14, 'dualchart-note-rect').addTo(res); if (color) { res.$rect.addStyle('fill', color); } res.$name = helper_text(area.name, 17, 0, 'dualchart-note-text').addTo(res); return res; }; DualChart.prototype.initBackComp = function () { this["super"](); this.noteLineLength = 14; this.colors = this.lines.concat(this.areas).map(function (items, i, arr) { if (items.color) return items.color; return i < this.lines.length ? this.colorTable[Math.floor(this.colorTable.length * i / arr.length)] : this.colorTable[Math.floor(this.colorTable.length * i / arr.length)].replace(/#/, '#80'); }.bind(this)); this.$lineNotes = this.lines.map(function (line, i) { return this._createLineNote(line.name, this.colors[i]).addTo(this); }.bind(this)); this.$arealNotes = this.areas.map(function (area, i) { return this._createAreaNote(area, this.colors[i + this.lines.length]).addTo(this); }.bind(this)); this.$keyNames = this.keys.map(function (key) { return this._createKeyName(key).addTo(this.$content); }.bind(this)); }; DualChart.prototype.updateBackComp = function () { this["super"](); this.oxyBottom = this.canvasHeight - 5; var $notes = this.$lineNotes.concat(this.$arealNotes); var notesWidth = $notes.reduce(function (noteWidth, $lineNote) { return noteWidth + $lineNote.getBBox().width + 15; }.bind(this), 0); if (notesWidth >= this.canvasWidth) { var maxNoteWidth = $notes.reduce(function (maxNoteWidth, $lineNote) { return Math.max(maxNoteWidth, $lineNote.getBBox().width + 10); }.bind(this), 0); var notePerLine = Math.max(1, Math.floor(this.canvasWidth / maxNoteWidth)); var x0 = (this.canvasWidth - notePerLine * maxNoteWidth) / 2 + 5; var y0 = this.canvasHeight - 5; $notes.forEach(function ($note, i) { $note.attr('transform', translate(x0 + maxNoteWidth * (i % notePerLine), y0)); if (i % notePerLine == notePerLine - 1) y0 -= 20; this.oxyBottom -= 20; }.bind(this)); } else { $notes.reduce(function (x, $line) { $line.attr('transform', translate(x, this.canvasHeight - 5)); return x + $line.getBBox().width + 15; }.bind(this), (this.canvasWidth - notesWidth) / 2); this.oxyBottom -= 20; } var maxKeyNameWidth = this.$keyNames.reduce(function (w, $keyName) { return Math.max(w, $keyName.$text.getBBox().width); }, 0); this.oxSegmentLength = this.oxLength / this.keys.length; this.oxContentLength = this.oxLength; if (this.oxSegmentLength < maxKeyNameWidth + this.keyPaddingH * 2) { this.rotateText = true; } else if (this.minOXSegmentLength > this.oxSegmentLength) { this.oxSegmentLength = this.minOXSegmentLength; this.rotateText = true; this.oxContentLength = this.oxSegmentLength * this.keys.length; } if (this.rotateText) { this.$keyNames.forEach(function (e, i) { e.attr('transform', translate((i + 0.5) * this.oxSegmentLength - 5, 12)); e.$text.attr('transform', rotate(45)); }.bind(this)); this.oxyBottom -= maxKeyNameWidth / 1.4 + 12; } else { this.$keyNames.forEach(function (e, i) { e.attr('transform', translate((i + 0.5) * this.oxSegmentLength, 12)); e.$text.attr('text-anchor', 'middle'); }.bind(this)); this.oxyBottom -= 30; } //reupdate because update oxybottom this["super"](); }; DualChart.prototype.initComp = function () { this.$areas = this.areas.map(function (line, i) { return this._createArea(line, this.colors[i + this.lines.length]).addTo(this.$content); }.bind(this)); this.$lines = this.lines.map(function (line, i) { return this._createLine(line, this.colors[i]).addTo(this.$content); }.bind(this)); }; DualChart.prototype.updateComp = function () { this.updateLine(); this.updateArea(); }; DualChart.prototype.updateLine = function () { this.$lines.map(function ($line, i) { var line = this.lines[i]; var subLines = getSubNumberArray(line.values); $line.$path.begin(); subLines.forEach(function (subLine, j) { var start = subLine.start; var values = subLine.values; if (values.length > 1) { $line.$path.moveTo(this.oxSegmentLength * (start + 0.5), this.mapOYValue(values[0])); for (var xi = 1; xi < values.length; ++xi) { $line.$path.lineTo(this.oxSegmentLength * (start + xi + 0.5), this.mapOYValue(values[xi])); } } else { $line.$path.moveTo(this.oxSegmentLength * (start + 0.25), this.mapOYValue(values[0])); $line.$path.lineTo(this.oxSegmentLength * (start + 0.75), this.mapOYValue(values[0])); } }.bind(this)); $line.$path.end(); $line.$plots.forEach(function ($plot, j) { $plot.attr('display'); var value = line.values[j]; if (isNumber(value)) { $plot.attr({ display: undefined, cx: this.oxSegmentLength * (j + 0.5), cy: this.mapOYValue(value) }); } else $plot.attr('display', 'none'); }.bind(this)); $line.$path.end(); }.bind(this)); }; DualChart.prototype.updateArea = function () { this.$areas.map(function ($area, i) { var values = this.areas[i].values; var subAreas = getSubNumberArray(values); $area.begin(); subAreas.forEach(function (subArea) { var start = subArea.start; var values = subArea.values; if (values.length > 1) { $area.moveTo(this.oxSegmentLength * (start + 0.5), -1); for (var xi = 0; xi < values.length; ++xi) { $area.lineTo(this.oxSegmentLength * (start + xi + 0.5), this.mapOYValue(values[xi])); } $area.lineTo(this.oxSegmentLength * (start + values.length - 1 + 0.5), -1); $area.closePath(); } else { $area.moveTo(this.oxSegmentLength * (start + 0.25), -1); $area.lineTo(this.oxSegmentLength * (start + 0.25), this.mapOYValue(values[0])); $area.lineTo(this.oxSegmentLength * (start + 0.75), this.mapOYValue(values[0])); $area.lineTo(this.oxSegmentLength * (start + 0.75), -1); $area.closePath(); } }.bind(this)); // $area // .moveTo(this.oxSegmentLength * (values.length - (this.keys.length == 1 ? 0.25 : 0.5)), -1) // .lineTo(this.oxSegmentLength * (this.keys.length == 1 ? 0.25 : 0.5), -1); // if (this.keys.length == 1) { // $area.lineTo(this.oxSegmentLength * 0.25, isNumber(values[0]) ? this.mapOYValue(values[0]) : 0); // } // for (var i = 0; i < values.length; ++i) { // $area.lineTo(this.oxSegmentLength * (i + 0.5), isNumber(values[i]) ? this.mapOYValue(values[i]) : 0); // } // if (this.keys.length == 1) { // $area.lineTo(this.oxSegmentLength * 0.75, isNumber(values[0]) ? this.mapOYValue(values[0]) : 0); // } // $area.closePath().end(); $area.end(); }.bind(this)); }; Object.keys(src_LineChart.prototype).filter(function (key) { return !DualChart.prototype[key]; }).forEach(function (key) { DualChart.prototype[key] = src_LineChart.prototype[key]; }); src_VCore.creator.dualchart = DualChart; /* harmony default export */ const src_DualChart = (DualChart); ;// CONCATENATED MODULE: ./src/VerticalChart.js var VerticalChart_ = src_VCore._; var VerticalChart_$ = src_VCore.$; /** * @extends BChart * @constructor */ function VerticalChart() { src_BChart.call(this); this.oxColMargin = 10; this.oxColWidth = 17; this.computedData.min = 0; this.computedData.max = 10; this.computedData.paddingAxisBottom = 0; this.computedData.oyUpdated = false; this.computedData.oy = {}; this.computedData.numberToFixed = 0; this.integerOnly = false; this.zeroOY = false; this.valueName = ''; this.keyName = ''; this.numberToString = this.numberToString || null; /** * * @type {string[]} */ this.keys = []; this.$oxLabelCtn = VerticalChart_('gcontainer.vc-ox-label-ctn'); this.$oyValueCtn = VerticalChart_('gcontainer.vc-oy-value-ctn'); this.$axisCtn = VerticalChart_('gcontainer.vc-axis-ctn'); this.$whiteMask = VerticalChart_({ tag: 'path', "class": 'vc-white-mask', attr: { fill: 'white', stroke: 'white', 'fill-rule': 'evenodd', d: 'M0,0 0,2000 2000,2000 2000,0zM100,0 0,200 200,200 200,0z' } }); /** * * @type {Axis} */ this.$axis = VerticalChart_('axis'); this.$oxySpace = VerticalChart_('gcontainer.vc-oxy-space'); /*** * * @type {HSC} */ this.$hscrollbar = VerticalChart_('hscrollbar').on('scroll', this.eventHandler.scrollOxySpace); this.$scrollArrow = VerticalChart_('scrollarrow').on('pressleft', this.eventHandler.scrollArrowsPressLeft).on('pressright', this.eventHandler.scrollArrowsPressRight); this.$scrollArrow.box.x = 10; this.$hscrollbar.height = 12; this.$valueName = VerticalChart_({ tag: 'text', "class": 'vc-value-name', attr: { y: 14, x: 5 }, child: { text: '' } }); this.$keyName = VerticalChart_({ tag: 'text', "class": 'vc-key-name', attr: { y: 14, x: 5 }, child: { text: '' } }); this.$oxySpace.addChild(this.$oxLabelCtn); this.$axisCtn.addChild(this.$oxySpace); this.$axisCtn.addChild(this.$whiteMask); this.$axisCtn.addChild(this.$axis); this.$axisCtn.addChild(this.$hscrollbar); this.$axisCtn.addChild(this.$scrollArrow); this.$axisCtn.addChild(this.$valueName); this.$axisCtn.addChild(this.$keyName); this.$oxLabels = []; this.$oyValues = []; this.$body.addChild(this.$axisCtn); this.$body.addChild(this.$oyValueCtn); } OOP/* default.mixClass */.ZP.mixClass(VerticalChart, src_BChart); VerticalChart.property = Object.assign({}, src_BChart.property); VerticalChart.eventHandler = Object.assign({}, src_BChart.eventHandler); VerticalChart.tag = 'VerticalChart'.toLowerCase(); VerticalChart.prototype.dataKeys = src_BChart.prototype.dataKeys.concat(['keys', 'zeroOY']); VerticalChart.render = function () { return src_BChart.render(); }; VerticalChart.prototype.computeMinMax = function () { this.computedData.min = 0; this.computedData.max = 10; }; /*** * * @param {Number}number * @returns {string} */ VerticalChart.prototype.numberToText = function (number) { return this.numberToString ? this.numberToString(number) : number.toFixed(this.computedData.numberToFixed); }; VerticalChart.prototype.computeData = function () { src_BChart.prototype.computeData.call(this); this.computeMinMax(); if (this.computedData.min >= this.computedData.max) { this.computedData.min = 0; this.computedData.max = 10; } if (this.computedData.min === this.computedData.max) { this.computedData.max += 1; } if (this.zeroOY) this.computedData.min = Math.min(this.computedData.min, 0); }; VerticalChart.prototype.mapOYValue = function (val) { return map(val, this.computedData.oy.minValue, this.computedData.oy.maxValue, 0, this.computedData.oyLength); }; VerticalChart.prototype._computeOYSegment = function () { var oyLength = this.$body.box.height - 20 - 10 - this.computedData.paddingAxisBottom; var valueNameHeight = this.$valueName.getBBox().height; if (valueNameHeight > 0) { oyLength -= valueNameHeight + 5; } var segment = calBeautySegment(Math.floor(oyLength / 30), this.computedData.min, this.computedData.max, this.integerOnly); if (segment && segment.segmentCount < 30 && segment.segmentCount >= 1) { if (segment.step !== this.computedData.oy.step || segment.segmentCount !== this.computedData.oy.segmentCount || segment.maxValue !== this.computedData.oy.maxValue || segment.minValue !== this.computedData.oy.minValue) { this.computedData.oy = segment; this.computedData.oyUpdated = false; this.computedData.numberToFixed = 0; if (segment.step < 1) this.computedData.numberToFixed++; if (segment.step < 0.1) this.computedData.numberToFixed++; if (segment.step < 0.01) this.computedData.numberToFixed++; if (segment.step < 0.001) this.computedData.numberToFixed++; if (segment.step < 0.0001) this.computedData.numberToFixed++; } } this.computedData.oyLength = oyLength; this.computedData.oySegmentLength = oyLength / segment.segmentCount; }; VerticalChart.prototype._createOxLabel = function () { var thisC = this; this.$oxLabelCtn.clearChild(); this.$oxLabels = this.keys.map(function (key) { var labelElt = VerticalChart_({ tag: 'text', "class": 'vc-ox-label', attr: { y: 15 }, child: { text: key } }); thisC.$oxLabelCtn.addChild(labelElt); return labelElt; }); this.computedData.oxLabelMaxWidth = this.$oxLabels.reduce(function (ac, elt) { return Math.max(ac, elt.getBBox().width); }, 0); this.$valueName.firstChild.data = this.valueName || ''; this.$keyName.firstChild.data = this.keyName || ''; }; VerticalChart.prototype._createOyValue = function () { this.computedData.oyUpdated = true; var segment = this.computedData.oy; var textElt; while (this.$oyValues.length < segment.segmentCount + 1) { textElt = VerticalChart_({ tag: 'text', "class": 'vc-oy-value', child: { text: '0' } }); this.$oyValues.push(textElt); this.$oyValueCtn.addChild(textElt); } while (this.$oyValues.length > segment.segmentCount + 1) { textElt = this.$oyValues.pop(); textElt.remove(); } for (var i = 0; i < this.$oyValues.length; ++i) { this.$oyValues[i].firstChild.data = this.numberToText(segment.minValue + i * segment.step); } }; VerticalChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createOxLabel(); }; VerticalChart.prototype._updateLabelPosition = function () { this.$oxLabelCtn.box.y = this.$body.box.height = 15; }; VerticalChart.prototype._updateOYValuePosition = function () { this._computeOYSegment(); if (!this.computedData.oyUpdated) { this._createOyValue(); } var y = this.$body.box.height - 20 + 6 - this.computedData.paddingAxisBottom; var valueElt; for (var i = 0; i < this.$oyValues.length; ++i) { valueElt = this.$oyValues[i]; valueElt.attr({ y: y, x: -10 }); y -= this.computedData.oySegmentLength; } var box = this.$oyValueCtn.getBBox(); this.$oyValueCtn.box.x = Math.max(box.width + 10, this.$valueName.getBBox().width - 5); }; VerticalChart.prototype.updateAxis = function () { var valueNameBox = this.$valueName.getBBox(); var valueNameHeight = valueNameBox.height; var keyNameWidth = this.$keyName.getBBox().width; this.$axisCtn.box.setPosition(this.$oyValueCtn.box.x, 0); this.$axisCtn.box.setSize(this.$body.box.width - this.$oyValueCtn.box.x, this.$body.box.height - 20); this.$keyName.attr({ y: this.$axisCtn.box.height - 10, x: this.$axisCtn.box.width }); this.$whiteMask.attr('d', 'M-300 -300 H' + (this.$axisCtn.box.width + 100) + ' V' + (this.$axisCtn.box.height + 600) + 'H -300z' + 'M0 0 H ' + (this.$axisCtn.box.width - keyNameWidth) + ' V ' + (this.$axisCtn.box.height + 300) + ' H 0z'); this.$axis.box.setPosition(0, this.$axisCtn.box.height); this.$axis.resize(this.$axisCtn.box.width - 8, this.$axisCtn.box.height - 5 - (valueNameHeight > 0 ? valueNameHeight + 5 : 0)); this.$oxySpace.box.setPosition(0, this.$axisCtn.box.height); this.computedData.oxLength = this.$axisCtn.box.width - 1 - keyNameWidth; this.computedData.oyLength = this.$axisCtn.box.height - 15 - (valueNameHeight > 0 ? valueNameHeight + 5 : 0) - this.computedData.paddingAxisBottom; this.$hscrollbar.box.y = this.$axisCtn.box.height - this.$hscrollbar.height; if (!this.style.getPropertyValue('--vc-require-width')) { this.addStyle('--vc-require-width', this.$axisCtn.box.x + this.contentPadding + this.$keyName.getBBox().width + 50 + 'px'); this.addStyle('--vc-require-height', this.box.height - this.$axisCtn.box.height + this.contentPadding * 2 + +this.computedData.paddingAxisBottom + this.$title.getBBox().height + 60 + 'px'); } }; VerticalChart.prototype._updateOxLabelPosition = function () { this.computedData.oxSegmentLength = this.computedData.oxLength / this.$oxLabels.length; this.computedData.oxSegmentLength = Math.max(this.oxColMargin + Math.max(this.oxColWidth, this.computedData.oxLabelMaxWidth), this.computedData.oxSegmentLength); var dx = this.computedData.oxSegmentLength; var x = this.computedData.oxSegmentLength / 2; for (var i = 0; i < this.$oxLabels.length; ++i) { this.$oxLabels[i].attr('x', x); x += dx; } this.computedData.oxScrollWidth = dx * this.$oxLabels.length - 1; this.computedData.oxOverFlow = this.computedData.oxScrollWidth > this.computedData.oxLength; this.$hscrollbar.outterWidth = this.computedData.oxLength; this.$hscrollbar.innerWidth = this.computedData.oxScrollWidth; this.$hscrollbar.width = this.computedData.oxLength; this.$hscrollbar.scrollLeft = Math.max(0, Math.min(this.$hscrollbar.scrollLeft, this.computedData.oxScrollWidth - this.computedData.oxLength)); this.$oxySpace.box.x = -this.$hscrollbar.scrollLeft; if (this.computedData.oxOverFlow) { this.$scrollArrow.removeStyle('display'); this.$scrollArrow.box.y = this.computedData.oyLength / 2; this.$scrollArrow.width = this.computedData.oxLength - 20; this._updateScrollArrowBtb(); } else { this.$scrollArrow.addStyle('display', 'none'); } this.$axis.oyDivision = this.computedData.oySegmentLength; this.$axis.updateOyDivision(); }; VerticalChart.prototype._updateScrollArrowBtb = function () { if (this.$hscrollbar.scrollLeft <= 0) { this.$scrollArrow.$left.addStyle('display', 'none'); } else { this.$scrollArrow.$left.removeStyle('display'); } if (this.$hscrollbar.scrollLeft >= this.$hscrollbar.innerWidth - this.$hscrollbar.outterWidth) { this.$scrollArrow.$right.addStyle('display', 'none'); } else { this.$scrollArrow.$right.removeStyle('display'); } }; VerticalChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._updateOYValuePosition(); this.updateAxis(); this._updateOxLabelPosition(); }; VerticalChart.eventHandler.scrollOxySpace = function () { this.$oxySpace.box.x = -this.$hscrollbar.scrollLeft; this._updateScrollArrowBtb(); }; VerticalChart.eventHandler.scrollArrowsPressLeft = function () { this.$hscrollbar.scrollLeft -= 10; this.eventHandler.scrollOxySpace(); }; VerticalChart.eventHandler.scrollArrowsPressRight = function () { this.$hscrollbar.scrollLeft += 10; this.eventHandler.scrollOxySpace(); }; src_VCore.install(VerticalChart); /* harmony default export */ const src_VerticalChart = (VerticalChart); ;// CONCATENATED MODULE: ./src/RangeChart.js var RangeChart_ = src_VCore._; var RangeChart_$ = src_VCore.$; /*** * @extends BChart * @constructor */ function RangeChart() { /** default config**/ this.valuePlotRadius = 10; this.minKeyWidth = 90; this.maxKeyWidthRatio = 1.5; this.limitLineLength = 40; this.lineHeight = 22; src_BChart.call(this); this.contentPadding = 0; /** data **/ this.integerOnly = false; this.zeroOY = false; this.ranges = []; this.valueName = ''; this.keyName = ''; this.maxText = 'Maximum'; this.minText = 'Minimum'; this.midText = 'Median'; this.normalText = 'Normal'; this.numberToString = this.numberToString || null; this.createStatic(); this.$oyValueCtn = RangeChart_$('gcontainer.vc-oy-value-ctn', this); this.$rangeCtn = RangeChart_$('.vc-range-ctn', this); this.$whiteMask = RangeChart_$('.vc-white-mask', this); this.$axisCtn = RangeChart_$('gcontainer.vc-axis-ctn', this); this.$axis = RangeChart_$('axis', this); this.$oxTable = RangeChart_$('gcontainer.vc-ox-table', this); this.$oxLabelCtn = RangeChart_$('gcontainer.vc-ox-label-ctn', this); this.$oxValueCtn = RangeChart_$('gcontainer.vc-ox-value-ctn', this); this.$valueName = RangeChart_$('text.vc-value-name', this); this.$keyName = RangeChart_$('text.vc-key-name', this); this.$oxySpace = RangeChart_$('.vc-oxy-space', this); this.$oyValues = []; /*** * * @type {ScrollArrow} */ this.$scrollArrow = RangeChart_$('scrollarrow', this).on('pressleft', this.eventHandler.scrollArrowsPressLeft).on('pressright', this.eventHandler.scrollArrowsPressRight); this.$hscrollbar = RangeChart_$('hscrollbar', this).on('scroll', this.eventHandler.scrollOxySpace); this.$hscrollbar.height = 12; this.$hscrollbar.box.y = -11; this.sync = new Promise(function (resolve) { this.$attachhook.once('attached', resolve); }.bind(this)); } OOP/* default.mixClass */.ZP.mixClass(RangeChart, src_BChart); RangeChart.property = Object.assign({}, src_VerticalChart.property); RangeChart.eventHandler = Object.assign({}, src_VerticalChart.eventHandler); RangeChart.tag = 'RangeChart'.toLowerCase(); RangeChart.render = function () { return src_BChart.render().addClass('range-chart').addClass('vc-range-chart'); }; RangeChart.prototype.createStatic = function () { RangeChart_({ elt: this.$body, child: [{ tag: 'gcontainer', "class": 'vc-axis-ctn', child: [{ tag: 'gcontainer', "class": 'vc-oxy-space', child: [{ tag: 'gcontainer', "class": 'vc-ox-table', child: ['gcontainer.vc-ox-label-ctn', 'gcontainer.vc-ox-value-ctn'] }, { tag: 'gcontainer', "class": 'vc-range-ctn' }] }, { tag: 'path', "class": 'vc-white-mask', attr: { fill: 'white', stroke: 'white', 'fill-rule': 'evenodd', d: 'M0,0 0,2000 2000,2000 2000,0zM100,0 0,200 200,200 200,0z' } }, 'gcontainer.vc-oy-value-ctn', 'axis', { tag: 'text', "class": 'vc-value-name', attr: { y: 14, x: 5 }, child: { text: '' } }, { tag: 'text', "class": 'vc-key-name', attr: { y: 14, x: 5 }, child: { text: '' } }, 'scrollarrow', 'hscrollbar'] }] }); }; RangeChart.prototype.normalizeData = function () { this.ranges.some(function (range) { if (isNumber(range.min) && isNumber(range.max)) { if (range.min > range.max) { console.error(range, "Violation: min > max"); return true; } else { if (isNumber(range.mid)) { if (range.mid < range.min || range.mid > range.max) { console.error(range, "Violation: mid < min or mid > max"); return true; } } } } return false; }); }; RangeChart.prototype.computeData = function () { // this.computedData this.computedData.hasMidValue = this.ranges.some(function (range) { return isNumber(range.mid); }); this.computedData.hasNormalValue = this.ranges.some(function (range) { return isNumber(range.normal); }); this.computedData.max = this.ranges.reduce(function (ac, range) { if (isNumber(range.max)) ac = Math.max(ac, range.max); if (isNumber(range.mid)) ac = Math.max(ac, range.mid); if (isNumber(range.min)) ac = Math.max(ac, range.min); if (isNumber(range.normal)) ac = Math.max(ac, range.normal); return ac; }, -Infinity); this.computedData.min = this.ranges.reduce(function (ac, range) { if (isNumber(range.max)) ac = Math.min(ac, range.max); if (isNumber(range.mid)) ac = Math.min(ac, range.mid); if (isNumber(range.min)) ac = Math.min(ac, range.min); if (isNumber(range.normal)) ac = Math.min(ac, range.normal); return ac; }, Infinity); if (this.computedData.min > this.computedData.max) { this.computedData.min = 0; this.computedData.max = 10; } if (this.zeroOY) { this.computedData.min = 0; } if (this.computedData.min === this.computedData.max) { this.computedData.max += 1; } }; RangeChart.prototype.mapOYValue = src_VerticalChart.prototype.mapOYValue; RangeChart.prototype._computeOYSegment = function () { var res = false; var segment = calBeautySegment(Math.floor(this.$axisCtn.box.height / 50), this.computedData.min, this.computedData.max, this.integerOnly); if (segment && segment.segmentCount < 30) { //error if (!this.computedData.oy || segment.step !== this.computedData.oy.step || segment.segmentCount !== this.computedData.oy.segmentCount || segment.maxValue !== this.computedData.oy.maxValue || segment.minValue !== this.computedData.oy.minValue) { this.computedData.oy = segment; this.computedData.oyUpdated = false; this.computedData.numberToFixed = 0; if (segment.step < 1) this.computedData.numberToFixed++; if (segment.step < 0.1) this.computedData.numberToFixed++; if (segment.step < 0.01) this.computedData.numberToFixed++; if (segment.step < 0.001) this.computedData.numberToFixed++; if (segment.step < 0.0001) this.computedData.numberToFixed++; res = true; } } this.computedData.oySegmentLength = this.$axisCtn.box.height / segment.segmentCount; return res; }; RangeChart.prototype._createNote = function () { var ctn = this.$noteCtn.clearChild(); var y0 = this.lineHeight / 2 + 1; var labelX = this.limitLineLength + 10; ctn.$maxLine = this._createLimitLine(0, y0, this.limitLineLength, 'max').addTo(ctn); ctn.$maxText = helper_text(this.maxText, labelX, y0 + 5).addTo(ctn); y0 += this.lineHeight; if (this.computedData.hasMidValue) { this._createLimitLine(0, y0, this.limitLineLength, 'mid').addTo(ctn); helper_text(this.midText, labelX, y0 + 5).addTo(ctn); y0 += this.lineHeight; } ctn.$minLine = this._createLimitLine(0, y0, this.limitLineLength, 'min').addTo(ctn); ctn.$minText = helper_text(this.minText, labelX, y0 + 5).addTo(ctn); if (this.computedData.hasNormalValue) { y0 += this.lineHeight; if (this.ranges[0].normal !== undefined) { circle(this.limitLineLength / 2, y0, this.valuePlotRadius, 'range-chart-value-plot').addTo(ctn); helper_text(this.normalText, labelX, y0 + 5).addTo(ctn); } } y0 += this.lineHeight / 2; ctn.box.setSize(ctn.getBBox().width + 7, y0); }; RangeChart.prototype._updateNotesPosition = function () { var box = this.$noteCtn.box; this.$noteCtn.box.setPosition(this.contentPadding, this.box.height - box.height - this.contentPadding); }; RangeChart.prototype.createOxTable = function () { var thisC = this; this.$oxValueCtn.clearChild(); var hasMidValue = this.computedData.hasMidValue; var hasNormalValue = this.computedData.hasNormalValue; var maxValueWidth = 0; this.$oxRangeCols = this.ranges.map(function (range, i, arr) { var ctn = RangeChart_({ tag: svg_GContainer.tag }); thisC.$oxValueCtn.addChild(ctn); var maxText = '"'; var midText = '"'; var minText = '"'; var normalText = '"'; var y0 = 17; if (isNumber(range.max)) maxText = thisC.numberToText(range.max); ctn.$maxText = RangeChart_({ tag: 'text', attr: { x: 0, y: y0 }, child: { text: maxText } }); ctn.addChild(ctn.$maxText); y0 += thisC.lineHeight; if (hasMidValue) { if (isNumber(range.mid)) midText = thisC.numberToText(range.mid); ctn.$midText = RangeChart_({ tag: 'text', attr: { x: 0, y: y0 }, child: { text: midText } }); ctn.addChild(ctn.$midText); y0 += thisC.lineHeight; } if (isNumber(range.min)) minText = thisC.numberToText(range.min); ctn.$minText = RangeChart_({ tag: 'text', attr: { x: 0, y: y0 }, child: { text: minText } }); ctn.addChild(ctn.$minText); if (hasNormalValue) { y0 += thisC.lineHeight; if (isNumber(range.normal)) normalText = thisC.numberToText(range.normal); ctn.$normalText = RangeChart_({ tag: 'text', attr: { x: 0, y: y0 }, child: { text: normalText } }); ctn.addChild(ctn.$normalText); } y0 += thisC.lineHeight / 2 - 5; var textWidth = ctn.getBBox().width; ctn.box.setSize(textWidth, y0); maxValueWidth = Math.max(maxValueWidth, textWidth); return ctn; }); this.computedData.maxValueWidth = maxValueWidth; if (this.$oxRangeCols.length > 0) this.$oxValueCtn.box.height = this.$oxRangeCols[0].box.height; }; RangeChart.prototype.createOxLabel = function () { var lineHeight = this.lineHeight; var ctn = this.$oxLabelCtn; var keyLimitWidth = Math.max(this.minKeyWidth, this.computedData.maxValueWidth * this.maxKeyWidthRatio); var keyMaxWidth = 0; ctn.clearChild(); this.$oxLabels = this.ranges.map(function (range) { var lines = wrapToLines(range.name, 14, keyLimitWidth); if (lines.length < 2) lines = [];else lines = lines.map(function (line, i) { return { tag: 'text', "class": 'vc-range-chart-label-line', attr: { x: '0', y: 17 + i * lineHeight + '' }, child: { text: line } }; }); var labelBlock = RangeChart_({ tag: svg_GContainer.tag, child: [{ tag: 'text', attr: { x: '0', y: 17 }, "class": lines.length >= 2 ? 'vc-range-chart-label-full' : 'vc-range-chart-label', child: { text: range.name } }].concat(lines) }).addTo(ctn); keyMaxWidth = Math.max(keyMaxWidth, labelBlock.getBBox().width); return labelBlock; }); this.computedData.keyMaxWidth = keyMaxWidth; }; RangeChart.prototype.createAxisName = function () { this.$valueName.firstChild.data = this.valueName; this.computedData.valueNameWidth = this.$valueName.getBBox().width; this.$keyName.firstChild.data = this.keyName; this.computedData.keyNameWidth = this.$keyName.getBBox().width; }; RangeChart.prototype.updateAxisX = function () { this.$axisCtn.box.x = Math.max(this.computedData.valueNameWidth, this.computedData.maxValueWidth + 5, this.$noteCtn.box.width); this.$axisCtn.box.width = this.$body.box.width - this.$axisCtn.box.x - 7 - this.computedData.keyNameWidth; this.$axis.resize(this.$axisCtn.box.width + this.computedData.keyNameWidth, 10); this.$keyName.attr('x', this.$axisCtn.box.width + 7 + this.computedData.keyNameWidth); this.$hscrollbar.width = this.$axisCtn.box.width; this.$hscrollbar.outterWidth = this.$axisCtn.box.width; }; RangeChart.prototype.updateOxTablePosition = function () { var requireMinWidth = (Math.max(this.computedData.keyMaxWidth, this.computedData.maxValueWidth) + 10) * this.ranges.length; var colWidth = Math.max(this.computedData.maxValueWidth + 10, this.$axisCtn.box.width / this.ranges.length); this.computedData.oxLabelWrap = requireMinWidth > this.$axisCtn.box.width; if (this.computedData.oxLabelWrap) { this.addClass('vc-ox-label-wrap'); } else { this.removeClass('vc-ox-label-wrap'); } colWidth = this.$oxLabels.reduce(function (ac, labelBlock) { return Math.max(ac, labelBlock.getBBox().width + 10); }, colWidth); this.$oxLabelCtn.box.height = this.$oxLabelCtn.getBBox().height + 5; this.$oxValueCtn.box.y = this.$oxLabelCtn.box.height; this.$oxValueCtn.box.height = this.$noteCtn.box.height; this.$oxLabels.forEach(function (labelBlock, i) { labelBlock.box.x = colWidth * (i + 0.5); }, 0); this.$oxRangeCols.forEach(function (colElt, i) { colElt.box.x = colWidth * (i + 0.5) + colElt.box.width / 2; }, 0); this.$oxTable.box.width = colWidth * this.ranges.length; this.$oxTable.box.height = this.$oxLabelCtn.box.height + this.$oxValueCtn.box.height; this.$axisCtn.box.y = this.$noteCtn.box.y - this.$body.box.y - this.$oxLabelCtn.box.height; this.$axisCtn.box.height = this.$axisCtn.box.y - 20; this.$scrollArrow.width = this.$axisCtn.box.width - 10; this.$scrollArrow.box.setPosition(5, -this.$axisCtn.box.height / 2); this.computedData.collWidth = colWidth; this.computedData.oyLength = this.$axisCtn.box.height; this.$hscrollbar.innerWidth = this.$oxTable.box.width; this._updateScrollArrowBtb(); if (!this.style.getPropertyValue('--vc-require-width')) { this.addStyle('--vc-require-width', this.$axisCtn.box.x + this.contentPadding + this.$keyName.getBBox().width + 50 + 'px'); this.addStyle('--vc-require-height', this.box.height - this.$axisCtn.box.height + this.contentPadding * 2 + this.$title.getBBox().height + 60 + 'px'); } ; }; RangeChart.prototype.updateAxisY = function () { this.$axis.resize(this.$axisCtn.box.width + this.computedData.keyNameWidth, this.$axisCtn.box.height + 10); this.$valueName.attr('y', -this.$axisCtn.box.height - 22); this.$whiteMask.attr('d', 'M' + (-this.$axisCtn.box.x - this.$body.box.x - 1) + ' ' + (-this.$axisCtn.box.y - this.$body.box.y) + ' h' + (this.box.width + 2) + 'v' + this.box.height + 'h' + (-this.box.width - 2) + 'z' + 'M0 ' + (-this.$axisCtn.box.height - 10) + 'h ' + this.$axisCtn.box.width + 'v' + (this.$axisCtn.box.height + this.$oxTable.box.height + 10) + ' H 0z'); }; RangeChart.prototype._updateScrollArrowBtb = src_VerticalChart.prototype._updateScrollArrowBtb; RangeChart.prototype._createOyValue = src_VerticalChart.prototype._createOyValue; RangeChart.prototype._updateOYValuePosition = function () { this._computeOYSegment(); if (!this.computedData.oyUpdated) { this._createOyValue(); } var y = 0; var valueElt; for (var i = 0; i < this.$oyValues.length; ++i) { valueElt = this.$oyValues[i]; valueElt.attr({ y: y + 5, x: -10 }); y -= this.computedData.oySegmentLength; } this.$axis.oyDivision = this.computedData.oySegmentLength; this.$axis.updateOyDivision(); }; RangeChart.prototype.createRanges = function () { var ctn = this.$rangeCtn; ctn.clearChild(); this.$ranges = this.ranges.map(function (range) { return this._createRange(range).addTo(ctn); }.bind(this)); }; RangeChart.prototype.updateRangesPosition = function () { var colWidth = this.computedData.collWidth; var thisC = this; this.$ranges.forEach(function (rangeElt, i) { var range = thisC.ranges[i]; rangeElt.box.x = colWidth * (i + 0.5); var yMin, yMax, yMid, yNormal; if (isNumber(range.min) && rangeElt.$minLine) { yMin = -thisC.mapOYValue(range.min); moveHLine(rangeElt.$minLine, -thisC.limitLineLength / 2, yMin, thisC.limitLineLength); } if (isNumber(range.max) && rangeElt.$maxLine) { yMax = -thisC.mapOYValue(range.max); moveHLine(rangeElt.$maxLine, -thisC.limitLineLength / 2, yMax, thisC.limitLineLength); } if (isNumber(range.mid) && rangeElt.$midLine) { yMid = -thisC.mapOYValue(range.mid); moveHLine(rangeElt.$midLine, -thisC.limitLineLength / 2, yMid, thisC.limitLineLength); } if (isNumber(range.normal) && rangeElt.$plot) { yNormal = -thisC.mapOYValue(range.normal); rangeElt.$plot.attr('cy', yNormal); } if (isNumber(range.min) && isNumber(range.max)) { rangeElt.$rect.attr({ x: -thisC.limitLineLength / 2, y: yMax, height: yMin - yMax, width: thisC.limitLineLength }); } }); }; RangeChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this.createOxTable(); this.createOxLabel(); this.createAxisName(); this.createRanges(); }; RangeChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this.updateAxisX(); this.updateOxTablePosition(); this.updateAxisY(); this._updateOYValuePosition(); this.updateRangesPosition(); }; RangeChart.prototype._createLimitLine = function (x, y, length, eClss) { return hline(x, y, length, ['range-chart-limit-line'].concat(eClss ? [eClss] : [])); }; RangeChart.prototype.numberToText = src_VerticalChart.prototype.numberToText; /*** * * @param range * @return {GContainer} * @private */ RangeChart.prototype._createRange = function (range) { var res = RangeChart_({ tag: svg_GContainer.tag }); if (isNumber(range.max) && isNumber(range.min)) res.$rect = RangeChart_('rect.vc-range-rect').addTo(res); if (isNumber(range.max)) res.$maxLine = this._createLimitLine(-this.limitLineLength / 2, 0, this.limitLineLength, 'max').addTo(res); if (isNumber(range.mid)) res.$midLine = this._createLimitLine(-this.limitLineLength / 2, 0, this.limitLineLength, 'mid').addTo(res); if (isNumber(range.min)) res.$minLine = this._createLimitLine(-this.limitLineLength / 2, 0, this.limitLineLength, 'min').addTo(res); if (isNumber(range.normal)) res.$plot = circle(0, 0, this.valuePlotRadius, 'range-chart-value-plot').addTo(res); return res; }; src_VCore.install(RangeChart); src_VCore.install('ostickchart', function () { return RangeChart_('rangechart.base-chart.o-stick-chart', true); }); ;// CONCATENATED MODULE: ./src/AssessmentChart.js var AssessmentChart_ = src_VCore._; var AssessmentChart_$ = src_VCore.$; /*** * or RadaChart * @extends BChart * @constructor */ function AssessmentChart() { src_BChart.call(this); this.rangePlotRadius = 5; //? not display this.rangeFillColor = null; this.rangeFillColor = null; this.rangeMaxStrokeColor = Color/* default.parse */.Z.parse('rgba(255, 150, 0, 0.3)'); this.rangeMinStrokeColor = Color/* default.parse */.Z.parse('rgba(200, 200, 0, 0.3)'); /** * * @type {{values:number[], name: string, stroke: Color|string, fill:Color|string, color:Color|string}[]} */ this.areas = []; this.ranges = []; /*** * * @type {string[]} */ this.keys = []; this.levels = []; /*** * * @type {null|[]} */ this.axisWeight = null; /*** * * @type {GContainer} */ this.$netCtn = AssessmentChart_('gcontainer.vc-assessment-net-ctn'); this.$netCtn = AssessmentChart_('gcontainer.vc-assessment-net-ctn'); this.$body.addChild(this.$netCtn); this.$netCtn.box.setPosition(200, 200); this.$axisCnt = AssessmentChart_('gcontainer.vc-assessment-axis-ctn'); this.$levelValueCnt = AssessmentChart_('gcontainer.vc-assessment-axis-level-ctn'); this.$levelCnt = AssessmentChart_('gcontainer.vc-assessment-level-ctn'); this.$areaCtn = AssessmentChart_('gcontainer.vc-assessment-area-ctn'); this.$rangeCtn = AssessmentChart_('gcontainer.vc-assessment-range-ctn'); this.$netCtn.addChild(this.$levelCnt); this.$netCtn.addChild(this.$axisCnt); this.$netCtn.addChild(this.$rangeCtn); this.$netCtn.addChild(this.$areaCtn); this.$netCtn.addChild(this.$levelValueCnt); } OOP/* default.mixClass */.ZP.mixClass(AssessmentChart, src_BChart); AssessmentChart.property = Object.assign({}, src_BChart.property); AssessmentChart.eventHandler = Object.assign({}, src_BChart.eventHandler); AssessmentChart.tag = 'AssessmentChart'.toLowerCase(); AssessmentChart.render = function () { return src_BChart.render().addClass('vc-assessment-chart'); }; AssessmentChart.prototype.dataKeys = ['title', 'simpleMode ', 'keys ', 'rangeFillColor']; AssessmentChart.prototype.normalizeData = function () { var thisC = this; // fill: area.fill || this.autoColor(i, 0.3), // stroke: area.stroke || this.autoColor(i, 0.8), this.areas.forEach(function (area, i) { var color = area.color || area.stroke || area.fill || thisC.autoColor(i); color = Color/* default.parse */.Z.parse(color + ''); color.rgba[3] = 1; var strokeColor = color.clone(); strokeColor.rgba[3] = 0.8; var filColor = color.clone(); filColor.rgba[3] = 0.3; if (area.color) { area.fill = area.fill || filColor; area.stroke = area.stroke || strokeColor; } else { if (area.stroke) { area.fill = area.fill || 'none'; } else if (area.fill) { area.stroke = area.stroke || 'none'; } else { area.fill = filColor; area.stroke = strokeColor; } area.color = color; } }); }; AssessmentChart.prototype.computeNotes = function () { return this.areas.map(function (area) { return { type: 'stroke', color: area.color, text: area.name }; }).filter(function (it) { return !!it.text; }); }; AssessmentChart.prototype._createAxis = function () { this.$axisCnt.clearChild(); this.$axisLines = this.keys.map(function (u, i) { var res = AssessmentChart_('hlinearrow'); res.resize(200); res.attr('transform', rotate(-90 + i * 360 / this.keys.length)); res.addTo(this.$axisCnt); return res; }.bind(this)); this.$axisNames = this.keys.map(function (key, i, arr) { var anchor = 'start'; if (i === 0 || i === arr.length / 2) anchor = 'middle';else if (i > arr.length / 2) anchor = 'end'; return AssessmentChart_({ tag: 'text', attr: { x: 0, y: 0 }, style: { textAnchor: anchor }, child: { text: key } }).addTo(this.$axisCnt); }.bind(this)); this.$levelCnt.clearChild(); this.$levels = this.levels.map(function (level, i, levels) { return AssessmentChart_('path.vc-assessment-chart-level' + (i + 1 == levels.length ? '.last' : '')).addTo(this.$levelCnt); }.bind(this)); this.computedData.axisNameSize = this.$axisNames.map(function (elt) { var box = elt.getBBox(); return { width: box.width, height: box.height }; }); this.$levelValueCnt.clearChild(); this.$levelValues = this.levels.map(function (level) { return this._createLevelValue(level).addTo(this.$levelValueCnt); }.bind(this)); }; AssessmentChart.prototype._createAreas = function () { this.$areaCtn.clearChild(); this.$areas = this.areas.map(function (area, i, arr) { return AssessmentChart_('path.vc-assessment-chart-area').addTo(this.$areaCtn).addStyle({ fill: area.fill, stroke: area.stroke }); }.bind(this)); }; AssessmentChart.prototype._createRanges = function () { this.$rangeCtn.clearChild(); if (this.ranges && this.ranges.length > 0) { this.$rangeArea = AssessmentChart_('shape.vc-assessment-chart-range-area').addStyle('fill-rule', "evenodd").addTo(this.$rangeCtn); if (this.rangeFillColor) { var rangeFillColor = Color/* default.parse */.Z.parse(this.rangeFillColor + ''); rangeFillColor.rgba[3] = 0.3; this.$rangeArea.addStyle({ fill: rangeFillColor.toString() }); } this.$ranges = this.ranges.map(function (range, i, arr) { return this._createRangeLine().addTo(this.$rangeCtn); }.bind(this)); this.$rangeMax = AssessmentChart_('shape.vc-assessment-chart-range-area-stroke').addTo(this.$rangeCtn).addStyle({ stroke: this.rangeMaxStrokeColor || 'rgba(255, 150, 0, 0.3)' }); this.$rangeMin = AssessmentChart_('shape.vc-assessment-chart-range-area-stroke').addTo(this.$rangeCtn).addStyle({ stroke: this.rangeMinStrokeColor || 'rgba(200, 200, 0, 0.3)' }); } }; AssessmentChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createAxis(); this._createRanges(); this._createAreas(); }; AssessmentChart.prototype._createLevelValue = function (value) { var res = AssessmentChart_('gcontainer.vc-assessment-chart-level-value'); res.$bound = rect(0, -6, 0, 13).attr({ rx: '4', ry: '4' }).addTo(res); res.$text = helper_text(value + '', 0, 4).attr({ 'text-anchor': 'middle' }).addTo(res); if (value === '' || value === undefined || value === null) res.addStyle('visibility', 'hidden'); return res; }; AssessmentChart.prototype.autoColor = function (index, alpha) { var hsla = [index / this.areas.length, 0.8, 0.5, alpha === undefined ? 1 : alpha]; var c = Color/* default.fromHSLA */.Z.fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]); return c.toString('rgba'); }; AssessmentChart.prototype.mapAngle = function (i, deg) { return (-90 + i * 360 / this.keys.length) * (deg ? 1 : Math.PI / 180); }; AssessmentChart.prototype.mapRadius = function (level) { return this.computedData.axisLength * (level / (this.levels.length - 1)); }; AssessmentChart.prototype.mapLevel = function (value) { if (this.isMappingLevel) { if (value < this.levelMappingArray[0]) return map(value, this.levelMappingArray[0], this.levelMappingArray[1], 0, 1); if (value > this.levelMappingArray[this.levels.length - 1]) return map(value, this.levelMappingArray[this.levels.length - 2], this.levelMappingArray[this.levels.length - 1], 0, 1); for (var i = 1; i < this.levels.length; ++i) { if (value >= this.levelMappingArray[i - 1] && value <= this.levelMappingArray[i]) return map(value, this.levelMappingArray[i - 1], this.levelMappingArray[i], i - 1, i); } } else { return value; } }; AssessmentChart.prototype._createRangeLine = function () { var res = AssessmentChart_({ tag: 'g', "class": 'vc-assessment-chart-range-segment' }); res.$min = circle(0, 0, this.rangePlotRadius, 'vc-assessment-chart-range-plot').addTo(res); res.$max = circle(0, 0, this.rangePlotRadius, 'vc-assessment-chart-range-plot').addTo(res); res.$line = AssessmentChart_('path.vc-assessment-chart-range-line').addTo(res); return res; }; /** * @param {Array<Rectangle>} rects * @returns {Rectangle} */ AssessmentChart.prototype._expectSize = function (rects, r) { var cr = new Math_Rectangle/* default */.Z(0, 0, 0, 0); var rect; for (var i = 0; i < rects.length; ++i) { var angle = Math.PI * 2 * i / rects.length - Math.PI / 2; rect = rects[i]; if (i == 0) { rect.x = rect.width / 2; rect.y = -rect.height - r - 7; } else if (rects.length % 4 == 0 && i == rects.length >> 2) { rect.x = r; rect.y = rect.height / 2; } else if (rects.length % 4 == 0 && i == (rects.length >> 2) * 3) { rect.x = -r - rect.width; rect.y = rect.height / 2; } else if (rects.length % 2 == 0 && i == rects.length >> 1) { rect.x = rect.width / 2; rect.y = r + 7; } else if (i < rects.length / 4) { rect.x = r * Math.cos(angle); rect.y = r * Math.sin(angle) - rect.height; } else if (i < rects.length / 2) { rect.x = r * Math.cos(angle); rect.y = r * Math.sin(angle); } else if (i < rects.length / 4 * 3) { rect.x = r * Math.cos(angle) - rect.width; rect.y = r * Math.sin(angle); } else { rect.x = r * Math.cos(angle) - rect.width; rect.y = r * Math.sin(angle) - rect.height; } cr = cr.merge(rect); } return cr; }; AssessmentChart.prototype._computedNetSize = function () { var rects = this.computedData.axisNameSize.map(function (box) { return new Math_Rectangle/* default */.Z(0, 0, box.width, box.height); }); var aWidth = this.$body.box.width; var aHeight = this.$body.box.height; var maxR = Math.min(aWidth, this.$body.box.height) / 2; var minR = 20; // while (maxR - minR > 3) { var midR = (minR + maxR) / 2; var size = this._expectSize(rects, midR); if (size.width < aWidth && size.height < aHeight) { minR = midR; } else { maxR = midR; } } this.computedData.expectedSize = this._expectSize(rects, minR); this.computedData.expectedRadius = minR; this.computedData.axisLength = this.computedData.expectedRadius - 30; }; AssessmentChart.prototype._updateAxisPosition = function () { var axisLength = this.computedData.axisLength; this.$axisLines.forEach(function ($axisLine) { $axisLine.resize(axisLength + 20); }.bind(this)); if (this.axisWeight && this.axisWeight.forEach) { this.axisWeight.forEach(function (value, i) { var axisLineElt = this.$axisLines[i]; if (axisLineElt) { if (value >= 0) { axisLineElt.addStyle('strokeWidth', value + ''); } else { axisLineElt.remove('strokeWidth'); } } }.bind(this)); } this.$axisNames.forEach(function ($axisName, i) { var angle = (-90 + i * 360 / this.keys.length) * Math.PI / 180; var x = (axisLength + 30) * Math.cos(angle); var y = (axisLength + 30) * Math.sin(angle) + 5; if (this.keys.length % 2 == 0 && i == this.keys.length >> 1) { y += 7; } else if (i == 0) { y -= 7; } $axisName.attr({ x: x, y: y }); }.bind(this)); this.$levels.forEach(function ($level, level) { var points = this.keys.reduce(function (ac, value, i) { var angle = this.mapAngle(i); var x = this.mapRadius(level) * Math.cos(angle); var y = this.mapRadius(level) * Math.sin(angle); ac.push(x + ' ' + y); return ac; }.bind(this), []); var d = 'M' + points.join('L') + 'Z'; $level.attr('d', d); }.bind(this)); var levelValueWidth = this.$levelValues.reduce(function (w, $levelValue) { return Math.max(w, $levelValue.$text.getBBox().width + 4); }, 0); if (this.mapRadius(1) - this.mapRadius(0) > 13) { this.$levelValues.forEach(function ($levelValue, i) { $levelValue.$bound.attr({ x: -levelValueWidth / 2, width: levelValueWidth }); $levelValue.attr('transform', translate(0, -this.mapRadius(i))); }.bind(this)); } else { this.$levelValues.forEach(function ($levelValue, i) { $levelValue.addStyle('display', 'none'); }.bind(this)); } var contentBound = new Math_Rectangle/* default */.Z(0, 0, this.$body.box.width, this.$body.box.height); var centerBound = contentBound.centerPoint(); this.$netCtn.box.setPosition(centerBound.x + (-this.computedData.expectedSize.x - this.computedData.expectedSize.width / 2), centerBound.y + (-this.computedData.expectedSize.y - this.computedData.expectedSize.height / 2)); }; AssessmentChart.prototype._updateAreaPosition = function () { this.$areas.forEach(function ($area, i) { var area = this.areas[i]; var points = area.values.reduce(function (ac, value, i) { var angle = this.mapAngle(i); var level = this.mapLevel(value); var x = this.mapRadius(level) * Math.cos(angle); var y = this.mapRadius(level) * Math.sin(angle); ac.push(x + ' ' + y); return ac; }.bind(this), []); var d = 'M' + points.join('L') + 'Z'; $area.attr('d', d); if (typeof area.strokeWidth == "number") { $area.addStyle('stroke-width', area.strokeWidth + ''); } }.bind(this)); }; AssessmentChart.prototype._updateRangePosition = function () { if (this.ranges && this.ranges.length > 0) { this.$ranges.forEach(function ($range, i) { var range = this.ranges[i]; var angle = this.mapAngle(i); var levelMax = this.mapLevel(range[1]); var xMax = this.mapRadius(levelMax) * Math.cos(angle); var yMax = this.mapRadius(levelMax) * Math.sin(angle); $range.$max.attr({ cx: xMax, cy: yMax }); var levelMin = this.mapLevel(range[0]); var xMin = this.mapRadius(levelMin) * Math.cos(angle); var yMin = this.mapRadius(levelMin) * Math.sin(angle); $range.$min.attr({ cx: xMin, cy: yMin }); $range.$line.attr('d', 'M' + xMin + ' ' + yMin + 'L' + xMax + ' ' + yMax); }.bind(this)); this.$rangeArea.begin(); this.$rangeMax.begin(); this.$rangeMin.begin(); this.ranges.forEach(function (range, i, arr) { var angle = this.mapAngle(i); var levelMax = this.mapLevel(range[1]); var xMax = this.mapRadius(levelMax) * Math.cos(angle); var yMax = this.mapRadius(levelMax) * Math.sin(angle); if (i == 0) { this.$rangeArea.moveTo(xMax, yMax); this.$rangeMax.moveTo(xMax, yMax); } else { this.$rangeArea.lineTo(xMax, yMax); this.$rangeMax.lineTo(xMax, yMax); } if (i + 1 == arr.length) { this.$rangeArea.closePath(); this.$rangeMax.closePath(); } }.bind(this)); this.ranges.forEach(function (range, i, arr) { var angle = this.mapAngle(i); var levelMax = this.mapLevel(range[0]); var xMin = this.mapRadius(levelMax) * Math.cos(angle); var yMin = this.mapRadius(levelMax) * Math.sin(angle); if (i == 0) { this.$rangeArea.moveTo(xMin, yMin); this.$rangeMin.moveTo(xMin, yMin); } else { this.$rangeArea.lineTo(xMin, yMin); this.$rangeMin.lineTo(xMin, yMin); } if (i + 1 == arr.length) { this.$rangeArea.closePath(); this.$rangeMin.closePath(); } }.bind(this)); this.$rangeMax.end(); this.$rangeMin.end(); this.$rangeArea.end(); } }; AssessmentChart.prototype._updatePrintViewport = function () { var children = Array.prototype.slice.call(this.childNodes); var bound = children.reduce(function (ac, cr) { var bbox = cr.getBBox(); if (bbox.width === 0 || bbox.height === 0) return ac; var rect = getGlobalBBox(cr); if (!ac) return rect; return ac.merge(rect); }, null); if (bound) { this.attr('data-print-view-box', Math.floor(bound.x) - 0.5 + ' ' + (Math.floor(bound.y) - 0.5) + ' ' + Math.ceil(bound.width + 1) + ' ' + Math.ceil(bound.height + 1)); } else this.attr('data-print-view-box', null); }; AssessmentChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._computedNetSize(); this._updateAxisPosition(); this._updateAreaPosition(); this._updateRangePosition(); this._updatePrintViewport(); }; AssessmentChart.prototype.updateContent = function () { this.prepareData(); src_BChart.prototype.updateContent.call(this); }; AssessmentChart.prototype.prepareData = function () { this.levelMappingArray = this.levels.map(function (value) { return parseFloat(value + ''); }); this.isMappingLevel = this.levelMappingArray.reduce(function (ac, cr) { return ac && !isNaN(cr); }, true); }; AssessmentChart.property.simpleMode = { set: function set(value) { if (value) this.addClass('simple-mode');else this.removeClass('simple-mode'); }, get: function get() { return this.containsClass('simple-mode'); } }; AssessmentChart.property.rangeSegment = { set: function set(value) { if (value) this.addClass('show-range-segment');else this.removeClass('show-range-segment'); }, get: function get() { return this.containsClass('show-range-segment'); } }; src_VCore.install(AssessmentChart); /* harmony default export */ const src_AssessmentChart = (AssessmentChart); ;// CONCATENATED MODULE: ./src/ColumnChart.js var ColumnChart_ = src_VCore._; var ColumnChart_$ = src_VCore.$; /*** * * @returns {VerticalChart} * @constructor */ function ColumnChart() { src_VerticalChart.call(this); this.values = []; this.$columnCtn = ColumnChart_('gcontainer.vc-column-ctn'); this.$oxySpace.addChild(this.$columnCtn); if (!this.numberToString) this.numberToString = function (value) { return numberToString.apply(this, arguments); }; } ColumnChart.property = Object.assign({}, src_VerticalChart.property); ColumnChart.eventHandler = Object.assign({}, src_VerticalChart.eventHandler); OOP/* default.mixClass */.ZP.mixClass(ColumnChart, src_VerticalChart); ColumnChart.tag = 'ColumnChart'.toLowerCase(); ColumnChart.render = function () { return src_VerticalChart.render().addClass('vc-column-chart'); }; ColumnChart.prototype.dataKeys = src_VerticalChart.prototype.dataKeys.concat(['values', 'oxColWidth']); ColumnChart.prototype.computeMinMax = function () { this.computedData.min = this.values.filter(isNumber).reduce(function (ac, cr) { return Math.min(ac, cr); }, 1000000000); this.computedData.max = this.values.filter(isNumber).reduce(function (ac, cr) { return Math.max(ac, cr); }, -1000000000); }; ColumnChart.prototype.createContent = function () { src_VerticalChart.prototype.createContent.call(this); this._createColumns(); }; ColumnChart.prototype._createColumn = function (value, i, color) { var res = ColumnChart_('gcontainer.vc-column'); res.$rect = rect(-this.oxColWidth / 2, 0, this.oxColWidth, 10).addTo(res); if (value === 0) { res.addClass('vc-value-zero'); } res.$value = helper_text(this.numberToString(value) + '', 0, 0).attr('text-anchor', 'middle').addTo(res); if (color) { res.$rect.addStyle('fill', color); } return res; }; ColumnChart.prototype._createColumns = function () { this.$columnCtn.clearChild(); this.$columnes = this.values.map(function (value, i) { return this._createColumn(value, i, this.columnColors && this.columnColors[i]).addTo(this.$columnCtn); }.bind(this)); }; ColumnChart.prototype.updateBodyPosition = function () { src_VerticalChart.prototype.updateBodyPosition.call(this); this._updateColumnPosition(); }; ColumnChart.prototype._updateColumnPosition = function () { this.$columnes.forEach(function ($column, i) { if (isNumber(this.values[i])) { $column.removeStyle('display'); var height = this.mapOYValue(this.values[i]); // x: (i + 0.5) * this.oxSegmentLength - this.columnWidth / 2 $column.$rect.attr({ height: height, y: -height }); $column.$value.attr('y', -height - 4); $column.attr({ transform: translate((i + 0.5) * this.computedData.oxSegmentLength, 0) }); } else { $column.addStyle('display', 'none'); } }.bind(this)); }; src_VCore.install(ColumnChart); /* harmony default export */ const src_ColumnChart = (ColumnChart); ;// CONCATENATED MODULE: ./src/ColumnAreaChart.js var ColumnAreaChart_ = src_VCore._; var ColumnAreaChart_$ = src_VCore.$; /*** * @extends ColumnChart * @constructor */ function ColumnAreaChart() { src_ColumnChart.call(this); this.$areaCtn = ColumnAreaChart_('gcontainer.vc-area-ctn'); this.$oxySpace.addChildBefore(this.$areaCtn, this.$columnCtn); this.areas = []; } OOP/* default.mixClass */.ZP.mixClass(ColumnAreaChart, src_ColumnChart); ColumnAreaChart.property = Object.assign({}, src_ColumnChart.property); ColumnAreaChart.eventHandler = Object.assign({}, src_ColumnChart.eventHandler); ColumnAreaChart.tag = 'ColumnAreaChart'.toLowerCase(); ColumnAreaChart.render = function () { return src_ColumnChart.render().addClass('vc-column-area-chart'); }; ColumnAreaChart.prototype.dataKeys = src_ColumnChart.prototype.dataKeys.concat(['areas']); ColumnAreaChart.prototype.computeMinMax = function () { src_ColumnChart.prototype.computeMinMax.call(this); this.computedData.min = this.areas.reduce(function (minValue, area) { return area.values.filter(isNumber).reduce(function (minValue, value) { if (!isNumber(value)) return minValue; return Math.min(minValue, value); }, minValue); }, this.computedData.min); this.computedData.max = this.areas.reduce(function (maxValue, area) { return area.values.filter(isNumber).reduce(function (maxValue, value) { if (!isNumber(value)) return maxValue; return Math.max(maxValue, value); }, maxValue); }, this.computedData.max); }; ColumnAreaChart.prototype.computeNotes = function () { return this.areas.map(function (area) { return { text: area.name, type: 'rect', color: area.color }; }); }; ColumnAreaChart.prototype._createArea = src_DualChart.prototype._createArea; ColumnAreaChart.prototype._createAreaNote = src_DualChart.prototype._createAreaNote; ColumnAreaChart.prototype._createAreas = function () { this.$areaCtn.clearChild(); this.$areas = this.areas.map(function (area, i) { return this._createArea(area, area.color).addTo(this.$areaCtn); }.bind(this)); }; ColumnAreaChart.prototype.createContent = function () { src_ColumnChart.prototype.createContent.call(this); this._createAreas(); }; ColumnAreaChart.prototype._updateAreaPosition = function () {}; ColumnAreaChart.prototype.updateBodyPosition = function () { src_ColumnChart.prototype.updateBodyPosition.call(this); this._updateAreaPosition(); this._updateAreaPosition(); }; ColumnAreaChart.prototype._updateAreaPosition = function () { var oxSegmentLength = this.computedData.oxSegmentLength; this.$areas.map(function ($area, i) { var values = this.areas[i].values; var subAreas = getSubNumberArray(values); $area.begin(); subAreas.forEach(function (subArea) { var start = subArea.start; var values = subArea.values; if (values.length > 1) { $area.moveTo(oxSegmentLength * (start + 0.5), -1); for (var xi = 0; xi < values.length; ++xi) { $area.lineTo(oxSegmentLength * (start + xi + 0.5), -this.mapOYValue(values[xi])); } $area.lineTo(oxSegmentLength * (start + values.length - 1 + 0.5), -1); $area.closePath(); } else { $area.moveTo(oxSegmentLength * (start + 0.25), -1); $area.lineTo(oxSegmentLength * (start + 0.25), -this.mapOYValue(values[0])); $area.lineTo(oxSegmentLength * (start + 0.75), -this.mapOYValue(values[0])); $area.lineTo(oxSegmentLength * (start + 0.75), -1); $area.closePath(); } }.bind(this)); $area.end(); }.bind(this)); }; svg_Core.install(ColumnAreaChart); /* harmony default export */ const src_ColumnAreaChart = (ColumnAreaChart); ;// CONCATENATED MODULE: ./src/RangeGroupChart.js var RangeGroupChart_ = src_VCore._; var RangeGroupChart_$ = src_VCore.$; function RangeGroupChart() { var res = RangeGroupChart_('basechart', true); return res; } ; RangeGroupChart.prototype._createNote = function () { var res = RangeGroupChart_('g'); res.$maxLine = hline(0, 7, 40, ['range-group-chart-limit-line', 'max']).addTo(res); res.$maxText = helper_text(this.maxText, 50, 12).addTo(res); res.$minLine = hline(200, 7, 40, ['range-group-chart-limit-line', 'min']).addTo(res); res.$minText = helper_text(this.minText, 250, 12).addTo(res); return res; }; RangeGroupChart.prototype._createMember = function (member) { var res = RangeGroupChart_('g'); res.$plot = circle(this.plotRadius, 0, this.plotRadius, 'range-group-chart-plot').addTo(res); res.$value = helper_text(this.numberToString(member.value), this.plotRadius * 2 + 8, 5).addTo(res); res.$nameContainer = RangeGroupChart_('g').addTo(res).attr('transform', 'rotate(45)'); res.$name = helper_text(member.name, this.plotRadius, 10).addTo(res.$nameContainer); return res; }; RangeGroupChart.prototype._createRange = function (range) { var res = RangeGroupChart_('g'); res.$lineLeft = hline(0, 0, 0, 'range-group-chart-range-line').addTo(res); res.$lineRight = hline(0, 0, 0, 'range-group-chart-range-line').addTo(res); res.$maxLine = hline(10, -this.paddingnAxisBottom, this.rangePaddingH * 2, ['range-group-chart-limit-line', 'max']).addTo(res); res.$minLine = hline(10, -this.paddingnAxisBottom, this.rangePaddingH * 2, ['range-group-chart-limit-line', 'min']).addTo(res); res.$max = helper_text(this.numberToString(range.max), 0, 0).attr('text-anchor', 'middle').addTo(res); res.$min = helper_text(this.numberToString(range.min), 0, 0).attr('text-anchor', 'middle').addTo(res); res.$members = range.members.map(function (member) { return this._createMember(member).addTo(res); }.bind(this)); res.$name = helper_text(range.name, 0, 0).attr('text-anchor', 'middle').addTo(res); return res; }; RangeGroupChart.prototype.processMinMax = function () { this["super"](); this.maxValue = this.ranges.reduce(function (max, range) { return range.members.reduce(function (max, member, i) { return Math.max(max, member.value); }.bind(this), Math.max(max, range.max, range.normal)); }.bind(this), -1000000000); this.minValue = this.ranges.reduce(function (min, range) { return range.members.reduce(function (min, member) { return Math.min(min, member.value); }.bind(this), Math.min(min, range.min, range.normal)); }.bind(this), 1000000000); }; RangeGroupChart.prototype.preInit = function () { this["super"](); this.paddingnAxisBottom = 40; this.rangePaddingH = 10; this.plotRadius = 6; this.rangeMarginH = 10; this.memberMarginH = 5; }; RangeGroupChart.prototype.initBackComp = function () { this["super"](); this.$note = this._createNote().addTo(this); }; RangeGroupChart.prototype.updateBackComp = function () { var noteBBox = this.$note.getBBox(); this.$note.attr('transform', translate(0, this.canvasHeight - noteBBox.height - 5)); var x = 50 + this.$note.$maxText.getBBox().width + 40; moveHLine(this.$note.$minLine, x, 7, 40); this.$note.$minText.attr('x', x + 50); this.oxyBottom = this.canvasHeight - noteBBox.height - 30; this.memberNameHeight = this.$ranges.reduce(function (memberHeight, $range) { return $range.$members.reduce(function (memberHeight, $member) { return Math.max(memberHeight, $member.$nameContainer.getBBox().width / 1.4); }, memberHeight); }, 0); this.oxyBottom -= this.memberNameHeight + 25; this["super"](); }; RangeGroupChart.prototype.initComp = function () { this.$ranges = this.ranges.map(function (range) { return this._createRange(range).addTo(this.$content); }.bind(this)); }; RangeGroupChart.prototype.updateComp = function () { var memberWidth = this.$ranges.reduce(function (memberWidth, $range) { return $range.$members.reduce(function (memberWidth, $member) { return Math.max(memberWidth, $member.getBBox().width); }, memberWidth); }, 0); this.oxContentLength = this.$ranges.reduce(function (oxContentLength, $range, rangeIndex) { oxContentLength += this.rangeMarginH; var range = this.ranges[rangeIndex]; $range.attr('transform', translate(oxContentLength, 0)); var rangeWidth = $range.$members.reduce(function (rangeWidth, $member, memberIndex) { rangeWidth += this.memberMarginH; var member = range.members[memberIndex]; $member.attr('transform', translate(rangeWidth, 0)); $member.$plot.attr('cy', this.mapOYValue(member.value)); $member.$value.attr('y', this.mapOYValue(member.value) + 5); rangeWidth += memberWidth; rangeWidth += this.memberMarginH; return rangeWidth; }.bind(this), this.rangePaddingH) + this.rangePaddingH; moveHLine($range.$maxLine, 0, this.mapOYValue(range.max), rangeWidth); moveHLine($range.$minLine, 0, this.mapOYValue(range.min), rangeWidth); var rangeHeight = this.mapOYValue(range.max) - this.mapOYValue(range.min); moveVLine($range.$lineLeft, 0, this.mapOYValue(range.min), rangeHeight); moveVLine($range.$lineRight, rangeWidth, this.mapOYValue(range.min), rangeHeight); $range.$name.attr({ x: rangeWidth / 2, y: this.memberNameHeight + 25 }); oxContentLength += rangeWidth; $range.$max.attr({ x: rangeWidth / 2, y: this.mapOYValue(range.max) - 5 }); $range.$min.attr({ x: rangeWidth / 2, y: this.mapOYValue(range.min) + 15 }); oxContentLength += this.rangeMarginH; return oxContentLength; }.bind(this), 0); }; src_VCore.creator.rangegroupchart = RangeGroupChart; /* harmony default export */ const src_RangeGroupChart = ((/* unused pure expression or super */ null && (RangeGroupChart))); ;// CONCATENATED MODULE: ./src/CurveChart.js /** * * @returns {LineChart} * @constructor */ function CurveChart() {} CurveChart.tag = 'CurveChart'.toLowerCase(); CurveChart.render = function () { return src_VCore._('linechart', true); }; CurveChart.prototype.updateComp = function () { this.$lines.map(function ($line, i) { var line = this.lines[i]; $line.$plots.forEach(function ($plot, j) { var value = line.values[j]; $plot.attr({ cx: this.oxSegmentLength * (j + 0.5), cy: this.mapOYValue(value) }); }.bind(this)); var points = line.values.map(function (value, j) { var y = this.mapOYValue(value); var x = this.oxSegmentLength * (j + 0.5); return [x, y]; }.bind(this)); var d = autoCurve(points, 0.5, 0.000001); $line.$path.attr('d', d); }.bind(this)); }; src_VCore.creator.curvechart = CurveChart; /* harmony default export */ const src_CurveChart = ((/* unused pure expression or super */ null && (CurveChart))); ;// CONCATENATED MODULE: ./src/RankChart.js var RankChart_ = src_VCore._; var RankChart_$ = src_VCore.$; /*** * @extends BChart * @constructor */ function RankChart() { src_BChart.call(this); OOP/* default.drillProperty */.ZP.drillProperty(this, this, 'numberToString', 'numberToText'); this.colors = ['transparent', 'rgb(201, 241, 253)', 'rgb(212, 227, 252)', 'rgb(218, 202, 251)', 'rgb(242, 201, 251)', 'rgb(255, 218, 216)', 'rgb(255, 236, 215)', 'rgb(254, 252, 224)', 'rgb(223, 237, 214)', 'rgb(77, 215, 250)', 'rgb(117, 169, 249)', 'rgb(139, 81, 245)', 'rgb(215, 87, 246)', 'rgb(255, 138, 132)', 'rgb(152, 165, 52)', 'rgb(254, 248, 160)', 'rgb(174, 221, 148)', 'rgb(0, 164, 221)', 'rgb(20, 100, 246)', 'rgb(156, 41, 183)']; this.computedData.oyUpdated = false; this.computedData.oy = {}; this.computedData.numberToFixed = 0; this.integerOnly = false; this.positions = []; this.valueName = ''; this.plotRadius = 9; this.zeroOY = true; this.extendOY = true; this.computedData.paddingAxisBottom = this.plotRadius + 30; this.$axisCtn = RankChart_({ tag: svg_GContainer.tag, "class": 'vc-axis-ctn', child: [{ tag: 'gcontainer', "class": 'vc-oxy-space', child: ['gcontainer.vc-ox-label-ctn', 'gcontainer.vc-rank-list-ctn'] }, { tag: 'path', "class": 'vc-white-mask', attr: { fill: 'white', stroke: 'white', 'fill-rule': 'evenodd', d: 'M0,0 0,2000 2000,2000 2000,0zM100,0 0,200 200,200 200,0z' } }, 'axis', { tag: 'text', "class": 'vc-key-name', attr: { y: 14, x: 5 }, child: { text: '' } }, 'scrollarrow', 'hscrollbar', { tag: 'text', "class": 'vc-value-name', attr: { y: 14, x: 5 }, child: { text: '' } }] }); this.$body.addChild(this.$axisCtn); this.$hscrollbar = RankChart_$('hscrollbar', this.$axisCtn).on('scroll', this.eventHandler.scrollOxySpace); this.$hscrollbar.height = 10; this.$scrollArrow = RankChart_$('scrollarrow', this.$axisCtn).on('pressleft', this.eventHandler.scrollArrowsPressLeft).on('pressright', this.eventHandler.scrollArrowsPressRight); this.$oxySpace = RankChart_$('gcontainer.vc-oxy-space', this.$axisCtn); this.$whiteMask = RankChart_$('.vc-white-mask', this.$axisCtn); this.$axis = RankChart_$('axis', this.$axisCtn); this.$keyName = RankChart_$('.vc-key-name', this.$axisCtn); this.$valueName = RankChart_$('.vc-value-name', this.$axisCtn); this.$oxLabelCtn = RankChart_$('gcontainer.vc-ox-label-ctn', this.$axisCtn); this.$oxLabels = []; this.$oyValueCtn = RankChart_('gcontainer.vc-oy-value-ctn').addTo(this.$body); this.$oyValues = []; this.$postion = []; this.$rankListCtn = RankChart_$('.vc-rank-list-ctn', this.$axisCtn); } RankChart.tag = 'RankChart'.toLowerCase(); RankChart.property = Object.assign({}, src_VerticalChart.property); RankChart.eventHandler = Object.assign({}, src_VerticalChart.eventHandler); OOP/* default.mixClass */.ZP.mixClass(RankChart, src_VerticalChart); RankChart.render = function () { return src_BChart.render().addClass('vc-rank-chart'); }; RankChart.prototype.updateBodyPosition = function () { this._isAutoWidth = this.style.width === 'auto'; if (this._isAutoWidth) this.addStyle('width', '450px'); src_VerticalChart.prototype.updateBodyPosition.call(this); this._updateOyDivision(); this._updatePosListPosition(); this._updateScrollerPosition(); if (this._isAutoWidth) { this._isAutoWidth = false; this.addStyle('width', this.contentPadding * 2 + this.$oyValueCtn.box.x + this.$hscrollbar.innerWidth + this.$keyName.getBBox().width + 10 + 'px'); this.updateBodyPosition(); } }; RankChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createOxLabel(); this._createPosList(); }; RankChart.prototype.computeData = src_VerticalChart.prototype.computeData; RankChart.prototype.computeMinMax = function () { var min = Infinity, max = -Infinity; this.positions.forEach(function (position) { position.ranks.forEach(function (rank) { min = Math.min(min, rank); max = Math.max(max, rank); }); }); this.computedData.min = min; this.computedData.max = max + 1; }; RankChart.prototype._createOxLabel = function () { this.$keyName.firstChild.data = this.valueName; this.$oxLabelCtn.clearChild(); this.$oxLabels = this.positions.map(function (position) { return RankChart_({ tag: 'text', "class": 'vc-ox-label', child: { text: position.name } }); }); this.$oxLabelCtn.addChild(this.$oxLabels); this.$valueName.firstChild.data = this.valueName || ''; }; RankChart.prototype._updateOxLabelPosition = function () { this.$oxLabelCtn.box.y = 20; }; RankChart.prototype._updateScrollerPosition = function () { this.computedData.oxOverFlow = this.computedData.oxScrollWidth > this.computedData.oxLength; this.$hscrollbar.outterWidth = this.computedData.oxLength; this.$hscrollbar.innerWidth = this.computedData.oxScrollWidth; this.$hscrollbar.width = Math.max(0, this.computedData.oxLength); // this.$hscrollbar.scrollLeft = Math.max(0, Math.min(this.$hscrollbar.scrollLeft, this.computedData.oxScrollWidth - this.computedData.oxLength)); this.$hscrollbar.scrollLeft = 0; if (this.computedData.oxOverFlow) { this.$scrollArrow.removeStyle('display'); this.$scrollArrow.box.y = this.computedData.oyLength / 2; this.$scrollArrow.width = this.computedData.oxLength - 20; this._updateScrollArrowBtb(); } else { this.$scrollArrow.addStyle('display', 'none'); } this.$axis.oyDivision = this.computedData.oySegmentLength; this.$axis.updateOyDivision(); }; RankChart.prototype._updateOyDivision = function (value) { this.$axis.oyDivision = this.computedData.oySegmentLength; this.$axis.oyPadding = this.computedData.paddingAxisBottom; this.$axis.updateOyDivision(); }; RankChart.prototype.mapOYValue = function (val) { return this.computedData.paddingAxisBottom + map(val, this.computedData.oy.minValue, this.computedData.oy.maxValue, 0, this.computedData.oyLength); }; RankChart.prototype._createRank = function (rank, value) { var res = RankChart_({ tag: 'g', "class": 'rank-chart-group', child: [{ tag: 'circle', "class": 'rank-chart-plot', attr: { cx: this.plotRadius, cy: 0, r: this.plotRadius }, style: { fill: this.colors[rank] } }, { tag: 'text', "class": 'rank-chart-plot-text', attr: { x: this.plotRadius, y: 5, 'text-anchor': 'middle' }, props: { innerHTML: rank + 1 + '' } }] }); res.attr('title', this.numberToString(value)); return res; }; RankChart.prototype.numberToString = function (num) { return num.toString(); }; RankChart.prototype._createPosition = function (position) { var res = RankChart_({ tag: svg_GContainer.tag }); res.$ranks = position.ranks.map(function (value, rank) { return this._createRank(rank, value); }.bind(this)); res.$rect = RankChart_({ tag: 'rect', "class": 'vc-rank-position-list-rect', attr: { x: '0', y: '0' } }); res.addChild(res.$rect).addChild(res.$ranks); return res; }; RankChart.prototype._createPosList = function () { this.$positions = this.positions.map(this._createPosition.bind(this)); this.$rankListCtn.clearChild().addChild(this.$positions); }; RankChart.prototype._updatePosListPosition = function () { var contentLength = this.$positions.reduce(function (contentLength, pe, positionIndex) { var position = this.positions[positionIndex]; contentLength = contentLength + 20; var maxDY = pe.$ranks.reduce(function (maxDY, meme, j) { var value = position.ranks[j]; var y = -this.mapOYValue(value); meme.attr('transform', translate(contentLength, y)); meme._tr_y = y; return Math.max(maxDY, -y); }.bind(this), 0); var valueElements = pe.$ranks.slice(); valueElements.sort(function (a, b) { return a._tr_y - b._tr_y; }); var ninf = -1000000; var messure = valueElements.reduce(function (ac, e) { var y = e._tr_y; var colIndex = 0; while (ac[colIndex].minY > y) { ++colIndex; } ac[colIndex].minY = y + 20; ac[colIndex].child.push(e); ac[colIndex].maxWidth = Math.max(ac[colIndex].maxWidth, e.getBBox().width); return ac; }, Array(200).fill(null).map(function () { return { minY: ninf, child: [], maxWidth: ninf }; })); messure.reduce(function (left, col) { if (col.child.length == 0) return; col.child.forEach(function (vale) { vale.attr('transform', translate(left, vale._tr_y)); }); return left + col.maxWidth + 9; }, 10); pe.$rect.addStyle('display', 'none'); var innerWidth = pe.getBBox().width; pe.$rect.removeStyle('display'); pe.$rect.attr({ width: innerWidth + 20, y: -maxDY - (this.plotRadius + 10), height: maxDY + this.plotRadius + 10 }); var columeWidth = Math.max(pe.getBBox().width + 20, this.$oxLabels[positionIndex].getBBox().width + 10); this.$oxLabels[positionIndex].attr('x', contentLength + columeWidth / 2); pe.box.x = contentLength + columeWidth / 2 - (innerWidth + 20) / 2; contentLength += columeWidth; return contentLength; }.bind(this), 9); this.computedData.oxScrollWidth = contentLength; }; src_VCore.install(RankChart); /* harmony default export */ const src_RankChart = ((/* unused pure expression or super */ null && (RankChart))); ;// CONCATENATED MODULE: ./src/SunburstChart.js var SunburstChart_ = src_VCore._; var SunburstChart_$ = src_VCore.$; /*** * @extends BChart * @constructor */ function SunburstChart() { src_BChart.call(this); this.$sunbirstCtn = SunburstChart_('gcontainer.vc-sunburst-ctn'); this.$body.addChild(this.$sunbirstCtn); this.root = {}; } SunburstChart.property = Object.assign({}, src_BChart.property); SunburstChart.eventHandler = Object.assign({}, src_BChart.eventHandler); OOP/* default.mixClass */.ZP.mixClass(SunburstChart, src_BChart); SunburstChart.tag = 'SunburstChart'.toLowerCase(); SunburstChart.render = function () { return src_BChart.render().addClass('vc-sunburst-chart'); }; SunburstChart.prototype._normalizeColorData = function () { var needAutoColor = []; this.acceptNode(this.root, function (node) { try { if (node.fillColor.rgba) return; var c = Color/* default.parse */.Z.parse(node.fillColor + ''); if (!node.fillColor.rgba) node.fillColor = c; } catch (error) { needAutoColor.push(node); } }); var aColors = generateBackgroundColors(needAutoColor.length); needAutoColor.forEach(function (node, i) { node.fillColor = aColors[i]; }); this.acceptNode(this.root, function (node) { try { if (node.textColor.rgba) return; var c = Color/* default.parse */.Z.parse(node.textColor + ''); if (!node.textColor.rgba) node.textColor = c; } catch (error) { node.textColor = node.fillColor.getContrastYIQ(); } }); }; SunburstChart.prototype.computeData = function () { this.computedData.depth = this.calDepth(this.root); }; SunburstChart.prototype._measureFan = function (r, R, as, ae) { var dn = 0; if (as < 0) { dn = Math.ceil(-as / (Math.PI * 2)); } else if (as >= Math.PI * 2) { dn = -Math.floor(as / (Math.PI * 2)); } as += Math.PI * 2 * dn; ae += Math.PI * 2 * dn; var cosS = Math.cos(as); var sinS = Math.sin(as); var cosE = Math.cos(ae); var sinE = Math.sin(ae); var A = new Math_Rectangle/* default */.Z(r * cosS, r * sinS, 0, 0); var B = new Math_Rectangle/* default */.Z(R * cosS, R * sinS, 0, 0); var C = new Math_Rectangle/* default */.Z(R * cosE, R * sinE, 0, 0); var D = new Math_Rectangle/* default */.Z(r * cosE, r * sinE, 0, 0); var points = [A, B, C, D]; var e90, cosE90, sinE90; for (var k = 0; k < 4; ++k) { e90 = k * Math.PI / 2; cosE90 = Math.cos(e90); sinE90 = Math.sin(e90); if (e90 > as && e90 < ae) { points.push(new Math_Rectangle/* default */.Z(r * cosE90, r * sinE90, 0, 0)); points.push(new Math_Rectangle/* default */.Z(R * cosE90, R * sinE90, 0, 0)); } } return points.reduce(function (ac, cr) { return ac.merge(cr); }); }; SunburstChart.prototype._measureSunburst = function (rFan) { var r0 = this.computedData.rootR; var rects = [new Math_Rectangle/* default */.Z(-r0, -r0, 2 * r0, 2 * r0)]; function visit($node) { var level = $node.level; var r = r0 + rFan * (level - 1); var R = r + rFan * $node.span; var fanRect = this._measureFan(r, R, $node.chartAngle[0], $node.chartAngle[1]); rects.push(fanRect); if ($node.$child) $node.$child.forEach(visit.bind(this)); } if (this.$root.$child) this.$root.$child.forEach(visit.bind(this)); return rects.reduce(function (ac, cr) { return ac.merge(cr); }); }; SunburstChart.prototype._findBestFanRadius = function () { var mid; var bound; var exi = 1; var aWidth = this.$body.box.width - 4; var aHeight = this.$body.box.height - 4; var h = (Math.max(aWidth, aHeight) - this.computedData.rootR - 2) / this.computedData.depth; var l = (Math.min(aWidth, aHeight) - this.computedData.rootR - 2) / this.computedData.depth / 2; mid = (l + h) / 2; while (l + exi < h) { bound = this._measureSunburst(mid); if (bound.width > aWidth || bound.height > aHeight) { h = mid; } else { l = mid; } mid = (l + h) / 2; } this.computedData.fanR = mid; }; SunburstChart.prototype.normalizeData = function () { src_BChart.prototype.normalizeData.call(this); this._normalizeColorData(); }; // SunburstChart.prototype.updateSize = BaseChart.prototype.updateSize; SunburstChart.prototype.acceptNode = function (node, visitFunction, content) { visitFunction(node, content); if (node.child) { node.child.forEach(function (cNode) { this.acceptNode(cNode, visitFunction, content); }.bind(this)); } }; SunburstChart.prototype._updateNodePosition = function () { var rootR = this.computedData.rootR; var fanR = this.computedData.fanR; function visit($node) { var r0 = rootR + ($node.level - 1) * fanR; var r1 = r0 + fanR * $node.span; var isLeftPath = ($node.chartAngle[1] + $node.chartAngle[0]) / 2 > Math.PI / 2; $node.$nameCtn.attr('transform', rotate(($node.chartAngle[1] + $node.chartAngle[0]) / 2 / Math.PI * 180 + (isLeftPath ? 180 : 0))); var textX = (isLeftPath ? -1 : 1) * (r0 + r1) / 2; if ((r0 + r1) / 2 * Math.abs($node.chartAngle[1] - $node.chartAngle[0]) < 15) { $node.$nameCtn.addStyle('visibility', 'hidden'); } else { // //todo: var nodeText = $node.data.name; var textColor = $node.textColor; // var words = nodeText.trim().split(/\s+/); var updateNodeSession = this.updateNodeSession; var tryText = function (nLine) { $node.$nameCtn.clearChild(); var wordPerLine = Math.ceil(words.length / nLine); var lines = words.reduce(function (ac, cr) { if (ac.top.length == 0) { ac.result.push(ac.top); } ac.top.push(cr); if (ac.top.length >= wordPerLine) ac.top = []; return ac; }, { result: [], top: [] }).result; lines.reduce(function (y, line) { var lineText = line.join(' '); $node.$nameCtn.addChild(helper_text(lineText, textX, y, 'vc-sunburst-node-name').attr('text-anchor', 'middle').addStyle('fill', textColor)); return y + 20; }, 5 - (nLine - 1) * 20 / 2); var box = $node.$nameCtn.getBBox(); var out = box.width + 8 > r1 - r0 || box.height > (r0 + r1) / 2 * Math.abs($node.chartAngle[1] - $node.chartAngle[0]); if (nLine < words.length && out) { tryText(nLine + 1); } else if (out) { $node.$nameCtn.addStyle('visibility', 'hidden'); } else { $node.$nameCtn.removeStyle('visibility', 'hidden'); } }.bind(this); tryText(1); } $node.$shape.begin().moveTo(r0 * Math.cos($node.chartAngle[0]), r0 * Math.sin($node.chartAngle[0])).arcTo(r0 * Math.cos($node.chartAngle[1]), r0 * Math.sin($node.chartAngle[1]), r0, r0, $node.chartAngle[1] - $node.chartAngle[0] > Math.PI ? 1 : 0, 1).lineTo(r1 * Math.cos($node.chartAngle[1]), r1 * Math.sin($node.chartAngle[1])).arcTo(r1 * Math.cos($node.chartAngle[0]), r1 * Math.sin($node.chartAngle[0]), r1, r1, $node.chartAngle[1] - $node.chartAngle[0] > Math.PI ? 1 : 0, 0).closePath().end(); if ($node.$child && $node.$child.length > 0) { $node.$child.forEach(visit.bind(this)); } } if (this.$root.$child && this.$root.$child.length > 0) { this.$root.$child.forEach(visit.bind(this)); } }; SunburstChart.prototype._updateSunburstPosition = function () { var ctnBox = this.$sunbirstCtn.getBBox(); var rootBox = this.$root.getBBox(); var x = this.$body.box.width / 2; var y = this.$body.box.height / 2; x -= ctnBox.x + ctnBox.width / 2 - (rootBox.x + rootBox.width / 2); y -= ctnBox.y + ctnBox.height / 2 - (rootBox.y + rootBox.height / 2); this.$sunbirstCtn.box.setPosition(x, y); }; SunburstChart.prototype._updatePrintViewport = function () { var children = Array.prototype.slice.call(this.childNodes); var bound = children.reduce(function (ac, cr) { var bbox = cr.getBBox(); if (bbox.width === 0 || bbox.height === 0) return ac; var rect = getGlobalBBox(cr); if (!ac) return rect; return ac.merge(rect); }, null); if (bound) { this.attr('data-print-view-box', Math.floor(bound.x) - 0.5 + ' ' + (Math.floor(bound.y) - 0.5) + ' ' + Math.ceil(bound.width + 1) + ' ' + Math.ceil(bound.height + 1)); } else this.attr('data-print-view-box', null); }; SunburstChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._findBestFanRadius(); this._updateNodePosition(); this._updateSunburstPosition(); this._updatePrintViewport(); }; SunburstChart.prototype._createRoot = function () { var rootWords = this.root.name.trim().split(/\s+/); var rectsPerLine = Math.ceil(Math.sqrt(rootWords.length) * Math.log10(7)); var lines = rootWords.reduce(function (ac, cr) { if (ac.top.length === 0) { ac.result.push(ac.top); } ac.top.push(cr); if (ac.top.length >= rectsPerLine) ac.top = []; return ac; }, { result: [], top: [] }).result; this.$root = SunburstChart_('g.vc-title').addTo(this.$sunbirstCtn); this.$root.$circle = circle(0, 0, 1).addTo(this.$root); this.$root.$circle.addStyle('fill', this.root.fillColor.toString('hex8')); this.$root.$lines = lines.map(function (line, i, arr) { return helper_text(line.join(' '), 0, -(arr.length * 15) / 2 + 12 + 15 * i).attr('text-anchor', 'middle').addTo(this.$root); }.bind(this)); var rootBox = this.$root.getBBox(); this.computedData.rootR = Math.sqrt(rootBox.width * rootBox.width + rootBox.height * rootBox.height) / 2 + 5; this.$root.$circle.attr('r', this.computedData.rootR); this.$root.data = this.root; this.$root.level = 0; this.$root.span = 1; this.$root.chartAngle = [-Math.PI / 2, -Math.PI / 2 + Math.PI * 2]; }; SunburstChart.prototype._createChild = function (fromElt) { var sum = fromElt.data.value; if (!fromElt.data.child || !(fromElt.data.child.length > 0)) return; fromElt.$child = fromElt.data.child.map(function (childData) { var fillColor = childData.fillColor; var res = SunburstChart_({ tag: 'g', "class": 'sunburst-chart-node', props: { data: childData, level: fromElt.level + (fromElt.data.span || 1), span: childData.span || 1, textColor: Color/* default.parse */.Z.parse(fillColor).getContrastYIQ().toString('rgb') } }); res.$title = SunburstChart_('<title>' + childData.name + ': ' + childData.value + '</title>').addTo(res); res.$shape = SunburstChart_({ tag: 'shape', "class": 'sunburst-chart-node-shape', style: { fill: fillColor } }).addTo(res); res.$nameCtn = SunburstChart_('g').addTo(res); return res.addTo(this.$sunbirstCtn); }.bind(this)); fromElt.$child.reduce(function (offset, $childNode) { $childNode.chartAngle = [map(offset, 0, sum, fromElt.chartAngle[0], fromElt.chartAngle[1]), map(offset + $childNode.data.value, 0, sum, fromElt.chartAngle[0], fromElt.chartAngle[1])]; this._createChild($childNode); return offset += $childNode.data.value; }.bind(this), 0); }; SunburstChart.prototype._createSunburst = function () { this.$sunbirstCtn.clearChild(); this._createRoot(); this._createChild(this.$root); }; SunburstChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createSunburst(); }; SunburstChart.prototype.calDepth = function (node) { if (node.child && node.child.length > 0) { return (node.span || 1) + Math.max.apply(Math, node.child.map(this.calDepth.bind(this))); } else return node.span || 1; }; src_VCore.creator.sunburstchart = SunburstChart; /* harmony default export */ const src_SunburstChart = ((/* unused pure expression or super */ null && (SunburstChart))); ;// CONCATENATED MODULE: ./src/SquareChart.js // vchart.creator.correlationchart = function () { // var _ = _; // var $ = vchart.$; // var res = _({ // tag: 'svg', // class: 'base-chart', // child: 'axis' // }, true); // res.$axis = $('axis', res); // res.sync = res.afterAttached(); // return res; // }; // vchart.creator.correlationchart.prototype.updateSize = vchart.creator.basechart.prototype.updateSize; // vchart.creator.correlationchart.prototype.update = function () { // this.updateSize(); // this.updateBackComp(); // this.updateAxis(); // this.updateComp(); // }; // vchart.creator.correlationchart.prototype.mapOXColumn = function (index) { // return this.oxyLeft + (index + 0.5) * this.oxSegmentLength; // }; // vchart.creator.correlationchart.prototype.mapOYValue = function (value) { // return this.oxyBottom - this.oyLength * value; // }; // vchart.creator.correlationchart.prototype.updateAxis = function () { // this.$axis.moveTo(this.oxyLeft, this.oxyBottom); // this.$axis.resize(this.canvasWidth - this.oxyLeft - 10, this.oxyBottom - 43); // this.$oyName.attr({ x: 3, y: 30 }); // this.$oxName.attr({ x: this.canvasWidth - 4, y: this.oxyBottom + 20 }); // }; // vchart.creator.correlationchart.prototype.initBackComp = function () { // this.$title = text(this.title, 0, 0, 'base-chart-title').attr('text-anchor', 'middle').addTo(this); // this.$oyName = text(this.valueName, 0, 0, 'base-chart-oxy-text').addTo(this); // this.$oxName = text(this.keyName, 0, 100, 'base-chart-oxy-text').attr('text-anchor', 'end').addTo(this); // this.$keyNames = this.keys.map(function (key) { // return text(key, 100, 100).attr('text-anchor', 'middle').addTo(this); // }.bind(this)); // }; // vchart.creator.correlationchart.prototype.updateBackComp = function () { // this.$title.attr({ x: this.canvasWidth / 2, y: 20 }); // this.oxyLeft = Math.max(20, this.$oyName.getBBox().width); // this.oxyBottom = this.canvasHeight - 10; // this.oxLength = this.canvasWidth - this.oxyLeft - 12 - this.$oxName.getBBox().width; // this.oxSegmentLength = this.oxLength / this.keys.length; // var oyNameHeight = this.$keyNames.reduce(function (ac, $keyName) { // return Math.max($keyName.getBBox().height); // }.bind(this), 0); // this.oxyBottom -= oyNameHeight; // this.oyLength = this.oxyBottom - 50; // this.$keyNames.forEach(function ($keyName, i) { // $keyName.attr({ x: this.mapOXColumn(i), y: this.oxyBottom + 20 }); // }.bind(this), 0); // }; // vchart.creator.correlationchart.prototype.initComp = function () { // this.$staticVLines = this.staticValues.map(function (value, i) { // return vline(0, 0, 0, ['correlation-chart-normal-line', 'static']).addTo(this); // }.bind(this)); // this.$staticHLines = this.staticValues.map(function (value, i) { // return hline(0, 0, 0, ['correlation-chart-normal-line', 'static']).addTo(this); // }.bind(this)); // this.$dynamicVLines = this.dynamicValues.map(function (value, i) { // return vline(0, 0, 0, ['correlation-chart-normal-line', 'dynamic']).addTo(this); // }.bind(this)); // this.$dynamicHLines = this.dynamicValues.map(function (value, i) { // return hline(0, 0, 0, ['correlation-chart-normal-line', 'dynamic']).addTo(this); // }.bind(this)); // this.$staticPlots = this.staticValues.map(function (value, i) { // return circle(50 + i * 30, 100, this.plotRadius, ['correlation-chart-plot', 'static']).addTo(this); // }.bind(this)); // this.$staticLine = _('path.correlation-chart-line.static').addTo(this); // this.$dynamicPlots = this.dynamicValues.map(function (value, i) { // return circle(50 + i * 30, 200, this.plotRadius, ['correlation-chart-plot', 'dynamic']).addTo(this); // }.bind(this)); // this.$dynamicLine = _('path.correlation-chart-line.dynamic').addTo(this); // }; // vchart.creator.correlationchart.prototype.updateComp = function () { // this.$staticVLines.forEach(function ($staticVLine, i) { // moveVLine($staticVLine, this.mapOXColumn(i), this.oxyBottom, this.mapOYValue(this.staticValues[i]) - this.oxyBottom); // }.bind(this)); // this.$staticHLines.forEach(function ($staticHLine, i) { // moveHLine($staticHLine, this.oxyLeft, this.mapOYValue(this.staticValues[i]), this.mapOXColumn(i) - this.oxyLeft); // }.bind(this)); // this.$dynamicVLines.forEach(function ($dynamicVLine, i) { // moveVLine($dynamicVLine, this.mapOXColumn(i), this.oxyBottom, this.mapOYValue(this.dynamicValues[i]) - this.oxyBottom); // }.bind(this)); // this.$dynamicHLines.forEach(function ($dynamicHLine, i) { // moveHLine($dynamicHLine, this.oxyLeft, this.mapOYValue(this.dynamicValues[i]), this.mapOXColumn(i) - this.oxyLeft); // }.bind(this)); // this.$staticPlots.forEach(function ($plot, i) { // $plot.attr({ cx: this.mapOXColumn(i), cy: this.mapOYValue(this.staticValues[i]) }); // }.bind(this)); // var staticPoints = this.staticValues.map(function (value, i) { // return [this.mapOXColumn(i), this.mapOYValue(value)]; // }.bind(this)); // this.$staticLine.attr('d', vchart.autoCurve(staticPoints, 0.7, 0.01));// // this.$dynamicPlots.forEach(function ($plot, i) { // $plot.attr({ cx: this.mapOXColumn(i), cy: this.mapOYValue(this.dynamicValues[i]) }); // }.bind(this)); // var dynamicPoints = this.dynamicValues.map(function (value, i) { // return [this.mapOXColumn(i), this.mapOYValue(value)]; // }.bind(this)); // this.$dynamicLine.attr('d', vchart.autoCurve(dynamicPoints, 0.7, 0.01));// // }; // vchart.creator.correlationchart.prototype.preInit = function (props) { // this.plotRadius = 6; // }; // vchart.creator.correlationchart.prototype.init = function (props) { // this.super(props); // this.preInit(); // this.initBackComp(); // this.initComp(); // this.sync = this.sync.then(this.update.bind(this)); // }; var SquareChart_ = src_VCore._; var SquareChart_$ = src_VCore.$; function SquareChart() { var res = SquareChart_({ tag: 'svg', "class": 'base-chart', child: 'axis' }, true); res.$axis = SquareChart_$('axis', res); res.sync = res.afterAttached(); return res; } ; SquareChart.prototype.updateSize = src_BaseChart.prototype.updateSize; SquareChart.prototype.getY = function (k, y0, x) { var a = k * k / 64; return map(a * x * x * x * x + a * x * x + x, 0, 1 + 2 * a, y0, 1); }; SquareChart.prototype.staticY = function (x) { return this.getY(this["static"].k, this["static"].y0, x); }; SquareChart.prototype.dynamicY = function (x) { return this.getY(this.dynamic.k, this.dynamic.y0, x); }; SquareChart.prototype.getX = function (index) { return index / (this.keys.length - 1); }; SquareChart.prototype.update = function () { this.updateSize(); this.updateBackComp(); this.updateAxis(); this.updateComp(); }; SquareChart.prototype.mapOXColumn = function (index) { return this.oxyLeft + (index + 0.5) * this.oxSegmentLength; }; SquareChart.prototype.mapOYValue = function (value) { return this.oxyBottom - this.oyLength * value; }; SquareChart.prototype.updateAxis = function () { this.$axis.moveTo(this.oxyLeft, this.oxyBottom); this.$axis.resize(this.canvasWidth - this.oxyLeft - 10, this.oxyBottom - 43); this.$oyName.attr({ x: this.oxyLeft - 5, y: 30 }); this.$oxName.attr({ x: this.canvasWidth - 4, y: this.oxyBottom + 20 }); }; SquareChart.prototype.initBackComp = function () { this.$title = helper_text(this.title || '', 0, 0, 'base-chart-title').attr('text-anchor', 'middle').addTo(this); this.$oyName = helper_text(this.valueName, 0, 0, 'base-chart-oxy-text').attr('text-anchor', 'end').addTo(this); this.$oxName = helper_text(this.keyName, 0, 100, 'base-chart-oxy-text').attr('text-anchor', 'end').addTo(this); this.$keyNames = this.keys.map(function (key) { return helper_text(key, 100, 100).attr('text-anchor', 'middle').addTo(this); }.bind(this)); this.$testText = helper_text('0'.repeat(10), 0, 18).addStyle('visibility', 'hidden').addTo(this); }; SquareChart.prototype.updateBackComp = function () { // update value text if (this.minValueText !== null && this.minValueText !== undefined) this.$minValueText.innerHTML = this.minValueText;else this.$minValueText.innerHTML = ''; if (this.maxValueText !== null && this.maxValueText !== undefined) this.$maxValueText.innerHTML = this.maxValueText;else this.$maxValueText.innerHTML = ''; this.$title.attr({ x: this.canvasWidth / 2, y: 20 }); this.oxyLeft = Math.max(20, this.$oyName.getBBox().width + 10, this.$maxValueText.getBBox().width + 10, this.$minValueText.getBBox().width + 10, this.$testText.getBBox().width / 10 * this.minValueTextLength + 10); this.oxyBottom = this.canvasHeight - 10; this.oxLength = this.canvasWidth - this.oxyLeft - 12 - this.$oxName.getBBox().width; this.oxSegmentLength = this.oxLength / this.keys.length; var oyNameHeight = this.$keyNames.reduce(function (ac, $keyName) { return Math.max($keyName.getBBox().height); }.bind(this), 0); this.oxyBottom -= oyNameHeight; this.oyLength = this.oxyBottom - 50; this.$keyNames.forEach(function ($keyName, i) { $keyName.attr({ x: this.mapOXColumn(i), y: this.oxyBottom + 20 }); }.bind(this), 0); }; SquareChart.prototype.initComp = function () { this.$staticVLines = this.keys.map(function (value, i) { return vline(0, 0, 0, ['correlation-chart-normal-line', 'static']).addTo(this); }.bind(this)); this.$staticHLines = this.keys.map(function (value, i) { return hline(0, 0, 0, ['correlation-chart-normal-line', 'static']).addTo(this); }.bind(this)); this.$dynamicVLines = this.keys.map(function (value, i) { return vline(0, 0, 0, ['correlation-chart-normal-line', 'dynamic']).addTo(this); }.bind(this)); this.$dynamicHLines = this.keys.map(function (value, i) { return hline(0, 0, 0, ['correlation-chart-normal-line', 'dynamic']).addTo(this); }.bind(this)); this.$staticPlots = this.keys.map(function (value, i) { return circle(50 + i * 30, 100, this.plotRadius, ['correlation-chart-plot', 'static']).addTo(this); }.bind(this)); this.$staticLine = SquareChart_('path.correlation-chart-line.static').addTo(this); this.$dynamicPlots = this.keys.map(function (value, i) { return circle(50 + i * 30, 200, this.plotRadius, ['correlation-chart-plot', 'dynamic']).addTo(this); }.bind(this)); this.$dynamicLine = SquareChart_('path.correlation-chart-line.dynamic').addTo(this); // (this.minValueText !== undefined && this.minValueText === null) this.$minValueText = helper_text('test', 10, 100).attr('text-anchor', 'end').addTo(this); this.$maxValueText = helper_text('test 2 ', 100, 100).attr('text-anchor', 'end').addTo(this); }; SquareChart.prototype.updateComp = function () { this.$staticVLines.forEach(function ($staticVLine, i) { moveVLine($staticVLine, this.mapOXColumn(i), this.oxyBottom, this.mapOYValue(this.staticY(this.getX(i))) - this.oxyBottom); }.bind(this)); this.$staticHLines.forEach(function ($staticHLine, i) { moveHLine($staticHLine, this.oxyLeft, this.mapOYValue(this.staticY(this.getX(i))), this.mapOXColumn(i) - this.oxyLeft); }.bind(this)); this.$dynamicVLines.forEach(function ($dynamicVLine, i) { moveVLine($dynamicVLine, this.mapOXColumn(i), this.oxyBottom, this.mapOYValue(this.dynamicY(this.getX(i))) - this.oxyBottom); }.bind(this)); this.$dynamicHLines.forEach(function ($dynamicHLine, i) { moveHLine($dynamicHLine, this.oxyLeft, this.mapOYValue(this.dynamicY(this.getX(i))), this.mapOXColumn(i) - this.oxyLeft); }.bind(this)); this.$staticPlots.forEach(function ($plot, i) { $plot.attr({ cx: this.mapOXColumn(i), cy: this.mapOYValue(this.staticY(this.getX(i))) }); }.bind(this)); var staticPoints = Array(101).fill(0).map(function (value, i) { return [this.mapOXColumn(i * (this.keys.length - 1) / 100), this.mapOYValue(this.staticY(i / 100))]; }.bind(this)); this.$staticLine.attr('d', vchart.autoCurve(staticPoints, 0.7, 0.01)); // this.$dynamicPlots.forEach(function ($plot, i) { $plot.attr({ cx: this.mapOXColumn(i), cy: this.mapOYValue(this.dynamicY(this.getX(i))) }); }.bind(this)); var dynamicPoints = Array(101).fill(0).map(function (value, i) { return [this.mapOXColumn(i * (this.keys.length - 1) / 100), this.mapOYValue(this.dynamicY(i / 100))]; }.bind(this)); this.$dynamicLine.attr('d', vchart.autoCurve(dynamicPoints, 0.7, 0.01)); // this.$minValueText.attr({ x: this.oxyLeft - 5, y: this.mapOYValue(this.dynamicY(this.getX(0))) + 6 }); this.$maxValueText.attr({ x: this.oxyLeft - 5, y: this.mapOYValue(this.dynamicY(this.getX(this.keys.length - 1))) + 6 }); }; SquareChart.prototype.preInit = function (props) { this.plotRadius = 6; this.minValueTextLength = 0; }; SquareChart.prototype.init = function (props) { this.preInit(); this["super"](props); this.initBackComp(); this.initComp(); this.sync = this.sync.then(this.update.bind(this)); }; src_VCore.creator.squarechart = SquareChart; /* harmony default export */ const src_SquareChart = ((/* unused pure expression or super */ null && (SquareChart))); ;// CONCATENATED MODULE: ./src/GroupRankChart.js var GroupRankChart_ = src_VCore._; var GroupRankChart_$ = src_VCore.$; function GroupRankChart() { var suffix = (Math.random() + '').replace(/\./g, ''); var res = GroupRankChart_({ tag: 'svg', "class": 'grank-chart', child: [{ tag: 'g', attr: { id: 'contentBox' }, child: 'g#content' }, { tag: 'path', "class": 'base-chart-white-mask', attr: { fill: 'white', stroke: 'white', 'fill-rule': 'evenodd', d: 'M0,0 0,2000 2000,2000 2000,0zM100,0 0,200 200,200 200,0z' } }, 'axis', 'hscrollbar'] }); res.sync = res.afterAttached(); res.$axis = GroupRankChart_$('axis', res); res.$whiteBoxMask = GroupRankChart_$('.base-chart-white-mask', res); res.$content = GroupRankChart_$('g#content', res); res.eventHandler = OOP/* default.bindFunctions */.ZP.bindFunctions(res, GroupRankChart.eventHandler); // res.on('wheel', res.eventHandler.wheel); res.$hscrollbar = GroupRankChart_$('hscrollbar', res).on('scroll', res.eventHandler.scrollbarscroll); return res; } ; GroupRankChart.eventHandler = {}; GroupRankChart.eventHandler.wheel = function (event) { var d = this.scrollBy(event.deltaY); if (d != 0) { event.preventDefault(); } }; GroupRankChart.eventHandler.scrollArrowsPressLeft = function (event) { this.scrollBy(-60); }; GroupRankChart.eventHandler.scrollArrowsPressRight = function (event) { this.scrollBy(60); }; GroupRankChart.eventHandler.scrollbarscroll = function (event) { this.scrollLeft = this.$hscrollbar.scrollLeft; event.preventDefault(); }; GroupRankChart.prototype.scrollBy = function (dX) { var scrollLeft = this.scrollLeft + dX / 5; var scrollLeft = Math.max(0, Math.min(this.oxContentLength - this.oxLength, scrollLeft)); var deltaX = scrollLeft - this.scrollLeft; if (deltaX != 0) { this.scrollLeft = scrollLeft; this.$hscrollbar.scrollLeft = scrollLeft; } return deltaX; }; GroupRankChart.prototype.numberToString = function (value) { return value.toString(); }; GroupRankChart.prototype._createMember = function (member) { var res = GroupRankChart_('g'); res.$plot = circle(this.plotRadius, 0, this.plotRadius, 'grank-chart-plot').addTo(res); res.$name = helper_text(member.name, this.plotRadius * 2 + 9, -3).addTo(res); res.$value = helper_text('' + this.numberToString(member.value) + '', this.plotRadius * 2 + 9, 16).addTo(res); return res; }; GroupRankChart.prototype._createOyValues = function (minValue, step, segmentCount, extendOY) { var child = Array(segmentCount + 1 + (extendOY ? 1 : 0)).fill(0).map(function (u, i) { var value; if (extendOY) { if (i == 0) { value = 0; } else { value = minValue + (i - 1) * step; } } else { value = minValue + i * step; } return { tag: 'text', attr: { x: '-14', y: '0', 'text-anchor': 'end' }, props: { innerHTML: this.numberToString(value) } }; }.bind(this)); return GroupRankChart_({ tag: 'g', child: child }); }; GroupRankChart.prototype._createOYSegmentLines = function (n) { var res = GroupRankChart_({ tag: 'g', child: Array(n).fill('path.vchart-segment-line') }); return res; }; GroupRankChart.prototype._createGroup = function (group) { return GroupRankChart_({ tag: 'g', child: group.members.map(this._createMember.bind(this)) }); }; GroupRankChart.prototype._callOYValue = function (val) { return -this.paddingnAxisBottom + (this.extendOY ? -this.oySegmentLength : 0) - map(val, this.oyMinValue, this.oyMaxValue, 0, this.oyLength - (this.extendOY ? this.oySegmentLength : 0)); }; GroupRankChart.prototype.updateSize = function () { this.attr({ width: this.canvasWidth + '', height: this.canvasHeight + '', viewBox: [0, 0, this.canvasWidth, this.canvasHeight].join(' ') }); this.$title.attr('x', this.canvasWidth / 2); }; GroupRankChart.prototype.updateOyValues = function () { this.oyLength = this.oxyBottom - 70 - this.paddingnAxisBottom; this.oySegmentLength = this.oyLength / (this.oySegmentCount + (this.extendOY ? 1 : 0)); Array.prototype.forEach.call(this.$oyValues.childNodes, function (e, i) { e.attr({ y: -i * this.oySegmentLength + 5 - this.paddingnAxisBottom, x: -10 }); }.bind(this)); var oyValuesBox = this.$oyValues.getBBox(); this.oxyLeft = Math.max(this.oxyLeft, oyValuesBox.width + 14, this.$oyName.getBBox().width); this.oxLength = this.canvasWidth - this.oxyLeft - 24; this.$oyValues.attr('transform', 'translate(' + this.oxyLeft + ',' + this.oxyBottom + ')'); }; GroupRankChart.prototype.updateAxis = function () { this.$axis.attr('transform', translate(this.oxyLeft, this.oxyBottom)); this.$axis.resize(this.canvasWidth - this.oxyLeft - 10, this.oxyBottom - 50); this.$oyName.attr({ x: this.oxyLeft, y: 30, 'text-anchor': 'end' }); this.$whiteBoxMask.attr('d', 'M0,0 0,cvh cvw,cvh cvw,0zMleft,top left,bottom right,bottom right,topz'.replace(/cvh/g, this.canvasHeight).replace(/cvw/g, this.canvasWidth).replace(/left/g, this.oxyLeft).replace(/top/g, 1).replace(/bottom/g, this.canvasHeight).replace(/right/g, this.canvasWidth - 10)); this.$content.attr('transform', 'translate(' + this.oxyLeft + ',' + this.oxyBottom + ')'); this.$oxName.attr({ x: this.canvasWidth - this.$oxName.getBBox().width - 3, y: this.oxyBottom - 9 }); }; GroupRankChart.prototype.updateOYSegmentLines = function () { this.$oySegmentLines.attr('transform', 'translate(' + this.oxyLeft + ',' + this.oxyBottom + ')'); Array.prototype.forEach.call(this.$oySegmentLines.childNodes, function (e, i) { moveHLine(e, -2, -i * this.oySegmentLength - this.paddingnAxisBottom, 4); }.bind(this)); }; GroupRankChart.prototype.updateGroups = function () { this.oxContentLength = this.$groups.reduce(function (contentLength, ge, groupIndex) { var group = this.groups[groupIndex]; contentLength = contentLength + 20; var maxDY = Array.prototype.reduce.call(ge.childNodes, function (maxDY, meme, j) { var member = group.members[j]; var y = this._callOYValue(member.value); meme.attr('transform', translate(contentLength, y)); meme._tr_y = y; return Math.max(maxDY, -y); }.bind(this), 0); //todo:auto x var memberElements = Array.apply(null, ge.childNodes); memberElements.sort(function (a, b) { return a._tr_y - b._tr_y; }); var ninf = -1000000; var messure = memberElements.reduce(function (ac, e) { var y = e._tr_y; var colIndex = 0; while (ac[colIndex].minY > y) { ++colIndex; } ac[colIndex].minY = y + 40; ac[colIndex].child.push(e); ac[colIndex].maxWidth = Math.max(ac[colIndex].maxWidth, e.getBBox().width); return ac; }, Array(200).fill(null).map(function () { return { minY: ninf, child: [], maxWidth: ninf }; })); messure.reduce(function (left, col) { if (col.child.length == 0) return; col.child.forEach(function (meme) { meme.attr('transform', translate(left, meme._tr_y)); }); return left + col.maxWidth + 9; }, contentLength); var innerWidth = ge.getBBox().width; this.$groupBoxes[groupIndex].attr({ x: contentLength - 10, width: innerWidth + 20, y: -maxDY - (this.plotRadius + 20), height: maxDY + this.plotRadius + 20 }); var columeWidth = Math.max(ge.getBBox().width + 20, this.$groupNames[groupIndex].getBBox().width + 10); this.$groupNames[groupIndex].attr('x', contentLength + columeWidth / 2); contentLength += columeWidth; return contentLength; }.bind(this), 0); }; GroupRankChart.prototype.updateScrollArrows = function () { this.$scrollArrows.attr('transform', 'translate(' + (this.oxyLeft + 7) + ', ' + (this.oxyBottom - this.oyLength / 2) + ')'); this.$scrollArrows.$rightArrow.attr('transform', 'translate(' + (this.oxLength - 15) + ', 0)'); this.scrollLeft = this.scrollLeft; //update this.$hscrollbar.resize(this.oxLength, 10); this.$hscrollbar.moveTo(this.oxyLeft, this.oxyBottom - 10); this.$hscrollbar.outterWidth = this.oxLength; this.$hscrollbar.innerWidth = this.oxContentLength; }; GroupRankChart.prototype.update = function () { if (!this.groups || this.groups.length <= 0) return; if (typeof this.canvasWidth != 'number') { this.canvasWidth = 300; this.autoWidth = true; } this.updateSize(); this.updateOyValues(); this.updateAxis(); this.updateOYSegmentLines(); this.updateGroups(); this.updateScrollArrows(); requestAnimationFrame(function () { if (this.autoWidth) { var requireWidth = this.canvasWidth + this.overflowOX; var proviceWidth = this.parentElement.getBoundingClientRect().width; this.canvasWidth = Math.max(Math.min(requireWidth, proviceWidth), 300); this.autoWidth = false; this.update(); } }.bind(this)); }; GroupRankChart.prototype.initComp = function () { this.maxValue = this.groups.reduce(function (ac, group) { return group.members.reduce(function (ac, member) { return Math.max(ac, member.value); }, ac); }, -10000000000); this.minValue = this.groups.reduce(function (ac, group) { return group.members.reduce(function (ac, member) { return Math.min(ac, member.value); }, ac); }, 10000000000); if (this.maxValue == this.minValue) this.maxValue += this.maxSegment; this.oxyBottom = this.canvasHeight - 40; //fix size, not need update this.oxyLeft = 0; var btSgmt = calBeautySegment(this.maxSegment, this.minValue, this.maxValue); this.oySegmentCount = btSgmt.segmentCount; this.oyMinValue = btSgmt.minValue; this.oyMaxValue = btSgmt.maxValue; this.extendOY = !!(this.zeroOY && this.oyMinValue > 0); this.oyStep = btSgmt.step; this.$oyValues = this._createOyValues(this.oyMinValue, this.oyStep, this.oySegmentCount, this.extendOY).addTo(this); this.$oySegmentLines = this._createOYSegmentLines(this.oySegmentCount + 1 + (this.extendOY ? 1 : 0)).addTo(this); this.$title = vchart.text(this.title || '', 0, 19, 'base-chart-title').attr('text-anchor', 'middle').addTo(this); this.$oyName = vchart.text(this.valueName || '', 0, 0, 'base-chart-oxy-text').addTo(this); this.$oxName = vchart.text(this.keyName || '', 0, 0, 'base-chart-oxy-text').addTo(this); this.$groups = this.groups.map(function (group) { return this._createGroup(group).addTo(this.$content); }.bind(this)); this.$groupNames = this.groups.map(function (group) { return vchart.text(group.name, 0, 18).attr('text-anchor', 'middle').addTo(this.$content); }.bind(this)); this.$groupBoxes = this.groups.map(function (group) { return vchart.rect(0, 0, 0, 0, 'grank-chart-group-rect').addTo(this.$content); }.bind(this)); this.$scrollArrows = GroupRankChart_('scrollarrow').addTo(this).on('pressleft', this.eventHandler.scrollArrowsPressLeft).on('pressright', this.eventHandler.scrollArrowsPressRight); }; GroupRankChart.prototype.init = function (props) { this.plotRadius = 6; this.canvasWidth = 400; this.canvasHeight = 300; this.maxSegment = 9; this.paddingnAxisBottom = this.plotRadius + 30; this.valueName = ''; this["super"](props); if (!this.groups || this.groups.length <= 0) { console.log('Empty data!'); return; } this.initComp(); this.sync = this.sync.then(this.update.bind(this)); }; GroupRankChart.property = {}; GroupRankChart.property.scrollLeft = { set: function set(value) { this._scrollLeft = value || 0; this.$content.attr('transform', 'translate(' + (this.oxyLeft - this.scrollLeft) + ',' + this.oxyBottom + ')'); if (this.scrollLeft > 0.001) { this.$scrollArrows.$leftArrow.removeStyle('display'); } else { this.$scrollArrows.$leftArrow.addStyle('display', 'none'); } if (this.oxContentLength - this.oxLength > this.scrollLeft + 0.001) { this.$scrollArrows.$rightArrow.removeStyle('display'); } else { this.$scrollArrows.$rightArrow.addStyle('display', 'none'); } }, get: function get() { return this._scrollLeft || 0; } }; GroupRankChart.property.overflowOX = { get: function get() { return Math.max(0, this.oxContentLength - this.oxLength); } }; src_VCore.creator.grouprankchart = GroupRankChart; /* harmony default export */ const src_GroupRankChart = ((/* unused pure expression or super */ null && (GroupRankChart))); ;// CONCATENATED MODULE: ./src/MappingChart.js var MappingChart_ = src_VCore._; var MappingChart_$ = src_VCore.$; var STATE_READY = 0; var STATE_MODIFY = 1; function MappingChart() { var res = MappingChart_({ tag: 'svg', attr: { tabindex: '1' }, "class": 'mapping-chart', extendEvent: ['add', 'addmakertop', 'addmarkerbot', 'clicktop', 'clickbot', 'addline', 'removeline', 'editline'], child: ['g.background', 'g.middleground', 'g.forceground'] }); res.$background = MappingChart_$('g.background', res); res.$middleground = MappingChart_$('g.middleground', res); res.$forceground = MappingChart_$('g.forceground', res); res.sync = res.afterAttached(); return res; } ; MappingChart.prototype.generateValue = function (number) { return Math.round(Math.round(number * this.precision) / this.precision); }; MappingChart.prototype.preInit = function () { this.canvasWidth = 300; this.canvasHeight = 300; this.rangePlotRadius = 6; this.axisTop = 70; this.hitboxHeight = 20; this.tempValue = 0; this.markerHitboxWidth = 1; }; MappingChart.prototype.numberToString = function (number) { return number + ''; }; MappingChart.prototype.updateSize = src_BaseChart.prototype.updateSize; MappingChart.prototype.numberToString = src_BaseChart.prototype.numberToString; MappingChart.prototype.initAxis = function () { this.$topMinPlot = MappingChart_('shape.mapping-chart-range-plot').addTo(this.$background); this.$topMaxPlot = MappingChart_('shape.mapping-chart-range-plot').addTo(this.$background); this.$botMinPlot = MappingChart_('shape.mapping-chart-range-plot').addTo(this.$background); this.$botMaxPlot = MappingChart_('shape.mapping-chart-range-plot').addTo(this.$background); this.$topLine = hline(50, 50, 500, 'mapping-chart-range-line').addTo(this.$background); this.$botLine = hline(50, 50, 500, 'mapping-chart-range-line').addTo(this.$background); this.$topMinText = helper_text(this.numberToString(this.min), 20, 20, 'mapping-chart-range-text').addTo(this.$background); this.$topMaxText = helper_text(this.numberToString(this.max), 30, 20, 'mapping-chart-range-text').addTo(this.$background); this.$botMinText = helper_text(this.numberToString(this.min), 20, 50, 'mapping-chart-range-text').addTo(this.$background); this.$botMaxText = helper_text(this.numberToString(this.max), 30, 50, 'mapping-chart-range-text').addTo(this.$background); this.$title = helper_text(this.title || '', 0, 25, 'mapping-chart-title').addTo(this.$background).attr('text-anchor', 'middle'); }; MappingChart.prototype.updateAxis = function () { this.axisLeft = 10 + this.$topMinText.getBBox().width + 10; var maxTextWidth = this.$botMaxText.getBBox().width; this.axisRight = this.canvasWidth - 10 - maxTextWidth - 10; this.axisBottom = this.canvasHeight - 50; this.$topMinText.attr({ x: '10', y: this.axisTop - 4 + '' }); this.$topMaxText.attr({ x: this.canvasWidth - 10 - maxTextWidth, y: this.axisTop - 4 + '' }); this.$botMinText.attr({ x: '10', y: this.axisBottom + 4 + 14 }); this.$botMaxText.attr({ x: this.canvasWidth - 10 - maxTextWidth, y: this.axisBottom + 4 + 14 }); this.$topMinPlot.begin().moveTo(this.axisLeft, this.axisTop - 5).lineTo(this.axisLeft, this.axisTop + 5).end(); this.$topMaxPlot.begin().moveTo(this.axisRight, this.axisTop - 5).lineTo(this.axisRight, this.axisTop + 5).end(); moveHLine(this.$topLine, this.axisLeft, this.axisTop, this.axisRight - this.axisLeft); this.$botMinPlot.begin().moveTo(this.axisLeft, this.axisBottom - 5).lineTo(this.axisLeft, this.axisBottom + 5).end(); this.$botMaxPlot.begin().moveTo(this.axisRight, this.axisBottom - 5).lineTo(this.axisRight, this.axisBottom + 5).end(); moveHLine(this.$botLine, this.axisLeft, this.axisBottom, this.axisRight - this.axisLeft); this.$title.attr({ x: this.canvasWidth / 2, y: 10 + 20 }); }; MappingChart.prototype.initHitbox = function () { this.$topHitbox = rect(20, 20, 300, 20, 'vchart-hitbox').on({ mouseenter: this.eventEnterHitboxHandler.bind(this), mouseleave: this.eventLeaveHitboxHandler.bind(this), click: this.eventClickHitboxHandler.bind(this) }).addTo(this.$forceground); this.$botHitbox = rect(20, 80, 300, 20, 'vchart-hitbox').on({ mouseenter: this.eventEnterHitboxHandler.bind(this), mouseleave: this.eventLeaveHitboxHandler.bind(this), click: this.eventClickHitboxHandler.bind(this) }).addTo(this.$forceground); }; MappingChart.prototype.updateHitbox = function () { this.$topHitbox.attr({ x: this.axisLeft, y: this.axisTop - this.hitboxHeight / 2, height: this.hitboxHeight, width: this.axisRight - this.axisLeft }); this.$botHitbox.attr({ x: this.axisLeft, y: this.axisBottom - this.hitboxHeight / 2, height: this.hitboxHeight, width: this.axisRight - this.axisLeft }); }; MappingChart.prototype.initTempmarker = function () { this.$tempTopMarker = MappingChart_('mappingchartmarker.top').addTo(this.$forceground); this.$tempBotMarker = MappingChart_('mappingchartmarker.bot').addTo(this.$forceground); this.$tempTopMarker.rotate180 = true; this.$tempTopMarker.text = this.numberToString(this.min); this.$tempBotMarker.text = this.numberToString(this.min); }; MappingChart.prototype.updateTempMarker = function () { //todo if (isNumber(this.collision)) { this.markerHitboxWidth = Math.max(1, map(this.collision, 0, this.max - this.min, 0, this.axisRight - this.axisLeft)); } this.$tempTopMarker.moveTo(this.axisLeft, this.axisTop); this.$tempBotMarker.moveTo(this.axisLeft, this.axisBottom); this.$tempTopMarker.hitboxWidth = this.markerHitboxWidth; this.$tempBotMarker.hitboxWidth = this.markerHitboxWidth; }; MappingChart.prototype.initComp = function () { this.initAxis(); this.initTempmarker(); this.initHitbox(); }; MappingChart.prototype.updateComp = function () { this.updateAxis(); this.updateHitbox(); this.updateTempMarker(); }; MappingChart.prototype.update = function () { this.updateSize(); this.updateComp(); }; MappingChart.prototype.addMarkerTop = function (value) { var value = this.generateValue(this.tempValue); var cLine; if (!this._tempLine) { this._tempLine = { value: 0, //default $line: MappingChart_('shape.mapping-chart-map-line').addTo(this.$background), $line_hitbox: MappingChart_('shape.mapping-chart-map-line-hitbox.vchart-hitbox').addTo(this.$middleground), $topMarker: MappingChart_({ tag: 'mappingchartmarker' }).addTo(this.$forceground), $topPlot: circle(20, 20, 5, 'mapping-chart-line-plot').addTo(this.$forceground) }; } this._tempLine.value = value; var x0 = map(value, this.min, this.max, this.axisLeft, this.axisRight); var y0 = this.axisTop; this._tempLine.x0 = x0; this._tempLine.y0 = y0; this._tempLine.$topMarker.moveTo(x0, y0); this._tempLine.$topPlot.attr({ cx: x0, cy: y0 }); this._tempLine.$topMarker.text = this.numberToString(this.generateValue(value)); var self = this; var lineElt = this._tempLine.$line; function mouseMoveHandler(event) { lineElt.begin().moveTo(x0, y0).lineTo(self.mouseX, self.mouseY).end(); } this.on('mousemove', mouseMoveHandler); this.once('addmarkerbot', function () { this.off('mousemove', mouseMoveHandler); }); }; MappingChart.prototype.addMarkerBottom = function (mapValue) { if (!this._tempLine) return; //must click top first var mapValue = this.generateValue(this.tempValue); var isCross = this._checkLineIsCross(this._tempLine.value, mapValue); if (isCross) return; var x1 = map(mapValue, this.min, this.max, this.axisLeft, this.axisRight); var y1 = this.axisBottom; this._tempLine.mapValue = mapValue; this._tempLine.$botMarker = MappingChart_({ tag: 'mappingchartmarker', props: { text: this.numberToString(this.generateValue(mapValue)), rotate180: true } }).moveTo(x1, y1).addTo(this.$forceground); this._tempLine.x1 = x1; this._tempLine.y1 = y1; this._tempLine.$botPlot = circle(20, 80, 5, 'mapping-chart-line-plot').addTo(this.$forceground); this._tempLine.$botPlot.attr({ cx: x1, cy: y1 }); this._tempLine.$line.begin().moveTo(this._tempLine.x0, this._tempLine.y0).lineTo(x1, y1).end(); this._tempLine.$line_hitbox.attr('d', this._tempLine.$line.attr('d')); var tempLine = this._tempLine; this.settupEvent(tempLine); this._lineList.push(this._tempLine); this._tempLine = undefined; this.emit('addmarkerbot', { target: this, data: tempLine }, this); this.emit('addline', this.content, this); }; MappingChart.prototype._checkLineIsCross = function (value, mapValue) { return this._lineList.some(function (element) { return (element.value - value) * (element.mapValue - mapValue) < 0; }); }; MappingChart.prototype.eventEnterHitboxHandler = function (event) { if (this.__removeClassTimeOutTop) { clearTimeout(this.__removeClassTimeOutTop); self.__removeClassTimeOutTop = false; } if (this.__removeClassTimeOutBot) { clearTimeout(this.__removeClassTimeOutBot); self.__removeClassTimeOutBot = false; } if (event.target == this.$topHitbox) { this.addClass('mapping-chart-hover-top'); } else if (event.target == this.$botHitbox) { this.addClass('mapping-chart-hover-bot'); } }; MappingChart.prototype.eventLeaveHitboxHandler = function (event) { var target = event.target; var self = this; if (target == self.$topHitbox) { if (this.__removeClassTimeOutTop) { clearTimeout(this.__removeClassTimeOutTop); self.__removeClassTimeOutTop = false; } this.__removeClassTimeOutTop = setTimeout(function () { self.removeClass('mapping-chart-hover-top'); self.__removeClassTimeOutTop = false; }, 100); } else if (target == self.$botHitbox) { if (this.__removeClassTimeOutBot) { clearTimeout(this.__removeClassTimeOutBot); self.__removeClassTimeOutBot = false; } self.__removeClassTimeOutBot = setTimeout(function () { self.removeClass('mapping-chart-hover-bot'); self.__removeClassTimeOutBot = false; }, 100); } }; MappingChart.prototype.eventClickHitboxHandler = function (event) { var target = event.target; if (target == this.$topHitbox) { if (this.state == STATE_READY) { this.addMarkerTop(this.tempValue); } this.emit('clicktop', {}, this); } else if (target == this.$botHitbox) { if (this.state == STATE_READY) { this.addMarkerBottom(this.tempValue); } this.emit('clickbot', {}, this); } }; MappingChart.prototype.eventMoveHandler = function (event) { var hitboxBound = this.$botHitbox.getBoundingClientRect(); var eventX = event.clientX; var tempValue = map(eventX, hitboxBound.left, hitboxBound.right, this.min, this.max); tempValue = Math.round(tempValue); this.tempValue = Math.min(this.max, Math.max(this.min, tempValue)); var newX = map(this.tempValue, this.min, this.max, this.axisLeft, this.axisRight); this.$tempTopMarker.moveTo(newX, this.axisTop); this.$tempBotMarker.moveTo(newX, this.axisBottom); var markerText = this.numberToString(this.generateValue(this.tempValue)); this.$tempTopMarker.text = markerText; this.$tempBotMarker.text = markerText; var bound = this.getBoundingClientRect(); this.mouseX = map(event.clientX, bound.left, bound.right, 0, this.canvasWidth); this.mouseY = map(event.clientY, bound.top, bound.bottom, 0, this.canvasHeight); }; MappingChart.prototype.cancelCMD = function () { if (this._tempLine) { this.removeElementInObject(this._tempLine); this._tempLine = undefined; } else {} }; MappingChart.prototype.deleteCMD = function () { if (this._tempLine) { this.removeElementInObject(this._tempLine); this._tempLine = undefined; } else { if (this._selectedLine !== undefined) { var tempLine = this._selectedLine; this.removeElementInObject(tempLine); this._lineList = this._lineList.filter(function (elt) { return elt.value != tempLine.value && elt.mapValue != tempLine.mapValue; }); this._selectedLine = undefined; this.emit('removeline', this.content, this); } } }; MappingChart.prototype.eventKeyDownHandler = function (event) { if (event.key == "Escape") { this.cancelCMD(); event.preventDefault(); } else if (event.key == "Delete") { this.deleteCMD(); event.preventDefault(); } }; MappingChart.prototype.settupEvent = function (tempLine) { var self = this; function clickLineHandler(event) { if (self._selectedLine !== undefined) { self._selectedLine.$line.removeClass('selected-line'); self._selectedLine = undefined; } self._selectedLine = tempLine; tempLine.$line.addClass('selected-line'); function unSelectLine() { tempLine.$line.removeClass('selected-line'); if (self._selectedLine !== undefined) if (self._selectedLine.$line == tempLine.$line) self._selectedLine = undefined; self.off('click', clickOutHandler); self.off('keydown', cancelFocusHandler); } function clickOutHandler(event) { if (event.target != tempLine.$line) { unSelectLine(); } } function cancelFocusHandler(event) { if (event.key == "Escape") { unSelectLine(); } } setTimeout(function () { self.on('click', clickOutHandler); }, 1); setTimeout(function () { self.on('keydown', cancelFocusHandler); }, 1); } var lineElt = tempLine.$line; var line_hitboxElt = tempLine.$line_hitbox; function clickTopPlotHandler(event) { self.state = STATE_MODIFY; tempLine.$topMarker.addStyle('visibility', 'hidden'); tempLine.$topPlot.addStyle('visibility', 'hidden'); function mouseMoveHandler(event) { lineElt.begin().moveTo(self.mouseX, self.mouseY).lineTo(tempLine.x1, tempLine.y1).end(); } function clickTopBarHandler(event, sender) { var newValue = self.tempValue; if (self._checkLineIsCross(newValue, tempLine.mapValue)) {} else { var newX0 = map(newValue, this.min, this.max, this.axisLeft, this.axisRight); lineElt.begin().moveTo(newX0, tempLine.y0).lineTo(tempLine.x1, tempLine.y1).end(); line_hitboxElt.attr('d', lineElt.attr('d')); tempLine.$topMarker.moveTo(newX0, tempLine.y0); tempLine.$topMarker.text = this.numberToString(this.generateValue(newValue)); tempLine.$topPlot.attr({ cx: newX0, cy: tempLine.y0 }); tempLine.x0 = newX0; tempLine.value = newValue; tempLine.$topMarker.removeStyle('visibility', 'hidden'); tempLine.$topPlot.removeStyle('visibility', 'hidden'); self.off('clicktop', clickTopBarHandler); self.off('mousemove', mouseMoveHandler); self.off('keydown', KeyDownHandler); self.state = STATE_READY; this.emit('editline', this.content, this); } } function cancel() { lineElt.begin().moveTo(tempLine.x0, tempLine.y0).lineTo(tempLine.x1, tempLine.y1).end(); line_hitboxElt.attr('d', lineElt.attr('d')); } ; function deleteElt() { self.removeElementInObject(tempLine); self._lineList = self._lineList.filter(function (elt) { return elt.value != tempLine.value && elt.mapValue != tempLine.mapValue; }); this.emit('removeline', this.content, this); } ; function KeyDownHandler(event) { tempLine.$topMarker.removeStyle('visibility', 'hidden'); tempLine.$topPlot.removeStyle('visibility', 'hidden'); if (event.key == "Escape") { cancel(); event.preventDefault(); } else if (event.key == "Delete") { deleteElt(); event.preventDefault(); } self.off('clicktop', clickTopBarHandler); self.off('mousemove', mouseMoveHandler); self.off('keydown', KeyDownHandler); self.state = STATE_READY; } ; self.on('clicktop', clickTopBarHandler); self.on('mousemove', mouseMoveHandler); self.on('keydown', KeyDownHandler); } function clickBotPlotHandler(event) { self.state = STATE_MODIFY; tempLine.$botMarker.addStyle('visibility', 'hidden'); tempLine.$botPlot.addStyle('visibility', 'hidden'); function mouseMoveHandler(event) { lineElt.begin().moveTo(tempLine.x0, tempLine.y0).lineTo(self.mouseX, self.mouseY).end(); } function clickBotBarHandler(event, sender) { var newValue = self.tempValue; if (self._checkLineIsCross(tempLine.value, newValue)) {} else { var newX1 = map(newValue, this.min, this.max, this.axisLeft, this.axisRight); lineElt.begin().moveTo(tempLine.x0, tempLine.y0).lineTo(newX1, tempLine.y1).end(); line_hitboxElt.attr('d', lineElt.attr('d')); tempLine.$botMarker.moveTo(newX1, tempLine.y1); tempLine.$botMarker.text = this.numberToString(this.generateValue(newValue)); tempLine.$botPlot.attr({ cx: newX1, cy: tempLine.y1 }); tempLine.x1 = newX1; tempLine.mapValue = newValue; tempLine.$botMarker.removeStyle('visibility', 'hidden'); tempLine.$botPlot.removeStyle('visibility', 'hidden'); self.off('clickbot', clickBotBarHandler); self.off('mousemove', mouseMoveHandler); self.off('keydown', KeyDownHandler); self.state = STATE_READY; this.emit('editline', this.content, this); } } function cancel() { lineElt.begin().moveTo(tempLine.x0, tempLine.y0).lineTo(tempLine.x1, tempLine.y1).end(); line_hitboxElt.attr('d', lineElt.attr('d')); } ; function deleteElt() { self.removeElementInObject(tempLine); self._lineList = self._lineList.filter(function (elt) { return elt.value != tempLine.value && elt.mapValue != tempLine.mapValue; }); } ; function KeyDownHandler(event) { tempLine.$botMarker.removeStyle('visibility', 'hidden'); tempLine.$botPlot.removeStyle('visibility', 'hidden'); if (event.key == "Escape") { cancel(); event.preventDefault(); } else if (event.key == "Delete") { deleteElt(); event.preventDefault(); } self.off('clickbot', clickBotBarHandler); self.off('mousemove', mouseMoveHandler); self.off('keydown', KeyDownHandler); self.state = STATE_READY; } ; self.on('clickbot', clickBotBarHandler); self.on('mousemove', mouseMoveHandler); self.on('keydown', KeyDownHandler); } tempLine.$line_hitbox.on("click", clickLineHandler); tempLine.$topPlot.on("click", clickTopPlotHandler); tempLine.$botPlot.on("click", clickBotPlotHandler); }; MappingChart.prototype.setLineElt = function (value, mapValue) { value = this.generateValue(value); mapValue = this.generateValue(mapValue); var x0 = map(value, this.min, this.max, this.axisLeft, this.axisRight); var y0 = this.axisTop; var x1 = map(mapValue, this.min, this.max, this.axisLeft, this.axisRight); var y1 = this.axisBottom; var tempLine; var cLine; tempLine = { value: value, mapValue: mapValue, $line: MappingChart_('shape.mapping-chart-map-line').addTo(this.$background), $line_hitbox: MappingChart_('shape.mapping-chart-map-line-hitbox.vchart-hitbox').addTo(this.$middleground), $topMarker: MappingChart_({ tag: 'mappingchartmarker' }).addTo(this.$forceground), $topPlot: circle(20, 20, 5, 'mapping-chart-line-plot').addTo(this.$forceground), $botMarker: MappingChart_({ tag: 'mappingchartmarker', props: { rotate180: true } }).addTo(this.$forceground), $botPlot: circle(20, 20, 5, 'mapping-chart-line-plot').addTo(this.$forceground), x0: x0, x1: x1, y0: y0, y1: y1 }; tempLine.x0 = x0; tempLine.y0 = y0; tempLine.x1 = x1; tempLine.y1 = y1; tempLine.$topMarker.moveTo(x0, y0); tempLine.$topPlot.attr({ cx: x0, cy: y0 }); tempLine.$botMarker.moveTo(x1, y1); tempLine.$botPlot.attr({ cx: x1, cy: y1 }); tempLine.$topMarker.text = this.numberToString(value); tempLine.$botMarker.text = this.numberToString(mapValue); tempLine.$line.begin().moveTo(x0, y0).lineTo(x1, y1).end(); tempLine.$line_hitbox.attr('d', tempLine.$line.attr('d')); ///todo this.settupEvent(tempLine); this._lineList.push(tempLine); }; MappingChart.prototype.removeElementInObject = function (object) { Object.keys(object).forEach(function (key) { if (typeof object[key].remove == 'function') object[key].remove(); }); }; MappingChart.property = {}; MappingChart.property.content = { set: function set(content) { this._lineList.forEach(function (lineData) { this.removeElementInObject(lineData); }.bind(this)); this._lineList = []; this.sync.then(function () { for (var i = 0; i < content.length; i++) { this.setLineElt(content[i].value, content[i].mapValue); } }.bind(this)); // }, get: function get() { var ret = this._lineList.map(function (lineData) { return { value: lineData.value, mapValue: lineData.mapValue }; }); ret.sort(function (a, b) { return a.value - b.value; }); return ret; } }; /** * @typedef MapLine * @property {Number} value * @property {Number} mapValue * @property {Path} $line * @property {MappingChartMarker} $topMarker * @property {MappingChartMarker} $botMarker * @property {circle} $botPlot * @property {circle} $botPlot */ MappingChart.prototype.init = function (props) { this.on('mousemove', this.eventMoveHandler.bind(this)); this.on('keydown', this.eventKeyDownHandler.bind(this)); this.preInit(); this._lineList = []; this.sync = this.sync.then(this.update.bind(this)); this["super"](props); this.state = STATE_READY; /** * @type {Array<MapLine>} */ this.initComp(); }; function MappingChartMarker() { var res = MappingChart_({ // tag:'g', "class": 'mapping-chart-marker', attr: { transform: translate(200, 200) } }); res.$box = MappingChart_('shape.mapping-chart-marker-box').addTo(res); res.$text = helper_text('', 0, -10, 'mapping-chart-marker-text').attr('text-anchor', 'middle').addTo(res); res.sync = res.afterAttached(); return res; } MappingChartMarker.prototype.updateBox = function () { var textBBox = this.$text.getBBox(); if (this.rotate180) { this.$box.begin().moveTo(0, 0).lineTo(-2, 5).lineTo(-textBBox.width / 2 - 5, 5).lineTo(-textBBox.width / 2 - 5, textBBox.height + 2 + 5).lineTo(textBBox.width / 2 + 5, +textBBox.height + 2 + 5).lineTo(textBBox.width / 2 + 5, 5).lineTo(2, 5).end(); this.$text.attr('y', 3 + textBBox.height); } else { this.$box.begin().moveTo(0, 0).lineTo(-2, -5).lineTo(-textBBox.width / 2 - 5, -5).lineTo(-textBBox.width / 2 - 5, -textBBox.height - 2 - 5).lineTo(textBBox.width / 2 + 5, -textBBox.height - 2 - 5).lineTo(textBBox.width / 2 + 5, -5).lineTo(2, -5).end(); this.$text.attr('y', -10); } }; MappingChartMarker.prototype.moveTo = function (x, y) { this.attr('transform', translate(x, y)); return this; }; MappingChartMarker.property = {}; MappingChartMarker.property.text = { set: function set(value) { this._text = value + ''; this.$text.innerHTML = this._text; this.updateBox(); }, get: function get() { return this._text || ''; } }; MappingChartMarker.property.rotate180 = { set: function set(value) { this._rotate180 = !!value; this.updateBox(); }, get: function get() { return !!this._rotate180; } }; MappingChartMarker.attribute = {}; MappingChartMarker.attribute.rotate180 = { set: function set(value) { this.rotate180 = value == 'true' || value === true; }, get: function get() { return this.rotate180 ? 'true' : 'false'; }, remove: function remove() { this.rotate180 = false; } }; MappingChartMarker.attribute.rotate180 = { set: function set(value) { value = parseFloat(value + ''); if (isNumber(value)) { this.hitboxWidth = value; } }, get: function get() { return this.hitboxWidth + ''; }, remove: function remove() { this.hitboxWidth = 6; } }; MappingChartMarker.prototype.init = function (props) { this["super"](props); this.sync.then(this.updateBox.bind(this)); }; src_VCore.creator.mappingchartmarker = MappingChartMarker; src_VCore.creator.mappingchart = MappingChart; /* harmony default export */ const src_MappingChart = ((/* unused pure expression or super */ null && (MappingChart))); ;// CONCATENATED MODULE: ./template/salaryimgchart.svg /* harmony default export */ const salaryimgchart = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\n<svg width=\"560\" height=\"320\" version=\"1.1\" viewBox=\"0 0 560 320\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <defs>\n <marker id=\"Arrow1Send\" overflow=\"visible\" orient=\"auto\">\n <path transform=\"scale(.2) rotate(180) translate(6)\" d=\"m0 0 5-5-17.5 5 17.5 5-5-5z\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1pt\"/>\n </marker>\n <marker id=\"Arrow1Sstart\" overflow=\"visible\" orient=\"auto\">\n <path transform=\"scale(.2) translate(6)\" d=\"m0 0 5-5-17.5 5 17.5 5-5-5z\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1pt\"/>\n </marker>\n <marker id=\"Arrow2Mend\" overflow=\"visible\" orient=\"auto\">\n <path transform=\"scale(-.6)\" d=\"m8.7186 4.0337-10.926-4.0177 10.926-4.0177c-1.7455 2.3721-1.7354 5.6175-6e-7 8.0354z\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-linejoin=\"round\" stroke-width=\".625\"/>\n </marker>\n <marker id=\"Arrow2Mstart\" overflow=\"visible\" orient=\"auto\">\n <path transform=\"scale(.6)\" d=\"m8.7186 4.0337-10.926-4.0177 10.926-4.0177c-1.7455 2.3721-1.7354 5.6175-6e-7 8.0354z\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-linejoin=\"round\" stroke-width=\".625\"/>\n </marker>\n <marker id=\"Arrow1Sstart-8\" overflow=\"visible\" orient=\"auto\">\n <path transform=\"matrix(.2 0 0 .2 1.2 0)\" d=\"m0 0 5-5-17.5 5 17.5 5z\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1pt\"/>\n </marker>\n <marker id=\"Arrow1Send-3\" overflow=\"visible\" orient=\"auto\">\n <path transform=\"matrix(-.2 0 0 -.2 -1.2 0)\" d=\"m0 0 5-5-17.5 5 17.5 5z\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1pt\"/>\n </marker>\n </defs>\n <metadata>\n <rdf:RDF>\n <cc:Work rdf:about=\"\">\n <dc:format>image/svg+xml</dc:format>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:title/>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n </g>\n</svg>\n"); ;// CONCATENATED MODULE: ./src/ImagesChart.js var ImagesChart_ = src_VCore._; var ImagesChart_$ = src_VCore.$; /** * @deprecated * @constructor */ function SalaryImgChart() {} SalaryImgChart.tag = 'SalaryImgChart'.toLowerCase(); SalaryImgChart.render = function () { return ImagesChart_(salaryimgchart.replace(/(.|[\r\n])+\<svg/, '<svg')).addClass('image-chart').addClass('base-chart'); }; SalaryImgChart.property = {}; SalaryImgChart.prototype.preInit = function () { //this is defaul and can not be change this.bonus = 20; this.distance = 400; this.minDistance = 10; this.colTexts = ['Bậc 1', 'Bậc n -1', 'Bậc n']; this.distText = 'Khoảng cách lương'; this.minDistText = 'Khoảng cách tối thiểu'; this.bonusText = 'Hệ số ưu đãi (20%)'; }; SalaryImgChart.prototype.initComp = function () { this.$ox = ImagesChart_('shape.image-chart-ox').addTo(this); this.$oxDash = ImagesChart_('shape.image-chart-ox[stroke-dasharray="4, 2"]').addTo(this); this.$bases = [ImagesChart_('rect.image-chart-base').addTo(this), ImagesChart_('rect.image-chart-base').addTo(this), ImagesChart_('rect.image-chart-base').addTo(this)]; this.$bonuses = [ImagesChart_('rect.image-chart-bonus').addTo(this), ImagesChart_('rect.image-chart-bonus').addTo(this), ImagesChart_('rect.image-chart-bonus').addTo(this)]; this.$distRange = ImagesChart_('shape.image-chart-range[marker-end="url(#Arrow2Mend)"][marker-start="url(#Arrow2Mstart)"]').addTo(this); this.$minDistRange = ImagesChart_('shape.image-chart-range[marker-end="url(#Arrow1Send)"][marker-start="url(#Arrow1Sstart)"]').addTo(this); this.$bonusRange = ImagesChart_('shape.image-chart-range[marker-end="url(#Arrow1Send)"][marker-start="url(#Arrow1Sstart)"]').addTo(this); this.$distTop = ImagesChart_('shape.image-chart-range-limit[stroke-dasharray="2, 1"]').addTo(this); this.$distBot = ImagesChart_('shape.image-chart-range-limit[stroke-dasharray="2, 1"]').addTo(this); this.$minDistBot = ImagesChart_('shape.image-chart-range-limit[stroke-dasharray="2, 1"]').addTo(this); this.$bonusTop = ImagesChart_('shape.image-chart-range-limit[stroke-dasharray="2, 1"]').addTo(this); this.$bonusBot = ImagesChart_('shape.image-chart-range-limit[stroke-dasharray="2, 1"]').addTo(this); this.$distText = helper_text('', 0, 0).addTo(this); this.$minDistText = helper_text('', 0, 0).attr('text-anchor', 'end').addTo(this); this.$bonusText = helper_text('', 0, 0).addTo(this); this.$lvTexts = [null, null, null].map(function () { return helper_text('', 0, 0).attr('text-anchor', 'middle').addTo(this); }.bind(this)); }; SalaryImgChart.prototype.updateComp = function () { var width = 560; var height = 320; var maxColHeight = 288; var _this = this; this.oxY = height - 20; this.colWidth = 40; this.oxSeg = [10, 100, 260, 500]; this.xCols = [37, 272, 373]; this.heightCols = [maxColHeight / (1 + this.distance / 100), maxColHeight / (1 + this.minDistance / 100), maxColHeight]; //<path d="m2.9298 290.03h21.626m43.891 0h51.013" fill="none" stroke="#4472c4" stroke-width=".26458px"/> this.$ox.begin().moveTo(this.oxSeg[0], this.oxY + 1).lineTo(this.oxSeg[1], this.oxY + 1).moveTo(this.oxSeg[2], this.oxY + 1).lineTo(this.oxSeg[3], this.oxY + 1).end(); // <path d="m24.555 290.03h43.891" fill="none" stroke="#4372c4" stroke-dasharray="1.05999993, 0.52999997" stroke-width=".265"/> this.$oxDash.begin().moveTo(this.oxSeg[1], this.oxY + 1).lineTo(this.oxSeg[2], this.oxY + 1).end(); this.heightBase = this.heightCols.map(function (hc) { return map(100, 0, 100 + _this.bonus, 0, hc); }); this.heightBonus = this.heightCols.map(function (hc) { return map(_this.bonus, 0, 100 + _this.bonus, 0, hc); }); this.$bases.forEach(function (e, i) { var x = _this.xCols[i]; var height = _this.heightBase[i]; e.attr({ x: x, y: _this.oxY - height, width: _this.colWidth, height: height }); }); this.$bonuses.forEach(function (e, i) { var x = _this.xCols[i]; var height = _this.heightBonus[i]; e.attr({ x: x, y: _this.oxY - _this.heightCols[i], width: _this.colWidth, height: height }); }); this.$distRange.begin().moveTo(this.xCols[0] - 13, this.oxY - this.heightBase[2] + 2).lineTo(this.xCols[0] - 13, this.oxY - this.heightBase[0] - 2).end(); this.$minDistRange.begin().moveTo(this.xCols[1] - 38, this.oxY - this.heightBase[2] + 1).lineTo(this.xCols[1] - 38, this.oxY - this.heightBase[1] - 1).end(); this.$bonusRange.begin().moveTo(this.xCols[2] + 13 + this.colWidth, this.oxY - this.heightBase[2] - this.heightBonus[2] + 1).lineTo(this.xCols[2] + 13 + this.colWidth, this.oxY - this.heightBase[2] - 1).end(); this.$distTop.begin().moveTo(this.xCols[0] - 13, this.oxY - this.heightBase[2]).lineTo(this.xCols[2], this.oxY - this.heightBase[2]).end(); this.$distBot.begin().moveTo(this.xCols[0] - 13, this.oxY - this.heightBase[0]).lineTo(this.xCols[0], this.oxY - this.heightBase[0]).end(); this.$minDistBot.begin().moveTo(this.xCols[1] - 38, this.oxY - this.heightBase[1]).lineTo(this.xCols[1], this.oxY - this.heightBase[1]).end(); this.$bonusBot.begin().moveTo(this.xCols[2] + this.colWidth, this.oxY - this.heightBase[2]).lineTo(this.xCols[2] + 13 + this.colWidth, this.oxY - this.heightBase[2]).end(); this.$bonusTop.begin().moveTo(this.xCols[2] + this.colWidth, this.oxY - this.heightBase[2] - this.heightBonus[2]).lineTo(this.xCols[2] + 13 + this.colWidth, this.oxY - this.heightBase[2] - this.heightBonus[2]).end(); this.$distText.innerHTML = this.distText; this.$distText.attr({ x: this.xCols[0] - 7, y: this.oxY - (this.heightBase[2] + this.heightBase[0]) / 2 + 5 }); this.$minDistText.innerHTML = this.minDistText; this.$minDistText.attr({ x: this.xCols[1] - 38 - 6, y: this.oxY - (this.heightBase[2] + this.heightBase[1]) / 2 + 5 }); this.$bonusText.innerHTML = this.bonusText; this.$bonusText.attr({ x: this.xCols[2] + 13 + this.colWidth + 6, y: this.oxY - this.heightBase[2] - this.heightBonus[2] / 2 + 5 }); this.$lvTexts.forEach(function (e, i) { e.innerHTML = _this.colTexts[i]; e.attr({ x: _this.xCols[i] + _this.colWidth / 2, y: _this.oxY + 15 }); }); }; SalaryImgChart.prototype.init = function (props) { this.preInit(); this["super"](props); this.initComp(); this.updateComp(); }; src_VCore.install(SalaryImgChart); /* harmony default export */ const ImagesChart = ((/* unused pure expression or super */ null && (SalaryImgChart))); ;// CONCATENATED MODULE: ./src/SalaryScaleChart.js var SalaryScaleChart_ = src_VCore._; var SalaryScaleChart_$ = src_VCore.$; /** * * @constructor */ function SalaryScaleChart() { this.resizeCtrl = new ChartResizeController(this); } SalaryScaleChart.tag = 'SalaryScaleChart'.toLowerCase(); SalaryScaleChart.render = function () { var svg = SalaryScaleChart_(salaryimgchart.replace(/(.|[\r\n])+<svg/, '<svg')).addClass('image-chart').addClass('vc-image-chart').addClass('vc-chart'); svg.$attachhook = SalaryScaleChart_('sattachhook').addTo(svg); return SalaryScaleChart_({ tag: svg_SvgCanvas.tag, elt: svg }); }; // SalaryScaleChart.prototype.updateSize = function () { // // this.attr({ // // width: this.canvasWidth, // // height: this.canvasHeight, // // viewBox: [0, 0, this.canvasWidth, this.canvasHeight].join(' ') // // }) // }; SalaryScaleChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this.update(); }; SalaryScaleChart.prototype.initComp = function () { this.$colTexts = this.colTexts.map(function () { return helper_text('', 100, 100).attr('text-anchor', 'middle').addTo(this); }.bind(this)); this.$bases = this.colTexts.map(function () { return SalaryScaleChart_('rect.image-chart-base').addTo(this); }.bind(this)); this.$bonuses = this.colTexts.map(function () { return SalaryScaleChart_('rect.image-chart-bonus').addTo(this); }.bind(this)); this.$oxLine = SalaryScaleChart_('shape.image-chart-ox').addTo(this); this.$oxDash = SalaryScaleChart_('shape.image-chart-ox[stroke-dasharray="4, 2"]').addTo(this); this.$sizeTexts = this.sizeTexts.map(function () { return helper_text('', 100, 100).addTo(this); }.bind(this)); this.$ranges = this.sizeTexts.map(function () { return SalaryScaleChart_('shape.image-chart-range[marker-end="url(#Arrow2Mend)"][marker-start="url(#Arrow2Mstart)"]', 100, 100).addTo(this); }.bind(this)); this.$hLine = Array(5).fill(0).map(function () { return SalaryScaleChart_('shape.image-chart-range-limit[stroke-dasharray="2, 1"]').addTo(this); }.bind(this)); }; SalaryScaleChart.prototype.updateText = function () { var self = this; this.$colTexts.forEach(function (elt, i) { var text = self.colTexts[i]; elt.innerHTML = text; elt.attr('y', self.oy); }); this.oy -= getMaxHeightBox.apply(null, this.$colTexts); this.oy -= this.textMargin; this.$sizeTexts.forEach(function (elt, i) { var text = self.sizeTexts[i]; elt.innerHTML = text; }); this.oxLength -= getMaxWidthBox(this.$sizeTexts[0], this.$sizeTexts[1]); this.oxLength -= this.textMargin; }; SalaryScaleChart.prototype.updateAxis = function () { var self = this; var leftCol = this.ox + this.axisPadding; var rightCol = this.ox + this.oxLength - this.axisPadding - this.rangeMargin - this.colWidth; this.colXs = [leftCol, leftCol / 3 + rightCol * 2 / 3, rightCol]; this.$oxLine.begin().moveTo(this.ox, this.oy).lineTo(this.ox + this.oxLength / 4, this.oy).moveTo(this.ox + this.oxLength / 2, this.oy).lineTo(this.ox + this.oxLength, this.oy).end(); this.$oxDash.begin().moveTo(this.ox + this.oxLength / 4, this.oy).lineTo(this.ox + this.oxLength / 2, this.oy).end(); this.$colTexts.forEach(function (elt, i) { elt.attr('x', self.colXs[i] + self.colWidth / 2); }); this.maxColHeight = this.oy - this.paddingContent; }; SalaryScaleChart.prototype.updateCols = function () { var self = this; this.heightCols = [this.maxColHeight / (1 + this.distance / 100), this.maxColHeight / (1 + this.minDistance / 100), this.maxColHeight]; if (this.bonus < 0) { this.heightCols = this.heightCols.map(function (x) { return x * (100 + self.bonus) / 100; }); } if (this.bonus < 0) { this.addClass('as-bonus-under-100-percent'); } else { this.removeClass('as-bonus-under-100-percent'); } this.baseHeight = this.heightCols.map(function (h) { return h / (100 + self.bonus) * 100; }); this.bonusHeight = this.heightCols.map(function (h) { return h / (100 + self.bonus) * self.bonus; }); this.$bases.forEach(function (e, i) { var height = self.baseHeight[i]; e.attr({ x: self.colXs[i], y: self.oy - height, width: self.colWidth, height: height }); }); if (this.bonus >= 0) { this.$bonuses.forEach(function (e, i) { var height = self.bonusHeight[i]; e.attr({ x: self.colXs[i], y: self.oy - self.heightCols[i], width: self.colWidth, height: height }); }); } else { this.$bonuses.forEach(function (e, i) { var height = self.bonusHeight[i]; e.attr({ x: self.colXs[i], y: self.oy - self.heightCols[i] + height, width: self.colWidth, height: -height }); }); } }; SalaryScaleChart.prototype.updateRange = function () { var self = this; var rangeX = this.colXs.map(function (x) { return x + self.colWidth + self.rangeMargin; }); this.$ranges[0].begin().moveTo(rangeX[2], this.oy - this.baseHeight[2] + this.arrowPadding).lineTo(rangeX[2], this.oy - this.baseHeight[0] - this.arrowPadding).end(); this.$ranges[1].begin().moveTo(rangeX[2], this.oy - this.baseHeight[0] + this.arrowPadding).lineTo(rangeX[2], this.oy - this.arrowPadding).end(); this.$ranges[2].begin().moveTo(rangeX[1], this.oy - this.baseHeight[2] + this.arrowPadding).lineTo(rangeX[1], this.oy - this.baseHeight[1] - this.arrowPadding).end(); this.$ranges[3].begin().moveTo(rangeX[1], this.oy - this.baseHeight[1] + this.arrowPadding).lineTo(rangeX[1], this.oy - this.arrowPadding).end(); this.$ranges[4].begin().moveTo(rangeX[0], this.oy - this.heightCols[0] + this.arrowPadding).lineTo(rangeX[0], this.oy - this.arrowPadding).end(); this.$hLine[0].begin().moveTo(this.colXs[2] + this.colWidth, this.oy - this.baseHeight[2]).lineTo(rangeX[2], this.oy - this.baseHeight[2]).end(); this.$hLine[1].begin().moveTo(this.colXs[2], this.oy - this.baseHeight[2]).lineTo(rangeX[1], this.oy - this.baseHeight[2]).end(); this.$hLine[2].begin().moveTo(this.colXs[1] + this.colWidth, this.oy - this.baseHeight[1]).lineTo(rangeX[1], this.oy - this.baseHeight[1]).end(); this.$hLine[3].begin().moveTo(this.colXs[0] + this.colWidth, this.oy - this.heightCols[0]).lineTo(rangeX[0], this.oy - this.heightCols[0]).end(); this.$hLine[4].begin().moveTo(this.colXs[0] + this.colWidth, this.oy - this.baseHeight[0]).lineTo(rangeX[2], this.oy - this.baseHeight[0]).end(); //a this.$sizeTexts[0].attr({ x: rangeX[2] + this.textMargin, y: this.oy - (this.baseHeight[2] + this.baseHeight[0]) / 2 + 4 }); //b this.$sizeTexts[1].attr({ x: rangeX[2] + this.textMargin, y: this.oy - this.baseHeight[0] / 2 + 4 }); //c this.$sizeTexts[2].attr({ x: rangeX[1] + this.textMargin, y: this.oy - (this.baseHeight[2] + this.baseHeight[1]) / 2 + 4 }); //d this.$sizeTexts[3].attr({ x: rangeX[1] + this.textMargin, y: this.oy - this.baseHeight[1] / 2 + 4 }); //e this.$sizeTexts[4].attr({ x: rangeX[0] + this.textMargin, y: this.oy - this.heightCols[0] / 2 + 4 }); }; SalaryScaleChart.prototype.update = function () { this.oy = this.canvasHeight - this.paddingContent; this.oxLength = this.canvasWidth - 2 * this.paddingContent; this.ox = this.paddingContent; this.updateText(); this.updateAxis(); this.updateCols(); this.updateRange(); }; SalaryScaleChart.prototype.preInit = function () { this.canvasWidth = 560; this.canvasHeight = 320; this.paddingContent = 10; this.colTexts = ['Bậc 1', 'Bậc n -1', 'Bậc n']; this.sizeTexts = ['a', 'b', 'c', 'd', 'e']; this.bonus = 20; this.distance = 80; this.minDistance = 10; // this.sizeTexts = ['Lương tối đa', 'b', 'c', 'd', 'e']; this.colWidth = 40; this.textMargin = 5; this.axisPadding = 30; this.rangeMargin = 20; this.arrowPadding = 2.5; }; SalaryScaleChart.prototype.init = function (props) { this.preInit(); this["super"](props); this.initComp(); this.$attachhook.once('attached', this.update.bind(this)); }; SalaryScaleChart.property = {}; SalaryScaleChart.property.canvasHeight = { set: function set(value) { this.addStyle('height', value + 'px'); this.box.height = value; }, get: function get() { return this.box.height; } }; SalaryScaleChart.property.canvasWidth = { set: function set(value) { this.addStyle('width', value + 'px'); this.box.width = value; }, get: function get() { return this.box.width; } }; src_VCore.install('SalaryScaleChart'.toLowerCase(), SalaryScaleChart); ;// CONCATENATED MODULE: ./src/HorizontalBarChart.js var HorizontalBarChart_ = src_VCore._; var HorizontalBarChart_$ = src_VCore.$; function HorizontalBarChart() { var self = this; this.resizeCtrl = new ChartResizeController(this); this._bars = []; this._vLines = []; this._title = ''; this._ranges = []; this._includeValues = []; this._dataUpdateTimeout = -1; this._padding = 5; this._ox = 0; this._oy = 0; this._oxLength = 0; this._oyLength = 0; this._oyTop = 25; this._oxRight = this._padding; this._barWidth = 35; this._rangeWidth = 15; this._minValue = 0; this._maxValue = 10; this._keys = []; this._keyColors = []; this._barMargin = 5; this._zeroOY = true; this._maxSegment = 10; this._minRangeText = "Min"; this._maxRangeText = "Max"; /** * @type {import('./Axis').default} */ this.$axis = HorizontalBarChart_$('axis', this); this.$title = HorizontalBarChart_$('text.vc-horizontal-bar-title', this); this.$whiteBoxMask = HorizontalBarChart_$('.base-chart-white-mask', this); this.$content = HorizontalBarChart_$('.vc-horizontal-bar-chart-content', this); this.$noteContainer = HorizontalBarChart_$('g.vc-horizontal-bar-note-container', this); this.$noteBox = HorizontalBarChart_$('.vc-horizontal-bar-vline-note-box', this); this.$oneBarNoteContainer = HorizontalBarChart_$('g.vc-horizontal-bar-one-bar-note-container', this); // this.$keysNoteContainer = $('g.vc-horizontal-bar-keys-note-container', this); this.$vLinesNoteContainer = HorizontalBarChart_$('g.vc-horizontal-bar-vline-note-container', this); this.$segmentTextContainer = HorizontalBarChart_$('g.vc-horizontal-bar-segment-text-container', this); this.$vLineContainer = HorizontalBarChart_$('g.vc-horizontal-bar-vline-container', this); this.$valueLineContainer = HorizontalBarChart_$('.vc-horizontal-bar-chart-value-line-container', this); this.$keys = []; this.$segmentTexts = []; this.$valueLines = []; this.$bars = []; this.$ranges = []; this.$vLines = []; this.$attachhook = HorizontalBarChart_$("sattachhook", this).on('error', function (error) { this.updateSize = this.updateSize || self.updatePosition.bind(self); Dom/* default.addToResizeSystem */.ZP.addToResizeSystem(this); }); this.sync = new Promise(function (rs) { self.$attachhook.on('error', rs); }); this.sync.then(this.notifyDataChange.bind(this)); } HorizontalBarChart.tag = 'HorizontalBarChart'.toLowerCase(); HorizontalBarChart.prototype._createKeyNote = function (color, keyName) { return HorizontalBarChart_({ "class": 'vc-horizontal-bar-key-note', child: [rect(0, 0, 14, 14).addStyle('fill', color), helper_text(keyName, 17, 12)] }); }; HorizontalBarChart.prototype._createVLineNote = function (color, keyName) { return HorizontalBarChart_({ "class": 'vc-horizontal-bar-vline-note', child: [hline(0, 7, 20).addStyle('stroke', color), helper_text(keyName, 25, 12)] }); }; HorizontalBarChart.prototype.processData = function () { this._minValue = this._bars.concat(this._includeValues).reduce(function (ac, cr) { return Math.min(ac, cr); }, 10000000); this._minValue = this._ranges.reduce(function (ac, cr) { return Math.min(ac, cr[0], cr[1]); }, this._minValue); this._maxValue = this._bars.concat(this._includeValues).reduce(function (ac, cr) { return Math.max(ac, cr); }, -10000000); this._maxValue = this._ranges.reduce(function (ac, cr) { return Math.max(ac, cr[1], cr[0]); }, this._maxValue); if (this._zeroOY) this._minValue = Math.min(0, this._minValue); this._beautiSegment = calBeautySegment(this._maxSegment, this._minValue, this._maxValue); }; HorizontalBarChart.prototype.initBarNote = function () { this.$oneBarNoteContainer.$minText = helper_text(this._minRangeText, 0, 14).addTo(this.$oneBarNoteContainer); this.$oneBarNoteContainer.$maxText = helper_text(this._maxRangeText, 0, 14 + 10 + this._barWidth + 10 + 14).addTo(this.$oneBarNoteContainer); this.$oneBarNoteContainer.$bar = this.$oneBarNoteContainer.$bar || rect(0.5, 14 + 10 + 0.5, 100, this._barWidth - 1, 'vc-horizontal-bar-chart-bar').addTo(this.$oneBarNoteContainer); this.$oneBarNoteContainer.$range = this.$oneBarNoteContainer.$range || rect(80.5, 14 + 10 + Math.floor((this._barWidth - this._rangeWidth) / 2) + 0.5, 30, this._rangeWidth - 1, 'vc-horizontal-bar-chart-range').addTo(this.$oneBarNoteContainer); this.$oneBarNoteContainer.$minLine = vline(80.5, 14 + 10 + Math.floor((this._barWidth - this._rangeWidth) / 3), -Math.floor((this._barWidth - this._rangeWidth) / 3) - 5, 'vc-horizontal-bar-chart-range-min-line').addTo(this.$oneBarNoteContainer); this.$oneBarNoteContainer.$maxLine = vline(80.5 + 30, 14 + 10 + this._barWidth - Math.floor((this._barWidth - this._rangeWidth) / 2), Math.floor((this._barWidth - this._rangeWidth) / 2) + 8, 'vc-horizontal-bar-chart-range-max-line').addTo(this.$oneBarNoteContainer); }; HorizontalBarChart.prototype.updateOneBarNotePosition = function () { var minTextBox = this.$oneBarNoteContainer.$minText.getBBox(); var maxTextBox = this.$oneBarNoteContainer.$maxText.getBBox(); var maxTextLength = Math.max(minTextBox.width, maxTextBox.width); if (minTextBox.width / 2 > 80.5) { this.$oneBarNoteContainer.$bar.attr('x', Math.floor(maxTextLength / 2 - 80.5) + 0.5 + ''); this.$oneBarNoteContainer.$range.attr('x', Math.floor(maxTextLength / 2 - 80.5) + 0.5 + 80 + ''); moveVLine(this.$oneBarNoteContainer.$minLine, Math.floor(minTextBox.width / 2 - 80.5) + 0.5 + 80, 14 + 10 + Math.floor((this._barWidth - this._rangeWidth) / 3), -Math.floor((this._barWidth - this._rangeWidth) / 3) - 5); moveVLine(this.$oneBarNoteContainer.$maxLine, Math.floor(minTextBox.width / 2 - 80.5) + 0.5 + 80 + 30, 14 + 10 + this._barWidth - Math.floor((this._barWidth - this._rangeWidth) / 2), Math.floor((this._barWidth - this._rangeWidth) / 2) + 8); } else { this.$oneBarNoteContainer.$minText.attr('x', 80.5 - minTextBox.width / 2); this.$oneBarNoteContainer.$maxText.attr('x', 80.5 + 30 - maxTextBox.width / 2); } }; HorizontalBarChart.prototype.generateColor = function () { var colorLength = Math.max(this._keys.length, this._bars.length) + this._vLines.length; if (this._keyColors.length < colorLength) { this._keyColors = generateBackgroundColors(colorLength).map(function (c) { return fresherColor(c); }); } }; HorizontalBarChart.prototype.initKeysNote = function () { var self = this; this.$keysNoteContainer.clearChild(); this.$keyNotes = this._keys.map(function (text, i) { var color = self._keyColors[i]; return self._createKeyNote(color, text).addTo(self.$keysNoteContainer); }); }; HorizontalBarChart.prototype.initVLinesNote = function () { var self = this; this.$vLinesNoteContainer.clearChild(); this.$vLineNotes = this._vLines.map(function (vline, i) { return self._createVLineNote(vline.color || lighterColor(self._keyColors[self._keys.length + i], -0.2), vline.name + '').addTo(self.$vLinesNoteContainer).attr('transform', translate(0, i * 20)); }); }; HorizontalBarChart.prototype.initNote = function () { this.initVLinesNote(); this.initBarNote(); }; HorizontalBarChart.prototype.updateNotePosition = function () { this.updateOneBarNotePosition(); var y = this._padding; var x = this._padding; this.$vLinesNoteContainer.attr('transform', translate(x, y)); y += this.$vLinesNoteContainer.getBBox().height + 5 + this._padding; this.$oneBarNoteContainer.attr('transform', translate(this._padding, y)); this.$noteBox.attr({ width: '1', height: '1' }); //align right var box = this.$noteContainer.getBBox(); this.$noteBox.attr({ width: box.width + this._padding - 1 + '', height: box.height + this._padding - 1 + '' }); this.$noteContainer.attr('transform', translate(this._canvasWidth - this._padding - box.width - this._padding, this._canvasHeight / 3 - (box.height + this._padding) / 2)); this._oxRight = this._canvasWidth - box.width - this._padding * 2; }; HorizontalBarChart.prototype.initAxisText = function () { while (this.$keys.length < this._keys.length) { this.$keys.push(helper_text('', 0, 0, 'vc-horizontal-bar-chart-key').addTo(this.$content)); } while (this.$keys.length > this._keys.length) { this.$keys.pop().remove(); } for (var i = 0; i < this._keys.length; ++i) { this.$keys[i].innerHTML = this._keys[i]; } while (this.$segmentTexts.length > this._beautiSegment.segmentCount + 1) { this.$segmentTexts.pop().remove(); } while (this.$segmentTexts.length < this._beautiSegment.segmentCount + 1) { this.$segmentTexts.push(helper_text('', 0, 0, 'vc-horizontal-bar-chart-segment-text').addTo(this.$segmentTextContainer)); } for (var i = 0; i < this.$segmentTexts.length; ++i) { this.$segmentTexts[i].innerHTML = this._beautiSegment.minValue + this._beautiSegment.step * i + ''; } this.$valueLineContainer.clearChild(); this.$valueLines = Array(this.$segmentTexts.length - 1).fill(0).map(function () { return vline(0, 0, 0, 'vc-horizontal-bar-chart-value-line').addTo(this.$valueLineContainer); }.bind(this)); }; HorizontalBarChart.prototype.initBars = function () { while (this.$bars.length < this._bars.length) { this.$bars.push(rect(0, 0, 0, this._barWidth, 'vc-horizontal-bar-chart-bar').addTo(this.$content)); } while (this.$bars.length > this._bars.length) { this.$bars.pop().remove(); } for (var i = 0; i < this.$bars.length; ++i) { this.$bars[i].addStyle('fill', this._keyColors[i]); } }; HorizontalBarChart.prototype.initRanges = function () { while (this.$ranges.length < this._ranges.length) { this.$ranges.push(rect(0, 0, 0, this._rangeWidth, 'vc-horizontal-bar-chart-range').addTo(this.$content)); } while (this.$ranges.length > this._ranges.length) { this.$ranges.pop().remove(); } for (var i = 0; i < this.$ranges.length; ++i) { this.$ranges[i].addStyle('fill', lighterColor(this._keyColors[i], 0.3)); } }; HorizontalBarChart.prototype.initVLines = function () { var self = this; this.$vLineContainer.clearChild(); this.$vLines = this._vLines.map(function (vLineData, i) { return vline(0, 0, 0, 'vc-horizontal-bar-vline').addStyle('stroke', vLineData.color || lighterColor(self._keyColors[self._keys.length + i], -0.2)).addTo(self.$vLineContainer); }); }; HorizontalBarChart.prototype.notifyDataChange = function () { if (this._dataUpdateTimeout >= 0) return; var self = this; this._dataUpdateTimeout = setTimeout(function () { self.update(); self._dataUpdateTimeout = -1; }); }; HorizontalBarChart.prototype.updateCanvasSize = function () { var bound = this.getBoundingClientRect(); this._canvasHeight = this.__canvasHeight; this._canvasWidth = this.__canvasWidth; if (!(this._canvasWidth > 0)) { this._canvasWidth = bound.width; } if (!(this._canvasHeight > 0)) { this._canvasHeight = bound.height; } this.attr('width', this._canvasWidth + ''); this.attr('height', this._canvasHeight + ''); this._oyTop = 25 + this.$title.getBBox().height * 1.5; this._ox = this._padding; this._oy = this._canvasHeight - this._padding; this._oxLength = this._oxRight - this._padding - this._ox; this._oyLength = this._oy - this._padding - this._oyTop; }; HorizontalBarChart.prototype.updateAxisPosition = function () { this.$axis.moveTo(this._ox - 0.5, this._oy - 0.5); this.$axis.resize(this._oxLength + 15, this._oyLength + 10); this.$whiteBoxMask.attr('d', 'M0,0 0,cvh cvw,cvh cvw,0zMleft,top left,bottom right,bottom right,topz'.replace(/cvh/g, this._canvasHeight).replace(/cvw/g, this._canvasWidth).replace(/left/g, this._padding).replace(/top/g, 10).replace(/bottom/g, this._oy).replace(/right/g, this._canvasWidth - 10)); this.$title.attr('x', (this._oxRight + this._ox) / 2 + ''); }; HorizontalBarChart.prototype.updateAxisTextPosition = function () { var maxWidthKey = getMaxWidthBox.apply(null, this.$keys); this._ox = Math.ceil(maxWidthKey) + 0.5 + this._padding + 5; this._oxLength = this._oxRight - this._padding - this._ox; this._oy -= 21; this._oyLength = this._oy - this._padding - this._oyTop; var barMargin = Math.max(this._barMargin, (this._oyLength / this._keys.length - this._barWidth) / 2); var i; for (i = 0; i < this.$keys.length; ++i) { this.$keys[i].attr({ x: -5, y: -(i + 0.5) * (barMargin * 2 + this._barWidth) + 7 }); this.$bars[i].attr('y', -i * (barMargin * 2 + this._barWidth) - barMargin - this._barWidth); this.$ranges[i].attr('y', -i * (barMargin * 2 + this._barWidth) - barMargin - this._barWidth + Math.floor((this._barWidth - this._rangeWidth) / 2)); } this._segmentLength = this._oxLength / this._beautiSegment.segmentCount; for (i = 0; i < this.$segmentTexts.length; ++i) { this.$segmentTexts[i].attr({ x: this._ox + this._segmentLength * i, y: this._oy + 18 }); } for (i = 0; i < this.$valueLines.length; ++i) { moveVLine(this.$valueLines[i], this._ox + this._segmentLength * (i + 1), this._oy - this._oyLength, this._oyLength); } this.$content.attr('transform', translate(this._ox, this._oy)); }; HorizontalBarChart.prototype.updateBarsPosition = function () { for (var i = 0; i < this.$bars.length; ++i) { this.$bars[i].attr('width', map(this._bars[i], this._beautiSegment.minValue, this._beautiSegment.maxValue, 0, this._oxLength)); } }; HorizontalBarChart.prototype.updateRangesPosition = function () { var left, right, range; for (var i = 0; i < this.$bars.length; ++i) { range = this._ranges[i]; left = map(range[0], this._beautiSegment.minValue, this._beautiSegment.maxValue, 0, this._oxLength); right = map(range[1], this._beautiSegment.minValue, this._beautiSegment.maxValue, 0, this._oxLength); this.$ranges[i].attr({ width: right - left + '', x: left + '' }); } }; HorizontalBarChart.prototype.updateVLinesPosition = function () { for (var i = 0; i < this.$vLines.length; ++i) { moveVLine(this.$vLines[i], this._ox + map(this._vLines[i].value, this._beautiSegment.minValue, this._beautiSegment.maxValue, 0, this._oxLength), this._oy - this._oyLength, this._oyLength); } }; HorizontalBarChart.prototype.updatePosition = function () { this.updateCanvasSize(); this.updateNotePosition(); this.updateAxisTextPosition(); this.updateBarsPosition(); this.updateRangesPosition(); this.updateVLinesPosition(); this.updateAxisPosition(); }; HorizontalBarChart.prototype.update = function () { this.generateColor(); this.processData(); this.initNote(); this.initAxisText(); this.initBars(); this.initRanges(); this.initVLines(); this.updatePosition(); }; HorizontalBarChart.property = {}; HorizontalBarChart.property.canvasWidth = { set: function set(value) { if (value >= 0) { this.attr('width', undefined); this.__canvasWidth = value; } else { this._canvasWidth = -1; } this.notifyDataChange(); }, get: function get() { return this.__canvasWidth; } }; HorizontalBarChart.property.canvasHeight = { set: function set(value) { if (value >= 0) { this.attr('height', undefined); this.__canvasHeight = value; } else { this.__canvasHeight = -1; } this.notifyDataChange(); }, get: function get() { return this.__canvasHeight; } }; HorizontalBarChart.property.keys = { set: function set(value) { this._keys = value || []; this.notifyDataChange(); }, get: function get() { return this._keys; } }; HorizontalBarChart.property.bars = { set: function set(value) { this._bars = value || []; this.notifyDataChange(); }, get: function get() { return this._bars; } }; HorizontalBarChart.property.ranges = { set: function set(value) { this._ranges = value || []; this.notifyDataChange(); }, get: function get() { return this._ranges; } }; HorizontalBarChart.property.vLines = { set: function set(value) { this._vLines = value || []; this.notifyDataChange(); }, get: function get() { return this._vLines; } }; HorizontalBarChart.property.includeValues = { set: function set(value) { this._includeValues = value || []; this.notifyDataChange(); }, get: function get() { return this._includeValues; } }; HorizontalBarChart.property.maxSegment = { set: function set(value) { this._maxSegment = value || 10; }, get: function get() { return this._maxSegment; } }; HorizontalBarChart.property.title = { set: function set(value) { this._title = value || ''; this.$title.innerHTML = this._title; this.notifyDataChange(); }, get: function get() { return this._title; } }; HorizontalBarChart.property.minRangeText = { set: function set(value) { this._minRangeText = value || ''; this.notifyDataChange(); }, get: function get() { return this._minRangeText; } }; HorizontalBarChart.property.maxRangeText = { set: function set(value) { this._maxRangeText = value || ''; this.notifyDataChange(); }, get: function get() { return this._maxRangeText; } }; HorizontalBarChart.property.title = { set: function set(value) { this._title = value || ''; this.$title.innerHTML = this._title; this.notifyDataChange(); }, get: function get() { return this._title; } }; HorizontalBarChart.render = function () { return HorizontalBarChart_({ tag: 'svg', "class": ['vc-horizontal-bar-chart', 'base-chart'], child: ['.vc-horizontal-bar-chart-value-line-container', '.vc-horizontal-bar-chart-content', { tag: 'path', "class": 'base-chart-white-mask', attr: { fill: 'white', stroke: 'white', 'fill-rule': 'evenodd', d: 'M0,0 0,2000 2000,2000 2000,0zM100,100 100,200 200,200 200,100z' } }, 'axis', 'g.vc-horizontal-bar-segment-text-container', 'g.vc-horizontal-bar-vline-container', { "class": 'vc-horizontal-bar-note-container', child: [rect(0.5, 0.5, 1, 1, 'vc-horizontal-bar-vline-note-box'), 'g.vc-horizontal-bar-vline-note-container', 'g.vc-horizontal-bar-one-bar-note-container'] }, 'text.vc-horizontal-bar-title[y="20"]', 'sattachhook'] }); }; src_VCore.install('HorizontalBarChart'.toLowerCase(), HorizontalBarChart); /* harmony default export */ const src_HorizontalBarChart = ((/* unused pure expression or super */ null && (HorizontalBarChart))); // EXTERNAL MODULE: ./src/style/spiderchart.css var spiderchart = __webpack_require__(9563); ;// CONCATENATED MODULE: ./src/NoteGrid.js var NoteGrid_ = src_VCore._; var NoteGrid_$ = src_VCore.$; function NoteGrid() { this._width = NaN; this._height = NaN; this._itemMargin = 0; this._padding = 0; this.$content = NoteGrid_$('.vchart-node-grid-content', this); this.$box = NoteGrid_$('rect.vchart-node-grid-box', this); this.boxWidth = 0; this.boxHeight = 0; } NoteGrid.tag = 'NoteGrid'.toLowerCase(); NoteGrid.prototype.updateSize = function () { // this. var children = Array.prototype.slice.call(this.$content.children); var bBoxes = children.map(function (e) { return e.getBBox(); }); var maxWidth = bBoxes.reduce(function (ac, cr) { return Math.max(ac, cr.width); }, 0); var maxHeight = bBoxes.reduce(function (ac, cr) { return Math.max(ac, cr.height); }, 0); var availableWidth; if (this._width > 0) availableWidth = this._width;else availableWidth = this._padding * 2 + (children.length - 1) * this._itemMargin + children.length * maxWidth; var itemPerRow = Math.floor((availableWidth - this._padding * 2 + this._itemMargin + 0.1) / (maxWidth + this._itemMargin)); var marginRight = (availableWidth - this._padding * 2 - itemPerRow * maxWidth) / (itemPerRow - 1); //in view var availableHeight; var itemPerCol = Math.ceil(children.length / itemPerRow); if (this._height > 0) availableHeight = this._height;else availableHeight = this._padding * 2 + (itemPerCol - 1) * this._itemMargin + itemPerCol * maxHeight; var marginBottom = (availableHeight - this._padding * 2 - itemPerCol * maxHeight) / (itemPerCol - 1); //in view this.boxWidth = availableWidth; this.boxHeight = availableHeight; this.$box.attr({ x: 0, y: 0, width: availableWidth, height: availableHeight }); var i = 0; var x, y; if (isNaN(marginBottom)) marginBottom = 0; if (isNaN(marginRight)) marginRight = 0; for (var rIndex = 0; rIndex < itemPerCol && i < children.length; ++rIndex) { for (var cIndex = 0; cIndex < itemPerRow && i < children.length; ++cIndex) { x = this._padding + cIndex * (maxWidth + marginRight); y = this._padding + rIndex * (maxHeight + marginBottom); children[i].attr('transform', translate(x, y)); ++i; } } }; ['addChild', 'clearChild', 'removeChild', 'addChildBefore', 'findChildBefore', 'findChildAfter'].forEach(function (name) { NoteGrid.prototype[name] = function () { return this.$content[name].apply(this.$content, arguments); }; }); NoteGrid.render = function () { return NoteGrid_({ "class": 'vchart-node-grid', child: ['rect.vchart-node-grid-box', '.vchart-node-grid-content'] }); }; NoteGrid.attribute = {}; NoteGrid.attribute.width = { set: function set(value) { value = parseFloat(value); this._width = value; }, get: function get() { return this._width; }, remove: function remove() { this._width = NaN; } }; NoteGrid.attribute.height = { set: function set(value) { value = parseFloat(value); this._height = value; }, get: function get() { return this._height; }, remove: function remove() { this._height = NaN; } }; NoteGrid.attribute.itemMargin = { set: function set(value) { value = parseFloat(value); this._itemMargin = value; }, get: function get() { return this._itemMargin; }, remove: function remove() { this._itemMargin = NaN; } }; NoteGrid.attribute.padding = { set: function set(value) { value = parseFloat(value); this._padding = value; }, get: function get() { return this._padding; }, remove: function remove() { this._padding = NaN; } }; src_VCore.install('NoteGrid'.toLowerCase(), NoteGrid); /* harmony default export */ const src_NoteGrid = ((/* unused pure expression or super */ null && (NoteGrid))); ;// CONCATENATED MODULE: ./src/SpiderChart.js var SpiderChart_ = src_VCore._; var SpiderChart_$ = src_VCore.$; function SpiderChart() { this.$attachhook = SpiderChart_('attachhook').addTo(this).on('attached', this.eventHandler.attached); this.$background = SpiderChart_$('.vchart-spider-chart-background', this); this.$axisCtn = SpiderChart_$('.vchart-spider-chart-axis-ctn', this.$background); this.$forceground = SpiderChart_$('.vchart-spider-chart-forceground', this); this.$title = SpiderChart_$('.base-chart-title', this.$forceground); this.$noteCtn = SpiderChart_$('.vchart-spider-chart-note-ctn', this); this._canvasWidth = 'auto'; this._canvasHeight = 'auto'; this._viewCanvasHeight = 0; this._viewCanvasWidth = 0; this._resizeCallback = []; this._drew = false; this.ctitle = { text: 'This is title', $elt: this.$title }; this._viewExpected = {}; this._viewOption = {// noteLineLength: 15, // noteBoxHight: 14 }; this.$noteGrid = SpiderChart_$('notegrid', this); } SpiderChart.tag = 'SpiderChart'.toLowerCase(); SpiderChart.render = function () { return SpiderChart_({ tag: 'svg', "class": 'vchart-base', child: [{ "class": 'vchart-spider-chart-background', child: ['.vchart-spider-chart-axis-ctn'] }, { "class": 'vchart-spider-chart-content' }, { "class": 'vchart-spider-chart-forceground', child: ['text.base-chart-title', '.vchart-spider-chart-note-ctn'] }, { tag: 'notegrid', attr: { itemMargin: 20, padding: 5 }, child: [{ tag: src_KeyNote, attr: { transform: translate(10, 20) }, props: { type: 'line', text: 'Long long text', color: 'red' } }, { tag: src_KeyNote, attr: { transform: translate(10, 40) }, props: { type: 'rect', text: 'Long long text', color: 'red' } }] }] }); }; /** * @param {Array<Rectangle>} rects * @returns {Rectangle} */ SpiderChart.prototype._expectSize = function (rects, r) { var cr = new Rectangle(0, 0, 0, 0); var rect; for (var i = 0; i < rects.length; ++i) { var angle = Math.PI * 2 * i / rects.length - Math.PI / 2; rect = rects[i]; if (i == 0) { rect.x = rect.width / 2; rect.y = -rect.height - r; } else if (rects.length % 4 == 0 && i == rects.length >> 2) { rect.x = r; rect.y = rect.height / 2; } else if (rects.length % 4 == 0 && i == (rects.length >> 2) * 3) { rect.x = -r - rect.width; rect.y = rect.height / 2; } else if (rects.length % 2 == 0 && i == rects.length >> 1) { rect.x = rect.width / 2; rect.y = r; } else if (i < rects.length / 4) { rect.x = r * Math.cos(angle); rect.y = r * Math.sin(angle) - rect.height; } else if (i < rects.length / 2) { rect.x = r * Math.cos(angle); rect.y = r * Math.sin(angle); } else if (i < rects.length / 4 * 3) { rect.x = r * Math.cos(angle) - rect.width; rect.y = r * Math.sin(angle); } else { rect.x = r * Math.cos(angle) - rect.width; rect.y = r * Math.sin(angle) - rect.height; } cr = cr.merge(rect); } return cr; }; SpiderChart.prototype.estimateSize = function () { var axisNameBBoxs = this.$axisNames.map(function (elt) { return elt.getBBox(); }); var rects = axisNameBBoxs.map(function (box) { return new Rectangle(box.x, box.y, box.width, box.height); }); var titleBox = this.$title.getBBox(); var noteGroupBox = this.$noteGroup.getBBox(); var maxR = Math.min(this.canvasWidth, this.canvasHeight) / 2; var minR = 20; // var aWidth = this.canvasWidth - this.paddingContent * 2; var aHeight = this.canvasHeight - this.paddingContent * 2 - titleBox.height * 3 + noteGroupBox.height * 1.5; while (maxR - minR > 3) { var midR = (minR + maxR) / 2; var size = this._expectSize(rects, midR); if (size.width < aWidth && size.height < aHeight) { minR = midR; } else { maxR = midR; } } return { expectedSize: this._expectSize(rects, minR, true), expectedRadius: minR, axisLenth: minR - 30 }; }; SpiderChart.prototype.updateCanvasSize = function () { var bound = this.getBoundingClientRect(); var newHeight = this._canvasHeight; var newWidth = this._canvasWidth; if (!(newHeight > 0)) newHeight = bound.height; if (!(newWidth > 0)) newWidth = bound.witdh; if (newHeight == this._viewCanvasHeight && newWidth == this._viewCanvasWidth) return false; this.attr({ width: newWidth + '', height: newWidth + '' }); return true; }; SpiderChart.prototype.recreate = function () { this._resizeCallback = []; this.recreateTitle(); this.recreateAxis(); this.recreateNotes(); this._resizeCallback.sort(function (a, b) { return a.order - b.order; }); }; SpiderChart.prototype.recreateAxis = function () { var thisChart = this; var oyAxisElts = this.axis.oyAxises.map(function (oyAxis, i, arr) { var lineArrowElt = SpiderChart_('hlinearrow'); lineArrowElt.resize(200); lineArrowElt.attr('transform', rotate(-90 + i * 360 / arr.length)); lineArrowElt.addTo(thisChart.$axisCtn); oyAxis.lineArrowElt = lineArrowElt; return lineArrowElt; }); this.$oyAxises = oyAxisElts; }; SpiderChart.prototype._createLineNote = function (obj) { var res = SpiderChart_('g.vchart-spinder-chart-note'); res.$line = hline(0, 9, 15, 'vc-assessment-chart-area').addStyle('stroke', obj.stroke).addTo(res); res.$name = helper_text(obj.name, 15 + 5, 14).addTo(res); return res; }; SpiderChart.prototype._createBoxNote = function (obj) { var res = SpiderChart_('g.vchart-spinder-chart-note'); res.$line = hline(0, 9, 15, 'vc-assessment-chart-area').addStyle('stroke', obj.stroke).addTo(res); res.$name = helper_text(obj.name, 15 + 5, 14).addTo(res); return res; }; //todo more SpiderChart.prototype.recreateNotes = function () { var thisChart = this; this.$noteCtn.clearChild(); this.$notes = this.objects.map(function (obj) { var noteElt = thisChart._createLineNote(obj); noteElt.addTo(thisChart.$noteCtn); }); }; SpiderChart.prototype.recreateTitle = function () { this.ctitle.elt = this.$title; this.$title.clearChild().addChild(SpiderChart_({ text: this.ctitle.text || '' })); }; SpiderChart.prototype.updateSize = function (force) { if (!force && !this.updateCanvasSize()) return; // nothing change this.$noteGrid.updateSize(); }; SpiderChart.prototype.redraw = function () { this.recreate(); this.updateSize(true); }; /** * @type {SpiderChart} */ SpiderChart.eventHandler = {}; SpiderChart.eventHandler.attached = function () { if (!this._drew) { this._drew = true; this.redraw(); } else { this.updateSize(); } }; SpiderChart.property = {}; src_VCore.install('spiderchart', SpiderChart); /* harmony default export */ const src_SpiderChart = ((/* unused pure expression or super */ null && (SpiderChart))); // EXTERNAL MODULE: ./src/style/funnelchart.css var funnelchart = __webpack_require__(8901); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/AElement.js var AElement = __webpack_require__(7951); ;// CONCATENATED MODULE: ./src/FunnelChart.js var FunnelChart_ = src_VCore._; var FunnelChart_$ = src_VCore.$; /*** * @extends AElement * @constructor */ function FunnelChart() { this.resizeCtrl = new ChartResizeController(this); this.$attachhook = FunnelChart_$('sattachhook.av-hook', this); this.$attachhook.on('attached', this.eventHandler.attached); this.$attachhook.requestUpdateSize = this.updateSize.bind(this); this.domSignal = new DomSignal/* default */.ZP(FunnelChart_$('sattachhook.av-signal', this)).on('_createContent', this.createContent.bind(this)).on('_alignContent', this._alignContent.bind(this)).on('_updateContent', this._updateContent.bind(this)); this.$content = FunnelChart_$('.av-funnel-content', this); this.$funnelCtn = FunnelChart_$('.av-funnel-ctn', this); this.$noteCtn = FunnelChart_$('.av-funnel-note-ctn', this); this.$notes = []; this._contentMargin = 5; this._contentWidth = 0; this._contentHeight = 0; this.$title = FunnelChart_$('.vc-title', this); this.$blocks = []; this.blocks = []; this._cavasWidth = 0; this._canvasHeight = 0; this.domSignal.emit('_updateContent'); } FunnelChart.tag = 'FunnelChart'.toLowerCase(); FunnelChart.render = function () { return FunnelChart_({ tag: 'svg', "class": ['vc-chart', 'av-funnel-chart'], child: [{ tag: 'text', "class": 'vc-title', child: { text: '' } }, { "class": 'av-funnel-content', child: [{ "class": 'av-funnel-ctn', child: { "class": 'av-funnel' } }, { "class": 'av-funnel-note-ctn', child: [] }] }, 'sattachhook.av-hook', 'sattachhook.av-signal'] }); }; FunnelChart.prototype._updateCanvasSize = function () { var bound = this.getBoundingClientRect(); var width = bound.width; var height = bound.height; this._canvasHeight = height; this._cavasWidth = width; this.attr('width', width + ''); this.attr('height', height + ''); this.attr('viewBox', [0.5, 0.5, width, height].join(' ')); }; FunnelChart.prototype.updateSize = function () { this._updateCanvasSize(); this._alignContent(); }; FunnelChart.prototype.normalizeData = function () { var blockColor = generateBackgroundColors(this.blocks.length); var sum = this.blocks.reduce(function (ac, cr) { return ac + cr.value; }, 0); this.blocks.forEach(function (block, i) { block.color = block.color || blockColor[i]; block.percent = block.value * 100 / sum; }); }; FunnelChart.prototype.createContent = function () { this.normalizeData(); this.$title.firstChild.data = this.title + ''; this.$funnelCtn.clearChild(); this._createNote(); this._createFunnel(); }; FunnelChart.prototype._createNote = function () { var thisC = this; this.$noteCtn.clearChild(); this.$notes = this.blocks.map(function (block) { var noteElt = thisC._makeNote(block); thisC.$noteCtn.addChild(noteElt); return noteElt; }); }; FunnelChart.prototype._createFunnel = function () { var thisC = this; this.$blocks = this.blocks.map(function (block) { var blockElt = thisC._makeBlock(block); thisC.$funnelCtn.addChild(blockElt); return blockElt; }); }; FunnelChart.prototype._makeNote = function (block) { var $note = FunnelChart_({ "class": 'av-funnel-note', child: [{ tag: 'text', style: { fill: block.color }, attr: { y: 30 }, "class": 'av-funnel-note-name', child: { text: block.name } }, { "class": 'av-funnel-note-desc' }] }); $note.$name = FunnelChart_$('av-funnel-note-name', $note); return $note; }; FunnelChart.prototype._makeBlock = function (block) { var valueColor = Color/* default.parse */.Z.parse(block.color + '').getContrastYIQ(); var percenColor = valueColor.clone(); percenColor.rgba[0] = (percenColor.rgba[0] + Math.sqrt(0.5)) / 2; percenColor.rgba[1] = (percenColor.rgba[1] + Math.sqrt(0.5)) / 2; percenColor.rgba[2] = (percenColor.rgba[2] + Math.sqrt(0.5)) / 2; var $block = FunnelChart_({ "class": 'av-funnel-block', child: [{ tag: 'shape', "class": 'av-funnel-block-shape', style: { fill: block.color + '' } }, { tag: 'text', "class": 'av-funnel-block-value', attr: { y: 25 }, style: { fill: valueColor + '' }, child: { text: block.value } }, { tag: 'text', "class": 'av-funnel-block-percent', attr: { y: 55 }, style: { fill: percenColor + '' }, child: { text: block.percent.toFixed(1) + '%' } }] }); $block.$shape = FunnelChart_$('shape', $block); $block.$value = FunnelChart_$('.av-funnel-block-value', $block); return $block; }; FunnelChart.prototype._alignNote = function () { var dy = this._contentHeight / this.blocks.length; this._stackHeight = dy; this.$notes.forEach(function (noteElt, i) { noteElt.attr({ transform: translate(0, dy * i) }); }); var noteWidth = this.$noteCtn.getBBox().width; this._noteCtnX = this._contentWidth - noteWidth; this.$noteCtn.attr({ transform: translate(this._noteCtnX, 0) }); }; FunnelChart.prototype._alignFunnel = function () { var thisC = this; this._funnelWidth = this._noteCtnX - 20; var maxValue = this.blocks.reduce(function (ac, block) { return Math.max(ac, block.value); }, 0); this.$funnelCtn.attr('transform', translate(this._funnelWidth / 2, 0)); this.$blocks.forEach(function (blockElt, i) { var block = thisC.blocks[i]; var nextBlock = thisC.blocks[i + 1] || block; var y = i * thisC._stackHeight; blockElt.$shape.begin().moveTo(-thisC._funnelWidth / 2 * block.value / maxValue, 0).lineTo(thisC._funnelWidth / 2 * block.value / maxValue, 0).lineTo(thisC._funnelWidth / 2 * nextBlock.value / maxValue, thisC._stackHeight).lineTo(-thisC._funnelWidth / 2 * nextBlock.value / maxValue, thisC._stackHeight).closePath().end(); blockElt.attr('transform', translate(0, y)); }); }; FunnelChart.prototype._alignContent = function () { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('_alignContent'); return; } this.$title.attr({ x: this._cavasWidth / 2, y: 14 + this._contentMargin }); this.$content.attr('transform', translate(this._contentMargin, this._contentMargin + 50)); this._contentWidth = this._cavasWidth - this._contentMargin * 2; this._contentHeight = this._canvasHeight - this._contentMargin * 2 - 50; this._alignNote(); this._alignFunnel(); }; FunnelChart.prototype._updateContent = function () { this.createContent(); this._alignContent(); }; /*** * * @type {FunnelChart} */ FunnelChart.eventHandler = {}; FunnelChart.eventHandler.attached = function () { ResizeSystem/* default.add */.Z.add(this.$attachhook); this.updateSize(); }; src_VCore.install(FunnelChart); /* harmony default export */ const src_FunnelChart = ((/* unused pure expression or super */ null && (FunnelChart))); // EXTERNAL MODULE: ./src/style/barstackchart.css var barstackchart = __webpack_require__(5768); ;// CONCATENATED MODULE: ./src/BarStackChart.js var BarStackChart_ = src_VCore._; var BarStackChart_$ = src_VCore.$; /*** * @extends SvgCanvas * @constructor */ function BarStackChart() { var _this = this; this._contentMargin = 5; /*** * * @type {GContainer} */ this.$content = BarStackChart_$('.vc-bar-stack-content', this); this.$content.box.setPosition(40, 5); /*** * * @type {GContainer} */ this.$noteCtn = BarStackChart_$('.vc-bar-stack-note-ctn', this); /*** * * @type {GContainer} */ this.$stack = BarStackChart_$('.vc-bar-stack', this); this.domSignal = new DomSignal/* default */.ZP(BarStackChart_$('sattachhook.vc-dom-signal', this)); this.domSignal.on('_updateContentPosition', this.updateContentPosition.bind(this)).on('updateContent', this.updateContent.bind(this)); this.blocks = []; this.$blocks = []; this.$notes = []; this.domSignal.emit('updateContent'); this.resizeCtrl = new ChartResizeController(this); (0,DataStructure_Object/* observePropertyChanges */.U)(this, ['blocks'], function () { _this.domSignal.emit('updateContent'); }); } BarStackChart.tag = 'BarStackChart'.toLowerCase(); BarStackChart.render = function () { return BarStackChart_({ tag: 'svgcanvas', "class": ['vc-bar-stack-chart', 'base-chart'], child: [{ tag: 'gcontainer', "class": 'vc-bar-stack-content', child: [{ tag: 'gcontainer', "class": 'vc-bar-stack-note-ctn' }, { tag: 'gcontainer', "class": 'vc-bar-stack' }] }, 'sattachhook.vc-dom-signal'] }); }; BarStackChart.prototype.revokeResource = function () { (0,DataStructure_Object/* unobservePropertyChanges */.i3)(this, ['blocks']); (0,utils.revokeResource)(this.resizeCtrl); this.revokeResource = noop/* default */.Z; while (this.lastChild) { (0,utils.revokeResource)(this.lastChild); this.lastChild.remove(); } }; BarStackChart.prototype.normalizeData = function () { var blockColor = generateBackgroundColors(this.blocks.length); var sum = this.blocks.reduce(function (ac, cr) { return ac + cr.value; }, 0); this.blocks.forEach(function (block, i) { block.color = block.color || blockColor[i]; block.percent = block.percent || block.value * 100 / sum; }); }; BarStackChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this.updateContentPosition(); }; /*** * * @param block * @returns {GContainer} * @private */ BarStackChart.prototype._makeNote = function (block) { var noteElt = BarStackChart_({ tag: 'gcontainer', "class": 'vc-bar-stack-note', child: [{ tag: 'text', "class": 'vc-bar-stack-note-name', style: { fill: block.color + '' }, attr: { y: 15, x: 0 }, child: { text: block.name } }, { tag: 'text', "class": 'vc-bar-stack-note-desc' }] }); noteElt.$name = BarStackChart_$('.vc-bar-stack-note-name', this); noteElt.$desc = BarStackChart_$('.vc-bar-stack-note-desc', this); return noteElt; }; /*** * * @param block * @returns {GContainer} * @private */ BarStackChart.prototype._makeBlock = function (block) { var valueColor = Color/* default.parse */.Z.parse(block.color + '').getContrastYIQ(); var percenColor = valueColor.clone(); percenColor.rgba[0] = (percenColor.rgba[0] + Math.sqrt(0.5)) / 2; percenColor.rgba[1] = (percenColor.rgba[1] + Math.sqrt(0.5)) / 2; percenColor.rgba[2] = (percenColor.rgba[2] + Math.sqrt(0.5)) / 2; var blockElt = BarStackChart_({ tag: 'gcontainer', "class": 'vc-bar-stack-block', child: [{ tag: 'rect', "class": 'vc-bar-stack-block-rect', style: { fill: block.color }, attr: { x: -250, y: 0, width: 500, height: 10 } }, { tag: 'text', "class": 'vc-bar-stack-block-value', attr: { y: 25 }, style: { fill: valueColor + '' }, child: { text: block.value } }, { tag: 'text', "class": 'vc-bar-stack-block-percent', attr: { y: 55 }, style: { fill: percenColor + '' }, child: { text: block.percent.toFixed(1) + '%' } }] }); blockElt.$rect = BarStackChart_$('.vc-bar-stack-block-rect', blockElt); return blockElt; }; BarStackChart.prototype._createNote = function () { var thisC = this; this.$noteCtn.clearChild(); this.$notes = this.blocks.map(function (block) { var noteElt = thisC._makeNote(block); thisC.$noteCtn.addChild(noteElt); return noteElt; }); }; BarStackChart.prototype._createStack = function () { var thisC = this; this.$stack.clearChild(); this.$blocks = this.blocks.map(function (block) { var blockElt = thisC._makeBlock(block); thisC.$stack.addChild(blockElt); return blockElt; }); }; BarStackChart.prototype.createContent = function () { this.normalizeData(); this._createNote(); this._createStack(); }; BarStackChart.prototype.updateContentPosition = function () { if (!this.isDescendantOf(document.body)) { this.emit('_updateContentPosition'); return; } this.$content.box.setPosition(this._contentMargin, 40); this.$content.box.setSize(this.box.width - 2 * this._contentMargin, this.box.height - this._contentMargin - 40); this._updateNotePosition(); this._updateStackPosition(); }; BarStackChart.prototype._updateNotePosition = function () { var thisC = this; var noteCtnBox = this.$noteCtn.getBBox(); this.$noteCtn.box.setSize(noteCtnBox.width, this.$content.box.height); this.$noteCtn.box.setPosition(this.$content.box.width - noteCtnBox.width, 0); var dy = this.$noteCtn.box.height / this.blocks.length; this.$notes.forEach(function (noteElt, i) { noteElt.box.y = dy * i + dy / 2 - 7; }); }; BarStackChart.prototype._updateStackPosition = function () { var thisC = this; this.$stack.box.setSize(this.$content.box.width - this.$noteCtn.box.width - 20, this.$content.box.height); this.$stack.box.x = this.$stack.box.width / 2; //to center var dy = this.$noteCtn.box.height / this.blocks.length; var width = this.$stack.box.width; var maxValue = this.blocks.reduce(function (ac, cr) { return Math.max(ac, cr.value); }, 0); this.$blocks.forEach(function (blockElt, i) { var block = thisC.blocks[i]; blockElt.box.y = dy * i; blockElt.$rect.attr({ height: dy, width: block.value / maxValue * width, x: -block.value / maxValue * width / 2 }); }); }; BarStackChart.prototype.updateContent = function () { this.createContent(); this.updateContentPosition(); }; src_VCore.install(BarStackChart); /* harmony default export */ const src_BarStackChart = ((/* unused pure expression or super */ null && (BarStackChart))); // EXTERNAL MODULE: ./src/style/piechart.css var piechart = __webpack_require__(3468); // EXTERNAL MODULE: ./node_modules/absol/src/Math/Polygon.js var Polygon = __webpack_require__(9894); ;// CONCATENATED MODULE: ./src/PieChart.js var PieChart_ = src_VCore._; var PieChart_$ = src_VCore.$; /*** * @typedef VCPiece * @property {string} name * @property {number} value * @property {string} valueText * @property {string} fillColor * @property {boolean} separated */ /*** * @extends BChart * @constructor */ function PieChart() { src_BChart.call(this); this.titleCtrl.revokeResource(); delete this.titleCtrl; this.$pieCtn = this.$body; this.$pie = PieChart_('gcontainer'); this.$pieCtn.addChild(this.$pie); /*** * * @type {VCPiece[]} */ this.pieces = []; } OOP/* default.mixClass */.ZP.mixClass(PieChart, src_BChart); PieChart.property = Object.assign({}, src_BChart.property); PieChart.eventHandler = Object.assign({}, src_BChart.eventHandler); PieChart.tag = 'PieChart'.toLowerCase(); PieChart.render = function (data, o, dom) { return src_BChart.render(data, o, dom).addClass('vc-piece-chart'); }; PieChart.eventHandler.mouseEnterNote = function (idx, event) { var pieceElt = this.$pieces[idx]; var textValueElt = this.$pieceValues[idx]; var title = pieceElt.attr('title'); if (!title) { if (this.tooltipToken) closeTooltip(this.tooltipToken); return; } var bound = textValueElt.getBoundingClientRect(); this.tooltipToken = showTooltip(title, bound.left - 3, bound.top + bound.height + 3); }; PieChart.eventHandler.mouseLeaveNote = function (idx) { var token = this.tooltipToken; if (!token) return; setTimeout(function () { closeTooltip(token); }, 1000); }; PieChart.prototype._createPie = function () { var _this = this; this.$pie.clearChild(); var thisC = this; this.$pieces = this.pieces.map(function (piece, idx) { var pieceElt = PieChart_({ tag: 'shape', "class": 'vc-piece', style: { fill: piece.fillColor + '' }, attr: { title: piece.name + ': ' + (piece.valueText || piece.value) }, on: { mouseenter: function mouseenter(event) { _this.eventHandler.mouseEnterNote(idx, event); }, mouseleave: function mouseleave(event) { _this.eventHandler.mouseLeaveNote(idx, event); } } }); thisC.$pie.addChild(pieceElt); return pieceElt; }); this.$pieceValues = this.pieces.map(function (piece) { var valueElt = PieChart_({ tag: 'text', "class": 'vc-piece-value', style: { fill: Color/* default.parse */.Z.parse(piece.fillColor + '').getContrastYIQ() }, child: { text: piece.valueText || piece.value || '' } }); thisC.$pie.addChild(valueElt); return valueElt; }); }; PieChart.prototype.computeNotes = function () { return this.pieces.map(function (piece, i) { return { color: piece.fillColor, text: piece.name, type: 'rect', idx: i }; }); }; PieChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createPie(); }; PieChart.prototype._updatePiePosition = function () { var piece, pieceElt; var sum = this.pieces.reduce(function (ac, cr) { return ac + cr.value; }, 0); this.$pieCenter = PieChart_({ tag: 'circle', attr: { cx: 0, cy: 0, r: 1 }, style: { fill: 'transparent' } }); this.$pie.addChild(this.$pieCenter); var pieCenterBound = this.$pieCenter.getBBox(); var piePoly, jj, textRect, canContain; for (var k = 0; k < 50; ++k) { var startAngle = -Math.PI / 2; var endAngle = 0; var valueElt; var valueBound, pieceBound; var x0, y0; var r = Math.min(this.$pieCtn.box.width - 5, this.$pieCtn.box.height - 5) / 2 * (1 - k / 150); var sr = Math.max(3, r / 15); for (var i = 0; i < this.pieces.length; ++i) { piece = this.pieces[i]; pieceElt = this.$pieces[i]; valueElt = this.$pieceValues[i]; if (piece.value === 0) { pieceElt.addStyle('display', 'none'); valueElt.addStyle('display', 'none'); } else { pieceElt.removeStyle('display'); valueElt.removeStyle('display'); } endAngle = startAngle + Math.PI * 2 * piece.value / sum; x0 = 0; y0 = 0; if (piece.separated) { x0 += sr * Math.cos((startAngle + endAngle) / 2); y0 += sr * Math.sin((startAngle + endAngle) / 2); } pieceElt.begin(); piePoly = []; if (piece.value < sum) { pieceElt.moveTo(x0, y0); pieceElt.lineTo(x0 + r * Math.cos(startAngle), y0 + r * Math.sin(startAngle)); piePoly.push(new Vec2/* default */.Z(x0, y0)); piePoly.push(new Vec2/* default */.Z(x0 + r * Math.cos(startAngle), y0 + r * Math.sin(startAngle))); } else { pieceElt.moveTo(x0 + r * Math.cos(startAngle), y0 + r * Math.sin(startAngle)); piePoly.push(new Vec2/* default */.Z(x0 + r * Math.cos(startAngle), y0 + r * Math.sin(startAngle))); } pieceElt.arcTo(x0 + r * Math.cos((startAngle + endAngle) / 2), y0 + r * Math.sin((startAngle + endAngle) / 2), r, r, 0, 1, 0).arcTo(x0 + r * Math.cos(endAngle), y0 + r * Math.sin(endAngle), r, r, 0, 1, 0).closePath().end(); for (jj = 8; jj >= 0; --jj) { piePoly.push(new Vec2/* default */.Z(x0 + r * Math.cos(startAngle * jj / 8 + endAngle * (8 - jj) / 8), y0 + r * Math.sin(startAngle * jj / 8 + endAngle * (8 - jj) / 8))); } valueBound = valueElt.getBBox(); pieceBound = pieceElt.getBBox(); if (piece.value === sum) { valueElt.attr({ x: 0, y: 7 }); valueElt.removeStyle('visibility'); } else { valueElt.attr({ x: x0 + (r - 20 - valueBound.width / 2) * Math.cos((startAngle + endAngle) / 2), y: y0 + (r - 20 - valueBound.height / 2) * Math.sin((startAngle + endAngle) / 2) + 7 }); textRect = new Math_Rectangle/* default */.Z(x0 + (r - 20 - valueBound.width / 2) * Math.cos((startAngle + endAngle) / 2) - valueBound.width / 2, y0 + (r - 20 - valueBound.height / 2) * Math.sin((startAngle + endAngle) / 2) + 7 - valueBound.height, valueBound.width, valueBound.height); piePoly = new Polygon/* default */.Z(piePoly); canContain = [textRect.A(), textRect.B(), textRect.C(), textRect.D()].every(function (v) { return piePoly.pointLocalIn(v) > 0; }); if (canContain) { valueElt.removeStyle('visibility'); } else { valueElt.addStyle('visibility', 'hidden'); } } startAngle = endAngle; } var piePound = this.$pie.getBBox(); if (piePound.width < this.$pieCtn.box.width && piePound.height < this.$pieCtn.box.height) { this.$pie.box.setPosition(this.$pieCtn.box.width / 2 - (piePound.width / 2 - (pieCenterBound.x + 1 - piePound.x)), this.$pieCtn.box.height / 2 - (piePound.height / 2 - (pieCenterBound.y + 1 - piePound.y))); break; } } }; PieChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._updatePiePosition(); }; PieChart.prototype.normalizeData = function () { var colorScheme = this.colorScheme; var blockColors = (0,utils.isNaturalNumber)(colorScheme) ? (0,SelectColorSchemeMenu/* generatorColorScheme */.TD)(colorScheme, this.pieces.length) : generateBackgroundColors(this.pieces.length); this.pieces.forEach(function (piece, i) { piece.fillColor = piece.fillColor || blockColors[i]; }); }; src_VCore.install(PieChart); /* harmony default export */ const src_PieChart = (PieChart); ;// CONCATENATED MODULE: ./src/HCollumnChart.js var HCollumnChart_ = src_VCore._; var HCollumnChart_$ = src_VCore.$; /*** * @extends SvgCanvas * @constructor */ function HColumnChart() { this.$title = HCollumnChart_$('.vc-title', this); console.log(HCollumnChart_$('sattachhook.vc-dom-signal', this)); this.domSignal = new DomSignal/* default */.ZP(HCollumnChart_$('sattachhook.vc-dom-signal', this)); // this.domSignal.on({ // updateContent: this.updateContent.bind(this) // }); // this.emit('updateContent'); } HColumnChart.tag = "HColumnChart".toLowerCase(); HColumnChart.render = function () { return HCollumnChart_({ tag: svg_SvgCanvas.tag, "class": 'vc-h-column-chart', child: [{ tag: 'text', "class": 'vc-title', child: { text: '' }, attr: { y: 20 } }, { "class": 'vc-h-column-root', child: [{ "class": 'vc-h-column-ox-key-ctn' }, { "class": 'vc-h-column-oy-key-ctn' }, { tag: 'hlinearrow' }] }, 'sattachhook.vc-dom-signal'] }); }; HColumnChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this.updateContentPosition(); }; HColumnChart.prototype.updateContent = function () { if (!this.isDescendantOf(document.body)) { this.domSignal.emit('updateContent'); return; } this.normalizeData(); this.createContent(); this.updateContentPosition(); }; HColumnChart.prototype.normalizeData = function () {}; HColumnChart.prototype._createTitle = function () { this.$title.firstChild.data = this.title; }; HColumnChart.prototype.createContent = function () { this._createTitle(); }; HColumnChart.prototype._alignTitle = function () { this.$title.attr('x', this.box.width / 2); }; HColumnChart.prototype.updateContentPosition = function () { this._alignTitle(); }; src_VCore.install(HColumnChart); /* harmony default export */ const HCollumnChart = ((/* unused pure expression or super */ null && (HColumnChart))); // EXTERNAL MODULE: ./src/style/tinycirclechart.css var tinycirclechart = __webpack_require__(7381); ;// CONCATENATED MODULE: ./src/TinyCircleChart.js /*** * @extends SvgCanvas * @constructor */ function TinyCircleChart() { this.resizeCtrl = new ChartResizeController(this); this.contentPadding = 5; this._arcs = []; this.computedData = { notes: [] }; this.total = NaN; this.$notes = []; this.$noteCtn = VCore_$('.vc-note-ctn', this); this.$arcs = []; this.$content = VCore_$('.vc-content', this); this.$circleBlank = VCore_$('.vc-tiny-circle-blank', this); this.$title = VCore_$('.vc-title', this); } TinyCircleChart.tag = 'TinyCircleChart'.toLowerCase(); TinyCircleChart.render = function () { return VCore_({ tag: svg_SvgCanvas.tag, "class": ['vc-chart', 'vc-tiny-circle-chart'], child: [{ tag: 'gcontainer', "class": 'vc-content', child: [{ tag: 'path', "class": 'vc-tiny-circle-blank' }, { tag: 'text', "class": 'vc-title', attr: { y: '7' }, child: { text: '' } }] }, { tag: 'gcontainer', "class": 'vc-note-ctn' }] }); }; TinyCircleChart.prototype._computeNote = function () { this.computedData.notes = (this._arcs || []).map(function (arc, i, array) { var note = {}; note.color = arc.color || Color/* default.fromHSL */.Z.fromHSL(1 / array.length * i, 0.5, 0.5); note.text = arc.name.replace(/[^\s]+/g, function (all) { if (all === '$value') { return arc.value + ''; } return all; }); note.type = 'rect'; return note; }); this.computedData.estimateNoteWidth = this.computedData.notes.reduce(function (ac, node) { return Math.max((0,utils.measureText)(node.text, '14px arial').width, ac); }, 0) + 28; this.computedData.estimateNoteHeight = this.computedData.notes.length * 20; var screenSize = (0,Dom/* getScreenSize */.tE)(); var fontSize = VCore_$(document.body).getFontSize(); this.computedData.estimateWidth = Math.max(this.computedData.estimateNoteWidth + this.computedData.estimateNoteHeight, 250); if (this.computedData.estimateWidth * fontSize / 14 > screenSize.width - 20) { this.computedData.estimateWidth = this.computedData.estimateNoteWidth; this.computedData.estimateHeight = Math.max(this.computedData.estimateNoteHeight + this.computedData.estimateNoteWidth, 100); } else { this.computedData.estimateHeight = Math.max(this.computedData.estimateNoteHeight + 10, 100); } this.addStyle({ 'min-width': this.computedData.estimateWidth / 14 + 'rem', 'min-height': this.computedData.estimateHeight / 14 + 'rem' }); }; TinyCircleChart.prototype._createNote = src_BChart.prototype._createNote; TinyCircleChart.prototype._updateNotesPosition = function () { var t = VCore_$(document.body).getFontSize(); this.$notes.forEach(function (noteElt, i) { noteElt.box.y = Math.ceil(t * 1.428) * i; }); }; TinyCircleChart.prototype._createArcs = function () { this.$arcs.forEach(function (arc) { arc.remove(); }); this.$arcs = (this._arcs || []).map(function (arc, i, array) { var arcElt = VCore_('path.vc-arc'); arcElt.addStyle('fill', this.computedData.notes[i].color); this.$content.addChild(arcElt); return arcElt; }.bind(this)); }; TinyCircleChart.prototype._updateArcsPosition = function () { var noteBBox = this.$noteCtn.getBBox(); var R = 0; if (this.box.width - noteBBox.width >= this.box.height - noteBBox.height) { R = Math.min(this.box.width - noteBBox.width - 2 * this.contentPadding - 10, this.box.height - this.contentPadding) / 2; this.$noteCtn.box.position = { x: 2 * R + 10 + this.contentPadding, y: this.box.height / 2 - noteBBox.height / 2 }; this.$content.box.position = { x: R + this.contentPadding, y: this.box.height / 2 }; } else { R = Math.min(this.box.height - noteBBox.height - 2 * this.contentPadding - 10, this.box.width - this.contentPadding) / 2; this.$noteCtn.box.position = { y: 2 * R + 10 + this.contentPadding, x: this.box.width / 2 - noteBBox.width / 2 }; this.$content.box.position = { y: R + this.contentPadding, x: this.box.width / 2 }; } var r = Math.min(R - 12, R - R / 10); this.$circleBlank.attr('d', new controller_Turtle().moveTo(0, -R).arcBy(R, R, 0, 0, 1, R, R).arcBy(R, R, 0, 0, 1, -R, R).arcBy(R, R, 0, 0, 1, -R, -R).arcBy(R, R, 0, 0, 1, R, -R).moveTo(0, -r).arcBy(r, r, 0, 0, 1, r, r).arcBy(r, r, 0, 0, 1, -r, r).arcBy(r, r, 0, 0, 1, -r, -r).arcBy(r, r, 0, 0, 1, r, -r).closePath().getPath()); var total = this.total; if (!(total > 0 && total < Infinity && typeof total === "number")) { total = (this._arcs || []).reduce(function (ac, cr) { return ac + cr.value; }, 0); } var angle0, angle1 = -Math.PI / 2; var total2 = Math.max(total, 1); var angleCenter; for (var i = 0; i < this.$arcs.length; ++i) { angle0 = angle1; angle1 = angle1 + Math.PI * 2 * this._arcs[i].value / total2; angleCenter = (angle0 + angle1) / 2; this.$arcs[i].attr('d', new controller_Turtle().moveTo(R * Math.cos(angle0), R * Math.sin(angle0)).arcTo(R, R, 0, this._arcs[i].value > total2 ? 1 : 0, 1, R * Math.cos(angleCenter), R * Math.sin(angleCenter)).arcTo(R, R, 0, this._arcs[i].value > total2 ? 1 : 0, 1, R * Math.cos(angle1), R * Math.sin(angle1)).lineTo(r * Math.cos(angle1), r * Math.sin(angle1)).arcTo(r, r, 0, this._arcs[i].value > total2 ? 1 : 0, 0, r * Math.cos(angleCenter), r * Math.sin(angleCenter)).arcTo(r, r, 0, this._arcs[i].value > total2 ? 1 : 0, 0, r * Math.cos(angle0), r * Math.sin(angle0)).closePath().getPath()); } this.$title.firstChild.data = total + ''; }; TinyCircleChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this._updateArcsPosition(); }; TinyCircleChart.property = {}; TinyCircleChart.property.arcs = { set: function set(value) { this._arcs = value; this._computeNote(); this._createNote(); this._updateNotesPosition(); this._createArcs(); }, get: function get() { return this._arcs; } }; src_VCore.install(TinyCircleChart); /* harmony default export */ const src_TinyCircleChart = (TinyCircleChart); ;// CONCATENATED MODULE: ./src/DoughnutChart.js var DoughnutChart_ = src_VCore._; var DoughnutChart_$ = src_VCore.$; /*** * @typedef VCPiece * @property {string} name * @property {number} value * @property {string} valueText * @property {string} fillColor * @property {boolean} separated */ /*** * @extends BChart * @constructor */ function DoughnutChart() { src_BChart.call(this); this.titleCtrl.revokeResource(); delete this.titleCtrl; this.$pieCtn = this.$body; this.$pie = DoughnutChart_('gcontainer'); this.$pieCtn.addChild(this.$pie); /*** * * @type {VCPiece[]} */ this.pieces = []; } OOP/* default.mixClass */.ZP.mixClass(DoughnutChart, src_BChart); DoughnutChart.property = Object.assign({}, src_BChart.property); DoughnutChart.eventHandler = Object.assign({}, src_BChart.eventHandler); DoughnutChart.prototype.dataKeys = src_BChart.prototype.dataKeys.concat(['pieces']); DoughnutChart.tag = 'DoughnutChart'.toLowerCase(); DoughnutChart.render = function (data, o, dom) { return src_BChart.render(data, o, dom).addClass('vc-piece-chart'); }; DoughnutChart.eventHandler.mouseEnterNote = function (idx, event) { var pieceElt = this.$pieces[idx]; var textValueElt = this.$pieceValues[idx]; var title = pieceElt.attr('title'); if (!title) { if (this.tooltipToken) closeTooltip(this.tooltipToken); return; } var bound = textValueElt.getBoundingClientRect(); this.tooltipToken = showTooltip(title, bound.left - 3, bound.top + bound.height + 3); }; DoughnutChart.eventHandler.mouseLeaveNote = function (idx) { var token = this.tooltipToken; if (!token) return; setTimeout(function () { if (token) closeTooltip(token); }, 1000); }; DoughnutChart.prototype._createPie = function () { var _this = this; this.$pie.clearChild(); var thisC = this; this.$pieces = this.pieces.map(function (piece, idx) { var pieceElt = DoughnutChart_({ tag: 'shape', "class": 'vc-piece', style: { fill: (piece.fillColor || _this.blockColors[idx]) + '' }, attr: { title: piece.name + ': ' + (piece.valueText || piece.value) }, on: { mouseenter: function mouseenter(event) { _this.eventHandler.mouseEnterNote(idx, event); }, mouseleave: function mouseleave(event) { _this.eventHandler.mouseLeaveNote(idx, event); } } }); thisC.$pie.addChild(pieceElt); return pieceElt; }); this.$pieceValues = this.pieces.map(function (piece, idx) { var valueElt = DoughnutChart_({ tag: 'text', "class": 'vc-piece-value', style: { fill: Color/* default.parse */.Z.parse((piece.fillColor || _this.blockColors[idx]) + '').getContrastYIQ() }, child: { text: piece.valueText || piece.value || '' } }); thisC.$pie.addChild(valueElt); return valueElt; }); }; DoughnutChart.prototype.computeNotes = function () { var _this2 = this; return this.pieces.map(function (piece, i) { return { color: piece.fillColor || _this2.blockColors[i], text: piece.name, type: 'rect', idx: i }; }); }; DoughnutChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createPie(); }; DoughnutChart.prototype._updatePiePosition = function () { var piece, pieceElt; var sum = this.pieces.reduce(function (ac, cr) { return ac + cr.value; }, 0); this.$pieCenter = DoughnutChart_({ tag: 'circle', attr: { cx: 0, cy: 0, r: 1 }, style: { fill: 'transparent' } }); this.$pie.addChild(this.$pieCenter); var pieCenterBound = this.$pieCenter.getBBox(); var piePoly, jj, textRect, canContain; for (var k = 0; k < 50; ++k) { var startAngle = -Math.PI / 2; var endAngle = 0; var valueElt; var valueBound, pieceBound; var x0, y0; var cp, p0; var r = Math.min(this.$pieCtn.box.width - 5, this.$pieCtn.box.height - 5) / 2 * (1 - k / 150); var ri = r * 4 / 9; var sr = Math.max(3, r / 15); var makeVec = function makeVec(r, angle) { return new Vec2/* default */.Z(r * Math.cos(angle), r * Math.sin(angle)); }; for (var i = 0; i < this.pieces.length; ++i) { piece = this.pieces[i]; pieceElt = this.$pieces[i]; valueElt = this.$pieceValues[i]; if (piece.value === 0) { pieceElt.addStyle('display', 'none'); valueElt.addStyle('display', 'none'); } else { pieceElt.removeStyle('display'); valueElt.removeStyle('display'); } endAngle = startAngle + Math.PI * 2 * piece.value / sum; x0 = 0; y0 = 0; p0 = new Vec2/* default */.Z(x0, y0); if (piece.separated) { p0 = p0.add(makeVec(sr, (startAngle + endAngle) / 2)); x0 = p0.x; y0 = p0.y; } pieceElt.begin(); piePoly = []; cp = p0.add(makeVec(r, startAngle)); pieceElt.moveTo(cp.x, cp.y); piePoly.push(cp); cp = p0.add(makeVec(r, (startAngle + endAngle) / 2)); pieceElt.arcTo(cp.x, cp.y, r, r, 0, 1, 0); cp = p0.add(makeVec(r, endAngle)); pieceElt.arcTo(cp.x, cp.y, r, r, 0, 1, 0); for (jj = 8; jj >= 0; --jj) { piePoly.push(p0.add(makeVec(r, startAngle * jj / 8 + endAngle * (8 - jj) / 8))); } cp = p0.add(makeVec(ri, endAngle)); if (piece.value < sum) { pieceElt.lineTo(cp.x, cp.y); } else { pieceElt.closePath(); pieceElt.moveTo(cp.x, cp.y); } cp = p0.add(makeVec(ri, (startAngle + endAngle) / 2)); pieceElt.arcTo(cp.x, cp.y, ri, ri, 0, 0, 1); cp = p0.add(makeVec(ri, startAngle)); pieceElt.arcTo(cp.x, cp.y, ri, ri, 0, 0, 1); for (jj = 0; jj <= 8; ++jj) { piePoly.push(p0.add(makeVec(ri, startAngle * jj / 8 + endAngle * (8 - jj) / 8))); } pieceElt.closePath().end(); valueBound = valueElt.getBBox(); pieceBound = pieceElt.getBBox(); if (piece.value === sum) { valueElt.attr({ x: x0 + (r - 20 - valueBound.width / 2) * Math.cos(-Math.PI / 2), y: y0 + (r - 20 - valueBound.height / 2) * Math.sin(-Math.PI / 2) + 7 }); valueElt.removeStyle('visibility'); } else { valueElt.attr({ x: x0 + (r - 20 - valueBound.width / 2) * Math.cos((startAngle + endAngle) / 2), y: y0 + (r - 20 - valueBound.height / 2) * Math.sin((startAngle + endAngle) / 2) + 7 }); textRect = new Math_Rectangle/* default */.Z(x0 + (r - 20 - valueBound.width / 2) * Math.cos((startAngle + endAngle) / 2) - valueBound.width / 2, y0 + (r - 20 - valueBound.height / 2) * Math.sin((startAngle + endAngle) / 2) + 7 - valueBound.height, valueBound.width, valueBound.height); piePoly = new Polygon/* default */.Z(piePoly); canContain = [textRect.A(), textRect.B(), textRect.C(), textRect.D()].every(function (v) { return piePoly.pointLocalIn(v) > 0; }); if (canContain) { valueElt.removeStyle('visibility'); } else { valueElt.addStyle('visibility', 'hidden'); } } startAngle = endAngle; } var piePound = this.$pie.getBBox(); if (piePound.width < this.$pieCtn.box.width && piePound.height < this.$pieCtn.box.height) { this.$pie.box.setPosition(this.$pieCtn.box.width / 2 - (piePound.width / 2 - (pieCenterBound.x + 1 - piePound.x)), this.$pieCtn.box.height / 2 - (piePound.height / 2 - (pieCenterBound.y + 1 - piePound.y))); break; } } }; DoughnutChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._updatePiePosition(); }; DoughnutChart.prototype.normalizeData = function () { var colorScheme = this.colorScheme; this.blockColors = (0,utils.isNaturalNumber)(colorScheme) ? (0,SelectColorSchemeMenu/* generatorColorScheme */.TD)(colorScheme, this.pieces.length) : generateBackgroundColors(this.pieces.length); }; src_VCore.install(DoughnutChart); /* harmony default export */ const src_DoughnutChart = (DoughnutChart); ;// CONCATENATED MODULE: ./src/SimpleColumnChart.js function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /** * @extends BChart * @constructor */ function SimpleColumnChart() { src_BChart.apply(this, arguments); this.keys = []; this.values = []; this.texts = []; this.fillColors = []; this.$columns = []; this.$texts = []; } OOP/* default.mixClass */.ZP.mixClass(SimpleColumnChart, src_BChart); SimpleColumnChart.tag = 'SimpleColumnChart'.toLowerCase(); SimpleColumnChart.render = function () { return src_BChart.render.apply(this, arguments).addClass('vc-simple-column-chart'); }; SimpleColumnChart.prototype.computeNotes = function () { var _this = this; return this.keys.map(function (key, i) { return { color: _this.fillColors[i], text: key, type: 'rect', idx: i }; }); }; SimpleColumnChart.prototype.normalizeData = function () { var colorScheme = this.colorScheme; var blockColors = (0,utils.isNaturalNumber)(colorScheme) ? (0,SelectColorSchemeMenu/* generatorColorScheme */.TD)(colorScheme, this.values.length) : generateBackgroundColors(this.values.length); this.fillColors = this.fillColors || []; while (this.fillColors.length < this.values.length) { this.fillColors.push(blockColors[this.fillColors.length]); } this._maxValue = Math.max.apply(Math, _toConsumableArray(this.values)); if (!this.texts || this.values.length !== this.texts.length) {// this.texts = this.values.map(value=> this.nu); } }; SimpleColumnChart.prototype._createColumns = function () { var _this2 = this; this.$columns.forEach(function (e) { return e.remove(); }); this.$texts.forEach(function (e) { return e.remove(); }); this.$columns = this.values.map(function (value, i) { return VCore_({ tag: 'rect', attr: { x: 0, y: 0 }, style: { fill: _this2.fillColors[i] } }); }); this.$body.addChild(this.$columns); this.$texts = this.texts.map(function (key, i) { var color = _this2.fillColors[i]; color = typeof color === "string" ? Color/* default.parse */.Z.parse(color) : color; color = color.getContrastYIQ(); return VCore_({ tag: 'text', "class": 'vc-value-text', attr: { x: 10, y: 10 }, style: { color: color + '' }, child: { text: key } }); }); this.$body.addChild(this.$texts); }; SimpleColumnChart.prototype._updateRowPosition = function () { var _this3 = this; var width = this.$body.box.width; var height = this.$body.box.height; if (height === 0) return; var colWidth = Math.min(150, width / this.$columns.length); var x0 = (width - colWidth * this.$columns.length) / 2; var maxValue = this._maxValue ? this._maxValue : 1; this.$columns.forEach(function (colElt, i) { var colHeight = map(_this3.values[i], 0, maxValue, 0, height); colElt.attr({ width: colWidth, y: height - colHeight, height: colHeight, x: x0 + i * colWidth }); }); this.$texts.forEach(function (textElt, i) { var colHeight = map(_this3.values[i], 0, maxValue, 0, height); var y = height - colHeight; if (colHeight > 20) { y += 14; textElt.removeStyle('fill'); } else { y -= 5; textElt.addStyle('fill', 'black'); } textElt.attr({ y: y, x: x0 + (i + 0.5) * colWidth }); }); }; SimpleColumnChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createColumns(); }; SimpleColumnChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._updateRowPosition(); }; src_VCore.install(SimpleColumnChart); /* harmony default export */ const src_SimpleColumnChart = (SimpleColumnChart); ;// CONCATENATED MODULE: ./src/SimplerBarChart.js /** * @extends BChart * @constructor */ function SimpleBarChart() { src_BChart.apply(this, arguments); this.keys = []; this.values = []; this.texts = []; this.fillColors = []; this.$rows = []; this.$texts = []; } OOP/* default.mixClass */.ZP.mixClass(SimpleBarChart, src_BChart); SimpleBarChart.tag = 'SimpleBarChart'.toLowerCase(); SimpleBarChart.render = function () { return src_BChart.render.apply(this, arguments).addClass('vc-simple-bar-chart'); }; SimpleBarChart.prototype.computeNotes = src_SimpleColumnChart.prototype.computeNotes; SimpleBarChart.prototype.normalizeData = src_SimpleColumnChart.prototype.normalizeData; SimpleBarChart.prototype._createRows = function () { var _this = this; this.$rows.forEach(function (e) { return e.remove(); }); this.$texts.forEach(function (e) { return e.remove(); }); this.$rows = this.values.map(function (value, i) { return VCore_({ tag: 'rect', attr: { x: 0, y: 0 }, style: { fill: _this.fillColors[i] } }); }); this.$body.addChild(this.$rows); this.$texts = this.texts.map(function (key, i) { var color = _this.fillColors[i]; color = typeof color === "string" ? Color/* default.parse */.Z.parse(color) : color; color = color.getContrastYIQ().toString('hex6'); var res = VCore_({ tag: 'text', "class": 'vc-value-text', attr: { x: 10, y: 10 }, style: { color: color }, child: { text: key } }); return res; }); this.$body.addChild(this.$texts); }; SimpleBarChart.prototype._updateRowPosition = function () { var _this2 = this; var width = this.$body.box.width; var height = this.$body.box.height; if (width === 0) return; var rowHeight = Math.min(150, height / this.$rows.length); var y0 = (height - rowHeight * this.$rows.length) / 2; var maxValue = this._maxValue ? this._maxValue : 1; this.$rows.forEach(function (colElt, i) { var rowWidth = map(_this2.values[i], 0, maxValue, 0, width); colElt.attr({ width: rowWidth, x: 0, height: rowHeight, y: y0 + i * rowHeight }); }); this.$texts.forEach(function (textElt, i) { var rowWidth = map(_this2.values[i], 0, maxValue, 0, width); var box = textElt.getBBox(); var y = y0 + (i + 0.5) * rowHeight + box.height / 2; var x = rowWidth; if (rowWidth > box.width + 10) { textElt.removeStyle('fill'); x -= 5; textElt.addStyle('text-anchor', 'end'); } else { x += 5; textElt.addStyle('text-anchor', 'start'); textElt.addStyle('fill', 'black'); } textElt.attr({ x: x, y: y }); }); }; SimpleBarChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createRows(); }; SimpleBarChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._updateRowPosition(); }; src_VCore.install(SimpleBarChart); /* harmony default export */ const SimplerBarChart = (SimpleBarChart); ;// CONCATENATED MODULE: ./src/SimpleLineChart.js function SimpleLineChart_toConsumableArray(arr) { return SimpleLineChart_arrayWithoutHoles(arr) || SimpleLineChart_iterableToArray(arr) || SimpleLineChart_unsupportedIterableToArray(arr) || SimpleLineChart_nonIterableSpread(); } function SimpleLineChart_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function SimpleLineChart_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return SimpleLineChart_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return SimpleLineChart_arrayLikeToArray(o, minLen); } function SimpleLineChart_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function SimpleLineChart_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return SimpleLineChart_arrayLikeToArray(arr); } function SimpleLineChart_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /** * @extends BChart * @constructor */ function SimpleLineChart() { src_BChart.apply(this, arguments); this.keys = []; this.values = []; this.texts = []; this.fillColors = []; this.$points = []; this.$texts = []; this.$bgRects = []; } OOP/* default.mixClass */.ZP.mixClass(SimpleLineChart, src_BChart); SimpleLineChart.tag = 'SimpleLineChart'.toLowerCase(); SimpleLineChart.render = function () { return src_BChart.render.apply(this, arguments).addClass('vc-simple-column-chart'); }; SimpleLineChart.prototype.computeNotes = function () { var _this = this; return this.keys.map(function (key, i) { return { color: _this.fillColors[i] || 'black', text: key, type: 'point', idx: i }; }); }; SimpleLineChart.prototype.normalizeData = function () { var colorScheme = this.colorScheme; var blockColors = (0,utils.isNaturalNumber)(colorScheme) ? (0,SelectColorSchemeMenu/* generatorColorScheme */.TD)(colorScheme, this.values.length) : generateBackgroundColors(this.values.length); this.fillColors = this.fillColors || []; while (this.fillColors.length < this.values.length) { this.fillColors.push(blockColors[this.fillColors.length]); } this._maxValue = Math.max.apply(Math, SimpleLineChart_toConsumableArray(this.values)); if (!this.texts || this.values.length !== this.texts.length) {// this.texts = this.values.map(value=> this.nu); } }; SimpleLineChart.prototype._createPoints = function () { var _this2 = this; this.$bgRects.forEach(function (elt) { return elt.remove(); }); this.$bgRects = this.values.map(function (u, i) { return VCore_({ tag: 'rect', "class": ['vc-simple-background'], style: { fill: i % 2 ? 'rgba(132, 132, 132, 0.07)' : 'rgba(132, 132, 132, 0.2)' }, on: { mouseenter: function mouseenter(event) { _this2.eventHandler.mouseEnterNote(i, event); }, mouseleave: function mouseleave(event) { _this2.eventHandler.mouseLeaveNote(i, event); } } }); }); this.$body.addChild(this.$bgRects); this.$ox = this.$ox || VCore_({ tag: 'path', "class": ['vc-simple-ox', 'vchart-axis'] }); this.$oxArrow = this.$oxArrow || VCore_({ tag: 'path', "class": ['vchart-axis'], attr: { d: 'm0 -5v10l6.8 -5z' } }); this.$body.addChild(this.$ox); this.$body.addChild(this.$oxArrow); this.$points.forEach(function (e) { return e.remove(); }); this.$texts.forEach(function (e) { return e.remove(); }); this.$points = this.values.map(function (value, i) { return VCore_({ tag: 'circle', attr: { cx: 0, cy: 0, r: 8 }, style: { stroke: 'white', strokeWidth: 2, fill: _this2.fillColors[i], pointerEvents: 'none' } }); }); this.$line = VCore_({ tag: 'path', style: { strokeWidth: 2, stroke: 'rgb(100, 100, 150)', fill: 'none', pointerEvents: 'none' } }); this.$body.addChild(this.$line); this.$body.addChild(this.$points); }; SimpleLineChart.prototype._updatePointPosition = function () { var _this3 = this; var width = this.$body.box.width; var height = this.$body.box.height; if (height === 0) return; var aHeight = height - 10; var aWidth = width - 25; var colWidth = aWidth / this.$points.length; var x0 = 10; var maxValue = this._maxValue ? this._maxValue : 1; this.$ox.attr('d', new controller_Turtle().moveTo(0, height).hLineBy(width).getPath()); this.$oxArrow.attr('transform', translate(width - 3, height)); this.$bgRects.forEach(function (elt, i) { elt.attr({ width: colWidth, height: height, x: x0 + i * colWidth, y: 0 }); }); var linePath = this.values.reduce(function (ac, value, i) { var colHeight = map(_this3.values[i], 0, maxValue, 0, aHeight); if (i) { ac.lineTo(x0 + (i + 0.5) * colWidth, height - colHeight); } else { ac.moveTo(x0 + (i + 0.5) * colWidth, height - colHeight); } return ac; }, new controller_Turtle()).getPath(); this.$line.attr('d', linePath); this.$points.forEach(function (colElt, i) { var colHeight = map(_this3.values[i], 0, maxValue, 0, aHeight); colElt.attr({ cy: height - colHeight, cx: x0 + (i + 0.5) * colWidth }); }); // this.$texts.forEach((textElt, i) => { // var colHeight = map(this.values[i], 0, maxValue, 0, height); // var y = height - colHeight; // if (colHeight > 20) { // y += 14; // textElt.removeStyle('fill'); // } else { // y -= 5; // textElt.addStyle('fill', 'black'); // } // textElt.attr({ // y: y, // x: x0 + (i + 0.5) * colWidth // }); // }); }; SimpleLineChart.prototype.createContent = function () { src_BChart.prototype.createContent.call(this); this._createPoints(); }; SimpleLineChart.prototype.updateBodyPosition = function () { src_BChart.prototype.updateBodyPosition.call(this); this._updatePointPosition(); }; SimpleLineChart.eventHandler = {}; SimpleLineChart.eventHandler.mouseEnterNote = function (idx, event) { var bound = this.$points[idx].getBoundingClientRect(); this.tooltipToken = showTooltip(this.keys[idx] + ': ' + this.texts[idx], bound.right, bound.top); }; SimpleLineChart.eventHandler.mouseLeaveNote = function (idx, event) { var token = this.tooltipToken; if (!token) return; setTimeout(function () { closeTooltip(token); }, 1000); }; src_VCore.install(SimpleLineChart); /* harmony default export */ const src_SimpleLineChart = (SimpleLineChart); ;// CONCATENATED MODULE: ./node_modules/absol/src/Math/Turtle.js /** * @typedef TurtleCommand * @property {String} cmd * @property {String} action * @property {Number[]} args * @property {Vec2} dest * @property {Vec2} tangent */ /*** * * @constructor */ function Turtle_Turtle() { /** * @type {Array<TurtleCommand>} */ this._commands = []; /** * @type {Vec2} */ this._pos = new Vec2/* default */.Z(0, 0); /** * @type {Vec2} */ this._startPos = this._pos; /** * @type {Vec2} */ this._tangent = new Vec2/* default */.Z(0, 0); } /** * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.moveBy = function (dx, dy) { this._tangent = new Vec2/* default */.Z(dx, dy); this._pos = this._pos.add(this._tangent); this._startPos = this._pos; this._commands.push({ cmd: 'm', action: 'moveBy', args: [dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} x * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.moveTo = function (x, y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._startPos = this._pos; this._commands.push({ cmd: 'M', action: 'moveTo', args: [x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * * @param {number} length * @returns {this} */ Turtle_Turtle.prototype.moveForward = function (length) { var dV = this._tangent.normalized().mult(length); this._pos = this._pos.add(dV); this._startPos = this._pos; this._commands.push({ cmd: 'm', action: 'moveTo', args: [dV.x, dV.y], dest: this._pos, tangent: this._tangent }); return this; }; /** * * @param {number} length * @returns {this} */ Turtle_Turtle.prototype.lineForward = function (length) { var dV = this._tangent.normalized().mult(length); this._pos = this._pos.add(dV); this._startPos = this._pos; this._commands.push({ cmd: 'l', action: 'moveTo', args: [dV.x, dV.y], dest: this._pos, tangent: this._tangent }); return this; }; /*** * * @param {Number} angle - degree * @returns {this} */ Turtle_Turtle.prototype.rotateDirTo = function (angle) { this._tangent = Vec2/* default.fromDirection */.Z.fromDirection(angle * Math.PI / 180); return this; }; /*** * * @param {Number} dAngle * @returns {this} */ Turtle_Turtle.prototype.rotateDirBy = function (dAngle) { this._tangent = this._tangent.rotate(dAngle * Math.PI / 180); return this; }; /** * @param {Number} x * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.lineTo = function (x, y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'L', action: 'lineTo', args: [x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.lineBy = function (dx, dy) { this._tangent = new Vec2/* default */.Z(dx, dy); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'l', action: 'lineBy', args: [dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} x * @returns {this} */ Turtle_Turtle.prototype.hLineTo = function (x) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, this._pos.y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'H', action: 'hLineTo', args: [x], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} x * @returns {this} */ Turtle_Turtle.prototype.hLineBy = function (x) { this._tangent = new Vec2/* default */.Z(x, 0); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'h', action: 'hLineBy', args: [x], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.vLineTo = function (y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(this._pos.x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'V', action: 'vLineTo', args: [y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.vLineBy = function (y) { this._tangent = new Vec2/* default */.Z(0, y); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'v', action: 'vLineBy', args: [y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c1x * @param {Number} c1y * @param {Number} c2x * @param {Number} c2y * @param {Number} x * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.cubicBezierTo = function (c1x, c1y, c2x, c2y, x, y) { this._tangent = new Vec2/* default */.Z(c2x, c2y); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'C', action: 'cubicBezierTo', args: [c1x, c1y, c2x, c2y, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c1dx * @param {Number} c1dy * @param {Number} c2dx * @param {Number} c2dy * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.cubicBezierBy = function (c1dx, c1dy, c2dx, c2dy, dx, dy) { this._tangent = this._pos.add(new Vec2/* default */.Z(c2dx, c2dy)); this._pos = this._pos.add(new Vec2/* default */.Z(dx, dy)); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'c', action: 'cubicBezierBy', args: [c1dx, c1dy, c2dx, c2dy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c2x * @param {Number} c2y * @param {Number} x * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.smoothCubicBezierTo = function (c2x, c2y, x, y) { this._tangent = new Vec2/* default */.Z(c2x, c2y); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'S', action: 'smoothCubicBezierTo', args: [c2x, c2y, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} c2dx * @param {Number} c2dy * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.smoothCubicBezierBy = function (c2dx, c2dy, dx, dy) { this._tangent = this._pos.add(new Vec2/* default */.Z(c2dx, c2dy)); this._pos = this._pos.add(new Vec2/* default */.Z(dx, dy)); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 's', action: 'smoothCubicBezierBy', args: [c2dx, c2dy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cx * @param {Number} cy * @param {Number} x * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.quadraticBezierTo = function (cx, cy, x, y) { this._tangent = new Vec2/* default */.Z(cx, cy); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'Q', action: 'quadraticBezierTo', args: [cx, cy, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cdx * @param {Number} cdy * @param {Number} cdx * @param {Number} cdy * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.quadraticBezierBy = function (cdx, cdy, dx, dy) { this._tangent = this._pos.add(new Vec2/* default */.Z(cdx, cdy)); this._pos = this._pos.add(new Vec2/* default */.Z(dx, dy)); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'q', action: 'quadraticBezierBy', args: [cdx, cdy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cx * @param {Number} cy * @param {Number} x * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.smoothQuadraticBezierTo = function (cx, cy, x, y) { this._tangent = new Vec2/* default */.Z(cx, cy); this._pos = new Vec2/* default */.Z(x, y); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'T', action: 'smoothQuadraticBezierTo', args: [cx, cy, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /** * @param {Number} cdx * @param {Number} cdy * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.smoothQuadraticBezierBy = function (cdx, cdy, dx, dy) { this._tangent = this._pos.add(new Vec2/* default */.Z(cdx, cdy)); this._pos = this._pos.add(new Vec2/* default */.Z(dx, dy)); this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 't', action: 'smoothQuadraticBezierBy', args: [cdx, cdy, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /*** * * @param {Number} rx * @param {Number} ry * @param {Number} angle * @param {Number} large * @param {Number} sweep * @param {Number} x * @param {Number} y * @returns {this} */ Turtle_Turtle.prototype.arcTo = function (rx, ry, angle, large, sweep, x, y) { this._tangent = this._pos; this._pos = new Vec2/* default */.Z(x, y); var AB = this._pos.sub(this._tangent); //in ellipse var AB_inE = AB.rotate(-angle / 180 * Math.PI); //in circle var AB_inC = new Vec2/* default */.Z(AB_inE.x / rx, AB_inE.y / ry); var AH_inC; var HO_length_inC; var AH_length_inC; var HO_inC; var BO_inC; var tangent_inC; var tangent_inE; AH_inC = AB_inC.div(2); AH_length_inC = AH_inC.abs(); HO_length_inC = Math.sqrt(1 - AH_length_inC * AH_length_inC); if (!sweep !== !large) { HO_inC = AB_inC.rotate90().normalized().mult(HO_length_inC); BO_inC = AH_inC.inv().add(HO_inC); tangent_inC = BO_inC.rotate90().inv(); } else { HO_inC = AB_inC.rotate90().inv().normalized().mult(HO_length_inC);//ok BO_inC = AH_inC.inv().add(HO_inC); tangent_inC = BO_inC.rotate90(); } if (large) tangent_inC = tangent_inC.inv(); tangent_inE = new Vec2/* default */.Z(tangent_inC.x * rx, tangent_inC.y * ry); this._tangent = tangent_inE.rotate(angle / 180 * Math.PI); this._commands.push({ cmd: 'A', action: 'lineTo', args: [rx, ry, angle, large, sweep, x, y], dest: this._pos, tangent: this._tangent }); return this; }; /*** * * @param {Number} rx * @param {Number} ry * @param {Number} angle * @param {Number} large * @param {Number} sweep * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.arcBy = function (rx, ry, angle, large, sweep, dx, dy) { //todo: wrong_tangent this._tangent = new Vec2/* default */.Z(dx, dy); this._pos = this._pos.add(this._tangent); this._commands.push({ cmd: 'a', action: 'arcBy', args: [rx, ry, angle, large, sweep, dx, dy], dest: this._pos, tangent: this._tangent }); return this; }; /** * @returns {this} */ Turtle_Turtle.prototype.closePath = function () { this._tangent = this._pos; this._pos = this._startPos; this._tangent = this._pos.sub(this._tangent); this._commands.push({ cmd: 'z', action: 'closePath', args: [], dest: this._pos }); return this; }; /** * @param {Number} dx * @param {Number} dy * @returns {this} */ Turtle_Turtle.prototype.translate = function (dx, dy) { var command; var deltaVec = new Vec2/* default */.Z(dx, dy); for (var i = 0; i < this._commands.length; ++i) { command = this._commands[i]; command.dest = command.dest.add(deltaVec); switch (command.cmd) { case 'M': case 'L': command.args[0] = command.dest.x; command.args[1] = command.dest.y; break; case 'H': command.args[0] = command.dest.x; break; case 'V': command.args[0] = command.dest.y; break; case 'C': command.args[0] += dx; command.args[1] += dy; command.args[2] += dx; command.args[3] += dy; command.args[4] = command.dest.x; command.args[5] = command.dest.y; break; case 'Q': command.args[0] += dx; command.args[1] += dy; command.args[3] = command.dest.x; command.args[4] = command.dest.y; break; case 'A': command.args[5] = command.dest.x; command.args[6] = command.dest.y; break; } } return this; }; /** * @returns {String} */ Turtle_Turtle.prototype.getPath = function () { return this._commands.map(function (command) { return command.cmd + ' ' + command.args.join(','); }).join(' '); }; /*** * * @returns {this} */ Turtle_Turtle.prototype.reset = function () { this._commands = []; this._pos = new Vec2/* default */.Z(0, 0); this._startPos = this._pos; this._tangent = new Vec2/* default */.Z(0, 0); return this; }; /** * * @returns {Turtle|this} */ Turtle_Turtle.prototype.clone = function () { var Constructor = this.constructor; var res = new Constructor(); res._commands.push.apply(res._commands, this._commands); res._pos = this._pos.copy(); res._startPos = this._startPos.copy(); res._tangent = this._tangent.copy() return res; }; /* harmony default export */ const Math_Turtle = (Turtle_Turtle); // EXTERNAL MODULE: ./node_modules/absol/src/HTML5/DelaySignal.js var DelaySignal = __webpack_require__(8098); ;// CONCATENATED MODULE: ./src/HorizontalRangeChart.js /** * @extends SvgCanvas * @constructor */ function HorizontalRangeChart() { var _this = this; this.resizeCtrl = new ChartResizeController(this); this.titleCtrl = new ChartTitleController(this); this.fixedAxisCtrl = new HRCFixedAxisController(this); this.$attachhook.once('attached', function () { _this.fixedAxisCtrl.start(); _this.updateContent(); }); /** * * @type {KeyNoteGroup} */ this.$keyNoteGroup = VCore_$(KeyNoteGroup.tag, this); this.$title = VCore_$('.vc-title', this); this.$body = VCore_$('.vc-body', this); this.$axis = VCore_$('.vchart-axis', this); this.$oxy = VCore_$('#oxy', this); this.$oxArrow = VCore_$('#ox-arrow', this); this.$oyLabelCtn = VCore_$('.vc-oy-label-ctn', this); this.$oxLabelCtn = VCore_$('.vc-ox-label-ctn', this); this.$rangeCtn = VCore_$('.vc-range-ctn', this); this.$grid = VCore_$('.vc-grid', this); this.$valueName = VCore_$('.vc-value-name', this); this.domSignal = new DelaySignal/* default */.Z(); this.$fixedContentRef = VCore_$('.vc-fixed-content-ref', this); this.domSignal.on({ updateContent: function updateContent() { if (_this.isDescendantOf(document.body)) { _this.fixedAxisCtrl.start(); _this.updateContent(); } } }); (0,DataStructure_Object/* observePropertyChanges */.U)(this, this.dataKeys, function () { if (_this.domSignal) _this.domSignal.emit('updateContent'); }); /** * @name ranges * @type {[]} * @memberof HorizontalRangeChart# */ /** * @name maxText * @type {string} * @memberof HorizontalRangeChart# */ /** * @name valueName * @type {string} * @memberof HorizontalRangeChart# */ /** * @name minText * @type {string} * @memberof HorizontalRangeChart# */ /** * @name midText * @type {string} * @memberof HorizontalRangeChart# */ /** * @name normalText * @type {string} * @memberof HorizontalRangeChart# */ /** * @name zeroOY * @type {boolean} * @memberof HorizontalRangeChart */ } (0,OOP/* mixClass */.Jx)(HorizontalRangeChart, src_BChart); HorizontalRangeChart.tag = 'HorizontalRangeChart'.toLowerCase(); HorizontalRangeChart.render = function (data, o, dom) { var res = VCore_({ tag: svg_SvgCanvas, "class": ['vc-chart', 'vc-horizontal-range-chart', 'as-height-auto'], style: {}, child: [{ tag: 'text', "class": 'vc-title', attr: { 'alignment-baseline': "hanging" }, child: { text: '' } }, { tag: 'rect', "class": 'vc-fixed-content-ref', attr: { width: '10', height: '33' }, style: { fill: 'transparent', stroke: 'none' } }, { tag: KeyNoteGroup }, { tag: 'gcontainer', "class": 'vc-body', child: [{ tag: 'path', "class": 'vc-grid' }, { tag: 'gcontainer', "class": 'vchart-axis', child: [{ tag: 'path', id: 'oxy', attr: { d: 'm0 -1v1 h1', fill: 'none' } }, { tag: 'path', id: "ox-arrow", attr: { d: 'm0 -5v10l6.8 -5z' } }] }, { tag: 'gcontainer', "class": 'vc-oy-label-ctn' }, { tag: 'text', "class": 'vc-value-name', child: { text: '' } }, { tag: 'gcontainer', "class": 'vc-ox-label-ctn' }, { tag: 'gcontainer', "class": 'vc-range-ctn' }] }] }); var colorScheme = o && o.props && o.props.colorScheme; if ((0,utils.isNaturalNumber)(colorScheme)) { colorScheme = Math.max(0, Math.min(SelectColorSchemeMenu/* DEFAULT_CHART_COLOR_SCHEMES.length */.cF.length, colorScheme)); res.attr('data-color-scheme', colorScheme + ''); } return res; }; HorizontalRangeChart.prototype.rowSpacing = 40; HorizontalRangeChart.prototype.plotRadius = 8; HorizontalRangeChart.prototype.rangeHeight = 20; HorizontalRangeChart.prototype.rangeWidth = 3; HorizontalRangeChart.prototype.rangeMaxColor = '#86aeea'; HorizontalRangeChart.prototype.rangeMinColor = '#7ebd3b'; HorizontalRangeChart.prototype.rangeMidColor = 'red'; HorizontalRangeChart.prototype.rangeMidHeight = 26; HorizontalRangeChart.prototype.rangeMidWidth = 5; HorizontalRangeChart.prototype.normalColor = 'rgb(247, 148, 29)'; HorizontalRangeChart.prototype.dataKeys = src_BChart.prototype.dataKeys.concat(['rowSpacing', 'plotRadius', 'rangeHeight', 'ranges', 'rangeWidth', 'rangeMaxColor', 'rangeMinColor', 'rangeMidHeight', 'rangeMidWidth']); HorizontalRangeChart.prototype.numberToString = function () { return Math_int.numberToString.apply(this, arguments); }; HorizontalRangeChart.prototype.addStyle = function (arg0, arg1) { if (arg0 === 'height') { if (arg1 === 'auto') { this.addClass('as-height-auto'); } } else { this.removeClass('as-height-auto'); AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } return this; }; HorizontalRangeChart.prototype.revokeResource = function () { src_BChart.prototype.revokeResource.call(this); this.fixedAxisCtrl.revokeResource(); }; HorizontalRangeChart.prototype.createNote = function () { var items = [{ noteType: 'line', text: this.midText || 'Medium', key: 'mid', color: this.rangeMidColor }, { noteType: 'line', text: this.maxText || 'Maximum', key: 'max', color: this.rangeMaxColor }, { noteType: 'point', text: this.normalText || 'Normal', key: 'normal', color: this.normalColor }]; this.$keyNoteGroup.items = items; }; HorizontalRangeChart.prototype.createOYLabel = function () { var ranges = this.ranges; if (!Array.isArray(ranges)) ranges = []; if (this.$oyLabels) this.$oyLabels.forEach(function (e) { return e.remove(); }); this.$oyLabels = ranges.map(function (it) { return VCore_({ tag: 'text', attr: { 'alignment-baseline': "middle" }, child: { text: it.name } }); }); this.$oyLabelCtn.addChild(this.$oyLabels); }; HorizontalRangeChart.prototype.createRanges = function () { var _this2 = this; var ranges = this.ranges; if (!Array.isArray(ranges)) ranges = []; this.$ranges = ranges.map(function (range) { var elt = VCore_({ tag: 'gcontainer', child: [] }); elt.$line = VCore_({ tag: 'path', style: { stroke: 'rgb(124,124,147)', strokeWidth: 3 } }); elt.addChild(elt.$line); if ((0,utils.isRealNumber)(range.normal)) { elt.$normal = VCore_({ tag: 'circle', attr: { cx: 0, cy: 0, r: _this2.plotRadius, title: _this2.numberToString(range.normal) }, style: { fill: _this2.normalColor, stroke: 'rgb(92, 92, 95)' } }); elt.addChild(elt.$normal); } elt.$min = VCore_({ tag: 'rect', attr: { x: -_this2.rangeWidth / 2, y: -_this2.rangeHeight / 2, width: _this2.rangeWidth, height: _this2.rangeHeight, title: _this2.numberToString(range.min) }, style: { fill: _this2.rangeMinColor, // fill:'black', // fill: 'rgb(72, 72, 75)', stroke: 'none' } }); elt.addChild(elt.$min); if ((0,utils.isRealNumber)(range.mid)) { elt.$mid = VCore_({ tag: svg_GContainer, child: { tag: 'rect', style: { // fill: '#58EBF4', fill: 'red', stroke: 'none' }, attr: { // x: -this.plotRadius / 1.4, // y: -this.plotRadius / 1.4, // width: this.plotRadius / 0.7, height: this.plotRadius / 0.7, width: _this2.rangeMidWidth, height: _this2.rangeMidHeight, x: -_this2.rangeMidWidth / 2, y: -_this2.rangeMidHeight / 2, title: _this2.numberToString(range.mid) // transform:'rotate(45)' } } }); elt.addChild(elt.$mid); } elt.$max = VCore_({ tag: 'rect', style: { fill: _this2.rangeMaxColor, // fill: 'rgb(72, 72, 75)', stroke: 'none' }, attr: { x: -_this2.rangeWidth / 2, y: -_this2.rangeHeight / 2, width: _this2.rangeWidth, height: _this2.rangeHeight, title: _this2.numberToString(range.max) } }); elt.addChild(elt.$max); return elt; }); this.$rangeCtn.clearChild().addChild(this.$ranges); }; HorizontalRangeChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this.updateContentPosition(); }; HorizontalRangeChart.prototype.updateContentPosition = function () { var _this3 = this; if (!this.$oyLabels) return; var ranges = this.ranges; if (!Array.isArray(ranges)) ranges = []; var i, j; var width = this.box.width || 0; var y = 5; this.$title.attr('x', width / 2).attr('y', y); y += 30; this.$keyNoteGroup.box.width = width - 20; this.$keyNoteGroup.box.x = 10; this.$keyNoteGroup.box.y = y; this.$keyNoteGroup.updateSize(); this.$keyNoteGroup.box.x = width / 2 - this.$keyNoteGroup.getBBox().width / 2; y += (this.$keyNoteGroup.box.height || 0) + 20; this.$body.box.y = y + 24; var oyLabelWidth = this.$oyLabels.reduce(function (ac, cr) { return Math.max(ac, cr.getBBox().width); }, 0); oyLabelWidth = Math.ceil(oyLabelWidth); var spacing = this.rowSpacing; this.$body.box.x = oyLabelWidth + 10; this.$body.box.width = width - this.$body.box.x - 10; this.$fixedContentRef.attr('y', this.$body.box.y - 24); this.$fixedContentRef.attr('width', this.$body.box.width + this.$body.box.x + 8); this.$oyLabelCtn.box.x = -this.$body.box.x; this.$axis.box.width = this.$body.box.width; this.$oxArrow.attr('d', 'M' + this.$axis.box.width + ' 0 m0 -5v10l6.8 -5z'); this.$axis.box.height = spacing * this.$oyLabels.length; /** * * @type {Turtle} */ var turtle = new Math_Turtle().moveTo(this.$axis.box.width, 0).hLineTo(0).vLineTo(this.$axis.box.height); var valueNameWidth = this.$valueName.getBBox().width; this.$valueName.attr('x', this.$axis.box.width).attr('y', -8); var dx = Math.max(100, Math.floor(20 + measureArial14TextWidth(this.numberToString(this.computedData.max)))); var sm = calBeautySegment(Math.floor((this.$axis.box.width - valueNameWidth - 10 - dx / 2) / dx), this.computedData.min, this.computedData.max + 1); this.computedData.sm = sm; dx = Math.floor((this.$axis.box.width - valueNameWidth - 10 - dx / 2) / sm.segmentCount); var dv = (sm.maxValue - sm.minValue) / sm.segmentCount; this.computedData.dx = dx; //for fixed content this.computedData.dv = dv; turtle.moveTo(0, 2); for (i = 0; i < sm.segmentCount; ++i) { turtle.moveBy(dx, -4); turtle.vLineBy(4); } this.$oxy.attr('d', turtle.getPath()); this.$oyLabels.forEach(function (elt, i) { elt.attr('y', i * spacing + spacing / 2); }); while (this.$oxLabelCtn.childNodes.length > sm.segmentCount + 1 && this.$oxLabelCtn.lastChild) { this.$oxLabelCtn.lastChild.remove(); } while (this.$oxLabelCtn.childNodes.length < sm.segmentCount + 1) { this.$oxLabelCtn.addChild(VCore_({ tag: 'text', style: { textAnchor: 'middle' }, attr: { y: -8 }, child: { text: '' } })); } Array.prototype.forEach.call(this.$oxLabelCtn.childNodes, function (elt, i) { elt.firstChild.data = _this3.numberToString(sm.minValue + i * dv); elt.attr('x', dx * i); }); turtle = new Math_Turtle(); var oxLength = this.$axis.box.width - 5; turtle.moveTo(oxLength, 0); for (i = 0; i < ranges.length; ++i) { turtle.moveBy(-oxLength, spacing).hLineBy(oxLength); } turtle.moveTo(0, spacing * ranges.length, 0); for (i = 0; i < sm.segmentCount; ++i) { turtle.moveBy(dx, -spacing * ranges.length).vLineBy(spacing * ranges.length); } this.$grid.attr('d', turtle.getPath()); this.$ranges.forEach(function (elt, i) { elt.box.y = i * spacing + spacing / 2; var range = ranges[i]; elt.$min.attr('x', map(range.min - sm.minValue, 0, dv, 0, dx) - _this3.rangeWidth / 2); if (elt.$mid) elt.$mid.box.x = map(range.mid - sm.minValue, 0, dv, 0, dx); elt.$max.attr('x', map(range.max - sm.minValue, 0, dv, 0, dx) - _this3.rangeWidth / 2); elt.$line.attr('d', "M".concat(map(range.min - sm.minValue, 0, dv, 0, dx), " 0 l").concat(map(range.max - range.min, 0, dv, 0, dx), " 0")); if (elt.$normal) elt.$normal.attr('cx', map(range.normal - sm.minValue, 0, dv, 0, dx)); }); this.$body.box.height = this.$axis.box.height + 10; //10px : padding bottom this.box.height = this.$body.box.y + this.$body.box.height; this.fixedAxisCtrl.updateContentPosition(); }; HorizontalRangeChart.prototype.computeData = function () { var ranges = Array.isArray(this.ranges) ? this.ranges : []; this.computedData = {}; this.computedData.max = ranges.reduce(function (ac, cr) { return Math.max(ac, cr.min, cr.max, cr.mid); }, -Infinity); this.computedData.min = ranges.reduce(function (ac, cr) { return Math.min(ac, cr.min, cr.max, cr.mid); }, Infinity); if (this.zeroOY) this.computedData.min = Math.min(this.computedData.min, 0); }; HorizontalRangeChart.prototype.updateContent = function () { this.computeData(); this.$title.firstChild.data = this.title; this.$valueName.firstChild.data = this.valueName || ''; this.createNote(); this.createOYLabel(); this.createRanges(); this.fixedAxisCtrl.updateContent(); this.updateContentPosition(); }; src_VCore.install(HorizontalRangeChart); /* harmony default export */ const src_HorizontalRangeChart = (HorizontalRangeChart); /** * * @param {HorizontalRangeChart|SvgCanvas}elt * @constructor */ function HRCFixedAxisController(elt) { this.elt = elt; this.state = 'PENDING'; this.listenningElementList = []; this.ev_scroll = this.ev_scroll.bind(this); this.$canvas = null; } HRCFixedAxisController.prototype.start = function () { if (this.state !== 'PENDING') return; this.state = "RUNNING"; var elt = this.elt.parentElement; while (elt) { elt.addEventListener('scroll', this.ev_scroll); this.listenningElementList.push(elt); elt = elt.parentElement; } elt = document; elt.addEventListener('scroll', this.ev_scroll); this.listenningElementList.push(elt); this.$canvas = VCore_({ tag: svg_SvgCanvas.tag, "class": 'vc-chart', style: { pointerEvents: 'none', minHeight: 'unset', position: 'fixed', zIndex: (0,utils.findMaxZIndex)(this.elt) + 100, left: 0, top: 0, visibility: 'hidden', height: '33px', backgroundColor: 'transparent' }, child: [{ tag: 'path', "class": 'vc-fixed-axis-bg', style: { pointerEvents: 'all', fill: 'white', stroke: 'none' } }, { tag: 'gcontainer', "class": 'vc-body', child: [{ tag: 'gcontainer', "class": 'vc-ox-label-ctn' }, { tag: 'text', "class": 'vc-value-name', child: { text: '' } }, { tag: 'gcontainer', "class": 'vchart-axis', child: [{ tag: 'path', id: 'oxy', attr: { d: 'm0 -1v1 h1', fill: 'none' } }, { tag: 'path', id: "ox-arrow", attr: { d: 'm0 -5v10l6.8 -5z' } }] }] }] }).addTo(this.elt.parentElement); this.$bg = VCore_$('.vc-fixed-axis-bg', this.$canvas); this.$body = VCore_$('.vc-body', this.$canvas); this.$axis = VCore_$('.vchart-axis', this.$canvas); this.$oxy = VCore_$('#oxy', this.$canvas); this.$oxArrow = VCore_$('#ox-arrow', this.$canvas); this.$body.box.y = 25; this.$oxLabelCtn = VCore_$('.vc-ox-label-ctn', this.$canvas); this.$valueName = VCore_$('.vc-value-name', this.$canvas); }; HRCFixedAxisController.prototype.stop = function () { if (this.state !== 'RUNNING') return; this.state = "STOPPED"; var elt; while (this.listenningElementList.length > 0) { elt = this.listenningElementList.pop(); elt.removeEventListener('scroll', this.ev_scroll); } this.$canvas.remove(); }; HRCFixedAxisController.prototype.revokeResource = function () { this.revokeResource = noop/* default */.Z; this.stop(); this.elt = null; this.revokeResource = noop/* default */.Z; }; HRCFixedAxisController.prototype.updateContent = function () { this.$valueName.firstChild.data = this.elt.valueName || ''; }; HRCFixedAxisController.prototype.updateContentPosition = function () { var _this4 = this; if (this.state !== "RUNNING") return; var i; if (!this.elt.computedData) return; var sm = this.elt.computedData.sm; var dx = this.elt.computedData.dx; var dv = this.elt.computedData.dv; var width = parseFloat(this.elt.$fixedContentRef.attr('width')); var height = parseFloat(this.elt.$fixedContentRef.attr('height')); this.$canvas.addStyle({ width: width + 'px', height: height + 1 + 'px' }); this.$canvas.box.setSize(width, height); this.$body.box.x = this.elt.$body.box.x; this.$axis.box.x = this.elt.$axis.box.x; this.$oxArrow.attr('d', 'M' + this.elt.$axis.box.width + ' 0 m0 -5v10l6.8 -5z'); this.$valueName.attr('x', this.elt.$axis.box.width).attr('y', -8); var turtle = new Math_Turtle().moveTo(this.elt.$axis.box.width, 0).hLineTo(0).vLineTo(10); turtle.moveTo(0, 2); for (i = 0; i < sm.segmentCount; ++i) { turtle.moveBy(dx, -4); turtle.vLineBy(4); } this.$oxy.attr('d', turtle.getPath()); while (this.$oxLabelCtn.childNodes.length > sm.segmentCount + 1 && this.$oxLabelCtn.lastChild) { this.$oxLabelCtn.lastChild.remove(); } while (this.$oxLabelCtn.childNodes.length < sm.segmentCount + 1) { this.$oxLabelCtn.addChild(VCore_({ tag: 'text', style: { textAnchor: 'middle' }, attr: { y: -8 }, child: { text: '' } })); } Array.prototype.forEach.call(this.$oxLabelCtn.childNodes, function (elt, i) { elt.firstChild.data = _this4.elt.numberToString(sm.minValue + i * dv); elt.attr('x', dx * i); }); turtle = new Math_Turtle(); turtle.moveTo(width, 0).vLineTo(height).hLineBy(-8).vLineBy(-9).hLineTo(0).vLineTo(0).closePath(); this.$bg.attr('d', turtle.getPath()); this.updateDomPosition(); }; HRCFixedAxisController.prototype.updateDomPosition = function () { var outBound = (0,Dom/* traceOutBoundingClientRect */.DI)(this.elt); var refBound = this.elt.$fixedContentRef.getBoundingClientRect(); var bound = this.elt.getBoundingClientRect(); var hidden = false; hidden = hidden || bound.bottom < outBound.top + refBound.height + 5; hidden = hidden || refBound.top > outBound.top; if (hidden) { this.$canvas.addStyle('visibility', 'hidden'); } else { this.$canvas.removeStyle('visibility'); this.$canvas.addStyle({ left: refBound.left - 0.5 + 'px', top: Math.max(refBound.top, outBound.top) - 1.5 + 'px' }); } }; HRCFixedAxisController.prototype.ev_scroll = function () { if (this.elt.isDescendantOf(document.body)) { this.updateDomPosition(); } else { this.stop(); this.revokeResource(); } }; ;// CONCATENATED MODULE: ./src/HorizontalRankChart.js function HorizontalRankChart_toConsumableArray(arr) { return HorizontalRankChart_arrayWithoutHoles(arr) || HorizontalRankChart_iterableToArray(arr) || HorizontalRankChart_unsupportedIterableToArray(arr) || HorizontalRankChart_nonIterableSpread(); } function HorizontalRankChart_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function HorizontalRankChart_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return HorizontalRankChart_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return HorizontalRankChart_arrayLikeToArray(o, minLen); } function HorizontalRankChart_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function HorizontalRankChart_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return HorizontalRankChart_arrayLikeToArray(arr); } function HorizontalRankChart_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /** * @extends SvgCanvas * @constructor */ function HorizontalRankChart() { var _this = this; this.resizeCtrl = new ChartResizeController(this); this.titleCtrl = new ChartTitleController(this); this.fixedAxisCtrl = new HRCFixedAxisController(this); this.$attachhook.once('attached', function () { _this.fixedAxisCtrl.start(); _this.updateContent(); }); this.$title = VCore_$('.vc-title', this); this.$body = VCore_$('.vc-body', this); this.$axis = VCore_$('.vchart-axis', this); this.$oxy = VCore_$('#oxy', this); this.$oxArrow = VCore_$('#ox-arrow', this); this.$oyLabelCtn = VCore_$('.vc-oy-label-ctn', this); this.$oxLabelCtn = VCore_$('.vc-ox-label-ctn', this); this.$grid = VCore_$('.vc-grid', this); this.$valueName = VCore_$('.vc-value-name', this); this.$postionCtn = VCore_$('.vc-postion-ctn', this); this.$fixedContentRef = VCore_$('.vc-fixed-content-ref', this); this.$oyLabels = []; this.cpData = null; this.colors = ['white', 'rgb(201, 241, 253)', 'rgb(212, 227, 252)', 'rgb(218, 202, 251)', 'rgb(242, 201, 251)', 'rgb(255, 218, 216)', 'rgb(255, 236, 215)', 'rgb(254, 252, 224)', 'rgb(223, 237, 214)', 'rgb(77, 215, 250)', 'rgb(117, 169, 249)', 'rgb(139, 81, 245)', 'rgb(215, 87, 246)', 'rgb(255, 138, 132)', 'rgb(152, 165, 52)', 'rgb(254, 248, 160)', 'rgb(174, 221, 148)', 'rgb(0, 164, 221)', 'rgb(20, 100, 246)', 'rgb(156, 41, 183)']; this.domSignal = new DelaySignal/* default */.Z(); this.domSignal.on('updateContent', function () { if (_this.isDescendantOf(document.body)) { _this.fixedAxisCtrl.start(); _this.updateContent(); } }); (0,OOP/* drillProperty */.pj)(this, this, 'computedData', 'cpData'); (0,DataStructure_Object/* observePropertyChanges */.U)(this, this.dataKeys, function () { return _this.domSignal.emit('updateContent'); }); /** * @name positions * @type {{name: string, ranks:number[]}[]} * @memberof HorizontalRankChart# */ /** * @name valueName * @type {string} * @memberof HorizontalRangeChart# */ } HorizontalRankChart.tag = 'HorizontalRankChart'.toLowerCase(); HorizontalRankChart.render = function (data, o, dom) { var res = VCore_({ tag: svg_SvgCanvas, "class": ['vc-chart', 'vc-horizontal-rank-chart', 'as-height-auto'], style: {}, child: [{ tag: 'text', "class": 'vc-title', attr: { 'alignment-baseline': "hanging" }, child: { text: '' } }, { tag: 'rect', "class": 'vc-fixed-content-ref', attr: { width: '10', height: '33' }, style: { fill: 'transparent', stroke: 'none' } }, { tag: KeyNoteGroup }, { tag: 'gcontainer', "class": 'vc-body', child: [{ tag: 'path', "class": 'vc-grid' }, { tag: 'gcontainer', "class": 'vchart-axis', child: [{ tag: 'path', id: 'oxy', attr: { d: 'm0 -1v1 h1', fill: 'none' } }, { tag: 'path', id: "ox-arrow", attr: { d: 'm0 -5v10l6.8 -5z' } }] }, { tag: 'text', "class": 'vc-value-name', child: { text: '' } }, { tag: 'gcontainer', "class": 'vc-oy-label-ctn' }, { tag: 'gcontainer', "class": 'vc-ox-label-ctn' }, { tag: 'gcontainer', "class": 'vc-postion-ctn' }] }] }); var colorScheme = o && o.props && o.props.colorScheme; if ((0,utils.isNaturalNumber)(colorScheme)) { colorScheme = Math.max(0, Math.min(SelectColorSchemeMenu/* DEFAULT_CHART_COLOR_SCHEMES.length */.cF.length, colorScheme)); res.attr('data-color-scheme', colorScheme + ''); } return res; }; HorizontalRankChart.prototype.dataKeys = src_BChart.prototype.dataKeys.concat(['position', 'valueName']); HorizontalRankChart.prototype.revokeResource = function () { (0,DataStructure_Object/* unobservePropertyChanges */.i3)(this, this.dataKeys); (0,utils.revokeResource)(this.titleCtrl); (0,utils.revokeResource)(this.resizeCtrl); (0,utils.revokeResource)(this.domSignal); this.fixedAxisCtrl.revokeResource(); while (this.lastChild) { this.lastChild.remove(); } }; HorizontalRankChart.prototype.addStyle = function (arg0, arg1) { if (arg0 === 'height') { if (arg1 === 'auto') { this.addClass('as-height-auto'); } } else { this.removeClass('as-height-auto'); AElement/* default.prototype.addStyle.apply */.Z.prototype.addStyle.apply(this, arguments); } return this; }; HorizontalRankChart.prototype.computeData = function () { var positions = Array.isArray(this.positions) ? this.positions : []; this.cpData = {}; this.cpData.min = positions.reduce(function (ac, cr) { return Math.min.apply(Math, [ac].concat(HorizontalRankChart_toConsumableArray(cr.ranks))); }, Infinity); this.cpData.count = positions.reduce(function (ac, cr) { return Math.max(ac, cr.ranks.length); }, 0); this.cpData.max = positions.reduce(function (ac, cr) { return Math.max.apply(Math, [ac].concat(HorizontalRankChart_toConsumableArray(cr.ranks))); }, -Infinity); if (this.cpData.min > this.cpData.max) { this.cpData.min = 0; this.cpData.max = 0; } this.cpData.max += 1; if (this.zeroOY) this.cpData.min = Math.min(this.cpData.min, 0); this.colors = this.cpData.count < 10 ? ["#FF5733", // Bright Orange "#33FF57", // Bright Green "#3357FF", // Bright Blue "#FF33A8", // Bright Pink "#FF3333", // Bright Red "#33FFF5", // Bright Cyan "#FFFF33", // Bright Yellow "#FF8C33", // Bright Coral "#33FF8C", // Bright Mint "#8C33FF" // Bright Purple ] : ["#FF5733", // Bright Orange "#33FF57", // Bright Green "#3357FF", // Bright Blue "#FF33A8", // Bright Pink "#FF3333", // Bright Red "#33FFF5", // Bright Cyan "#FFFF33", // Bright Yellow "#FF8C33", // Bright Coral "#33FF8C", // Bright Mint "#8C33FF", // Bright Purple "#FF5733", // Bright Orange "#33FF57", // Bright Green "#3357FF", // Bright Blue "#FF33A8", // Bright Pink "#FF3333", // Bright Red "#33FFF5", // Bright Cyan "#FFFF33", // Bright Yellow "#FF8C33", // Bright Coral "#33FF8C", // Bright Mint "#8C33FF" // Bright Purple ]; }; HorizontalRankChart.prototype.createOYLabel = function () { var positions = Array.isArray(this.positions) ? this.positions : []; this.$oyLabels = positions.map(function (it) { return VCore_({ tag: 'text', attr: { 'alignment-baseline': "middle" }, child: { text: it.name } }); }); this.$oyLabelCtn.addChild(this.$oyLabels); }; HorizontalRankChart.prototype.createPositions = function () { var _this2 = this; var positions = Array.isArray(this.positions) ? this.positions : []; this.$position = positions.map(function (it) { var elt = VCore_({ tag: 'gcontainer' }); elt.$line = VCore_({ tag: 'path', style: { stroke: 'rgb(69, 69, 72)', 'stroke-width': 3 } }); elt.addChild(elt.$line); elt.$ranks = it.ranks.map(function (r, i) { return VCore_({ tag: 'gcontainer', "class": 'rank-chart-group', attr: { title: _this2.numberToString(r) }, child: [{ tag: 'circle', "class": 'vc-circle-plot', style: { fill: _this2.colors[i], stroke: 'black', strokeWidth: 2 }, attr: { r: 8, x: 0, y: 0 } }] }); }); elt.addChild(elt.$ranks); return elt; }); this.$postionCtn.clearChild().addChild(this.$position); }; HorizontalRankChart.prototype.updateContentPosition = function () { var _this3 = this; if (!this.cpData) return; var i, j; var width = this.box.width || 0; var positions = Array.isArray(this.positions) ? this.positions : []; var y = 5; this.$title.attr('x', width / 2).attr('y', y); y += 30; var oyLabelWidth = this.$oyLabels.reduce(function (ac, cr) { return Math.max(ac, cr.getBBox().width); }, 0); oyLabelWidth = Math.ceil(oyLabelWidth); var spacing = 40; this.$body.box.y = y + 24; this.$body.box.x = oyLabelWidth + 10; this.$body.box.width = width - this.$body.box.x - 10; this.$oyLabelCtn.box.x = -this.$body.box.x; this.$axis.box.width = this.$body.box.width; this.$oxArrow.attr('d', 'M' + this.$axis.box.width + ' 0 m0 -5v10l6.8 -5z'); this.$axis.box.height = spacing * this.$oyLabels.length; var valueNameWidth = this.$valueName.getBBox().width; this.$valueName.attr('x', this.$axis.box.width).attr('y', -8); this.$fixedContentRef.attr('y', this.$body.box.y - 24); this.$fixedContentRef.attr('width', this.$body.box.width + this.$body.box.x + 8); /** * * @type {Turtle} */ var turtle = new Math_Turtle().moveTo(this.$axis.box.width, 0).hLineTo(0).vLineTo(this.$axis.box.height); var dx = Math.max(100, Math.floor(20 + measureArial14TextWidth(this.numberToString(this.cpData.max)))); var sm = calBeautySegment(Math.floor((this.$axis.box.width - valueNameWidth - 10 - dx / 2) / dx), this.cpData.min, this.cpData.max + 1); this.cpData.sm = sm; dx = Math.floor((this.$axis.box.width - valueNameWidth - 10 - dx / 2) / sm.segmentCount); var dv = (sm.maxValue - sm.minValue) / sm.segmentCount; this.cpData.dx = dx; this.cpData.dv = dv; turtle.moveTo(0, 2); for (i = 0; i < sm.segmentCount; ++i) { turtle.moveBy(dx, -4); turtle.vLineBy(4); } this.$oxy.attr('d', turtle.getPath()); this.$oyLabels.forEach(function (elt, i) { elt.attr('y', i * spacing + spacing / 2); }); while (this.$oxLabelCtn.childNodes.length > sm.segmentCount + 1) { this.$oxLabelCtn.lastChild.remove(); } while (this.$oxLabelCtn.childNodes.length < sm.segmentCount + 1) { this.$oxLabelCtn.addChild(VCore_({ tag: 'text', style: { textAnchor: 'middle' }, attr: { y: -8 }, child: { text: '' } })); } Array.prototype.forEach.call(this.$oxLabelCtn.childNodes, function (elt, i) { elt.firstChild.data = _this3.numberToString(sm.minValue + i * dv); elt.attr('x', dx * i); }); /***** draw grid *******/ turtle = new Math_Turtle(); var oxLength = this.$axis.box.width - 5; turtle.moveTo(oxLength, 0); for (i = 0; i < positions.length; ++i) { turtle.moveBy(-oxLength, spacing).hLineBy(oxLength); } turtle.moveTo(0, spacing * positions.length, 0); for (i = 0; i < sm.segmentCount; ++i) { turtle.moveBy(dx, -spacing * positions.length).vLineBy(spacing * positions.length); } this.$grid.attr('d', turtle.getPath()); this.$position.forEach(function (elt, i) { elt.box.y = i * spacing + spacing / 2; var position = positions[i]; for (var k = 0; k < position.ranks.length; ++k) { elt.$ranks[k].box.x = map(position.ranks[k] - sm.minValue, 0, dv, 0, dx); } if (position.ranks.length > 0) elt.$line.attr('d', "M".concat(map(position.ranks[0] - sm.minValue, 0, dv, 0, dx), " 0 L").concat(map(position.ranks[position.ranks.length - 1] - sm.minValue, 0, dv, 0, dx), " 0")); }); //auto size this.$body.box.height = this.$axis.box.height + 10; //10px: padding button this.box.height = this.$body.box.y + this.$body.box.height; this.fixedAxisCtrl.updateContentPosition(); }; HorizontalRankChart.prototype.numberToString = function () { return Math_int.numberToString.apply(this, arguments); }; HorizontalRankChart.prototype.updateContent = function () { this.computeData(); this.$title.firstChild.data = this.title; this.$valueName.firstChild.data = this.valueName || ''; this.createOYLabel(); this.createPositions(); this.fixedAxisCtrl.updateContent(); this.updateContentPosition(); }; HorizontalRankChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this.updateContentPosition(); }; src_VCore.install(HorizontalRankChart); /* harmony default export */ const src_HorizontalRankChart = (HorizontalRankChart); // EXTERNAL MODULE: ./src/style/stackedhorizontalbarchart.css var stackedhorizontalbarchart = __webpack_require__(7399); ;// CONCATENATED MODULE: ./src/StackedHorizontalBarChart.js /** * @extends SvgCanvas * @constructor */ function StackedHorizontalBarChart() { this.resizeCtrl = new ChartResizeController(this); this.titleCtrl = new ChartTitleController(this); this.computedData = { max: 0 }; this.$title = VCore_$('text.vc-title', this); /** * * @type {GContainer} */ this.$keysCtn = VCore_$('g.vc-stacked-horizontal-keys-ctn', this); /** * * @type {GContainer} */ this.$body = VCore_$('.vc-body', this); this.$keys = []; this.$oxy = VCore_$('#oxy', this); this.$oxArrow = VCore_$('#ox-arrow', this); this.$grid = VCore_$('path.vc-grid', this); this.$rects = []; /** * * @type {KeyNoteGroup} */ this.$keyNoteGroup = VCore_$(KeyNoteGroup.tag, this); /** * y axis keys * @name keys * @type {string[]} * @memberOf StackedHorizontalBarChart# */ /** * series data * @name series * @type {Array<{name: string, values: number[]}>} * @memberOf StackedHorizontalBarChart# */ } StackedHorizontalBarChart.tag = 'StackedHorizontalBarChart'.toLowerCase(); StackedHorizontalBarChart.prototype.rowSpacing = 40; StackedHorizontalBarChart.prototype.paddingContent = 10; StackedHorizontalBarChart.prototype.numberToString = function () { return Math_int.numberToString.apply(this, arguments); }; StackedHorizontalBarChart.render = function () { return VCore_({ tag: svg_SvgCanvas, "class": ['vc-chart', 'vc-stacked-horizontal-bar-chart', 'as-height-auto'], child: [{ tag: 'text', "class": 'vc-title', attr: { y: 15 }, child: { text: '' } }, { tag: KeyNoteGroup }, { tag: svg_GContainer, "class": 'vc-body', child: [{ tag: svg_GContainer, "class": 'vc-stacked-horizontal-keys-ctn' }, { tag: 'path', "class": 'vc-grid' }, { tag: 'gcontainer', "class": 'vchart-axis', child: [{ tag: 'path', id: 'oxy', attr: { d: 'm0 -1v1 h1', fill: 'none' } }, { tag: 'path', id: "ox-arrow", attr: { d: 'm0 -5v10l6.8 -5z' } }] }] }] }); }; StackedHorizontalBarChart.prototype.computeData = function () { var _this = this; var cpData = this.computedData; cpData.max = this.keys.reduce(function (ac, cr, i) { var s = _this.series.reduce(function (ac2, cr2) { var value = cr2.values[i]; if (!(0,utils.isRealNumber)(value)) value = 0; return ac2 + value; }, 0); return Math.max(ac, s); }, 0); if (cpData.max === 0) { cpData.max = 1; // prevent division by zero } cpData.min = 0; cpData.requiredWidth = 0; cpData.requiredWidth = Math.max(cpData.requiredWidth, cpData.titleWidth); cpData.colors = (0,SelectColorSchemeMenu/* generatorColorScheme */.TD)(1, this.series.length || 10); this.addStyle('--vc-required-width', cpData.requiredWidth + 'px'); }; StackedHorizontalBarChart.prototype.updateKeys = function () { var keys = this.keys || []; this.$keysCtn.clearChild(); this.$keys = this.keys.map(function (key) { return VCore_({ tag: 'text', child: { text: key } }); }); this.$keysCtn.addChild(this.$keys); }; StackedHorizontalBarChart.prototype.updateNotes = function () { var _this2 = this; this.$keyNoteGroup.items = this.series.map(function (it, i) { return { noteType: 'rect', text: it.name, color: it.color || _this2.computedData.colors[i] }; }); }; StackedHorizontalBarChart.prototype.updateKeysPosition = function () { var _this3 = this; this.$keys.forEach(function (elt, i) { elt.attr('y', _this3.rowSpacing * (0.5 + i) + 7); }); this.$keysCtn.box.width = this.$keysCtn.getBBox().width; this.$keysCtn.box.x = -this.$keysCtn.box.width - 10; }; StackedHorizontalBarChart.prototype.updateAxisPosition = function () { var turtle = new Math_Turtle(); turtle.moveTo(this.$body.box.width + 10, 0).hLineBy(-this.$body.box.width - 10).vLineBy(this.$body.box.height); this.$oxy.attr('d', turtle.getPath()); this.$oxArrow.attr('d', 'M' + (this.$body.box.width + 10) + ' 0 m0 -5v10l6.8 -5z'); turtle = new Math_Turtle(); var i; var n = this.keys.length; var spacing = this.rowSpacing; var width = this.$body.box.width; var height = this.$body.box.height; for (i = 1; i <= n; ++i) { turtle.moveTo(0, i * spacing).hLineBy(width); } var valueWidth = 30; var dx = Math.max(100, Math.floor(20 + measureArial14TextWidth(this.numberToString(this.computedData.max)))); var sm = calBeautySegment(Math.floor((this.$body.box.width - valueWidth - 10 - dx / 2) / dx), this.computedData.min, this.computedData.max + 1); this.computedData.sm = sm; dx = Math.floor((width - valueWidth - 10 - dx / 2) / sm.segmentCount); n = sm.segmentCount; for (i = 1; i <= n; ++i) { turtle.moveTo(i * dx, 0).vLineBy(height); } this.$grid.attr('d', turtle.getPath()); }; StackedHorizontalBarChart.prototype.makeRect = function (value, color, borderColor) { color = Color/* default.parse */.Z.parse(color + ''); var hsla; if (!borderColor) { hsla = color.toHSLA(); hsla[2] -= 0.2; hsla[1] -= 0.2; if (hsla[1] < 0) hsla[1] = 0; if (hsla[2] < 0) hsla[2] = 0; borderColor = Color/* default.fromHSL */.Z.fromHSL(hsla[0], hsla[1], hsla[2]); } var height = Math.min(20, this.rowSpacing - 10); var valueText = this.numberToString(value); var rectElt = VCore_({ tag: svg_GContainer, child: [{ tag: 'rect', attr: { x: 0, y: -height / 2, height: height, width: 40 }, style: { strokeWidth: 1, strokeColor: 'black', fill: color, stroke: borderColor.toString('hex6') } }, { tag: 'text', style: { fill: color.getContrastYIQ() }, attr: { x: 0, y: 0, "text-anchor": "middle", 'dominant-baseline': "middle" }, child: { text: valueText } }] }); rectElt.$rect = VCore_$('rect', rectElt); rectElt.$value = VCore_$('text', rectElt); rectElt.textWidth = TextMeasure/* default.measureWidth */.Z.measureWidth(valueText, TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14); return rectElt; }; StackedHorizontalBarChart.prototype.updateRectangles = function () { this.$rects.forEach(function (elt) { return elt.remove(); }); this.$rects = []; var keys = this.keys || []; var series = this.series || []; var rectElt; var i, j; for (i = 0; i < keys.length; ++i) { for (j = 0; j < series.length; ++j) { rectElt = this.makeRect(series[j].values[i], series[i].color || this.computedData.colors[j]); this.$rects.push(rectElt); } } this.$body.addChild(this.$rects); }; StackedHorizontalBarChart.prototype.updateRectanglePositions = function () { var sm = this.computedData.sm; var keys = this.keys || []; var series = this.series || []; var rectElt; var i, j, k; k = 0; var value, rectWidth; var width = this.$body.box.width; var s; for (i = 0; i < keys.length; ++i) { s = 0; for (j = 0; j < series.length; ++j) { value = series[j].values[i]; rectWidth = map(value, sm.minValue, sm.maxValue, 0, width); rectElt = this.$rects[k]; k++; if (!rectElt) continue; rectElt.$rect.attr('width', rectWidth); rectElt.$value.attr('x', rectWidth / 2); rectElt.box.x = map(s, sm.minValue, sm.maxValue, 0, width); rectElt.box.y = this.rowSpacing * (0.5 + i); if (rectElt.textWidth > rectWidth - 4) { rectElt.$value.addStyle('display', 'none'); rectElt.attr('title', this.numberToString(value)); } else { rectElt.$value.removeStyle('display'); } s += value; } } }; StackedHorizontalBarChart.prototype.updateContent = function () { this.pendingUpdate = false; this.computeData(); this.updateKeys(); this.updateNotes(); this.updateRectangles(); }; StackedHorizontalBarChart.prototype.requestUpdate = function () { var _this4 = this; if (this.pendingUpdate) return; this.pendingUpdate = true; setTimeout(function () { _this4.updateContent(); _this4.updateContentPosition(); }, 1); }; StackedHorizontalBarChart.prototype.updateContentPosition = function () { this.$title.attr('y', this.paddingContent + 17 + ''); this.$title.attr('x', this.box.width / 2 + ''); this.updateKeysPosition(); this.$body.box.x = this.$keysCtn.box.width + this.paddingContent + 10; this.$body.box.width = this.box.width - this.paddingContent - this.$body.box.x - 20; //10 for arrow this.$keyNoteGroup.box.y = 20 + 10 + this.paddingContent; this.$keyNoteGroup.box.width = this.$body.box.width - 20; this.$keyNoteGroup.updateSize(); this.$body.box.y = this.$keyNoteGroup.box.y + this.$keyNoteGroup.box.height + 10; this.$body.box.height = this.rowSpacing * this.keys.length; this.updateAxisPosition(); this.updateRectanglePositions(); this.box.height = this.$body.box.height + this.$body.box.y + this.paddingContent; this.addStyle('--vc-require-height', this.box.height); }; StackedHorizontalBarChart.prototype.updateSize = function () { svg_SvgCanvas.prototype.updateSize.call(this); this.updateContentPosition(); }; StackedHorizontalBarChart.property = {}; StackedHorizontalBarChart.property.title = { set: function set(value) { this.$title.firstChild.data = (value || '') + ''; this.computedData.titleWidth = TextMeasure/* default.measureWidth */.Z.measureWidth(this.$title.firstChild.data, TextMeasure/* default.FONT_ARIAL */.Z.FONT_ARIAL, 14); }, get: function get() { return this.$title.firstChild.data; } }; StackedHorizontalBarChart.property.series = { set: function set(value) { this._series = value || []; this.requestUpdate(); }, get: function get() { return this._series || []; } }; StackedHorizontalBarChart.property.keys = { set: function set(value) { this._keys = value || []; this.requestUpdate(); }, get: function get() { return this._keys || []; } }; src_VCore.install(StackedHorizontalBarChart); /* harmony default export */ const src_StackedHorizontalBarChart = (StackedHorizontalBarChart); ;// CONCATENATED MODULE: ./src/install.js var VChartCreators = [src_BChart, src_VerticalChart, src_PieChart, src_AssessmentChart, src_ColumnChart, src_ColumnAreaChart, src_TinyCircleChart, src_DoughnutChart, src_SimpleColumnChart, SimplerBarChart, src_SimpleLineChart, src_HorizontalRangeChart, src_HorizontalRankChart, src_StackedHorizontalBarChart, LineChart2]; /*** * * @param {Dom} core */ function install_install(core) { core.install(VChartCreators); } ;// CONCATENATED MODULE: ./src/index.js install_install(src_VCore); src_VCore.install(SelectColorSchemeMenu/* default */.ZP); absol.Dom.ShareInstance.install(SelectColorSchemeMenu/* default */.ZP); var src_vchart = { core: src_VCore, creator: src_VCore.creator, _: src_VCore._, $: src_VCore.$, buildSvg: src_VCore._, lambda: { isNumber: isNumber, toLocalString: toLocalString }, text: helper_text, circle: circle, rect: rect, vline: vline, hline: hline, moveVLine: moveVLine, moveHLine: moveHLine, autoCurve: autoCurve, showTooltip: showTooltip, closeTooltip: closeTooltip, addDevContextMenu: addDevContextMenu }; /* harmony default export */ const src = (src_vchart); ;// CONCATENATED MODULE: ./src/vchart.js Object.assign(src, helper_namespaceObject); src.tl = template_namespaceObject; if ('absol' in window) { if (absol.coreDom) { absol.coreDom.install(Object.keys(src.creator).filter(function (e) { return !!e.match(/.+chart/); }).reduce(function (ac, cr) { ac[cr] = src.creator[cr]; return ac; }, {})); install_install(absol.coreDom); } else { console.error("coreDom not found"); } } window.vchart = src; })(); /******/ })() ;