lesli_audit 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/lesli_audit/application.js +33 -98
  3. data/app/assets/javascripts/lesli_audit/application.js.LICENSE.txt +327 -0
  4. data/app/controllers/lesli_audit/accounts_controller.rb +60 -0
  5. data/app/controllers/lesli_audit/analytics_controller.rb +0 -4
  6. data/app/controllers/lesli_audit/requests_controller.rb +60 -0
  7. data/app/controllers/lesli_audit/users_controller.rb +60 -0
  8. data/app/helpers/lesli_audit/accounts_helper.rb +4 -0
  9. data/app/helpers/lesli_audit/requests_helper.rb +4 -0
  10. data/app/helpers/lesli_audit/users_helper.rb +4 -0
  11. data/app/models/lesli_audit/account.rb +6 -0
  12. data/app/models/lesli_audit/account_request.rb +5 -0
  13. data/app/models/lesli_audit/analytic.rb +2 -2
  14. data/app/models/lesli_audit/request.rb +4 -0
  15. data/app/models/lesli_audit/user.rb +4 -0
  16. data/app/models/lesli_audit/user_request.rb +7 -0
  17. data/app/services/lesli_audit/analytic_service.rb +13 -48
  18. data/app/views/lesli_audit/accounts/_account.html.erb +2 -0
  19. data/app/views/lesli_audit/accounts/_form.html.erb +17 -0
  20. data/app/views/lesli_audit/accounts/edit.html.erb +10 -0
  21. data/app/views/lesli_audit/accounts/index.html.erb +14 -0
  22. data/app/views/lesli_audit/accounts/new.html.erb +9 -0
  23. data/app/views/lesli_audit/accounts/show.html.erb +10 -0
  24. data/app/views/lesli_audit/requests/_form.html.erb +17 -0
  25. data/app/views/lesli_audit/requests/_request.html.erb +2 -0
  26. data/app/views/lesli_audit/requests/edit.html.erb +10 -0
  27. data/app/views/lesli_audit/requests/index.html.erb +14 -0
  28. data/app/views/lesli_audit/requests/new.html.erb +9 -0
  29. data/app/views/lesli_audit/requests/show.html.erb +10 -0
  30. data/app/views/lesli_audit/users/_form.html.erb +17 -0
  31. data/app/views/lesli_audit/users/_user.html.erb +2 -0
  32. data/app/views/lesli_audit/users/edit.html.erb +10 -0
  33. data/app/views/lesli_audit/users/index.html.erb +14 -0
  34. data/app/views/lesli_audit/users/new.html.erb +9 -0
  35. data/app/views/lesli_audit/users/show.html.erb +10 -0
  36. data/config/locales/translations.en.yml +7 -0
  37. data/config/locales/translations.es.yml +7 -0
  38. data/config/routes.rb +17 -11
  39. data/db/migrate/v1.0/0803100010_create_lesli_audit_account_requests.rb +44 -0
  40. data/db/migrate/v1.0/0803110010_create_lesli_audit_user_requests.rb +46 -0
  41. data/db/seed/development.rb +31 -24
  42. data/lib/lesli_audit/version.rb +2 -2
  43. data/lib/vue/apps/analytics/index.vue +3 -7
  44. data/lib/vue/components/requests.vue +0 -6
  45. data/lib/vue/components/visitors.vue +3 -0
  46. data/lib/vue/stores/analytics.js +0 -35
  47. data/lib/vue/stores/translations.json +38 -0
  48. data/readme.md +44 -93
  49. metadata +37 -3
  50. data/lib/vue/components/resources.vue +0 -73
