"use strict";
(() => {
var exports = {};
exports.id = 4916;
exports.ids = [4916];
exports.modules = {

/***/ 8858:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);

// EXPORTS
__webpack_require__.d(__webpack_exports__, {
  "default": () => (/* binding */ UsersPage),
  "getServerSideProps": () => (/* binding */ getServerSideProps)
});

// EXTERNAL MODULE: external "react/jsx-runtime"
var jsx_runtime_ = __webpack_require__(997);
// EXTERNAL MODULE: external "react"
var external_react_ = __webpack_require__(6689);
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
// EXTERNAL MODULE: ./functions/backend/suAdminUserAuth.js
var suAdminUserAuth = __webpack_require__(1503);
var suAdminUserAuth_default = /*#__PURE__*/__webpack_require__.n(suAdminUserAuth);
// EXTERNAL MODULE: ./layouts/SuAdminLayout.jsx + 2 modules
var SuAdminLayout = __webpack_require__(8282);
// EXTERNAL MODULE: ./components/su/components/UserCard.jsx
var UserCard = __webpack_require__(1336);
// EXTERNAL MODULE: ./components/general/BackButton.jsx
var BackButton = __webpack_require__(1781);
// EXTERNAL MODULE: ./components/general/LoadingBlock.jsx
var LoadingBlock = __webpack_require__(5264);
// EXTERNAL MODULE: ./functions/frontend/fetchApi.js
var fetchApi = __webpack_require__(6729);
// EXTERNAL MODULE: external "@mui/icons-material/StyleTwoTone"
var StyleTwoTone_ = __webpack_require__(723);
var StyleTwoTone_default = /*#__PURE__*/__webpack_require__.n(StyleTwoTone_);
;// CONCATENATED MODULE: ./components/su/components/UserBackups.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 




//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
/**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {object} props - Server props
 * @param {import("@/package-shared/types").UserType} props.user
 * @param {number} props.refresh
 * @param {React.Dispatch<React.SetStateAction<number>>} props.setRefresh
 */ function UserBackups({ user , refresh , setRefresh  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Javascript Variables
     *
     * @abstract Non hook variables and functions
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * React Hooks
     *
     * @abstract { useState, useEffect, useRef, etc ... }
     */ const [loading, setLoading] = external_react_default().useState(false);
    /** @type {[ backups: string[], setBackups: React.Dispatch<React.SetStateAction<string[]>> ]} */ // @ts-ignore
    const [backups, setBackups] = external_react_default().useState([]);
    external_react_default().useEffect(()=>{
        (0,fetchApi/* default */.Z)("/api/admin/getUserBackups", {
            method: "post",
            body: {
                user
            }
        }).then((res)=>{
            setBackups(res.backups);
        });
    }, [
        refresh
    ]);
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Function Return
     *
     * @description Main Function Return
     */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("section", {
        className: "paper",
        children: [
            /*#__PURE__*/ jsx_runtime_.jsx("h2", {
                className: "text-xl m-0",
                children: "User Backups"
            }),
            !backups && /*#__PURE__*/ jsx_runtime_.jsx(LoadingBlock/* default */.Z, {
                width: "20px",
                position: "relative"
            }),
            backups && !backups[0] && /*#__PURE__*/ jsx_runtime_.jsx("div", {
                children: "This user has no backups"
            }),
            backups && backups[0] && backups.sort((a, b)=>{
                if (parseInt(a) > parseInt(b)) return -1;
                return 1;
            }).map((backup, index)=>{
                const backupDate = new Date(parseInt(backup));
                return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("a", {
                    href: `/su/users/${user.id}/${backup}`,
                    className: "card w-full items-center",
                    children: [
                        /*#__PURE__*/ jsx_runtime_.jsx((StyleTwoTone_default()), {
                            color: "inherit",
                            className: "opacity-40 text-slate-500"
                        }),
                        /*#__PURE__*/ jsx_runtime_.jsx("b", {
                            children: "Backup:"
                        }),
                        /*#__PURE__*/ jsx_runtime_.jsx("span", {
                            children: backupDate.toString()
                        })
                    ]
                }, backup);
            })
        ]
    });
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
} //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////

// EXTERNAL MODULE: ./components/general/CodeBlock.jsx
var CodeBlock = __webpack_require__(1095);
// EXTERNAL MODULE: external "@mui/icons-material/FolderCopyTwoTone"
var FolderCopyTwoTone_ = __webpack_require__(8398);
var FolderCopyTwoTone_default = /*#__PURE__*/__webpack_require__.n(FolderCopyTwoTone_);
;// CONCATENATED MODULE: external "@mui/icons-material/InsertDriveFileTwoTone"
const InsertDriveFileTwoTone_namespaceObject = require("@mui/icons-material/InsertDriveFileTwoTone");
var InsertDriveFileTwoTone_default = /*#__PURE__*/__webpack_require__.n(InsertDriveFileTwoTone_namespaceObject);
;// CONCATENATED MODULE: external "@mui/icons-material/KeyboardArrowDownRounded"
const KeyboardArrowDownRounded_namespaceObject = require("@mui/icons-material/KeyboardArrowDownRounded");
var KeyboardArrowDownRounded_default = /*#__PURE__*/__webpack_require__.n(KeyboardArrowDownRounded_namespaceObject);
;// CONCATENATED MODULE: ./components/su/components/UserSingleFile.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 






//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
/**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {object} props - Server props
 * @param {object} props.user
 * @param {import("@/package-shared/types").UserFileObject2} props.file
 * @param {import("@/package-shared/types").UserFileObject} props.activeFile
 * @param {React.Dispatch<React.SetStateAction<import("@/package-shared/types").UserFileObject>>} props.setActiveFile
 */ function UserSingleFile({ user , file , activeFile , setActiveFile ,  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Javascript Variables
     *
     * @abstract Non hook variables and functions
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * React Hooks
     *
     * @abstract { useState, useEffect, useRef, etc ... }
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Function Return
     *
     * @description Main Function Return
     */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("button", {
        className: "justify-start gap-4" + (activeFile?.path === `${file.root}/${file.name}` ? " dark" : " light-gray"),
        onClick: (e)=>{
            (0,fetchApi/* default */.Z)("/api/admin/grabFile", {
                method: "post",
                body: {
                    user,
                    type: "file",
                    path: `${file.root}/${file.name}`
                }
            }).then((res)=>{
                if (res.success) {
                    try {
                        setActiveFile({
                            title: file.name,
                            path: `${file.root}/${file.name}`,
                            data: JSON.stringify(JSON.parse(res.data), null, 4)
                        });
                    } catch (error) {
                        setActiveFile({
                            title: file.name,
                            path: `${file.root}/${file.name}`,
                            data: res.data
                        });
                    }
                }
            });
        },
        children: [
            /*#__PURE__*/ jsx_runtime_.jsx((InsertDriveFileTwoTone_default()), {
                fontSize: "small",
                className: "text-slate-400"
            }),
            file.name
        ]
    });
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
} //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////

;// CONCATENATED MODULE: ./components/su/components/UserFolder.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 







//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
/**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {object} props - Server props
 * @param {object} props.user
 * @param {import("@/package-shared/types").UserFileObject2} props.file
 * @param {import("@/package-shared/types").UserFileObject} props.activeFile
 * @param {React.Dispatch<React.SetStateAction<import("@/package-shared/types").UserFileObject>>} props.setActiveFile
 */ function UserFolder({ user , file , activeFile , setActiveFile  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Javascript Variables
     *
     * @abstract Non hook variables and functions
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * React Hooks
     *
     * @abstract { useState, useEffect, useRef, etc ... }
     */ const [files, setFiles] = external_react_default().useState(null);
    const [loading, setLoading] = external_react_default().useState(false);
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Function Return
     *
     * @description Main Function Return
     */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
        className: "flex-col w-full items-start relative",
        children: [
            /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
                children: [
                    /*#__PURE__*/ jsx_runtime_.jsx((FolderCopyTwoTone_default()), {
                        fontSize: "small",
                        className: "text-slate-400"
                    }),
                    file.name,
                    /*#__PURE__*/ jsx_runtime_.jsx((KeyboardArrowDownRounded_default()), {
                        className: "ml-auto absolute right-2"
                    })
                ]
            }),
            file.content && /*#__PURE__*/ jsx_runtime_.jsx("div", {
                className: "flex-col w-full pl-4 items-start ml-2",
                style: {
                    borderLeft: "1px solid var(--slate-200)"
                },
                children: file.content.map((nest, index)=>{
                    if (nest?.type?.match(/file/i)) {
                        return /*#__PURE__*/ jsx_runtime_.jsx(UserSingleFile, {
                            user: user,
                            file: nest,
                            activeFile: activeFile,
                            setActiveFile: setActiveFile
                        }, index);
                    } else {
                        return /*#__PURE__*/ jsx_runtime_.jsx(UserFolder, {
                            user: user,
                            file: nest,
                            activeFile: activeFile,
                            setActiveFile: setActiveFile
                        }, index);
                    }
                })
            })
        ]
    });
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
} //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////

;// CONCATENATED MODULE: ./components/su/components/UserFiles.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 




//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
/**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {object} props - Server props
 * @param {import("@/package-shared/types").UserType} props.user
 * @param {any[]} props.rootFilesArray
 */ function UserFiles({ user , rootFilesArray  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Javascript Variables
     *
     * @abstract Non hook variables and functions
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * React Hooks
     *
     * @abstract { useState, useEffect, useRef, etc ... }
     */ /** @type {[ activeFile: import("@/package-shared/types").UserFileObject, setActiveFile: React.Dispatch<React.SetStateAction<import("@/package-shared/types").UserFileObject>> ]} */ // @ts-ignore
    const [activeFile, setActiveFile] = external_react_default().useState(null);
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Function Return
     *
     * @description Main Function Return
     */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("section", {
        className: "paper",
        children: [
            /*#__PURE__*/ jsx_runtime_.jsx("h3", {
                className: "text-lg m-0",
                children: "User Files"
            }),
            /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
                className: "w-full items-start max-w-7xl",
                children: [
                    /*#__PURE__*/ jsx_runtime_.jsx("div", {
                        className: "flex-col items-stretch w-[40%]",
                        children: rootFilesArray.map((/** @type {import("@/package-shared/types").UserFileObject2} */ file, index)=>{
                            if (file?.type?.match(/file/)) {
                                return /*#__PURE__*/ jsx_runtime_.jsx(UserSingleFile, {
                                    user: user,
                                    file: file,
                                    activeFile: activeFile,
                                    setActiveFile: setActiveFile
                                }, index);
                            } else {
                                return /*#__PURE__*/ jsx_runtime_.jsx(UserFolder, {
                                    user: user,
                                    file: file,
                                    activeFile: activeFile,
                                    setActiveFile: setActiveFile
                                }, index);
                            }
                        })
                    }),
                    /*#__PURE__*/ jsx_runtime_.jsx("div", {
                        className: "grow flex-col items-start justify-start w-[60%] h-full -mt-4",
                        children: activeFile && /*#__PURE__*/ jsx_runtime_.jsx(CodeBlock/* default */.Z, {
                            content: activeFile.data || "",
                            language: "javascript"
                        })
                    })
                ]
            })
        ]
    });
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
} //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////

