From 841837f541193f140cc7b5407fe5244b5f04c6a5 Mon Sep 17 00:00:00 2001 From: daengdeni Date: Thu, 1 Feb 2024 11:31:06 +0700 Subject: [PATCH] fix logout --- app/Core/Bootstrap/BootstrapDefault.php | 8 - config/settings.php | 58 +++---- package.json | 143 +++++++++--------- .../js/custom/authentication/sign-in/uim.js | 60 ++++++++ .../_keenthemes/src/media/logos/favicon.ico | Bin 18278 -> 0 bytes resources/mix/common/button-ajax.js | 3 +- .../menus/_user-account-menu.blade.php | 2 +- webpack.mix.js | 6 - 8 files changed, 164 insertions(+), 116 deletions(-) create mode 100644 resources/_keenthemes/src/js/custom/authentication/sign-in/uim.js delete mode 100644 resources/_keenthemes/src/media/logos/favicon.ico diff --git a/app/Core/Bootstrap/BootstrapDefault.php b/app/Core/Bootstrap/BootstrapDefault.php index cd3303f..a8dfe65 100644 --- a/app/Core/Bootstrap/BootstrapDefault.php +++ b/app/Core/Bootstrap/BootstrapDefault.php @@ -26,14 +26,6 @@ class BootstrapDefault { # Include global vendors addVendors(['datatables']); - - # Include global javascript files - addJavascriptFile('assets/js/custom/widgets.js'); - addJavascriptFile('assets/js/custom/apps/chat/chat.js'); - addJavascriptFile('assets/js/custom/utilities/modals/upgrade-plan.js'); - addJavascriptFile('assets/js/custom/utilities/modals/create-app.js'); - addJavascriptFile('assets/js/custom/utilities/modals/users-search.js'); - addJavascriptFile('assets/js/custom/utilities/modals/new-target.js'); } public function initDarkSidebarLayout() diff --git a/config/settings.php b/config/settings.php index 83b2daa..bb024c8 100644 --- a/config/settings.php +++ b/config/settings.php @@ -60,28 +60,28 @@ return [ 'KT_THEME_VENDORS' => [ 'datatables' => [ 'css' => [ - 'assets/plugins/custom/datatables/datatables.bundle.css', + 'assets/resources/mix/vendors/datatables/datatables.bundle.css', ], 'js' => [ - 'assets/plugins/custom/datatables/datatables.bundle.js', + 'assets/resources/mix/vendors/datatables/datatables.bundle.js', ], ], 'formrepeater' => [ 'js' => [ - 'assets/plugins/custom/formrepeater/formrepeater.bundle.js', + 'assets/resources/mix/vendors/formrepeater/formrepeater.bundle.js', ], ], 'fullcalendar' => [ 'css' => [ - 'assets/plugins/custom/fullcalendar/fullcalendar.bundle.css', + 'assets/resources/mix/vendors/fullcalendar/fullcalendar.bundle.css', ], 'js' => [ - 'assets/plugins/custom/fullcalendar/fullcalendar.bundle.js', + 'assets/resources/mix/vendors/fullcalendar/fullcalendar.bundle.js', ], ], 'flotcharts' => [ 'js' => [ - 'assets/plugins/custom/flotcharts/flotcharts.bundle.js', + 'assets/resources/mix/vendors/flotcharts/flotcharts.bundle.js', ], ], 'google-jsapi' => [ @@ -91,79 +91,79 @@ return [ ], 'tinymce' => [ 'js' => [ - 'assets/plugins/custom/tinymce/tinymce.bundle.js', + 'assets/resources/mix/vendors/tinymce/tinymce.bundle.js', ], ], 'ckeditor-classic' => [ 'js' => [ - 'assets/plugins/custom/ckeditor/ckeditor-classic.bundle.js', + 'assets/resources/mix/vendors/ckeditor/ckeditor-classic.bundle.js', ], ], 'ckeditor-inline' => [ 'js' => [ - 'assets/plugins/custom/ckeditor/ckeditor-inline.bundle.js', + 'assets/resources/mix/vendors/ckeditor/ckeditor-inline.bundle.js', ], ], 'ckeditor-balloon' => [ 'js' => [ - 'assets/plugins/custom/ckeditor/ckeditor-balloon.bundle.js', + 'assets/resources/mix/vendors/ckeditor/ckeditor-balloon.bundle.js', ], ], 'ckeditor-balloon-block' => [ 'js' => [ - 'assets/plugins/custom/ckeditor/ckeditor-balloon-block.bundle.js', + 'assets/resources/mix/vendors/ckeditor/ckeditor-balloon-block.bundle.js', ], ], 'ckeditor-document' => [ 'js' => [ - 'assets/plugins/custom/ckeditor/ckeditor-document.bundle.js', + 'assets/resources/mix/vendors/ckeditor/ckeditor-document.bundle.js', ], ], 'draggable' => [ 'js' => [ - 'assets/plugins/custom/draggable/draggable.bundle.js', + 'assets/resources/mix/vendors/draggable/draggable.bundle.js', ], ], 'fslightbox' => [ 'js' => [ - 'assets/plugins/custom/fslightbox/fslightbox.bundle.js', + 'assets/resources/mix/vendors/fslightbox/fslightbox.bundle.js', ], ], 'jkanban' => [ 'css' => [ - 'assets/plugins/custom/jkanban/jkanban.bundle.css', + 'assets/resources/mix/vendors/jkanban/jkanban.bundle.css', ], 'js' => [ - 'assets/plugins/custom/jkanban/jkanban.bundle.js', + 'assets/resources/mix/vendors/jkanban/jkanban.bundle.js', ], ], 'typedjs' => [ 'js' => [ - 'assets/plugins/custom/typedjs/typedjs.bundle.js', + 'assets/resources/mix/vendors/typedjs/typedjs.bundle.js', ], ], 'cookiealert' => [ 'css' => [ - 'assets/plugins/custom/cookiealert/cookiealert.bundle.css', + 'assets/resources/mix/vendors/cookiealert/cookiealert.bundle.css', ], 'js' => [ - 'assets/plugins/custom/cookiealert/cookiealert.bundle.js', + 'assets/resources/mix/vendors/cookiealert/cookiealert.bundle.js', ], ], 'cropper' => [ 'css' => [ - 'assets/plugins/custom/cropper/cropper.bundle.css', + 'assets/resources/mix/vendors/cropper/cropper.bundle.css', ], 'js' => [ - 'assets/plugins/custom/cropper/cropper.bundle.js', + 'assets/resources/mix/vendors/cropper/cropper.bundle.js', ], ], 'vis-timeline' => [ 'css' => [ - 'assets/plugins/custom/vis-timeline/vis-timeline.bundle.css', + 'assets/resources/mix/vendors/vis-timeline/vis-timeline.bundle.css', ], 'js' => [ - 'assets/plugins/custom/vis-timeline/vis-timeline.bundle.js', + 'assets/resources/mix/vendors/vis-timeline/vis-timeline.bundle.js', ], ], 'jstree' => [ @@ -176,18 +176,18 @@ return [ ], 'prismjs' => [ 'css' => [ - 'assets/plugins/custom/prismjs/prismjs.bundle.css', + 'assets/resources/mix/vendors/prismjs/prismjs.bundle.css', ], 'js' => [ - 'assets/plugins/custom/prismjs/prismjs.bundle.js', + 'assets/resources/mix/vendors/prismjs/prismjs.bundle.js', ], ], 'leaflet' => [ 'css' => [ - 'assets/plugins/custom/leaflet/leaflet.bundle.css', + 'assets/resources/mix/vendors/leaflet/leaflet.bundle.css', ], 'js' => [ - 'assets/plugins/custom/leaflet/leaflet.bundle.js', + 'assets/resources/mix/vendors/leaflet/leaflet.bundle.js', ], ], 'amcharts' => [ @@ -220,10 +220,10 @@ return [ ], 'bootstrap-select' => [ 'css' => [ - 'assets/plugins/custom/bootstrap-select/bootstrap-select.bundle.css', + 'assets/resources/mix/vendors/bootstrap-select/bootstrap-select.bundle.css', ], 'js' => [ - 'assets/plugins/custom/bootstrap-select/bootstrap-select.bundle.js', + 'assets/resources/mix/vendors/bootstrap-select/bootstrap-select.bundle.js', ], ], 'chained-select' => [ diff --git a/package.json b/package.json index 1c8ab89..5a1141e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "private": true, + "version": "8.2.3", "scripts": { "dev": "npm run development", "development": "mix", @@ -10,105 +11,105 @@ "production": "mix --production" }, "dependencies": { - "@ckeditor/ckeditor5-alignment": "^38.1.0", - "@ckeditor/ckeditor5-build-balloon": "^38.1.0", - "@ckeditor/ckeditor5-build-balloon-block": "^38.1.0", - "@ckeditor/ckeditor5-build-classic": "^38.1.0", - "@ckeditor/ckeditor5-build-decoupled-document": "^38.1.0", - "@ckeditor/ckeditor5-build-inline": "^38.1.0", - "@eonasdan/tempus-dominus": "^6.7.7", - "@fortawesome/fontawesome-free": "^6.4.0", + "@ckeditor/ckeditor5-alignment": "40.2.0", + "@ckeditor/ckeditor5-build-balloon": "40.2.0", + "@ckeditor/ckeditor5-build-balloon-block": "40.2.0", + "@ckeditor/ckeditor5-build-classic": "40.2.0", + "@ckeditor/ckeditor5-build-decoupled-document": "40.2.0", + "@ckeditor/ckeditor5-build-inline": "40.2.0", + "@eonasdan/tempus-dominus": "^6.9.4", + "@fortawesome/fontawesome-free": "^6.5.1", "@popperjs/core": "2.11.8", - "@shopify/draggable": "^1.0.0-beta.12", - "@yaireo/tagify": "^4.17.8", - "acorn": "^8.9.0", - "apexcharts": "3.41.0", + "@shopify/draggable": "^1.1.3", + "@yaireo/tagify": "^4.18.2", + "acorn": "^8.11.3", + "apexcharts": "3.45.1", "autosize": "^6.0.1", - "axios": "^1.4.0", - "bootstrap": "5.3.0", - "bootstrap-cookie-alert": "^1.2.1", + "axios": "^1.6.5", + "bootstrap": "5.3.2", + "bootstrap-cookie-alert": "^1.2.2", "bootstrap-daterangepicker": "^3.1.0", - "bootstrap-icons": "^1.5.0", + "bootstrap-icons": "^1.11.3", "bootstrap-maxlength": "^1.10.1", "bootstrap-multiselectsplitter": "^1.0.4", - "chalk": "^4.1.0", - "chart.js": "^3.6.0", - "clipboard": "^2.0.8", - "countup.js": "^2.0.7", - "cropperjs": "^1.5.12", - "datatables.net": "^1.13.4", - "datatables.net-bs5": "^1.13.4", - "datatables.net-buttons": "^2.3.6", - "datatables.net-buttons-bs5": "^2.3.6", - "datatables.net-colreorder": "^1.6.2", - "datatables.net-colreorder-bs5": "^1.6.2", - "datatables.net-datetime": "^1.4.1", - "datatables.net-fixedcolumns": "^4.2.2", - "datatables.net-fixedcolumns-bs5": "^4.2.2", - "datatables.net-fixedheader": "^3.3.2", - "datatables.net-fixedheader-bs5": "^3.3.2", - "datatables.net-plugins": "^1.13.4", - "datatables.net-responsive": "^2.4.1", - "datatables.net-responsive-bs5": "^2.4.1", - "datatables.net-rowgroup": "^1.3.1", - "datatables.net-rowgroup-bs5": "^1.3.1", - "datatables.net-rowreorder": "^1.3.3", - "datatables.net-rowreorder-bs5": "^1.3.3", - "datatables.net-scroller": "^2.1.1", - "datatables.net-scroller-bs5": "^2.1.1", - "datatables.net-select": "^1.6.2", - "datatables.net-select-bs5": "^1.6.2", - "dropzone": "^5.9.2", + "chalk": "^5.3.0", + "chart.js": "^4.4.1", + "clipboard": "^2.0.11", + "countup.js": "^2.8.0", + "cropperjs": "^1.6.1", + "datatables.net": "^1.13.8", + "datatables.net-bs5": "^1.13.8", + "datatables.net-buttons": "^2.4.2", + "datatables.net-buttons-bs5": "^2.4.2", + "datatables.net-colreorder": "^1.7.0", + "datatables.net-colreorder-bs5": "^1.7.0", + "datatables.net-datetime": "^1.5.0", + "datatables.net-fixedcolumns": "^4.3.0", + "datatables.net-fixedcolumns-bs5": "^4.3.0", + "datatables.net-fixedheader": "^3.4.0", + "datatables.net-fixedheader-bs5": "^3.4.0", + "datatables.net-plugins": "^1.13.6", + "datatables.net-responsive": "^2.5.0", + "datatables.net-responsive-bs5": "^2.5.0", + "datatables.net-rowgroup": "^1.4.1", + "datatables.net-rowgroup-bs5": "^1.4.1", + "datatables.net-rowreorder": "^1.4.1", + "datatables.net-rowreorder-bs5": "^1.4.1", + "datatables.net-scroller": "^2.3.0", + "datatables.net-scroller-bs5": "^2.3.0", + "datatables.net-select": "^1.7.0", + "datatables.net-select-bs5": "^1.7.0", + "dropzone": "^5.9.3", "es6-promise": "^4.2.8", "es6-promise-polyfill": "^1.2.0", - "es6-shim": "^0.35.5", - "esri-leaflet": "^3.0.2", - "esri-leaflet-geocoder": "^3.0.0", - "flatpickr": "^4.6.9", - "flot": "^4.2.2", - "fslightbox": "^3.3.0-2", + "es6-shim": "^0.35.8", + "esri-leaflet": "^3.0.12", + "esri-leaflet-geocoder": "^3.1.4", + "flatpickr": "^4.6.13", + "flot": "^4.2.6", + "fs": "^0.0.1-security", + "fslightbox": "^3.4.1", "fullcalendar": "^5.8.0", - "handlebars": "^4.7.7", - "inputmask": "^5.0.6", + "handlebars": "^4.7.8", + "inputmask": "^5.0.8", "jkanban": "^1.3.1", - "jquery": "3.6.0", - "jquery-chained": "^2.0.0-beta.2", + "jquery": "3.7.1", "jquery.repeater": "^1.2.1", - "jstree": "^3.3.11", - "jszip": "^3.6.0", - "leaflet": "^1.7.1", + "jstree": "^3.3.16", + "jszip": "^3.10.1", + "leaflet": "^1.9.4", "line-awesome": "^1.3.0", "lozad": "^1.16.0", - "moment": "^2.29.1", - "nouislider": "^15.2.0", - "npm": "^7.19.1", - "pdfmake": "^0.2.0", - "prism-themes": "^1.7.0", - "prismjs": "^1.24.1", + "moment": "^2.30.1", + "nouislider": "^15.7.1", + "npm": "^10.3.0", + "pdfmake": "^0.2.9", + "prism-themes": "^1.9.0", + "prismjs": "^1.29.0", "quill": "^1.3.7", "select2": "^4.1.0-rc.0", "smooth-scroll": "^16.1.3", "sweetalert2": "11.4.8", - "tiny-slider": "^2.9.3", + "tiny-slider": "^2.9.4", "tinymce": "^5.8.2", "toastr": "^2.1.4", - "typed.js": "2.0.16", - "vis-timeline": "^7.4.9", + "typed.js": "2.1.0", + "vis-timeline": "^7.7.3", "wnumb": "^1.2.0" }, "devDependencies": { "alpinejs": "^3.7.1", "autoprefixer": "^10.4.2", - "del": "^6.0.0", + "del": "^7.1.0", "laravel-datatables-vite": "^0.5.2", "laravel-mix": "^6.0.39", "laravel-mix-purgecss": "^6.0.0", "lodash": "^4.17.19", - "postcss": "^8.4.5", - "postcss-import": "^14.0.2", + "postcss": "^8.4.33", + "postcss-import": "^16.0.0", "replace-in-file-webpack-plugin": "^1.0.6", - "resolve-url-loader": "^4.0.0", - "rtlcss": "^3.5.0", + "resolve-url-loader": "^5.0.0", + "rtlcss": "^4.1.1", "sass": "1.55.0", "sass-loader": "13.2.0", "webpack-rtl-plugin": "^2.0.0" diff --git a/resources/_keenthemes/src/js/custom/authentication/sign-in/uim.js b/resources/_keenthemes/src/js/custom/authentication/sign-in/uim.js new file mode 100644 index 0000000..1dbfe81 --- /dev/null +++ b/resources/_keenthemes/src/js/custom/authentication/sign-in/uim.js @@ -0,0 +1,60 @@ +"use strict"; +var KTSigninGeneral = function () { + var t, e, r; + return { + init: function () { + t = document.querySelector("#kt_sign_in_form"), e = document.querySelector("#kt_sign_in_submit"), r = FormValidation.formValidation(t, { + fields: { + email: { + validators: { + notEmpty: {message: "User ID is required"} + } + }, password: {validators: {notEmpty: {message: "The password is required"}}} + }, + plugins: { + trigger: new FormValidation.plugins.Trigger, + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: ".fv-row", + eleInvalidClass: "", + eleValidClass: "" + }) + } + }), e.addEventListener("click", (function (i) { + i.preventDefault(), r.validate().then((function (r) { + "Valid" == r ? (e.setAttribute("data-kt-indicator", "on"), e.disabled = !0, axios.post(e.closest("form").getAttribute("action"), new FormData(t)).then((function (e) { + if (e) { + t.reset(); + const e = t.getAttribute("data-kt-redirect-url"); + e && (location.href = e) + } else Swal.fire({ + text: "Sorry, the email or password is incorrect, please try again.", + icon: "error", + buttonsStyling: !1, + confirmButtonText: "Ok, got it!", + customClass: {confirmButton: "btn btn-primary"} + }) + })).catch((function (t) { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: !1, + confirmButtonText: "Ok, got it!", + customClass: {confirmButton: "btn btn-primary"} + }) + })).then((() => { + e.removeAttribute("data-kt-indicator"), e.disabled = !1 + }))) : Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: !1, + confirmButtonText: "Ok, got it!", + customClass: {confirmButton: "btn btn-primary"} + }) + })) + })) + } + } +}(); +KTUtil.onDOMContentLoaded((function () { + KTSigninGeneral.init() +})); diff --git a/resources/_keenthemes/src/media/logos/favicon.ico b/resources/_keenthemes/src/media/logos/favicon.ico deleted file mode 100644 index 94838e57fce785b1ad6b98036978ea7b527c0e29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18278 zcmeHO&x<2f5Uvn$1jQZj2Xh#h9L8~WPkZn%hlLG`ATFbHx+mZw*X!RfNi|62|mS(+UaNYO@No453iu1d?^tq5hxKT5hxKT z5hxKT5wJqwz!}$kZ!&0mlbOjC+|&H$dY-|%w`*&MyIb4()pNFM^?Lmo6Ps;!+-iH% z2gVoP$K$k|(Q3z?oS4jC>pLPG*uJ{q?_Aw!)oagXv9<3#y07_T^jYG) z_i3E>11!zrKp)q4C%r5_Q=dM5)@k!s+kJO)eUVMVU-u=?dw*|S-}fFmdG6Kj87%Ud z|9AxyJ!gXWhuceTCS*t)^krAfqKAb~^6 znXS?oBKDM=lje6;PB0$L<|{9x*`mBAfdS2(#|ZPSU5-%gv0Ytex54kF zIHBe?DQ<9lv9G$!$_d7S)>PdFzZZ#N+$ZQhi`cz@8>XBfEbhGf`WrlNRn9pvLZ5Tx zMdiMT6Kr3G8`B4DPnV{g;Fw6-Q%S7#goVlp_E&}*(-GU#r7dW*3v#(?&u@&s zQa;n%F`;vU$3WZG>k#cp*dEI~oZxuSb7hg7V1H$DaGV=?IYC(HI1tVfv5>?G#zBG` z9dB~N_E_fS1mV!x-Flhrklb%rpCX@jx-f_G~zzpE;Ms3HH5hSC0tzN9Qi$ zM0a=VhG`sd|0l%>#z6vi%EwPDCm07IZVYTVaey@|_J^eJj{5?9jh!ddF_Lr%ZrpJ{ z+T$2EmHIwX!XLyjcAiL@yV@4kJT1>LjUPTUoj>)z>t5YaeG#j_8PpGXeBTk+x4FOl zmG)t|=BVP6(WP@^B);!J}samfUc@{lo+Zy)G$Lf4k^B z!ShX%65QyxzkF|mLyQwLHR(m?i8Ktj-JTl{|2DzlvT-89L4X?__sd=uEQk~89`Z79 zf^m>|&XbiJv2&Hsa~fMtFcz3At_t)>4;z6s^Q;xUJ(`bX|VJju}R2}zoe-Rc5 zoUp>5Ftk}GblfDk(RP3O<{}()PRP`xrz0s&5GE4&%J=^K`63+jT7ytcT8tAM8_13C zY`J>S`0%|nEQ;U+#T5H5B}Ja|q@25SPRP{XWI4e&N^qm&{c)TW4|=UZq7FoB4f`%F z$#xOkNZ3PKuMLnBg0Ya`hMFT{oDis$7s-hT z2V9G6b3}VylhA7oPXi|y2MKQQxl8ASQ2nj2b%HTqY0C{hcf~j%@N9J%oQQA`;6}&! z`cU0N%G9Kb**o#Pbt%J*U%yc8iacK~aPOr0s_Mv%W2=0rJQF9o5;!cA6O0AL1b*K> z|GrQAp1!p`{QimL8Jp*sMYeD*lrs(SINA56PLh4Lmm|&wgkzG;vaLj*M4&{VM4&{V zM4&{VM4(s%X7isT9HwZ!5BJWhvp&#R05>O<89+VMPb-fDh1wN;Bhve@F@&?Q|9SmN z)P4k4j$i_T{XqXXt`A|Q4?UcAJU&y^cPw01E78{=z}``V_T%JpVwzWAADIubFA;2 z(<@>75MT%X*Acd;9pMS}(*UYSN2nBiCDaih#5&RuD%L9qPpF?kvi=yVL)ZxWEHPI9 E1J|z(JOBUy diff --git a/resources/mix/common/button-ajax.js b/resources/mix/common/button-ajax.js index a6bd612..43743f7 100644 --- a/resources/mix/common/button-ajax.js +++ b/resources/mix/common/button-ajax.js @@ -4,6 +4,7 @@ $(document).on('click', '.button-ajax', function (e) { var method = $(this).data('method'); var csrf = $(this).data('csrf'); var reload = $(this).data('reload'); + var redirect = $(this).data('redirect'); axios.request({ url: action, @@ -20,7 +21,7 @@ $(document).on('click', '.button-ajax', function (e) { }) .then(function () { if (reload) { - window.location.reload(); + window.location = redirect; } }); }); diff --git a/resources/views/partials/menus/_user-account-menu.blade.php b/resources/views/partials/menus/_user-account-menu.blade.php index 7dd93ae..322e099 100644 --- a/resources/views/partials/menus/_user-account-menu.blade.php +++ b/resources/views/partials/menus/_user-account-menu.blade.php @@ -45,7 +45,7 @@ diff --git a/webpack.mix.js b/webpack.mix.js index 75b4062..d4230ba 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -4,8 +4,6 @@ const path = require('path'); const ReplaceInFileWebpackPlugin = require('replace-in-file-webpack-plugin'); const rimraf = require('rimraf'); const WebpackRTLPlugin = require('webpack-rtl-plugin'); -const del = require('del'); -const fs = require('fs'); /* |-------------------------------------------------------------------------- @@ -32,9 +30,6 @@ mix.options({ } }); -// Remove existing generated assets from public folder -del.sync(['public/assets/*',]); - // Build 3rd party plugins css/js mix.sass('resources/mix/plugins.scss', `public/assets/plugins/global/plugins.bundle.css`).then(() => { // remove unused preprocessed fonts folder @@ -143,7 +138,6 @@ glob.sync('node_modules/+(@fortawesome|socicon|line-awesome|bootstrap-icons)/**/ (glob.sync('node_modules/jquery-chained/*.+(js)') || []).forEach(file => { mix.copy(file, `public/assets/plugins/custom/jquery-chained/${path.basename(file)}`); }); - // Widgets mix.scripts((glob.sync(`${dir}/js/widgets/**/*.js`) || []), `public/assets/js/widgets.bundle.js`);