@@ -148,7 +148,7 @@ eval("var __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * ApexCharts v3.41.1\n * (c) 2018-
148
148
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
149
149
 
150
150
  "use strict";
151
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-router */ \"./node_modules/vue-router/dist/vue-router.mjs\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-js/debug/browser */ \"./node_modules/lesli-js/debug/browser.js\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Lesli_layouts_application_header_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Lesli/layouts/application-header.vue */ \"./lib/vue/layouts/application-header.vue\");\n/* harmony import */ var Lesli_layouts_application_engines_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Lesli/layouts/application-engines.vue */ \"./lib/vue/layouts/application-engines.vue\");\n/* harmony import */ var Lesli_layouts_application_container_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Lesli/layouts/application-container.vue */ \"./lib/vue/layouts/application-container.vue\");\n/* harmony import */ var Lesli_layouts_application_component_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Lesli/layouts/application-component.vue */ \"./lib/vue/layouts/application-component.vue\");\n/* harmony import */ var lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lesli-vue/elements */ \"../../enginesdev/lesli-vue/source/elements/index.js\");\n/* harmony import */ var lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lesli-vue/composables */ \"../../enginesdev/lesli-vue/source/composables/index.js\");\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.tech\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · Loading core framework and libraries\n\n\n\n\n\n// custom console.log implementation for Lesli\nwindow.debug = (lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1___default());\n\n// · Loading application layout components\n\n\n\n\n\n/*\nimport componentApplicationFooter from \"Lesli/layouts/application-footer.vue\"\nimport componentApplicationSearch from \"Lesli/layouts/application-search.vue\"\nimport componentApplicationSidebar from \"Lesli/layouts/application-sidebar.vue\"\nimport componentApplicationAnnouncement from \"Lesli/layouts/application-announcements.vue\"\nimport componentApplicationPanelTasks from \"Lesli/panels/panel-tasks.vue\"\nimport componentApplicationPanelFiles from \"Lesli/panels/panel-files.vue\"\nimport componentApplicationPanelTickets from \"Lesli/panels/panel-tickets.vue\"\nimport componentApplicationPanelProfile from \"Lesli/panels/panel-profile.vue\"\nimport componentApplicationPanelNotifications from \"Lesli/panels/panel-notifications.vue\"\nimport componentApplicationPanelAnnouncements from \"Lesli/panels/panel-announcements.vue\"\n*/\n\n// · Loading global layout components\n\n\n// · Loading vue/pinia plugins as composables\n\n\n// · engine: List of controllers apps loaded\n// · routes: Array of routes for Vue \n// · example: app(\"CloudAudit\", [])\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (engine) {\n let routes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n // · Base path for the engines/core url's\n const base_path = \"/\";\n\n // · Vue app configuration container\n let appbuilder = {};\n\n // · Loading Lesli local layout components\n appbuilder[\"components\"] = {\n \"lesli-application-header\": Lesli_layouts_application_header_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n \"lesli-application-engines\": Lesli_layouts_application_engines_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n /*\n \"application-component-footer\": componentApplicationFooter,\n \"application-component-search\": componentApplicationSearch,\n \"application-component-sidebar\": componentApplicationSidebar,\n \"application-component-announcements\": componentApplicationAnnouncement,\n \"application-component-panel-tasks\": componentApplicationPanelTasks,\n \"application-component-panel-files\": componentApplicationPanelFiles,\n \"application-component-panel-tickets\": componentApplicationPanelTickets,\n \"application-component-panel-profile\": componentApplicationPanelProfile,\n \"application-component-panel-announcements\": componentApplicationPanelAnnouncements,\n \"application-component-panel-notifications\": componentApplicationPanelNotifications\n */\n };\n\n // · Use pinia as app state management\n const pinia = (0,pinia__WEBPACK_IMPORTED_MODULE_8__.createPinia)();\n\n // · Loading pinia handmade plugins\n pinia.use(() => ({\n msg: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliMsg)()\n }));\n pinia.use(() => ({\n url: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUrl)()\n }));\n pinia.use(() => ({\n http: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliHttp)()\n }));\n pinia.use(() => ({\n date: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDate)()\n }));\n pinia.use(() => ({\n utils: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUtils)()\n }));\n pinia.use(() => ({\n dialog: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDialog)()\n }));\n\n // · Global vue router\n const router = (0,vue_router__WEBPACK_IMPORTED_MODULE_9__.createRouter)({\n history: (0,vue_router__WEBPACK_IMPORTED_MODULE_9__.createWebHistory)(base_path),\n routes: routes.map(route => {\n // concat the base path to all routes\n // this allow to use the rails route constants\n // example: projects_path is equal to /crm/projects\n route.path = base_path.concat(lesli.engine_paths[engine]).concat(route.path);\n return route;\n })\n });\n\n // · \n router.afterEach((to, from) => {\n // Use next tick to handle router history correctly\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {\n // update the page title according to the working app\n document.title = `${lesli?.company?.name} · ${to.path.substring(1) || 'Dashboard'}`;\n\n // default class for the specific instance\n document.body.className = lesli?.instance;\n\n // using the path as class id for the body\n // the class will be: \"engine-controller\"\n var cssclass = to.path.substring(1) // remove the first slash\n .split(\"/\") // create an array splited by slashes\n .filter(e => e != \"\") // remove empty strings\n .slice(0, 2) // get the first two items of the array\n .join(\"-\"); // create a string joined by dashes\n\n // add the css class to the body\n if (cssclass) {\n document.body.classList.add(\"lesli-\".concat(cssclass));\n }\n });\n });\n\n // · Create a beautiful Vue 3 app\n const application = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createApp)(appbuilder);\n\n // · Provide composables to make them available in all the components\n application.provide('msg', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliMsg)());\n application.provide('url', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUrl)());\n application.provide('http', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliHttp)());\n application.provide('date', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDate)());\n application.provide('date', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDate)());\n application.provide('utils', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUtils)());\n application.provide('dialog', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDialog)());\n\n // · Extending vue\n application.use(pinia);\n application.use(router);\n\n // · Register global layouts\n application.component(\"lesli-application-container\", Lesli_layouts_application_container_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n application.component(\"lesli-application-component\", Lesli_layouts_application_component_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n\n // · Loading Lesli handmade global components\n application.component(\"lesli-icon\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementIcon);\n application.component(\"lesli-empty\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementEmpty);\n application.component(\"lesli-header\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementHeader);\n application.component(\"lesli-select\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementSelect);\n application.component(\"lesli-toolbar\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementToolbar);\n application.component(\"lesli-loading\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementLoading);\n application.component(\"lesli-table\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementTable);\n application.component(\"lesli-collapse\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementCollapse);\n application.component(\"lesli-tab-item\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementTabItem);\n application.component(\"lesli-tabs\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementTabs);\n application.component(\"lesli-panel\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementPanel);\n application.component(\"lesli-button\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementButton);\n application.component(\"lesli-calendar\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementCalendar);\n application.component(\"lesli-input-tag\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementInputTag);\n application.component(\"lesli-file-uploader\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementFileUploader);\n application.component(\"lesli-navigation-list\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementNavigationList);\n application.component(\"lesli-avatar\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementAvatar);\n application.component(\"lesli-toggle\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementToggle);\n application.component(\"lesli-dropdown\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementDropdown);\n application.component(\"lesli-map\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementMap);\n //application.component(\"lesli-gallery\", lesliElementGallery)\n application.component(\"lesli-autocomplete\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementAutocomplete);\n application.component(\"lesli-pagination\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementPagination);\n application.component(\"lesli-form\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementForm);\n application.component(\"lesli-input\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementInput);\n application.component(\"lesli-control\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementControl);\n application.component(\"lesli-card\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementCard);\n\n // · Mount app once DOM is ready\n document.addEventListener(\"DOMContentLoaded\", () => {\n // · mount the app on the main html tag\n application.mount(\"#lesli-application\");\n\n // · development message about vue app loaded\n if (true) {\n lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1___default().info(`${engine} --> ${lesli.engine_paths[engine]}`, \"vue/application\");\n }\n\n // · console production message\n if (false) {}\n });\n return application;\n});\n\n//# sourceURL=webpack://lesli/./lib/vue/application.js?");
151
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-router */ \"./node_modules/vue-router/dist/vue-router.mjs\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-js/debug/browser */ \"../../enginesdev/lesli-js/source/debug/browser.js\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var Lesli_layouts_application_header_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Lesli/layouts/application-header.vue */ \"./lib/vue/layouts/application-header.vue\");\n/* harmony import */ var Lesli_layouts_application_engines_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Lesli/layouts/application-engines.vue */ \"./lib/vue/layouts/application-engines.vue\");\n/* harmony import */ var Lesli_layouts_application_container_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Lesli/layouts/application-container.vue */ \"./lib/vue/layouts/application-container.vue\");\n/* harmony import */ var Lesli_layouts_application_component_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Lesli/layouts/application-component.vue */ \"./lib/vue/layouts/application-component.vue\");\n/* harmony import */ var lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lesli-vue/elements */ \"../../enginesdev/lesli-vue/source/elements/index.js\");\n/* harmony import */ var lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lesli-vue/composables */ \"../../enginesdev/lesli-vue/source/composables/index.js\");\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.tech\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · Loading core framework and libraries\n\n\n\n\n\n// custom console.log implementation for Lesli\nwindow.debug = (lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1___default());\n\n// · Loading application layout components\n\n\n\n\n\n/*\nimport componentApplicationFooter from \"Lesli/layouts/application-footer.vue\"\nimport componentApplicationSearch from \"Lesli/layouts/application-search.vue\"\nimport componentApplicationSidebar from \"Lesli/layouts/application-sidebar.vue\"\nimport componentApplicationAnnouncement from \"Lesli/layouts/application-announcements.vue\"\nimport componentApplicationPanelTasks from \"Lesli/panels/panel-tasks.vue\"\nimport componentApplicationPanelFiles from \"Lesli/panels/panel-files.vue\"\nimport componentApplicationPanelTickets from \"Lesli/panels/panel-tickets.vue\"\nimport componentApplicationPanelProfile from \"Lesli/panels/panel-profile.vue\"\nimport componentApplicationPanelNotifications from \"Lesli/panels/panel-notifications.vue\"\nimport componentApplicationPanelAnnouncements from \"Lesli/panels/panel-announcements.vue\"\n*/\n\n// · Loading global layout components\n\n\n// · Loading vue/pinia plugins as composables\n\n\n// · engine: List of controllers apps loaded\n// · routes: Array of routes for Vue \n// · example: app(\"CloudAudit\", [])\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (engine) {\n let routes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n // · Base path for the engines/core url's\n const base_path = \"/\";\n\n // · Vue app configuration container\n let appbuilder = {};\n\n // · Loading Lesli local layout components\n appbuilder[\"components\"] = {\n \"lesli-application-header\": Lesli_layouts_application_header_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n \"lesli-application-engines\": Lesli_layouts_application_engines_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n /*\n \"application-component-footer\": componentApplicationFooter,\n \"application-component-search\": componentApplicationSearch,\n \"application-component-sidebar\": componentApplicationSidebar,\n \"application-component-announcements\": componentApplicationAnnouncement,\n \"application-component-panel-tasks\": componentApplicationPanelTasks,\n \"application-component-panel-files\": componentApplicationPanelFiles,\n \"application-component-panel-tickets\": componentApplicationPanelTickets,\n \"application-component-panel-profile\": componentApplicationPanelProfile,\n \"application-component-panel-announcements\": componentApplicationPanelAnnouncements,\n \"application-component-panel-notifications\": componentApplicationPanelNotifications\n */\n };\n\n // · Use pinia as app state management\n const pinia = (0,pinia__WEBPACK_IMPORTED_MODULE_8__.createPinia)();\n\n // · Loading pinia handmade plugins\n pinia.use(() => ({\n msg: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliMsg)()\n }));\n pinia.use(() => ({\n url: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUrl)()\n }));\n pinia.use(() => ({\n http: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliHttp)()\n }));\n pinia.use(() => ({\n date: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDate)()\n }));\n pinia.use(() => ({\n utils: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUtils)()\n }));\n pinia.use(() => ({\n dialog: (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDialog)()\n }));\n\n // · Global vue router\n const router = (0,vue_router__WEBPACK_IMPORTED_MODULE_9__.createRouter)({\n history: (0,vue_router__WEBPACK_IMPORTED_MODULE_9__.createWebHistory)(base_path),\n routes: routes.map(route => {\n // concat the base path to all routes\n // this allow to use the rails route constants\n // example: projects_path is equal to /crm/projects\n route.path = base_path.concat(lesli.engine_paths[engine]).concat(route.path);\n return route;\n })\n });\n\n // · \n router.afterEach((to, from) => {\n // Use next tick to handle router history correctly\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {\n // update the page title according to the working app\n document.title = `${lesli?.company?.name} · ${to.path.substring(1) || 'Dashboard'}`;\n\n // default class for the specific instance\n document.body.className = lesli?.instance;\n\n // using the path as class id for the body\n // the class will be: \"engine-controller\"\n var cssclass = to.path.substring(1) // remove the first slash\n .split(\"/\") // create an array splited by slashes\n .filter(e => e != \"\") // remove empty strings\n .slice(0, 2) // get the first two items of the array\n .join(\"-\"); // create a string joined by dashes\n\n // add the css class to the body\n if (cssclass) {\n document.body.classList.add(\"lesli-\".concat(cssclass));\n }\n });\n });\n\n // · Create a beautiful Vue 3 app\n const application = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createApp)(appbuilder);\n\n // · Provide composables to make them available in all the components\n application.provide('msg', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliMsg)());\n application.provide('url', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUrl)());\n application.provide('http', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliHttp)());\n application.provide('date', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDate)());\n application.provide('date', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDate)());\n application.provide('utils', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliUtils)());\n application.provide('dialog', (0,lesli_vue_composables__WEBPACK_IMPORTED_MODULE_7__.useLesliDialog)());\n\n // · Extending vue\n application.use(pinia);\n application.use(router);\n\n // · Register global layouts\n application.component(\"lesli-application-container\", Lesli_layouts_application_container_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n application.component(\"lesli-application-component\", Lesli_layouts_application_component_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n\n // · Loading Lesli handmade global components\n application.component(\"lesli-icon\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementIcon);\n application.component(\"lesli-empty\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementEmpty);\n application.component(\"lesli-header\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementHeader);\n application.component(\"lesli-select\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementSelect);\n application.component(\"lesli-toolbar\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementToolbar);\n application.component(\"lesli-loading\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementLoading);\n application.component(\"lesli-table\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementTable);\n application.component(\"lesli-collapse\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementCollapse);\n application.component(\"lesli-tab-item\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementTabItem);\n application.component(\"lesli-tabs\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementTabs);\n application.component(\"lesli-panel\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementPanel);\n application.component(\"lesli-button\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementButton);\n application.component(\"lesli-calendar\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementCalendar);\n application.component(\"lesli-input-tag\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementInputTag);\n application.component(\"lesli-file-uploader\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementFileUploader);\n application.component(\"lesli-navigation-list\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementNavigationList);\n application.component(\"lesli-avatar\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementAvatar);\n application.component(\"lesli-toggle\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementToggle);\n application.component(\"lesli-dropdown\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementDropdown);\n application.component(\"lesli-map\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementMap);\n //application.component(\"lesli-gallery\", lesliElementGallery)\n application.component(\"lesli-autocomplete\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementAutocomplete);\n application.component(\"lesli-pagination\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementPagination);\n application.component(\"lesli-form\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementForm);\n application.component(\"lesli-input\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementInput);\n application.component(\"lesli-control\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementControl);\n application.component(\"lesli-card\", lesli_vue_elements__WEBPACK_IMPORTED_MODULE_6__.lesliElementCard);\n\n // · Mount app once DOM is ready\n document.addEventListener(\"DOMContentLoaded\", () => {\n // · mount the app on the main html tag\n application.mount(\"#lesli-application\");\n\n // · development message about vue app loaded\n if (true) {\n lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_1___default().info(`${engine} --> ${lesli.engine_paths[engine]}`, \"vue/application\");\n }\n\n // · console production message\n if (false) {}\n });\n return application;\n});\n\n//# sourceURL=webpack://lesli/./lib/vue/application.js?");
152
152
 
153
153
  /***/ }),
154
154
 
@@ -192,7 +192,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
192
192
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
193
193
 
194
194
  "use strict";
195
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'application-container',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n \n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Your Smart Business Assistant. \n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n \n */\n\n const __returned__ = {};\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-container.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
195
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'application-container',\n props: {\n dashboard: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n const props = __props;\n\n /*\n \n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Your Smart Business Assistant. \n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · defining props\n\n const __returned__ = {\n props\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-container.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
196
196
 
197
197
  /***/ }),
198
198
 
@@ -214,7 +214,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
214
214
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
215
215
 
216
216
  "use strict";
