{"version":3,"file":"js/theme-99308950c27f2a1592c5.js","sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/packs/theme.js","webpack:///./node_modules/bootstrap/js/dist/modal.js","webpack:///./node_modules/bootstrap/js/dist/popover.js","webpack:///./node_modules/bootstrap/js/dist/tab.js","webpack:///./node_modules/bootstrap/js/dist/toast.js","webpack:///./node_modules/bootstrap/js/dist/tooltip.js","webpack:///./node_modules/bootstrap/js/dist/util.js","webpack:///./node_modules/datatables.net-bs4/js/dataTables.bootstrap4.js","webpack:///./node_modules/datatables.net-responsive-bs4/js/responsive.bootstrap4.js","webpack:///./node_modules/datatables.net-responsive/js/dataTables.responsive.js","webpack:///./node_modules/datatables.net/js/jquery.dataTables.js","webpack:///./node_modules/is_js/is.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/jquery/external/sizzle/dist/sizzle.js","webpack:///./node_modules/jquery/src/ajax.js","webpack:///./node_modules/jquery/src/ajax/jsonp.js","webpack:///./node_modules/jquery/src/ajax/load.js","webpack:///./node_modules/jquery/src/ajax/script.js","webpack:///./node_modules/jquery/src/ajax/var/location.js","webpack:///./node_modules/jquery/src/ajax/var/nonce.js","webpack:///./node_modules/jquery/src/ajax/var/rquery.js","webpack:///./node_modules/jquery/src/ajax/xhr.js","webpack:///./node_modules/jquery/src/attributes.js","webpack:///./node_modules/jquery/src/attributes/attr.js","webpack:///./node_modules/jquery/src/attributes/classes.js","webpack:///./node_modules/jquery/src/attributes/prop.js","webpack:///./node_modules/jquery/src/attributes/support.js","webpack:///./node_modules/jquery/src/attributes/val.js","webpack:///./node_modules/jquery/src/callbacks.js","webpack:///./node_modules/jquery/src/core.js","webpack:///./node_modules/jquery/src/core/DOMEval.js","webpack:///./node_modules/jquery/src/core/access.js","webpack:///./node_modules/jquery/src/core/camelCase.js","webpack:///./node_modules/jquery/src/core/init.js","webpack:///./node_modules/jquery/src/core/isAttached.js","webpack:///./node_modules/jquery/src/core/nodeName.js","webpack:///./node_modules/jquery/src/core/parseHTML.js","webpack:///./node_modules/jquery/src/core/parseXML.js","webpack:///./node_modules/jquery/src/core/ready.js","webpack:///./node_modules/jquery/src/core/readyException.js","webpack:///./node_modules/jquery/src/core/stripAndCollapse.js","webpack:///./node_modules/jquery/src/core/support.js","webpack:///./node_modules/jquery/src/core/toType.js","webpack:///./node_modules/jquery/src/core/var/rsingleTag.js","webpack:///./node_modules/jquery/src/css.js","webpack:///./node_modules/jquery/src/css/addGetHookIf.js","webpack:///./node_modules/jquery/src/css/adjustCSS.js","webpack:///./node_modules/jquery/src/css/curCSS.js","webpack:///./node_modules/jquery/src/css/finalPropName.js","webpack:///./node_modules/jquery/src/css/hiddenVisibleSelectors.js","webpack:///./node_modules/jquery/src/css/showHide.js","webpack:///./node_modules/jquery/src/css/support.js","webpack:///./node_modules/jquery/src/css/var/cssExpand.js","webpack:///./node_modules/jquery/src/css/var/getStyles.js","webpack:///./node_modules/jquery/src/css/var/isHiddenWithinTree.js","webpack:///./node_modules/jquery/src/css/var/rboxStyle.js","webpack:///./node_modules/jquery/src/css/var/rnumnonpx.js","webpack:///./node_modules/jquery/src/css/var/swap.js","webpack:///./node_modules/jquery/src/data.js","webpack:///./node_modules/jquery/src/data/Data.js","webpack:///./node_modules/jquery/src/data/var/acceptData.js","webpack:///./node_modules/jquery/src/data/var/dataPriv.js","webpack:///./node_modules/jquery/src/data/var/dataUser.js","webpack:///./node_modules/jquery/src/deferred.js","webpack:///./node_modules/jquery/src/deferred/exceptionHook.js","webpack:///./node_modules/jquery/src/deprecated.js","webpack:///./node_modules/jquery/src/deprecated/ajax-event-alias.js","webpack:///./node_modules/jquery/src/deprecated/event.js","webpack:///./node_modules/jquery/src/dimensions.js","webpack:///./node_modules/jquery/src/effects.js","webpack:///./node_modules/jquery/src/effects/Tween.js","webpack:///./node_modules/jquery/src/effects/animatedSelector.js","webpack:///./node_modules/jquery/src/event.js","webpack:///./node_modules/jquery/src/event/focusin.js","webpack:///./node_modules/jquery/src/event/support.js","webpack:///./node_modules/jquery/src/event/trigger.js","webpack:///./node_modules/jquery/src/exports/amd.js","webpack:///./node_modules/jquery/src/exports/global.js","webpack:///./node_modules/jquery/src/jquery.js","webpack:///./node_modules/jquery/src/manipulation.js","webpack:///./node_modules/jquery/src/manipulation/_evalUrl.js","webpack:///./node_modules/jquery/src/manipulation/buildFragment.js","webpack:///./node_modules/jquery/src/manipulation/getAll.js","webpack:///./node_modules/jquery/src/manipulation/setGlobalEval.js","webpack:///./node_modules/jquery/src/manipulation/support.js","webpack:///./node_modules/jquery/src/manipulation/var/rscriptType.js","webpack:///./node_modules/jquery/src/manipulation/var/rtagName.js","webpack:///./node_modules/jquery/src/manipulation/wrapMap.js","webpack:///./node_modules/jquery/src/offset.js","webpack:///./node_modules/jquery/src/queue.js","webpack:///./node_modules/jquery/src/queue/delay.js","webpack:///./node_modules/jquery/src/selector-sizzle.js","webpack:///./node_modules/jquery/src/selector.js","webpack:///./node_modules/jquery/src/serialize.js","webpack:///./node_modules/jquery/src/traversing.js","webpack:///./node_modules/jquery/src/traversing/findFilter.js","webpack:///./node_modules/jquery/src/traversing/var/dir.js","webpack:///./node_modules/jquery/src/traversing/var/rneedsContext.js","webpack:///./node_modules/jquery/src/traversing/var/siblings.js","webpack:///./node_modules/jquery/src/var/ObjectFunctionString.js","webpack:///./node_modules/jquery/src/var/arr.js","webpack:///./node_modules/jquery/src/var/class2type.js","webpack:///./node_modules/jquery/src/var/document.js","webpack:///./node_modules/jquery/src/var/documentElement.js","webpack:///./node_modules/jquery/src/var/flat.js","webpack:///./node_modules/jquery/src/var/fnToString.js","webpack:///./node_modules/jquery/src/var/getProto.js","webpack:///./node_modules/jquery/src/var/hasOwn.js","webpack:///./node_modules/jquery/src/var/indexOf.js","webpack:///./node_modules/jquery/src/var/isFunction.js","webpack:///./node_modules/jquery/src/var/isWindow.js","webpack:///./node_modules/jquery/src/var/pnum.js","webpack:///./node_modules/jquery/src/var/push.js","webpack:///./node_modules/jquery/src/var/rcheckableType.js","webpack:///./node_modules/jquery/src/var/rcssNum.js","webpack:///./node_modules/jquery/src/var/rnothtmlwhite.js","webpack:///./node_modules/jquery/src/var/slice.js","webpack:///./node_modules/jquery/src/var/support.js","webpack:///./node_modules/jquery/src/var/toString.js","webpack:///./node_modules/jquery/src/wrap.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/select2/dist/js/select2.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./app/javascript/packs/theme.js\");\n","\"use strict\";\n\nimport 'bootstrap/js/dist/tooltip';\nimport 'bootstrap/js/dist/popover';\nimport 'bootstrap/js/dist/toast';\nimport 'bootstrap/js/dist/modal';\nimport 'bootstrap/js/dist/tab';\nrequire(\"select2\");\nrequire(\"datatables.net\")\nrequire('datatables.net-bs4')\nrequire(\"datatables.net-responsive\")\nrequire(\"datatables.net-responsive-bs4\")\nwindow.is = require(\"is_js\")\n\n// require('twitter-bootstrap-wizard')\nimport moment from \"moment\"\n\n\nvar _this = this;\n\nfunction 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; }\n\nfunction _objectSpread(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; }\n\nfunction _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; }\n\n/*-----------------------------------------------\n| Theme Configuration\n-----------------------------------------------*/\nvar storage = {\n isDark: false\n};\n/*-----------------------------------------------\n| Utilities\n-----------------------------------------------*/\n\nvar utils = function ($) {\n var grays = function grays() {\n var colors = {\n white: '#fff',\n 100: '#f9fafd',\n 200: '#edf2f9',\n 300: '#d8e2ef',\n 400: '#b6c1d2',\n 500: '#9da9bb',\n 600: '#748194',\n 700: '#5e6e82',\n 800: '#4d5969',\n 900: '#344050',\n 1000: '#232e3c',\n 1100: '#0b1727',\n black: '#000'\n };\n\n if (storage.isDark) {\n colors = {\n white: '#0e1c2f',\n 100: '#132238',\n 200: '#061325',\n 300: '#344050',\n 400: '#4d5969',\n 500: '#5e6e82',\n 600: '#748194',\n 700: '#9da9bb',\n 800: '#b6c1d2',\n 900: '#d8e2ef',\n 1000: '#edf2f9',\n 1100: '#f9fafd',\n black: '#fff'\n };\n }\n\n return colors;\n };\n\n var themeColors = function themeColors() {\n var colors = {\n primary: '#2c7be5',\n secondary: '#748194',\n success: '#00d27a',\n info: '#27bcfd',\n warning: '#f5803e',\n danger: '#e63757',\n light: '#f9fafd',\n dark: '#0b1727'\n };\n\n if (storage.isDark) {\n colors.light = grays()['100'];\n colors.dark = grays()['1100'];\n }\n\n return colors;\n };\n\n var pluginSettings = function pluginSettings() {\n var settings = {\n tinymce: {\n theme: 'oxide'\n },\n chart: {\n borderColor: 'rgba(255, 255, 255, 0.8)'\n }\n };\n\n if (storage.isDark) {\n settings.tinymce.theme = 'oxide-dark';\n settings.chart.borderColor = themeColors().primary;\n }\n\n return settings;\n };\n\n var Utils = {\n $window: $(window),\n $document: $(document),\n $html: $('html'),\n $body: $('body'),\n $main: $('main'),\n isRTL: function isRTL() {\n return this.$html.attr('dir') === 'rtl';\n },\n location: window.location,\n nua: navigator.userAgent,\n breakpoints: {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1540\n },\n colors: themeColors(),\n grays: grays(),\n offset: function offset(element) {\n var rect = element.getBoundingClientRect();\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return {\n top: rect.top + scrollTop,\n left: rect.left + scrollLeft\n };\n },\n isScrolledIntoViewJS: function isScrolledIntoViewJS(element) {\n var windowHeight = window.innerHeight;\n var elemTop = this.offset(element).top;\n var elemHeight = element.offsetHeight;\n var windowScrollTop = window.scrollY;\n return elemTop <= windowScrollTop + windowHeight && windowScrollTop <= elemTop + elemHeight;\n },\n isScrolledIntoView: function isScrolledIntoView(el) {\n var $el = $(el);\n var windowHeight = this.$window.height();\n var elemTop = $el.offset().top;\n var elemHeight = $el.height();\n var windowScrollTop = this.$window.scrollTop();\n return elemTop <= windowScrollTop + windowHeight && windowScrollTop <= elemTop + elemHeight;\n },\n getCurrentScreanBreakpoint: function getCurrentScreanBreakpoint() {\n var _this2 = this;\n\n var currentScrean = '';\n var windowWidth = this.$window.width();\n $.each(this.breakpoints, function (index, value) {\n if (windowWidth >= value) {\n currentScrean = index;\n } else if (windowWidth >= _this2.breakpoints.xl) {\n currentScrean = 'xl';\n }\n });\n return {\n currentScrean: currentScrean,\n currentBreakpoint: this.breakpoints[currentScrean]\n };\n },\n hexToRgb: function hexToRgb(hexValue) {\n var hex;\n hexValue.indexOf('#') === 0 ? hex = hexValue.substring(1) : hex = hexValue; // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex.replace(shorthandRegex, function (m, r, g, b) {\n return r + r + g + g + b + b;\n }));\n return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : null;\n },\n rgbColor: function rgbColor(color) {\n if (color === void 0) {\n color = '#fff';\n }\n\n return \"rgb(\" + this.hexToRgb(color) + \")\";\n },\n rgbaColor: function rgbaColor(color, alpha) {\n if (color === void 0) {\n color = '#fff';\n }\n\n if (alpha === void 0) {\n alpha = 0.5;\n }\n\n return \"rgba(\" + this.hexToRgb(color) + \", \" + alpha + \")\";\n },\n rgbColors: function rgbColors() {\n var _this3 = this;\n\n return Object.keys(this.colors).map(function (color) {\n return _this3.rgbColor(_this3.colors[color]);\n });\n },\n rgbaColors: function rgbaColors() {\n var _this4 = this;\n\n return Object.keys(this.colors).map(function (color) {\n return _this4.rgbaColor(_this4.colors[color]);\n });\n },\n settings: pluginSettings(_this),\n isIterableArray: function isIterableArray(array) {\n return Array.isArray(array) && !!array.length;\n },\n setCookie: function setCookie(name, value, expire) {\n var expires = new Date();\n expires.setTime(expires.getTime() + expire);\n document.cookie = name + \"=\" + value + \";expires=\" + expires.toUTCString();\n },\n getCookie: function getCookie(name) {\n var keyValue = document.cookie.match(\"(^|;) ?\" + name + \"=([^;]*)(;|$)\");\n return keyValue ? keyValue[2] : keyValue;\n },\n getBreakpoint: function getBreakpoint($element) {\n var classes = $element.attr('class');\n var breakpoint;\n\n if (classes) {\n breakpoint = this.breakpoints[classes.split(' ').filter(function (cls) {\n return cls.indexOf('navbar-expand-') === 0;\n }).pop().split('-').pop()];\n }\n\n return breakpoint;\n }\n };\n return Utils;\n}(jQuery);\n/*-----------------------------------------------\n| Detector\n-----------------------------------------------*/\n\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n if (window.is.opera()) utils.$html.addClass('opera');\n if (window.is.mobile()) utils.$html.addClass('mobile');\n if (window.is.firefox()) utils.$html.addClass('firefox');\n if (window.is.safari()) utils.$html.addClass('safari');\n if (window.is.ios()) utils.$html.addClass('ios');\n if (window.is.iphone()) utils.$html.addClass('iphone');\n if (window.is.ipad()) utils.$html.addClass('ipad');\n if (window.is.ie()) utils.$html.addClass('ie');\n if (window.is.edge()) utils.$html.addClass('edge');\n if (window.is.chrome()) utils.$html.addClass('chrome');\n if (utils.nua.match(/puppeteer/i)) utils.$html.addClass('puppeteer');\n if (window.is.mac()) utils.$html.addClass('osx');\n if (window.is.windows()) utils.$html.addClass('windows');\n if (navigator.userAgent.match('CriOS')) utils.$html.addClass('chrome');\n});\n/*-----------------------------------------------\n| Emoji Picker\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Event = {\n FOCUS: 'focus'\n };\n var Selector = {\n EMOJIAREA: '.emojiarea'\n };\n var DATA_KEY = {\n OPTIONS: 'options'\n };\n var emojioneareas = $(Selector.EMOJIAREA); // Place the Blinking Text Cursor at the end of the editor text\n\n var placeCaretAtEnd = function placeCaretAtEnd(el) {\n if (!!window.getSelection && !!document.createRange) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.body.createTextRange) {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }; // EmojioneArea plugin call\n\n\n if (emojioneareas.length) {\n emojioneareas.each(function (item, value) {\n var $this = $(value);\n var options = $.extend({}, $this.data(DATA_KEY.OPTIONS));\n $this.emojioneArea(options); // // Call the caret position function on focus\n\n emojioneareas[item].emojioneArea.on(Event.FOCUS, function ($editor) {\n placeCaretAtEnd($editor.get(0));\n });\n });\n }\n});\n/*-----------------------------------------------\n| Animated progressbar\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var toggle = $('#progress-toggle-animation');\n toggle.on('click', function () {\n return $('#progress-toggle').toggleClass('progress-bar-animated');\n });\n});\n/*-----------------------------------------------\n| Top navigation opacity on scroll\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var $navbar = $('.navbar-theme');\n\n if ($navbar.length) {\n var windowHeight = utils.$window.height();\n utils.$window.scroll(function () {\n var scrollTop = utils.$window.scrollTop();\n var alpha = scrollTop / windowHeight * 2;\n alpha >= 1 && (alpha = 1);\n $navbar.css({\n 'background-color': \"rgba(255, 255, 255, \" + alpha + \")\"\n });\n }); // Fix navbar background color [after and before expand]\n\n var classList = $navbar.attr('class').split(' ');\n var breakpoint = classList.filter(function (c) {\n return c.indexOf('navbar-expand-') >= 0;\n })[0].split('navbar-expand-')[1];\n utils.$window.resize(function () {\n if (utils.$window.width() > utils.breakpoints[breakpoint]) {\n return $navbar.removeClass('bg-dark');\n }\n\n if (!$navbar.find('.navbar-toggler').hasClass('collapsed')) {\n return $navbar.addClass('bg-dark');\n }\n\n return null;\n }); // Top navigation background toggle on mobile\n\n $navbar.on('show.bs.collapse hide.bs.collapse', function (e) {\n $(e.currentTarget).toggleClass('bg-dark');\n });\n }\n});\n/*-----------------------------------------------\n| Select menu [bootstrap 4]\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n // https://getbootstrap.com/docs/4.0/getting-started/browsers-devices/#select-menu\n // https://github.com/twbs/bootstrap/issues/26183\n window.is.android() && $('select.form-control').removeClass('form-control').css('width', '100%');\n});\n// /*-----------------------------------------------\n// | Bootstrap Wizard\n// -----------------------------------------------*/\n\n// document.addEventListener(\"turbolinks:load\", function() {\n// var Selector = {\n// DATA_WIZARD: '[data-wizard]',\n// PREVIOUS_BUTTON: '.previous .btn',\n// TAB_PANE: '.tab-pane',\n// FORM_VALIDATION: '.form-validation',\n// NAV_ITEM_CIRCLE: '.nav-item-circle',\n// NAV_ITEM: '.nav-item',\n// NAV_LINK: '.nav-link',\n// WIZARD_LOTTIE: '.wizard-lottie'\n// };\n// var ClassName = {\n// ACTIVE: 'active',\n// DONE: 'done',\n// NAV: 'nav'\n// };\n// var DATA_KEY = {\n// OPTIONS: 'options',\n// WIZARD_STATE: 'wizard-state',\n// CONTROLLER: 'controller',\n// ERROR_MODAL: 'error-modal'\n// };\n// var wizards = $(Selector.DATA_WIZARD);\n\n// var isFormValidate = function isFormValidate($currentTab) {\n// var $currentTabForms = $currentTab.find(Selector.FORM_VALIDATION);\n// var isValidate = true;\n// $currentTabForms.each(function (i, v) {\n// isValidate = $(v).valid();\n// return isValidate;\n// });\n// return isValidate;\n// };\n\n// !!wizards.length && wizards.each(function (index, value) {\n// var $this = $(value);\n// var controller = $this.data(DATA_KEY.CONTROLLER);\n// var $controller = $(controller);\n// var $buttonPrev = $controller.find(Selector.PREVIOUS_BUTTON);\n// var $modal = $($this.data(DATA_KEY.ERROR_MODAL));\n// var $lottie = $(value).find(Selector.WIZARD_LOTTIE);\n// var options = $.extend({\n// container: value.querySelector(Selector.WIZARD_LOTTIE),\n// renderer: 'svg',\n// loop: true,\n// autoplay: false,\n// name: 'Hello World'\n// }, $lottie.data(DATA_KEY.OPTIONS));\n// var animation = window.bodymovin.loadAnimation(options);\n// $this.bootstrapWizard({\n// tabClass: ClassName.NAV,\n// onNext: function onNext(tab, navigation, idx) {\n// var $currentTab = $this.find(Selector.TAB_PANE).eq(idx - 1);\n// return isFormValidate($currentTab);\n// },\n// onTabClick: function onTabClick(tab, navigation, idx, clickedIndex) {\n// var stepDone = $this.find(\".nav-item:nth-child(\" + (clickedIndex + 1) + \") .nav-link\").data(DATA_KEY.WIZARD_STATE);\n// // for testing\n// return true\n// if (stepDone === 'done') {\n// $modal.modal('show');\n// return false;\n// }\n\n// if (clickedIndex <= idx) {\n// return true;\n// }\n\n// var isValid = true;\n// $this.find(Selector.TAB_PANE).each(function (tabIndex, tabValue) {\n// if (tabIndex < clickedIndex) {\n// $this.bootstrapWizard('show', tabIndex);\n// isValid = isFormValidate($(tabValue));\n// }\n\n// return isValid;\n// });\n// return isValid;\n// },\n// onTabShow: function onTabShow(tab, navigation, idx) {\n// var length = navigation.find('li').length - 1;\n// idx === 0 ? $buttonPrev.hide() : $buttonPrev.show();\n// idx === length && setTimeout(function () {\n// return animation.play();\n// }, 300);\n// $this.find(Selector.NAV_LINK).removeClass(ClassName.DONE);\n// $this.find(Selector.NAV_ITEM).each(function (i, v) {\n// var link = $(v).find(Selector.NAV_LINK);\n\n// // Application Review Page\n// if (idx === length && !link.hasClass(ClassName.ACTIVE)) {\n// link.attr('data-wizard-state', 'done');\n// formreviewdata()\n \n// }\n\n// if (!link.hasClass(ClassName.ACTIVE)) {\n// link.addClass(ClassName.DONE);\n// return true;\n// }\n\n// if (idx === length) {\n// link.addClass(ClassName.DONE);\n// $controller.hide();\n// }\n\n\n// return false;\n// });\n// }\n// });\n// });\n// });\n/*-----------------------------------------------\n| Bulk Actions\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var checkboxBulkSelects = $('.checkbox-bulk-select');\n\n if (checkboxBulkSelects.length) {\n var Event = {\n CLICK: 'click'\n };\n var Selector = {\n CHECKBOX_BULK_SELECT_CHECKBOX: '.checkbox-bulk-select-target'\n };\n var ClassName = {\n D_NONE: 'd-none'\n };\n var DATA_KEY = {\n CHECKBOX_BODY: 'checkbox-body',\n CHECKBOX_ACTIONS: 'checkbox-actions',\n CHECKBOX_REPLACED_ELEMENT: 'checkbox-replaced-element'\n };\n var Attribute = {\n CHECKED: 'checked',\n INDETERMINATE: 'indeterminate'\n };\n checkboxBulkSelects.each(function (index, value) {\n var checkboxBulkAction = $(value);\n var bulkActions = $(checkboxBulkAction.data(DATA_KEY.CHECKBOX_ACTIONS));\n var replacedElement = $(checkboxBulkAction.data(DATA_KEY.CHECKBOX_REPLACED_ELEMENT));\n var rowCheckboxes = $(checkboxBulkAction.data(DATA_KEY.CHECKBOX_BODY)).find(Selector.CHECKBOX_BULK_SELECT_CHECKBOX);\n checkboxBulkAction.on(Event.CLICK, function () {\n if (checkboxBulkAction.attr(Attribute.INDETERMINATE) === Attribute.INDETERMINATE) {\n bulkActions.addClass(ClassName.D_NONE);\n replacedElement.removeClass(ClassName.D_NONE);\n checkboxBulkAction.prop(Attribute.INDETERMINATE, false).attr(Attribute.INDETERMINATE, false);\n checkboxBulkAction.prop(Attribute.CHECKED, false).attr(Attribute.CHECKED, false);\n rowCheckboxes.prop(Attribute.CHECKED, false).attr(Attribute.CHECKED, false);\n } else {\n bulkActions.toggleClass(ClassName.D_NONE);\n replacedElement.toggleClass(ClassName.D_NONE);\n\n if (checkboxBulkAction.attr(Attribute.CHECKED)) {\n checkboxBulkAction.prop(Attribute.CHECKED, false).attr(Attribute.CHECKED, false);\n } else {\n checkboxBulkAction.prop(Attribute.CHECKED, true).attr(Attribute.CHECKED, true);\n }\n\n rowCheckboxes.each(function (i, v) {\n var $this = $(v);\n\n if ($this.attr(Attribute.CHECKED)) {\n $this.prop(Attribute.CHECKED, false).attr(Attribute.CHECKED, false);\n } else {\n $this.prop(Attribute.CHECKED, true).attr(Attribute.CHECKED, true);\n }\n });\n }\n });\n rowCheckboxes.on(Event.CLICK, function (e) {\n var $this = $(e.target);\n\n if ($this.attr(Attribute.CHECKED)) {\n $this.prop(Attribute.CHECKED, false).attr(Attribute.CHECKED, false);\n } else {\n $this.prop(Attribute.CHECKED, true).attr(Attribute.CHECKED, true);\n }\n\n rowCheckboxes.each(function (i, v) {\n var $elem = $(v);\n\n if ($elem.attr(Attribute.CHECKED)) {\n checkboxBulkAction.prop(Attribute.INDETERMINATE, true).attr(Attribute.INDETERMINATE, Attribute.INDETERMINATE);\n bulkActions.removeClass(ClassName.D_NONE);\n replacedElement.addClass(ClassName.D_NONE);\n return false;\n }\n\n if (i === checkboxBulkAction.length) {\n checkboxBulkAction.prop(Attribute.INDETERMINATE, false).attr(Attribute.INDETERMINATE, false);\n checkboxBulkAction.prop(Attribute.CHECKED, false).attr(Attribute.CHECKED, false);\n bulkActions.addClass(ClassName.D_NONE);\n replacedElement.removeClass(ClassName.D_NONE);\n }\n\n return true;\n });\n });\n });\n }\n});\n/*-----------------------------------------------\n| Chart\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n /*-----------------------------------------------\n | Helper functions and Data\n -----------------------------------------------*/\n var _window = window,\n utils = _window.utils;\n var chartData = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3, 3, 8, 3, 2, 7, 9, 5, 0, 2, 8, 8, 4, 1, 9, 7];\n var labels = ['9:00 AM', '10:00 AM', '11:00 AM', '12:00 PM', '1:00 PM', '2:00 PM', '3:00 PM', '4:00 PM', '5:00 PM', '6:00 PM', '7:00 PM', '8:00 PM'];\n /*-----------------------------------------------\n | Chart Initialization\n -----------------------------------------------*/\n\n var newChart = function newChart(chart, config) {\n var ctx = chart.getContext('2d');\n return new window.Chart(ctx, config);\n };\n /*-----------------------------------------------\n | Line Chart\n -----------------------------------------------*/\n\n\n var chartLine = document.getElementById('chart-line');\n\n if (chartLine) {\n var getChartBackground = function getChartBackground(chart) {\n var ctx = chart.getContext('2d');\n\n if (storage.isDark) {\n var _gradientFill = ctx.createLinearGradient(0, 0, 0, ctx.canvas.height);\n\n _gradientFill.addColorStop(0, utils.rgbaColor(utils.colors.primary, 0.5));\n\n _gradientFill.addColorStop(1, 'transparent');\n\n return _gradientFill;\n }\n\n var gradientFill = ctx.createLinearGradient(0, 0, 0, 250);\n gradientFill.addColorStop(0, 'rgba(255, 255, 255, 0.3)');\n gradientFill.addColorStop(1, 'rgba(255, 255, 255, 0)');\n return gradientFill;\n };\n\n var dashboardLineChart = newChart(chartLine, {\n type: 'line',\n data: {\n labels: labels.map(function (label) {\n return label.substring(0, label.length - 3);\n }),\n datasets: [{\n borderWidth: 2,\n data: chartData.map(function (d) {\n return (d * 3.14).toFixed(2);\n }),\n borderColor: utils.settings.chart.borderColor,\n backgroundColor: getChartBackground(chartLine)\n }]\n },\n options: {\n legend: {\n display: false\n },\n tooltips: {\n mode: 'x-axis',\n xPadding: 20,\n yPadding: 10,\n displayColors: false,\n callbacks: {\n label: function label(tooltipItem) {\n return labels[tooltipItem.index] + \" - \" + tooltipItem.yLabel + \" USD\";\n },\n title: function title() {\n return null;\n }\n }\n },\n hover: {\n mode: 'label'\n },\n scales: {\n xAxes: [{\n scaleLabel: {\n show: true,\n labelString: 'Month'\n },\n ticks: {\n fontColor: utils.rgbaColor('#fff', 0.7),\n fontStyle: 600\n },\n gridLines: {\n color: utils.rgbaColor('#fff', 0.1),\n zeroLineColor: utils.rgbaColor('#fff', 0.1),\n lineWidth: 1\n }\n }],\n yAxes: [{\n display: false\n }]\n }\n }\n });\n $('#dashboard-chart-select').on('change', function (e) {\n var LineDB = {\n all: [4, 1, 6, 2, 7, 12, 4, 6, 5, 4, 5, 10].map(function (d) {\n return (d * 3.14).toFixed(2);\n }),\n successful: [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8].map(function (d) {\n return (d * 3.14).toFixed(2);\n }),\n failed: [1, 0, 2, 1, 2, 1, 1, 0, 0, 1, 0, 2].map(function (d) {\n return (d * 3.14).toFixed(2);\n })\n };\n dashboardLineChart.data.datasets[0].data = LineDB[e.target.value];\n dashboardLineChart.update();\n });\n }\n /*-----------------------------------------------\n | Bar Chart\n -----------------------------------------------*/\n\n\n var chartBar = document.getElementById('chart-bar');\n\n if (chartBar) {\n newChart(chartBar, {\n type: 'bar',\n data: {\n labels: labels.slice(0, 2),\n datasets: [{\n label: 'First dataset',\n backgroundColor: [utils.rgbaColor(utils.colors.info), utils.rgbaColor(utils.colors.warning)],\n borderColor: [utils.rgbColor(utils.colors.info), utils.rgbColor(utils.colors.warning)],\n borderWidth: 2,\n data: [6, 10]\n }, {\n label: 'Second dataset',\n backgroundColor: [utils.rgbaColor(utils.colors.success), utils.rgbaColor(utils.colors.danger)],\n borderColor: [utils.rgbColor(utils.colors.success), utils.rgbColor(utils.colors.danger)],\n borderWidth: 2,\n data: [3, 7]\n }]\n },\n options: {\n scales: {\n yAxes: [{\n ticks: {\n beginAtZero: true\n }\n }]\n }\n }\n });\n }\n /*-----------------------------------------------\n | Radar Chart\n -----------------------------------------------*/\n\n\n var chartRadar = document.getElementById('chart-radar');\n\n if (chartRadar) {\n newChart(chartRadar, {\n type: 'radar',\n data: {\n labels: labels,\n datasets: [{\n label: 'First dataset',\n backgroundColor: utils.rgbaColor(utils.colors.warning),\n borderColor: utils.rgbColor(utils.colors.warning),\n borderWidth: 2,\n data: chartData.slice(0, 12),\n fill: 1\n }, {\n label: 'Second dataset',\n backgroundColor: utils.rgbaColor(utils.colors.danger),\n borderColor: utils.rgbColor(utils.colors.danger),\n borderWidth: 2,\n data: chartData.slice(12, 24),\n fill: 1\n }]\n },\n options: {\n maintainAspectRatio: true,\n spanGaps: false,\n elements: {\n line: {\n tension: 0.000001\n }\n }\n }\n });\n }\n /*-----------------------------------------------\n | Pie Chart\n -----------------------------------------------*/\n\n\n var chartPie = document.getElementById('chart-pie');\n\n if (chartPie) {\n newChart(chartPie, {\n type: 'pie',\n data: {\n labels: labels.slice(0, 3),\n datasets: [{\n backgroundColor: utils.rgbaColors(),\n borderColor: utils.rgbColors(),\n data: chartData.slice(0, 3)\n }]\n },\n options: {\n responsive: true\n }\n });\n }\n /*-----------------------------------------------\n | Doughnut Chart\n -----------------------------------------------*/\n\n\n var chartDoughnut = document.getElementById('chart-doughnut');\n\n if (chartDoughnut) {\n newChart(chartDoughnut, {\n type: 'doughnut',\n data: {\n labels: labels.slice(0, 3),\n datasets: [{\n backgroundColor: utils.rgbColors(),\n borderColor: utils.rgbColors(),\n data: chartData.slice(0, 3)\n }]\n },\n options: {\n responsive: true\n }\n });\n }\n /*-----------------------------------------------\n | Polar Area Chart\n -----------------------------------------------*/\n\n\n var chartPolarArea = document.getElementById('chart-polar-area');\n\n if (chartPolarArea) {\n newChart(chartPolarArea, {\n type: 'polarArea',\n data: {\n labels: labels.slice(0, 3),\n datasets: [{\n backgroundColor: utils.rgbaColors(),\n borderColor: utils.rgbaColors(),\n data: chartData.slice(0, 3)\n }]\n },\n options: {\n responsive: true\n }\n });\n }\n /* eslint-disable */\n\n /*-----------------------------------------------\n | Polar Bubble\n -----------------------------------------------*/\n\n\n var colorize = function colorize(opaque, context) {\n var value = context.dataset.data[context.dataIndex];\n var x = value.x / 100;\n var y = value.y / 100;\n var r = x < 0 && y < 0 ? 250 : x < 0 ? 150 : y < 0 ? 50 : 0;\n var g = x < 0 && y < 0 ? 0 : x < 0 ? 50 : y < 0 ? 150 : 250;\n var b = x < 0 && y < 0 ? 0 : x > 0 && y > 0 ? 250 : 150;\n var a = opaque ? 1 : 0.5 * value.v / 1000;\n return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + a + \")\";\n };\n\n var rand = function rand(min, max) {\n var seed = _this._seed;\n min = min === undefined ? 0 : min;\n max = max === undefined ? 1 : max;\n _this._seed = (seed * 9301 + 49297) % 233280;\n return min + _this._seed / 233280 * (max - min);\n };\n\n var generateData = function generateData() {\n var data = [];\n var DATA_COUNT = 16;\n var MIN_XY = -150;\n var MAX_XY = 100;\n\n for (var i = 0; i < DATA_COUNT; i += 1) {\n data.push({\n x: rand(MIN_XY, MAX_XY),\n y: rand(MIN_XY, MAX_XY),\n v: rand(0, 1000)\n });\n }\n\n return data;\n };\n\n var chartBubble = document.getElementById(\"chart-bubble\");\n\n if (chartBubble) {\n newChart(chartBubble, {\n type: \"bubble\",\n data: {\n datasets: [{\n label: [\"Deer Population\"],\n data: [{\n x: -10,\n y: -20,\n r: 20\n }, {\n x: 100,\n y: 0,\n r: 10\n }, {\n x: 60,\n y: 30,\n r: 20\n }, {\n x: 40,\n y: 60,\n r: 25\n }, {\n x: 80,\n y: 80,\n r: 30\n }, {\n x: 20,\n y: 30,\n r: 25\n }, {\n x: 0,\n y: 100,\n r: 5\n }],\n backgroundColor: \"#2C7BE5\"\n }]\n }\n });\n }\n /*-----------------------------------------------\n | Component Line Chart\n -----------------------------------------------*/\n\n\n var componentChartLine = document.getElementById(\"component-chart-line\");\n\n if (componentChartLine) {\n newChart(componentChartLine, {\n type: \"line\",\n data: {\n labels: labels,\n datasets: [{\n borderWidth: 2,\n data: chartData.slice(2, 14).map(function (d) {\n return (d * 3.14).toFixed(2);\n }),\n borderColor: utils.rgbaColor(utils.colors.primary, 0.4),\n backgroundColor: utils.rgbaColor(utils.colors.primary)\n }, {\n borderWidth: 2,\n borderColor: \"#fff\",\n data: chartData.slice(3, 15).map(function (d) {\n return (d * 3.14).toFixed(2);\n }),\n backgroundColor: utils.rgbaColor(utils.colors.primary)\n }]\n },\n options: {\n legend: {\n display: false\n },\n tooltips: {\n mode: \"x-axis\",\n xPadding: 20,\n yPadding: 10,\n displayColors: false,\n callbacks: {\n label: function label(tooltipItem) {\n return labels[tooltipItem.index] + \" - \" + tooltipItem.yLabel + \" USD\";\n },\n title: function title() {\n return null;\n }\n }\n },\n hover: {\n mode: \"label\"\n },\n scales: {\n xAxes: [{\n scaleLabel: {\n show: true,\n labelString: \"Month\"\n },\n ticks: {\n fontColor: utils.rgbaColor(\"#000\", 0.7),\n fontStyle: 600\n },\n gridLines: {\n // color: utils.rgbaColor('#000', 0.1),\n color: utils.rgbaColor(\"#000\", 0.1),\n zeroLineColor: utils.rgbaColor(\"#000\", 0.1),\n lineWidth: 1\n }\n }],\n yAxes: [{\n display: false\n }]\n }\n }\n });\n }\n /*-----------------------------------------------\n | Real time user\n -----------------------------------------------*/\n\n /*-----------------------------------------------\n | Bar Chart\n -----------------------------------------------*/\n\n\n var realTimeUser = document.getElementById(\"real-time-user\");\n\n if (realTimeUser) {\n var realTimeUserChart = newChart(realTimeUser, {\n type: \"bar\",\n data: {\n labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],\n datasets: [{\n label: \"Users\",\n backgroundColor: utils.rgbaColor(\"#fff\", 0.3),\n data: [183, 163, 176, 172, 166, 161, 164, 159, 172, 173, 184, 163, 99, 173, 183, 167, 160, 183, 163, 176, 172, 166, 173, 188, 175],\n barPercentage: 0.9,\n categoryPercentage: 1.0\n }]\n },\n options: {\n legend: {\n display: false\n },\n scales: {\n yAxes: [{\n display: false,\n stacked: true\n }],\n xAxes: [{\n stacked: false,\n ticks: {\n display: false\n },\n gridLines: {\n color: utils.rgbaColor(\"#fff\", 0.1),\n display: false\n }\n }]\n }\n }\n });\n var userCounterDom = $(\".real-time-user\");\n setInterval(function () {\n var userCounter = Math.floor(Math.random() * (120 - 60) + 60);\n /*-----------------------------------------------\n | Remove data\n -----------------------------------------------*/\n\n realTimeUserChart.data.datasets.forEach(function (dataset) {\n dataset.data.shift();\n });\n realTimeUserChart.update();\n /*-----------------------------------------------\n | Add data\n -----------------------------------------------*/\n\n setTimeout(function () {\n realTimeUserChart.data.datasets.forEach(function (dataset) {\n dataset.data.push(userCounter);\n });\n realTimeUserChart.update();\n userCounterDom.text(userCounter);\n }, 500);\n }, 2000);\n }\n});\n\n/*-----------------------------------------------\n| Count Up\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var $counters = $('[data-countup]');\n\n if ($counters.length) {\n $counters.each(function (index, value) {\n var $counter = $(value);\n var counter = $counter.data('countup');\n\n var toAlphanumeric = function toAlphanumeric(num) {\n var number = num;\n var abbreviations = {\n k: 1000,\n m: 1000000,\n b: 1000000000,\n t: 1000000000000\n };\n\n if (num < abbreviations.m) {\n number = (num / abbreviations.k).toFixed(2) + \"k\";\n } else if (num < abbreviations.b) {\n number = (num / abbreviations.m).toFixed(2) + \"m\";\n } else if (num < abbreviations.t) {\n number = (num / abbreviations.b).toFixed(2) + \"b\";\n } else {\n number = (num / abbreviations.t).toFixed(2) + \"t\";\n }\n\n return number;\n };\n\n var toComma = function toComma(num) {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n };\n\n var toSpace = function toSpace(num) {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n };\n\n var playCountUpTriggered = false;\n\n var countUP = function countUP() {\n if (utils.isScrolledIntoView(value) && !playCountUpTriggered) {\n if (!playCountUpTriggered) {\n $({\n countNum: 0\n }).animate({\n countNum: counter.count\n }, {\n duration: counter.duration || 1000,\n easing: 'linear',\n step: function step() {\n $counter.text((counter.prefix ? counter.prefix : '') + Math.floor(this.countNum));\n },\n complete: function complete() {\n switch (counter.format) {\n case 'comma':\n $counter.text((counter.prefix ? counter.prefix : '') + toComma(this.countNum));\n break;\n\n case 'space':\n $counter.text((counter.prefix ? counter.prefix : '') + toSpace(this.countNum));\n break;\n\n case 'alphanumeric':\n $counter.text((counter.prefix ? counter.prefix : '') + toAlphanumeric(this.countNum));\n break;\n\n default:\n $counter.text((counter.prefix ? counter.prefix : '') + this.countNum);\n }\n }\n });\n playCountUpTriggered = true;\n }\n }\n\n return playCountUpTriggered;\n };\n\n countUP();\n utils.$window.scroll(function () {\n countUP();\n });\n });\n }\n});\n/*-----------------------------------------------\n| Countdown\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var $dataCountdowns = $('[data-countdown]');\n var DATA_KEY = {\n FALLBACK: 'countdown-fallback',\n COUNTDOWN: 'countdown'\n };\n\n if ($dataCountdowns.length) {\n $dataCountdowns.each(function (index, value) {\n var $dateCountdown = $(value);\n var date = $dateCountdown.data(DATA_KEY.COUNTDOWN);\n var fallback;\n\n if (typeof $dateCountdown.data(DATA_KEY.FALLBACK) !== typeof undefined) {\n fallback = $dateCountdown.data(DATA_KEY.FALLBACK);\n }\n\n $dateCountdown.countdown(date, function (event) {\n if (event.elapsed) {\n $dateCountdown.text(fallback);\n } else {\n $dateCountdown.text(event.strftime('%D days %H:%M:%S'));\n }\n });\n });\n }\n});\n/*-----------------------------------------------\n| Demo mode\n-----------------------------------------------*/\n\n// document.addEventListener(\"turbolinks:load\", function() {\n// var _window2 = window,\n// utils = _window2.utils,\n// location = _window2.location;\n// var Event = {\n// CHANGE: 'change'\n// };\n// var Selector = {\n// RTL: '#mode-rtl',\n// FLUID: '#mode-fluid',\n// INPUT_NAVBAR: \"input[name='navbar']\",\n// INPUT_COLOR_SCHEME: \"input[name='colorScheme']\",\n// NAVBAR_STYLE_TRANSPARENT: '#navbar-style-transparent',\n// NAVBAR_STYLE_INVERTED: '#navbar-style-inverted',\n// NAVBAR_STYLE_VIBRANT: '#navbar-style-vibrant',\n// NAVBAR_STYLE_WHITE: '#navbar-style-card'\n// };\n// var DATA_KEY = {\n// URL: 'url',\n// HOME_URL: 'home-url',\n// PAGE_URL: 'page-url'\n// }; // Redirect on Checkbox change\n\n// var handleChange = function handleChange(selector) {\n// utils.$document.on(Event.CHANGE, selector, function (e) {\n// var $this = $(e.currentTarget);\n// var isChecked = $this.prop('checked');\n\n// if (isChecked) {\n// var url = $this.data(DATA_KEY.URL);\n// location.replace(url);\n// } else {\n// var homeUrl = $this.data(DATA_KEY.HOME_URL);\n// location.replace(homeUrl);\n// }\n// });\n// };\n\n// var handleInputChange = function handleInputChange(selector) {\n// utils.$document.on(Event.CHANGE, selector, function (e) {\n// var $this = $(e.currentTarget);\n// var pageUrl = $this.data(DATA_KEY.PAGE_URL);\n// location.replace(pageUrl);\n// });\n// }; // Mode checkbox handler\n\n\n// handleChange(Selector.RTL);\n// handleChange(Selector.FLUID);\n// handleInputChange(Selector.INPUT_NAVBAR);\n// handleInputChange(Selector.INPUT_COLOR_SCHEME);\n// handleInputChange(Selector.NAVBAR_STYLE_TRANSPARENT);\n// handleInputChange(Selector.NAVBAR_STYLE_INVERTED);\n// handleInputChange(Selector.NAVBAR_STYLE_VIBRANT);\n// handleInputChange(Selector.NAVBAR_STYLE_WHITE);\n// });\n/*-----------------------------------------------\n| Documentation and Component Navigation\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var $componentNav = $('#components-nav');\n\n if ($componentNav.length) {\n var loc = window.location.href;\n\n var _loc$split = loc.split('#');\n\n loc = _loc$split[0];\n var location = loc.split('/');\n var url = location[location.length - 2] + \"/\" + location.pop();\n var urls = $componentNav.children('li').children('a');\n\n for (var i = 0, max = urls.length; i < max; i += 1) {\n var dom = urls[i].href.split('/');\n var domURL = dom[dom.length - 2] + \"/\" + dom.pop();\n\n if (domURL === url) {\n var $targetedElement = $(urls[i]);\n $targetedElement.removeClass('text-800');\n $targetedElement.addClass('font-weight-medium');\n break;\n }\n }\n }\n});\n/*-----------------------------------------------\n| Draggable\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Selectors = {\n BODY: 'body',\n KANBAN_CONTAINER: '.kanban-container',\n KANBAN_ITEMS_CONTAINER: '.kanban-items-container',\n KANBAN_ITEM: '.kanban-item',\n KANBAN_COLLAPSE: \"[data-collapse='kanban']\",\n PS_RAILS: '.ps__rail-x, .ps__rail-y' // Perfect scrollbar rails in IE\n\n };\n var Events = {\n DRAG_START: 'drag:start',\n DRAG_STOP: 'drag:stop'\n };\n var columns = document.querySelectorAll(Selectors.KANBAN_ITEMS_CONTAINER);\n var container = document.querySelector(Selectors.KANBAN_CONTAINER);\n var scrollItems = $(Selectors.KANBAN_ITEMS_CONTAINER);\n var scrollableElements = [];\n scrollItems.each(function (index, item) {\n scrollableElements[index] = item;\n });\n\n if (columns.length) {\n // Initialize Sortable\n var sortable = new window.Draggable.Sortable(columns, {\n draggable: Selectors.KANBAN_ITEM,\n delay: 200,\n mirror: {\n appendTo: Selectors.BODY,\n constrainDimensions: true\n },\n scrollable: {\n draggable: Selectors.KANBAN_ITEM,\n scrollableElements: [].concat(scrollableElements, [container])\n }\n }); // Hide form when drag start\n\n sortable.on(Events.DRAG_START, function () {\n $(Selectors.KANBAN_COLLAPSE).collapse('hide');\n }); // Place forms and other contents bottom of the sortable container\n\n sortable.on(Events.DRAG_STOP, function (e) {\n var $this = $(e.data.source);\n var $itemContainer = $this.closest(Selectors.KANBAN_ITEMS_CONTAINER);\n var $collapse = $this.closest(Selectors.KANBAN_ITEMS_CONTAINER).find(Selectors.KANBAN_COLLAPSE);\n $this.is(':last-child') && $itemContainer.append($collapse); // For IE\n\n if (window.is.ie()) {\n var $rails = $itemContainer.find(Selectors.PS_RAILS);\n $itemContainer.append($rails);\n }\n });\n }\n});\n/*-----------------------------------------------\n| Dashboard Table dropdown\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n // Only for ios\n if (window.is.ios()) {\n var Event = {\n SHOWN_BS_DROPDOWN: 'shown.bs.dropdown',\n HIDDEN_BS_DROPDOWN: 'hidden.bs.dropdown'\n };\n var Selector = {\n TABLE_RESPONSIVE: '.table-responsive',\n DROPDOWN_MENU: '.dropdown-menu'\n };\n $(Selector.TABLE_RESPONSIVE).on(Event.SHOWN_BS_DROPDOWN, function dashboardTableDropdown(e) {\n var t = $(this);\n var m = $(e.target).find(Selector.DROPDOWN_MENU);\n var tb = t.offset().top + t.height();\n var mb = m.offset().top + m.outerHeight(true);\n var d = 20; // Space for shadow + scrollbar.\n\n if (t[0].scrollWidth > t.innerWidth()) {\n if (mb + d > tb) {\n t.css('padding-bottom', mb + d - tb);\n }\n } else {\n t.css('overflow', 'visible');\n }\n }).on(Event.HIDDEN_BS_DROPDOWN, function (e) {\n var $this = $(e.currentTarget);\n $this.css({\n 'padding-bottom': '',\n overflow: ''\n });\n });\n }\n}); // Reference\n// https://github.com/twbs/bootstrap/issues/11037#issuecomment-274870381\n\n/*-----------------------------------------------\n| Documentation and Component Navigation\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Selector = {\n NAVBAR_THEME_DROPDOWN: '.navbar-theme .dropdown',\n DROPDOWN_ON_HOVER: '.dropdown-on-hover',\n DROPDOWN_MENU: '.dropdown-menu',\n DATA_TOGGLE_DROPDOWN: '[data-toggle=\"dropdown\"]',\n BODY: 'body',\n DROPDOWN_MENU_ANCHOR: '.dropdown-menu a'\n };\n var ClassName = {\n DROPDOWN_ON_HOVER: 'dropdown-on-hover',\n SHOW: 'show'\n };\n var Event = {\n CLICK: 'click',\n MOUSE_LEAVE: 'mouseleave',\n MOUSE_EVENT: 'mouseenter mouseleave'\n };\n var Attribute = {\n ARIA_EXPANDED: 'aria-expanded'\n };\n var $navbarDropdown = $(Selector.NAVBAR_THEME_DROPDOWN);\n\n if (!window.is.mobile()) {\n $navbarDropdown.addClass(ClassName.DROPDOWN_ON_HOVER);\n } else {\n $navbarDropdown.removeClass(ClassName.DROPDOWN_ON_HOVER);\n }\n\n var toggleDropdown = function toggleDropdown(e) {\n var $el = $(e.target);\n var dropdown = $el.closest(Selector.DROPDOWN_ON_HOVER);\n var dropdownMenu = $(Selector.DROPDOWN_MENU, dropdown);\n setTimeout(function () {\n var shouldOpen = e.type !== Event.CLICK && dropdown.is(':hover');\n dropdownMenu.toggleClass(ClassName.SHOW, shouldOpen);\n dropdown.toggleClass(ClassName.SHOW, shouldOpen);\n $(Selector.DATA_TOGGLE_DROPDOWN, dropdown).attr(Attribute.ARIA_EXPANDED, shouldOpen);\n }, e.type === Event.MOUSE_LEAVE ? 100 : 0);\n };\n\n $(Selector.BODY).on(Event.MOUSE_EVENT, Selector.DROPDOWN_ON_HOVER, toggleDropdown).on(Event.CLICK, Selector.DROPDOWN_MENU_ANCHOR, toggleDropdown);\n});\n\n/*-----------------------------------------------\n| On page scroll for #id targets\n-----------------------------------------------*/\n\n$(function ($) {\n $('a[data-fancyscroll]').click(function scrollTo(e) {\n // const $this = $(e.currentTarget);\n var $this = $(this);\n\n if (utils.location.pathname === $this[0].pathname && utils.location.pathname.replace(/^\\//, '') === this.pathname.replace(/^\\//, '') && utils.location.hostname === this.hostname) {\n e.preventDefault();\n var target = $(this.hash);\n target = target.length ? target : $(\"[name=\" + this.hash.slice(1) + \"]\");\n\n if (target.length) {\n $('html,body').animate({\n scrollTop: target.offset().top - ($this.data('offset') || 0)\n }, 400, 'swing', function () {\n var hash = $this.attr('href');\n window.history.pushState ? window.history.pushState(null, null, hash) : window.location.hash = hash;\n });\n return false;\n }\n }\n\n return true;\n });\n var hash = window.location.hash;\n\n if (hash && document.getElementById(hash.slice(1))) {\n var $this = $(hash);\n $('html,body').animate({\n scrollTop: $this.offset().top - $(\"a[href='\" + hash + \"']\").data('offset')\n }, 400, 'swing', function () {\n window.history.pushState ? window.history.pushState(null, null, hash) : window.location.hash = hash;\n });\n }\n});\n\n/*-----------------------------------------------\n| Bootstrap validation\n-----------------------------------------------*/\n\n(function () {\n window.addEventListener('load', function () {\n // Fetch all the forms we want to apply theme Bootstrap validation styles to\n var forms = document.getElementsByClassName('needs-validation'); // Loop over them and prevent submission\n\n Array.prototype.filter.call(forms, function (form) {\n form.addEventListener('submit', function (event) {\n if (form.checkValidity() === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n form.classList.add('was-validated');\n }, false);\n });\n }, false);\n})();\n/*-----------------------------------------------\n| Gooogle Map\n-----------------------------------------------*/\n\n/*\n global google\n*/\n\n\nfunction initMap() {\n var $googlemaps = $('.googlemap');\n var isDark = storage.isDark;\n\n if ($googlemaps.length) {\n // Visit https://snazzymaps.com/ for more themes\n var mapStyles = {\n Default: [{\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{\n color: '#e9e9e9'\n }, {\n lightness: 17\n }]\n }, {\n featureType: 'landscape',\n elementType: 'geometry',\n stylers: [{\n color: '#f5f5f5'\n }, {\n lightness: 20\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#ffffff'\n }, {\n lightness: 17\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#ffffff'\n }, {\n lightness: 29\n }, {\n weight: 0.2\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry',\n stylers: [{\n color: '#ffffff'\n }, {\n lightness: 18\n }]\n }, {\n featureType: 'road.local',\n elementType: 'geometry',\n stylers: [{\n color: '#ffffff'\n }, {\n lightness: 16\n }]\n }, {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [{\n color: '#f5f5f5'\n }, {\n lightness: 21\n }]\n }, {\n featureType: 'poi.park',\n elementType: 'geometry',\n stylers: [{\n color: '#dedede'\n }, {\n lightness: 21\n }]\n }, {\n elementType: 'labels.text.stroke',\n stylers: [{\n visibility: 'on'\n }, {\n color: '#ffffff'\n }, {\n lightness: 16\n }]\n }, {\n elementType: 'labels.text.fill',\n stylers: [{\n saturation: 36\n }, {\n color: '#333333'\n }, {\n lightness: 40\n }]\n }, {\n elementType: 'labels.icon',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'transit',\n elementType: 'geometry',\n stylers: [{\n color: '#f2f2f2'\n }, {\n lightness: 19\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#fefefe'\n }, {\n lightness: 20\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#fefefe'\n }, {\n lightness: 17\n }, {\n weight: 1.2\n }]\n }],\n Gray: [{\n featureType: 'all',\n elementType: 'labels.text.fill',\n stylers: [{\n saturation: 36\n }, {\n color: '#000000'\n }, {\n lightness: 40\n }]\n }, {\n featureType: 'all',\n elementType: 'labels.text.stroke',\n stylers: [{\n visibility: 'on'\n }, {\n color: '#000000'\n }, {\n lightness: 16\n }]\n }, {\n featureType: 'all',\n elementType: 'labels.icon',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 20\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 17\n }, {\n weight: 1.2\n }]\n }, {\n featureType: 'landscape',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 20\n }]\n }, {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 21\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 17\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 29\n }, {\n weight: 0.2\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 18\n }]\n }, {\n featureType: 'road.local',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 16\n }]\n }, {\n featureType: 'transit',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 19\n }]\n }, {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 17\n }]\n }],\n Midnight: [{\n featureType: 'all',\n elementType: 'labels.text.fill',\n stylers: [{\n color: '#ffffff'\n }]\n }, {\n featureType: 'all',\n elementType: 'labels.text.stroke',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 13\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#000000'\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#144b53'\n }, {\n lightness: 14\n }, {\n weight: 1.4\n }]\n }, {\n featureType: 'landscape',\n elementType: 'all',\n stylers: [{\n color: '#08304b'\n }]\n }, {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [{\n color: '#0c4152'\n }, {\n lightness: 5\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#000000'\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#0b434f'\n }, {\n lightness: 25\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#000000'\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#0b3d51'\n }, {\n lightness: 16\n }]\n }, {\n featureType: 'road.local',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }]\n }, {\n featureType: 'transit',\n elementType: 'all',\n stylers: [{\n color: '#146474'\n }]\n }, {\n featureType: 'water',\n elementType: 'all',\n stylers: [{\n color: '#021019'\n }]\n }],\n Hopper: [{\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{\n hue: '#165c64'\n }, {\n saturation: 34\n }, {\n lightness: -69\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'landscape',\n elementType: 'geometry',\n stylers: [{\n hue: '#b7caaa'\n }, {\n saturation: -14\n }, {\n lightness: -18\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'landscape.man_made',\n elementType: 'all',\n stylers: [{\n hue: '#cbdac1'\n }, {\n saturation: -6\n }, {\n lightness: -9\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [{\n hue: '#8d9b83'\n }, {\n saturation: -89\n }, {\n lightness: -12\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry',\n stylers: [{\n hue: '#d4dad0'\n }, {\n saturation: -88\n }, {\n lightness: 54\n }, {\n visibility: 'simplified'\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry',\n stylers: [{\n hue: '#bdc5b6'\n }, {\n saturation: -89\n }, {\n lightness: -3\n }, {\n visibility: 'simplified'\n }]\n }, {\n featureType: 'road.local',\n elementType: 'geometry',\n stylers: [{\n hue: '#bdc5b6'\n }, {\n saturation: -89\n }, {\n lightness: -26\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [{\n hue: '#c17118'\n }, {\n saturation: 61\n }, {\n lightness: -45\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'poi.park',\n elementType: 'all',\n stylers: [{\n hue: '#8ba975'\n }, {\n saturation: -46\n }, {\n lightness: -28\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'transit',\n elementType: 'geometry',\n stylers: [{\n hue: '#a43218'\n }, {\n saturation: 74\n }, {\n lightness: -51\n }, {\n visibility: 'simplified'\n }]\n }, {\n featureType: 'administrative.province',\n elementType: 'all',\n stylers: [{\n hue: '#ffffff'\n }, {\n saturation: 0\n }, {\n lightness: 100\n }, {\n visibility: 'simplified'\n }]\n }, {\n featureType: 'administrative.neighborhood',\n elementType: 'all',\n stylers: [{\n hue: '#ffffff'\n }, {\n saturation: 0\n }, {\n lightness: 100\n }, {\n visibility: 'off'\n }]\n }, {\n featureType: 'administrative.locality',\n elementType: 'labels',\n stylers: [{\n hue: '#ffffff'\n }, {\n saturation: 0\n }, {\n lightness: 100\n }, {\n visibility: 'off'\n }]\n }, {\n featureType: 'administrative.land_parcel',\n elementType: 'all',\n stylers: [{\n hue: '#ffffff'\n }, {\n saturation: 0\n }, {\n lightness: 100\n }, {\n visibility: 'off'\n }]\n }, {\n featureType: 'administrative',\n elementType: 'all',\n stylers: [{\n hue: '#3a3935'\n }, {\n saturation: 5\n }, {\n lightness: -57\n }, {\n visibility: 'off'\n }]\n }, {\n featureType: 'poi.medical',\n elementType: 'geometry',\n stylers: [{\n hue: '#cba923'\n }, {\n saturation: 50\n }, {\n lightness: -46\n }, {\n visibility: 'on'\n }]\n }],\n Beard: [{\n featureType: 'poi.business',\n elementType: 'labels.text',\n stylers: [{\n visibility: 'on'\n }, {\n color: '#333333'\n }]\n }],\n AssassianCreed: [{\n featureType: 'all',\n elementType: 'all',\n stylers: [{\n visibility: 'on'\n }]\n }, {\n featureType: 'all',\n elementType: 'labels',\n stylers: [{\n visibility: 'off'\n }, {\n saturation: '-100'\n }]\n }, {\n featureType: 'all',\n elementType: 'labels.text.fill',\n stylers: [{\n saturation: 36\n }, {\n color: '#000000'\n }, {\n lightness: 40\n }, {\n visibility: 'off'\n }]\n }, {\n featureType: 'all',\n elementType: 'labels.text.stroke',\n stylers: [{\n visibility: 'off'\n }, {\n color: '#000000'\n }, {\n lightness: 16\n }]\n }, {\n featureType: 'all',\n elementType: 'labels.icon',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 20\n }]\n }, {\n featureType: 'administrative',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 17\n }, {\n weight: 1.2\n }]\n }, {\n featureType: 'landscape',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 20\n }]\n }, {\n featureType: 'landscape',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#4d6059'\n }]\n }, {\n featureType: 'landscape',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#4d6059'\n }]\n }, {\n featureType: 'landscape.natural',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#4d6059'\n }]\n }, {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [{\n lightness: 21\n }]\n }, {\n featureType: 'poi',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#4d6059'\n }]\n }, {\n featureType: 'poi',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#4d6059'\n }]\n }, {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [{\n visibility: 'on'\n }, {\n color: '#7f8d89'\n }]\n }, {\n featureType: 'road',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#7f8d89'\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#7f8d89'\n }, {\n lightness: 17\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#7f8d89'\n }, {\n lightness: 29\n }, {\n weight: 0.2\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 18\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#7f8d89'\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#7f8d89'\n }]\n }, {\n featureType: 'road.local',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 16\n }]\n }, {\n featureType: 'road.local',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#7f8d89'\n }]\n }, {\n featureType: 'road.local',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#7f8d89'\n }]\n }, {\n featureType: 'transit',\n elementType: 'geometry',\n stylers: [{\n color: '#000000'\n }, {\n lightness: 19\n }]\n }, {\n featureType: 'water',\n elementType: 'all',\n stylers: [{\n color: '#2b3638'\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{\n color: '#2b3638'\n }, {\n lightness: 17\n }]\n }, {\n featureType: 'water',\n elementType: 'geometry.fill',\n stylers: [{\n color: '#24282b'\n }]\n }, {\n featureType: 'water',\n elementType: 'geometry.stroke',\n stylers: [{\n color: '#24282b'\n }]\n }, {\n featureType: 'water',\n elementType: 'labels',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'water',\n elementType: 'labels.text',\n stylers: [{\n visibility: 'off '\n }]\n }, {\n featureType: 'water',\n elementType: 'labels.text.fill',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'water',\n elementType: 'labels.text.stroke',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'water',\n elementType: 'labels.icon',\n stylers: [{\n visibility: 'off'\n }]\n }],\n SubtleGray: [{\n featureType: 'administrative',\n elementType: 'all',\n stylers: [{\n saturation: '-100'\n }]\n }, {\n featureType: 'administrative.province',\n elementType: 'all',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'landscape',\n elementType: 'all',\n stylers: [{\n saturation: -100\n }, {\n lightness: 65\n }, {\n visibility: 'on'\n }]\n }, {\n featureType: 'poi',\n elementType: 'all',\n stylers: [{\n saturation: -100\n }, {\n lightness: '50'\n }, {\n visibility: 'simplified'\n }]\n }, {\n featureType: 'road',\n elementType: 'all',\n stylers: [{\n saturation: -100\n }]\n }, {\n featureType: 'road.highway',\n elementType: 'all',\n stylers: [{\n visibility: 'simplified'\n }]\n }, {\n featureType: 'road.arterial',\n elementType: 'all',\n stylers: [{\n lightness: '30'\n }]\n }, {\n featureType: 'road.local',\n elementType: 'all',\n stylers: [{\n lightness: '40'\n }]\n }, {\n featureType: 'transit',\n elementType: 'all',\n stylers: [{\n saturation: -100\n }, {\n visibility: 'simplified'\n }]\n }, {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{\n hue: '#ffff00'\n }, {\n lightness: -25\n }, {\n saturation: -97\n }]\n }, {\n featureType: 'water',\n elementType: 'labels',\n stylers: [{\n lightness: -25\n }, {\n saturation: -100\n }]\n }],\n Tripitty: [{\n featureType: 'all',\n elementType: 'labels',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'administrative',\n elementType: 'all',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'landscape',\n elementType: 'all',\n stylers: [{\n color: '#2c5ca5'\n }]\n }, {\n featureType: 'poi',\n elementType: 'all',\n stylers: [{\n color: '#2c5ca5'\n }]\n }, {\n featureType: 'road',\n elementType: 'all',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'transit',\n elementType: 'all',\n stylers: [{\n visibility: 'off'\n }]\n }, {\n featureType: 'water',\n elementType: 'all',\n stylers: [{\n color: '#193a70'\n }, {\n visibility: 'on'\n }]\n }]\n };\n $googlemaps.each(function (index, value) {\n var $googlemap = $(value);\n var latLng = $googlemap.data('latlng').split(',');\n var markerPopup = $googlemap.html();\n var icon = $googlemap.data('icon') ? $googlemap.data('icon') : 'https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi.png';\n var zoom = $googlemap.data('zoom');\n var mapStyle = isDark ? 'Midnight' : $googlemap.data('theme');\n var mapElement = value;\n\n if ($googlemap.data('theme') === 'streetview') {\n var pov = $googlemap.data('pov');\n var _mapOptions = {\n position: {\n lat: Number(latLng[0]),\n lng: Number(latLng[1])\n },\n pov: pov,\n zoom: zoom,\n gestureHandling: 'none',\n scrollwheel: false\n };\n return new google.maps.StreetViewPanorama(mapElement, _mapOptions);\n }\n\n var mapOptions = {\n zoom: zoom,\n scrollwheel: $googlemap.data('scrollwheel'),\n center: new google.maps.LatLng(latLng[0], latLng[1]),\n styles: mapStyles[mapStyle]\n };\n var map = new google.maps.Map(mapElement, mapOptions);\n var infowindow = new google.maps.InfoWindow({\n content: markerPopup\n });\n var marker = new google.maps.Marker({\n position: new google.maps.LatLng(latLng[0], latLng[1]),\n icon: icon,\n map: map\n });\n marker.addListener('click', function () {\n infowindow.open(map, marker);\n });\n return null;\n });\n }\n}\n/*-----------------------------------------------\n| Incrment/Decrement Input Fields\n-----------------------------------------------*/\n\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Selector = {\n DATA_FIELD: '[data-field]',\n INPUT_GROUP: '.input-group'\n };\n var DATA_KEY = {\n FIELD: 'field',\n TYPE: 'type'\n };\n var Events = {\n CLICK: 'click'\n };\n var Attributes = {\n MIN: 'min'\n };\n utils.$document.on(Events.CLICK, Selector.DATA_FIELD, function (e) {\n var $this = $(e.target);\n var inputField = $this.data(DATA_KEY.FIELD);\n var $inputField = $this.parents(Selector.INPUT_GROUP).children(\".\" + inputField);\n var $btnType = $this.data(DATA_KEY.TYPE);\n var value = parseInt($inputField.val(), 10);\n var min = $inputField.attr(Attributes.MIN);\n\n if (min) {\n min = parseInt(min, 10);\n } else {\n min = 0;\n }\n\n if ($btnType === 'plus') {\n value += 1;\n } else if (value > min) {\n value -= 1;\n }\n\n $inputField.val(value);\n });\n});\n\n/*-----------------------------------------------\n| Draggable\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Selectors = {\n ADD_LIST_FORM: '#add-list-form',\n KANBAN_COLUMN: '.kanban-column',\n BTN_ADD_CARD: '.btn-add-card',\n KANBAN_ITEMS_CONTAINER: '.kanban-items-container',\n COLLAPSE: '.collapse',\n COLLAPSE_CLOSE: \"[data-dismiss='collapse']\",\n ADD_CARD: '.add-card',\n ADD_LIST: '.add-list',\n MODAL_ANCHOR: \"[data-toggle='modal'] a\",\n HIDE_ADD_CARD_FORM: '.hide-add-card-form'\n };\n var Events = {\n TOGGLE_BS_COLLAPSE: 'show.bs.collapse hide.bs.collapse',\n SHOWN_BS_COLLAPSE: 'shown.bs.collapse',\n CLICK: 'click'\n };\n var ClassNames = {\n FORM_ADDED: 'form-added',\n D_NONE: 'd-none'\n }; // Hide button when Add list form is shown\n\n $(Selectors.ADD_LIST_FORM).on(Events.TOGGLE_BS_COLLAPSE, function (e) {\n var $this = $(e.currentTarget);\n $this.next().toggleClass(ClassNames.D_NONE);\n }); // Show card add form and scroll to the bottom\n\n $(document).on(Events.CLICK, Selectors.BTN_ADD_CARD, function (e) {\n var $this = $(e.currentTarget);\n var $column = $this.closest(Selectors.KANBAN_COLUMN);\n var $container = $column.find(Selectors.KANBAN_ITEMS_CONTAINER);\n var scrollHeight = $container[0].scrollHeight;\n $column.addClass(ClassNames.FORM_ADDED);\n $container.scrollTop(scrollHeight);\n $container.find(Selectors.ADD_CARD).focus();\n }); // Hide card add form\n\n $(document).on(Events.CLICK, Selectors.HIDE_ADD_CARD_FORM, function (e) {\n var $this = $(e.currentTarget);\n var $column = $this.closest(Selectors.KANBAN_COLUMN);\n $column.removeClass(ClassNames.FORM_ADDED);\n }); // Focus add list form on form shown\n\n $(Selectors.ADD_LIST_FORM).on(Events.SHOWN_BS_COLLAPSE, function (e) {\n var $this = $(e.currentTarget);\n $this.find(Selectors.ADD_LIST).focus();\n });\n utils.$document.on(Events.CLICK, Selectors.MODAL_ANCHOR, function (e) {\n e.stopPropagation();\n }); // Close collapse when corresponding close button is clicked\n\n utils.$document.on(Events.CLICK, Selectors.COLLAPSE_CLOSE, function (e) {\n var $this = $(e.currentTarget);\n $this.closest(Selectors.COLLAPSE).collapse('hide');\n });\n});\n\n/*-----------------------------------------------\n| Lightbox\n-----------------------------------------------*/\n\n/*\n global lightbox\n*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n if ($('[data-lightbox]').length) {\n lightbox.option({\n resizeDuration: 400,\n wrapAround: true,\n fadeDuration: 300,\n imageFadeDuration: 300\n });\n }\n});\n/*-----------------------------------------------\n| Lottie\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var lotties = $('.lottie');\n\n if (lotties.length) {\n lotties.each(function (index, value) {\n var $this = $(value);\n var options = $.extend({\n container: value,\n path: '../asset/images/warning-light.json',\n renderer: 'svg',\n loop: true,\n autoplay: true,\n name: 'Hello World'\n }, $this.data('options'));\n window.bodymovin.loadAnimation(options);\n });\n }\n});\n/*-----------------------------------------------\n| Modal\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Selector = {\n MODAL_THEME: '.modal-theme'\n };\n var DataKey = {\n OPTIONS: 'options'\n };\n var Events = {\n HIDDEN_BS_MODAL: 'hidden.bs.modal'\n };\n var modals = $(Selector.MODAL_THEME);\n var showModal = true;\n\n if (modals.length) {\n modals.each(function (index, value) {\n var $this = $(value);\n var userOptions = $this.data(DataKey.OPTIONS);\n var options = $.extend({\n autoShow: false,\n autoShowDelay: 0,\n showOnce: false\n }, userOptions);\n\n if (options.showOnce) {\n var modal = utils.getCookie('modal-'+$this.attr('id'));\n showModal = modal === null;\n }\n\n if (options.autoShow && showModal) {\n setTimeout(function () {\n $this.modal('show');\n }, options.autoShowDelay);\n }\n });\n }\n\n $(Selector.MODAL_THEME).on(Events.HIDDEN_BS_MODAL, function (e) {\n var $this = $(e.currentTarget);\n var userOptions = $this.data(DataKey.OPTIONS);\n var options = $.extend({\n cookieExpireTime: 7200000,\n showOnce: false\n }, userOptions);\n options.showOnce && utils.setCookie('modal-'+$this.attr('id'), false, options.cookieExpireTime);\n });\n});\n/*-----------------------------------------------\n| Navbar Top\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Selectors = {\n COLLAPSE: '.collapse',\n NAVBAR_NAV: '.navbar-nav',\n NAVBAR_TOP_COMBO: '.navbar-top-combo',\n NAVBAR_VERTICAL: '.navbar-vertical',\n NAVBAR_VERTICAL_DIVIDER: '.navbar-vertical-divider',\n NAVBAR_TOP_COMBO_COLLAPSE: '.navbar-top-combo .collapse',\n MOVEABLE_CONTENT: '[data-move-container]'\n };\n var CLASS_NAME = {\n FLEX_COLUMN: 'flex-column'\n };\n var DATA_KEYS = {\n MOVE_TARGET: 'move-target'\n };\n var $navbarTop = $(Selectors.NAVBAR_TOP_COMBO);\n var $navbarVertical = $(Selectors.NAVBAR_VERTICAL);\n var navbarTopBreakpoint = utils.getBreakpoint($navbarTop);\n var navbarVertcicalBreakpoint = utils.getBreakpoint($navbarVertical);\n\n var moveNavContent = function moveNavContent(width) {\n if (width < navbarTopBreakpoint) {\n var $navbarTopCollapse = $navbarTop.find(Selectors.COLLAPSE);\n var navbarTopContent = $navbarTopCollapse.html();\n\n if (navbarTopContent) {\n // $navbarTopCollapse.html('');\n var divider = \"\";\n navbarTopContent = \"
\" + divider + navbarTopContent + \"
\";\n var targetID = $navbarTop.data(DATA_KEYS.MOVE_TARGET);\n $(navbarTopContent).insertAfter(targetID);\n navbarTopBreakpoint > navbarVertcicalBreakpoint && $(Selectors.MOVEABLE_CONTENT).find(Selectors.NAVBAR_NAV).addClass(CLASS_NAME.FLEX_COLUMN);\n }\n } else {\n var $container = $(Selectors.MOVEABLE_CONTENT);\n var $navbarNav = $container.find(Selectors.NAVBAR_NAV);\n $navbarNav.hasClass(CLASS_NAME.FLEX_COLUMN) && $navbarNav.removeClass(CLASS_NAME.FLEX_COLUMN);\n $container.find(Selectors.NAVBAR_VERTICAL_DIVIDER).remove();\n var content = $container.html();\n // $container.remove();\n $(Selectors.NAVBAR_TOP_COMBO_COLLAPSE).html(content);\n }\n };\n\n moveNavContent(utils.$window.outerWidth());\n utils.$window.on('resize', function () {\n moveNavContent(utils.$window.outerWidth());\n });\n});\n/*-----------------------------------------------\n| Navbar\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var $window = utils.$window;\n var navDropShadowFlag = true;\n var ClassName = {\n SHOW: 'show',\n NAVBAR_GLASS_SHADOW: 'navbar-glass-shadow',\n NAVBAR_VERTICAL_COLLAPSED: 'navbar-vertical-collapsed',\n NAVBAR_VERTICAL_COLLAPSE_HOVER: 'navbar-vertical-collapsed-hover'\n };\n var Selector = {\n HTML: 'html',\n NAVBAR: '.navbar:not(.navbar-vertical)',\n NAVBAR_VERTICAL: '.navbar-vertical',\n NAVBAR_VERTICAL_TOGGLE: '.navbar-vertical-toggle',\n NAVBAR_VERTICAL_COLLAPSE: '#navbarVerticalCollapse',\n NAVBAR_VERTICAL_CONTENT: '.navbar-vertical-content',\n NAVBAR_VERTICAL_COLLAPSED: '.navbar-vertical-collapsed',\n NAVBAR_VERTICAL_DROPDOWN_NAV: '.navbar-vertical .navbar-collapse .nav',\n NAVBAR_VERTICAL_COLLAPSED_DROPDOWN_NAV: '.navbar-vertical-collapsed .navbar-vertical .navbar-collapse .nav',\n MAIN_CONTENT: '.main .content',\n NAVBAR_TOP: '.navbar-top',\n OWL_CAROUSEL: '.owl-carousel',\n ECHART_RESPONSIVE: '[data-echart-responsive]'\n };\n var Events = {\n LOAD_SCROLL: 'load scroll',\n SCROLL: 'scroll',\n CLICK: 'click',\n RESIZE: 'resize',\n SHOW_BS_COLLAPSE: 'show.bs.collapse',\n HIDDEN_BS_COLLAPSE: 'hidden.bs.collapse'\n };\n var $html = $(Selector.HTML);\n var $navbar = $(Selector.NAVBAR);\n var $navbarVerticalCollapse = $(Selector.NAVBAR_VERTICAL_COLLAPSE);\n var $navbarVerticalContent = $(Selector.NAVBAR_VERTICAL_CONTENT);\n var navbarVertical = $(Selector.NAVBAR_VERTICAL);\n var breakPoint = utils.getBreakpoint(navbarVertical);\n\n var setDropShadow = function setDropShadow($elem) {\n if ($elem.scrollTop() > 0 && navDropShadowFlag) {\n $navbar.addClass(ClassName.NAVBAR_GLASS_SHADOW);\n } else {\n $navbar.removeClass(ClassName.NAVBAR_GLASS_SHADOW);\n }\n };\n\n $window.on(Events.LOAD_SCROLL, function () {\n return setDropShadow($window);\n });\n $navbarVerticalContent.on('scroll', function () {\n if ($window.width() < breakPoint) {\n navDropShadowFlag = true;\n setDropShadow($navbarVerticalContent);\n }\n });\n $navbarVerticalCollapse.on(Events.SHOW_BS_COLLAPSE, function () {\n if ($window.width() < breakPoint) {\n navDropShadowFlag = false;\n setDropShadow($window);\n }\n });\n $navbarVerticalCollapse.on(Events.HIDDEN_BS_COLLAPSE, function () {\n if ($navbarVerticalCollapse.hasClass(ClassName.SHOW) && $window.width() < breakPoint) {\n navDropShadowFlag = false;\n } else {\n navDropShadowFlag = true;\n }\n\n setDropShadow($window);\n }); // Expand or Collapse vertical navbar on mouse over and out\n\n $navbarVerticalCollapse.hover(function (e) {\n setTimeout(function () {\n if ($(e.currentTarget).is(':hover')) {\n $(Selector.NAVBAR_VERTICAL_COLLAPSED).addClass(ClassName.NAVBAR_VERTICAL_COLLAPSE_HOVER);\n }\n }, 100);\n }, function () {\n $(Selector.NAVBAR_VERTICAL_COLLAPSED).removeClass(ClassName.NAVBAR_VERTICAL_COLLAPSE_HOVER);\n }); // Set navbar top width from content\n\n var setNavbarWidth = function setNavbarWidth() {\n var contentWidth = $(Selector.MAIN_CONTENT).width() + 30;\n $(Selector.NAVBAR_TOP).outerWidth(contentWidth);\n }; // Toggle navbar vertical collapse on click\n\n\n $(document).on(Events.CLICK, Selector.NAVBAR_VERTICAL_TOGGLE, function () {\n // Set collapse state on localStorage\n var isNavbarVerticalCollapsed = JSON.parse(localStorage.getItem('isNavbarVerticalCollapsed'));\n localStorage.setItem('isNavbarVerticalCollapsed', !isNavbarVerticalCollapsed); // Toggle class\n\n $html.toggleClass(ClassName.NAVBAR_VERTICAL_COLLAPSED); // Set navbar top width\n\n setNavbarWidth(); // Refresh owlCarousel\n\n var $owlCarousel = $(Selector.OWL_CAROUSEL);\n\n if ($owlCarousel.length) {\n $owlCarousel.owlCarousel('refresh');\n } // Refresh Echarts\n\n\n var $echarts = document.querySelectorAll(Selector.ECHART_RESPONSIVE);\n\n if ($echarts.length) {\n $.each($echarts, function (item, value) {\n if ($(value).data('echart-responsive')) {\n window.echarts.init(value).resize();\n }\n });\n }\n }); // Set navbar top width on window resize\n\n $window.on(Events.RESIZE, function () {\n setNavbarWidth();\n });\n});\n\n\n/*-----------------------------------------------\n| Navbar Top Combo\n-----------------------------------------------*/\n\n// document.addEventListener(\"turbolinks:load\", function() {\n// const Selectors = {\n// COLLAPSE: \".collapse\",\n// NAVBAR_NAV: \".navbar-nav\",\n// NAVBAR_TOP_COMBO: \".navbar-top-combo\",\n// NAVBAR_VERTICAL: \".navbar-vertical\",\n// NAVBAR_VERTICAL_DIVIDER: \".navbar-vertical-divider\",\n// NAVBAR_TOP_COMBO_COLLAPSE: \".navbar-top-combo .collapse\",\n// MOVEABLE_CONTENT: \"[data-move-container]\",\n// };\n// const CLASS_NAME = {\n// FLEX_COLUMN: \"flex-column\",\n// };\n// const DATA_KEYS = {\n// MOVE_TARGET: \"move-target\",\n// };\n// const $navbarTop = $(Selectors.NAVBAR_TOP_COMBO);\n// const $navbarVertical = $(Selectors.NAVBAR_VERTICAL);\n// const navbarTopBreakpoint = utils.getBreakpoint($navbarTop);\n// const navbarVertcicalBreakpoint = utils.getBreakpoint($navbarVertical);\n\n// const moveNavContent = (width) => {\n// if (width < navbarTopBreakpoint) {\n// const $navbarTopCollapse = $navbarTop.find(Selectors.COLLAPSE);\n// let navbarTopContent = $navbarTopCollapse.html();\n// if (navbarTopContent) {\n// $navbarTopCollapse.html(\"\");\n// const divider =\n// \"\";\n// navbarTopContent = `
${divider}${navbarTopContent}
`;\n// const targetID = $navbarTop.data(DATA_KEYS.MOVE_TARGET);\n// $(navbarTopContent).insertAfter(targetID);\n\n// navbarTopBreakpoint > navbarVertcicalBreakpoint &&\n// $(Selectors.MOVEABLE_CONTENT)\n// .find(Selectors.NAVBAR_NAV)\n// .addClass(CLASS_NAME.FLEX_COLUMN);\n// }\n// } else {\n// const $container = $(Selectors.MOVEABLE_CONTENT);\n// const $navbarNav = $container.find(Selectors.NAVBAR_NAV);\n\n// $navbarNav.hasClass(CLASS_NAME.FLEX_COLUMN) &&\n// $navbarNav.removeClass(CLASS_NAME.FLEX_COLUMN);\n\n// $container.find(Selectors.NAVBAR_VERTICAL_DIVIDER).remove();\n// const content = $container.html();\n// $container.remove();\n// $(Selectors.NAVBAR_TOP_COMBO_COLLAPSE).html(content);\n// }\n// };\n// moveNavContent(utils.$window.outerWidth());\n// utils.$window.on(\"resize\", () => {\n// moveNavContent(utils.$window.outerWidth());\n// });\n// });\n/*-----------------------------------------------\n| Cookie Notice\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var Selector = {\n NOTICE: '.notice'\n };\n var DataKeys = {\n OPTIONS: 'options'\n };\n var CookieNames = {\n COOKIE_NOTICE: 'cookieNotice'\n };\n var Events = {\n HIDDEN_BS_TOAST: 'hidden.bs.toast'\n };\n var $notices = $(Selector.NOTICE);\n var defaultOptions = {\n autoShow: false,\n autoShowDelay: 0,\n showOnce: false,\n cookieExpireTime: 3600000\n };\n $notices.each(function (index, value) {\n var $this = $(value);\n var options = $.extend(defaultOptions, $this.data(DataKeys.OPTIONS));\n var cookieNotice;\n\n if (options.showOnce) {\n cookieNotice = utils.getCookie(CookieNames.COOKIE_NOTICE);\n }\n\n if (options.autoShow && cookieNotice === null) {\n setTimeout(function () {\n return $this.toast('show');\n }, options.autoShowDelay);\n }\n });\n $(Selector.NOTICE).on(Events.HIDDEN_BS_TOAST, function (e) {\n var $this = $(e.currentTarget);\n var options = $.extend(defaultOptions, $this.data(DataKeys.OPTIONS));\n options.showOnce && utils.setCookie(CookieNames.COOKIE_NOTICE, false, options.cookieExpireTime);\n });\n utils.$document.on('click', \"[data-toggle='notice']\", function (e) {\n e.preventDefault();\n var $this = $(e.currentTarget);\n var $target = $($this.attr('href'));\n\n if ($target.hasClass('show')) {\n $target.toast('hide');\n } else {\n $target.toast('show');\n }\n });\n});\n/*-----------------------------------------------\n| Owl Carousel\n-----------------------------------------------*/\n\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var $carousel = $('.owl-carousel');\n if ($carousel.length) {\n var Selector = {\n ALL_TIMELINE: '*[data-zanim-timeline]',\n ACTIVE_ITEM: '.owl-item.active'\n };\n var owlZanim = {\n zanimTimeline: function zanimTimeline($el) {\n return $el.find(Selector.ALL_TIMELINE);\n },\n play: function play($el) {\n if (this.zanimTimeline($el).length === 0) return;\n $el.find(Selector.ACTIVE_ITEM + \" > \" + Selector.ALL_TIMELINE).zanimation(function (animation) {\n animation.play();\n });\n },\n kill: function kill($el) {\n if (this.zanimTimeline($el).length === 0) return;\n this.zanimTimeline($el).zanimation(function (animation) {\n animation.kill();\n });\n }\n };\n $carousel.each(function (index, value) {\n var $this = $(value);\n var options = $this.data('options') || {};\n utils.isRTL() && (options.rtl = true);\n options.navText || (options.navText = ['', '']);\n options.touchDrag = true;\n $this.owlCarousel($.extend(options || {}, {\n onInitialized: function onInitialized(event) {\n owlZanim.play($(event.target));\n },\n onTranslate: function onTranslate(event) {\n owlZanim.kill($(event.target));\n },\n onTranslated: function onTranslated(event) {\n owlZanim.play($(event.target));\n }\n }));\n });\n }\n\n var $controllers = $('[data-owl-carousel-controller]');\n\n if ($controllers.length) {\n $controllers.each(function (index, value) {\n var $this = $(value);\n var $thumbs = $($this.data('owl-carousel-controller'));\n $thumbs.find('.owl-item:first-child').addClass('current');\n $thumbs.on('click', '.item', function (e) {\n var thumbIndex = $(e.target).parents('.owl-item').index();\n $('.owl-item').removeClass('current');\n $(e.target).parents('.owl-item').addClass('current');\n $this.trigger('to.owl.carousel', thumbIndex, 500);\n });\n $this.on('changed.owl.carousel', function (e) {\n var itemIndex = e.item.index;\n var item = itemIndex + 1;\n $('.owl-item').removeClass('current');\n $thumbs.find(\".owl-item:nth-child(\" + item + \")\").addClass('current');\n $thumbs.trigger('to.owl.carousel', itemIndex, 500);\n });\n });\n }\n});\n/*-----------------------------------------------\n| Perfect Scrollbar\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n if (window.is.ie() || window.is.edge()) {\n var scrollbars = document.querySelectorAll('.perfect-scrollbar');\n\n if (scrollbars.length) {\n $.each(scrollbars, function (item, value) {\n var $this = $(value);\n var userOptions = $this.data('options');\n var options = $.extend({\n wheelPropagation: true,\n suppressScrollX: true,\n suppressScrollY: false\n }, userOptions);\n var ps = new PerfectScrollbar(value, options);\n ps.update();\n });\n }\n }\n});\n\n/*-----------------------------------------------\n| Raty\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var ratings = $('.raty');\n\n if (ratings.length) {\n ratings.each(function (index, value) {\n var $this = $(value);\n var options = $.extend({\n starHalf: 'star-half-png text-warning',\n starOff: 'star-off-png text-300',\n starOn: 'star-on-png text-warning',\n starType: 'span',\n size: 30\n }, $this.data('options'));\n $(value).raty(options);\n });\n }\n});\n\n/*-----------------------------------------------\n| Tabs\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var $fancyTabs = $('.fancy-tab');\n\n if ($fancyTabs.length) {\n var Selector = {\n TAB_BAR: '.nav-bar',\n TAB_BAR_ITEM: '.nav-bar-item',\n TAB_CONTENTS: '.tab-contents'\n };\n var ClassName = {\n ACTIVE: 'active',\n TRANSITION_REVERSE: 'transition-reverse',\n TAB_INDICATOR: 'tab-indicator'\n };\n /*-----------------------------------------------\n | Function for active tab indicator change\n -----------------------------------------------*/\n\n var updateIncicator = function updateIncicator($indicator, $tabs, $tabnavCurrentItem) {\n var _$tabnavCurrentItem$p = $tabnavCurrentItem.position(),\n left = _$tabnavCurrentItem$p.left;\n\n var right = $tabs.children(Selector.TAB_BAR).outerWidth() - (left + $tabnavCurrentItem.outerWidth());\n $indicator.css({\n left: left,\n right: right\n });\n };\n\n $fancyTabs.each(function (index, value) {\n var $tabs = $(value);\n var $navBar = $tabs.children(Selector.TAB_BAR);\n var $tabnavCurrentItem = $navBar.children(Selector.TAB_BAR_ITEM + \".\" + ClassName.ACTIVE);\n $navBar.append(\"\\n
\\n \");\n var $indicator = $navBar.children(\".\" + ClassName.TAB_INDICATOR);\n var $preIndex = $tabnavCurrentItem.index();\n updateIncicator($indicator, $tabs, $tabnavCurrentItem);\n $navBar.children(Selector.TAB_BAR_ITEM).click(function (e) {\n $tabnavCurrentItem = $(e.currentTarget);\n var $currentIndex = $tabnavCurrentItem.index();\n var $tabContent = $tabs.children(Selector.TAB_CONTENTS).children().eq($currentIndex);\n $tabnavCurrentItem.siblings().removeClass(ClassName.ACTIVE);\n $tabnavCurrentItem.addClass(ClassName.ACTIVE);\n $tabContent.siblings().removeClass(ClassName.ACTIVE);\n $tabContent.addClass(ClassName.ACTIVE);\n /*-----------------------------------------------\n | Indicator Transition\n -----------------------------------------------*/\n\n updateIncicator($indicator, $tabs, $tabnavCurrentItem);\n\n if ($currentIndex - $preIndex <= 0) {\n $indicator.addClass(ClassName.TRANSITION_REVERSE);\n } else {\n $indicator.removeClass(ClassName.TRANSITION_REVERSE);\n }\n\n $preIndex = $currentIndex;\n });\n utils.$window.on('resize', function () {\n updateIncicator($indicator, $tabs, $tabnavCurrentItem);\n });\n });\n }\n /*-----------------------------------------------\n | Product Review Tab\n -----------------------------------------------*/\n\n\n var $review = $('[data-tab-target]');\n $review.click(function (e) {\n var $this = $(e.currentTarget);\n var $reviewTab = $($this.data('tab-target'));\n $reviewTab.trigger('click');\n });\n});\n/*-----------------------------------------------\n| TINYMCE\n-----------------------------------------------*/\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var tinymces = $('.tinymce');\n\n if (tinymces.length) {\n window.tinymce.init({\n selector: '.tinymce',\n height: '50vh',\n menubar: false,\n skin: utils.settings.tinymce.theme,\n content_style: \".mce-content-body { color: \" + utils.grays.black + \" }\",\n mobile: {\n theme: 'mobile',\n toolbar: ['undo', 'bold']\n },\n statusbar: false,\n plugins: 'link,image,lists,table,media',\n toolbar: 'styleselect | bold italic link bullist numlist image blockquote table media undo redo'\n });\n }\n});\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Bootstrap modal.js v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) : typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.jQuery, global.Util));\n})(this, function ($, Util) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME = 'modal';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.modal';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype; // Public\n\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $__default['default'].Event(EVENT_SHOW, {\n relatedTarget: relatedTarget\n });\n $__default['default'](this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default['default'](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE);\n $__default['default'](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'](this._element).removeClass(CLASS_NAME_SHOW);\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS);\n $__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default['default'](htmlElement).off(EVENT_KEY);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'].removeData(this._element, DATA_KEY);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util__default['default'].typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED);\n $__default['default'](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util__default['default'].getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._element).off(Util__default['default'].TRANSITION_END);\n $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default['default'](_this3._element).one(Util__default['default'].TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($__default['default'](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util__default['default'].reflow(this._element);\n }\n\n $__default['default'](this._element).addClass(CLASS_NAME_SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default['default'].Event(EVENT_SHOWN, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default['default'](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._dialog).one(Util__default['default'].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default['default'](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default['default'](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default['default'](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default['default'](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default['default'](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default['default'](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default['default'](_this8._element).trigger(EVENT_HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default['default'](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default['default'](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default['default'](this._backdrop).appendTo(document.body);\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util__default['default'].reflow(this._backdrop);\n }\n\n $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util__default['default'].getTransitionDurationFromElement(this._backdrop);\n $__default['default'](this._backdrop).one(Util__default['default'].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE)) {\n var _backdropTransitionDuration = Util__default['default'].getTransitionDurationFromElement(this._backdrop);\n\n $__default['default'](this._backdrop).one(Util__default['default'].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default['default'](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default['default'](element).css('padding-right');\n $__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default['default'](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default['default'](element).css('margin-right');\n $__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default['default'](document.body).css('padding-right');\n $__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $__default['default'](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default['default'](fixedContent).each(function (index, element) {\n var padding = $__default['default'](element).data('padding-right');\n $__default['default'](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default['default'](elements).each(function (index, element) {\n var margin = $__default['default'](element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $__default['default'](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default['default'](document.body).data('padding-right');\n $__default['default'](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY);\n\n var _config = _extends({}, Default, $__default['default'](this).data(), _typeof(config) === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default['default'](this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util__default['default'].getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default['default'](target).data(DATA_KEY) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $__default['default'](target).one(EVENT_SHOW, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN, function () {\n if ($__default['default'](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default['default'](target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME] = Modal._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Modal;\n\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Modal._jQueryInterface;\n };\n\n return Modal;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Bootstrap popover.js v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./tooltip.js')) : typeof define === 'function' && define.amd ? define(['jquery', './tooltip'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.jQuery, global.Tooltip));\n})(this, function ($, Tooltip) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME = 'popover';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.popover';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var CLASS_PREFIX = 'bs-popover';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n\n var Default = _extends({}, Tooltip__default['default'].Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
' + '
' + '

' + '
'\n });\n\n var DefaultType = _extends({}, Tooltip__default['default'].DefaultType, {\n content: '(string|element|function)'\n });\n\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n INSERTED: \"inserted\" + EVENT_KEY,\n CLICK: \"click\" + EVENT_KEY,\n FOCUSIN: \"focusin\" + EVENT_KEY,\n FOCUSOUT: \"focusout\" + EVENT_KEY,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype; // Overrides\n\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE + \" \" + CLASS_NAME_SHOW);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY);\n\n var _config = _typeof(config) === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default['default'](this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return Popover;\n }(Tooltip__default['default']);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME] = Popover._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Popover;\n\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Popover._jQueryInterface;\n };\n\n return Popover;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Bootstrap tab.js v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) : typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.jQuery, global.Util));\n})(this, function ($, Util) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME = 'tab';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.tab';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n var selector = Util__default['default'].getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE, {\n relatedTarget: this._element\n });\n var showEvent = $__default['default'].Event(EVENT_SHOW, {\n relatedTarget: previous\n });\n\n if (previous) {\n $__default['default'](previous).trigger(hideEvent);\n }\n\n $__default['default'](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default['default'].Event(EVENT_SHOWN, {\n relatedTarget: previous\n });\n $__default['default'](previous).trigger(hiddenEvent);\n $__default['default'](_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util__default['default'].getTransitionDurationFromElement(active);\n $__default['default'](active).removeClass(CLASS_NAME_SHOW).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default['default'](active).removeClass(CLASS_NAME_ACTIVE);\n var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $__default['default'](element).addClass(CLASS_NAME_ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util__default['default'].reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW);\n }\n\n if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default['default'](this);\n var data = $this.data(DATA_KEY);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($__default['default'](this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME] = Tab._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Tab;\n\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Tab._jQueryInterface;\n };\n\n return Tab;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Bootstrap toast.js v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) : typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.jQuery, global.Util));\n})(this, function ($, Util) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME = 'toast';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.toast';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n var showEvent = $__default['default'].Event(EVENT_SHOW);\n $__default['default'](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n _this._element.classList.add(CLASS_NAME_SHOW);\n\n $__default['default'](_this._element).trigger(EVENT_SHOWN);\n\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE);\n\n Util__default['default'].reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE);\n $__default['default'](this._element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._close();\n };\n\n _proto.dispose = function dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS);\n $__default['default'].removeData(this._element, DATA_KEY);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, $__default['default'](this._element).data(), _typeof(config) === 'object' && config ? config : {});\n Util__default['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n return _this2.hide();\n });\n };\n\n _proto._close = function _close() {\n var _this3 = this;\n\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n\n $__default['default'](_this3._element).trigger(EVENT_HIDDEN);\n };\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n if (this._config.animation) {\n var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME] = Toast._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Toast;\n\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Toast._jQueryInterface;\n };\n\n return Toast;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Bootstrap tooltip.js v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('popper.js'), require('./util.js')) : typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global.jQuery, global.Popper, global.Util));\n})(this, function ($, Popper, Util) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n\n var NAME = 'tooltip';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.tooltip';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default = {\n animation: true,\n template: '
' + '
' + '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n INSERTED: \"inserted\" + EVENT_KEY,\n CLICK: \"click\" + EVENT_KEY,\n FOCUSIN: \"focusin\" + EVENT_KEY,\n FOCUSOUT: \"focusout\" + EVENT_KEY,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY\n };\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype; // Public\n\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default['default'].removeData(this.element, this.constructor.DATA_KEY);\n $__default['default'](this.element).off(this.constructor.EVENT_KEY);\n $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $__default['default'](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default['default'](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default['default'](this.element).trigger(showEvent);\n var shadowRoot = Util__default['default'].findShadowRoot(this.element);\n var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util__default['default'].getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default['default'](tip).addClass(CLASS_NAME_FADE);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default['default'](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default['default'](tip).appendTo(container);\n }\n\n $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));\n $__default['default'](tip).addClass(CLASS_NAME_SHOW);\n $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE)) {\n var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this.tip);\n $__default['default'](this.tip).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default['default'](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_SHOW); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE)) {\n var transitionDuration = Util__default['default'].getTransitionDurationFromElement(tip);\n $__default['default'](tip).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default['default'](tip).removeClass(CLASS_NAME_FADE + \" \" + CLASS_NAME_SHOW);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (_typeof(content) === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default['default'](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default['default'](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util__default['default'].isElement(this.config.container)) {\n return $__default['default'](this.config.container);\n }\n\n return $__default['default'](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = _typeof(this.element.getAttribute('data-original-title'));\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default['default'](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, _typeof(config) === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util__default['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_FADE);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME] = Tooltip._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Tooltip;\n\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Tooltip._jQueryInterface;\n };\n\n return Tooltip;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Bootstrap util.js v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) : typeof define === 'function' && define.amd ? define(['jquery'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Util = factory(global.jQuery));\n})(this, function ($) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default['default'](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default['default'](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default['default'](element).css('transition-duration');\n var transitionDelay = $__default['default'](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default['default'](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default['default'].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n return Util;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! DataTables Bootstrap 4 integration\n * ©2011-2017 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Bootstrap 4. This requires Bootstrap 4 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap\n * for further information.\n */\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(['jquery', 'datatables.net'], function ($) {\n return factory($, window, document);\n });\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n // CommonJS\n module.exports = function (root, $) {\n if (!root) {\n root = window;\n }\n\n if (!$ || !$.fn.dataTable) {\n // Require DataTables, which attaches to jQuery, including\n // jQuery if needed and have a $ property so we can access the\n // jQuery object that is used\n $ = require('datatables.net')(root, $).$;\n }\n\n return factory($, root, root.document);\n };\n } else {\n // Browser\n factory(jQuery, window, document);\n }\n})(function ($, window, document, undefined) {\n 'use strict';\n\n var DataTable = $.fn.dataTable;\n /* Set the defaults for DataTables initialisation */\n\n $.extend(true, DataTable.defaults, {\n dom: \"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>\" + \"<'row'<'col-sm-12'tr>>\" + \"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>\",\n renderer: 'bootstrap'\n });\n /* Default class modification */\n\n $.extend(DataTable.ext.classes, {\n sWrapper: \"dataTables_wrapper dt-bootstrap4\",\n sFilterInput: \"form-control form-control-sm\",\n sLengthSelect: \"custom-select custom-select-sm form-control form-control-sm\",\n sProcessing: \"dataTables_processing card\",\n sPageButton: \"paginate_button page-item\"\n });\n /* Bootstrap paging button renderer */\n\n DataTable.ext.renderer.pageButton.bootstrap = function (settings, host, idx, buttons, page, pages) {\n var api = new DataTable.Api(settings);\n var classes = settings.oClasses;\n var lang = settings.oLanguage.oPaginate;\n var aria = settings.oLanguage.oAria.paginate || {};\n var btnDisplay,\n btnClass,\n counter = 0;\n\n var attach = function attach(container, buttons) {\n var i, ien, node, button;\n\n var clickHandler = function clickHandler(e) {\n e.preventDefault();\n\n if (!$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action) {\n api.page(e.data.action).draw('page');\n }\n };\n\n for (i = 0, ien = buttons.length; i < ien; i++) {\n button = buttons[i];\n\n if (Array.isArray(button)) {\n attach(container, button);\n } else {\n btnDisplay = '';\n btnClass = '';\n\n switch (button) {\n case 'ellipsis':\n btnDisplay = '…';\n btnClass = 'disabled';\n break;\n\n case 'first':\n btnDisplay = lang.sFirst;\n btnClass = button + (page > 0 ? '' : ' disabled');\n break;\n\n case 'previous':\n btnDisplay = lang.sPrevious;\n btnClass = button + (page > 0 ? '' : ' disabled');\n break;\n\n case 'next':\n btnDisplay = lang.sNext;\n btnClass = button + (page < pages - 1 ? '' : ' disabled');\n break;\n\n case 'last':\n btnDisplay = lang.sLast;\n btnClass = button + (page < pages - 1 ? '' : ' disabled');\n break;\n\n default:\n btnDisplay = button + 1;\n btnClass = page === button ? 'active' : '';\n break;\n }\n\n if (btnDisplay) {\n node = $('
  • ', {\n 'class': classes.sPageButton + ' ' + btnClass,\n 'id': idx === 0 && typeof button === 'string' ? settings.sTableId + '_' + button : null\n }).append($('', {\n 'href': '#',\n 'aria-controls': settings.sTableId,\n 'aria-label': aria[button],\n 'data-dt-idx': counter,\n 'tabindex': settings.iTabIndex,\n 'class': 'page-link'\n }).html(btnDisplay)).appendTo(container);\n\n settings.oApi._fnBindAction(node, {\n action: button\n }, clickHandler);\n\n counter++;\n }\n }\n }\n }; // IE9 throws an 'unknown error' if document.activeElement is used\n // inside an iframe or frame. \n\n\n var activeEl;\n\n try {\n // Because this approach is destroying and recreating the paging\n // elements, focus is lost on the select button which is bad for\n // accessibility. So we want to restore focus once the draw has\n // completed\n activeEl = $(host).find(document.activeElement).data('dt-idx');\n } catch (e) {}\n\n attach($(host).empty().html('