// EXTERNAL MODULE: ./components/general/Breadcrumbs.jsx
var Breadcrumbs = __webpack_require__(424);
// EXTERNAL MODULE: external "@mui/material/styles"
var styles_ = __webpack_require__(8442);
// EXTERNAL MODULE: external "@mui/material/Table"
var Table_ = __webpack_require__(9181);
var Table_default = /*#__PURE__*/__webpack_require__.n(Table_);
// EXTERNAL MODULE: external "@mui/material/TableBody"
var TableBody_ = __webpack_require__(8823);
var TableBody_default = /*#__PURE__*/__webpack_require__.n(TableBody_);
// EXTERNAL MODULE: external "@mui/material/TableCell"
var TableCell_ = __webpack_require__(5612);
var TableCell_default = /*#__PURE__*/__webpack_require__.n(TableCell_);
// EXTERNAL MODULE: external "@mui/material/TableContainer"
var TableContainer_ = __webpack_require__(443);
var TableContainer_default = /*#__PURE__*/__webpack_require__.n(TableContainer_);
// EXTERNAL MODULE: external "@mui/material/TableHead"
var TableHead_ = __webpack_require__(5953);
var TableHead_default = /*#__PURE__*/__webpack_require__.n(TableHead_);
// EXTERNAL MODULE: external "@mui/material/TableRow"
var TableRow_ = __webpack_require__(4848);
var TableRow_default = /*#__PURE__*/__webpack_require__.n(TableRow_);
// EXTERNAL MODULE: external "@mui/material/Paper"
var Paper_ = __webpack_require__(1168);
var Paper_default = /*#__PURE__*/__webpack_require__.n(Paper_);
;// CONCATENATED MODULE: ./components/su/components/UserDbShellQueryResult.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 