217
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var Lesli_stores_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Lesli/stores/layout */ \"./lib/vue/stores/layout.js\");\n/* harmony import */ var Lesli_stores_search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Lesli/stores/search */ \"./lib/vue/stores/search.js\");\n\n\n// · import stores\n\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'application-header',\n props: {\n showEngines: {\n type: Boolean,\n default: true,\n required: false\n },\n showBell: {\n type: Boolean,\n default: false,\n required: false\n },\n showFocus: {\n type: Boolean,\n default: false,\n required: false\n },\n showTickets: {\n type: Boolean,\n default: false,\n required: false\n },\n showAnnouncements: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n const props = __props;\n\n /*\n \n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Your Smart Business Assistant. \n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n \n */\n\n // · import vue tools\n const storeLayout = (0,Lesli_stores_layout__WEBPACK_IMPORTED_MODULE_1__.useLayout)();\n const storeSearch = (0,Lesli_stores_search__WEBPACK_IMPORTED_MODULE_2__.useSearch)();\n\n // · defining props\n\n // · translations\n const translations = {\n core: {\n shared: I18n.t(\"core.shared\"),\n users: I18n.t('deutscheleibrenten.users')\n }\n };\n\n // · defining variables\n const applicationHeader = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(null);\n const search = {};\n\n // · \n function onEscape(event) {\n if (event.keyCode === 27) {\n storeLayout.toggleEngines();\n document.removeEventListener('keydown', onEscape);\n }\n }\n\n // · \n function toggleEngines() {\n storeLayout.toggleEngines();\n document.addEventListener('keydown', onEscape);\n }\n const __returned__ = {\n storeLayout,\n storeSearch,\n props,\n translations,\n applicationHeader,\n search,\n onEscape,\n toggleEngines,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onUnmounted: vue__WEBPACK_IMPORTED_MODULE_0__.onUnmounted,\n inject: vue__WEBPACK_IMPORTED_MODULE_0__.inject,\n get useLayout() {\n return Lesli_stores_layout__WEBPACK_IMPORTED_MODULE_1__.useLayout;\n },\n get useSearch() {\n return Lesli_stores_search__WEBPACK_IMPORTED_MODULE_2__.useSearch;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-header.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
217
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var Lesli_stores_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Lesli/stores/layout */ \"./lib/vue/stores/layout.js\");\n/* harmony import */ var Lesli_stores_search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Lesli/stores/search */ \"./lib/vue/stores/search.js\");\n\n\n// · import stores\n\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'application-header',\n props: {\n showEngines: {\n type: Boolean,\n default: true,\n required: false\n },\n showBell: {\n type: Boolean,\n default: false,\n required: false\n },\n showFocus: {\n type: Boolean,\n default: false,\n required: false\n },\n showTickets: {\n type: Boolean,\n default: false,\n required: false\n },\n showAnnouncements: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n const props = __props;\n\n /*\n \n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Your Smart Business Assistant. \n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeLayout = (0,Lesli_stores_layout__WEBPACK_IMPORTED_MODULE_1__.useLayout)();\n const storeSearch = (0,Lesli_stores_search__WEBPACK_IMPORTED_MODULE_2__.useSearch)();\n\n // · \n const url = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)(\"url\");\n\n // · defining props\n\n // · translations\n const translations = {\n core: {\n shared: I18n.t(\"core.shared\"),\n users: I18n.t('deutscheleibrenten.users')\n }\n };\n\n // · defining variables\n const applicationHeader = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(null);\n const search = {};\n\n // · \n function onEscape(event) {\n if (event.keyCode === 27) {\n storeLayout.toggleEngines();\n document.removeEventListener('keydown', onEscape);\n }\n }\n\n // · \n function toggleEngines() {\n storeLayout.toggleEngines();\n document.addEventListener('keydown', onEscape);\n }\n const __returned__ = {\n storeLayout,\n storeSearch,\n url,\n props,\n translations,\n applicationHeader,\n search,\n onEscape,\n toggleEngines,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onUnmounted: vue__WEBPACK_IMPORTED_MODULE_0__.onUnmounted,\n inject: vue__WEBPACK_IMPORTED_MODULE_0__.inject,\n get useLayout() {\n return Lesli_stores_layout__WEBPACK_IMPORTED_MODULE_1__.useLayout;\n },\n get useSearch() {\n return Lesli_stores_search__WEBPACK_IMPORTED_MODULE_2__.useSearch;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-header.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
218
218
 
219
219
  /***/ }),
220
220
 
@@ -225,7 +225,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
225
225
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
226
226
 
227
227
  "use strict";
228
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n/* harmony import */ var _components_visitors_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/visitors.vue */ \"../LesliAudit/lib/vue/components/visitors.vue\");\n/* harmony import */ var _components_requests_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/requests.vue */ \"../LesliAudit/lib/vue/components/requests.vue\");\n/* harmony import */ var _components_resources_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/resources.vue */ \"../LesliAudit/lib/vue/components/resources.vue\");\n\n\n// · import stores\n\n\n// · implement stores\n\n\n\n//import trends from \"./trends.vue\";\n\n// · \n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'index',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics)();\n\n // · \n function reload() {\n storeAnalytics.fetch();\n }\n\n // · initializing\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => {\n storeAnalytics.fetchVisits();\n setTimeout(() => storeAnalytics.fetchUsers(), 500);\n setTimeout(() => storeAnalytics.fetchDevices(), 1000);\n setTimeout(() => storeAnalytics.fetchResources(), 1500);\n setTimeout(() => storeAnalytics.fetchControllers(), 2000);\n });\n const __returned__ = {\n storeAnalytics,\n reload,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics;\n },\n visitors: _components_visitors_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requests: _components_requests_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n resources: _components_resources_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
228
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n/* harmony import */ var _components_visitors_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/visitors.vue */ \"../LesliAudit/lib/vue/components/visitors.vue\");\n/* harmony import */ var _components_requests_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/requests.vue */ \"../LesliAudit/lib/vue/components/requests.vue\");\n\n\n// · import stores\n\n\n// · implement stores\n\n\n//import trends from \"./trends.vue\";\n\n// · \n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'index',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics)();\n\n // · \n function reload() {\n storeAnalytics.fetch();\n }\n\n // · initializing\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => {\n storeAnalytics.fetchVisits();\n setTimeout(() => storeAnalytics.fetchUsers(), 600);\n setTimeout(() => storeAnalytics.fetchControllers(), 1200);\n });\n const __returned__ = {\n storeAnalytics,\n reload,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics;\n },\n visitors: _components_visitors_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requests: _components_requests_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
229
229
 
230
230
  /***/ }),
231
231
 
@@ -240,17 +240,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
240
240
 
241
241
  /***/ }),
242
242
 
243
- /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js":
244
- /*!***************************************************************************************************************************************************************************************************************!*\
245
- !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js ***!
246
- \***************************************************************************************************************************************************************************************************************/
247
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
248
-
249
- "use strict";
250
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-vue/components */ \"../../enginesdev/lesli-vue/source/components/index.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n\n\n// · import Lesli components\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'resources',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics)();\n\n // · define variables\n var series = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n var labels = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => storeAnalytics.resources.records, () => {\n labels.value = storeAnalytics.resources.records.map(visit => visit.date);\n series.value = [{\n name: \"Resources\",\n data: storeAnalytics.resources.records.map(visit => visit.resources)\n }];\n });\n const __returned__ = {\n storeAnalytics,\n get series() {\n return series;\n },\n set series(v) {\n series = v;\n },\n get labels() {\n return labels;\n },\n set labels(v) {\n labels = v;\n },\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get lesliChartBar() {\n return lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__.lesliChartBar;\n },\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
251
-
252
- /***/ }),
253
-
254
243
  /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js":
255
244
  /*!**************************************************************************************************************************************************************************************************************!*\
256
245
  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js ***!
@@ -258,7 +247,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
258
247
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
259
248
 
260
249
  "use strict";
261
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-vue/components */ \"../../enginesdev/lesli-vue/source/components/index.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n\n\n// · import Lesli components\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'visitors',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics)();\n\n // · define variables\n var series = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n var labels = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => storeAnalytics.visitors.records, () => {\n labels.value = storeAnalytics.visitors.records.map(visit => visit.date);\n series.value = [{\n name: \"Requests\",\n data: storeAnalytics.visitors.records.map(visit => visit.requests)\n }];\n });\n const __returned__ = {\n storeAnalytics,\n get series() {\n return series;\n },\n set series(v) {\n series = v;\n },\n get labels() {\n return labels;\n },\n set labels(v) {\n labels = v;\n },\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get lesliChartLine() {\n return lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__.lesliChartLine;\n },\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/visitors.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
250
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-vue/components */ \"../../enginesdev/lesli-vue/source/components/index.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n\n\n// · import Lesli components\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'visitors',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics)();\n\n // · define variables\n var series = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n var labels = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => storeAnalytics.visitors.records, () => {\n labels.value = storeAnalytics.visitors.records.map(visit => visit.date);\n series.value = [{\n name: \"Requests\",\n data: storeAnalytics.visitors.records.map(visit => visit.requests)\n }, {\n name: \"Resources\",\n data: storeAnalytics.visitors.records.map(visit => visit.resources)\n }];\n });\n const __returned__ = {\n storeAnalytics,\n get series() {\n return series;\n },\n set series(v) {\n series = v;\n },\n get labels() {\n return labels;\n },\n set labels(v) {\n labels = v;\n },\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get lesliChartLine() {\n return lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__.lesliChartLine;\n },\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/visitors.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
262
251
 
263
252
  /***/ }),
264
253
 
@@ -665,7 +654,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
665
654
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
666
655
 
667
656
  "use strict";
668
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"lesli-application-container container\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"section\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\")]);\n}\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-container.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
657
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"section\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"lesli-application-container container\", {\n 'is-fluid': $props.dashboard\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\")], 2 /* CLASS */);\n}\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-container.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
669
658
 
670
659
  /***/ }),
671
660
 
@@ -687,7 +676,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
687
676
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
688
677
 
689
678
  "use strict";
