{"version":3,"file":"app-9e23e17a.981ca8458d389c9a476a.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAMA;AAHA;AAAA;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACvDA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAMA;AAHA;AAAA;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACvDA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAMA;AAHA;AAAA;AAIA;AACA;AACA;AACA;;AAGA;AACA;AAKA;AAJA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC7EA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAMA;AAHA;AAAA;AAIA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACxEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAMA;AAHA;AAAA;AAIA;AACA;AACA;AACA;;AAGA;AACA;AAMA;AALA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACjFA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAMA;AAHA;AAAA;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACvDA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAQA;AALA;AAAA;AACA;AACA;AAIA;AACA;AACA;;AAGA;AACA;AAGA;AAFA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC5EA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;;AAIA;AACA;AAcA;AARA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAOA;AACA;AACA;;AAGA;AACA;AAGA;AAFA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC1KA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAGA;AACA;AAMA;AAHA;AAAA;AAIA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACnDA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAGA;AACA;AAOA;AAJA;AAAA;AACA;AAIA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AChHA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAQA;AALA;AAAA;AACA;AACA;AAIA;AACA;AACA;;AAGA;AACA;AAGA;AAFA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAMA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AAGA;AAGA;AAGA;;AAIA;AACA;AACA;AAAA;;AAIA;AACA;AA+BA;AArBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAMA;AAGA;;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;AC1WA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC1BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AClCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzCA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;;AAKA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAmBA;AATA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnQA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;;AAIA;AACA;AAwBA;AAbA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAGA;AAFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAGA;AACA;AAEA;AADA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AADA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAFA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AADA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClRA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AAAA;;AAIA;AACA;AAiBA;AATA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAEA;AAAA;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;AClLA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA","sources":["webpack://latinera/./sources/dialogs/confirm-clear-local-cache.js","webpack://latinera/./sources/dialogs/confirm-close-unsaved-activity.js","webpack://latinera/./sources/dialogs/confirm-delete-analysis-activity.js","webpack://latinera/./sources/dialogs/confirm-delete-task-activity.js","webpack://latinera/./sources/dialogs/confirm-delete-task-analysis-activity.js","webpack://latinera/./sources/dialogs/confirm-log-out.js","webpack://latinera/./sources/dialogs/confirm-replace-out-sentence-text.js","webpack://latinera/./sources/dialogs/confirm-report-definition.js","webpack://latinera/./sources/dialogs/confirm-reset-password.js","webpack://latinera/./sources/dialogs/confirm-sign-up.js","webpack://latinera/./sources/dialogs/confirm-unreport-definition.js","webpack://latinera/./sources/dialogs/create-analysis-activity.js","webpack://latinera/./sources/dialogs/create-analysis-activity/create-analysis-activity-from-existing-in-sentence.js","webpack://latinera/./sources/dialogs/create-analysis-activity/create-analysis-activity-from-in-sentence-text-hint.js","webpack://latinera/./sources/dialogs/create-analysis-activity/create-task-analysis-activity-from-existing-in-sentence.js","webpack://latinera/./sources/dialogs/create-analysis-activity/create-task-analysis-activity-from-in-sentence-text-hint.js","webpack://latinera/./sources/dialogs/create-definition.js","webpack://latinera/./sources/dialogs/create-lemma.js","webpack://latinera/./sources/dialogs/create-task-activity.js","webpack://latinera/./sources/dialogs/confirm-clear-local-cache.html","webpack://latinera/./sources/dialogs/confirm-close-unsaved-activity.html","webpack://latinera/./sources/dialogs/confirm-delete-analysis-activity.html","webpack://latinera/./sources/dialogs/confirm-delete-task-activity.html","webpack://latinera/./sources/dialogs/confirm-delete-task-analysis-activity.html","webpack://latinera/./sources/dialogs/confirm-log-out.html","webpack://latinera/./sources/dialogs/confirm-replace-out-sentence-text.html","webpack://latinera/./sources/dialogs/confirm-report-definition.html","webpack://latinera/./sources/dialogs/confirm-reset-password.html","webpack://latinera/./sources/dialogs/confirm-sign-up.html","webpack://latinera/./sources/dialogs/confirm-unreport-definition.html","webpack://latinera/./sources/dialogs/create-analysis-activity.html","webpack://latinera/./sources/dialogs/create-definition.html","webpack://latinera/./sources/dialogs/create-lemma.html","webpack://latinera/./sources/dialogs/create-task-activity.html"],"sourcesContent":["// Define the view-model for the \"confirm-clear-local-cache\" 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 \"ConfirmClearLocalCache\" class\n@inject(DialogController, EventService)\nexport class ConfirmClearLocalCache {\n\n // Local attributes\n i18nParams = i18nParams;\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: \"confirmClearLocalCache\",\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 \"confirm-close-unsaved-activity\" 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 \"ConfirmCloseUnsavedActivity\" class\n@inject(DialogController, EventService)\nexport class ConfirmCloseUnsavedActivity {\n\n // Local attributes\n i18nParams = i18nParams;\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: \"confirmCloseUnsavedActivity\",\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 \"confirm-delete-analysis-activity\" dialog\n\n// Import library modules\nimport { DialogController } from \"aurelia-dialog\";\nimport { inject } from \"aurelia-framework\";\nimport { I18N } from \"aurelia-i18n\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { capitalizeFirst } from \"utilities/string\";\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 \"ConfirmDeleteAnalysisActivity\" class\n@inject(I18N, DialogController, EventService)\nexport class ConfirmDeleteAnalysisActivity {\n\n // Local attributes\n i18nParams = i18nParams;\n\n constructor(i18n, dialogController, eventService) {\n this.i18n = i18n;\n this.dialogController = dialogController;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n activate({\n analysisData: { \n inSentence: inSentenceData,\n outSentence: outSentenceData \n }\n }) {\n const { text: inSentenceText } = inSentenceData || {};\n const { text: outSentenceText } = outSentenceData || {};\n const capitelizedInSentenceText = capitalizeFirst(inSentenceText);\n const capitalizedOutSentenceText = outSentenceText ?\n capitalizeFirst(outSentenceText) : \n this.i18n.tr(\"main:noTranslation\");\n this.dialogBodyParams = { \n ...i18nParams, \n inSentenceText: capitelizedInSentenceText, \n outSentenceText: capitalizedOutSentenceText \n };\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmDeleteAnalysisActivity\",\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 \"confirm-delete-task-activity\" dialog\n\n// Import library modules\nimport { DialogController } from \"aurelia-dialog\";\nimport { inject } from \"aurelia-framework\";\nimport { I18N } from \"aurelia-i18n\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { capitalizeFirst } from \"utilities/string\";\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 \"ConfirmDeleteTaskActivity\" class\n@inject(I18N, DialogController, EventService)\nexport class ConfirmDeleteTaskActivity {\n\n // Local attributes\n i18nParams = i18nParams;\n\n constructor(i18n, dialogController, eventService) {\n this.i18n = i18n;\n this.dialogController = dialogController;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n activate({ taskData }) {\n const { title: taskTitle } = taskData || {};\n const { description: taskDescription = \"\" } = taskData || {};\n const capitalizedTaskTitle = capitalizeFirst(taskTitle);\n const capitalizedTaskDescription = taskDescription ? \n capitalizeFirst(taskDescription) : \n this.i18n.tr(\"main:noDescription\");\n this.dialogBodyParams = { \n ...i18nParams, \n taskTitle: capitalizedTaskTitle,\n taskDescription: capitalizedTaskDescription\n };\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmDeleteTaskActivity\",\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 \"confirm-delete-task-analysis-activity\" dialog\n\n// Import library modules\nimport { DialogController } from \"aurelia-dialog\";\nimport { inject } from \"aurelia-framework\";\nimport { I18N } from \"aurelia-i18n\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { capitalizeFirst } from \"utilities/string\";\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 \"ConfirmDeleteTaskAnalysisActivity\" class\n@inject(I18N, DialogController, EventService)\nexport class ConfirmDeleteTaskAnalysisActivity {\n\n // Local attributes\n i18nParams = i18nParams;\n\n constructor(i18n, dialogController, eventService) {\n this.i18n = i18n;\n this.dialogController = dialogController;\n this.eventService = eventService\n }\n\n\n // Lifecycle methods\n activate({\n analysisData: {\n outSentence: outSentenceData,\n inSentence: inSentenceData\n },\n taskData\n }) {\n const { text: inSentenceText } = inSentenceData || {};\n const { text: outSentenceText } = outSentenceData || {};\n const { title: taskTitle } = taskData || {};\n const capitelizedInSentenceText = capitalizeFirst(inSentenceText);\n const capitalizedOutSentenceText = outSentenceText ?\n capitalizeFirst(outSentenceText) :\n this.i18n.tr(\"main:noTranslation\");\n const capitalizedTaskTitle = capitalizeFirst(taskTitle);\n this.dialogBodyParams = {\n ...i18nParams,\n inSentenceText: capitelizedInSentenceText,\n outSentenceText: capitalizedOutSentenceText,\n taskTitle: capitalizedTaskTitle\n };\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmDeleteTaskAnalysisActivity\",\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 \"confirm-log-out\" 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 \"ConfirmLogOut\" class\n@inject(DialogController, EventService)\nexport class ConfirmLogOut {\n\n // Local attributes\n i18nParams = i18nParams;\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: \"confirmLogOut\",\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 \"confirm-replace-out-sentence-text\" dialog\n\n// Import library modules\nimport { inject, computedFrom } 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 \"ConfirmReplaceOutSentenceText\" class\n@inject(DialogController, EventService)\nexport class ConfirmReplaceOutSentenceText {\n\n // Local attributes\n i18nParams = i18nParams;\n oldOutSentenceText = \"\";\n newOutSentenceText = \"\";\n\n constructor(dialogController, eventService) {\n this.dialogController = dialogController;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n activate({\n oldOutSentenceText = \"\",\n newOutSentenceText = \"\"\n }) {\n this.oldOutSentenceText = oldOutSentenceText;\n this.newOutSentenceText = newOutSentenceText;\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmReplaceOutSentenceText\",\n eventService: this.eventService,\n eventsData\n });\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Getter and setter methods\n @computedFrom(\"oldOutSentenceText\", \"newOutSentenceText\")\n get bodyI18nParams() {\n return { \n ...i18nParams, \n oldOutSentenceText: this.oldOutSentenceText,\n newOutSentenceText: this.newOutSentenceText\n };\n }\n\n\n // Event handlers\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Define the view-model for the \"confirm-report-definition-out\" dialog\n\n// Import library modules\nimport { inject, computedFrom } 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\";\nimport { \n reportTargets as definitionReportTargets,\n} from \"parameters/definition\";\n\n// Import service modules\nimport EventService from \"services/event\";\n\n// Define internal parameters\nconst definitionReportTypes = [\n \"inc\", // incorrect\n \"cns\", // censurable\n \"oth\" // other\n];\nconst lemmaDefinitionReportTypes = [\n \"mis\", // misplaced\n \"oth\" // other\n];\nconst eventsData = [\n { name: \"sessionClosing\" }\n];\n\n\n// Export \"ConfirmReportDefinition\" class\n@inject(\n DialogController, \n EventService,\n)\nexport class ConfirmReportDefinition {\n\n // Local attributes\n definitionReportTargets = definitionReportTargets;\n definitionReportTypes = definitionReportTypes;\n reportFormData = { target: undefined, type: \"oth\" };\n definitionData = null;\n lemmaData = null;\n i18nParams = i18nParams;\n\n constructor(\n dialogController, \n eventService,\n ) {\n this.dialogController = dialogController;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n activate({ \n definitionData = null,\n lemmaData = null,\n }) {\n this.definitionData = definitionData;\n this.lemmaData = lemmaData;\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmReportDefinition\",\n eventService: this.eventService,\n eventsData\n });\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Getter and setter methods\n @computedFrom(\"definitionData.key\")\n get definitionKey() {\n const { key: definitionKey = \"\" } = this.definitionData || {};\n return definitionKey;\n }\n @computedFrom(\"definitionData.text\")\n get definitionText() {\n const { text: definitionText = \"\" } = this.definitionData || {};\n return definitionText;\n }\n @computedFrom(\"definitionData.description\")\n get definitionDescription() {\n const { description: definitionDescription = \"\" } = this.definitionData || {};\n return definitionDescription;\n }\n @computedFrom(\"definitionReportTargets\", \"lemmaText\")\n get definitionReportTargetOptionsData() {\n return definitionReportTargets\n .map(reportTarget => ({ \n value: reportTarget, \n i18nText: `[html]enums:longDefinitionReportTarget.${reportTarget}`,\n i18nParams: { lemmaText: this.lemmaText }\n }));\n }\n @computedFrom(\"definitionReportTypes\", \"reportTarget\")\n get definitionReportTypeOptionsData() {\n const reportTypes = this.reportTarget === \"lemma\" ? \n lemmaDefinitionReportTypes : definitionReportTypes;\n this.reportFormData = {\n ...this.reportFormData,\n type: reportTypes.at(0)\n };\n return reportTypes.map(reportType => ({ \n value: reportType, \n i18nText: `enums:longDefinitionReportType.${reportType}`\n }));\n }\n\n @computedFrom(\"lemmaData.key\")\n get lemmaKey() {\n const { key: lemmaKey = \"\" } = this.lemmaData || {};\n return lemmaKey;\n }\n @computedFrom(\"lemmaData.text\")\n get lemmaText() {\n const { text: lemmaText = \"\" } = this.lemmaData || {};\n return lemmaText;\n }\n\n @computedFrom(\"reportFormData.target\")\n get reportTarget() {\n const { target: reportTarget = \"\" } = this.reportFormData || {};\n return reportTarget;\n }\n\n @computedFrom(\"definitionText\", \"definitionDescription\", \"lemmaText\")\n get bodyI18nParams() {\n return { \n ...i18nParams,\n lemmaText: this.lemmaText,\n definitionText: this.definitionText,\n definitionDescription: this.definitionDescription\n };\n }\n\n\n // Core methods\n async reportDefinition() {\n const {\n target: reportTarget = \"\",\n type: reportType = \"\"\n } = this.reportFormData;\n this.dialogController.ok({\n reportTarget,\n definitionKey: this.definitionKey,\n lemmaKey: this.lemmaKey,\n reportData: {\n type: reportType\n }\n });\n }\n\n\n // Event handlers\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Define the view-model for the \"confirm-reset-password\" 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\n\n// Export \"ConfirmResetPassword\" class\n@inject(DialogController, EventService)\nexport class ConfirmResetPassword {\n\n // Local attributes\n i18nParams = i18nParams;\n\n constructor(dialogController, eventService) {\n this.dialogController = dialogController;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n activate({ emailAddress }) {\n this.i18nParams.emailAddress = emailAddress;\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmResetPassword\",\n eventService: this.eventService,\n eventsData\n });\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n}\n","// Define the view-model for the \"confirm-sign-up\" dialog\n\n// Import library modules\nimport { inject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { I18N } from \"aurelia-i18n\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\n// import { localesData } from \"parameters/locale\";\n\n// Import service modules\nimport EventService from \"services/event\";\n\n// Define internal parameters\nconst eventsData = [];\n\n\n// Export \"ConfirmSignUp\" class\n@inject(DialogController, EventService, I18N)\nexport class ConfirmSignUp {\n\n // Local attributes\n i18nParams = i18nParams;\n userDataMap = new Map();\n\n constructor(dialogController, eventService, i18n) {\n this.dialogController = dialogController;\n this.eventService = eventService;\n this.i18n = i18n;\n }\n\n\n // Lifecycle methods\n activate(userData) {\n Object.entries(userData.profile)\n .forEach(([ pName, pValue ]) => {\n let i18nKey = `main:${pName}`, i18nValue;\n switch (pName) {\n case \"salutation\":\n case \"academicTitle\":\n case \"firstName\":\n case \"middleName\":\n case \"lastName\":\n case \"suffixName\":\n case \"displayName\":\n case \"birthYear\":\n case \"emailAddress\": {\n i18nValue = pValue;\n break;\n }\n case \"userType\":\n i18nValue = this.i18n.tr(`enums:longUserType.${pValue}`);\n break;\n case \"gender\":\n i18nValue = this.i18n.tr(`enums:longPersonGender.${pValue}`);\n break;\n case \"countryCode\":\n i18nKey = `main:country`\n i18nValue = this.i18n.tr(`enums:countryCodeToName.${pValue}`);\n break;\n }\n this.userDataMap.set(i18nKey, i18nValue);\n });\n Object.entries(userData.settings)\n .forEach(([ pName, pValue ]) => {\n switch (pName) {\n // case \"uiLocaleCode\":\n // case \"outLocaleCode\": {\n // const localeData = localesData\n // .find(localeData => localeData.code === pValue);\n // if (localeData) {\n // const { languageCode, countryCode } = localeData;\n // const i18nKey = this.i18n.tr(pName.replace(/Code$/, \"\"));\n // const languageName = this.i18n\n // .tr(`enums:languageCodeToName.${languageCode}`, this.i18nParams);\n // const i18nValue = `${languageName} (${countryCode.toUpperCase()})`;\n // this.userDataMap.set(i18nKey, i18nValue);\n // }\n // break;\n // }\n case \"acceptServiceNotifications\": {\n const i18nKey = [\n this.i18n.tr(`main:iAccept`),\n this.i18n.tr(`main:serviceNotifications`)\n ].join(\" \");\n const i18nValue = \n this.i18n.tr(`enums:yesOrNo.${pValue ? \"yes\" : \"no\"}`);\n this.userDataMap.set(i18nKey, i18nValue);\n break;\n }\n }\n });\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmSignUp\",\n eventService: this.eventService,\n eventsData\n });\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n}\n","// Define the view-model for the \"confirm-unreport-definition-out\" dialog\n\n// Import library modules\nimport { inject, computedFrom } 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 \"ConfirmUnreportDefinition\" class\n@inject(DialogController, EventService)\nexport class ConfirmUnreportDefinition {\n\n // Local attributes\n definitionData = null;\n lemmaData = null;\n i18nParams = i18nParams;\n\n constructor(dialogController, eventService) {\n this.dialogController = dialogController;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n activate({ \n definitionData = null,\n lemmaData = null,\n }) {\n this.definitionData = definitionData;\n this.lemmaData = lemmaData;\n }\n\n bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"confirmUnreportDefinition\",\n eventService: this.eventService,\n eventsData\n });\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Getter and setter methods\n @computedFrom(\"definitionData.key\")\n get definitionKey() {\n const { key: definitionKey = \"\" } = this.definitionData || {};\n return definitionKey;\n }\n @computedFrom(\"definitionData.text\")\n get definitionText() {\n const { text: definitionText = \"\" } = this.definitionData || {};\n return definitionText;\n }\n @computedFrom(\"definitionData.description\")\n get definitionDescription() {\n const { description: definitionDescription = \"\" } = this.definitionData || {};\n return definitionDescription;\n }\n @computedFrom(\"definitionData.userReport\")\n get userReportData() {\n const { userReport: userReportData = \"\" } = this.definitionData || {};\n return userReportData;\n }\n\n @computedFrom(\"lemmaData.key\")\n get lemmaKey() {\n const { key: lemmaKey = \"\" } = this.lemmaData || {};\n return lemmaKey;\n }\n @computedFrom(\"lemmaData.text\")\n get lemmaText() {\n const { text: lemmaText = \"\" } = this.lemmaData || {};\n return lemmaText;\n }\n\n @computedFrom(\"definitionText\", \"definitionDescription\", \"lemmaText\")\n get bodyI18nParams() {\n return { \n ...i18nParams,\n lemmaText: this.lemmaText,\n definitionText: this.definitionText,\n definitionDescription: this.definitionDescription\n };\n }\n\n\n // Core methods\n async unreportDefinition() {\n this.dialogController.ok({\n reportTarget: this.userReportData.forLemma ? \"lemma\" : \"definition\",\n definitionKey: this.definitionKey,\n lemmaKey: this.lemmaKey,\n });\n }\n\n\n // Event handlers\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Define the view-model for the \"create-analysis-activity\" dialog\n// note: this dialog can create either a stand-alone analysis activity or\n// a task analysis activity (provided task activity data are included\n// among the model data upon opening the dialog)\n\n// Import library modules\nimport { DialogController, DialogService } from \"aurelia-dialog\";\nimport { inject, computedFrom } from \"aurelia-framework\";\nimport { Validator } from \"aurelia-validation\";\n\n// Import utility modules\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { removeMultipleSpaces } from \"utilities/string\";\nimport { \n ensureTrailingMark, \n normalizeMarks,\n normalizeWords \n} from \"utilities/sentence\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\nimport { capitalizedWordsRegExp } from \"parameters/sentence\";\n\n// Import service modules\nimport EventService from \"services/event\";\nimport ActivityService from \"services/activity\";\nimport SentenceService from \"services/sentence\";\n\n// Import dialog modules\nimport { VerifyInputSentence } from \"dialogs/verify-input-sentence\";\n\n// Import method modules\nimport {\n createTaskAnalysisActivityFromExistingInSentence\n} from \"./create-analysis-activity/create-task-analysis-activity-from-existing-in-sentence\";\nimport {\n createAnalysisActivityFromExistingInSentence\n} from \"./create-analysis-activity/create-analysis-activity-from-existing-in-sentence\";\nimport {\n createTaskAnalysisActivityFromInSentenceTextHint\n} from \"./create-analysis-activity/create-task-analysis-activity-from-in-sentence-text-hint\";\nimport {\n createAnalysisActivityFromInSentenceTextHint\n} from \"./create-analysis-activity/create-analysis-activity-from-in-sentence-text-hint\";\n\n// Define internal parameters\nconst eventsData = [\n { name: \"sessionClosing\" }\n];\n\n\n// Export \"CreateAnalysisActivity\" class\n@inject(\n Validator,\n DialogController,\n DialogService,\n EventService,\n ActivityService,\n SentenceService\n)\nexport class CreateAnalysisActivity {\n\n // Local attributes\n inSentenceTextHint = \"\";\n lastInSentenceTextHint = \"\";\n existingInSentencesData = [];\n existingInSentencesI18nParams = [];\n inSentenceFilterErrorsData = [];\n inSentenceFilterDataValid = true;\n isLoadingExistingSentences = false;\n isSavingData = false;\n i18nParams = i18nParams;\n eventsSubscriptions = [];\n serverErrorsData = [];\n taskActivityData = null;\n authorData = null;\n textAreaData = {\n width: \"100%\",\n height: \"auto\",\n lineHeight: 1.15, // relative to font-size\n maxLength: 256\n };\n\n constructor(\n validator,\n dialogController,\n dialogService,\n eventService,\n activityService,\n sentenceService\n ) {\n this.validator = validator;\n this.dialogController = dialogController;\n this.dialogService = dialogService;\n this.eventService = eventService;\n this.activityService = activityService;\n this.sentenceService = sentenceService;\n }\n\n\n // Lifecycle methods\n async bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"createAnalysisActivity\",\n eventService: this.eventService,\n eventsData\n });\n this.inSentenceFilterErrorsData = await this.validateInSentenceFilterData();\n }\n\n activate({ taskActivityData = null } = {}) {\n this.taskActivityData = taskActivityData;\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Getter and setter methods\n @computedFrom(\"taskActivityData.key\")\n get taskActivityKey() {\n const { key: taskActivityKey = \"\" } = this.taskActivityData || {};\n return taskActivityKey;\n }\n\n @computedFrom(\"inSentenceTextHint\")\n get normalizedInSentenceTextHint() {\n return normalizeWords(normalizeMarks(removeMultipleSpaces(\n this.inSentenceTextHint\n )));\n }\n @computedFrom(\"normalizedInSentenceTextHint\")\n get markedInSentenceText() {\n return ensureTrailingMark({\n sentenceText: this.normalizedInSentenceTextHint\n });\n }\n\n @computedFrom(\"normalizedInSentenceTextHint\")\n get inSentenceFilterValidationData() {\n return {\n _schemaId: \"sentence.latinFilterInput\",\n textHint: this.normalizedInSentenceTextHint,\n localeCode: \"la-it\"\n };\n }\n @computedFrom(\"markedInSentenceText\")\n get inSentenceFilterData() {\n return {\n textHint: this.markedInSentenceText,\n localeCode: \"la-it\"\n };\n }\n @computedFrom(\"markedInSentenceText\")\n get fullyMatchingMarkedInSentenceText() {\n return this.existingInSentencesData\n .some(({ text: inSentenceText = \"\" }) => {\n return inSentenceText === this.markedInSentenceText;\n });\n }\n @computedFrom(\"markedInSentenceText\")\n get inSentenceTextHintI18nParams() {\n return {\n ...i18nParams,\n inSentenceText: this.markedInSentenceText\n };\n }\n @computedFrom(\"inSentenceFilterDataValid\")\n get inSentenceTextHintClasses() {\n return this.inSentenceFilterDataValid ? '' : 'uk-form-danger';\n }\n\n @computedFrom(\"authorData.key\")\n get authorKey() {\n const { key: authorKey = \"\" } = this.authorData || {};\n return authorKey;\n }\n\n @computedFrom(\n \"inSentenceTextHint\",\n \"inSentenceFilterErrorsData\",\n \"fullyMatchingMarkedInSentenceText\"\n )\n get canCreateAnalysisActivityFromTextHint() {\n return this.inSentenceTextHint &&\n this.inSentenceFilterDataValid &&\n !this.fullyMatchingMarkedInSentenceText;\n }\n\n\n // Core methods\n adjustTextAreaSize() {\n if (this.shadowInSentenceTextAreaElement) {\n const { scrollWidth, scrollHeight } = this.shadowInSentenceTextAreaElement;\n // this.textAreaData.width = `${scrollWidth}px`;\n this.textAreaData.height = `${scrollHeight}px`;\n } else {\n // this.textAreaData.width = \"auto\";\n this.textAreaData.height = \"auto\";\n }\n }\n\n async validateInSentenceFilterData() {\n if (!this.inSentenceTextHint) {\n return [];\n }\n const errorsData =\n await this.validator.validateObject(this.inSentenceFilterValidationData);\n return errorsData\n .filter(errorData => Boolean(errorData))\n .map(errorData => ({ error: errorData }));\n }\n\n async getExistingInSentencesData() {\n if (!this.inSentenceTextHint || !this.inSentenceFilterDataValid) {\n return [];\n }\n this.isLoadingExistingSentences = true;\n let inSentencesData;\n try {\n inSentencesData = await this.sentenceService\n .getSentencesByFilter(this.inSentenceFilterData);\n } catch(error) {\n this.isLoadingExistingSentences = false;\n console.error(`Error while getting sentences by filter`,\n this.inSentenceFilterData);\n console.error(error);\n return [];\n }\n this.isLoadingExistingSentences = false;\n return inSentencesData;\n }\n\n async createAnalysisActivityFromExistingInSentence(\n existingInSentenceIndex\n ) {\n this.creatingAnalysisActivityIndex = existingInSentenceIndex;\n const existingInSentenceData =\n this.existingInSentencesData[existingInSentenceIndex];\n const { key: existingInSentenceKey } = existingInSentenceData;\n this.isSavingData = true;\n if (this.taskActivityKey) { // create task analysis activity\n const updatedTaskActivityAndCreatedTaskAnalysisActivityData =\n await createTaskAnalysisActivityFromExistingInSentence\n .call(this, existingInSentenceKey);\n if (updatedTaskActivityAndCreatedTaskAnalysisActivityData) {\n this.dialogController\n .ok(updatedTaskActivityAndCreatedTaskAnalysisActivityData);\n }\n } else { // create analysis activity\n const createdAnalysisActivityData =\n await createAnalysisActivityFromExistingInSentence\n .call(this, existingInSentenceKey);\n if (createdAnalysisActivityData) {\n this.dialogController.ok(createdAnalysisActivityData);\n }\n }\n this.isSavingData = false;\n }\n\n async createAnalysisActivityFromInSentenceTextHint() {\n if (!this.canCreateAnalysisActivityFromTextHint) {\n return;\n }\n\n let finalInSentenceText = this.markedInSentenceText;\n if (capitalizedWordsRegExp.test(finalInSentenceText)) {\n // Open verify input sentence text hint dialog\n const verifyInSentenceDialogOpenResult = await this.dialogService.open({\n viewModel: VerifyInputSentence,\n model: { inSentenceText: this.markedInSentenceText },\n //keyboard: [\"Escape\"] // keys that close the dialog\n });\n const verifyInSentenceDialogCloseResult =\n await verifyInSentenceDialogOpenResult.closeResult;\n if (verifyInSentenceDialogCloseResult.wasCancelled) {\n console.info(`User canceled the verification of input sentence ` +\n `\"${this.markedInSentenceText}\"`);\n return;\n }\n const { \n output: verifiedInSentenceText = \"\" \n } = verifyInSentenceDialogCloseResult;\n if (verifiedInSentenceText !== this.markedInSentenceText) {\n finalInSentenceText = verifiedInSentenceText;\n }\n }\n\n // Create analysis activity from final input sentence text\n this.creatingAnalysisActivityIndex = -1;\n this.isSavingData = true;\n if (this.taskActivityKey) { // create task analysis activity\n const updatedTaskActivityAndCreatedTaskAnalysisActivityData =\n await createTaskAnalysisActivityFromInSentenceTextHint\n .call(this, finalInSentenceText);\n if (updatedTaskActivityAndCreatedTaskAnalysisActivityData) {\n this.dialogController\n .ok(updatedTaskActivityAndCreatedTaskAnalysisActivityData);\n }\n } else { // create analysis activity\n const createdAnalysisActivityData =\n await createAnalysisActivityFromInSentenceTextHint\n .call(this, finalInSentenceText);\n if (createdAnalysisActivityData) {\n this.dialogController.ok(createdAnalysisActivityData);\n }\n }\n this.isSavingData = false;\n }\n\n cancelCreateAnalysisActivity() {\n if (!this.isSavingData) {\n this.dialogController.cancel();\n }\n }\n\n async inSentenceTextHintChanged() {\n this.inSentenceTextHint = this.normalizedInSentenceTextHint;\n this.serverErrorsData = [];\n this.inSentenceFilterErrorsData = await this.validateInSentenceFilterData();\n this.inSentenceFilterDataValid =\n this.inSentenceFilterErrorsData.length === 0;\n if (this.inSentenceFilterDataValid) {\n this.existingInSentencesData = await this.getExistingInSentencesData();\n this.existingInSentencesI18nParams = this.existingInSentencesData\n .map(({ text: inSentenceText = \"\" }) => ({\n ...i18nParams,\n inSentenceText\n }));\n }\n }\n\n\n // Event handlers\n async handleInSentenceTextFocusEvent() {\n this.adjustTextAreaSize();\n this.lastInSentenceTextHint = this.inSentenceTextHint;\n }\n\n async handleInSentenceTextInputEvent() {\n this.adjustTextAreaSize();\n if (this.inSentenceTextHint !== this.lastInSentenceTextHint) {\n this.lastInSentenceTextHint = this.inSentenceTextHint;\n await this.inSentenceTextHintChanged();\n }\n }\n\n async handleInSentenceTextBlurEvent() {\n this.adjustTextAreaSize();\n if (this.inSentenceTextHint !== this.lastInSentenceTextHint) {\n this.lastInSentenceTextHint = this.inSentenceTextHint;\n await this.inSentenceTextHintChanged();\n }\n }\n\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Define the \"createAnalysisActivityFromExistingInSentence\"\n// createAnalysisActivity dialog method\n\n// createAnalysisActivityFromExistingInSentence: async\n// returns a promise which resolves with the analysis activity created\n// from the specified sentence (by key), or with null if any error\n// occurred\nexport async function createAnalysisActivityFromExistingInSentence(\n inSentenceKey\n) {\n let createdAnalysisActivityData;\n try {\n createdAnalysisActivityData = await this.activityService\n .createStartingAnalysisActivityFromExistingSentence({\n inSentenceKey\n });\n } catch(error) {\n console.error(`Error creating analysis activity ` +\n `from existing sentence \"${inSentenceKey}\"`, error);\n this.serverErrorsData = [{\n i18nKey: \"errors:createAnalysisActivityFailed\",\n i18nParams: {}\n }];\n return null;\n }\n return createdAnalysisActivityData;\n}\n","// Define the \"createAnalysisActivityFromInSentenceTextHint\"\n// createAnalysisActivity dialog method\n\n// createAnalysisActivityFromInSentenceTextHint: async\n// returns a promise which resolves with the analysis activity created\n// from a new sentence (by text hint), or with null if any error\n// occurred\nexport async function createAnalysisActivityFromInSentenceTextHint(\n inSentenceTextHint\n) {\n // Create analysis activity\n const createSentenceData = {\n sentenceData: {\n text: inSentenceTextHint,\n localeCode: \"la-it\"\n }\n };\n let createdAnalysisActivityData;\n try {\n createdAnalysisActivityData = await this.activityService\n .createStartingAnalysisActivityFromNewSentence({\n createSentenceData\n });\n } catch(error) {\n console.error(`Error creating analysis activity ` +\n `from existing sentence \"${inSentenceTextHint}\"`, error);\n this.serverErrorsData = [{\n i18nKey: \"errors:createAnalysisActivityFailed\",\n i18nParams: {}\n }];\n return null;\n }\n return createdAnalysisActivityData;\n}\n","// Define the \"createTaskAnalysisActivityFromExistingInSentence\"\n// createAnalysisActivity dialog method\n\n// createTaskAnalysisActivityFromExistingInSentence: async\n// returns a promise which resolves either with an object containing the\n// updated task activity data and the created task analysis activity data\n// created from the specified sentence (by key), or with null if some error\n// occurred\nexport async function createTaskAnalysisActivityFromExistingInSentence(\n inSentenceKey\n) {\n let updatedTaskActivityData, createdTaskAnalysisActivityData;\n try {\n ({\n taskActivityData: updatedTaskActivityData,\n analysisActivityData: createdTaskAnalysisActivityData\n } = await this.activityService\n .createStartingTaskAnalysisActivityFromExistingSentence({\n taskActivityKey: this.taskActivityKey,\n inSentenceKey\n }));\n } catch(error) {\n console.error(`Error creating task analysis activity ` +\n `from existing sentence \"${inSentenceKey}\"`, error);\n this.serverErrorsData = [{\n i18nKey: \"errors:createAnalysisActivityFailed\",\n i18nParams: {}\n }];\n return null;\n }\n return {\n taskActivityData: updatedTaskActivityData,\n taskAnalysisActivityData: createdTaskAnalysisActivityData\n };\n}\n","// Define the \"createTaskAnalysisActivityFromInSentenceTextHint\"\n// createAnalysisActivity dialog method\n\n// createTaskAnalysisActivityFromInSentenceTextHint: async\n// returns a promise which resolves either with an object containing the\n// updated task activity data and the created analysis activity data\n// created from the specified sentence (key), or with null if some error\n// occurred\nexport async function createTaskAnalysisActivityFromInSentenceTextHint(\n inSentenceTextHint\n) {\n // Create analysis activity\n const createSentenceData = {\n sentenceData: {\n text: inSentenceTextHint,\n localeCode: \"la-it\"\n }\n };\n let updatedTaskActivityData, createdTaskAnalysisActivityData;\n try {\n ({\n taskActivityData: updatedTaskActivityData,\n analysisActivityData: createdTaskAnalysisActivityData\n } = await this.activityService\n .createStartingTaskAnalysisActivityFromNewSentence({\n taskActivityKey: this.taskActivityKey,\n createSentenceData\n }));\n } catch(error) {\n console.error(`Error creating task analysis activity ` +\n `from new sentence \"${inSentenceTextHint}\"`, error);\n this.serverErrorsData = [{\n i18nKey: \"errors:createAnalysisActivityFailed\",\n i18nParams: {}\n }];\n return null;\n }\n return {\n taskActivityData: updatedTaskActivityData,\n analysisActivityData: createdTaskAnalysisActivityData\n };\n}\n","// Define the view-model for the \"create-definition\" dialog\n\n// Import library modules\nimport { DialogController, DialogService } from \"aurelia-dialog\";\nimport { Validator, ValidateResult } from \"aurelia-validation\";\nimport { inject, computedFrom } from \"aurelia-framework\";\nimport { I18N } from \"aurelia-i18n\";\n\n// Import utility modules\nimport { unsetProperties, unsetFalsyProperties } from \"utilities/object\";\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { optimizeSpaces } from \"utilities/string\";\nimport { clone } from \"utilities/etc\";\nimport {\n normalizeWords,\n normalizeMarks\n} from \"utilities/sentence\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\nimport {\n createDefinitionFormData as defaultCreateDefinitionFormData,\n definitionResetPropertyNames\n} from \"parameters/definition\";\n\n// Import service modules\nimport DefinitionService from \"services/definition\";\nimport EventService from \"services/event\";\n\n// Import dialog modules\nimport { VerifyDefinition } from \"dialogs/verify-definition\";\n\n// Define internal parameters\nconst eventsData = [\n { name: \"sessionClosing\" }\n];\n\n\n// Export \"CreateDefinition\" class\n@inject(\n DefinitionService,\n DialogController,\n DialogService,\n EventService,\n I18N,\n Validator\n)\nexport class CreateDefinition {\n\n // Local attributes\n rawFormData = clone(defaultCreateDefinitionFormData);\n lemmaData = null;\n formDataValid = true;\n formErrorsData = [];\n serverErrorsData = [];\n isSavingData = false;\n i18nParams = i18nParams;\n\n constructor(\n definitionService,\n dialogController,\n dialogService,\n eventService,\n i18n,\n validator\n ) {\n this.definitionService = definitionService;\n this.dialogController = dialogController;\n this.dialogService = dialogService;\n this.eventService = eventService;\n this.i18n = i18n;\n this.validator = validator;\n }\n\n\n // Lifecycle methods\n activate({ lemmaData = null }) {\n this.lemmaData = lemmaData;\n }\n\n async bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"createDefinition\",\n eventService: this.eventService,\n eventsData\n });\n\n this.resetFormData();\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(\"rawFormData.definitionData\")\n get definitionData() {\n const { definitionData = null } = this.rawFormData || {};\n return definitionData;\n }\n @computedFrom(\"definitionData.text\")\n get definitionText() {\n const { text: definitionText = \"\" } = this.definitionData || {};\n return definitionText;\n }\n @computedFrom(\"definitionData.description\")\n get definitionDescription() {\n const { description: definitionDescription = \"\" } = this.definitionData || {};\n return definitionDescription;\n }\n @computedFrom(\"lemmaData.text\")\n get lemmaText() {\n const { text: lemmaText = \"\" } = this.lemmaData || {};\n return lemmaText;\n }\n @computedFrom(\"lemmaData.key\")\n get lemmaKey() {\n const { key: lemmaKey = \"\" } = this.lemmaData || {};\n return lemmaKey;\n }\n @computedFrom(\"lemmaText\")\n get createDefinitionBodyI18nParams() {\n return { ...i18nParams, lemmaText: this.lemmaText };\n }\n\n\n // Core methods\n resetFormData() {\n this.rawFormData = clone(defaultCreateDefinitionFormData);\n definitionResetPropertyNames.forEach(definitionPropertyName => {\n this.definitionData[definitionPropertyName] = \"\";\n });\n if (this.lemmaKey) {\n this.rawFormData.lemmaKey = this.lemmaKey;\n }\n }\n\n async validateFormData() {\n this.formErrorsData = await this.validator.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 setServerError(errorKey) {\n this.serverErrorsData = [ ...this.serverErrorsData, {\n error: new ValidateResult(errorKey, this.rawFormData, \"server\", false)\n }];\n this.updateFormDataValid();\n }\n\n clearServerErrors() {\n this.serverErrorsData = [];\n this.updateFormDataValid();\n }\n\n async createDefinition() {\n const definitionWords = this.definitionText.split(/\\s+/);\n\n if (definitionWords.length > 1) {\n // Open verify definition dialog\n const verifyDefinitionDialogOpenResult = await this.dialogService.open({\n viewModel: VerifyDefinition,\n model: { \n lemmaText: this.lemmaText,\n definitionData: this.definitionData\n },\n //keyboard: [\"Escape\"] // keys that close the dialog\n });\n const verifyDefinitionDialogCloseResult =\n await verifyDefinitionDialogOpenResult.closeResult;\n if (verifyDefinitionDialogCloseResult.wasCancelled) {\n console.info(`User canceled the verification of definition ` +\n `\"${this.definitionText}\"`);\n return;\n }\n const { \n output: verifiedDefinitionData = null\n } = verifyDefinitionDialogCloseResult;\n const {\n text: verifiedDefinitionText = \"\",\n description: verifiedDefinitionDescription = \"\"\n } = verifiedDefinitionData || {};\n if (verifiedDefinitionText !== this.definitionText) {\n this.definitionData.text = verifiedDefinitionText;\n this.definitionData.description = verifiedDefinitionDescription;\n }\n }\n\n // Save definition on the server\n this.isSavingData = true;\n const tempFormData = unsetProperties(this.rawFormData, [\"_schemaId\"]);\n const createDefinitionData = unsetFalsyProperties(tempFormData);\n let createdDefinitionData;\n try {\n createdDefinitionData = await this.definitionService\n .createDefinition(createDefinitionData);\n } catch(error) {\n console.warn(`Error creating definition \"${this.definitionText}\"`, error);\n this.setServerError(\"createDefinitionFailed\");\n this.isSavingData = false;\n return;\n }\n this.isSavingData = false;\n this.dialogController.ok(createdDefinitionData);\n }\n\n cancelCreateDefinition() {\n if (!this.isSavingData) {\n this.dialogController.cancel();\n }\n }\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 fieldValue = this.definitionData[fieldName] || \"\";\n const optimizedFieldValue =\n normalizeMarks(normalizeWords(optimizeSpaces(fieldValue)));\n if (optimizedFieldValue.length > 0) {\n this.eventService.publish({\n eventName: \"validateValue\",\n eventData: { uniqueId: fieldName }\n });\n }\n await this.validateFormData();\n }\n async handleFormFieldBlurEvent(fieldName = \"\") {\n if (!fieldName) {\n throw new Error(`Missing required \"fieldName\" argument`);\n }\n const fieldValue = this.definitionData[fieldName] || \"\";\n const optimizedFieldValue =\n normalizeMarks(normalizeWords(optimizeSpaces(fieldValue)));\n this.rawFormData.definitionData[fieldName] = optimizedFieldValue;\n if (optimizedFieldValue.length > 0) {\n this.eventService.publish({\n eventName: \"validateValue\",\n eventData: { uniqueId: fieldName }\n });\n }\n await this.validateFormData();\n }\n\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Define the view-model for the \"create-lemma\" dialog\n\n// Import library modules\nimport { DialogController, DialogService } from \"aurelia-dialog\";\nimport { inject, computedFrom } from \"aurelia-framework\";\nimport { Validator } from \"aurelia-validation\";\nimport { I18N } from \"aurelia-i18n\";\n\n// Import utility modules\nimport { unsetProperties, unsetFalsyProperties } from \"utilities/object\";\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { capitalizeFirst } from \"utilities/string\";\nimport { convert } from \"utilities/convert\";\nimport { pause } from \"utilities/promise\";\nimport { clone } from \"utilities/etc\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\nimport { runMode as defaultRunMode } from \"parameters/environment\";\nimport {\n createLemmaFormData as defaultCreateLemmaFormData,\n shortLemmaCathegories\n} from \"parameters/lemma\";\n\n// Import service modules\nimport EventService from \"services/event\";\nimport LemmaService from \"services/lemma\";\nimport NotificationService from \"services/notification\";\n\n// Import dialog modules\nimport VerifyLemma from \"dialogs/verify-lemma\";\n\n// Define internal parameters\nconst waitForLemmaCathegorySelectElementMs = 200;\nconst eventsData = [\n { name: \"lemmaCathegoryChanged\" }, \n { name: \"lemmaDataChanged\" },\n { name: \"lemmaInflectionsChanged\" },\n { name: \"lemmaDefinitionsChanged\" },\n { name: \"sessionClosing\" }\n];\n\n\n// Export \"CreateLemma\" class\n@inject(\n I18N,\n Validator,\n DialogController,\n DialogService,\n EventService,\n LemmaService,\n NotificationService\n)\nexport class CreateLemma {\n\n // Local attributes\n rawFormData = clone(defaultCreateLemmaFormData);\n inElementData = null;\n selectedInflectionsData = [];\n definitionsData = [];\n formDataValid = false;\n isSavingData = false;\n formErrorsData = [];\n lemmaCathegoriesData = [];\n eventsSubscriptions = [];\n i18nParams = i18nParams;\n runMode = defaultRunMode;\n\n constructor(\n i18n,\n validator,\n dialogController,\n dialogService,\n eventService,\n lemmaService,\n notificationService\n ) {\n this.i18n = i18n;\n this.validator = validator;\n this.dialogController = dialogController;\n this.dialogService = dialogService;\n this.eventService = eventService;\n this.lemmaService = lemmaService;\n this.notificationService = notificationService;\n }\n\n\n // Lifecycle methods\n activate({\n inElementData = null,\n runMode = defaultRunMode\n }) {\n this.inElementData = inElementData;\n this.runMode = runMode;\n this.createLemmaBodyI18nParams = { \n ...i18nParams, \n inElementText: this.inElementText\n };\n this.updateLemmaCathegoriesData();\n }\n\n async bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"createLemma\",\n eventService: this.eventService,\n eventsData\n });\n this.resetFormData();\n }\n\n async attached() {\n await pause(waitForLemmaCathegorySelectElementMs);\n if (this.lemmaCathegorySelectElement) {\n this.lemmaCathegorySelectElement.focus();\n }\n }\n\n unbind() {\n unsetEventHandlers.call(this, {\n eventsSubscriptions: this.eventsSubscriptions\n });\n }\n\n\n // Getter and setter methods\n @computedFrom(\"inElementData.text\")\n get inElementText() {\n const { text: inElementText = \"\" } = this.inElementData || {};\n return inElementText;\n }\n\n @computedFrom(\"rawFormData.lemmaData\")\n get lemmaData() {\n const { lemmaData = null } = this.rawFormData || {};\n return lemmaData;\n }\n @computedFrom(\"lemmaData.text\")\n get lemmaText() {\n const { text: lemmaText = \"\" } = this.lemmaData || {};\n return lemmaText;\n }\n @computedFrom(\"lemmaData.cathegory\")\n get lemmaCathegory() {\n const { cathegory: lemmaCathegory = \"\" } = this.lemmaData || {};\n return lemmaCathegory;\n }\n\n\n // Core methods\n resetFormData() {\n this.rawFormData = clone(defaultCreateLemmaFormData);\n }\n\n async validateFormData() {\n this.formErrorsData = await this.validator.validateObject(this.rawFormData);\n this.updateFormDataValid();\n }\n\n updateLemmaCathegoriesData() {\n const lemmaCathegoriesData = shortLemmaCathegories\n .map(shortLemmaCathegory => ({\n value: shortLemmaCathegory,\n text: this.i18n.tr(`enums:longInflectionCathegory.${shortLemmaCathegory}`)\n }));\n const nullLemmaCathegoryData = {\n value: null,\n text: this.i18n.tr(`main:none`)\n };\n this.lemmaCathegoriesData =\n [ ...lemmaCathegoriesData, nullLemmaCathegoryData ];\n }\n\n updateFormDataValid() {\n this.formDataValid = this.formErrorsData.length === 0 &&\n this.rawFormData.inflectionsKeys.length > 0 &&\n this.rawFormData.definitionsKeys.length > 0;\n }\n\n async createLemma() {\n // Open verify lemma dialog\n const verifyLemmaDialogOpenResult = await this.dialogService.open({\n viewModel: VerifyLemma,\n model: {\n lemmaData: this.lemmaData,\n inflectionsData: this.selectedInflectionsData,\n definitionsData: this.definitionsData,\n runMode: this.runMode\n },\n //keyboard: [\"Escape\"] // keys that close the dialog\n });\n const verifyLemmaDialogCloseResult =\n await verifyLemmaDialogOpenResult.closeResult;\n if (verifyLemmaDialogCloseResult.wasCancelled) {\n console.info(`User canceled the creation of lemma ` +\n `\"${this.lemmaText}\"`);\n return;\n }\n\n // Create lemma\n this.isSavingData = true;\n const tempFormData = unsetProperties(this.rawFormData, [\"_schemaId\"]);\n const createLemmaData = unsetFalsyProperties(tempFormData);\n let createdLemmaData;\n try {\n createdLemmaData = await this.lemmaService.createLemma(createLemmaData);\n } catch(error) {\n console.error(`Error creating ${this.lemmaCathegory} lemma ` +\n `\"${this.lemmaText}\"`, error);\n this.isSavingData = false;\n this.notificationService.showUINotification({\n message: \"notifications:lemmaCreationError\",\n status: \"failure\",\n group: \"private\"\n });\n this.cancelDialog();\n }\n this.isSavingData = false;\n this.dialogController.ok(createdLemmaData);\n }\n\n cancelDialog() {\n this.dialogController.cancel();\n }\n\n\n // Event handlers\n handleLemmaCathegoryChangedEvent({\n newValue: shortLemmaCathegory = null\n }) {\n if (shortLemmaCathegory !== null) {\n const longLemmaCathegory =\n convert.lemmaCathegory.shortToLong(shortLemmaCathegory);\n const capitalizedLongLemmaCathegory = capitalizeFirst(longLemmaCathegory);\n this.resetFormData();\n this.rawFormData._schemaId =\n `lemma.create${capitalizedLongLemmaCathegory}Input`;\n this.rawFormData.lemmaData.cathegory = shortLemmaCathegory;\n this.updateFormDataValid();\n }\n }\n\n async handleLemmaDataChangedEvent({\n lemmaData = null\n }) {\n this.rawFormData.lemmaData = lemmaData;\n await this.validateFormData();\n }\n\n async handleLemmaInflectionsChangedEvent({\n inflectionsData = [],\n selectedInflectionsKeys = []\n }) {\n this.selectedInflectionsData = inflectionsData\n .filter(({ key: inflectionKey = \"\" }) => {\n return selectedInflectionsKeys.includes(inflectionKey);\n });\n this.rawFormData.inflectionsKeys = selectedInflectionsKeys;\n await this.validateFormData();\n }\n\n async handleLemmaDefinitionsChangedEvent({\n definitionsData = []\n }) {\n this.definitionsData = definitionsData;\n this.rawFormData.definitionsKeys = definitionsData\n .map(({ key: definitionKey = \"\" }) => definitionKey)\n .filter((definitionKey = \"\") => definitionKey !== \"\");\n await this.validateFormData();\n }\n\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Define the view-model for the \"create-task-activity\" dialog\n\n// Import library modules\nimport { Validator, ValidateResult } from \"aurelia-validation\";\nimport { inject, computedFrom } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\n\n// Import utility modules\nimport { unsetProperties, unsetFalsyProperties } from \"utilities/object\";\nimport { setEventHandlers, unsetEventHandlers } from \"utilities/event\";\nimport { optimizeSpaces } from \"utilities/string\";\nimport { clone } from \"utilities/etc\";\nimport {\n normalizeMarks,\n normalizeWords\n} from \"utilities/sentence\";\n\n// Import parameter modules\nimport { tBindingBehavior as i18nParams } from \"parameters/i18n\";\nimport {\n createTaskActivityFormData as defaultCreateTaskActivityFormData\n} from \"parameters/activity\";\n\n// Import service modules\nimport ActivityService from \"services/activity\";\nimport EventService from \"services/event\";\n\n// Define internal parameters\nconst eventsData = [\n { name: \"sessionClosing\" }\n];\n\n\n// Export \"CreateTaskActivity\" class\n@inject(\n Validator,\n DialogController,\n ActivityService,\n EventService\n)\nexport class CreateTaskActivity {\n\n // Local attributes\n rawFormData = clone(defaultCreateTaskActivityFormData);\n formDataValid = true;\n formErrorsData = [];\n serverErrorsData = [];\n fieldsValidationStatuses = {};\n isSavingData = false;\n i18nParams = i18nParams;\n\n constructor(\n validator,\n dialogController,\n activityService,\n eventService\n ) {\n this.validator = validator;\n this.dialogController = dialogController;\n this.activityService = activityService;\n this.eventService = eventService;\n }\n\n\n // Lifecycle methods\n async bind() {\n this.eventsSubscriptions = setEventHandlers.call(this, {\n entityName: \"createTaskActivity\",\n eventService: this.eventService,\n eventsData\n });\n\n this.rawFormData = clone(defaultCreateTaskActivityFormData);\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(\"rawFormData.taskData\")\n get taskData() {\n const { taskData = null } = this.rawFormData || {};\n return taskData;\n }\n\n\n // Core methods\n async validateFormData() {\n this.rawFormData = unsetFalsyProperties(this.rawFormData);\n this.formErrorsData = await this.validator.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 createTaskActivity() {\n this.isSavingData = true;\n const tempFormData = unsetProperties(this.rawFormData, [\"_schemaId\"]);\n const createTaskActivityData = unsetFalsyProperties(tempFormData);\n let createdTaskActivityData;\n try {\n createdTaskActivityData = await this.activityService.createTaskActivity({\n createTaskActivityData\n });\n } catch(error) {\n const { title: taskTitle = \"\" } = this.formData.taskData || {};\n console.warn(`Error creating task activity \"${taskTitle}\"`, error);\n this.setServerError(\"createTaskActivityFailed\");\n this.isSavingData = false;\n return null;\n }\n this.isSavingData = false;\n this.dialogController.ok(createdTaskActivityData);\n }\n\n cancelCreateTaskActivity() {\n if (!this.isSavingData) {\n this.dialogController.cancel();\n }\n }\n\n setServerError(errorKey) {\n this.serverErrorsData = [ ...this.serverErrorsData, {\n error: new ValidateResult(errorKey, this.rawFormData, \"server\", false)\n }];\n }\n\n clearServerErrors() {\n this.serverErrorsData = [];\n }\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 fieldValue = this.taskData[fieldName] || \"\";\n const optimizedFieldValue = \n normalizeMarks(normalizeWords(optimizeSpaces(fieldValue)));\n if (optimizedFieldValue.length > 0) {\n this.eventService.publish({\n eventName: \"validateValue\",\n eventData: { uniqueId: fieldName }\n });\n }\n await this.validateFormData();\n }\n async handleFormFieldBlurEvent(fieldName = \"\") {\n if (!fieldName) {\n throw new Error(`Missing required \"fieldName\" argument`);\n }\n const fieldValue = this.taskData[fieldName] || \"\";\n const optimizedFieldValue = \n normalizeMarks(normalizeWords(optimizeSpaces(fieldValue)));\n this.rawFormData.taskData[fieldName] = optimizedFieldValue;\n if (optimizedFieldValue.length > 0) {\n this.eventService.publish({\n eventName: \"validateValue\",\n eventData: { uniqueId: fieldName }\n });\n }\n await this.validateFormData();\n }\n\n handleSessionClosingEvent() {\n this.dialogController.cancel();\n }\n\n}\n","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:clear\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:close\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:delete\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:delete\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:delete\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:logOut\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:replace\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:report\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:reset\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n ${propertyKey & t: i18nParams}\\n \\n \\n ${propertyValue}\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:proceed\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:unreport\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n ${\\\"main:inputSentence\\\" & t: i18nParams}:\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n ${inSentenceTextHint}|\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n ${\\\"main:newSentence\\\" & t: i18nParams}:\\n \\n \\n \\n \\n ${markedInSentenceText}\\n \\n\\n \\n \\n \\n \\n ${\\\"main:create\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:creating\\\" & t: i18nParams}…\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n ${\\\"main:loadingData\\\" & t}…\\n \\n \\n \\n \\n ${\\\"main:existingSentences\\\" & t: i18nParams}:\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n ${\\\"main:create\\\" & t: i18nParams}\\n \\n \\n ${\\\"main:creating\\\" & t: i18nParams}…\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n ${\\\"main:create\\\" & t: i18nParams}\\n \\n \\n \\n \\n \\n ${\\\"main:creating\\\" & t: i18nParams}…\\n \\n \\n \\n\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n\\n \\n \\n \\n \\n \\n \\n ${\\\"main:create\\\" & t: i18nParams}\\n \\n \\n \\n \\n \\n ${\\\"main:creating\\\" & t: i18nParams}…\\n \\n \\n \\n\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n ${\\\"main:create\\\" & t: i18nParams}\\n \\n \\n \\n \\n ${\\\"main:creating\\\" & t: i18nParams}…\\n \\n \\n \\n\\n \\n \\n ${\\\"main:cancel\\\" & t: i18nParams}\\n \\n \\n\\n \\n\\n \\n\\n\\n\";\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}