/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ const StyledTableCell = (0,styles_.styled)((TableCell_default()))(({ theme  })=>({
        [`&.${TableCell_.tableCellClasses.head}`]: {
            backgroundColor: "var(--slate-800)",
            color: "white"
        },
        [`&.${TableCell_.tableCellClasses.body}`]: {
        }
    }));
/** ****************************************************************************** */ /**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {Object} props - Server props
 * @param {any} props.data
 * @param {import("@/package-shared/types").UserType} [props.user]
 */ function UserDbShellQueryResult({ data , user  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    try {
        /**
         * Javascript Variables
         *
         * @abstract Non hook variables and functions
         */ const headers = Object.keys(data[0]);
        ////////////////////////////////////////
        ////////////////////////////////////////
        ////////////////////////////////////////
        /**
         * React Hooks
         *
         * @abstract { useState, useEffect, useRef, etc ... }
         */ ////////////////////////////////////////
        ////////////////////////////////////////
        ////////////////////////////////////////
        /**
         * Function Return
         *
         * @abstract Main Function Return
         */ return /*#__PURE__*/ jsx_runtime_.jsx((external_react_default()).Fragment, {
            children: /*#__PURE__*/ jsx_runtime_.jsx("div", {
                className: "p-4 bg-slate-200 rounded-md overflow-hidden w-full max-w-6xl",
                children: /*#__PURE__*/ jsx_runtime_.jsx((TableContainer_default()), {
                    component: (Paper_default()),
                    sx: {
                        width: "100%"
                    },
                    children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)((Table_default()), {
                        sx: {
                            minWidth: 650
                        },
                        "aria-label": "simple table",
                        children: [
                            /*#__PURE__*/ jsx_runtime_.jsx((TableHead_default()), {
                                children: /*#__PURE__*/ jsx_runtime_.jsx((TableRow_default()), {
                                    children: headers && headers[0] && headers.map((header, index)=>{
                                        return /*#__PURE__*/ jsx_runtime_.jsx(StyledTableCell, {
                                            align: "left",
                                            children: header
                                        }, index + 1);
                                    })
                                })
                            }),
                            /*#__PURE__*/ jsx_runtime_.jsx((TableBody_default()), {
                                children: data && data[0] && data.map((/** @type {any} */ dataObject, /** @type {Number} */ index)=>{
                                    return /*#__PURE__*/ jsx_runtime_.jsx((TableRow_default()), {
                                        sx: {
                                            "&:last-child td, &:last-child th": {
                                                border: 0
                                            }
                                        },
                                        children: headers.map((header, _index)=>{
                                            return /*#__PURE__*/ jsx_runtime_.jsx(StyledTableCell, {
                                                align: "left",
                                                children: dataObject[header]
                                            }, _index + 1);
                                        })
                                    }, index + 1);
                                })
                            })
                        ]
                    })
                })
            })
        });
    ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    } catch (error) {
        return /*#__PURE__*/ jsx_runtime_.jsx((external_react_default()).Fragment, {
            children: /*#__PURE__*/ jsx_runtime_.jsx("span", {
                children: "No results"
            })
        });
    }
} /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */ 