690
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n ref: \"lesliApplicationHeader\",\n class: \"lesli-application-header\"\n};\nconst _hoisted_2 = {\n class: \"lesli-application-header-container container\"\n};\nconst _hoisted_3 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"figure\", {\n class: \"image lesli-brand\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n alt: \"App logo\",\n class: \"is-hidden-touch\",\n src: \"/assets/lesli/brand/app-logo.svg\"\n})], -1 /* HOISTED */);\nconst _hoisted_4 = {\n class: \"lesli-application-header-left\"\n};\nconst _hoisted_5 = {\n class: \"control is-medium has-icons-left has-text-grey\"\n};\nconst _hoisted_6 = {\n class: \"icon is-left has-text-gray\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"material-icons\"\n};\nconst _hoisted_8 = [\"placeholder\"];\nconst _hoisted_9 = {\n class: \"lesli-application-header-right\"\n};\nconst _hoisted_10 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-apps-2-line\"\n}, null, -1 /* HOISTED */);\nconst _hoisted_11 = [_hoisted_10];\nconst _hoisted_12 = {\n key: 0,\n class: \"count\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"count\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"count\"\n};\nconst _hoisted_15 = {\n class: \"dropdown is-right is-hoverable header-user-options\"\n};\nconst _hoisted_16 = {\n class: \"dropdown-trigger\"\n};\nconst _hoisted_17 = {\n class: \"icon has-text-link\"\n};\nconst _hoisted_18 = {\n class: \"dropdown-menu\",\n id: \"dropdown-menu\",\n role: \"menu\"\n};\nconst _hoisted_19 = {\n class: \"dropdown-content\"\n};\nconst _hoisted_20 = {\n href: \"/administration/profile\",\n class: \"dropdown-item\"\n};\nconst _hoisted_21 = {\n class: \"icon-text\"\n};\nconst _hoisted_22 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"icon has-text-grey-dark\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-user-line\"\n})], -1 /* HOISTED */);\nconst _hoisted_23 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"hr\", {\n class: \"dropdown-divider\"\n}, null, -1 /* HOISTED */);\nconst _hoisted_24 = {\n href: \"/logout\",\n class: \"dropdown-item\"\n};\nconst _hoisted_25 = {\n class: \"icon-text\"\n};\nconst _hoisted_26 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"icon has-text-grey-dark\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-logout-box-r-line\"\n})], -1 /* HOISTED */);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_loading = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-loading\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"header\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [_hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_6, [!$setup.storeSearch.loading ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_7, \" search \")) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), $setup.storeSearch.loading ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_loading, {\n key: 1,\n icon: true\n })) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"input\", {\n type: \"email\",\n name: \"global_search\",\n class: \"input is-shadowless\",\n placeholder: $setup.translations.core.shared.search_placeholder || 'Ask to Lesli...',\n onInput: _cache[0] || (_cache[0] = function () {\n return $setup.storeSearch.doSearch && $setup.storeSearch.doSearch(...arguments);\n }),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.storeSearch.text = $event)\n }, null, 40 /* PROPS, HYDRATE_EVENTS */, _hoisted_8), [[vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.storeSearch.text]])])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" engines selector \"), $setup.props.showEngines || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 0,\n class: \"header-indicator\",\n onClick: _cache[2] || (_cache[2] = $event => $setup.toggleEngines())\n }, _hoisted_11)) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Tickets \"), $setup.props.showTickets || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 1,\n class: \"header-indicator\",\n onClick: _cache[3] || (_cache[3] = () => {\n $setup.storeLayout.showTickets = true;\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['ri-ticket-2-line', {\n 'is-active': $setup.storeLayout.header.tickets > 0\n }])\n }, null, 2 /* CLASS */), $setup.storeLayout.header.tickets > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_12, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.storeLayout.header.tickets), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Tasks \"), $setup.props.showFocus || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 2,\n class: \"header-indicator\",\n onClick: _cache[4] || (_cache[4] = () => {\n if ($setup.storeLayout.header.tasks > 0) {\n $setup.storeLayout.showTasks = true;\n }\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['ri-list-check-3', {\n 'is-active': $setup.storeLayout.header.tasks > 0\n }])\n }, null, 2 /* CLASS */), $setup.storeLayout.header.tasks > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_13, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.storeLayout.header.tasks), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Notifications \"), $setup.props.showBell || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 3,\n class: \"header-indicator\",\n onClick: _cache[5] || (_cache[5] = () => {\n if ($setup.storeLayout.header.notifications > 0) {\n $setup.storeLayout.showNotifications = true;\n }\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['ri-notification-3-line', {\n 'is-active': $setup.storeLayout.header.notifications > 0\n }])\n }, null, 2 /* CLASS */), $setup.storeLayout.header.notifications > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_14, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.storeLayout.header.notifications), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Profile options \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-user-smile-line\",\n onClick: _cache[6] || (_cache[6] = $event => $setup.storeLayout.showProfile = true)\n })])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_18, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"a\", _hoisted_20, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_21, [_hoisted_22, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.translations.core.shared.view_text_profile), 1 /* TEXT */)])]), _hoisted_23, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"a\", _hoisted_24, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_25, [_hoisted_26, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.translations.core.shared.view_text_logout), 1 /* TEXT */)])])])])])])])], 512 /* NEED_PATCH */);\n}\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-header.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
679
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n ref: \"lesliApplicationHeader\",\n class: \"lesli-application-header\"\n};\nconst _hoisted_2 = {\n class: \"lesli-application-header-container container\"\n};\nconst _hoisted_3 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"figure\", {\n class: \"image lesli-brand\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n alt: \"App logo\",\n class: \"is-hidden-touch\",\n src: \"/assets/lesli/brand/app-logo.svg\"\n})], -1 /* HOISTED */);\nconst _hoisted_4 = {\n class: \"lesli-application-header-left\"\n};\nconst _hoisted_5 = {\n class: \"control is-medium has-icons-left has-text-grey\"\n};\nconst _hoisted_6 = {\n class: \"icon is-left has-text-gray\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"material-icons\"\n};\nconst _hoisted_8 = [\"placeholder\"];\nconst _hoisted_9 = {\n class: \"lesli-application-header-right\"\n};\nconst _hoisted_10 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-apps-2-line\"\n}, null, -1 /* HOISTED */);\nconst _hoisted_11 = [_hoisted_10];\nconst _hoisted_12 = {\n key: 0,\n class: \"count\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"count\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"count\"\n};\nconst _hoisted_15 = {\n class: \"dropdown is-right is-hoverable header-user-options\"\n};\nconst _hoisted_16 = {\n class: \"dropdown-trigger\"\n};\nconst _hoisted_17 = {\n class: \"icon has-text-link\"\n};\nconst _hoisted_18 = {\n class: \"dropdown-menu\",\n id: \"dropdown-menu\",\n role: \"menu\"\n};\nconst _hoisted_19 = {\n class: \"dropdown-content\"\n};\nconst _hoisted_20 = [\"href\"];\nconst _hoisted_21 = {\n class: \"icon-text\"\n};\nconst _hoisted_22 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"icon has-text-grey-dark\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-user-line\"\n})], -1 /* HOISTED */);\nconst _hoisted_23 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"hr\", {\n class: \"dropdown-divider\"\n}, null, -1 /* HOISTED */);\nconst _hoisted_24 = {\n href: \"/logout\",\n class: \"dropdown-item py-3\"\n};\nconst _hoisted_25 = {\n class: \"icon-text\"\n};\nconst _hoisted_26 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"icon has-text-grey-dark\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-logout-box-r-line\"\n})], -1 /* HOISTED */);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_loading = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-loading\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"header\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [_hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_6, [!$setup.storeSearch.loading ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_7, \" search \")) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), $setup.storeSearch.loading ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_loading, {\n key: 1,\n icon: true\n })) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"input\", {\n type: \"email\",\n name: \"global_search\",\n class: \"input is-shadowless\",\n placeholder: $setup.translations.core.shared.search_placeholder || 'Ask to Lesli...',\n onInput: _cache[0] || (_cache[0] = function () {\n return $setup.storeSearch.doSearch && $setup.storeSearch.doSearch(...arguments);\n }),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.storeSearch.text = $event)\n }, null, 40 /* PROPS, HYDRATE_EVENTS */, _hoisted_8), [[vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.storeSearch.text]])])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" funciona \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" engines selector \"), $setup.props.showEngines || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 0,\n class: \"header-indicator\",\n onClick: _cache[2] || (_cache[2] = $event => $setup.toggleEngines())\n }, _hoisted_11)) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Tickets \"), $setup.props.showTickets || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 1,\n class: \"header-indicator\",\n onClick: _cache[3] || (_cache[3] = () => {\n $setup.storeLayout.showTickets = true;\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['ri-ticket-2-line', {\n 'is-active': $setup.storeLayout.header.tickets > 0\n }])\n }, null, 2 /* CLASS */), $setup.storeLayout.header.tickets > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_12, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.storeLayout.header.tickets), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Tasks \"), $setup.props.showFocus || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 2,\n class: \"header-indicator\",\n onClick: _cache[4] || (_cache[4] = () => {\n if ($setup.storeLayout.header.tasks > 0) {\n $setup.storeLayout.showTasks = true;\n }\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['ri-list-check-3', {\n 'is-active': $setup.storeLayout.header.tasks > 0\n }])\n }, null, 2 /* CLASS */), $setup.storeLayout.header.tasks > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_13, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.storeLayout.header.tasks), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Notifications \"), $setup.props.showBell || true ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"a\", {\n key: 3,\n class: \"header-indicator\",\n onClick: _cache[5] || (_cache[5] = () => {\n if ($setup.storeLayout.header.notifications > 0) {\n $setup.storeLayout.showNotifications = true;\n }\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['ri-notification-3-line', {\n 'is-active': $setup.storeLayout.header.notifications > 0\n }])\n }, null, 2 /* CLASS */), $setup.storeLayout.header.notifications > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_14, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.storeLayout.header.notifications), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])) : 0, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Profile options \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"ri-user-smile-line\",\n onClick: _cache[6] || (_cache[6] = $event => $setup.storeLayout.showProfile = true)\n })])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_18, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"a\", {\n href: $setup.url.admin('profile'),\n class: \"dropdown-item py-3\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_21, [_hoisted_22, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.translations.core.shared.view_text_profile), 1 /* TEXT */)])], 8 /* PROPS */, _hoisted_20), _hoisted_23, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"a\", _hoisted_24, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_25, [_hoisted_26, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.translations.core.shared.view_text_logout), 1 /* TEXT */)])])])])])])])], 512 /* NEED_PATCH */);\n}\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-header.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
691
680
 
692
681
  /***/ }),
693
682
 
@@ -698,7 +687,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
698
687
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
699
688
 
700
689
  "use strict";
701
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_select = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-select\");\n const _component_lesli_header = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-header\");\n const _component_lesli_application_container = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-container\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_container, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_header, {\n title: \"Analytics\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_select, {\n options: [{\n label: 'Today',\n value: 7\n }, {\n label: 'Yesterday',\n value: 7\n }, {\n label: 'This week',\n value: 7\n }, {\n label: 'Last 7 days',\n value: 7\n }, {\n label: 'Last 15 days',\n value: 7\n }, {\n label: 'Last 30 days',\n value: 7\n }, {\n label: 'Last 60 days',\n value: 7\n }, {\n label: 'Last 90 days',\n value: 7\n }, {\n label: 'Last 6 months',\n value: 7\n }, {\n label: 'Last 12 months',\n value: 7\n }, {\n label: 'This year (Jan - Today)',\n value: 7\n }]\n }, null, 8 /* PROPS */, [\"options\"])]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"visitors\"], {\n class: \"mb-5\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"resources\"], {\n class: \"mb-5\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"requests\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
690
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_select = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-select\");\n const _component_lesli_header = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-header\");\n const _component_lesli_application_container = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-container\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_container, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_header, {\n title: \"Analytics\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_select, {\n options: [{\n label: 'Today',\n value: 7\n }, {\n label: 'Yesterday',\n value: 7\n }, {\n label: 'This week',\n value: 7\n }, {\n label: 'Last 7 days',\n value: 7\n }, {\n label: 'Last 15 days',\n value: 7\n }, {\n label: 'Last 30 days',\n value: 7\n }, {\n label: 'Last 60 days',\n value: 7\n }, {\n label: 'Last 90 days',\n value: 7\n }, {\n label: 'Last 6 months',\n value: 7\n }, {\n label: 'Last 12 months',\n value: 7\n }, {\n label: 'This year (Jan - Today)',\n value: 7\n }]\n }, null, 8 /* PROPS */, [\"options\"])]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"visitors\"], {\n class: \"mb-6\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"requests\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
702
691
 
703
692
  /***/ }),
704
693
 
@@ -709,18 +698,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
709
698
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
710
699
 
711
700
  "use strict";
712
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"columns\"\n};\nconst _hoisted_2 = {\n class: \"column\"\n};\nconst _hoisted_3 = {\n class: \"column\"\n};\nconst _hoisted_4 = {\n class: \"column\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_table = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-table\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.users.columns,\n records: $setup.storeAnalytics.users.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.devices.columns,\n records: $setup.storeAnalytics.devices.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.controllers.columns,\n records: $setup.storeAnalytics.controllers.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])])]);\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/requests.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
713
-
714
- /***/ }),
715
-
716
- /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8":
717
- /*!********************************************************************************************************************************************************************************************************************************************************************************!*\
718
- !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8 ***!
719
- \********************************************************************************************************************************************************************************************************************************************************************************/
720
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
721
-
722
- "use strict";
723
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_application_component = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-component\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_component, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"lesliChartBar\"], {\n title: 'Resources',\n series: $setup.series,\n labels: $setup.labels\n }, null, 8 /* PROPS */, [\"series\", \"labels\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
701
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"columns\"\n};\nconst _hoisted_2 = {\n class: \"column\"\n};\nconst _hoisted_3 = {\n class: \"column\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_table = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-table\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.users.columns,\n records: $setup.storeAnalytics.users.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.controllers.columns,\n records: $setup.storeAnalytics.controllers.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])])]);\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/requests.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
724
702
 
