UNPKG

d1-web

Version:

Lightweight responsive front-end framework

1,523 lines (1,320 loc) 112 kB
/*! d1-web/classic v2.7.5 */ (function () { 'use strict'; if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; } if (!Element.prototype.closest) { Element.prototype.closest = function (s) { var el = this; do { if (el.matches(s)) return el; el = el.parentElement || el.parentNode; } while (el !== null && el.nodeType === 1); return null; }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } 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 _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; } 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."); } /*! app - core of d1-web */ // (() => { // const main = new (function () { var _default$b = /*#__PURE__*/function () { function _default() { _classCallCheck(this, _default); this.sequence = 0; this.plugins = {}; this.handlers = {}; this.opt = { plug: {}, debug: 0, cAct: 'act', cHide: 'hide', cToggle: 'toggle', cOff: 'off', cClose: 'close', cJs: 'js', hClose: '#cancel', hOk: '#ok', sCancel: 'Cancel', sOk: 'OK' }; } _createClass(_default, [{ key: "init", value: function init(opt) { var _this = this; // console.time('start'); document.body.classList.add(this.opt.cJs); // prepare body: anti-hover, anti-target this.fire('start'); //options if (!opt) { opt = document.body.dataset.d1; if (opt) opt = this.parse(opt); } this.setOpt(opt); this.dbg(['opt', this.opt]); this.fire('options'); this.initPlugins(); // plugins // bind events this.b([window], 'hashchange', function (e) { return _this.on('hashchange', e); }); // on window this.b([document], ['invalid', 'focus', 'blur'], function (e) { return _this.on(e.type, e); }, true); //useCapture this.b([document], ['click', 'keydown', 'input', 'change', 'submit'], function (e) { return _this.on(e.type, e); }); if (location.hash) this.on('hashchange'); this.fire('after'); this.fire('ready'); } // event delegation // https://gomakethings.com/why-event-delegation-is-a-better-way-to-listen-for-events-in-vanilla-js/ }, { key: "on", value: function on(t, e) { this.fire('before', e); this.fire(t, e); //this.fire(t + 'ed', e) //if (!e || !e.defaultPrevented) this.fire('after', e); } }, { key: "arrange", value: function arrange(n) { if (n) this.fire('arrange', { n: n }); } //plugins }, { key: "setOpt", value: function setOpt(opt) { var _this2 = this; if (opt) Object.keys(opt) /*.filter(k => k != 'plug')*/ .forEach(function (k) { return _this2.opt[k] = opt[k]; }); } }, { key: "plug", value: function plug(c, n) { var p = new c(); this.plugins[n || p.name] = p; } }, { key: "initPlugins", value: function initPlugins() { var _this3 = this; if (this.opt.disable) this.opt.disable.forEach(function (p) { return delete _this3.plugins[p]; }); this.dbg(['plugins', this.plugins]); Object.keys(this.plugins).forEach(function (k) { _this3.plugins[k].install(_this3); _this3.fire('plugin', { name: k, plugin: _this3.plugins[k] }); }); this.fire('init'); this.fire('arrange'); // , {n: document.body} this.fire('plugins'); } // call method of plugin }, { key: "pf", value: function pf(p, f) { var _this$plugins$p; for (var _len = arguments.length, a = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { a[_key - 2] = arguments[_key]; } if (this.plugins[p] && this.plugins[p][f]) (_this$plugins$p = this.plugins[p])[f].apply(_this$plugins$p, a);else this.dbg(['no plugin function', p + '.' + f + '()'], -1); } }, { key: "toggle", value: function toggle() { for (var _len2 = arguments.length, a = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { a[_key2] = arguments[_key2]; } this.pf.apply(this, ['toggle', 'toggle'].concat(a)); } }, { key: "fetch", value: function fetch() { for (var _len3 = arguments.length, a = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { a[_key3] = arguments[_key3]; } this.pf.apply(this, ['fetch', 'fetch'].concat(a)); } }, { key: "dialog", value: function dialog() { for (var _len4 = arguments.length, a = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { a[_key4] = arguments[_key4]; } this.pf.apply(this, ['dialog', 'openDialog'].concat(a)); } //events }, { key: "fire", value: function fire(et, e) { var _e, _this4 = this; e = (_e = e) !== null && _e !== void 0 ? _e : {}; if (!e.type) e.type = et; this.dbg(['fire ' + et, e]); if (this.handlers[et]) this.handlers[et].forEach(function (h) { var _e2; return (_e2 = e) !== null && _e2 !== void 0 && _e2.unfire ? null : h.call(_this4, e); }); } }, { key: "listen", value: function listen(et, f) { //if (!this.handlers[et]) this.handlers[et] = [] //this.handlers[et].push(f) this.h(et, '', f); } //handle }, { key: "h", value: function h(et, s, f, before) { var _this5 = this; if (et instanceof Array) et.forEach(function (ett) { return _this5.h(ett, s, f, before); });else { if (!this.handlers[et]) this.handlers[et] = []; this.handlers[et][before ? 'unshift' : 'push'](function (e) { if (s) e.recv = e.target.closest ? e.target.closest(s) : null; if (!s || e.recv) f(e); }); } } }, { key: "dispatch", value: function dispatch(n, et, p) { // {view: window, bubbles: true, cancelable: true, composed: false} if (!p) p = { bubbles: true, cancelable: true, view: window }; if (typeof Event === 'function') { //-ie if (et instanceof Array) et.forEach(function (ett) { return n.dispatchEvent(new Event(ett, p)); });else n.dispatchEvent(new Event(et, p)); } } //utils // debug }, { key: "isDebug", value: function isDebug(l) { return this.opt.debug > (l || 0) || location.href.indexOf('d1debug') != -1; } }, { key: "dbg", value: function dbg(s, l, e) { if (this.isDebug(l)) console[e || l < 0 ? 'error' : 'log'](s); } // sequence for IDs of generated nodes }, { key: "seq", value: function seq() { return ++this.sequence; } // convert to array }, { key: "a", value: function a(c) { return c ? Array.prototype.slice.call(c) : c; } // get object item by path }, { key: "path", value: function path(r, p, def) { if (p) { if (this.typeOf(p) === 'string') p = p.split('.'); for (var i = 0; i < p.length; i++) { if (p[i] || p[i] === 0) { if (r === null || r[p[i]] === undefined) return def; r = r[p[i]]; } } } return r; } // find node }, { key: "q", value: function q(s, n) { try { return (n || document).querySelector(s); } catch (e) { return null; } } // find nodes }, { key: "qq", value: function qq(s, n) { try { return this.a((n || document).querySelectorAll(s)); } catch (e) { return []; } } }, { key: "next", value: function next(n, s, prev) { while (n = n[prev ? 'previousElementSibling' : 'nextElementSibling']) { if (n.matches(s)) return n; } } }, { key: "nn", value: function nn(q) { if (!q) return [];else if (typeof q === 'string') return this.qq(q);else if (q.tagName) return [q];else return this.a(q); } // add event listener }, { key: "b", value: function b(q, et, f, capt) { if (!et) this.e(q, f); if (f) this.nn(q).forEach(function (n) { return et instanceof Array ? et.forEach(function (ett) { return n.addEventListener(ett, function (e) { return f(e); }, capt); }) : n.addEventListener(et, function (e) { return f(e); } /*f.bind(this)*/ , capt); }); } // execute for each node }, { key: "e", value: function e(q, f) { var _this6 = this; if (f) this.nn(q).forEach(function (n) { return f.call(_this6, n); }); } // execute for each node inside some node }, { key: "ee", value: function ee(n, q, f) { this.e(this.qq(q, n), f); } // add/remove classes }, { key: "cls", value: function cls(n, add, del, rev) { var _this7 = this, _n$classList, _n$classList2; var a = rev ? [del, add] : [add, del]; a = a.map(function (c) { return !c || _this7.typeOf(c) === 'array' ? c : c.split(/\s+/).filter(function (x) { return x; }); }); if (a[1]) (_n$classList = n.classList).remove.apply(_n$classList, _toConsumableArray(a[1])); if (a[0]) (_n$classList2 = n.classList).add.apply(_n$classList2, _toConsumableArray(a[0])); } }, { key: "typeOf", value: function typeOf(v) { return Object.prototype.toString.call(v).slice(8, -1).toLowerCase(); } }, { key: "parse", value: function parse(j, def) { var r = ''; try { r = JSON.parse(j); } catch (e) { this.dbg(['JSON parse failed', j], -1); r = def === true ? j : def === undefined ? null : def; } return r; } // insert node //pos: -1=before, false=prepend, 0=append(default), 1=after }, { key: "ins", value: function ins(tag, t, attrs, n, pos) { var c = document.createElement(tag || 'span'); if (this.typeOf(t) === 'array') t.forEach(function (m) { return m.nodeType ? c.appendChild(m) : c.innerHTML += m; });else if (t && t.nodeType) c.appendChild(t);else if (t) c.innerHTML = t; if (attrs) { if (this.typeOf(attrs) === 'string') attrs = { className: attrs }; for (var i in attrs) { if (attrs[i] !== null && attrs[i] !== undefined) { if (i.match(/-/)) c.setAttribute(i.replace(/^-/, ''), attrs[i]);else c[i] = attrs[i]; } } } return n ? pos ? n.parentNode.insertBefore(c, pos < 0 ? n : n.nextSibling) : pos === false ? n.insertBefore(c, n.firstChild) : n.appendChild(c) : c; } // remove all children }, { key: "clr", value: function clr(n) { if (n) while (n.firstChild) { n.removeChild(n.firstChild); } } // insert close link with icon }, { key: "x", value: function x(d, pos, cls) { return this.ins('a', this.i('close', '&#x2715;'), { href: this.opt.hClose, className: cls || '' }, d, pos); } // insert icon }, { key: "i", value: function i(ico, alt) { return this.plugins.icons ? this.plugins.icons.i(ico, alt) : this.ins('span', alt || ico); } // get node toggle status }, { key: "vis", value: function vis(n) { return n && !n.classList.contains(this.opt.cOff); } // fix clone IDs }, { key: "fixIds", value: function fixIds(m) { var _this8 = this; this.ee(m, '[id]', function (n) { var x = n.id; var id = 'id-' + _this8.seq(); n.id = id; _this8.ee(m, 'a[href="#' + x + '"]', function (a) { return a.href = '#' + id; }); _this8.ee(m, 'label[for="' + x + '"]', function (a) { return a.htmlFor = id; }); }); } }]); return _default; }(); // listen to all events var _default$a = /*#__PURE__*/function () { function _default(name) { _classCallCheck(this, _default); this.app = null; this.name = name || 'plugin'; this.opt = {}; } _createClass(_default, [{ key: "install", value: function install(app) { var _this = this; if (!app.opt.plug[this.name]) app.opt.plug[this.name] = {}; var opt = app.opt.plug[this.name]; Object.keys(this.opt).forEach(function (k) { return k in opt ? null : opt[k] = _this.opt[k]; }); this.opt = opt; // this.app = app; this.app.listen('init', function (e) { return _this.init(); }); if (this.arrange) this.app.listen('arrange', function (e) { return _this.arrange(e); }); } }, { key: "init", value: function init() { console.log('plugin.init()'); } }]); return _default; }(); /*! iconset - svg paths for building icons */ // "module.exports" is used over "export default" // to work with build step "css-icons.js" var iconset = { menu: [7, 'M.5 1h6v1h-6zm0 2h6v1h-6zm0 2h6v1h-6z'], sort: [7, 'M1 1h2v1h-2zm0 2h3.5v1h-3.5zm0 2h5v1h-5z'], more: [17, 'M7 2h3v3h-3zm0 5h3v3h-3zm0 5h3v3h-3z'], grid: [7, 'M1 1h2v2h-2zM4 1h2v2h-2zM1 4h2v2h-2zM4 4h2v2h-2z'], home: [10, 'M1 4.8h1v4h2v-3h2v3h2v-4h1l-4-4z'], find: [12, 'M5 1a4 4 0 1 0 .01 0zm0 1a3 3 0 1 1-.01 0m3 5l-1 1 3 3 1-1z'], config: [220, 'M35 67l75 -44 75 44 0 89-75 44-75-44zm75 8a35 35 0 1 0 .01 0z'], close: [12, 'M2 1l4 4 4-4 1 1-4 4 4 4-1 1-4-4-4 4-1-1 4-4-4-4z'], user: [10, 'M5 9C13 -1.5 -3 -1.5 5 9zM1 8.5q4 1 8 0-4 -3 -8 0z'], exit: [10, 'M1 1h4v1h-3v6h3v1h-4zm2 3h3v-2l3 3-3 3v-2h-3z'], key: [20, 'M2 16l7-7v-4l3-3q7 0 7 7l-3 3h-4l-6 6h-4zm3 1h1l6-6h-1zm11-12a1.5 1.5 0 1 0 .01 .01z'], lock: [10, 'M1.5 4h7v5h-7zm1 0c0-4 5-4 5 0h-1c0-3-3-3-3 0zm2 1v2h1v-2z'], edit: [10, 'M7 1q1.6 .4 2 2l-5 5-3 1 1-3zM2.3 6.3l-.5 1.5.4.4 1.5-.5z'], add: [7, 'M3 1h1v2h2v1h-2v2h-1v-2h-2v-1h2z'], "delete": [20, 'M5 3l5 5 5-5 2 2-5 5 5 5-2 2-5-5-5 5-2-2 5-5-5-5z'], ok: [100, 'M10 48l11-9 18 22 40-50 11 9-51 65z'], up: [10, 'M1 6l4-4 4 4-1 1-3-3-3 3z'], down: [10, 'M1 4l4 4 4-4-1-1-3 3-3-3z'], left: [10, 'M6 1l1 1-3 3 3 3-1 1-4-4z'], right: [10, 'M4 1l4 4-4 4-1-1 3-3-3-3z'], asc: [12, 'M2 7l-1-1 5-5 5 5-1 1 -3.25 -3.2v7h-1.5v-7z'], desc: [12, 'M2 5l-1 1 5 5 5-5-1-1 -3.25 3.2v-7h-1.5v7z'], back: [12, 'M7 2l-1-1 -5 5 5 5 1-1 -3.2 -3.25h7v-1.5h-7z'], forward: [12, 'M5 2l 1-1 5 5 -5 5 -1-1 3.2 -3.25h-7v-1.5h7z'], upload: [10, 'M1 8h8v1h-8zm1-4h2v3h2v-3h2l-3-3z'], download: [10, 'M1 8h8v1h-8zm1-3.7h2v-3h2v3h2l-3 3z'], first: [12, 'M2 2h1.5v8h-1.5zm2 4l6-4v8z'], last: [12, 'M2 2v8l6-4zm6.5 0h1.5v8h-1.5z'], folder: [12, 'M1 1.5h4l1 2h5v7h-10zm1 3v5h8v-5z'], open: [12, 'M.5 1.5h4l1 2h6.3l-2.3 7h-9zm3 3l-2 5h7l2-5z'], file: [12, 'M2 1h5l3 3v7h-8zm1 1v8h6v-6h-2v-2z'], attach: [15, 'M4.5 11q0 3 3 3t3-3v-8q0-2-2-2t-2 2v7h1v-7q0-1 1-1t1 1v8q0 2-2 2t-2-2v-7h-1z'], audio: [19, 'M8 14h-1v-10l8-2v10h-1v-6.5l-6 1.5za3 2 -20 1 1 0 -.01zm7-2a3 2 -20 1 1 0 -.01z'], video: [12, 'M1 3h7v2l3-2v6l-3-2v2h-7z'], image: [12, 'M1 2h10v8h-10zm1 1v5l3-3 2 2 1-1 2 2 v-5zm5.5 .5a1 1 0 1 0 .001 0z'], text: [12, 'M2 1h5l3 3v7h-8zm1 1v8h6v-6h-2v-2zm1 4h4v1h-4zm0 2h4v1h-4z'], tree: [26, 'M9 3h8v6h-3v3h8v5h2v6h-6v-6h2v-3h-6v3h2v6h-6v-6h2v-3h-6v3h2v6h-6v-6h2v-5h8v-3h-3z'], list: [7, 'M1 1h1v1h-1zm0 2h1v1h-1zm0 2h1v1h-1z M3 1h3v1h-3zm0 2h3v1h-3zm0 2h3v1h-3z'], // link: [20, 'M9 7l6-6 4 4-6 6-1-1 5-5-2-2-5 5zm-8 8l6-6 1 1-5 5 2 2 5-5 1 1-6 6zm5.5 -2.5l6-6 1 1-6 6z'], // link: [17, 'M2 11q-2 2 0 4t4 0l2-2q2-2 0-4t-4 0zm5 -5q-2 2 0 4t4 0l2-2q2-2 0-4t-4 0zm3-1q1-1 2 0t0 2l-9 9q-1 1 -2 0 t0-2z'], link: [17, 'M12 1h2l2 2v2l-4 4h-2l5-5-2-2-5 5v-2zm-5 7h-2l-4 4v2l2 2h2l4-4v-2l-5 5-2-2zm-1 4l-1-1 6-6 1 1z'], chart: [10, 'M1 9v-3h2v3zm3 0v-5h2v5zm3 0v-7h2v7z'], no: [7, 'M1 3h5v1h-5z'], ban: [20, 'M10 2a8 8 0 1 0 .01 0m0 2a6 6 0 1 1 -.01 0zm-4.5 .5l-1 1 10 10 1-1z'], warning: [16, 'M8 1.7l-7 12h14zm0 9a1 1 0 1 1-.01 0c-3-7 3-7 0 0z'], info: [20, 'M10 2a8 8 0 1 0 .01 0zm-1 3h2v2h-2zm-1 4h3v5l1 1h-3v-5'], share: [22, 'M6 8a3 3 0 1 0 .01 0zm10-5a3 3 0 1 0 .01 0zm0 10a3 3 0 1 0 .01 0zm-10-3v2l10 5v-2zv2l10-5v-2z'], world: [12, 'M6 1.2a4.8 4.8 0 1 0 .01 0zm0 .8a4 4 0 1 1-.01 0za3 4 0 1 0 .01 0za2.2 4 0 1 1-.01 0za.5 4 0 1 0 .01 0zm4 4a4 .2 0 1 0 0 .01z'], flag: [10, 'M2 1h1v1q2-1 3 0t3-0v4q-2 1-3 0t-3 0v3h-1z'], pin: [10, 'M2 4a3 3 0 0 1 6 0q0 2 -3 5q-3-3-3-5zm3 -2a2 2 0 1 0 .01 0z'], //date: [10, 'M1 1.5h8v7h-8zm1 2v4h6v-4zm.5-3v2h1.5v-2zm3.5 0v2h1.5v-2z'], date: [11, 'M1 1.5h9v8h-9zm1 2v5h7v-5zm.5-3v2h1.5v-2zm4.5 0v2h1.5v-2z'], time: [24, 'M12 1a10 10 0 1 1 -.01 0zm0 2a8 8 0 1 0 .01 0zm-1.2 1h2v6.5l3.5 3.5-1.5 1.5-4-4z'], refresh: [20, 'M10 .3v3a7 7 0 1 0 7 7h-2a5 5 0 1 1-5-5v3l5-4z'], //refresh2: [20, 'M14.5 5.5a7 7 0 1 0 0 9l-1.5-1.5a5 5 0 1 1 0-6l-2 2h5.5v-5.5z'], view: [12, 'm1 6q5-6 10 0v1q-5 -6-10 0zm5-3a2.8 2.8 0 1 1 -.01 0zm0 1.8a1.1 1.1 0 1 0 .01 0z'], //card: [14, 'M1 3h12v8h-12zm1 1v1h10v-1zm0 3v3h10v-3z'], card: [14, 'M1 3.5q0-1 1-1h10q1 0 1 1v7q0 1 -1 1h-10q-1 0-1-1zm1 0v1h10v-1zm0 3v4h10v-4z'], sum: [12, 'M2.5 3v-1h7v1h-5l3 3-3 3h5v1h-7v-1l3-3z'], //copy: [9, 'M1 3 h1v4h4v1h-5zm2-2h5v5h-5zm1 1v3h3v-3z'], copy: [12, 'M2 3 h1v7h5v1h-6zm2-2h6v8h-6zm1 1v6h4v-6z'], help: [18, 'M9 2a7 7 0 1 0 .01 0zm-3 5q0-3 3-3t3 3c0 3-2 2-2 4h-2c0-3 2-2 2-4q0-1-1-1t-1 1zm3 4.5a1.3 1.3 0 1 1 -.01 0z'], phone: [13, 'M3 1l2 3-1.2 1.2 4 4 1.2-1.2 3 2c-3 6 -15 -6 -9-9z'], //mail: [14, 'M1 2.5h12v9h-12zm1 1v1l5 5 5 -5v-1z'], mail: [14, 'M1 2.5h12v9h-12zm1 1v1l5 3 5 -3v-1zm0 2v5h10v-5l-5 3z'], chat: [12, 'M6 1.2a5 4 0 1 0 .01 0zm0 1a4 3 0 1 1-.01 0zm-3.8 5.5l-1 3 4-2z'], send: [12, 'M1 2l10 4-10 4 1.5-3.6 6-.4-6-.4z'], bookmark: [8, 'M4 5l-2 2v-6h4v6z'], star: [32, 'M16 2 l9 28-23-18 28 0-23 18z'], heart: [6, 'M3 2c2-2 4 1 0 3c-4-2-2-5 0-3z'], tag: [9, 'M1 5.2l4-4h3v3l-4 4zm6-3.1a.6 .6 0 1 0 .01 .01z'], expand: [10, 'M1 1h3v1h-2v2h-1zm5 0h3v3h-1v-2h-2zm2 5h1v3h-3v-1h2zm-7 0h1v2h2v1h-3z'], collapse: [10, 'M4 4h-3v-1h2v-2h1zm2 0v-3h1v2h2v1zm0 2h3v1h-2v2h-1zm-2 0v3h-1v-2h-2v-1z'], box: [26, 'M3 6l10-2.7 10 2.7-10 3zm-.8 1.2l10 3v13l-10-4zm21.6 0l-10 3v13l10-4z'], columns: [16, 'M1.5 2.5h13v11h-13zm1 2v8h5v-8zm6 0v8h5v-8z'], //storage: [9, 'M1 1h7v3h-7zm0 4h7v3h-7zm4-3v1h2v-1zm0 4v1h2v-1z'], //storage: [10, 'M1 3v-2h9v2zm0 3zv-2h9v2zm0 3zv-2h9v2zm6 -1.5v1h2v-1zm0-3v1h2v-1zm0-3v1h2v-1z'], storage: [14, 'M1.5 4.5v-3h11v3zm0 4zv-3h11v3zm0 4zv-3h11v3zm8 -2v1h2v-1zm0-4v1h2v-1zm0-4v1h2v-1z'], settings: [11, 'M1 2h9v1h-9zm0 3h9v1h-9zm0 3h9v1h-9zm2-7h1v3h-1zm4 3h1v3h-1zm-3 3h1v3h-1z'], power: [18, 'M6 3a6.7 6.7 0 1 0 6 0v2a4.9 4.9 0 1 1 -6 0zm2-1.5h2v8h-2z'], energy: [11, 'M5 1.5l-2 4h2l-2 5 5-6h-2l2-3z'], sound: [9, 'M3 6h-2v-3h2l3-2v7zm3.7-3q2 1.5 0 3z'], mic: [20, 'M7 5 a3 3 0 1 1 6 0v4a3 3 0 1 1 -6 0zm-2 4a5 5 0 1 0 10 0zm4 4v3h-3v2h8v-2h-3v-3z'], photo: [10, 'M1 2.5h2l1-1h2l1 1h2v5h-8zm4 .5a1.8 1.8 0 1 0 .01 0z'], print: [10, 'M1 2.5h2v-1h4v1h2v4h-8zm2 2l-1 4h6l-1-4zm4-1h1v-.5h-1z'], play: [12, 'M3 2v8l7-4z'], pause: [9, 'M2 2h2v5h-2zm3 0h2v5h-2z'], stop: [9, 'M2 2h5v5h-5z'], rec: [10, 'M5 2a3 3 0 1 0 .01 0z'], layers: [14, 'M1 5.5l6-3 6 3-6 3zm0 3l2-1 4 2 4-2 2 1-6 3z'], none: [1, 'M1 1z'] }; var _default$9 = /*#__PURE__*/function (_Plugin) { _inherits(_default, _Plugin); var _super = _createSuper(_default); function _default() { var _this; _classCallCheck(this, _default); _this = _super.call(this, 'icons'); _this.opt = { cIcon: 'icon', // class of svg icon pIcon: 'icon-', // class prefix of tag to insert icon into cEmpty: 'empty', qReplace: '.replace', re: { '+': ['ok', 'y'], '-': ['no', 'n'], 'x': ['ban', 'e'], '!': ['warning', 'w'], '?': ['help', 'i'] }, // sort: !+-?x iconSize: 24, pSvg: 'icon-' // id prefix to search on page; set false to skip search }; _this.parsed = {}; _this.icons = iconset; return _this; } _createClass(_default, [{ key: "init", value: function init() { var _this2 = this; document.body.classList.add('js-icons'); this.app.listen('active', function (e) { return _this2.iconize(e.n, e.on); }); // as soon as possible this.arrange({ n: document.body }); // console.timeEnd('start'); } }, { key: "arrange", value: function arrange(_ref) { var _this3 = this; var n = _ref.n; if (n) { this.app.ee(n, '[class*="' + this.opt.pIcon + '"]', function (n) { return _this3.iconize(n); }); this.app.ee(n, this.opt.qReplace, function (n) { return _this3.replace(n); }); } } }, { key: "iconize", value: function iconize(n, on) { var m = n.className.match(new RegExp('(?:^|\\s)' + (on ? '(?:act-)' : '') + this.opt.pIcon + '([\\w\\-_\\/]+)')); if (m && (on === undefined || n.matches('[class*="act-"]'))) { this.app.ee(n, 'svg', function (s) { return s.parentNode.removeChild(s); }); this.addIcon(m[1], n); } } }, { key: "addIcon", value: function addIcon(i, n) { var t = n.textContent; var icon = this.i(i); if (icon) { var _icon$classList; if (n.classList.contains(this.opt.cEmpty)) { this.app.clr(n); if (!n.hasAttribute('title')) n.title = t; n.classList.remove(this.opt.cEmpty); } if (n.firstChild && !n.firstChild.tagName) this.app.ins('span', n.firstChild, {}, n, false); n.insertBefore(icon, n.firstChild); // n.classList.add(this.opt.pIcon + i.split(/[\/_]/)[0]); var m = n.className.match(/\bic_([\w\-_]+)\b/); if (m) (_icon$classList = icon.classList).add.apply(_icon$classList, _toConsumableArray(m[1].split('_'))); } } }, { key: "i", value: function i(ico, alt) { var a = ico.split(/[\/_]/); ico = a[0]; if (this.parsed[ico] === undefined) { var svg = ''; if (this.opt.pSvg !== false) { var id = this.opt.pSvg + ico; var sym = document.getElementById(id); if (sym && sym.tagName.toLowerCase() == 'symbol') svg = '<svg><use xlink:href="#' + id + '"></use></svg>'; // from page } if (!svg) { svg = this.icons[ico] || ''; if (typeof svg !== 'string') { svg = '<svg viewBox="0 0 ' + svg[0] + ' ' + svg[0] + '"><path d="' + svg[1] + '"/></svg>'; // from array } } var n; if (svg) { var div = document.createElement('div'); div.innerHTML = svg; n = div.firstChild; if (!n.getAttribute('width')) n.setAttribute('width', this.opt.iconSize); if (!n.getAttribute('height')) n.setAttribute('height', this.opt.iconSize); if (!n.getAttribute('class')) n.setAttribute('class', this.opt.cIcon); } else n = ''; this.parsed[ico] = n; } return this.parsed[ico] ? this.prepareSvg(this.parsed[ico].cloneNode(true), a.slice(1)) : alt ? this.app.ins('span', alt) : null; } }, { key: "prepareSvg", value: function prepareSvg(n, a) { var _n$classList; var w = a.filter(function (x) { return x.match(/^\d+$/); }); var c = a.filter(function (x) { return x && !x.match(/^\d+$/); }); if (w.length) n.classList.add('js-resized'); if (w[0]) n.style.width = w[0] + 'px'; if (w[1]) n.style.height = w[1] + 'px'; if (c.length) (_n$classList = n.classList).add.apply(_n$classList, _toConsumableArray(c)); return n; } }, { key: "replace", value: function replace(n) { var _this4 = this; this.app.ee(n, '*', function (m) { return _this4.replaceItem(m, n); }); } }, { key: "replaceItem", value: function replaceItem(n, p) { var t = 'innerText' in n && !n.firstElementChild ? n.innerText.replace(/^\s+|\s+$/g, '') : ''; if (t.length == 1 && t in this.opt.re && !('val' in n.dataset)) { n.innerHTML = ''; var i = p.dataset[this.opt.re[t][1]] || this.opt.re[t][0]; this.app.ins('', this.i(i, t), 'text-' + this.opt.re[t][1], n); n.dataset.val = t; } } }]); return _default; }(_default$a); var _default$8 = /*#__PURE__*/function (_Plugin) { _inherits(_default, _Plugin); var _super = _createSuper(_default); function _default() { var _this; _classCallCheck(this, _default); _this = _super.call(this, 'toggle'); _this.nEsc = 0; _this.opt = { keepHash: true, mediaSuffixes: ['-mobile', '-desktop'], dlgUnscroll: true, //qTgl: '.toggle[id]', qTrg: '[id].target', qPop: '.pop>div[id]', qNav: '.nav ul', //auto [id] qDlg: '.dlg', //generated dialogs may have no [id] qTab: '.tabs+div>div[id]', qTre: 'ul.tree ul', //auto [id] qDrw: '.drawer[id]', qAccRoot: 'ul.tree.accordion', qAcc: 'ul.tree.accordion ul', qGal: '.gal>a[id]', // dup of gallery.opt.qGal qSubMem: '.tabs.mem+div>div[id], ul.mem:not(.nav) ul', //qMedia: '[id].target-mobile, [id].target-desktop', qDrawer: '.drawer[id]:not(.shift)', qTip: '[data-tip=""][title], .tip[title]', qModal: '.gal>a[id], .dlg', qMassTgl: 'a[data-nodes]:not([data-set])', cMem: 'mem', cFade: 'fade', cTarget: 'target', // css cToggle: 'toggle', // js hUnhash: '#_' }; return _this; } _createClass(_default, [{ key: "init", value: function init() { var _this2 = this; var app = this.app; app.e('a[data-href]', function (n) { return n.href = n.dataset.href; }); app.listen('before', function (e) { return (e === null || e === void 0 ? void 0 : e.type) == 'click' ? _this2.beforeClick(e) : null; }); // click out app.listen('keydown', function (e) { return _this2.onKey(e); }); //esc app.listen('click', function (e) { return _this2.onClick(e); }); app.h('click', 'a[href^="#"]', function (e) { return _this2.onClickHash(e); }); app.listen('hashchange', function (e) { return _this2.onHash(e); }); //initial state, # app.listen('esc', function (e) { return _this2.esc(e); }); //click #cancel, hash #cancel, key-27 app.listen('active', function (e) { return _this2.hiliteLink(e.n, e.on); }); app.h('click', this.opt.qMassTgl, function (e) { return _this2.massToggle(e.recv, e); }); app.listen('modal', function (e) { return _this2.modalStyle(e); }); //toggle var q = this.opt; this.opt.qTgl = this.opt.mediaSuffixes.concat(['']).map(function (x) { return ( /*'[id]' + */ '.' + app.opt.cToggle + x ); }).join(', '); this.opt.qUnpop = [q.qPop, q.qNav, q.qDlg, q.qDrw /*, q.qGal*/ ].join(', '); this.opt.qUnpopOn = [q.qPop, q.qNav, q.qDlg, q.qDrw /*, q.qGal*/ ].map(function (n) { return n + ':not(.' + app.opt.cOff + ')'; }).join(', '); this.arrangeOnce(); } }, { key: "arrangeOnce", value: function arrangeOnce() { var _this3 = this; var n = null; var app = this.app; var q = this.opt; var togglers = [q.qTrg, q.qPop, q.qNav, q.qDlg, q.qTab, q.qTre, q.qDrw /*, q.qMedia/*, q.qGal*/ ].join(', '); //initialize togglers app.e(togglers, function (n) { return _this3.initToggler(n); }); this.opt.mediaSuffixes.forEach(function (x) { return app.e(_this3.opt.qTrg + x, function (n) { return _this3.initToggler(n, x); }); }); app.e(this.opt.qMassTgl, function (n) { return app.e(n.dataset.nodes, function (m) { return _this3.initToggler(m, '', true); }); }); //let autohide = [ q.qPop, q.qNav, q.qDlg, q.qTab, q.qAcc, q.qDrw, q.qMedia/*, q.qGal*/].join(', '); //app.e(autohide, n => this.tgl(n, 0)); //autohide app.ee(n, this.opt.qNav + ', ' + this.opt.qTre, function (m) { return _this3.attachSubNav(m); }); //nav, tree: attach to links app.ee(n, this.opt.qGal + ':last-child', function (m) { return app.x(m, 1); }); //gal: auto add close link app.ee(n, this.opt.qSubMem, function (m) { return m.classList.add(_this3.opt.cMem); }); //initialize sub mem app.ee(n, '[id]', function (m) { return _this3.restoreVisibility(m); }); //restore visibility app.ee(n, this.opt.qTab + ':not(.' + app.opt.cOff + ') ~ [id]:not(.' + app.opt.cOff + ')', function (m) { return _this3.tgl(m, 0); }); //undup tabs app.ee(n, this.opt.qTab + ':first-of-type', function (m) { return app.qq(_this3.opt.qTab, m.parentNode).filter(function (m) { return app.vis(m); }).length ? null : _this3.tgl(app.q(app.q('a[href^="#"]', m.parentNode.previousElementSibling).hash), 1); }); //inactive tabs: show first //init links state app.ee(n, '.' + app.opt.cToggle + '[id]', function (m) { return _this3.hiliteLinks(m); }); app.ee(n, this.opt.qMassTgl, function (m) { return _this3.massToggle(m); }); } }, { key: "arrange", value: function arrange(_ref) { var n = _ref.n; this.app.ee(n, this.opt.qTip, function (m) { m.setAttribute('data-tip', m.title.replace(/\s\s+/g, '\n')); m.removeAttribute('title'); }); //init tooltips } }, { key: "modalStyle", value: function modalStyle(e, src) { var wasModal = document.body.classList.contains(this.opt.cFade); var modal = this.app.q(this.opt.qDlg + ':not(.' + this.app.opt.cOff + '), ' + this.opt.qGal + '[id="' + location.hash.substr(1) + '"]'); // add / remove overlay for every opened modal // ... // hide / show scrollbar if (wasModal !== !!modal) { //console.log('modalStyle', e); var bar = window.innerWidth - document.documentElement.clientWidth; //scroll bar width var s = document.body.style; document.body.classList[modal ? 'add' : 'remove'](this.opt.cFade); if (this.opt.dlgUnscroll) { //hide scroll s.overflow = modal ? 'hidden' : ''; if (!(modal && s.paddingRight)) s.paddingRight = modal ? '' + bar + 'px' : ''; // avoid width reflow } this.app.dbg(['modalStyle', modal, s.paddingRight]); } //else console.log('modalStyle SKIP') //focus first input if (modal && e !== null && e !== void 0 && e.show) { //const f1 = this.app.q('input, a:not(.' + this.app.opt.cClose + ')', modal); var f1 = this.app.q('input:not([type="hidden"]), select, textarea, a.btn', modal); var f = this.app.q(':focus', modal); if (f1 && !f) { this.app.dbg(['focus', modal, f1, f]); f1.focus(); //focus just once when dialog is opened if (f1.type == 'text') f1.select(); } } } }, { key: "esc", value: function esc(e) { this.app.dbg(['esc', e]); if (e && e.preventDefault) e.preventDefault(); this.unpop(); //if (e.type != 'hashchange') { this.addHistory(); //this.modalStyle(null, 'esc'); this.app.fire('modal', { n: null, src: 'esc', show: false }); //} } }, { key: "addHistory", value: function addHistory(h) { if (h) { history.pushState({}, '', h); //following required to re-render hash changes (test: open gallery, esc) //history.pushState({}, '', h); //history.go(-1); } else if (location.hash) { location.hash = this.opt.hUnhash; //this.app.opt.hClose; // update :target styles if (location.hash) history.replaceState({}, '', location.pathname + location.search); // remove hash in url //this.addHistory(location.pathname + location.search /* + this.app.opt.hClose*/); } } }, { key: "onKey", value: function onKey(e) { var k = e.keyCode; this.app.dbg(['keydown', k, this.nEsc]); if (k == 27 && this.nEsc >= 4) localStorage.clear(); if (k == 27) this.app.fire('esc', e); this.nEsc = k == 27 && this.nEsc < 4 ? this.nEsc + 1 : 0; } }, { key: "onHash", value: function onHash(e) { var _ref2; if ((_ref2 = e ? e.newURL : location.hash) !== null && _ref2 !== void 0 && _ref2.match(new RegExp(this.opt.hUnhash + '$'))) return; this.app.dbg(['hashchange', location.hash, e === null || e === void 0 ? void 0 : e.newURL]); this.nEsc = 0; if (!location.hash || location.hash === this.app.opt.hClose) this.app.fire('esc', e);else if (location.hash === '#unstore') localStorage.clear();else { var d = this.app.q(location.hash); if (d) { var t = d.matches(this.opt.qTgl); // let g = d.matches(this.opt.qGal); if (t) { this.unpop(); this.toggle(d, true); if (!this.opt.keepHash) this.addHistory(); } /* else if (g) { this.app.fire('modal', {n: d, src: 'gal', show: true}); } else this.app.fire('modal', {n: d, src: '#', show: false}); */ } this.app.fire('modal', { n: d, src: '#', show: null }); } } }, { key: "beforeClick", value: function beforeClick(e) { if (location.hash) { var d = this.app.q(location.hash); if (!d || d.matches(this.opt.qUnpopOn) && !d.contains(e.target)) this.addHistory(); } this.unpop(e.target, true); } }, { key: "onClickHash", value: function onClickHash(e) { var a = e.recv; if (a && a.hash === this.app.opt.hClose) { e.preventDefault(); var d = a.closest(this.opt.qTgl); this.app.dbg(['close', this.opt.qTgl, a, d]); if (d) { this.tgl(d, false); this.addHistory(); //this.app.fire('esc', e); if (d.matches(this.opt.qModal)) this.app.fire('modal', { n: d, src: 'x', show: false }); } else this.app.fire('esc', e); } else { var _d = this.app.q(a.hash); if (_d && _d.matches(this.opt.qTgl)) { e.preventDefault(); _d = this.toggle(_d); if (this.app.vis(_d) && this.opt.keepHash) this.addHistory(a.hash);else this.addHistory(); } var par = e.recv.closest(this.opt.qUnpopOn); if (_d && par && !par.contains(_d)) this.toggle(par, false); } } }, { key: "onClick", value: function onClick(e) { this.nEsc = 0; //if (!e.target.closest('a, input, select, textarea')) this.addHistory(); //if (e.clientX>=0 && e.clientX<=10 && e.clientY>5 && this.opt.qDrawer) this.toggle(this.opt.qDrawer); } }, { key: "initToggler", value: function initToggler(n, suffix, keep) { n.classList.remove(this.opt.cTarget + (suffix || '')); n.classList.add(this.app.opt.cToggle + (suffix || '')); if (!keep) this.tgl(n, 0); } }, { key: "attachSubNav", value: function attachSubNav(n) { //let a = n.previousElementSibling; var aa = this.app.a(n.parentNode.children).filter(function (v) { return v.tagName == 'A'; }); var a = aa.filter(function (v) { return !v.href; })[0] || aa[0] || this.app.ins('', ' ', {}, n.parentNode, false) && this.app.ins('a', this.app.i('toggle', '[+]'), {}, n.parentNode, false); if (a) { if (!n.id) n.id = 'ul-' + this.app.seq(); a.href = '#' + n.id; } } //deep: -1=prepare, 0=click|hash, 1=deps|clo }, { key: "toggle", value: function toggle(h, on, deep, id) { var d = h ? h.tagName ? h : this.app.q(h) : null; if (d) { if (d.matches(this.opt.qTab) && on === undefined) on = true; //tabs: show instead of toggle this.app.fire('beforetoggle', { n: d, on: on, deep: deep }); this.tgl(d, on); this.app.dbg(['toggle' + (deep ? ' deep' : ''), on, d], deep ? 2 : 1); if (this.app.vis(d)) this.fixPosition(d); if (deep != -1) { if (!deep) { this.toggleDependent(d); if (id && this.opt.keepHash) { d.id = id; this.addHistory('#' + id); } } //this.hiliteLinks(d); this.storeVisibility(d); //if (!deep) this.modalStyle(d); if (!deep && d.matches(this.opt.qModal)) { var show = on === undefined ? this.app.vis(d) : on; this.app.fire('modal', { n: d, src: 'toggle', show: show }); } } this.app.fire('aftertoggle', { n: d, on: on, deep: deep }); } return d; } }, { key: "tgl", value: function tgl(n, on) { var _on; if (n) n.classList[on ? 'remove' : on === undefined ? 'toggle' : 'add'](this.app.opt.cOff); this.hiliteLinks(n); on = (_on = on) !== null && _on !== void 0 ? _on : this.app.vis(n); this.app.fire('toggle', { n: n, on: on }); //this.app.fire('update', {n}); } }, { key: "toggleDependent", value: function toggleDependent(d) { var _this4 = this; if (this.app.vis(d)) { if (d.matches(this.opt.qDlg)) ; //this.app.e(this.opt.qDlg, n => n == d ? null : this.toggle(n, false, 1)); //hide other dialogs else if (d.matches(this.opt.qTab)) this.app.e(d.parentNode.children, function (n) { return n == d ? null : _this4.toggle(n, false, 1); }); //hide sibling tabs else if (d.matches(this.opt.qAcc)) this.app.ee(d.closest(this.opt.qAccRoot), this.opt.qAcc, function (n) { return n.contains(d) ? null : _this4.toggle(n, false, 1); }); //hide other ul } } }, { key: "massToggle", value: function massToggle(n, e) { var _this5 = this; if (e) e.preventDefault(); //const on = !n.classList.contains(this.app.opt.cAct); var on = this.app.vis(this.app.q(n.dataset.nodes)); if (e) on = !on; this.app.fire('active', { n: n, on: on }); if (e) { this.app.qq(n.dataset.nodes).forEach(function (d) { return _this5.toggle(d, on); }); this.addHistory(); //this.app.fire('update', {n}); } } }, { key: "unpop", value: function unpop(x, force) { var _this6 = this; var keep = [x]; if (x) { var a = x.closest('a'); if (a && a.hash) keep.push(this.app.q(a.hash)); //keep hash target } this.app.dbg(['unpop', keep]); //this.app.e(this.opt.qUnpop, n => (keep && keep.filter(m => m && m.tagName && n.contains(m)).length) ? null : this.toggle(n, false, 1)); var nn = this.app.qq(this.opt.qUnpopOn).filter(function (n) { return !(keep && keep.filter(function (m) { return m && m.tagName && n.contains(m); }).length); }); // skip if contains one of [keep] if (!force) { // to close nested subsequently nn = nn.filter(function (n) { return !_this6.app.q(_this6.opt.qUnpopOn, n); }); } // to close vRel subsequently nn = nn.filter(function (n) { return !_this6.containsRels(n); }); this.app.e(nn, function (n) { return _this6.toggle(n, false, !force); }); } }, { key: "containsRels", value: function containsRels(n) { var rels = this.app.qq(this.opt.qUnpopOn).map(function (n) { return n.vRel; }).filter(function (n) { return n; }); return rels.filter(function (r) { return n.contains(r); }).length; } }, { key: "storeVisibility", value: function storeVisibility(n) { if (n && n.id && n.classList.contains(this.opt.cMem)) { localStorage.setItem('vis#' + n.id, this.app.vis(n) ? 1 : -1); } } }, { key: "restoreVisibility", value: function restoreVisibility(n) { if (n && n.id && n.classList && n.classList.contains(this.opt.cMem)) { var v = localStorage.getItem('vis#' + n.id); if (v) this.toggle(n, v > 0, -1); } } }, { key: "hiliteLinks", value: function hiliteLinks(d) { var _this7 = this; var on = this.app.vis(d); if (d.id) this.app.e('a[href="#' + d.id + '"]', function (n) { return _this7.app.fire('active', { n: n, on: on }); }); } }, { key: "hiliteLink", value: function hiliteLink(n, on) { n.classList[on ? 'add' : 'remove'](this.app.opt.cAct); this.app.cls(n, n.dataset.act, n.dataset.inact, !on); } }, { key: "fixPosition", value: function fixPosition(n) { var nav = n.matches(this.opt.qNav); var ss = nav ? window.getComputedStyle(n.parentNode.parentNode) : null; var vert = ss ? ss.display != 'flex' : false; if (n.matches(this.opt.qPop) || nav) { var s = n.style; var p = n.parentNode; var i = p.nextElementSibling; i = i && i.tagName == 'INPUT' ? i : null; var r = i || n.parentNode; if (r) { //const is_touch = 'ontouchstart' in document.documentElement; //const maxw = is_touch ? screen.width : window.innerWidth; var maxw = document.documentElement.clientWidth; s.right = 'auto'; s.left = vert ? '100%' : 0; s.top = vert ? 0 : '100%'; var qn = n.getBoundingClientRect(); var qr = r.getBoundingClientRect(); var dx = qn.right > maxw; var dy = qn.bottom > window.innerHeigh