// EXTERNAL MODULE: ./components/form/FormSelect.jsx
var FormSelect = __webpack_require__(4114);
;// CONCATENATED MODULE: ./components/su/components/UserDbShell.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 







/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {Object} props - Server props
 * @param {import("@/package-shared/types").UserType} props.user
 * @param {string[]} props.databases
 */ function UserDbShell({ user , databases  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    try {
        /**
         * Javascript Variables
         *
         * @abstract Non hook variables and functions
         */ ////////////////////////////////////////
        ////////////////////////////////////////
        ////////////////////////////////////////
        /**
         * React Hooks
         *
         * @abstract { useState, useEffect, useRef, etc ... }
         */ /** @type {React.MutableRefObject<HTMLDivElement | undefined>} */ const sqlEditorRef = external_react_default().useRef();
        /** @type {React.MutableRefObject<AceAjax.Editor | undefined>} */ const editorRef = external_react_default().useRef();
        const dbRef = external_react_default().useRef(databases[0]);
        const [loading, setLoading] = external_react_default().useState(false);
        const [data, setData] = external_react_default().useState(false);
        const [refresh, setRefresh] = external_react_default().useState(0);
        const [targetDb, setTargetDb] = external_react_default().useState(databases[0]);
        function runQuery() {
            setLoading(true);
            const query = editorRef.current ? editorRef.current.getValue() : null;
            if (!query?.match(/./)) return;
            const formattedQuery = query.replace(/^--.*/gm, "").replace(/\n|\r|\n\r/gm, "").replace(/ {2,}/g, " ");
            (0,fetchApi/* default */.Z)("/api/admin/runUserDbQuery", {
                method: "post",
                body: {
                    database: dbRef.current,
                    query: formattedQuery
                }
            }, true).then((res)=>{
                if (res.success) {
                    setData(res.result);
                } else if (res.msg) {
                    window.alert(res.msg);
                }
                setTimeout(()=>{
                    setLoading(false);
                }, 500);
            });
        }
        external_react_default().useEffect(()=>{
            if (!ace?.edit) {
                setTimeout(()=>{
                    setRefresh((prev)=>prev + 1);
                }, 1000);
                return;
            }
            const editor = ace.edit("ace-editor-wrapper");
            editor.setOptions({
                mode: "ace/mode/mysql",
                theme: "ace/theme/twilight",
                value: `SELECT * FROM table_name`,
                placeholder: "Type an SQL query",
                enableBasicAutocompletion: true,
                enableLiveAutocompletion: true
            });
            editor.commands.addCommand({
                name: "myCommand",
                bindKey: {
                    win: "Ctrl-Enter",
                    mac: "Command-Enter"
                },
                exec: function(editor) {
                    runQuery();
                },
                readOnly: true
            });
            editorRef.current = editor;
        }, [
            refresh
        ]);
        /** @type {[dbTables: string[], setDbTables: React.Dispatch<React.SetStateAction<string[]>> ]} */ // @ts-ignore
        const [dbTables, setDbTables] = external_react_default().useState([]);
        external_react_default().useEffect(()=>{
            (0,fetchApi/* default */.Z)(`/api/admin/getTablesForUserDatabase?database=${targetDb}`).then((res)=>{
                if (res.success) {
                    setDbTables(res.tables);
                }
            });
        }, [
            targetDb,
            refresh
        ]);
        ////////////////////////////////////////
        ////////////////////////////////////////
        ////////////////////////////////////////
        /**
         * Function Return
         *
         * @abstract Main Function Return
         */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
            className: "paper w-full",
            children: [
                /*#__PURE__*/ jsx_runtime_.jsx("h3", {
                    className: "text-lg m-0",
                    children: /*#__PURE__*/ jsx_runtime_.jsx("span", {
                        children: "Database Shell"
                    })
                }),
                /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
                    children: [
                        /*#__PURE__*/ jsx_runtime_.jsx(FormSelect/* default */.Z, {
                            selectOptions: databases.map((db)=>{
                                return {
                                    payload: db,
                                    title: db?.replace(new RegExp(`datasquirel_user_${user.id}_`), "")
                                };
                            }),
                            name: "select-database",
                            onChangeHandler: (e)=>{
                                setTargetDb(e.target.value);
                                dbRef.current = e.target.value;
                            },
                            title: "Databases"
                        }),
                        targetDb && dbTables && /*#__PURE__*/ jsx_runtime_.jsx(FormSelect/* default */.Z, {
                            selectOptions: dbTables.map((table)=>{
                                return {
                                    payload: table,
                                    title: table
                                };
                            }),
                            name: "select-database-table",
                            title: "Tables"
                        })
                    ]
                }),
                /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
                    className: "w-full flex-col relative",
                    children: [
                        /*#__PURE__*/ jsx_runtime_.jsx("div", {
                            // @ts-ignore
                            ref: sqlEditorRef,
                            id: "ace-editor-wrapper",
                            style: {
                                height: "100px"
                            }
                        }),
                        /*#__PURE__*/ (0,jsx_runtime_.jsxs)("button", {
                            className: "absolute right-4 bottom-4" + (loading ? " pointer-events-none opacity-70" : ""),
                            onClick: (e)=>{
                                runQuery();
                            },
                            children: [
                                loading && /*#__PURE__*/ jsx_runtime_.jsx(LoadingBlock/* default */.Z, {
                                    position: "relative",
                                    width: "15px",
                                    borderWidth: "3px",
                                    style: {
                                        backgroundColor: "transparent"
                                    }
                                }),
                                loading ? "Running Query ..." : "Run Query"
                            ]
                        })
                    ]
                }),
                data && !loading && /*#__PURE__*/ jsx_runtime_.jsx(UserDbShellQueryResult, {
                    data: data,
                    user: user
                })
            ]
        });
    ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    } catch (error) {
        console.log(error);
        return /*#__PURE__*/ jsx_runtime_.jsx((external_react_default()).Fragment, {
            children: /*#__PURE__*/ jsx_runtime_.jsx("section", {
                className: "card",
                children: /*#__PURE__*/ jsx_runtime_.jsx("h2", {
                    className: "text-xl m-0",
                    children: "Shell not available at this time"
                })
            })
        });
    }
} /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */ 