725
703
  /***/ }),
726
704
 
@@ -830,7 +808,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
830
808
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
831
809
 
832
810
  "use strict";
833
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"material-icons\"\n};\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n class: \"material-icons\"\n};\nconst _hoisted_4 = {\n key: 1\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_link = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"router-link\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [$setup.props.to ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_router_link, {\n key: 0,\n to: $props.to.toString(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['button', 'is-link', 'is-light', $setup.buttonColor, {\n 'is-outlined': !$props.solid\n }, {\n 'is-loading': $props.loading\n }, {\n 'is-small': $props.small\n }])\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [$props.icon ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['icon', {\n 'is-small': $props.small\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_1, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.icon), 1 /* TEXT */)], 2 /* CLASS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), !$props.iconOnly ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\")])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"to\", \"class\"])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), !$setup.props.to ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"button\", {\n key: 1,\n onClick: _cache[0] || (_cache[0] = $event => $setup.emit('click')),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['button', 'is-link', 'is-light', $setup.buttonColor, {\n 'is-outlined': !$props.solid\n }, {\n 'is-loading': $props.loading\n }, {\n 'is-small': $props.small\n }])\n }, [$props.icon ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['icon', {\n 'is-small': $props.small\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.icon), 1 /* TEXT */)], 2 /* CLASS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), !$props.iconOnly ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\")])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/elements/button/Button.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
811
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"material-icons\"\n};\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n class: \"material-icons\"\n};\nconst _hoisted_4 = {\n key: 1\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_link = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"router-link\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [$setup.props.to ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_router_link, {\n key: 0,\n to: $props.to.toString(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['button', 'is-link', 'is-light', $setup.buttonColor, {\n 'is-outlined': !$props.solid\n }, {\n 'is-loading': $props.loading\n }, {\n 'is-small': $props.small\n }])\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [$props.icon ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['icon', {\n 'is-small': $props.small\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_1, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.icon), 1 /* TEXT */)], 2 /* CLASS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), !$props.iconOnly ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\")])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"to\", \"class\"])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), !$setup.props.to ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"button\", {\n key: 1,\n onClick: _cache[0] || (_cache[0] = $event => $setup.emit('click')),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['button', 'is-link', $setup.buttonColor, {\n 'is-light': !$props.solid\n }, {\n 'is-outlined': !$props.solid\n }, {\n 'is-loading': $props.loading\n }, {\n 'is-small': $props.small\n }])\n }, [$props.icon ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(['icon', {\n 'is-small': $props.small\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.icon), 1 /* TEXT */)], 2 /* CLASS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), !$props.iconOnly ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\")])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/elements/button/Button.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
834
812
 
835
813
  /***/ }),
836
814
 
@@ -1138,7 +1116,27 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Lesl
1138
1116
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1139
1117
 
1140
1118
  "use strict";
1141
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useAnalytics: () => (/* binding */ useAnalytics)\n/* harmony export */ });\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/*\nCopyright (c) 2022, all rights reserved.\n\nAll the information provided by this platform is protected by international laws related to \nindustrial property, intellectual property, copyright and relative international laws. \nAll intellectual or industrial property rights of the code, texts, trade mark, design, \npictures and any other information belongs to the owner of this platform.\n\nWithout the written permission of the owner, any replication, modification,\ntransmission, publication is strictly forbidden.\n\nFor more information read the license file including with this software.\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · \n\n\n// · \nconst useAnalytics = (0,pinia__WEBPACK_IMPORTED_MODULE_0__.defineStore)(\"analytics\", {\n state: () => {\n return {\n users: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'email',\n label: 'User'\n }, {\n field: 'resources',\n label: 'Resources'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n devices: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'device',\n label: 'Device'\n }, {\n field: 'visits',\n label: 'Visits'\n }]\n },\n resources: {\n loading: false,\n pagination: {},\n records: []\n },\n visitors: {\n loading: false,\n pagination: {},\n records: []\n },\n controllers: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'request_controller',\n label: 'Controller'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n trends: {\n loading: false,\n recordsDays: [],\n recordsHours: []\n }\n };\n },\n actions: {\n fetchVisits() {\n this.visitors.loading = true;\n this.http.get(this.url.audit(\"analytics/visitors\")).then(result => {\n this.visitors.records = result.reverse();\n }).finally(() => {\n this.visitors.loading = false;\n });\n },\n fetchResources() {\n this.resources.loading = true;\n this.http.get(this.url.audit(\"analytics/resourcess\")).then(result => {\n this.resources.records = result.reverse();\n }).finally(() => {\n this.resources.loading = false;\n });\n },\n fetchUsers() {\n this.users.loading = true;\n this.http.get(this.url.audit(\"analytics/users\")).then(result => {\n this.users.records = result;\n }).finally(() => {\n this.users.loading = false;\n });\n },\n fetchDevices() {\n this.devices.loading = true;\n this.http.get(this.url.audit(\"analytics/devices\")).then(result => {\n this.devices.records = result;\n }).finally(() => {\n this.devices.loading = false;\n });\n },\n fetchControllers() {\n this.controllers.loading = true;\n this.http.get(this.url.audit(\"analytics/controllers\")).then(result => {\n this.controllers.records = result;\n }).finally(() => {\n this.controllers.loading = false;\n });\n },\n time(period, initalDate, endDate) {\n this.http.get(this.url.audit(\"analytics/trends\").filter({\n groupBy: [period],\n startDate: [initalDate],\n finalDate: [endDate]\n })).then(result => {\n if (period === 'day') {\n this.trends.recordsDays = result;\n } else if (period === 'hour') {\n this.trends.recordsHours = result;\n }\n }).finally(() => {\n this.loading = false;\n });\n }\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/stores/analytics.js?");
1119
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useAnalytics: () => (/* binding */ useAnalytics)\n/* harmony export */ });\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/*\nCopyright (c) 2022, all rights reserved.\n\nAll the information provided by this platform is protected by international laws related to \nindustrial property, intellectual property, copyright and relative international laws. \nAll intellectual or industrial property rights of the code, texts, trade mark, design, \npictures and any other information belongs to the owner of this platform.\n\nWithout the written permission of the owner, any replication, modification,\ntransmission, publication is strictly forbidden.\n\nFor more information read the license file including with this software.\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · \n\n\n// · \nconst useAnalytics = (0,pinia__WEBPACK_IMPORTED_MODULE_0__.defineStore)(\"analytics\", {\n state: () => {\n return {\n users: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'email',\n label: 'User'\n }, {\n field: 'resources',\n label: 'Resources'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n visitors: {\n loading: false,\n pagination: {},\n records: []\n },\n controllers: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'request_controller',\n label: 'Controller'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n trends: {\n loading: false,\n recordsDays: [],\n recordsHours: []\n }\n };\n },\n actions: {\n fetchVisits() {\n this.visitors.loading = true;\n this.http.get(this.url.audit(\"analytics/visitors\")).then(result => {\n this.visitors.records = result.reverse();\n }).finally(() => {\n this.visitors.loading = false;\n });\n },\n fetchUsers() {\n this.users.loading = true;\n this.http.get(this.url.audit(\"analytics/users\")).then(result => {\n this.users.records = result;\n }).finally(() => {\n this.users.loading = false;\n });\n },\n fetchControllers() {\n this.controllers.loading = true;\n this.http.get(this.url.audit(\"analytics/controllers\")).then(result => {\n this.controllers.records = result;\n }).finally(() => {\n this.controllers.loading = false;\n });\n },\n time(period, initalDate, endDate) {\n this.http.get(this.url.audit(\"analytics/trends\").filter({\n groupBy: [period],\n startDate: [initalDate],\n finalDate: [endDate]\n })).then(result => {\n if (period === 'day') {\n this.trends.recordsDays = result;\n } else if (period === 'hour') {\n this.trends.recordsHours = result;\n }\n }).finally(() => {\n this.loading = false;\n });\n }\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/stores/analytics.js?");
1120
+
1121
+ /***/ }),
1122
+
1123
+ /***/ "../../enginesdev/lesli-js/source/debug/browser.js":
1124
+ /*!*********************************************************!*\
1125
+ !*** ../../enginesdev/lesli-js/source/debug/browser.js ***!
1126
+ \*********************************************************/
1127
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1128
+
1129
+ eval("/*\nLesli\n\nCopyright (c) 2020, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.\n\nLesli JS - JavaScript utilities for JavaScript applications\n\nPowered by LesliTech\nBuilding a better future, one line of code at a time.\n\n@contact <hello@lesli.tech>\n@website <https://lesli.tech>\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · Loading node modules\nlet utils = __webpack_require__(/*! ./utils */ \"../../enginesdev/lesli-js/source/debug/utils.js\");\n\n// · \nclass BrowserDebugService {\n build(message, modulo, level) {\n return utils.buildMessage(message, modulo, level);\n }\n\n // · write information message\n log(message) {\n let modulo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n console.log(utils.buildMessage(message, modulo, \"log\"));\n }\n\n // · write information message\n msg(message) {\n let modulo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n console.log(utils.buildMessage(message, modulo, \"msg\"));\n }\n\n // · write informatie message\n info(message) {\n let modulo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n console.info(\"%c\" + utils.buildMessage(message, modulo, \"info\"), utils.stylesForBrowser(\"info\"));\n }\n\n // · write success message\n success(message) {\n let modulo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n console.log(utils.buildMessage(message, modulo, \"msg\"));\n }\n\n // · write warning message\n warn(message) {\n let modulo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n console.warn(\"%c\" + utils.buildMessage(message, modulo, \"warn\"), utils.stylesForBrowser(\"warn\"));\n }\n\n // · write warning message\n error(message) {\n let modulo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n console.error(\"%c\" + utils.buildMessage(message, modulo, \"error\"), utils.stylesForBrowser(\"error\"));\n }\n\n // · write warning message\n fatal(message) {\n let modulo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n console.error(\"%c\" + utils.buildMessage(message, modulo, \"error\"), utils.stylesForBrowser(\"fatal\"));\n }\n message(title, messages) {\n let more_information = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n console.log(\"%c\" + title, \"color:#3689e6;font-size:35px;font-weight:600;line-height:1;\");\n if (typeof messages === \"string\") messages = [messages];\n console.log(\"%c\" + messages.join(\"\\n\"), \"background-color:#ffffff;color:#1a1a1a;font-size:18px;font-weight:400;line-height:1.1;\");\n if (more_information) {\n console.log(\"%c\" + more_information, \"background-color:#ffffff;color:#1a1a1a;font-size:14px;font-weight:400;line-height:2;\");\n }\n }\n lesli_message_warning() {\n let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"LESLI\";\n let support = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"For mor information contact your system administrator\";\n this.message(title, [\"This is a browser feature intended for developers.\", \"For security reasons, DO NOT copy or paste any information, text, or code here.\"], support);\n }\n}\n\n// · \nmodule.exports = new BrowserDebugService();\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-js/source/debug/browser.js?");
1130
+
1131
+ /***/ }),
1132
+
1133
+ /***/ "../../enginesdev/lesli-js/source/debug/utils.js":
1134
+ /*!*******************************************************!*\
1135
+ !*** ../../enginesdev/lesli-js/source/debug/utils.js ***!
1136
+ \*******************************************************/
1137
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1138
+
1139
+ eval("/*\nLesli\n\nCopyright (c) 2021, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.\n\nLesli JS - JavaScript utilities for JavaScript applications\n\nPowered by LesliTech\nBuilding a better future, one line of code at a time.\n\n@contact <hello@lesli.tech>\n@website <https://lesli.tech>\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\nvar dayjs = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n\n// · \nclass Utils {\n // · \n buildDate() {\n return dayjs().format(\"MM/DD HH:mm\").toString();\n }\n\n // · \n buildMessage(message, module, level) {\n // desire output format\n // [2010-01-17 11:43:37] [ERROR] (cheese module) - Cheese is too ripe!\n // [2010-01-17 11:43:37] [FATAL] (cheese module) - Cheese was breeding ground for listeria.\n let newMessage = `[${this.buildDate()}] [${level.toUpperCase()}]`;\n if (module) {\n newMessage += ` (${module})`;\n }\n newMessage = newMessage.concat(\" - \").concat(message);\n return newMessage;\n }\n\n // · \n stylesForBrowser(type) {\n let lineheight = \"1.5;\";\n let fontsize = \"14px;\";\n let padding = \"2px;\";\n let info = \"background-color:#3498db;color:#ffffff;\";\n let warn = \"background-color:#f1c40f;color:#000000;\";\n let error = \"background-color:#e74c3c;color:#ffffff;\";\n let fatal = \"background-color:#c0392b;color:#fff394;\";\n let success = \"background-color:##48c774;color:#000000;\";\n let style = \"\";\n switch (type) {\n case \"info\":\n style = info;\n break;\n case \"warn\":\n style = warn;\n break;\n case \"error\":\n style = error;\n break;\n case \"fatal\":\n style = fatal;\n break;\n case \"success\":\n style = success;\n break;\n }\n style += \"padding:\" + padding;\n style += \"font-size:\" + fontsize;\n style += \"line-height:\" + lineheight;\n return style;\n }\n\n // · \n print_r(data) {\n let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n let isArray = Array.isArray(data);\n let comma = \",\";\n let string = \"\";\n let padding_key = \"\";\n let padding_prop = \"\";\n let newline = \"\\n\";\n for (let i = 0; i < 4 * level; i++) {\n padding_prop += \" \";\n }\n if (level > 1) {\n padding_key = padding_prop.slice(0, padding_prop.length - 4);\n }\n if (typeof data == \"object\" && !Array.isArray(data)) {\n string += padding_key + \"{\" + newline;\n for (let property in data) {\n if (typeof data[property] == \"object\") {\n string += padding_prop + property + \": \" + this.print_r(data[property], level + 1) + comma + newline;\n } else {\n string += padding_prop + property + \": \" + data[property] + comma + newline;\n }\n }\n string += padding_key + \"}\";\n }\n if (typeof data == \"object\" && Array.isArray(data)) {\n string += \"[\" + newline;\n for (let property in data) {\n if (typeof data[property] == \"object\") {\n string += this.print_r(data[property], level + 1) + comma + newline;\n } else {\n string += padding_prop + data[property] + newline;\n }\n }\n string += padding_key + \"]\";\n }\n\n // trying to remove last comma if is the end of object or array\n //string = string.replace(/,\\n/g, \"0\")\n\n return string;\n }\n}\nmodule.exports = new Utils();\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-js/source/debug/utils.js?");
1142
1140
 
