{"version":3,"sources":["webpack:///./src/view/user-login/UserLogin.view.vue?4541","webpack:///./src/view/user-login/UserLogin.view.vue?e2e8","webpack:///./src/view/user-login/UserLogin.view.vue","webpack:///./src/component/Loading.component.vue?b166","webpack:///./src/component/Loading.component.vue?96b4","webpack:///./src/component/Loading.component.vue","webpack:///./src/view/user/User.view.vue?ebd0","webpack:///./src/api/client/user/User.client.ts","webpack:///./src/view/user/User.view.vue?e322","webpack:///./src/view/user/User.view.vue","webpack:///./src/component/Loading.component.vue?e8db"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_PageTitleComponent","_component_ButtonComponent","_component_UserMessageComponent","_component_PageContentComponent","class","default","title","ref","type","$event","usernameField","onKeyup","onUsernameEnter","passwordField","onPasswordEnter","onClick","onLogIn","_","details","userMessage","name","components","PageContentComponent","PageTitleComponent","ButtonComponent","UserMessageComponent","setup","router","usernameElement","passwordElement","isLoading","none","logIn","value","result","Error","error","message","success","push","path","length","focus","__exports__","key","props","String","_hoisted_4","_hoisted_5","_hoisted_6","_component_LoadingComponent","user","username","displayCreatedAt","displayCreatedAtDifference","displayUserType","onLogOut","reference","get","response","data","userClient","LoadingComponent","authDetails","getAuthDetails","createdAt","format","fromNow","Unknown","Admin","Basic","getUserByReference","logOut"],"mappings":"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","file":"js/user.893121dd.js","sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, withKeys as _withKeys, withDirectives as _withDirectives, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"strong\", null, \"Username\", -1)\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"strong\", null, \"Password\", -1)\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Log In\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PageTitleComponent = _resolveComponent(\"PageTitleComponent\")!\n const _component_ButtonComponent = _resolveComponent(\"ButtonComponent\")!\n const _component_UserMessageComponent = _resolveComponent(\"UserMessageComponent\")!\n const _component_PageContentComponent = _resolveComponent(\"PageContentComponent\")!\n\n return (_openBlock(), _createBlock(_component_PageContentComponent, { class: \"user-login-view\" }, {\n default: _withCtx(() => [\n _createVNode(_component_PageTitleComponent, { title: \"Login\" }),\n _createElementVNode(\"label\", null, [\n _hoisted_1,\n _withDirectives(_createElementVNode(\"input\", {\n ref: \"usernameElement\",\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.usernameField) = $event)),\n onKeyup: _cache[1] || (_cache[1] = _withKeys(\n//@ts-ignore\n(...args) => (_ctx.onUsernameEnter && _ctx.onUsernameEnter(...args)), [\"enter\"]))\n }, null, 544), [\n [_vModelText, _ctx.usernameField]\n ])\n ]),\n _createElementVNode(\"label\", null, [\n _hoisted_2,\n _withDirectives(_createElementVNode(\"input\", {\n ref: \"passwordElement\",\n type: \"password\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.passwordField) = $event)),\n onKeyup: _cache[3] || (_cache[3] = _withKeys(\n//@ts-ignore\n(...args) => (_ctx.onPasswordEnter && _ctx.onPasswordEnter(...args)), [\"enter\"]))\n }, null, 544), [\n [_vModelText, _ctx.passwordField]\n ])\n ]),\n _createElementVNode(\"label\", null, [\n _createVNode(_component_ButtonComponent, { onClick: _ctx.onLogIn }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _createVNode(_component_UserMessageComponent, { details: _ctx.userMessage }, null, 8, [\"details\"])\n ]),\n _: 1\n }))\n}","\nimport { defineComponent, ref } from 'vue';\nimport { useRouter } from 'vue-router';\n\nimport PageContentComponent from '@/component/layout/PageContent.component.vue';\nimport PageTitleComponent from '@/component/layout/PageTitle.component.vue';\nimport ButtonComponent from '@/component/Button.component.vue';\nimport UserMessageComponent, { UserMessage } from '@/component/UserMessage.component.vue';\n\nimport { userService } from '@/service/user/User.service';\n\nexport default defineComponent({\n name: 'UserLoginView',\n\n components: {\n PageContentComponent,\n PageTitleComponent,\n ButtonComponent,\n UserMessageComponent,\n },\n\n setup() {\n const router = useRouter();\n\n const usernameElement = ref(null);\n const passwordElement = ref(null);\n\n const usernameField = ref('');\n const passwordField = ref('');\n\n const isLoading = ref(false);\n\n const userMessage = ref(UserMessage.none());\n\n const logIn = async function () {\n isLoading.value = true;\n userMessage.value = UserMessage.none();\n\n const result = await userService.logIn(usernameField.value, passwordField.value);\n if (result instanceof Error) {\n isLoading.value = false;\n userMessage.value = UserMessage.error(result.message || 'Unable to log in; please try refreshing the page.');\n return;\n }\n\n userMessage.value = UserMessage.success('Successfully logged in.');\n\n router.push({\n path: '/user',\n });\n };\n\n return {\n usernameElement,\n passwordElement,\n\n usernameField,\n passwordField,\n\n isLoading,\n userMessage,\n\n async onUsernameEnter() {\n if (usernameField.value.length === 0)\n return;\n\n if (passwordField.value.length === 0) {\n passwordElement.value?.focus();\n return;\n }\n\n await logIn();\n },\n\n async onPasswordEnter() {\n if (passwordField.value.length === 0)\n return;\n\n if (usernameField.value.length === 0) {\n usernameElement.value?.focus();\n return;\n }\n\n await logIn();\n },\n\n async onLogIn() {\n await logIn();\n },\n }\n },\n});\n","import { render } from \"./UserLogin.view.vue?vue&type=template&id=ae890b34&ts=true\"\nimport script from \"./UserLogin.view.vue?vue&type=script&lang=ts\"\nexport * from \"./UserLogin.view.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/wjbaker.com/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"loading-component\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"spinner\" }, null, -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"message\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n (_ctx.message)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.message), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n name: 'LoadingComponent',\n\n props: {\n message: String,\n },\n\n setup() {},\n});\n","import { render } from \"./Loading.component.vue?vue&type=template&id=ff3b2ec8&ts=true\"\nimport script from \"./Loading.component.vue?vue&type=script&lang=ts\"\nexport * from \"./Loading.component.vue?vue&type=script&lang=ts\"\n\nimport \"./Loading.component.vue?vue&type=style&index=0&id=ff3b2ec8&lang=scss\"\n\nimport exportComponent from \"/home/wjbaker.com/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"strong\", null, \"Username:\", -1)\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"strong\", null, \"Created:\", -1)\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"strong\", null, \"User Type:\", -1)\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"Log Out\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PageTitleComponent = _resolveComponent(\"PageTitleComponent\")!\n const _component_LoadingComponent = _resolveComponent(\"LoadingComponent\")!\n const _component_UserMessageComponent = _resolveComponent(\"UserMessageComponent\")!\n const _component_ButtonComponent = _resolveComponent(\"ButtonComponent\")!\n const _component_PageContentComponent = _resolveComponent(\"PageContentComponent\")!\n\n return (_openBlock(), _createBlock(_component_PageContentComponent, { class: \"user-view\" }, {\n default: _withCtx(() => [\n _createVNode(_component_PageTitleComponent, { title: \"Your User\" }),\n (_ctx.isLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_LoadingComponent, { message: \"Loading Your User Details\" })\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_UserMessageComponent, { details: _ctx.userMessage }, null, 8, [\"details\"]),\n (_ctx.user !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.user.username), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.displayCreatedAt) + \" (\" + _toDisplayString(_ctx.displayCreatedAtDifference) + \") \", 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_5,\n _createTextVNode(\" \" + _toDisplayString(_ctx.displayUserType), 1)\n ]),\n _createVNode(_component_ButtonComponent, { onClick: _ctx.onLogOut }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n}","import { apiClient, handleError } from '@/api/ApiClient';\n\nimport { ApiResultResponse } from '@/api/type/ApiResponse.type';\nimport { GetUserByResponse } from '@/api/client/user/type/GetUserBy.type';\n\nclass UserClient {\n\n public async getUserByReference(reference: string): Promise {\n try {\n const response = await apiClient.get>(`/user/${reference}`);\n\n return response.data.result;\n }\n catch (error) {\n return handleError(error);\n }\n }\n}\n\nexport const userClient = new UserClient();","\nimport { computed, defineComponent, onMounted, ref } from 'vue';\nimport { useRouter } from 'vue-router';\nimport dayjs from 'dayjs';\n\nimport PageContentComponent from '@/component/layout/PageContent.component.vue';\nimport PageTitleComponent from '@/component/layout/PageTitle.component.vue';\nimport ButtonComponent from '@/component/Button.component.vue';\nimport LoadingComponent from '@/component/Loading.component.vue';\nimport UserMessageComponent, { UserMessage } from '@/component/UserMessage.component.vue';\n\nimport { userClient } from '@/api/client/user/User.client';\nimport { userService } from '@/service/user/User.service';\n\nimport { User, UserType } from '@/model/User.model';\n\nexport default defineComponent({\n name: 'UserView',\n\n components: {\n PageContentComponent,\n PageTitleComponent,\n ButtonComponent,\n LoadingComponent,\n UserMessageComponent,\n },\n\n setup() {\n const router = useRouter();\n\n const authDetails = userService.getAuthDetails();\n\n const user = ref(null);\n const isLoading = ref(false);\n\n const userMessage = ref(UserMessage.none());\n\n const displayCreatedAt = computed(() => user.value?.createdAt.format('DD/MM/YYYY') ?? '');\n const displayCreatedAtDifference = computed(() => user.value?.createdAt.fromNow() ?? '');\n\n const displayUserType = computed(() => {\n switch (user.value?.type) {\n case UserType.Unknown:\n return 'Unknown';\n case UserType.Admin:\n return 'Admin';\n case UserType.Basic:\n return 'Basic';\n default:\n return 'Unknown';\n }\n });\n\n onMounted(async () => {\n if (authDetails.value === null) {\n userMessage.value = UserMessage.error('You must be logged in to view your user details.');\n return;\n }\n\n isLoading.value = true;\n userMessage.value = UserMessage.none();\n\n const result = await userClient.getUserByReference(authDetails.value.user.reference);\n if (result instanceof Error) {\n isLoading.value = false;\n userMessage.value = UserMessage.error(result.message || 'Unable to retrieve your user details; please try refreshing the page.');\n return;\n }\n\n user.value = {\n reference: result.reference,\n username: result.username,\n createdAt: dayjs(result.createdAt),\n type: result.type,\n };\n\n isLoading.value = false;\n userMessage.value = UserMessage.none();\n });\n\n return {\n user,\n isLoading,\n userMessage,\n displayCreatedAt,\n displayCreatedAtDifference,\n displayUserType,\n\n async onLogOut() {\n await userService.logOut();\n\n router.push({\n path: '/user/login',\n });\n },\n }\n },\n});\n","import { render } from \"./User.view.vue?vue&type=template&id=1a922358&ts=true\"\nimport script from \"./User.view.vue?vue&type=script&lang=ts\"\nexport * from \"./User.view.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/wjbaker.com/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Loading.component.vue?vue&type=style&index=0&id=ff3b2ec8&lang=scss\""],"sourceRoot":""}