;// CONCATENATED MODULE: ./components/su/components/UserData.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 






//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
/**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {object} props - Server props
 * @param {import("@/package-shared/types").UserType} props.user
 * @param {number} props.refresh
 * @param {React.Dispatch<React.SetStateAction<number>>} [props.setRefresh]
 */ function UserData({ user , refresh , setRefresh  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Javascript Variables
     *
     * @abstract Non hook variables and functions
     */ ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * React Hooks
     *
     * @abstract { useState, useEffect, useRef, etc ... }
     */ const [loading, setLoading] = external_react_default().useState(false);
    const [userData, setUserData] = external_react_default().useState(null);
    const [userDbs, setUserDbs] = external_react_default().useState(null);
    external_react_default().useEffect(()=>{
        (0,fetchApi/* default */.Z)("/api/admin/getUserData", {
            method: "post",
            body: {
                user
            }
        }).then((res)=>{
            console.log(res);
            if (res.success) {
                setUserData(res.data);
                setUserDbs(res.databases);
            }
        });
    }, [
        refresh
    ]);
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////
    /**
     * Function Return
     *
     * @description Main Function Return
     */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
        className: "paper w-full",
        children: [
            /*#__PURE__*/ jsx_runtime_.jsx("h2", {
                className: "text-xl m-0",
                children: "User Data"
            }),
            userData && /*#__PURE__*/ jsx_runtime_.jsx(UserFiles, {
                user: user,
                rootFilesArray: userData
            }),
            userDbs && /*#__PURE__*/ jsx_runtime_.jsx(UserDbShell, {
                user: user,
                databases: userDbs
            })
        ]
    });
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
} //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////