1143
1141
  /***/ }),
1144
1142
 
@@ -1182,7 +1180,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1182
1180
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1183
1181
 
1184
1182
  "use strict";
1185
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLesliHttp: () => (/* binding */ useLesliHttp)\n/* harmony export */ });\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"./node_modules/axios/lib/axios.js\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lesli-js/debug/browser */ \"./node_modules/lesli-js/debug/browser.js\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0__);\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.dev\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · \n\n\n\n// · \nfunction useLesliHttp() {\n // Get authentication token from head meta tag\n let meta = document.querySelector('meta[name=\"csrf-token\"]');\n\n // initialize the token variable\n let token = \"\";\n\n // if meta tag was found\n if (meta) {\n token = meta.getAttribute(\"content\");\n }\n\n // create the vue 3 global property\n var axiosClient = axios__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create({\n headers: {\n 'Content-Type': 'application/json;charset=UTF-8',\n 'X-CSRF-Token': token\n }\n });\n\n // request interceptor, here we can modify the request before send it to the server\n axiosClient.interceptors.request.use(function (config) {\n config.url = config.url.toString(\".json\");\n return config;\n }, function (error) {\n return Promise.reject(error);\n });\n\n // response interceptor, here we can modify the response received from the server\n axiosClient.interceptors.response.use(response => {\n return response.data;\n }, error => {\n // Return the action for \"action requested errors\"\n if (error.response.status == 490) {\n // Show a pretty error message in the console on every error\n lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0___default().warn(error.config.url + ' : Action Required', `HTTP/${error.config.method.toUpperCase()}`);\n return Promise.reject({\n code: error.response.status,\n action: error.response.data.action,\n message: error.response.data.message\n });\n }\n let message = \"\";\n\n // check if custom message was sent\n if (error?.response?.data?.message && error?.response?.data?.message != \"\") {\n message = error?.response?.data?.message;\n } else {\n message = `Ajax ${error.config.method} to url ${error.config.url} ${error.message}`;\n }\n\n // return the formated message\n return Promise.reject({\n code: error.response.status,\n message: message,\n details: error?.response?.data?.details || []\n });\n });\n\n // does not work\n axiosClient.postFile = (url, formData) => {\n var headers = {\n 'Content-Type': 'multipart/form-data'\n };\n return axiosClient.post(url, formData, headers);\n };\n return axiosClient;\n}\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/composables/http/http.js?");
1183
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLesliHttp: () => (/* binding */ useLesliHttp)\n/* harmony export */ });\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"./node_modules/axios/lib/axios.js\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lesli-js/debug/browser */ \"../../enginesdev/lesli-js/source/debug/browser.js\");\n/* harmony import */ var lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0__);\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.dev\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · \n\n\n\n// · \nfunction useLesliHttp() {\n // Get authentication token from head meta tag\n let meta = document.querySelector('meta[name=\"csrf-token\"]');\n\n // initialize the token variable\n let token = \"\";\n\n // if meta tag was found\n if (meta) {\n token = meta.getAttribute(\"content\");\n }\n\n // create the vue 3 global property\n var axiosClient = axios__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create({\n headers: {\n 'Content-Type': 'application/json;charset=UTF-8',\n 'X-CSRF-Token': token\n }\n });\n\n // request interceptor, here we can modify the request before send it to the server\n axiosClient.interceptors.request.use(function (config) {\n config.url = config.url.toString(\".json\");\n return config;\n }, function (error) {\n return Promise.reject(error);\n });\n\n // response interceptor, here we can modify the response received from the server\n axiosClient.interceptors.response.use(response => {\n return response.data;\n }, error => {\n // Return the action for \"action requested errors\"\n if (error.response.status == 490) {\n // Show a pretty error message in the console on every error\n lesli_js_debug_browser__WEBPACK_IMPORTED_MODULE_0___default().warn(error.config.url + ' : Action Required', `HTTP/${error.config.method.toUpperCase()}`);\n return Promise.reject({\n code: error.response.status,\n action: error.response.data.action,\n message: error.response.data.message\n });\n }\n let message = \"\";\n\n // check if custom message was sent\n if (error?.response?.data?.message && error?.response?.data?.message != \"\") {\n message = error?.response?.data?.message;\n } else {\n message = `Ajax ${error.config.method} to url ${error.config.url} ${error.message}`;\n }\n\n // return the formated message\n return Promise.reject({\n code: error.response.status,\n message: message,\n details: error?.response?.data?.details || []\n });\n });\n\n // does not work\n axiosClient.postFile = (url, formData) => {\n var headers = {\n 'Content-Type': 'multipart/form-data'\n };\n return axiosClient.post(url, formData, headers);\n };\n return axiosClient;\n}\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/composables/http/http.js?");
1186
1184
 
1187
1185
  /***/ }),
1188
1186
 
@@ -1215,7 +1213,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1215
1213
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1216
1214
 
1217
1215
  "use strict";
