"use strict"; exports.id = 5114; exports.ids = [5114]; exports.modules = { /***/ 5114: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": () => (/* binding */ CreateAccountForm) }); // 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/frontend/fetchApi.js var fetchApi = __webpack_require__(6729); ;// CONCATENATED MODULE: ./functions/frontend/submitNewUserForm.js // @ts-check /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** * # Submit New Image Form * @param {object} param0 * @param {*} param0.e * @param {React.Dispatch>} param0.setLoading * @param {import("@/package-shared/types").UserType} [param0.user] * @param {*} [param0.image] * @param {*} [param0.query] */ async function submitNewUserForm({ e , setLoading , user , image , query , }) { //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// setLoading(true); //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// let formBody = { first_name: e.target["first_name"].value, last_name: e.target["last_name"].value, email: user ? null : e.target["email_address"].value, username: user ? null : e.target["username"].value, password: user ? null : e.target["password"].value, image: image ? image : null }; // @ts-ignore if (query?.invite) formBody["inviteObject"] = query; //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// const apiRoute = user ? "/api/updateUser" : "/api/registerUser"; (0,fetchApi/* default */.Z)(apiRoute, { method: "post", body: formBody }, user ? true : false).then((res)=>{ console.log(res); if (!user && res?.insertId) { localStorage.setItem("id", res.insertId); (0,fetchApi/* default */.Z)("/api/loginUser", { method: "post", body: { email: formBody.email, password: formBody.password } }).then((_res)=>{ console.log(_res); localStorage.setItem("csrf", _res.user.csrf_k); localStorage.setItem("stripe_id", _res.user.stripe_id); localStorage.setItem("user", JSON.stringify(_res.userPayload)); window.location.href = "/admin"; }); } else if (user && res?.user) { // fetchApi("/api/reauthUser") window.location.reload(); } else if (res?.msg) { alert(res.msg); } }).catch((err)=>{ console.log(err); }).finally(()=>{ setTimeout(()=>{ setLoading(false); }, 2000); }); } /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ // EXTERNAL MODULE: ./components/general/FormAlertBlock.jsx var FormAlertBlock = __webpack_require__(7037); // EXTERNAL MODULE: ./components/general/LoadingBlock.jsx var LoadingBlock = __webpack_require__(5264); // EXTERNAL MODULE: ./components/pages/login/SocialLogin.jsx + 3 modules var SocialLogin = __webpack_require__(8374); ;// CONCATENATED MODULE: ./components/pages/create-account/CreateAccountForm.jsx // @ts-check /** * ============================================================================== * Imports * ============================================================================== */ //////////////////////////////////////// //////////////////////////////////////// /** @type {any} */ let timeout; /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** * ============================================================================== * Main Component { Functional } * ============================================================================== * @param {Object} props - Server props * @param {import("@/package-shared/types").UserType} [props.user] * @param {import("@/package-shared/types").CreateAccountQueryType} [props.query] * @param {any} [props.image] */ function CreateAccountForm({ user , query , image }) { /** * Get Contexts * * @abstract { React.useContext } */ //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// /** * Javascript Variables * * @abstract Non hook variables and functions */ const defaultEmail = query?.email ? query.email : user?.email ? user.email : ""; //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// /** * React Hooks * * @abstract { useState, useEffect, useRef, etc ... } */ /** @type {[ alert: string | null, setAlert: React.Dispatch> ]} */ // @ts-ignore const [alert, setAlert] = external_react_default().useState(null); const [loading, setLoading] = external_react_default().useState(false); //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// /** * Function Return * * @abstract Main Function Return */ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "relative w-full max-w-2xl flex-col items-start", children: [ loading && /*#__PURE__*/ jsx_runtime_.jsx(LoadingBlock/* default */.Z, {}), !user && /*#__PURE__*/ (0,jsx_runtime_.jsxs)((external_react_default()).Fragment, { children: [ /*#__PURE__*/ jsx_runtime_.jsx("hr", { className: "opacity-0" }), /*#__PURE__*/ jsx_runtime_.jsx(SocialLogin/* default */.Z, { user: null, userType: "admin", setLoading: setLoading }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "w-full justify-center relative", children: [ /*#__PURE__*/ jsx_runtime_.jsx("span", { className: "bg-white dark:bg-slate-800 px-3 relative z-10", children: "OR" }), /*#__PURE__*/ jsx_runtime_.jsx("hr", { className: "absolute" }) ] }) ] }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("form", { className: "w-full flex flex-col items-start gap-4 relative", onSubmit: (e)=>{ e.preventDefault(); submitNewUserForm({ e, setLoading, user, image, query }); }, children: [ alert && /*#__PURE__*/ jsx_runtime_.jsx(FormAlertBlock/* default */.Z, { message: alert }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "flex flex-col items-start gap-0.5 w-full", children: [ /*#__PURE__*/ jsx_runtime_.jsx("label", { htmlFor: "first_name", children: "First Name" }), /*#__PURE__*/ jsx_runtime_.jsx("input", { type: "text", name: "first_name", id: "first_name", placeholder: "First Name", autoComplete: "given-name", onInput: (e)=>{ /** @type {HTMLInputElement} */ // @ts-ignore const inputEl = e.target; if (inputEl.value.match(/./)) { inputEl.classList.remove("warning"); setAlert(null); } else { inputEl.classList.add("warning"); } }, defaultValue: user ? user.first_name : "", required: true }) ] }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "flex flex-col items-start gap-0.5 w-full", children: [ /*#__PURE__*/ jsx_runtime_.jsx("label", { htmlFor: "last_name", children: "Last Name" }), /*#__PURE__*/ jsx_runtime_.jsx("input", { type: "text", name: "last_name", id: "last_name", placeholder: "Last Name", autoComplete: "family-name", onInput: (e)=>{ /** @type {HTMLInputElement} */ // @ts-ignore const inputEl = e.target; if (inputEl.value.match(/./)) { inputEl.classList.remove("warning"); setAlert(null); } else { inputEl.classList.add("warning"); } }, defaultValue: user ? user.last_name : "", required: true }) ] }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "flex flex-col items-start gap-0.5 w-full", children: [ /*#__PURE__*/ jsx_runtime_.jsx("label", { htmlFor: "username", children: "Username" }), /*#__PURE__*/ jsx_runtime_.jsx("input", { type: "text", name: "username", id: "username", placeholder: "Username", autoComplete: "username", onInput: (e)=>{ /** @type {HTMLInputElement} */ // @ts-ignore const inputEl = e.target; if (inputEl.value.match(/./)) { inputEl.classList.remove("warning"); setAlert(null); } else { inputEl.classList.add("warning"); } window.clearTimeout(timeout); timeout = setTimeout(()=>{ (0,fetchApi/* default */.Z)(`/api/checkDuplicateData?type=username&value=${inputEl.value}&tableName=users`).then((res)=>{ console.log(res); if (res?.result) { setAlert("Username Already Exists"); inputEl.classList.add("warning"); } else { setAlert(null); inputEl.classList.remove("warning"); } }); }, 300); }, defaultValue: user ? user.username : "", required: user ? false : true, readOnly: user ? true : false }) ] }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "flex flex-col items-start gap-0.5 w-full", children: [ /*#__PURE__*/ jsx_runtime_.jsx("label", { htmlFor: "email_address", children: "Email Address" }), /*#__PURE__*/ jsx_runtime_.jsx("input", { type: "email", name: "email_address", id: "email_address", placeholder: "Email Address", autoComplete: "email", onInput: (e)=>{ /** @type {HTMLInputElement} */ // @ts-ignore const inputEl = e.target; window.clearTimeout(timeout); timeout = setTimeout(()=>{ (0,fetchApi/* default */.Z)(`/api/checkDuplicateData?type=email&value=${inputEl.value}&tableName=users`).then((res)=>{ console.log(res); if (res?.result) { setAlert("Email Already Exists"); inputEl.classList.add("warning"); } else { setAlert(null); inputEl.classList.remove("warning"); } }); }, 300); }, defaultValue: defaultEmail, required: true, readOnly: user ? true : false }) ] }), !user && /*#__PURE__*/ (0,jsx_runtime_.jsxs)((external_react_default()).Fragment, { children: [ /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "flex flex-col items-start gap-0.5 w-full", children: [ /*#__PURE__*/ jsx_runtime_.jsx("label", { htmlFor: "password", children: "Password" }), /*#__PURE__*/ jsx_runtime_.jsx("input", { type: "password", name: "password", id: "password", placeholder: "Password", required: true }) ] }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", { className: "flex flex-col items-start gap-0.5 w-full", children: [ /*#__PURE__*/ jsx_runtime_.jsx("label", { htmlFor: "confirm_password", children: "Confirm Password" }), /*#__PURE__*/ jsx_runtime_.jsx("input", { type: "password", name: "confirm_password", id: "confirm_password", placeholder: "Confirm Password", onInput: (e)=>{ /** @type {HTMLInputElement} */ // @ts-ignore const inputEl = e.target; let passwordInput = inputEl.closest("form")?.["password"].value; let passwordRepeatInput = inputEl.value; if (passwordInput === passwordRepeatInput) { inputEl.classList.remove("warning"); } else { inputEl.classList.add("warning"); } }, required: true }) ] }), /*#__PURE__*/ (0,jsx_runtime_.jsxs)("span", { className: "text-sm", children: [ 'By clicking "Create Account" you agree to our', " ", /*#__PURE__*/ jsx_runtime_.jsx("a", { href: "/terms", target: "_blank", className: "font-bold", children: "Terms and Conditions" }) ] }) ] }), /*#__PURE__*/ jsx_runtime_.jsx("button", { type: "submit", className: "w-full", children: user ? /*#__PURE__*/ jsx_runtime_.jsx("span", { children: "Update Account Info" }) : /*#__PURE__*/ jsx_runtime_.jsx("span", { children: "Create Account" }) }), !user && /*#__PURE__*/ jsx_runtime_.jsx((external_react_default()).Fragment, { children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)("span", { className: "text-sm", children: [ "Already Have an Account?", " ", /*#__PURE__*/ jsx_runtime_.jsx("a", { href: "/login", className: "font-bold", children: "Login" }) ] }) }) ] }) ] }); //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// } /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /***/ }) }; ;