;// CONCATENATED MODULE: ./components/su/SuSingleUserContent.jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 







/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {Object} props - Server props
 * @param {any} props.data
 */ function SuSingleUserContent({ data  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    /**
     * Javascript Variables
     *
     * @abstract Non hook variables and functions
     */ const user = data.user;
    ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    /**
     * React Hooks
     *
     * @abstract { useState, useEffect, useRef, etc ... }
     */ const [refresh, setRefresh] = external_react_default().useState(0);
    const [addBackupLoading, setAddBackupLoading] = external_react_default().useState(false);
    ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    /**
     * Function Return
     *
     * @abstract Main Function Return
     */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)((external_react_default()).Fragment, {
        children: [
            /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
                className: "w-full justify-between",
                children: [
                    /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
                        children: [
                            /*#__PURE__*/ jsx_runtime_.jsx(BackButton/* default */.Z, {}),
                            /*#__PURE__*/ (0,jsx_runtime_.jsxs)("h1", {
                                className: "text-3xl m-0",
                                children: [
                                    user.first_name,
                                    " ",
                                    user.last_name
                                ]
                            }),
                            /*#__PURE__*/ jsx_runtime_.jsx("span", {
                                className: "info w-auto gray font-normal",
                                children: user.email
                            })
                        ]
                    }),
                    /*#__PURE__*/ jsx_runtime_.jsx("div", {
                        children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)("button", {
                            onClick: (e)=>{
                                if (window.confirm(`Create a new backup for ${user.first_name}?`)) {
                                    setAddBackupLoading(true);
                                    (0,fetchApi/* default */.Z)("/api/admin/addUserBackup", {
                                        method: "post",
                                        body: {
                                            user
                                        }
                                    }).then((res)=>{
                                        console.log(res);
                                        if (res.success) {
                                            setRefresh((prev)=>prev + 1);
                                        }
                                        setTimeout(()=>{
                                            setAddBackupLoading(false);
                                        }, 1000);
                                    });
                                }
                            },
                            className: "relative",
                            children: [
                                addBackupLoading && /*#__PURE__*/ jsx_runtime_.jsx(LoadingBlock/* default */.Z, {
                                    width: "20px"
                                }),
                                "Backup User"
                            ]
                        })
                    })
                ]
            }),
            /*#__PURE__*/ jsx_runtime_.jsx(UserCard/* default */.Z, {
                userObject: user,
                userPage: true
            }),
            /*#__PURE__*/ jsx_runtime_.jsx(UserBackups, {
                user: user,
                refresh: refresh,
                setRefresh: setRefresh
            }),
            /*#__PURE__*/ jsx_runtime_.jsx(UserData, {
                user: user,
                refresh: refresh,
                setRefresh: setRefresh
            })
        ]
    });
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
} /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */ 