1218
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLesliUrl: () => (/* binding */ useLesliUrl)\n/* harmony export */ });\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.dev\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · URL #builder for Lesli\nclass LesliUrl {\n #params = \"\";\n #base_url = \"\";\n #query = {};\n #path = \"\";\n #url = \"\";\n constructor(base_url, path, params) {\n this.#base_url = base_url;\n this.#params = params;\n this.#path = path;\n }\n\n // build a url for resources mounted at root level\n // this happens on builders engines like MW.\n root(path, params) {\n this.#path = \"\";\n\n // process path template if provided\n if (path) this.#path = this.#path.concat(this.#parsePath(path, params));\n return this;\n }\n\n // build a url for a specific engine\n engine(engine, path, params) {\n // manually add a slash due we are not using native JS url builders\n engine = engine.concat(\"/\");\n\n // return url for the root of the engine\n if (!path) return this.root(engine, params);\n\n // include the engine as part of the path\n return this.root(engine.concat(path), params);\n }\n\n // insert order params into query string\n order(column) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"asc\";\n this.#query[\"orderBy\"] = column;\n if (direction) {\n this.#query[\"order\"] = direction;\n }\n return this.#build();\n }\n\n // add standard query param to request paginated data to the server\n paginate(page) {\n let perPage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15;\n this.#query[\"page\"] = page;\n this.#query[\"perPage\"] = perPage;\n return this.#build();\n }\n\n // add standard query param to request search to the server\n search(text) {\n if (!!text) {\n this.#query[\"search\"] = text;\n }\n return this.#build();\n }\n group(text) {\n if (!!text) {\n this.#query[\"group\"] = text;\n }\n return this.#build();\n }\n\n // add standard query params to request filtered data from the server\n filter(filters) {\n let keys = Object.keys(filters);\n if (!this.#query.f) {\n this.#query[\"f\"] = {};\n }\n keys.forEach(key => {\n this.#query.f[key] = filters[key].join(',');\n });\n return this.#build();\n }\n\n // allow to add custom query params\n query(key, value) {\n this.#query[key] = value;\n return this.#build();\n }\n\n // automatically add auth token if exists in the url query string\n tokenUrl() {\n let urlParams = new URLSearchParams(window.location.search);\n this.#query[\"t\"] = urlParams.get(\"t\");\n return this.#build();\n }\n\n // automatically add auth token if exists in the url query string as param\n tokenShared() {\n // get the token from a \"signed\" url with format:\n // /shared/public/:token/help/tickets/new\n // for this kind of \"signed\" url token is always at position 4 of the string\n let url = window.location.pathname.split('/')[3];\n\n // attach the token as opaque token so the public api is able authenticate the request\n this.#query[\"t\"] = url;\n return this.#build();\n }\n\n // convert the url object to string automatically if object as string is needed\n toString() {\n let extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this.#build(extension);\n return this.#url.toString();\n }\n\n // alias for toString() method\n get s() {\n return this.toString();\n }\n\n // add json extension to the url \n json() {\n return this.toString(\".json\");\n }\n\n // add pdf extension to the url \n pdf() {\n return this.toString(\".pdf\");\n }\n\n // perform a redirect action after #build an url\n // be sure to call this method last always\n go() {\n this.#build();\n window.location.href = this.#url.toString();\n }\n\n // parse, join and create a well formated url object\n #build() {\n let extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n // root\n let url = \"/\";\n\n // if path exists for the url\n if (this.#path != \"\") {\n url = url.concat(this.#path);\n }\n\n // normally all the requests are sent to the internal Lesli api\n // so, the requests should include the json suffix\n if (extension) {\n url = url.concat(extension);\n }\n\n // concat query string if available\n url = url.concat(this.#parseQuery(this.#query));\n\n // #build a native URL object\n this.#url = url;\n\n // return this to enable methods chaining pattern\n return this;\n }\n\n // parse a string template into a string path\n // examples:\n // domain.com/user/:id, { id: 1 }\n // domain.com/user/:id, 1\n // result: domain.com/user/1\n // this is good to avoid string interpolation :)\n #parsePath(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // shortcut to get specific resource through id\n if (typeof params == 'string' || typeof params == 'number') {\n params = {\n id: params\n };\n }\n\n // remaining params are useful if we want to work with the params\n // that does not belongs to a any part of the path template\n const remainingParams = {\n ...params\n };\n\n // compile the string template to assign values to the variables\n const renderedPath = path.replace(/:[_A-Za-z][_A-Za-z0-9]*/g, p => {\n let key = p.slice(1);\n delete remainingParams[key];\n return encodeURIComponent(params[key]);\n });\n for (let param in remainingParams) {\n this.#query[param] = remainingParams[param];\n }\n return renderedPath;\n }\n\n // convert a key value object into a standard queryString. This custom implementation\n // supports deep object parsing and array parsing\n // example: { name: {first: \"luis\"}, age: 25 }\n // result: domain.com?name[first]=luis&age=25\n #parseQuery(query) {\n function recursion(query, path) {\n if (Array.isArray(query)) {\n query.forEach(function (element) {\n recursion(element, path + \"[]\");\n });\n return;\n }\n if (query !== null && typeof query === \"object\") {\n Object.keys(query).forEach(function (param) {\n recursion(query[param], path + \"[\" + param + \"]\");\n });\n return;\n }\n data.push(path + \"=\" + query);\n }\n var data = [];\n Object.keys(query).forEach(function (param) {\n recursion(query[param], param);\n });\n if (data.length > 0) {\n return \"?\".concat(data.join(\"&\"));\n }\n return \"\";\n }\n}\nfunction useLesliUrl() {\n const root = \"/\";\n return {\n // · Redirect to specific url\n go() {\n let url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n document.location.href = url;\n },\n // · Get well formated url\n to() {\n let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n if (path) {\n return root.concat(path);\n }\n return root;\n },\n // · Build a url for core requests\n root(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().root(path, params);\n },\n // · Build a url for administration area\n profile(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"administration/profile\", path, params);\n },\n // · Build a url for core administration area\n admin(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"admin\", path, params);\n },\n // · Build a url for CloudAudit engine\n audit(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"audit\", path, params);\n },\n // · Build a url for CloudBabel engine\n babel(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"babel\", path, params);\n },\n // · Build a url for CloudBell engine\n bell(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"bell\", path, params);\n },\n // · Build a url for CloudHelp engine\n help(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"help\", path, params);\n },\n // · Build a url for CloudMailer engine\n mailer(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"mailer\", path, params);\n },\n // · Build a url for CloudTalk engine\n talk(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"talk\", path, params);\n },\n // · Build a url for CloudFocus engine\n focus(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"focus\", path, params);\n },\n // · Build a url for CloudTime engine\n time(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"time\", path, params);\n },\n // · Build a url for CloudDriver engine\n driver(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"driver\", path, params);\n },\n // · Build a url for CloudSocial engine\n social(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"social\", path, params);\n },\n // · Build a url for CloudWord engine\n word(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"word\", path, params);\n },\n // · Build a url for CloudTeam engine\n team(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"team\", path, params);\n },\n // · Build a url for CloudScraper engine\n scraper(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"scraper\", path, params);\n },\n // · Build a url for CloudShared engine\n shared(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"shared\", path, params);\n },\n // · Build a url for CloudAuthority engine\n authority(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"authority\", path, params);\n }\n };\n}\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/composables/url/url.js?");
1216
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLesliUrl: () => (/* binding */ useLesliUrl)\n/* harmony export */ });\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.dev\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · URL #builder for Lesli\nclass LesliUrl {\n #params = \"\";\n #base_url = \"\";\n #query = {};\n #path = \"\";\n #url = \"\";\n constructor(base_url, path, params) {\n this.#base_url = base_url;\n this.#params = params;\n this.#path = path;\n }\n\n // build a url for resources mounted at root level\n // this happens on builders engines like MW.\n root(path, params) {\n this.#path = \"\";\n\n // process path template if provided\n if (path) this.#path = this.#path.concat(this.#parsePath(path, params));\n return this;\n }\n\n // build a url for a specific engine\n engine(engine, path, params) {\n // manually add a slash due we are not using native JS url builders\n engine = engine.concat(\"/\");\n\n // return url for the root of the engine\n if (!path) return this.root(engine, params);\n\n // include the engine as part of the path\n return this.root(engine.concat(path), params);\n }\n\n // insert order params into query string\n order(column) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"asc\";\n this.#query[\"orderBy\"] = column;\n if (direction) {\n this.#query[\"order\"] = direction;\n }\n return this.#build();\n }\n\n // add standard query param to request paginated data to the server\n paginate(page) {\n let perPage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15;\n this.#query[\"page\"] = page;\n this.#query[\"perPage\"] = perPage;\n return this.#build();\n }\n\n // add standard query param to request search to the server\n search(text) {\n if (!!text) {\n this.#query[\"search\"] = text;\n }\n return this.#build();\n }\n group(text) {\n if (!!text) {\n this.#query[\"group\"] = text;\n }\n return this.#build();\n }\n\n // add standard query params to request filtered data from the server\n filter(filters) {\n let keys = Object.keys(filters);\n if (!this.#query.f) {\n this.#query[\"f\"] = {};\n }\n keys.forEach(key => {\n this.#query.f[key] = filters[key].join(',');\n });\n return this.#build();\n }\n\n // allow to add custom query params\n query(key, value) {\n this.#query[key] = value;\n return this.#build();\n }\n\n // automatically add auth token if exists in the url query string\n tokenUrl() {\n let urlParams = new URLSearchParams(window.location.search);\n this.#query[\"t\"] = urlParams.get(\"t\");\n return this.#build();\n }\n\n // automatically add auth token if exists in the url query string as param\n tokenShared() {\n // get the token from a \"signed\" url with format:\n // /shared/public/:token/help/tickets/new\n // for this kind of \"signed\" url token is always at position 4 of the string\n let url = window.location.pathname.split('/')[3];\n\n // attach the token as opaque token so the public api is able authenticate the request\n this.#query[\"t\"] = url;\n return this.#build();\n }\n\n // convert the url object to string automatically if object as string is needed\n toString() {\n let extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this.#build(extension);\n return this.#url.toString();\n }\n\n // alias for toString() method\n get s() {\n return this.toString();\n }\n\n // add json extension to the url \n json() {\n return this.toString(\".json\");\n }\n\n // add pdf extension to the url \n pdf() {\n return this.toString(\".pdf\");\n }\n\n // perform a redirect action after #build an url\n // be sure to call this method last always\n go() {\n this.#build();\n window.location.href = this.#url.toString();\n }\n\n // parse, join and create a well formated url object\n #build() {\n let extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n // root\n let url = \"/\";\n\n // if path exists for the url\n if (this.#path != \"\") {\n url = url.concat(this.#path);\n }\n\n // normally all the requests are sent to the internal Lesli api\n // so, the requests should include the json suffix\n if (extension) {\n url = url.concat(extension);\n }\n\n // concat query string if available\n url = url.concat(this.#parseQuery(this.#query));\n\n // #build a native URL object\n this.#url = url;\n\n // return this to enable methods chaining pattern\n return this;\n }\n\n // parse a string template into a string path\n // examples:\n // domain.com/user/:id, { id: 1 }\n // domain.com/user/:id, 1\n // result: domain.com/user/1\n // this is good to avoid string interpolation :)\n #parsePath(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // shortcut to get specific resource through id\n if (typeof params == 'string' || typeof params == 'number') {\n params = {\n id: params\n };\n }\n\n // remaining params are useful if we want to work with the params\n // that does not belongs to a any part of the path template\n const remainingParams = {\n ...params\n };\n\n // compile the string template to assign values to the variables\n const renderedPath = path.replace(/:[_A-Za-z][_A-Za-z0-9]*/g, p => {\n let key = p.slice(1);\n delete remainingParams[key];\n return encodeURIComponent(params[key]);\n });\n for (let param in remainingParams) {\n this.#query[param] = remainingParams[param];\n }\n return renderedPath;\n }\n\n // convert a key value object into a standard queryString. This custom implementation\n // supports deep object parsing and array parsing\n // example: { name: {first: \"luis\"}, age: 25 }\n // result: domain.com?name[first]=luis&age=25\n #parseQuery(query) {\n function recursion(query, path) {\n if (Array.isArray(query)) {\n query.forEach(function (element) {\n recursion(element, path + \"[]\");\n });\n return;\n }\n if (query !== null && typeof query === \"object\") {\n Object.keys(query).forEach(function (param) {\n recursion(query[param], path + \"[\" + param + \"]\");\n });\n return;\n }\n data.push(path + \"=\" + query);\n }\n var data = [];\n Object.keys(query).forEach(function (param) {\n recursion(query[param], param);\n });\n if (data.length > 0) {\n return \"?\".concat(data.join(\"&\"));\n }\n return \"\";\n }\n}\nfunction useLesliUrl() {\n const root = \"/\";\n return {\n // · Redirect to specific url\n go() {\n let url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n document.location.href = url;\n },\n // · Get well formated url\n to() {\n let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n if (path) {\n return root.concat(path);\n }\n return root;\n },\n // · Build a url for core requests\n root(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().root(path, params);\n },\n // · Build a url for administration area\n lesli(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().root(path, params);\n },\n // · Build a url for core administration area\n admin(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"admin\", path, params);\n },\n // · Build a url for CloudAudit engine\n audit(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"audit\", path, params);\n },\n // · Build a url for CloudBabel engine\n babel(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"babel\", path, params);\n },\n // · Build a url for CloudBell engine\n bell(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"bell\", path, params);\n },\n // · Build a url for CloudHelp engine\n help(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"help\", path, params);\n },\n // · Build a url for CloudMailer engine\n mailer(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"mailer\", path, params);\n },\n // · Build a url for CloudTalk engine\n talk(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"talk\", path, params);\n },\n // · Build a url for CloudFocus engine\n focus(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"focus\", path, params);\n },\n // · Build a url for CloudTime engine\n time(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"time\", path, params);\n },\n // · Build a url for CloudDriver engine\n driver(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"driver\", path, params);\n },\n // · Build a url for CloudSocial engine\n social(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"social\", path, params);\n },\n // · Build a url for CloudWord engine\n word(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"word\", path, params);\n },\n // · Build a url for CloudTeam engine\n team(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"team\", path, params);\n },\n // · Build a url for CloudScraper engine\n scraper(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"scraper\", path, params);\n },\n // · Build a url for CloudShared engine\n shared(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"shared\", path, params);\n },\n // · Build a url for CloudAuthority engine\n authority(path) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LesliUrl().engine(\"authority\", path, params);\n }\n };\n}\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/composables/url/url.js?");
1219
1217
 
