@mongoosejs/studio 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/actions/Model/getCollectionInfo.js +49 -0
- package/backend/actions/Model/index.js +1 -0
- package/backend/actions/Model/updateDocument.js +3 -0
- package/backend/actions/Model/updateDocuments.js +3 -0
- package/frontend/public/app.js +954 -524
- package/frontend/public/tw.css +105 -19
- package/frontend/src/api.js +7 -1
- package/frontend/src/array-utils.js +66 -0
- package/frontend/src/chat/chat-message/chat-message.js +7 -0
- package/frontend/src/chat/chat-message-script/chat-message-script.js +21 -0
- package/frontend/src/chat/chat.js +22 -0
- package/frontend/src/clone-document/clone-document.js +14 -5
- package/frontend/src/create-dashboard/create-dashboard.js +8 -0
- package/frontend/src/create-document/create-document.js +14 -5
- package/frontend/src/dashboard/dashboard.js +9 -1
- package/frontend/src/dashboard/edit-dashboard/edit-dashboard.js +8 -0
- package/frontend/src/dashboards/dashboards.js +8 -0
- package/frontend/src/detail-array/detail-array.html +25 -3
- package/frontend/src/detail-array/detail-array.js +22 -6
- package/frontend/src/document/document.js +32 -20
- package/frontend/src/document-details/document-details.html +61 -12
- package/frontend/src/document-details/document-details.js +29 -13
- package/frontend/src/document-details/document-property/document-property.html +41 -3
- package/frontend/src/document-details/document-property/document-property.js +47 -2
- package/frontend/src/edit-array/edit-array.html +5 -2
- package/frontend/src/edit-array/edit-array.js +79 -23
- package/frontend/src/export-query-results/export-query-results.js +8 -1
- package/frontend/src/index.js +2 -1
- package/frontend/src/list-array/list-array.html +1 -1
- package/frontend/src/list-array/list-array.js +0 -2
- package/frontend/src/models/models.html +76 -8
- package/frontend/src/models/models.js +112 -1
- package/frontend/src/update-document/update-document.js +28 -27
- package/package.json +1 -1
- package/frontend/src/edit-array/edit-array.css +0 -3
- package/frontend/src/list-array/list-array.css +0 -8
package/frontend/public/app.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/******/ (() => { // webpackBootstrap
|
|
2
2
|
/******/ var __webpack_modules__ = ({
|
|
3
3
|
|
|
4
|
-
/***/ "./frontend/src sync recursive ^\\.\\/.*$"
|
|
4
|
+
/***/ "./frontend/src sync recursive ^\\.\\/.*$"
|
|
5
5
|
/*!*************************************!*\
|
|
6
6
|
!*** ./frontend/src/ sync ^\.\/.*$ ***!
|
|
7
7
|
\*************************************/
|
|
8
|
-
|
|
8
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
9
9
|
|
|
10
10
|
var map = {
|
|
11
11
|
"./": "./frontend/src/index.js",
|
|
@@ -13,6 +13,8 @@ var map = {
|
|
|
13
13
|
"./api.js": "./frontend/src/api.js",
|
|
14
14
|
"./appendCSS": "./frontend/src/appendCSS.js",
|
|
15
15
|
"./appendCSS.js": "./frontend/src/appendCSS.js",
|
|
16
|
+
"./array-utils": "./frontend/src/array-utils.js",
|
|
17
|
+
"./array-utils.js": "./frontend/src/array-utils.js",
|
|
16
18
|
"./async-button/async-button": "./frontend/src/async-button/async-button.js",
|
|
17
19
|
"./async-button/async-button.html": "./frontend/src/async-button/async-button.html",
|
|
18
20
|
"./async-button/async-button.js": "./frontend/src/async-button/async-button.js",
|
|
@@ -94,7 +96,6 @@ var map = {
|
|
|
94
96
|
"./document/document.html": "./frontend/src/document/document.html",
|
|
95
97
|
"./document/document.js": "./frontend/src/document/document.js",
|
|
96
98
|
"./edit-array/edit-array": "./frontend/src/edit-array/edit-array.js",
|
|
97
|
-
"./edit-array/edit-array.css": "./frontend/src/edit-array/edit-array.css",
|
|
98
99
|
"./edit-array/edit-array.html": "./frontend/src/edit-array/edit-array.html",
|
|
99
100
|
"./edit-array/edit-array.js": "./frontend/src/edit-array/edit-array.js",
|
|
100
101
|
"./edit-boolean/edit-boolean": "./frontend/src/edit-boolean/edit-boolean.js",
|
|
@@ -124,7 +125,6 @@ var map = {
|
|
|
124
125
|
"./index": "./frontend/src/index.js",
|
|
125
126
|
"./index.js": "./frontend/src/index.js",
|
|
126
127
|
"./list-array/list-array": "./frontend/src/list-array/list-array.js",
|
|
127
|
-
"./list-array/list-array.css": "./frontend/src/list-array/list-array.css",
|
|
128
128
|
"./list-array/list-array.html": "./frontend/src/list-array/list-array.html",
|
|
129
129
|
"./list-array/list-array.js": "./frontend/src/list-array/list-array.js",
|
|
130
130
|
"./list-default/list-default": "./frontend/src/list-default/list-default.js",
|
|
@@ -203,13 +203,13 @@ webpackContext.resolve = webpackContextResolve;
|
|
|
203
203
|
module.exports = webpackContext;
|
|
204
204
|
webpackContext.id = "./frontend/src sync recursive ^\\.\\/.*$";
|
|
205
205
|
|
|
206
|
-
/***/ }
|
|
206
|
+
/***/ },
|
|
207
207
|
|
|
208
|
-
/***/ "./frontend/src/api.js"
|
|
208
|
+
/***/ "./frontend/src/api.js"
|
|
209
209
|
/*!*****************************!*\
|
|
210
210
|
!*** ./frontend/src/api.js ***!
|
|
211
211
|
\*****************************/
|
|
212
|
-
|
|
212
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
213
213
|
|
|
214
214
|
"use strict";
|
|
215
215
|
|
|
@@ -235,7 +235,7 @@ client.interceptors.request.use(req => {
|
|
|
235
235
|
client.interceptors.response.use(
|
|
236
236
|
res => res,
|
|
237
237
|
err => {
|
|
238
|
-
if (typeof err
|
|
238
|
+
if (typeof err?.response?.data === 'string') {
|
|
239
239
|
throw new Error(`Error in ${err.config?.method} ${err.config?.url}: ${err.response.data}`);
|
|
240
240
|
}
|
|
241
241
|
throw err;
|
|
@@ -346,6 +346,9 @@ if (window.MONGOOSE_STUDIO_CONFIG.isLambda) {
|
|
|
346
346
|
yield { document: doc };
|
|
347
347
|
}
|
|
348
348
|
},
|
|
349
|
+
getCollectionInfo: function getCollectionInfo(params) {
|
|
350
|
+
return client.post('', { action: 'Model.getCollectionInfo', ...params }).then(res => res.data);
|
|
351
|
+
},
|
|
349
352
|
getIndexes: function getIndexes(params) {
|
|
350
353
|
return client.post('', { action: 'Model.getIndexes', ...params }).then(res => res.data);
|
|
351
354
|
},
|
|
@@ -552,6 +555,9 @@ if (window.MONGOOSE_STUDIO_CONFIG.isLambda) {
|
|
|
552
555
|
}
|
|
553
556
|
}
|
|
554
557
|
},
|
|
558
|
+
getCollectionInfo: function getCollectionInfo(params) {
|
|
559
|
+
return client.post('/Model/getCollectionInfo', params).then(res => res.data);
|
|
560
|
+
},
|
|
555
561
|
getIndexes: function getIndexes(params) {
|
|
556
562
|
return client.post('/Model/getIndexes', params).then(res => res.data);
|
|
557
563
|
},
|
|
@@ -571,13 +577,13 @@ if (window.MONGOOSE_STUDIO_CONFIG.isLambda) {
|
|
|
571
577
|
}
|
|
572
578
|
|
|
573
579
|
|
|
574
|
-
/***/ }
|
|
580
|
+
/***/ },
|
|
575
581
|
|
|
576
|
-
/***/ "./frontend/src/appendCSS.js"
|
|
582
|
+
/***/ "./frontend/src/appendCSS.js"
|
|
577
583
|
/*!***********************************!*\
|
|
578
584
|
!*** ./frontend/src/appendCSS.js ***!
|
|
579
585
|
\***********************************/
|
|
580
|
-
|
|
586
|
+
(module) {
|
|
581
587
|
|
|
582
588
|
"use strict";
|
|
583
589
|
|
|
@@ -592,24 +598,101 @@ module.exports = function appendCSS(css) {
|
|
|
592
598
|
style.appendChild(document.createTextNode(css));
|
|
593
599
|
};
|
|
594
600
|
|
|
595
|
-
/***/ }
|
|
601
|
+
/***/ },
|
|
602
|
+
|
|
603
|
+
/***/ "./frontend/src/array-utils.js"
|
|
604
|
+
/*!*************************************!*\
|
|
605
|
+
!*** ./frontend/src/array-utils.js ***!
|
|
606
|
+
\*************************************/
|
|
607
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
608
|
+
|
|
609
|
+
"use strict";
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
const { inspect } = __webpack_require__(/*! node-inspect-extracted */ "./node_modules/node-inspect-extracted/dist/inspect.js");
|
|
596
613
|
|
|
597
|
-
|
|
614
|
+
/**
|
|
615
|
+
* Format a value for display in array views
|
|
616
|
+
* @param {*} item - The item to format
|
|
617
|
+
* @returns {string} - Formatted string representation
|
|
618
|
+
*/
|
|
619
|
+
function formatValue(item) {
|
|
620
|
+
if (item == null) {
|
|
621
|
+
return 'null';
|
|
622
|
+
}
|
|
623
|
+
if (typeof item === 'object') {
|
|
624
|
+
return inspect(item, { maxArrayLength: 50 });
|
|
625
|
+
}
|
|
626
|
+
return String(item);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Check if an item is a plain object (not array, not null)
|
|
631
|
+
* @param {*} item - The item to check
|
|
632
|
+
* @returns {boolean} - True if item is a plain object
|
|
633
|
+
*/
|
|
634
|
+
function isObjectItem(item) {
|
|
635
|
+
return item != null && typeof item === 'object' && !Array.isArray(item) && item.constructor === Object;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/**
|
|
639
|
+
* Get the keys of an object item
|
|
640
|
+
* @param {*} item - The item to get keys from
|
|
641
|
+
* @returns {string[]} - Array of keys, or empty array if not an object
|
|
642
|
+
*/
|
|
643
|
+
function getItemKeys(item) {
|
|
644
|
+
if (!isObjectItem(item)) {
|
|
645
|
+
return [];
|
|
646
|
+
}
|
|
647
|
+
return Object.keys(item);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Format a specific value from an object item by key
|
|
652
|
+
* @param {*} item - The object item
|
|
653
|
+
* @param {string} key - The key to get the value for
|
|
654
|
+
* @returns {string} - Formatted string representation of the value
|
|
655
|
+
*/
|
|
656
|
+
function formatItemValue(item, key) {
|
|
657
|
+
const value = item[key];
|
|
658
|
+
if (value === null) {
|
|
659
|
+
return 'null';
|
|
660
|
+
}
|
|
661
|
+
if (value === undefined) {
|
|
662
|
+
return 'undefined';
|
|
663
|
+
}
|
|
664
|
+
if (typeof value === 'object') {
|
|
665
|
+
return inspect(value, { maxArrayLength: 50 });
|
|
666
|
+
}
|
|
667
|
+
return String(value);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
module.exports = {
|
|
671
|
+
formatValue,
|
|
672
|
+
isObjectItem,
|
|
673
|
+
getItemKeys,
|
|
674
|
+
formatItemValue
|
|
675
|
+
};
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
/***/ },
|
|
679
|
+
|
|
680
|
+
/***/ "./frontend/src/async-button/async-button.html"
|
|
598
681
|
/*!*****************************************************!*\
|
|
599
682
|
!*** ./frontend/src/async-button/async-button.html ***!
|
|
600
683
|
\*****************************************************/
|
|
601
|
-
|
|
684
|
+
(module) {
|
|
602
685
|
|
|
603
686
|
"use strict";
|
|
604
687
|
module.exports = "<button v-bind=\"attrsToBind\" :disabled=\"isDisabled\" @click=\"handleClick\">\n <div v-if=\"status === 'in_progress'\" style=\"text-align: center\">\n <svg style=\"height: 1em\" class=\"mx-auto\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" opacity=\"0.3\" />\n <path d=\"M12 2a10 10 0 0 1 10 10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 12 12\" to=\"360 12 12\" dur=\"1s\" repeatCount=\"indefinite\" />\n </path>\n </g>\n </svg>\n </div>\n <slot v-if=\"status == 'success' || status == 'init'\"></slot>\n</button>\n";
|
|
605
688
|
|
|
606
|
-
/***/ }
|
|
689
|
+
/***/ },
|
|
607
690
|
|
|
608
|
-
/***/ "./frontend/src/async-button/async-button.js"
|
|
691
|
+
/***/ "./frontend/src/async-button/async-button.js"
|
|
609
692
|
/*!***************************************************!*\
|
|
610
693
|
!*** ./frontend/src/async-button/async-button.js ***!
|
|
611
694
|
\***************************************************/
|
|
612
|
-
|
|
695
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
613
696
|
|
|
614
697
|
"use strict";
|
|
615
698
|
|
|
@@ -662,24 +745,24 @@ module.exports = app => app.component('async-button', {
|
|
|
662
745
|
});
|
|
663
746
|
|
|
664
747
|
|
|
665
|
-
/***/ }
|
|
748
|
+
/***/ },
|
|
666
749
|
|
|
667
|
-
/***/ "./frontend/src/chat/chat-message-script/chat-message-script.html"
|
|
750
|
+
/***/ "./frontend/src/chat/chat-message-script/chat-message-script.html"
|
|
668
751
|
/*!************************************************************************!*\
|
|
669
752
|
!*** ./frontend/src/chat/chat-message-script/chat-message-script.html ***!
|
|
670
753
|
\************************************************************************/
|
|
671
|
-
|
|
754
|
+
(module) {
|
|
672
755
|
|
|
673
756
|
"use strict";
|
|
674
757
|
module.exports = "<div class=\"relative border rounded bg-gray-100 text-black text-sm overflow-hidden\">\n <div class=\"flex border-b pt-[1px] text-xs font-medium bg-gray-200\">\n <button\n class=\"px-3 py-1 border-r border-gray-300 hover:bg-green-300\"\n :class=\"{'bg-gray-300': activeTab === 'code', 'bg-green-300': activeTab === 'code'}\"\n @click=\"activeTab = 'code'\">\n Code\n </button>\n <button\n class=\"px-3 py-1 hover:bg-green-300\"\n :class=\"{'bg-green-300': activeTab === 'output'}\"\n @click=\"activeTab = 'output'\">\n Output\n </button>\n <div class=\"ml-auto mr-1 flex\">\n <button\n v-if=\"activeTab === 'output'\"\n class=\"px-2 py-1 mr-1 text-xs bg-gray-500 text-white border-none rounded cursor-pointer hover:bg-gray-600 transition-colors flex items-center\"\n @click=\"copyOutput\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-3 w-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3\" />\n </svg>\n </button>\n <button\n v-if=\"activeTab === 'output'\"\n class=\"px-2 py-1 mr-1 text-xs bg-blue-500 text-white border-none rounded cursor-pointer hover:bg-blue-600 transition-colors flex items-center\"\n @click=\"openDetailModal\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-3 w-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 1v4m0 0h-4m4 0l-5-5\" />\n </svg>\n </button>\n <button\n v-if=\"activeTab === 'code' && !isEditing\"\n class=\"px-2 py-1 mr-1 text-xs bg-gray-500 text-white border-none rounded cursor-pointer hover:bg-gray-600 transition-colors flex items-center\"\n @click.stop=\"startEditing\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-3 w-3\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM4 13.5V16h2.5l7.086-7.086-2.828-2.828L4 13.5z\" />\n </svg>\n </button>\n <async-button\n v-if=\"!isEditing\"\n class=\"px-2 py-1 text-xs bg-green-500 text-white border-none rounded cursor-pointer hover:bg-green-600 transition-colors disabled:bg-gray-400\"\n @click=\"executeScript\">\n Execute\n </async-button>\n <div class=\"relative ml-1\" ref=\"dropdown\">\n <button\n @click.stop=\"toggleDropdown\"\n class=\"px-1 py-1 text-xs hover:bg-gray-300 rounded flex items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-4 w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 6a2 2 0 110-4 2 2 0 010 4zm0 6a2 2 0 110-4 2 2 0 010 4zm0 6a2 2 0 110-4 2 2 0 010 4z\" />\n </svg>\n </button>\n <div\n v-if=\"showDropdown\"\n class=\"absolute right-0 z-10 mt-1 w-64 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black/5\">\n <button\n class=\"block w-full text-left px-4 py-2 text-xs text-gray-700 hover:bg-gray-100\"\n @click=\"openCreateDashboardModal(); showDropdown = false\">\n Create Dashboard\n </button>\n <button\n v-if=\"canOverwriteDashboard\"\n class=\"block w-full text-left px-4 py-2 text-xs text-gray-700 hover:bg-gray-100\"\n @click=\"openOverwriteDashboardConfirmation(); showDropdown = false\">\n Overwrite Dashboard\n </button>\n <button\n class=\"block w-full text-left px-4 py-2 text-xs text-gray-700 hover:bg-gray-100\"\n @click=\"$emit('copyMessage'); showDropdown = false\">\n Copy Full Message\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"p-3 max-h-[50vh] max-w-[calc(100vw-4rem)] lg:max-w-[calc(100vw-20rem)] overflow-y-auto\" v-show=\"activeTab === 'code'\">\n <div v-if=\"isEditing\" class=\"flex flex-col space-y-2\">\n <div class=\"border border-gray-200\">\n <textarea ref=\"scriptEditor\" class=\"w-full h-[45vh]\" @input=\"handleScriptInput\"></textarea>\n </div>\n <div class=\"flex justify-end gap-2\">\n <button\n class=\"px-2 py-1 text-xs bg-gray-300 text-gray-800 border-none rounded cursor-pointer hover:bg-gray-400 transition-colors\"\n @click.stop=\"cancelEditing\">\n Cancel\n </button>\n <async-button\n class=\"px-2 py-1 text-xs bg-green-500 text-white border-none rounded cursor-pointer hover:bg-green-600 transition-colors disabled:bg-gray-400\"\n @click=\"executeScript\">\n Execute\n </async-button>\n </div>\n </div>\n <pre v-else class=\"whitespace-pre-wrap\"><code v-text=\"script\" ref=\"code\" :class=\"'language-' + language\"></code></pre>\n </div>\n\n <div class=\"p-3 whitespace-pre-wrap max-h-[50vh] overflow-y-auto bg-white border-t max-w-[calc(100vw-4rem)] lg:max-w-[calc(100vw-20rem)] relative\" v-show=\"activeTab === 'output'\">\n <dashboard-chart v-if=\"message.executionResult?.output?.$chart\" :value=\"message.executionResult?.output\" />\n <dashboard-map v-else-if=\"message.executionResult?.output?.$featureCollection\" :value=\"message.executionResult?.output\" />\n <pre v-else>{{ message.executionResult?.output || 'No output' }}</pre>\n\n <div v-if=\"message.executionResult?.logs?.length\" class=\"mt-3 pt-3 border-t border-gray-200\">\n <div class=\"text-xs font-semibold text-gray-600 uppercase tracking-wide\">Console</div>\n <pre class=\"mt-1 bg-gray-100 text-gray-900 p-3 rounded whitespace-pre-wrap overflow-x-auto max-h-[280px]\">{{ message.executionResult.logs }}</pre>\n </div>\n </div>\n\n <modal ref=\"outputModal\" v-if=\"showDetailModal\" containerClass=\"!h-[90vh] !w-[90vw]\">\n <template #body>\n <div class=\"absolute font-mono right-1 top-1 cursor-pointer text-xl\" @click=\"showDetailModal = false;\">×</div>\n <div class=\"h-full overflow-auto\">\n <dashboard-chart v-if=\"message.executionResult?.output?.$chart\" :value=\"message.executionResult?.output\" :responsive=\"true\" />\n <dashboard-map\n v-else-if=\"message.executionResult?.output?.$featureCollection\"\n :value=\"message.executionResult?.output\"\n height=\"80vh\" />\n <pre v-else class=\"whitespace-pre-wrap\">{{ message.executionResult?.output || 'No output' }}</pre>\n </div>\n </template>\n </modal>\n <modal v-if=\"showCreateDashboardModal\">\n <template #body>\n <div class=\"modal-exit\" @click=\"showCreateDashboardModal = false\">×</div>\n <div>\n <div class=\"mt-4 text-gray-900 font-semibold\">Create Dashboard</div>\n <div class=\"mt-4\">\n <label class=\"block text-sm font-medium leading-6 text-gray-900\">Title</label>\n <div class=\"mt-2\">\n <div class=\"w-full flex rounded-md shadow-sm ring-1 ring-inset ring-gray-300 focus-within:ring-2 focus-within:ring-inset focus-within:ring-teal-600\">\n <input type=\"text\" v-model=\"newDashboardTitle\" class=\"outline-none block flex-1 border-0 bg-transparent py-1.5 pl-1 text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm sm:leading-6\" placeholder=\"My Dashboard\">\n </div>\n </div>\n </div>\n <div class=\"my-4\">\n <label class=\"block text-sm font-medium leading-6 text-gray-900\">Code</label>\n <div class=\"border border-gray-200\">\n <textarea class=\"p-2 h-[300px] w-full\" ref=\"dashboardCodeEditor\"></textarea>\n </div>\n </div>\n <async-button\n @click=\"createDashboardFromScript\"\n class=\"rounded-md bg-teal-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-teal-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">\n Submit\n </async-button>\n <div v-if=\"createError\" class=\"rounded-md bg-red-50 p-4 mt-1\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">Error</h3>\n <div class=\"mt-2 text-sm text-red-700\">\n {{createError}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </template>\n </modal>\n <modal v-if=\"showOverwriteDashboardConfirmationModal\">\n <template #body>\n <div class=\"modal-exit\" @click=\"showOverwriteDashboardConfirmationModal = false\">×</div>\n <div>\n <div class=\"mt-4 text-gray-900 font-semibold\">Overwrite Dashboard</div>\n <p class=\"mt-2 text-sm text-gray-700\">\n This will replace the linked dashboard's code with the script below.\n </p>\n <p class=\"mt-1 text-xs text-gray-600 break-all\" v-if=\"targetDashboardId\">\n Dashboard ID: {{ targetDashboardId }}\n </p>\n <div class=\"my-4 border border-gray-200 bg-gray-50 rounded\">\n <pre class=\"p-2 h-[300px] overflow-auto whitespace-pre-wrap text-xs\">{{ overwriteDashboardCode }}</pre>\n </div>\n <div class=\"flex items-center gap-2\">\n <async-button\n @click=\"confirmOverwriteDashboard\"\n class=\"rounded-md bg-teal-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-teal-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">\n Confirm Overwrite\n </async-button>\n <button\n class=\"px-2.5 py-1.5 rounded-md text-sm font-semibold text-gray-700 bg-gray-200 hover:bg-gray-300\"\n @click=\"showOverwriteDashboardConfirmationModal = false\">\n Cancel\n </button>\n </div>\n <div v-if=\"overwriteError\" class=\"rounded-md bg-red-50 p-4 mt-3\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">Error</h3>\n <div class=\"mt-2 text-sm text-red-700\">\n {{overwriteError}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </template>\n </modal>\n</div>\n";
|
|
675
758
|
|
|
676
|
-
/***/ }
|
|
759
|
+
/***/ },
|
|
677
760
|
|
|
678
|
-
/***/ "./frontend/src/chat/chat-message-script/chat-message-script.js"
|
|
761
|
+
/***/ "./frontend/src/chat/chat-message-script/chat-message-script.js"
|
|
679
762
|
/*!**********************************************************************!*\
|
|
680
763
|
!*** ./frontend/src/chat/chat-message-script/chat-message-script.js ***!
|
|
681
764
|
\**********************************************************************/
|
|
682
|
-
|
|
765
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
683
766
|
|
|
684
767
|
"use strict";
|
|
685
768
|
/* global CodeMirror, Prism */
|
|
@@ -740,6 +823,13 @@ module.exports = app => app.component('chat-message-script', {
|
|
|
740
823
|
this.highlightCode();
|
|
741
824
|
}
|
|
742
825
|
this.activeTab = 'output';
|
|
826
|
+
vanillatoasts.create({
|
|
827
|
+
title: 'Script executed successfully!',
|
|
828
|
+
type: 'success',
|
|
829
|
+
timeout: 3000,
|
|
830
|
+
icon: 'images/success.png',
|
|
831
|
+
positionClass: 'bottomRight'
|
|
832
|
+
});
|
|
743
833
|
return chatMessage;
|
|
744
834
|
},
|
|
745
835
|
openDetailModal() {
|
|
@@ -841,6 +931,13 @@ module.exports = app => app.component('chat-message-script', {
|
|
|
841
931
|
throw err;
|
|
842
932
|
});
|
|
843
933
|
this.createError = null;
|
|
934
|
+
vanillatoasts.create({
|
|
935
|
+
title: 'Dashboard created!',
|
|
936
|
+
type: 'success',
|
|
937
|
+
timeout: 3000,
|
|
938
|
+
icon: 'images/success.png',
|
|
939
|
+
positionClass: 'bottomRight'
|
|
940
|
+
});
|
|
844
941
|
this.showCreateDashboardModal = false;
|
|
845
942
|
this.$router.push('/dashboard/' + dashboard._id);
|
|
846
943
|
},
|
|
@@ -867,6 +964,13 @@ module.exports = app => app.component('chat-message-script', {
|
|
|
867
964
|
});
|
|
868
965
|
|
|
869
966
|
this.overwriteError = null;
|
|
967
|
+
vanillatoasts.create({
|
|
968
|
+
title: 'Dashboard updated!',
|
|
969
|
+
type: 'success',
|
|
970
|
+
timeout: 3000,
|
|
971
|
+
icon: 'images/success.png',
|
|
972
|
+
positionClass: 'bottomRight'
|
|
973
|
+
});
|
|
870
974
|
this.showOverwriteDashboardConfirmationModal = false;
|
|
871
975
|
this.$router.push('/dashboard/' + doc._id);
|
|
872
976
|
},
|
|
@@ -926,24 +1030,24 @@ module.exports = app => app.component('chat-message-script', {
|
|
|
926
1030
|
});
|
|
927
1031
|
|
|
928
1032
|
|
|
929
|
-
/***/ }
|
|
1033
|
+
/***/ },
|
|
930
1034
|
|
|
931
|
-
/***/ "./frontend/src/chat/chat-message/chat-message.html"
|
|
1035
|
+
/***/ "./frontend/src/chat/chat-message/chat-message.html"
|
|
932
1036
|
/*!**********************************************************!*\
|
|
933
1037
|
!*** ./frontend/src/chat/chat-message/chat-message.html ***!
|
|
934
1038
|
\**********************************************************/
|
|
935
|
-
|
|
1039
|
+
(module) {
|
|
936
1040
|
|
|
937
1041
|
"use strict";
|
|
938
1042
|
module.exports = "<div class=\"relative flex items-start\" :class=\"{'justify-end': message.role === 'user'}\">\n <div\n class=\"min-w-0 max-w-[calc(100vw-3rem)] lg:max-w-[calc(100vw-15rem)]\"\n :class=\"{'text-right': message.role === 'user'}\">\n\n <div class=\"text-sm text-gray-900 rounded-md inline-block relative\" :class=\"styleForMessage\">\n <div v-for=\"part in contentSplitByScripts\">\n <div v-if=\"part.type === 'text'\" v-html=\"marked(part.content)\">\n </div>\n <div v-else-if=\"part.type === 'code'\">\n <chat-message-script\n :message=\"message\"\n :script=\"part.content\"\n :language=\"part.language\"\n :target-dashboard-id=\"targetDashboardId\"\n @copyMessage=\"copyMessage\"></chat-message-script>\n </div>\n </div>\n </div>\n </div>\n</div>\n";
|
|
939
1043
|
|
|
940
|
-
/***/ }
|
|
1044
|
+
/***/ },
|
|
941
1045
|
|
|
942
|
-
/***/ "./frontend/src/chat/chat-message/chat-message.js"
|
|
1046
|
+
/***/ "./frontend/src/chat/chat-message/chat-message.js"
|
|
943
1047
|
/*!********************************************************!*\
|
|
944
1048
|
!*** ./frontend/src/chat/chat-message/chat-message.js ***!
|
|
945
1049
|
\********************************************************/
|
|
946
|
-
|
|
1050
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
947
1051
|
|
|
948
1052
|
"use strict";
|
|
949
1053
|
|
|
@@ -1010,6 +1114,13 @@ module.exports = app => app.component('chat-message', {
|
|
|
1010
1114
|
});
|
|
1011
1115
|
message.executionResult = chatMessage.executionResult;
|
|
1012
1116
|
console.log(message);
|
|
1117
|
+
vanillatoasts.create({
|
|
1118
|
+
title: 'Script executed successfully!',
|
|
1119
|
+
type: 'success',
|
|
1120
|
+
timeout: 3000,
|
|
1121
|
+
icon: 'images/success.png',
|
|
1122
|
+
positionClass: 'bottomRight'
|
|
1123
|
+
});
|
|
1013
1124
|
},
|
|
1014
1125
|
async copyMessage() {
|
|
1015
1126
|
const parts = this.contentSplitByScripts;
|
|
@@ -1046,24 +1157,24 @@ module.exports = app => app.component('chat-message', {
|
|
|
1046
1157
|
});
|
|
1047
1158
|
|
|
1048
1159
|
|
|
1049
|
-
/***/ }
|
|
1160
|
+
/***/ },
|
|
1050
1161
|
|
|
1051
|
-
/***/ "./frontend/src/chat/chat.html"
|
|
1162
|
+
/***/ "./frontend/src/chat/chat.html"
|
|
1052
1163
|
/*!*************************************!*\
|
|
1053
1164
|
!*** ./frontend/src/chat/chat.html ***!
|
|
1054
1165
|
\*************************************/
|
|
1055
|
-
|
|
1166
|
+
(module) {
|
|
1056
1167
|
|
|
1057
1168
|
"use strict";
|
|
1058
1169
|
module.exports = "<div class=\"flex\" style=\"height: calc(100vh - 55px); height: calc(100dvh - 55px)\">\n <div class=\"fixed top-[65px] cursor-pointer bg-gray-100 rounded-r-md z-10\" @click=\"hideSidebar = false\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"h-5 w-5\" viewBox=\"0 -960 960 960\" class=\"w-5\" fill=\"#5f6368\"><path d=\"M360-120v-720h80v720h-80Zm160-160v-400l200 200-200 200Z\"/></svg>\n </div>\n <button\n class=\"fixed top-[65px] right-4 z-10 p-2 rounded-md shadow bg-white\"\n :class=\"hasWorkspace ? 'text-gray-700 hover:bg-gray-100' : 'text-gray-300 cursor-not-allowed bg-gray-50'\"\n @click=\"toggleShareThread\"\n :disabled=\"!hasWorkspace || !chatThreadId || sharingThread\"\n aria-label=\"Share thread with workspace\"\n title=\"Share thread with workspace\"\n >\n <svg v-if=\"hasWorkspace\" xmlns=\"http://www.w3.org/2000/svg\" class=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><path d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7a2.48 2.48 0 0 0 0-1.39l7.02-4.11a2.5 2.5 0 1 0-.87-1.37L8.04 9.94a2.5 2.5 0 1 0 0 4.12l7.12 4.16a2.5 2.5 0 1 0 .84-1.34l-7.05-4.12c-.04-.02-.08-.05-.11-.07a2.48 2.48 0 0 0 0-1.39c.03-.02.07-.04.11-.07l7.11-4.16c.52.47 1.2.76 1.94.76a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0-1.94.94L7.97 8.43a2.5 2.5 0 1 0 0 7.14l9.09 5.3c.52-.47 1.2-.76 1.94-.76a2.5 2.5 0 1 0 0-5z\"/></svg>\n <svg v-else xmlns=\"http://www.w3.org/2000/svg\" class=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><path d=\"M12 1a5 5 0 00-5 5v3H6a2 2 0 00-2 2v9a2 2 0 002 2h12a2 2 0 002-2v-9a2 2 0 00-2-2h-1V6a5 5 0 00-5-5zm-3 8V6a3 3 0 016 0v3H9zm9 2v9H6v-9h12z\"/></svg>\n </button>\n <!-- Sidebar: Chat Threads -->\n <aside class=\"bg-gray-50 border-r overflow-y-auto overflow-x-hidden h-full transition-all duration-300 ease-in-out z-20 w-0 lg:w-64 fixed lg:relative\" :class=\"hideSidebar === true ? '!w-0' : hideSidebar === false ? '!w-64' : ''\">\n <div class=\"flex items-center border-b border-gray-100 w-64 overflow-x-hidden\">\n <div class=\"p-4 font-bold text-lg\">Chat Threads</div>\n <button\n @click=\"hideSidebar = true\"\n class=\"ml-auto mr-2 p-2 rounded hover:bg-gray-200 focus:outline-none\"\n aria-label=\"Close sidebar\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"h-5 w-5\" viewBox=\"0 -960 960 960\" class=\"w-5\" fill=\"currentColor\"><path d=\"M660-320v-320L500-480l160 160ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm120-80v-560H200v560h120Zm80 0h360v-560H400v560Zm-80 0H200h120Z\"/></svg>\n </button>\n </div>\n <div class=\"p-4 w-64\">\n <async-button\n @click=\"createNewThread\"\n class=\"w-full bg-blue-600 text-white px-4 py-2 rounded hover:bg-blue-700\"\n >\n Create New Thread\n </async-button>\n </div>\n <div v-if=\"status === 'loaded' && chatThreads.length === 0\" class=\"p-4 text-sm text-gray-700\">\n No threads yet\n </div>\n <ul v-if=\"status === 'loaded'\" class=\"w-64\">\n <li\n v-for=\"thread in chatThreads\"\n :key=\"thread._id\"\n @click=\"selectThread(thread._id)\"\n class=\"p-4 hover:bg-gray-200 cursor-pointer w-64\"\n :class=\"{ 'bg-gray-300': thread._id === chatThreadId }\"\n >\n {{ thread.title || 'Untitled Thread' }}\n </li>\n </ul>\n </aside>\n\n <!-- Main Chat Area -->\n <main class=\"flex-1 flex flex-col\">\n <div class=\"flex-1 overflow-y-auto p-6 space-y-4\" ref=\"messagesContainer\">\n <ul role=\"list\" class=\"space-y-4\">\n <div v-if=\"true\">\n <div class=\"flex items-center justify-center py-3 mb-4\">\n <div class=\"bg-gray-300 h-px flex-grow max-w-xs\"></div>\n <p class=\"mx-4 text-sm font-medium text-gray-500\">This is the beginning of the message thread</p>\n <div class=\"bg-gray-300 h-px flex-grow max-w-xs\"></div>\n </div>\n </div>\n <li v-for=\"message in chatMessages\" :key=\"message._id\">\n <chat-message :message=\"message\" :target-dashboard-id=\"currentThread?.dashboardId\"></chat-message>\n </li>\n </ul>\n </div>\n\n\n <!-- Input Area -->\n <div class=\"border-t p-4\">\n <form @submit.prevent=\"sendMessage\" :disabled=\"sendingMessage\" class=\"flex gap-2 items-end justify-end\">\n <textarea\n v-model=\"newMessage\"\n :placeholder=\"sendingMessage ? 'Sending...' : 'Ask something...'\"\n class=\"flex-1 border rounded px-4 py-2 resize-none overflow-y-auto\"\n :disabled=\"sendingMessage\"\n rows=\"1\"\n ref=\"messageInput\"\n @input=\"adjustTextareaHeight\"\n @keydown.enter.exact.prevent=\"handleEnter\"\n ></textarea>\n <button class=\"bg-blue-600 text-white px-4 h-[42px] rounded disabled:bg-gray-600\" :disabled=\"sendingMessage\">\n <svg v-if=\"sendingMessage\" style=\"height: 1em\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" opacity=\"0.3\" />\n <path d=\"M12 2a10 10 0 0 1 10 10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 12 12\" to=\"360 12 12\" dur=\"1s\" repeatCount=\"indefinite\" />\n </path>\n </g>\n </svg>\n <span v-else>Send</span>\n </button>\n </form>\n </div>\n </main>\n</div>\n";
|
|
1059
1170
|
|
|
1060
|
-
/***/ }
|
|
1171
|
+
/***/ },
|
|
1061
1172
|
|
|
1062
|
-
/***/ "./frontend/src/chat/chat.js"
|
|
1173
|
+
/***/ "./frontend/src/chat/chat.js"
|
|
1063
1174
|
/*!***********************************!*\
|
|
1064
1175
|
!*** ./frontend/src/chat/chat.js ***!
|
|
1065
1176
|
\***********************************/
|
|
1066
|
-
|
|
1177
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1067
1178
|
|
|
1068
1179
|
"use strict";
|
|
1069
1180
|
|
|
@@ -1096,6 +1207,13 @@ module.exports = app => app.component('chat', {
|
|
|
1096
1207
|
this.chatThreads.unshift(chatThread);
|
|
1097
1208
|
this.chatThreadId = chatThread._id;
|
|
1098
1209
|
this.chatMessages = [];
|
|
1210
|
+
vanillatoasts.create({
|
|
1211
|
+
title: 'Chat thread created!',
|
|
1212
|
+
type: 'success',
|
|
1213
|
+
timeout: 3000,
|
|
1214
|
+
icon: 'images/success.png',
|
|
1215
|
+
positionClass: 'bottomRight'
|
|
1216
|
+
});
|
|
1099
1217
|
}
|
|
1100
1218
|
|
|
1101
1219
|
this.chatMessages.push({
|
|
@@ -1189,6 +1307,13 @@ module.exports = app => app.component('chat', {
|
|
|
1189
1307
|
},
|
|
1190
1308
|
async createNewThread() {
|
|
1191
1309
|
const { chatThread } = await api.ChatThread.createChatThread();
|
|
1310
|
+
vanillatoasts.create({
|
|
1311
|
+
title: 'Chat thread created!',
|
|
1312
|
+
type: 'success',
|
|
1313
|
+
timeout: 3000,
|
|
1314
|
+
icon: 'images/success.png',
|
|
1315
|
+
positionClass: 'bottomRight'
|
|
1316
|
+
});
|
|
1192
1317
|
this.$router.push('/chat/' + chatThread._id);
|
|
1193
1318
|
},
|
|
1194
1319
|
async toggleShareThread() {
|
|
@@ -1204,6 +1329,14 @@ module.exports = app => app.component('chat', {
|
|
|
1204
1329
|
this.chatThreads.splice(idx, 1, chatThread);
|
|
1205
1330
|
}
|
|
1206
1331
|
|
|
1332
|
+
vanillatoasts.create({
|
|
1333
|
+
title: 'Chat thread shared!',
|
|
1334
|
+
type: 'success',
|
|
1335
|
+
timeout: 3000,
|
|
1336
|
+
icon: 'images/success.png',
|
|
1337
|
+
positionClass: 'bottomRight'
|
|
1338
|
+
});
|
|
1339
|
+
|
|
1207
1340
|
// Copy current URL to clipboard and show a toast
|
|
1208
1341
|
const url = window.location.href;
|
|
1209
1342
|
await navigator.clipboard.writeText(url);
|
|
@@ -1256,40 +1389,41 @@ module.exports = app => app.component('chat', {
|
|
|
1256
1389
|
});
|
|
1257
1390
|
|
|
1258
1391
|
|
|
1259
|
-
/***/ }
|
|
1392
|
+
/***/ },
|
|
1260
1393
|
|
|
1261
|
-
/***/ "./frontend/src/clone-document/clone-document.css"
|
|
1394
|
+
/***/ "./frontend/src/clone-document/clone-document.css"
|
|
1262
1395
|
/*!********************************************************!*\
|
|
1263
1396
|
!*** ./frontend/src/clone-document/clone-document.css ***!
|
|
1264
1397
|
\********************************************************/
|
|
1265
|
-
|
|
1398
|
+
(module) {
|
|
1266
1399
|
|
|
1267
1400
|
"use strict";
|
|
1268
1401
|
module.exports = "";
|
|
1269
1402
|
|
|
1270
|
-
/***/ }
|
|
1403
|
+
/***/ },
|
|
1271
1404
|
|
|
1272
|
-
/***/ "./frontend/src/clone-document/clone-document.html"
|
|
1405
|
+
/***/ "./frontend/src/clone-document/clone-document.html"
|
|
1273
1406
|
/*!*********************************************************!*\
|
|
1274
1407
|
!*** ./frontend/src/clone-document/clone-document.html ***!
|
|
1275
1408
|
\*********************************************************/
|
|
1276
|
-
|
|
1409
|
+
(module) {
|
|
1277
1410
|
|
|
1278
1411
|
"use strict";
|
|
1279
1412
|
module.exports = "<div>\n <div class=\"mb-2\">\n <textarea class=\"border border-gray-200 p-2 h-[300px] w-full\" ref=\"codeEditor\"></textarea>\n </div>\n <button @click=\"cloneDocument()\" class=\"rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">Submit</button>\n <div v-if=\"errors.length > 0\" class=\"rounded-md bg-red-50 p-4 mt-1\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">There were {{errors.length}} errors with your submission</h3>\n <div class=\"mt-2 text-sm text-red-700\">\n <ul role=\"list\" class=\"list-disc space-y-1 pl-5\">\n <li v-for=\"error in errors\">\n {{error}}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n ";
|
|
1280
1413
|
|
|
1281
|
-
/***/ }
|
|
1414
|
+
/***/ },
|
|
1282
1415
|
|
|
1283
|
-
/***/ "./frontend/src/clone-document/clone-document.js"
|
|
1416
|
+
/***/ "./frontend/src/clone-document/clone-document.js"
|
|
1284
1417
|
/*!*******************************************************!*\
|
|
1285
1418
|
!*** ./frontend/src/clone-document/clone-document.js ***!
|
|
1286
1419
|
\*******************************************************/
|
|
1287
|
-
|
|
1420
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1288
1421
|
|
|
1289
1422
|
"use strict";
|
|
1290
1423
|
|
|
1291
1424
|
|
|
1292
1425
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
1426
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
1293
1427
|
|
|
1294
1428
|
const { BSON, EJSON } = __webpack_require__(/*! mongodb/lib/bson */ "./node_modules/mongodb/lib/bson.js");
|
|
1295
1429
|
|
|
@@ -1318,19 +1452,27 @@ module.exports = app => app.component('clone-document', {
|
|
|
1318
1452
|
methods: {
|
|
1319
1453
|
async cloneDocument() {
|
|
1320
1454
|
const data = EJSON.serialize(eval(`(${this.editor.getValue()})`));
|
|
1321
|
-
|
|
1455
|
+
try {
|
|
1456
|
+
const { doc } = await api.Model.createDocument({ model: this.currentModel, data });
|
|
1457
|
+
this.errors.length = 0;
|
|
1458
|
+
vanillatoasts.create({
|
|
1459
|
+
title: 'Document cloned!',
|
|
1460
|
+
type: 'success',
|
|
1461
|
+
timeout: 3000,
|
|
1462
|
+
icon: 'images/success.png',
|
|
1463
|
+
positionClass: 'bottomRight'
|
|
1464
|
+
});
|
|
1465
|
+
this.$emit('close', doc);
|
|
1466
|
+
} catch (err) {
|
|
1322
1467
|
if (err.response?.data?.message) {
|
|
1323
1468
|
console.log(err.response.data);
|
|
1324
1469
|
const message = err.response.data.message.split(': ').slice(1).join(': ');
|
|
1325
1470
|
this.errors = message.split(',').map(error => {
|
|
1326
1471
|
return error.split(': ').slice(1).join(': ').trim();
|
|
1327
1472
|
});
|
|
1328
|
-
throw new Error(err.response?.data?.message);
|
|
1329
1473
|
}
|
|
1330
1474
|
throw err;
|
|
1331
|
-
}
|
|
1332
|
-
this.errors.length = 0;
|
|
1333
|
-
this.$emit('close', doc);
|
|
1475
|
+
}
|
|
1334
1476
|
}
|
|
1335
1477
|
},
|
|
1336
1478
|
mounted: function() {
|
|
@@ -1361,29 +1503,30 @@ module.exports = app => app.component('clone-document', {
|
|
|
1361
1503
|
});
|
|
1362
1504
|
|
|
1363
1505
|
|
|
1364
|
-
/***/ }
|
|
1506
|
+
/***/ },
|
|
1365
1507
|
|
|
1366
|
-
/***/ "./frontend/src/create-dashboard/create-dashboard.html"
|
|
1508
|
+
/***/ "./frontend/src/create-dashboard/create-dashboard.html"
|
|
1367
1509
|
/*!*************************************************************!*\
|
|
1368
1510
|
!*** ./frontend/src/create-dashboard/create-dashboard.html ***!
|
|
1369
1511
|
\*************************************************************/
|
|
1370
|
-
|
|
1512
|
+
(module) {
|
|
1371
1513
|
|
|
1372
1514
|
"use strict";
|
|
1373
1515
|
module.exports = "<div>\n <div class=\"mt-4 text-gray-900 font-semibold\">\n Create New Dashboard\n </div>\n <div class=\"mt-4\">\n <label class=\"block text-sm font-medium leading-6 text-gray-900\">Title</label>\n <div class=\"mt-2\">\n <div class=\"w-full flex rounded-md shadow-sm ring-1 ring-inset ring-gray-300 focus-within:ring-2 focus-within:ring-inset focus-within:ring-teal-600\">\n <input type=\"text\" v-model=\"title\" class=\"outline-none block flex-1 border-0 bg-transparent py-1.5 pl-1 text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm sm:leading-6\" placeholder=\"ACME-123\">\n </div>\n </div>\n </div>\n <div class=\"my-4\">\n <label class=\"block text-sm font-medium leading-6 text-gray-900\">Code</label>\n <div class=\"border border-gray-200\">\n <textarea class=\"p-2 h-[300px] w-full\" ref=\"codeEditor\"></textarea>\n </div>\n </div>\n <async-button\n @click=\"createDashboard()\"\n class=\"rounded-md bg-teal-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-teal-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">\n Submit\n </async-button>\n <div v-if=\"errors.length > 0\" class=\"rounded-md bg-red-50 p-4 mt-1\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">There were {{errors.length}} errors with your submission</h3>\n <div class=\"mt-2 text-sm text-red-700\">\n <ul role=\"list\" class=\"list-disc space-y-1 pl-5\">\n <li v-for=\"error in errors\">\n {{error}}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>";
|
|
1374
1516
|
|
|
1375
|
-
/***/ }
|
|
1517
|
+
/***/ },
|
|
1376
1518
|
|
|
1377
|
-
/***/ "./frontend/src/create-dashboard/create-dashboard.js"
|
|
1519
|
+
/***/ "./frontend/src/create-dashboard/create-dashboard.js"
|
|
1378
1520
|
/*!***********************************************************!*\
|
|
1379
1521
|
!*** ./frontend/src/create-dashboard/create-dashboard.js ***!
|
|
1380
1522
|
\***********************************************************/
|
|
1381
|
-
|
|
1523
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1382
1524
|
|
|
1383
1525
|
"use strict";
|
|
1384
1526
|
|
|
1385
1527
|
|
|
1386
1528
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
1529
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
1387
1530
|
|
|
1388
1531
|
const template = __webpack_require__(/*! ./create-dashboard.html */ "./frontend/src/create-dashboard/create-dashboard.html");
|
|
1389
1532
|
|
|
@@ -1411,6 +1554,13 @@ module.exports = app => app.component('create-dashboard', {
|
|
|
1411
1554
|
throw err;
|
|
1412
1555
|
});
|
|
1413
1556
|
this.errors.length = 0;
|
|
1557
|
+
vanillatoasts.create({
|
|
1558
|
+
title: 'Dashboard created!',
|
|
1559
|
+
type: 'success',
|
|
1560
|
+
timeout: 3000,
|
|
1561
|
+
icon: 'images/success.png',
|
|
1562
|
+
positionClass: 'bottomRight'
|
|
1563
|
+
});
|
|
1414
1564
|
this.$emit('close', dashboard);
|
|
1415
1565
|
}
|
|
1416
1566
|
},
|
|
@@ -1422,40 +1572,41 @@ module.exports = app => app.component('create-dashboard', {
|
|
|
1422
1572
|
}
|
|
1423
1573
|
});
|
|
1424
1574
|
|
|
1425
|
-
/***/ }
|
|
1575
|
+
/***/ },
|
|
1426
1576
|
|
|
1427
|
-
/***/ "./frontend/src/create-document/create-document.css"
|
|
1577
|
+
/***/ "./frontend/src/create-document/create-document.css"
|
|
1428
1578
|
/*!**********************************************************!*\
|
|
1429
1579
|
!*** ./frontend/src/create-document/create-document.css ***!
|
|
1430
1580
|
\**********************************************************/
|
|
1431
|
-
|
|
1581
|
+
(module) {
|
|
1432
1582
|
|
|
1433
1583
|
"use strict";
|
|
1434
1584
|
module.exports = "";
|
|
1435
1585
|
|
|
1436
|
-
/***/ }
|
|
1586
|
+
/***/ },
|
|
1437
1587
|
|
|
1438
|
-
/***/ "./frontend/src/create-document/create-document.html"
|
|
1588
|
+
/***/ "./frontend/src/create-document/create-document.html"
|
|
1439
1589
|
/*!***********************************************************!*\
|
|
1440
1590
|
!*** ./frontend/src/create-document/create-document.html ***!
|
|
1441
1591
|
\***********************************************************/
|
|
1442
|
-
|
|
1592
|
+
(module) {
|
|
1443
1593
|
|
|
1444
1594
|
"use strict";
|
|
1445
1595
|
module.exports = "<div>\n <div class=\"mb-2\">\n <textarea class=\"border border-gray-200 p-2 h-[300px] w-full\" ref=\"codeEditor\"></textarea>\n </div>\n <button @click=\"createDocument()\" class=\"rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">Submit</button>\n <div v-if=\"errors.length > 0\" class=\"rounded-md bg-red-50 p-4 mt-1\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">There were {{errors.length}} errors with your submission</h3>\n <div class=\"mt-2 text-sm text-red-700\">\n <ul role=\"list\" class=\"list-disc space-y-1 pl-5\">\n <li v-for=\"error in errors\">\n {{error}}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n";
|
|
1446
1596
|
|
|
1447
|
-
/***/ }
|
|
1597
|
+
/***/ },
|
|
1448
1598
|
|
|
1449
|
-
/***/ "./frontend/src/create-document/create-document.js"
|
|
1599
|
+
/***/ "./frontend/src/create-document/create-document.js"
|
|
1450
1600
|
/*!*********************************************************!*\
|
|
1451
1601
|
!*** ./frontend/src/create-document/create-document.js ***!
|
|
1452
1602
|
\*********************************************************/
|
|
1453
|
-
|
|
1603
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1454
1604
|
|
|
1455
1605
|
"use strict";
|
|
1456
1606
|
|
|
1457
1607
|
|
|
1458
1608
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
1609
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
1459
1610
|
|
|
1460
1611
|
const { BSON, EJSON } = __webpack_require__(/*! mongodb/lib/bson */ "./node_modules/mongodb/lib/bson.js");
|
|
1461
1612
|
|
|
@@ -1484,19 +1635,27 @@ module.exports = app => app.component('create-document', {
|
|
|
1484
1635
|
methods: {
|
|
1485
1636
|
async createDocument() {
|
|
1486
1637
|
const data = EJSON.serialize(eval(`(${this.editor.getValue()})`));
|
|
1487
|
-
|
|
1638
|
+
try {
|
|
1639
|
+
const { doc } = await api.Model.createDocument({ model: this.currentModel, data });
|
|
1640
|
+
this.errors.length = 0;
|
|
1641
|
+
vanillatoasts.create({
|
|
1642
|
+
title: 'Document created!',
|
|
1643
|
+
type: 'success',
|
|
1644
|
+
timeout: 3000,
|
|
1645
|
+
icon: 'images/success.png',
|
|
1646
|
+
positionClass: 'bottomRight'
|
|
1647
|
+
});
|
|
1648
|
+
this.$emit('close', doc);
|
|
1649
|
+
} catch (err) {
|
|
1488
1650
|
if (err.response?.data?.message) {
|
|
1489
1651
|
console.log(err.response.data);
|
|
1490
1652
|
const message = err.response.data.message.split(': ').slice(1).join(': ');
|
|
1491
1653
|
this.errors = message.split(',').map(error => {
|
|
1492
1654
|
return error.split(': ').slice(1).join(': ').trim();
|
|
1493
1655
|
});
|
|
1494
|
-
throw new Error(err.response?.data?.message);
|
|
1495
1656
|
}
|
|
1496
1657
|
throw err;
|
|
1497
|
-
}
|
|
1498
|
-
this.errors.length = 0;
|
|
1499
|
-
this.$emit('close', doc);
|
|
1658
|
+
}
|
|
1500
1659
|
}
|
|
1501
1660
|
},
|
|
1502
1661
|
mounted: function() {
|
|
@@ -1517,24 +1676,24 @@ module.exports = app => app.component('create-document', {
|
|
|
1517
1676
|
});
|
|
1518
1677
|
|
|
1519
1678
|
|
|
1520
|
-
/***/ }
|
|
1679
|
+
/***/ },
|
|
1521
1680
|
|
|
1522
|
-
/***/ "./frontend/src/dashboard-result/dashboard-chart/dashboard-chart.html"
|
|
1681
|
+
/***/ "./frontend/src/dashboard-result/dashboard-chart/dashboard-chart.html"
|
|
1523
1682
|
/*!****************************************************************************!*\
|
|
1524
1683
|
!*** ./frontend/src/dashboard-result/dashboard-chart/dashboard-chart.html ***!
|
|
1525
1684
|
\****************************************************************************/
|
|
1526
|
-
|
|
1685
|
+
(module) {
|
|
1527
1686
|
|
|
1528
1687
|
"use strict";
|
|
1529
1688
|
module.exports = "<div :class=\"responsive ? 'h-full' : ''\">\n <div v-if=\"header && !fullscreen\" class=\"border-b border-gray-100 px-2 pb-2 flex items-center gap-1\">\n <div class=\"text-xl font-bold\">{{header}}</div>\n <button\n class=\"ml-auto px-2 py-1 text-xs bg-ultramarine-600 text-white border-none rounded cursor-pointer hover:bg-ultramarine-500 transition-colors\"\n @click=\"exportPNG\"\n title=\"Export PNG\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"height: 1.5em;\" viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M280-280h400v-80H280v80Zm200-120 160-160-56-56-64 62v-166h-80v166l-64-62-56 56 160 160Zm0 320q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>\n </button>\n <button\n class=\"px-2 py-1 text-xs bg-ultramarine-600 text-white border-none rounded cursor-pointer hover:bg-ultramarine-500 transition-colors flex items-center\"\n @click=\"$emit('fullscreen')\"\n aria-label=\"Expand dashboard result\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"height: 1.5em\" class=\"h-3 w-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 1v4m0 0h-4m4 0l-5-5\" />\n </svg>\n </button>\n </div>\n <div v-else-if=\"!fullscreen\" class=\"pt-1 border-b border-gray-100 px-2 pb-2 text-right flex items-center justify-end gap-1 w-full\">\n <button\n class=\"px-2 py-1 text-xs bg-ultramarine-600 text-white border-none rounded cursor-pointer hover:bg-ultramarine-500 transition-colors\"\n @click=\"exportPNG\"\n title=\"Export PNG\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"height: 1.5em;\" viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M280-280h400v-80H280v80Zm200-120 160-160-56-56-64 62v-166h-80v166l-64-62-56 56 160 160Zm0 320q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>\n </button>\n <button\n class=\"px-2 py-1 text-xs bg-ultramarine-600 text-white border-none rounded cursor-pointer hover:bg-ultramarine-500 transition-colors flex items-center\"\n @click=\"$emit('fullscreen')\"\n aria-label=\"Expand dashboard result\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"height: 1.5em\" class=\"h-3 w-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 1v4m0 0h-4m4 0l-5-5\" />\n </svg>\n </button>\n </div>\n <div :class=\"responsive ? 'relative h-full min-h-0' : ''\">\n <canvas ref=\"chart\" class=\"block w-full h-full\"></canvas>\n </div>\n</div>\n";
|
|
1530
1689
|
|
|
1531
|
-
/***/ }
|
|
1690
|
+
/***/ },
|
|
1532
1691
|
|
|
1533
|
-
/***/ "./frontend/src/dashboard-result/dashboard-chart/dashboard-chart.js"
|
|
1692
|
+
/***/ "./frontend/src/dashboard-result/dashboard-chart/dashboard-chart.js"
|
|
1534
1693
|
/*!**************************************************************************!*\
|
|
1535
1694
|
!*** ./frontend/src/dashboard-result/dashboard-chart/dashboard-chart.js ***!
|
|
1536
1695
|
\**************************************************************************/
|
|
1537
|
-
|
|
1696
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1538
1697
|
|
|
1539
1698
|
"use strict";
|
|
1540
1699
|
|
|
@@ -1578,24 +1737,24 @@ module.exports = app => app.component('dashboard-chart', {
|
|
|
1578
1737
|
});
|
|
1579
1738
|
|
|
1580
1739
|
|
|
1581
|
-
/***/ }
|
|
1740
|
+
/***/ },
|
|
1582
1741
|
|
|
1583
|
-
/***/ "./frontend/src/dashboard-result/dashboard-document/dashboard-document.html"
|
|
1742
|
+
/***/ "./frontend/src/dashboard-result/dashboard-document/dashboard-document.html"
|
|
1584
1743
|
/*!**********************************************************************************!*\
|
|
1585
1744
|
!*** ./frontend/src/dashboard-result/dashboard-document/dashboard-document.html ***!
|
|
1586
1745
|
\**********************************************************************************/
|
|
1587
|
-
|
|
1746
|
+
(module) {
|
|
1588
1747
|
|
|
1589
1748
|
"use strict";
|
|
1590
1749
|
module.exports = "<div class=\"py-2\">\n <div v-if=\"header\" class=\"border-b border-gray-100 px-2 pb-2 text-xl font-bold\">\n {{header}}\n </div>\n <div class=\"text-xl pb-2\">\n <document-details :document=\"value.$document.document\" :schemaPaths=\"schemaPaths\" />\n </div>\n</div>";
|
|
1591
1750
|
|
|
1592
|
-
/***/ }
|
|
1751
|
+
/***/ },
|
|
1593
1752
|
|
|
1594
|
-
/***/ "./frontend/src/dashboard-result/dashboard-document/dashboard-document.js"
|
|
1753
|
+
/***/ "./frontend/src/dashboard-result/dashboard-document/dashboard-document.js"
|
|
1595
1754
|
/*!********************************************************************************!*\
|
|
1596
1755
|
!*** ./frontend/src/dashboard-result/dashboard-document/dashboard-document.js ***!
|
|
1597
1756
|
\********************************************************************************/
|
|
1598
|
-
|
|
1757
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1599
1758
|
|
|
1600
1759
|
"use strict";
|
|
1601
1760
|
|
|
@@ -1629,24 +1788,24 @@ module.exports = app => app.component('dashboard-document', {
|
|
|
1629
1788
|
});
|
|
1630
1789
|
|
|
1631
1790
|
|
|
1632
|
-
/***/ }
|
|
1791
|
+
/***/ },
|
|
1633
1792
|
|
|
1634
|
-
/***/ "./frontend/src/dashboard-result/dashboard-grid/dashboard-grid.html"
|
|
1793
|
+
/***/ "./frontend/src/dashboard-result/dashboard-grid/dashboard-grid.html"
|
|
1635
1794
|
/*!**************************************************************************!*\
|
|
1636
1795
|
!*** ./frontend/src/dashboard-result/dashboard-grid/dashboard-grid.html ***!
|
|
1637
1796
|
\**************************************************************************/
|
|
1638
|
-
|
|
1797
|
+
(module) {
|
|
1639
1798
|
|
|
1640
1799
|
"use strict";
|
|
1641
1800
|
module.exports = "<div class=\"grid gap-2\" :style=\"{ gridTemplateColumns: gridTemplateColumns }\">\n <template v-for=\"(row, rowIndex) in value.$grid\" :key=\"rowIndex\">\n <dashboard-result\n v-for=\"(cell, colIndex) in row\"\n :key=\"rowIndex + '-' + colIndex\"\n :result=\"cell\">\n </dashboard-result>\n </template>\n</div>\n";
|
|
1642
1801
|
|
|
1643
|
-
/***/ }
|
|
1802
|
+
/***/ },
|
|
1644
1803
|
|
|
1645
|
-
/***/ "./frontend/src/dashboard-result/dashboard-grid/dashboard-grid.js"
|
|
1804
|
+
/***/ "./frontend/src/dashboard-result/dashboard-grid/dashboard-grid.js"
|
|
1646
1805
|
/*!************************************************************************!*\
|
|
1647
1806
|
!*** ./frontend/src/dashboard-result/dashboard-grid/dashboard-grid.js ***!
|
|
1648
1807
|
\************************************************************************/
|
|
1649
|
-
|
|
1808
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1650
1809
|
|
|
1651
1810
|
"use strict";
|
|
1652
1811
|
|
|
@@ -1671,24 +1830,24 @@ module.exports = app => app.component('dashboard-grid', {
|
|
|
1671
1830
|
});
|
|
1672
1831
|
|
|
1673
1832
|
|
|
1674
|
-
/***/ }
|
|
1833
|
+
/***/ },
|
|
1675
1834
|
|
|
1676
|
-
/***/ "./frontend/src/dashboard-result/dashboard-map/dashboard-map.html"
|
|
1835
|
+
/***/ "./frontend/src/dashboard-result/dashboard-map/dashboard-map.html"
|
|
1677
1836
|
/*!************************************************************************!*\
|
|
1678
1837
|
!*** ./frontend/src/dashboard-result/dashboard-map/dashboard-map.html ***!
|
|
1679
1838
|
\************************************************************************/
|
|
1680
|
-
|
|
1839
|
+
(module) {
|
|
1681
1840
|
|
|
1682
1841
|
"use strict";
|
|
1683
1842
|
module.exports = "<div class=\"py-2 h-full flex flex-col\">\n <div v-if=\"header\" class=\"border-b border-gray-100 px-2 pb-2 text-xl font-bold\">\n {{header}}\n </div>\n <div class=\"text-xl flex-1 min-h-[200px]\">\n <div ref=\"map\" class=\"w-full h-full\" :style=\"mapStyle\"></div>\n </div>\n</div>\n";
|
|
1684
1843
|
|
|
1685
|
-
/***/ }
|
|
1844
|
+
/***/ },
|
|
1686
1845
|
|
|
1687
|
-
/***/ "./frontend/src/dashboard-result/dashboard-map/dashboard-map.js"
|
|
1846
|
+
/***/ "./frontend/src/dashboard-result/dashboard-map/dashboard-map.js"
|
|
1688
1847
|
/*!**********************************************************************!*\
|
|
1689
1848
|
!*** ./frontend/src/dashboard-result/dashboard-map/dashboard-map.js ***!
|
|
1690
1849
|
\**********************************************************************/
|
|
1691
|
-
|
|
1850
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1692
1851
|
|
|
1693
1852
|
"use strict";
|
|
1694
1853
|
/* global L */
|
|
@@ -1729,24 +1888,24 @@ module.exports = app => app.component('dashboard-map', {
|
|
|
1729
1888
|
});
|
|
1730
1889
|
|
|
1731
1890
|
|
|
1732
|
-
/***/ }
|
|
1891
|
+
/***/ },
|
|
1733
1892
|
|
|
1734
|
-
/***/ "./frontend/src/dashboard-result/dashboard-object/dashboard-object.html"
|
|
1893
|
+
/***/ "./frontend/src/dashboard-result/dashboard-object/dashboard-object.html"
|
|
1735
1894
|
/*!******************************************************************************!*\
|
|
1736
1895
|
!*** ./frontend/src/dashboard-result/dashboard-object/dashboard-object.html ***!
|
|
1737
1896
|
\******************************************************************************/
|
|
1738
|
-
|
|
1897
|
+
(module) {
|
|
1739
1898
|
|
|
1740
1899
|
"use strict";
|
|
1741
1900
|
module.exports = "<div class=\"py-2\">\n <div v-if=\"header\" class=\"border-b border-gray-100 px-2 pb-2 text-xl font-bold\">\n {{header}}\n </div>\n <pre class=\"text-sm p-2 whitespace-pre-wrap overflow-auto\"><code>{{formattedValue}}</code></pre>\n</div>\n";
|
|
1742
1901
|
|
|
1743
|
-
/***/ }
|
|
1902
|
+
/***/ },
|
|
1744
1903
|
|
|
1745
|
-
/***/ "./frontend/src/dashboard-result/dashboard-object/dashboard-object.js"
|
|
1904
|
+
/***/ "./frontend/src/dashboard-result/dashboard-object/dashboard-object.js"
|
|
1746
1905
|
/*!****************************************************************************!*\
|
|
1747
1906
|
!*** ./frontend/src/dashboard-result/dashboard-object/dashboard-object.js ***!
|
|
1748
1907
|
\****************************************************************************/
|
|
1749
|
-
|
|
1908
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1750
1909
|
|
|
1751
1910
|
"use strict";
|
|
1752
1911
|
|
|
@@ -1771,24 +1930,24 @@ module.exports = app => app.component('dashboard-object', {
|
|
|
1771
1930
|
});
|
|
1772
1931
|
|
|
1773
1932
|
|
|
1774
|
-
/***/ }
|
|
1933
|
+
/***/ },
|
|
1775
1934
|
|
|
1776
|
-
/***/ "./frontend/src/dashboard-result/dashboard-primitive/dashboard-primitive.html"
|
|
1935
|
+
/***/ "./frontend/src/dashboard-result/dashboard-primitive/dashboard-primitive.html"
|
|
1777
1936
|
/*!************************************************************************************!*\
|
|
1778
1937
|
!*** ./frontend/src/dashboard-result/dashboard-primitive/dashboard-primitive.html ***!
|
|
1779
1938
|
\************************************************************************************/
|
|
1780
|
-
|
|
1939
|
+
(module) {
|
|
1781
1940
|
|
|
1782
1941
|
"use strict";
|
|
1783
1942
|
module.exports = "<div class=\"py-2\">\n <div v-if=\"header\" class=\"border-b border-gray-100 px-2 pb-2 text-xl font-bold\">\n {{header}}\n </div>\n <div class=\"text-xl p-2\">\n {{displayValue}}\n </div>\n</div>";
|
|
1784
1943
|
|
|
1785
|
-
/***/ }
|
|
1944
|
+
/***/ },
|
|
1786
1945
|
|
|
1787
|
-
/***/ "./frontend/src/dashboard-result/dashboard-primitive/dashboard-primitive.js"
|
|
1946
|
+
/***/ "./frontend/src/dashboard-result/dashboard-primitive/dashboard-primitive.js"
|
|
1788
1947
|
/*!**********************************************************************************!*\
|
|
1789
1948
|
!*** ./frontend/src/dashboard-result/dashboard-primitive/dashboard-primitive.js ***!
|
|
1790
1949
|
\**********************************************************************************/
|
|
1791
|
-
|
|
1950
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1792
1951
|
|
|
1793
1952
|
"use strict";
|
|
1794
1953
|
|
|
@@ -1817,24 +1976,24 @@ module.exports = app => app.component('dashboard-primitive', {
|
|
|
1817
1976
|
});
|
|
1818
1977
|
|
|
1819
1978
|
|
|
1820
|
-
/***/ }
|
|
1979
|
+
/***/ },
|
|
1821
1980
|
|
|
1822
|
-
/***/ "./frontend/src/dashboard-result/dashboard-result.html"
|
|
1981
|
+
/***/ "./frontend/src/dashboard-result/dashboard-result.html"
|
|
1823
1982
|
/*!*************************************************************!*\
|
|
1824
1983
|
!*** ./frontend/src/dashboard-result/dashboard-result.html ***!
|
|
1825
1984
|
\*************************************************************/
|
|
1826
|
-
|
|
1985
|
+
(module) {
|
|
1827
1986
|
|
|
1828
1987
|
"use strict";
|
|
1829
1988
|
module.exports = "<div>\n <div v-if=\"Array.isArray(result)\">\n <div v-for=\"el in result\" :key=\"el._id || el.finishedEvaluatingAt\">\n <component\n class=\"bg-white shadow-sm ring-1 ring-gray-900/5 sm:rounded-xl\"\n :is=\"getComponentForValue(el)\"\n :value=\"el\">\n </component>\n </div>\n </div>\n <div v-else>\n <component\n class=\"bg-white shadow-sm ring-1 ring-gray-900/5 sm:rounded-xl\"\n :is=\"getComponentForValue(result)\"\n :value=\"result\"\n :fullscreen=\"fullscreen\"\n @fullscreen=\"$emit('fullscreen')\">\n </component>\n </div>\n <div class=\"text-right text-sm text-gray-700 mt-1\" v-if=\"finishedEvaluatingAt && !fullscreen\">\n Last Evaluated: {{ format.isoToLongDateTime(finishedEvaluatingAt) }}\n </div>\n</div>\n";
|
|
1830
1989
|
|
|
1831
|
-
/***/ }
|
|
1990
|
+
/***/ },
|
|
1832
1991
|
|
|
1833
|
-
/***/ "./frontend/src/dashboard-result/dashboard-result.js"
|
|
1992
|
+
/***/ "./frontend/src/dashboard-result/dashboard-result.js"
|
|
1834
1993
|
/*!***********************************************************!*\
|
|
1835
1994
|
!*** ./frontend/src/dashboard-result/dashboard-result.js ***!
|
|
1836
1995
|
\***********************************************************/
|
|
1837
|
-
|
|
1996
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1838
1997
|
|
|
1839
1998
|
"use strict";
|
|
1840
1999
|
|
|
@@ -1879,24 +2038,24 @@ module.exports = app => app.component('dashboard-result', {
|
|
|
1879
2038
|
});
|
|
1880
2039
|
|
|
1881
2040
|
|
|
1882
|
-
/***/ }
|
|
2041
|
+
/***/ },
|
|
1883
2042
|
|
|
1884
|
-
/***/ "./frontend/src/dashboard-result/dashboard-text/dashboard-text.html"
|
|
2043
|
+
/***/ "./frontend/src/dashboard-result/dashboard-text/dashboard-text.html"
|
|
1885
2044
|
/*!**************************************************************************!*\
|
|
1886
2045
|
!*** ./frontend/src/dashboard-result/dashboard-text/dashboard-text.html ***!
|
|
1887
2046
|
\**************************************************************************/
|
|
1888
|
-
|
|
2047
|
+
(module) {
|
|
1889
2048
|
|
|
1890
2049
|
"use strict";
|
|
1891
2050
|
module.exports = "<div class=\"py-2\">\n <div v-if=\"header\" class=\"border-b border-gray-100 px-2 pb-2 text-xl font-bold\">\n {{header}}\n </div>\n <div class=\"text-xl p-2\">\n <pre v-text=\"value.$text\"></pre>\n </div>\n</div>\n";
|
|
1892
2051
|
|
|
1893
|
-
/***/ }
|
|
2052
|
+
/***/ },
|
|
1894
2053
|
|
|
1895
|
-
/***/ "./frontend/src/dashboard-result/dashboard-text/dashboard-text.js"
|
|
2054
|
+
/***/ "./frontend/src/dashboard-result/dashboard-text/dashboard-text.js"
|
|
1896
2055
|
/*!************************************************************************!*\
|
|
1897
2056
|
!*** ./frontend/src/dashboard-result/dashboard-text/dashboard-text.js ***!
|
|
1898
2057
|
\************************************************************************/
|
|
1899
|
-
|
|
2058
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1900
2059
|
|
|
1901
2060
|
"use strict";
|
|
1902
2061
|
|
|
@@ -1909,30 +2068,31 @@ module.exports = app => app.component('dashboard-text', {
|
|
|
1909
2068
|
});
|
|
1910
2069
|
|
|
1911
2070
|
|
|
1912
|
-
/***/ }
|
|
2071
|
+
/***/ },
|
|
1913
2072
|
|
|
1914
|
-
/***/ "./frontend/src/dashboard/dashboard.html"
|
|
2073
|
+
/***/ "./frontend/src/dashboard/dashboard.html"
|
|
1915
2074
|
/*!***********************************************!*\
|
|
1916
2075
|
!*** ./frontend/src/dashboard/dashboard.html ***!
|
|
1917
2076
|
\***********************************************/
|
|
1918
|
-
|
|
2077
|
+
(module) {
|
|
1919
2078
|
|
|
1920
2079
|
"use strict";
|
|
1921
2080
|
module.exports = "<div class=\"dashboard px-1\">\n <div v-if=\"status === 'loading'\" class=\"max-w-5xl mx-auto text-center\">\n <img src=\"images/loader.gif\" class=\"inline mt-10\">\n </div>\n <div v-if=\"dashboard && status !== 'loading'\" class=\"max-w-5xl mx-auto\">\n <div class=\"flex items-center w-full\" v-if=\"!showEditor\">\n <h2 class=\"mt-4 mb-4 text-gray-900 font-semibold text-xl grow shrink\">{{title}}</h2>\n <div class=\"flex gap-2\">\n <button\n @click=\"showEditor = true\"\n type=\"button\"\n :disabled=\"status === 'evaluating'\"\n class=\"flex items-center rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600 disabled:cursor-not-allowed disabled:bg-gray-600\">\n <img src=\"images/edit.svg\" class=\"inline h-[1.25em] mr-1\" /> Edit\n </button>\n\n <async-button\n @click=\"evaluateDashboard\"\n type=\"button\"\n :disabled=\"status === 'evaluating'\"\n class=\"flex items-center rounded-md bg-ultramarine-600 px-4 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600 disabled:cursor-not-allowed disabled:bg-gray-600\"\n >\n <svg class=\"inline h-[1.25em] mr-1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"m670-140 160-100-160-100v200ZM240-600h480v-80H240v80ZM720-40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40ZM120-80v-680q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v267q-19-9-39-15t-41-9v-243H200v562h243q5 31 15.5 59T486-86l-6 6-60-60-60 60-60-60-60 60-60-60-60 60Zm120-200h203q3-21 9-41t15-39H240v80Zm0-160h284q38-37 88.5-58.5T720-520H240v80Zm-40 242v-562 562Z\"/></svg>\n Evaluate\n </async-button>\n <div class=\"relative\" ref=\"actionsMenu\">\n <button\n type=\"button\"\n @click.stop=\"toggleActionsMenu\"\n class=\"flex items-center rounded-md bg-gray-100 px-3 py-1.5 text-sm font-semibold text-gray-700 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500\"\n aria-haspopup=\"true\"\n :aria-expanded=\"showActionsMenu\"\n >\n More\n <svg class=\"ml-1 h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n <div\n v-if=\"showActionsMenu\"\n class=\"absolute right-0 mt-2 w-44 origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black/5 z-20\"\n role=\"menu\"\n aria-label=\"Dashboard actions\"\n >\n <button\n type=\"button\"\n :disabled=\"startingChat\"\n @click.stop=\"startChatWithDashboard\"\n class=\"flex w-full items-center gap-2 px-3 py-2 text-left text-sm text-gray-700 hover:bg-ultramarine-100 disabled:cursor-not-allowed disabled:text-gray-400\"\n role=\"menuitem\"\n >\n <svg class=\"h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M8 10h.01M12 10h.01M16 10h.01m-8 4h8m-9 5 10-3.333L7 12.333 3 14l.667-4.333L9 7l4-3 4.333 2.667L21 11l-3 3.667V19a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1z\" />\n </svg>\n Start Chat\n </button>\n </div>\n </div>\n </div>\n </div>\n <div v-if=\"!showEditor\" class=\"mt-4 mb-4\">\n <div v-if=\"dashboardResults.length === 0\">\n <div class=\"flex flex-col items-center justify-center py-8\">\n <p class=\"text-gray-700 text-base mb-4\">This dashboard hasn't been evaluated yet.</p>\n <async-button\n @click=\"evaluateDashboard\"\n type=\"button\"\n :disabled=\"status === 'evaluating'\"\n class=\"rounded-md bg-ultramarine-600 px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600 disabled:cursor-not-allowed disabled:bg-gray-600\"\n >\n Evaluate Dashboard\n </async-button>\n </div>\n </div>\n <div v-else-if=\"dashboardResult\">\n <div class=\"relative\">\n <div v-if=\"status === 'evaluating'\" class=\"absolute inset-0 flex items-center justify-center bg-white bg-opacity-60 z-10 flex flex-col gap-2\">\n <div>Evaluating Dashboard...</div>\n <img src=\"images/loader.gif\" class=\"h-12 w-12\" alt=\"Loading...\" />\n </div>\n <div v-else-if=\"dashboardResult.error\" class=\"rounded-md bg-red-50 p-4 mt-4\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM8.28 7.22a.75.75 0 0 0-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 1 0 1.06 1.06L10 11.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L11.06 10l1.72-1.72a.75.75 0 0 0-1.06-1.06L10 8.94 8.28 7.22Z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">{{dashboardResult.error.message || 'Unknown Error'}}</h3>\n </div>\n </div>\n </div>\n <dashboard-result\n v-else\n :key=\"dashboardResult.finishedEvaluatingAt\"\n :result=\"dashboardResult.result\"\n :finishedEvaluatingAt=\"dashboardResult.finishedEvaluatingAt\"\n @fullscreen=\"showDetailModal = true\"\n class=\"h-[40vh]\"\n >\n </dashboard-result>\n </div>\n </div>\n </div>\n <div v-if=\"showEditor\" class=\"mt-4\">\n <edit-dashboard\n :dashboardId=\"dashboard._id\"\n :code=\"code\"\n :currentDescription=\"description\"\n :currentTitle=\"title\"\n @close=\"showEditor=false;\"\n @update=\"updateCode\"></edit-dashboard>\n </div>\n\n </div>\n <div v-if=\"!dashboard && status !== 'loading'\">\n No dashboard with the given id could be found.\n </div>\n</div>\n\n<modal\n v-if=\"showDetailModal\"\n containerClass=\"!h-[90vh] !w-[90vw]\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Dashboard Details\"\n>\n <template #body>\n <div class=\"absolute font-mono right-1 top-1 cursor-pointer text-xl\" @click=\"showDetailModal = false;\" role=\"button\" aria-label=\"Close modal\">×</div>\n <div class=\"h-full overflow-auto\">\n <dashboard-result\n v-if=\"dashboardResult\"\n :result=\"dashboardResult.result\"\n :finishedEvaluatingAt=\"dashboardResult.finishedEvaluatingAt\"\n :fullscreen=\"true\"\n :responsive=\"true\">\n </dashboard-result>\n </div>\n </template>\n</modal>\n";
|
|
1922
2081
|
|
|
1923
|
-
/***/ }
|
|
2082
|
+
/***/ },
|
|
1924
2083
|
|
|
1925
|
-
/***/ "./frontend/src/dashboard/dashboard.js"
|
|
2084
|
+
/***/ "./frontend/src/dashboard/dashboard.js"
|
|
1926
2085
|
/*!*********************************************!*\
|
|
1927
2086
|
!*** ./frontend/src/dashboard/dashboard.js ***!
|
|
1928
2087
|
\*********************************************/
|
|
1929
|
-
|
|
2088
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1930
2089
|
|
|
1931
2090
|
"use strict";
|
|
1932
2091
|
|
|
1933
2092
|
|
|
1934
2093
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
1935
2094
|
const template = __webpack_require__(/*! ./dashboard.html */ "./frontend/src/dashboard/dashboard.html");
|
|
2095
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
1936
2096
|
|
|
1937
2097
|
module.exports = app => app.component('dashboard', {
|
|
1938
2098
|
template: template,
|
|
@@ -2040,6 +2200,13 @@ module.exports = app => app.component('dashboard', {
|
|
|
2040
2200
|
initialMessage,
|
|
2041
2201
|
dashboardId: this.dashboard?._id
|
|
2042
2202
|
});
|
|
2203
|
+
vanillatoasts.create({
|
|
2204
|
+
title: 'Chat thread created!',
|
|
2205
|
+
type: 'success',
|
|
2206
|
+
timeout: 3000,
|
|
2207
|
+
icon: 'images/success.png',
|
|
2208
|
+
positionClass: 'bottomRight'
|
|
2209
|
+
});
|
|
2043
2210
|
this.$router.push('/chat/' + chatThread._id);
|
|
2044
2211
|
} finally {
|
|
2045
2212
|
this.startingChat = false;
|
|
@@ -2072,34 +2239,35 @@ module.exports = app => app.component('dashboard', {
|
|
|
2072
2239
|
},
|
|
2073
2240
|
beforeDestroy() {
|
|
2074
2241
|
document.removeEventListener('click', this.handleDocumentClick);
|
|
2075
|
-
}
|
|
2242
|
+
}
|
|
2076
2243
|
});
|
|
2077
2244
|
|
|
2078
2245
|
|
|
2079
|
-
/***/ }
|
|
2246
|
+
/***/ },
|
|
2080
2247
|
|
|
2081
|
-
/***/ "./frontend/src/dashboard/edit-dashboard/edit-dashboard.html"
|
|
2248
|
+
/***/ "./frontend/src/dashboard/edit-dashboard/edit-dashboard.html"
|
|
2082
2249
|
/*!*******************************************************************!*\
|
|
2083
2250
|
!*** ./frontend/src/dashboard/edit-dashboard/edit-dashboard.html ***!
|
|
2084
2251
|
\*******************************************************************/
|
|
2085
|
-
|
|
2252
|
+
(module) {
|
|
2086
2253
|
|
|
2087
2254
|
"use strict";
|
|
2088
2255
|
module.exports = "<div class=\"p-4 bg-gray-100 rounded-lg shadow-lg\">\n <div v-show=\"status === 'loading'\" class=\"max-w-5xl mx-auto text-center\">\n <img src=\"images/loader.gif\" class=\"inline mt-10\">\n </div>\n <div v-show=\"status !== 'loading'\" class=\"flex flex-col gap-4\">\n <div>\n <input v-model=\"title\" class=\"w-full p-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500\" placeholder=\"Title\"/>\n </div>\n <div>\n <textarea v-model=\"description\" class=\"w-full p-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500\" rows=\"4\" placeholder=\"Description\">{{description}}</textarea>\n </div>\n <div class=\"border border-gray-300 rounded-md\">\n <textarea ref=\"codeEditor\" class=\"w-full p-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500\" rows=\"6\">{{code}}</textarea>\n <textarea v-model=\"chatMessage\" class=\"w-full p-2\"></textarea>\n </div>\n <div class=\"flex space-x-2\">\n <async-button @click=\"updateCode\" class=\"px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500\">Submit</async-button>\n <button @click=\"closeEditor\" class=\"px-4 py-2 bg-gray-500 text-white rounded-md hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-gray-500\">Cancel</button>\n </div>\n </div>\n</div>\n";
|
|
2089
2256
|
|
|
2090
|
-
/***/ }
|
|
2257
|
+
/***/ },
|
|
2091
2258
|
|
|
2092
|
-
/***/ "./frontend/src/dashboard/edit-dashboard/edit-dashboard.js"
|
|
2259
|
+
/***/ "./frontend/src/dashboard/edit-dashboard/edit-dashboard.js"
|
|
2093
2260
|
/*!*****************************************************************!*\
|
|
2094
2261
|
!*** ./frontend/src/dashboard/edit-dashboard/edit-dashboard.js ***!
|
|
2095
2262
|
\*****************************************************************/
|
|
2096
|
-
|
|
2263
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2097
2264
|
|
|
2098
2265
|
"use strict";
|
|
2099
2266
|
|
|
2100
2267
|
|
|
2101
2268
|
const api = __webpack_require__(/*! ../../api */ "./frontend/src/api.js");
|
|
2102
2269
|
const template = __webpack_require__(/*! ./edit-dashboard.html */ "./frontend/src/dashboard/edit-dashboard/edit-dashboard.html");
|
|
2270
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
2103
2271
|
|
|
2104
2272
|
module.exports = app => app.component('edit-dashboard', {
|
|
2105
2273
|
template: template,
|
|
@@ -2129,6 +2297,13 @@ module.exports = app => app.component('edit-dashboard', {
|
|
|
2129
2297
|
});
|
|
2130
2298
|
this.$emit('update', { doc });
|
|
2131
2299
|
this.editor.setValue(doc.code);
|
|
2300
|
+
vanillatoasts.create({
|
|
2301
|
+
title: 'Dashboard updated!',
|
|
2302
|
+
type: 'success',
|
|
2303
|
+
timeout: 3000,
|
|
2304
|
+
icon: 'images/success.png',
|
|
2305
|
+
positionClass: 'bottomRight'
|
|
2306
|
+
});
|
|
2132
2307
|
this.closeEditor();
|
|
2133
2308
|
} catch (err) {
|
|
2134
2309
|
this.$emit('update', { error: { message: err.message } });
|
|
@@ -2157,30 +2332,31 @@ module.exports = app => app.component('edit-dashboard', {
|
|
|
2157
2332
|
});
|
|
2158
2333
|
|
|
2159
2334
|
|
|
2160
|
-
/***/ }
|
|
2335
|
+
/***/ },
|
|
2161
2336
|
|
|
2162
|
-
/***/ "./frontend/src/dashboards/dashboards.html"
|
|
2337
|
+
/***/ "./frontend/src/dashboards/dashboards.html"
|
|
2163
2338
|
/*!*************************************************!*\
|
|
2164
2339
|
!*** ./frontend/src/dashboards/dashboards.html ***!
|
|
2165
2340
|
\*************************************************/
|
|
2166
|
-
|
|
2341
|
+
(module) {
|
|
2167
2342
|
|
|
2168
2343
|
"use strict";
|
|
2169
2344
|
module.exports = "<div class=\"dashboards max-w-5xl mx-auto mt-8\">\n <div v-if=\"status === 'loading'\" class=\"text-center mt-4\">\n <svg\n class=\"inline w-8 h-8 animate-spin text-ultramarine-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z\"\n ></path>\n </svg>\n </div>\n <div v-if=\"status === 'loaded' && dashboards.length === 0\">\n <div class=\"text-center\">\n <h3 class=\"mt-2 text-sm font-semibold text-gray-900\">No dashboards yet</h3>\n <p class=\"mt-1 text-sm text-gray-500\">Get started by creating a new dashboard.</p>\n <div class=\"mt-6\">\n <button type=\"button\" class=\"inline-flex items-center rounded-md bg-ultramarine-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n <svg class=\"-ml-0.5 mr-1.5 h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M10.75 4.75a.75.75 0 00-1.5 0v4.5h-4.5a.75.75 0 000 1.5h4.5v4.5a.75.75 0 001.5 0v-4.5h4.5a.75.75 0 000-1.5h-4.5v-4.5z\" />\n </svg>\n New Dashboard\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"px-4 sm:px-6 lg:px-8\">\n <div class=\"sm:flex sm:items-center\">\n <div class=\"sm:flex-auto\">\n <h1 class=\"text-base font-semibold leading-6 text-gray-900\">Dashboards</h1>\n </div>\n <div class=\"mt-4 sm:ml-16 sm:mt-0 sm:flex-none\">\n <button\n type=\"button\"\n @click=\"showCreateDashboardModal = true\"\n class=\"block rounded-md bg-ultramarine-600 px-3 py-2 text-center text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">Create New Dashboard</button>\n </div>\n </div>\n <div class=\"mt-8 flow-root\">\n <div class=\"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle\">\n <table class=\"min-w-full divide-y divide-gray-300\">\n <thead>\n <tr>\n <th scope=\"col\" class=\"py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-6 lg:pl-8\">Title</th>\n <th scope=\"col\" class=\"px-3 py-3.5 text-left text-sm font-semibold text-gray-900 w-[50%]\">Description</th>\n <th scope=\"col\" class=\"relative py-3.5 pl-3 pr-4 sm:pr-6 lg:pr-8\">\n </th>\n <th scope=\"col\" class=\"relative py-3.5 pl-3 pr-4 sm:pr-6 lg:pr-8\">\n </th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-gray-200 bg-white\">\n <tr v-for=\"dashboard in dashboards\">\n <td class=\"whitespace-nowrap py-4 pl-4 pr-3 text-sm font-medium text-gray-900 sm:pl-6 lg:pl-8\">{{dashboard.title}}</td>\n <td class=\"whitespace-nowrap px-3 py-4 text-sm text-gray-500 truncate w-[50%]\">{{dashboard.description}}</td>\n <td class=\"relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6 lg:pr-8\">\n <router-link\n :to=\"'/dashboard/' + dashboard._id + '?edit=true'\"\n class=\"text-ultramarine-600 hover:text-ultramarine-900\">\n Edit\n </router-link>\n </td>\n <td class=\"relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6 lg:pr-8\">\n <router-link\n :to=\"'/dashboard/' + dashboard._id\"\n class=\"text-ultramarine-600 hover:text-ultramarine-900\">\n View\n </router-link>\n </td>\n <td class=\"relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6 lg:pr-8\">\n <button\n @click=\"showDeleteDashboardModal=dashboard\"\n class=\"text-ultramarine-600 hover:text-ultramarine-900\">\n Delete\n </button>\n </td>\n </tr>\n\n <!-- More people... -->\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n\n <modal v-if=\"showCreateDashboardModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"showCreateDashboardModal = false;\">×</div>\n\n <create-dashboard @close=\"insertNewDashboard\"></create-dashboard>\n </template>\n </modal>\n\n <modal v-if=\"showDeleteDashboardModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"showDeleteDashboardModal = null;\">×</div>\n <h2>Are you sure you want to delete this dashboard titled {{showDeleteDashboardModal.title}}?</h2>\n <div class=\"flex space-x-2\">\n <button class=\"px-4 py-2 bg-red-500 text-white rounded-md hover:bg-red-600 focus:outline-none focus:ring-2 focus:ring-red-500\" @click=\"deleteDashboard(showDeleteDashboardModal)\">Yes, delete</button>\n <button class=\"px-4 py-2 bg-gray-500 text-white rounded-md hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-gray-600\" @click=\"showDeleteDashboardModal=null;\">Cancel</button>\n </div>\n </template>\n </modal>\n </div>\n</div>";
|
|
2170
2345
|
|
|
2171
|
-
/***/ }
|
|
2346
|
+
/***/ },
|
|
2172
2347
|
|
|
2173
|
-
/***/ "./frontend/src/dashboards/dashboards.js"
|
|
2348
|
+
/***/ "./frontend/src/dashboards/dashboards.js"
|
|
2174
2349
|
/*!***********************************************!*\
|
|
2175
2350
|
!*** ./frontend/src/dashboards/dashboards.js ***!
|
|
2176
2351
|
\***********************************************/
|
|
2177
|
-
|
|
2352
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2178
2353
|
|
|
2179
2354
|
"use strict";
|
|
2180
2355
|
|
|
2181
2356
|
|
|
2182
2357
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
2183
2358
|
const template = __webpack_require__(/*! ./dashboards.html */ "./frontend/src/dashboards/dashboards.html");
|
|
2359
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
2184
2360
|
|
|
2185
2361
|
|
|
2186
2362
|
module.exports = app => app.component('dashboards', {
|
|
@@ -2200,6 +2376,13 @@ module.exports = app => app.component('dashboards', {
|
|
|
2200
2376
|
const removedDashboard = this.dashboards.findIndex(x => x._id.toString() === dashboard._id.toString());
|
|
2201
2377
|
this.dashboards.splice(removedDashboard, 1);
|
|
2202
2378
|
this.showDeleteDashboardModal = null;
|
|
2379
|
+
vanillatoasts.create({
|
|
2380
|
+
title: 'Dashboard deleted!',
|
|
2381
|
+
type: 'success',
|
|
2382
|
+
timeout: 3000,
|
|
2383
|
+
icon: 'images/success.png',
|
|
2384
|
+
positionClass: 'bottomRight'
|
|
2385
|
+
});
|
|
2203
2386
|
},
|
|
2204
2387
|
insertNewDashboard(dashboard) {
|
|
2205
2388
|
this.dashboards.push(dashboard);
|
|
@@ -2214,65 +2397,81 @@ module.exports = app => app.component('dashboards', {
|
|
|
2214
2397
|
});
|
|
2215
2398
|
|
|
2216
2399
|
|
|
2217
|
-
/***/ }
|
|
2400
|
+
/***/ },
|
|
2218
2401
|
|
|
2219
|
-
/***/ "./frontend/src/detail-array/detail-array.html"
|
|
2402
|
+
/***/ "./frontend/src/detail-array/detail-array.html"
|
|
2220
2403
|
/*!*****************************************************!*\
|
|
2221
2404
|
!*** ./frontend/src/detail-array/detail-array.html ***!
|
|
2222
2405
|
\*****************************************************/
|
|
2223
|
-
|
|
2406
|
+
(module) {
|
|
2224
2407
|
|
|
2225
2408
|
"use strict";
|
|
2226
|
-
module.exports = "<div class=\"
|
|
2409
|
+
module.exports = "<div class=\"w-full\">\n <div v-if=\"!arrayValue || arrayValue.length === 0\" class=\"text-gray-400 text-xs py-2 text-center\">\n Empty array\n </div>\n\n <div v-else class=\"mt-2\">\n <div\n v-for=\"(item, index) in arrayValue\"\n :key=\"index\"\n :title=\"'Index: ' + index\"\n class=\"mb-1.5 last:mb-0 py-2.5 px-3 pl-4 bg-transparent border-l-[3px] border-l-blue-500 rounded-none transition-all duration-200 cursor-pointer relative hover:bg-slate-50 hover:border-l-blue-600 hover:shadow-lg hover:-translate-y-0.5\">\n <div class=\"absolute -left-3 top-1/2 -translate-y-1/2 w-5 h-5 bg-blue-500 text-white rounded-full flex items-center justify-center text-[10px] font-semibold font-mono z-10 hover:bg-blue-600\">{{ index >= 1000 ? '1k+' : index }}</div>\n <div v-if=\"arrayUtils.isObjectItem(item)\" class=\"flex flex-col gap-1 mt-1 px-2\">\n <div\n v-for=\"key in arrayUtils.getItemKeys(item)\"\n :key=\"key\"\n class=\"flex items-start gap-2 text-xs font-mono\">\n <span class=\"font-semibold text-gray-600 flex-shrink-0 min-w-[80px]\">{{ key }}:</span>\n <span class=\"text-gray-800 break-words whitespace-pre-wrap flex-1\">{{ arrayUtils.formatItemValue(item, key) }}</span>\n </div>\n </div>\n <div v-else class=\"text-xs py-1.5 px-2 font-mono text-gray-800 break-words whitespace-pre-wrap mt-1\">{{ arrayUtils.formatValue(item) }}</div>\n </div>\n </div>\n</div>\n";
|
|
2227
2410
|
|
|
2228
|
-
/***/ }
|
|
2411
|
+
/***/ },
|
|
2229
2412
|
|
|
2230
|
-
/***/ "./frontend/src/detail-array/detail-array.js"
|
|
2413
|
+
/***/ "./frontend/src/detail-array/detail-array.js"
|
|
2231
2414
|
/*!***************************************************!*\
|
|
2232
2415
|
!*** ./frontend/src/detail-array/detail-array.js ***!
|
|
2233
2416
|
\***************************************************/
|
|
2234
|
-
|
|
2417
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2235
2418
|
|
|
2236
2419
|
"use strict";
|
|
2237
2420
|
|
|
2238
2421
|
|
|
2239
2422
|
const template = __webpack_require__(/*! ./detail-array.html */ "./frontend/src/detail-array/detail-array.html");
|
|
2240
|
-
const { inspect } = __webpack_require__(/*! node-inspect-extracted */ "./node_modules/node-inspect-extracted/dist/inspect.js");
|
|
2241
2423
|
|
|
2242
2424
|
module.exports = app => app.component('detail-array', {
|
|
2243
2425
|
template: template,
|
|
2244
2426
|
props: ['value'],
|
|
2245
|
-
|
|
2246
|
-
|
|
2427
|
+
data() {
|
|
2428
|
+
return {
|
|
2429
|
+
arrayValue: []
|
|
2430
|
+
};
|
|
2431
|
+
},
|
|
2432
|
+
methods: {
|
|
2433
|
+
initializeArray() {
|
|
2247
2434
|
if (this.value == null) {
|
|
2248
|
-
|
|
2435
|
+
this.arrayValue = [];
|
|
2436
|
+
} else if (Array.isArray(this.value)) {
|
|
2437
|
+
this.arrayValue = this.value;
|
|
2438
|
+
} else {
|
|
2439
|
+
this.arrayValue = [];
|
|
2249
2440
|
}
|
|
2250
|
-
return inspect(this.value, { maxArrayLength: 50 });
|
|
2251
2441
|
}
|
|
2252
2442
|
},
|
|
2253
2443
|
mounted() {
|
|
2254
|
-
|
|
2444
|
+
this.initializeArray();
|
|
2445
|
+
},
|
|
2446
|
+
watch: {
|
|
2447
|
+
value: {
|
|
2448
|
+
handler(newValue) {
|
|
2449
|
+
this.initializeArray();
|
|
2450
|
+
},
|
|
2451
|
+
deep: true,
|
|
2452
|
+
immediate: true
|
|
2453
|
+
}
|
|
2255
2454
|
}
|
|
2256
2455
|
});
|
|
2257
2456
|
|
|
2258
|
-
/***/ }
|
|
2457
|
+
/***/ },
|
|
2259
2458
|
|
|
2260
|
-
/***/ "./frontend/src/detail-default/detail-default.html"
|
|
2459
|
+
/***/ "./frontend/src/detail-default/detail-default.html"
|
|
2261
2460
|
/*!*********************************************************!*\
|
|
2262
2461
|
!*** ./frontend/src/detail-default/detail-default.html ***!
|
|
2263
2462
|
\*********************************************************/
|
|
2264
|
-
|
|
2463
|
+
(module) {
|
|
2265
2464
|
|
|
2266
2465
|
"use strict";
|
|
2267
2466
|
module.exports = "<div class=\"w-full\">\n <pre class=\"w-full whitespace-pre-wrap break-words font-mono text-sm text-gray-700 m-0\">{{displayValue}}</pre>\n</div>";
|
|
2268
2467
|
|
|
2269
|
-
/***/ }
|
|
2468
|
+
/***/ },
|
|
2270
2469
|
|
|
2271
|
-
/***/ "./frontend/src/detail-default/detail-default.js"
|
|
2470
|
+
/***/ "./frontend/src/detail-default/detail-default.js"
|
|
2272
2471
|
/*!*******************************************************!*\
|
|
2273
2472
|
!*** ./frontend/src/detail-default/detail-default.js ***!
|
|
2274
2473
|
\*******************************************************/
|
|
2275
|
-
|
|
2474
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2276
2475
|
|
|
2277
2476
|
"use strict";
|
|
2278
2477
|
|
|
@@ -2304,35 +2503,35 @@ module.exports = app => app.component('detail-default', {
|
|
|
2304
2503
|
}
|
|
2305
2504
|
});
|
|
2306
2505
|
|
|
2307
|
-
/***/ }
|
|
2506
|
+
/***/ },
|
|
2308
2507
|
|
|
2309
|
-
/***/ "./frontend/src/document-details/document-details.css"
|
|
2508
|
+
/***/ "./frontend/src/document-details/document-details.css"
|
|
2310
2509
|
/*!************************************************************!*\
|
|
2311
2510
|
!*** ./frontend/src/document-details/document-details.css ***!
|
|
2312
2511
|
\************************************************************/
|
|
2313
|
-
|
|
2512
|
+
(module) {
|
|
2314
2513
|
|
|
2315
2514
|
"use strict";
|
|
2316
2515
|
module.exports = ".document-details {\n width: 100%;\n}\n\n.document-details .value {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.document-details .path-key {\n background-color: #f0f0f0;\n margin-bottom: 0.5em;\n}\n\n.document-details .path-type {\n color: rgba(0,0,0,.36);\n font-size: 0.8em;\n}\n\n.document-details .date-position {\n float: right;\n margin-top: -7px;\n}\n\n/* Add Field Modal Styles */\n.add-field-modal {\n max-width: 500px;\n width: 100%;\n}\n\n.add-field-modal .modal-exit {\n position: absolute;\n top: 15px;\n right: 20px;\n font-size: 24px;\n cursor: pointer;\n color: #6b7280;\n z-index: 10;\n}\n\n.add-field-modal .modal-exit:hover {\n color: #374151;\n}\n\n.add-field-modal form {\n max-height: 70vh;\n overflow-y: auto;\n}\n\n.add-field-modal input[type=\"text\"],\n.add-field-modal input[type=\"email\"],\n.add-field-modal input[type=\"password\"],\n.add-field-modal select,\n.add-field-modal textarea {\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.add-field-modal input:focus,\n.add-field-modal select:focus,\n.add-field-modal textarea:focus {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.add-field-modal .border-red-500 {\n border-color: #ef4444 !important;\n}\n\n.add-field-modal .border-red-500:focus {\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1) !important;\n}\n\n/* CodeMirror styling in modal */\n.add-field-modal .CodeMirror {\n border: 1px solid #d1d5db;\n border-radius: 0.375rem;\n font-size: 14px;\n height: auto;\n min-height: 100px;\n}\n\n.add-field-modal .CodeMirror:focus-within {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.add-field-modal .CodeMirror.CodeMirror-focused {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n/* JSON View Styles */\n.json-view {\n width: 100%;\n}\n\n.json-view pre {\n margin: 0;\n max-height: 70vh;\n overflow: auto;\n line-height: 1.5;\n}\n\n.json-view pre::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n.json-view pre::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 4px;\n}\n\n.json-view pre::-webkit-scrollbar-thumb {\n background: #888;\n border-radius: 4px;\n}\n\n.json-view pre::-webkit-scrollbar-thumb:hover {\n background: #555;\n}";
|
|
2317
2516
|
|
|
2318
|
-
/***/ }
|
|
2517
|
+
/***/ },
|
|
2319
2518
|
|
|
2320
|
-
/***/ "./frontend/src/document-details/document-details.html"
|
|
2519
|
+
/***/ "./frontend/src/document-details/document-details.html"
|
|
2321
2520
|
/*!*************************************************************!*\
|
|
2322
2521
|
!*** ./frontend/src/document-details/document-details.html ***!
|
|
2323
2522
|
\*************************************************************/
|
|
2324
|
-
|
|
2523
|
+
(module) {
|
|
2325
2524
|
|
|
2326
2525
|
"use strict";
|
|
2327
|
-
module.exports = "<div class=\"document-details\">\n <!-- View Toggle and Search/Filter Bar -->\n <div class=\"sticky top-[60px] z-40 bg-white p-4 border-b border-gray-200 shadow-sm\">\n\n <!-- Search and Filter Bar (only show in fields view) -->\n <div v-if=\"viewMode === 'fields'\" class=\"flex md:gap-3\">\n <!-- Search Bar -->\n <div class=\"relative flex-1\">\n <input\n ref=\"searchInput\"\n v-model=\"searchQuery\"\n type=\"text\"\n placeholder=\"Search fields...\"\n class=\"w-full px-4 py-2 pl-10 pr-4 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n />\n <div class=\"absolute inset-y-0 left-0 flex items-center pl-3\">\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"></path>\n </svg>\n </div>\n </div>\n\n <!-- Data Type Filter -->\n <div class=\"relative hidden md:block\">\n <select\n v-model=\"selectedType\"\n class=\"px-4 py-2 pr-8 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white min-w-[140px] appearance-none\"\n >\n <option value=\"\">All Types</option>\n <option v-for=\"type in availableTypes\" :key=\"type\" :value=\"type\">\n {{type}}\n </option>\n </select>\n <div class=\"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none\">\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"></path>\n </svg>\n </div>\n </div>\n\n <!-- Add Field Button -->\n <button\n @click=\"openAddFieldModal\"\n class=\"hidden md:flex px-4 py-2 text-sm font-medium text-white bg-green-600 hover:bg-green-700 rounded-lg focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2 items-center gap-2\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 4v16m8-8H4\"></path>\n </svg> Add Field\n </button>\n </div>\n </div>\n\n <!-- Fields View -->\n <div v-if=\"viewMode === 'fields'\">\n <!-- Schema Paths -->\n <div\n v-for=\"path in filteredSchemaPaths\"\n :key=\"path.path || path\"\n class=\"value\"\n >\n <document-property\n :path=\"path\"\n :document=\"document\"\n :schemaPaths=\"schemaPaths\"\n :editting=\"editting\"\n :changes=\"changes\"\n :highlight=\"isSchemaPathMatched(path)\"\n :invalid=\"invalid\"></document-property>\n </div>\n\n <!-- Virtual Fields -->\n <div\n v-for=\"path in filteredVirtuals\"\n :key=\"path.name\"\n class=\"border rounded-lg mb-2 transition-all duration-200 ease-in-out\"\n :class=\"[\n isVirtualMatched(path)\n ? 'border-amber-400 ring-2 ring-amber-200 ring-offset-1'\n : 'border-gray-200'\n ]\"\n >\n <!-- Virtual Field Header (Always Visible) -->\n <div\n @click=\"toggleVirtualField(path.name)\"\n class=\"p-3 bg-slate-50 hover:bg-slate-100 cursor-pointer flex items-center justify-between border-b border-gray-200\"\n >\n <div class=\"flex items-center\">\n <svg\n :class=\"isVirtualFieldCollapsed(path.name) ? 'rotate-0' : 'rotate-90'\"\n class=\"w-4 h-4 text-gray-500 mr-2 transition-transform duration-200\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"></path>\n </svg>\n <span class=\"font-medium text-gray-900\">{{path.name}}</span>\n <span v-if=\"path.isVirtual\" class=\"ml-2 text-sm text-purple-600\">(virtual - {{getVirtualFieldType(path)}})</span>\n <span v-else class=\"ml-2 text-sm text-blue-600\">(user-added - {{getVirtualFieldType(path)}})</span>\n </div>\n </div>\n\n <!-- Virtual Field Content (Collapsible) -->\n <div v-if=\"!isVirtualFieldCollapsed(path.name)\" class=\"p-3\">\n <div v-if=\"path.value == null\" class=\"text-sky-800\">\n {{'' + path.value}}\n </div>\n <div v-else>\n {{path.value}}\n </div>\n </div>\n </div>\n\n <!-- No Results Message -->\n <div v-if=\"searchQuery.trim() && !hasSearchMatches\" class=\"text-center py-8 text-gray-500\">\n <svg class=\"w-12 h-12 mx-auto mb-4 text-gray-300\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.172 16.172a4 4 0 015.656 0M9 12h6m-6-4h6m2 5.291A7.962 7.962 0 0112 15c-2.34 0-4.29-1.009-5.824-2.709M15 6.291A7.962 7.962 0 0012 5c-2.34 0-4.29 1.009-5.824 2.709\"></path>\n </svg>\n <p>No fields found matching \"{{searchQuery}}\"</p>\n </div>\n </div>\n\n <!-- JSON View -->\n <div v-if=\"viewMode === 'json'\" class=\"json-view\">\n <div class=\"border border-gray-300 rounded-lg bg-gray-50 p-4 overflow-auto\">\n <pre class=\"text-sm font-mono text-gray-800 whitespace-pre\">{{formattedJson}}</pre>\n </div>\n </div>\n\n <!-- Add Field Modal -->\n <modal v-if=\"showAddFieldModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"closeAddFieldModal\">×</div>\n <div class=\"add-field-modal\">\n <div class=\"mb-6\">\n <h2 class=\"text-xl font-semibold text-gray-900 mb-2\">Add New Field</h2>\n <p class=\"text-sm text-gray-600\">Create a new field for this document</p>\n </div>\n\n <form @submit.prevent=\"handleAddFieldSubmit\" class=\"space-y-4\">\n <!-- Field Name -->\n <div>\n <label for=\"fieldName\" class=\"block text-sm font-medium text-gray-700 mb-1\">\n Field Name *\n </label>\n <input\n id=\"fieldName\"\n v-model=\"fieldData.name\"\n type=\"text\"\n required\n placeholder=\"Enter field name...\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.name }\"\n />\n <p v-if=\"fieldErrors.name\" class=\"mt-1 text-sm text-red-600\">{{fieldErrors.name}}</p>\n <p v-if=\"fieldData.name && getTransformedFieldName() !== fieldData.name.trim()\" class=\"mt-1 text-sm text-blue-600\">\n Field name will be: <code class=\"bg-blue-50 px-1 py-0.5 rounded text-xs\">{{getTransformedFieldName()}}</code>\n </p>\n </div>\n\n <!-- Field Type -->\n <div>\n <label for=\"fieldType\" class=\"block text-sm font-medium text-gray-700 mb-1\">\n Field Type *\n </label>\n <select\n id=\"fieldType\"\n v-model=\"fieldData.type\"\n required\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.type }\"\n >\n <option value=\"\">Select field type...</option>\n <option v-for=\"type in allFieldTypes\" :key=\"type\" :value=\"type\">\n {{type}}\n </option>\n </select>\n <p v-if=\"fieldErrors.type\" class=\"mt-1 text-sm text-red-600\">{{fieldErrors.type}}</p>\n </div>\n\n <!-- Field Value -->\n <div>\n <label for=\"fieldValue\" class=\"block text-sm font-medium text-gray-700 mb-1\">\n Initial Value\n </label>\n\n <!-- Date picker for Date type -->\n <input\n v-if=\"shouldUseDatePicker\"\n v-model=\"fieldData.value\"\n type=\"date\"\n id=\"fieldValue\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.value }\"\n />\n\n <!-- Simple input for basic types -->\n <input\n v-else-if=\"!shouldUseCodeMirror\"\n v-model=\"fieldData.value\"\n type=\"text\"\n id=\"fieldValue\"\n placeholder=\"Enter initial value (optional)...\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.value }\"\n />\n\n <!-- CodeMirror textarea for complex types -->\n <textarea\n v-else\n ref=\"fieldValueEditor\"\n id=\"fieldValue\"\n rows=\"3\"\n placeholder=\"Enter initial value (optional)...\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.value }\"\n ></textarea>\n\n <p v-if=\"fieldErrors.value\" class=\"mt-1 text-sm text-red-600\">{{fieldErrors.value}}</p>\n <p class=\"mt-1 text-xs text-gray-500\">\n <span v-if=\"shouldUseDatePicker\">Select a date or leave empty for null/undefined values.</span>\n <span v-else-if=\"shouldUseCodeMirror\">Leave empty for null/undefined values. Use valid JSON format.</span>\n <span v-else>Leave empty for null/undefined values.</span>\n </p>\n </div>\n\n\n <!-- Action Buttons -->\n <div class=\"flex justify-end gap-3 pt-4 border-t border-gray-200\">\n <button\n type=\"button\"\n @click=\"closeAddFieldModal\"\n class=\"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\"\n >\n Cancel\n </button>\n <button\n type=\"submit\"\n :disabled=\"isSubmittingField\"\n class=\"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n <span v-if=\"isSubmittingField\">Adding...</span>\n <span v-else>Add Field</span>\n </button>\n </div>\n </form>\n </div>\n </template>\n </modal>\n</div>\n";
|
|
2526
|
+
module.exports = "<div class=\"document-details\">\n <!-- View Toggle and Search/Filter Bar -->\n <div class=\"sticky top-[60px] z-40 bg-white p-4 border-b border-gray-200 shadow-sm\">\n\n <!-- Search and Filter Bar (only show in fields view) -->\n <div v-if=\"viewMode === 'fields'\" class=\"flex md:gap-3\">\n <!-- Search Bar -->\n <div class=\"relative flex-1\">\n <input\n ref=\"searchInput\"\n v-model=\"searchQuery\"\n type=\"text\"\n placeholder=\"Search fields...\"\n class=\"w-full px-4 py-2 pl-10 pr-4 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n />\n <div class=\"absolute inset-y-0 left-0 flex items-center pl-3\">\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"></path>\n </svg>\n </div>\n </div>\n\n <!-- Data Type Filter -->\n <div class=\"relative hidden md:block\">\n <select\n v-model=\"selectedType\"\n class=\"px-4 py-2 pr-8 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white min-w-[140px] appearance-none\"\n >\n <option value=\"\">All Types</option>\n <option v-for=\"type in availableTypes\" :key=\"type\" :value=\"type\">\n {{type}}\n </option>\n </select>\n <div class=\"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none\">\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"></path>\n </svg>\n </div>\n </div>\n\n <!-- Add Field Button -->\n <button\n @click=\"openAddFieldModal\"\n class=\"hidden md:flex px-4 py-2 text-sm font-medium text-white bg-green-600 hover:bg-green-700 rounded-lg focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2 items-center gap-2\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 4v16m8-8H4\"></path>\n </svg> Add Field\n </button>\n </div>\n </div>\n\n <!-- Fields View -->\n <div v-if=\"viewMode === 'fields'\">\n <!-- Matched Schema Paths (shown first when searching) -->\n <div\n v-for=\"path in matchedSchemaPaths\"\n :key=\"path.path || path\"\n class=\"value\"\n >\n <document-property\n :path=\"path\"\n :document=\"document\"\n :schemaPaths=\"schemaPaths\"\n :editting=\"editting\"\n :changes=\"changes\"\n :highlight=\"true\"\n :invalid=\"invalid\"></document-property>\n </div>\n\n <!-- Matched Virtual Fields (shown after matched schema paths when searching) -->\n <div\n v-for=\"path in matchedVirtuals\"\n :key=\"path.name\"\n class=\"border border-gray-200 rounded-lg mb-2 transition-all duration-200 ease-in-out mt-4\"\n >\n <!-- Virtual Field Header (Always Visible) -->\n <div\n @click=\"toggleVirtualField(path.name)\"\n class=\"p-3 bg-amber-100 hover:bg-amber-200 cursor-pointer flex items-center justify-between border-b border-gray-200 transition-colors duration-200 ease-in-out\"\n >\n <div class=\"flex items-center\">\n <svg\n :class=\"isVirtualFieldCollapsed(path.name) ? 'rotate-0' : 'rotate-90'\"\n class=\"w-4 h-4 text-gray-500 mr-2 transition-transform duration-200\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"></path>\n </svg>\n <span class=\"font-medium text-gray-900\">{{path.name}}</span>\n <span v-if=\"path.isVirtual\" class=\"ml-2 text-sm text-purple-600\">(virtual - {{getVirtualFieldType(path)}})</span>\n <span v-else class=\"ml-2 text-sm text-blue-600\">(user-added - {{getVirtualFieldType(path)}})</span>\n </div>\n </div>\n\n <!-- Virtual Field Content (Collapsible) -->\n <div v-if=\"!isVirtualFieldCollapsed(path.name)\" class=\"p-3\">\n <div v-if=\"path.value == null\" class=\"text-sky-800\">\n {{'' + path.value}}\n </div>\n <div v-else>\n {{path.value}}\n </div>\n </div>\n </div>\n\n <!-- Unmatched Schema Paths (shown after matched items when searching, or all when not searching) -->\n <div\n v-for=\"path in unmatchedSchemaPaths\"\n :key=\"path.path || path\"\n class=\"value\"\n >\n <document-property\n :path=\"path\"\n :document=\"document\"\n :schemaPaths=\"schemaPaths\"\n :editting=\"editting\"\n :changes=\"changes\"\n :highlight=\"false\"\n :invalid=\"invalid\"></document-property>\n </div>\n\n <!-- Unmatched Virtual Fields (shown last) -->\n <div\n v-for=\"path in unmatchedVirtuals\"\n :key=\"path.name\"\n class=\"border border-gray-200 rounded-lg mb-2 transition-all duration-200 ease-in-out\"\n >\n <!-- Virtual Field Header (Always Visible) -->\n <div\n @click=\"toggleVirtualField(path.name)\"\n class=\"p-3 bg-gray-50 hover:bg-gray-100 cursor-pointer flex items-center justify-between border-b border-gray-200 transition-colors duration-200 ease-in-out\"\n >\n <div class=\"flex items-center\">\n <svg\n :class=\"isVirtualFieldCollapsed(path.name) ? 'rotate-0' : 'rotate-90'\"\n class=\"w-4 h-4 text-gray-500 mr-2 transition-transform duration-200\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"></path>\n </svg>\n <span class=\"font-medium text-gray-900\">{{path.name}}</span>\n <span v-if=\"path.isVirtual\" class=\"ml-2 text-sm text-purple-600\">(virtual - {{getVirtualFieldType(path)}})</span>\n <span v-else class=\"ml-2 text-sm text-blue-600\">(user-added - {{getVirtualFieldType(path)}})</span>\n </div>\n </div>\n\n <!-- Virtual Field Content (Collapsible) -->\n <div v-if=\"!isVirtualFieldCollapsed(path.name)\" class=\"p-3\">\n <div v-if=\"path.value == null\" class=\"text-sky-800\">\n {{'' + path.value}}\n </div>\n <div v-else>\n {{path.value}}\n </div>\n </div>\n </div>\n\n <!-- No Results Message -->\n <div v-if=\"searchQuery.trim() && !hasSearchMatches\" class=\"text-center py-8 text-gray-500\">\n <svg class=\"w-12 h-12 mx-auto mb-4 text-gray-300\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.172 16.172a4 4 0 015.656 0M9 12h6m-6-4h6m2 5.291A7.962 7.962 0 0112 15c-2.34 0-4.29-1.009-5.824-2.709M15 6.291A7.962 7.962 0 0012 5c-2.34 0-4.29 1.009-5.824 2.709\"></path>\n </svg>\n <p>No fields found matching \"{{searchQuery}}\"</p>\n </div>\n </div>\n\n <!-- JSON View -->\n <div v-if=\"viewMode === 'json'\" class=\"json-view\">\n <div class=\"border border-gray-300 rounded-lg bg-gray-50 p-4 overflow-auto\">\n <pre class=\"text-sm font-mono text-gray-800 whitespace-pre\">{{formattedJson}}</pre>\n </div>\n </div>\n\n <!-- Add Field Modal -->\n <modal v-if=\"showAddFieldModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"closeAddFieldModal\">×</div>\n <div class=\"add-field-modal\">\n <div class=\"mb-6\">\n <h2 class=\"text-xl font-semibold text-gray-900 mb-2\">Add New Field</h2>\n <p class=\"text-sm text-gray-600\">Create a new field for this document</p>\n </div>\n\n <form @submit.prevent=\"handleAddFieldSubmit\" class=\"space-y-4\">\n <!-- Field Name -->\n <div>\n <label for=\"fieldName\" class=\"block text-sm font-medium text-gray-700 mb-1\">\n Field Name *\n </label>\n <input\n id=\"fieldName\"\n v-model=\"fieldData.name\"\n type=\"text\"\n required\n placeholder=\"Enter field name...\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.name }\"\n />\n <p v-if=\"fieldErrors.name\" class=\"mt-1 text-sm text-red-600\">{{fieldErrors.name}}</p>\n <p v-if=\"fieldData.name && getTransformedFieldName() !== fieldData.name.trim()\" class=\"mt-1 text-sm text-blue-600\">\n Field name will be: <code class=\"bg-blue-50 px-1 py-0.5 rounded text-xs\">{{getTransformedFieldName()}}</code>\n </p>\n </div>\n\n <!-- Field Type -->\n <div>\n <label for=\"fieldType\" class=\"block text-sm font-medium text-gray-700 mb-1\">\n Field Type *\n </label>\n <select\n id=\"fieldType\"\n v-model=\"fieldData.type\"\n required\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.type }\"\n >\n <option value=\"\">Select field type...</option>\n <option v-for=\"type in allFieldTypes\" :key=\"type\" :value=\"type\">\n {{type}}\n </option>\n </select>\n <p v-if=\"fieldErrors.type\" class=\"mt-1 text-sm text-red-600\">{{fieldErrors.type}}</p>\n </div>\n\n <!-- Field Value -->\n <div>\n <label for=\"fieldValue\" class=\"block text-sm font-medium text-gray-700 mb-1\">\n Initial Value\n </label>\n\n <!-- Date picker for Date type -->\n <input\n v-if=\"shouldUseDatePicker\"\n v-model=\"fieldData.value\"\n type=\"date\"\n id=\"fieldValue\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.value }\"\n />\n\n <!-- Simple input for basic types -->\n <input\n v-else-if=\"!shouldUseCodeMirror\"\n v-model=\"fieldData.value\"\n type=\"text\"\n id=\"fieldValue\"\n placeholder=\"Enter initial value (optional)...\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.value }\"\n />\n\n <!-- CodeMirror textarea for complex types -->\n <textarea\n v-else\n ref=\"fieldValueEditor\"\n id=\"fieldValue\"\n rows=\"3\"\n placeholder=\"Enter initial value (optional)...\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :class=\"{ 'border-red-500': fieldErrors.value }\"\n ></textarea>\n\n <p v-if=\"fieldErrors.value\" class=\"mt-1 text-sm text-red-600\">{{fieldErrors.value}}</p>\n <p class=\"mt-1 text-xs text-gray-500\">\n <span v-if=\"shouldUseDatePicker\">Select a date or leave empty for null/undefined values.</span>\n <span v-else-if=\"shouldUseCodeMirror\">Leave empty for null/undefined values. Use valid JSON format.</span>\n <span v-else>Leave empty for null/undefined values.</span>\n </p>\n </div>\n\n\n <!-- Action Buttons -->\n <div class=\"flex justify-end gap-3 pt-4 border-t border-gray-200\">\n <button\n type=\"button\"\n @click=\"closeAddFieldModal\"\n class=\"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\"\n >\n Cancel\n </button>\n <button\n type=\"submit\"\n :disabled=\"isSubmittingField\"\n class=\"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n <span v-if=\"isSubmittingField\">Adding...</span>\n <span v-else>Add Field</span>\n </button>\n </div>\n </form>\n </div>\n </template>\n </modal>\n</div>\n";
|
|
2328
2527
|
|
|
2329
|
-
/***/ }
|
|
2528
|
+
/***/ },
|
|
2330
2529
|
|
|
2331
|
-
/***/ "./frontend/src/document-details/document-details.js"
|
|
2530
|
+
/***/ "./frontend/src/document-details/document-details.js"
|
|
2332
2531
|
/*!***********************************************************!*\
|
|
2333
2532
|
!*** ./frontend/src/document-details/document-details.js ***!
|
|
2334
2533
|
\***********************************************************/
|
|
2335
|
-
|
|
2534
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2336
2535
|
|
|
2337
2536
|
"use strict";
|
|
2338
2537
|
|
|
@@ -2482,6 +2681,20 @@ module.exports = app => app.component('document-details', {
|
|
|
2482
2681
|
|
|
2483
2682
|
return matches.concat(nonMatches);
|
|
2484
2683
|
},
|
|
2684
|
+
matchedSchemaPaths() {
|
|
2685
|
+
if (!this.searchQuery.trim()) {
|
|
2686
|
+
return [];
|
|
2687
|
+
}
|
|
2688
|
+
const query = this.searchQuery.toLowerCase();
|
|
2689
|
+
return this.typeFilteredSchemaPaths.filter(path => path.path.toLowerCase().includes(query));
|
|
2690
|
+
},
|
|
2691
|
+
unmatchedSchemaPaths() {
|
|
2692
|
+
if (!this.searchQuery.trim()) {
|
|
2693
|
+
return this.typeFilteredSchemaPaths;
|
|
2694
|
+
}
|
|
2695
|
+
const query = this.searchQuery.toLowerCase();
|
|
2696
|
+
return this.typeFilteredSchemaPaths.filter(path => !path.path.toLowerCase().includes(query));
|
|
2697
|
+
},
|
|
2485
2698
|
typeFilteredVirtuals() {
|
|
2486
2699
|
let virtuals = this.virtuals;
|
|
2487
2700
|
|
|
@@ -2515,6 +2728,20 @@ module.exports = app => app.component('document-details', {
|
|
|
2515
2728
|
|
|
2516
2729
|
return matches.concat(nonMatches);
|
|
2517
2730
|
},
|
|
2731
|
+
matchedVirtuals() {
|
|
2732
|
+
if (!this.searchQuery.trim()) {
|
|
2733
|
+
return [];
|
|
2734
|
+
}
|
|
2735
|
+
const query = this.searchQuery.toLowerCase();
|
|
2736
|
+
return this.typeFilteredVirtuals.filter(virtual => virtual.name.toLowerCase().includes(query));
|
|
2737
|
+
},
|
|
2738
|
+
unmatchedVirtuals() {
|
|
2739
|
+
if (!this.searchQuery.trim()) {
|
|
2740
|
+
return this.typeFilteredVirtuals;
|
|
2741
|
+
}
|
|
2742
|
+
const query = this.searchQuery.toLowerCase();
|
|
2743
|
+
return this.typeFilteredVirtuals.filter(virtual => !virtual.name.toLowerCase().includes(query));
|
|
2744
|
+
},
|
|
2518
2745
|
schemaSearchMatchSet() {
|
|
2519
2746
|
if (!this.searchQuery.trim()) {
|
|
2520
2747
|
return new Set();
|
|
@@ -2675,7 +2902,7 @@ module.exports = app => app.component('document-details', {
|
|
|
2675
2902
|
|
|
2676
2903
|
try {
|
|
2677
2904
|
const fieldData = {
|
|
2678
|
-
name: this.
|
|
2905
|
+
name: this.fieldData.name,
|
|
2679
2906
|
type: this.fieldData.type,
|
|
2680
2907
|
value: this.parseFieldValue(this.fieldData.value, this.fieldData.type)
|
|
2681
2908
|
};
|
|
@@ -2721,18 +2948,6 @@ module.exports = app => app.component('document-details', {
|
|
|
2721
2948
|
this.fieldValueEditor = null;
|
|
2722
2949
|
}
|
|
2723
2950
|
},
|
|
2724
|
-
toSnakeCase(str) {
|
|
2725
|
-
return str
|
|
2726
|
-
.trim()
|
|
2727
|
-
.replace(/\s+/g, '_') // Replace spaces with underscores
|
|
2728
|
-
.replace(/[^a-zA-Z0-9_$]/g, '') // Remove invalid characters
|
|
2729
|
-
.replace(/^[0-9]/, '_$&') // Prefix numbers with underscore
|
|
2730
|
-
.toLowerCase();
|
|
2731
|
-
},
|
|
2732
|
-
getTransformedFieldName() {
|
|
2733
|
-
if (!this.fieldData.name) return '';
|
|
2734
|
-
return this.toSnakeCase(this.fieldData.name.trim());
|
|
2735
|
-
},
|
|
2736
2951
|
getVirtualFieldType(virtual) {
|
|
2737
2952
|
const value = virtual.value;
|
|
2738
2953
|
if (value === null || value === undefined) {
|
|
@@ -2762,35 +2977,35 @@ module.exports = app => app.component('document-details', {
|
|
|
2762
2977
|
});
|
|
2763
2978
|
|
|
2764
2979
|
|
|
2765
|
-
/***/ }
|
|
2980
|
+
/***/ },
|
|
2766
2981
|
|
|
2767
|
-
/***/ "./frontend/src/document-details/document-property/document-property.css"
|
|
2982
|
+
/***/ "./frontend/src/document-details/document-property/document-property.css"
|
|
2768
2983
|
/*!*******************************************************************************!*\
|
|
2769
2984
|
!*** ./frontend/src/document-details/document-property/document-property.css ***!
|
|
2770
2985
|
\*******************************************************************************/
|
|
2771
|
-
|
|
2986
|
+
(module) {
|
|
2772
2987
|
|
|
2773
2988
|
"use strict";
|
|
2774
2989
|
module.exports = ".document-details {\n width: 100%;\n }\n \n .document-details .value {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n \n .document-details .path-key {\n background-color: #f0f0f0;\n margin-bottom: 0.5em;\n }\n \n .document-details .path-type {\n color: rgba(0,0,0,.36);\n font-size: 0.8em;\n }\n \n .document-details .date-position {\n float: right;\n margin-top: -7px;\n }\n";
|
|
2775
2990
|
|
|
2776
|
-
/***/ }
|
|
2991
|
+
/***/ },
|
|
2777
2992
|
|
|
2778
|
-
/***/ "./frontend/src/document-details/document-property/document-property.html"
|
|
2993
|
+
/***/ "./frontend/src/document-details/document-property/document-property.html"
|
|
2779
2994
|
/*!********************************************************************************!*\
|
|
2780
2995
|
!*** ./frontend/src/document-details/document-property/document-property.html ***!
|
|
2781
2996
|
\********************************************************************************/
|
|
2782
|
-
|
|
2997
|
+
(module) {
|
|
2783
2998
|
|
|
2784
2999
|
"use strict";
|
|
2785
|
-
module.exports = "<div class=\"border border-gray-200 rounded-lg mb-2\">\n <!-- Collapsible Header -->\n <div\n @click=\"toggleCollapse\"\n class=\"p-3
|
|
3000
|
+
module.exports = "<div class=\"border border-gray-200 rounded-lg mb-2\">\n <!-- Collapsible Header -->\n <div\n @click=\"toggleCollapse\"\n class=\"p-3 cursor-pointer flex items-center justify-between border-b border-gray-200 transition-colors duration-200 ease-in-out\"\n :class=\"{ 'bg-amber-100 hover:bg-amber-200': highlight, 'bg-gray-50 hover:bg-gray-100': !highlight }\"\n >\n <div class=\"flex items-center\" >\n <svg\n :class=\"isCollapsed ? 'rotate-0' : 'rotate-90'\"\n class=\"w-4 h-4 text-gray-500 mr-2 transition-transform duration-200\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"></path>\n </svg>\n <span class=\"font-medium text-gray-900\">{{path.path}}</span>\n <span class=\"ml-2 text-sm text-gray-500\">({{(path.instance || 'unknown').toLowerCase()}})</span>\n </div>\n <div class=\"flex items-center gap-2\">\n <button\n type=\"button\"\n class=\"flex items-center gap-1 text-sm text-gray-600 hover:text-gray-800 px-2 py-1 rounded-md border border-transparent hover:border-gray-300 bg-white\"\n @click.stop.prevent=\"copyPropertyValue\"\n title=\"Copy value\"\n aria-label=\"Copy property value\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 7h8m-8 4h8m-8 4h5m-7-9a2 2 0 012-2h7a2 2 0 012 2v10a2 2 0 01-2 2H8l-4-4V7a2 2 0 012-2z\" />\n </svg>\n {{copyButtonLabel}}\n </button>\n <router-link\n v-if=\"path.ref && getValueForPath(path.path)\"\n :to=\"`/model/${path.ref}/document/${getValueForPath(path.path)}`\"\n class=\"bg-ultramarine-600 hover:bg-ultramarine-500 text-white px-2 py-1 text-sm rounded-md\"\n @click.stop\n >View Document\n </router-link>\n </div>\n </div>\n\n <!-- Collapsible Content -->\n <div v-if=\"!isCollapsed\" class=\"p-3\">\n <!-- Date Type Selector (when editing dates) -->\n <div v-if=\"editting && path.instance === 'Date'\" class=\"mb-3 flex gap-1.5\">\n <div\n @click=\"dateType = 'picker'\"\n :class=\"dateType === 'picker' ? 'bg-teal-600' : ''\"\n class=\"self-stretch px-2 py-1 rounded-sm justify-center items-center gap-1.5 flex cursor-pointer\">\n <div\n :class=\"dateType === 'picker' ? 'text-white' : ''\"\n class=\"text-xs font-medium font-['Lato'] capitalize leading-tight\">\n Date Picker\n </div>\n </div>\n <div\n @click=\"dateType = 'iso'\"\n :class=\"dateType === 'iso' ? 'bg-teal-600' : ''\"\n class=\"self-stretch px-2 py-1 rounded-sm justify-center items-center gap-1.5 flex cursor-pointer\">\n <div\n :class=\"dateType === 'iso' ? 'text-white' : ''\"\n class=\"text-xs font-medium font-['Lato'] capitalize leading-tight\">\n ISO String\n </div>\n </div>\n </div>\n\n <!-- Field Content -->\n <div v-if=\"editting && path.path !== '_id'\">\n <component\n :is=\"getEditComponentForPath(path)\"\n :value=\"getEditValueForPath(path)\"\n :format=\"dateType\"\n v-bind=\"getEditComponentProps(path)\"\n @input=\"changes[path.path] = $event; delete invalid[path.path];\"\n @error=\"invalid[path.path] = $event;\"\n >\n </component>\n </div>\n <div v-else>\n <!-- Show truncated or full value based on needsTruncation and isValueExpanded -->\n <!-- Special handling for truncated arrays -->\n <div v-if=\"isArray && shouldShowTruncated\" class=\"w-full\">\n <div class=\"mt-2\">\n <div\n v-for=\"(item, index) in truncatedArrayItems\"\n :key=\"index\"\n class=\"mb-1.5 py-2.5 px-3 pl-4 bg-transparent border-l-[3px] border-l-blue-500 rounded-none transition-all duration-200 cursor-pointer relative hover:bg-slate-50 hover:border-l-blue-600\">\n <div class=\"absolute -left-2 top-1/2 -translate-y-1/2 w-5 h-5 bg-blue-500 text-white rounded-full flex items-center justify-center text-[10px] font-semibold font-mono z-10 hover:bg-blue-600\">{{ index }}</div>\n <div v-if=\"arrayUtils.isObjectItem(item)\" class=\"flex flex-col gap-1 mt-1 px-2\">\n <div\n v-for=\"key in arrayUtils.getItemKeys(item)\"\n :key=\"key\"\n class=\"flex items-start gap-2 text-xs font-mono\">\n <span class=\"font-semibold text-gray-600 flex-shrink-0 min-w-[80px]\">{{ key }}:</span>\n <span class=\"text-gray-800 break-words whitespace-pre-wrap flex-1\">{{ arrayUtils.formatItemValue(item, key) }}</span>\n </div>\n </div>\n <div v-else class=\"text-xs py-1.5 px-2 font-mono text-gray-800 break-words whitespace-pre-wrap mt-1\">{{ arrayUtils.formatValue(item) }}</div>\n </div>\n <div class=\"mb-1.5 py-2.5 px-3 pl-4 bg-transparent border-none border-l-[3px] border-l-blue-500 rounded-none transition-all duration-200 cursor-pointer relative opacity-70 hover:opacity-100\">\n <div class=\"text-xs py-1.5 px-2 font-mono text-gray-500 italic break-words whitespace-pre-wrap mt-1\">\n ... and {{ remainingArrayCount }} more item{{ remainingArrayCount !== 1 ? 's' : '' }}\n </div>\n </div>\n </div>\n <button\n @click=\"toggleValueExpansion\"\n class=\"mt-2 text-blue-600 hover:text-blue-800 text-sm font-medium flex items-center gap-1 transform transition-all duration-200 ease-in-out hover:translate-x-0.5\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"></path>\n </svg>\n Show all {{ arrayValue.length }} items\n </button>\n </div>\n <!-- Non-array truncated view -->\n <div v-else-if=\"shouldShowTruncated && !isArray\" class=\"relative\">\n <div class=\"text-gray-700 whitespace-pre-wrap break-words font-mono text-sm\">{{truncatedString}}</div>\n <button\n @click=\"toggleValueExpansion\"\n class=\"mt-2 text-blue-600 hover:text-blue-800 text-sm font-medium flex items-center gap-1 transform transition-all duration-200 ease-in-out hover:translate-x-0.5\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"></path>\n </svg>\n Show more ({{valueAsString.length}} characters)\n </button>\n </div>\n <!-- Expanded view -->\n <div v-else-if=\"needsTruncation && isValueExpanded\" class=\"relative\">\n <component :is=\"getComponentForPath(path)\" :value=\"getValueForPath(path.path)\"></component>\n <button\n @click=\"toggleValueExpansion\"\n class=\"mt-2 text-blue-600 hover:text-blue-800 text-sm font-medium flex items-center gap-1 transform transition-all duration-200 ease-in-out hover:translate-x-0.5\"\n >\n <svg class=\"w-4 h-4 rotate-180\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"></path>\n </svg>\n Show less\n </button>\n </div>\n <!-- Full view (no truncation needed) -->\n <div v-else>\n <component :is=\"getComponentForPath(path)\" :value=\"getValueForPath(path.path)\"></component>\n </div>\n </div>\n </div>\n</div>\n";
|
|
2786
3001
|
|
|
2787
|
-
/***/ }
|
|
3002
|
+
/***/ },
|
|
2788
3003
|
|
|
2789
|
-
/***/ "./frontend/src/document-details/document-property/document-property.js"
|
|
3004
|
+
/***/ "./frontend/src/document-details/document-property/document-property.js"
|
|
2790
3005
|
/*!******************************************************************************!*\
|
|
2791
3006
|
!*** ./frontend/src/document-details/document-property/document-property.js ***!
|
|
2792
3007
|
\******************************************************************************/
|
|
2793
|
-
|
|
3008
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2794
3009
|
|
|
2795
3010
|
"use strict";
|
|
2796
3011
|
/* global clearTimeout setTimeout */
|
|
@@ -2798,6 +3013,7 @@ module.exports = "<div class=\"border border-gray-200 rounded-lg mb-2\">\n <!--
|
|
|
2798
3013
|
|
|
2799
3014
|
|
|
2800
3015
|
const mpath = __webpack_require__(/*! mpath */ "./node_modules/mpath/index.js");
|
|
3016
|
+
const { inspect } = __webpack_require__(/*! node-inspect-extracted */ "./node_modules/node-inspect-extracted/dist/inspect.js");
|
|
2801
3017
|
const template = __webpack_require__(/*! ./document-property.html */ "./frontend/src/document-details/document-property/document-property.html");
|
|
2802
3018
|
|
|
2803
3019
|
const appendCSS = __webpack_require__(/*! ../../appendCSS */ "./frontend/src/appendCSS.js");
|
|
@@ -2833,10 +3049,32 @@ module.exports = app => app.component('document-property', {
|
|
|
2833
3049
|
}
|
|
2834
3050
|
return String(value);
|
|
2835
3051
|
},
|
|
3052
|
+
_arrayValueData() {
|
|
3053
|
+
const value = this.getValueForPath(this.path.path);
|
|
3054
|
+
return {
|
|
3055
|
+
value: Array.isArray(value) ? value : [],
|
|
3056
|
+
isArray: Array.isArray(value)
|
|
3057
|
+
};
|
|
3058
|
+
},
|
|
3059
|
+
isArray() {
|
|
3060
|
+
return this._arrayValueData.isArray;
|
|
3061
|
+
},
|
|
3062
|
+
arrayValue() {
|
|
3063
|
+
return this._arrayValueData.value;
|
|
3064
|
+
},
|
|
2836
3065
|
needsTruncation() {
|
|
2837
|
-
//
|
|
3066
|
+
// For arrays, check if it has more than 3 items (regardless of expansion state)
|
|
3067
|
+
if (this.isArray) {
|
|
3068
|
+
const arr = this.arrayValue;
|
|
3069
|
+
return arr && arr.length > 3;
|
|
3070
|
+
}
|
|
3071
|
+
// For other types, truncate if value is longer than 200 characters
|
|
2838
3072
|
return this.valueAsString.length > 200;
|
|
2839
3073
|
},
|
|
3074
|
+
shouldShowTruncated() {
|
|
3075
|
+
// For other types, show truncated if needs truncation and not expanded
|
|
3076
|
+
return this.needsTruncation && !this.isValueExpanded;
|
|
3077
|
+
},
|
|
2840
3078
|
displayValue() {
|
|
2841
3079
|
if (!this.needsTruncation || this.isValueExpanded) {
|
|
2842
3080
|
return this.getValueForPath(this.path.path);
|
|
@@ -2846,9 +3084,24 @@ module.exports = app => app.component('document-property', {
|
|
|
2846
3084
|
},
|
|
2847
3085
|
truncatedString() {
|
|
2848
3086
|
if (this.needsTruncation && !this.isValueExpanded) {
|
|
2849
|
-
|
|
3087
|
+
// Arrays are handled in template, so this is for non-arrays
|
|
3088
|
+
if (!this.isArray) {
|
|
3089
|
+
return this.valueAsString.substring(0, 200) + '...';
|
|
3090
|
+
}
|
|
2850
3091
|
}
|
|
2851
3092
|
return this.valueAsString;
|
|
3093
|
+
},
|
|
3094
|
+
truncatedArrayItems() {
|
|
3095
|
+
if (this.isArray && this.needsTruncation && !this.isValueExpanded) {
|
|
3096
|
+
return this.arrayValue.slice(0, 2);
|
|
3097
|
+
}
|
|
3098
|
+
return [];
|
|
3099
|
+
},
|
|
3100
|
+
remainingArrayCount() {
|
|
3101
|
+
if (this.isArray && this.needsTruncation && !this.isValueExpanded) {
|
|
3102
|
+
return this.arrayValue.length - 2;
|
|
3103
|
+
}
|
|
3104
|
+
return 0;
|
|
2852
3105
|
}
|
|
2853
3106
|
},
|
|
2854
3107
|
methods: {
|
|
@@ -2874,6 +3127,9 @@ module.exports = app => app.component('document-property', {
|
|
|
2874
3127
|
if (path.instance === 'Embedded') {
|
|
2875
3128
|
return 'edit-subdocument';
|
|
2876
3129
|
}
|
|
3130
|
+
if (path.instance === 'Mixed') {
|
|
3131
|
+
return 'edit-subdocument';
|
|
3132
|
+
}
|
|
2877
3133
|
if (path.instance === 'Boolean') {
|
|
2878
3134
|
return 'edit-boolean';
|
|
2879
3135
|
}
|
|
@@ -2886,6 +3142,10 @@ module.exports = app => app.component('document-property', {
|
|
|
2886
3142
|
props.enumValues = path.enum;
|
|
2887
3143
|
}
|
|
2888
3144
|
}
|
|
3145
|
+
if (path.instance === 'Array') {
|
|
3146
|
+
props.path = path;
|
|
3147
|
+
props.schemaPaths = this.schemaPaths;
|
|
3148
|
+
}
|
|
2889
3149
|
return props;
|
|
2890
3150
|
},
|
|
2891
3151
|
getValueForPath(path) {
|
|
@@ -2961,24 +3221,24 @@ module.exports = app => app.component('document-property', {
|
|
|
2961
3221
|
});
|
|
2962
3222
|
|
|
2963
3223
|
|
|
2964
|
-
/***/ }
|
|
3224
|
+
/***/ },
|
|
2965
3225
|
|
|
2966
|
-
/***/ "./frontend/src/document/confirm-changes/confirm-changes.html"
|
|
3226
|
+
/***/ "./frontend/src/document/confirm-changes/confirm-changes.html"
|
|
2967
3227
|
/*!********************************************************************!*\
|
|
2968
3228
|
!*** ./frontend/src/document/confirm-changes/confirm-changes.html ***!
|
|
2969
3229
|
\********************************************************************/
|
|
2970
|
-
|
|
3230
|
+
(module) {
|
|
2971
3231
|
|
|
2972
3232
|
"use strict";
|
|
2973
3233
|
module.exports = "<div>\n <h2>\n Are you sure you want to save the following changes?\n </h2>\n <pre class=\"max-h-[50vh] overflow-auto\"><code ref=\"code\" class=\"language-javascript\" v-text=\"displayValue\"></code></pre>\n <div class=\"flex gap-2 mt-2\">\n <async-button\n class=\"rounded-md bg-green-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\"\n @click=\"startSave\">\n Confirm\n </async-button>\n <button \n class=\"rounded-md bg-gray-200 px-2.5 py-1.5 text-sm font-semibold text-black shadow-sm hover:bg-gray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-300\"\n @click=\"closeConfirm\">\n Cancel\n </button>\n </div>\n</div>";
|
|
2974
3234
|
|
|
2975
|
-
/***/ }
|
|
3235
|
+
/***/ },
|
|
2976
3236
|
|
|
2977
|
-
/***/ "./frontend/src/document/confirm-changes/confirm-changes.js"
|
|
3237
|
+
/***/ "./frontend/src/document/confirm-changes/confirm-changes.js"
|
|
2978
3238
|
/*!******************************************************************!*\
|
|
2979
3239
|
!*** ./frontend/src/document/confirm-changes/confirm-changes.js ***!
|
|
2980
3240
|
\******************************************************************/
|
|
2981
|
-
|
|
3241
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2982
3242
|
|
|
2983
3243
|
"use strict";
|
|
2984
3244
|
|
|
@@ -3006,24 +3266,24 @@ module.exports = app => app.component('confirm-changes', {
|
|
|
3006
3266
|
}
|
|
3007
3267
|
});
|
|
3008
3268
|
|
|
3009
|
-
/***/ }
|
|
3269
|
+
/***/ },
|
|
3010
3270
|
|
|
3011
|
-
/***/ "./frontend/src/document/confirm-delete/confirm-delete.html"
|
|
3271
|
+
/***/ "./frontend/src/document/confirm-delete/confirm-delete.html"
|
|
3012
3272
|
/*!******************************************************************!*\
|
|
3013
3273
|
!*** ./frontend/src/document/confirm-delete/confirm-delete.html ***!
|
|
3014
3274
|
\******************************************************************/
|
|
3015
|
-
|
|
3275
|
+
(module) {
|
|
3016
3276
|
|
|
3017
3277
|
"use strict";
|
|
3018
3278
|
module.exports = "<div>\n <h2>\n Are you sure you want to delete the following document?\n </h2>\n <pre class=\"max-h-[50vh] overflow-auto\"><code ref=\"code\" class=\"language-javascript\" v-text=\"displayValue\"></code></pre>\n <div class=\"flex gap-2 mt-2\">\n <async-button\n class=\"rounded-md bg-green-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\"\n @click=\"startDelete\">\n Confirm\n </async-button>\n <button\n class=\"rounded-md bg-gray-200 px-2.5 py-1.5 text-sm font-semibold text-black shadow-sm hover:bg-gray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-300\"\n @click=\"closeDelete\">\n Cancel\n </button>\n </div>\n</div>\n";
|
|
3019
3279
|
|
|
3020
|
-
/***/ }
|
|
3280
|
+
/***/ },
|
|
3021
3281
|
|
|
3022
|
-
/***/ "./frontend/src/document/confirm-delete/confirm-delete.js"
|
|
3282
|
+
/***/ "./frontend/src/document/confirm-delete/confirm-delete.js"
|
|
3023
3283
|
/*!****************************************************************!*\
|
|
3024
3284
|
!*** ./frontend/src/document/confirm-delete/confirm-delete.js ***!
|
|
3025
3285
|
\****************************************************************/
|
|
3026
|
-
|
|
3286
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3027
3287
|
|
|
3028
3288
|
"use strict";
|
|
3029
3289
|
|
|
@@ -3051,35 +3311,35 @@ module.exports = app => app.component('confirm-delete', {
|
|
|
3051
3311
|
}
|
|
3052
3312
|
});
|
|
3053
3313
|
|
|
3054
|
-
/***/ }
|
|
3314
|
+
/***/ },
|
|
3055
3315
|
|
|
3056
|
-
/***/ "./frontend/src/document/document.css"
|
|
3316
|
+
/***/ "./frontend/src/document/document.css"
|
|
3057
3317
|
/*!********************************************!*\
|
|
3058
3318
|
!*** ./frontend/src/document/document.css ***!
|
|
3059
3319
|
\********************************************/
|
|
3060
|
-
|
|
3320
|
+
(module) {
|
|
3061
3321
|
|
|
3062
3322
|
"use strict";
|
|
3063
3323
|
module.exports = ".document {\n max-width: 1200px;\n margin-left: auto;\n margin-right: auto;\n padding-top: 25px;\n}\n\n.document .document-menu {\n display: flex;\n position: sticky;\n top: 0;\n z-index: 100;\n background-color: white;\n border-radius: 5px;\n padding: 15px 15px;\n margin: -15px 0 15px 0;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.document .document-menu .left {\n flex-grow: 1;\n}\n\n.document .document-menu .right {\n flex-grow: 1;\n text-align: right;\n}\n\n.document .document-menu .right button:not(:last-child) {\n margin-right: 0.5em;\n}\n\n.document button img {\n height: 1em;\n}";
|
|
3064
3324
|
|
|
3065
|
-
/***/ }
|
|
3325
|
+
/***/ },
|
|
3066
3326
|
|
|
3067
|
-
/***/ "./frontend/src/document/document.html"
|
|
3327
|
+
/***/ "./frontend/src/document/document.html"
|
|
3068
3328
|
/*!*********************************************!*\
|
|
3069
3329
|
!*** ./frontend/src/document/document.html ***!
|
|
3070
3330
|
\*********************************************/
|
|
3071
|
-
|
|
3331
|
+
(module) {
|
|
3072
3332
|
|
|
3073
3333
|
"use strict";
|
|
3074
3334
|
module.exports = "<div class=\"document px-1 md:px-0\">\n <div class=\"flex justify-between sticky top-0 z-50 bg-white p-4 border-b border-gray-200 shadow-sm\">\n <div class=\"flex\">\n <button\n @click=\"goBack\"\n class=\"mr-2 rounded-md bg-gray-400 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-slate-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-slate-600\">\n ‹ Back\n </button>\n <button\n @click=\"viewMode = 'fields'\"\n :class=\"viewMode === 'fields'\n ? 'bg-blue-600 text-white z-10'\n : 'bg-gray-200 text-gray-700 hover:bg-gray-300'\"\n class=\"px-4 py-2 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-blue-500 flex items-center gap-2 border border-gray-300 border-r-0 rounded-l-lg rounded-r-none\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 10h16M4 14h16M4 18h16\"></path>\n </svg>\n Fields\n </button>\n <button\n @click=\"viewMode = 'json'\"\n :class=\"viewMode === 'json'\n ? 'bg-blue-600 text-white z-10'\n : 'bg-gray-200 text-gray-700 hover:bg-gray-300'\"\n class=\"px-4 py-2 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-blue-500 flex items-center gap-2 border border-gray-300 rounded-r-lg rounded-l-none\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4\"></path>\n </svg>\n JSON\n </button>\n </div>\n\n <div class=\"gap-2 hidden md:flex\">\n <button\n v-if=\"!editting\"\n @click=\"editting = true\"\n :disabled=\"!canEdit\"\n :class=\"{'cursor-not-allowed opacity-50': !canEdit}\"\n type=\"button\"\n class=\"rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">\n <img src=\"images/edit.svg\" class=\"inline\" /> Edit\n </button>\n <button\n v-if=\"editting\"\n @click=\"editting = false\"\n type=\"button\"\n class=\"rounded-md bg-slate-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-slate-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-slate-600\">\n × Cancel\n </button>\n <button\n v-if=\"editting\"\n :disabled=\"!canManipulate\"\n :class=\"{'cursor-not-allowed opacity-50': !canManipulate}\"\n @click=\"shouldShowConfirmModal=true;\"\n type=\"button\"\n class=\"rounded-md bg-forest-green-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\">\n <img src=\"images/save.svg\" class=\"inline\" /> Save\n </button>\n <button\n @click=\"shouldShowDeleteModal=true;\"\n :disabled=\"!canManipulate\"\n :class=\"{'cursor-not-allowed opacity-50': !canManipulate}\"\n type=\"button\"\n class=\"rounded-md bg-valencia-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-valencia-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600\">\n <img src=\"images/delete.svg\" class=\"inline\" /> Delete\n </button>\n <button\n @click=\"shouldShowCloneModal=true;\"\n :disabled=\"!canManipulate\"\n :class=\"{'cursor-not-allowed opacity-50': !canManipulate}\"\n type=\"button\"\n class=\"rounded-md bg-pink-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-valencia-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600\">\n <img src=\"images/duplicate.svg\" class=\"inline\" /> Clone\n </button>\n </div>\n <div class=\"md:hidden flex items-center\">\n <div class=\"relative\">\n <button\n @click=\"mobileMenuOpen = !mobileMenuOpen\"\n type=\"button\"\n class=\"inline-flex items-center justify-center rounded-md bg-gray-200 px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n aria-expanded=\"mobileMenuOpen\"\n aria-label=\"Open menu\"\n >\n <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M4 6h16M4 12h16M4 18h16\"></path>\n </svg>\n </button>\n <div\n v-show=\"mobileMenuOpen\"\n @click.away=\"mobileMenuOpen = false\"\n class=\"origin-top-right absolute right-0 mt-2 w-52 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 z-50\"\n >\n <div class=\"py-1 flex flex-col\">\n <button\n v-if=\"!editting\"\n @click=\"editting = true; mobileMenuOpen = false\"\n :disabled=\"!canEdit\"\n :class=\"['flex items-center px-4 py-2 text-sm text-gray-700', !canEdit ? 'cursor-not-allowed opacity-50' : 'hover:bg-ultramarine-100']\"\n type=\"button\"\n >\n <img src=\"images/edit.svg\" class=\"inline mr-2\" /> Edit\n </button>\n <button\n v-if=\"editting\"\n @click=\"editting = false; mobileMenuOpen = false\"\n type=\"button\"\n class=\"flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-slate-100\"\n >\n × Cancel\n </button>\n <button\n v-if=\"editting\"\n :disabled=\"!canManipulate\"\n :class=\"['flex items-center px-4 py-2 text-sm text-gray-700', !canManipulate ? 'cursor-not-allowed opacity-50' : 'hover:bg-green-100']\"\n @click=\"shouldShowConfirmModal=true; mobileMenuOpen = false\"\n type=\"button\"\n >\n <img src=\"images/save.svg\" class=\"inline mr-2\" /> Save\n </button>\n <button\n @click=\"shouldShowDeleteModal=true; mobileMenuOpen = false\"\n :disabled=\"!canManipulate\"\n :class=\"['flex items-center px-4 py-2 text-sm text-gray-700', !canManipulate ? 'cursor-not-allowed opacity-50' : 'hover:bg-red-100']\"\n type=\"button\"\n >\n <img src=\"images/delete.svg\" class=\"inline mr-2\" /> Delete\n </button>\n <button\n @click=\"shouldShowCloneModal=true; mobileMenuOpen = false\"\n :disabled=\"!canManipulate\"\n :class=\"['flex items-center px-4 py-2 text-sm text-gray-700', !canManipulate ? 'cursor-not-allowed opacity-50' : 'hover:bg-pink-100']\"\n type=\"button\"\n >\n <img src=\"images/duplicate.svg\" class=\"inline mr-2\" /> Clone\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-if=\"status === 'loaded'\">\n <document-details\n :document=\"document\"\n :schemaPaths=\"schemaPaths\"\n :virtualPaths=\"virtualPaths\"\n :editting=\"editting\"\n :changes=\"changes\"\n :invalid=\"invalid\"\n :viewMode=\"viewMode\"\n @add-field=\"addField\"\n @view-mode-change=\"updateViewMode\"></document-details>\n <modal v-if=\"shouldShowConfirmModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowConfirmModal = false;\">×</div>\n <confirm-changes @close=\"shouldShowConfirmModal = false;\" @save=\"save\" :value=\"changes\"></confirm-changes>\n </template>\n </modal>\n <modal v-if=\"shouldShowDeleteModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowDeleteModal = false;\">×</div>\n <confirm-delete @close=\"shouldShowDeleteModal = false;\" @remove=\"remove\" :value=\"document\"></confirm-delete>\n </template>\n </modal>\n <modal v-if=\"shouldShowCloneModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowCloneModal = false;\">×</div>\n <clone-document :currentModel=\"model\" :doc=\"document\" :schemaPaths=\"schemaPaths\" @close=\"showClonedDocument\"></clone-document>\n </template>\n </modal>\n </div>\n</div>\n";
|
|
3075
3335
|
|
|
3076
|
-
/***/ }
|
|
3336
|
+
/***/ },
|
|
3077
3337
|
|
|
3078
|
-
/***/ "./frontend/src/document/document.js"
|
|
3338
|
+
/***/ "./frontend/src/document/document.js"
|
|
3079
3339
|
/*!*******************************************!*\
|
|
3080
3340
|
!*** ./frontend/src/document/document.js ***!
|
|
3081
3341
|
\*******************************************/
|
|
3082
|
-
|
|
3342
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3083
3343
|
|
|
3084
3344
|
"use strict";
|
|
3085
3345
|
|
|
@@ -3087,7 +3347,7 @@ module.exports = "<div class=\"document px-1 md:px-0\">\n <div class=\"flex jus
|
|
|
3087
3347
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
3088
3348
|
const mpath = __webpack_require__(/*! mpath */ "./node_modules/mpath/index.js");
|
|
3089
3349
|
const template = __webpack_require__(/*! ./document.html */ "./frontend/src/document/document.html");
|
|
3090
|
-
const
|
|
3350
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
3091
3351
|
|
|
3092
3352
|
const appendCSS = __webpack_require__(/*! ../appendCSS */ "./frontend/src/appendCSS.js");
|
|
3093
3353
|
|
|
@@ -3116,20 +3376,24 @@ module.exports = app => app.component('document', {
|
|
|
3116
3376
|
window.pageState = this;
|
|
3117
3377
|
// Store query parameters from the route (preserved from models page)
|
|
3118
3378
|
this.previousQuery = Object.assign({}, this.$route.query);
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3379
|
+
try {
|
|
3380
|
+
const { doc, schemaPaths, virtualPaths } = await api.Model.getDocument({ model: this.model, documentId: this.documentId });
|
|
3381
|
+
window.doc = doc;
|
|
3382
|
+
this.document = doc;
|
|
3383
|
+
this.schemaPaths = Object.keys(schemaPaths).sort((k1, k2) => {
|
|
3384
|
+
if (k1 === '_id' && k2 !== '_id') {
|
|
3385
|
+
return -1;
|
|
3386
|
+
}
|
|
3387
|
+
if (k1 !== '_id' && k2 === '_id') {
|
|
3388
|
+
return 1;
|
|
3389
|
+
}
|
|
3390
|
+
return 0;
|
|
3391
|
+
}).map(key => schemaPaths[key]);
|
|
3392
|
+
this.virtualPaths = virtualPaths || [];
|
|
3393
|
+
this.status = 'loaded';
|
|
3394
|
+
} finally {
|
|
3395
|
+
this.status = 'loaded';
|
|
3396
|
+
}
|
|
3133
3397
|
},
|
|
3134
3398
|
computed: {
|
|
3135
3399
|
canManipulate() {
|
|
@@ -3163,6 +3427,13 @@ module.exports = app => app.component('document', {
|
|
|
3163
3427
|
this.changes = {};
|
|
3164
3428
|
this.editting = false;
|
|
3165
3429
|
this.shouldShowConfirmModal = false;
|
|
3430
|
+
vanillatoasts.create({
|
|
3431
|
+
title: 'Document saved!',
|
|
3432
|
+
type: 'success',
|
|
3433
|
+
timeout: 3000,
|
|
3434
|
+
icon: 'images/success.png',
|
|
3435
|
+
positionClass: 'bottomRight'
|
|
3436
|
+
});
|
|
3166
3437
|
},
|
|
3167
3438
|
async remove() {
|
|
3168
3439
|
const { doc } = await api.Model.deleteDocument({
|
|
@@ -3172,10 +3443,11 @@ module.exports = app => app.component('document', {
|
|
|
3172
3443
|
if (doc.acknowledged) {
|
|
3173
3444
|
this.editting = false;
|
|
3174
3445
|
this.document = {};
|
|
3175
|
-
|
|
3176
|
-
title: 'Document
|
|
3446
|
+
vanillatoasts.create({
|
|
3447
|
+
title: 'Document deleted!',
|
|
3177
3448
|
type: 'success',
|
|
3178
3449
|
timeout: 3000,
|
|
3450
|
+
icon: 'images/success.png',
|
|
3179
3451
|
positionClass: 'bottomRight'
|
|
3180
3452
|
});
|
|
3181
3453
|
this.$router.push({
|
|
@@ -3196,12 +3468,12 @@ module.exports = app => app.component('document', {
|
|
|
3196
3468
|
});
|
|
3197
3469
|
this.document = doc;
|
|
3198
3470
|
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
title: 'Field Added!',
|
|
3471
|
+
vanillatoasts.create({
|
|
3472
|
+
title: 'Field added!',
|
|
3202
3473
|
text: `Field "${fieldData.name}" has been added to the document`,
|
|
3203
3474
|
type: 'success',
|
|
3204
3475
|
timeout: 3000,
|
|
3476
|
+
icon: 'images/success.png',
|
|
3205
3477
|
positionClass: 'bottomRight'
|
|
3206
3478
|
});
|
|
3207
3479
|
},
|
|
@@ -3224,35 +3496,24 @@ module.exports = app => app.component('document', {
|
|
|
3224
3496
|
});
|
|
3225
3497
|
|
|
3226
3498
|
|
|
3227
|
-
/***/ }
|
|
3228
|
-
|
|
3229
|
-
/***/ "./frontend/src/edit-array/edit-array.css":
|
|
3230
|
-
/*!************************************************!*\
|
|
3231
|
-
!*** ./frontend/src/edit-array/edit-array.css ***!
|
|
3232
|
-
\************************************************/
|
|
3233
|
-
/***/ ((module) => {
|
|
3499
|
+
/***/ },
|
|
3234
3500
|
|
|
3235
|
-
|
|
3236
|
-
module.exports = ".edit-array button {\n margin-top: 0.5em;\n}";
|
|
3237
|
-
|
|
3238
|
-
/***/ }),
|
|
3239
|
-
|
|
3240
|
-
/***/ "./frontend/src/edit-array/edit-array.html":
|
|
3501
|
+
/***/ "./frontend/src/edit-array/edit-array.html"
|
|
3241
3502
|
/*!*************************************************!*\
|
|
3242
3503
|
!*** ./frontend/src/edit-array/edit-array.html ***!
|
|
3243
3504
|
\*************************************************/
|
|
3244
|
-
|
|
3505
|
+
(module) {
|
|
3245
3506
|
|
|
3246
3507
|
"use strict";
|
|
3247
|
-
module.exports = "<div class=\"
|
|
3508
|
+
module.exports = "<div class=\"w-full\">\n <!-- CodeMirror editor for the entire array -->\n <textarea\n ref=\"arrayEditor\"\n class=\"w-full border border-gray-300 p-2 font-mono\"\n :style=\"{ minHeight: '300px' }\">\n </textarea>\n</div>";
|
|
3248
3509
|
|
|
3249
|
-
/***/ }
|
|
3510
|
+
/***/ },
|
|
3250
3511
|
|
|
3251
|
-
/***/ "./frontend/src/edit-array/edit-array.js"
|
|
3512
|
+
/***/ "./frontend/src/edit-array/edit-array.js"
|
|
3252
3513
|
/*!***********************************************!*\
|
|
3253
3514
|
!*** ./frontend/src/edit-array/edit-array.js ***!
|
|
3254
3515
|
\***********************************************/
|
|
3255
|
-
|
|
3516
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3256
3517
|
|
|
3257
3518
|
"use strict";
|
|
3258
3519
|
|
|
@@ -3267,67 +3528,123 @@ const ObjectId = new Proxy(BSON.ObjectId, {
|
|
|
3267
3528
|
}
|
|
3268
3529
|
});
|
|
3269
3530
|
|
|
3270
|
-
const appendCSS = __webpack_require__(/*! ../appendCSS */ "./frontend/src/appendCSS.js");
|
|
3271
|
-
appendCSS(__webpack_require__(/*! ./edit-array.css */ "./frontend/src/edit-array/edit-array.css"));
|
|
3272
3531
|
|
|
3273
3532
|
module.exports = app => app.component('edit-array', {
|
|
3274
3533
|
template: template,
|
|
3275
3534
|
props: ['value'],
|
|
3276
|
-
data
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
this.$refs.arrayEditor.value = this.currentValue;
|
|
3282
|
-
this.editor = CodeMirror.fromTextArea(this.$refs.arrayEditor, {
|
|
3283
|
-
mode: 'javascript',
|
|
3284
|
-
lineNumbers: true
|
|
3285
|
-
});
|
|
3286
|
-
this.editor.on('change', ev => {
|
|
3287
|
-
this.currentValue = this.editor.getValue();
|
|
3288
|
-
});
|
|
3535
|
+
data() {
|
|
3536
|
+
return {
|
|
3537
|
+
arrayValue: [],
|
|
3538
|
+
arrayEditor: null
|
|
3539
|
+
};
|
|
3289
3540
|
},
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3541
|
+
methods: {
|
|
3542
|
+
initializeArray() {
|
|
3543
|
+
if (this.value == null) {
|
|
3544
|
+
this.arrayValue = [];
|
|
3545
|
+
} else if (Array.isArray(this.value)) {
|
|
3546
|
+
this.arrayValue = JSON.parse(JSON.stringify(this.value));
|
|
3547
|
+
} else {
|
|
3548
|
+
this.arrayValue = [];
|
|
3549
|
+
}
|
|
3550
|
+
|
|
3551
|
+
// Update CodeMirror editor if it exists
|
|
3552
|
+
this.$nextTick(() => {
|
|
3553
|
+
if (this.arrayEditor) {
|
|
3554
|
+
const arrayStr = JSON.stringify(this.arrayValue, null, 2);
|
|
3555
|
+
this.arrayEditor.setValue(arrayStr);
|
|
3556
|
+
}
|
|
3557
|
+
});
|
|
3558
|
+
},
|
|
3559
|
+
initializeArrayEditor() {
|
|
3560
|
+
this.$nextTick(() => {
|
|
3561
|
+
const textareaRef = this.$refs.arrayEditor;
|
|
3562
|
+
const textarea = Array.isArray(textareaRef) ? textareaRef[0] : textareaRef;
|
|
3563
|
+
if (textarea && !this.arrayEditor) {
|
|
3564
|
+
const arrayStr = JSON.stringify(this.arrayValue, null, 2);
|
|
3565
|
+
textarea.value = arrayStr;
|
|
3566
|
+
this.arrayEditor = CodeMirror.fromTextArea(textarea, {
|
|
3567
|
+
mode: 'javascript',
|
|
3568
|
+
lineNumbers: true
|
|
3569
|
+
});
|
|
3570
|
+
this.arrayEditor.on('change', () => {
|
|
3571
|
+
this.updateArrayFromEditor();
|
|
3572
|
+
});
|
|
3573
|
+
}
|
|
3574
|
+
});
|
|
3575
|
+
},
|
|
3576
|
+
updateArrayFromEditor() {
|
|
3577
|
+
if (!this.arrayEditor) {
|
|
3294
3578
|
return;
|
|
3295
3579
|
}
|
|
3296
3580
|
try {
|
|
3297
|
-
const
|
|
3298
|
-
|
|
3581
|
+
const value = this.arrayEditor.getValue();
|
|
3582
|
+
if (value.trim() === '') {
|
|
3583
|
+
this.arrayValue = [];
|
|
3584
|
+
} else {
|
|
3585
|
+
this.arrayValue = JSON.parse(value);
|
|
3586
|
+
}
|
|
3587
|
+
this.emitUpdate();
|
|
3588
|
+
} catch (err) {
|
|
3589
|
+
// Invalid JSON, don't update
|
|
3590
|
+
}
|
|
3591
|
+
},
|
|
3592
|
+
emitUpdate() {
|
|
3593
|
+
try {
|
|
3594
|
+
this.$emit('input', this.arrayValue);
|
|
3299
3595
|
} catch (err) {
|
|
3300
3596
|
this.$emit('error', err);
|
|
3301
3597
|
}
|
|
3302
3598
|
}
|
|
3303
3599
|
},
|
|
3600
|
+
mounted() {
|
|
3601
|
+
this.initializeArray();
|
|
3602
|
+
this.initializeArrayEditor();
|
|
3603
|
+
},
|
|
3304
3604
|
beforeDestroy() {
|
|
3305
|
-
if (this.
|
|
3306
|
-
this.
|
|
3605
|
+
if (this.arrayEditor) {
|
|
3606
|
+
this.arrayEditor.toTextArea();
|
|
3607
|
+
}
|
|
3608
|
+
},
|
|
3609
|
+
watch: {
|
|
3610
|
+
value: {
|
|
3611
|
+
handler(newValue, oldValue) {
|
|
3612
|
+
// Initialize array when value prop changes
|
|
3613
|
+
this.initializeArray();
|
|
3614
|
+
// Update array editor if it exists
|
|
3615
|
+
if (this.arrayEditor) {
|
|
3616
|
+
this.$nextTick(() => {
|
|
3617
|
+
const arrayStr = JSON.stringify(this.arrayValue, null, 2);
|
|
3618
|
+
this.arrayEditor.setValue(arrayStr);
|
|
3619
|
+
});
|
|
3620
|
+
}
|
|
3621
|
+
},
|
|
3622
|
+
deep: true,
|
|
3623
|
+
immediate: true
|
|
3307
3624
|
}
|
|
3308
3625
|
},
|
|
3309
3626
|
emits: ['input', 'error']
|
|
3310
3627
|
});
|
|
3311
3628
|
|
|
3312
3629
|
|
|
3313
|
-
/***/ }
|
|
3630
|
+
/***/ },
|
|
3314
3631
|
|
|
3315
|
-
/***/ "./frontend/src/edit-boolean/edit-boolean.html"
|
|
3632
|
+
/***/ "./frontend/src/edit-boolean/edit-boolean.html"
|
|
3316
3633
|
/*!*****************************************************!*\
|
|
3317
3634
|
!*** ./frontend/src/edit-boolean/edit-boolean.html ***!
|
|
3318
3635
|
\*****************************************************/
|
|
3319
|
-
|
|
3636
|
+
(module) {
|
|
3320
3637
|
|
|
3321
3638
|
"use strict";
|
|
3322
3639
|
module.exports = "<div class=\"edit-boolean\">\n <div class=\"flex flex-wrap gap-2\">\n <label class=\"flex items-center gap-2 px-3 py-2 border rounded cursor-pointer hover:bg-gray-50\" \n :class=\"selectedValue === true ? 'bg-blue-100 border-blue-300 text-blue-800' : 'border-gray-300 text-gray-700'\">\n <input\n type=\"radio\"\n :checked=\"selectedValue === true\"\n @change=\"selectValue(true)\"\n class=\"w-4 h-4 text-blue-600 border-gray-300 focus:ring-blue-500\"\n />\n <span class=\"text-sm font-medium\">true</span>\n </label>\n \n <label class=\"flex items-center gap-2 px-3 py-2 border rounded cursor-pointer hover:bg-gray-50\"\n :class=\"selectedValue === false ? 'bg-blue-100 border-blue-300 text-blue-800' : 'border-gray-300 text-gray-700'\">\n <input\n type=\"radio\"\n :checked=\"selectedValue === false\"\n @change=\"selectValue(false)\"\n class=\"w-4 h-4 text-blue-600 border-gray-300 focus:ring-blue-500\"\n />\n <span class=\"text-sm font-medium\">false</span>\n </label>\n \n <label class=\"flex items-center gap-2 px-3 py-2 border rounded cursor-pointer hover:bg-gray-50\"\n :class=\"selectedValue === null ? 'bg-blue-100 border-blue-300 text-blue-800' : 'border-gray-300 text-gray-700'\">\n <input\n type=\"radio\"\n :checked=\"selectedValue === null\"\n @change=\"selectValue(null)\"\n class=\"w-4 h-4 text-blue-600 border-gray-300 focus:ring-blue-500\"\n />\n <span class=\"text-sm font-medium\">null</span>\n </label>\n \n <label class=\"flex items-center gap-2 px-3 py-2 border rounded cursor-pointer hover:bg-gray-50\"\n :class=\"selectedValue === undefined ? 'bg-blue-100 border-blue-300 text-blue-800' : 'border-gray-300 text-gray-700'\">\n <input\n type=\"radio\"\n :checked=\"selectedValue === undefined\"\n @change=\"selectValue(undefined)\"\n class=\"w-4 h-4 text-blue-600 border-gray-300 focus:ring-blue-500\"\n />\n <span class=\"text-sm font-medium\">undefined</span>\n </label>\n </div>\n</div>\n";
|
|
3323
3640
|
|
|
3324
|
-
/***/ }
|
|
3641
|
+
/***/ },
|
|
3325
3642
|
|
|
3326
|
-
/***/ "./frontend/src/edit-boolean/edit-boolean.js"
|
|
3643
|
+
/***/ "./frontend/src/edit-boolean/edit-boolean.js"
|
|
3327
3644
|
/*!***************************************************!*\
|
|
3328
3645
|
!*** ./frontend/src/edit-boolean/edit-boolean.js ***!
|
|
3329
3646
|
\***************************************************/
|
|
3330
|
-
|
|
3647
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3331
3648
|
|
|
3332
3649
|
"use strict";
|
|
3333
3650
|
|
|
@@ -3370,24 +3687,24 @@ module.exports = app => app.component('edit-boolean', {
|
|
|
3370
3687
|
});
|
|
3371
3688
|
|
|
3372
3689
|
|
|
3373
|
-
/***/ }
|
|
3690
|
+
/***/ },
|
|
3374
3691
|
|
|
3375
|
-
/***/ "./frontend/src/edit-date/edit-date.html"
|
|
3692
|
+
/***/ "./frontend/src/edit-date/edit-date.html"
|
|
3376
3693
|
/*!***********************************************!*\
|
|
3377
3694
|
!*** ./frontend/src/edit-date/edit-date.html ***!
|
|
3378
3695
|
\***********************************************/
|
|
3379
|
-
|
|
3696
|
+
(module) {
|
|
3380
3697
|
|
|
3381
3698
|
"use strict";
|
|
3382
3699
|
module.exports = "<div>\n <input\n v-if=\"dateSelection == 'picker'\"\n class=\"w-64 h-8 border border-gray-300 outline-0\"\n type=\"datetime-local\"\n :value=\"valueAsLocalString\"\n @input=\"$emit('input', $event.target.value)\">\n <input\n v-if=\"dateSelection == 'iso'\"\n type=\"text\"\n class=\"w-64 h-8 border border-gray-300 outline-0\"\n :value=\"valueAsISOString\"\n @input=\"updateFromISO\">\n</div>";
|
|
3383
3700
|
|
|
3384
|
-
/***/ }
|
|
3701
|
+
/***/ },
|
|
3385
3702
|
|
|
3386
|
-
/***/ "./frontend/src/edit-date/edit-date.js"
|
|
3703
|
+
/***/ "./frontend/src/edit-date/edit-date.js"
|
|
3387
3704
|
/*!*********************************************!*\
|
|
3388
3705
|
!*** ./frontend/src/edit-date/edit-date.js ***!
|
|
3389
3706
|
\*********************************************/
|
|
3390
|
-
|
|
3707
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3391
3708
|
|
|
3392
3709
|
"use strict";
|
|
3393
3710
|
|
|
@@ -3451,24 +3768,24 @@ module.exports = app => app.component('edit-date', {
|
|
|
3451
3768
|
});
|
|
3452
3769
|
|
|
3453
3770
|
|
|
3454
|
-
/***/ }
|
|
3771
|
+
/***/ },
|
|
3455
3772
|
|
|
3456
|
-
/***/ "./frontend/src/edit-default/edit-default.html"
|
|
3773
|
+
/***/ "./frontend/src/edit-default/edit-default.html"
|
|
3457
3774
|
/*!*****************************************************!*\
|
|
3458
3775
|
!*** ./frontend/src/edit-default/edit-default.html ***!
|
|
3459
3776
|
\*****************************************************/
|
|
3460
|
-
|
|
3777
|
+
(module) {
|
|
3461
3778
|
|
|
3462
3779
|
"use strict";
|
|
3463
3780
|
module.exports = "<div>\n <input type=\"text\" :value=\"value\" @input=\"$emit('input', $event.target.value)\" class=\"w-full p-1 border border-gray-300 outline-0\">\n</div>";
|
|
3464
3781
|
|
|
3465
|
-
/***/ }
|
|
3782
|
+
/***/ },
|
|
3466
3783
|
|
|
3467
|
-
/***/ "./frontend/src/edit-default/edit-default.js"
|
|
3784
|
+
/***/ "./frontend/src/edit-default/edit-default.js"
|
|
3468
3785
|
/*!***************************************************!*\
|
|
3469
3786
|
!*** ./frontend/src/edit-default/edit-default.js ***!
|
|
3470
3787
|
\***************************************************/
|
|
3471
|
-
|
|
3788
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3472
3789
|
|
|
3473
3790
|
"use strict";
|
|
3474
3791
|
|
|
@@ -3492,24 +3809,24 @@ module.exports = app => app.component('edit-default', {
|
|
|
3492
3809
|
}
|
|
3493
3810
|
});
|
|
3494
3811
|
|
|
3495
|
-
/***/ }
|
|
3812
|
+
/***/ },
|
|
3496
3813
|
|
|
3497
|
-
/***/ "./frontend/src/edit-number/edit-number.html"
|
|
3814
|
+
/***/ "./frontend/src/edit-number/edit-number.html"
|
|
3498
3815
|
/*!***************************************************!*\
|
|
3499
3816
|
!*** ./frontend/src/edit-number/edit-number.html ***!
|
|
3500
3817
|
\***************************************************/
|
|
3501
|
-
|
|
3818
|
+
(module) {
|
|
3502
3819
|
|
|
3503
3820
|
"use strict";
|
|
3504
3821
|
module.exports = "<div>\n <input type=\"number\" :value=\"value\" @input=\"$emit('input', $event.target.value)\">\n</div>";
|
|
3505
3822
|
|
|
3506
|
-
/***/ }
|
|
3823
|
+
/***/ },
|
|
3507
3824
|
|
|
3508
|
-
/***/ "./frontend/src/edit-number/edit-number.js"
|
|
3825
|
+
/***/ "./frontend/src/edit-number/edit-number.js"
|
|
3509
3826
|
/*!*************************************************!*\
|
|
3510
3827
|
!*** ./frontend/src/edit-number/edit-number.js ***!
|
|
3511
3828
|
\*************************************************/
|
|
3512
|
-
|
|
3829
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3513
3830
|
|
|
3514
3831
|
"use strict";
|
|
3515
3832
|
|
|
@@ -3533,24 +3850,24 @@ module.exports = app => app.component('edit-number', {
|
|
|
3533
3850
|
}
|
|
3534
3851
|
});
|
|
3535
3852
|
|
|
3536
|
-
/***/ }
|
|
3853
|
+
/***/ },
|
|
3537
3854
|
|
|
3538
|
-
/***/ "./frontend/src/edit-string/edit-string.html"
|
|
3855
|
+
/***/ "./frontend/src/edit-string/edit-string.html"
|
|
3539
3856
|
/*!***************************************************!*\
|
|
3540
3857
|
!*** ./frontend/src/edit-string/edit-string.html ***!
|
|
3541
3858
|
\***************************************************/
|
|
3542
|
-
|
|
3859
|
+
(module) {
|
|
3543
3860
|
|
|
3544
3861
|
"use strict";
|
|
3545
3862
|
module.exports = "<div>\n <div v-if=\"hasEnumValues\" class=\"space-y-2\">\n <select\n class=\"w-full px-3 py-2 border border-gray-300 bg-white rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :value=\"selectedOption\"\n @change=\"onSelectChange\"\n >\n <option v-for=\"option in normalizedEnums\" :key=\"`enum-${option}`\" :value=\"option\">\n {{ option }}\n </option>\n <option :value=\"'__null'\">null</option>\n <option :value=\"'__other'\">Other</option>\n </select>\n <input\n v-if=\"selectedOption === '__other'\"\n type=\"text\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :value=\"otherValue\"\n @input=\"onOtherInput\"\n placeholder=\"Enter a value\"\n />\n </div>\n <div v-else>\n <input\n type=\"text\"\n class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n :value=\"value != null ? value : ''\"\n @input=\"onTextInput\"\n placeholder=\"Enter a value\"\n />\n </div>\n</div>\n";
|
|
3546
3863
|
|
|
3547
|
-
/***/ }
|
|
3864
|
+
/***/ },
|
|
3548
3865
|
|
|
3549
|
-
/***/ "./frontend/src/edit-string/edit-string.js"
|
|
3866
|
+
/***/ "./frontend/src/edit-string/edit-string.js"
|
|
3550
3867
|
/*!*************************************************!*\
|
|
3551
3868
|
!*** ./frontend/src/edit-string/edit-string.js ***!
|
|
3552
3869
|
\*************************************************/
|
|
3553
|
-
|
|
3870
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3554
3871
|
|
|
3555
3872
|
"use strict";
|
|
3556
3873
|
|
|
@@ -3703,24 +4020,24 @@ module.exports = app => app.component('edit-string', {
|
|
|
3703
4020
|
});
|
|
3704
4021
|
|
|
3705
4022
|
|
|
3706
|
-
/***/ }
|
|
4023
|
+
/***/ },
|
|
3707
4024
|
|
|
3708
|
-
/***/ "./frontend/src/edit-subdocument/edit-subdocument.html"
|
|
4025
|
+
/***/ "./frontend/src/edit-subdocument/edit-subdocument.html"
|
|
3709
4026
|
/*!*************************************************************!*\
|
|
3710
4027
|
!*** ./frontend/src/edit-subdocument/edit-subdocument.html ***!
|
|
3711
4028
|
\*************************************************************/
|
|
3712
|
-
|
|
4029
|
+
(module) {
|
|
3713
4030
|
|
|
3714
4031
|
"use strict";
|
|
3715
4032
|
module.exports = "<div class=\"edit-subdocument\">\n <textarea\n ref=\"editor\"\n v-model=\"currentValue\"\n class=\"w-full border border-gray-300 p-1 h-[300px]\"></textarea>\n</div>";
|
|
3716
4033
|
|
|
3717
|
-
/***/ }
|
|
4034
|
+
/***/ },
|
|
3718
4035
|
|
|
3719
|
-
/***/ "./frontend/src/edit-subdocument/edit-subdocument.js"
|
|
4036
|
+
/***/ "./frontend/src/edit-subdocument/edit-subdocument.js"
|
|
3720
4037
|
/*!***********************************************************!*\
|
|
3721
4038
|
!*** ./frontend/src/edit-subdocument/edit-subdocument.js ***!
|
|
3722
4039
|
\***********************************************************/
|
|
3723
|
-
|
|
4040
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3724
4041
|
|
|
3725
4042
|
"use strict";
|
|
3726
4043
|
|
|
@@ -3775,41 +4092,42 @@ module.exports = app => app.component('edit-subdocument', {
|
|
|
3775
4092
|
});
|
|
3776
4093
|
|
|
3777
4094
|
|
|
3778
|
-
/***/ }
|
|
4095
|
+
/***/ },
|
|
3779
4096
|
|
|
3780
|
-
/***/ "./frontend/src/export-query-results/export-query-results.css"
|
|
4097
|
+
/***/ "./frontend/src/export-query-results/export-query-results.css"
|
|
3781
4098
|
/*!********************************************************************!*\
|
|
3782
4099
|
!*** ./frontend/src/export-query-results/export-query-results.css ***!
|
|
3783
4100
|
\********************************************************************/
|
|
3784
|
-
|
|
4101
|
+
(module) {
|
|
3785
4102
|
|
|
3786
4103
|
"use strict";
|
|
3787
4104
|
module.exports = "";
|
|
3788
4105
|
|
|
3789
|
-
/***/ }
|
|
4106
|
+
/***/ },
|
|
3790
4107
|
|
|
3791
|
-
/***/ "./frontend/src/export-query-results/export-query-results.html"
|
|
4108
|
+
/***/ "./frontend/src/export-query-results/export-query-results.html"
|
|
3792
4109
|
/*!*********************************************************************!*\
|
|
3793
4110
|
!*** ./frontend/src/export-query-results/export-query-results.html ***!
|
|
3794
4111
|
\*********************************************************************/
|
|
3795
|
-
|
|
4112
|
+
(module) {
|
|
3796
4113
|
|
|
3797
4114
|
"use strict";
|
|
3798
4115
|
module.exports = "<div class=\"export-query-results\">\n <h2>Export as CSV</h2>\n <div>\n Choose fields to export\n </div>\n <div v-for=\"(schemaPath,index) in schemaPaths\" class=\"w-5 flex items-center\">\n <input type=\"checkbox\" class=\"mt-0 h-4 w-4 rounded border-gray-300 text-sky-600 focus:ring-sky-600 accent-sky-600\" v-model=\"shouldExport[schemaPath.path]\" :id=\"'schemaPath.path'+index\">\n <div class=\"ml-2 text-gray-700 grow shrink text-left\">\n <label :for=\"'schemaPath.path'+index\">{{schemaPath.path}}</label>\n </div>\n </div>\n <async-button class=\"rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\" @click=\"exportQueryResults\">Export</async-button>\n</div>";
|
|
3799
4116
|
|
|
3800
|
-
/***/ }
|
|
4117
|
+
/***/ },
|
|
3801
4118
|
|
|
3802
|
-
/***/ "./frontend/src/export-query-results/export-query-results.js"
|
|
4119
|
+
/***/ "./frontend/src/export-query-results/export-query-results.js"
|
|
3803
4120
|
/*!*******************************************************************!*\
|
|
3804
4121
|
!*** ./frontend/src/export-query-results/export-query-results.js ***!
|
|
3805
4122
|
\*******************************************************************/
|
|
3806
|
-
|
|
4123
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
3807
4124
|
|
|
3808
4125
|
"use strict";
|
|
3809
4126
|
|
|
3810
4127
|
|
|
3811
4128
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
3812
4129
|
const template = __webpack_require__(/*! ./export-query-results.html */ "./frontend/src/export-query-results/export-query-results.html");
|
|
4130
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
3813
4131
|
|
|
3814
4132
|
const appendCSS = __webpack_require__(/*! ../appendCSS */ "./frontend/src/appendCSS.js");
|
|
3815
4133
|
|
|
@@ -3838,19 +4156,25 @@ module.exports = app => app.component('export-query-results', {
|
|
|
3838
4156
|
params.searchText = this.searchText;
|
|
3839
4157
|
}
|
|
3840
4158
|
await api.Model.exportQueryResults(params);
|
|
3841
|
-
|
|
4159
|
+
vanillatoasts.create({
|
|
4160
|
+
title: 'Export completed!',
|
|
4161
|
+
type: 'success',
|
|
4162
|
+
timeout: 3000,
|
|
4163
|
+
icon: 'images/success.png',
|
|
4164
|
+
positionClass: 'bottomRight'
|
|
4165
|
+
});
|
|
3842
4166
|
this.$emit('done');
|
|
3843
4167
|
}
|
|
3844
4168
|
}
|
|
3845
4169
|
});
|
|
3846
4170
|
|
|
3847
|
-
/***/ }
|
|
4171
|
+
/***/ },
|
|
3848
4172
|
|
|
3849
|
-
/***/ "./frontend/src/format.js"
|
|
4173
|
+
/***/ "./frontend/src/format.js"
|
|
3850
4174
|
/*!********************************!*\
|
|
3851
4175
|
!*** ./frontend/src/format.js ***!
|
|
3852
4176
|
\********************************/
|
|
3853
|
-
|
|
4177
|
+
(__unused_webpack_module, exports) {
|
|
3854
4178
|
|
|
3855
4179
|
"use strict";
|
|
3856
4180
|
|
|
@@ -3864,13 +4188,13 @@ exports.isoToLongDateTime = function isoToLongDateTime(str) {
|
|
|
3864
4188
|
};
|
|
3865
4189
|
|
|
3866
4190
|
|
|
3867
|
-
/***/ }
|
|
4191
|
+
/***/ },
|
|
3868
4192
|
|
|
3869
|
-
/***/ "./frontend/src/index.js"
|
|
4193
|
+
/***/ "./frontend/src/index.js"
|
|
3870
4194
|
/*!*******************************!*\
|
|
3871
4195
|
!*** ./frontend/src/index.js ***!
|
|
3872
4196
|
\*******************************/
|
|
3873
|
-
|
|
4197
|
+
(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
3874
4198
|
|
|
3875
4199
|
"use strict";
|
|
3876
4200
|
|
|
@@ -3884,6 +4208,7 @@ console.log(`Mongoose Studio Version ${version}`);
|
|
|
3884
4208
|
|
|
3885
4209
|
const api = __webpack_require__(/*! ./api */ "./frontend/src/api.js");
|
|
3886
4210
|
const format = __webpack_require__(/*! ./format */ "./frontend/src/format.js");
|
|
4211
|
+
const arrayUtils = __webpack_require__(/*! ./array-utils */ "./frontend/src/array-utils.js");
|
|
3887
4212
|
const mothership = __webpack_require__(/*! ./mothership */ "./frontend/src/mothership.js");
|
|
3888
4213
|
const { routes } = __webpack_require__(/*! ./routes */ "./frontend/src/routes.js");
|
|
3889
4214
|
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
@@ -4021,49 +4346,36 @@ router.beforeEach((to, from, next) => {
|
|
|
4021
4346
|
}
|
|
4022
4347
|
});
|
|
4023
4348
|
|
|
4024
|
-
app.config.globalProperties = { format };
|
|
4349
|
+
app.config.globalProperties = { format, arrayUtils };
|
|
4025
4350
|
app.use(router);
|
|
4026
4351
|
|
|
4027
4352
|
app.mount('#content');
|
|
4028
4353
|
|
|
4029
4354
|
|
|
4030
|
-
/***/ }
|
|
4031
|
-
|
|
4032
|
-
/***/ "./frontend/src/list-array/list-array.css":
|
|
4033
|
-
/*!************************************************!*\
|
|
4034
|
-
!*** ./frontend/src/list-array/list-array.css ***!
|
|
4035
|
-
\************************************************/
|
|
4036
|
-
/***/ ((module) => {
|
|
4355
|
+
/***/ },
|
|
4037
4356
|
|
|
4038
|
-
|
|
4039
|
-
module.exports = ".list-array pre {\n max-height: 6.5em;\n max-width: 30em;\n}\n\n.list-array pre.maximized {\n max-height: auto;\n}\n";
|
|
4040
|
-
|
|
4041
|
-
/***/ }),
|
|
4042
|
-
|
|
4043
|
-
/***/ "./frontend/src/list-array/list-array.html":
|
|
4357
|
+
/***/ "./frontend/src/list-array/list-array.html"
|
|
4044
4358
|
/*!*************************************************!*\
|
|
4045
4359
|
!*** ./frontend/src/list-array/list-array.html ***!
|
|
4046
4360
|
\*************************************************/
|
|
4047
|
-
|
|
4361
|
+
(module) {
|
|
4048
4362
|
|
|
4049
4363
|
"use strict";
|
|
4050
|
-
module.exports = "<div class=\"list-array\">\n <pre><code ref=\"code\" class=\"language-javascript\" v-text=\"displayValue\"></code></pre>\n</div>";
|
|
4364
|
+
module.exports = "<div class=\"list-array\">\n <pre class=\"max-h-[6.5em] max-w-[30em]\"><code ref=\"code\" class=\"language-javascript\" v-text=\"displayValue\"></code></pre>\n</div>";
|
|
4051
4365
|
|
|
4052
|
-
/***/ }
|
|
4366
|
+
/***/ },
|
|
4053
4367
|
|
|
4054
|
-
/***/ "./frontend/src/list-array/list-array.js"
|
|
4368
|
+
/***/ "./frontend/src/list-array/list-array.js"
|
|
4055
4369
|
/*!***********************************************!*\
|
|
4056
4370
|
!*** ./frontend/src/list-array/list-array.js ***!
|
|
4057
4371
|
\***********************************************/
|
|
4058
|
-
|
|
4372
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4059
4373
|
|
|
4060
4374
|
"use strict";
|
|
4061
4375
|
|
|
4062
4376
|
|
|
4063
4377
|
const template = __webpack_require__(/*! ./list-array.html */ "./frontend/src/list-array/list-array.html");
|
|
4064
4378
|
|
|
4065
|
-
__webpack_require__(/*! ../appendCSS */ "./frontend/src/appendCSS.js")(__webpack_require__(/*! ./list-array.css */ "./frontend/src/list-array/list-array.css"));
|
|
4066
|
-
|
|
4067
4379
|
module.exports = app => app.component('list-array', {
|
|
4068
4380
|
template: template,
|
|
4069
4381
|
props: ['value'],
|
|
@@ -4078,35 +4390,35 @@ module.exports = app => app.component('list-array', {
|
|
|
4078
4390
|
});
|
|
4079
4391
|
|
|
4080
4392
|
|
|
4081
|
-
/***/ }
|
|
4393
|
+
/***/ },
|
|
4082
4394
|
|
|
4083
|
-
/***/ "./frontend/src/list-default/list-default.css"
|
|
4395
|
+
/***/ "./frontend/src/list-default/list-default.css"
|
|
4084
4396
|
/*!****************************************************!*\
|
|
4085
4397
|
!*** ./frontend/src/list-default/list-default.css ***!
|
|
4086
4398
|
\****************************************************/
|
|
4087
|
-
|
|
4399
|
+
(module) {
|
|
4088
4400
|
|
|
4089
4401
|
"use strict";
|
|
4090
4402
|
module.exports = ".list-default pre {\n max-height: 6.5em;\n max-width: 30em;\n}\n";
|
|
4091
4403
|
|
|
4092
|
-
/***/ }
|
|
4404
|
+
/***/ },
|
|
4093
4405
|
|
|
4094
|
-
/***/ "./frontend/src/list-default/list-default.html"
|
|
4406
|
+
/***/ "./frontend/src/list-default/list-default.html"
|
|
4095
4407
|
/*!*****************************************************!*\
|
|
4096
4408
|
!*** ./frontend/src/list-default/list-default.html ***!
|
|
4097
4409
|
\*****************************************************/
|
|
4098
|
-
|
|
4410
|
+
(module) {
|
|
4099
4411
|
|
|
4100
4412
|
"use strict";
|
|
4101
4413
|
module.exports = "<div class=\"list-default\" ref=\"itemData\" class=\"tooltip\">\n {{displayValue}}\n <div class=\"tooltiptext\" style=\"display:flex; width: 100%; justify-content: space-around; align-items: center; min-width: 180px;\">\n <div class=\"tooltiptextchild\" v-if=\"allude\" @click.stop=\"goToDoc(value)\">View Document</div>\n <div class=\"tooltiptextchild\" @click.stop=\"copyText(value)\">copy 📋</div>\n </div>\n</div>\n";
|
|
4102
4414
|
|
|
4103
|
-
/***/ }
|
|
4415
|
+
/***/ },
|
|
4104
4416
|
|
|
4105
|
-
/***/ "./frontend/src/list-default/list-default.js"
|
|
4417
|
+
/***/ "./frontend/src/list-default/list-default.js"
|
|
4106
4418
|
/*!***************************************************!*\
|
|
4107
4419
|
!*** ./frontend/src/list-default/list-default.js ***!
|
|
4108
4420
|
\***************************************************/
|
|
4109
|
-
|
|
4421
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4110
4422
|
|
|
4111
4423
|
"use strict";
|
|
4112
4424
|
|
|
@@ -4161,35 +4473,35 @@ module.exports = app => app.component('list-default', {
|
|
|
4161
4473
|
}
|
|
4162
4474
|
});
|
|
4163
4475
|
|
|
4164
|
-
/***/ }
|
|
4476
|
+
/***/ },
|
|
4165
4477
|
|
|
4166
|
-
/***/ "./frontend/src/list-json/json-node.html"
|
|
4478
|
+
/***/ "./frontend/src/list-json/json-node.html"
|
|
4167
4479
|
/*!***********************************************!*\
|
|
4168
4480
|
!*** ./frontend/src/list-json/json-node.html ***!
|
|
4169
4481
|
\***********************************************/
|
|
4170
|
-
|
|
4482
|
+
(module) {
|
|
4171
4483
|
|
|
4172
4484
|
"use strict";
|
|
4173
4485
|
module.exports = "<div>\n <div class=\"flex items-baseline whitespace-pre\" :style=\"indentStyle\">\n <button\n v-if=\"showToggle\"\n type=\"button\"\n class=\"w-4 h-4 mr-1 inline-flex items-center justify-center leading-none text-gray-500 hover:text-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-slate-400 cursor-pointer\"\n @click.stop=\"handleToggle\"\n >\n {{ isCollapsedNode ? '+' : '-' }}\n </button>\n <span v-else class=\"w-4 h-4 mr-1 inline-flex items-center justify-center invisible flex-shrink-0\"></span>\n <template v-if=\"hasKey\">\n <span class=\"text-blue-600\">\"{{ nodeKey }}\"</span><span>: </span>\n </template>\n <template v-if=\"isComplex\">\n <template v-if=\"hasChildren\">\n <span>{{ openingBracket }}</span>\n <span v-if=\"isCollapsedNode\" class=\"mx-1\">…</span>\n <span v-if=\"isCollapsedNode\">{{ closingBracket }}{{ comma }}</span>\n </template>\n <template v-else>\n <span>{{ openingBracket }}{{ closingBracket }}{{ comma }}</span>\n </template>\n </template>\n <template v-else>\n <!--\n If value is a string and overflows its container (i.e. goes over one line), show an ellipsis.\n This is done via CSS ellipsis strategy.\n -->\n <span\n v-if=\"shouldShowReferenceLink\"\n class=\"inline-flex items-baseline group\"\n >\n <span\n :class=\"[...valueClasses, 'underline', 'decoration-dotted', 'underline-offset-2']\"\n :style=\"typeof value === 'string'\n ? {\n display: 'inline-block',\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n verticalAlign: 'bottom'\n }\n : {}\"\n :title=\"typeof value === 'string' && $el && $el.scrollWidth > $el.clientWidth ? value : undefined\"\n >\n {{ formattedValue }}\n </span>\n <span>\n {{ comma }}\n </span>\n <a\n href=\"#\"\n class=\"ml-1 text-sm text-sky-700 opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity\"\n @click.stop.prevent=\"goToReference(value)\"\n >\n View Document\n </a>\n </span>\n <span\n v-else\n :class=\"valueClasses\"\n :style=\"typeof value === 'string'\n ? {\n display: 'inline-block',\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n verticalAlign: 'bottom'\n }\n : {}\"\n :title=\"typeof value === 'string' && $el && $el.scrollWidth > $el.clientWidth ? value : undefined\"\n >\n {{ formattedValue }}{{ comma }}\n </span>\n </template>\n </div>\n <template v-if=\"isComplex && hasChildren && !isCollapsedNode\">\n <json-node\n v-for=\"child in children\"\n :key=\"child.path\"\n :node-key=\"child.displayKey\"\n :value=\"child.value\"\n :level=\"level + 1\"\n :is-last=\"child.isLast\"\n :path=\"child.path\"\n :toggle-collapse=\"toggleCollapse\"\n :is-collapsed=\"isCollapsed\"\n :create-child-path=\"createChildPath\"\n :indent-size=\"indentSize\"\n :max-top-level-fields=\"maxTopLevelFields\"\n :top-level-expanded=\"topLevelExpanded\"\n :expand-top-level=\"expandTopLevel\"\n :references=\"references\"\n ></json-node>\n <div\n v-if=\"hasHiddenRootChildren\"\n class=\"flex items-baseline whitespace-pre\"\n :style=\"indentStyle\"\n >\n <span class=\"w-4 h-4 mr-1 inline-flex items-center justify-center invisible\"></span>\n <button\n type=\"button\"\n class=\"text-xs inline-flex items-center gap-1 ml-4 text-slate-500 hover:text-slate-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-slate-400\"\n :title=\"hiddenChildrenTooltip\"\n @click.stop=\"handleExpandTopLevel\"\n >\n <span aria-hidden=\"true\">{{hiddenChildrenLabel}}…</span>\n </button>\n </div>\n <div class=\"flex items-baseline whitespace-pre\" :style=\"indentStyle\">\n <span class=\"w-4 h-4 mr-1 inline-flex items-center justify-center invisible\"></span>\n <span>{{ closingBracket }}{{ comma }}</span>\n </div>\n </template>\n</div>\n";
|
|
4174
4486
|
|
|
4175
|
-
/***/ }
|
|
4487
|
+
/***/ },
|
|
4176
4488
|
|
|
4177
|
-
/***/ "./frontend/src/list-json/list-json.html"
|
|
4489
|
+
/***/ "./frontend/src/list-json/list-json.html"
|
|
4178
4490
|
/*!***********************************************!*\
|
|
4179
4491
|
!*** ./frontend/src/list-json/list-json.html ***!
|
|
4180
4492
|
\***********************************************/
|
|
4181
|
-
|
|
4493
|
+
(module) {
|
|
4182
4494
|
|
|
4183
4495
|
"use strict";
|
|
4184
4496
|
module.exports = "<div class=\"tooltip w-full font-mono text-sm py-3 text-slate-800\">\n <div class=\"w-full\">\n <json-node\n :node-key=\"null\"\n :value=\"value\"\n :level=\"0\"\n :is-last=\"true\"\n path=\"root\"\n :toggle-collapse=\"toggleCollapse\"\n :is-collapsed=\"isPathCollapsed\"\n :create-child-path=\"createChildPath\"\n :indent-size=\"indentSize\"\n :max-top-level-fields=\"maxTopLevelFields\"\n :top-level-expanded=\"topLevelExpanded\"\n :expand-top-level=\"expandTopLevel\"\n :references=\"references\"\n ></json-node>\n </div>\n</div>\n";
|
|
4185
4497
|
|
|
4186
|
-
/***/ }
|
|
4498
|
+
/***/ },
|
|
4187
4499
|
|
|
4188
|
-
/***/ "./frontend/src/list-json/list-json.js"
|
|
4500
|
+
/***/ "./frontend/src/list-json/list-json.js"
|
|
4189
4501
|
/*!*********************************************!*\
|
|
4190
4502
|
!*** ./frontend/src/list-json/list-json.js ***!
|
|
4191
4503
|
\*********************************************/
|
|
4192
|
-
|
|
4504
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4193
4505
|
|
|
4194
4506
|
"use strict";
|
|
4195
4507
|
|
|
@@ -4509,35 +4821,35 @@ module.exports = app => app.component('list-json', {
|
|
|
4509
4821
|
});
|
|
4510
4822
|
|
|
4511
4823
|
|
|
4512
|
-
/***/ }
|
|
4824
|
+
/***/ },
|
|
4513
4825
|
|
|
4514
|
-
/***/ "./frontend/src/list-mixed/list-mixed.css"
|
|
4826
|
+
/***/ "./frontend/src/list-mixed/list-mixed.css"
|
|
4515
4827
|
/*!************************************************!*\
|
|
4516
4828
|
!*** ./frontend/src/list-mixed/list-mixed.css ***!
|
|
4517
4829
|
\************************************************/
|
|
4518
|
-
|
|
4830
|
+
(module) {
|
|
4519
4831
|
|
|
4520
4832
|
"use strict";
|
|
4521
4833
|
module.exports = ".list-mixed pre {\n max-height: 6.5em;\n max-width: 30em;\n}\n\n";
|
|
4522
4834
|
|
|
4523
|
-
/***/ }
|
|
4835
|
+
/***/ },
|
|
4524
4836
|
|
|
4525
|
-
/***/ "./frontend/src/list-mixed/list-mixed.html"
|
|
4837
|
+
/***/ "./frontend/src/list-mixed/list-mixed.html"
|
|
4526
4838
|
/*!*************************************************!*\
|
|
4527
4839
|
!*** ./frontend/src/list-mixed/list-mixed.html ***!
|
|
4528
4840
|
\*************************************************/
|
|
4529
|
-
|
|
4841
|
+
(module) {
|
|
4530
4842
|
|
|
4531
4843
|
"use strict";
|
|
4532
4844
|
module.exports = "<div class=\"list-mixed tooltip\">\n <pre>\n <code ref=\"MixedCode\" class=\"language-javascript\">{{shortenValue}}</code>\n <span class=\"tooltiptext\" @click.stop=\"copyText(value)\">copy 📋</span>\n </pre>\n</div>\n ";
|
|
4533
4845
|
|
|
4534
|
-
/***/ }
|
|
4846
|
+
/***/ },
|
|
4535
4847
|
|
|
4536
|
-
/***/ "./frontend/src/list-mixed/list-mixed.js"
|
|
4848
|
+
/***/ "./frontend/src/list-mixed/list-mixed.js"
|
|
4537
4849
|
/*!***********************************************!*\
|
|
4538
4850
|
!*** ./frontend/src/list-mixed/list-mixed.js ***!
|
|
4539
4851
|
\***********************************************/
|
|
4540
|
-
|
|
4852
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4541
4853
|
|
|
4542
4854
|
"use strict";
|
|
4543
4855
|
|
|
@@ -4583,35 +4895,35 @@ module.exports = app => app.component('list-mixed', {
|
|
|
4583
4895
|
|
|
4584
4896
|
|
|
4585
4897
|
|
|
4586
|
-
/***/ }
|
|
4898
|
+
/***/ },
|
|
4587
4899
|
|
|
4588
|
-
/***/ "./frontend/src/list-string/list-string.css"
|
|
4900
|
+
/***/ "./frontend/src/list-string/list-string.css"
|
|
4589
4901
|
/*!**************************************************!*\
|
|
4590
4902
|
!*** ./frontend/src/list-string/list-string.css ***!
|
|
4591
4903
|
\**************************************************/
|
|
4592
|
-
|
|
4904
|
+
(module) {
|
|
4593
4905
|
|
|
4594
4906
|
"use strict";
|
|
4595
4907
|
module.exports = ".list-string {\n display: inline;\n max-width: 300px;\n}";
|
|
4596
4908
|
|
|
4597
|
-
/***/ }
|
|
4909
|
+
/***/ },
|
|
4598
4910
|
|
|
4599
|
-
/***/ "./frontend/src/list-string/list-string.html"
|
|
4911
|
+
/***/ "./frontend/src/list-string/list-string.html"
|
|
4600
4912
|
/*!***************************************************!*\
|
|
4601
4913
|
!*** ./frontend/src/list-string/list-string.html ***!
|
|
4602
4914
|
\***************************************************/
|
|
4603
|
-
|
|
4915
|
+
(module) {
|
|
4604
4916
|
|
|
4605
4917
|
"use strict";
|
|
4606
4918
|
module.exports = "<div class=\"list-string tooltip\" ref=\"itemData\">\n {{displayValue}}\n <span class=\"tooltiptext\" @click.stop=\"copyText(value)\">copy 📋</span>\n</div>";
|
|
4607
4919
|
|
|
4608
|
-
/***/ }
|
|
4920
|
+
/***/ },
|
|
4609
4921
|
|
|
4610
|
-
/***/ "./frontend/src/list-string/list-string.js"
|
|
4922
|
+
/***/ "./frontend/src/list-string/list-string.js"
|
|
4611
4923
|
/*!*************************************************!*\
|
|
4612
4924
|
!*** ./frontend/src/list-string/list-string.js ***!
|
|
4613
4925
|
\*************************************************/
|
|
4614
|
-
|
|
4926
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4615
4927
|
|
|
4616
4928
|
"use strict";
|
|
4617
4929
|
|
|
@@ -4658,35 +4970,35 @@ module.exports = app => app.component('list-string', {
|
|
|
4658
4970
|
}
|
|
4659
4971
|
});
|
|
4660
4972
|
|
|
4661
|
-
/***/ }
|
|
4973
|
+
/***/ },
|
|
4662
4974
|
|
|
4663
|
-
/***/ "./frontend/src/list-subdocument/list-subdocument.css"
|
|
4975
|
+
/***/ "./frontend/src/list-subdocument/list-subdocument.css"
|
|
4664
4976
|
/*!************************************************************!*\
|
|
4665
4977
|
!*** ./frontend/src/list-subdocument/list-subdocument.css ***!
|
|
4666
4978
|
\************************************************************/
|
|
4667
|
-
|
|
4979
|
+
(module) {
|
|
4668
4980
|
|
|
4669
4981
|
"use strict";
|
|
4670
4982
|
module.exports = ".list-subdocument pre {\n max-height: 6.5em;\n max-width: 30em;\n}\n";
|
|
4671
4983
|
|
|
4672
|
-
/***/ }
|
|
4984
|
+
/***/ },
|
|
4673
4985
|
|
|
4674
|
-
/***/ "./frontend/src/list-subdocument/list-subdocument.html"
|
|
4986
|
+
/***/ "./frontend/src/list-subdocument/list-subdocument.html"
|
|
4675
4987
|
/*!*************************************************************!*\
|
|
4676
4988
|
!*** ./frontend/src/list-subdocument/list-subdocument.html ***!
|
|
4677
4989
|
\*************************************************************/
|
|
4678
|
-
|
|
4990
|
+
(module) {
|
|
4679
4991
|
|
|
4680
4992
|
"use strict";
|
|
4681
4993
|
module.exports = "<div class=\"list-subdocument tooltip\">\n <pre>\n <code ref=\"SubDocCode\" class=\"language-javascript\">{{shortenValue}}</code>\n <span class=\"tooltiptext\" @click.stop=\"copyText(value)\">copy 📋</span>\n </pre>\n</div>\n";
|
|
4682
4994
|
|
|
4683
|
-
/***/ }
|
|
4995
|
+
/***/ },
|
|
4684
4996
|
|
|
4685
|
-
/***/ "./frontend/src/list-subdocument/list-subdocument.js"
|
|
4997
|
+
/***/ "./frontend/src/list-subdocument/list-subdocument.js"
|
|
4686
4998
|
/*!***********************************************************!*\
|
|
4687
4999
|
!*** ./frontend/src/list-subdocument/list-subdocument.js ***!
|
|
4688
5000
|
\***********************************************************/
|
|
4689
|
-
|
|
5001
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4690
5002
|
|
|
4691
5003
|
"use strict";
|
|
4692
5004
|
|
|
@@ -4729,35 +5041,35 @@ module.exports = app => app.component('list-subdocument', {
|
|
|
4729
5041
|
}
|
|
4730
5042
|
});
|
|
4731
5043
|
|
|
4732
|
-
/***/ }
|
|
5044
|
+
/***/ },
|
|
4733
5045
|
|
|
4734
|
-
/***/ "./frontend/src/modal/modal.css"
|
|
5046
|
+
/***/ "./frontend/src/modal/modal.css"
|
|
4735
5047
|
/*!**************************************!*\
|
|
4736
5048
|
!*** ./frontend/src/modal/modal.css ***!
|
|
4737
5049
|
\**************************************/
|
|
4738
|
-
|
|
5050
|
+
(module) {
|
|
4739
5051
|
|
|
4740
5052
|
"use strict";
|
|
4741
5053
|
module.exports = "/** Vue modal */\n\n.modal-mask {\n position: fixed;\n z-index: 9998;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: table;\n transition: opacity 0.3s ease;\n}\n\n.modal-wrapper {\n display: table-cell;\n vertical-align: middle;\n}\n\n.modal-container {\n width: 600px;\n margin: 0px auto;\n padding: 20px 30px;\n padding-bottom: 40px;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.33);\n transition: all 0.3s ease;\n font-family: Helvetica, Arial, sans-serif;\n position: relative;\n}\n\n.modal-header {\n margin-top: 0;\n font-size: 18px;\n font-weight: bold;\n}\n\n.modal-header-success {\n color: #42b983;\n}\n\n.modal-header-error {\n color: #ff0000;\n}\n\n.modal-body {\n margin: 20px 0;\n max-height: calc(100vh - 40px - 60px - 10px);\n overflow: auto;\n}\n\n.modal__button--default {\n float: right;\n}\n\n/*\n * The following styles are auto-applied to elements with\n * transition=\"modal\" when their visibility is toggled\n * by Vue.js.\n *\n * You can easily play with the modal transition by editing\n * these styles.\n */\n\n.modal-enter {\n opacity: 0;\n}\n\n.modal-leave-active {\n opacity: 0;\n}\n\n.modal-enter .modal-container,\n.modal-leave-active .modal-container {\n -webkit-transform: scale(1.1);\n transform: scale(1.1);\n}\n\n.modal-container .modal-exit {\n position: absolute;\n right: 0.25em;\n top: 0.25em;\n cursor: pointer;\n font-size: 1.25em;\n height: 1.25em;\n width: 1.25em;\n border-radius: 100%;\n border: 1px solid #ddd;\n display: flex;\n align-items: center;\n justify-content: center;\n padding-bottom: 0.25em;\n}\n\n.modal-container .modal-exit:hover {\n background-color: #f1f5ff;\n}\n\n@media (max-width: 767px) {\n .modal-container {\n width: calc(100vw - 10px);\n margin: 0;\n margin-left: 5px;\n }\n}\n";
|
|
4742
5054
|
|
|
4743
|
-
/***/ }
|
|
5055
|
+
/***/ },
|
|
4744
5056
|
|
|
4745
|
-
/***/ "./frontend/src/modal/modal.html"
|
|
5057
|
+
/***/ "./frontend/src/modal/modal.html"
|
|
4746
5058
|
/*!***************************************!*\
|
|
4747
5059
|
!*** ./frontend/src/modal/modal.html ***!
|
|
4748
5060
|
\***************************************/
|
|
4749
|
-
|
|
5061
|
+
(module) {
|
|
4750
5062
|
|
|
4751
5063
|
"use strict";
|
|
4752
5064
|
module.exports = "<transition name=\"modal\">\n <div class=\"modal-mask\">\n <div class=\"modal-wrapper\">\n <div class=\"modal-container\" :class=\"containerClass\">\n <div class=\"modal-body\">\n <slot name=\"body\">\n </slot>\n </div>\n </div>\n </div>\n </div>\n</transition>\n";
|
|
4753
5065
|
|
|
4754
|
-
/***/ }
|
|
5066
|
+
/***/ },
|
|
4755
5067
|
|
|
4756
|
-
/***/ "./frontend/src/modal/modal.js"
|
|
5068
|
+
/***/ "./frontend/src/modal/modal.js"
|
|
4757
5069
|
/*!*************************************!*\
|
|
4758
5070
|
!*** ./frontend/src/modal/modal.js ***!
|
|
4759
5071
|
\*************************************/
|
|
4760
|
-
|
|
5072
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4761
5073
|
|
|
4762
5074
|
"use strict";
|
|
4763
5075
|
|
|
@@ -4773,24 +5085,24 @@ module.exports = app => app.component('modal', {
|
|
|
4773
5085
|
});
|
|
4774
5086
|
|
|
4775
5087
|
|
|
4776
|
-
/***/ }
|
|
5088
|
+
/***/ },
|
|
4777
5089
|
|
|
4778
|
-
/***/ "./frontend/src/models/document-search/document-search.html"
|
|
5090
|
+
/***/ "./frontend/src/models/document-search/document-search.html"
|
|
4779
5091
|
/*!******************************************************************!*\
|
|
4780
5092
|
!*** ./frontend/src/models/document-search/document-search.html ***!
|
|
4781
5093
|
\******************************************************************/
|
|
4782
|
-
|
|
5094
|
+
(module) {
|
|
4783
5095
|
|
|
4784
5096
|
"use strict";
|
|
4785
5097
|
module.exports = "<form @submit.prevent=\"emitSearch\" class=\"relative flex-grow m-0\">\n <input\n ref=\"searchInput\"\n class=\"w-full font-mono rounded-md p-1 border border-gray-300 outline-gray-300 text-lg focus:ring-1 focus:ring-ultramarine-200 focus:ring-offset-0 focus:outline-none\"\n type=\"text\"\n placeholder=\"Filter\"\n v-model=\"searchText\"\n @click=\"initFilter\"\n @input=\"updateAutocomplete\"\n @keydown=\"handleKeyDown\"\n />\n <ul v-if=\"autocompleteSuggestions.length\" class=\"absolute z-[9999] bg-white border border-gray-300 rounded mt-1 w-full max-h-40 overflow-y-auto shadow\">\n <li\n v-for=\"(suggestion, index) in autocompleteSuggestions\"\n :key=\"suggestion\"\n class=\"px-2 py-1 cursor-pointer\"\n :class=\"{ 'bg-ultramarine-100': index === autocompleteIndex }\"\n @mousedown.prevent=\"applySuggestion(index)\"\n >\n {{ suggestion }}\n </li>\n </ul>\n</form>\n";
|
|
4786
5098
|
|
|
4787
|
-
/***/ }
|
|
5099
|
+
/***/ },
|
|
4788
5100
|
|
|
4789
|
-
/***/ "./frontend/src/models/document-search/document-search.js"
|
|
5101
|
+
/***/ "./frontend/src/models/document-search/document-search.js"
|
|
4790
5102
|
/*!****************************************************************!*\
|
|
4791
5103
|
!*** ./frontend/src/models/document-search/document-search.js ***!
|
|
4792
5104
|
\****************************************************************/
|
|
4793
|
-
|
|
5105
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
4794
5106
|
|
|
4795
5107
|
"use strict";
|
|
4796
5108
|
|
|
@@ -5022,35 +5334,35 @@ module.exports = app => app.component('document-search', {
|
|
|
5022
5334
|
});
|
|
5023
5335
|
|
|
5024
5336
|
|
|
5025
|
-
/***/ }
|
|
5337
|
+
/***/ },
|
|
5026
5338
|
|
|
5027
|
-
/***/ "./frontend/src/models/models.css"
|
|
5339
|
+
/***/ "./frontend/src/models/models.css"
|
|
5028
5340
|
/*!****************************************!*\
|
|
5029
5341
|
!*** ./frontend/src/models/models.css ***!
|
|
5030
5342
|
\****************************************/
|
|
5031
|
-
|
|
5343
|
+
(module) {
|
|
5032
5344
|
|
|
5033
5345
|
"use strict";
|
|
5034
5346
|
module.exports = ".models {\n position: relative;\n display: flex;\n flex-direction: row;\n min-height: calc(100% - 56px);\n}\n\n.models button.gray {\n color: black;\n background-color: #eee;\n}\n\n.models .model-selector {\n background-color: #eee;\n flex-grow: 0;\n padding: 15px;\n padding-top: 0px;\n}\n\n.models h1 {\n margin-top: 0px;\n}\n\n.models .documents {\n flex-grow: 1;\n overflow: scroll;\n max-height: calc(100vh - 56px);\n}\n\n.models .documents table {\n /* max-width: -moz-fit-content;\n max-width: fit-content; */\n width: 100%;\n table-layout: auto;\n font-size: small;\n padding: 0;\n margin-right: 1em;\n white-space: nowrap;\n z-index: -1;\n border-collapse: collapse;\n line-height: 1.5em;\n}\n\n.models .documents table th {\n position: sticky;\n top: 42px;\n background-color: white;\n z-index: 1;\n}\n\n.models .documents table th:after {\n content: \"\";\n position: absolute;\n left: 0;\n width: 100%;\n bottom: -1px;\n border-bottom: thin solid rgba(0, 0, 0, 0.12);\n}\n\n.models .documents table tr {\n color: black;\n border-spacing: 0px 0px;\n background-color: white;\n cursor: pointer;\n}\n\n.models .documents table tr:nth-child(even) {\n background-color: #f5f5f5;\n}\n\n.models .documents table tr:hover {\n background-color: #a7b9ff;\n}\n\n.models .documents table th,\ntd {\n border-bottom: thin solid rgba(0, 0, 0, 0.12);\n text-align: left;\n padding: 0 16px;\n height: 48px;\n}\n\n.models textarea {\n font-size: 1.2em;\n}\n\n.models .path-type {\n color: rgba(0, 0, 0, 0.36);\n font-size: 0.8em;\n}\n\n.models .documents-menu {\n position: fixed;\n background-color: white;\n z-index: 1;\n padding: 4px;\n display: flex;\n width: 100vw;\n}\n\n@media (min-width: 1024px) {\n .models .documents-menu {\n width: calc(100vw - 12rem);\n }\n}\n\n.models .documents-menu .search-input {\n flex-grow: 1;\n align-items: center;\n}\n\n.models .search-input input {\n padding: 0.25em 0.5em;\n font-size: 1.1em;\n border: 1px solid #ddd;\n border-radius: 3px;\n width: calc(100% - 1em);\n}\n\n.models .sort-arrow {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.models .loader {\n width: 100%;\n text-align: center;\n}\n\n.models .loader img {\n height: 4em;\n}\n\n.models .documents .buttons {\n display: inline-flex;\n justify-content: space-around;\n align-items: center;\n}\n\n";
|
|
5035
5347
|
|
|
5036
|
-
/***/ }
|
|
5348
|
+
/***/ },
|
|
5037
5349
|
|
|
5038
|
-
/***/ "./frontend/src/models/models.html"
|
|
5350
|
+
/***/ "./frontend/src/models/models.html"
|
|
5039
5351
|
/*!*****************************************!*\
|
|
5040
5352
|
!*** ./frontend/src/models/models.html ***!
|
|
5041
5353
|
\*****************************************/
|
|
5042
|
-
|
|
5354
|
+
(module) {
|
|
5043
5355
|
|
|
5044
5356
|
"use strict";
|
|
5045
|
-
module.exports = "<div class=\"models flex\" style=\"height: calc(100vh - 55px); height: calc(100dvh - 55px)\">\n <div class=\"fixed top-[65px] cursor-pointer bg-gray-100 rounded-r-md z-10\" @click=\"hideSidebar = false\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"h-5 w-5\" viewBox=\"0 -960 960 960\" class=\"w-5\" fill=\"#5f6368\"><path d=\"M360-120v-720h80v720h-80Zm160-160v-400l200 200-200 200Z\"/></svg>\n </div>\n <aside class=\"bg-white border-r overflow-y-auto overflow-x-hidden h-full transition-all duration-300 ease-in-out z-20 w-0 lg:w-48 fixed lg:relative shrink-0\" :class=\"hideSidebar === true ? '!w-0' : hideSidebar === false ? '!w-48' : ''\">\n <div class=\"flex items-center border-b border-gray-100 w-48 overflow-x-hidden\">\n <div class=\"p-4 font-bold text-lg\">Models</div>\n <button\n @click=\"hideSidebar = true\"\n class=\"ml-auto mr-2 p-2 rounded hover:bg-gray-200 focus:outline-none\"\n aria-label=\"Close sidebar\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"h-5 w-5\" viewBox=\"0 -960 960 960\" class=\"w-5\" fill=\"currentColor\"><path d=\"M660-320v-320L500-480l160 160ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm120-80v-560H200v560h120Zm80 0h360v-560H400v560Zm-80 0H200h120Z\"/></svg>\n </button>\n </div>\n <nav class=\"flex flex-1 flex-col\">\n <ul role=\"list\" class=\"flex flex-1 flex-col gap-y-7\">\n <li>\n <ul role=\"list\">\n <li v-for=\"model in models\">\n <router-link\n :to=\"'/model/' + model\"\n class=\"block truncate rounded-md py-2 pr-2 pl-2 text-sm font-semibold text-gray-700\"\n :class=\"model === currentModel ? 'bg-ultramarine-100 font-bold' : 'hover:bg-ultramarine-100'\">\n {{model}}\n </router-link>\n </li>\n </ul>\n </li>\n </ul>\n <div v-if=\"models.length === 0 && status === 'loaded'\" class=\"p-2 bg-red-100\">\n No models found\n </div>\n </nav>\n </aside>\n <div class=\"documents\" ref=\"documentsList\">\n <div class=\"relative h-[42px] z-10\">\n <div class=\"documents-menu\">\n <div class=\"flex flex-row items-center w-full gap-2\">\n <document-search\n ref=\"documentSearch\"\n :value=\"searchText\"\n :schema-paths=\"schemaPaths\"\n @search=\"search\"\n >\n </document-search>\n <div>\n <span v-if=\"numDocuments == null\">Loading ...</span>\n <span v-else-if=\"typeof numDocuments === 'number'\">{{numDocuments === 1 ? numDocuments+ ' document' : numDocuments + ' documents'}}</span>\n </div>\n <button\n @click=\"shouldShowExportModal = true\"\n type=\"button\"\n v-show=\"!selectMultiple\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Export\n </button>\n <button\n @click=\"stagingSelect\"\n type=\"button\"\n :class=\"{ 'bg-gray-500 ring-inset ring-2 ring-gray-300 hover:bg-gray-600': selectMultiple, 'bg-ultramarine-600 hover:bg-ultramarine-500' : !selectMultiple }\"\n class=\"rounded px-2 py-2 text-sm font-semibold text-white shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\"\n >\n {{ selectMultiple ? 'Cancel' : 'Select' }}\n </button>\n <button\n v-show=\"selectMultiple\"\n @click=\"shouldShowUpdateMultipleModal=true;\"\n type=\"button\"\n class=\"rounded bg-green-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\"\n >\n Update\n </button>\n <button\n @click=\"shouldShowDeleteMultipleModal=true;\"\n type=\"button\"\n v-show=\"selectMultiple\"\n class=\"rounded bg-red-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n >\n Delete\n </button>\n <button\n @click=\"openIndexModal\"\n type=\"button\"\n v-show=\"!selectMultiple\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Indexes\n </button>\n <button\n @click=\"shouldShowCreateModal = true;\"\n type=\"button\"\n v-show=\"!selectMultiple\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Create\n </button>\n <button\n @click=\"openFieldSelection\"\n type=\"button\"\n v-show=\"!selectMultiple\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Fields\n </button>\n <span class=\"isolate inline-flex rounded-md shadow-sm\">\n <button\n @click=\"setOutputType('table')\"\n type=\"button\"\n class=\"relative inline-flex items-center rounded-none rounded-l-md px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10\"\n :class=\"outputType === 'table' ? 'bg-gray-200' : 'bg-white'\">\n <img class=\"h-5 w-5\" src=\"images/table.svg\">\n </button>\n <button\n @click=\"setOutputType('json')\"\n type=\"button\"\n class=\"relative -ml-px inline-flex items-center rounded-none rounded-r-md px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10\"\n :class=\"outputType === 'json' ? 'bg-gray-200' : 'bg-white'\">\n <img class=\"h-5 w-5\" src=\"images/json.svg\">\n </button>\n </span>\n </div>\n </div>\n </div>\n <div class=\"documents-container relative\">\n <div v-if=\"error\">\n <div class=\"bg-red-100 border border-red-400 text-red-700 px-4 py-3 relative m-4 rounded-md\" role=\"alert\">\n <span class=\"block font-bold\">Error</span>\n <span class=\"block\">{{ error }}</span>\n </div>\n </div>\n <table v-else-if=\"outputType === 'table'\">\n <thead>\n <th v-for=\"path in filteredPaths\" @click=\"addPathFilter(path.path)\" class=\"cursor-pointer\">\n {{path.path}}\n <span class=\"path-type\">\n ({{(path.instance || 'unknown')}})\n </span>\n <span class=\"sort-arrow\" @click=\"sortDocs(1, path.path)\">{{sortBy[path.path] == 1 ? 'X' : '↑'}}</span>\n <span class=\"sort-arrow\" @click=\"sortDocs(-1, path.path)\">{{sortBy[path.path] == -1 ? 'X' : '↓'}}</span>\n </th>\n </thead>\n <tbody>\n <tr v-for=\"document in documents\" @click=\"handleDocumentClick(document, $event)\" :key=\"document._id\">\n <td v-for=\"schemaPath in filteredPaths\" :class=\"{ 'bg-blue-200': selectedDocuments.some(x => x._id.toString() === document._id.toString()) }\">\n <component\n :is=\"getComponentForPath(schemaPath)\"\n :value=\"getValueForPath(document, schemaPath.path)\"\n :allude=\"getReferenceModel(schemaPath)\">\n </component>\n </td>\n </tr>\n </tbody>\n </table>\n <div v-else-if=\"outputType === 'json'\" class=\"flex flex-col space-y-6\">\n <div\n v-for=\"document in documents\"\n :key=\"document._id\"\n @click=\"handleDocumentContainerClick(document, $event)\"\n :class=\"[\n 'group relative transition-colors',\n selectedDocuments.some(x => x._id.toString() === document._id.toString()) ? 'bg-blue-200' : 'hover:bg-slate-100'\n ]\"\n >\n <button\n type=\"button\"\n class=\"absolute top-2 right-2 z-10 inline-flex items-center rounded bg-ultramarine-600 px-2 py-1 text-xs font-semibold text-white shadow-sm transition-opacity duration-150 opacity-0 group-hover:opacity-100 focus-visible:opacity-100 hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\"\n @click.stop=\"openDocument(document)\"\n >\n Open this Document\n </button>\n <list-json :value=\"filterDocument(document)\" :references=\"referenceMap\">\n </list-json>\n </div>\n </div>\n <div v-if=\"status === 'loading'\" class=\"loader\">\n <img src=\"images/loader.gif\">\n </div>\n </div>\n </div>\n <modal v-if=\"shouldShowExportModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowExportModal = false\">×</div>\n <export-query-results\n :schemaPaths=\"schemaPaths\"\n :search-text=\"searchText\"\n :currentModel=\"currentModel\"\n @done=\"shouldShowExportModal = false\">\n </export-query-results>\n </template>\n </modal>\n <modal v-if=\"shouldShowIndexModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowIndexModal = false\">×</div>\n <div class=\"text-xl font-bold mb-2\">Indexes</div>\n <div v-for=\"index in mongoDBIndexes\" class=\"w-full flex items-center\">\n <div class=\"grow shrink text-left flex justify-between items-center\" v-if=\"index.name != '_id_'\">\n <div>\n <div class=\"font-bold\">{{ index.name }}</div>\n <div class=\"text-sm font-mono\">{{ JSON.stringify(index.key) }}</div>\n </div>\n <div>\n <async-button\n type=\"button\"\n @click=\"dropIndex(index.name)\"\n class=\"rounded-md bg-valencia-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-valencia-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600 disabled:bg-gray-400 disabled:cursor-not-allowed\">\n Drop\n </async-button>\n </div>\n </div>\n </div>\n </template>\n </modal>\n <modal v-if=\"shouldShowFieldModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowFieldModal = false; selectedPaths = [...filteredPaths];\">×</div>\n <div v-for=\"(path, index) in schemaPaths\" :key=\"index\" class=\"w-5 flex items-center\">\n <input class=\"mt-0 h-4 w-4 rounded border-gray-300 text-sky-600 focus:ring-sky-600 accent-sky-600\" type=\"checkbox\" :id=\"'path.path'+index\" @change=\"addOrRemove(path)\" :value=\"path.path\" :checked=\"isSelected(path.path)\" />\n <div class=\"ml-2 text-gray-700 grow shrink text-left\">\n <label :for=\"'path.path' + index\">{{path.path}}</label>\n </div>\n </div>\n <div class=\"mt-4 flex gap-2\">\n <button type=\"button\" @click=\"filterDocuments()\" class=\"rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">Filter Selection</button>\n <button type=\"button\" @click=\"selectAll()\" class=\"rounded-md bg-forest-green-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\">Select All</button>\n <button type=\"button\" @click=\"deselectAll()\" class=\"rounded-md bg-valencia-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-valencia-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600\">Deselect All</button>\n <button type=\"button\" @click=\"resetDocuments()\" class=\"rounded-md bg-gray-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-gray-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\" >Cancel</button>\n </div>\n </template>\n </modal>\n <modal v-if=\"shouldShowCreateModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowCreateModal = false;\">×</div>\n <create-document :currentModel=\"currentModel\" :paths=\"schemaPaths\" @close=\"closeCreationModal\"></create-document>\n </template>\n </modal>\n <modal v-if=\"shouldShowUpdateMultipleModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowUpdateMultipleModal = false;\">×</div>\n <update-document :currentModel=\"currentModel\" :document=\"selectedDocuments\" :multiple=\"true\" @update=\"updateDocuments\" @close=\"shouldShowUpdateMultipleModal=false;\"></update-document>\n </template>\n </modal>\n <modal v-if=\"shouldShowDeleteMultipleModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowDeleteMultipleModal = false;\">×</div>\n <h2>Are you sure you want to delete {{selectedDocuments.length}} documents?</h2>\n <div>\n <list-json :value=\"selectedDocuments\"></list-json>\n </div>\n <div class=\"flex gap-4\">\n <async-button @click=\"deleteDocuments\" class=\"rounded bg-red-500 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600\">\n Confirm\n </async-button>\n <button @click=\"shouldShowDeleteMultipleModal = false;\" class=\"rounded bg-gray-400 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-gray-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500\">\n Cancel\n </button>\n </div>\n </template>\n </modal>\n</div>\n";
|
|
5357
|
+
module.exports = "<div class=\"models flex\" style=\"height: calc(100vh - 55px); height: calc(100dvh - 55px)\">\n <div class=\"fixed top-[65px] cursor-pointer bg-gray-100 rounded-r-md z-10\" @click=\"hideSidebar = false\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"h-5 w-5\" viewBox=\"0 -960 960 960\" class=\"w-5\" fill=\"#5f6368\"><path d=\"M360-120v-720h80v720h-80Zm160-160v-400l200 200-200 200Z\"/></svg>\n </div>\n <aside class=\"bg-white border-r overflow-y-auto overflow-x-hidden h-full transition-all duration-300 ease-in-out z-20 w-0 lg:w-48 fixed lg:relative shrink-0\" :class=\"hideSidebar === true ? '!w-0' : hideSidebar === false ? '!w-48' : ''\">\n <div class=\"flex items-center border-b border-gray-100 w-48 overflow-x-hidden\">\n <div class=\"p-4 font-bold text-lg\">Models</div>\n <button\n @click=\"hideSidebar = true\"\n class=\"ml-auto mr-2 p-2 rounded hover:bg-gray-200 focus:outline-none\"\n aria-label=\"Close sidebar\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"h-5 w-5\" viewBox=\"0 -960 960 960\" class=\"w-5\" fill=\"currentColor\"><path d=\"M660-320v-320L500-480l160 160ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm120-80v-560H200v560h120Zm80 0h360v-560H400v560Zm-80 0H200h120Z\"/></svg>\n </button>\n </div>\n <nav class=\"flex flex-1 flex-col\">\n <ul role=\"list\" class=\"flex flex-1 flex-col gap-y-7\">\n <li>\n <ul role=\"list\">\n <li v-for=\"model in models\">\n <router-link\n :to=\"'/model/' + model\"\n class=\"block truncate rounded-md py-2 pr-2 pl-2 text-sm font-semibold text-gray-700\"\n :class=\"model === currentModel ? 'bg-ultramarine-100 font-bold' : 'hover:bg-ultramarine-100'\">\n {{model}}\n </router-link>\n </li>\n </ul>\n </li>\n </ul>\n <div v-if=\"models.length === 0 && status === 'loaded'\" class=\"p-2 bg-red-100\">\n No models found\n </div>\n </nav>\n </aside>\n <div class=\"documents\" ref=\"documentsList\">\n <div class=\"relative h-[42px] z-10\">\n <div class=\"documents-menu\">\n <div class=\"flex flex-row items-center w-full gap-2\">\n <document-search\n ref=\"documentSearch\"\n :value=\"searchText\"\n :schema-paths=\"schemaPaths\"\n @search=\"search\"\n >\n </document-search>\n <div>\n <span v-if=\"numDocuments == null\">Loading ...</span>\n <span v-else-if=\"typeof numDocuments === 'number'\">{{numDocuments === 1 ? numDocuments+ ' document' : numDocuments + ' documents'}}</span>\n </div>\n <button\n @click=\"shouldShowExportModal = true\"\n type=\"button\"\n v-show=\"!selectMultiple\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Export\n </button>\n <button\n @click=\"stagingSelect\"\n type=\"button\"\n :class=\"{ 'bg-gray-500 ring-inset ring-2 ring-gray-300 hover:bg-gray-600': selectMultiple, 'bg-ultramarine-600 hover:bg-ultramarine-500' : !selectMultiple }\"\n class=\"rounded px-2 py-2 text-sm font-semibold text-white shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\"\n >\n {{ selectMultiple ? 'Cancel' : 'Select' }}\n </button>\n <button\n v-show=\"selectMultiple\"\n @click=\"shouldShowUpdateMultipleModal=true;\"\n type=\"button\"\n class=\"rounded bg-green-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\"\n >\n Update\n </button>\n <button\n @click=\"shouldShowDeleteMultipleModal=true;\"\n type=\"button\"\n v-show=\"selectMultiple\"\n class=\"rounded bg-red-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n >\n Delete\n </button>\n <button\n @click=\"shouldShowCreateModal = true;\"\n type=\"button\"\n v-show=\"!selectMultiple\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Create\n </button>\n <button\n @click=\"openFieldSelection\"\n type=\"button\"\n v-show=\"!selectMultiple\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Fields\n </button>\n <div class=\"relative\" v-show=\"!selectMultiple\" ref=\"actionsMenuContainer\" @keyup.esc.prevent=\"closeActionsMenu\">\n <button\n @click=\"toggleActionsMenu\"\n type=\"button\"\n aria-label=\"More actions\"\n class=\"rounded bg-white px-2 py-2 text-sm font-semibold text-gray-700 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-5 h-5\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Zm0 6a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Zm0 6a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z\" />\n </svg>\n </button>\n <div\n v-if=\"showActionsMenu\"\n class=\"absolute right-0 mt-2 w-48 origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none z-20\"\n >\n <div class=\"py-1\">\n <button\n @click=\"openIndexModal\"\n type=\"button\"\n class=\"block w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100\"\n >\n Indexes\n </button>\n <button\n @click=\"openCollectionInfo\"\n type=\"button\"\n class=\"block w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100\"\n >\n Collection Info\n </button>\n </div>\n </div>\n </div>\n <span class=\"isolate inline-flex rounded-md shadow-sm\">\n <button\n @click=\"setOutputType('table')\"\n type=\"button\"\n class=\"relative inline-flex items-center rounded-none rounded-l-md px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10\"\n :class=\"outputType === 'table' ? 'bg-gray-200' : 'bg-white'\">\n <img class=\"h-5 w-5\" src=\"images/table.svg\">\n </button>\n <button\n @click=\"setOutputType('json')\"\n type=\"button\"\n class=\"relative -ml-px inline-flex items-center rounded-none rounded-r-md px-2 py-2 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10\"\n :class=\"outputType === 'json' ? 'bg-gray-200' : 'bg-white'\">\n <img class=\"h-5 w-5\" src=\"images/json.svg\">\n </button>\n </span>\n </div>\n </div>\n </div>\n <div class=\"documents-container relative\">\n <div v-if=\"error\">\n <div class=\"bg-red-100 border border-red-400 text-red-700 px-4 py-3 relative m-4 rounded-md\" role=\"alert\">\n <span class=\"block font-bold\">Error</span>\n <span class=\"block\">{{ error }}</span>\n </div>\n </div>\n <table v-else-if=\"outputType === 'table'\">\n <thead>\n <th v-for=\"path in filteredPaths\" @click=\"addPathFilter(path.path)\" class=\"cursor-pointer\">\n {{path.path}}\n <span class=\"path-type\">\n ({{(path.instance || 'unknown')}})\n </span>\n <span class=\"sort-arrow\" @click=\"sortDocs(1, path.path)\">{{sortBy[path.path] == 1 ? 'X' : '↑'}}</span>\n <span class=\"sort-arrow\" @click=\"sortDocs(-1, path.path)\">{{sortBy[path.path] == -1 ? 'X' : '↓'}}</span>\n </th>\n </thead>\n <tbody>\n <tr v-for=\"document in documents\" @click=\"handleDocumentClick(document, $event)\" :key=\"document._id\">\n <td v-for=\"schemaPath in filteredPaths\" :class=\"{ 'bg-blue-200': selectedDocuments.some(x => x._id.toString() === document._id.toString()) }\">\n <component\n :is=\"getComponentForPath(schemaPath)\"\n :value=\"getValueForPath(document, schemaPath.path)\"\n :allude=\"getReferenceModel(schemaPath)\">\n </component>\n </td>\n </tr>\n </tbody>\n </table>\n <div v-else-if=\"outputType === 'json'\" class=\"flex flex-col space-y-6\">\n <div\n v-for=\"document in documents\"\n :key=\"document._id\"\n @click=\"handleDocumentContainerClick(document, $event)\"\n :class=\"[\n 'group relative transition-colors',\n selectedDocuments.some(x => x._id.toString() === document._id.toString()) ? 'bg-blue-200' : 'hover:bg-slate-100'\n ]\"\n >\n <button\n type=\"button\"\n class=\"absolute top-2 right-2 z-10 inline-flex items-center rounded bg-ultramarine-600 px-2 py-1 text-xs font-semibold text-white shadow-sm transition-opacity duration-150 opacity-0 group-hover:opacity-100 focus-visible:opacity-100 hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\"\n @click.stop=\"openDocument(document)\"\n >\n Open this Document\n </button>\n <list-json :value=\"filterDocument(document)\" :references=\"referenceMap\">\n </list-json>\n </div>\n </div>\n <div v-if=\"status === 'loading'\" class=\"loader\">\n <img src=\"images/loader.gif\">\n </div>\n </div>\n </div>\n <modal v-if=\"shouldShowExportModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowExportModal = false\">×</div>\n <export-query-results\n :schemaPaths=\"schemaPaths\"\n :search-text=\"searchText\"\n :currentModel=\"currentModel\"\n @done=\"shouldShowExportModal = false\">\n </export-query-results>\n </template>\n </modal>\n <modal v-if=\"shouldShowIndexModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowIndexModal = false\">×</div>\n <div class=\"text-xl font-bold mb-2\">Indexes</div>\n <div v-for=\"index in mongoDBIndexes\" class=\"w-full flex items-center\">\n <div class=\"grow shrink text-left flex justify-between items-center\" v-if=\"index.name != '_id_'\">\n <div>\n <div class=\"font-bold flex items-center gap-2\">\n <div>{{ index.name }}</div>\n <div v-if=\"isTTLIndex(index)\" class=\"rounded-full bg-ultramarine-100 px-2 py-0.5 text-xs font-semibold text-ultramarine-700\">\n TTL: {{ formatTTL(index.expireAfterSeconds) }}\n </div>\n </div>\n <div class=\"text-sm font-mono\">{{ JSON.stringify(index.key) }}</div>\n </div>\n <div>\n <async-button\n type=\"button\"\n @click=\"dropIndex(index.name)\"\n class=\"rounded-md bg-valencia-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-valencia-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600 disabled:bg-gray-400 disabled:cursor-not-allowed\">\n Drop\n </async-button>\n </div>\n </div>\n </div>\n </template>\n </modal>\n <modal v-if=\"shouldShowCollectionInfoModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowCollectionInfoModal = false\">×</div>\n <div class=\"text-xl font-bold mb-2\">Collection Info</div>\n <div v-if=\"!collectionInfo\" class=\"text-gray-600\">Loading collection details...</div>\n <div v-else class=\"space-y-3\">\n <div class=\"flex justify-between gap-4\">\n <div class=\"font-semibold text-gray-700\">Documents</div>\n <div class=\"text-gray-900\">{{ formatNumber(collectionInfo.documentCount) }}</div>\n </div>\n <div class=\"flex justify-between gap-4\">\n <div class=\"font-semibold text-gray-700\">Indexes</div>\n <div class=\"text-gray-900\">{{ formatNumber(collectionInfo.indexCount) }}</div>\n </div>\n <div class=\"flex justify-between gap-4\">\n <div class=\"font-semibold text-gray-700\">Total Index Size</div>\n <div class=\"text-gray-900\">{{ formatCollectionSize(collectionInfo.totalIndexSize) }}</div>\n </div>\n <div class=\"flex justify-between gap-4\">\n <div class=\"font-semibold text-gray-700\">Total Storage Size</div>\n <div class=\"text-gray-900\">{{ formatCollectionSize(collectionInfo.size) }}</div>\n </div>\n <div class=\"flex flex-col gap-1\">\n <div class=\"flex justify-between gap-4\">\n <div class=\"font-semibold text-gray-700\">Collation</div>\n <div class=\"text-gray-900\">{{ collectionInfo.hasCollation ? 'Yes' : 'No' }}</div>\n </div>\n <div v-if=\"collectionInfo.hasCollation\" class=\"rounded bg-gray-100 p-3 text-sm text-gray-800 overflow-x-auto\">\n <pre class=\"whitespace-pre-wrap\">{{ JSON.stringify(collectionInfo.collation, null, 2) }}</pre>\n </div>\n </div>\n <div class=\"flex justify-between gap-4\">\n <div class=\"font-semibold text-gray-700\">Capped</div>\n <div class=\"text-gray-900\">{{ collectionInfo.capped ? 'Yes' : 'No' }}</div>\n </div>\n </div>\n </template>\n </modal>\n <modal v-if=\"shouldShowFieldModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowFieldModal = false; selectedPaths = [...filteredPaths];\">×</div>\n <div v-for=\"(path, index) in schemaPaths\" :key=\"index\" class=\"w-5 flex items-center\">\n <input class=\"mt-0 h-4 w-4 rounded border-gray-300 text-sky-600 focus:ring-sky-600 accent-sky-600\" type=\"checkbox\" :id=\"'path.path'+index\" @change=\"addOrRemove(path)\" :value=\"path.path\" :checked=\"isSelected(path.path)\" />\n <div class=\"ml-2 text-gray-700 grow shrink text-left\">\n <label :for=\"'path.path' + index\">{{path.path}}</label>\n </div>\n </div>\n <div class=\"mt-4 flex gap-2\">\n <button type=\"button\" @click=\"filterDocuments()\" class=\"rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">Filter Selection</button>\n <button type=\"button\" @click=\"selectAll()\" class=\"rounded-md bg-forest-green-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-green-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\">Select All</button>\n <button type=\"button\" @click=\"deselectAll()\" class=\"rounded-md bg-valencia-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-valencia-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600\">Deselect All</button>\n <button type=\"button\" @click=\"resetDocuments()\" class=\"rounded-md bg-gray-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-gray-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-green-600\" >Cancel</button>\n </div>\n </template>\n </modal>\n <modal v-if=\"shouldShowCreateModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowCreateModal = false;\">×</div>\n <create-document :currentModel=\"currentModel\" :paths=\"schemaPaths\" @close=\"closeCreationModal\"></create-document>\n </template>\n </modal>\n <modal v-if=\"shouldShowUpdateMultipleModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowUpdateMultipleModal = false;\">×</div>\n <update-document :currentModel=\"currentModel\" :document=\"selectedDocuments\" :multiple=\"true\" @update=\"updateDocuments\" @close=\"shouldShowUpdateMultipleModal=false;\"></update-document>\n </template>\n </modal>\n <modal v-if=\"shouldShowDeleteMultipleModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"shouldShowDeleteMultipleModal = false;\">×</div>\n <h2>Are you sure you want to delete {{selectedDocuments.length}} documents?</h2>\n <div>\n <list-json :value=\"selectedDocuments\"></list-json>\n </div>\n <div class=\"flex gap-4\">\n <async-button @click=\"deleteDocuments\" class=\"rounded bg-red-500 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-600\">\n Confirm\n </async-button>\n <button @click=\"shouldShowDeleteMultipleModal = false;\" class=\"rounded bg-gray-400 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-gray-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500\">\n Cancel\n </button>\n </div>\n </template>\n </modal>\n</div>\n";
|
|
5046
5358
|
|
|
5047
|
-
/***/ }
|
|
5359
|
+
/***/ },
|
|
5048
5360
|
|
|
5049
|
-
/***/ "./frontend/src/models/models.js"
|
|
5361
|
+
/***/ "./frontend/src/models/models.js"
|
|
5050
5362
|
/*!***************************************!*\
|
|
5051
5363
|
!*** ./frontend/src/models/models.js ***!
|
|
5052
5364
|
\***************************************/
|
|
5053
|
-
|
|
5365
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
5054
5366
|
|
|
5055
5367
|
"use strict";
|
|
5056
5368
|
|
|
@@ -5058,6 +5370,7 @@ module.exports = "<div class=\"models flex\" style=\"height: calc(100vh - 55px);
|
|
|
5058
5370
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
5059
5371
|
const template = __webpack_require__(/*! ./models.html */ "./frontend/src/models/models.html");
|
|
5060
5372
|
const mpath = __webpack_require__(/*! mpath */ "./node_modules/mpath/index.js");
|
|
5373
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
5061
5374
|
|
|
5062
5375
|
const appendCSS = __webpack_require__(/*! ../appendCSS */ "./frontend/src/appendCSS.js");
|
|
5063
5376
|
appendCSS(__webpack_require__(/*! ./models.css */ "./frontend/src/models/models.css"));
|
|
@@ -5089,6 +5402,7 @@ module.exports = app => app.component('models', {
|
|
|
5089
5402
|
shouldShowCreateModal: false,
|
|
5090
5403
|
shouldShowFieldModal: false,
|
|
5091
5404
|
shouldShowIndexModal: false,
|
|
5405
|
+
shouldShowCollectionInfoModal: false,
|
|
5092
5406
|
shouldShowUpdateMultipleModal: false,
|
|
5093
5407
|
shouldShowDeleteMultipleModal: false,
|
|
5094
5408
|
shouldExport: {},
|
|
@@ -5099,7 +5413,9 @@ module.exports = app => app.component('models', {
|
|
|
5099
5413
|
outputType: 'table', // json, table
|
|
5100
5414
|
hideSidebar: null,
|
|
5101
5415
|
lastSelectedIndex: null,
|
|
5102
|
-
error: null
|
|
5416
|
+
error: null,
|
|
5417
|
+
showActionsMenu: false,
|
|
5418
|
+
collectionInfo: null
|
|
5103
5419
|
}),
|
|
5104
5420
|
created() {
|
|
5105
5421
|
this.currentModel = this.model;
|
|
@@ -5108,12 +5424,23 @@ module.exports = app => app.component('models', {
|
|
|
5108
5424
|
beforeDestroy() {
|
|
5109
5425
|
document.removeEventListener('scroll', this.onScroll, true);
|
|
5110
5426
|
window.removeEventListener('popstate', this.onPopState, true);
|
|
5427
|
+
document.removeEventListener('click', this.onOutsideActionsMenuClick, true);
|
|
5111
5428
|
},
|
|
5112
5429
|
async mounted() {
|
|
5113
5430
|
this.onScroll = () => this.checkIfScrolledToBottom();
|
|
5114
5431
|
document.addEventListener('scroll', this.onScroll, true);
|
|
5115
5432
|
this.onPopState = () => this.initSearchFromUrl();
|
|
5116
5433
|
window.addEventListener('popstate', this.onPopState, true);
|
|
5434
|
+
this.onOutsideActionsMenuClick = event => {
|
|
5435
|
+
if (!this.showActionsMenu) {
|
|
5436
|
+
return;
|
|
5437
|
+
}
|
|
5438
|
+
const actionsMenu = this.$refs.actionsMenuContainer;
|
|
5439
|
+
if (actionsMenu && !actionsMenu.contains(event.target)) {
|
|
5440
|
+
this.closeActionsMenu();
|
|
5441
|
+
}
|
|
5442
|
+
};
|
|
5443
|
+
document.addEventListener('click', this.onOutsideActionsMenuClick, true);
|
|
5117
5444
|
const { models, readyState } = await api.Model.listModels();
|
|
5118
5445
|
this.models = models;
|
|
5119
5446
|
if (this.currentModel == null && this.models.length > 0) {
|
|
@@ -5215,6 +5542,13 @@ module.exports = app => app.component('models', {
|
|
|
5215
5542
|
async dropIndex(name) {
|
|
5216
5543
|
const { mongoDBIndexes } = await api.Model.dropIndex({ model: this.currentModel, name });
|
|
5217
5544
|
this.mongoDBIndexes = mongoDBIndexes;
|
|
5545
|
+
vanillatoasts.create({
|
|
5546
|
+
title: 'Index dropped!',
|
|
5547
|
+
type: 'success',
|
|
5548
|
+
timeout: 3000,
|
|
5549
|
+
icon: 'images/success.png',
|
|
5550
|
+
positionClass: 'bottomRight'
|
|
5551
|
+
});
|
|
5218
5552
|
},
|
|
5219
5553
|
async closeCreationModal() {
|
|
5220
5554
|
this.shouldShowCreateModal = false;
|
|
@@ -5287,11 +5621,86 @@ module.exports = app => app.component('models', {
|
|
|
5287
5621
|
}
|
|
5288
5622
|
},
|
|
5289
5623
|
async openIndexModal() {
|
|
5624
|
+
this.closeActionsMenu();
|
|
5290
5625
|
this.shouldShowIndexModal = true;
|
|
5291
5626
|
const { mongoDBIndexes, schemaIndexes } = await api.Model.getIndexes({ model: this.currentModel });
|
|
5292
5627
|
this.mongoDBIndexes = mongoDBIndexes;
|
|
5293
5628
|
this.schemaIndexes = schemaIndexes;
|
|
5294
5629
|
},
|
|
5630
|
+
toggleActionsMenu() {
|
|
5631
|
+
this.showActionsMenu = !this.showActionsMenu;
|
|
5632
|
+
},
|
|
5633
|
+
closeActionsMenu() {
|
|
5634
|
+
this.showActionsMenu = false;
|
|
5635
|
+
},
|
|
5636
|
+
async openCollectionInfo() {
|
|
5637
|
+
this.closeActionsMenu();
|
|
5638
|
+
this.shouldShowCollectionInfoModal = true;
|
|
5639
|
+
this.collectionInfo = null;
|
|
5640
|
+
const { info } = await api.Model.getCollectionInfo({ model: this.currentModel });
|
|
5641
|
+
this.collectionInfo = info;
|
|
5642
|
+
},
|
|
5643
|
+
isTTLIndex(index) {
|
|
5644
|
+
return index != null && index.expireAfterSeconds != null;
|
|
5645
|
+
},
|
|
5646
|
+
formatTTL(expireAfterSeconds) {
|
|
5647
|
+
if (typeof expireAfterSeconds !== 'number') {
|
|
5648
|
+
return '';
|
|
5649
|
+
}
|
|
5650
|
+
|
|
5651
|
+
let remaining = expireAfterSeconds;
|
|
5652
|
+
const days = Math.floor(remaining / (24 * 60 * 60));
|
|
5653
|
+
remaining = remaining % (24 * 60 * 60);
|
|
5654
|
+
const hours = Math.floor(remaining / (60 * 60));
|
|
5655
|
+
remaining = remaining % (60 * 60);
|
|
5656
|
+
const minutes = Math.floor(remaining / 60);
|
|
5657
|
+
const seconds = remaining % 60;
|
|
5658
|
+
|
|
5659
|
+
const parts = [];
|
|
5660
|
+
if (days > 0) {
|
|
5661
|
+
parts.push(`${days} day${days === 1 ? '' : 's'}`);
|
|
5662
|
+
}
|
|
5663
|
+
if (hours > 0) {
|
|
5664
|
+
parts.push(`${hours} hour${hours === 1 ? '' : 's'}`);
|
|
5665
|
+
}
|
|
5666
|
+
if (minutes > 0) {
|
|
5667
|
+
parts.push(`${minutes} minute${minutes === 1 ? '' : 's'}`);
|
|
5668
|
+
}
|
|
5669
|
+
if (seconds > 0 || parts.length === 0) {
|
|
5670
|
+
parts.push(`${seconds} second${seconds === 1 ? '' : 's'}`);
|
|
5671
|
+
}
|
|
5672
|
+
|
|
5673
|
+
return parts.join(', ');
|
|
5674
|
+
},
|
|
5675
|
+
formatCollectionSize(size) {
|
|
5676
|
+
if (typeof size !== 'number') {
|
|
5677
|
+
return 'Unknown';
|
|
5678
|
+
}
|
|
5679
|
+
|
|
5680
|
+
const KB = 1024;
|
|
5681
|
+
const MB = KB * 1024;
|
|
5682
|
+
const GB = MB * 1024;
|
|
5683
|
+
const TB = GB * 1024;
|
|
5684
|
+
|
|
5685
|
+
if (size >= TB) {
|
|
5686
|
+
return `${(size / TB).toFixed(3)} TB`;
|
|
5687
|
+
} else if (size >= GB) {
|
|
5688
|
+
return `${(size / GB).toFixed(3)} GB`;
|
|
5689
|
+
} else if (size >= MB) {
|
|
5690
|
+
return `${(size / MB).toFixed(3)} MB`;
|
|
5691
|
+
} else if (size >= KB) {
|
|
5692
|
+
return `${(size / KB).toFixed(3)} KB`;
|
|
5693
|
+
} else {
|
|
5694
|
+
return `${size.toLocaleString()} bytes`;
|
|
5695
|
+
}
|
|
5696
|
+
},
|
|
5697
|
+
formatNumber(value) {
|
|
5698
|
+
if (typeof value !== 'number') {
|
|
5699
|
+
return 'Unknown';
|
|
5700
|
+
}
|
|
5701
|
+
|
|
5702
|
+
return value.toLocaleString();
|
|
5703
|
+
},
|
|
5295
5704
|
checkIndexLocation(indexName) {
|
|
5296
5705
|
if (this.schemaIndexes.find(x => x.name == indexName) && this.mongoDBIndexes.find(x => x.name == indexName)) {
|
|
5297
5706
|
return 'text-gray-500';
|
|
@@ -5465,6 +5874,13 @@ module.exports = app => app.component('models', {
|
|
|
5465
5874
|
this.documents[index] = res.doc;
|
|
5466
5875
|
}
|
|
5467
5876
|
this.edittingDoc = null;
|
|
5877
|
+
vanillatoasts.create({
|
|
5878
|
+
title: 'Document updated!',
|
|
5879
|
+
type: 'success',
|
|
5880
|
+
timeout: 3000,
|
|
5881
|
+
icon: 'images/success.png',
|
|
5882
|
+
positionClass: 'bottomRight'
|
|
5883
|
+
});
|
|
5468
5884
|
},
|
|
5469
5885
|
handleDocumentClick(document, event) {
|
|
5470
5886
|
if (this.selectMultiple) {
|
|
@@ -5528,6 +5944,13 @@ module.exports = app => app.component('models', {
|
|
|
5528
5944
|
this.lastSelectedIndex = null;
|
|
5529
5945
|
this.shouldShowDeleteMultipleModal = false;
|
|
5530
5946
|
this.selectMultiple = false;
|
|
5947
|
+
vanillatoasts.create({
|
|
5948
|
+
title: 'Documents deleted!',
|
|
5949
|
+
type: 'success',
|
|
5950
|
+
timeout: 3000,
|
|
5951
|
+
icon: 'images/success.png',
|
|
5952
|
+
positionClass: 'bottomRight'
|
|
5953
|
+
});
|
|
5531
5954
|
},
|
|
5532
5955
|
async updateDocuments() {
|
|
5533
5956
|
await this.getDocuments();
|
|
@@ -5548,13 +5971,13 @@ module.exports = app => app.component('models', {
|
|
|
5548
5971
|
});
|
|
5549
5972
|
|
|
5550
5973
|
|
|
5551
|
-
/***/ }
|
|
5974
|
+
/***/ },
|
|
5552
5975
|
|
|
5553
|
-
/***/ "./frontend/src/models/trie.js"
|
|
5976
|
+
/***/ "./frontend/src/models/trie.js"
|
|
5554
5977
|
/*!*************************************!*\
|
|
5555
5978
|
!*** ./frontend/src/models/trie.js ***!
|
|
5556
5979
|
\*************************************/
|
|
5557
|
-
|
|
5980
|
+
(module) {
|
|
5558
5981
|
|
|
5559
5982
|
"use strict";
|
|
5560
5983
|
|
|
@@ -5702,13 +6125,13 @@ module.exports = {
|
|
|
5702
6125
|
};
|
|
5703
6126
|
|
|
5704
6127
|
|
|
5705
|
-
/***/ }
|
|
6128
|
+
/***/ },
|
|
5706
6129
|
|
|
5707
|
-
/***/ "./frontend/src/mothership.js"
|
|
6130
|
+
/***/ "./frontend/src/mothership.js"
|
|
5708
6131
|
/*!************************************!*\
|
|
5709
6132
|
!*** ./frontend/src/mothership.js ***!
|
|
5710
6133
|
\************************************/
|
|
5711
|
-
|
|
6134
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
5712
6135
|
|
|
5713
6136
|
"use strict";
|
|
5714
6137
|
|
|
@@ -5774,35 +6197,35 @@ exports.updateWorkspaceMember = function updateWorkspaceMember(params) {
|
|
|
5774
6197
|
exports.hasAPIKey = client.hasAPIKey;
|
|
5775
6198
|
|
|
5776
6199
|
|
|
5777
|
-
/***/ }
|
|
6200
|
+
/***/ },
|
|
5778
6201
|
|
|
5779
|
-
/***/ "./frontend/src/navbar/navbar.css"
|
|
6202
|
+
/***/ "./frontend/src/navbar/navbar.css"
|
|
5780
6203
|
/*!****************************************!*\
|
|
5781
6204
|
!*** ./frontend/src/navbar/navbar.css ***!
|
|
5782
6205
|
\****************************************/
|
|
5783
|
-
|
|
6206
|
+
(module) {
|
|
5784
6207
|
|
|
5785
6208
|
"use strict";
|
|
5786
6209
|
module.exports = ".active {\n text-decoration: underline;\n}\n\n.navbar .nav-left {\n float: left;\n line-height: 54px;\n font-size: 20px;\n padding-left: 20px;\n}\n\n.navbar .nav-left a {\n color: #232323;\n}\n\n.navbar .nav-right {\n float: right;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 16px;\n line-height: 54px;\n padding-right: 20px;\n}\n\n.navbar .nav-right .nav-item {\n flex-grow: 1;\n padding: 0px 12px;\n position: relative;\n z-index: 21000;\n}\n\n.navbar .nav-right .nav-item:hover {\n flex-grow: 1;\n padding: 0px 12px;\n border-bottom: 1px solid #E1B9A0;\n}\n\n.navbar .nav-right .nav-item.active {\n border-bottom: 1px solid #E1B9A0;\n}\n\n.navbar .nav-action {\n cursor: pointer;\n color: #E1B9A0;\n}\n\n.navbar .nav-action svg {\n height: 1em;\n vertical-align: middle;\n}\n\n.navbar .nav-right .nav-item .flyout {\n position: absolute;\n top: 55px;\n right: 0px;\n visibility: hidden;\n opacity: 0;\n transition: opacity .25s,visibility .25s,transform .25s;\n width: auto;\n box-shadow: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);\n background-color: #393944;\n padding-left: 0.5em;\n padding-right: 0.5em;\n z-index: 1000;\n min-width: 192px;\n font-size: 0.9em;\n}\n\n.navbar .nav-right .nav-item:hover .flyout a {\n color: #E1B9A0;\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n\n.navbar .nav-right .nav-item:hover .flyout a:hover {\n color: #E1B9A0;\n}\n\n.navbar .nav-right .nav-item:hover .flyout .nav-action {\n color: #E1B9A0;\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n\n.navbar .nav-right .nav-item:hover .flyout .nav-action:hover {\n color: #E1B9A0;\n}\n\n.navbar .nav-right .nav-item:hover .flyout {\n visibility: visible;\n opacity: 1;\n}\n\n#bar-1 {\n\ttransform: translateY(-4px);\n}\n#bar-3 {\n\ttransform: translateY(4px);\n}\n.menu {\n display: none;\n}\n.menu {\n\twidth: 35px;\n\theight: 30px;\n\tmargin: 18px 2px 0px 0px;\n\tcursor: pointer;\n float: right;\n}\n.bar {\n\theight: 5px;\n\twidth: 100%;\n\tbackground-color: #fff;\n\tdisplay: block;\n\tborder-radius: 5px;\n\ttransition: 0.4s ease;\n}\n.change-icon #bar-1 {\n transform: translateY(4px) rotateZ(-405deg);\n}\n.change-icon #bar-2 {\n opacity: 0;\n}\n.change-icon #bar-3 {\n transform: translateY(-6px) rotateZ(405deg);\n}\n\n@media (max-width: 767px) {\n .menu {\n display: block;\n }\n\n .change-icon ~ div.nav-right {\n left: 0;\n }\n\n .navbar .nav-right {\n\t\tposition: fixed;\n\t\ttop: 55px;\n\t\tleft: -130%;\n\t\tbackground: #111;\n\t\theight: 100vh;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tdisplay: block;\n\t\ttransition: all 0.3s ease;\n z-index: 10000;\n\t}\n}\n";
|
|
5787
6210
|
|
|
5788
|
-
/***/ }
|
|
6211
|
+
/***/ },
|
|
5789
6212
|
|
|
5790
|
-
/***/ "./frontend/src/navbar/navbar.html"
|
|
6213
|
+
/***/ "./frontend/src/navbar/navbar.html"
|
|
5791
6214
|
/*!*****************************************!*\
|
|
5792
6215
|
!*** ./frontend/src/navbar/navbar.html ***!
|
|
5793
6216
|
\*****************************************/
|
|
5794
|
-
|
|
6217
|
+
(module) {
|
|
5795
6218
|
|
|
5796
6219
|
"use strict";
|
|
5797
6220
|
module.exports = "<div class=\"navbar w-full bg-gray-50 flex justify-between border-b border-gray-200 !h-[55px]\">\n <div class=\"flex items-center gap-4 h-full pl-4\">\n <router-link :to=\"{ name: defaultRoute }\">\n <img src=\"images/logo.svg\" class=\"h-[32px] mr-1\" alt=\"Mongoose Studio Logo\" />\n </router-link>\n <div v-if=\"!!state.nodeEnv\" title=\"NODE_ENV\" class=\"inline-flex items-center rounded-md px-2 py-1 text-sm font-medium text-gray-900\" :class=\"warnEnv ? 'bg-red-300' : 'bg-yellow-300'\">\n {{state.nodeEnv}}\n </div>\n </div>\n <div class=\"h-full pr-4 hidden md:block\">\n <div class=\"sm:ml-6 sm:flex sm:space-x-8 h-full\">\n <a v-if=\"hasAccess(roles, 'root')\"\n href=\"#/\"\n class=\"inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium\"\n :class=\"documentView ? 'text-gray-900 border-ultramarine-500' : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700'\">Documents</a>\n <span v-else class=\"inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium text-gray-300 cursor-not-allowed\" aria-disabled=\"true\">\n Documents\n <svg class=\"h-4 w-4 ml-1\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <a v-if=\"hasAccess(roles, 'dashboards')\"\n href=\"#/dashboards\"\n class=\"inline-flex items-center border-b-2 px-1 pt-1 text-sm font-medium\"\n :class=\"dashboardView ? 'text-gray-900 border-ultramarine-500' : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700'\">Dashboards</a>\n <span v-else class=\"inline-flex items-center border-b-2 px-1 pt-1 text-sm font-medium text-gray-300 cursor-not-allowed\">\n Dashboards\n <svg class=\"h-4 w-4 ml-1\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <a v-if=\"hasAccess(roles, 'chat')\"\n href=\"#/chat\"\n class=\"inline-flex items-center border-b-2 px-1 pt-1 text-sm font-medium\"\n :class=\"chatView ? 'text-gray-900 border-ultramarine-500' : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700'\">Chat</a>\n <span v-else class=\"inline-flex items-center border-b-2 px-1 pt-1 text-sm font-medium text-gray-300 cursor-not-allowed\">\n Chat\n <svg class=\"h-4 w-4 ml-1\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <a\n href=\"https://studio.mongoosejs.io/docs\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"inline-flex items-center border-b-2 px-1 pt-1 text-sm font-medium text-gray-500 hover:border-gray-300 hover:text-gray-700 border-transparent\"\n >\n Docs\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ml-1 h-4 w-4\" viewBox=\"0 -960 960 960\" fill=\"currentColor\"><path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z\"/></svg>\n </a>\n\n <div class=\"h-full flex items-center\" v-if=\"!user && hasAPIKey\">\n <button\n type=\"button\"\n @click=\"loginWithGithub\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Login\n </button>\n </div>\n <div v-if=\"user && hasAPIKey\" class=\"h-full flex items-center relative\" v-clickOutside=\"hideFlyout\">\n <div>\n <button type=\"button\" @click=\"showFlyout = !showFlyout\" class=\"relative flex rounded-full bg-gray-800 text-sm focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-gray-800\" id=\"user-menu-button\" aria-expanded=\"false\" aria-haspopup=\"true\">\n <span class=\"absolute -inset-1.5\"></span>\n <span class=\"sr-only\">Open user menu</span>\n <img class=\"size-8 rounded-full\" :src=\"user.picture\" alt=\"\">\n </button>\n </div>\n\n <div v-if=\"showFlyout\" class=\"absolute right-0 z-[100] top-[90%] w-48 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black/5 focus:outline-none\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"user-menu-button\" tabindex=\"-1\">\n <router-link to=\"/team\" v-if=\"hasAccess(roles, 'team')\" @click=\"showFlyout = false\" class=\"cursor-pointer block px-4 py-2 text-sm text-gray-700 hover:bg-ultramarine-200\" role=\"menuitem\" tabindex=\"-1\" id=\"user-menu-item-2\">Team</router-link>\n <span v-else class=\"block px-4 py-2 text-sm text-gray-300 cursor-not-allowed\" role=\"menuitem\" tabindex=\"-1\" id=\"user-menu-item-2\">\n Team\n <svg class=\"h-4 w-4 ml-1 inline\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <span @click=\"logout\" class=\"cursor-pointer block px-4 py-2 text-sm text-gray-700 hover:bg-ultramarine-200\" role=\"menuitem\" tabindex=\"-1\" id=\"user-menu-item-2\">Sign out</span>\n </div>\n </div>\n\n </div>\n </div>\n <div class=\"md:hidden flex items-center\">\n <!-- Mobile menu toggle, controls the 'mobileMenuOpen' state. -->\n <button type=\"button\" id=\"open-mobile-menu\" class=\"-ml-2 rounded-md p-2 pr-4 text-gray-400\">\n <span class=\"sr-only\">Open menu</span>\n <svg class=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" />\n </svg>\n </button>\n </div>\n\n <!-- Mobile menu mask -->\n <div id=\"mobile-menu-mask\" class=\"fixed inset-0 bg-black bg-opacity-40 z-40 hidden\"></div>\n <!-- Mobile menu drawer -->\n <div id=\"mobile-menu\" class=\"fixed inset-0 bg-white shadow-lg z-50 transform translate-x-full transition-transform duration-200 ease-in-out flex flex-col\">\n <div class=\"flex items-center justify-between px-4 !h-[55px] border-b border-gray-200\">\n <router-link :to=\"{ name: defaultRoute }\">\n <img src=\"images/logo.svg\" class=\"h-[32px]\" alt=\"Mongoose Studio Logo\" />\n </router-link>\n <button type=\"button\" id=\"close-mobile-menu\" class=\"text-gray-400 p-2 rounded-md\">\n <span class=\"sr-only\">Close menu</span>\n <svg class=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <nav class=\"flex-1 px-4 py-4 space-y-2\">\n <a v-if=\"hasAccess(roles, 'root')\"\n href=\"#/\"\n class=\"block px-3 py-2 rounded-md text-base font-medium\"\n :class=\"documentView ? 'text-ultramarine-700 bg-ultramarine-100' : 'text-gray-700 hover:bg-gray-100'\">Documents</a>\n <span v-else class=\"block px-3 py-2 rounded-md text-base font-medium text-gray-300 cursor-not-allowed\">\n Documents\n <svg class=\"h-4 w-4 ml-1 inline\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <a v-if=\"hasAccess(roles, 'dashboards')\"\n href=\"#/dashboards\"\n class=\"block px-3 py-2 rounded-md text-base font-medium\"\n :class=\"dashboardView ? 'text-ultramarine-700 bg-ultramarine-100' : 'text-gray-700 hover:bg-gray-100'\">Dashboards</a>\n <span v-else class=\"block px-3 py-2 rounded-md text-base font-medium text-gray-300 cursor-not-allowed\">\n Dashboards\n <svg class=\"h-4 w-4 ml-1 inline\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <a v-if=\"hasAccess(roles, 'chat')\"\n href=\"#/chat\"\n class=\"block px-3 py-2 rounded-md text-base font-medium\"\n :class=\"chatView ? 'text-ultramarine-700 bg-ultramarine-100' : 'text-gray-700 hover:bg-gray-100'\">Chat</a>\n <span v-else class=\"block px-3 py-2 rounded-md text-base font-medium text-gray-300 cursor-not-allowed\">\n Chat\n <svg class=\"h-4 w-4 ml-1 inline\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <div v-if=\"!user && hasAPIKey\" class=\"mt-4\">\n <button\n type=\"button\"\n @click=\"loginWithGithub\"\n class=\"w-full rounded bg-ultramarine-600 px-3 py-2 text-base font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n Login\n </button>\n </div>\n <div v-if=\"user && hasAPIKey\" class=\"mt-4\">\n <div class=\"flex items-center gap-3 px-3 py-2 bg-gray-50 rounded-md\">\n <img class=\"size-8 rounded-full\" :src=\"user.picture\" alt=\"\">\n <span class=\"text-gray-900 font-medium\">{{ user.name }}</span>\n </div>\n <div class=\"mt-2 space-y-1\">\n <router-link to=\"/team\" v-if=\"hasAccess(roles, 'team')\" class=\"block px-3 py-2 rounded-md text-base text-gray-700 hover:bg-ultramarine-100\">Team</router-link>\n <span v-else class=\"block px-3 py-2 rounded-md text-base text-gray-300 cursor-not-allowed\">\n Team\n <svg class=\"h-4 w-4 ml-1 inline\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 00-4 4v2H5a2 2 0 00-2 2v6a2 2 0 002 2h10a2 2 0 002-2v-6a2 2 0 00-2-2h-1V6a4 4 0 00-4-4zm-3 6V6a3 3 0 116 0v2H7z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <span @click=\"logout\" class=\"block px-3 py-2 rounded-md text-base text-gray-700 hover:bg-ultramarine-100 cursor-pointer\">Sign out</span>\n </div>\n </div>\n </nav>\n </div>\n</div>\n";
|
|
5798
6221
|
|
|
5799
|
-
/***/ }
|
|
6222
|
+
/***/ },
|
|
5800
6223
|
|
|
5801
|
-
/***/ "./frontend/src/navbar/navbar.js"
|
|
6224
|
+
/***/ "./frontend/src/navbar/navbar.js"
|
|
5802
6225
|
/*!***************************************!*\
|
|
5803
6226
|
!*** ./frontend/src/navbar/navbar.js ***!
|
|
5804
6227
|
\***************************************/
|
|
5805
|
-
|
|
6228
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
5806
6229
|
|
|
5807
6230
|
"use strict";
|
|
5808
6231
|
|
|
@@ -5902,13 +6325,13 @@ module.exports = app => app.component('navbar', {
|
|
|
5902
6325
|
});
|
|
5903
6326
|
|
|
5904
6327
|
|
|
5905
|
-
/***/ }
|
|
6328
|
+
/***/ },
|
|
5906
6329
|
|
|
5907
|
-
/***/ "./frontend/src/routes.js"
|
|
6330
|
+
/***/ "./frontend/src/routes.js"
|
|
5908
6331
|
/*!********************************!*\
|
|
5909
6332
|
!*** ./frontend/src/routes.js ***!
|
|
5910
6333
|
\********************************/
|
|
5911
|
-
|
|
6334
|
+
(module) {
|
|
5912
6335
|
|
|
5913
6336
|
"use strict";
|
|
5914
6337
|
|
|
@@ -6003,24 +6426,24 @@ module.exports = {
|
|
|
6003
6426
|
};
|
|
6004
6427
|
|
|
6005
6428
|
|
|
6006
|
-
/***/ }
|
|
6429
|
+
/***/ },
|
|
6007
6430
|
|
|
6008
|
-
/***/ "./frontend/src/splash/splash.html"
|
|
6431
|
+
/***/ "./frontend/src/splash/splash.html"
|
|
6009
6432
|
/*!*****************************************!*\
|
|
6010
6433
|
!*** ./frontend/src/splash/splash.html ***!
|
|
6011
6434
|
\*****************************************/
|
|
6012
|
-
|
|
6435
|
+
(module) {
|
|
6013
6436
|
|
|
6014
6437
|
"use strict";
|
|
6015
6438
|
module.exports = "<div class=\"w-full h-full flex items-center justify-center\">\n <div class=\"text-center\">\n <div class=\"rounded-full bg-gray-100 p-6 inline-block\">\n <img src=\"images/logo.svg\" class=\"w-48 h-48\">\n </div>\n <div class=\"text-lg mt-2 font-bold\">\n Mongoose Studio\n </div>\n <div v-if=\"loading\" class=\"mt-2\">\n <img src=\"images/loader.gif\" class=\"inline w-16 h-16\">\n </div>\n <div class=\"mt-2 text-gray-700\" v-if=\"!loading\">\n {{workspaceName}}\n </div>\n <div class=\"mt-4 flex gap-4 justify-center\" v-if=\"!loading\">\n <div>\n <async-button\n type=\"button\"\n @click=\"loginWithGithub\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600 disabled:bg-gray-500\">\n <svg viewBox=\"0 0 98 98\" class=\"inline mr-1\" height=\"1.5em\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z\" fill=\"#fff\"/></svg>\n Login With GitHub\n </async-button>\n </div>\n <div>\n <async-button\n type=\"button\"\n @click=\"loginWithGoogle\"\n class=\"rounded bg-ultramarine-600 px-2 py-2 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600 disabled:bg-gray-500\">\n <svg class=\"inline\" xmlns=\"http://www.w3.org/2000/svg\" height=\"1.5em\" viewBox=\"0 0 512 512\"><path fill=\"#fff\" d=\"M386 400c45-42 65-112 53-179H260v74h102c-4 24-18 44-38 57z\"/><path fill=\"#fff\" d=\"M90 341a192 192 0 0 0 296 59l-62-48c-53 35-141 22-171-60z\"/><path fill=\"#fff\" d=\"M153 292c-8-25-8-48 0-73l-63-49c-23 46-30 111 0 171z\"/><path fill=\"#fff\" d=\"M153 219c22-69 116-109 179-50l55-54c-78-75-230-72-297 55z\"/></svg>\n Login With Google\n </async-button>\n </div>\n </div>\n <div class=\"mt-4\" v-if=\"state.authError\">\n <div class=\"rounded-md bg-red-50 p-4\">\n <div class=\"flex\">\n <div class=\"shrink-0\">\n <svg class=\"size-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM8.28 7.22a.75.75 0 0 0-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 1 0 1.06 1.06L10 11.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L11.06 10l1.72-1.72a.75.75 0 0 0-1.06-1.06L10 8.94 8.28 7.22Z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">{{state.authError}}</h3>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n";
|
|
6016
6439
|
|
|
6017
|
-
/***/ }
|
|
6440
|
+
/***/ },
|
|
6018
6441
|
|
|
6019
|
-
/***/ "./frontend/src/splash/splash.js"
|
|
6442
|
+
/***/ "./frontend/src/splash/splash.js"
|
|
6020
6443
|
/*!***************************************!*\
|
|
6021
6444
|
!*** ./frontend/src/splash/splash.js ***!
|
|
6022
6445
|
\***************************************/
|
|
6023
|
-
|
|
6446
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
6024
6447
|
|
|
6025
6448
|
"use strict";
|
|
6026
6449
|
|
|
@@ -6051,24 +6474,24 @@ module.exports = app => app.component('splash', {
|
|
|
6051
6474
|
});
|
|
6052
6475
|
|
|
6053
6476
|
|
|
6054
|
-
/***/ }
|
|
6477
|
+
/***/ },
|
|
6055
6478
|
|
|
6056
|
-
/***/ "./frontend/src/team/new-invitation/new-invitation.html"
|
|
6479
|
+
/***/ "./frontend/src/team/new-invitation/new-invitation.html"
|
|
6057
6480
|
/*!**************************************************************!*\
|
|
6058
6481
|
!*** ./frontend/src/team/new-invitation/new-invitation.html ***!
|
|
6059
6482
|
\**************************************************************/
|
|
6060
|
-
|
|
6483
|
+
(module) {
|
|
6061
6484
|
|
|
6062
6485
|
"use strict";
|
|
6063
6486
|
module.exports = "<div class=\"p-1\">\n <form class=\"space-y-4\">\n <div class=\"text-lg font-bold\">\n New Invitation\n </div>\n\n <div>\n <label for=\"githubUsername\" class=\"block text-sm/6 font-medium text-gray-900\">GitHub Username</label>\n <div class=\"mt-2\">\n <input type=\"githubUsername\" name=\"githubUsername\" id=\"githubUsername\" v-model=\"githubUsername\" class=\"block w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-ultramarine-600 sm:text-sm/6\" placeholder=\"johnsmith12\">\n </div>\n </div>\n\n <div>\n <label for=\"email\" class=\"block text-sm/6 font-medium text-gray-900\">Email (Optional)</label>\n <div class=\"mt-2\">\n <input type=\"email\" name=\"email\" id=\"email\" v-model=\"email\" class=\"block w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-ultramarine-600 sm:text-sm/6\" placeholder=\"you@example.com\">\n </div>\n </div>\n\n <div>\n <label for=\"location\" class=\"block text-sm/6 font-medium text-gray-900\">Role</label>\n <div class=\"mt-2 grid grid-cols-1\">\n <select id=\"role\" :disabled=\"tier == null\" name=\"role\" v-model=\"role\" class=\"col-start-1 row-start-1 w-full appearance-none rounded-md bg-white py-1.5 pl-3 pr-8 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-indigo-600 sm:text-sm/6\">\n <option value=\"admin\">Admin</option>\n <option value=\"member\">Member</option>\n <option value=\"readonly\">Read-only</option>\n <option value=\"dashboards\">Dashboards Only</option>\n </select>\n <svg class=\"pointer-events-none col-start-1 row-start-1 mr-2 size-5 self-center justify-self-end text-gray-500 sm:size-4\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n <path fill-rule=\"evenodd\" d=\"M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div v-if=\"tier == null\" class=\"text-sm text-gray-700\">\n You can only invite \"Dashboards Only\" users until you set up a subscription.\n </div>\n </div>\n\n <async-button\n type=\"submit\"\n @click=\"inviteToWorkspace\"\n class=\"inline-flex justify-center rounded-md border border-transparent bg-forest-green-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-forest-green-500 focus:outline-none focus:ring-2 focus:ring-forest-green-500 focus:ring-offset-2\">\n Submit\n </async-button>\n </form>\n</div>\n";
|
|
6064
6487
|
|
|
6065
|
-
/***/ }
|
|
6488
|
+
/***/ },
|
|
6066
6489
|
|
|
6067
|
-
/***/ "./frontend/src/team/new-invitation/new-invitation.js"
|
|
6490
|
+
/***/ "./frontend/src/team/new-invitation/new-invitation.js"
|
|
6068
6491
|
/*!************************************************************!*\
|
|
6069
6492
|
!*** ./frontend/src/team/new-invitation/new-invitation.js ***!
|
|
6070
6493
|
\************************************************************/
|
|
6071
|
-
|
|
6494
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
6072
6495
|
|
|
6073
6496
|
"use strict";
|
|
6074
6497
|
|
|
@@ -6100,24 +6523,24 @@ module.exports = app => app.component('new-invitation', {
|
|
|
6100
6523
|
});
|
|
6101
6524
|
|
|
6102
6525
|
|
|
6103
|
-
/***/ }
|
|
6526
|
+
/***/ },
|
|
6104
6527
|
|
|
6105
|
-
/***/ "./frontend/src/team/team.html"
|
|
6528
|
+
/***/ "./frontend/src/team/team.html"
|
|
6106
6529
|
/*!*************************************!*\
|
|
6107
6530
|
!*** ./frontend/src/team/team.html ***!
|
|
6108
6531
|
\*************************************/
|
|
6109
|
-
|
|
6532
|
+
(module) {
|
|
6110
6533
|
|
|
6111
6534
|
"use strict";
|
|
6112
6535
|
module.exports = "<div class=\"mx-auto max-w-5xl py-6 px-2 flex flex-col gap-8\">\n <div>\n <div class=\"text-xl font-bold\">\n Subscription Details\n </div>\n <div v-if=\"status === 'loading'\" class=\"mt-4\">\n <img src=\"images/loader.gif\" class=\"inline w-8 h-8\">\n </div>\n <div v-else-if=\"workspace && workspace.subscriptionTier\" class=\"mt-4 flex justify-between items-center\">\n <div>\n <span class=\"font-bold\">Tier:</span> {{workspace.subscriptionTier ?? 'No subscription'}}\n </div>\n <div>\n <async-button\n type=\"submit\"\n @click=\"getWorkspaceCustomerPortalLink\"\n class=\"inline-flex items-center justify-center rounded-md border border-transparent bg-ultramarine-600 py-1 px-2 text-sm font-medium text-white shadow-sm hover:bg-ultramarine-500 focus:outline-none focus:ring-2 focus:ring-forest-green-500 focus:ring-offset-2\">\n View in Stripe\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-4 h-4 ml-1\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\" />\n </svg>\n </async-button>\n </div>\n </div>\n <div v-else-if=\"workspace && !workspace.subscriptionTier\" class=\"mt-4 flex justify-between items-center\">\n <div>\n <span class=\"font-bold\">No active subscription</span>\n <div class=\"text-sm text-gray-700\">\n You won't be able to invite your team until you activate a subscription\n </div>\n </div>\n <div>\n <a\n :href=\"paymentLink\"\n target=\"_blank\"\n class=\"inline-flex items-center justify-center rounded-md border border-transparent bg-ultramarine-600 py-1 px-2 text-sm font-medium text-white shadow-sm hover:bg-ultramarine-500 focus:outline-none focus:ring-2 focus:ring-ultramarine-500 focus:ring-offset-2\">\n Subscribe With Stripe\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-4 h-4 ml-1\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\" />\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div>\n <div class=\"text-xl font-bold\">\n Current Members\n </div>\n <div v-if=\"status === 'loading'\" class=\"mt-4\">\n <img src=\"images/loader.gif\" class=\"inline w-8 h-8\">\n </div>\n <ul v-else role=\"list\" class=\"divide-y divide-gray-100\">\n <li class=\"flex justify-between gap-x-6 py-5\" v-for=\"user in users\">\n <div class=\"flex min-w-0 gap-x-4\">\n <img class=\"size-12 flex-none rounded-full bg-gray-50\" :src=\"user.picture ?? 'images/logo.svg'\" alt=\"\">\n <div class=\"min-w-0 flex-auto\">\n <p class=\"text-sm/6 font-semibold text-gray-900\">\n {{user.name || user.githubUsername}}\n <span v-if=\"user.isFreeUser\" class=\"ml-1 inline-flex items-center rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/20\">Free</span>\n </p>\n <p class=\"mt-1 truncate text-xs/5 text-gray-500\">{{user.email ?? 'No Email'}}</p>\n </div>\n </div>\n <div class=\"hidden shrink-0 sm:flex sm:flex-col sm:items-end\">\n <p class=\"text-sm/6 text-gray-900 capitalize\">{{getRolesForUser(user).join(', ')}}</p>\n <div class=\"flex gap-3\">\n <button\n type=\"button\"\n class=\"mt-1 text-xs/5 text-gray-500 cursor-pointer disabled:cursor-not-allowed disabled:text-gray-300\"\n :disabled=\"getRolesForUser(user).includes('owner')\"\n @click=\"openEditModal(user)\">\n Edit\n </button>\n <button\n class=\"mt-1 text-xs/5 text-valencia-500 cursor-pointer disabled:cursor-not-allowed disabled:text-gray-300\"\n :disabled=\"getRolesForUser(user).includes('owner')\"\n @click=\"showRemoveModal = user\">\n Remove\n </button>\n </div>\n </div>\n </li>\n </ul>\n </div>\n <div>\n <div class=\"flex items-center justify-between\">\n <div class=\"text-xl font-bold\">\n Invitations\n </div>\n <div class=\"mt-4 sm:ml-16 sm:mt-0 sm:flex-none\">\n <button\n type=\"button\"\n @click=\"showNewInvitationModal = true\"\n :disabled=\"status === 'loading'\"\n :tier=\"workspace?.subscriptionTier\"\n class=\"block rounded-md bg-ultramarine-600 px-3 py-2 text-center text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 disabled:bg-gray-500 disabled:cursor-not-allowed focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-600\">\n New Invitation\n <svg class=\"inline w-4 h-4 ml-1\" v-if=\"workspace && !workspace.subscriptionTier\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" d=\"M12 1.5a5.25 5.25 0 00-5.25 5.25v3a3 3 0 00-3 3v6.75a3 3 0 003 3h10.5a3 3 0 003-3v-6.75a3 3 0 00-3-3v-3c0-2.9-2.35-5.25-5.25-5.25zm3.75 8.25v-3a3.75 3.75 0 10-7.5 0v3h7.5z\" clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n </div>\n <div v-if=\"status === 'loading'\" class=\"mt-4\">\n <img src=\"images/loader.gif\" class=\"inline w-8 h-8\">\n </div>\n <div v-else-if=\"invitations?.length > 0\" class=\"mt-8 flow-root\" v-if=\"invitations?.length > 0\">\n <div class=\"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8\">\n <div class=\"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8\">\n <table class=\"min-w-full divide-y divide-gray-300\">\n <thead>\n <tr>\n <th scope=\"col\" class=\"py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 sm:pl-0\">GitHub Username</th>\n <th scope=\"col\" class=\"px-3 py-3.5 text-left text-sm font-semibold text-gray-900\">Email</th>\n <th scope=\"col\" class=\"px-3 py-3.5 text-left text-sm font-semibold text-gray-900\">Status</th>\n <th scope=\"col\" class=\"px-3 py-3.5 text-left text-sm font-semibold text-gray-900\">Role</th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-gray-200 bg-white\">\n <tr v-for=\"invitation in invitations\">\n <td class=\"whitespace-nowrap py-5 pl-4 pr-3 text-sm sm:pl-0\">\n {{invitation.githubUsername}}\n </td>\n <td class=\"whitespace-nowrap px-3 py-5 text-sm text-gray-500\">\n {{invitation.email}}\n </td>\n <td class=\"whitespace-nowrap px-3 py-5 text-sm text-gray-500\">\n <span class=\"inline-flex items-center rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-700 ring-1 ring-inset ring-gray-600/20\">\n Pending\n </span>\n </td>\n <td class=\"whitespace-nowrap px-3 py-5 text-sm text-gray-500\">\n {{invitation.roles.join(', ')}}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n <div v-else-if=\"invitations?.length === 0\" class=\"mt-4\">\n <div class=\"text-center\">\n <svg class=\"mx-auto size-12 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path vector-effect=\"non-scaling-stroke\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z\" />\n </svg>\n <h3 class=\"mt-2 text-sm font-semibold text-gray-900\">No invitations</h3>\n <p class=\"mt-1 text-sm text-gray-500\">You have no outstanding invitations</p>\n </div>\n </div>\n </div>\n\n <modal v-if=\"showNewInvitationModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"showNewInvitationModal = false\">×</div>\n <new-invitation @close=\"showNewInvitationModal = false\" @invitationCreated=\"invitations.push($event.invitation)\"></new-invitation>\n </template>\n </modal>\n\n <modal v-if=\"showEditModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"closeEditModal\">×</div>\n <div class=\"p-1 space-y-4\">\n <div class=\"text-lg font-bold\">\n Edit Member\n </div>\n\n <div>\n <div class=\"text-sm/6 font-semibold text-gray-900\">\n {{showEditModal.user.name || showEditModal.user.githubUsername}}\n </div>\n <div class=\"text-xs/5 text-gray-500\">\n {{showEditModal.user.email ?? 'No Email'}}\n </div>\n </div>\n\n <div>\n <label for=\"editRole\" class=\"block text-sm/6 font-medium text-gray-900\">Role</label>\n <div class=\"mt-2 grid grid-cols-1\">\n <select\n id=\"editRole\"\n name=\"editRole\"\n v-model=\"showEditModal.role\"\n class=\"col-start-1 row-start-1 w-full appearance-none rounded-md bg-white py-1.5 pl-3 pr-8 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-ultramarine-600 sm:text-sm/6\">\n <option value=\"admin\" :disabled=\"disableRoleOption('admin')\">Admin</option>\n <option value=\"member\" :disabled=\"disableRoleOption('member')\">Member</option>\n <option value=\"readonly\" :disabled=\"disableRoleOption('readonly')\">Read-only</option>\n <option value=\"dashboards\" :disabled=\"disableRoleOption('dashboards')\">Dashboards Only</option>\n </select>\n <svg class=\"pointer-events-none col-start-1 row-start-1 mr-2 size-5 self-center justify-self-end text-gray-500 sm:size-4\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n <path fill-rule=\"evenodd\" d=\"M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div v-if=\"!workspace?.subscriptionTier\" class=\"mt-2 text-sm text-gray-700\">\n You can only assign the \"Dashboards Only\" role until you activate a subscription.\n </div>\n </div>\n\n <div class=\"mt-6 grid grid-cols-2 gap-4\">\n <async-button\n @click=\"updateWorkspaceMember\"\n :disabled=\"showEditModal.role === showEditModal.originalRole\"\n class=\"border-0 mt-0 flex w-full items-center justify-center gap-3 rounded-md bg-ultramarine-600 hover:bg-ultramarine-500 px-3 py-1.5 text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ultramarine-500\">\n <span class=\"text-sm font-semibold leading-6\">Save</span>\n </async-button>\n\n <span @click=\"closeEditModal\" class=\"cursor-pointer flex w-full items-center justify-center gap-3 rounded-md bg-slate-500 hover:bg-slate-400 px-3 py-1.5 text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-slate-400\">\n <span class=\"text-sm font-semibold leading-6\">Cancel</span>\n </span>\n </div>\n </div>\n </template>\n </modal>\n\n <modal v-if=\"showRemoveModal\">\n <template v-slot:body>\n <div class=\"modal-exit\" @click=\"showRemoveModal = null\">×</div>\n <div>\n Are you sure you want to remove user <span class=\"font-bold\">{{showRemoveModal.githubUsername}}</span> from this workspace?\n </div>\n <div class=\"mt-6 grid grid-cols-2 gap-4\">\n <async-button\n @click=\"removeFromWorkspace\"\n class=\"border-0 mt-0 flex w-full items-center justify-center gap-3 rounded-md bg-valencia-500 hover:bg-valencia-400 px-3 py-1.5 text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-orange-400\">\n <span class=\"text-sm font-semibold leading-6\">Yes, Remove</span>\n </async-button>\n\n <span @click=\"showRemoveModal = null\" class=\"cursor-pointer flex w-full items-center justify-center gap-3 rounded-md bg-slate-500 hover:bg-slate-400 px-3 py-1.5 text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-slate-400\">\n <span class=\"text-sm font-semibold leading-6\">Cancel</span>\n </span>\n </div>\n </template>\n </modal>\n</div>\n";
|
|
6113
6536
|
|
|
6114
|
-
/***/ }
|
|
6537
|
+
/***/ },
|
|
6115
6538
|
|
|
6116
|
-
/***/ "./frontend/src/team/team.js"
|
|
6539
|
+
/***/ "./frontend/src/team/team.js"
|
|
6117
6540
|
/*!***********************************!*\
|
|
6118
6541
|
!*** ./frontend/src/team/team.js ***!
|
|
6119
6542
|
\***********************************/
|
|
6120
|
-
|
|
6543
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
6121
6544
|
|
|
6122
6545
|
"use strict";
|
|
6123
6546
|
|
|
@@ -6214,40 +6637,41 @@ module.exports = app => app.component('team', {
|
|
|
6214
6637
|
});
|
|
6215
6638
|
|
|
6216
6639
|
|
|
6217
|
-
/***/ }
|
|
6640
|
+
/***/ },
|
|
6218
6641
|
|
|
6219
|
-
/***/ "./frontend/src/update-document/update-document.css"
|
|
6642
|
+
/***/ "./frontend/src/update-document/update-document.css"
|
|
6220
6643
|
/*!**********************************************************!*\
|
|
6221
6644
|
!*** ./frontend/src/update-document/update-document.css ***!
|
|
6222
6645
|
\**********************************************************/
|
|
6223
|
-
|
|
6646
|
+
(module) {
|
|
6224
6647
|
|
|
6225
6648
|
"use strict";
|
|
6226
6649
|
module.exports = "";
|
|
6227
6650
|
|
|
6228
|
-
/***/ }
|
|
6651
|
+
/***/ },
|
|
6229
6652
|
|
|
6230
|
-
/***/ "./frontend/src/update-document/update-document.html"
|
|
6653
|
+
/***/ "./frontend/src/update-document/update-document.html"
|
|
6231
6654
|
/*!***********************************************************!*\
|
|
6232
6655
|
!*** ./frontend/src/update-document/update-document.html ***!
|
|
6233
6656
|
\***********************************************************/
|
|
6234
|
-
|
|
6657
|
+
(module) {
|
|
6235
6658
|
|
|
6236
6659
|
"use strict";
|
|
6237
6660
|
module.exports = "<div>\n <div class=\"mb-2\">\n <textarea class=\"border border-gray-200 p-2 h-[300px] w-full\" ref=\"codeEditor\"></textarea>\n </div>\n <button @click=\"updateDocument()\" class=\"rounded-md bg-ultramarine-600 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-ultramarine-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600\">Submit</button>\n <div v-if=\"errors.length > 0\" class=\"rounded-md bg-red-50 p-4 mt-1\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3\">\n <h3 class=\"text-sm font-medium text-red-800\">There were {{errors.length}} errors with your submission</h3>\n <div class=\"mt-2 text-sm text-red-700\">\n <ul role=\"list\" class=\"list-disc space-y-1 pl-5\">\n <li v-for=\"error in errors\">\n {{error}}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>";
|
|
6238
6661
|
|
|
6239
|
-
/***/ }
|
|
6662
|
+
/***/ },
|
|
6240
6663
|
|
|
6241
|
-
/***/ "./frontend/src/update-document/update-document.js"
|
|
6664
|
+
/***/ "./frontend/src/update-document/update-document.js"
|
|
6242
6665
|
/*!*********************************************************!*\
|
|
6243
6666
|
!*** ./frontend/src/update-document/update-document.js ***!
|
|
6244
6667
|
\*********************************************************/
|
|
6245
|
-
|
|
6668
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
6246
6669
|
|
|
6247
6670
|
"use strict";
|
|
6248
6671
|
|
|
6249
6672
|
|
|
6250
6673
|
const api = __webpack_require__(/*! ../api */ "./frontend/src/api.js");
|
|
6674
|
+
const vanillatoasts = __webpack_require__(/*! vanillatoasts */ "./node_modules/vanillatoasts/vanillatoasts.js");
|
|
6251
6675
|
|
|
6252
6676
|
const { BSON, EJSON } = __webpack_require__(/*! mongodb/lib/bson */ "./node_modules/mongodb/lib/bson.js");
|
|
6253
6677
|
|
|
@@ -6275,35 +6699,35 @@ module.exports = app => app.component('update-document', {
|
|
|
6275
6699
|
methods: {
|
|
6276
6700
|
async updateDocument() {
|
|
6277
6701
|
const data = EJSON.serialize(eval(`(${this.editor.getValue()})`));
|
|
6278
|
-
|
|
6279
|
-
|
|
6280
|
-
|
|
6281
|
-
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
this.errors = message.split(',').map(error => {
|
|
6297
|
-
return error.split(': ').slice(1).join(': ').trim();
|
|
6298
|
-
});
|
|
6299
|
-
throw new Error(err.response?.data?.message);
|
|
6300
|
-
}
|
|
6301
|
-
throw err;
|
|
6702
|
+
try {
|
|
6703
|
+
if (this.multiple) {
|
|
6704
|
+
const ids = this.document.map(x => x._id);
|
|
6705
|
+
await api.Model.updateDocuments({ model: this.currentModel, _id: ids, update: data });
|
|
6706
|
+
} else {
|
|
6707
|
+
await api.Model.updateDocument({ model: this.currentModel, _id: this.document._id, update: data });
|
|
6708
|
+
}
|
|
6709
|
+
this.errors.length = 0;
|
|
6710
|
+
this.$emit('update');
|
|
6711
|
+
this.$emit('close');
|
|
6712
|
+
this.$nextTick(() => {
|
|
6713
|
+
vanillatoasts.create({
|
|
6714
|
+
title: this.multiple ? 'Documents updated!' : 'Document updated!',
|
|
6715
|
+
type: 'success',
|
|
6716
|
+
timeout: 3000,
|
|
6717
|
+
icon: 'images/success.png',
|
|
6718
|
+
positionClass: 'bottomRight'
|
|
6719
|
+
});
|
|
6302
6720
|
});
|
|
6721
|
+
} catch (err) {
|
|
6722
|
+
if (err.response?.data?.message) {
|
|
6723
|
+
console.log(err.response.data);
|
|
6724
|
+
const message = err.response.data.message.split(': ').slice(1).join(': ');
|
|
6725
|
+
this.errors = message.split(',').map(error => {
|
|
6726
|
+
return error.split(': ').slice(1).join(': ').trim();
|
|
6727
|
+
});
|
|
6728
|
+
}
|
|
6729
|
+
throw err;
|
|
6303
6730
|
}
|
|
6304
|
-
this.errors.length = 0;
|
|
6305
|
-
this.$emit('update');
|
|
6306
|
-
this.$emit('close');
|
|
6307
6731
|
}
|
|
6308
6732
|
},
|
|
6309
6733
|
mounted: function() {
|
|
@@ -6317,13 +6741,13 @@ module.exports = app => app.component('update-document', {
|
|
|
6317
6741
|
});
|
|
6318
6742
|
|
|
6319
6743
|
|
|
6320
|
-
/***/ }
|
|
6744
|
+
/***/ },
|
|
6321
6745
|
|
|
6322
|
-
/***/ "./node_modules/axios/dist/browser/axios.cjs"
|
|
6746
|
+
/***/ "./node_modules/axios/dist/browser/axios.cjs"
|
|
6323
6747
|
/*!***************************************************!*\
|
|
6324
6748
|
!*** ./node_modules/axios/dist/browser/axios.cjs ***!
|
|
6325
6749
|
\***************************************************/
|
|
6326
|
-
|
|
6750
|
+
(module, __unused_webpack_exports, __webpack_require__) {
|
|
6327
6751
|
|
|
6328
6752
|
"use strict";
|
|
6329
6753
|
// Axios v1.2.2 Copyright (c) 2022 Matt Zabriskie and contributors
|
|
@@ -9483,13 +9907,13 @@ module.exports = axios;
|
|
|
9483
9907
|
//# sourceMappingURL=axios.cjs.map
|
|
9484
9908
|
|
|
9485
9909
|
|
|
9486
|
-
/***/ }
|
|
9910
|
+
/***/ },
|
|
9487
9911
|
|
|
9488
|
-
/***/ "./node_modules/bson/lib/bson.mjs"
|
|
9912
|
+
/***/ "./node_modules/bson/lib/bson.mjs"
|
|
9489
9913
|
/*!****************************************!*\
|
|
9490
9914
|
!*** ./node_modules/bson/lib/bson.mjs ***!
|
|
9491
9915
|
\****************************************/
|
|
9492
|
-
|
|
9916
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
9493
9917
|
|
|
9494
9918
|
"use strict";
|
|
9495
9919
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -14166,13 +14590,13 @@ var bson = /*#__PURE__*/Object.freeze({
|
|
|
14166
14590
|
//# sourceMappingURL=bson.mjs.map
|
|
14167
14591
|
|
|
14168
14592
|
|
|
14169
|
-
/***/ }
|
|
14593
|
+
/***/ },
|
|
14170
14594
|
|
|
14171
|
-
/***/ "./node_modules/marked/lib/marked.cjs"
|
|
14595
|
+
/***/ "./node_modules/marked/lib/marked.cjs"
|
|
14172
14596
|
/*!********************************************!*\
|
|
14173
14597
|
!*** ./node_modules/marked/lib/marked.cjs ***!
|
|
14174
14598
|
\********************************************/
|
|
14175
|
-
|
|
14599
|
+
(module) {
|
|
14176
14600
|
|
|
14177
14601
|
"use strict";
|
|
14178
14602
|
/**
|
|
@@ -16388,13 +16812,13 @@ var lexer = _Lexer.lex;
|
|
|
16388
16812
|
//# sourceMappingURL=marked.cjs.map
|
|
16389
16813
|
|
|
16390
16814
|
|
|
16391
|
-
/***/ }
|
|
16815
|
+
/***/ },
|
|
16392
16816
|
|
|
16393
|
-
/***/ "./node_modules/mongodb/lib/bson.js"
|
|
16817
|
+
/***/ "./node_modules/mongodb/lib/bson.js"
|
|
16394
16818
|
/*!******************************************!*\
|
|
16395
16819
|
!*** ./node_modules/mongodb/lib/bson.js ***!
|
|
16396
16820
|
\******************************************/
|
|
16397
|
-
|
|
16821
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
16398
16822
|
|
|
16399
16823
|
"use strict";
|
|
16400
16824
|
|
|
@@ -16482,13 +16906,13 @@ function parseUtf8ValidationOption(options) {
|
|
|
16482
16906
|
}
|
|
16483
16907
|
//# sourceMappingURL=bson.js.map
|
|
16484
16908
|
|
|
16485
|
-
/***/ }
|
|
16909
|
+
/***/ },
|
|
16486
16910
|
|
|
16487
|
-
/***/ "./node_modules/mpath/index.js"
|
|
16911
|
+
/***/ "./node_modules/mpath/index.js"
|
|
16488
16912
|
/*!*************************************!*\
|
|
16489
16913
|
!*** ./node_modules/mpath/index.js ***!
|
|
16490
16914
|
\*************************************/
|
|
16491
|
-
|
|
16915
|
+
(module, exports, __webpack_require__) {
|
|
16492
16916
|
|
|
16493
16917
|
"use strict";
|
|
16494
16918
|
|
|
@@ -16496,13 +16920,13 @@ function parseUtf8ValidationOption(options) {
|
|
|
16496
16920
|
module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/mpath/lib/index.js");
|
|
16497
16921
|
|
|
16498
16922
|
|
|
16499
|
-
/***/ }
|
|
16923
|
+
/***/ },
|
|
16500
16924
|
|
|
16501
|
-
/***/ "./node_modules/mpath/lib/index.js"
|
|
16925
|
+
/***/ "./node_modules/mpath/lib/index.js"
|
|
16502
16926
|
/*!*****************************************!*\
|
|
16503
16927
|
!*** ./node_modules/mpath/lib/index.js ***!
|
|
16504
16928
|
\*****************************************/
|
|
16505
|
-
|
|
16929
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
16506
16930
|
|
|
16507
16931
|
/* eslint strict:off */
|
|
16508
16932
|
/* eslint no-var: off */
|
|
@@ -16831,13 +17255,13 @@ function K(v) {
|
|
|
16831
17255
|
return v;
|
|
16832
17256
|
}
|
|
16833
17257
|
|
|
16834
|
-
/***/ }
|
|
17258
|
+
/***/ },
|
|
16835
17259
|
|
|
16836
|
-
/***/ "./node_modules/mpath/lib/stringToParts.js"
|
|
17260
|
+
/***/ "./node_modules/mpath/lib/stringToParts.js"
|
|
16837
17261
|
/*!*************************************************!*\
|
|
16838
17262
|
!*** ./node_modules/mpath/lib/stringToParts.js ***!
|
|
16839
17263
|
\*************************************************/
|
|
16840
|
-
|
|
17264
|
+
(module) {
|
|
16841
17265
|
|
|
16842
17266
|
"use strict";
|
|
16843
17267
|
|
|
@@ -16889,27 +17313,27 @@ module.exports = function stringToParts(str) {
|
|
|
16889
17313
|
return result;
|
|
16890
17314
|
};
|
|
16891
17315
|
|
|
16892
|
-
/***/ }
|
|
17316
|
+
/***/ },
|
|
16893
17317
|
|
|
16894
|
-
/***/ "./node_modules/node-inspect-extracted/dist/inspect.js"
|
|
17318
|
+
/***/ "./node_modules/node-inspect-extracted/dist/inspect.js"
|
|
16895
17319
|
/*!*************************************************************!*\
|
|
16896
17320
|
!*** ./node_modules/node-inspect-extracted/dist/inspect.js ***!
|
|
16897
17321
|
\*************************************************************/
|
|
16898
|
-
|
|
17322
|
+
(module) {
|
|
16899
17323
|
|
|
16900
17324
|
/*! For license information please see inspect.js.LICENSE.txt */
|
|
16901
|
-
!function(t,e){ true?module.exports=e():0}(this,()=>(()=>{"use strict";var t={0:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,c=[],u=!0,l=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=i(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}function i(t,e){if(t){if("string"==typeof t)return c(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var u=r(798),l=u.BigInt,f=u.Error,s=u.NumberParseInt,y=u.ObjectEntries,p=u.ObjectGetOwnPropertyDescriptor,g=u.ObjectGetOwnPropertyDescriptors,v=u.ObjectGetOwnPropertySymbols,h=u.ObjectPrototypeToString,d=u.Symbol,b=r(522),m=d("kPending"),S=d("kRejected");t.exports={constants:{kPending:m,kRejected:S,ALL_PROPERTIES:0,ONLY_ENUMERABLE:2},getOwnNonIndexProperties:function(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=g(t),i=[],c=a(y(n));try{for(c.s();!(e=c.n()).done;){var u=o(e.value,2),l=u[0],f=u[1];if(!/^(0|[1-9][0-9]*)$/.test(l)||s(l,10)>=Math.pow(2,32)-1){if(2===r&&!f.enumerable)continue;i.push(l)}}}catch(t){c.e(t)}finally{c.f()}var h,d=a(v(t));try{for(d.s();!(h=d.n()).done;){var b=h.value,m=p(t,b);(2!==r||m.enumerable)&&i.push(b)}}catch(t){d.e(t)}finally{d.f()}return i},getPromiseDetails:function(){return[m,void 0]},getProxyDetails:b.getProxyDetails,Proxy:b.Proxy,previewEntries:function(t){return[[],!1]},getConstructorName:function(t){var e;if(!t||"object"!==n(t))throw new f("Invalid object");if(null!==(e=t.constructor)&&void 0!==e&&e.name)return t.constructor.name;var r=h(t).match(/^\[object ([^\]]+)\]/);return r?r[1]:"Object"},getExternalValue:function(){return l(0)}}},315:t=>{t.exports={CHAR_DOT:46,CHAR_FORWARD_SLASH:47,CHAR_BACKWARD_SLASH:92}},338:(t,e,r)=>{function n(t){return function(t){if(Array.isArray(t))return c(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=i(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}function i(t,e){if(t){if("string"==typeof t)return c(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function l(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach(function(e){f(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function f(t,e,r){return(e=function(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s,y,p,g=r(798),v=g.AggregateError,h=g.AggregateErrorPrototype,d=g.Array,b=g.ArrayBuffer,m=g.ArrayBufferPrototype,S=g.ArrayIsArray,P=g.ArrayPrototype,x=g.ArrayPrototypeFilter,w=g.ArrayPrototypeForEach,A=g.ArrayPrototypeIncludes,O=g.ArrayPrototypeIndexOf,_=g.ArrayPrototypeJoin,j=g.ArrayPrototypeMap,E=g.ArrayPrototypePop,k=g.ArrayPrototypePush,I=g.ArrayPrototypePushApply,R=g.ArrayPrototypeSlice,L=g.ArrayPrototypeSort,T=g.ArrayPrototypeSplice,B=g.ArrayPrototypeUnshift,z=g.BigIntPrototypeValueOf,M=g.Boolean,C=g.BooleanPrototype,D=g.BooleanPrototypeValueOf,N=g.DataView,F=g.DataViewPrototype,W=g.Date,H=g.DatePrototype,U=g.DatePrototypeGetTime,G=g.DatePrototypeToISOString,V=g.DatePrototypeToString,Z=g.Error,$=g.ErrorPrototype,Y=g.ErrorPrototypeToString,q=g.Function,J=g.FunctionPrototype,K=g.FunctionPrototypeBind,Q=g.FunctionPrototypeCall,X=g.FunctionPrototypeSymbolHasInstance,tt=g.FunctionPrototypeToString,et=g.JSONStringify,rt=g.Map,nt=g.MapPrototype,ot=g.MapPrototypeEntries,at=g.MapPrototypeGetSize,it=g.MathFloor,ct=g.MathMax,ut=g.MathMin,lt=g.MathRound,ft=g.MathSqrt,st=g.MathTrunc,yt=g.Number,pt=g.NumberIsFinite,gt=g.NumberIsNaN,vt=g.NumberParseFloat,ht=g.NumberParseInt,dt=g.NumberPrototype,bt=g.NumberPrototypeToString,mt=g.NumberPrototypeValueOf,St=g.Object,Pt=g.ObjectAssign,xt=g.ObjectDefineProperty,wt=g.ObjectGetOwnPropertyDescriptor,At=g.ObjectGetOwnPropertyNames,Ot=g.ObjectGetOwnPropertySymbols,_t=g.ObjectGetPrototypeOf,jt=g.ObjectIs,Et=g.ObjectKeys,kt=g.ObjectPrototype,It=g.ObjectPrototypeHasOwnProperty,Rt=g.ObjectPrototypePropertyIsEnumerable,Lt=g.ObjectSeal,Tt=g.ObjectSetPrototypeOf,Bt=g.Promise,zt=g.PromisePrototype,Mt=g.RangeError,Ct=g.RangeErrorPrototype,Dt=g.ReflectApply,Nt=g.ReflectOwnKeys,Ft=g.RegExp,Wt=g.RegExpPrototype,Ht=g.RegExpPrototypeExec,Ut=g.RegExpPrototypeSymbolReplace,Gt=g.RegExpPrototypeSymbolSplit,Vt=g.RegExpPrototypeToString,Zt=g.SafeMap,$t=g.SafeSet,Yt=g.SafeStringIterator,qt=g.Set,Jt=g.SetPrototype,Kt=g.SetPrototypeGetSize,Qt=g.SetPrototypeValues,Xt=g.String,te=g.StringPrototype,ee=g.StringPrototypeCharCodeAt,re=g.StringPrototypeCodePointAt,ne=g.StringPrototypeEndsWith,oe=g.StringPrototypeIncludes,ae=g.StringPrototypeIndexOf,ie=g.StringPrototypeLastIndexOf,ce=g.StringPrototypeNormalize,ue=g.StringPrototypePadEnd,le=g.StringPrototypePadStart,fe=g.StringPrototypeRepeat,se=g.StringPrototypeReplace,ye=g.StringPrototypeReplaceAll,pe=g.StringPrototypeSlice,ge=g.StringPrototypeSplit,ve=g.StringPrototypeStartsWith,he=g.StringPrototypeToLowerCase,de=g.StringPrototypeTrim,be=g.StringPrototypeValueOf,me=g.SymbolIterator,Se=g.SymbolPrototypeToString,Pe=g.SymbolPrototypeValueOf,xe=g.SymbolToPrimitive,we=g.SymbolToStringTag,Ae=g.TypeError,Oe=g.TypeErrorPrototype,_e=g.TypedArray,je=g.TypedArrayPrototype,Ee=g.TypedArrayPrototypeGetLength,ke=g.TypedArrayPrototypeGetSymbolToStringTag,Ie=g.Uint8Array,Re=g.WeakMap,Le=g.WeakMapPrototype,Te=g.WeakSet,Be=g.WeakSetPrototype,ze=g.globalThis,Me=g.internalBinding,Ce=g.uncurryThis,De=r(0),Ne=De.constants,Fe=Ne.ALL_PROPERTIES,We=Ne.ONLY_ENUMERABLE,He=Ne.kPending,Ue=Ne.kRejected,Ge=De.getOwnNonIndexProperties,Ve=De.getPromiseDetails,Ze=De.getProxyDetails,$e=De.previewEntries,Ye=De.getConstructorName,qe=De.getExternalValue,Je=De.Proxy,Ke=r(948),Qe=Ke.customInspectSymbol,Xe=Ke.isError,tr=Ke.join,er=Ke.removeColors,rr=r(799).isStackOverflowError,nr=r(730),or=nr.isAsyncFunction,ar=nr.isGeneratorFunction,ir=nr.isAnyArrayBuffer,cr=nr.isArrayBuffer,ur=nr.isArgumentsObject,lr=nr.isBoxedPrimitive,fr=nr.isDataView,sr=nr.isExternal,yr=nr.isMap,pr=nr.isMapIterator,gr=nr.isModuleNamespaceObject,vr=nr.isNativeError,hr=nr.isPromise,dr=nr.isSet,br=nr.isSetIterator,mr=nr.isWeakMap,Sr=nr.isWeakSet,Pr=nr.isRegExp,xr=nr.isDate,wr=nr.isTypedArray,Ar=nr.isStringObject,Or=nr.isNumberObject,_r=nr.isBooleanObject,jr=nr.isBigIntObject,Er=r(758),kr=r(496).BuiltinModule,Ir=r(755),Rr=Ir.validateObject,Lr=Ir.validateString,Tr=Ir.kValidateObjectAllowArray;function Br(t){return(y=y||r(411)).pathToFileURL(t).href}var zr,Mr,Cr,Dr,Nr,Fr=new $t(x(At(ze),function(t){return null!==Ht(/^[A-Z][a-zA-Z0-9]+$/,t)})),Wr=function(t){return void 0===t&&void 0!==t},Hr=Lt({showHidden:!1,depth:2,colors:!1,customInspect:!0,showProxy:!1,maxArrayLength:100,maxStringLength:1e4,breakLength:80,compact:3,sorted:!1,getters:!1,numericSeparator:!1});try{zr=new Ft("[\\x00-\\x1f\\x27\\x5c\\x7f-\\x9f]|[\\ud800-\\udbff](?![\\udc00-\\udfff])|(?<![\\ud800-\\udbff])[\\udc00-\\udfff]"),Mr=new Ft("[\0-\\x1f\\x27\\x5c\\x7f-\\x9f]|[\\ud800-\\udbff](?![\\udc00-\\udfff])|(?<![\\ud800-\\udbff])[\\udc00-\\udfff]","g"),Cr=new Ft("[\\x00-\\x1f\\x5c\\x7f-\\x9f]|[\\ud800-\\udbff](?![\\udc00-\\udfff])|(?<![\\ud800-\\udbff])[\\udc00-\\udfff]"),Dr=new Ft("[\\x00-\\x1f\\x5c\\x7f-\\x9f]|[\\ud800-\\udbff](?![\\udc00-\\udfff])|(?<![\\ud800-\\udbff])[\\udc00-\\udfff]","g");var Ur=new Ft("(?<=\\n)");Nr=function(t){return Gt(Ur,t)}}catch(t){zr=/[\x00-\x1f\x27\x5c\x7f-\x9f]/,Mr=/[\x00-\x1f\x27\x5c\x7f-\x9f]/g,Cr=/[\x00-\x1f\x5c\x7f-\x9f]/,Dr=/[\x00-\x1f\x5c\x7f-\x9f]/g,Nr=function(t){var e=Gt(/\n/,t),r=E(e),n=j(e,function(t){return t+"\n"});return""!==r&&n.push(r),n}}var Gr,Vr=/^[a-zA-Z_][a-zA-Z_0-9]*$/,Zr=/^(0|[1-9][0-9]*)$/,$r=/^ {4}at (?:[^/\\(]+ \(|)node:(.+):\d+:\d+\)?$/,Yr=/^(\s+[^(]*?)\s*{/,qr=/(\/\/.*?\n)|(\/\*(.|\n)*?\*\/)/g,Jr=["\\x00","\\x01","\\x02","\\x03","\\x04","\\x05","\\x06","\\x07","\\b","\\t","\\n","\\x0B","\\f","\\r","\\x0E","\\x0F","\\x10","\\x11","\\x12","\\x13","\\x14","\\x15","\\x16","\\x17","\\x18","\\x19","\\x1A","\\x1B","\\x1C","\\x1D","\\x1E","\\x1F","","","","","","","","\\'","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\x7F","\\x80","\\x81","\\x82","\\x83","\\x84","\\x85","\\x86","\\x87","\\x88","\\x89","\\x8A","\\x8B","\\x8C","\\x8D","\\x8E","\\x8F","\\x90","\\x91","\\x92","\\x93","\\x94","\\x95","\\x96","\\x97","\\x98","\\x99","\\x9A","\\x9B","\\x9C","\\x9D","\\x9E","\\x9F"],Kr=new Ft("[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/\\#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/\\#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))","g");function Qr(t,e){var r={budget:{},indentationLvl:0,seen:[],currentDepth:0,stylize:cn,showHidden:Hr.showHidden,depth:Hr.depth,colors:Hr.colors,customInspect:Hr.customInspect,showProxy:Hr.showProxy,maxArrayLength:Hr.maxArrayLength,maxStringLength:Hr.maxStringLength,breakLength:Hr.breakLength,compact:Hr.compact,sorted:Hr.sorted,getters:Hr.getters,numericSeparator:Hr.numericSeparator};if(arguments.length>1)if(arguments.length>2&&(void 0!==arguments[2]&&(r.depth=arguments[2]),arguments.length>3&&void 0!==arguments[3]&&(r.colors=arguments[3])),"boolean"==typeof e)r.showHidden=e;else if(e)for(var n=Et(e),o=0;o<n.length;++o){var a=n[o];It(Hr,a)||"stylize"===a?r[a]=e[a]:void 0===r.userOptions&&(r.userOptions=e)}return r.colors&&(r.stylize=an),null===r.maxArrayLength&&(r.maxArrayLength=1/0),null===r.maxStringLength&&(r.maxStringLength=1/0),hn(r,t,0)}Qr.custom=Qe,xt(Qr,"defaultOptions",{__proto__:null,get:function(){return Hr},set:function(t){return Rr(t,"options"),Pt(Hr,t)}});var Xr=39,tn=49;function en(t,e){xt(Qr.colors,e,{__proto__:null,get:function(){return this[t]},set:function(e){this[t]=e},configurable:!0,enumerable:!1})}function rn(t,e){return-1===e?'"'.concat(t,'"'):-2===e?"`".concat(t,"`"):"'".concat(t,"'")}function nn(t){var e=ee(t);return Jr.length>e?Jr[e]:"\\u".concat(bt(e,16))}function on(t){var e=zr,r=Mr,n=39;if(oe(t,"'")&&(oe(t,'"')?oe(t,"`")||oe(t,"${")||(n=-2):n=-1,39!==n&&(e=Cr,r=Dr)),t.length<5e3&&null===Ht(e,t))return rn(t,n);if(t.length>100)return rn(t=Ut(r,t,nn),n);for(var o="",a=0,i=0;i<t.length;i++){var c=ee(t,i);if(c===n||92===c||c<32||c>126&&c<160)o+=a===i?Jr[c]:"".concat(pe(t,a,i)).concat(Jr[c]),a=i+1;else if(c>=55296&&c<=57343){if(c<=56319&&i+1<t.length){var u=ee(t,i+1);if(u>=56320&&u<=57343){i++;continue}}o+="".concat(pe(t,a,i),"\\u").concat(bt(c,16)),a=i+1}}return a!==t.length&&(o+=pe(t,a)),rn(o,n)}function an(t,e){var r=Qr.styles[e];if(void 0!==r){var n=Qr.colors[r];if(void 0!==n)return"[".concat(n[0],"m").concat(t,"[").concat(n[1],"m")}return t}function cn(t){return t}function un(){return[]}function ln(t,e){try{return t instanceof e}catch(t){return!1}}Qr.colors={__proto__:null,reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],blink:[5,25],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],doubleunderline:[21,24],black:[30,Xr],red:[31,Xr],green:[32,Xr],yellow:[33,Xr],blue:[34,Xr],magenta:[35,Xr],cyan:[36,Xr],white:[37,Xr],bgBlack:[40,tn],bgRed:[41,tn],bgGreen:[42,tn],bgYellow:[43,tn],bgBlue:[44,tn],bgMagenta:[45,tn],bgCyan:[46,tn],bgWhite:[47,tn],framed:[51,54],overlined:[53,55],gray:[90,Xr],redBright:[91,Xr],greenBright:[92,Xr],yellowBright:[93,Xr],blueBright:[94,Xr],magentaBright:[95,Xr],cyanBright:[96,Xr],whiteBright:[97,Xr],bgGray:[100,tn],bgRedBright:[101,tn],bgGreenBright:[102,tn],bgYellowBright:[103,tn],bgBlueBright:[104,tn],bgMagentaBright:[105,tn],bgCyanBright:[106,tn],bgWhiteBright:[107,tn]},en("gray","grey"),en("gray","blackBright"),en("bgGray","bgGrey"),en("bgGray","bgBlackBright"),en("dim","faint"),en("strikethrough","crossedout"),en("strikethrough","strikeThrough"),en("strikethrough","crossedOut"),en("hidden","conceal"),en("inverse","swapColors"),en("inverse","swapcolors"),en("doubleunderline","doubleUnderline"),Qr.styles=Pt({__proto__:null},{special:"cyan",number:"yellow",bigint:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",symbol:"green",date:"magenta",regexp:"red",module:"underline"});var fn=(new Zt).set(P,{name:"Array",constructor:d}).set(m,{name:"ArrayBuffer",constructor:b}).set(J,{name:"Function",constructor:q}).set(nt,{name:"Map",constructor:rt}).set(Jt,{name:"Set",constructor:qt}).set(kt,{name:"Object",constructor:St}).set(je,{name:"TypedArray",constructor:_e}).set(Wt,{name:"RegExp",constructor:Ft}).set(H,{name:"Date",constructor:W}).set(F,{name:"DataView",constructor:N}).set($,{name:"Error",constructor:Z}).set(h,{name:"AggregateError",constructor:v}).set(Ct,{name:"RangeError",constructor:Mt}).set(Oe,{name:"TypeError",constructor:Ae}).set(C,{name:"Boolean",constructor:M}).set(dt,{name:"Number",constructor:yt}).set(te,{name:"String",constructor:Xt}).set(zt,{name:"Promise",constructor:Bt}).set(Le,{name:"WeakMap",constructor:Re}).set(Be,{name:"WeakSet",constructor:Te});function sn(t,e,r,n){for(var o,a=t;t||Wr(t);){var i=fn.get(t);if(void 0!==i){var c=i.name,u=i.constructor;if(X(u,a))return void 0!==n&&o!==t&&yn(e,a,o||a,r,n),c}var f=wt(t,"constructor");if(void 0!==f&&"function"==typeof f.value&&""!==f.value.name&&ln(a,f.value))return void 0===n||o===t&&Fr.has(f.value.name)||yn(e,a,o||a,r,n),Xt(f.value.name);t=_t(t),void 0===o&&(o=t)}if(null===o)return null;var s=Ye(a);if(r>e.depth&&null!==e.depth)return"".concat(s," <Complex prototype>");var y=sn(o,e,r+1,n);return null===y?"".concat(s," <").concat(Qr(o,l(l({},e),{},{customInspect:!1,depth:-1})),">"):"".concat(s," <").concat(y,">")}function yn(t,e,r,n,o){var i,c,u=0;do{if(0!==u||e===r){if(null===(r=_t(r)))return;var l=wt(r,"constructor");if(void 0!==l&&"function"==typeof l.value&&Fr.has(l.value.name))return}0===u?c=new $t:w(i,function(t){return c.add(t)}),i=Nt(r),k(t.seen,e);var f,s=a(i);try{for(s.s();!(f=s.n()).done;){var y=f.value;if(!("constructor"===y||It(e,y)||0!==u&&c.has(y))){var p=wt(r,y);if("function"!=typeof p.value){var g=Wn(t,r,n,y,0,p,e);t.colors?k(o,"[2m".concat(g,"[22m")):k(o,g)}}}}catch(t){s.e(t)}finally{s.f()}E(t.seen)}while(3!==++u)}function pn(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";if(null===t)return""!==e&&r!==e?"[".concat(r).concat(n,": null prototype] [").concat(e,"] "):"[".concat(r).concat(n,": null prototype] ");var o="".concat(t).concat(n," ");if(""!==e){var a=t.indexOf(e);if(-1===a)o+="[".concat(e,"] ");else{var i=a+e.length;i!==t.length&&t[i]===t[i].toLowerCase()&&(o+="[".concat(e,"] "))}}return o}function gn(t,e){var r,n=Ot(t);if(e)r=At(t),0!==n.length&&I(r,n);else{try{r=Et(t)}catch(e){Er(vr(e)&&"ReferenceError"===e.name&&gr(t)),r=At(t)}0!==n.length&&I(r,x(n,function(e){return Rt(t,e)}))}return r}function vn(t,e,r){var n="";return null===e&&(n=Ye(t))===r&&(n="Object"),pn(e,r,n)}function hn(t,e,i,c){if("object"!==o(e)&&"function"!=typeof e&&!Wr(e))return _n(t.stylize,e,t);if(null===e)return t.stylize("null","null");var u=e,f=Ze(e,!!t.showProxy);if(void 0!==f){if(null===f||null===f[0])return t.stylize("<Revoked Proxy>","special");if(t.showProxy)return function(t,e,r){if(r>t.depth&&null!==t.depth)return t.stylize("Proxy [Array]","special");r+=1,t.indentationLvl+=2;var n=[hn(t,e[0],r),hn(t,e[1],r)];return t.indentationLvl-=2,Un(t,n,"",["Proxy [","]"],2,r)}(t,f,i);e=f}if(t.customInspect){var s,v=e[Qe];if("function"==typeof v&&v!==Qr&&(null===(s=wt(e,"constructor"))||void 0===s||null===(s=s.value)||void 0===s?void 0:s.prototype)!==e){var h=null===t.depth?null:t.depth-i,d=void 0!==f||!X(St,u),b=Q(v,u,h,function(t,e){var r=l({stylize:t.stylize,showHidden:t.showHidden,depth:t.depth,colors:t.colors,customInspect:t.customInspect,showProxy:t.showProxy,maxArrayLength:t.maxArrayLength,maxStringLength:t.maxStringLength,breakLength:t.breakLength,compact:t.compact,sorted:t.sorted,getters:t.getters,numericSeparator:t.numericSeparator},t.userOptions);if(e){Tt(r,null);var n,i=a(Et(r));try{for(i.s();!(n=i.n()).done;){var c=n.value;"object"!==o(r[c])&&"function"!=typeof r[c]||null===r[c]||delete r[c]}}catch(t){i.e(t)}finally{i.f()}r.stylize=Tt(function(e,r){var n;try{n="".concat(t.stylize(e,r))}catch(t){}return"string"!=typeof n?e:n},null)}return r}(t,d),Qr);if(b!==u)return"string"!=typeof b?hn(t,b,i):ye(b,"\n","\n".concat(fe(" ",t.indentationLvl)))}}if(t.seen.includes(e)){var m=1;return void 0===t.circular?(t.circular=new Zt,t.circular.set(e,m)):void 0===(m=t.circular.get(e))&&(m=t.circular.size+1,t.circular.set(e,m)),t.stylize("[Circular *".concat(m,"]"),"special")}return function(t,e,o,i){var c,u;t.showHidden&&(o<=t.depth||null===t.depth)&&(u=[]);var l=sn(e,t,o,u);void 0!==u&&0===u.length&&(u=void 0);var f="";try{f=e[we]}catch(t){}("string"!=typeof f||""!==f&&(t.showHidden?It:Rt)(e,we))&&(f="");var s,v,h="",d=un,b=!0,m=0,P=t.showHidden?Fe:We,x=0;if(me in e||null===l)if(b=!1,S(e)){var w="Array"!==l||""!==f?pn(l,f,"Array","(".concat(e.length,")")):"";if(c=Ge(e,P),s=["".concat(w,"["),"]"],0===e.length&&0===c.length&&void 0===u)return"".concat(s[0],"]");x=2,d=In}else if(dr(e)){var j=Kt(e),E=pn(l,f,"Set","(".concat(j,")"));if(c=gn(e,t.showHidden),d=K(Ln,null,null!==l?e:Qt(e)),0===j&&0===c.length&&void 0===u)return"".concat(E,"{}");s=["".concat(E,"{"),"}"]}else if(yr(e)){var M=at(e),C=pn(l,f,"Map","(".concat(M,")"));if(c=gn(e,t.showHidden),d=K(Tn,null,null!==l?e:ot(e)),0===M&&0===c.length&&void 0===u)return"".concat(C,"{}");s=["".concat(C,"{"),"}"]}else if(wr(e)){c=Ge(e,P);var N=e,F="";null===l&&(F=ke(e),N=new g[F](e));var W=Ee(e),H=pn(l,f,F,"(".concat(W,")"));if(s=["".concat(H,"["),"]"],0===e.length&&0===c.length&&!t.showHidden)return"".concat(s[0],"]");d=K(Rn,null,N,W),x=2}else pr(e)?(c=gn(e,t.showHidden),s=dn("Map",f),d=K(Nn,null,s)):br(e)?(c=gn(e,t.showHidden),s=dn("Set",f),d=K(Nn,null,s)):b=!0;if(b)if(c=gn(e,t.showHidden),s=["{","}"],"function"==typeof e){if(h=function(t,e,r,n){var o=tt(e);if(ve(o,"class")&&"}"===o[o.length-1]){var a=pe(o,5,-1),i=ae(a,"{");if(-1!==i&&(!oe(pe(a,0,i),"(")||null!==Ht(Yr,Ut(qr,a))))return function(t,e,r){var n=It(t,"name")&&t.name||"(anonymous)",o="class ".concat(n);if("Function"!==e&&null!==e&&(o+=" [".concat(e,"]")),""!==r&&e!==r&&(o+=" [".concat(r,"]")),null!==e){var a=_t(t).name;a&&(o+=" extends ".concat(a))}else o+=" extends [null prototype]";return"[".concat(o,"]")}(e,r,n)}var c="Function";ar(e)&&(c="Generator".concat(c)),or(e)&&(c="Async".concat(c));var u="[".concat(c);return null===r&&(u+=" (null prototype)"),""===e.name?u+=" (anonymous)":u+=": ".concat("string"==typeof e.name?e.name:hn(t,e.name)),u+="]",r!==c&&null!==r&&(u+=" ".concat(r)),""!==n&&r!==n&&(u+=" [".concat(n,"]")),u}(t,e,l,f),0===c.length&&void 0===u)return t.stylize(h,"special")}else if("Object"===l){if(ur(e)?s[0]="[Arguments] {":""!==f&&(s[0]="".concat(pn(l,f,"Object"),"{")),0===c.length&&void 0===u)return"".concat(s[0],"}")}else if(Pr(e)){h=Vt(null!==l?e:new Ft(e));var Z=pn(l,f,"RegExp");if("RegExp "!==Z&&(h="".concat(Z).concat(h)),0===c.length&&void 0===u||o>t.depth&&null!==t.depth)return t.stylize(h,"regexp")}else if(xr(e)){h=gt(U(e))?V(e):G(e);var $=pn(l,f,"Date");if("Date "!==$&&(h="".concat($).concat(h)),0===c.length&&void 0===u)return t.stylize(h,"date")}else if(Xe(e)){if(h=function(t,e,r,o,i){var c=null!=t.name?t.name:"Error",u=mn(o,t);(function(t,e,r,n){if(!t.showHidden&&0!==e.length)for(var o=0,a=["name","message","stack"];o<a.length;o++){var i=a[o],c=O(e,i);-1===c||"string"==typeof r[i]&&!oe(n,r[i])||T(e,c,1)}})(o,i,t,u),!("cause"in t)||0!==i.length&&A(i,"cause")||k(i,"cause"),!S(t.errors)||0!==i.length&&A(i,"errors")||k(i,"errors"),u=function(t,e,r,n){var o=r.length;if("string"!=typeof r&&(t=se(t,"".concat(r),"".concat(r," [").concat(pe(pn(e,n,"Error"),0,-1),"]"))),null===e||ne(r,"Error")&&ve(t,r)&&(t.length===o||":"===t[o]||"\n"===t[o])){var a="Error";if(null===e){var i=Ht(/^([A-Z][a-z_ A-Z0-9[\]()-]+)(?::|\n {4}at)/,t)||Ht(/^([a-z_A-Z0-9-]*Error)$/,t);o=(a=(null==i?void 0:i[1])||"").length,a=a||"Error"}var c=pe(pn(e,n,a),0,-1);r!==c&&(t=oe(c,r)?0===o?"".concat(c,": ").concat(t):"".concat(c).concat(pe(t,o)):"".concat(c," [").concat(r,"]").concat(pe(t,o)))}return t}(u,e,c,r);var l=t.message&&ae(u,t.message)||-1;-1!==l&&(l+=t.message.length);var f=ae(u,"\n at",l);if(-1===f)u="[".concat(u,"]");else{var s=pe(u,0,f),y=function(t,e,r){var o,a=ge(r,"\n");try{o=e.cause}catch(t){}if(null!=o&&Xe(o)){var i=mn(t,o),c=ae(i,"\n at");if(-1!==c){var u=bn(a,ge(pe(i,c+1),"\n")),l=u[0],f=u[1];if(l>0){var s=l-2,y=" ... ".concat(s," lines matching cause stack trace ...");a.splice(f+1,s,t.stylize(y,"undefined"))}}}if(a.length>10)for(var p=function(t){for(var e=[],r=new Zt,o=0;o<t.length;o++){var a=r.get(t[o]);void 0===a?r.set(t[o],[o]):a[a.length]=o}if(t.length-r.size<=3)return e;for(var i=0;i<t.length-3;i++){var c=r.get(t[i]);if(1!==c.length&&c[c.length-1]!==i){var u=c.indexOf(i)+1;if(u!==c.length){var l=c[c.length-1]-i;if(!(l<3)){var f=void 0;if(u+1<c.length){for(var s=0,y=u;y<c.length;y++){for(var p=c[y]-i;0!==p;){var g=s%p;0!==s&&(f=f||new $t).add(s),s=p,p=g}if(1===s)break}l=s,f&&(f.delete(l),f=n(f))}for(var v=l,h=0,d=0,b=i+l;;b+=l){for(var m=0,S=0;S<l&&t[i+S]===t[b+S];S++)m++;if(m===l)d++;else{var P;if(null===(P=f)||void 0===P||!P.length)break;0!==d&&v*h<l*d&&(v=l,h=d),l=f.pop(),b=i,d=0}}0!==h&&v*h>=l*d&&(l=v,d=h),d*l>=3&&(e.push(i+l,l,d),i+=l*(d+1)-1)}}}}return e}(a),g=p.length-3;g>=0;g-=3){var v=p[g],h=p[g+1],d=p[g+2],b=" ... collapsed ".concat(h*d," duplicate lines ")+"matching above "+(d>1?"".concat(h," lines ").concat(d," times..."):"lines ...");a.splice(v,h*d,t.stylize(b,"undefined"))}return a}(o,t,pe(u,f+1));if(o.colors){var p,g,v=function(){var t;try{t=process.cwd()}catch(t){return}return t}(),h=a(y);try{for(h.s();!(g=h.n()).done;){var d=g.value,b=Ht($r,d);if(null!==b&&kr.exists(b[1]))s+="\n".concat(o.stylize(d,"undefined"));else{if(s+="\n",d=Sn(o,d),void 0!==v){var m=Pn(o,d,v);m===d&&(m=Pn(o,d,p=p||Br(v))),d=m}s+=d}}}catch(t){h.e(t)}finally{h.f()}}else s+="\n".concat(_(y,"\n"));u=s}if(0!==o.indentationLvl){var P=fe(" ",o.indentationLvl);u=ye(u,"\n","\n".concat(P))}return u}(e,l,f,t,c),0===c.length&&void 0===u)return h}else if(ir(e)){var Y=pn(l,f,cr(e)?"ArrayBuffer":"SharedArrayBuffer");if(void 0===i)d=kn;else if(0===c.length&&void 0===u)return Y+"{ byteLength: ".concat(An(t.stylize,e.byteLength,!1)," }");s[0]="".concat(Y,"{"),B(c,"byteLength")}else if(fr(e))s[0]="".concat(pn(l,f,"DataView"),"{"),B(c,"byteLength","byteOffset","buffer");else if(hr(e))s[0]="".concat(pn(l,f,"Promise"),"{"),d=Fn;else if(Sr(e))s[0]="".concat(pn(l,f,"WeakSet"),"{"),d=t.showHidden?Cn:Mn;else if(mr(e))s[0]="".concat(pn(l,f,"WeakMap"),"{"),d=t.showHidden?Dn:Mn;else if(gr(e))s[0]="".concat(pn(l,f,"Module"),"{"),d=jn.bind(null,c);else if(lr(e)){if(h=function(t,e,r,n,o){var a,i;Or(t)?(a=mt,i="Number"):Ar(t)?(a=be,i="String",r.splice(0,t.length)):_r(t)?(a=D,i="Boolean"):jr(t)?(a=z,i="BigInt"):(a=Pe,i="Symbol");var c="[".concat(i);return i!==n&&(c+=null===n?" (null prototype)":" (".concat(n,")")),c+=": ".concat(_n(cn,a(t),e),"]"),""!==o&&o!==n&&(c+=" [".concat(o,"]")),0!==r.length||e.stylize===cn?c:e.stylize(c,he(i))}(e,t,c,l,f),0===c.length&&void 0===u)return h}else if(!function(t){return y=y||r(411),"string"==typeof t.href&&t instanceof y.URL}(e)||o>t.depth&&null!==t.depth){if(0===c.length&&void 0===u){if(sr(e)){var q=qe(e).toString(16);return t.stylize("[External: ".concat(q,"]"),"special")}return"".concat(vn(e,l,f),"{}")}s[0]="".concat(vn(e,l,f),"{")}else if(c=function(t){return p=p||Ot(new y.URL("http://user:pass@localhost:8080/?foo=bar#baz")),t.filter(function(t){return-1===p[t]})}(c),h=e.href,0===c.length&&void 0===u)return h;if(o>t.depth&&null!==t.depth){var J=pe(vn(e,l,f),0,-1);return null!==l&&(J="[".concat(J,"]")),t.stylize(J,"special")}o+=1,t.seen.push(e),t.currentDepth=o;var Q=t.indentationLvl;try{for(v=d(t,e,o),m=0;m<c.length;m++)k(v,Wn(t,e,o,c[m],x));void 0!==u&&I(v,u)}catch(r){if(!rr(r))throw r;return function(t,e,r,n){return t.seen.pop(),t.indentationLvl=n,t.stylize("[".concat(r,": Inspection interrupted ")+"prematurely. Maximum call stack size exceeded.]","special")}(t,0,pe(vn(e,l,f),0,-1),Q)}if(void 0!==t.circular){var X=t.circular.get(e);if(void 0!==X){var et=t.stylize("<ref *".concat(X,">"),"special");!0!==t.compact?h=""===h?et:"".concat(et," ").concat(h):s[0]="".concat(et," ").concat(s[0])}}if(t.seen.pop(),t.sorted){var rt=!0===t.sorted?void 0:t.sorted;if(0===x)L(v,rt);else if(c.length>1){var nt=L(R(v,v.length-c.length),rt);B(nt,v,v.length-c.length,c.length),Dt(T,null,nt)}}var it=Un(t,v,h,s,x,o,e),ct=(t.budget[t.indentationLvl]||0)+it.length;return t.budget[t.indentationLvl]=ct,ct>Math.pow(2,27)&&(t.depth=-1),it}(t,e,i,c)}function dn(t,e){return e!=="".concat(t," Iterator")&&(""!==e&&(e+="] ["),e+="".concat(t," Iterator")),["[".concat(e,"] {"),"}"]}function bn(t,e){for(var r=0;r<t.length-3;r++){var n=O(e,t[r]);if(-1!==n){var o=e.length-n;if(o>3){for(var a=1,i=ut(t.length-r,o);i>a&&t[r+a]===e[n+a];)a++;if(a>3)return[a,r]}}}return[0,0]}function mn(t,e){if(e.stack){if("string"==typeof e.stack)return e.stack;t.seen.push(e),t.indentationLvl+=4;var r=hn(t,e.stack);return t.indentationLvl-=4,t.seen.pop(),"".concat(Y(e),"\n ").concat(r)}return Y(e)}function Sn(t,e){for(var r="",n=0,o=0;;){var a=ae(e,"node_modules",o);if(-1===a)break;var i=e[a-1],c=e[a+12];if("/"!==c&&"\\"!==c||"/"!==i&&"\\"!==i)o=a+1;else{var u=a+13;r+=pe(e,n,u);var l=ae(e,i,u);"@"===e[u]&&(l=ae(e,i,l+1));var f=pe(e,u,l);r+=t.stylize(f,"module"),n=l,o=l}}return 0!==n&&(e=r+pe(e,n)),e}function Pn(t,e,r){var n=ae(e,r),o="",a=r.length;if(-1!==n){"file://"===pe(e,n-7,n)&&(a+=7,n-=7);var i="("===e[n-1]?n-1:n,c=i!==n&&ne(e,")")?-1:e.length,u=n+a+1,l=pe(e,i,u);o+=pe(e,0,i),o+=t.stylize(l,"undefined"),o+=pe(e,u,c),-1===c&&(o+=t.stylize(")","undefined"))}else o+=e;return o}function xn(t){var e="",r=t.length;Er(0!==r);for(var n="-"===t[0]?1:0;r>=n+4;r-=3)e="_".concat(pe(t,r-3,r)).concat(e);return r===t.length?t:"".concat(pe(t,0,r)).concat(e)}var wn=function(t){return"... ".concat(t," more item").concat(t>1?"s":"")};function An(t,e,r){if(!r)return jt(e,-0)?t("-0","number"):t("".concat(e),"number");var n=Xt(e);if(st(e)===e)return!pt(e)||oe(n,"e")?t(n,"number"):t(xn(n),"number");if(gt(e))return t(n,"number");var o=ae(n,"."),a=pe(n,0,o),i=pe(n,o+1);return t("".concat(xn(a),".").concat(function(t){for(var e="",r=0;r<t.length-3;r+=3)e+="".concat(pe(t,r,r+3),"_");return 0===r?t:"".concat(e).concat(pe(t,r))}(i)),"number")}function On(t,e,r){var n=Xt(e);return t("".concat(r?xn(n):n,"n"),"bigint")}function _n(t,e,r){if("string"==typeof e){var n="";if(e.length>r.maxStringLength){var o=e.length-r.maxStringLength;e=pe(e,0,r.maxStringLength),n="... ".concat(o," more character").concat(o>1?"s":"")}return!0!==r.compact&&e.length>16&&e.length>r.breakLength-r.indentationLvl-4?_(j(Nr(e),function(e){return t(on(e),"string")})," +\n".concat(fe(" ",r.indentationLvl+2)))+n:t(on(e),"string")+n}return"number"==typeof e?An(t,e,r.numericSeparator):"bigint"==typeof e?On(t,e,r.numericSeparator):"boolean"==typeof e?t("".concat(e),"boolean"):void 0===e?t("undefined","undefined"):t(Se(e),"symbol")}function jn(t,e,r,n){for(var o=new d(t.length),a=0;a<t.length;a++)try{o[a]=Wn(e,r,n,t[a],0)}catch(r){Er(vr(r)&&"ReferenceError"===r.name);var i=f({},t[a],"");o[a]=Wn(e,i,n,t[a],0);var c=ie(o[a]," ");o[a]=pe(o[a],0,c+1)+e.stylize("<uninitialized>","special")}return t.length=0,o}function En(t,e,r,n,o,a){for(var i=Et(e),c=a;a<i.length&&o.length<n;a++){var u=i[a],l=+u;if(l>Math.pow(2,32)-2)break;if("".concat(c)!==u){if(null===Ht(Zr,u))break;var f=l-c,s=f>1?"s":"",y="<".concat(f," empty item").concat(s,">");if(k(o,t.stylize(y,"undefined")),c=l,o.length===n)break}k(o,Wn(t,e,r,u,1)),c++}var p=e.length-c;if(o.length!==n){if(p>0){var g=p>1?"s":"",v="<".concat(p," empty item").concat(g,">");k(o,t.stylize(v,"undefined"))}}else p>0&&k(o,wn(p));return o}function kn(t,e){var n;try{n=new Ie(e)}catch(e){return[t.stylize("(detached)","special")]}void 0===s&&(s=Ce(r(526).h.prototype.hexSlice));var o=de(Ut(/(.{2})/g,s(n,0,ut(t.maxArrayLength,n.length)),"$1 ")),a=n.length-t.maxArrayLength;return a>0&&(o+=" ... ".concat(a," more byte").concat(a>1?"s":"")),["".concat(t.stylize("[Uint8Contents]","special"),": <").concat(o,">")]}function In(t,e,r){for(var n=e.length,o=ut(ct(0,t.maxArrayLength),n),a=n-o,i=[],c=0;c<o;c++){var u=wt(e,c);if(void 0===u)return En(t,e,r,o,i,c);k(i,Wn(t,e,r,c,1,u))}return a>0&&k(i,wn(a)),i}function Rn(t,e,r,n,o){for(var a=ut(ct(0,r.maxArrayLength),e),i=t.length-a,c=new d(a),u=t.length>0&&"number"==typeof t[0]?An:On,l=0;l<a;++l)c[l]=u(r.stylize,t[l],r.numericSeparator);if(i>0&&(c[a]=wn(i)),r.showHidden){r.indentationLvl+=2;for(var f=0,s=["BYTES_PER_ELEMENT","length","byteLength","byteOffset","buffer"];f<s.length;f++){var y=s[f],p=hn(r,t[y],o,!0);k(c,"[".concat(y,"]: ").concat(p))}r.indentationLvl-=2}return c}function Ln(t,e,r,n){var o=t.size,i=ut(ct(0,e.maxArrayLength),o),c=o-i,u=[];e.indentationLvl+=2;var l,f=0,s=a(t);try{for(s.s();!(l=s.n()).done;){var y=l.value;if(f>=i)break;k(u,hn(e,y,n)),f++}}catch(t){s.e(t)}finally{s.f()}return c>0&&k(u,wn(c)),e.indentationLvl-=2,u}function Tn(t,e,r,n){var o=t.size,i=ut(ct(0,e.maxArrayLength),o),c=o-i,u=[];e.indentationLvl+=2;var l,f=0,s=a(t);try{for(s.s();!(l=s.n()).done;){var y=l.value,p=y[0],g=y[1];if(f>=i)break;k(u,"".concat(hn(e,p,n)," => ").concat(hn(e,g,n))),f++}}catch(t){s.e(t)}finally{s.f()}return c>0&&k(u,wn(c)),e.indentationLvl-=2,u}function Bn(t,e,r,n){var o=ct(t.maxArrayLength,0),a=ut(o,r.length),i=new d(a);t.indentationLvl+=2;for(var c=0;c<a;c++)i[c]=hn(t,r[c],e);t.indentationLvl-=2,0!==n||t.sorted||L(i);var u=r.length-a;return u>0&&k(i,wn(u)),i}function zn(t,e,r,n){var o=ct(t.maxArrayLength,0),a=r.length/2,i=a-o,c=ut(o,a),u=new d(c),l=0;if(t.indentationLvl+=2,0===n){for(;l<c;l++){var f=2*l;u[l]="".concat(hn(t,r[f],e)," => ").concat(hn(t,r[f+1],e))}t.sorted||L(u)}else for(;l<c;l++){var s=2*l,y=[hn(t,r[s],e),hn(t,r[s+1],e)];u[l]=Un(t,y,"",["[","]"],2,e)}return t.indentationLvl-=2,i>0&&k(u,wn(i)),u}function Mn(t){return[t.stylize("<items unknown>","special")]}function Cn(t,e,r){return Bn(t,r,$e(e),0)}function Dn(t,e,r){return zn(t,r,$e(e),0)}function Nn(t,e,r,n){var o=$e(r,!0),a=o[0];return o[1]?(t[0]=Ut(/ Iterator] {$/,t[0]," Entries] {"),zn(e,n,a,2)):Bn(e,n,a,1)}function Fn(t,e,r){var n,o=Ve(e),a=o[0],i=o[1];if(a===He)n=[t.stylize("<pending>","special")];else{t.indentationLvl+=2;var c=hn(t,i,r);t.indentationLvl-=2,n=[a===Ue?"".concat(t.stylize("<rejected>","special")," ").concat(c):c]}return n}function Wn(t,e,r,n,a,i){var c,u,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:e,f=" ";if(void 0!==(i=i||wt(e,n)||{value:e[n],enumerable:!0}).value){var s=!0!==t.compact||0!==a?2:3;t.indentationLvl+=s,u=hn(t,i.value,r),3===s&&t.breakLength<Gr(u,t.colors)&&(f="\n".concat(fe(" ",t.indentationLvl))),t.indentationLvl-=s}else if(void 0!==i.get){var y=void 0!==i.set?"Getter/Setter":"Getter",p=t.stylize,g="special";if(t.getters&&(!0===t.getters||"get"===t.getters&&void 0===i.set||"set"===t.getters&&void 0!==i.set))try{var v=Q(i.get,l);if(t.indentationLvl+=2,null===v)u="".concat(p("[".concat(y,":"),g)," ").concat(p("null","null")).concat(p("]",g));else if("object"===o(v))u="".concat(p("[".concat(y,"]"),g)," ").concat(hn(t,v,r));else{var h=_n(p,v,t);u="".concat(p("[".concat(y,":"),g)," ").concat(h).concat(p("]",g))}t.indentationLvl-=2}catch(t){var d="<Inspection threw (".concat(t.message,")>");u="".concat(p("[".concat(y,":"),g)," ").concat(d).concat(p("]",g))}else u=t.stylize("[".concat(y,"]"),g)}else u=void 0!==i.set?t.stylize("[Setter]","special"):t.stylize("undefined","undefined");if(1===a)return u;if("symbol"===o(n)){var b=Ut(Mr,Se(n),nn);c=t.stylize(b,"symbol")}else c=null!==Ht(Vr,n)?"__proto__"===n?"['__proto__']":t.stylize(n,"name"):t.stylize(on(n),"string");return!1===i.enumerable&&(c="[".concat(c,"]")),"".concat(c,":").concat(f).concat(u)}function Hn(t,e,r,n){var o=e.length+r;if(o+e.length>t.breakLength)return!1;for(var a=0;a<e.length;a++)if(t.colors?o+=er(e[a]).length:o+=e[a].length,o>t.breakLength)return!1;return""===n||!oe(n,"\n")}function Un(t,e,r,n,o,a,i){if(!0!==t.compact){if("number"==typeof t.compact&&t.compact>=1){var c=e.length;if(2===o&&c>6&&(e=function(t,e,r){var n=0,o=0,a=0,i=e.length;t.maxArrayLength<e.length&&i--;for(var c=new d(i);a<i;a++){var u=Gr(e[a],t.colors);c[a]=u,n+=u+2,o<u&&(o=u)}var l=o+2;if(3*l+t.indentationLvl<t.breakLength&&(n/l>5||o<=6)){var f=ft(l-n/e.length),s=ct(l-3-f,1),y=ut(lt(ft(2.5*s*i)/s),it((t.breakLength-t.indentationLvl)/l),4*t.compact,15);if(y<=1)return e;for(var p=[],g=[],v=0;v<y;v++){for(var h=0,b=v;b<e.length;b+=y)c[b]>h&&(h=c[b]);h+=2,g[v]=h}var m=le;if(void 0!==r)for(var S=0;S<e.length;S++)if("number"!=typeof r[S]&&"bigint"!=typeof r[S]){m=ue;break}for(var P=0;P<i;P+=y){for(var x=ut(P+y,i),w="",A=P;A<x-1;A++){var O=g[A-P]+e[A].length-c[A];w+=m("".concat(e[A],", "),O," ")}if(m===le){var _=g[A-P]+e[A].length-c[A]-2;w+=le(e[A],_," ")}else w+=e[A];k(p,w)}t.maxArrayLength<e.length&&k(p,e[i]),e=p}return e}(t,e,i)),t.currentDepth-a<t.compact&&c===e.length&&Hn(t,e,e.length+t.indentationLvl+n[0].length+r.length+10,r)){var u=tr(e,", ");if(!oe(u,"\n"))return"".concat(r?"".concat(r," "):"").concat(n[0]," ").concat(u)+" ".concat(n[1])}}var l="\n".concat(fe(" ",t.indentationLvl));return"".concat(r?"".concat(r," "):"").concat(n[0]).concat(l," ")+"".concat(tr(e,",".concat(l," "))).concat(l).concat(n[1])}if(Hn(t,e,0,r))return"".concat(n[0]).concat(r?" ".concat(r):""," ").concat(tr(e,", ")," ")+n[1];var f=fe(" ",t.indentationLvl),s=""===r&&1===n[0].length?" ":"".concat(r?" ".concat(r):"","\n").concat(f," ");return"".concat(n[0]).concat(s).concat(tr(e,",\n".concat(f," "))," ").concat(n[1])}function Gn(t){var e=Ze(t,!1);if(void 0!==e){if(null===e)return!0;t=e}var r=It,n=It;if("function"!=typeof t.toString){if("function"!=typeof t[xe])return!0;if(It(t,xe))return!1;r=Vn}else{if(It(t,"toString"))return!1;if("function"!=typeof t[xe])n=Vn;else if(It(t,xe))return!1}var o=t;do{o=_t(o)}while(!r(o,"toString")&&!n(o,xe));var a=wt(o,"constructor");return void 0!==a&&"function"==typeof a.value&&Fr.has(a.value.name)}function Vn(){return!1}var Zn,$n=function(t){return ge(t.message,"\n",1)[0]};function Yn(t){try{return et(t)}catch(t){if(!Zn)try{var e={};e.a=e,et(e)}catch(t){Zn=$n(t)}if("TypeError"===t.name&&$n(t)===Zn)return"[Circular]";throw t}}function qn(t,e){var r;return An(cn,t,null!==(r=null==e?void 0:e.numericSeparator)&&void 0!==r?r:Hr.numericSeparator)}function Jn(t,e){var r;return On(cn,t,null!==(r=null==e?void 0:e.numericSeparator)&&void 0!==r?r:Hr.numericSeparator)}function Kn(t,e){var r=e[0],n=0,a="",i="";if("string"==typeof r){if(1===e.length)return r;for(var c,u=0,f=0;f<r.length-1;f++)if(37===ee(r,f)){var s=ee(r,++f);if(n+1!==e.length){switch(s){case 115:var y=e[++n];c="number"==typeof y?qn(y,t):"bigint"==typeof y?Jn(y,t):"object"===o(y)&&null!==y&&Gn(y)?Qr(y,l(l({},t),{},{compact:3,colors:!1,depth:0})):Xt(y);break;case 106:c=Yn(e[++n]);break;case 100:var p=e[++n];c="bigint"==typeof p?Jn(p,t):"symbol"===o(p)?"NaN":qn(yt(p),t);break;case 79:c=Qr(e[++n],t);break;case 111:c=Qr(e[++n],l(l({},t),{},{showHidden:!0,showProxy:!0,depth:4}));break;case 105:var g=e[++n];c="bigint"==typeof g?Jn(g,t):"symbol"===o(g)?"NaN":qn(ht(g),t);break;case 102:var v=e[++n];c="symbol"===o(v)?"NaN":qn(vt(v),t);break;case 99:n+=1,c="";break;case 37:a+=pe(r,u,f),u=f+1;continue;default:continue}u!==f-1&&(a+=pe(r,u,f-1)),a+=c,u=f+1}else 37===s&&(a+=pe(r,u,f),u=f+1)}0!==u&&(n++,i=" ",u<r.length&&(a+=pe(r,u)))}for(;n<e.length;){var h=e[n];a+=i,a+="string"!=typeof h?Qr(h,t):h,i=" ",n++}return a}function Qn(t){return t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=8203&&t<=8207||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t>=917760&&t<=917999}if(Me("config").hasIntl)Er(!1);else{Gr=function(t){var e=0;(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(t=to(t)),t=ce(t,"NFC");var r,n=a(new Yt(t));try{for(n.s();!(r=n.n()).done;){var o=r.value,i=re(o,0);Xn(i)?e+=2:Qn(i)||e++}}catch(t){n.e(t)}finally{n.f()}return e};var Xn=function(t){return t>=4352&&(t<=4447||9001===t||9002===t||t>=11904&&t<=12871&&12351!==t||t>=12880&&t<=19903||t>=19968&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510||t>=110592&&t<=110593||t>=127488&&t<=127569||t>=127744&&t<=128591||t>=131072&&t<=262141)}}function to(t){return Lr(t,"str"),Ut(Kr,t,"")}var eo={34:""",38:"&",39:"'",60:"<",62:">",160:" "};function ro(t){return t.replace(/[\u0000-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u00FF]/g,function(t){var e=Xt(t.charCodeAt(0));return eo[e]||"&#"+e+";"})}t.exports={identicalSequenceRange:bn,inspect:Qr,inspectDefaultOptions:Hr,format:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return Kn(void 0,e)},formatWithOptions:function(t){Rr(t,"inspectOptions",Tr);for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return Kn(t,r)},getStringWidth:Gr,stripVTControlCharacters:to,isZeroWidthCodePoint:Qn,stylizeWithColor:an,stylizeWithHTML:function(t,e){var r=Qr.styles[e];return void 0!==r?'<span style="color:'.concat(r,';">').concat(ro(t),"</span>"):ro(t)},Proxy:Je}},411:(t,e,r)=>{var n=r(798),o=n.StringPrototypeCharCodeAt,a=n.StringPrototypeIncludes,i=n.StringPrototypeReplace,c=r(999),u=r(315).CHAR_FORWARD_SLASH,l=r(503),f=/%/g,s=/\\/g,y=/\n/g,p=/\r/g,g=/\t/g;t.exports={pathToFileURL:function(t){var e=new c("file://"),r=l.resolve(t);return o(t,t.length-1)===u&&r[r.length-1]!==l.sep&&(r+="/"),e.pathname=function(t){return a(t,"%")&&(t=i(t,f,"%25")),a(t,"\\")&&(t=i(t,s,"%5C")),a(t,"\n")&&(t=i(t,y,"%0A")),a(t,"\r")&&(t=i(t,p,"%0D")),a(t,"\t")&&(t=i(t,g,"%09")),t}(r),e},URL:c}},496:t=>{var e=["_http_agent","_http_client","_http_common","_http_incoming","_http_outgoing","_http_server","_stream_duplex","_stream_passthrough","_stream_readable","_stream_transform","_stream_wrap","_stream_writable","_tls_common","_tls_wrap","assert","assert/strict","async_hooks","buffer","child_process","cluster","console","constants","crypto","dgram","diagnostics_channel","dns","dns/promises","domain","events","fs","fs/promises","http","http2","https","inspector","module","Module","net","os","path","path/posix","path/win32","perf_hooks","process","punycode","querystring","readline","readline/promises","repl","stream","stream/consumers","stream/promises","stream/web","string_decoder","sys","timers","timers/promises","tls","trace_events","tty","url","util","util/types","v8","vm","wasi","worker_threads","zlib"];t.exports.BuiltinModule={exists:function(t){return"internal/modules/cjs/foo"!==t&&(t.startsWith("internal/")||-1!==e.indexOf(t))}}},503:(t,e,r)=>{var n=r(798),o=n.StringPrototypeCharCodeAt,a=n.StringPrototypeLastIndexOf,i=n.StringPrototypeSlice,c=r(315),u=c.CHAR_DOT,l=c.CHAR_FORWARD_SLASH,f=r(755).validateString;function s(t){return t===l}function y(t,e,r,n){for(var c="",f=0,s=-1,y=0,p=0,g=0;g<=t.length;++g){if(g<t.length)p=o(t,g);else{if(n(p))break;p=l}if(n(p)){if(s===g-1||1===y);else if(2===y){if(c.length<2||2!==f||o(c,c.length-1)!==u||o(c,c.length-2)!==u){if(c.length>2){var v=a(c,r);-1===v?(c="",f=0):f=(c=i(c,0,v)).length-1-a(c,r),s=g,y=0;continue}if(0!==c.length){c="",f=0,s=g,y=0;continue}}e&&(c+=c.length>0?"".concat(r,".."):"..",f=2)}else c.length>0?c+="".concat(r).concat(i(t,s+1,g)):c=i(t,s+1,g),f=g-s-1;s=g,y=0}else p===u&&-1!==y?++y:y=-1}return c}t.exports={isPosixPathSeparator:s,normalizeString:y,resolve:function(){if((0===arguments.length||1===arguments.length&&(""===(arguments.length<=0?void 0:arguments[0])||"."===(arguments.length<=0?void 0:arguments[0])))&&o("/",0)===l)return"/";for(var t="",e=!1,r=arguments.length-1;r>=0&&!e;r--){var n=r<0||arguments.length<=r?void 0:arguments[r];f(n,"paths[".concat(r,"]")),0!==n.length&&(t="".concat(n,"/").concat(t),e=o(n,0)===l)}return e||(t="".concat("/","/").concat(t),e=o("/",0)===l),t=y(t,!e,"/",s),e?"/".concat(t):t.length>0?t:"."}}},522:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(t){var e=function(t){if("object"!=n(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}var i=r(798),c=i.Proxy,u=i.ProxyRevocable,l=new(0,i.SafeWeakMap),f=function(){return t=function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var n=new c(e,r);return l.set(n,[e,r]),n},e=[{key:"getProxyDetails",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=l.get(t);if(r)return e?r:r[0]}},{key:"revocable",value:function(t,e){var r=u(t,e);l.set(r.proxy,[t,e]);var n=r.revoke;return r.revoke=function(){l.set(r.proxy,[null,null]),n()},r}}],null&&0,e&&o(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;// removed by dead control flow
|
|
16902
|
-
var t, e; }();t.exports={getProxyDetails:f.getProxyDetails.bind(f),Proxy:f}},526:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(t){var e=function(t){if("object"!=n(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}var i=r(798).ArrayPrototypeMap,c=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},e=[{key:"hexSlice",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0;return i(this.slice(t,e),function(t){return("00"+t.toString(16)).slice(-2)}).join("")}}],e&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;// removed by dead control flow
|
|
16903
|
-
var t, e; }();e.h=c},730:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(798),a=o.ArrayIsArray,i=o.BigInt,c=o.Boolean,u=o.DatePrototype,l=o.Error,f=o.FunctionPrototype,s=o.MapPrototypeHas,y=o.Number,p=o.ObjectDefineProperty,g=o.ObjectGetOwnPropertyDescriptor,v=o.ObjectGetPrototypeOf,h=o.ObjectIsFrozen,d=o.ObjectPrototype,b=o.SetPrototypeHas,m=o.String,S=o.Symbol,P=o.SymbolToStringTag,x=o.globalThis,w=r(0).getConstructorName;function A(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),o=1;o<e;o++)r[o-1]=arguments[o];for(var a=0,i=r;a<i.length;a++){var c=i[a],u=x[c];if(u&&t instanceof u)return!0}for(;t;){if("object"!==n(t))return!1;if(r.indexOf(w(t))>=0)return!0;t=v(t)}return!1}function O(t){return function(e){if(!A(e,t.name))return!1;try{t.prototype.valueOf.call(e)}catch(t){return!1}return!0}}"object"!==n(x)&&(p(d,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete d.__magic__);var _=O(m),j=O(y),E=O(c),k=O(i),I=O(S);t.exports={isAsyncFunction:function(t){return"function"==typeof t&&f.toString.call(t).startsWith("async")},isGeneratorFunction:function(t){return"function"==typeof t&&f.toString.call(t).match(/^(async\s+)?function *\*/)},isAnyArrayBuffer:function(t){return A(t,"ArrayBuffer","SharedArrayBuffer")},isArrayBuffer:function(t){return A(t,"ArrayBuffer")},isArgumentsObject:function(t){if(null!==t&&"object"===n(t)&&!a(t)&&"number"==typeof t.length&&t.length===(0|t.length)&&t.length>=0){var e=g(t,"callee");return e&&!e.enumerable}return!1},isBoxedPrimitive:function(t){return j(t)||_(t)||E(t)||k(t)||I(t)},isDataView:function(t){return A(t,"DataView")},isExternal:function(t){return"object"===n(t)&&h(t)&&null==v(t)},isMap:function(t){if(!A(t,"Map"))return!1;try{s(t)}catch(t){return!1}return!0},isMapIterator:function(t){return"[object Map Iterator]"===d.toString.call(v(t))},isModuleNamespaceObject:function(t){try{return t&&"object"===n(t)&&"Module"===t[P]}catch(t){return!1}},isNativeError:function(t){return t instanceof l&&A(t,"Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","AggregateError")},isPromise:function(t){return A(t,"Promise")},isSet:function(t){if(!A(t,"Set"))return!1;try{b(t)}catch(t){return!1}return!0},isSetIterator:function(t){return"[object Set Iterator]"===d.toString.call(v(t))},isWeakMap:function(t){return A(t,"WeakMap")},isWeakSet:function(t){return A(t,"WeakSet")},isRegExp:function(t){return A(t,"RegExp")},isDate:function(t){if(A(t,"Date"))try{return u.getTime.call(t),!0}catch(t){}return!1},isTypedArray:function(t){return A(t,"Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array")},isStringObject:_,isNumberObject:j,isBooleanObject:E,isBigIntObject:k,isSymbolObject:I}},755:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(798).ArrayIsArray,a=r(799),i=a.hideStackFrames,c=a.codes.ERR_INVALID_ARG_TYPE,u=i(function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(0===r){if(null===t||o(t))throw new c(e,"Object",t);if("object"!==n(t))throw new c(e,"Object",t)}else{if(!(1&r)&&null===t)throw new c(e,"Object",t);if(!(2&r)&&o(t))throw new c(e,"Object",t);var a=!(4&r),i=n(t);if("object"!==i&&(a||"function"!==i))throw new c(e,"Object",t)}});t.exports={kValidateObjectNone:0,kValidateObjectAllowNullable:1,kValidateObjectAllowArray:2,kValidateObjectAllowFunction:4,validateObject:u,validateString:function(t,e){if("string"!=typeof t)throw new c(e,"string",t)}}},758:(t,e,r)=>{var n;function o(){return n=null!=n?n:r(799).codes.ERR_INTERNAL_ASSERTION}function a(t,e){if(!t)throw new(o())(e)}a.fail=function(t){throw new(o())(t)},t.exports=a},798:t=>{function e(){var t,n,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.toStringTag||"@@toStringTag";function c(e,o,a,i){var c=o&&o.prototype instanceof l?o:l,f=Object.create(c.prototype);return r(f,"_invoke",function(e,r,o){var a,i,c,l=0,f=o||[],s=!1,y={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,i=0,c=t,y.n=r,u}};function p(e,r){for(i=e,c=r,n=0;!s&&l&&!o&&n<f.length;n++){var o,a=f[n],p=y.p,g=a[2];e>3?(o=g===r)&&(c=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=e<2&&p<a[1])?(i=0,y.v=r,y.n=a[1]):p<g&&(o=e<3||a[0]>r||r>g)&&(a[4]=e,a[5]=r,y.n=g,i=0))}if(o||e>1)return u;throw s=!0,r}return function(o,f,g){if(l>1)throw TypeError("Generator is already running");for(s&&1===f&&p(f,g),i=f,c=g;(n=i<2?t:c)||!s;){a||(i?i<3?(i>1&&(y.n=-1),p(i,c)):y.n=c:y.v=c);try{if(l=2,a){if(i||(o="next"),n=a[o]){if(!(n=n.call(a,c)))throw TypeError("iterator result is not an object");if(!n.done)return n;c=n.value,i<2&&(i=0)}else 1===i&&(n=a.return)&&n.call(a),i<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),i=1);a=t}else if((n=(s=y.n<0)?c:e.call(r,y))!==u)break}catch(e){a=t,i=1,c=e}finally{l=1}}return{value:n,done:s}}}(e,a,i),!0),f}var u={};function l(){}function f(){}function s(){}n=Object.getPrototypeOf;var y=[][a]?n(n([][a]())):(r(n={},a,function(){return this}),n),p=s.prototype=l.prototype=Object.create(y);function g(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,r(t,i,"GeneratorFunction")),t.prototype=Object.create(p),t}return f.prototype=s,r(p,"constructor",s),r(s,"constructor",f),f.displayName="GeneratorFunction",r(s,i,"GeneratorFunction"),r(p),r(p,i,"Generator"),r(p,a,function(){return this}),r(p,"toString",function(){return"[object Generator]"}),(e=function(){return{w:c,m:g}})()}function r(t,e,n,o){var a=Object.defineProperty;try{a({},"",{})}catch(t){a=0}r=function(t,e,n,o){function i(e,n){r(t,e,function(t){return this._invoke(e,n,t)})}e?a?a(t,e,{value:n,enumerable:!o,configurable:!o,writable:!o}):t[e]=n:(i("next",0),i("throw",1),i("return",2))},r(t,e,n,o)}function n(t,e,r){return e=a(e),function(t,e){if(e&&("object"==d(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],a(t).constructor):e.apply(t,r))}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&c(t,e)}function c(t,e){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},c(t,e)}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,g(n.key),n)}}function f(t,e,r){return e&&l(t.prototype,e),r&&l(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?s(Object(r),!0).forEach(function(e){p(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function p(t,e,r){return(e=g(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function g(t){var e=function(t){if("object"!=d(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=d(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==d(e)?e:e+""}function v(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return h(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){c=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw a}}}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}function b(t){return function(){return new m(t.apply(this,arguments))}}function m(t){var e,r;function n(e,r){try{var a=t[e](r),i=a.value,c=i instanceof S;Promise.resolve(c?i.v:i).then(function(r){if(c){var u="return"===e?"return":"next";if(!i.k||r.done)return n(u,r);r=t[u](r).value}o(a.done?"return":"normal",r)},function(t){n("throw",t)})}catch(t){o("throw",t)}}function o(t,o){switch(t){case"return":e.resolve({value:o,done:!0});break;case"throw":e.reject(o);break;default:e.resolve({value:o,done:!1})}(e=e.next)?n(e.key,e.arg):r=null}this._invoke=function(t,o){return new Promise(function(a,i){var c={key:t,arg:o,resolve:a,reject:i,next:null};r?r=r.next=c:(e=r=c,n(t,o))})},"function"!=typeof t.return&&(this.return=void 0)}function S(t,e){this.v=t,this.k=e}m.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},m.prototype.next=function(t){return this._invoke("next",t)},m.prototype.throw=function(t){return this._invoke("throw",t)},m.prototype.return=function(t){return this._invoke("return",t)};var P={__proto__:null},x=Reflect.defineProperty,w=Reflect.getOwnPropertyDescriptor,A=Reflect.ownKeys,O=Function.prototype,_=O.apply,j=O.bind,E=O.call,k=j.bind(E);P.uncurryThis=k;var I=j.bind(_);P.applyBind=I;var R=["ArrayOf","ArrayPrototypePush","ArrayPrototypeUnshift","MathHypot","MathMax","MathMin","StringFromCharCode","StringFromCodePoint","StringPrototypeConcat","TypedArrayOf"];function L(t){return"symbol"===d(t)?"Symbol".concat(t.description[7].toUpperCase()).concat(t.description.slice(8)):"".concat(t[0].toUpperCase()).concat(t.slice(1))}function T(t,e,r,n){var o=n.enumerable,a=n.get,i=n.set;x(t,"".concat(e,"Get").concat(r),{__proto__:null,value:k(a),enumerable:o}),void 0!==i&&x(t,"".concat(e,"Set").concat(r),{__proto__:null,value:k(i),enumerable:o})}function B(t,e,r){var n,o=v(A(t));try{for(o.s();!(n=o.n()).done;){var a=n.value,i=L(a),c=w(t,a);if("get"in c)T(e,r,i,c);else{var u="".concat(r).concat(i);x(e,u,y({__proto__:null},c)),R.includes(u)&&x(e,"".concat(u,"Apply"),{__proto__:null,value:I(c.value,t)})}}}catch(t){o.e(t)}finally{o.f()}}function z(t,e,r){var n,o=v(A(t));try{for(o.s();!(n=o.n()).done;){var a=n.value,i=L(a),c=w(t,a);if("get"in c)T(e,r,i,c);else{var u=c.value;"function"==typeof u&&(c.value=k(u));var l="".concat(r).concat(i);x(e,l,y({__proto__:null},c)),R.includes(l)&&x(e,"".concat(l,"Apply"),{__proto__:null,value:I(u)})}}}catch(t){o.e(t)}finally{o.f()}}["Proxy","globalThis"].forEach(function(t){P[t]=globalThis[t]}),[decodeURI,decodeURIComponent,encodeURI,encodeURIComponent].forEach(function(t){P[t.name]=t}),[escape,eval,unescape].forEach(function(t){P[t.name]=t}),["Atomics","JSON","Math","Proxy","Reflect"].forEach(function(t){B(globalThis[t],P,t)}),["AggregateError","Array","ArrayBuffer","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","Error","EvalError","FinalizationRegistry","Float32Array","Float64Array","Function","Int16Array","Int32Array","Int8Array","Map","Number","Object","RangeError","ReferenceError","RegExp","Set","String","Symbol","SyntaxError","TypeError","URIError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","WeakMap","WeakRef","WeakSet"].forEach(function(t){var e=globalThis[t];e&&(P[t]=e,B(e,P,t),z(e.prototype,P,"".concat(t,"Prototype")))}),["Promise"].forEach(function(t){var e=globalThis[t];P[t]=e,function(t,e,r){var n,o=v(A(t));try{for(o.s();!(n=o.n()).done;){var a=n.value,i=L(a),c=w(t,a);if("get"in c)T(e,r,i,c);else{var u=c.value;"function"==typeof u&&(c.value=u.bind(t));var l="".concat(r).concat(i);x(e,l,y({__proto__:null},c))}}}catch(t){o.e(t)}finally{o.f()}}(e,P,t),z(e.prototype,P,"".concat(t,"Prototype"))}),[{name:"TypedArray",original:Reflect.getPrototypeOf(Uint8Array)},{name:"ArrayIterator",original:{prototype:Reflect.getPrototypeOf(Array.prototype[Symbol.iterator]())}},{name:"StringIterator",original:{prototype:Reflect.getPrototypeOf(String.prototype[Symbol.iterator]())}}].forEach(function(t){var e=t.name,r=t.original;P[e]=r,z(r,P,e),z(r.prototype,P,"".concat(e,"Prototype"))}),P.IteratorPrototype=Reflect.getPrototypeOf(P.ArrayIteratorPrototype);var M=P.ArrayPrototypeForEach,C=P.FinalizationRegistry,D=P.FunctionPrototypeCall,N=P.Map,F=P.ObjectFreeze,W=P.ObjectSetPrototypeOf,H=P.RegExp,U=P.Set,G=P.SymbolIterator,V=P.WeakMap,Z=P.WeakRef,$=P.WeakSet,Y=function(t,e){var r=function(){return f(function e(r){u(this,e),this._iterator=t(r)},[{key:"next",value:function(){return e(this._iterator)}},{key:G,value:function(){return this}}])}();return W(r.prototype,null),F(r.prototype),F(r),r};P.SafeArrayIterator=Y(P.ArrayPrototypeSymbolIterator,P.ArrayIteratorPrototypeNext),P.SafeStringIterator=Y(P.StringPrototypeSymbolIterator,P.StringIteratorPrototypeNext);var q=function(t,e){M(A(t),function(r){w(e,r)||x(e,r,y({__proto__:null},w(t,r)))})},J=function(t,e){if(G in t.prototype){var r,n=new t;M(A(t.prototype),function(o){if(!w(e.prototype,o)){var a,i=w(t.prototype,o);if("function"==typeof i.value&&0===i.value.length&&G in(null!==(a=D(i.value,n))&&void 0!==a?a:{})){var c=k(i.value);r=r||k(c(n).next);var u=Y(c,r);i.value=function(){return new u(this)}}x(e.prototype,o,y({__proto__:null},i))}})}else q(t.prototype,e.prototype);return q(t,e),W(e.prototype,null),F(e.prototype),F(e),e};P.makeSafe=J,P.SafeMap=J(N,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(N)),P.SafeWeakMap=J(V,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(V)),P.SafeSet=J(U,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(U)),P.SafeWeakSet=J($,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}($)),P.SafeFinalizationRegistry=J(C,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(C)),P.SafeWeakRef=J(Z,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(Z)),P.AsyncIteratorPrototype=P.ReflectGetPrototypeOf(b(e().m(function t(){return e().w(function(t){for(;;)if(0===t.n)return t.a(2)},t)}))).prototype,P.internalBinding=function(t){if("config"===t)return{hasIntl:!1};throw new Error('unknown module: "'.concat(t,'"'))},P._stringPrototypeReplaceAll=function(t,e,r){return"[object regexp]"===Object.prototype.toString.call(e).toLowerCase()?t.replace(e,r):t.replace(new H(e,"g"),r)},P.StringPrototypeReplaceAll=P.StringPrototypeReplaceAll||P._stringPrototypeReplaceAll,W(P,null),F(P),t.exports=P},799:(t,e,r)=>{function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function i(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(c=function(){return!!t})()}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},u(t)}function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}var f,s,y=r(798),p=y.ArrayIsArray,g=y.ArrayPrototypeIncludes,v=y.ArrayPrototypeIndexOf,h=y.ArrayPrototypeJoin,d=y.ArrayPrototypePush,b=y.ArrayPrototypeSlice,m=y.ArrayPrototypeSplice,S=y.Error,P=y.ErrorCaptureStackTrace,x=y.JSONStringify,w=y.ObjectDefineProperty,A=y.ReflectApply,O=y.RegExpPrototypeExec,_=y.SafeMap,j=y.SafeWeakMap,E=y.String,k=y.StringPrototypeEndsWith,I=y.StringPrototypeIncludes,R=y.StringPrototypeIndexOf,L=y.StringPrototypeSlice,T=y.StringPrototypeToLowerCase,B=y.Symbol,z=y.TypeError,M=B("kIsNodeError"),C=new _,D={},N=/^[A-Z][a-zA-Z0-9]*$/,F=["string","function","number","object","Function","Object","boolean","bigint","symbol"],W=new j,H=r(758),U=null;function G(t,e){var r=function(t){function r(){var t,n,a,l;(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,r),t=function(t,e,r){return e=u(e),function(t,e){if(e&&("object"==o(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,c()?Reflect.construct(e,r||[],u(t).constructor):e.apply(t,r))}(this,r),n=t,l=e,(a=i(a="code"))in n?Object.defineProperty(n,a,{value:l,enumerable:!0,configurable:!0,writable:!0}):n[a]=l;for(var f=arguments.length,s=new Array(f),y=0;y<f;y++)s[y]=arguments[y];return w(t,"message",{__proto__:null,value:Z(e,s,t),enumerable:!1,writable:!0,configurable:!0}),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&l(t,e)}(r,t),n=r,(f=[{key:"toString",value:function(){return"".concat(this.name," [").concat(e,"]: ").concat(this.message)}}])&&a(n.prototype,f),s&&a(n,s),Object.defineProperty(n,"prototype",{writable:!1}),n;// removed by dead control flow
|
|
16904
|
-
var n, f, s; }(t);return r}function V(t,e,r){C.set(t,e);var n=G(r,t);D[t]=n}function Z(t,e,r){var n=C.get(t);if("function"==typeof n)return H(n.length<=e.length,"Code: ".concat(t,"; The provided arguments length (").concat(e.length,") does not ")+"match the required ones (".concat(n.length,").")),A(n,r,e)}var $=B("kEnhanceStackBeforeInspector");function Y(t){if(null===t)return"null";if(void 0===t)return"undefined";switch(o(t)){case"bigint":return"type bigint (".concat(t,"n)");case"number":return 0===t?1/t==-1/0?"type number (-0)":"type number (0)":t!=t?"type number (NaN)":t===1/0?"type number (Infinity)":t===-1/0?"type number (-Infinity)":"type number (".concat(t,")");case"boolean":return t?"type boolean (true)":"type boolean (false)";case"symbol":return"type symbol (".concat(E(t),")");case"function":return"function ".concat(t.name);case"object":return t.constructor&&"name"in t.constructor?"an instance of ".concat(t.constructor.name):"".concat((U=U||r(
|
|
17325
|
+
!function(t,e){ true?module.exports=e():0}(this,()=>(()=>{"use strict";var t={119:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(t){var e=function(t){if("object"!=n(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}var i=r(541).ArrayPrototypeMap,c=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},e=[{key:"hexSlice",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0;return i(this.slice(t,e),function(t){return("00"+t.toString(16)).slice(-2)}).join("")}}],e&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;// removed by dead control flow
|
|
17326
|
+
var t, e; }();e.h=c},144:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(541).ArrayIsArray,a=r(784),i=a.hideStackFrames,c=a.codes.ERR_INVALID_ARG_TYPE,u=i(function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(0===r){if(null===t||o(t))throw new c(e,"Object",t);if("object"!==n(t))throw new c(e,"Object",t)}else{if(!(1&r)&&null===t)throw new c(e,"Object",t);if(!(2&r)&&o(t))throw new c(e,"Object",t);var a=!(4&r),i=n(t);if("object"!==i&&(a||"function"!==i))throw new c(e,"Object",t)}});t.exports={kValidateObjectNone:0,kValidateObjectAllowNullable:1,kValidateObjectAllowArray:2,kValidateObjectAllowFunction:4,validateObject:u,validateString:function(t,e){if("string"!=typeof t)throw new c(e,"string",t)}}},189:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,c=[],u=!0,l=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=i(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}function i(t,e){if(t){if("string"==typeof t)return c(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var u=r(541),l=u.BigInt,f=u.Error,s=u.NumberParseInt,y=u.ObjectEntries,p=u.ObjectGetOwnPropertyDescriptor,g=u.ObjectGetOwnPropertyDescriptors,v=u.ObjectGetOwnPropertySymbols,h=u.ObjectPrototypeToString,d=u.Symbol,b=r(437),m=d("kPending"),S=d("kRejected");t.exports={constants:{kPending:m,kRejected:S,ALL_PROPERTIES:0,ONLY_ENUMERABLE:2},getOwnNonIndexProperties:function(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=g(t),i=[],c=a(y(n));try{for(c.s();!(e=c.n()).done;){var u=o(e.value,2),l=u[0],f=u[1];if(!/^(0|[1-9][0-9]*)$/.test(l)||s(l,10)>=Math.pow(2,32)-1){if(2===r&&!f.enumerable)continue;i.push(l)}}}catch(t){c.e(t)}finally{c.f()}var h,d=a(v(t));try{for(d.s();!(h=d.n()).done;){var b=h.value,m=p(t,b);(2!==r||m.enumerable)&&i.push(b)}}catch(t){d.e(t)}finally{d.f()}return i},getPromiseDetails:function(){return[m,void 0]},getProxyDetails:b.getProxyDetails,Proxy:b.Proxy,previewEntries:function(t){return[[],!1]},getConstructorName:function(t){var e;if(!t||"object"!==n(t))throw new f("Invalid object");if(null!==(e=t.constructor)&&void 0!==e&&e.name)return t.constructor.name;var r=h(t).match(/^\[object ([^\]]+)\]/);return r?r[1]:"Object"},getExternalValue:function(){return l(0)}}},285:(t,e,r)=>{function n(t){return function(t){if(Array.isArray(t))return c(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=i(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}function i(t,e){if(t){if("string"==typeof t)return c(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function l(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach(function(e){f(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function f(t,e,r){return(e=function(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s,y,p,g=r(541),v=g.AggregateError,h=g.AggregateErrorPrototype,d=g.Array,b=g.ArrayBuffer,m=g.ArrayBufferPrototype,S=g.ArrayIsArray,P=g.ArrayPrototype,w=g.ArrayPrototypeFilter,x=g.ArrayPrototypeForEach,A=g.ArrayPrototypeIncludes,O=g.ArrayPrototypeIndexOf,j=g.ArrayPrototypeJoin,_=g.ArrayPrototypeMap,E=g.ArrayPrototypePop,k=g.ArrayPrototypePush,I=g.ArrayPrototypePushApply,R=g.ArrayPrototypeSlice,L=g.ArrayPrototypeSort,T=g.ArrayPrototypeSplice,B=g.ArrayPrototypeUnshift,z=g.BigIntPrototypeValueOf,M=g.Boolean,C=g.BooleanPrototype,D=g.BooleanPrototypeValueOf,N=g.DataView,F=g.DataViewPrototype,W=g.Date,H=g.DatePrototype,U=g.DatePrototypeGetTime,G=g.DatePrototypeToISOString,V=g.DatePrototypeToString,Z=g.Error,$=g.ErrorPrototype,Y=g.ErrorPrototypeToString,q=g.Function,J=g.FunctionPrototype,K=g.FunctionPrototypeBind,Q=g.FunctionPrototypeCall,X=g.FunctionPrototypeSymbolHasInstance,tt=g.FunctionPrototypeToString,et=g.JSONStringify,rt=g.Map,nt=g.MapPrototype,ot=g.MapPrototypeEntries,at=g.MapPrototypeGetSize,it=g.MathFloor,ct=g.MathMax,ut=g.MathMin,lt=g.MathRound,ft=g.MathSqrt,st=g.MathTrunc,yt=g.Number,pt=g.NumberIsFinite,gt=g.NumberIsNaN,vt=g.NumberParseFloat,ht=g.NumberParseInt,dt=g.NumberPrototype,bt=g.NumberPrototypeToString,mt=g.NumberPrototypeValueOf,St=g.Object,Pt=g.ObjectAssign,wt=g.ObjectDefineProperty,xt=g.ObjectGetOwnPropertyDescriptor,At=g.ObjectGetOwnPropertyNames,Ot=g.ObjectGetOwnPropertySymbols,jt=g.ObjectGetPrototypeOf,_t=g.ObjectIs,Et=g.ObjectKeys,kt=g.ObjectPrototype,It=g.ObjectPrototypeHasOwnProperty,Rt=g.ObjectPrototypePropertyIsEnumerable,Lt=g.ObjectPrototypeToString,Tt=g.ObjectSeal,Bt=g.ObjectSetPrototypeOf,zt=g.Promise,Mt=g.PromisePrototype,Ct=g.RangeError,Dt=g.RangeErrorPrototype,Nt=g.ReflectApply,Ft=g.ReflectOwnKeys,Wt=g.RegExp,Ht=g.RegExpPrototype,Ut=g.RegExpPrototypeExec,Gt=g.RegExpPrototypeSymbolReplace,Vt=g.RegExpPrototypeSymbolSplit,Zt=g.RegExpPrototypeToString,$t=g.SafeMap,Yt=g.SafeSet,qt=g.SafeStringIterator,Jt=g.Set,Kt=g.SetPrototype,Qt=g.SetPrototypeGetSize,Xt=g.SetPrototypeValues,te=g.String,ee=g.StringPrototype,re=g.StringPrototypeCharCodeAt,ne=g.StringPrototypeCodePointAt,oe=g.StringPrototypeEndsWith,ae=g.StringPrototypeIncludes,ie=g.StringPrototypeIndexOf,ce=g.StringPrototypeLastIndexOf,ue=g.StringPrototypeNormalize,le=g.StringPrototypePadEnd,fe=g.StringPrototypePadStart,se=g.StringPrototypeRepeat,ye=g.StringPrototypeReplace,pe=g.StringPrototypeReplaceAll,ge=g.StringPrototypeSlice,ve=g.StringPrototypeSplit,he=g.StringPrototypeStartsWith,de=g.StringPrototypeToLowerCase,be=g.StringPrototypeValueOf,me=g.SymbolIterator,Se=g.SymbolPrototypeToString,Pe=g.SymbolPrototypeValueOf,we=g.SymbolToPrimitive,xe=g.SymbolToStringTag,Ae=g.TypeError,Oe=g.TypeErrorPrototype,je=g.TypedArray,_e=g.TypedArrayPrototype,Ee=g.TypedArrayPrototypeGetLength,ke=g.TypedArrayPrototypeGetSymbolToStringTag,Ie=g.Uint8Array,Re=g.WeakMap,Le=g.WeakMapPrototype,Te=g.WeakSet,Be=g.WeakSetPrototype,ze=g.globalThis,Me=g.internalBinding,Ce=g.uncurryThis,De=r(189),Ne=De.constants,Fe=Ne.ALL_PROPERTIES,We=Ne.ONLY_ENUMERABLE,He=Ne.kPending,Ue=Ne.kRejected,Ge=De.getOwnNonIndexProperties,Ve=De.getPromiseDetails,Ze=De.getProxyDetails,$e=De.previewEntries,Ye=De.getConstructorName,qe=De.getExternalValue,Je=De.Proxy,Ke=r(767),Qe=Ke.customInspectSymbol,Xe=Ke.isError,tr=Ke.join,er=Ke.removeColors,rr=r(784).isStackOverflowError,nr=r(629),or=nr.isAsyncFunction,ar=nr.isGeneratorFunction,ir=nr.isAnyArrayBuffer,cr=nr.isArrayBuffer,ur=nr.isArgumentsObject,lr=nr.isBoxedPrimitive,fr=nr.isDataView,sr=nr.isExternal,yr=nr.isMap,pr=nr.isMapIterator,gr=nr.isModuleNamespaceObject,vr=nr.isNativeError,hr=nr.isPromise,dr=nr.isSet,br=nr.isSetIterator,mr=nr.isWeakMap,Sr=nr.isWeakSet,Pr=nr.isRegExp,wr=nr.isDate,xr=nr.isTypedArray,Ar=nr.isStringObject,Or=nr.isNumberObject,jr=nr.isBooleanObject,_r=nr.isBigIntObject,Er=r(961),kr=r(333).BuiltinModule,Ir=r(144),Rr=Ir.validateObject,Lr=Ir.validateString,Tr=Ir.kValidateObjectAllowArray;function Br(t){return(y=y||r(622)).pathToFileURL(t).href}var zr,Mr=new Yt(w(At(ze),function(t){return null!==Ut(/^[A-Z][a-zA-Z0-9]+$/,t)})),Cr=function(t){return void 0===t&&void 0!==t},Dr=Tt({showHidden:!1,depth:2,colors:!1,customInspect:!0,showProxy:!1,maxArrayLength:100,maxStringLength:1e4,breakLength:80,compact:3,sorted:!1,getters:!1,numericSeparator:!1}),Nr=/[\x00-\x1f\x27\x5c\x7f-\x9f]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/,Fr=/[\x00-\x1f\x27\x5c\x7f-\x9f]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/g,Wr=/[\x00-\x1f\x5c\x7f-\x9f]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/,Hr=/[\x00-\x1f\x5c\x7f-\x9f]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/g,Ur=/^[a-zA-Z_][a-zA-Z_0-9]*$/,Gr=/^(0|[1-9][0-9]*)$/,Vr=/^ {4}at (?:[^/\\(]+ \(|)node:(.+):\d+:\d+\)?$/,Zr=/^(\s+[^(]*?)\s*{/,$r=/(\/\/.*?\n)|(\/\*(.|\n)*?\*\/)/g,Yr=["\\x00","\\x01","\\x02","\\x03","\\x04","\\x05","\\x06","\\x07","\\b","\\t","\\n","\\x0B","\\f","\\r","\\x0E","\\x0F","\\x10","\\x11","\\x12","\\x13","\\x14","\\x15","\\x16","\\x17","\\x18","\\x19","\\x1A","\\x1B","\\x1C","\\x1D","\\x1E","\\x1F","","","","","","","","\\'","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\x7F","\\x80","\\x81","\\x82","\\x83","\\x84","\\x85","\\x86","\\x87","\\x88","\\x89","\\x8A","\\x8B","\\x8C","\\x8D","\\x8E","\\x8F","\\x90","\\x91","\\x92","\\x93","\\x94","\\x95","\\x96","\\x97","\\x98","\\x99","\\x9A","\\x9B","\\x9C","\\x9D","\\x9E","\\x9F"],qr=new Wt("[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/\\#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/\\#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))","g");function Jr(t,e){var r={budget:{},indentationLvl:0,seen:[],currentDepth:0,stylize:an,showHidden:Dr.showHidden,depth:Dr.depth,colors:Dr.colors,customInspect:Dr.customInspect,showProxy:Dr.showProxy,maxArrayLength:Dr.maxArrayLength,maxStringLength:Dr.maxStringLength,breakLength:Dr.breakLength,compact:Dr.compact,sorted:Dr.sorted,getters:Dr.getters,numericSeparator:Dr.numericSeparator};if(arguments.length>1)if(arguments.length>2&&(void 0!==arguments[2]&&(r.depth=arguments[2]),arguments.length>3&&void 0!==arguments[3]&&(r.colors=arguments[3])),"boolean"==typeof e)r.showHidden=e;else if(e)for(var n=Et(e),o=0;o<n.length;++o){var a=n[o];It(Dr,a)||"stylize"===a?r[a]=e[a]:void 0===r.userOptions&&(r.userOptions=e)}return r.colors&&(r.stylize=on),null===r.maxArrayLength&&(r.maxArrayLength=1/0),null===r.maxStringLength&&(r.maxStringLength=1/0),vn(r,t,0)}Jr.custom=Qe,wt(Jr,"defaultOptions",{__proto__:null,get:function(){return Dr},set:function(t){return Rr(t,"options"),Pt(Dr,t)}});var Kr=39,Qr=49;function Xr(t,e){wt(Jr.colors,e,{__proto__:null,get:function(){return this[t]},set:function(e){this[t]=e},configurable:!0,enumerable:!1})}Jr.colors={__proto__:null,reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],blink:[5,25],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],doubleunderline:[21,24],black:[30,Kr],red:[31,Kr],green:[32,Kr],yellow:[33,Kr],blue:[34,Kr],magenta:[35,Kr],cyan:[36,Kr],white:[37,Kr],bgBlack:[40,Qr],bgRed:[41,Qr],bgGreen:[42,Qr],bgYellow:[43,Qr],bgBlue:[44,Qr],bgMagenta:[45,Qr],bgCyan:[46,Qr],bgWhite:[47,Qr],framed:[51,54],overlined:[53,55],gray:[90,Kr],redBright:[91,Kr],greenBright:[92,Kr],yellowBright:[93,Kr],blueBright:[94,Kr],magentaBright:[95,Kr],cyanBright:[96,Kr],whiteBright:[97,Kr],bgGray:[100,Qr],bgRedBright:[101,Qr],bgGreenBright:[102,Qr],bgYellowBright:[103,Qr],bgBlueBright:[104,Qr],bgMagentaBright:[105,Qr],bgCyanBright:[106,Qr],bgWhiteBright:[107,Qr]},Xr("gray","grey"),Xr("gray","blackBright"),Xr("bgGray","bgGrey"),Xr("bgGray","bgBlackBright"),Xr("dim","faint"),Xr("strikethrough","crossedout"),Xr("strikethrough","strikeThrough"),Xr("strikethrough","crossedOut"),Xr("hidden","conceal"),Xr("inverse","swapColors"),Xr("inverse","swapcolors"),Xr("doubleunderline","doubleUnderline"),Jr.styles=Pt({__proto__:null},{special:"cyan",number:"yellow",bigint:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",symbol:"green",date:"magenta",regexp:function t(e){var r,n="",o=0,a=0,i=!1,c=((null===(r=t.colors)||void 0===r?void 0:r.length)>0?t.colors:tn).reduce(function(t,e){var r=Jr.colors[e];return r&&t.push(["[".concat(r[0],"m"),"[".concat(r[1],"m")]),t},[]);function u(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i="";for(o++;o<e.length&&e[o]!==r;)i+=e[o++];o<e.length?(a-=n,l(t),f(i,1,1),l(r),a+=n):f(t,1,-i.length)}var l=function(t){var e,r=a%c.length,o=null!==(e=c[r])&&void 0!==e?e:c[0];return n+=o[0]+t+o[1],r};function f(t,e,r){a+=e,l(t),a-=e,o+=r}for(l("/"),a++,o=1;o<e.length;){var s=e[o];if(i)if("\\"===s){var y="\\";if(++o<e.length){var p=(y+=e[o++])[1];if("u"===p&&"{"===e[o]){u("".concat(y,"{"),"}",0);continue}if(("p"===p||"P"===p)&&"{"===e[o]){u("".concat(y,"{"),"}",0);continue}"x"===y[1]&&(y+=e.slice(o,o+2),o+=2)}l(y)}else"]"===s?(a--,l("]"),o++,i=!1):"-"===s&&"["!==e[o-1]&&o+1<e.length&&"]"!==e[o+1]?f("-",1,1):(l(s),o++);else if("["===s)l("["),a++,o++,i=!0;else if("("===s){if(l("("),a++,++o<e.length&&"?"===e[o]){var g=++o<e.length?e[o]:"";if(":"===g||"="===g||"!"===g)f("?".concat(g),-1,1);else{var v=o+1<e.length?e[o+1]:"";if("<"!==g||"="!==v&&"!"!==v)if("<"===g){for(var h=++o;o<e.length&&">"!==e[o];)o++;var d=e.slice(h,o);o<e.length&&">"===e[o]?(a--,l("?<"),f(d,1,0),l(">"),a++,o++):(f("?<",-1,0),l(d))}else l("?");else f("?<".concat(v),-1,2)}}}else if(")"===s)a--,l(")"),o++;else if("\\"===s){var b="\\";if(++o<e.length){var m=(b+=e[o++])[1];if(o<e.length){if("u"===m&&"{"===e[o]){u("".concat(b,"{"),"}",0);continue}if("x"===m)b+=e.slice(o,o+2),o+=2;else if(m>="0"&&m<="9")for(;o<e.length&&e[o]>="0"&&e[o]<="9";)b+=e[o++];else{if("k"===m&&"<"===e[o]){u("".concat(b,"<"),">");continue}if(("p"===m||"P"===m)&&"{"===e[o]){u("".concat(b,"{"),"}",0);continue}}}}f(b,1,0)}else if("|"===s||"+"===s||"*"===s||"?"===s||","===s||"^"===s||"$"===s)f(s,3,1);else if("{"===s){o++;for(var S="";o<e.length&&e[o]>="0"&&e[o]<="9";)S+=e[o++];if(S&&(l("{"),a++,f(S,1,0)),o<e.length)if(","===e[o])S||(l("{"),a++),l(","),o++;else if(!S){a+=1,l("{"),a-=1;continue}for(var P="";o<e.length&&e[o]>="0"&&e[o]<="9";)P+=e[o++];P&&f(P,1,0),o<e.length&&"}"===e[o]&&(a--,l("}"),o++),o<e.length&&"?"===e[o]&&f("?",3,1)}else if("."===s)f(s,2,1);else{if("/"===s)break;f(s,1,1)}}return f("/",-1,1),o<e.length&&l(e.slice(o)),n},module:"underline"}),Jr.styles.regexp.colors=["green","red","yellow","cyan","magenta"];var tn=Jr.styles.regexp.colors.slice();function en(t,e){return-1===e?'"'.concat(t,'"'):-2===e?"`".concat(t,"`"):"'".concat(t,"'")}function rn(t){var e=re(t);return Yr.length>e?Yr[e]:"\\u".concat(bt(e,16))}function nn(t){var e=Nr,r=Fr,n=39;if(ae(t,"'")&&(ae(t,'"')?ae(t,"`")||ae(t,"${")||(n=-2):n=-1,39!==n&&(e=Wr,r=Hr)),t.length<5e3&&null===Ut(e,t))return en(t,n);if(t.length>100)return en(t=Gt(r,t,rn),n);for(var o="",a=0,i=0;i<t.length;i++){var c=re(t,i);if(c===n||92===c||c<32||c>126&&c<160)o+=a===i?Yr[c]:"".concat(ge(t,a,i)).concat(Yr[c]),a=i+1;else if(c>=55296&&c<=57343){if(c<=56319&&i+1<t.length){var u=re(t,i+1);if(u>=56320&&u<=57343){i++;continue}}o+="".concat(ge(t,a,i),"\\u").concat(bt(c,16)),a=i+1}}return a!==t.length&&(o+=ge(t,a)),en(o,n)}function on(t,e){var r=Jr.styles[e];if(void 0!==r){var n=Jr.colors[r];if(void 0!==n)return"[".concat(n[0],"m").concat(t,"[").concat(n[1],"m");if("function"==typeof r)return r(t)}return t}function an(t){return t}function cn(){return[]}function un(t,e){try{return t instanceof e}catch(t){return!1}}var ln=(new $t).set(P,{name:"Array",constructor:d}).set(m,{name:"ArrayBuffer",constructor:b}).set(J,{name:"Function",constructor:q}).set(nt,{name:"Map",constructor:rt}).set(Kt,{name:"Set",constructor:Jt}).set(kt,{name:"Object",constructor:St}).set(_e,{name:"TypedArray",constructor:je}).set(Ht,{name:"RegExp",constructor:Wt}).set(H,{name:"Date",constructor:W}).set(F,{name:"DataView",constructor:N}).set($,{name:"Error",constructor:Z}).set(h,{name:"AggregateError",constructor:v}).set(Dt,{name:"RangeError",constructor:Ct}).set(Oe,{name:"TypeError",constructor:Ae}).set(C,{name:"Boolean",constructor:M}).set(dt,{name:"Number",constructor:yt}).set(ee,{name:"String",constructor:te}).set(Mt,{name:"Promise",constructor:zt}).set(Le,{name:"WeakMap",constructor:Re}).set(Be,{name:"WeakSet",constructor:Te});function fn(t,e,r,n){for(var o,a=t;t||Cr(t);){var i=ln.get(t);if(void 0!==i){var c=i.name,u=i.constructor;if(X(u,a))return void 0!==n&&o!==t&&sn(e,a,o||a,r,n),c}var f=xt(t,"constructor");if(void 0!==f&&"function"==typeof f.value&&""!==f.value.name&&un(a,f.value))return void 0===n||o===t&&Mr.has(f.value.name)||sn(e,a,o||a,r,n),te(f.value.name);t=jt(t),void 0===o&&(o=t)}if(null===o)return null;var s=Ye(a);if(r>e.depth&&null!==e.depth)return"".concat(s," <Complex prototype>");var y=fn(o,e,r+1,n);return null===y?"".concat(s," <").concat(Jr(o,l(l({},e),{},{customInspect:!1,depth:-1})),">"):"".concat(s," <").concat(y,">")}function sn(t,e,r,n,o){var i,c,u=0;do{if(0!==u||e===r){if(null===(r=jt(r)))return;var l=xt(r,"constructor");if(void 0!==l&&"function"==typeof l.value&&Mr.has(l.value.name))return}0===u?c=new Yt:x(i,function(t){return c.add(t)}),i=Ft(r),k(t.seen,e);var f,s=a(i);try{for(s.s();!(f=s.n()).done;){var y=f.value;if(!("constructor"===y||It(e,y)||0!==u&&c.has(y))){var p=xt(r,y);if("function"!=typeof p.value){var g=Wn(t,r,n,y,0,p,e);t.colors?k(o,"[2m".concat(g,"[22m")):k(o,g)}}}}catch(t){s.e(t)}finally{s.f()}E(t.seen)}while(3!==++u)}function yn(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";if(null===t)return""!==e&&r!==e?"[".concat(r).concat(n,": null prototype] [").concat(e,"] "):"[".concat(r).concat(n,": null prototype] ");var o="".concat(t).concat(n," ");if(""!==e){var a=t.indexOf(e);if(-1===a)o+="[".concat(e,"] ");else{var i=a+e.length;i!==t.length&&t[i]===t[i].toLowerCase()&&(o+="[".concat(e,"] "))}}return o}function pn(t,e){var r,n=Ot(t);if(e)r=At(t),0!==n.length&&I(r,n);else{try{r=Et(t)}catch(e){Er(vr(e)&&"ReferenceError"===e.name&&gr(t)),r=At(t)}0!==n.length&&I(r,w(n,function(e){return Rt(t,e)}))}return r}function gn(t,e,r){var n="";return null===e&&(n=Ye(t))===r&&(n="Object"),yn(e,r,n)}function vn(t,e,i,c){if("object"!==o(e)&&"function"!=typeof e&&!Cr(e))return On(t.stylize,e,t);if(null===e)return t.stylize("null","null");var u=e,s=Ze(e,!!t.showProxy);if(void 0!==s){if(null===s||null===s[0])return t.stylize("<Revoked Proxy>","special");if(t.showProxy)return function(t,e,r){if(r>t.depth&&null!==t.depth)return t.stylize("Proxy [Array]","special");r+=1,t.indentationLvl+=2;var n=[vn(t,e[0],r),vn(t,e[1],r)];return t.indentationLvl-=2,Un(t,n,"",["Proxy [","]"],2,r)}(t,s,i);e=s}if(t.customInspect){var v,h=e[Qe];if("function"==typeof h&&h!==Jr&&(null===(v=xt(e,"constructor"))||void 0===v||null===(v=v.value)||void 0===v?void 0:v.prototype)!==e){var d=null===t.depth?null:t.depth-i,b=void 0!==s||!X(St,u),m=Q(h,u,d,function(t,e){var r=l({stylize:t.stylize,showHidden:t.showHidden,depth:t.depth,colors:t.colors,customInspect:t.customInspect,showProxy:t.showProxy,maxArrayLength:t.maxArrayLength,maxStringLength:t.maxStringLength,breakLength:t.breakLength,compact:t.compact,sorted:t.sorted,getters:t.getters,numericSeparator:t.numericSeparator},t.userOptions);if(e){Bt(r,null);var n,i=a(Et(r));try{for(i.s();!(n=i.n()).done;){var c=n.value;"object"!==o(r[c])&&"function"!=typeof r[c]||null===r[c]||delete r[c]}}catch(t){i.e(t)}finally{i.f()}r.stylize=Bt(function(e,r){var n;try{n="".concat(t.stylize(e,r))}catch(t){}return"string"!=typeof n?e:n},null)}return r}(t,b),Jr);if(m!==u)return"string"!=typeof m?vn(t,m,i):pe(m,"\n","\n".concat(se(" ",t.indentationLvl)))}}if(t.seen.includes(e)){var P=1;return void 0===t.circular?(t.circular=new $t,t.circular.set(e,P)):void 0===(P=t.circular.get(e))&&(P=t.circular.size+1,t.circular.set(e,P)),t.stylize("[Circular *".concat(P,"]"),"special")}return function(t,e,o,i){var c,u;t.showHidden&&(o<=t.depth||null===t.depth)&&(u=[]);var l=fn(e,t,o,u);void 0!==u&&0===u.length&&(u=void 0);var s="";try{s=e[xe]}catch(t){}("string"!=typeof s||""!==s&&(t.showHidden?It:Rt)(e,xe))&&(s="");var v,h,d,b="",m=cn,P=!0,w=0,x=t.showHidden?Fe:We,_=0;if(me in e||null===l)if(P=!1,S(e)){var E="Array"!==l||""!==s?yn(l,s,"Array","(".concat(e.length,")")):"";if(c=Ge(e,x),v=["".concat(E,"["),"]"],0===e.length&&0===c.length&&void 0===u)return"".concat(v[0],"]");_=2,m=kn}else if(dr(e)){var M=Qt(e),C=yn(l,s,"Set","(".concat(M,")"));if(c=pn(e,t.showHidden),m=K(Rn,null,null!==l?e:Xt(e)),0===M&&0===c.length&&void 0===u)return"".concat(C,"{}");v=["".concat(C,"{"),"}"]}else if(yr(e)){var N=at(e),F=yn(l,s,"Map","(".concat(N,")"));if(c=pn(e,t.showHidden),m=K(Ln,null,null!==l?e:ot(e)),0===N&&0===c.length&&void 0===u)return"".concat(F,"{}");v=["".concat(F,"{"),"}"]}else if(xr(e)){c=Ge(e,x);var W=e,H="";null===l&&(H=ke(e),W=new g[H](e));var Z=Ee(e),$=yn(l,s,H,"(".concat(Z,")"));if(v=["".concat($,"["),"]"],0===e.length&&0===c.length&&!t.showHidden)return"".concat(v[0],"]");m=K(In,null,W,Z),_=2,t.showHidden&&(h=["BYTES_PER_ELEMENT","length","byteLength","byteOffset","buffer"],i=!0)}else pr(e)?(c=pn(e,t.showHidden),v=hn("Map",s),m=K(Dn,null,v)):br(e)?(c=pn(e,t.showHidden),v=hn("Set",s),m=K(Dn,null,v)):P=!0;if(P)if(c=pn(e,t.showHidden),v=["{","}"],"function"==typeof e){if(b=function(t,e,r,n){var o=tt(e);if(he(o,"class")&&"}"===o[o.length-1]){var a=ge(o,5,-1),i=ie(a,"{");if(-1!==i&&(!ae(ge(a,0,i),"(")||null!==Ut(Zr,Gt($r,a))))return function(t,e,r){var n=It(t,"name")&&t.name||"(anonymous)",o="class ".concat(n);if("Function"!==e&&null!==e&&(o+=" [".concat(e,"]")),""!==r&&e!==r&&(o+=" [".concat(r,"]")),null!==e){var a=jt(t).name;a&&(o+=" extends ".concat(a))}else o+=" extends [null prototype]";return"[".concat(o,"]")}(e,r,n)}var c="Function";ar(e)&&(c="Generator".concat(c)),or(e)&&(c="Async".concat(c));var u="[".concat(c);return null===r&&(u+=" (null prototype)"),""===e.name?u+=" (anonymous)":u+=": ".concat("string"==typeof e.name?e.name:vn(t,e.name)),u+="]",r!==c&&null!==r&&(u+=" ".concat(r)),""!==n&&r!==n&&(u+=" [".concat(n,"]")),u}(t,e,l,s),0===c.length&&void 0===u)return t.stylize(b,"special")}else if("Object"===l){if(ur(e)?v[0]="[Arguments] {":""!==s&&(v[0]="".concat(yn(l,s,"Object"),"{")),0===c.length&&void 0===u)return"".concat(v[0],"}")}else if(Pr(e)){b=Zt(null!==l?e:new Wt(e));var Y=yn(l,s,"RegExp");if("RegExp "!==Y&&(b="".concat(Y).concat(b)),b=t.stylize(b,"regexp"),0===c.length&&void 0===u||o>t.depth&&null!==t.depth)return b}else if(wr(e)){b=gt(U(e))?V(e):G(e);var q=yn(l,s,"Date");if("Date "!==q&&(b="".concat(q).concat(b)),0===c.length&&void 0===u)return t.stylize(b,"date")}else if(Xe(e)){if(b=function(t,e,r,o,i){var c,u,l;try{l=bn(o,t)}catch(e){return Lt(t)}var f=!1;try{c=t.message}catch(t){f=!0}var s=!1;try{u=t.name}catch(t){s=!0}if(!o.showHidden&&0!==i.length){var y=O(i,"stack");if(-1!==y&&T(i,y,1),!f){var p=O(i,"message");-1===p||"string"==typeof c&&!ae(l,c)||T(i,p,1)}if(!s){var g=O(i,"name");-1===g||"string"==typeof u&&!ae(l,u)||T(i,g,1)}}u=null==u?"Error":u,!("cause"in t)||0!==i.length&&A(i,"cause")||k(i,"cause");try{var v=t.errors;!S(v)||0!==i.length&&A(i,"errors")||k(i,"errors")}catch(t){}l=function(t,e,r,n){var o=r.length;if("string"!=typeof r&&(t=ye(t,"".concat(r),"".concat(r," [").concat(ge(yn(e,n,"Error"),0,-1),"]"))),null===e||oe(r,"Error")&&he(t,r)&&(t.length===o||":"===t[o]||"\n"===t[o])){var a="Error";if(null===e){var i=Ut(/^([A-Z][a-z_ A-Z0-9[\]()-]+)(?::|\n {4}at)/,t)||Ut(/^([a-z_A-Z0-9-]*Error)$/,t);o=(a=(null==i?void 0:i[1])||"").length,a=a||"Error"}var c=ge(yn(e,n,a),0,-1);r!==c&&(t=ae(c,r)?0===o?"".concat(c,": ").concat(t):"".concat(c).concat(ge(t,o)):"".concat(c," [").concat(r,"]").concat(ge(t,o)))}return t}(l,e,u,r);var h=c&&ie(l,c)||-1;-1!==h&&(h+=c.length);var d=ie(l,"\n at",h);if(-1===d)l="[".concat(l,"]");else{var b=ge(l,0,d),m=function(t,e,r){var o,a=ve(r,"\n");try{o=e.cause}catch(t){}if(null!=o&&Xe(o)){var i=bn(t,o),c=ie(i,"\n at");if(-1!==c){var u=dn(a,ve(ge(i,c+1),"\n")),l=u[0],f=u[1];if(l>0){var s=l-2,y=" ... ".concat(s," lines matching cause stack trace ...");a.splice(f+1,s,t.stylize(y,"undefined"))}}}if(a.length>10)for(var p=function(t){for(var e=[],r=new $t,o=0;o<t.length;o++){var a=r.get(t[o]);void 0===a?r.set(t[o],[o]):a[a.length]=o}if(t.length-r.size<=3)return e;for(var i=0;i<t.length-3;i++){var c=r.get(t[i]);if(1!==c.length&&c[c.length-1]!==i){var u=c.indexOf(i)+1;if(u!==c.length){var l=c[c.length-1]-i;if(!(l<3)){var f=void 0;if(u+1<c.length){for(var s=0,y=u;y<c.length;y++){for(var p=c[y]-i;0!==p;){var g=s%p;0!==s&&(f=f||new Yt).add(s),s=p,p=g}if(1===s)break}l=s,f&&(f.delete(l),f=n(f))}for(var v=l,h=0,d=0,b=i+l;;b+=l){for(var m=0,S=0;S<l&&t[i+S]===t[b+S];S++)m++;if(m===l)d++;else{var P;if(null===(P=f)||void 0===P||!P.length)break;0!==d&&v*h<l*d&&(v=l,h=d),l=f.pop(),b=i,d=0}}0!==h&&v*h>=l*d&&(l=v,d=h),d*l>=3&&(e.push(i+l,l,d),i+=l*(d+1)-1)}}}}return e}(a),g=p.length-3;g>=0;g-=3){var v=p[g],h=p[g+1],d=p[g+2],b=" ... collapsed ".concat(h*d," duplicate lines ")+"matching above "+(d>1?"".concat(h," lines ").concat(d," times..."):"lines ...");a.splice(v,h*d,t.stylize(b,"undefined"))}return a}(o,t,ge(l,d+1));if(o.colors){var P,w,x=function(){var t;try{t=process.cwd()}catch(t){return}return t}(),_=a(m);try{for(_.s();!(w=_.n()).done;){var E=w.value,I=Ut(Vr,E);if(null!==I&&kr.exists(I[1]))b+="\n".concat(o.stylize(E,"undefined"));else{if(b+="\n",E=mn(o,E),void 0!==x){var R=Sn(o,E,x);R===E&&(R=Sn(o,E,P=P||Br(x))),E=R}b+=E}}}catch(t){_.e(t)}finally{_.f()}}else b+="\n".concat(j(m,"\n"));l=b}if(0!==o.indentationLvl){var L=se(" ",o.indentationLvl);l=pe(l,"\n","\n".concat(L))}return l}(e,l,s,t,c),0===c.length&&void 0===u)return b}else if(ir(e)){var J=yn(l,s,cr(e)?"ArrayBuffer":"SharedArrayBuffer");if(void 0===i)m=En;else if(0===c.length&&void 0===u)return J+"{ [byteLength]: ".concat(xn(t.stylize,e.byteLength,!1)," }");v[0]="".concat(J,"{"),h=["byteLength"]}else if(fr(e))v[0]="".concat(yn(l,s,"DataView"),"{"),h=["byteLength","byteOffset","buffer"];else if(hr(e))v[0]="".concat(yn(l,s,"Promise"),"{"),m=Nn;else if(Sr(e))v[0]="".concat(yn(l,s,"WeakSet"),"{"),m=t.showHidden?Mn:zn;else if(mr(e))v[0]="".concat(yn(l,s,"WeakMap"),"{"),m=t.showHidden?Cn:zn;else if(gr(e))v[0]="".concat(yn(l,s,"Module"),"{"),m=jn.bind(null,c);else if(lr(e)){if(b=function(t,e,r,n,o){var a,i;Or(t)?(a=mt,i="Number"):Ar(t)?(a=be,i="String",r.splice(0,t.length)):jr(t)?(a=D,i="Boolean"):_r(t)?(a=z,i="BigInt"):(a=Pe,i="Symbol");var c="[".concat(i);return i!==n&&(c+=null===n?" (null prototype)":" (".concat(n,")")),c+=": ".concat(On(an,a(t),e),"]"),""!==o&&o!==n&&(c+=" [".concat(o,"]")),0!==r.length||e.stylize===an?c:e.stylize(c,de(i))}(e,t,c,l,s),0===c.length&&void 0===u)return b}else if(!function(t){return y=y||r(622),"string"==typeof t.href&&t instanceof y.URL}(e)||o>t.depth&&null!==t.depth){if(0===c.length&&void 0===u){if(sr(e)){var Q=qe(e).toString(16);return t.stylize("[External: ".concat(Q,"]"),"special")}return"".concat(gn(e,l,s),"{}")}v[0]="".concat(gn(e,l,s),"{")}else if(c=function(t){return p=p||Ot(new y.URL("http://user:pass@localhost:8080/?foo=bar#baz")),t.filter(function(t){return-1===p[t]})}(c),b=e.href,0===c.length&&void 0===u)return b;if(o>t.depth&&null!==t.depth){var X=ge(gn(e,l,s),0,-1);return null!==l&&(X="[".concat(X,"]")),t.stylize(X,"special")}o+=1,t.seen.push(e),t.currentDepth=o;var et=t.indentationLvl;try{if(d=m(t,e,o),void 0!==h)for(w=0;w<h.length;w++){var rt=void 0;try{rt=Fn(t,e,o,h[w],i)}catch(r){rt=Fn(t,f({},h[w],e.buffer[h[w]]),o,h[w],i)}k(d,rt)}for(w=0;w<c.length;w++)k(d,Wn(t,e,o,c[w],_));void 0!==u&&I(d,u)}catch(r){if(!rr(r))throw r;return function(t,e,r,n){return t.seen.pop(),t.indentationLvl=n,t.stylize("[".concat(r,": Inspection interrupted ")+"prematurely. Maximum call stack size exceeded.]","special")}(t,0,ge(gn(e,l,s),0,-1),et)}if(void 0!==t.circular){var nt=t.circular.get(e);if(void 0!==nt){var it=t.stylize("<ref *".concat(nt,">"),"special");!0!==t.compact?b=""===b?it:"".concat(it," ").concat(b):v[0]="".concat(it," ").concat(v[0])}}if(t.seen.pop(),t.sorted){var ct=!0===t.sorted?void 0:t.sorted;if(0===_)L(d,ct);else if(c.length>1){var ut=L(R(d,d.length-c.length),ct);B(ut,d,d.length-c.length,c.length),Nt(T,null,ut)}}var lt=Un(t,d,b,v,_,o,e),ft=(t.budget[t.indentationLvl]||0)+lt.length;return t.budget[t.indentationLvl]=ft,ft>Math.pow(2,27)&&(t.depth=-1),lt}(t,e,i,c)}function hn(t,e){return e!=="".concat(t," Iterator")&&(""!==e&&(e+="] ["),e+="".concat(t," Iterator")),["[".concat(e,"] {"),"}"]}function dn(t,e){for(var r=0;r<t.length-3;r++){var n=O(e,t[r]);if(-1!==n){var o=e.length-n;if(o>3){for(var a=1,i=ut(t.length-r,o);i>a&&t[r+a]===e[n+a];)a++;if(a>3)return[a,r]}}}return[0,0]}function bn(t,e){var r;try{r=e.stack}catch(t){}if(r){if("string"==typeof r)return r;t.seen.push(e),t.indentationLvl+=4;var n=vn(t,r);return t.indentationLvl-=4,t.seen.pop(),"".concat(Y(e),"\n ").concat(n)}return Y(e)}function mn(t,e){for(var r="",n=0,o=0;;){var a=ie(e,"node_modules",o);if(-1===a)break;var i=e[a-1],c=e[a+12];if("/"!==c&&"\\"!==c||"/"!==i&&"\\"!==i)o=a+1;else{var u=a+13;r+=ge(e,n,u);var l=ie(e,i,u);"@"===e[u]&&(l=ie(e,i,l+1));var f=ge(e,u,l);r+=t.stylize(f,"module"),n=l,o=l}}return 0!==n&&(e=r+ge(e,n)),e}function Sn(t,e,r){var n=ie(e,r),o="",a=r.length;if(-1!==n){"file://"===ge(e,n-7,n)&&(a+=7,n-=7);var i="("===e[n-1]?n-1:n,c=i!==n&&oe(e,")")?-1:e.length,u=n+a+1,l=ge(e,i,u);o+=ge(e,0,i),o+=t.stylize(l,"undefined"),o+=ge(e,u,c),-1===c&&(o+=t.stylize(")","undefined"))}else o+=e;return o}function Pn(t){var e="",r=t.length;Er(0!==r);for(var n="-"===t[0]?1:0;r>=n+4;r-=3)e="_".concat(ge(t,r-3,r)).concat(e);return r===t.length?t:"".concat(ge(t,0,r)).concat(e)}var wn=function(t){return"... ".concat(t," more item").concat(t>1?"s":"")};function xn(t,e,r){if(!r)return _t(e,-0)?t("-0","number"):t("".concat(e),"number");var n=te(e);if(st(e)===e)return!pt(e)||ae(n,"e")?t(n,"number"):t(Pn(n),"number");if(gt(e))return t(n,"number");var o=ie(n,"."),a=ge(n,0,o),i=ge(n,o+1);return t("".concat(Pn(a),".").concat(function(t){for(var e="",r=0;r<t.length-3;r+=3)e+="".concat(ge(t,r,r+3),"_");return 0===r?t:"".concat(e).concat(ge(t,r))}(i)),"number")}function An(t,e,r){var n=te(e);return t("".concat(r?Pn(n):n,"n"),"bigint")}function On(t,e,r){if("string"==typeof e){var n="";if(e.length>r.maxStringLength){var o=e.length-r.maxStringLength;e=ge(e,0,r.maxStringLength),n="... ".concat(o," more character").concat(o>1?"s":"")}return!0!==r.compact&&e.length>16&&e.length>r.breakLength-r.indentationLvl-4?j(_(Vt(/(?<=\n)/,e),function(e){return t(nn(e),"string")})," +\n".concat(se(" ",r.indentationLvl+2)))+n:t(nn(e),"string")+n}return"number"==typeof e?xn(t,e,r.numericSeparator):"bigint"==typeof e?An(t,e,r.numericSeparator):"boolean"==typeof e?t("".concat(e),"boolean"):void 0===e?t("undefined","undefined"):t(Se(e),"symbol")}function jn(t,e,r,n){for(var o=new d(t.length),a=0;a<t.length;a++)try{o[a]=Wn(e,r,n,t[a],0)}catch(r){Er(vr(r)&&"ReferenceError"===r.name);var i=f({},t[a],"");o[a]=Wn(e,i,n,t[a],0);var c=ce(o[a]," ");o[a]=ge(o[a],0,c+1)+e.stylize("<uninitialized>","special")}return t.length=0,o}function _n(t,e,r,n,o,a){for(var i=Et(e),c=a;a<i.length&&o.length<n;a++){var u=i[a],l=+u;if(l>Math.pow(2,32)-2)break;if("".concat(c)!==u){if(null===Ut(Gr,u))break;var f=l-c,s=f>1?"s":"",y="<".concat(f," empty item").concat(s,">");if(k(o,t.stylize(y,"undefined")),c=l,o.length===n)break}k(o,Wn(t,e,r,u,1)),c++}var p=e.length-c;if(o.length!==n){if(p>0){var g=p>1?"s":"",v="<".concat(p," empty item").concat(g,">");k(o,t.stylize(v,"undefined"))}}else p>0&&k(o,wn(p));return o}function En(t,e){var n;try{n=new Ie(e)}catch(e){return[t.stylize("(detached)","special")]}void 0===s&&(s=Ce(r(119).h.prototype.hexSlice));for(var o=s(n,0,ut(t.maxArrayLength,n.length)),a="",i=0;i<o.length-2;i+=2)a+="".concat(o[i]).concat(o[i+1]," ");o.length>0&&(a+="".concat(o[i]).concat(o[i+1]));var c=n.length-t.maxArrayLength;return c>0&&(a+=" ... ".concat(c," more byte").concat(c>1?"s":"")),["".concat(t.stylize("[Uint8Contents]","special"),": <").concat(a,">")]}function kn(t,e,r){for(var n=e.length,o=ut(ct(0,t.maxArrayLength),n),a=n-o,i=[],c=0;c<o;c++){var u=xt(e,c);if(void 0===u)return _n(t,e,r,o,i,c);k(i,Wn(t,e,r,c,1,u))}return a>0&&k(i,wn(a)),i}function In(t,e,r){for(var n=ut(ct(0,r.maxArrayLength),e),o=t.length-n,a=new d(n),i=t.length>0&&"number"==typeof t[0]?xn:An,c=0;c<n;++c)a[c]=i(r.stylize,t[c],r.numericSeparator);return o>0&&(a[n]=wn(o)),a}function Rn(t,e,r,n){var o=t.size,i=ut(ct(0,e.maxArrayLength),o),c=o-i,u=[];e.indentationLvl+=2;var l,f=0,s=a(t);try{for(s.s();!(l=s.n()).done;){var y=l.value;if(f>=i)break;k(u,vn(e,y,n)),f++}}catch(t){s.e(t)}finally{s.f()}return c>0&&k(u,wn(c)),e.indentationLvl-=2,u}function Ln(t,e,r,n){var o=t.size,i=ut(ct(0,e.maxArrayLength),o),c=o-i,u=[];e.indentationLvl+=2;var l,f=0,s=a(t);try{for(s.s();!(l=s.n()).done;){var y=l.value,p=y[0],g=y[1];if(f>=i)break;k(u,"".concat(vn(e,p,n)," => ").concat(vn(e,g,n))),f++}}catch(t){s.e(t)}finally{s.f()}return c>0&&k(u,wn(c)),e.indentationLvl-=2,u}function Tn(t,e,r,n){var o=ct(t.maxArrayLength,0),a=ut(o,r.length),i=new d(a);t.indentationLvl+=2;for(var c=0;c<a;c++)i[c]=vn(t,r[c],e);t.indentationLvl-=2,0!==n||t.sorted||L(i);var u=r.length-a;return u>0&&k(i,wn(u)),i}function Bn(t,e,r,n){var o=ct(t.maxArrayLength,0),a=r.length/2,i=a-o,c=ut(o,a),u=new d(c),l=0;if(t.indentationLvl+=2,0===n){for(;l<c;l++){var f=2*l;u[l]="".concat(vn(t,r[f],e)," => ").concat(vn(t,r[f+1],e))}t.sorted||L(u)}else for(;l<c;l++){var s=2*l,y=[vn(t,r[s],e),vn(t,r[s+1],e)];u[l]=Un(t,y,"",["[","]"],2,e)}return t.indentationLvl-=2,i>0&&k(u,wn(i)),u}function zn(t){return[t.stylize("<items unknown>","special")]}function Mn(t,e,r){return Tn(t,r,$e(e),0)}function Cn(t,e,r){return Bn(t,r,$e(e),0)}function Dn(t,e,r,n){var o=$e(r,!0),a=o[0];return o[1]?(t[0]=Gt(/ Iterator] {$/,t[0]," Entries] {"),Bn(e,n,a,2)):Tn(e,n,a,1)}function Nn(t,e,r){var n,o=Ve(e),a=o[0],i=o[1];if(a===He)n=[t.stylize("<pending>","special")];else{t.indentationLvl+=2;var c=vn(t,i,r);t.indentationLvl-=2,n=[a===Ue?"".concat(t.stylize("<rejected>","special")," ").concat(c):c]}return n}function Fn(t,e,r,n,o){t.indentationLvl+=2;var a=vn(t,e[n],r,o);t.indentationLvl-=2;var i=t.stylize("[".concat(n,"]"),"string");return"".concat(i,": ").concat(a)}function Wn(t,e,r,n,a,i){var c,u,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:e,f=" ";if(void 0!==(i=i||xt(e,n)).value){var s=!0!==t.compact||0!==a?2:3;t.indentationLvl+=s,u=vn(t,i.value,r),3===s&&t.breakLength<zr(u,t.colors)&&(f="\n".concat(se(" ",t.indentationLvl))),t.indentationLvl-=s}else if(void 0!==i.get){var y=void 0!==i.set?"Getter/Setter":"Getter",p=t.stylize,g="special";if(t.getters&&(!0===t.getters||"get"===t.getters&&void 0===i.set||"set"===t.getters&&void 0!==i.set))try{var v=Q(i.get,l);if(t.indentationLvl+=2,null===v)u="".concat(p("[".concat(y,":"),g)," ").concat(p("null","null")).concat(p("]",g));else if("object"===o(v))u="".concat(p("[".concat(y,"]"),g)," ").concat(vn(t,v,r));else{var h=On(p,v,t);u="".concat(p("[".concat(y,":"),g)," ").concat(h).concat(p("]",g))}t.indentationLvl-=2}catch(t){var d="<Inspection threw (".concat(t.message,")>");u="".concat(p("[".concat(y,":"),g)," ").concat(d).concat(p("]",g))}else u=t.stylize("[".concat(y,"]"),g)}else u=void 0!==i.set?t.stylize("[Setter]","special"):t.stylize("undefined","undefined");if(1===a)return u;if("symbol"===o(n)){var b=Gt(Fr,Se(n),rn);c=t.stylize(b,"symbol")}else c=null!==Ut(Ur,n)?"__proto__"===n?"['__proto__']":t.stylize(n,"name"):t.stylize(nn(n),"string");return!1===i.enumerable&&(c="[".concat(c,"]")),"".concat(c,":").concat(f).concat(u)}function Hn(t,e,r,n){var o=e.length+r;if(o+e.length>t.breakLength)return!1;for(var a=0;a<e.length;a++)if(t.colors?o+=er(e[a]).length:o+=e[a].length,o>t.breakLength)return!1;return""===n||!ae(n,"\n")}function Un(t,e,r,n,o,a,i){if(!0!==t.compact){if("number"==typeof t.compact&&t.compact>=1){var c=e.length;if(2===o&&c>6&&(e=function(t,e,r){var n=0,o=0,a=0,i=e.length;t.maxArrayLength<e.length&&i--;for(var c=new d(i);a<i;a++){var u=zr(e[a],t.colors);c[a]=u,n+=u+2,o<u&&(o=u)}var l=o+2;if(3*l+t.indentationLvl<t.breakLength&&(n/l>5||o<=6)){var f=ft(l-n/e.length),s=ct(l-3-f,1),y=ut(lt(ft(2.5*s*i)/s),it((t.breakLength-t.indentationLvl)/l),4*t.compact,15);if(y<=1)return e;for(var p=[],g=[],v=0;v<y;v++){for(var h=0,b=v;b<e.length;b+=y)c[b]>h&&(h=c[b]);h+=2,g[v]=h}var m=fe;if(void 0!==r)for(var S=0;S<e.length;S++)if("number"!=typeof r[S]&&"bigint"!=typeof r[S]){m=le;break}for(var P=0;P<i;P+=y){for(var w=ut(P+y,i),x="",A=P;A<w-1;A++){var O=g[A-P]+e[A].length-c[A];x+=m("".concat(e[A],", "),O," ")}if(m===fe){var j=g[A-P]+e[A].length-c[A]-2;x+=fe(e[A],j," ")}else x+=e[A];k(p,x)}t.maxArrayLength<e.length&&k(p,e[i]),e=p}return e}(t,e,i)),t.currentDepth-a<t.compact&&c===e.length&&Hn(t,e,e.length+t.indentationLvl+n[0].length+r.length+10,r)){var u=tr(e,", ");if(!ae(u,"\n"))return"".concat(r?"".concat(r," "):"").concat(n[0]," ").concat(u)+" ".concat(n[1])}}var l="\n".concat(se(" ",t.indentationLvl));return"".concat(r?"".concat(r," "):"").concat(n[0]).concat(l," ")+"".concat(tr(e,",".concat(l," "))).concat(l).concat(n[1])}if(Hn(t,e,0,r))return"".concat(n[0]).concat(r?" ".concat(r):""," ").concat(tr(e,", ")," ")+n[1];var f=se(" ",t.indentationLvl),s=""===r&&1===n[0].length?" ":"".concat(r?" ".concat(r):"","\n").concat(f," ");return"".concat(n[0]).concat(s).concat(tr(e,",\n".concat(f," "))," ").concat(n[1])}function Gn(t){var e=Ze(t,!1);if(void 0!==e){if(null===e)return!0;t=e}var r=It,n=It;if("function"!=typeof t.toString){if("function"!=typeof t[we])return!0;if(It(t,we))return!1;r=Vn}else{if(It(t,"toString"))return!1;if("function"!=typeof t[we])n=Vn;else if(It(t,we))return!1}var o=t;do{o=jt(o)}while(!r(o,"toString")&&!n(o,we));var a=xt(o,"constructor");return void 0!==a&&"function"==typeof a.value&&Mr.has(a.value.name)}function Vn(){return!1}var Zn,$n=function(t){return ve(t.message,"\n",1)[0]};function Yn(t){try{return et(t)}catch(t){if(!Zn)try{var e={};e.a=e,et(e)}catch(t){Zn=$n(t)}if("TypeError"===t.name&&$n(t)===Zn)return"[Circular]";throw t}}function qn(t,e){var r;return xn(an,t,null!==(r=null==e?void 0:e.numericSeparator)&&void 0!==r?r:Dr.numericSeparator)}function Jn(t,e){var r;return An(an,t,null!==(r=null==e?void 0:e.numericSeparator)&&void 0!==r?r:Dr.numericSeparator)}function Kn(t,e){var r=e[0],n=0,a="",i="";if("string"==typeof r){if(1===e.length)return r;for(var c,u=0,f=0;f<r.length-1;f++)if(37===re(r,f)){var s=re(r,++f);if(n+1!==e.length){switch(s){case 115:var y=e[++n];c="number"==typeof y?qn(y,t):"bigint"==typeof y?Jn(y,t):"object"===o(y)&&null!==y&&Gn(y)?Jr(y,l(l({},t),{},{compact:3,colors:!1,depth:0})):te(y);break;case 106:c=Yn(e[++n]);break;case 100:var p=e[++n];c="bigint"==typeof p?Jn(p,t):"symbol"===o(p)?"NaN":qn(yt(p),t);break;case 79:c=Jr(e[++n],t);break;case 111:c=Jr(e[++n],l(l({},t),{},{showHidden:!0,showProxy:!0,depth:4}));break;case 105:var g=e[++n];c="bigint"==typeof g?Jn(g,t):"symbol"===o(g)?"NaN":qn(ht(g),t);break;case 102:var v=e[++n];c="symbol"===o(v)?"NaN":qn(vt(v),t);break;case 99:n+=1,c="";break;case 37:a+=ge(r,u,f),u=f+1;continue;default:continue}u!==f-1&&(a+=ge(r,u,f-1)),a+=c,u=f+1}else 37===s&&(a+=ge(r,u,f),u=f+1)}0!==u&&(n++,i=" ",u<r.length&&(a+=ge(r,u)))}for(;n<e.length;){var h=e[n];a+=i,a+="string"!=typeof h?Jr(h,t):h,i=" ",n++}return a}function Qn(t){return t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=8203&&t<=8207||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t>=917760&&t<=917999}if(Me("config").hasIntl)Er(!1);else{zr=function(t){var e=0;(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(t=to(t)),t=ue(t,"NFC");var r,n=a(new qt(t));try{for(n.s();!(r=n.n()).done;){var o=r.value,i=ne(o,0);Xn(i)?e+=2:Qn(i)||e++}}catch(t){n.e(t)}finally{n.f()}return e};var Xn=function(t){return t>=4352&&(t<=4447||9001===t||9002===t||t>=11904&&t<=12871&&12351!==t||t>=12880&&t<=19903||t>=19968&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510||t>=110592&&t<=110593||t>=127488&&t<=127569||t>=127744&&t<=128591||t>=131072&&t<=262141)}}function to(t){return Lr(t,"str"),Gt(qr,t,"")}var eo={34:""",38:"&",39:"'",60:"<",62:">",160:" "};function ro(t){return t.replace(/[\u0000-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u00FF]/g,function(t){var e=te(t.charCodeAt(0));return eo[e]||"&#"+e+";"})}t.exports={identicalSequenceRange:dn,inspect:Jr,inspectDefaultOptions:Dr,format:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return Kn(void 0,e)},formatWithOptions:function(t){Rr(t,"inspectOptions",Tr);for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return Kn(t,r)},getStringWidth:zr,stripVTControlCharacters:to,isZeroWidthCodePoint:Qn,stylizeWithColor:on,stylizeWithHTML:function(t,e){var r=Jr.styles[e];return void 0!==r?'<span style="color:'.concat(r,';">').concat(ro(t),"</span>"):ro(t)},Proxy:Je}},333:t=>{var e=["_http_agent","_http_client","_http_common","_http_incoming","_http_outgoing","_http_server","_stream_duplex","_stream_passthrough","_stream_readable","_stream_transform","_stream_wrap","_stream_writable","_tls_common","_tls_wrap","assert","assert/strict","async_hooks","buffer","child_process","cluster","console","constants","crypto","dgram","diagnostics_channel","dns","dns/promises","domain","events","fs","fs/promises","http","http2","https","inspector","module","Module","net","os","path","path/posix","path/win32","perf_hooks","process","punycode","querystring","readline","readline/promises","repl","stream","stream/consumers","stream/promises","stream/web","string_decoder","sys","timers","timers/promises","tls","trace_events","tty","url","util","util/types","v8","vm","wasi","worker_threads","zlib"];t.exports.BuiltinModule={exists:function(t){return"internal/modules/cjs/foo"!==t&&(t.startsWith("internal/")||-1!==e.indexOf(t))}}},394:t=>{t.exports={CHAR_DOT:46,CHAR_FORWARD_SLASH:47,CHAR_BACKWARD_SLASH:92}},437:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(t){var e=function(t){if("object"!=n(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}var i=r(541),c=i.Proxy,u=i.ProxyRevocable,l=new(0,i.SafeWeakMap),f=function(){return t=function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var n=new c(e,r);return l.set(n,[e,r]),n},e=[{key:"getProxyDetails",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=l.get(t);if(r)return e?r:r[0]}},{key:"revocable",value:function(t,e){var r=u(t,e);l.set(r.proxy,[t,e]);var n=r.revoke;return r.revoke=function(){l.set(r.proxy,[null,null]),n()},r}}],null&&0,e&&o(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;// removed by dead control flow
|
|
17327
|
+
var t, e; }();t.exports={getProxyDetails:f.getProxyDetails.bind(f),Proxy:f}},541:t=>{function e(){var t,n,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.toStringTag||"@@toStringTag";function c(e,o,a,i){var c=o&&o.prototype instanceof l?o:l,f=Object.create(c.prototype);return r(f,"_invoke",function(e,r,o){var a,i,c,l=0,f=o||[],s=!1,y={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,i=0,c=t,y.n=r,u}};function p(e,r){for(i=e,c=r,n=0;!s&&l&&!o&&n<f.length;n++){var o,a=f[n],p=y.p,g=a[2];e>3?(o=g===r)&&(c=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=e<2&&p<a[1])?(i=0,y.v=r,y.n=a[1]):p<g&&(o=e<3||a[0]>r||r>g)&&(a[4]=e,a[5]=r,y.n=g,i=0))}if(o||e>1)return u;throw s=!0,r}return function(o,f,g){if(l>1)throw TypeError("Generator is already running");for(s&&1===f&&p(f,g),i=f,c=g;(n=i<2?t:c)||!s;){a||(i?i<3?(i>1&&(y.n=-1),p(i,c)):y.n=c:y.v=c);try{if(l=2,a){if(i||(o="next"),n=a[o]){if(!(n=n.call(a,c)))throw TypeError("iterator result is not an object");if(!n.done)return n;c=n.value,i<2&&(i=0)}else 1===i&&(n=a.return)&&n.call(a),i<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),i=1);a=t}else if((n=(s=y.n<0)?c:e.call(r,y))!==u)break}catch(e){a=t,i=1,c=e}finally{l=1}}return{value:n,done:s}}}(e,a,i),!0),f}var u={};function l(){}function f(){}function s(){}n=Object.getPrototypeOf;var y=[][a]?n(n([][a]())):(r(n={},a,function(){return this}),n),p=s.prototype=l.prototype=Object.create(y);function g(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,r(t,i,"GeneratorFunction")),t.prototype=Object.create(p),t}return f.prototype=s,r(p,"constructor",s),r(s,"constructor",f),f.displayName="GeneratorFunction",r(s,i,"GeneratorFunction"),r(p),r(p,i,"Generator"),r(p,a,function(){return this}),r(p,"toString",function(){return"[object Generator]"}),(e=function(){return{w:c,m:g}})()}function r(t,e,n,o){var a=Object.defineProperty;try{a({},"",{})}catch(t){a=0}r=function(t,e,n,o){function i(e,n){r(t,e,function(t){return this._invoke(e,n,t)})}e?a?a(t,e,{value:n,enumerable:!o,configurable:!o,writable:!o}):t[e]=n:(i("next",0),i("throw",1),i("return",2))},r(t,e,n,o)}function n(t,e,r){return e=a(e),function(t,e){if(e&&("object"==d(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,r||[],a(t).constructor):e.apply(t,r))}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(o=function(){return!!t})()}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&c(t,e)}function c(t,e){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},c(t,e)}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,g(n.key),n)}}function f(t,e,r){return e&&l(t.prototype,e),r&&l(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?s(Object(r),!0).forEach(function(e){p(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function p(t,e,r){return(e=g(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function g(t){var e=function(t){if("object"!=d(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=d(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==d(e)?e:e+""}function v(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return h(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){c=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw a}}}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}function b(t){return function(){return new m(t.apply(this,arguments))}}function m(t){var e,r;function n(e,r){try{var a=t[e](r),i=a.value,c=i instanceof S;Promise.resolve(c?i.v:i).then(function(r){if(c){var u="return"===e?"return":"next";if(!i.k||r.done)return n(u,r);r=t[u](r).value}o(a.done?"return":"normal",r)},function(t){n("throw",t)})}catch(t){o("throw",t)}}function o(t,o){switch(t){case"return":e.resolve({value:o,done:!0});break;case"throw":e.reject(o);break;default:e.resolve({value:o,done:!1})}(e=e.next)?n(e.key,e.arg):r=null}this._invoke=function(t,o){return new Promise(function(a,i){var c={key:t,arg:o,resolve:a,reject:i,next:null};r?r=r.next=c:(e=r=c,n(t,o))})},"function"!=typeof t.return&&(this.return=void 0)}function S(t,e){this.v=t,this.k=e}m.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},m.prototype.next=function(t){return this._invoke("next",t)},m.prototype.throw=function(t){return this._invoke("throw",t)},m.prototype.return=function(t){return this._invoke("return",t)};var P={__proto__:null},w=Reflect.defineProperty,x=Reflect.getOwnPropertyDescriptor,A=Reflect.ownKeys,O=Function.prototype,j=O.apply,_=O.bind,E=O.call,k=_.bind(E);P.uncurryThis=k;var I=_.bind(j);P.applyBind=I;var R=["ArrayOf","ArrayPrototypePush","ArrayPrototypeUnshift","MathHypot","MathMax","MathMin","StringFromCharCode","StringFromCodePoint","StringPrototypeConcat","TypedArrayOf"];function L(t){return"symbol"===d(t)?"Symbol".concat(t.description[7].toUpperCase()).concat(t.description.slice(8)):"".concat(t[0].toUpperCase()).concat(t.slice(1))}function T(t,e,r,n){var o=n.enumerable,a=n.get,i=n.set;w(t,"".concat(e,"Get").concat(r),{__proto__:null,value:k(a),enumerable:o}),void 0!==i&&w(t,"".concat(e,"Set").concat(r),{__proto__:null,value:k(i),enumerable:o})}function B(t,e,r){var n,o=v(A(t));try{for(o.s();!(n=o.n()).done;){var a=n.value,i=L(a),c=x(t,a);if("get"in c)T(e,r,i,c);else{var u="".concat(r).concat(i);w(e,u,y({__proto__:null},c)),R.includes(u)&&w(e,"".concat(u,"Apply"),{__proto__:null,value:I(c.value,t)})}}}catch(t){o.e(t)}finally{o.f()}}function z(t,e,r){var n,o=v(A(t));try{for(o.s();!(n=o.n()).done;){var a=n.value,i=L(a),c=x(t,a);if("get"in c)T(e,r,i,c);else{var u=c.value;"function"==typeof u&&(c.value=k(u));var l="".concat(r).concat(i);w(e,l,y({__proto__:null},c)),R.includes(l)&&w(e,"".concat(l,"Apply"),{__proto__:null,value:I(u)})}}}catch(t){o.e(t)}finally{o.f()}}["Proxy","globalThis"].forEach(function(t){P[t]=globalThis[t]}),[decodeURI,decodeURIComponent,encodeURI,encodeURIComponent].forEach(function(t){P[t.name]=t}),[escape,eval,unescape].forEach(function(t){P[t.name]=t}),["Atomics","JSON","Math","Proxy","Reflect"].forEach(function(t){B(globalThis[t],P,t)}),["AggregateError","Array","ArrayBuffer","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","Error","EvalError","FinalizationRegistry","Float32Array","Float64Array","Function","Int16Array","Int32Array","Int8Array","Map","Number","Object","RangeError","ReferenceError","RegExp","Set","String","Symbol","SyntaxError","TypeError","URIError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","WeakMap","WeakRef","WeakSet"].forEach(function(t){var e=globalThis[t];e&&(P[t]=e,B(e,P,t),z(e.prototype,P,"".concat(t,"Prototype")))}),["Promise"].forEach(function(t){var e=globalThis[t];P[t]=e,function(t,e,r){var n,o=v(A(t));try{for(o.s();!(n=o.n()).done;){var a=n.value,i=L(a),c=x(t,a);if("get"in c)T(e,r,i,c);else{var u=c.value;"function"==typeof u&&(c.value=u.bind(t));var l="".concat(r).concat(i);w(e,l,y({__proto__:null},c))}}}catch(t){o.e(t)}finally{o.f()}}(e,P,t),z(e.prototype,P,"".concat(t,"Prototype"))}),[{name:"TypedArray",original:Reflect.getPrototypeOf(Uint8Array)},{name:"ArrayIterator",original:{prototype:Reflect.getPrototypeOf(Array.prototype[Symbol.iterator]())}},{name:"StringIterator",original:{prototype:Reflect.getPrototypeOf(String.prototype[Symbol.iterator]())}}].forEach(function(t){var e=t.name,r=t.original;P[e]=r,z(r,P,e),z(r.prototype,P,"".concat(e,"Prototype"))}),P.IteratorPrototype=Reflect.getPrototypeOf(P.ArrayIteratorPrototype);var M=P.ArrayPrototypeForEach,C=P.ArrayPrototypePushApply,D=P.ArrayPrototypeSlice,N=P.FinalizationRegistry,F=P.FunctionPrototypeCall,W=P.Map,H=P.ObjectFreeze,U=P.ObjectSetPrototypeOf,G=P.RegExp,V=P.Set,Z=P.SymbolIterator,$=P.WeakMap,Y=P.WeakRef,q=P.WeakSet,J=function(t,e){var r=function(){return f(function e(r){u(this,e),this._iterator=t(r)},[{key:"next",value:function(){return e(this._iterator)}},{key:Z,value:function(){return this}}])}();return U(r.prototype,null),H(r.prototype),H(r),r};P.SafeArrayIterator=J(P.ArrayPrototypeSymbolIterator,P.ArrayIteratorPrototypeNext),P.SafeStringIterator=J(P.StringPrototypeSymbolIterator,P.StringIteratorPrototypeNext);var K=function(t,e){M(A(t),function(r){x(e,r)||w(e,r,y({__proto__:null},x(t,r)))})},Q=function(t,e){if(Z in t.prototype){var r,n=new t;M(A(t.prototype),function(o){if(!x(e.prototype,o)){var a,i=x(t.prototype,o);if("function"==typeof i.value&&0===i.value.length&&Z in(null!==(a=F(i.value,n))&&void 0!==a?a:{})){var c=k(i.value);r=r||k(c(n).next);var u=J(c,r);i.value=function(){return new u(this)}}w(e.prototype,o,y({__proto__:null},i))}})}else K(t.prototype,e.prototype);return K(t,e),U(e.prototype,null),H(e.prototype),H(e),e};P.makeSafe=Q,P.SafeMap=Q(W,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(W)),P.SafeWeakMap=Q($,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}($)),P.SafeSet=Q(V,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(V)),P.SafeWeakSet=Q(q,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(q)),P.SafeFinalizationRegistry=Q(N,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(N)),P.SafeWeakRef=Q(Y,function(t){function e(){return u(this,e),n(this,e,arguments)}return i(e,t),f(e)}(Y)),P.AsyncIteratorPrototype=P.ReflectGetPrototypeOf(b(e().m(function t(){return e().w(function(t){for(;;)if(0===t.n)return t.a(2)},t)}))).prototype,P.internalBinding=function(t){if("config"===t)return{hasIntl:!1};throw new Error('unknown module: "'.concat(t,'"'))},P._stringPrototypeReplaceAll=function(t,e,r){return"[object regexp]"===Object.prototype.toString.call(e).toLowerCase()?t.replace(e,r):t.replace(new G(e,"g"),r)},P.SafeArrayPrototypePushApply=function(t,e){var r=65536;if(r<e.length){var n=0;do{C(t,D(e,n,n=r)),r+=65536}while(r<e.length);e=D(e,n)}return C(t,e)},P.StringPrototypeReplaceAll=P.StringPrototypeReplaceAll||P._stringPrototypeReplaceAll,U(P,null),H(P),t.exports=P},590:(t,e,r)=>{var n=r(541),o=n.StringPrototypeCharCodeAt,a=n.StringPrototypeLastIndexOf,i=n.StringPrototypeSlice,c=r(394),u=c.CHAR_DOT,l=c.CHAR_FORWARD_SLASH,f=r(144).validateString;function s(t){return t===l}function y(t,e,r,n){for(var c="",f=0,s=-1,y=0,p=0,g=0;g<=t.length;++g){if(g<t.length)p=o(t,g);else{if(n(p))break;p=l}if(n(p)){if(s===g-1||1===y);else if(2===y){if(c.length<2||2!==f||o(c,c.length-1)!==u||o(c,c.length-2)!==u){if(c.length>2){var v=a(c,r);-1===v?(c="",f=0):f=(c=i(c,0,v)).length-1-a(c,r),s=g,y=0;continue}if(0!==c.length){c="",f=0,s=g,y=0;continue}}e&&(c+=c.length>0?"".concat(r,".."):"..",f=2)}else c.length>0?c+="".concat(r).concat(i(t,s+1,g)):c=i(t,s+1,g),f=g-s-1;s=g,y=0}else p===u&&-1!==y?++y:y=-1}return c}t.exports={isPosixPathSeparator:s,normalizeString:y,resolve:function(){if((0===arguments.length||1===arguments.length&&(""===(arguments.length<=0?void 0:arguments[0])||"."===(arguments.length<=0?void 0:arguments[0])))&&o("/",0)===l)return"/";for(var t="",e=!1,r=arguments.length-1;r>=0&&!e;r--){var n=r<0||arguments.length<=r?void 0:arguments[r];f(n,"paths[".concat(r,"]")),0!==n.length&&(t="".concat(n,"/").concat(t),e=o(n,0)===l)}return e||(t="".concat("/","/").concat(t),e=o("/",0)===l),t=y(t,!e,"/",s),e?"/".concat(t):t.length>0?t:"."}}},622:(t,e,r)=>{var n=r(541),o=n.StringPrototypeCharCodeAt,a=n.StringPrototypeIncludes,i=n.StringPrototypeReplace,c=r(836),u=r(394).CHAR_FORWARD_SLASH,l=r(590),f=/%/g,s=/\\/g,y=/\n/g,p=/\r/g,g=/\t/g;t.exports={pathToFileURL:function(t){var e=new c("file://"),r=l.resolve(t);return o(t,t.length-1)===u&&r[r.length-1]!==l.sep&&(r+="/"),e.pathname=function(t){return a(t,"%")&&(t=i(t,f,"%25")),a(t,"\\")&&(t=i(t,s,"%5C")),a(t,"\n")&&(t=i(t,y,"%0A")),a(t,"\r")&&(t=i(t,p,"%0D")),a(t,"\t")&&(t=i(t,g,"%09")),t}(r),e},URL:c}},629:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=r(541),a=o.ArrayIsArray,i=o.BigInt,c=o.Boolean,u=o.DatePrototype,l=o.Error,f=o.FunctionPrototype,s=o.MapPrototypeHas,y=o.Number,p=o.ObjectDefineProperty,g=o.ObjectGetOwnPropertyDescriptor,v=o.ObjectGetPrototypeOf,h=o.ObjectIsFrozen,d=o.ObjectPrototype,b=o.SetPrototypeHas,m=o.String,S=o.Symbol,P=o.SymbolToStringTag,w=o.globalThis,x=r(189).getConstructorName;function A(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),o=1;o<e;o++)r[o-1]=arguments[o];for(var a=0,i=r;a<i.length;a++){var c=i[a],u=w[c];if(u&&t instanceof u)return!0}for(;t;){if("object"!==n(t))return!1;if(r.indexOf(x(t))>=0)return!0;t=v(t)}return!1}function O(t){return function(e){if(!A(e,t.name))return!1;try{t.prototype.valueOf.call(e)}catch(t){return!1}return!0}}"object"!==n(w)&&(p(d,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete d.__magic__);var j=O(m),_=O(y),E=O(c),k=O(i),I=O(S);t.exports={isAsyncFunction:function(t){return"function"==typeof t&&f.toString.call(t).startsWith("async")},isGeneratorFunction:function(t){return"function"==typeof t&&f.toString.call(t).match(/^(async\s+)?function *\*/)},isAnyArrayBuffer:function(t){return A(t,"ArrayBuffer","SharedArrayBuffer")},isArrayBuffer:function(t){return A(t,"ArrayBuffer")},isArgumentsObject:function(t){if(null!==t&&"object"===n(t)&&!a(t)&&"number"==typeof t.length&&t.length===(0|t.length)&&t.length>=0){var e=g(t,"callee");return e&&!e.enumerable}return!1},isBoxedPrimitive:function(t){return _(t)||j(t)||E(t)||k(t)||I(t)},isDataView:function(t){return A(t,"DataView")},isExternal:function(t){return"object"===n(t)&&h(t)&&null==v(t)},isMap:function(t){if(!A(t,"Map"))return!1;try{s(t)}catch(t){return!1}return!0},isMapIterator:function(t){return"[object Map Iterator]"===d.toString.call(v(t))},isModuleNamespaceObject:function(t){try{return t&&"object"===n(t)&&"Module"===t[P]}catch(t){return!1}},isNativeError:function(t){return t instanceof l&&A(t,"Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","AggregateError")},isPromise:function(t){return A(t,"Promise")},isSet:function(t){if(!A(t,"Set"))return!1;try{b(t)}catch(t){return!1}return!0},isSetIterator:function(t){return"[object Set Iterator]"===d.toString.call(v(t))},isWeakMap:function(t){return A(t,"WeakMap")},isWeakSet:function(t){return A(t,"WeakSet")},isRegExp:function(t){return A(t,"RegExp")},isDate:function(t){if(A(t,"Date"))try{return u.getTime.call(t),!0}catch(t){}return!1},isTypedArray:function(t){return A(t,"Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array")},isStringObject:j,isNumberObject:_,isBooleanObject:E,isBigIntObject:k,isSymbolObject:I}},767:(t,e,r)=>{var n=r(541),o=n.ArrayPrototypeJoin,a=n.Error,i=n.ErrorIsError,c=n.FunctionPrototypeSymbolHasInstance,u=n.StringPrototypeReplace,l=n.SymbolFor,f=/\u001b\[\d\d?m/g;t.exports={customInspectSymbol:l("nodejs.util.inspect.custom"),isError:function(t){return(null==i?void 0:i(t))||c(a,t)},join:o,removeColors:function(t){return u(t,f,"")}}},784:(t,e,r)=>{function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function i(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(c=function(){return!!t})()}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},u(t)}function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}var f,s,y=r(541),p=y.ArrayIsArray,g=y.ArrayPrototypeIncludes,v=y.ArrayPrototypeIndexOf,h=y.ArrayPrototypeJoin,d=y.ArrayPrototypePush,b=y.ArrayPrototypeSlice,m=y.ArrayPrototypeSplice,S=y.Error,P=y.ErrorCaptureStackTrace,w=y.JSONStringify,x=y.ObjectDefineProperty,A=y.ReflectApply,O=y.RegExpPrototypeExec,j=y.SafeMap,_=y.SafeWeakMap,E=y.String,k=y.StringPrototypeEndsWith,I=y.StringPrototypeIncludes,R=y.StringPrototypeIndexOf,L=y.StringPrototypeSlice,T=y.StringPrototypeToLowerCase,B=y.Symbol,z=y.TypeError,M=B("kIsNodeError"),C=new j,D={},N=/^[A-Z][a-zA-Z0-9]*$/,F=["string","function","number","object","Function","Object","boolean","bigint","symbol"],W=new _,H=r(961),U=null;function G(t,e){var r=function(t){function r(){var t,n,a,l;(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,r),t=function(t,e,r){return e=u(e),function(t,e){if(e&&("object"==o(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,c()?Reflect.construct(e,r||[],u(t).constructor):e.apply(t,r))}(this,r),n=t,l=e,(a=i(a="code"))in n?Object.defineProperty(n,a,{value:l,enumerable:!0,configurable:!0,writable:!0}):n[a]=l;for(var f=arguments.length,s=new Array(f),y=0;y<f;y++)s[y]=arguments[y];return x(t,"message",{__proto__:null,value:Z(e,s,t),enumerable:!1,writable:!0,configurable:!0}),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&l(t,e)}(r,t),n=r,(f=[{key:"toString",value:function(){return"".concat(this.name," [").concat(e,"]: ").concat(this.message)}}])&&a(n.prototype,f),s&&a(n,s),Object.defineProperty(n,"prototype",{writable:!1}),n;// removed by dead control flow
|
|
17328
|
+
var n, f, s; }(t);return r}function V(t,e,r){C.set(t,e);var n=G(r,t);D[t]=n}function Z(t,e,r){var n=C.get(t);if("function"==typeof n)return H(n.length<=e.length,"Code: ".concat(t,"; The provided arguments length (").concat(e.length,") does not ")+"match the required ones (".concat(n.length,").")),A(n,r,e)}var $=B("kEnhanceStackBeforeInspector");function Y(t){if(null===t)return"null";if(void 0===t)return"undefined";switch(o(t)){case"bigint":return"type bigint (".concat(t,"n)");case"number":return 0===t?1/t==-1/0?"type number (-0)":"type number (0)":t!=t?"type number (NaN)":t===1/0?"type number (Infinity)":t===-1/0?"type number (-Infinity)":"type number (".concat(t,")");case"boolean":return t?"type boolean (true)":"type boolean (false)";case"symbol":return"type symbol (".concat(E(t),")");case"function":return"function ".concat(t.name);case"object":return t.constructor&&"name"in t.constructor?"an instance of ".concat(t.constructor.name):"".concat((U=U||r(285)).inspect(t,{depth:-1}));case"string":return t.length>28&&(t="".concat(L(t,0,25),"...")),-1===R(t,"'")?"type string ('".concat(t,"')"):"type string (".concat(w(t),")")}}function q(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"and";switch(t.length){case 0:return"";case 1:return"".concat(t[0]);case 2:return"".concat(t[0]," ").concat(e," ").concat(t[1]);case 3:return"".concat(t[0],", ").concat(t[1],", ").concat(e," ").concat(t[2]);default:return"".concat(h(b(t,0,-1),", "),", ").concat(e," ").concat(t[t.length-1])}}t.exports={codes:D,determineSpecificType:Y,E:V,formatList:q,getMessage:Z,hideStackFrames:function(t){function e(){try{for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return A(t,this,n)}catch(t){throw S.stackTraceLimit&&P(t,e),t}}return e.withoutStackTrace=t,e},isStackOverflowError:function(t){if(void 0===s)try{var e=function(){e()};e()}catch(t){s=t.message,f=t.name}return t&&t.name===f&&t.message===s},kEnhanceStackBeforeInspector:$,kIsNodeError:M,overrideStackTrace:W},V("ERR_INTERNAL_ASSERTION",function(t){var e="This is caused by either a bug in Node.js or incorrect usage of Node.js internals.\nPlease open an issue with this stack trace at https://github.com/nodejs/node/issues\n";return void 0===t?e:"".concat(t,"\n").concat(e)},S),V("ERR_INVALID_ARG_TYPE",function(t,e,r){H("string"==typeof t,"'name' must be a string"),p(e)||(e=[e]);var o="The ";if(k(t," argument"))o+="".concat(t," ");else{var a=I(t,".")?"property":"argument";o+='"'.concat(t,'" ').concat(a," ")}o+="must be ";var i,c=[],u=[],l=[],f=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,i=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw i}}}}(e);try{for(f.s();!(i=f.n()).done;){var s=i.value;H("string"==typeof s,"All expected entries have to be of type string"),g(F,s)?d(c,T(s)):null!==O(N,s)?d(u,s):(H("object"!==s,'The value "object" should be written as "Object"'),d(l,s))}}catch(t){f.e(t)}finally{f.f()}if(u.length>0){var y=v(c,"object");-1!==y&&(m(c,y,1),d(u,"Object"))}return c.length>0&&(o+="".concat(c.length>1?"one of type":"of type"," ").concat(q(c,"or")),(u.length>0||l.length>0)&&(o+=" or ")),u.length>0&&(o+="an instance of ".concat(q(u,"or")),l.length>0&&(o+=" or ")),l.length>0&&(l.length>1?o+="one of ".concat(q(l,"or")):(T(l[0])!==l[0]&&(o+="an "),o+="".concat(l[0]))),o+". Received ".concat(Y(r))},z)},836:t=>{t.exports=URL},961:(t,e,r)=>{var n;function o(){return n=null!=n?n:r(784).codes.ERR_INTERNAL_ASSERTION}function a(t,e){if(!t)throw new(o())(e)}a.fail=function(t){throw new(o())(t)},t.exports=a}},e={};return function r(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}(285)})());
|
|
16905
17329
|
|
|
16906
|
-
/***/ }
|
|
17330
|
+
/***/ },
|
|
16907
17331
|
|
|
16908
|
-
/***/ "./node_modules/vanillatoasts/vanillatoasts.js"
|
|
17332
|
+
/***/ "./node_modules/vanillatoasts/vanillatoasts.js"
|
|
16909
17333
|
/*!*****************************************************!*\
|
|
16910
17334
|
!*** ./node_modules/vanillatoasts/vanillatoasts.js ***!
|
|
16911
17335
|
\*****************************************************/
|
|
16912
|
-
|
|
17336
|
+
(module) {
|
|
16913
17337
|
|
|
16914
17338
|
(function (root, factory) {
|
|
16915
17339
|
try {
|
|
@@ -17087,18 +17511,18 @@ module.exports = function stringToParts(str) {
|
|
|
17087
17511
|
});
|
|
17088
17512
|
|
|
17089
17513
|
|
|
17090
|
-
/***/ }
|
|
17514
|
+
/***/ },
|
|
17091
17515
|
|
|
17092
|
-
/***/ "./package.json"
|
|
17516
|
+
/***/ "./package.json"
|
|
17093
17517
|
/*!**********************!*\
|
|
17094
17518
|
!*** ./package.json ***!
|
|
17095
17519
|
\**********************/
|
|
17096
|
-
|
|
17520
|
+
(module) {
|
|
17097
17521
|
|
|
17098
17522
|
"use strict";
|
|
17099
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@mongoosejs/studio","version":"0.1.
|
|
17523
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@mongoosejs/studio","version":"0.1.18","description":"A sleek, powerful MongoDB UI with built-in dashboarding and auth, seamlessly integrated with your Express, Vercel, or Netlify app.","homepage":"https://studio.mongoosejs.io/","repository":{"type":"git","url":"https://github.com/mongoosejs/studio"},"license":"Apache-2.0","dependencies":{"@ai-sdk/google":"2.x","@ai-sdk/openai":"2.x","@ai-sdk/anthropic":"2.x","ai":"5.x","archetype":"0.13.1","csv-stringify":"6.3.0","ejson":"^2.2.3","extrovert":"^0.2.0","marked":"15.0.12","node-inspect-extracted":"3.x","tailwindcss":"3.4.0","vanillatoasts":"^1.6.0","vue":"3.x","webpack":"5.x"},"peerDependencies":{"mongoose":"7.x || 8.x || ^9.0.0"},"devDependencies":{"@masteringjs/eslint-config":"0.1.1","axios":"1.2.2","dedent":"^1.6.0","eslint":"9.30.0","express":"4.x","mocha":"10.2.0","mongoose":"9.x"},"scripts":{"lint":"eslint .","tailwind":"tailwindcss -o ./frontend/public/tw.css","tailwind:watch":"tailwindcss -o ./frontend/public/tw.css --watch","test":"mocha test/*.test.js"}}');
|
|
17100
17524
|
|
|
17101
|
-
/***/ }
|
|
17525
|
+
/***/ }
|
|
17102
17526
|
|
|
17103
17527
|
/******/ });
|
|
17104
17528
|
/************************************************************************/
|
|
@@ -17112,6 +17536,12 @@ module.exports = /*#__PURE__*/JSON.parse('{"name":"@mongoosejs/studio","version"
|
|
|
17112
17536
|
/******/ if (cachedModule !== undefined) {
|
|
17113
17537
|
/******/ return cachedModule.exports;
|
|
17114
17538
|
/******/ }
|
|
17539
|
+
/******/ // Check if module exists (development only)
|
|
17540
|
+
/******/ if (__webpack_modules__[moduleId] === undefined) {
|
|
17541
|
+
/******/ var e = new Error("Cannot find module '" + moduleId + "'");
|
|
17542
|
+
/******/ e.code = 'MODULE_NOT_FOUND';
|
|
17543
|
+
/******/ throw e;
|
|
17544
|
+
/******/ }
|
|
17115
17545
|
/******/ // Create a new module (and put it into the cache)
|
|
17116
17546
|
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
17117
17547
|
/******/ // no module.id needed
|