// EXTERNAL MODULE: ./package-shared/utils/backend/global-db/DB_HANDLER.js
var DB_HANDLER = __webpack_require__(9395);
var DB_HANDLER_default = /*#__PURE__*/__webpack_require__.n(DB_HANDLER);
;// CONCATENATED MODULE: ./pages/su/users/[single].jsx
// @ts-check
/**
 * ==============================================================================
 * Imports
 * ==============================================================================
 */ 





/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
 * ==============================================================================
 * Main Component { Functional }
 * ==============================================================================
 * @param {Object} props - Server props
 * @param {import("@/package-shared/types").UserType} props.user
 * @param {any} props.data
 */ function UsersPage({ user , data  }) {
    /**
     * Get Contexts
     *
     * @abstract { React.useContext }
     */ ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    /**
     * Javascript Variables
     *
     * @abstract Non hook variables and functions
     */ const pageTitle = "User Dashboard | Datasquirel";
    const pageDescription = "Welcome to your data app";
    let head = /*#__PURE__*/ (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
        children: [
            /*#__PURE__*/ jsx_runtime_.jsx("title", {
                children: pageTitle
            }),
            /*#__PURE__*/ jsx_runtime_.jsx("meta", {
                name: "description",
                content: pageDescription
            }),
            /*#__PURE__*/ (0,jsx_runtime_.jsxs)((external_react_default()).Fragment, {
                children: [
                    /*#__PURE__*/ jsx_runtime_.jsx("script", {
                        src: "https://cdnjs.cloudflare.com/ajax/libs/ace/1.22.0/ace.min.js",
                        integrity: "sha512-q6CTB0jS+VuJnSct82rVcWlI06LGzNjaG3CWenHWVUncRvc4UQMFkA3a5Ip880xr+lBx38FcHDclOxPdSg+sBw==",
                        crossOrigin: "anonymous",
                        referrerPolicy: "no-referrer"
                    }),
                    /*#__PURE__*/ jsx_runtime_.jsx("script", {
                        src: "https://cdnjs.cloudflare.com/ajax/libs/ace/1.22.0/ext-language_tools.min.js",
                        integrity: "sha512-6g6cvocV7eT/J8L44lL8gJKqq9onqQeYGgJO0DmrsYFcCfRl6wYkYA/KHS768r4QVTB4JxsCcMQ9gIezxpTCZw==",
                        crossOrigin: "anonymous",
                        referrerPolicy: "no-referrer"
                    })
                ]
            })
        ]
    });
    ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    /**
     * React Hooks
     *
     * @abstract { useState, useEffect, useRef, etc ... }
     */ ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    /**
     * Function Return
     *
     * @abstract Main Function Return
     */ return /*#__PURE__*/ jsx_runtime_.jsx(SuAdminLayout/* default */.Z, {
        head: head,
        user: user,
        children: /*#__PURE__*/ jsx_runtime_.jsx(SuSingleUserContent, {
            data: data
        })
    });
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
}
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
 * ==============================================================================
 * Server Side Props or Static Props
 * ==============================================================================
 * @type {import("next").GetServerSideProps}
 */ async function getServerSideProps({ req , res , query  }) {
    /**
     * User Auth
     *
     * @description User Auth
     */ const suAdminUser = await suAdminUserAuth_default()(req);
    if (!suAdminUser?.logged_in_status) {
        return {
            redirect: {
                destination: `/su/login`,
                permanent: false
            }
        };
    }
    /**
     * Page/Site Data Data Fetching
     *
     * @description Fetch data on the server before returning
     */ const user = await DB_HANDLER_default()(`SELECT * FROM users WHERE id='${query.single}'`);
    if (!user?.[0]) return {
        redirect: {
            destination: "/su/users",
            permanent: false
        }
    };
    ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    /**
     * Server props return
     *
     * @description Return data fetched on the server side
     */ return {
        props: {
            user: suAdminUser,
            data: {
                user: user?.[0] || {}
            }
        }
    };
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
}


