{"version":3,"file":"app-30fbfc08.981ca8458d389c9a476a.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAOA;AAJA;AAAA;AACA;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxDA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;;AAIA;AACA;AAmBA;AAXA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAMA;AACA;AACA;AACA;AACA;AACA;AAGA;;AAGA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;ACvNA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA","sources":["webpack://latinera/./sources/dialogs/change-password-success.js","webpack://latinera/./sources/dialogs/change-password.js","webpack://latinera/./sources/dialogs/change-password-success.html","webpack://latinera/./sources/dialogs/change-password.html"],"sourcesContent":["// Define the view-model for the \"change-password-success\" dialog\n\n// Import library modules\nimport { inject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n\n// Import service modules\nimport EventService from \"services/event\";\n\n// Define internal parameters\nconst eventsData = [\n { name: \"sessionClosing\" }\n];\n\n\n// Export the \"ChangePasswordSuccess\" class\n@inject(DialogController, EventService)\nexport class ChangePasswordSuccess {\n\n // Local attributes\n i18nParams = i18nParams;\n formData = null;\n\n constructor(dialogController, eventService) {\n this.dialogController = dialogController;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"changePasswordSuccess\",\n eventService: this.eventService,\n eventsData\n });\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Event handlers\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Define the view-model for the \"change-password\" dialog\n\n// Import library modules\nimport { Validator, ValidateResult } from \"aurelia-validation\";\nimport { computedFrom, inject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { capitalizeFirst } from \"utilities/string\";\nimport { pickProperties } from \"utilities/object\";\nimport { pause } from \"utilities/promise\";\nimport { clone } from \"utilities/etc\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\nimport { autohidePasswordAfterMs } from \"parameters/time\";\nimport {\n rawChangePasswordFormData as defaultRawFormData\n} from \"parameters/user\";\n\n// Import service modules\nimport EventService from \"services/event\";\nimport UserService from \"services/user\";\n\n// Define internal parameters\nconst allowedUniqueIds = [ \"oldPassword\", \"newPassword\", \"newPassword2\" ];\nconst formPropertyNames = [ \"oldPassword\", \"newPassword\" ];\nconst eventsData = [\n { name: \"sessionClosing\" }\n];\n\n\n// Export the \"ChangePassword\" class\n@inject(\n Validator, \n DialogController, \n EventService, \n UserService\n)\nexport class ChangePassword {\n\n // Local attributes\n rawFormData = clone(defaultRawFormData);\n formData = {};\n savedFormData = {};\n formDataValid = true;\n passwordFieldsType = \"password\";\n formErrorsData = [];\n serverErrorsData = [];\n fieldsEditedStatuses = {};\n i18nParams = i18nParams;\n\n constructor(\n validator, \n dialogController, \n eventService, \n userService\n ) {\n this.validator = validator;\n this.dialogController = dialogController;\n this.eventService = eventService;\n this.userService = userService;\n }\n\n\n // Lifecycle methods\n async bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"changePassword\",\n eventService: this.eventService,\n eventsData\n });\n\n await this.validateFormData();\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Getter and setter methods\n @computedFrom(\"fieldsEditedStatuses.changePasswordOldPassword\")\n get showOldPasswordDanger() {\n return this.fieldsEditedStatuses.changePasswordOldPassword || false;\n }\n @computedFrom(\"fieldsEditedStatuses.changePasswordNewPassword\")\n get showNewPasswordDanger() {\n return this.fieldsEditedStatuses.changePasswordNewPassword || false;\n }\n @computedFrom(\"fieldsEditedStatuses.changePasswordNewPassword2\")\n get showNewPassword2Danger() {\n return this.fieldsEditedStatuses.changePasswordNewPassword2 || false;\n }\n\n @computedFrom(\n \"rawFormData.oldPassword\", \n \"rawFormData.newPassword\", \n \"rawFormData.newPassword2\"\n )\n get showToggleClearTextPasswordButton() {\n const { \n oldPassword = \"\",\n newPassword = \"\", \n newPassword2 = \"\" \n } = this.rawFormData || {};\n return oldPassword.length > 0 ||\n newPassword.length > 0 || \n newPassword2.length > 0;\n }\n\n\n // Core methods\n async validateFormData() {\n this.formData = pickProperties(this.rawFormData, formPropertyNames);\n this.formErrorsData = await this.validator\n .validateObject(this.rawFormData);\n this.updateFormDataValid();\n }\n\n updateFormDataValid() {\n this.formDataValid = this.formErrorsData.length === 0 &&\n this.serverErrorsData.length === 0;\n }\n\n async changePassword() {\n this.savedFormData = this.formData;\n try {\n await this.userService.changePassword(this.formData);\n } catch(error) {\n switch (error.name) {\n case \"InvalidInput\":\n console.warn(`Error while changing the user's password: ` +\n `specified old password does not match current password`);\n this.setServerError(\"oldPasswordMismatch\");\n this.oldPasswordInputElement.focus();\n break;\n default:\n console.error(\"Unexpected error while changing the user's password\",\n error);\n this.setServerError(\"unexpectedError\");\n }\n return;\n }\n this.clearServerErrors();\n this.dialogController.ok();\n }\n\n async togglePasswordFieldType() {\n this.passwordFieldsType =\n this.passwordFieldsType === \"password\" ? \"text\" : \"password\";\n if (this.passwordFieldsType === \"text\") {\n await pause(autohidePasswordAfterMs);\n this.passwordFieldsType = \"password\";\n }\n }\n\n setServerError(errorKey) {\n this.serverErrorsData = [ ...this.serverErrorsData, {\n error: new ValidateResult(errorKey, this.rawFormData, \"server\", false)\n }];\n this.updateFormDataValid();\n }\n clearServerErrors() {\n this.serverErrorsData = [];\n this.updateFormDataValid();\n }\n\n\n // Event filters\n filterEventByUniqueId({ uniqueId = \"\" }) {\n return allowedUniqueIds.includes(uniqueId);\n }\n\n // Event handlers\n async handleFormFieldInputEvent(fieldName = \"\") {\n if (!fieldName) {\n throw new Error(`Missing required \"fieldName\" argument`);\n }\n this.clearServerErrors();\n const uniqueId = `changePassword${capitalizeFirst(fieldName)}`;\n const fieldValue = this.rawFormData[fieldName] || \"\";\n if (fieldValue.length > 0) {\n this.eventService.publish({\n eventName: \"validateValue\",\n eventData: { uniqueId }\n });\n } else {\n this.fieldsEditedStatuses[uniqueId] = false;\n }\n await this.validateFormData();\n }\n async handleFormFieldBlurEvent(fieldName = \"\") {\n if (!fieldName) {\n throw new Error(`Missing required \"fieldName\" argument`);\n }\n const uniqueId = `changePassword${capitalizeFirst(fieldName)}`;\n this.fieldsEditedStatuses[uniqueId] = true;\n const fieldValue = this.rawFormData[fieldName] || \"\";\n if (fieldValue.length > 0) {\n this.eventService.publish({\n eventName: \"validateValue\",\n eventData: { uniqueId }\n });\n }\n await this.validateFormData();\n }\n\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Module\nvar code = \"\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\";\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}