1220
1218
  /***/ }),
1221
1219
 
@@ -1337,36 +1335,6 @@ eval("!function(t,i){ true?module.exports=i():0}(this,(function(){\"use strict\"
1337
1335
 
1338
1336
  /***/ }),
1339
1337
 
1340
- /***/ "./node_modules/lesli-js/debug/browser.js":
1341
- /*!************************************************!*\
1342
- !*** ./node_modules/lesli-js/debug/browser.js ***!
1343
- \************************************************/
1344
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1345
-
1346
- eval("/*\nLesli\n\nCopyright (c) 2021, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.\n\nLesli JS - JavaScript utilities for JavaScript applications\n\nPowered by LesliTech\nBuilding a better future, one line of code at a time.\n\n@contact <hello@lesli.tech>\n@website <https://lesli.tech>\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\nmodule.exports = __webpack_require__(/*! ../src/debug/browser */ \"./node_modules/lesli-js/src/debug/browser.js\")\n\n\n//# sourceURL=webpack://lesli/./node_modules/lesli-js/debug/browser.js?");
1347
-
1348
- /***/ }),
1349
-
1350
- /***/ "./node_modules/lesli-js/src/debug/browser.js":
1351
- /*!****************************************************!*\
1352
- !*** ./node_modules/lesli-js/src/debug/browser.js ***!
1353
- \****************************************************/
1354
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1355
-
1356
- eval("/*\nLesli\n\nCopyright (c) 2020, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.\n\nLesli JS - JavaScript utilities for JavaScript applications\n\nPowered by LesliTech\nBuilding a better future, one line of code at a time.\n\n@contact <hello@lesli.tech>\n@website <https://lesli.tech>\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n\n// · Loading node modules\nlet utils = __webpack_require__(/*! ./utils */ \"./node_modules/lesli-js/src/debug/utils.js\")\n\n\n// · \nclass BrowserDebugService {\n\n build(message, modulo, level) {\n return utils.buildMessage(message, modulo, level)\n }\n\n // · write information message\n log(message, modulo = null) {\n console.log(utils.buildMessage(message, modulo, \"log\"))\n }\n\n // · write information message\n msg(message, modulo = null) {\n console.log(utils.buildMessage(message, modulo, \"msg\"))\n }\n\n // · write informatie message\n info(message, modulo = null) {\n console.info(\"%c\"+utils.buildMessage(message, modulo, \"info\"), utils.stylesForBrowser(\"info\"))\n }\n\n // · write success message\n success(message, modulo = null) {\n console.log(utils.buildMessage(message, modulo, \"msg\"))\n }\n\n // · write warning message\n warn(message, modulo = null) {\n console.warn(\"%c\"+utils.buildMessage(message, modulo, \"warn\"), utils.stylesForBrowser(\"warn\"))\n }\n\n // · write warning message\n error(message, modulo = null) {\n console.error(\"%c\"+utils.buildMessage(message, modulo, \"error\"), utils.stylesForBrowser(\"error\"))\n }\n\n // · write warning message\n fatal(message, modulo = null) {\n console.error(\"%c\"+utils.buildMessage(message, modulo, \"error\"), utils.stylesForBrowser(\"fatal\"))\n }\n\n message(title, messages, more_information=null) {\n\n console.log(\"%c\"+title, \"color:#3689e6;font-size:35px;font-weight:600;line-height:1;\")\n\n if (typeof messages === \"string\") messages = [ messages ]\n\n console.log(\"%c\"+messages.join(\"\\n\"), \"background-color:#ffffff;color:#1a1a1a;font-size:18px;font-weight:400;line-height:1.1;\") \n\n if (more_information) {\n console.log(\"%c\"+more_information, \"background-color:#ffffff;color:#1a1a1a;font-size:14px;font-weight:400;line-height:2;\")\n }\n \n }\n\n lesli_message_warning(title=\"LESLI\", support=\"For mor information contact your system administrator\") {\n this.message(title, [\n \"This is a browser feature intended for developers.\",\n \"For security reasons, DO NOT copy or paste any information, text, or code here.\"\n ], support)\n }\n\n}\n\n// · \nmodule.exports = new BrowserDebugService()\n\n\n//# sourceURL=webpack://lesli/./node_modules/lesli-js/src/debug/browser.js?");
1357
-
1358
- /***/ }),
1359
-
1360
- /***/ "./node_modules/lesli-js/src/debug/utils.js":
1361
- /*!**************************************************!*\
1362
- !*** ./node_modules/lesli-js/src/debug/utils.js ***!
1363
- \**************************************************/
1364
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1365
-
1366
- eval("/*\nLesli\n\nCopyright (c) 2021, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.\n\nLesli JS - JavaScript utilities for JavaScript applications\n\nPowered by LesliTech\nBuilding a better future, one line of code at a time.\n\n@contact <hello@lesli.tech>\n@website <https://lesli.tech>\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n\nvar dayjs = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\")\n\n\n// · \nclass Utils {\n\n // · \n buildDate() {\n\n return dayjs().format(\"MM/DD HH:mm\").toString()\n\n }\n\n // · \n buildMessage(message, module, level) {\n\n // desire output format\n // [2010-01-17 11:43:37] [ERROR] (cheese module) - Cheese is too ripe!\n // [2010-01-17 11:43:37] [FATAL] (cheese module) - Cheese was breeding ground for listeria.\n let newMessage = `[${this.buildDate()}] [${level.toUpperCase()}]`\n\n if (module) {\n newMessage += ` (${module})`\n }\n\n newMessage = newMessage.concat(\" - \").concat(message)\n\n return newMessage\n\n }\n\n // · \n stylesForBrowser(type) {\n\n let lineheight=\"1.5;\"\n let fontsize=\"14px;\"\n let padding=\"2px;\"\n\n let info = \"background-color:#3498db;color:#ffffff;\"\n let warn = \"background-color:#f1c40f;color:#000000;\"\n let error = \"background-color:#e74c3c;color:#ffffff;\"\n let fatal = \"background-color:#c0392b;color:#fff394;\"\n let success = \"background-color:##48c774;color:#000000;\"\n\n let style = \"\"\n\n switch (type) {\n case \"info\": style = info; break;\n case \"warn\": style = warn; break;\n case \"error\": style = error; break;\n case \"fatal\": style = fatal; break;\n case \"success\": style = success; break;\n }\n\n style += \"padding:\" + padding\n style += \"font-size:\" + fontsize\n style += \"line-height:\" + lineheight\n\n return style\n\n }\n\n // · \n print_r (data, level = 1) {\n\n let isArray = Array.isArray(data);\n\n let comma = \",\"\n let string = \"\"\n let padding_key = \"\"\n let padding_prop = \"\"\n let newline = \"\\n\"\n\n for(let i=0;i<(4*level);i++) {\n padding_prop += \" \"\n }\n\n if (level > 1) {\n padding_key = padding_prop.slice(0, padding_prop.length - 4)\n }\n\n if (typeof data == \"object\" && !Array.isArray(data)) {\n\n string += padding_key + \"{\" + newline\n\n for(let property in data) {\n\n if (typeof data[property] == \"object\") {\n string += padding_prop + property + \": \" + this.print_r(data[property], level+1) + comma + newline\n } else {\n string += padding_prop + property + \": \" + data[property] + comma + newline\n }\n \n }\n\n string += padding_key + \"}\"\n\n } \n\n if (typeof data == \"object\" && Array.isArray(data)) {\n\n string += \"[\" + newline\n\n for(let property in data) {\n\n if (typeof data[property] == \"object\") {\n string += this.print_r(data[property], level+1) + comma + newline\n } else {\n string += padding_prop + data[property] + newline\n }\n\n }\n\n string += padding_key + \"]\"\n\n }\n\n // trying to remove last comma if is the end of object or array\n //string = string.replace(/,\\n/g, \"0\")\n\n return string\n\n }\n\n}\n\nmodule.exports = new Utils\n\n\n//# sourceURL=webpack://lesli/./node_modules/lesli-js/src/debug/utils.js?");
1367
-
1368
- /***/ }),
1369
-
1370
1338
  /***/ "./node_modules/trix/dist/trix.css":
1371
1339
  /*!*****************************************!*\
1372
1340
  !*** ./node_modules/trix/dist/trix.css ***!
@@ -1554,17 +1522,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1554
1522
 
1555
1523
  /***/ }),
1556
1524
 
1557
- /***/ "../LesliAudit/lib/vue/components/resources.vue":
1558
- /*!******************************************************!*\
1559
- !*** ../LesliAudit/lib/vue/components/resources.vue ***!
1560
- \******************************************************/
1561
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1562
-
1563
- "use strict";
1564
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resources.vue?vue&type=template&id=ca4d0ee8 */ \"../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8\");\n/* harmony import */ var _resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resources.vue?vue&type=script&setup=true&lang=js */ \"../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js\");\n/* harmony import */ var _Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../Lesli/node_modules/vue-loader/dist/exportHelper.js */ \"./node_modules/vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__.render],['__file',\"LesliAudit/lib/vue/components/resources.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?");
1565
-
1566
- /***/ }),
1567
-
1568
1525
  /***/ "../LesliAudit/lib/vue/components/visitors.vue":
1569
1526
  /*!*****************************************************!*\
1570
1527
  !*** ../LesliAudit/lib/vue/components/visitors.vue ***!
@@ -2027,17 +1984,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2027
1984
 
2028
1985
  /***/ }),
2029
1986
 
2030
- /***/ "../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js":
2031
- /*!*****************************************************************************************!*\
2032
- !*** ../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js ***!
2033
- \*****************************************************************************************/
2034
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2035
-
2036
- "use strict";
2037
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./resources.vue?vue&type=script&setup=true&lang=js */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js\");\n \n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?");
2038
-
2039
- /***/ }),
2040
-
2041
1987
  /***/ "../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js":
2042
1988
  /*!****************************************************************************************!*\
2043
1989
  !*** ../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js ***!
@@ -2500,17 +2446,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2500
2446
 
2501
2447
  /***/ }),
2502
2448
 
2503
- /***/ "../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8":
2504
- /*!************************************************************************************!*\
2505
- !*** ../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8 ***!
2506
- \************************************************************************************/
2507
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2508
-
2509
- "use strict";
2510
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./resources.vue?vue&type=template&id=ca4d0ee8 */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8\");\n\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?");
2511
-
2512
- /***/ }),
2513
-
2514
2449
  /***/ "../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae":
2515
2450
  /*!***********************************************************************************!*\
2516
2451
  !*** ../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae ***!