/***/ }),

/***/ 3257:
/***/ ((module) => {

module.exports = require("@mui/icons-material/ArrowBackIosRounded");

/***/ }),

/***/ 9318:
/***/ ((module) => {

module.exports = require("@mui/icons-material/BackupTwoTone");

/***/ }),

/***/ 6843:
/***/ ((module) => {

module.exports = require("@mui/icons-material/ContentCopy");

/***/ }),

/***/ 386:
/***/ ((module) => {

module.exports = require("@mui/icons-material/CottageTwoTone");

/***/ }),

/***/ 6817:
/***/ ((module) => {

module.exports = require("@mui/icons-material/DocumentScannerTwoTone");

/***/ }),

/***/ 6094:
/***/ ((module) => {

module.exports = require("@mui/icons-material/ErrorTwoTone");

/***/ }),

/***/ 8398:
/***/ ((module) => {

module.exports = require("@mui/icons-material/FolderCopyTwoTone");

/***/ }),

/***/ 6547:
/***/ ((module) => {

module.exports = require("@mui/icons-material/LockPersonTwoTone");

/***/ }),

/***/ 5557:
/***/ ((module) => {

module.exports = require("@mui/icons-material/MenuBookTwoTone");

/***/ }),

/***/ 8245:
/***/ ((module) => {

module.exports = require("@mui/icons-material/PeopleAltTwoTone");

/***/ }),

/***/ 723:
/***/ ((module) => {

module.exports = require("@mui/icons-material/StyleTwoTone");

/***/ }),

/***/ 415:
/***/ ((module) => {

module.exports = require("@mui/icons-material/TerminalTwoTone");

/***/ }),

/***/ 1168:
/***/ ((module) => {

module.exports = require("@mui/material/Paper");

/***/ }),

/***/ 9174:
/***/ ((module) => {

module.exports = require("@mui/material/Snackbar");

/***/ }),

/***/ 9181:
/***/ ((module) => {

module.exports = require("@mui/material/Table");

/***/ }),

/***/ 8823:
/***/ ((module) => {

module.exports = require("@mui/material/TableBody");

/***/ }),

/***/ 5612:
/***/ ((module) => {

module.exports = require("@mui/material/TableCell");

/***/ }),

/***/ 443:
/***/ ((module) => {

module.exports = require("@mui/material/TableContainer");

/***/ }),

/***/ 5953:
/***/ ((module) => {

module.exports = require("@mui/material/TableHead");

/***/ }),

/***/ 4848:
/***/ ((module) => {

module.exports = require("@mui/material/TableRow");

/***/ }),

/***/ 8442:
/***/ ((module) => {

module.exports = require("@mui/material/styles");

/***/ }),

/***/ 2423:
/***/ ((module) => {

module.exports = require("lucide-react");

/***/ }),

/***/ 968:
/***/ ((module) => {

module.exports = require("next/head");

/***/ }),

/***/ 6689:
/***/ ((module) => {

module.exports = require("react");

/***/ }),

/***/ 997:
/***/ ((module) => {

module.exports = require("react/jsx-runtime");

/***/ }),

/***/ 2261:
/***/ ((module) => {

module.exports = require("serverless-mysql");

/***/ }),

/***/ 4300:
/***/ ((module) => {

module.exports = require("buffer");

/***/ }),

/***/ 6113:
/***/ ((module) => {

module.exports = require("crypto");

/***/ }),

/***/ 7147:
/***/ ((module) => {

module.exports = require("fs");

/***/ }),

/***/ 3685:
/***/ ((module) => {

module.exports = require("http");

/***/ }),

/***/ 1017:
/***/ ((module) => {

module.exports = require("path");

/***/ })

};
;

// load runtime
var __webpack_require__ = require("../../../webpack-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [4017,8313,5264,6729,4480,424,1781,4114,1503,5313,1336,2434], () => (__webpack_exec__(8858)));
module.exports = __webpack_exports__;

})();