herum-shared 0.1.39 → 0.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@ import * as i1 from '@angular/common';
4
4
  import { formatDate, CommonModule, DatePipe, DOCUMENT } from '@angular/common';
5
5
  import { Subject, BehaviorSubject, forkJoin, of, EMPTY, throwError, takeUntil as takeUntil$1 } from 'rxjs';
6
6
  import { takeUntil, debounceTime, tap, shareReplay, map, catchError, switchMap } from 'rxjs/operators';
7
- import { keyboardAsciiCodes as keyboardAsciiCodes$1, regexExpressions as regexExpressions$1, svgsStrings as svgsStrings$1, system as system$1, radioButtonTypes as radioButtonTypes$1, defaultGrade as defaultGrade$1, checkboxTypes as checkboxTypes$1, defaultPlaceholder as defaultPlaceholder$2, types as types$1, formStatuses as formStatuses$1, structHierarchyTreeMaxHeight as structHierarchyTreeMaxHeight$1, startEndDateError as startEndDateError$1, minDateError as minDateError$1, formatError as formatError$1, timestampError as timestampError$1, timePattern as timePattern$1, dayInMilliSeconds as dayInMilliSeconds$1, dateRangeTimeRangePlaceHolder as dateRangeTimeRangePlaceHolder$1, dateRangeTimeRangeWithoutSecondsPlaceHolder as dateRangeTimeRangeWithoutSecondsPlaceHolder$1, dateRangePlaceHolder as dateRangePlaceHolder$1, dateTimePlaceHolder as dateTimePlaceHolder$1, dateTimeWithoutSecondsPlaceHolder as dateTimeWithoutSecondsPlaceHolder$1, datePlaceHolder as datePlaceHolder$1, timePlaceHolder as timePlaceHolder$1, timeWithoutSecondsPlaceHolder as timeWithoutSecondsPlaceHolder$1, additionTagName as additionTagName$1, mouseEnter as mouseEnter$1, mouseLeave as mouseLeave$1, mouseEnterHandlerKey as mouseEnterHandlerKey$1, mouseLeaveHandlerKey as mouseLeaveHandlerKey$1, deletionTagName as deletionTagName$1, editorContainerElementId as editorContainerElementId$1, calendarActiveColorCssVariable as calendarActiveColorCssVariable$1, calendarHoverColorCssVariable as calendarHoverColorCssVariable$1, calendarLibrarySelector as calendarLibrarySelector$1, calendarLibraryBodyCellSelector as calendarLibraryBodyCellSelector$1, timerActiveColorCssVariable as timerActiveColorCssVariable$1, timerHoverColorCssVariable as timerHoverColorCssVariable$1, timerItemSizeColorCssVariable as timerItemSizeColorCssVariable$1, resourcesFilesSuffixes as resourcesFilesSuffixes$1, anySubFileTypeWildCard as anySubFileTypeWildCard$1, maleAvatarPath as maleAvatarPath$1, femaleAvatarPath as femaleAvatarPath$1, signUpFormKeys as signUpFormKeys$1, maxImageHeight as maxImageHeight$1, maxImageWidth as maxImageWidth$1, filesSuffixes as filesSuffixes$1, uploadsProgressMetadataTypes as uploadsProgressMetadataTypes$1, tableRowHeights as tableRowHeights$1, generalKeys as generalKeys$1, attributes as attributes$1, defaultAuthorizationObject as defaultAuthorizationObject$1, resourceIdPlaceholder as resourceIdPlaceholder$1, getPublishAuthorization as getPublishAuthorization$1, toastsTemplates as toastsTemplates$1, toastContext as toastContext$1, toastStatuses as toastStatuses$1, toastStates as toastStates$1, defaultUserId as defaultUserId$1, assignmentMetadata as assignmentMetadata$1, validatorsNames as validatorsNames$1, formsErrorMessages as formsErrorMessages$1, getSignUpMethod as getSignUpMethod$1, globalErrorHandlingHeader as globalErrorHandlingHeader$1, dialogsDescriptions as dialogsDescriptions$1, dialogsTitles as dialogsTitles$1, uploadsManagerKeys as uploadsManagerKeys$1, uploadStatuses as uploadStatuses$1, skipToastHeader as skipToastHeader$1 } from 'herum-shared/constants';
7
+ import { keyboardAsciiCodes as keyboardAsciiCodes$1, regexExpressions as regexExpressions$1, svgsStrings as svgsStrings$1, system as system$1, radioButtonTypes as radioButtonTypes$1, defaultGrade as defaultGrade$1, checkboxTypes as checkboxTypes$1, defaultPlaceholder as defaultPlaceholder$2, types as types$1, formStatuses as formStatuses$1, structHierarchyTreeMaxHeight as structHierarchyTreeMaxHeight$1, startEndDateError as startEndDateError$1, minDateError as minDateError$1, formatError as formatError$1, timestampError as timestampError$1, timePattern as timePattern$1, dayInMilliSeconds as dayInMilliSeconds$1, dateRangeTimeRangePlaceHolder as dateRangeTimeRangePlaceHolder$1, dateRangeTimeRangeWithoutSecondsPlaceHolder as dateRangeTimeRangeWithoutSecondsPlaceHolder$1, dateRangePlaceHolder as dateRangePlaceHolder$1, dateTimePlaceHolder as dateTimePlaceHolder$1, dateTimeWithoutSecondsPlaceHolder as dateTimeWithoutSecondsPlaceHolder$1, datePlaceHolder as datePlaceHolder$1, timePlaceHolder as timePlaceHolder$1, timeWithoutSecondsPlaceHolder as timeWithoutSecondsPlaceHolder$1, calendarActiveColorCssVariable as calendarActiveColorCssVariable$1, calendarHoverColorCssVariable as calendarHoverColorCssVariable$1, calendarLibrarySelector as calendarLibrarySelector$1, calendarLibraryBodyCellSelector as calendarLibraryBodyCellSelector$1, timerActiveColorCssVariable as timerActiveColorCssVariable$1, timerHoverColorCssVariable as timerHoverColorCssVariable$1, timerItemSizeColorCssVariable as timerItemSizeColorCssVariable$1, resourcesFilesSuffixes as resourcesFilesSuffixes$1, anySubFileTypeWildCard as anySubFileTypeWildCard$1, maleAvatarPath as maleAvatarPath$1, femaleAvatarPath as femaleAvatarPath$1, signUpFormKeys as signUpFormKeys$1, maxImageHeight as maxImageHeight$1, maxImageWidth as maxImageWidth$1, filesSuffixes as filesSuffixes$1, uploadsProgressMetadataTypes as uploadsProgressMetadataTypes$1, tableRowHeights as tableRowHeights$1, generalKeys as generalKeys$1, attributes as attributes$1, defaultAuthorizationObject as defaultAuthorizationObject$1, resourceIdPlaceholder as resourceIdPlaceholder$1, getPublishAuthorization as getPublishAuthorization$1, toastsTemplates as toastsTemplates$1, toastContext as toastContext$1, toastStatuses as toastStatuses$1, toastStates as toastStates$1, defaultUserId as defaultUserId$1, assignmentMetadata as assignmentMetadata$1, validatorsNames as validatorsNames$1, formsErrorMessages as formsErrorMessages$1, getSignUpMethod as getSignUpMethod$1, globalErrorHandlingHeader as globalErrorHandlingHeader$1, dialogsDescriptions as dialogsDescriptions$1, dialogsTitles as dialogsTitles$1, uploadsManagerKeys as uploadsManagerKeys$1, uploadStatuses as uploadStatuses$1, skipToastHeader as skipToastHeader$1 } from 'herum-shared/constants';
8
8
  import * as i2$1 from 'herum-shared/services';
9
9
  import { emptyValueFlagForCreationUniqListItem as emptyValueFlagForCreationUniqListItem$1, innerUniqListItemKey as innerUniqListItemKey$1 } from 'herum-shared/services';
10
10
  import * as i2 from '@angular/cdk/bidi';
@@ -983,12 +983,15 @@ class QuizTwoAnswersQuestionComponent {
983
983
  _isTruncatedTitleElement(element) {
984
984
  return isTruncatedTitleElement(element);
985
985
  }
986
+ get questionAnswers() {
987
+ return this.question?.closedContent?.answers ?? [];
988
+ }
986
989
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizTwoAnswersQuestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
987
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizTwoAnswersQuestionComponent, isStandalone: false, selector: "quiz-two-answers-question", inputs: { question: "question", userAnswers: "userAnswers", isSubmitted: "isSubmitted" }, outputs: { onAnswersChange: "onAnswersChange" }, ngImport: i0, template: "<div class=\"answers-container\">\r\n <div class=\"answer-item herum-card\" *ngFor=\"let answer of question.answers; let i=index\"\r\n [ngClass]=\"_getAnswerClass(answer)\" (click)=\"_onAnswersChange(answer)\">\r\n <p #answerText class=\"w-100 \" [matTooltip]=\"_isTruncatedTitleElement(answerText)? answer.content : ''\">\r\n {{ answer.content | ellipsis:answerText }}\r\n </p>\r\n </div>\r\n</div>", styles: [".answers-container{display:flex;flex-direction:row;gap:48px;text-align:center;max-height:200px;justify-content:space-evenly}.answers-container .answer-item{display:flex;justify-content:center;transition:transform .3s ease;align-items:center;cursor:pointer;min-width:35%;min-height:90px;padding:20px;border-radius:20px}.answers-container .answer-item p{font-size:24px;font-weight:600;margin:0;-webkit-user-select:none;user-select:none}.answers-container .answer-item:active{transform:scale(.95);transition:transform .3s ease}.answers-container .selected-answer{outline:2px solid var(--icons-color);color:#fff;transform:scale(1.02);transition:transform .3s ease}.answers-container .correct{border:2px solid var(--icons-color)}.answers-container .wrong{border:2px solid var(--error-color)}.answers-container .submitted-quiz{cursor:auto;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: EllipsisPipe, name: "ellipsis" }] });
990
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizTwoAnswersQuestionComponent, isStandalone: false, selector: "quiz-two-answers-question", inputs: { question: "question", userAnswers: "userAnswers", isSubmitted: "isSubmitted" }, outputs: { onAnswersChange: "onAnswersChange" }, ngImport: i0, template: "<div class=\"answers-container\">\r\n <div class=\"answer-item herum-card\" *ngFor=\"let answer of questionAnswers; let i=index\"\r\n [ngClass]=\"_getAnswerClass(answer)\" (click)=\"_onAnswersChange(answer)\">\r\n <p #answerText class=\"w-100 \" [matTooltip]=\"_isTruncatedTitleElement(answerText)? answer.content : ''\">\r\n {{ answer.content | ellipsis:answerText }}\r\n </p>\r\n </div>\r\n</div>", styles: [".answers-container{display:flex;flex-direction:row;gap:48px;text-align:center;max-height:200px;justify-content:space-evenly}.answers-container .answer-item{display:flex;justify-content:center;transition:transform .3s ease;align-items:center;cursor:pointer;min-width:35%;min-height:90px;padding:20px;border-radius:20px}.answers-container .answer-item p{font-size:24px;font-weight:600;margin:0;-webkit-user-select:none;user-select:none}.answers-container .answer-item:active{transform:scale(.95);transition:transform .3s ease}.answers-container .selected-answer{outline:2px solid var(--icons-color);color:#fff;transform:scale(1.02);transition:transform .3s ease}.answers-container .correct{border:2px solid var(--icons-color)}.answers-container .wrong{border:2px solid var(--error-color)}.answers-container .submitted-quiz{cursor:auto;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: EllipsisPipe, name: "ellipsis" }] });
988
991
  }
989
992
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizTwoAnswersQuestionComponent, decorators: [{
990
993
  type: Component,
991
- args: [{ standalone: false, selector: 'quiz-two-answers-question', template: "<div class=\"answers-container\">\r\n <div class=\"answer-item herum-card\" *ngFor=\"let answer of question.answers; let i=index\"\r\n [ngClass]=\"_getAnswerClass(answer)\" (click)=\"_onAnswersChange(answer)\">\r\n <p #answerText class=\"w-100 \" [matTooltip]=\"_isTruncatedTitleElement(answerText)? answer.content : ''\">\r\n {{ answer.content | ellipsis:answerText }}\r\n </p>\r\n </div>\r\n</div>", styles: [".answers-container{display:flex;flex-direction:row;gap:48px;text-align:center;max-height:200px;justify-content:space-evenly}.answers-container .answer-item{display:flex;justify-content:center;transition:transform .3s ease;align-items:center;cursor:pointer;min-width:35%;min-height:90px;padding:20px;border-radius:20px}.answers-container .answer-item p{font-size:24px;font-weight:600;margin:0;-webkit-user-select:none;user-select:none}.answers-container .answer-item:active{transform:scale(.95);transition:transform .3s ease}.answers-container .selected-answer{outline:2px solid var(--icons-color);color:#fff;transform:scale(1.02);transition:transform .3s ease}.answers-container .correct{border:2px solid var(--icons-color)}.answers-container .wrong{border:2px solid var(--error-color)}.answers-container .submitted-quiz{cursor:auto;pointer-events:none}\n"] }]
994
+ args: [{ standalone: false, selector: 'quiz-two-answers-question', template: "<div class=\"answers-container\">\r\n <div class=\"answer-item herum-card\" *ngFor=\"let answer of questionAnswers; let i=index\"\r\n [ngClass]=\"_getAnswerClass(answer)\" (click)=\"_onAnswersChange(answer)\">\r\n <p #answerText class=\"w-100 \" [matTooltip]=\"_isTruncatedTitleElement(answerText)? answer.content : ''\">\r\n {{ answer.content | ellipsis:answerText }}\r\n </p>\r\n </div>\r\n</div>", styles: [".answers-container{display:flex;flex-direction:row;gap:48px;text-align:center;max-height:200px;justify-content:space-evenly}.answers-container .answer-item{display:flex;justify-content:center;transition:transform .3s ease;align-items:center;cursor:pointer;min-width:35%;min-height:90px;padding:20px;border-radius:20px}.answers-container .answer-item p{font-size:24px;font-weight:600;margin:0;-webkit-user-select:none;user-select:none}.answers-container .answer-item:active{transform:scale(.95);transition:transform .3s ease}.answers-container .selected-answer{outline:2px solid var(--icons-color);color:#fff;transform:scale(1.02);transition:transform .3s ease}.answers-container .correct{border:2px solid var(--icons-color)}.answers-container .wrong{border:2px solid var(--error-color)}.answers-container .submitted-quiz{cursor:auto;pointer-events:none}\n"] }]
992
995
  }], propDecorators: { question: [{
993
996
  type: Input
994
997
  }], userAnswers: [{
@@ -1080,7 +1083,7 @@ class HerumRadioButtonComponent {
1080
1083
  }
1081
1084
  this.selectedOptionId = value.id;
1082
1085
  this.type = value.type;
1083
- this.isBlocked = value.isBlocked || this.isBlocked;
1086
+ this.isBlocked = value.hasOwnProperty('isBlocked') ? !!value.isBlocked : false;
1084
1087
  }
1085
1088
  registerOnChange(fn) {
1086
1089
  this.onChange = fn;
@@ -1130,68 +1133,83 @@ class QuizOneAnswerQuestionComponent {
1130
1133
  onAnswersChange = new EventEmitter();
1131
1134
  convertedOptions;
1132
1135
  selectedAnswer = new FormControl({ type: '', id: '' }, Validators.required);
1133
- destroySubject$ = new Subject();
1134
1136
  answerNotes = [];
1135
1137
  correctAnswer;
1136
1138
  constructor(changeDetectorRef) {
1137
1139
  this.changeDetectorRef = changeDetectorRef;
1138
1140
  }
1139
1141
  ngOnChanges(changes) {
1140
- if (changes['question']?.currentValue) {
1141
- this.answerNotes = this.getAnswerNotes(this.question);
1142
- this.convertedOptions = this.convertToOptions();
1143
- this.changeDetectorRef.detectChanges();
1144
- const chosenAnswer = this.userAnswers.find(userAnswer => userAnswer.isChosen);
1145
- if (chosenAnswer && !this.quizData.isSubmitted)
1146
- this.selectedAnswer.setValue({ id: chosenAnswer.id, type: radioButtonTypes$1?.checked }, { emitEvent: false });
1147
- if (this.quizData.isSubmitted || this.areAnswersRevealed || this.isCheckingMode) {
1148
- const userAnswers = this.quizData.userAnswers.find((userAnswer) => userAnswer.id === this.question.id);
1149
- const chosenAnswerId = userAnswers.userAnswers.find((answer) => answer.isChosen)?.id;
1150
- const type = this.isCheckedAnswerCorrect(chosenAnswerId, this.quizData) ? radioButtonTypes$1?.checked : radioButtonTypes$1?.error;
1151
- if (type === radioButtonTypes$1?.error && (this.areAnswersRevealed || this.isCheckingMode)) {
1152
- const correctAnswer = this.question.answers.find(answer => answer.isCorrect);
1153
- if (correctAnswer)
1154
- this.correctAnswer = { id: correctAnswer.id, name: correctAnswer.content };
1155
- }
1156
- this.selectedAnswer.setValue({ id: chosenAnswerId, type, isBlocked: true }, { emitEvent: false });
1157
- }
1142
+ const shouldUpdateViewState = !!(changes['question'] ||
1143
+ changes['userAnswers'] ||
1144
+ changes['quizData'] ||
1145
+ changes['areAnswersRevealed'] ||
1146
+ changes['isCheckingMode'] ||
1147
+ changes['areAnswersBlocked']);
1148
+ if (!shouldUpdateViewState || !this.question)
1149
+ return;
1150
+ this.answerNotes = this.getAnswerNotes(this.question);
1151
+ this.convertedOptions = this.convertToOptions();
1152
+ this.correctAnswer = undefined;
1153
+ this.changeDetectorRef.detectChanges();
1154
+ const chosenAnswerId = this.getChosenAnswerId();
1155
+ if (!chosenAnswerId) {
1156
+ this.selectedAnswer.setValue({ id: '', type: '', isBlocked: this.isRadioBlocked }, { emitEvent: false });
1157
+ return;
1158
1158
  }
1159
+ const isResultMode = !!(this.quizData?.isSubmitted || this.areAnswersRevealed || this.isCheckingMode);
1160
+ if (!isResultMode) {
1161
+ this.selectedAnswer.setValue({ id: chosenAnswerId, type: radioButtonTypes$1.checked, isBlocked: this.isRadioBlocked }, { emitEvent: false });
1162
+ return;
1163
+ }
1164
+ const type = this.isCheckedAnswerCorrect(chosenAnswerId, this.quizData) ? radioButtonTypes$1.checked : radioButtonTypes$1.error;
1165
+ if (type === radioButtonTypes$1.error && (this.areAnswersRevealed || this.isCheckingMode)) {
1166
+ const correctAnswer = this.questionAnswers.find(answer => answer.isCorrect);
1167
+ if (correctAnswer)
1168
+ this.correctAnswer = { id: correctAnswer.id, name: correctAnswer.content };
1169
+ }
1170
+ this.selectedAnswer.setValue({ id: chosenAnswerId, type, isBlocked: true }, { emitEvent: false });
1171
+ }
1172
+ get isRadioBlocked() {
1173
+ return this.areAnswersBlocked || this.areAnswersRevealed || this.isCheckingMode;
1159
1174
  }
1160
1175
  getAnswerNotes(question) {
1161
- return question.answers.map(answer => {
1176
+ return (question.closedContent?.answers ?? []).map(answer => {
1162
1177
  if (answer.note)
1163
1178
  return answer.note;
1164
1179
  });
1165
1180
  }
1166
1181
  convertToOptions() {
1167
- return this.question.answers.map(answer => {
1168
- return { id: answer.id, name: answer.content };
1169
- });
1182
+ return this.questionAnswers.map(answer => ({ id: answer.id, name: answer.content }));
1183
+ }
1184
+ getChosenAnswerId() {
1185
+ const selectedAnswerByInput = (this.userAnswers ?? []).find(userAnswer => userAnswer?.isChosen !== false);
1186
+ if (selectedAnswerByInput?.id)
1187
+ return selectedAnswerByInput.id;
1188
+ const selectedAnswerByQuizData = this.quizData?.userAnswers?.find((userAnswer) => userAnswer.id === this.question.id)
1189
+ ?.userAnswers?.find(answer => answer?.isChosen !== false);
1190
+ return selectedAnswerByQuizData?.id;
1170
1191
  }
1171
1192
  isCheckedAnswerCorrect(answerId, quizData) {
1172
- return quizData.questions.find((question) => question.answers?.find((answer) => answer.id === answerId)?.isCorrect);
1193
+ return quizData.questions.find((question) => question.closedContent?.answers?.find((answer) => answer.id === answerId)?.isCorrect);
1173
1194
  }
1174
- ngOnInit() {
1175
- this.selectedAnswer.valueChanges.pipe(takeUntil(this.destroySubject$))
1176
- .subscribe(result => {
1177
- if (result)
1178
- this.onAnswersChange.emit([{
1179
- id: result.id,
1180
- index: this.question.answers.findIndex(answer => answer.id == result.id),
1181
- isChosen: true
1182
- }]);
1183
- });
1195
+ _onAnswerSelected(answerId) {
1196
+ if (!answerId)
1197
+ return;
1198
+ this.onAnswersChange.emit([{
1199
+ id: answerId,
1200
+ index: this.questionAnswers.findIndex(answer => answer.id === answerId),
1201
+ isChosen: true
1202
+ }]);
1184
1203
  }
1185
- ngOnDestroy() {
1186
- this.destroySubject$.next(null);
1187
- this.destroySubject$.complete();
1204
+ get questionAnswers() {
1205
+ return this.question?.closedContent?.answers ?? [];
1188
1206
  }
1189
1207
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizOneAnswerQuestionComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1190
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizOneAnswerQuestionComponent, isStandalone: false, selector: "quiz-one-answer-question", inputs: { instructionTitle: "instructionTitle", question: "question", userAnswers: "userAnswers", quizData: "quizData", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", isCheckingMode: "isCheckingMode" }, outputs: { onAnswersChange: "onAnswersChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"instructionTitle\" class=\"instruction-title\">{{ instructionTitle }}</div>\r\n\r\n<herum-radio-button [options]=\"convertedOptions\" [secondarySelectedOption]=\"correctAnswer\"\r\n [showAdditionalOptionsText]=\"areAnswersRevealed || isCheckingMode\" [isBlocked]=\"areAnswersBlocked\"\r\n [isVertical]=\"true\" [formControl]=\"selectedAnswer\"\r\n [ngClass]=\"{'revealed-answers':areAnswersRevealed || isCheckingMode}\" [additionalOptionsText]=\"answerNotes\">\r\n</herum-radio-button>", styles: ["", ".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HerumRadioButtonComponent, selector: "herum-radio-button", inputs: ["options", "isValid", "errorMsg", "isVertical", "isBlocked", "type", "selectedOption", "additionalOptionsText", "showAdditionalOptionsText", "secondarySelectedOption"], outputs: ["selectOptionEmitter"] }] });
1208
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizOneAnswerQuestionComponent, isStandalone: false, selector: "quiz-one-answer-question", inputs: { instructionTitle: "instructionTitle", question: "question", userAnswers: "userAnswers", quizData: "quizData", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", isCheckingMode: "isCheckingMode" }, outputs: { onAnswersChange: "onAnswersChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"instructionTitle\" class=\"instruction-title\">{{ instructionTitle }}</div>\r\n\r\n<herum-radio-button [options]=\"convertedOptions\" [secondarySelectedOption]=\"correctAnswer\"\r\n [showAdditionalOptionsText]=\"areAnswersRevealed || isCheckingMode\" [isBlocked]=\"areAnswersBlocked\"\r\n [isVertical]=\"true\" [formControl]=\"selectedAnswer\" (selectOptionEmitter)=\"_onAnswerSelected($event)\"\r\n [ngClass]=\"{'revealed-answers':areAnswersRevealed || isCheckingMode}\" [additionalOptionsText]=\"answerNotes\">\r\n</herum-radio-button>", styles: ["", ".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HerumRadioButtonComponent, selector: "herum-radio-button", inputs: ["options", "isValid", "errorMsg", "isVertical", "isBlocked", "type", "selectedOption", "additionalOptionsText", "showAdditionalOptionsText", "secondarySelectedOption"], outputs: ["selectOptionEmitter"] }] });
1191
1209
  }
1192
1210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizOneAnswerQuestionComponent, decorators: [{
1193
1211
  type: Component,
1194
- args: [{ standalone: false, selector: 'quiz-one-answer-question', template: "<div *ngIf=\"instructionTitle\" class=\"instruction-title\">{{ instructionTitle }}</div>\r\n\r\n<herum-radio-button [options]=\"convertedOptions\" [secondarySelectedOption]=\"correctAnswer\"\r\n [showAdditionalOptionsText]=\"areAnswersRevealed || isCheckingMode\" [isBlocked]=\"areAnswersBlocked\"\r\n [isVertical]=\"true\" [formControl]=\"selectedAnswer\"\r\n [ngClass]=\"{'revealed-answers':areAnswersRevealed || isCheckingMode}\" [additionalOptionsText]=\"answerNotes\">\r\n</herum-radio-button>", styles: [".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"] }]
1212
+ args: [{ standalone: false, selector: 'quiz-one-answer-question', template: "<div *ngIf=\"instructionTitle\" class=\"instruction-title\">{{ instructionTitle }}</div>\r\n\r\n<herum-radio-button [options]=\"convertedOptions\" [secondarySelectedOption]=\"correctAnswer\"\r\n [showAdditionalOptionsText]=\"areAnswersRevealed || isCheckingMode\" [isBlocked]=\"areAnswersBlocked\"\r\n [isVertical]=\"true\" [formControl]=\"selectedAnswer\" (selectOptionEmitter)=\"_onAnswerSelected($event)\"\r\n [ngClass]=\"{'revealed-answers':areAnswersRevealed || isCheckingMode}\" [additionalOptionsText]=\"answerNotes\">\r\n</herum-radio-button>", styles: [".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"] }]
1195
1213
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { instructionTitle: [{
1196
1214
  type: Input
1197
1215
  }], question: [{
@@ -1404,32 +1422,37 @@ class QuizMultiAnswerQuestionComponent {
1404
1422
  this.answersForm = this.fb.group({});
1405
1423
  }
1406
1424
  ngOnChanges(changes) {
1407
- if (changes['question'] && this.question) {
1408
- if (changes['question'].currentValue.id !== changes['question'].previousValue?.id) {
1409
- if (Object.keys(this.answersForm.controls).length)
1410
- this.answersForm = this.fb.group({});
1411
- this.question.answers.forEach((answer, index) => {
1412
- const controlName = `${this.controlNamePrefix}${index}`;
1413
- this.answersForm.addControl(controlName, new FormControl(this.getFormControlValue(index)));
1414
- this.answersForm.get(controlName).valueChanges
1415
- .pipe(takeUntil(this.destroySubject$))
1416
- .subscribe((isChosen) => this._onAnswersChange(this.question.answers[index], isChosen));
1417
- });
1418
- }
1419
- else {
1420
- this.question.answers.forEach((answer, index) => {
1421
- const controlName = `${this.controlNamePrefix}${index}`;
1422
- this.answersForm.controls[controlName].setValue(this.getFormControlValue(index), { emitEvent: false });
1423
- });
1424
- }
1425
- if (this.areAnswersRevealed || this.isCheckingMode)
1426
- this.setAnswerTypeAttributes();
1427
- if (this.correctAnswerCount === null || this.correctAnswerCount === undefined)
1428
- this.correctAnswerCount = this.question.answers.filter(answer => answer.isCorrect).length;
1429
- }
1425
+ if (!this.question)
1426
+ return;
1427
+ if (changes['question']?.currentValue)
1428
+ this.initQuestionFormControls();
1429
+ else if (changes['userAnswers'] || changes['quizData'] || changes['areAnswersRevealed'] || changes['isCheckingMode'])
1430
+ this.syncQuestionFormControls();
1431
+ if (this.areAnswersRevealed || this.isCheckingMode)
1432
+ this.setAnswerTypeAttributes();
1433
+ else
1434
+ this.answerTypeAttributes = [];
1435
+ if (this.correctAnswerCount === null || this.correctAnswerCount === undefined)
1436
+ this.correctAnswerCount = this.questionAnswers.filter(answer => answer.isCorrect).length;
1437
+ }
1438
+ initQuestionFormControls() {
1439
+ this.answersForm = this.fb.group({});
1440
+ this.questionAnswers.forEach((answer, index) => {
1441
+ const controlName = `${this.controlNamePrefix}${index}`;
1442
+ this.answersForm.addControl(controlName, new FormControl(this.getFormControlValue(index)));
1443
+ this.answersForm.get(controlName).valueChanges
1444
+ .pipe(takeUntil(this.destroySubject$))
1445
+ .subscribe((value) => this._onAnswersChange(this.questionAnswers[index], this.toIsChosen(value)));
1446
+ });
1447
+ }
1448
+ syncQuestionFormControls() {
1449
+ this.questionAnswers.forEach((answer, index) => {
1450
+ const controlName = `${this.controlNamePrefix}${index}`;
1451
+ this.answersForm.get(controlName)?.setValue(this.getFormControlValue(index), { emitEvent: false });
1452
+ });
1430
1453
  }
1431
1454
  setAnswerTypeAttributes() {
1432
- this.answerTypeAttributes = this.question.answers.map((answer, index) => {
1455
+ this.answerTypeAttributes = this.questionAnswers.map((answer, index) => {
1433
1456
  const answerForm = this.answersForm.value[`${this.controlNamePrefix}` + index];
1434
1457
  return (!answerForm.type && this.iAnswerCorrect(answer.id, this.quizData)) ?
1435
1458
  'correct-not-selected' :
@@ -1441,7 +1464,8 @@ class QuizMultiAnswerQuestionComponent {
1441
1464
  currentCheckbox._onClick();
1442
1465
  }
1443
1466
  _isAnswerChecked(answerId) {
1444
- return this.userAnswers.find(userAnswer => userAnswer.id == answerId)?.isChosen;
1467
+ const answer = this.userAnswers.find(userAnswer => userAnswer.id == answerId);
1468
+ return answer ? answer.isChosen !== false : false;
1445
1469
  }
1446
1470
  getTypeCheckbox(answerId) {
1447
1471
  if (!this._isAnswerChecked(answerId))
@@ -1452,26 +1476,36 @@ class QuizMultiAnswerQuestionComponent {
1452
1476
  return this.iAnswerCorrect(answerId, this.quizData) ? checkboxTypes$1.checked : checkboxTypes$1.error;
1453
1477
  }
1454
1478
  iAnswerCorrect(answerId, quizData) {
1455
- return quizData.questions.find((question) => question.answers?.find((answer) => answer.id === answerId)?.isCorrect);
1479
+ return quizData.questions.find((question) => question.closedContent?.answers?.find((answer) => answer.id === answerId)?.isCorrect);
1456
1480
  }
1457
1481
  _onAnswersChange(answer, isChosen) {
1458
- let userAnswer = this.userAnswers.find(userAnswer => userAnswer.id == answer.id);
1459
- userAnswer ? (userAnswer.isChosen = isChosen) :
1460
- this.userAnswers.push({
1482
+ const selectedUserAnswers = [...(this.userAnswers ?? [])].filter(userAnswer => userAnswer?.isChosen !== false);
1483
+ const userAnswer = selectedUserAnswers.find(currentUserAnswer => currentUserAnswer.id == answer.id);
1484
+ if (userAnswer)
1485
+ userAnswer.isChosen = isChosen;
1486
+ else {
1487
+ selectedUserAnswers.push({
1461
1488
  id: answer.id,
1462
1489
  index: answer.index,
1463
1490
  isChosen
1464
1491
  });
1465
- this.isValid = this.userAnswers.length == this.correctAnswerCount;
1466
- this.onAnswersChange.emit(this.userAnswers);
1492
+ }
1493
+ const normalizedUserAnswers = selectedUserAnswers.filter(currentUserAnswer => currentUserAnswer?.isChosen !== false);
1494
+ this.isValid = normalizedUserAnswers.length == this.correctAnswerCount;
1495
+ this.onAnswersChange.emit(normalizedUserAnswers);
1467
1496
  this.onValidationChange.emit(this.isValid);
1468
1497
  }
1469
1498
  getFormControlValue(index) {
1470
1499
  return {
1471
- type: this.getTypeCheckbox(this.question.answers[index].id),
1472
- isChecked: this._isAnswerChecked(this.question.answers[index].id)
1500
+ type: this.getTypeCheckbox(this.questionAnswers[index].id),
1501
+ isChecked: this._isAnswerChecked(this.questionAnswers[index].id)
1473
1502
  };
1474
1503
  }
1504
+ toIsChosen(value) {
1505
+ if (typeof value === 'boolean')
1506
+ return value;
1507
+ return !!value?.isChecked;
1508
+ }
1475
1509
  get controlNamePrefix() {
1476
1510
  return 'controlName';
1477
1511
  }
@@ -1479,16 +1513,19 @@ class QuizMultiAnswerQuestionComponent {
1479
1513
  get isBlocked() {
1480
1514
  return this.quizData?.isSubmitted || this.areAnswersBlocked || this.areAnswersRevealed;
1481
1515
  }
1516
+ get questionAnswers() {
1517
+ return this.question?.closedContent?.answers ?? [];
1518
+ }
1482
1519
  ngOnDestroy() {
1483
1520
  this.destroySubject$.next(null);
1484
1521
  this.destroySubject$.complete();
1485
1522
  }
1486
1523
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizMultiAnswerQuestionComponent, deps: [{ token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
1487
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizMultiAnswerQuestionComponent, isStandalone: false, selector: "quiz-multi-answer-question", inputs: { question: "question", quizData: "quizData", userAnswers: "userAnswers", isCheckingMode: "isCheckingMode", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", correctAnswerCount: "correctAnswerCount" }, outputs: { onAnswersChange: "onAnswersChange", onValidationChange: "onValidationChange" }, viewQueries: [{ propertyName: "checkboxes", predicate: HerumCheckboxComponent$1, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"main-container\">\r\n <p class=\"correct-answer-count\">\u05D9\u05E9 \u05DC\u05E1\u05DE\u05DF {{ correctAnswerCount }} \u05EA\u05E9\u05D5\u05D1\u05D5\u05EA</p>\r\n\r\n <form *ngIf=\"question.answers\" [formGroup]=\"answersForm\" class=\"answers-container\">\r\n <div class=\"answer-item\" *ngFor=\"let answer of question.answers;let i=index\">\r\n <div class=\"answer-container\" [ngClass]=\"{'revealed-answers':(areAnswersRevealed || isCheckingMode)}\"\r\n [attr.type]=\"(areAnswersRevealed || isCheckingMode) ? answerTypeAttributes[i] : ''\"\r\n [attr.includes-additional-option-text]=\"(additionalOptionsText && additionalOptionsText[i]) ? 'true' : 'false'\">\r\n <herum-checkbox [isBlocked]=\"isBlocked\" [formControlName]=\"controlNamePrefix + i\"\r\n [id]=\"controlNamePrefix + i\">\r\n </herum-checkbox>\r\n\r\n <p class=\"answer-text cursor-pointer\" [ngClass]=\"{'cursor-pointer':!isBlocked}\"\r\n (click)=\"_onAnswerClicked(i)\">{{ answer.content }}</p>\r\n </div>\r\n\r\n <span *ngIf=\"answer.note && (areAnswersRevealed || isCheckingMode)\" class=\"answer-note\">\r\n {{ answer.note }}\r\n </span>\r\n </div>\r\n </form>\r\n</div>", styles: [".answer-text{line-height:1;font-size:14px;font-weight:700}.correct-answer-count{margin-block-end:0;font-size:14px}.answers-container,.main-container{display:flex;flex-direction:column;gap:8px;width:100%}.answer-container{display:flex;align-items:center;gap:8px}.answer-container,.answer-note{flex:1}\n", ".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: HerumCheckboxComponent, selector: "herum-checkbox", inputs: ["type", "isChecked", "isBlocked"], outputs: ["checkedEmitter"] }] });
1524
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizMultiAnswerQuestionComponent, isStandalone: false, selector: "quiz-multi-answer-question", inputs: { question: "question", quizData: "quizData", userAnswers: "userAnswers", isCheckingMode: "isCheckingMode", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", correctAnswerCount: "correctAnswerCount" }, outputs: { onAnswersChange: "onAnswersChange", onValidationChange: "onValidationChange" }, viewQueries: [{ propertyName: "checkboxes", predicate: HerumCheckboxComponent$1, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"main-container\">\r\n <p class=\"correct-answer-count\">\u05D9\u05E9 \u05DC\u05E1\u05DE\u05DF {{ correctAnswerCount }} \u05EA\u05E9\u05D5\u05D1\u05D5\u05EA</p>\r\n\r\n <form *ngIf=\"questionAnswers.length\" [formGroup]=\"answersForm\" class=\"answers-container\">\r\n <div class=\"answer-item\" *ngFor=\"let answer of questionAnswers;let i=index\">\r\n <div class=\"answer-container\" [ngClass]=\"{'revealed-answers':(areAnswersRevealed || isCheckingMode)}\"\r\n [attr.type]=\"(areAnswersRevealed || isCheckingMode) ? answerTypeAttributes[i] : ''\"\r\n [attr.includes-additional-option-text]=\"(additionalOptionsText && additionalOptionsText[i]) ? 'true' : 'false'\">\r\n <herum-checkbox [isBlocked]=\"isBlocked\" [formControlName]=\"controlNamePrefix + i\"\r\n [id]=\"controlNamePrefix + i\">\r\n </herum-checkbox>\r\n\r\n <p class=\"answer-text cursor-pointer\" [ngClass]=\"{'cursor-pointer':!isBlocked}\"\r\n (click)=\"_onAnswerClicked(i)\">{{ answer.content }}</p>\r\n </div>\r\n\r\n <span *ngIf=\"answer.note && (areAnswersRevealed || isCheckingMode)\" class=\"answer-note\">\r\n {{ answer.note }}\r\n </span>\r\n </div>\r\n </form>\r\n</div>", styles: [".answer-text{line-height:1;font-size:14px;font-weight:700}.correct-answer-count{margin-block-end:0;font-size:14px}.answers-container,.main-container{display:flex;flex-direction:column;gap:8px;width:100%}.answer-container{display:flex;align-items:center;gap:8px}.answer-container,.answer-note{flex:1}\n", ".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: HerumCheckboxComponent, selector: "herum-checkbox", inputs: ["type", "isChecked", "isBlocked"], outputs: ["checkedEmitter"] }] });
1488
1525
  }
1489
1526
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizMultiAnswerQuestionComponent, decorators: [{
1490
1527
  type: Component,
1491
- args: [{ standalone: false, selector: 'quiz-multi-answer-question', template: "<div class=\"main-container\">\r\n <p class=\"correct-answer-count\">\u05D9\u05E9 \u05DC\u05E1\u05DE\u05DF {{ correctAnswerCount }} \u05EA\u05E9\u05D5\u05D1\u05D5\u05EA</p>\r\n\r\n <form *ngIf=\"question.answers\" [formGroup]=\"answersForm\" class=\"answers-container\">\r\n <div class=\"answer-item\" *ngFor=\"let answer of question.answers;let i=index\">\r\n <div class=\"answer-container\" [ngClass]=\"{'revealed-answers':(areAnswersRevealed || isCheckingMode)}\"\r\n [attr.type]=\"(areAnswersRevealed || isCheckingMode) ? answerTypeAttributes[i] : ''\"\r\n [attr.includes-additional-option-text]=\"(additionalOptionsText && additionalOptionsText[i]) ? 'true' : 'false'\">\r\n <herum-checkbox [isBlocked]=\"isBlocked\" [formControlName]=\"controlNamePrefix + i\"\r\n [id]=\"controlNamePrefix + i\">\r\n </herum-checkbox>\r\n\r\n <p class=\"answer-text cursor-pointer\" [ngClass]=\"{'cursor-pointer':!isBlocked}\"\r\n (click)=\"_onAnswerClicked(i)\">{{ answer.content }}</p>\r\n </div>\r\n\r\n <span *ngIf=\"answer.note && (areAnswersRevealed || isCheckingMode)\" class=\"answer-note\">\r\n {{ answer.note }}\r\n </span>\r\n </div>\r\n </form>\r\n</div>", styles: [".answer-text{line-height:1;font-size:14px;font-weight:700}.correct-answer-count{margin-block-end:0;font-size:14px}.answers-container,.main-container{display:flex;flex-direction:column;gap:8px;width:100%}.answer-container{display:flex;align-items:center;gap:8px}.answer-container,.answer-note{flex:1}\n", ".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"] }]
1528
+ args: [{ standalone: false, selector: 'quiz-multi-answer-question', template: "<div class=\"main-container\">\r\n <p class=\"correct-answer-count\">\u05D9\u05E9 \u05DC\u05E1\u05DE\u05DF {{ correctAnswerCount }} \u05EA\u05E9\u05D5\u05D1\u05D5\u05EA</p>\r\n\r\n <form *ngIf=\"questionAnswers.length\" [formGroup]=\"answersForm\" class=\"answers-container\">\r\n <div class=\"answer-item\" *ngFor=\"let answer of questionAnswers;let i=index\">\r\n <div class=\"answer-container\" [ngClass]=\"{'revealed-answers':(areAnswersRevealed || isCheckingMode)}\"\r\n [attr.type]=\"(areAnswersRevealed || isCheckingMode) ? answerTypeAttributes[i] : ''\"\r\n [attr.includes-additional-option-text]=\"(additionalOptionsText && additionalOptionsText[i]) ? 'true' : 'false'\">\r\n <herum-checkbox [isBlocked]=\"isBlocked\" [formControlName]=\"controlNamePrefix + i\"\r\n [id]=\"controlNamePrefix + i\">\r\n </herum-checkbox>\r\n\r\n <p class=\"answer-text cursor-pointer\" [ngClass]=\"{'cursor-pointer':!isBlocked}\"\r\n (click)=\"_onAnswerClicked(i)\">{{ answer.content }}</p>\r\n </div>\r\n\r\n <span *ngIf=\"answer.note && (areAnswersRevealed || isCheckingMode)\" class=\"answer-note\">\r\n {{ answer.note }}\r\n </span>\r\n </div>\r\n </form>\r\n</div>", styles: [".answer-text{line-height:1;font-size:14px;font-weight:700}.correct-answer-count{margin-block-end:0;font-size:14px}.answers-container,.main-container{display:flex;flex-direction:column;gap:8px;width:100%}.answer-container{display:flex;align-items:center;gap:8px}.answer-container,.answer-note{flex:1}\n", ".quiz-container{display:flex;flex-direction:column;gap:16px}.quiz-container p,.quiz-container b{font-size:16px;margin-bottom:.25rem}.quiz-container .quiz-title{font-weight:700}.quiz-container .error-message{color:var(--error-color);font-weight:700}.quiz-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container{display:flex;flex-direction:column;gap:16px}.answers-container .answer-item{display:flex;flex-direction:row;gap:8px}.answers-container .answer-note{background-color:var(--light-text-color);border-radius:var(border-radius);font-size:14px}\n"] }]
1492
1529
  }], ctorParameters: () => [{ type: i1$2.FormBuilder }], propDecorators: { question: [{
1493
1530
  type: Input
1494
1531
  }], quizData: [{
@@ -1535,21 +1572,24 @@ class HerumQuizComponent {
1535
1572
  submissionsCounter: 2,
1536
1573
  isSubmitted: false,
1537
1574
  currentQuestion: 0,
1538
- resourceName: 'מבחן לדוגמא',
1575
+ resourceName: 'Quiz',
1539
1576
  questions: [
1540
1577
  {
1541
1578
  id: '1',
1542
1579
  isSkipped: false,
1543
- text: 'מי חיפף בעיצוב של המבחנים?',
1580
+ text: 'Sample question',
1544
1581
  index: 0,
1545
- answers: [
1546
- {
1547
- id: '1',
1548
- content: 'אביקס',
1549
- isCorrect: true,
1550
- index: 1
1551
- }
1552
- ]
1582
+ closedContent: {
1583
+ answers: [
1584
+ {
1585
+ id: '1',
1586
+ content: 'Answer',
1587
+ isCorrect: true,
1588
+ index: 1
1589
+ }
1590
+ ],
1591
+ numberOfCorrectAnswers: 1
1592
+ }
1553
1593
  }
1554
1594
  ]
1555
1595
  };
@@ -1559,8 +1599,6 @@ class HerumQuizComponent {
1559
1599
  this.changeDetectorRef = changeDetectorRef;
1560
1600
  }
1561
1601
  ngOnChanges(changes) {
1562
- // if (changes['resource']?.currentValue && this.resource?.quiz)
1563
- // this.quizData = this.resource?.quiz;
1564
1602
  this.mergeQuizUserDataIntoQuizData();
1565
1603
  this.quizData.currentQuestion = this.quizData.isSubmitted ? this.quizData.questions.length + 2 : this.quizData.currentQuestion ? this.quizData.currentQuestion : 0;
1566
1604
  }
@@ -1572,7 +1610,7 @@ class HerumQuizComponent {
1572
1610
  return true;
1573
1611
  if (this.currentQuestionIndex >= this.quizData.questions.length)
1574
1612
  return this.isValidQuiz;
1575
- return this._getUserAnswers(this.quizData.questions[this.currentQuestionIndex]?.id).length == this.getCorrectAnswersCount(this.quizData.questions?.find((userAnswer) => userAnswer.id == this.quizData.questions[this.currentQuestionIndex]?.id));
1613
+ return this._getUserAnswers(this.quizData.questions[this.currentQuestionIndex]?.id).length === this.getCorrectAnswersCount(this.quizData.questions?.find((userAnswer) => userAnswer.id === this.quizData.questions[this.currentQuestionIndex]?.id));
1576
1614
  }
1577
1615
  get nextButtonText() {
1578
1616
  switch (this.quizData.currentQuestion) {
@@ -1583,7 +1621,7 @@ class HerumQuizComponent {
1583
1621
  case this.quizData.questions.length + 1:
1584
1622
  return (this.quizData.isSubmitted ? 'חזרה למסך סיכום' : 'הגשת מבחן');
1585
1623
  case this.quizData.questions.length + 2:
1586
- return 'נסיון חוזר';
1624
+ return 'ניסיון חוזר';
1587
1625
  default:
1588
1626
  return 'לשאלה הבאה';
1589
1627
  }
@@ -1598,29 +1636,30 @@ class HerumQuizComponent {
1598
1636
  get isValidQuiz() {
1599
1637
  if (!this.quizData?.userAnswers)
1600
1638
  return false;
1601
- return this.quizData.questions.length == this.quizData.userAnswers
1602
- .filter(userQuestionAnswer => userQuestionAnswer.userAnswers
1603
- .some(userAnswer => userAnswer.isChosen)).length;
1639
+ return this.quizData.questions.length === this.quizData.userAnswers
1640
+ .filter(userQuestionAnswer => userQuestionAnswer.userAnswers.some(userAnswer => userAnswer.isChosen)).length;
1604
1641
  }
1605
1642
  get isLastQuestion() {
1606
- return this.quizData.currentQuestion == this.quizData.questions.length + 1;
1643
+ return this.quizData.currentQuestion === this.quizData.questions.length + 1;
1607
1644
  }
1608
1645
  getCorrectAnswersCount(question) {
1609
- return question?.answers.filter((answer) => answer.isCorrect).length;
1646
+ if (!question?.closedContent?.answers?.length)
1647
+ return 0;
1648
+ return question.closedContent.numberOfCorrectAnswers ??
1649
+ question.closedContent.answers.filter((answer) => answer.isCorrect).length;
1610
1650
  }
1611
1651
  _nextQuestion(isSkipped = false) {
1612
1652
  this.isCurrentQuestionValid = false;
1613
1653
  if (this.quizData.questions[this.quizData.currentQuestion - 1])
1614
- this.quizData.questions[this.quizData.currentQuestion - 1].isSkipped =
1615
- isSkipped;
1616
- if (this.quizData.currentQuestion == this.quizData.questions.length + 2) {
1654
+ this.quizData.questions[this.quizData.currentQuestion - 1].isSkipped = isSkipped;
1655
+ if (this.quizData.currentQuestion === this.quizData.questions.length + 2) {
1617
1656
  this.startNewQuiz();
1618
1657
  this.isLoading = true;
1619
1658
  }
1620
- if (this.quizData.isSubmitted && (this.quizData.currentQuestion == this.quizData.questions.length ||
1621
- this.quizData.currentQuestion == this.quizData.questions.length + 1))
1659
+ if (this.quizData.isSubmitted && (this.quizData.currentQuestion === this.quizData.questions.length ||
1660
+ this.quizData.currentQuestion === this.quizData.questions.length + 1))
1622
1661
  this.quizData.currentQuestion = this.quizData.questions.length + 1;
1623
- if (!this.quizData.isSubmitted && this.quizData.currentQuestion == this.quizData.questions.length + 1) {
1662
+ if (!this.quizData.isSubmitted && this.quizData.currentQuestion === this.quizData.questions.length + 1) {
1624
1663
  this.isLoading = true;
1625
1664
  this.quizData.isSubmitted = true;
1626
1665
  this.updateQuizUserAnswer(this.quizData.isSubmitted);
@@ -1630,20 +1669,18 @@ class HerumQuizComponent {
1630
1669
  this.changeDetectorRef.detectChanges();
1631
1670
  }
1632
1671
  _getUserAnswers(questionId) {
1633
- let res = this.quizData.userAnswers?.find((userAnswer) => userAnswer.id == questionId);
1634
- return res ? res.userAnswers : [];
1672
+ const result = this.quizData.userAnswers?.find((userAnswer) => userAnswer.id === questionId);
1673
+ return result ? result.userAnswers : [];
1635
1674
  }
1636
1675
  _selectQuestion(questionIndex) {
1637
1676
  this.quizData.currentQuestion = questionIndex + 1;
1638
1677
  }
1639
1678
  _onAnswersChange(userAnswers, questionId) {
1640
- if (!this.quizData.userAnswers) {
1679
+ if (!this.quizData.userAnswers)
1641
1680
  this.quizData.userAnswers = [];
1642
- }
1643
- let question = this.quizData.userAnswers?.find((userAnswer) => userAnswer.id == questionId);
1644
- if (question) {
1681
+ const question = this.quizData.userAnswers.find((userAnswer) => userAnswer.id === questionId);
1682
+ if (question)
1645
1683
  question.userAnswers = userAnswers?.filter(userAnswer => userAnswer.isChosen);
1646
- }
1647
1684
  else {
1648
1685
  this.quizData.userAnswers.push({
1649
1686
  id: questionId,
@@ -1654,7 +1691,7 @@ class HerumQuizComponent {
1654
1691
  }
1655
1692
  }
1656
1693
  updateQuizUserAnswer(isSubmitted) {
1657
- let questionIdsToAnswersIds = {};
1694
+ const questionIdsToAnswersIds = {};
1658
1695
  this.quizData.userAnswers.forEach(userQuestionAnswer => {
1659
1696
  questionIdsToAnswersIds[userQuestionAnswer.id] = userQuestionAnswer.userAnswers.map(userAnswer => userAnswer.id);
1660
1697
  });
@@ -1667,7 +1704,7 @@ class HerumQuizComponent {
1667
1704
  });
1668
1705
  }
1669
1706
  startNewQuiz() {
1670
- let questionIdsToAnswersIds = {};
1707
+ const questionIdsToAnswersIds = {};
1671
1708
  this.quizData.isSubmitted = false;
1672
1709
  this.quizData.currentQuestion = 0;
1673
1710
  this.onGradeUpdate.emit({
@@ -1688,14 +1725,14 @@ class HerumQuizComponent {
1688
1725
  this.quizData.grade = this.resourceSubscription.grade;
1689
1726
  this.quizData.questions = this.quizData.questions
1690
1727
  .filter(question => this.resourceSubscription.quizData.userQuestionsData.some(userQuestionData => userQuestionData.id === question.id))
1691
- .map((question, index) => { return { ...question, index: index }; });
1728
+ .map((question, index) => ({ ...question, index }));
1692
1729
  }
1693
1730
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumQuizComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1694
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumQuizComponent, isStandalone: false, selector: "herum-quiz", inputs: { resourceSubscription: "resourceSubscription", isLoading: "isLoading", isResourceInWideMode: "isResourceInWideMode", resource: "resource", quizData: "quizData" }, outputs: { onGradeUpdate: "onGradeUpdate" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"quiz-container herum-card\">\r\n <ng-container *ngIf=\"!isLoading\">\r\n\r\n <quiz-intro class=\"quiz-padding\" [quizData]=\"quizData\" [resource]=\"resource\"\r\n *ngIf=\"quizData.currentQuestion == 0\">\r\n </quiz-intro>\r\n\r\n <div class=\"herum-card w-100\" *ngIf=\"quizData.currentQuestion > 0\">\r\n <quiz-header [quizData]=\"quizData\" (onSelectQuestion)=\"_selectQuestion($event)\"></quiz-header>\r\n </div>\r\n\r\n <div class=\"quiz-inner-content\" [ngClass]=\"{'justify-content-end':quizData.currentQuestion == 0}\">\r\n <div class=\"question-container quiz-padding\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length + 1\">\r\n <p class=\"question-text\">{{ quizData.questions[currentQuestionIndex]?.text }}</p>\r\n\r\n <ng-container *ngIf=\"quizData.questions[currentQuestionIndex].answers.length != 2\">\r\n <quiz-one-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) == 1\"\r\n [quizData]=\"quizData\" [question]=\"quizData.questions[currentQuestionIndex]\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-one-answer-question>\r\n\r\n <quiz-multi-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) > 1\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [quizData]=\"quizData\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-multi-answer-question>\r\n </ng-container>\r\n\r\n <quiz-two-answers-question *ngIf=\"quizData.questions[currentQuestionIndex].answers.length == 2\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [isSubmitted]=\"quizData.isSubmitted\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-two-answers-question>\r\n </div>\r\n\r\n <quiz-submission class=\"quiz-padding\" *ngIf=\"quizData.currentQuestion == quizData.questions.length + 1\"\r\n [quizData]=\"quizData\" [quizValidation]=\"isValidQuiz\">\r\n </quiz-submission>\r\n\r\n <quiz-grade-sheet *ngIf=\"quizData.currentQuestion == quizData.questions.length + 2\" [quizData]=\"quizData\"\r\n [resourceSubscription]=\"resourceSubscription\">\r\n </quiz-grade-sheet>\r\n\r\n <div class=\"actions-buttons-container quiz-padding\">\r\n <div class=\"left-action-buttons\">\r\n <herum-button [type]=\"'secondary'\" (click)=\"_nextQuestion(true)\" id=\"skip\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length && !this.quizData.isSubmitted \">\r\n \u05D3\u05DC\u05D2 \u05E2\u05DC \u05D4\u05E9\u05D0\u05DC\u05D4\r\n </herum-button>\r\n\r\n <herum-button id=\"next\" [disabled]=\"!currentQuestionValidation\" [type]=\"'primary'\"\r\n (click)=\"_nextQuestion()\">\r\n {{ nextButtonText }}\r\n </herum-button>\r\n </div>\r\n\r\n <herum-button id=\"prev\" *ngIf=\"quizData.currentQuestion > 1 \" [type]=\"'ghost'\"\r\n (click)=\"_previousQuestion()\">\r\n {{ previousButtonText }}\r\n </herum-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <quiz-loader *ngIf=\"isLoading\"></quiz-loader>\r\n</div>", styles: [".herum-card{max-width:unset!important;border-radius:var(--border-radius) var(--border-radius) 0 0}.quiz-container{display:flex;flex-direction:column;background-color:#fff;min-width:50vw;min-height:510px}.quiz-container .quiz-inner-content{display:flex;flex-direction:column;flex:1;justify-content:space-between}.quiz-container .question-container{min-height:325px;overflow-y:auto}.quiz-container .left-action-buttons{display:flex;flex-direction:row;gap:16px}.quiz-container .quiz-padding{padding:24px}.quiz-container .question-text{font-size:18px;font-weight:600;color:var(--text-color);margin:42px 0 28px}.quiz-container .actions-buttons-container{width:100%;display:flex;justify-content:space-between;direction:ltr}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HerumButtonComponent, selector: "herum-button", inputs: ["type", "color", "size", "roundedCorners", "disabled", "isLoading", "name"] }, { kind: "component", type: QuizHeaderComponent, selector: "quiz-header", inputs: ["quizData"], outputs: ["onSelectQuestion", "onReturnToGradePage"] }, { kind: "component", type: QuizTwoAnswersQuestionComponent, selector: "quiz-two-answers-question", inputs: ["question", "userAnswers", "isSubmitted"], outputs: ["onAnswersChange"] }, { kind: "component", type: QuizOneAnswerQuestionComponent, selector: "quiz-one-answer-question", inputs: ["instructionTitle", "question", "userAnswers", "quizData", "areAnswersRevealed", "areAnswersBlocked", "isCheckingMode"], outputs: ["onAnswersChange"] }, { kind: "component", type: QuizSubmissionComponent, selector: "quiz-submission", inputs: ["quizData", "quizValidation"] }, { kind: "component", type: QuizIntroComponent, selector: "quiz-intro", inputs: ["quizData", "showSubmissionsCounter", "allQuestionsRequired", "resource", "areAnswersBlocked", "gradeTextPrefix"] }, { kind: "component", type: QuizGradeSheetComponent, selector: "quiz-grade-sheet", inputs: ["resourceSubscription", "quizData"] }, { kind: "component", type: QuizMultiAnswerQuestionComponent, selector: "quiz-multi-answer-question", inputs: ["question", "quizData", "userAnswers", "isCheckingMode", "areAnswersRevealed", "areAnswersBlocked", "correctAnswerCount"], outputs: ["onAnswersChange", "onValidationChange"] }, { kind: "component", type: QuizLoaderComponent, selector: "quiz-loader" }] });
1731
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumQuizComponent, isStandalone: false, selector: "herum-quiz", inputs: { resourceSubscription: "resourceSubscription", isLoading: "isLoading", isResourceInWideMode: "isResourceInWideMode", resource: "resource", quizData: "quizData" }, outputs: { onGradeUpdate: "onGradeUpdate" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"quiz-container herum-card\">\r\n <ng-container *ngIf=\"!isLoading\">\r\n\r\n <quiz-intro class=\"quiz-padding\" [quizData]=\"quizData\" [resource]=\"resource\"\r\n *ngIf=\"quizData.currentQuestion == 0\">\r\n </quiz-intro>\r\n\r\n <div class=\"herum-card w-100\" *ngIf=\"quizData.currentQuestion > 0\">\r\n <quiz-header [quizData]=\"quizData\" (onSelectQuestion)=\"_selectQuestion($event)\"></quiz-header>\r\n </div>\r\n\r\n <div class=\"quiz-inner-content\" [ngClass]=\"{'justify-content-end':quizData.currentQuestion == 0}\">\r\n <div class=\"question-container quiz-padding\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length + 1\">\r\n <p class=\"question-text\">{{ quizData.questions[currentQuestionIndex]?.text }}</p>\r\n\r\n <ng-container *ngIf=\"(quizData.questions[currentQuestionIndex].closedContent?.answers?.length ?? 0) != 2\">\r\n <quiz-one-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) == 1\"\r\n [quizData]=\"quizData\" [question]=\"quizData.questions[currentQuestionIndex]\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-one-answer-question>\r\n\r\n <quiz-multi-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) > 1\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [quizData]=\"quizData\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-multi-answer-question>\r\n </ng-container>\r\n\r\n <quiz-two-answers-question *ngIf=\"(quizData.questions[currentQuestionIndex].closedContent?.answers?.length ?? 0) == 2\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [isSubmitted]=\"quizData.isSubmitted\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-two-answers-question>\r\n </div>\r\n\r\n <quiz-submission class=\"quiz-padding\" *ngIf=\"quizData.currentQuestion == quizData.questions.length + 1\"\r\n [quizData]=\"quizData\" [quizValidation]=\"isValidQuiz\">\r\n </quiz-submission>\r\n\r\n <quiz-grade-sheet *ngIf=\"quizData.currentQuestion == quizData.questions.length + 2\" [quizData]=\"quizData\"\r\n [resourceSubscription]=\"resourceSubscription\">\r\n </quiz-grade-sheet>\r\n\r\n <div class=\"actions-buttons-container quiz-padding\">\r\n <div class=\"left-action-buttons\">\r\n <herum-button [type]=\"'secondary'\" (click)=\"_nextQuestion(true)\" id=\"skip\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length && !this.quizData.isSubmitted \">\r\n \u05D3\u05DC\u05D2 \u05E2\u05DC \u05D4\u05E9\u05D0\u05DC\u05D4\r\n </herum-button>\r\n\r\n <herum-button id=\"next\" [disabled]=\"!currentQuestionValidation\" [type]=\"'primary'\"\r\n (click)=\"_nextQuestion()\">\r\n {{ nextButtonText }}\r\n </herum-button>\r\n </div>\r\n\r\n <herum-button id=\"prev\" *ngIf=\"quizData.currentQuestion > 1 \" [type]=\"'ghost'\"\r\n (click)=\"_previousQuestion()\">\r\n {{ previousButtonText }}\r\n </herum-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <quiz-loader *ngIf=\"isLoading\"></quiz-loader>\r\n</div>", styles: [".herum-card{max-width:unset!important;border-radius:var(--border-radius) var(--border-radius) 0 0}.quiz-container{display:flex;flex-direction:column;background-color:#fff;min-width:50vw;min-height:510px}.quiz-container .quiz-inner-content{display:flex;flex-direction:column;flex:1;justify-content:space-between}.quiz-container .question-container{min-height:325px;overflow-y:auto}.quiz-container .left-action-buttons{display:flex;flex-direction:row;gap:16px}.quiz-container .quiz-padding{padding:24px}.quiz-container .question-text{font-size:18px;font-weight:600;color:var(--text-color);margin:42px 0 28px}.quiz-container .actions-buttons-container{width:100%;display:flex;justify-content:space-between;direction:ltr}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HerumButtonComponent, selector: "herum-button", inputs: ["type", "color", "size", "roundedCorners", "disabled", "isLoading", "name"] }, { kind: "component", type: QuizHeaderComponent, selector: "quiz-header", inputs: ["quizData"], outputs: ["onSelectQuestion", "onReturnToGradePage"] }, { kind: "component", type: QuizTwoAnswersQuestionComponent, selector: "quiz-two-answers-question", inputs: ["question", "userAnswers", "isSubmitted"], outputs: ["onAnswersChange"] }, { kind: "component", type: QuizOneAnswerQuestionComponent, selector: "quiz-one-answer-question", inputs: ["instructionTitle", "question", "userAnswers", "quizData", "areAnswersRevealed", "areAnswersBlocked", "isCheckingMode"], outputs: ["onAnswersChange"] }, { kind: "component", type: QuizSubmissionComponent, selector: "quiz-submission", inputs: ["quizData", "quizValidation"] }, { kind: "component", type: QuizIntroComponent, selector: "quiz-intro", inputs: ["quizData", "showSubmissionsCounter", "allQuestionsRequired", "resource", "areAnswersBlocked", "gradeTextPrefix"] }, { kind: "component", type: QuizGradeSheetComponent, selector: "quiz-grade-sheet", inputs: ["resourceSubscription", "quizData"] }, { kind: "component", type: QuizMultiAnswerQuestionComponent, selector: "quiz-multi-answer-question", inputs: ["question", "quizData", "userAnswers", "isCheckingMode", "areAnswersRevealed", "areAnswersBlocked", "correctAnswerCount"], outputs: ["onAnswersChange", "onValidationChange"] }, { kind: "component", type: QuizLoaderComponent, selector: "quiz-loader" }] });
1695
1732
  }
1696
1733
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumQuizComponent, decorators: [{
1697
1734
  type: Component,
1698
- args: [{ standalone: false, selector: 'herum-quiz', template: "<div class=\"quiz-container herum-card\">\r\n <ng-container *ngIf=\"!isLoading\">\r\n\r\n <quiz-intro class=\"quiz-padding\" [quizData]=\"quizData\" [resource]=\"resource\"\r\n *ngIf=\"quizData.currentQuestion == 0\">\r\n </quiz-intro>\r\n\r\n <div class=\"herum-card w-100\" *ngIf=\"quizData.currentQuestion > 0\">\r\n <quiz-header [quizData]=\"quizData\" (onSelectQuestion)=\"_selectQuestion($event)\"></quiz-header>\r\n </div>\r\n\r\n <div class=\"quiz-inner-content\" [ngClass]=\"{'justify-content-end':quizData.currentQuestion == 0}\">\r\n <div class=\"question-container quiz-padding\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length + 1\">\r\n <p class=\"question-text\">{{ quizData.questions[currentQuestionIndex]?.text }}</p>\r\n\r\n <ng-container *ngIf=\"quizData.questions[currentQuestionIndex].answers.length != 2\">\r\n <quiz-one-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) == 1\"\r\n [quizData]=\"quizData\" [question]=\"quizData.questions[currentQuestionIndex]\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-one-answer-question>\r\n\r\n <quiz-multi-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) > 1\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [quizData]=\"quizData\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-multi-answer-question>\r\n </ng-container>\r\n\r\n <quiz-two-answers-question *ngIf=\"quizData.questions[currentQuestionIndex].answers.length == 2\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [isSubmitted]=\"quizData.isSubmitted\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-two-answers-question>\r\n </div>\r\n\r\n <quiz-submission class=\"quiz-padding\" *ngIf=\"quizData.currentQuestion == quizData.questions.length + 1\"\r\n [quizData]=\"quizData\" [quizValidation]=\"isValidQuiz\">\r\n </quiz-submission>\r\n\r\n <quiz-grade-sheet *ngIf=\"quizData.currentQuestion == quizData.questions.length + 2\" [quizData]=\"quizData\"\r\n [resourceSubscription]=\"resourceSubscription\">\r\n </quiz-grade-sheet>\r\n\r\n <div class=\"actions-buttons-container quiz-padding\">\r\n <div class=\"left-action-buttons\">\r\n <herum-button [type]=\"'secondary'\" (click)=\"_nextQuestion(true)\" id=\"skip\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length && !this.quizData.isSubmitted \">\r\n \u05D3\u05DC\u05D2 \u05E2\u05DC \u05D4\u05E9\u05D0\u05DC\u05D4\r\n </herum-button>\r\n\r\n <herum-button id=\"next\" [disabled]=\"!currentQuestionValidation\" [type]=\"'primary'\"\r\n (click)=\"_nextQuestion()\">\r\n {{ nextButtonText }}\r\n </herum-button>\r\n </div>\r\n\r\n <herum-button id=\"prev\" *ngIf=\"quizData.currentQuestion > 1 \" [type]=\"'ghost'\"\r\n (click)=\"_previousQuestion()\">\r\n {{ previousButtonText }}\r\n </herum-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <quiz-loader *ngIf=\"isLoading\"></quiz-loader>\r\n</div>", styles: [".herum-card{max-width:unset!important;border-radius:var(--border-radius) var(--border-radius) 0 0}.quiz-container{display:flex;flex-direction:column;background-color:#fff;min-width:50vw;min-height:510px}.quiz-container .quiz-inner-content{display:flex;flex-direction:column;flex:1;justify-content:space-between}.quiz-container .question-container{min-height:325px;overflow-y:auto}.quiz-container .left-action-buttons{display:flex;flex-direction:row;gap:16px}.quiz-container .quiz-padding{padding:24px}.quiz-container .question-text{font-size:18px;font-weight:600;color:var(--text-color);margin:42px 0 28px}.quiz-container .actions-buttons-container{width:100%;display:flex;justify-content:space-between;direction:ltr}\n"] }]
1735
+ args: [{ standalone: false, selector: 'herum-quiz', template: "<div class=\"quiz-container herum-card\">\r\n <ng-container *ngIf=\"!isLoading\">\r\n\r\n <quiz-intro class=\"quiz-padding\" [quizData]=\"quizData\" [resource]=\"resource\"\r\n *ngIf=\"quizData.currentQuestion == 0\">\r\n </quiz-intro>\r\n\r\n <div class=\"herum-card w-100\" *ngIf=\"quizData.currentQuestion > 0\">\r\n <quiz-header [quizData]=\"quizData\" (onSelectQuestion)=\"_selectQuestion($event)\"></quiz-header>\r\n </div>\r\n\r\n <div class=\"quiz-inner-content\" [ngClass]=\"{'justify-content-end':quizData.currentQuestion == 0}\">\r\n <div class=\"question-container quiz-padding\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length + 1\">\r\n <p class=\"question-text\">{{ quizData.questions[currentQuestionIndex]?.text }}</p>\r\n\r\n <ng-container *ngIf=\"(quizData.questions[currentQuestionIndex].closedContent?.answers?.length ?? 0) != 2\">\r\n <quiz-one-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) == 1\"\r\n [quizData]=\"quizData\" [question]=\"quizData.questions[currentQuestionIndex]\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-one-answer-question>\r\n\r\n <quiz-multi-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) > 1\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [quizData]=\"quizData\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-multi-answer-question>\r\n </ng-container>\r\n\r\n <quiz-two-answers-question *ngIf=\"(quizData.questions[currentQuestionIndex].closedContent?.answers?.length ?? 0) == 2\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [isSubmitted]=\"quizData.isSubmitted\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-two-answers-question>\r\n </div>\r\n\r\n <quiz-submission class=\"quiz-padding\" *ngIf=\"quizData.currentQuestion == quizData.questions.length + 1\"\r\n [quizData]=\"quizData\" [quizValidation]=\"isValidQuiz\">\r\n </quiz-submission>\r\n\r\n <quiz-grade-sheet *ngIf=\"quizData.currentQuestion == quizData.questions.length + 2\" [quizData]=\"quizData\"\r\n [resourceSubscription]=\"resourceSubscription\">\r\n </quiz-grade-sheet>\r\n\r\n <div class=\"actions-buttons-container quiz-padding\">\r\n <div class=\"left-action-buttons\">\r\n <herum-button [type]=\"'secondary'\" (click)=\"_nextQuestion(true)\" id=\"skip\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length && !this.quizData.isSubmitted \">\r\n \u05D3\u05DC\u05D2 \u05E2\u05DC \u05D4\u05E9\u05D0\u05DC\u05D4\r\n </herum-button>\r\n\r\n <herum-button id=\"next\" [disabled]=\"!currentQuestionValidation\" [type]=\"'primary'\"\r\n (click)=\"_nextQuestion()\">\r\n {{ nextButtonText }}\r\n </herum-button>\r\n </div>\r\n\r\n <herum-button id=\"prev\" *ngIf=\"quizData.currentQuestion > 1 \" [type]=\"'ghost'\"\r\n (click)=\"_previousQuestion()\">\r\n {{ previousButtonText }}\r\n </herum-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <quiz-loader *ngIf=\"isLoading\"></quiz-loader>\r\n</div>", styles: [".herum-card{max-width:unset!important;border-radius:var(--border-radius) var(--border-radius) 0 0}.quiz-container{display:flex;flex-direction:column;background-color:#fff;min-width:50vw;min-height:510px}.quiz-container .quiz-inner-content{display:flex;flex-direction:column;flex:1;justify-content:space-between}.quiz-container .question-container{min-height:325px;overflow-y:auto}.quiz-container .left-action-buttons{display:flex;flex-direction:row;gap:16px}.quiz-container .quiz-padding{padding:24px}.quiz-container .question-text{font-size:18px;font-weight:600;color:var(--text-color);margin:42px 0 28px}.quiz-container .actions-buttons-container{width:100%;display:flex;justify-content:space-between;direction:ltr}\n"] }]
1699
1736
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { resourceSubscription: [{
1700
1737
  type: Input
1701
1738
  }], isLoading: [{
@@ -3906,6 +3943,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
3906
3943
  args: ['document:keyup', ['$event']]
3907
3944
  }] } });
3908
3945
 
3946
+ const svgsStrings = {
3947
+ edit: '<svg xmlns="http://www.w3.org/2000/svg" width="17.002" height="16.25" viewBox="0 0 17.002 17.258"><path id="Path_784" data-name="Path 784" d="M105.89,340.545l.742-.742a3.146,3.146,0,0,1,4.45,4.45l-.742.742m-4.45-4.45a5.246,5.246,0,0,0,4.45,4.45m-4.45-4.45-6.818,6.818a10.889,10.889,0,0,0-.887.947,5.217,5.217,0,0,0-.6.969,10.97,10.97,0,0,0-.448,1.221l-.875,2.626m14.082-8.131-6.818,6.818a10.89,10.89,0,0,1-.947.887,5.217,5.217,0,0,1-.969.6,10.976,10.976,0,0,1-1.221.448l-2.626.875m0,0-.642.215a.85.85,0,0,1-1.074-1.074l.215-.642m1.5,1.5-1.5-1.5" transform="translate(-95.502 -338.16)" fill="none" stroke-width="1"/></svg>',
3948
+ garbage: '<svg xmlns="http://www.w3.org/2000/svg" width="15.222" height="16.25" viewBox="0 0 15.222 17"><g id="trash" transform="translate(35.5 83.5)"><path id="Path_1367" data-name="Path 1367" d="M4,7H18.222" transform="translate(-39 -86.444)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1368" data-name="Path 1368" d="M10,11v5.35" transform="translate(-39.667 -86.9)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1369" data-name="Path 1369" d="M14,11v5.35" transform="translate(-40.111 -86.9)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1370" data-name="Path 1370" d="M5,7l.889,10.7a1.78,1.78,0,0,0,1.777,1.783h7.108A1.78,1.78,0,0,0,16.551,17.7L17.439,7" transform="translate(-39.108 -86.482)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1371" data-name="Path 1371" d="M9,6.566V3.892A.892.892,0,0,1,9.892,3h3.566a.892.892,0,0,1,.892.892V6.566" transform="translate(-39.564 -86)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3949
+ greyUploadFile: '<svg xmlns="http://www.w3.org/2000/svg" width="16.059" height="17" viewBox="0 0 16.059 17"><g id="upload" transform="translate(-3.5 -3.5)"><path id="Path_1362" data-name="Path 1362" d="M4,17v2a1.944,1.944,0,0,0,1.882,2H17.176a1.944,1.944,0,0,0,1.882-2V17" transform="translate(0 -1)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1363" data-name="Path 1363" d="M7,9l4.529-5,4.529,5" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1364" data-name="Path 1364" d="M12,4V16" transform="translate(-0.471)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3950
+ uploadFile: '<svg xmlns="http://www.w3.org/2000/svg" width="16.059" height="17" viewBox="0 0 16.059 17" stroke="#7897a8"><g id="upload" transform="translate(-3.5 -3.5)"><path id="Path_1362" data-name="Path 1362" d="M4,17v2a1.944,1.944,0,0,0,1.882,2H17.176a1.944,1.944,0,0,0,1.882-2V17" transform="translate(0 -1)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1363" data-name="Path 1363" d="M7,9l4.529-5,4.529,5" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1364" data-name="Path 1364" d="M12,4V16" transform="translate(-0.471)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3951
+ downloadFile: '<svg width="21" height="15" viewBox="0 0 21 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path stroke-width="1.1" d="M20 8.09094L20 11.6364C20 12.2633 19.7498 12.8645 19.3044 13.3077C18.859 13.751 18.2549 14 17.625 14L3.375 14C2.74511 14 2.14102 13.751 1.69562 13.3077C1.25022 12.8645 1 12.2633 1 11.6364L1 8.09094" stroke-linecap="round" stroke-linejoin="round"/><path d="M10.5 0.999978L10.5 9.2727M10.5 9.2727L6.9375 5.72725M10.5 9.2727L14.0625 5.72725" stroke-linecap="round" stroke-width="1.1" stroke-linejoin="round"/></svg>',
3952
+ '.mp4': '<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 17 17"><g id="video" transform="translate(-3.5 -3.5)"><path id="Path_1352" data-name="Path 1352" d="M4,4,4,6A2,2,0,0,1,6,4H18a2,2,0,0,1,2,2V18a2,2,0,0,1-2,2H6a2,2,0,0,1-2-2Z" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1353" data-name="Path 1353" d="M8,4V20" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1354" data-name="Path 1354" d="M16,4V20" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1355" data-name="Path 1355" d="M4,8H8" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1356" data-name="Path 1356" d="M4,16H8" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1357" data-name="Path 1357" d="M4,12H20" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1358" data-name="Path 1358" d="M16,8h4" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1359" data-name="Path 1359" d="M16,16h4" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3953
+ '.pdf': '<svg xmlns="http://www.w3.org/2000/svg" width="13.403" height="16.5" viewBox="0 0 13.403 16.5"><g id="Pdf" transform="translate(-13.75 -1.75)"><g id="Group_942" data-name="Group 942" transform="translate(14 2)"><g id="Group_939" data-name="Group 939" transform="translate(0 0)"><g id="Group_938" data-name="Group 938"><path id="Path_1342" data-name="Path 1342" d="M25.613,18H15.29A1.292,1.292,0,0,1,14,16.71V3.29A1.292,1.292,0,0,1,15.29,2h5.25a1.282,1.282,0,0,1,.912.378l5.073,5.073a1.282,1.282,0,0,1,.378.912V16.71A1.292,1.292,0,0,1,25.613,18ZM15.29,2.516a.775.775,0,0,0-.774.774V16.71a.775.775,0,0,0,.774.774H25.613a.775.775,0,0,0,.774-.774V8.363a.78.78,0,0,0-.227-.547L21.088,2.743a.769.769,0,0,0-.547-.227Z" transform="translate(-14 -2)" fill="#7897a8" stroke="#7897a8" stroke-width="0.5"/></g></g><g id="Group_941" data-name="Group 941" transform="translate(2.413 5.032)"><g id="Group_940" data-name="Group 940"><path id="Path_1343" data-name="Path 1343" d="M40.763,46.074a.407.407,0,0,0-.119-.2,1.649,1.649,0,0,0-1.065-.252,8.8,8.8,0,0,0-1.28.094,3.189,3.189,0,0,1-.594-.41,4.335,4.335,0,0,1-1.072-1.663c.015-.061.028-.114.041-.168a10.821,10.821,0,0,0,.188-1.948.566.566,0,0,0-.034-.139l-.022-.057A.462.462,0,0,0,36.388,41l-.126,0h0a.476.476,0,0,0-.485.3,5.643,5.643,0,0,0,.3,2.541l-.075.181c-.208.508-.468,1.019-.7,1.47l-.03.058c-.243.474-.462.876-.662,1.217l-.205.108c-.015.008-.368.195-.45.244a2.518,2.518,0,0,0-1.243,1.271.312.312,0,0,0,.119.346l.2.1a.611.611,0,0,0,.271.065c.5,0,1.079-.622,1.877-2.015a18.675,18.675,0,0,1,2.892-.686,4.989,4.989,0,0,0,2.107.668.975.975,0,0,0,.248-.027.43.43,0,0,0,.246-.168A.893.893,0,0,0,40.763,46.074Zm-7.577,2.453a3.466,3.466,0,0,1,.985-1.178c.034-.027.116-.1.191-.177A3.559,3.559,0,0,1,33.187,48.526Zm3.156-7.268c.16,0,.252.4.259.783a1.61,1.61,0,0,1-.191.843,4.09,4.09,0,0,1-.135-1.052S36.269,41.258,36.343,41.258ZM35.4,46.437q.168-.3.347-.635a11.887,11.887,0,0,0,.609-1.329,4.4,4.4,0,0,0,1.005,1.248l.157.126A12.765,12.765,0,0,0,35.4,46.437Zm5.088-.045a.743.743,0,0,1-.28.048,3.287,3.287,0,0,1-1.161-.351c.195-.014.374-.022.534-.022a2.051,2.051,0,0,1,.667.072C40.535,46.213,40.539,46.361,40.488,46.392Z" transform="translate(-32.697 -41)" fill="#7897a8" stroke="#7897a8" stroke-width="0.5"/></g></g></g></g></svg>',
3954
+ '.pptx': '<svg xmlns="http://www.w3.org/2000/svg" width="13.403" height="16.5" viewBox="0 0 13.403 16.5"><g id="ppt" transform="translate(-13.26 -1.75)"><g id="Group_942" data-name="Group 942" transform="translate(13.51 2)"><g id="Group_939" data-name="Group 939" transform="translate(0 0)"><g id="Group_938" data-name="Group 938"><path id="Path_1342" data-name="Path 1342" d="M25.613,18H15.29A1.292,1.292,0,0,1,14,16.71V3.29A1.292,1.292,0,0,1,15.29,2h5.25a1.282,1.282,0,0,1,.912.378l5.073,5.073a1.282,1.282,0,0,1,.378.912V16.71A1.292,1.292,0,0,1,25.613,18ZM15.29,2.516a.775.775,0,0,0-.774.774V16.71a.775.775,0,0,0,.774.774H25.613a.775.775,0,0,0,.774-.774V8.363a.78.78,0,0,0-.227-.547L21.088,2.743a.769.769,0,0,0-.547-.227Z" transform="translate(-14 -2)" fill="#7897a8" stroke="#7897a8" stroke-width="0.5"/></g></g></g><path id="Path_1360" data-name="Path 1360" d="M78,107.1h1.549a1.549,1.549,0,1,0,0-3.1H78v4.648" transform="translate(-58.99 -94.5)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3955
+ // story: '<svg xmlns="http://www.w3.org/2000/svg" width="16.502" height="13.579" viewBox="0 0 16.502 13.579"><path id="Folder" d="M16.825,8.355a.727.727,0,0,0-.567-.269H14.806V7.36a2.18,2.18,0,0,0-2.18-2.18H8.063L7.83,4.453A2.18,2.18,0,0,0,5.767,3H3.18A2.18,2.18,0,0,0,1,5.18V13.9a2.18,2.18,0,0,0,2.18,2.18H13.643a2.18,2.18,0,0,0,2.122-1.708l1.221-5.4a.727.727,0,0,0-.16-.618Zm-12.65,5.7a.727.727,0,0,1-.727.567H3.18a.727.727,0,0,1-.727-.727V5.18a.727.727,0,0,1,.727-.727H5.767a.727.727,0,0,1,.727.494l.392,1.192a.727.727,0,0,0,.654.494h5.086a.727.727,0,0,1,.727.727v.727H6.086a.727.727,0,0,0-.727.567Zm10.172,0a.727.727,0,0,1-.727.567H5.512a1.032,1.032,0,0,0,.08-.254L6.668,9.539h8.719Z" transform="translate(-0.75 -2.75)" fill="#65899c" stroke="#fff" stroke-width="0.5"/></svg>',
3956
+ bigVideo: '<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_12_1734)"> <path d="M37.5 25.0001L48.8825 19.3101C49.2636 19.1196 49.6869 19.0298 50.1125 19.0489C50.538 19.0681 50.9516 19.1957 51.314 19.4196C51.6764 19.6435 51.9756 19.9562 52.1831 20.3282C52.3907 20.7002 52.4998 21.1191 52.5 21.5451V38.4551C52.4998 38.881 52.3907 39.2999 52.1831 39.6719C51.9756 40.0439 51.6764 40.3566 51.314 40.5805C50.9516 40.8044 50.538 40.932 50.1125 40.9512C49.6869 40.9704 49.2636 40.8805 48.8825 40.6901L37.5 35.0001V25.0001Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M7.5 20C7.5 18.6739 8.02678 17.4021 8.96447 16.4645C9.90215 15.5268 11.1739 15 12.5 15H32.5C33.8261 15 35.0979 15.5268 36.0355 16.4645C36.9732 17.4021 37.5 18.6739 37.5 20V40C37.5 41.3261 36.9732 42.5979 36.0355 43.5355C35.0979 44.4732 33.8261 45 32.5 45H12.5C11.1739 45 9.90215 44.4732 8.96447 43.5355C8.02678 42.5979 7.5 41.3261 7.5 40V20Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_12_1734"> <rect width="60" height="60" fill="white"/> </clipPath> </defs> </svg> ',
3957
+ bigPdf: '<svg width="60" height="60" id="Group_872" data-name="Group 872" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16.255 16.25"><defs><clipPath id="clip-path"><rect id="Rectangle_1674" data-name="Rectangle 1674" width="16.255" height="16.25" fill="none"/></clipPath></defs><g id="Group_871" data-name="Group 871" clip-path="url(#clip-path)"><path id="Path_1239" data-name="Path 1239" d="M3.072,8.649h.594v4.217H3.072Zm.523,2.91v-.564h.719a1.018,1.018,0,0,0,.736-.242.945.945,0,0,0,.249-.708.767.767,0,0,0-.249-.621,1.112,1.112,0,0,0-.736-.211H3.607V8.649h.707A1.792,1.792,0,0,1,5.515,9a1.305,1.305,0,0,1,.408,1.043,1.478,1.478,0,0,1-.408,1.129,1.688,1.688,0,0,1-1.2.385Z" fill="#65899c"/><path id="Path_1240" data-name="Path 1240" d="M3.072,8.649h.594v4.217H3.072Zm.523,2.91v-.564h.719a1.018,1.018,0,0,0,.736-.242.945.945,0,0,0,.249-.708.767.767,0,0,0-.249-.621,1.112,1.112,0,0,0-.736-.211H3.607V8.649h.707A1.792,1.792,0,0,1,5.515,9a1.305,1.305,0,0,1,.408,1.043,1.478,1.478,0,0,1-.408,1.129,1.688,1.688,0,0,1-1.2.385Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1241" data-name="Path 1241" d="M6.577,8.648h.594v4.217H6.577Zm.552,4.217V12.3H7.6a1.24,1.24,0,0,0,.979-.371A1.645,1.645,0,0,0,8.9,10.816a1.872,1.872,0,0,0-.328-1.2,1.194,1.194,0,0,0-.979-.4H7.141L7.07,8.648H7.6q1.931,0,1.93,2.168,0,2.049-1.93,2.049Z" fill="#65899c"/><path id="Path_1242" data-name="Path 1242" d="M6.577,8.648h.594v4.217H6.577Zm.552,4.217V12.3H7.6a1.24,1.24,0,0,0,.979-.371A1.645,1.645,0,0,0,8.9,10.816a1.872,1.872,0,0,0-.328-1.2,1.194,1.194,0,0,0-.979-.4H7.141L7.07,8.648H7.6q1.931,0,1.93,2.168,0,2.049-1.93,2.049Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1243" data-name="Path 1243" d="M10.259,8.649h.594v4.217h-.594Zm0,0H13.05v.564H10.259Zm0,2h2.257v.564H10.259Z" fill="#65899c"/><path id="Path_1244" data-name="Path 1244" d="M10.259,8.649h.594v4.217h-.594Zm0,0H13.05v.564H10.259Zm0,2h2.257v.564H10.259Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1245" data-name="Path 1245" d="M16.041,7.005,12.788,7c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.783h.774V2.717c0,1.715,0,2.576.453,3.03.439.439,1.272.454,2.782.482l.151,0h3.088Z" fill="#65899c"/><path id="Path_1246" data-name="Path 1246" d="M16.041,7.005,12.788,7c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.783h.774V2.717c0,1.715,0,2.576.453,3.03.439.439,1.272.454,2.782.482l.151,0h3.088Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1247" data-name="Path 1247" d="M12.336,16.125H3.915a3.8,3.8,0,0,1-3.79-3.79V3.915A3.8,3.8,0,0,1,3.915.125l6,.053a1.746,1.746,0,0,1,1.252.549l4.477,4.781a1.8,1.8,0,0,1,.489,1.235l-.005,5.592a3.8,3.8,0,0,1-3.79,3.79M3.912.9A3.019,3.019,0,0,0,.9,3.915v8.42a3.019,3.019,0,0,0,3.016,3.016h8.421a3.019,3.019,0,0,0,3.016-3.016l.005-5.592a1.029,1.029,0,0,0-.279-.706L10.6,1.256a.962.962,0,0,0-.694-.3Z" fill="#65899c"/><path id="Path_1248" data-name="Path 1248" d="M12.336,16.125H3.915a3.8,3.8,0,0,1-3.79-3.79V3.915A3.8,3.8,0,0,1,3.915.125l6,.053a1.746,1.746,0,0,1,1.252.549l4.477,4.781a1.8,1.8,0,0,1,.489,1.235l-.005,5.592A3.8,3.8,0,0,1,12.336,16.125ZM3.912.9A3.019,3.019,0,0,0,.9,3.915v8.42a3.019,3.019,0,0,0,3.016,3.016h8.421a3.019,3.019,0,0,0,3.016-3.016l.005-5.592a1.029,1.029,0,0,0-.279-.706L10.6,1.256a.962.962,0,0,0-.694-.3Z" fill="none" stroke="#65899c" stroke-width="0.25"/></g></svg>',
3958
+ bigAudio: '<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_12_1745)"> <path d="M10 37.5C10 36.1739 10.5268 34.9021 11.4645 33.9645C12.4021 33.0268 13.6739 32.5 15 32.5H17.5C18.8261 32.5 20.0979 33.0268 21.0355 33.9645C21.9732 34.9021 22.5 36.1739 22.5 37.5V45C22.5 46.3261 21.9732 47.5979 21.0355 48.5355C20.0979 49.4732 18.8261 50 17.5 50H15C13.6739 50 12.4021 49.4732 11.4645 48.5355C10.5268 47.5979 10 46.3261 10 45V37.5Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.5 37.5C37.5 36.1739 38.0268 34.9021 38.9645 33.9645C39.9021 33.0268 41.1739 32.5 42.5 32.5H45C46.3261 32.5 47.5979 33.0268 48.5355 33.9645C49.4732 34.9021 50 36.1739 50 37.5V45C50 46.3261 49.4732 47.5979 48.5355 48.5355C47.5979 49.4732 46.3261 50 45 50H42.5C41.1739 50 39.9021 49.4732 38.9645 48.5355C38.0268 47.5979 37.5 46.3261 37.5 45V37.5Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M10 37.5V30C10 24.6957 12.1071 19.6086 15.8579 15.8579C19.6086 12.1071 24.6957 10 30 10C35.3043 10 40.3914 12.1071 44.1421 15.8579C47.8929 19.6086 50 24.6957 50 30V37.5" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_12_1745"> <rect width="60" height="60" fill="white"/> </clipPath></defs></svg>',
3959
+ responsiveUploadFile: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16.059 17" stroke="#7897a8"><g id="upload" transform="translate(-3.5 -3.5)"><path id="Path_1362" data-name="Path 1362" d="M4,17v2a1.944,1.944,0,0,0,1.882,2H17.176a1.944,1.944,0,0,0,1.882-2V17" transform="translate(0 -1)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1363" data-name="Path 1363" d="M7,9l4.529-5,4.529,5" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1364" data-name="Path 1364" d="M12,4V16" transform="translate(-0.471)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3960
+ cancel: '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 12 12"><path id="Union_8" data-name="Union 8" d="M9.742,11.613,6,7.871,2.258,11.613A1.323,1.323,0,0,1,.388,9.742L4.129,6,.388,2.258A1.322,1.322,0,0,1,2.258.388L6,4.129,9.742.388a1.323,1.323,0,0,1,1.871,1.87L7.871,6l3.742,3.742a1.323,1.323,0,0,1-1.871,1.871Z" transform="translate(0 0)" fill="none" stroke="#7897a8"/></svg>',
3961
+ X: '<svg class="my-svg" xmlns="http://www.w3.org/2000/svg" width="9" height="9" viewBox="0 0 12 12"><path id="Union_8" data-name="Union 8" d="M9.742,11.613,6,7.871,2.258,11.613A1.323,1.323,0,0,1,.388,9.742L4.129,6,.388,2.258A1.322,1.322,0,0,1,2.258.388L6,4.129,9.742.388a1.323,1.323,0,0,1,1.871,1.87L7.871,6l3.742,3.742a1.323,1.323,0,0,1-1.871,1.871Z" transform="translate(0 0)" stroke-width="0"/></svg>',
3962
+ chevron: '<svg xmlns="http://www.w3.org/2000/svg" width="14px" height:"14px" viewBox="0 0 11.299 6.649"><path id="Vector_43-2" data-name="Vector 43-2" d="M1006.235,549.5,1002,553.735l-4.236-4.235" transform="translate(-996.35 -548.086)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>',
3963
+ smallChevron: '<svg xmlns="http://www.w3.org/2000/svg" width="11.299" height="6.649" viewBox="0 0 11.299 6.649"><path id="Vector_43-2" data-name="Vector 43-2" d="M1006.235,549.5,1002,553.735l-4.236-4.235" transform="translate(-996.35 -548.086)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>',
3964
+ search: '<svg width="100%" height:"100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.78653 9.25985C2.27371 8.49236 2 7.59004 2 6.667C2 5.42923 2.4917 4.24217 3.36693 3.36693C4.24217 2.4917 5.42923 2 6.667 2C7.59004 2 8.49236 2.27371 9.25985 2.78653C10.0273 3.29935 10.6255 4.02823 10.9787 4.88102C11.332 5.7338 11.4244 6.67218 11.2443 7.57749C11.0642 8.4828 10.6198 9.31438 9.96707 9.96707C9.31438 10.6198 8.4828 11.0642 7.57749 11.2443C6.67218 11.4244 5.7338 11.332 4.88102 10.9787C4.02823 10.6255 3.29935 10.0273 2.78653 9.25985Z" stroke-linecap="round" stroke-linejoin="round"/><path d="M14 14L10 10" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3965
+ clock: '<svg width="100%" height:"100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.30029 7.019C1.30029 8.20945 1.64312 9.37316 2.28543 10.363C2.92774 11.3528 3.84068 12.1243 4.9088 12.5798C5.97692 13.0354 7.15224 13.1546 8.28615 12.9223C9.42006 12.6901 10.4616 12.1168 11.2791 11.2751C12.0966 10.4333 12.6534 9.36082 12.8789 8.19325C13.1045 7.02568 12.9887 5.81546 12.5463 4.71563C12.1038 3.6158 11.3546 2.67576 10.3933 2.01438C9.43204 1.35301 8.30188 1 7.14576 1C5.59544 1 4.10863 1.63414 3.01239 2.76292C1.91615 3.89171 1.30029 5.42266 1.30029 7.019Z" stroke-linecap="round" stroke-linejoin="round"/><path d="M7.15625 3.70801V7.00801L9.08014 8.98901" stroke="#26945A" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3966
+ calendar: '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.66669 10.0002C1.66669 6.85747 1.66669 5.28612 2.643 4.30981C3.61931 3.3335 5.19066 3.3335 8.33335 3.3335H11.6667C14.8094 3.3335 16.3807 3.3335 17.357 4.30981C18.3334 5.28612 18.3334 6.85747 18.3334 10.0002V11.6668C18.3334 14.8095 18.3334 16.3809 17.357 17.3572C16.3807 18.3335 14.8094 18.3335 11.6667 18.3335H8.33335C5.19066 18.3335 3.61931 18.3335 2.643 17.3572C1.66669 16.3809 1.66669 14.8095 1.66669 11.6668V10.0002Z" stroke-width="1"/><path d="M5.83331 3.3335V2.0835" stroke-width="1" stroke-linecap="round"/><path d="M14.1667 3.3335V2.0835" stroke-width="1" stroke-linecap="round"/><path d="M2.08331 7.5H17.9166" stroke-width="1" stroke-linecap="round"/><path d="M15 14.1667C15 14.6269 14.6269 15 14.1666 15C13.7064 15 13.3333 14.6269 13.3333 14.1667C13.3333 13.7064 13.7064 13.3333 14.1666 13.3333C14.6269 13.3333 15 13.7064 15 14.1667Z"/><path d="M15 10.8333C15 11.2936 14.6269 11.6667 14.1666 11.6667C13.7064 11.6667 13.3333 11.2936 13.3333 10.8333C13.3333 10.3731 13.7064 10 14.1666 10C14.6269 10 15 10.3731 15 10.8333Z" /><path d="M10.8334 14.1667C10.8334 14.6269 10.4603 15 10 15C9.53978 15 9.16669 14.6269 9.16669 14.1667C9.16669 13.7064 9.53978 13.3333 10 13.3333C10.4603 13.3333 10.8334 13.7064 10.8334 14.1667Z" /><path d="M10.8334 10.8333C10.8334 11.2936 10.4603 11.6667 10 11.6667C9.53978 11.6667 9.16669 11.2936 9.16669 10.8333C9.16669 10.3731 9.53978 10 10 10C10.4603 10 10.8334 10.3731 10.8334 10.8333Z" /><path d="M6.66667 14.1667C6.66667 14.6269 6.29357 15 5.83333 15C5.3731 15 5 14.6269 5 14.1667C5 13.7064 5.3731 13.3333 5.83333 13.3333C6.29357 13.3333 6.66667 13.7064 6.66667 14.1667Z" /><path d="M6.66667 10.8333C6.66667 11.2936 6.29357 11.6667 5.83333 11.6667C5.3731 11.6667 5 11.2936 5 10.8333C5 10.3731 5.3731 10 5.83333 10C6.29357 10 6.66667 10.3731 6.66667 10.8333Z" /></svg>',
3967
+ civilProfession: '<svg xmlns="http://www.w3.org/2000/svg" width="14.621" height="17.175" viewBox="0 0 14.621 17.175"><g id="Group_1472" data-name="Group 1472" transform="translate(0.157 0.157)"><g id="Group_1471" data-name="Group 1471" transform="translate(0.343 0.343)"> <path id="Path_2640" data-name="Path 2640" d="M11.5.5V3.905a.852.852,0,0,0,.851.851h3.405" transform="translate(-2.136 -0.5)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2641" data-name="Path 2641" d="M2.5,4.756V2.2A1.7,1.7,0,0,1,4.2.5h5.959l4.256,4.256v9.364a1.7,1.7,0,0,1-1.7,1.7H8.459" transform="translate(-0.797 -0.5)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2642" data-name="Path 2642" d="M.5,11.054A2.554,2.554,0,1,0,3.054,8.5,2.554,2.554,0,0,0,.5,11.054" transform="translate(-0.5 -1.69)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2643" data-name="Path 2643" d="M1.777,14.5.5,18.756,3.054,17.48l2.554,1.277L4.331,14.5" transform="translate(-0.5 -2.582)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>',
3968
+ position: '<svg id="report-money" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2553" data-name="Path 2553" d="M8.881,5H6.94A2.016,2.016,0,0,0,5,7.083v12.5a2.016,2.016,0,0,0,1.94,2.083h9.7a2.016,2.016,0,0,0,1.94-2.083V7.083A2.016,2.016,0,0,0,16.643,5H14.7" transform="translate(0.208 -0.792)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2554" data-name="Path 2554" d="M9,3,9,5.083A2.083,2.083,0,0,1,11.083,3h2.083A2.083,2.083,0,0,1,15.25,5.083h0a2.083,2.083,0,0,1-2.083,2.083H11.083A2.083,2.083,0,0,1,9,5.083Z" transform="translate(-0.125 0.125)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2555" data-name="Path 2555" d="M14.167,11h-2.6a1.563,1.563,0,0,0,0,3.125H12.6a1.563,1.563,0,0,1,0,3.125H10" transform="translate(-0.083 -0.153)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2556" data-name="Path 2556" d="M12,17.292v1.042M12,10v1.042" transform="translate(0 -0.208)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
3969
+ role: '<svg id="military-award" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2568" data-name="Path 2568" d="M11.932,12.932,8,12.932A3.932,3.932,0,1,0,11.932,9,3.932,3.932,0,0,0,8,12.932" transform="translate(0.068 0.076)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2569" data-name="Path 2569" d="M8.39,10.458,7.407,8H2l2.438,5.69a1.966,1.966,0,0,0,1.809,1.192H8.39" transform="translate(-0.034 0.056)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2570" data-name="Path 2570" d="M15.5,10.458,16.483,8H21.89l-2.438,5.69a1.966,1.966,0,0,1-1.809,1.192H15.5" transform="translate(0.144 0.056)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
3970
+ school: '<svg id="school_1_" data-name="school (1)" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2565" data-name="Path 2565" d="M22.167,8.833,12.083,5,2,8.833l10.083,3.833L22.167,8.833v5.75" transform="translate(-0.083 0.149)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2566" data-name="Path 2566" d="M6,10.6v5.175c0,1.588,2.574,2.875,5.75,2.875s5.75-1.287,5.75-2.875V10.6" transform="translate(0.25 0.238)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
3971
+ struct: '<svg id="user-scan" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2558" data-name="Path 2558" d="M10,9.185A2.185,2.185,0,1,0,12.185,7,2.185,2.185,0,0,0,10,9.185" transform="translate(-0.185 -0.13)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2559" data-name="Path 2559" d="M4,8.371V6.185A2.185,2.185,0,0,1,6.185,4H8.371" transform="translate(-0.074 -0.074)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2560" data-name="Path 2560" d="M4,16v2.185a2.185,2.185,0,0,0,2.185,2.185H8.371" transform="translate(-0.074 -0.297)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2561" data-name="Path 2561" d="M16,4h2.185a2.185,2.185,0,0,1,2.185,2.185V8.371" transform="translate(-0.297 -0.074)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2562" data-name="Path 2562" d="M16,20.371h2.185a2.185,2.185,0,0,0,2.185-2.185V16" transform="translate(-0.297 -0.297)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2563" data-name="Path 2563" d="M8,16.185A2.185,2.185,0,0,1,10.185,14h4.371a2.185,2.185,0,0,1,2.185,2.185" transform="translate(-0.371 -0.118)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
3972
+ id: '<svg id="id_1_" data-name="id (1)" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2547" data-name="Path 2547" d="M3,4,3,6.775A2.814,2.814,0,0,1,5.85,4h11.4A2.814,2.814,0,0,1,20.1,6.775v9.251a2.814,2.814,0,0,1-2.85,2.775H5.85A2.814,2.814,0,0,1,3,16.026Z" transform="translate(0.449 0.599)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2548" data-name="Path 2548" d="M9.3,10.3,7,10.3A2.3,2.3,0,1,0,9.3,8,2.3,2.3,0,0,0,7,10.3" transform="translate(-0.21 -0.24)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2549" data-name="Path 2549" d="M15,8h2.3" transform="translate(-0.204 0)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2550" data-name="Path 2550" d="M15,12h2.3" transform="translate(-0.204)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2551" data-name="Path 2551" d="M7,16H18.5" transform="translate(-0.749 0)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
3973
+ clipboardText: '<svg id="clipboard-text" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 18 18"><path id="Path_2572" data-name="Path 2572" d="M8,5H6.5A1.5,1.5,0,0,0,5,6.5v9A1.5,1.5,0,0,0,6.5,17H14a1.5,1.5,0,0,0,1.5-1.5v-9A1.5,1.5,0,0,0,14,5H12.5" transform="translate(-1.25 -1.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2574" data-name="Path 2574" d="M9,12h4.5" transform="translate(-2.25 -2.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2576" data-name="Path 2576" d="M9,12h4.5" transform="translate(-2.25 -5.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2575" data-name="Path 2575" d="M9,16h4.5" transform="translate(-2.25 -3.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
3974
+ audio: '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 10.7143C1 10.2596 1.16857 9.82359 1.46863 9.5021C1.76869 9.18061 2.17565 9 2.6 9H3.4C3.82435 9 4.23131 9.18061 4.53137 9.5021C4.83143 9.82359 5 10.2596 5 10.7143V13.2857C5 13.7404 4.83143 14.1764 4.53137 14.4979C4.23131 14.8194 3.82435 15 3.4 15H2.6C2.17565 15 1.76869 14.8194 1.46863 14.4979C1.16857 14.1764 1 13.7404 1 13.2857V10.7143Z" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M11 10.7143C11 10.2596 11.1686 9.82359 11.4686 9.5021C11.7687 9.18061 12.1757 9 12.6 9H13.4C13.8243 9 14.2313 9.18061 14.5314 9.5021C14.8314 9.82359 15 10.2596 15 10.7143V13.2857C15 13.7404 14.8314 14.1764 14.5314 14.4979C14.2313 14.8194 13.8243 15 13.4 15H12.6C12.1757 15 11.7687 14.8194 11.4686 14.4979C11.1686 14.1764 11 13.7404 11 13.2857V10.7143Z" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M1 11V8.27273C1 6.34388 1.7375 4.49403 3.05025 3.13013C4.36301 1.76623 6.14348 1 8 1C9.85652 1 11.637 1.76623 12.9497 3.13013C14.2625 4.49403 15 6.34388 15 8.27273V11" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3975
+ collection: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="22" viewBox="0 0 21 18"><defs><clipPath id="clip-path"><rect id="Rectangle_2250" data-name="Rectangle 2250" width="16" height="18" fill="none" stroke-width="1"/></clipPath></defs><g id="Group_1560" data-name="Group 1560" transform="translate(4 4)"><path id="Path_2888" data-name="Path 2888" d="M0,0H24V24H0Z" transform="translate(-4 -4)" fill="none"/><g id="Group_1559" data-name="Group 1559" transform="translate(0 -1)" clip-path="url(#clip-path)"><path id="Path_2886" data-name="Path 2886" d="M15,1V17H3a2,2,0,0,1-2-2V3A2,2,0,0,1,3,1Z" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2887" data-name="Path 2887" d="M15,13H3a2,2,0,0,0-2,2" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line id="Line_438" data-name="Line 438" x2="6" transform="translate(5 5)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>',
3976
+ exercise: '<svg id="Group_882" data-name="Group 882" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16.005" height="16" viewBox="0 0 16.005 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1679" data-name="Rectangle 1679" width="16.005" height="16" fill="none"/></clipPath></defs><g id="Group_881" data-name="Group 881" clip-path="url(#clip-path)"><path id="Path_1277" data-name="Path 1277" d="M9.829,10.33H3.638a.387.387,0,0,1,0-.774H9.829a.387.387,0,0,1,0,.774" /><path id="Path_1278" data-name="Path 1278" d="M7.894,13.039H3.638a.387.387,0,1,1,0-.774H7.894a.387.387,0,1,1,0,.774" /><path id="Path_1279" data-name="Path 1279" d="M15.916,6.88l-3.253,0c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.658h.774V2.592c0,1.715,0,2.576.454,3.03.439.439,1.271.454,2.781.482l.151,0h3.088Z" /><path id="Path_1280" data-name="Path 1280" d="M12.21,16H3.79A3.794,3.794,0,0,1,0,12.21V3.79A3.794,3.794,0,0,1,3.79,0l6,.052A1.747,1.747,0,0,1,11.04.6l4.477,4.781A1.8,1.8,0,0,1,16,6.619l0,5.591A3.8,3.8,0,0,1,12.21,16M3.787.774A3.019,3.019,0,0,0,.774,3.79v8.42A3.019,3.019,0,0,0,3.79,15.226h8.42a3.02,3.02,0,0,0,3.017-3.016l0-5.592a1.03,1.03,0,0,0-.278-.707l-4.478-4.78A.971.971,0,0,0,9.781.826Z" /></g></svg>',
3977
+ genericFile: '<svg class="generic-file-icon" xmlns="http://www.w3.org/2000/svg" width="13.165" height="16.641" viewBox="0 0 13.165 16.641"><g id="file-dots" transform="translate(-3.845 -2.107)"><path id="Path_1460" data-name="Path 1460" d="M15.427,18.641H6.738A1.738,1.738,0,0,1,5,16.9V4.738A1.738,1.738,0,0,1,6.738,3H12.82l4.345,4.345V16.9A1.738,1.738,0,0,1,15.427,18.641Z" transform="translate(-0.655 -0.393)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1461" data-name="Path 1461" d="M9,14v.009" transform="translate(-1.18 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1462" data-name="Path 1462" d="M12,14v.009" transform="translate(-1.573 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1463" data-name="Path 1463" d="M15,14v.009" transform="translate(-1.966 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3978
+ image: '<svg id="photo-up" xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 18"><path id="Path_2633" data-name="Path 2633" d="M0,0H24V24H0Z" fill="none"/><g id="Group_1464" data-name="Group 1464" transform="translate(1 1)"><path id="Path_2634" data-name="Path 2634" d="M15,8h.008" transform="translate(-1.895 -0.789)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2635" data-name="Path 2635" d="M11,18.162H5.527A2.527,2.527,0,0,1,3,15.635V5.527A2.527,2.527,0,0,1,5.527,3H15.635a2.527,2.527,0,0,1,2.527,2.527V11" transform="translate(0 0)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2636" data-name="Path 2636" d="M3,15.084l4.192-4.192a1.689,1.689,0,0,1,2.515,0l2.935,2.935" transform="translate(0 -1.146)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2637" data-name="Path 2637" d="M14,13.73l.838-.838a1.677,1.677,0,0,1,1.856-.441" transform="translate(-1.729 -1.47)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2638" data-name="Path 2638" d="M19,21.031V16" transform="translate(-2.515 -2.031)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2639" data-name="Path 2639" d="M21.031,18.515,18.515,16,16,18.515" transform="translate(-2.031 -2.044)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3979
+ pdf: '<svg id="Group_884" data-name="Group 884" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16.005" height="16" viewBox="0 0 16.005 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1680" data-name="Rectangle 1680" width="16.005" height="16" fill="none"/></clipPath></defs><g id="Group_883" data-name="Group 883" clip-path="url(#clip-path)"><path id="Path_1281" data-name="Path 1281" d="M2.947,8.524h.594v4.217H2.947Zm.523,2.91V10.87h.719a1.018,1.018,0,0,0,.736-.242.945.945,0,0,0,.249-.708A.767.767,0,0,0,4.925,9.3a1.112,1.112,0,0,0-.736-.211H3.482V8.524h.707a1.792,1.792,0,0,1,1.2.353A1.305,1.305,0,0,1,5.8,9.92a1.478,1.478,0,0,1-.408,1.129,1.688,1.688,0,0,1-1.2.385Z" /><path id="Path_1282" data-name="Path 1282" d="M6.452,8.523h.594V12.74H6.452ZM7,12.74v-.564h.469a1.24,1.24,0,0,0,.979-.371,1.645,1.645,0,0,0,.328-1.114,1.872,1.872,0,0,0-.328-1.2,1.194,1.194,0,0,0-.979-.4H7.016l-.071-.565h.528q1.931,0,1.93,2.168,0,2.049-1.93,2.049Z" /> <path id="Path_1283" data-name="Path 1283" d="M10.134,8.524h.594v4.217h-.594Zm0,0h2.791v.564H10.134Zm0,2h2.257v.564H10.134Z" /><path id="Path_1284" data-name="Path 1284" d="M15.916,6.88l-3.253,0c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.658h.774V2.592c0,1.715,0,2.576.453,3.03.439.439,1.272.454,2.782.482l.151,0h3.088Z" /><path id="Path_1285" data-name="Path 1285" d="M12.211,16H3.79A3.8,3.8,0,0,1,0,12.21V3.79A3.8,3.8,0,0,1,3.79,0l6,.053A1.746,1.746,0,0,1,11.04.6l4.477,4.781a1.8,1.8,0,0,1,.489,1.235L16,12.21A3.8,3.8,0,0,1,12.211,16M3.787.774A3.019,3.019,0,0,0,.774,3.79v8.42A3.019,3.019,0,0,0,3.79,15.226h8.421a3.019,3.019,0,0,0,3.016-3.016l.005-5.592a1.029,1.029,0,0,0-.279-.706L10.475,1.131a.962.962,0,0,0-.694-.3Z" /></g></svg>',
3980
+ presentation: '<svg id="Group_886" data-name="Group 886" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="17.684" height="16" viewBox="0 0 17.684 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1681" data-name="Rectangle 1681" width="17.684" height="16" fill="none"/></clipPath></defs><g id="Group_885" data-name="Group 885" clip-path="url(#clip-path)"> <path id="Path_1286" data-name="Path 1286" d="M12.211,11.789H5.474c-2.495,0-3.748,0-4.61-.863S0,8.811,0,6.316V5.474C0,2.979,0,1.726.864.863S2.979,0,5.474,0h6.737c2.495,0,3.747,0,4.61.863s.863,2.116.863,4.611v.842c0,2.495,0,3.747-.864,4.61s-2.114.863-4.609.863M5.474.842c-2.263,0-3.4,0-4.015.617S.842,3.21.842,5.474v.842c0,2.263,0,3.4.617,4.014s1.752.617,4.015.617h6.737c2.263,0,3.4,0,4.014-.617s.617-1.751.617-4.014V5.474c0-2.264,0-3.4-.616-4.015S14.474.842,12.211.842Z" /><path id="Path_1287" data-name="Path 1287" d="M13.9,16a.44.44,0,0,1-.133-.021l-4.92-1.64-4.919,1.64a.422.422,0,0,1-.266-.8l4.764-1.588v-1.8a.421.421,0,0,1,.842,0v1.8l4.765,1.588A.421.421,0,0,1,13.9,16" /></g></svg>',
3981
+ quiz: '<svg id="Group_888" data-name="Group 888" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14.476" height="16" viewBox="0 0 14.476 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1682" data-name="Rectangle 1682" width="14.476" height="16" fill="none"/></clipPath></defs><g id="Group_887" data-name="Group 887" clip-path="url(#clip-path)"><path id="Path_1288" data-name="Path 1288" d="M9.524,16H4.953c-2.258,0-3.391,0-4.172-.781S0,13.305,0,11.048V6.476c0-2.257,0-3.39.781-4.171.715-.714,1.764-.771,3.407-.78l0,.762c-1.642.009-2.4.088-2.873.557C.762,3.4.762,4.429.762,6.476v4.572c0,2.047,0,3.075.558,3.633s1.585.557,3.633.557H9.524c2.047,0,3.075,0,3.632-.557s.558-1.586.558-3.633V6.476c0-2.047,0-3.074-.558-3.632-.468-.469-1.23-.548-2.872-.557l0-.762c1.643.009,2.693.066,3.407.78.781.781.781,1.914.781,4.171v4.572c0,2.257,0,3.39-.781,4.171S11.781,16,9.524,16" /><path id="Path_1289" data-name="Path 1289" d="M8,9.763H3.048a.286.286,0,1,1,0-.571H8a.286.286,0,1,1,0,.571" /><path id="Path_1290" data-name="Path 1290" d="M8,7.063H3.048a.286.286,0,1,1,0-.571H8a.286.286,0,1,1,0,.571" /><path id="Path_1291" data-name="Path 1291" d="M8,12.476H3.048a.286.286,0,1,1,0-.571H8a.286.286,0,1,1,0,.571" /><path id="Path_1292" data-name="Path 1292" d="M9.143,3.81H5.333A1.526,1.526,0,0,1,3.809,2.286V1.524A1.526,1.526,0,0,1,5.333,0h3.81a1.525,1.525,0,0,1,1.523,1.524v.762A1.525,1.525,0,0,1,9.143,3.81M5.333.762a.763.763,0,0,0-.762.762v.762a.763.763,0,0,0,.762.762h3.81A.762.762,0,0,0,9.9,2.286V1.524A.762.762,0,0,0,9.143.762Z" /><path id="Path_1293" data-name="Path 1293" d="M10.64,7.445a.182.182,0,0,1-.136-.061l-.347-.389a.182.182,0,0,1,.272-.243l.211.237.732-.82a.182.182,0,1,1,.272.243l-.868.972a.182.182,0,0,1-.136.061" /><path id="Path_1294" data-name="Path 1294" d="M10.64,10.146a.182.182,0,0,1-.136-.061L10.157,9.7a.182.182,0,0,1,.272-.243l.211.237.732-.82a.182.182,0,1,1,.272.243l-.868.972a.182.182,0,0,1-.136.061" /><path id="Path_1295" data-name="Path 1295" d="M10.64,12.859A.182.182,0,0,1,10.5,12.8l-.347-.389a.182.182,0,0,1,.272-.243l.211.237.732-.82a.182.182,0,1,1,.272.243l-.868.972a.182.182,0,0,1-.136.061" /></g></svg>',
3982
+ story: '<svg xmlns="http://www.w3.org/2000/svg" width="20.554" height="17.009" viewBox="0 0 20.554 17.009"><g id="Group_952" data-name="Group 952" transform="translate(-0.5 -1.491)"> <g id="Group_951" data-name="Group 951"> <path id="Path_1356" data-name="Path 1356" d="M20.063,6.538,11.175,2.093a.889.889,0,0,0-.8,0L1.491,6.538a.886.886,0,0,0-.4.412,1.1,1.1,0,0,0-.1.384v5.124a.89.89,0,0,0,1.778,0V8.647l1.778.711v4.358a.89.89,0,0,0,.492.8,11.458,11.458,0,0,0,5.73,1.706,11.464,11.464,0,0,0,5.73-1.706.891.891,0,0,0,.492-.8V9.358l3-1.2a.891.891,0,0,0,.067-1.621Zm-4.842,6.629-.867.433a8.033,8.033,0,0,1-7.155,0l-.867-.433v-3.1l4.114,1.646a.887.887,0,0,0,.331.062.871.871,0,0,0,.331-.063l4.114-1.646ZM10.777,9.931,4.057,7.242l6.721-3.359L17.5,7.242,10.777,9.931ZM1.889,14.444A.889.889,0,0,0,1,15.333V17.11a.889.889,0,0,0,1.778,0V15.333A.889.889,0,0,0,1.889,14.444Z" stroke="#fff" stroke-width="1"/> </g></g></svg>',
3983
+ video: '<svg id="Group_890" data-name="Group 890" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1683" data-name="Rectangle 1683" width="16" height="16" fill="none"/></clipPath></defs><g id="Group_889" data-name="Group 889" clip-path="url(#clip-path)"> <path id="Path_1296" data-name="Path 1296" d="M8,16a8,8,0,1,1,8-8,8.009,8.009,0,0,1-8,8M8,.762A7.238,7.238,0,1,0,15.238,8,7.246,7.246,0,0,0,8,.762" /> <path id="Path_1297" data-name="Path 1297" d="M6.912,11.431a.88.88,0,0,1-.549-.194c-.507-.38-.544-1.017-.618-2.284-.019-.333-.031-.66-.031-.953s.012-.62.031-.952c.074-1.268.111-1.9.617-2.286.574-.431,1.149-.08,2.02.449.22.133.433.27.619.4.212.149.444.329.678.519.854.7,1.369,1.116,1.369,1.869s-.515,1.171-1.367,1.867c-.236.192-.468.372-.682.521-.184.131-.4.267-.617.4a3.279,3.279,0,0,1-1.47.643M6.93,5.337a.18.18,0,0,0-.11.034c-.224.168-.258.752-.314,1.72-.018.317-.03.629-.03.909s.012.591.03.909c.056.967.09,1.551.315,1.72.145.108.436-.048,1.166-.491.2-.125.4-.25.575-.373.2-.141.417-.309.635-.488.81-.659,1.089-.906,1.089-1.277s-.28-.619-1.088-1.278c-.219-.178-.435-.346-.636-.487-.174-.123-.372-.249-.575-.373A3.108,3.108,0,0,0,6.93,5.337" /></g></svg>',
3984
+ text: '<svg width="22" height="22" viewBox="0 0 18 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.1788 6H6.82125L6.75 8.5H7.375C7.6 7.13 7.82 7.01 9.4925 6.95625L9.85875 6.94375V14.5563C9.85875 15.1438 9.73375 15.2837 8.73625 15.375V16H12.2625V15.375C11.2587 15.2837 11.1337 15.145 11.1337 14.5575V6.94375L11.5063 6.95625C13.1788 7.01 13.3987 7.13125 13.6237 8.5H14.2487L14.1788 6Z"/><path d="M5.5 1C4.83696 1 4.20107 1.26339 3.73223 1.73223C3.26339 2.20107 3 2.83696 3 3.5V18.5C3 19.163 3.26339 19.7989 3.73223 20.2678C4.20107 20.7366 4.83696 21 5.5 21H15.5C16.163 21 16.7989 20.7366 17.2678 20.2678C17.7366 19.7989 18 19.163 18 18.5V3.5C18 2.83696 17.7366 2.20107 17.2678 1.73223C16.7989 1.26339 16.163 1 15.5 1H5.5ZM5.5 2.25H15.5C15.8315 2.25 16.1495 2.3817 16.3839 2.61612C16.6183 2.85054 16.75 3.16848 16.75 3.5V18.5C16.75 18.8315 16.6183 19.1495 16.3839 19.3839C16.1495 19.6183 15.8315 19.75 15.5 19.75H5.5C5.16848 19.75 4.85054 19.6183 4.61612 19.3839C4.3817 19.1495 4.25 18.8315 4.25 18.5V3.5C4.25 3.16848 4.3817 2.85054 4.61612 2.61612C4.85054 2.3817 5.16848 2.25 5.5 2.25Z"/></svg>',
3985
+ learningunit: '<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 19L6.757 11.649C6.82844 11.4584 6.95632 11.2942 7.12357 11.1782C7.29082 11.0623 7.48948 11.0001 7.693 11H20M4 19H18.026C18.4913 18.9999 18.942 18.8375 19.3004 18.5409C19.6589 18.2443 19.9028 17.832 19.99 17.375L20.986 12.164C21.0098 12.0208 21.0022 11.8741 20.9636 11.7342C20.925 11.5943 20.8564 11.4644 20.7626 11.3536C20.6688 11.2429 20.5519 11.1539 20.4203 11.0928C20.2886 11.0317 20.1452 11.0001 20 11M4 19C3.46957 19 2.96086 18.7893 2.58579 18.4142C2.21071 18.0391 2 17.5304 2 17V6C2 5.46957 2.21071 4.96086 2.58579 4.58579C2.96086 4.21071 3.46957 4 4 4H8L11 7H18C18.5304 7 19.0391 7.21071 19.4142 7.58579C19.7893 7.96086 20 8.46957 20 9V11" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3986
+ generic: '<svg class="generic-file-icon" xmlns="http://www.w3.org/2000/svg" width="13.165" height="16.641" viewBox="0 0 13.165 16.641"><g id="file-dots" transform="translate(-3.845 -2.107)"><path id="Path_1460" data-name="Path 1460" d="M15.427,18.641H6.738A1.738,1.738,0,0,1,5,16.9V4.738A1.738,1.738,0,0,1,6.738,3H12.82l4.345,4.345V16.9A1.738,1.738,0,0,1,15.427,18.641Z" transform="translate(-0.655 -0.393)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1461" data-name="Path 1461" d="M9,14v.009" transform="translate(-1.18 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1462" data-name="Path 1462" d="M12,14v.009" transform="translate(-1.573 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1463" data-name="Path 1463" d="M15,14v.009" transform="translate(-1.966 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3987
+ success: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g id="success" transform="translate(-268 -524)"><g id="circle-check" transform="translate(268 524)"><path id="Path_1570" data-name="Path 1570" d="M0,0H24V24H0Z" fill="none"/><path id="Path_1571" data-name="Path 1571" d="M12,21.5A9.5,9.5,0,1,1,21.5,12,9.438,9.438,0,0,1,12,21.5ZM3.5,12A8.5,8.5,0,1,0,12,3.5,8.444,8.444,0,0,0,3.5,12Z"/> <path id="Path_1572" data-name="Path 1572" d="M11.25,14.5h-.094a.75.75,0,0,1-.473-.168l-2.156-1.75a.75.75,0,0,1,.945-1.165l1.683,1.366L14.47,9.47A.75.75,0,1,1,15.53,10.53l-3.75,3.75A.75.75,0,0,1,11.25,14.5Z"/></g></g></svg>',
3988
+ error: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g id="Error" transform="translate(-310 -524)"><path id="Path_1570" data-name="Path 1570" d="M0,0H24V24H0Z" transform="translate(310 524)" fill="none"/><path id="Path_1571" data-name="Path 1571" d="M12,21.5A9.5,9.5,0,1,1,21.5,12,9.438,9.438,0,0,1,12,21.5ZM3.5,12A8.5,8.5,0,1,0,12,3.5,8.444,8.444,0,0,0,3.5,12Z" transform="translate(310 524)" fill="#ff0a4d"/><line id="Line_433" data-name="Line 433" x1="5" y2="5" transform="translate(319.5 533.5)" fill="none" stroke="#ff0a4d" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line id="Line_434" data-name="Line 434" x2="5" y2="5" transform="translate(319.5 533.5)" fill="none" stroke="#ff0a4d" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
3989
+ information: '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.75 10.55V7.75M7.75 4.95H7.757M14.75 7.75C14.75 11.616 11.616 14.75 7.75 14.75C3.88401 14.75 0.75 11.616 0.75 7.75C0.75 3.88401 3.88401 0.75 7.75 0.75C11.616 0.75 14.75 3.88401 14.75 7.75Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3990
+ primaryPlay: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 247.285 247.285"><defs><clipPath id="clip-path"><rect id="Rectangle_537" data-name="Rectangle 537" width="247.285" height="247.285" fill="#fff"/></clipPath><linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox"><stop class="start-stop-color" offset="0" stop-color=""/><stop class="middle-stop-color" offset="0.661" stop-color=""/><stop class="end-stop-color" offset="1" stop-color=""/></linearGradient></defs><g id="Group_944" data-name="Group 944" transform="translate(-508.407 -275.197)"><g id="Group_770" data-name="Group 770" transform="translate(508.407 275.197)" opacity="0.5" style="mix-blend-mode: overlay;isolation: isolate"><g id="Group_769" data-name="Group 769"><g id="Group_768" data-name="Group 768" clip-path="url(#clip-path)"><path id="Path_975" data-name="Path 975" d="M2042.058,1095.954a123.643,123.643,0,1,1-123.643-123.643,123.643,123.643,0,0,1,123.643,123.643" transform="translate(-1794.772 -972.311)" fill="#fff"/></g></g></g><path id="Path_976" data-name="Path 976" d="M2197.875,1288.733l-60.24-33.5a7.1,7.1,0,0,0-10.546,6.2v66.994a7.1,7.1,0,0,0,10.546,6.2l60.24-33.5a7.1,7.1,0,0,0,0-12.406" transform="translate(-1519.037 -896.098)" fill="url(#linear-gradient)"/></g></svg>',
3991
+ hadrachaHierarchy: '<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 19L6.757 11.649C6.82844 11.4584 6.95632 11.2942 7.12357 11.1782C7.29082 11.0623 7.48948 11.0001 7.693 11H20M4 19H18.026C18.4913 18.9999 18.942 18.8375 19.3004 18.5409C19.6589 18.2443 19.9028 17.832 19.99 17.375L20.986 12.164C21.0098 12.0208 21.0022 11.8741 20.9636 11.7342C20.925 11.5943 20.8564 11.4644 20.7626 11.3536C20.6688 11.2429 20.5519 11.1539 20.4203 11.0928C20.2886 11.0317 20.1452 11.0001 20 11M4 19C3.46957 19 2.96086 18.7893 2.58579 18.4142C2.21071 18.0391 2 17.5304 2 17V6C2 5.46957 2.21071 4.96086 2.58579 4.58579C2.96086 4.21071 3.46957 4 4 4H8L11 7H18C18.5304 7 19.0391 7.21071 19.4142 7.58579C19.7893 7.96086 20 8.46957 20 9V11" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3992
+ hadrachaHierarchyResource: '<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.8644 1V5C9.8644 5.26522 9.96966 5.51957 10.157 5.70711C10.3444 5.89464 10.5985 6 10.8634 6H14.8596M9.8644 1H2.87113C2.3412 1 1.83298 1.21071 1.45827 1.58579C1.08356 1.96086 0.873047 2.46957 0.873047 3V17C0.873047 17.5304 1.08356 18.0391 1.45827 18.4142C1.83298 18.7893 2.3412 19 2.87113 19H12.8615C13.3914 19 13.8997 18.7893 14.2744 18.4142C14.6491 18.0391 14.8596 17.5304 14.8596 17V6M9.8644 1L14.8596 6M4.8692 15H10.8634M4.8692 11H10.8634" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3993
+ link: '<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.99151 9.25504C7.31542 9.68851 7.72868 10.0472 8.20326 10.3067C8.67783 10.5663 9.20261 10.7206 9.74201 10.7593C10.2814 10.798 10.8228 10.72 11.3295 10.5309C11.8362 10.3417 12.2963 10.0456 12.6786 9.66275L14.9414 7.39769C15.6283 6.6857 16.0085 5.7321 15.9999 4.74229C15.9913 3.75247 15.5946 2.80563 14.8954 2.1057C14.1962 1.40577 13.2503 1.00874 12.2615 1.00014C11.2727 0.991541 10.32 1.37205 9.60877 2.05971L8.31145 3.35079M10.0085 7.74496C9.68458 7.31149 9.27132 6.95281 8.79674 6.69327C8.32217 6.43373 7.79739 6.27939 7.25799 6.24072C6.71859 6.20205 6.17719 6.27995 5.67051 6.46915C5.16383 6.65835 4.70373 6.95441 4.32141 7.33725L2.05864 9.60231C1.37167 10.3143 0.99155 11.2679 1.00014 12.2577C1.00874 13.2475 1.40536 14.1944 2.10458 14.8943C2.80381 15.5942 3.74969 15.9913 4.73851 15.9999C5.72732 16.0085 6.67996 15.628 7.39123 14.9403L8.681 13.6492" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
3994
+ messagePlus: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" ><g clip - path="url(#clip0_17_2752)"><path d="M8 9H16" stroke - linecap="round" stroke - linejoin="round"/>< path d="M8 13H14" stroke- linecap="round" stroke - linejoin="round" /> <path d="M12.01 18.594L8 21V18H6C5.20435 18 4.44129 17.6839 3.87868 17.1213C3.31607 16.5587 3 15.7956 3 15V7C3 6.20435 3.31607 5.44129 3.87868 4.87868C4.44129 4.31607 5.20435 4 6 4H18C18.7956 4 19.5587 4.31607 20.1213 4.87868C20.6839 5.44129 21 6.20435 21 7V12.5" stroke - linecap="round" stroke - linejoin="round" /> <path d="M16 19H22" stroke - linecap="round" stroke - linejoin="round" /> <path d="M19 16V22" stroke - linecap="round" stroke - linejoin="round" /> </g>< defs ><clipPath id="clip0_17_2752" ><rect width="24" height = "24" fill ="white" /></clipPath> </defs> </svg>',
3995
+ check: '<svg viewBox="0 0 16 16" width="16" height="16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 5L4.66667 9L12 1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'
3996
+ };
3997
+
3909
3998
  class HerumToolTipDirective {
3910
3999
  el;
3911
4000
  tooltipText = '';
@@ -4063,6 +4152,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
4063
4152
  args: ['textarea']
4064
4153
  }] } });
4065
4154
 
4155
+ const additionTagName$1 = 'ins';
4156
+ const editorContainerElementId$1 = 'editor-container';
4157
+ const mouseEnterHandlerKey$1 = 'mouseEnterHandler';
4158
+ const mouseLeaveHandlerKey$1 = 'mouseLeaveHandler';
4159
+ const mouseEnter$1 = 'mouseenter';
4160
+ const mouseLeave$1 = 'mouseleave';
4066
4161
  class TrackTextChangesComponent {
4067
4162
  trackTextChangesService;
4068
4163
  changes = [];
@@ -4072,6 +4167,7 @@ class TrackTextChangesComponent {
4072
4167
  isReadOnly = false;
4073
4168
  fontSize;
4074
4169
  showComments = true;
4170
+ allowedActions;
4075
4171
  changesEmitter = new EventEmitter();
4076
4172
  editor;
4077
4173
  trackChangesEnabled = true;
@@ -4088,6 +4184,7 @@ class TrackTextChangesComponent {
4088
4184
  isCursorInsideMarker = false;
4089
4185
  editingCommentElement = null;
4090
4186
  markerTimeoutId;
4187
+ defaultAllowedActions = ["addition", "deletion", "comment"];
4091
4188
  textChangeStyle;
4092
4189
  commentTextHoverColor;
4093
4190
  // #endregion
@@ -4097,8 +4194,10 @@ class TrackTextChangesComponent {
4097
4194
  this.textChangeStyle = this.trackTextChangesService.getStyle();
4098
4195
  }
4099
4196
  ngOnChanges(changes) {
4100
- this.changes = (!changes["changes"]?.currentValue && !changes["selectedChange"]) ?
4101
- [] : this.changes?.filter(change => change.type != "generalNote");
4197
+ if (!changes["changes"]?.currentValue && !changes["selectedChange"])
4198
+ this.changes = [];
4199
+ else
4200
+ this.changes = this.changes?.filter(change => change.type != "generalNote");
4102
4201
  this.applyChangesToContent();
4103
4202
  }
4104
4203
  ngAfterViewInit() {
@@ -4108,55 +4207,34 @@ class TrackTextChangesComponent {
4108
4207
  }
4109
4208
  // #endregion
4110
4209
  // #region Event Handlers
4111
- _onPaste(event) {
4112
- if (this.markerTimeoutId)
4113
- return;
4114
- const pastedText = event.clipboardData.getData('text');
4115
- if (!pastedText)
4116
- return;
4117
- const selection = window.getSelection();
4118
- event.preventDefault();
4119
- if (!this.isAdditionKeyPressValid(selection))
4120
- return;
4121
- const range = selection.getRangeAt(0);
4122
- const isInsideInsTag = this.isInsideTag(range.startContainer, additionTagName$1);
4123
- if (isInsideInsTag || this.isUpdateAdditionWhileSelectionIsNextToInsTag(range, selection)) {
4124
- const additionEvent = { key: pastedText };
4125
- const isDeletionKey = false;
4126
- if (isInsideInsTag)
4127
- this.updateAdditionWhileSelectionIsInsideInsTag(selection, additionEvent, isDeletionKey);
4128
- else
4129
- this.updateAdditionWhileSelectionIsNextToInsTag(selection, additionEvent, isDeletionKey);
4130
- return;
4131
- }
4132
- this.insertNewAddition(selection, pastedText);
4133
- }
4134
4210
  _onKeyDown(event) {
4135
4211
  this.showTooltip = false;
4136
- if (this.markerTimeoutId) {
4137
- event.preventDefault();
4138
- return;
4139
- }
4140
- if (event.code.toLowerCase().includes("numpad") || event.ctrlKey)
4212
+ if (event.code.toLowerCase().includes("numpad"))
4141
4213
  return;
4142
4214
  if (event.key == 'Enter')
4143
4215
  event.preventDefault();
4144
4216
  const selection = window.getSelection();
4145
- if (!selection || !selection.rangeCount)
4217
+ if (!selection || !selection.rangeCount) {
4146
4218
  return;
4219
+ }
4147
4220
  const isDeletionKey = event.key === 'Backspace' || event.key === 'Delete';
4148
4221
  const isSingleCharacterKey = event.key.length === 1;
4149
4222
  if (isDeletionKey || isSingleCharacterKey) {
4150
4223
  event.preventDefault();
4224
+ if (!isDeletionKey && !this.isActionAllowed("addition")) {
4225
+ this.handleShowNotAllowedActionTooltip(selection);
4226
+ return;
4227
+ }
4228
+ if (isDeletionKey && !this.isActionAllowed("deletion")) {
4229
+ this.handleShowNotAllowedActionTooltip(selection);
4230
+ return;
4231
+ }
4151
4232
  if (!this.isAdditionKeyPressValid(selection))
4152
4233
  return;
4153
4234
  const range = selection.getRangeAt(0);
4154
4235
  const isInsideInsTag = this.isInsideTag(range.startContainer, additionTagName$1);
4155
- if (isInsideInsTag || this.isUpdateAdditionWhileSelectionIsNextToInsTag(range, selection)) {
4156
- if (isInsideInsTag)
4157
- this.updateAdditionWhileSelectionIsInsideInsTag(selection, event, isDeletionKey);
4158
- else
4159
- this.updateAdditionWhileSelectionIsNextToInsTag(selection, event, isDeletionKey);
4236
+ if (isInsideInsTag || this.isUpdateAdditionWhileSelectionIsNextToInsTag(selection)) {
4237
+ this.updateAddition(event, selection, isDeletionKey, isInsideInsTag);
4160
4238
  return;
4161
4239
  }
4162
4240
  if (isDeletionKey) {
@@ -4164,8 +4242,9 @@ class TrackTextChangesComponent {
4164
4242
  return;
4165
4243
  this.handleDeletion(selection);
4166
4244
  }
4167
- else
4245
+ else {
4168
4246
  this.insertNewAddition(selection, event.key);
4247
+ }
4169
4248
  }
4170
4249
  }
4171
4250
  /**
@@ -4173,8 +4252,6 @@ class TrackTextChangesComponent {
4173
4252
  * @param event mouse event from the text editor.
4174
4253
  */
4175
4254
  _onTextSelection() {
4176
- if (this.markerTimeoutId)
4177
- return;
4178
4255
  if (this.showTooltip) {
4179
4256
  this.showTooltip = false;
4180
4257
  return;
@@ -4189,6 +4266,10 @@ class TrackTextChangesComponent {
4189
4266
  else
4190
4267
  this.showNotAllowedActionTooltip = false;
4191
4268
  if (!selection.isCollapsed) {
4269
+ if (!this.showComments || !this.isActionAllowed("comment")) {
4270
+ this.showTooltip = false;
4271
+ return;
4272
+ }
4192
4273
  this.tooltipPosition = this.getSelectionTooltipPosition(selection);
4193
4274
  this.showTooltip = true;
4194
4275
  this.showNotAllowedActionTooltip = this.showCommentBox = false;
@@ -4248,11 +4329,13 @@ class TrackTextChangesComponent {
4248
4329
  * Applies external changes to the base content and updates the editor.
4249
4330
  */
4250
4331
  applyChangesToContent() {
4251
- if (!this.editor || !this.editor.nativeElement)
4332
+ if (!this.editor || !this.editor.nativeElement) {
4252
4333
  return;
4334
+ }
4253
4335
  this.editor.nativeElement.innerHTML = this.baseContent ?? '';
4254
- if (!this.changes || !this.changes.length)
4336
+ if (!this.changes || !this.changes.length) {
4255
4337
  return;
4338
+ }
4256
4339
  let content = this.baseContent ?? '';
4257
4340
  const sortedChanges = this.changes.sort((a, b) => b.startOffset - a.startOffset);
4258
4341
  this.sortAdjacentChangesWhichOneOfThemIsAdditionType(sortedChanges);
@@ -4308,7 +4391,7 @@ class TrackTextChangesComponent {
4308
4391
  const hoverColor = (this.selectedChange?.id === change.id) ? this.textChangeStyle.delHoverColor : '';
4309
4392
  const end = change.endOffset || change.startOffset;
4310
4393
  return content.slice(0, change.startOffset) +
4311
- `<del id="${change.id}" type="${change.type}" style="${this.textChangeStyle.del + hoverColor}">` +
4394
+ `<del type="${change.type}" style="${this.textChangeStyle.del + hoverColor}">` +
4312
4395
  change.note +
4313
4396
  `</del>` +
4314
4397
  content.slice(end + 1);
@@ -4417,15 +4500,23 @@ class TrackTextChangesComponent {
4417
4500
  }
4418
4501
  // #endregion
4419
4502
  // #region Insertion Logic
4420
- isUpdateAdditionWhileSelectionIsNextToInsTag(range, selection) {
4421
- const currentNodeAbsoluteStartOffset = selection.anchorOffset + this.getAbsoluteOffset(this.editor.nativeElement, range.startContainer);
4422
- const nextSiblingInsertionElement = this.getSiblingSameTag(range.startContainer, additionTagName$1, 'nextElementSibling');
4503
+ isUpdateAdditionWhileSelectionIsNextToInsTag(selection) {
4504
+ const range = selection.getRangeAt(0);
4505
+ const currentNodeAbsoluteOffset = selection.anchorOffset + this.getAbsoluteOffset(this.editor.nativeElement, range.startContainer);
4506
+ const nextSiblingInsertionElement = this.getNextSiblingSameTag(range.startContainer, additionTagName$1);
4423
4507
  if (!nextSiblingInsertionElement)
4424
4508
  return false;
4425
- const nextSiblingInsertionElementAbsoluteStartOffset = this.getAbsoluteOffset(this.editor.nativeElement, nextSiblingInsertionElement);
4426
- return nextSiblingInsertionElementAbsoluteStartOffset === currentNodeAbsoluteStartOffset;
4509
+ const nextSiblingInsertionElementAbsoluteOffset = this.getAbsoluteOffset(this.editor.nativeElement, nextSiblingInsertionElement);
4510
+ return nextSiblingInsertionElementAbsoluteOffset === currentNodeAbsoluteOffset;
4511
+ }
4512
+ updateAddition(event, selection, isDeletionKey, isInsideInsTag) {
4513
+ if (isInsideInsTag) {
4514
+ this.updateAdditionWhileSelectionIsInsideInsTag(selection, event, isDeletionKey);
4515
+ return;
4516
+ }
4517
+ this.updateAdditionWhileSelectionIsNextToInsTag(selection, event, isDeletionKey);
4427
4518
  }
4428
- updateAdditionWhileSelectionIsInsideInsTag(selection, additionEvent, isDeletionKey) {
4519
+ updateAdditionWhileSelectionIsInsideInsTag(selection, event, isDeletionKey) {
4429
4520
  const range = selection.getRangeAt(0);
4430
4521
  const currentNode = range.startContainer;
4431
4522
  const offset = range.startOffset;
@@ -4435,28 +4526,28 @@ class TrackTextChangesComponent {
4435
4526
  text = isDeletionKey ?
4436
4527
  text.slice(0, offset - 1) + text.slice(offset)
4437
4528
  :
4438
- text.slice(0, offset) + additionEvent.key + text.slice(offset);
4529
+ text.slice(0, offset) + event.key + text.slice(offset);
4439
4530
  const textChangeToUpdate = this.changes.find(change => change.id === currentNode.parentNode.id);
4440
4531
  if (!textChangeToUpdate)
4441
4532
  return;
4442
4533
  text ? textChangeToUpdate.note = currentNode.textContent = text : this.deleteChange(textChangeToUpdate);
4443
- const caretDiffPosition = !isDeletionKey ? additionEvent.key.length : -1;
4534
+ const caretDiffPosition = !isDeletionKey ? 1 : -1;
4444
4535
  this.updateSelection(selection, currentNode, offset + caretDiffPosition);
4445
4536
  if (text)
4446
4537
  this.changesEmitter.emit(this.changes);
4447
4538
  }
4448
- updateAdditionWhileSelectionIsNextToInsTag(selection, additionEvent, isDeletionKey) {
4539
+ updateAdditionWhileSelectionIsNextToInsTag(selection, event, isDeletionKey) {
4449
4540
  const range = selection.getRangeAt(0);
4450
- const nextSiblingInsertionElement = this.getSiblingSameTag(range.startContainer, additionTagName$1, 'nextElementSibling');
4541
+ const nextSiblingInsertionElement = this.getNextSiblingSameTag(range.startContainer, additionTagName$1);
4451
4542
  if (isDeletionKey)
4452
4543
  return;
4453
4544
  const textChangeToUpdate = this.changes.find(change => change?.id === nextSiblingInsertionElement?.id);
4454
4545
  if (!textChangeToUpdate)
4455
4546
  return;
4456
4547
  const textElement = nextSiblingInsertionElement;
4457
- textElement.textContent = additionEvent.key + textElement.textContent;
4548
+ textElement.textContent = event.key + textElement.textContent;
4458
4549
  textChangeToUpdate.note = textElement.textContent;
4459
- const nextCharCaretDiffPosition = additionEvent.key.length;
4550
+ const nextCharCaretDiffPosition = 1;
4460
4551
  this.updateSelection(selection, nextSiblingInsertionElement?.firstChild, nextCharCaretDiffPosition);
4461
4552
  this.changesEmitter.emit(this.changes);
4462
4553
  }
@@ -4478,15 +4569,16 @@ class TrackTextChangesComponent {
4478
4569
  selection.removeAllRanges();
4479
4570
  selection.addRange(range);
4480
4571
  }
4481
- const startOffset = this.getAbsoluteOffset(this.editor.nativeElement, newInsTag);
4482
- this.recordChange({
4572
+ const offset = this.getAbsoluteOffset(this.editor.nativeElement, newInsTag);
4573
+ const textChange = {
4483
4574
  id: newInsTag.id,
4484
4575
  type: 'addition',
4485
4576
  note: text,
4486
4577
  creatingUser: this.currentUser,
4487
4578
  timeStamp: new Date(),
4488
- startOffset: startOffset
4489
- });
4579
+ startOffset: offset
4580
+ };
4581
+ this.recordChange(textChange);
4490
4582
  }
4491
4583
  /**
4492
4584
  * Creates an <ins> tag element for added text.
@@ -4522,81 +4614,32 @@ class TrackTextChangesComponent {
4522
4614
  */
4523
4615
  handleDeletion(selection) {
4524
4616
  const deletedText = window.getSelection().toString();
4525
- if (!deletedText)
4526
- return;
4527
- const delTag = this.createDelTag(deletedText);
4528
- const range = selection.getRangeAt(0);
4529
- try {
4530
- range.surroundContents(delTag);
4531
- }
4532
- catch (error) {
4533
- return;
4534
- }
4535
- const targetNode = range.startContainer.childNodes[range.startOffset];
4536
- const currentNodeAbsoluteStartOffset = this.getAbsoluteOffset(this.editor.nativeElement, targetNode);
4537
- const deletionTagsUpdateData = this.getDeletionTagsUpdateData(targetNode, currentNodeAbsoluteStartOffset, deletedText);
4538
- if (deletionTagsUpdateData.isNewDeletionAdjacentBeforeDeletionTag || deletionTagsUpdateData.isNewDeletionAdjacentAfterDeletionTag) {
4539
- this.updateDeletionTags(deletionTagsUpdateData);
4540
- return;
4541
- }
4542
- this.recordChange({
4543
- id: delTag.id,
4544
- type: 'deletion',
4545
- note: deletedText,
4546
- creatingUser: this.currentUser,
4547
- timeStamp: new Date(),
4548
- startOffset: currentNodeAbsoluteStartOffset,
4549
- endOffset: currentNodeAbsoluteStartOffset + deletedText?.length - 1
4550
- });
4551
- }
4552
- getDeletionTagsUpdateData(targetNode, currentNodeAbsoluteOffset, deletedText) {
4553
- const nextSiblingDeletionElement = this.getSiblingSameTag(targetNode, deletionTagName$1, 'nextElementSibling');
4554
- const previousSiblingDeletionElement = this.getSiblingSameTag(targetNode, deletionTagName$1, 'previousElementSibling');
4555
- const nextSiblingDeletionElementAbsoluteStartOffset = nextSiblingDeletionElement ? this.getAbsoluteOffset(this.editor.nativeElement, nextSiblingDeletionElement) : undefined;
4556
- const previousSiblingDeletionElementAbsoluteStartOffset = previousSiblingDeletionElement ? this.getAbsoluteOffset(this.editor.nativeElement, previousSiblingDeletionElement) : undefined;
4557
- const isNewDeletionAdjacentBeforeDeletionTag = nextSiblingDeletionElement && (currentNodeAbsoluteOffset + deletedText.length === nextSiblingDeletionElementAbsoluteStartOffset);
4558
- const isNewDeletionAdjacentAfterDeletionTag = previousSiblingDeletionElement && (currentNodeAbsoluteOffset === previousSiblingDeletionElementAbsoluteStartOffset + previousSiblingDeletionElement.textContent.length);
4559
- return {
4560
- isNewDeletionAdjacentBeforeDeletionTag: isNewDeletionAdjacentBeforeDeletionTag,
4561
- isNewDeletionAdjacentAfterDeletionTag: isNewDeletionAdjacentAfterDeletionTag,
4562
- nextSiblingDeletionElement: nextSiblingDeletionElement,
4563
- previousSiblingDeletionElement: previousSiblingDeletionElement,
4564
- deletedText: deletedText
4565
- };
4566
- }
4567
- updateDeletionTags(deletionTagsUpdateData) {
4568
- const { isNewDeletionAdjacentBeforeDeletionTag, isNewDeletionAdjacentAfterDeletionTag, nextSiblingDeletionElement, previousSiblingDeletionElement, deletedText } = deletionTagsUpdateData;
4569
- const isNewDeletionBetweenToDeletionTags = isNewDeletionAdjacentBeforeDeletionTag && isNewDeletionAdjacentAfterDeletionTag;
4570
- let changeToUpdate;
4571
- if (isNewDeletionBetweenToDeletionTags) {
4572
- changeToUpdate = this.changes.find(change => change.id === previousSiblingDeletionElement.id);
4573
- if (!changeToUpdate)
4574
- return;
4575
- this.changes = this.changes.filter(change => change.id !== nextSiblingDeletionElement.id);
4576
- changeToUpdate.note += deletedText + nextSiblingDeletionElement.textContent;
4577
- }
4578
- else if (isNewDeletionAdjacentBeforeDeletionTag) {
4579
- changeToUpdate = this.changes.find(change => change.id === nextSiblingDeletionElement.id);
4580
- if (!changeToUpdate)
4581
- return;
4582
- changeToUpdate.note = deletedText + changeToUpdate.note;
4583
- changeToUpdate.startOffset -= deletedText.length;
4584
- }
4585
- else {
4586
- changeToUpdate = this.changes.find(change => change.id === previousSiblingDeletionElement.id);
4587
- if (!changeToUpdate)
4617
+ if (deletedText) {
4618
+ const delTag = this.createDelTag(deletedText);
4619
+ const range = selection.getRangeAt(0);
4620
+ try {
4621
+ range.surroundContents(delTag);
4622
+ }
4623
+ catch (error) {
4588
4624
  return;
4589
- changeToUpdate.note += deletedText;
4625
+ }
4626
+ const targetNode = range.startContainer.childNodes[range.startOffset];
4627
+ const startOffset = this.getAbsoluteOffset(this.editor.nativeElement, targetNode);
4628
+ this.recordChange({
4629
+ type: 'deletion',
4630
+ note: deletedText,
4631
+ creatingUser: this.currentUser,
4632
+ timeStamp: new Date(),
4633
+ startOffset,
4634
+ endOffset: startOffset + deletedText?.length - 1
4635
+ });
4590
4636
  }
4591
- changeToUpdate.endOffset = changeToUpdate.startOffset + changeToUpdate.note.length - 1;
4592
- this.changesEmitter.emit(this.changes);
4593
- this.applyChangesToContent();
4594
4637
  }
4595
4638
  deleteChange(changeToDelete) {
4596
4639
  const index = this.changes.findIndex(change => change === changeToDelete);
4597
- if (index === -1)
4598
- return;
4599
- this.changes.splice(index, 1);
4640
+ if (index !== -1) {
4641
+ this.changes.splice(index, 1);
4642
+ }
4600
4643
  this.changesEmitter.emit(this.changes);
4601
4644
  this.applyChangesToContent();
4602
4645
  }
@@ -4606,7 +4649,7 @@ class TrackTextChangesComponent {
4606
4649
  * @returns The created <del> HTMLElement.
4607
4650
  */
4608
4651
  createDelTag(text) {
4609
- const tag = document.createElement(deletionTagName$1);
4652
+ const tag = document.createElement('del');
4610
4653
  tag.textContent = text;
4611
4654
  tag.id = this.generateId();
4612
4655
  tag.setAttribute('style', this.textChangeStyle.del);
@@ -4619,6 +4662,8 @@ class TrackTextChangesComponent {
4619
4662
  * Opens the comment box tooltip for the current selection.
4620
4663
  */
4621
4664
  openCommentBox() {
4665
+ if (!this.isActionAllowed("comment"))
4666
+ return;
4622
4667
  const selection = window.getSelection();
4623
4668
  if (selection && selection.rangeCount > 0) {
4624
4669
  const range = selection.getRangeAt(0);
@@ -4628,8 +4673,9 @@ class TrackTextChangesComponent {
4628
4673
  this.showTooltip = false;
4629
4674
  this.showCommentBox = true;
4630
4675
  }
4631
- else
4676
+ else {
4632
4677
  this.resetCommentUI();
4678
+ }
4633
4679
  }
4634
4680
  /**
4635
4681
  * Calculates the position for the comment box.
@@ -4646,6 +4692,8 @@ class TrackTextChangesComponent {
4646
4692
  * Adds a comment using a prompt (used by the toolbar).
4647
4693
  */
4648
4694
  addComment() {
4695
+ if (!this.isActionAllowed("comment"))
4696
+ return;
4649
4697
  const selection = window.getSelection();
4650
4698
  if (selection && selection.rangeCount > 0) {
4651
4699
  const range = selection.getRangeAt(0);
@@ -4670,6 +4718,8 @@ class TrackTextChangesComponent {
4670
4718
  * Saves a comment from the comment box. If editing, updates the existing comment.
4671
4719
  */
4672
4720
  saveComment() {
4721
+ if (!this.isActionAllowed("comment"))
4722
+ return;
4673
4723
  if (this.editCommentBox && this.editingCommentElement) {
4674
4724
  this.editingCommentElement.setAttribute('data-comment', this.newCommentText);
4675
4725
  const tooltip = this.editingCommentElement.querySelector('.comment-tooltip');
@@ -4796,6 +4846,10 @@ class TrackTextChangesComponent {
4796
4846
  const rect = commentTag.getBoundingClientRect();
4797
4847
  this.commentBoxPosition = { top: rect.bottom + window.scrollY, left: rect.left + window.scrollX };
4798
4848
  tooltip.style.display = 'none';
4849
+ // tooltip.style.fontSize = '0';
4850
+ // tooltip.querySelector('p').style.fontSize = '0';
4851
+ // tooltip.style.top = '0';
4852
+ // tooltip.style.left = '0';
4799
4853
  }
4800
4854
  /**
4801
4855
  * Deletes a comment from the DOM and removes its change record.
@@ -4807,9 +4861,9 @@ class TrackTextChangesComponent {
4807
4861
  parent.replaceChild(document.createTextNode(commentTag.ariaLabel || ''), commentTag);
4808
4862
  }
4809
4863
  const index = this.changes.findIndex(change => change.id === commentTag.id);
4810
- if (index === -1)
4811
- return;
4812
- this.changes.splice(index, 1);
4864
+ if (index !== -1) {
4865
+ this.changes.splice(index, 1);
4866
+ }
4813
4867
  this.changesEmitter.emit(this.changes);
4814
4868
  this.applyChangesToContent();
4815
4869
  this.updateListenersForMarksAndTooltips();
@@ -4840,8 +4894,9 @@ class TrackTextChangesComponent {
4840
4894
  const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {
4841
4895
  acceptNode: (node) => {
4842
4896
  // Ignore comment markers and other non-text nodes
4843
- if (node.parentElement?.tagName === 'P')
4897
+ if (node.parentElement?.tagName === 'P') {
4844
4898
  return NodeFilter.FILTER_REJECT;
4899
+ }
4845
4900
  return NodeFilter.FILTER_ACCEPT;
4846
4901
  }
4847
4902
  });
@@ -4849,8 +4904,9 @@ class TrackTextChangesComponent {
4849
4904
  let currentNode = walker.nextNode();
4850
4905
  while (currentNode) {
4851
4906
  const isInsElement = currentNode.parentNode.tagName.toLowerCase() === additionTagName$1;
4852
- if ((currentNode.parentNode === node || currentNode === node))
4907
+ if ((currentNode.parentNode === node || currentNode === node)) {
4853
4908
  return currentOffset;
4909
+ }
4854
4910
  if (!isInsElement)
4855
4911
  currentOffset += currentNode.textContent?.length || 0;
4856
4912
  currentNode = walker.nextNode();
@@ -4865,20 +4921,21 @@ class TrackTextChangesComponent {
4865
4921
  */
4866
4922
  isInsideTag(node, tagName) {
4867
4923
  while (node) {
4868
- if (node.nodeType === Node.ELEMENT_NODE && node.tagName.toLowerCase() === tagName)
4924
+ if (node.nodeType === Node.ELEMENT_NODE && node.tagName.toLowerCase() === tagName) {
4869
4925
  return true;
4926
+ }
4870
4927
  node = node.parentNode;
4871
4928
  if (node.id === editorContainerElementId$1)
4872
4929
  return false;
4873
4930
  }
4874
4931
  return false;
4875
4932
  }
4876
- getSiblingSameTag(node, tagName, siblingKey) {
4877
- let sibling = node[siblingKey];
4878
- if (!sibling)
4933
+ getNextSiblingSameTag(node, tagName) {
4934
+ let nextSibling = node.nextElementSibling;
4935
+ if (!nextSibling)
4879
4936
  return null;
4880
- return sibling.nodeType === Node.ELEMENT_NODE && sibling.tagName.toLowerCase() === tagName ?
4881
- sibling : null;
4937
+ return nextSibling.nodeType === Node.ELEMENT_NODE && nextSibling.tagName.toLowerCase() === tagName ?
4938
+ nextSibling : null;
4882
4939
  }
4883
4940
  /**
4884
4941
  * Records a change in the changes list.
@@ -4909,20 +4966,24 @@ class TrackTextChangesComponent {
4909
4966
  return isTruncatedTitleElement(element);
4910
4967
  }
4911
4968
  get informationIconSvgString() {
4912
- return svgsStrings$1.information;
4969
+ return svgsStrings.information;
4913
4970
  }
4914
4971
  get messagePlusIconSvgString() {
4915
- return svgsStrings$1.messagePlus;
4972
+ return svgsStrings.messagePlus;
4916
4973
  }
4917
4974
  ngOnDestroy() {
4918
4975
  this.removeEventListenerFromMarkersAndTooltips();
4919
4976
  }
4977
+ isActionAllowed(action) {
4978
+ const actions = this.allowedActions?.length ? this.allowedActions : this.defaultAllowedActions;
4979
+ return actions.includes(action);
4980
+ }
4920
4981
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TrackTextChangesComponent, deps: [{ token: i2$1.TrackTextChangesService }], target: i0.ɵɵFactoryTarget.Component });
4921
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: TrackTextChangesComponent, isStandalone: false, selector: "track-text-changes", inputs: { changes: "changes", selectedChange: "selectedChange", currentUser: "currentUser", baseContent: "baseContent", isReadOnly: "isReadOnly", fontSize: "fontSize", showComments: "showComments" }, outputs: { changesEmitter: "changesEmitter" }, viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"editor-container\" class=\"editor-container\" dir=\"rtl\" [ngClass]=\"{'editor-container-with-grid':showComments}\">\r\n <div #editor class=\"text-editor\" [attr.contenteditable]=\"!isReadOnly\" (keydown)=\"_onKeyDown($event)\"\r\n (mouseup)=\"_onTextSelection()\" (drop)=\"_onDropTextSelection($event)\" (paste)=\"_onPaste($event)\">\r\n </div>\r\n\r\n <div *ngIf=\"showComments\" class=\"comments-panel\">\r\n <h3>\u05D4\u05E2\u05E8\u05D5\u05EA:</h3>\r\n <div *ngFor=\"let change of changes\">\r\n <div class=\"comment\">\r\n <div class=\"comment-header align-items-center\">\r\n <strong><img [src]=\"change?.creatingUser?.pictureUrl\">{{ change?.creatingUser?.firstName + ' ' +\r\n change?.creatingUser?.lastName }}</strong>\r\n <span>{{ change.timestamp | date:'dd/MM/yy' }}</span>\r\n </div>\r\n\r\n <p #commentRef class=\"reference-text\" appHerumToolTip\r\n [matTooltip]=\"_isTruncatedElement(commentRef) ? change.note : ''\">\r\n <img src=\"assets/shared/trackChanges/text-reference.svg\">\r\n {{ change.note | ellipsis:commentRef }}\r\n </p>\r\n\r\n <div class=\"d-flex flex-cloumn justify-content-between w-100\">\r\n <span class=\"d-flex gap-3 align-items-center w-100\">\r\n\r\n <p class=\"comment-text m-0\">\r\n {{ change.commentText }}\r\n </p>\r\n </span>\r\n\r\n <button class=\"cancel-deletion\" (click)=\"deleteChange(change)\" *ngIf=\"!isReadOnly\">\r\n <img src=\"assets/shared/trackChanges/trash.svg\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showTooltip && !isReadOnly\" class=\"comment-tooltip\" [style.top.px]=\"tooltipPosition.top\"\r\n [style.left.px]=\"tooltipPosition.left\">\r\n <button (click)=\"openCommentBox()\">\r\n <span class=\"icon\" [innerHTML]=\"messagePlusIconSvgString | safeHtml\"></span>\r\n \u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showNotAllowedActionTooltip && !isReadOnly\" class=\"comment-tooltip\"\r\n [style.top.px]=\"showNotAllowedActionTooltipPosition.top\" [style.left.px]=\"showNotAllowedActionTooltipPosition.left\">\r\n <span>\r\n <span class=\"icon\" [innerHTML]=\"informationIconSvgString | safeHtml\"></span>\r\n \u05DC\u05D0 \u05E0\u05D9\u05EA\u05DF \u05DC\u05D1\u05E6\u05E2 \u05E4\u05E2\u05D5\u05DC\u05D4 \u05E2\u05DC \u05D4\u05E2\u05E8\u05D4 \u05E7\u05D9\u05D9\u05DE\u05EA\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"showCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4</button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"editCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05E9\u05DE\u05D5\u05E8</button>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{height:100%}.editor-container{padding:0 20px 20px;height:100%}.text-editor:focus-visible{outline:none;border-color:var(--icons-color-light-1)}.editor-container-with-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.text-editor{border:1px solid #ccc;padding:10px;min-height:300px;line-height:1.5;position:relative;border-radius:8px;white-space:pre-wrap;width:90%;overflow-y:auto}.text-editor *{font-size:inherit}::selection{background-color:var(--hover-background);box-shadow:0 0 0 1px var(--hover-background)}.text-editor del{color:red;text-decoration:line-through;background-color:#ffd7d7;border-radius:8px}.text-editor ins{color:#00f;text-decoration:none;border-radius:4px}.comment-marker{background-color:var(--comment-marker-background);border-radius:4px;width:100%}.comments-panel{overflow-y:auto;padding:10px;width:100%;height:100%}.comment{margin-bottom:10px;padding:10px;background-color:#f5f5f5;border-radius:4px;position:relative;width:100%}.comment .comment-text{width:90%;word-break:break-word}.comment-header{display:flex;justify-content:space-between;margin-bottom:8px}.comment-header strong img{margin-left:4px;width:24px;height:24px;border-radius:50%}.toolbar{grid-column:1/-1;padding:10px 0}.comment-tooltip{position:fixed;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0003;z-index:1000;padding:6px 12px}.comment-tooltip .icon{stroke:var(--icons-color)}.comment-tooltip button{background:#fff;color:#1a2d4c;border:none;border-radius:8px;cursor:pointer}.reference-text{opacity:.7}.comment-view-container{width:250px;display:flex;flex-direction:row;justify-content:space-between}.comment-box{display:flex;gap:12px;flex-direction:column;position:fixed;background:#fff;border-radius:8px;padding:10px;box-shadow:0 2px 8px #0003;z-index:1000;width:250px}.comment-box textarea{width:100%;min-height:100px;padding:8px;border:1px solid #ddd;border-radius:8px}.cancel-deletion{background:transparent;color:#fff;border:none;border-radius:4px;padding-inline:4px 0px}.comment-actions{display:flex;gap:10px;justify-content:space-between}.comment-actions .save{background:var(--icons-color);color:#fff;border:none}.comment-actions .cancel{color:var(--icons-color);background:none;border:none}.comment-actions button{padding:6px 12px;border-radius:4px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: HerumToolTipDirective, selector: "[appHerumToolTip]", inputs: ["tooltipText"] }, { kind: "component", type: HerumTextAreaComponent, selector: "herum-text-area", inputs: ["placeholder", "disabled", "formControlName", "isValid", "isLoading", "errorMsg", "showErrorMsgGap", "id", "preventMacroKeysPressEvent", "heightMode", "fontSize", "inputValue", "maxLength"], outputs: ["inputValueEmitter"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }, { kind: "pipe", type: EllipsisPipe, name: "ellipsis" }], encapsulation: i0.ViewEncapsulation.None });
4982
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: TrackTextChangesComponent, isStandalone: false, selector: "track-text-changes", inputs: { changes: "changes", selectedChange: "selectedChange", currentUser: "currentUser", baseContent: "baseContent", isReadOnly: "isReadOnly", fontSize: "fontSize", showComments: "showComments", allowedActions: "allowedActions" }, outputs: { changesEmitter: "changesEmitter" }, viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"editor-container\" class=\"editor-container\" dir=\"rtl\" [ngClass]=\"{'editor-container-with-grid':showComments}\">\r\n <div #editor class=\"text-editor\" [attr.contenteditable]=\"!isReadOnly\" (keydown)=\"_onKeyDown($event)\"\r\n (mouseup)=\"_onTextSelection()\" (drop)=\"_onDropTextSelection($event)\">\r\n </div>\r\n\r\n <div *ngIf=\"showComments\" class=\"comments-panel\">\r\n <h3>\u05D4\u05E2\u05E8\u05D5\u05EA:</h3>\r\n <div *ngFor=\"let change of changes\">\r\n <div class=\"comment\">\r\n <div class=\"comment-header align-items-center\">\r\n <strong><img [src]=\"change?.creatingUser?.pictureUrl\">{{ change?.creatingUser?.firstName + ' ' +\r\n change?.creatingUser?.lastName }}</strong>\r\n <span>{{ change.timestamp | date:'dd/MM/yy' }}</span>\r\n </div>\r\n\r\n <p #commentRef class=\"reference-text\" appHerumToolTip\r\n [matTooltip]=\"_isTruncatedElement(commentRef) ? change.note : ''\">\r\n <img src=\"assets/shared/trackChanges/text-reference.svg\">\r\n {{ change.note | ellipsis:commentRef }}\r\n </p>\r\n\r\n <div class=\"d-flex flex-cloumn justify-content-between w-100\">\r\n <span class=\"d-flex gap-3 align-items-center w-100\">\r\n\r\n <p class=\"comment-text m-0\">\r\n {{ change.commentText }}\r\n </p>\r\n </span>\r\n\r\n <button class=\"cancel-deletion\" (click)=\"deleteChange(change)\" *ngIf=\"!isReadOnly\">\r\n <img src=\"assets/shared/trackChanges/trash.svg\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showTooltip && !isReadOnly\" class=\"comment-tooltip\" [style.top.px]=\"tooltipPosition.top\"\r\n [style.left.px]=\"tooltipPosition.left\">\r\n <button (click)=\"openCommentBox()\">\r\n <span class=\"icon\" [innerHTML]=\"messagePlusIconSvgString | safeHtml\"></span>\r\n \u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showNotAllowedActionTooltip && !isReadOnly\" class=\"comment-tooltip\"\r\n [style.top.px]=\"showNotAllowedActionTooltipPosition.top\" [style.left.px]=\"showNotAllowedActionTooltipPosition.left\">\r\n <span>\r\n <span class=\"icon\" [innerHTML]=\"informationIconSvgString | safeHtml\"></span>\r\n \u05DC\u05D0 \u05E0\u05D9\u05EA\u05DF \u05DC\u05D1\u05E6\u05E2 \u05E4\u05E2\u05D5\u05DC\u05D4 \u05E2\u05DC \u05D4\u05E2\u05E8\u05D4 \u05E7\u05D9\u05D9\u05DE\u05EA\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"showCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4</button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"editCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05E9\u05DE\u05D5\u05E8</button>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{height:100%}.editor-container{padding:0 20px 20px;height:100%}.text-editor:focus-visible{outline:none;border-color:var(--icons-color-light-1)}.editor-container-with-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.text-editor{border:1px solid #ccc;padding:10px;min-height:300px;line-height:1.5;position:relative;border-radius:8px;white-space:pre-wrap;width:90%;overflow-y:auto}.text-editor *{font-size:inherit}::selection{background-color:var(--hover-background);box-shadow:0 0 0 1px var(--hover-background)}.text-editor del{color:red;text-decoration:line-through;background-color:#ffd7d7;border-radius:8px}.text-editor ins{color:#00f;text-decoration:none;border-radius:4px}.comment-marker{background-color:var(--comment-marker-background);border-radius:4px;width:100%}.comments-panel{overflow-y:auto;padding:10px;width:100%;height:100%}.comment{margin-bottom:10px;padding:10px;background-color:#f5f5f5;border-radius:4px;position:relative;width:100%}.comment .comment-text{width:90%;word-break:break-word}.comment-header{display:flex;justify-content:space-between;margin-bottom:8px}.comment-header strong img{margin-left:4px;width:24px;height:24px;border-radius:50%}.toolbar{grid-column:1/-1;padding:10px 0}.comment-tooltip{position:fixed;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0003;z-index:1000;padding:6px 12px}.comment-tooltip .icon{stroke:var(--icons-color)}.comment-tooltip button{background:#fff;color:#1a2d4c;border:none;border-radius:8px;cursor:pointer}.reference-text{opacity:.7}.comment-view-container{width:250px;display:flex;flex-direction:row;justify-content:space-between}.comment-box{display:flex;gap:12px;flex-direction:column;position:fixed;background:#fff;border-radius:8px;padding:10px;box-shadow:0 2px 8px #0003;z-index:1000;width:250px}.comment-box textarea{width:100%;min-height:100px;padding:8px;border:1px solid #ddd;border-radius:8px}.cancel-deletion{background:transparent;color:#fff;border:none;border-radius:4px;padding-inline:4px 0px}.comment-actions{display:flex;gap:10px;justify-content:space-between}.comment-actions .save{background:var(--icons-color);color:#fff;border:none}.comment-actions .cancel{color:var(--icons-color);background:none;border:none}.comment-actions button{padding:6px 12px;border-radius:4px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: HerumToolTipDirective, selector: "[appHerumToolTip]", inputs: ["tooltipText"] }, { kind: "component", type: HerumTextAreaComponent, selector: "herum-text-area", inputs: ["placeholder", "disabled", "formControlName", "isValid", "isLoading", "errorMsg", "showErrorMsgGap", "id", "preventMacroKeysPressEvent", "heightMode", "fontSize", "inputValue", "maxLength"], outputs: ["inputValueEmitter"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }, { kind: "pipe", type: EllipsisPipe, name: "ellipsis" }], encapsulation: i0.ViewEncapsulation.None });
4922
4983
  }
4923
4984
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TrackTextChangesComponent, decorators: [{
4924
4985
  type: Component,
4925
- args: [{ standalone: false, selector: 'track-text-changes', encapsulation: ViewEncapsulation.None, template: "<div id=\"editor-container\" class=\"editor-container\" dir=\"rtl\" [ngClass]=\"{'editor-container-with-grid':showComments}\">\r\n <div #editor class=\"text-editor\" [attr.contenteditable]=\"!isReadOnly\" (keydown)=\"_onKeyDown($event)\"\r\n (mouseup)=\"_onTextSelection()\" (drop)=\"_onDropTextSelection($event)\" (paste)=\"_onPaste($event)\">\r\n </div>\r\n\r\n <div *ngIf=\"showComments\" class=\"comments-panel\">\r\n <h3>\u05D4\u05E2\u05E8\u05D5\u05EA:</h3>\r\n <div *ngFor=\"let change of changes\">\r\n <div class=\"comment\">\r\n <div class=\"comment-header align-items-center\">\r\n <strong><img [src]=\"change?.creatingUser?.pictureUrl\">{{ change?.creatingUser?.firstName + ' ' +\r\n change?.creatingUser?.lastName }}</strong>\r\n <span>{{ change.timestamp | date:'dd/MM/yy' }}</span>\r\n </div>\r\n\r\n <p #commentRef class=\"reference-text\" appHerumToolTip\r\n [matTooltip]=\"_isTruncatedElement(commentRef) ? change.note : ''\">\r\n <img src=\"assets/shared/trackChanges/text-reference.svg\">\r\n {{ change.note | ellipsis:commentRef }}\r\n </p>\r\n\r\n <div class=\"d-flex flex-cloumn justify-content-between w-100\">\r\n <span class=\"d-flex gap-3 align-items-center w-100\">\r\n\r\n <p class=\"comment-text m-0\">\r\n {{ change.commentText }}\r\n </p>\r\n </span>\r\n\r\n <button class=\"cancel-deletion\" (click)=\"deleteChange(change)\" *ngIf=\"!isReadOnly\">\r\n <img src=\"assets/shared/trackChanges/trash.svg\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showTooltip && !isReadOnly\" class=\"comment-tooltip\" [style.top.px]=\"tooltipPosition.top\"\r\n [style.left.px]=\"tooltipPosition.left\">\r\n <button (click)=\"openCommentBox()\">\r\n <span class=\"icon\" [innerHTML]=\"messagePlusIconSvgString | safeHtml\"></span>\r\n \u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showNotAllowedActionTooltip && !isReadOnly\" class=\"comment-tooltip\"\r\n [style.top.px]=\"showNotAllowedActionTooltipPosition.top\" [style.left.px]=\"showNotAllowedActionTooltipPosition.left\">\r\n <span>\r\n <span class=\"icon\" [innerHTML]=\"informationIconSvgString | safeHtml\"></span>\r\n \u05DC\u05D0 \u05E0\u05D9\u05EA\u05DF \u05DC\u05D1\u05E6\u05E2 \u05E4\u05E2\u05D5\u05DC\u05D4 \u05E2\u05DC \u05D4\u05E2\u05E8\u05D4 \u05E7\u05D9\u05D9\u05DE\u05EA\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"showCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4</button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"editCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05E9\u05DE\u05D5\u05E8</button>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{height:100%}.editor-container{padding:0 20px 20px;height:100%}.text-editor:focus-visible{outline:none;border-color:var(--icons-color-light-1)}.editor-container-with-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.text-editor{border:1px solid #ccc;padding:10px;min-height:300px;line-height:1.5;position:relative;border-radius:8px;white-space:pre-wrap;width:90%;overflow-y:auto}.text-editor *{font-size:inherit}::selection{background-color:var(--hover-background);box-shadow:0 0 0 1px var(--hover-background)}.text-editor del{color:red;text-decoration:line-through;background-color:#ffd7d7;border-radius:8px}.text-editor ins{color:#00f;text-decoration:none;border-radius:4px}.comment-marker{background-color:var(--comment-marker-background);border-radius:4px;width:100%}.comments-panel{overflow-y:auto;padding:10px;width:100%;height:100%}.comment{margin-bottom:10px;padding:10px;background-color:#f5f5f5;border-radius:4px;position:relative;width:100%}.comment .comment-text{width:90%;word-break:break-word}.comment-header{display:flex;justify-content:space-between;margin-bottom:8px}.comment-header strong img{margin-left:4px;width:24px;height:24px;border-radius:50%}.toolbar{grid-column:1/-1;padding:10px 0}.comment-tooltip{position:fixed;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0003;z-index:1000;padding:6px 12px}.comment-tooltip .icon{stroke:var(--icons-color)}.comment-tooltip button{background:#fff;color:#1a2d4c;border:none;border-radius:8px;cursor:pointer}.reference-text{opacity:.7}.comment-view-container{width:250px;display:flex;flex-direction:row;justify-content:space-between}.comment-box{display:flex;gap:12px;flex-direction:column;position:fixed;background:#fff;border-radius:8px;padding:10px;box-shadow:0 2px 8px #0003;z-index:1000;width:250px}.comment-box textarea{width:100%;min-height:100px;padding:8px;border:1px solid #ddd;border-radius:8px}.cancel-deletion{background:transparent;color:#fff;border:none;border-radius:4px;padding-inline:4px 0px}.comment-actions{display:flex;gap:10px;justify-content:space-between}.comment-actions .save{background:var(--icons-color);color:#fff;border:none}.comment-actions .cancel{color:var(--icons-color);background:none;border:none}.comment-actions button{padding:6px 12px;border-radius:4px;cursor:pointer}\n"] }]
4986
+ args: [{ standalone: false, selector: 'track-text-changes', encapsulation: ViewEncapsulation.None, template: "<div id=\"editor-container\" class=\"editor-container\" dir=\"rtl\" [ngClass]=\"{'editor-container-with-grid':showComments}\">\r\n <div #editor class=\"text-editor\" [attr.contenteditable]=\"!isReadOnly\" (keydown)=\"_onKeyDown($event)\"\r\n (mouseup)=\"_onTextSelection()\" (drop)=\"_onDropTextSelection($event)\">\r\n </div>\r\n\r\n <div *ngIf=\"showComments\" class=\"comments-panel\">\r\n <h3>\u05D4\u05E2\u05E8\u05D5\u05EA:</h3>\r\n <div *ngFor=\"let change of changes\">\r\n <div class=\"comment\">\r\n <div class=\"comment-header align-items-center\">\r\n <strong><img [src]=\"change?.creatingUser?.pictureUrl\">{{ change?.creatingUser?.firstName + ' ' +\r\n change?.creatingUser?.lastName }}</strong>\r\n <span>{{ change.timestamp | date:'dd/MM/yy' }}</span>\r\n </div>\r\n\r\n <p #commentRef class=\"reference-text\" appHerumToolTip\r\n [matTooltip]=\"_isTruncatedElement(commentRef) ? change.note : ''\">\r\n <img src=\"assets/shared/trackChanges/text-reference.svg\">\r\n {{ change.note | ellipsis:commentRef }}\r\n </p>\r\n\r\n <div class=\"d-flex flex-cloumn justify-content-between w-100\">\r\n <span class=\"d-flex gap-3 align-items-center w-100\">\r\n\r\n <p class=\"comment-text m-0\">\r\n {{ change.commentText }}\r\n </p>\r\n </span>\r\n\r\n <button class=\"cancel-deletion\" (click)=\"deleteChange(change)\" *ngIf=\"!isReadOnly\">\r\n <img src=\"assets/shared/trackChanges/trash.svg\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showTooltip && !isReadOnly\" class=\"comment-tooltip\" [style.top.px]=\"tooltipPosition.top\"\r\n [style.left.px]=\"tooltipPosition.left\">\r\n <button (click)=\"openCommentBox()\">\r\n <span class=\"icon\" [innerHTML]=\"messagePlusIconSvgString | safeHtml\"></span>\r\n \u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showNotAllowedActionTooltip && !isReadOnly\" class=\"comment-tooltip\"\r\n [style.top.px]=\"showNotAllowedActionTooltipPosition.top\" [style.left.px]=\"showNotAllowedActionTooltipPosition.left\">\r\n <span>\r\n <span class=\"icon\" [innerHTML]=\"informationIconSvgString | safeHtml\"></span>\r\n \u05DC\u05D0 \u05E0\u05D9\u05EA\u05DF \u05DC\u05D1\u05E6\u05E2 \u05E4\u05E2\u05D5\u05DC\u05D4 \u05E2\u05DC \u05D4\u05E2\u05E8\u05D4 \u05E7\u05D9\u05D9\u05DE\u05EA\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"showCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4</button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"editCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05D4\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">\u05D1\u05D8\u05DC</button>\r\n <button class=\"save\" (click)=\"saveComment()\">\u05E9\u05DE\u05D5\u05E8</button>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{height:100%}.editor-container{padding:0 20px 20px;height:100%}.text-editor:focus-visible{outline:none;border-color:var(--icons-color-light-1)}.editor-container-with-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.text-editor{border:1px solid #ccc;padding:10px;min-height:300px;line-height:1.5;position:relative;border-radius:8px;white-space:pre-wrap;width:90%;overflow-y:auto}.text-editor *{font-size:inherit}::selection{background-color:var(--hover-background);box-shadow:0 0 0 1px var(--hover-background)}.text-editor del{color:red;text-decoration:line-through;background-color:#ffd7d7;border-radius:8px}.text-editor ins{color:#00f;text-decoration:none;border-radius:4px}.comment-marker{background-color:var(--comment-marker-background);border-radius:4px;width:100%}.comments-panel{overflow-y:auto;padding:10px;width:100%;height:100%}.comment{margin-bottom:10px;padding:10px;background-color:#f5f5f5;border-radius:4px;position:relative;width:100%}.comment .comment-text{width:90%;word-break:break-word}.comment-header{display:flex;justify-content:space-between;margin-bottom:8px}.comment-header strong img{margin-left:4px;width:24px;height:24px;border-radius:50%}.toolbar{grid-column:1/-1;padding:10px 0}.comment-tooltip{position:fixed;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0003;z-index:1000;padding:6px 12px}.comment-tooltip .icon{stroke:var(--icons-color)}.comment-tooltip button{background:#fff;color:#1a2d4c;border:none;border-radius:8px;cursor:pointer}.reference-text{opacity:.7}.comment-view-container{width:250px;display:flex;flex-direction:row;justify-content:space-between}.comment-box{display:flex;gap:12px;flex-direction:column;position:fixed;background:#fff;border-radius:8px;padding:10px;box-shadow:0 2px 8px #0003;z-index:1000;width:250px}.comment-box textarea{width:100%;min-height:100px;padding:8px;border:1px solid #ddd;border-radius:8px}.cancel-deletion{background:transparent;color:#fff;border:none;border-radius:4px;padding-inline:4px 0px}.comment-actions{display:flex;gap:10px;justify-content:space-between}.comment-actions .save{background:var(--icons-color);color:#fff;border:none}.comment-actions .cancel{color:var(--icons-color);background:none;border:none}.comment-actions button{padding:6px 12px;border-radius:4px;cursor:pointer}\n"] }]
4926
4987
  }], ctorParameters: () => [{ type: i2$1.TrackTextChangesService }], propDecorators: { changes: [{
4927
4988
  type: Input
4928
4989
  }], selectedChange: [{
@@ -4937,6 +4998,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
4937
4998
  type: Input
4938
4999
  }], showComments: [{
4939
5000
  type: Input
5001
+ }], allowedActions: [{
5002
+ type: Input
4940
5003
  }], changesEmitter: [{
4941
5004
  type: Output
4942
5005
  }], editor: [{
@@ -4953,9 +5016,9 @@ class QuizOpenAnswerQuestionComponent {
4953
5016
  areAnswersBlocked;
4954
5017
  isCheckingMode;
4955
5018
  selectedTextChange;
4956
- freeTextCorrectAnswerChange = new EventEmitter();
5019
+ correctAnswerChange = new EventEmitter();
4957
5020
  notesChange = new EventEmitter();
4958
- freeTextCorrectAnswerControl = new FormControl('');
5021
+ correctAnswerControl = new FormControl('');
4959
5022
  notes;
4960
5023
  destroySubject$ = new Subject();
4961
5024
  constructor(answerNotesToTextChangesPipe) {
@@ -4963,14 +5026,14 @@ class QuizOpenAnswerQuestionComponent {
4963
5026
  }
4964
5027
  ngOnChanges(changes) {
4965
5028
  if (changes['userQuestion']?.currentValue) {
4966
- this.freeTextCorrectAnswerControl.setValue(this.userQuestion.freeTextAnswer ?? '', { emitEvent: false });
5029
+ this.correctAnswerControl.setValue(this.userQuestion.freeTextAnswer ?? '', { emitEvent: false });
4967
5030
  if (this.isCheckingMode || this.areAnswersRevealed)
4968
5031
  this.notes = this.answerNotesToTextChangesPipe.transform(this.userQuestion.answerNotes ?? []);
4969
5032
  }
4970
5033
  }
4971
5034
  ngOnInit() {
4972
- this.freeTextCorrectAnswerControl.valueChanges.pipe(takeUntil(this.destroySubject$))
4973
- .subscribe(freeText => this.freeTextCorrectAnswerChange.emit(freeText));
5035
+ this.correctAnswerControl.valueChanges.pipe(takeUntil(this.destroySubject$))
5036
+ .subscribe(freeText => this.correctAnswerChange.emit(freeText));
4974
5037
  }
4975
5038
  _notesChange(notes) {
4976
5039
  this.notesChange.emit(notes);
@@ -4980,11 +5043,11 @@ class QuizOpenAnswerQuestionComponent {
4980
5043
  this.destroySubject$.complete();
4981
5044
  }
4982
5045
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizOpenAnswerQuestionComponent, deps: [{ token: i4$1.AnswerNotesToTextChangesPipe }], target: i0.ɵɵFactoryTarget.Component });
4983
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizOpenAnswerQuestionComponent, isStandalone: false, selector: "quiz-open-answer-question", inputs: { previewMode: "previewMode", question: "question", userQuestion: "userQuestion", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", isCheckingMode: "isCheckingMode", selectedTextChange: "selectedTextChange" }, outputs: { freeTextCorrectAnswerChange: "freeTextCorrectAnswerChange", notesChange: "notesChange" }, usesOnChanges: true, ngImport: i0, template: "<span class=\"answer-title\">{{ isCheckingMode ? '\u05EA\u05E9\u05D5\u05D1\u05EA \u05D4\u05D7\u05E0\u05D9\u05DA' : '\u05DB\u05EA\u05D5\u05D1 \u05EA\u05E9\u05D5\u05D1\u05EA\u05DA' }}\r\n <span *ngIf=\"!isCheckingMode && question?.charactersLimit > 0\">\r\n (\u05E2\u05D3 {{ question?.charactersLimit }} \u05EA\u05D5\u05D5\u05D9\u05DD)\r\n </span>\r\n</span>\r\n\r\n<herum-text-area *ngIf=\"!areAnswersRevealed && !isCheckingMode\" [disabled]=\"previewMode || areAnswersBlocked\"\r\n [maxLength]=\"question?.charactersLimit\" [formControl]=\"freeTextCorrectAnswerControl\" heightMode=\"max\">\r\n</herum-text-area>\r\n\r\n<track-text-changes *ngIf=\"isCheckingMode || areAnswersRevealed\"\r\n [isReadOnly]=\"areAnswersRevealed && !isCheckingMode || !isCheckingMode\" [fontSize]=\"14\"\r\n [selectedChange]=\"selectedTextChange\" [showComments]=\"false\" [baseContent]=\"freeTextCorrectAnswerControl.value\"\r\n [changes]=\"notes\" (changesEmitter)=\"_notesChange($event)\">\r\n</track-text-changes>", styles: [".answer-title{font-size:14px;margin-block-end:8px}herum-text-area,track-text-changes{height:100%;width:100%}::ng-deep track-text-changes .editor-container{padding:0}::ng-deep track-text-changes .text-editor{min-height:180px;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HerumTextAreaComponent, selector: "herum-text-area", inputs: ["placeholder", "disabled", "formControlName", "isValid", "isLoading", "errorMsg", "showErrorMsgGap", "id", "preventMacroKeysPressEvent", "heightMode", "fontSize", "inputValue", "maxLength"], outputs: ["inputValueEmitter"] }, { kind: "component", type: TrackTextChangesComponent, selector: "track-text-changes", inputs: ["changes", "selectedChange", "currentUser", "baseContent", "isReadOnly", "fontSize", "showComments"], outputs: ["changesEmitter"] }] });
5046
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizOpenAnswerQuestionComponent, isStandalone: false, selector: "quiz-open-answer-question", inputs: { previewMode: "previewMode", question: "question", userQuestion: "userQuestion", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", isCheckingMode: "isCheckingMode", selectedTextChange: "selectedTextChange" }, outputs: { correctAnswerChange: "correctAnswerChange", notesChange: "notesChange" }, usesOnChanges: true, ngImport: i0, template: "<span class=\"answer-title\">{{ isCheckingMode ? '\u05EA\u05E9\u05D5\u05D1\u05EA \u05D4\u05D7\u05E0\u05D9\u05DA' : '\u05DB\u05EA\u05D5\u05D1 \u05EA\u05E9\u05D5\u05D1\u05EA\u05DA' }}\r\n <span *ngIf=\"!isCheckingMode && question?.freeAnswerContent?.charactersLimit > 0\">\r\n (\u05E2\u05D3 {{ question?.freeAnswerContent?.charactersLimit }} \u05EA\u05D5\u05D5\u05D9\u05DD)\r\n </span>\r\n</span>\r\n\r\n<herum-text-area *ngIf=\"!areAnswersRevealed && !isCheckingMode\" [disabled]=\"previewMode || areAnswersBlocked\"\r\n [maxLength]=\"question?.freeAnswerContent?.charactersLimit\" [formControl]=\"correctAnswerControl\" heightMode=\"max\">\r\n</herum-text-area>\r\n\r\n<track-text-changes *ngIf=\"isCheckingMode || areAnswersRevealed\"\r\n [isReadOnly]=\"areAnswersRevealed && !isCheckingMode || !isCheckingMode\" [fontSize]=\"14\"\r\n [selectedChange]=\"selectedTextChange\" [showComments]=\"false\" [baseContent]=\"correctAnswerControl.value\"\r\n [changes]=\"notes\" (changesEmitter)=\"_notesChange($event)\">\r\n</track-text-changes>", styles: [".answer-title{font-size:14px;margin-block-end:8px}herum-text-area,track-text-changes{height:100%;width:100%}::ng-deep track-text-changes .editor-container{padding:0}::ng-deep track-text-changes .text-editor{min-height:180px;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HerumTextAreaComponent, selector: "herum-text-area", inputs: ["placeholder", "disabled", "formControlName", "isValid", "isLoading", "errorMsg", "showErrorMsgGap", "id", "preventMacroKeysPressEvent", "heightMode", "fontSize", "inputValue", "maxLength"], outputs: ["inputValueEmitter"] }, { kind: "component", type: TrackTextChangesComponent, selector: "track-text-changes", inputs: ["changes", "selectedChange", "currentUser", "baseContent", "isReadOnly", "fontSize", "showComments", "allowedActions"], outputs: ["changesEmitter"] }] });
4984
5047
  }
4985
5048
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizOpenAnswerQuestionComponent, decorators: [{
4986
5049
  type: Component,
4987
- args: [{ standalone: false, selector: 'quiz-open-answer-question', template: "<span class=\"answer-title\">{{ isCheckingMode ? '\u05EA\u05E9\u05D5\u05D1\u05EA \u05D4\u05D7\u05E0\u05D9\u05DA' : '\u05DB\u05EA\u05D5\u05D1 \u05EA\u05E9\u05D5\u05D1\u05EA\u05DA' }}\r\n <span *ngIf=\"!isCheckingMode && question?.charactersLimit > 0\">\r\n (\u05E2\u05D3 {{ question?.charactersLimit }} \u05EA\u05D5\u05D5\u05D9\u05DD)\r\n </span>\r\n</span>\r\n\r\n<herum-text-area *ngIf=\"!areAnswersRevealed && !isCheckingMode\" [disabled]=\"previewMode || areAnswersBlocked\"\r\n [maxLength]=\"question?.charactersLimit\" [formControl]=\"freeTextCorrectAnswerControl\" heightMode=\"max\">\r\n</herum-text-area>\r\n\r\n<track-text-changes *ngIf=\"isCheckingMode || areAnswersRevealed\"\r\n [isReadOnly]=\"areAnswersRevealed && !isCheckingMode || !isCheckingMode\" [fontSize]=\"14\"\r\n [selectedChange]=\"selectedTextChange\" [showComments]=\"false\" [baseContent]=\"freeTextCorrectAnswerControl.value\"\r\n [changes]=\"notes\" (changesEmitter)=\"_notesChange($event)\">\r\n</track-text-changes>", styles: [".answer-title{font-size:14px;margin-block-end:8px}herum-text-area,track-text-changes{height:100%;width:100%}::ng-deep track-text-changes .editor-container{padding:0}::ng-deep track-text-changes .text-editor{min-height:180px;height:100%;width:100%}\n"] }]
5050
+ args: [{ standalone: false, selector: 'quiz-open-answer-question', template: "<span class=\"answer-title\">{{ isCheckingMode ? '\u05EA\u05E9\u05D5\u05D1\u05EA \u05D4\u05D7\u05E0\u05D9\u05DA' : '\u05DB\u05EA\u05D5\u05D1 \u05EA\u05E9\u05D5\u05D1\u05EA\u05DA' }}\r\n <span *ngIf=\"!isCheckingMode && question?.freeAnswerContent?.charactersLimit > 0\">\r\n (\u05E2\u05D3 {{ question?.freeAnswerContent?.charactersLimit }} \u05EA\u05D5\u05D5\u05D9\u05DD)\r\n </span>\r\n</span>\r\n\r\n<herum-text-area *ngIf=\"!areAnswersRevealed && !isCheckingMode\" [disabled]=\"previewMode || areAnswersBlocked\"\r\n [maxLength]=\"question?.freeAnswerContent?.charactersLimit\" [formControl]=\"correctAnswerControl\" heightMode=\"max\">\r\n</herum-text-area>\r\n\r\n<track-text-changes *ngIf=\"isCheckingMode || areAnswersRevealed\"\r\n [isReadOnly]=\"areAnswersRevealed && !isCheckingMode || !isCheckingMode\" [fontSize]=\"14\"\r\n [selectedChange]=\"selectedTextChange\" [showComments]=\"false\" [baseContent]=\"correctAnswerControl.value\"\r\n [changes]=\"notes\" (changesEmitter)=\"_notesChange($event)\">\r\n</track-text-changes>", styles: [".answer-title{font-size:14px;margin-block-end:8px}herum-text-area,track-text-changes{height:100%;width:100%}::ng-deep track-text-changes .editor-container{padding:0}::ng-deep track-text-changes .text-editor{min-height:180px;height:100%;width:100%}\n"] }]
4988
5051
  }], ctorParameters: () => [{ type: i4$1.AnswerNotesToTextChangesPipe }], propDecorators: { previewMode: [{
4989
5052
  type: Input
4990
5053
  }], question: [{
@@ -4999,7 +5062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
4999
5062
  type: Input
5000
5063
  }], selectedTextChange: [{
5001
5064
  type: Input
5002
- }], freeTextCorrectAnswerChange: [{
5065
+ }], correctAnswerChange: [{
5003
5066
  type: Output
5004
5067
  }], notesChange: [{
5005
5068
  type: Output
@@ -11065,6 +11128,9 @@ const dateRangeTimeRangeWithoutSecondsPlaceHolder = `${dateTimeWithoutSecondsPla
11065
11128
  const resourceIdPlaceholder = "$resourceId";
11066
11129
  const defaultCloseTime = new Date('01-01-2999');
11067
11130
  const defaultOpenTime = new Date('01-01-1999');
11131
+ const legacyCorrectAnswerPropertyPath = `.Quiz.Questions[].Answers[].IsCorrect`;
11132
+ const correctAnswerPropertyPath = `.Quiz.Questions[].ClosedContent.Answers[].IsCorrect`;
11133
+ const matchingSourceIndexPropertyPath = `.Quiz.Questions[].MatchingContent.sources[].index`;
11068
11134
  const openStatus = {
11069
11135
  openingTime: new Date(),
11070
11136
  closingTime: defaultCloseTime,
@@ -11129,7 +11195,15 @@ const defaultAuthorizationObject = {
11129
11195
  },
11130
11196
  isCorrect() {
11131
11197
  return cloneDeep({
11132
- propertyPath: `[${resourceIdPlaceholder}].Quiz.Questions[].Answers[].IsCorrect`,
11198
+ propertyPath: `[${resourceIdPlaceholder}]${correctAnswerPropertyPath}`,
11199
+ authorizationType: MicroResourceAuthorizationType.view,
11200
+ ...closeStatus,
11201
+ collectionItemType: 'Resources'
11202
+ });
11203
+ },
11204
+ matchingSourceIndex() {
11205
+ return cloneDeep({
11206
+ propertyPath: `[${resourceIdPlaceholder}]${matchingSourceIndexPropertyPath}`,
11133
11207
  authorizationType: MicroResourceAuthorizationType.view,
11134
11208
  ...closeStatus,
11135
11209
  collectionItemType: 'Resources'
@@ -11143,14 +11217,17 @@ function getResourceDefaultAuthorizations() {
11143
11217
  return [defaultAuthorizationObject.view()];
11144
11218
  }
11145
11219
  function getPublishAuthorization() {
11146
- return [defaultAuthorizationObject.resourceGrade(), defaultAuthorizationObject.questionGrade(), defaultAuthorizationObject.areAnswersCorrect(), defaultAuthorizationObject.answerNotes(), defaultAuthorizationObject.isCorrect()];
11220
+ return [defaultAuthorizationObject.resourceGrade(), defaultAuthorizationObject.questionGrade(), defaultAuthorizationObject.areAnswersCorrect(), defaultAuthorizationObject.answerNotes(), defaultAuthorizationObject.isCorrect(), defaultAuthorizationObject.matchingSourceIndex()];
11147
11221
  }
11148
11222
  function getMediaDefaultAuthorizations() {
11149
11223
  return [defaultAuthorizationObject.view(), defaultAuthorizationObject.edit()];
11150
11224
  }
11151
11225
  function getPropertyPathsOfPublishAuthorization() {
11152
11226
  return ([defaultAuthorizationObject.resourceGrade().propertyPath, defaultAuthorizationObject.questionGrade().propertyPath,
11153
- defaultAuthorizationObject.areAnswersCorrect().propertyPath, defaultAuthorizationObject.answerNotes().propertyPath, defaultAuthorizationObject.isCorrect().propertyPath]);
11227
+ defaultAuthorizationObject.areAnswersCorrect().propertyPath, defaultAuthorizationObject.answerNotes().propertyPath, defaultAuthorizationObject.isCorrect().propertyPath, defaultAuthorizationObject.matchingSourceIndex().propertyPath]);
11228
+ }
11229
+ function normalizeQuizAuthorizationPropertyPath(propertyPath) {
11230
+ return propertyPath?.replace(legacyCorrectAnswerPropertyPath, correctAnswerPropertyPath);
11154
11231
  }
11155
11232
  const viewPermissionLabel = 'צפייה';
11156
11233
 
@@ -11555,58 +11632,6 @@ function getSignUpFormFieldsByFields(fieldNames) {
11555
11632
 
11556
11633
  const structHierarchyTreeMaxHeight = 2;
11557
11634
 
11558
- const svgsStrings = {
11559
- edit: '<svg xmlns="http://www.w3.org/2000/svg" width="17.002" height="16.25" viewBox="0 0 17.002 17.258"><path id="Path_784" data-name="Path 784" d="M105.89,340.545l.742-.742a3.146,3.146,0,0,1,4.45,4.45l-.742.742m-4.45-4.45a5.246,5.246,0,0,0,4.45,4.45m-4.45-4.45-6.818,6.818a10.889,10.889,0,0,0-.887.947,5.217,5.217,0,0,0-.6.969,10.97,10.97,0,0,0-.448,1.221l-.875,2.626m14.082-8.131-6.818,6.818a10.89,10.89,0,0,1-.947.887,5.217,5.217,0,0,1-.969.6,10.976,10.976,0,0,1-1.221.448l-2.626.875m0,0-.642.215a.85.85,0,0,1-1.074-1.074l.215-.642m1.5,1.5-1.5-1.5" transform="translate(-95.502 -338.16)" fill="none" stroke-width="1"/></svg>',
11560
- garbage: '<svg xmlns="http://www.w3.org/2000/svg" width="15.222" height="16.25" viewBox="0 0 15.222 17"><g id="trash" transform="translate(35.5 83.5)"><path id="Path_1367" data-name="Path 1367" d="M4,7H18.222" transform="translate(-39 -86.444)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1368" data-name="Path 1368" d="M10,11v5.35" transform="translate(-39.667 -86.9)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1369" data-name="Path 1369" d="M14,11v5.35" transform="translate(-40.111 -86.9)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1370" data-name="Path 1370" d="M5,7l.889,10.7a1.78,1.78,0,0,0,1.777,1.783h7.108A1.78,1.78,0,0,0,16.551,17.7L17.439,7" transform="translate(-39.108 -86.482)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1371" data-name="Path 1371" d="M9,6.566V3.892A.892.892,0,0,1,9.892,3h3.566a.892.892,0,0,1,.892.892V6.566" transform="translate(-39.564 -86)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11561
- greyUploadFile: '<svg xmlns="http://www.w3.org/2000/svg" width="16.059" height="17" viewBox="0 0 16.059 17"><g id="upload" transform="translate(-3.5 -3.5)"><path id="Path_1362" data-name="Path 1362" d="M4,17v2a1.944,1.944,0,0,0,1.882,2H17.176a1.944,1.944,0,0,0,1.882-2V17" transform="translate(0 -1)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1363" data-name="Path 1363" d="M7,9l4.529-5,4.529,5" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1364" data-name="Path 1364" d="M12,4V16" transform="translate(-0.471)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11562
- uploadFile: '<svg xmlns="http://www.w3.org/2000/svg" width="16.059" height="17" viewBox="0 0 16.059 17" stroke="#7897a8"><g id="upload" transform="translate(-3.5 -3.5)"><path id="Path_1362" data-name="Path 1362" d="M4,17v2a1.944,1.944,0,0,0,1.882,2H17.176a1.944,1.944,0,0,0,1.882-2V17" transform="translate(0 -1)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1363" data-name="Path 1363" d="M7,9l4.529-5,4.529,5" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1364" data-name="Path 1364" d="M12,4V16" transform="translate(-0.471)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11563
- downloadFile: '<svg width="21" height="15" viewBox="0 0 21 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path stroke-width="1.1" d="M20 8.09094L20 11.6364C20 12.2633 19.7498 12.8645 19.3044 13.3077C18.859 13.751 18.2549 14 17.625 14L3.375 14C2.74511 14 2.14102 13.751 1.69562 13.3077C1.25022 12.8645 1 12.2633 1 11.6364L1 8.09094" stroke-linecap="round" stroke-linejoin="round"/><path d="M10.5 0.999978L10.5 9.2727M10.5 9.2727L6.9375 5.72725M10.5 9.2727L14.0625 5.72725" stroke-linecap="round" stroke-width="1.1" stroke-linejoin="round"/></svg>',
11564
- '.mp4': '<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 17 17"><g id="video" transform="translate(-3.5 -3.5)"><path id="Path_1352" data-name="Path 1352" d="M4,4,4,6A2,2,0,0,1,6,4H18a2,2,0,0,1,2,2V18a2,2,0,0,1-2,2H6a2,2,0,0,1-2-2Z" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1353" data-name="Path 1353" d="M8,4V20" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1354" data-name="Path 1354" d="M16,4V20" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1355" data-name="Path 1355" d="M4,8H8" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1356" data-name="Path 1356" d="M4,16H8" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1357" data-name="Path 1357" d="M4,12H20" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1358" data-name="Path 1358" d="M16,8h4" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1359" data-name="Path 1359" d="M16,16h4" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11565
- '.pdf': '<svg xmlns="http://www.w3.org/2000/svg" width="13.403" height="16.5" viewBox="0 0 13.403 16.5"><g id="Pdf" transform="translate(-13.75 -1.75)"><g id="Group_942" data-name="Group 942" transform="translate(14 2)"><g id="Group_939" data-name="Group 939" transform="translate(0 0)"><g id="Group_938" data-name="Group 938"><path id="Path_1342" data-name="Path 1342" d="M25.613,18H15.29A1.292,1.292,0,0,1,14,16.71V3.29A1.292,1.292,0,0,1,15.29,2h5.25a1.282,1.282,0,0,1,.912.378l5.073,5.073a1.282,1.282,0,0,1,.378.912V16.71A1.292,1.292,0,0,1,25.613,18ZM15.29,2.516a.775.775,0,0,0-.774.774V16.71a.775.775,0,0,0,.774.774H25.613a.775.775,0,0,0,.774-.774V8.363a.78.78,0,0,0-.227-.547L21.088,2.743a.769.769,0,0,0-.547-.227Z" transform="translate(-14 -2)" fill="#7897a8" stroke="#7897a8" stroke-width="0.5"/></g></g><g id="Group_941" data-name="Group 941" transform="translate(2.413 5.032)"><g id="Group_940" data-name="Group 940"><path id="Path_1343" data-name="Path 1343" d="M40.763,46.074a.407.407,0,0,0-.119-.2,1.649,1.649,0,0,0-1.065-.252,8.8,8.8,0,0,0-1.28.094,3.189,3.189,0,0,1-.594-.41,4.335,4.335,0,0,1-1.072-1.663c.015-.061.028-.114.041-.168a10.821,10.821,0,0,0,.188-1.948.566.566,0,0,0-.034-.139l-.022-.057A.462.462,0,0,0,36.388,41l-.126,0h0a.476.476,0,0,0-.485.3,5.643,5.643,0,0,0,.3,2.541l-.075.181c-.208.508-.468,1.019-.7,1.47l-.03.058c-.243.474-.462.876-.662,1.217l-.205.108c-.015.008-.368.195-.45.244a2.518,2.518,0,0,0-1.243,1.271.312.312,0,0,0,.119.346l.2.1a.611.611,0,0,0,.271.065c.5,0,1.079-.622,1.877-2.015a18.675,18.675,0,0,1,2.892-.686,4.989,4.989,0,0,0,2.107.668.975.975,0,0,0,.248-.027.43.43,0,0,0,.246-.168A.893.893,0,0,0,40.763,46.074Zm-7.577,2.453a3.466,3.466,0,0,1,.985-1.178c.034-.027.116-.1.191-.177A3.559,3.559,0,0,1,33.187,48.526Zm3.156-7.268c.16,0,.252.4.259.783a1.61,1.61,0,0,1-.191.843,4.09,4.09,0,0,1-.135-1.052S36.269,41.258,36.343,41.258ZM35.4,46.437q.168-.3.347-.635a11.887,11.887,0,0,0,.609-1.329,4.4,4.4,0,0,0,1.005,1.248l.157.126A12.765,12.765,0,0,0,35.4,46.437Zm5.088-.045a.743.743,0,0,1-.28.048,3.287,3.287,0,0,1-1.161-.351c.195-.014.374-.022.534-.022a2.051,2.051,0,0,1,.667.072C40.535,46.213,40.539,46.361,40.488,46.392Z" transform="translate(-32.697 -41)" fill="#7897a8" stroke="#7897a8" stroke-width="0.5"/></g></g></g></g></svg>',
11566
- '.pptx': '<svg xmlns="http://www.w3.org/2000/svg" width="13.403" height="16.5" viewBox="0 0 13.403 16.5"><g id="ppt" transform="translate(-13.26 -1.75)"><g id="Group_942" data-name="Group 942" transform="translate(13.51 2)"><g id="Group_939" data-name="Group 939" transform="translate(0 0)"><g id="Group_938" data-name="Group 938"><path id="Path_1342" data-name="Path 1342" d="M25.613,18H15.29A1.292,1.292,0,0,1,14,16.71V3.29A1.292,1.292,0,0,1,15.29,2h5.25a1.282,1.282,0,0,1,.912.378l5.073,5.073a1.282,1.282,0,0,1,.378.912V16.71A1.292,1.292,0,0,1,25.613,18ZM15.29,2.516a.775.775,0,0,0-.774.774V16.71a.775.775,0,0,0,.774.774H25.613a.775.775,0,0,0,.774-.774V8.363a.78.78,0,0,0-.227-.547L21.088,2.743a.769.769,0,0,0-.547-.227Z" transform="translate(-14 -2)" fill="#7897a8" stroke="#7897a8" stroke-width="0.5"/></g></g></g><path id="Path_1360" data-name="Path 1360" d="M78,107.1h1.549a1.549,1.549,0,1,0,0-3.1H78v4.648" transform="translate(-58.99 -94.5)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11567
- // story: '<svg xmlns="http://www.w3.org/2000/svg" width="16.502" height="13.579" viewBox="0 0 16.502 13.579"><path id="Folder" d="M16.825,8.355a.727.727,0,0,0-.567-.269H14.806V7.36a2.18,2.18,0,0,0-2.18-2.18H8.063L7.83,4.453A2.18,2.18,0,0,0,5.767,3H3.18A2.18,2.18,0,0,0,1,5.18V13.9a2.18,2.18,0,0,0,2.18,2.18H13.643a2.18,2.18,0,0,0,2.122-1.708l1.221-5.4a.727.727,0,0,0-.16-.618Zm-12.65,5.7a.727.727,0,0,1-.727.567H3.18a.727.727,0,0,1-.727-.727V5.18a.727.727,0,0,1,.727-.727H5.767a.727.727,0,0,1,.727.494l.392,1.192a.727.727,0,0,0,.654.494h5.086a.727.727,0,0,1,.727.727v.727H6.086a.727.727,0,0,0-.727.567Zm10.172,0a.727.727,0,0,1-.727.567H5.512a1.032,1.032,0,0,0,.08-.254L6.668,9.539h8.719Z" transform="translate(-0.75 -2.75)" fill="#65899c" stroke="#fff" stroke-width="0.5"/></svg>',
11568
- bigVideo: '<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_12_1734)"> <path d="M37.5 25.0001L48.8825 19.3101C49.2636 19.1196 49.6869 19.0298 50.1125 19.0489C50.538 19.0681 50.9516 19.1957 51.314 19.4196C51.6764 19.6435 51.9756 19.9562 52.1831 20.3282C52.3907 20.7002 52.4998 21.1191 52.5 21.5451V38.4551C52.4998 38.881 52.3907 39.2999 52.1831 39.6719C51.9756 40.0439 51.6764 40.3566 51.314 40.5805C50.9516 40.8044 50.538 40.932 50.1125 40.9512C49.6869 40.9704 49.2636 40.8805 48.8825 40.6901L37.5 35.0001V25.0001Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M7.5 20C7.5 18.6739 8.02678 17.4021 8.96447 16.4645C9.90215 15.5268 11.1739 15 12.5 15H32.5C33.8261 15 35.0979 15.5268 36.0355 16.4645C36.9732 17.4021 37.5 18.6739 37.5 20V40C37.5 41.3261 36.9732 42.5979 36.0355 43.5355C35.0979 44.4732 33.8261 45 32.5 45H12.5C11.1739 45 9.90215 44.4732 8.96447 43.5355C8.02678 42.5979 7.5 41.3261 7.5 40V20Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_12_1734"> <rect width="60" height="60" fill="white"/> </clipPath> </defs> </svg> ',
11569
- bigPdf: '<svg width="60" height="60" id="Group_872" data-name="Group 872" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16.255 16.25"><defs><clipPath id="clip-path"><rect id="Rectangle_1674" data-name="Rectangle 1674" width="16.255" height="16.25" fill="none"/></clipPath></defs><g id="Group_871" data-name="Group 871" clip-path="url(#clip-path)"><path id="Path_1239" data-name="Path 1239" d="M3.072,8.649h.594v4.217H3.072Zm.523,2.91v-.564h.719a1.018,1.018,0,0,0,.736-.242.945.945,0,0,0,.249-.708.767.767,0,0,0-.249-.621,1.112,1.112,0,0,0-.736-.211H3.607V8.649h.707A1.792,1.792,0,0,1,5.515,9a1.305,1.305,0,0,1,.408,1.043,1.478,1.478,0,0,1-.408,1.129,1.688,1.688,0,0,1-1.2.385Z" fill="#65899c"/><path id="Path_1240" data-name="Path 1240" d="M3.072,8.649h.594v4.217H3.072Zm.523,2.91v-.564h.719a1.018,1.018,0,0,0,.736-.242.945.945,0,0,0,.249-.708.767.767,0,0,0-.249-.621,1.112,1.112,0,0,0-.736-.211H3.607V8.649h.707A1.792,1.792,0,0,1,5.515,9a1.305,1.305,0,0,1,.408,1.043,1.478,1.478,0,0,1-.408,1.129,1.688,1.688,0,0,1-1.2.385Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1241" data-name="Path 1241" d="M6.577,8.648h.594v4.217H6.577Zm.552,4.217V12.3H7.6a1.24,1.24,0,0,0,.979-.371A1.645,1.645,0,0,0,8.9,10.816a1.872,1.872,0,0,0-.328-1.2,1.194,1.194,0,0,0-.979-.4H7.141L7.07,8.648H7.6q1.931,0,1.93,2.168,0,2.049-1.93,2.049Z" fill="#65899c"/><path id="Path_1242" data-name="Path 1242" d="M6.577,8.648h.594v4.217H6.577Zm.552,4.217V12.3H7.6a1.24,1.24,0,0,0,.979-.371A1.645,1.645,0,0,0,8.9,10.816a1.872,1.872,0,0,0-.328-1.2,1.194,1.194,0,0,0-.979-.4H7.141L7.07,8.648H7.6q1.931,0,1.93,2.168,0,2.049-1.93,2.049Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1243" data-name="Path 1243" d="M10.259,8.649h.594v4.217h-.594Zm0,0H13.05v.564H10.259Zm0,2h2.257v.564H10.259Z" fill="#65899c"/><path id="Path_1244" data-name="Path 1244" d="M10.259,8.649h.594v4.217h-.594Zm0,0H13.05v.564H10.259Zm0,2h2.257v.564H10.259Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1245" data-name="Path 1245" d="M16.041,7.005,12.788,7c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.783h.774V2.717c0,1.715,0,2.576.453,3.03.439.439,1.272.454,2.782.482l.151,0h3.088Z" fill="#65899c"/><path id="Path_1246" data-name="Path 1246" d="M16.041,7.005,12.788,7c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.783h.774V2.717c0,1.715,0,2.576.453,3.03.439.439,1.272.454,2.782.482l.151,0h3.088Z" fill="none" stroke="#65899c" stroke-width="0.25"/><path id="Path_1247" data-name="Path 1247" d="M12.336,16.125H3.915a3.8,3.8,0,0,1-3.79-3.79V3.915A3.8,3.8,0,0,1,3.915.125l6,.053a1.746,1.746,0,0,1,1.252.549l4.477,4.781a1.8,1.8,0,0,1,.489,1.235l-.005,5.592a3.8,3.8,0,0,1-3.79,3.79M3.912.9A3.019,3.019,0,0,0,.9,3.915v8.42a3.019,3.019,0,0,0,3.016,3.016h8.421a3.019,3.019,0,0,0,3.016-3.016l.005-5.592a1.029,1.029,0,0,0-.279-.706L10.6,1.256a.962.962,0,0,0-.694-.3Z" fill="#65899c"/><path id="Path_1248" data-name="Path 1248" d="M12.336,16.125H3.915a3.8,3.8,0,0,1-3.79-3.79V3.915A3.8,3.8,0,0,1,3.915.125l6,.053a1.746,1.746,0,0,1,1.252.549l4.477,4.781a1.8,1.8,0,0,1,.489,1.235l-.005,5.592A3.8,3.8,0,0,1,12.336,16.125ZM3.912.9A3.019,3.019,0,0,0,.9,3.915v8.42a3.019,3.019,0,0,0,3.016,3.016h8.421a3.019,3.019,0,0,0,3.016-3.016l.005-5.592a1.029,1.029,0,0,0-.279-.706L10.6,1.256a.962.962,0,0,0-.694-.3Z" fill="none" stroke="#65899c" stroke-width="0.25"/></g></svg>',
11570
- bigAudio: '<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_12_1745)"> <path d="M10 37.5C10 36.1739 10.5268 34.9021 11.4645 33.9645C12.4021 33.0268 13.6739 32.5 15 32.5H17.5C18.8261 32.5 20.0979 33.0268 21.0355 33.9645C21.9732 34.9021 22.5 36.1739 22.5 37.5V45C22.5 46.3261 21.9732 47.5979 21.0355 48.5355C20.0979 49.4732 18.8261 50 17.5 50H15C13.6739 50 12.4021 49.4732 11.4645 48.5355C10.5268 47.5979 10 46.3261 10 45V37.5Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.5 37.5C37.5 36.1739 38.0268 34.9021 38.9645 33.9645C39.9021 33.0268 41.1739 32.5 42.5 32.5H45C46.3261 32.5 47.5979 33.0268 48.5355 33.9645C49.4732 34.9021 50 36.1739 50 37.5V45C50 46.3261 49.4732 47.5979 48.5355 48.5355C47.5979 49.4732 46.3261 50 45 50H42.5C41.1739 50 39.9021 49.4732 38.9645 48.5355C38.0268 47.5979 37.5 46.3261 37.5 45V37.5Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M10 37.5V30C10 24.6957 12.1071 19.6086 15.8579 15.8579C19.6086 12.1071 24.6957 10 30 10C35.3043 10 40.3914 12.1071 44.1421 15.8579C47.8929 19.6086 50 24.6957 50 30V37.5" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_12_1745"> <rect width="60" height="60" fill="white"/> </clipPath></defs></svg>',
11571
- responsiveUploadFile: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16.059 17" stroke="#7897a8"><g id="upload" transform="translate(-3.5 -3.5)"><path id="Path_1362" data-name="Path 1362" d="M4,17v2a1.944,1.944,0,0,0,1.882,2H17.176a1.944,1.944,0,0,0,1.882-2V17" transform="translate(0 -1)" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1363" data-name="Path 1363" d="M7,9l4.529-5,4.529,5" fill="none" stroke="#7897a8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1364" data-name="Path 1364" d="M12,4V16" transform="translate(-0.471)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11572
- cancel: '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 12 12"><path id="Union_8" data-name="Union 8" d="M9.742,11.613,6,7.871,2.258,11.613A1.323,1.323,0,0,1,.388,9.742L4.129,6,.388,2.258A1.322,1.322,0,0,1,2.258.388L6,4.129,9.742.388a1.323,1.323,0,0,1,1.871,1.87L7.871,6l3.742,3.742a1.323,1.323,0,0,1-1.871,1.871Z" transform="translate(0 0)" fill="none" stroke="#7897a8"/></svg>',
11573
- X: '<svg class="my-svg" xmlns="http://www.w3.org/2000/svg" width="9" height="9" viewBox="0 0 12 12"><path id="Union_8" data-name="Union 8" d="M9.742,11.613,6,7.871,2.258,11.613A1.323,1.323,0,0,1,.388,9.742L4.129,6,.388,2.258A1.322,1.322,0,0,1,2.258.388L6,4.129,9.742.388a1.323,1.323,0,0,1,1.871,1.87L7.871,6l3.742,3.742a1.323,1.323,0,0,1-1.871,1.871Z" transform="translate(0 0)" stroke-width="0"/></svg>',
11574
- chevron: '<svg xmlns="http://www.w3.org/2000/svg" width="14px" height:"14px" viewBox="0 0 11.299 6.649"><path id="Vector_43-2" data-name="Vector 43-2" d="M1006.235,549.5,1002,553.735l-4.236-4.235" transform="translate(-996.35 -548.086)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>',
11575
- smallChevron: '<svg xmlns="http://www.w3.org/2000/svg" width="11.299" height="6.649" viewBox="0 0 11.299 6.649"><path id="Vector_43-2" data-name="Vector 43-2" d="M1006.235,549.5,1002,553.735l-4.236-4.235" transform="translate(-996.35 -548.086)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>',
11576
- search: '<svg width="100%" height:"100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.78653 9.25985C2.27371 8.49236 2 7.59004 2 6.667C2 5.42923 2.4917 4.24217 3.36693 3.36693C4.24217 2.4917 5.42923 2 6.667 2C7.59004 2 8.49236 2.27371 9.25985 2.78653C10.0273 3.29935 10.6255 4.02823 10.9787 4.88102C11.332 5.7338 11.4244 6.67218 11.2443 7.57749C11.0642 8.4828 10.6198 9.31438 9.96707 9.96707C9.31438 10.6198 8.4828 11.0642 7.57749 11.2443C6.67218 11.4244 5.7338 11.332 4.88102 10.9787C4.02823 10.6255 3.29935 10.0273 2.78653 9.25985Z" stroke-linecap="round" stroke-linejoin="round"/><path d="M14 14L10 10" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11577
- clock: '<svg width="100%" height:"100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.30029 7.019C1.30029 8.20945 1.64312 9.37316 2.28543 10.363C2.92774 11.3528 3.84068 12.1243 4.9088 12.5798C5.97692 13.0354 7.15224 13.1546 8.28615 12.9223C9.42006 12.6901 10.4616 12.1168 11.2791 11.2751C12.0966 10.4333 12.6534 9.36082 12.8789 8.19325C13.1045 7.02568 12.9887 5.81546 12.5463 4.71563C12.1038 3.6158 11.3546 2.67576 10.3933 2.01438C9.43204 1.35301 8.30188 1 7.14576 1C5.59544 1 4.10863 1.63414 3.01239 2.76292C1.91615 3.89171 1.30029 5.42266 1.30029 7.019Z" stroke-linecap="round" stroke-linejoin="round"/><path d="M7.15625 3.70801V7.00801L9.08014 8.98901" stroke="#26945A" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11578
- calendar: '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.66669 10.0002C1.66669 6.85747 1.66669 5.28612 2.643 4.30981C3.61931 3.3335 5.19066 3.3335 8.33335 3.3335H11.6667C14.8094 3.3335 16.3807 3.3335 17.357 4.30981C18.3334 5.28612 18.3334 6.85747 18.3334 10.0002V11.6668C18.3334 14.8095 18.3334 16.3809 17.357 17.3572C16.3807 18.3335 14.8094 18.3335 11.6667 18.3335H8.33335C5.19066 18.3335 3.61931 18.3335 2.643 17.3572C1.66669 16.3809 1.66669 14.8095 1.66669 11.6668V10.0002Z" stroke-width="1"/><path d="M5.83331 3.3335V2.0835" stroke-width="1" stroke-linecap="round"/><path d="M14.1667 3.3335V2.0835" stroke-width="1" stroke-linecap="round"/><path d="M2.08331 7.5H17.9166" stroke-width="1" stroke-linecap="round"/><path d="M15 14.1667C15 14.6269 14.6269 15 14.1666 15C13.7064 15 13.3333 14.6269 13.3333 14.1667C13.3333 13.7064 13.7064 13.3333 14.1666 13.3333C14.6269 13.3333 15 13.7064 15 14.1667Z"/><path d="M15 10.8333C15 11.2936 14.6269 11.6667 14.1666 11.6667C13.7064 11.6667 13.3333 11.2936 13.3333 10.8333C13.3333 10.3731 13.7064 10 14.1666 10C14.6269 10 15 10.3731 15 10.8333Z" /><path d="M10.8334 14.1667C10.8334 14.6269 10.4603 15 10 15C9.53978 15 9.16669 14.6269 9.16669 14.1667C9.16669 13.7064 9.53978 13.3333 10 13.3333C10.4603 13.3333 10.8334 13.7064 10.8334 14.1667Z" /><path d="M10.8334 10.8333C10.8334 11.2936 10.4603 11.6667 10 11.6667C9.53978 11.6667 9.16669 11.2936 9.16669 10.8333C9.16669 10.3731 9.53978 10 10 10C10.4603 10 10.8334 10.3731 10.8334 10.8333Z" /><path d="M6.66667 14.1667C6.66667 14.6269 6.29357 15 5.83333 15C5.3731 15 5 14.6269 5 14.1667C5 13.7064 5.3731 13.3333 5.83333 13.3333C6.29357 13.3333 6.66667 13.7064 6.66667 14.1667Z" /><path d="M6.66667 10.8333C6.66667 11.2936 6.29357 11.6667 5.83333 11.6667C5.3731 11.6667 5 11.2936 5 10.8333C5 10.3731 5.3731 10 5.83333 10C6.29357 10 6.66667 10.3731 6.66667 10.8333Z" /></svg>',
11579
- civilProfession: '<svg xmlns="http://www.w3.org/2000/svg" width="14.621" height="17.175" viewBox="0 0 14.621 17.175"><g id="Group_1472" data-name="Group 1472" transform="translate(0.157 0.157)"><g id="Group_1471" data-name="Group 1471" transform="translate(0.343 0.343)"> <path id="Path_2640" data-name="Path 2640" d="M11.5.5V3.905a.852.852,0,0,0,.851.851h3.405" transform="translate(-2.136 -0.5)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2641" data-name="Path 2641" d="M2.5,4.756V2.2A1.7,1.7,0,0,1,4.2.5h5.959l4.256,4.256v9.364a1.7,1.7,0,0,1-1.7,1.7H8.459" transform="translate(-0.797 -0.5)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2642" data-name="Path 2642" d="M.5,11.054A2.554,2.554,0,1,0,3.054,8.5,2.554,2.554,0,0,0,.5,11.054" transform="translate(-0.5 -1.69)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2643" data-name="Path 2643" d="M1.777,14.5.5,18.756,3.054,17.48l2.554,1.277L4.331,14.5" transform="translate(-0.5 -2.582)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>',
11580
- position: '<svg id="report-money" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2553" data-name="Path 2553" d="M8.881,5H6.94A2.016,2.016,0,0,0,5,7.083v12.5a2.016,2.016,0,0,0,1.94,2.083h9.7a2.016,2.016,0,0,0,1.94-2.083V7.083A2.016,2.016,0,0,0,16.643,5H14.7" transform="translate(0.208 -0.792)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2554" data-name="Path 2554" d="M9,3,9,5.083A2.083,2.083,0,0,1,11.083,3h2.083A2.083,2.083,0,0,1,15.25,5.083h0a2.083,2.083,0,0,1-2.083,2.083H11.083A2.083,2.083,0,0,1,9,5.083Z" transform="translate(-0.125 0.125)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2555" data-name="Path 2555" d="M14.167,11h-2.6a1.563,1.563,0,0,0,0,3.125H12.6a1.563,1.563,0,0,1,0,3.125H10" transform="translate(-0.083 -0.153)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2556" data-name="Path 2556" d="M12,17.292v1.042M12,10v1.042" transform="translate(0 -0.208)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
11581
- role: '<svg id="military-award" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2568" data-name="Path 2568" d="M11.932,12.932,8,12.932A3.932,3.932,0,1,0,11.932,9,3.932,3.932,0,0,0,8,12.932" transform="translate(0.068 0.076)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2569" data-name="Path 2569" d="M8.39,10.458,7.407,8H2l2.438,5.69a1.966,1.966,0,0,0,1.809,1.192H8.39" transform="translate(-0.034 0.056)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2570" data-name="Path 2570" d="M15.5,10.458,16.483,8H21.89l-2.438,5.69a1.966,1.966,0,0,1-1.809,1.192H15.5" transform="translate(0.144 0.056)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
11582
- school: '<svg id="school_1_" data-name="school (1)" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2565" data-name="Path 2565" d="M22.167,8.833,12.083,5,2,8.833l10.083,3.833L22.167,8.833v5.75" transform="translate(-0.083 0.149)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2566" data-name="Path 2566" d="M6,10.6v5.175c0,1.588,2.574,2.875,5.75,2.875s5.75-1.287,5.75-2.875V10.6" transform="translate(0.25 0.238)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
11583
- struct: '<svg id="user-scan" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2558" data-name="Path 2558" d="M10,9.185A2.185,2.185,0,1,0,12.185,7,2.185,2.185,0,0,0,10,9.185" transform="translate(-0.185 -0.13)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2559" data-name="Path 2559" d="M4,8.371V6.185A2.185,2.185,0,0,1,6.185,4H8.371" transform="translate(-0.074 -0.074)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2560" data-name="Path 2560" d="M4,16v2.185a2.185,2.185,0,0,0,2.185,2.185H8.371" transform="translate(-0.074 -0.297)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2561" data-name="Path 2561" d="M16,4h2.185a2.185,2.185,0,0,1,2.185,2.185V8.371" transform="translate(-0.297 -0.074)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2562" data-name="Path 2562" d="M16,20.371h2.185a2.185,2.185,0,0,0,2.185-2.185V16" transform="translate(-0.297 -0.297)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2563" data-name="Path 2563" d="M8,16.185A2.185,2.185,0,0,1,10.185,14h4.371a2.185,2.185,0,0,1,2.185,2.185" transform="translate(-0.371 -0.118)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
11584
- id: '<svg id="id_1_" data-name="id (1)" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path id="Path_2547" data-name="Path 2547" d="M3,4,3,6.775A2.814,2.814,0,0,1,5.85,4h11.4A2.814,2.814,0,0,1,20.1,6.775v9.251a2.814,2.814,0,0,1-2.85,2.775H5.85A2.814,2.814,0,0,1,3,16.026Z" transform="translate(0.449 0.599)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2548" data-name="Path 2548" d="M9.3,10.3,7,10.3A2.3,2.3,0,1,0,9.3,8,2.3,2.3,0,0,0,7,10.3" transform="translate(-0.21 -0.24)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2549" data-name="Path 2549" d="M15,8h2.3" transform="translate(-0.204 0)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2550" data-name="Path 2550" d="M15,12h2.3" transform="translate(-0.204)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2551" data-name="Path 2551" d="M7,16H18.5" transform="translate(-0.749 0)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
11585
- clipboardText: '<svg id="clipboard-text" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 18 18"><path id="Path_2572" data-name="Path 2572" d="M8,5H6.5A1.5,1.5,0,0,0,5,6.5v9A1.5,1.5,0,0,0,6.5,17H14a1.5,1.5,0,0,0,1.5-1.5v-9A1.5,1.5,0,0,0,14,5H12.5" transform="translate(-1.25 -1.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2574" data-name="Path 2574" d="M9,12h4.5" transform="translate(-2.25 -2.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2576" data-name="Path 2576" d="M9,12h4.5" transform="translate(-2.25 -5.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2575" data-name="Path 2575" d="M9,16h4.5" transform="translate(-2.25 -3.25)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></svg>',
11586
- audio: '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 10.7143C1 10.2596 1.16857 9.82359 1.46863 9.5021C1.76869 9.18061 2.17565 9 2.6 9H3.4C3.82435 9 4.23131 9.18061 4.53137 9.5021C4.83143 9.82359 5 10.2596 5 10.7143V13.2857C5 13.7404 4.83143 14.1764 4.53137 14.4979C4.23131 14.8194 3.82435 15 3.4 15H2.6C2.17565 15 1.76869 14.8194 1.46863 14.4979C1.16857 14.1764 1 13.7404 1 13.2857V10.7143Z" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M11 10.7143C11 10.2596 11.1686 9.82359 11.4686 9.5021C11.7687 9.18061 12.1757 9 12.6 9H13.4C13.8243 9 14.2313 9.18061 14.5314 9.5021C14.8314 9.82359 15 10.2596 15 10.7143V13.2857C15 13.7404 14.8314 14.1764 14.5314 14.4979C14.2313 14.8194 13.8243 15 13.4 15H12.6C12.1757 15 11.7687 14.8194 11.4686 14.4979C11.1686 14.1764 11 13.7404 11 13.2857V10.7143Z" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M1 11V8.27273C1 6.34388 1.7375 4.49403 3.05025 3.13013C4.36301 1.76623 6.14348 1 8 1C9.85652 1 11.637 1.76623 12.9497 3.13013C14.2625 4.49403 15 6.34388 15 8.27273V11" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11587
- collection: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="22" viewBox="0 0 21 18"><defs><clipPath id="clip-path"><rect id="Rectangle_2250" data-name="Rectangle 2250" width="16" height="18" fill="none" stroke-width="1"/></clipPath></defs><g id="Group_1560" data-name="Group 1560" transform="translate(4 4)"><path id="Path_2888" data-name="Path 2888" d="M0,0H24V24H0Z" transform="translate(-4 -4)" fill="none"/><g id="Group_1559" data-name="Group 1559" transform="translate(0 -1)" clip-path="url(#clip-path)"><path id="Path_2886" data-name="Path 2886" d="M15,1V17H3a2,2,0,0,1-2-2V3A2,2,0,0,1,3,1Z" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2887" data-name="Path 2887" d="M15,13H3a2,2,0,0,0-2,2" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line id="Line_438" data-name="Line 438" x2="6" transform="translate(5 5)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>',
11588
- exercise: '<svg id="Group_882" data-name="Group 882" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16.005" height="16" viewBox="0 0 16.005 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1679" data-name="Rectangle 1679" width="16.005" height="16" fill="none"/></clipPath></defs><g id="Group_881" data-name="Group 881" clip-path="url(#clip-path)"><path id="Path_1277" data-name="Path 1277" d="M9.829,10.33H3.638a.387.387,0,0,1,0-.774H9.829a.387.387,0,0,1,0,.774" /><path id="Path_1278" data-name="Path 1278" d="M7.894,13.039H3.638a.387.387,0,1,1,0-.774H7.894a.387.387,0,1,1,0,.774" /><path id="Path_1279" data-name="Path 1279" d="M15.916,6.88l-3.253,0c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.658h.774V2.592c0,1.715,0,2.576.454,3.03.439.439,1.271.454,2.781.482l.151,0h3.088Z" /><path id="Path_1280" data-name="Path 1280" d="M12.21,16H3.79A3.794,3.794,0,0,1,0,12.21V3.79A3.794,3.794,0,0,1,3.79,0l6,.052A1.747,1.747,0,0,1,11.04.6l4.477,4.781A1.8,1.8,0,0,1,16,6.619l0,5.591A3.8,3.8,0,0,1,12.21,16M3.787.774A3.019,3.019,0,0,0,.774,3.79v8.42A3.019,3.019,0,0,0,3.79,15.226h8.42a3.02,3.02,0,0,0,3.017-3.016l0-5.592a1.03,1.03,0,0,0-.278-.707l-4.478-4.78A.971.971,0,0,0,9.781.826Z" /></g></svg>',
11589
- genericFile: '<svg class="generic-file-icon" xmlns="http://www.w3.org/2000/svg" width="13.165" height="16.641" viewBox="0 0 13.165 16.641"><g id="file-dots" transform="translate(-3.845 -2.107)"><path id="Path_1460" data-name="Path 1460" d="M15.427,18.641H6.738A1.738,1.738,0,0,1,5,16.9V4.738A1.738,1.738,0,0,1,6.738,3H12.82l4.345,4.345V16.9A1.738,1.738,0,0,1,15.427,18.641Z" transform="translate(-0.655 -0.393)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1461" data-name="Path 1461" d="M9,14v.009" transform="translate(-1.18 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1462" data-name="Path 1462" d="M12,14v.009" transform="translate(-1.573 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1463" data-name="Path 1463" d="M15,14v.009" transform="translate(-1.966 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11590
- image: '<svg id="photo-up" xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 18"><path id="Path_2633" data-name="Path 2633" d="M0,0H24V24H0Z" fill="none"/><g id="Group_1464" data-name="Group 1464" transform="translate(1 1)"><path id="Path_2634" data-name="Path 2634" d="M15,8h.008" transform="translate(-1.895 -0.789)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2635" data-name="Path 2635" d="M11,18.162H5.527A2.527,2.527,0,0,1,3,15.635V5.527A2.527,2.527,0,0,1,5.527,3H15.635a2.527,2.527,0,0,1,2.527,2.527V11" transform="translate(0 0)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2636" data-name="Path 2636" d="M3,15.084l4.192-4.192a1.689,1.689,0,0,1,2.515,0l2.935,2.935" transform="translate(0 -1.146)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2637" data-name="Path 2637" d="M14,13.73l.838-.838a1.677,1.677,0,0,1,1.856-.441" transform="translate(-1.729 -1.47)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2638" data-name="Path 2638" d="M19,21.031V16" transform="translate(-2.515 -2.031)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_2639" data-name="Path 2639" d="M21.031,18.515,18.515,16,16,18.515" transform="translate(-2.031 -2.044)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11591
- pdf: '<svg id="Group_884" data-name="Group 884" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16.005" height="16" viewBox="0 0 16.005 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1680" data-name="Rectangle 1680" width="16.005" height="16" fill="none"/></clipPath></defs><g id="Group_883" data-name="Group 883" clip-path="url(#clip-path)"><path id="Path_1281" data-name="Path 1281" d="M2.947,8.524h.594v4.217H2.947Zm.523,2.91V10.87h.719a1.018,1.018,0,0,0,.736-.242.945.945,0,0,0,.249-.708A.767.767,0,0,0,4.925,9.3a1.112,1.112,0,0,0-.736-.211H3.482V8.524h.707a1.792,1.792,0,0,1,1.2.353A1.305,1.305,0,0,1,5.8,9.92a1.478,1.478,0,0,1-.408,1.129,1.688,1.688,0,0,1-1.2.385Z" /><path id="Path_1282" data-name="Path 1282" d="M6.452,8.523h.594V12.74H6.452ZM7,12.74v-.564h.469a1.24,1.24,0,0,0,.979-.371,1.645,1.645,0,0,0,.328-1.114,1.872,1.872,0,0,0-.328-1.2,1.194,1.194,0,0,0-.979-.4H7.016l-.071-.565h.528q1.931,0,1.93,2.168,0,2.049-1.93,2.049Z" /> <path id="Path_1283" data-name="Path 1283" d="M10.134,8.524h.594v4.217h-.594Zm0,0h2.791v.564H10.134Zm0,2h2.257v.564H10.134Z" /><path id="Path_1284" data-name="Path 1284" d="M15.916,6.88l-3.253,0c-1.712-.033-2.655-.049-3.315-.71-.68-.679-.68-1.647-.68-3.576V.658h.774V2.592c0,1.715,0,2.576.453,3.03.439.439,1.272.454,2.782.482l.151,0h3.088Z" /><path id="Path_1285" data-name="Path 1285" d="M12.211,16H3.79A3.8,3.8,0,0,1,0,12.21V3.79A3.8,3.8,0,0,1,3.79,0l6,.053A1.746,1.746,0,0,1,11.04.6l4.477,4.781a1.8,1.8,0,0,1,.489,1.235L16,12.21A3.8,3.8,0,0,1,12.211,16M3.787.774A3.019,3.019,0,0,0,.774,3.79v8.42A3.019,3.019,0,0,0,3.79,15.226h8.421a3.019,3.019,0,0,0,3.016-3.016l.005-5.592a1.029,1.029,0,0,0-.279-.706L10.475,1.131a.962.962,0,0,0-.694-.3Z" /></g></svg>',
11592
- presentation: '<svg id="Group_886" data-name="Group 886" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="17.684" height="16" viewBox="0 0 17.684 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1681" data-name="Rectangle 1681" width="17.684" height="16" fill="none"/></clipPath></defs><g id="Group_885" data-name="Group 885" clip-path="url(#clip-path)"> <path id="Path_1286" data-name="Path 1286" d="M12.211,11.789H5.474c-2.495,0-3.748,0-4.61-.863S0,8.811,0,6.316V5.474C0,2.979,0,1.726.864.863S2.979,0,5.474,0h6.737c2.495,0,3.747,0,4.61.863s.863,2.116.863,4.611v.842c0,2.495,0,3.747-.864,4.61s-2.114.863-4.609.863M5.474.842c-2.263,0-3.4,0-4.015.617S.842,3.21.842,5.474v.842c0,2.263,0,3.4.617,4.014s1.752.617,4.015.617h6.737c2.263,0,3.4,0,4.014-.617s.617-1.751.617-4.014V5.474c0-2.264,0-3.4-.616-4.015S14.474.842,12.211.842Z" /><path id="Path_1287" data-name="Path 1287" d="M13.9,16a.44.44,0,0,1-.133-.021l-4.92-1.64-4.919,1.64a.422.422,0,0,1-.266-.8l4.764-1.588v-1.8a.421.421,0,0,1,.842,0v1.8l4.765,1.588A.421.421,0,0,1,13.9,16" /></g></svg>',
11593
- quiz: '<svg id="Group_888" data-name="Group 888" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14.476" height="16" viewBox="0 0 14.476 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1682" data-name="Rectangle 1682" width="14.476" height="16" fill="none"/></clipPath></defs><g id="Group_887" data-name="Group 887" clip-path="url(#clip-path)"><path id="Path_1288" data-name="Path 1288" d="M9.524,16H4.953c-2.258,0-3.391,0-4.172-.781S0,13.305,0,11.048V6.476c0-2.257,0-3.39.781-4.171.715-.714,1.764-.771,3.407-.78l0,.762c-1.642.009-2.4.088-2.873.557C.762,3.4.762,4.429.762,6.476v4.572c0,2.047,0,3.075.558,3.633s1.585.557,3.633.557H9.524c2.047,0,3.075,0,3.632-.557s.558-1.586.558-3.633V6.476c0-2.047,0-3.074-.558-3.632-.468-.469-1.23-.548-2.872-.557l0-.762c1.643.009,2.693.066,3.407.78.781.781.781,1.914.781,4.171v4.572c0,2.257,0,3.39-.781,4.171S11.781,16,9.524,16" /><path id="Path_1289" data-name="Path 1289" d="M8,9.763H3.048a.286.286,0,1,1,0-.571H8a.286.286,0,1,1,0,.571" /><path id="Path_1290" data-name="Path 1290" d="M8,7.063H3.048a.286.286,0,1,1,0-.571H8a.286.286,0,1,1,0,.571" /><path id="Path_1291" data-name="Path 1291" d="M8,12.476H3.048a.286.286,0,1,1,0-.571H8a.286.286,0,1,1,0,.571" /><path id="Path_1292" data-name="Path 1292" d="M9.143,3.81H5.333A1.526,1.526,0,0,1,3.809,2.286V1.524A1.526,1.526,0,0,1,5.333,0h3.81a1.525,1.525,0,0,1,1.523,1.524v.762A1.525,1.525,0,0,1,9.143,3.81M5.333.762a.763.763,0,0,0-.762.762v.762a.763.763,0,0,0,.762.762h3.81A.762.762,0,0,0,9.9,2.286V1.524A.762.762,0,0,0,9.143.762Z" /><path id="Path_1293" data-name="Path 1293" d="M10.64,7.445a.182.182,0,0,1-.136-.061l-.347-.389a.182.182,0,0,1,.272-.243l.211.237.732-.82a.182.182,0,1,1,.272.243l-.868.972a.182.182,0,0,1-.136.061" /><path id="Path_1294" data-name="Path 1294" d="M10.64,10.146a.182.182,0,0,1-.136-.061L10.157,9.7a.182.182,0,0,1,.272-.243l.211.237.732-.82a.182.182,0,1,1,.272.243l-.868.972a.182.182,0,0,1-.136.061" /><path id="Path_1295" data-name="Path 1295" d="M10.64,12.859A.182.182,0,0,1,10.5,12.8l-.347-.389a.182.182,0,0,1,.272-.243l.211.237.732-.82a.182.182,0,1,1,.272.243l-.868.972a.182.182,0,0,1-.136.061" /></g></svg>',
11594
- story: '<svg xmlns="http://www.w3.org/2000/svg" width="20.554" height="17.009" viewBox="0 0 20.554 17.009"><g id="Group_952" data-name="Group 952" transform="translate(-0.5 -1.491)"> <g id="Group_951" data-name="Group 951"> <path id="Path_1356" data-name="Path 1356" d="M20.063,6.538,11.175,2.093a.889.889,0,0,0-.8,0L1.491,6.538a.886.886,0,0,0-.4.412,1.1,1.1,0,0,0-.1.384v5.124a.89.89,0,0,0,1.778,0V8.647l1.778.711v4.358a.89.89,0,0,0,.492.8,11.458,11.458,0,0,0,5.73,1.706,11.464,11.464,0,0,0,5.73-1.706.891.891,0,0,0,.492-.8V9.358l3-1.2a.891.891,0,0,0,.067-1.621Zm-4.842,6.629-.867.433a8.033,8.033,0,0,1-7.155,0l-.867-.433v-3.1l4.114,1.646a.887.887,0,0,0,.331.062.871.871,0,0,0,.331-.063l4.114-1.646ZM10.777,9.931,4.057,7.242l6.721-3.359L17.5,7.242,10.777,9.931ZM1.889,14.444A.889.889,0,0,0,1,15.333V17.11a.889.889,0,0,0,1.778,0V15.333A.889.889,0,0,0,1.889,14.444Z" stroke="#fff" stroke-width="1"/> </g></g></svg>',
11595
- video: '<svg id="Group_890" data-name="Group 890" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="clip-path"><rect id="Rectangle_1683" data-name="Rectangle 1683" width="16" height="16" fill="none"/></clipPath></defs><g id="Group_889" data-name="Group 889" clip-path="url(#clip-path)"> <path id="Path_1296" data-name="Path 1296" d="M8,16a8,8,0,1,1,8-8,8.009,8.009,0,0,1-8,8M8,.762A7.238,7.238,0,1,0,15.238,8,7.246,7.246,0,0,0,8,.762" /> <path id="Path_1297" data-name="Path 1297" d="M6.912,11.431a.88.88,0,0,1-.549-.194c-.507-.38-.544-1.017-.618-2.284-.019-.333-.031-.66-.031-.953s.012-.62.031-.952c.074-1.268.111-1.9.617-2.286.574-.431,1.149-.08,2.02.449.22.133.433.27.619.4.212.149.444.329.678.519.854.7,1.369,1.116,1.369,1.869s-.515,1.171-1.367,1.867c-.236.192-.468.372-.682.521-.184.131-.4.267-.617.4a3.279,3.279,0,0,1-1.47.643M6.93,5.337a.18.18,0,0,0-.11.034c-.224.168-.258.752-.314,1.72-.018.317-.03.629-.03.909s.012.591.03.909c.056.967.09,1.551.315,1.72.145.108.436-.048,1.166-.491.2-.125.4-.25.575-.373.2-.141.417-.309.635-.488.81-.659,1.089-.906,1.089-1.277s-.28-.619-1.088-1.278c-.219-.178-.435-.346-.636-.487-.174-.123-.372-.249-.575-.373A3.108,3.108,0,0,0,6.93,5.337" /></g></svg>',
11596
- text: '<svg width="22" height="22" viewBox="0 0 18 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.1788 6H6.82125L6.75 8.5H7.375C7.6 7.13 7.82 7.01 9.4925 6.95625L9.85875 6.94375V14.5563C9.85875 15.1438 9.73375 15.2837 8.73625 15.375V16H12.2625V15.375C11.2587 15.2837 11.1337 15.145 11.1337 14.5575V6.94375L11.5063 6.95625C13.1788 7.01 13.3987 7.13125 13.6237 8.5H14.2487L14.1788 6Z"/><path d="M5.5 1C4.83696 1 4.20107 1.26339 3.73223 1.73223C3.26339 2.20107 3 2.83696 3 3.5V18.5C3 19.163 3.26339 19.7989 3.73223 20.2678C4.20107 20.7366 4.83696 21 5.5 21H15.5C16.163 21 16.7989 20.7366 17.2678 20.2678C17.7366 19.7989 18 19.163 18 18.5V3.5C18 2.83696 17.7366 2.20107 17.2678 1.73223C16.7989 1.26339 16.163 1 15.5 1H5.5ZM5.5 2.25H15.5C15.8315 2.25 16.1495 2.3817 16.3839 2.61612C16.6183 2.85054 16.75 3.16848 16.75 3.5V18.5C16.75 18.8315 16.6183 19.1495 16.3839 19.3839C16.1495 19.6183 15.8315 19.75 15.5 19.75H5.5C5.16848 19.75 4.85054 19.6183 4.61612 19.3839C4.3817 19.1495 4.25 18.8315 4.25 18.5V3.5C4.25 3.16848 4.3817 2.85054 4.61612 2.61612C4.85054 2.3817 5.16848 2.25 5.5 2.25Z"/></svg>',
11597
- learningunit: '<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 19L6.757 11.649C6.82844 11.4584 6.95632 11.2942 7.12357 11.1782C7.29082 11.0623 7.48948 11.0001 7.693 11H20M4 19H18.026C18.4913 18.9999 18.942 18.8375 19.3004 18.5409C19.6589 18.2443 19.9028 17.832 19.99 17.375L20.986 12.164C21.0098 12.0208 21.0022 11.8741 20.9636 11.7342C20.925 11.5943 20.8564 11.4644 20.7626 11.3536C20.6688 11.2429 20.5519 11.1539 20.4203 11.0928C20.2886 11.0317 20.1452 11.0001 20 11M4 19C3.46957 19 2.96086 18.7893 2.58579 18.4142C2.21071 18.0391 2 17.5304 2 17V6C2 5.46957 2.21071 4.96086 2.58579 4.58579C2.96086 4.21071 3.46957 4 4 4H8L11 7H18C18.5304 7 19.0391 7.21071 19.4142 7.58579C19.7893 7.96086 20 8.46957 20 9V11" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11598
- generic: '<svg class="generic-file-icon" xmlns="http://www.w3.org/2000/svg" width="13.165" height="16.641" viewBox="0 0 13.165 16.641"><g id="file-dots" transform="translate(-3.845 -2.107)"><path id="Path_1460" data-name="Path 1460" d="M15.427,18.641H6.738A1.738,1.738,0,0,1,5,16.9V4.738A1.738,1.738,0,0,1,6.738,3H12.82l4.345,4.345V16.9A1.738,1.738,0,0,1,15.427,18.641Z" transform="translate(-0.655 -0.393)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1461" data-name="Path 1461" d="M9,14v.009" transform="translate(-1.18 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1462" data-name="Path 1462" d="M12,14v.009" transform="translate(-1.573 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path id="Path_1463" data-name="Path 1463" d="M15,14v.009" transform="translate(-1.966 -1.835)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11599
- success: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g id="success" transform="translate(-268 -524)"><g id="circle-check" transform="translate(268 524)"><path id="Path_1570" data-name="Path 1570" d="M0,0H24V24H0Z" fill="none"/><path id="Path_1571" data-name="Path 1571" d="M12,21.5A9.5,9.5,0,1,1,21.5,12,9.438,9.438,0,0,1,12,21.5ZM3.5,12A8.5,8.5,0,1,0,12,3.5,8.444,8.444,0,0,0,3.5,12Z"/> <path id="Path_1572" data-name="Path 1572" d="M11.25,14.5h-.094a.75.75,0,0,1-.473-.168l-2.156-1.75a.75.75,0,0,1,.945-1.165l1.683,1.366L14.47,9.47A.75.75,0,1,1,15.53,10.53l-3.75,3.75A.75.75,0,0,1,11.25,14.5Z"/></g></g></svg>',
11600
- error: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g id="Error" transform="translate(-310 -524)"><path id="Path_1570" data-name="Path 1570" d="M0,0H24V24H0Z" transform="translate(310 524)" fill="none"/><path id="Path_1571" data-name="Path 1571" d="M12,21.5A9.5,9.5,0,1,1,21.5,12,9.438,9.438,0,0,1,12,21.5ZM3.5,12A8.5,8.5,0,1,0,12,3.5,8.444,8.444,0,0,0,3.5,12Z" transform="translate(310 524)" fill="#ff0a4d"/><line id="Line_433" data-name="Line 433" x1="5" y2="5" transform="translate(319.5 533.5)" fill="none" stroke="#ff0a4d" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line id="Line_434" data-name="Line 434" x2="5" y2="5" transform="translate(319.5 533.5)" fill="none" stroke="#ff0a4d" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></svg>',
11601
- information: '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.75 10.55V7.75M7.75 4.95H7.757M14.75 7.75C14.75 11.616 11.616 14.75 7.75 14.75C3.88401 14.75 0.75 11.616 0.75 7.75C0.75 3.88401 3.88401 0.75 7.75 0.75C11.616 0.75 14.75 3.88401 14.75 7.75Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11602
- primaryPlay: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 247.285 247.285"><defs><clipPath id="clip-path"><rect id="Rectangle_537" data-name="Rectangle 537" width="247.285" height="247.285" fill="#fff"/></clipPath><linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox"><stop class="start-stop-color" offset="0" stop-color=""/><stop class="middle-stop-color" offset="0.661" stop-color=""/><stop class="end-stop-color" offset="1" stop-color=""/></linearGradient></defs><g id="Group_944" data-name="Group 944" transform="translate(-508.407 -275.197)"><g id="Group_770" data-name="Group 770" transform="translate(508.407 275.197)" opacity="0.5" style="mix-blend-mode: overlay;isolation: isolate"><g id="Group_769" data-name="Group 769"><g id="Group_768" data-name="Group 768" clip-path="url(#clip-path)"><path id="Path_975" data-name="Path 975" d="M2042.058,1095.954a123.643,123.643,0,1,1-123.643-123.643,123.643,123.643,0,0,1,123.643,123.643" transform="translate(-1794.772 -972.311)" fill="#fff"/></g></g></g><path id="Path_976" data-name="Path 976" d="M2197.875,1288.733l-60.24-33.5a7.1,7.1,0,0,0-10.546,6.2v66.994a7.1,7.1,0,0,0,10.546,6.2l60.24-33.5a7.1,7.1,0,0,0,0-12.406" transform="translate(-1519.037 -896.098)" fill="url(#linear-gradient)"/></g></svg>',
11603
- hadrachaHierarchy: '<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 19L6.757 11.649C6.82844 11.4584 6.95632 11.2942 7.12357 11.1782C7.29082 11.0623 7.48948 11.0001 7.693 11H20M4 19H18.026C18.4913 18.9999 18.942 18.8375 19.3004 18.5409C19.6589 18.2443 19.9028 17.832 19.99 17.375L20.986 12.164C21.0098 12.0208 21.0022 11.8741 20.9636 11.7342C20.925 11.5943 20.8564 11.4644 20.7626 11.3536C20.6688 11.2429 20.5519 11.1539 20.4203 11.0928C20.2886 11.0317 20.1452 11.0001 20 11M4 19C3.46957 19 2.96086 18.7893 2.58579 18.4142C2.21071 18.0391 2 17.5304 2 17V6C2 5.46957 2.21071 4.96086 2.58579 4.58579C2.96086 4.21071 3.46957 4 4 4H8L11 7H18C18.5304 7 19.0391 7.21071 19.4142 7.58579C19.7893 7.96086 20 8.46957 20 9V11" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11604
- hadrachaHierarchyResource: '<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.8644 1V5C9.8644 5.26522 9.96966 5.51957 10.157 5.70711C10.3444 5.89464 10.5985 6 10.8634 6H14.8596M9.8644 1H2.87113C2.3412 1 1.83298 1.21071 1.45827 1.58579C1.08356 1.96086 0.873047 2.46957 0.873047 3V17C0.873047 17.5304 1.08356 18.0391 1.45827 18.4142C1.83298 18.7893 2.3412 19 2.87113 19H12.8615C13.3914 19 13.8997 18.7893 14.2744 18.4142C14.6491 18.0391 14.8596 17.5304 14.8596 17V6M9.8644 1L14.8596 6M4.8692 15H10.8634M4.8692 11H10.8634" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11605
- link: '<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.99151 9.25504C7.31542 9.68851 7.72868 10.0472 8.20326 10.3067C8.67783 10.5663 9.20261 10.7206 9.74201 10.7593C10.2814 10.798 10.8228 10.72 11.3295 10.5309C11.8362 10.3417 12.2963 10.0456 12.6786 9.66275L14.9414 7.39769C15.6283 6.6857 16.0085 5.7321 15.9999 4.74229C15.9913 3.75247 15.5946 2.80563 14.8954 2.1057C14.1962 1.40577 13.2503 1.00874 12.2615 1.00014C11.2727 0.991541 10.32 1.37205 9.60877 2.05971L8.31145 3.35079M10.0085 7.74496C9.68458 7.31149 9.27132 6.95281 8.79674 6.69327C8.32217 6.43373 7.79739 6.27939 7.25799 6.24072C6.71859 6.20205 6.17719 6.27995 5.67051 6.46915C5.16383 6.65835 4.70373 6.95441 4.32141 7.33725L2.05864 9.60231C1.37167 10.3143 0.99155 11.2679 1.00014 12.2577C1.00874 13.2475 1.40536 14.1944 2.10458 14.8943C2.80381 15.5942 3.74969 15.9913 4.73851 15.9999C5.72732 16.0085 6.67996 15.628 7.39123 14.9403L8.681 13.6492" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></svg>',
11606
- messagePlus: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" ><g clip - path="url(#clip0_17_2752)"><path d="M8 9H16" stroke - linecap="round" stroke - linejoin="round"/>< path d="M8 13H14" stroke- linecap="round" stroke - linejoin="round" /> <path d="M12.01 18.594L8 21V18H6C5.20435 18 4.44129 17.6839 3.87868 17.1213C3.31607 16.5587 3 15.7956 3 15V7C3 6.20435 3.31607 5.44129 3.87868 4.87868C4.44129 4.31607 5.20435 4 6 4H18C18.7956 4 19.5587 4.31607 20.1213 4.87868C20.6839 5.44129 21 6.20435 21 7V12.5" stroke - linecap="round" stroke - linejoin="round" /> <path d="M16 19H22" stroke - linecap="round" stroke - linejoin="round" /> <path d="M19 16V22" stroke - linecap="round" stroke - linejoin="round" /> </g>< defs ><clipPath id="clip0_17_2752" ><rect width="24" height = "24" fill ="white" /></clipPath> </defs> </svg>',
11607
- check: '<svg viewBox="0 0 16 16" width="16" height="16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 5L4.66667 9L12 1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'
11608
- };
11609
-
11610
11635
  const system = {
11611
11636
  college: "college",
11612
11637
  herum: "herum",
@@ -18655,5 +18680,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
18655
18680
  * Generated bundle index. Do not edit.
18656
18681
  */
18657
18682
 
18658
- export { AnswerNotesToTextChangesPipe, AtomsModule, AudioConfigurationConstants, AudioPlayerComponent, AudioSliderComponent, AudioVisualizationService, AuthService, BlockedFormComponent, CheckboxCellComponent, ChipsCellComponent, CollectionSubscriptionToCollectionBasePipe, CollectionToCollectionBasePipe, CollegeAudioConfiguration, CollegeLoaderComponent, CommonGraphqlRequestsService, ConditionalFormControlNameDirective, CopyableCellComponent, DbActionRequestsService, DbActionToastService, DbActionsInnerIdManagerService, DeleteRowComponent, DependentsService, DialogsModule, DirectivesModule, DisplayedSubmissionsCounterPipe, EditRowComponent, EllipsisPipe, ErrorMessageDialogComponent, ErrorsHandlerService, ErrorsModule, FetchedMessageDialog, FetchedMessageModule, FetchedMessageService, GlobalErrorHandler, GlobalKeyboardListenerService, GraphQLService, HadrachaAudioConfiguration, HerumActiveLinkComponent, HerumActiveMenuComponent, HerumAgGridFilterComponent, HerumAutocompleteComponent, HerumBreadcrumbsComponent, HerumButtonComponent, HerumCheckboxComponent, HerumChipComponent, HerumCircularProgressBarComponent, HerumClosedListMultiSelectComponent, HerumClosedListSelectComponent, HerumDatePickerComponent, HerumDateTimeInputComponent, HerumDateTimePickerComponent, HerumDateTimePickerSelectComponent, HerumDownloadFileComponent, HerumDropZoneComponent, HerumEllipsisLoaderComponent, HerumExpendablePanelComponent, HerumFilesViewerComponent, HerumFilesViewerDialogComponent, HerumFormControl, HerumHierarchyTreeComponent, HerumHierarchyTreeNodeComponent, HerumHighlightDirective, HerumIconLabelComponent, HerumIndeterminateComponent, HerumInputFieldComponent, HerumListCentralizerComponent, HerumLoaderComponent, HerumLocalLoaderComponent, HerumLogoComponent, HerumMiniTableComponent, HerumMultiProgressBarComponent, HerumMultiSelectComponent, HerumNarrowCollectionMenuItemComponent, HerumNavigatorComponent, HerumNoResultMessageComponent, HerumOptionsListComponent, HerumPaginatorComponent, HerumPanelLinksComponent, HerumPdfViewerComponent, HerumPresentationViewerComponent, HerumProgressBarComponent, HerumQuizComponent, HerumQuizHeaderItemComponent, HerumRadioButtonComponent, HerumRecursiveHierarchyOptionsListComponent, HerumSelectComponent, HerumSharedModule, HerumSharedMongoModule, HerumSliderComponent, HerumSpinnerComponent, HerumStepNavigatorComponent, HerumStepperComponent, HerumStoryViewerComponent, HerumSwitchComponent, HerumTableComponent, HerumTextAreaComponent, HerumTextualVerticalTreeComponent, HerumTimePickerComponent, HerumTimeRangeSelectComponent, HerumTimeSelectComponent, HerumToastsComponent, HerumToggleButtonComponent, HerumToolTipDirective, HerumUploadFileComponent, HerumUploadsManagerComponent, HerumUserProfileComponent, HerumUserProgressComponent, HerumVideoPlayerComponent, HerumVideoRangeBarComponent, HerumVideoSelectComponent, InputCellComponent, InsuranceDialogComponent, KeyPressService, KeyValueListComponent, LabelsWithIconsListComponent, LoaderManagerService, MicroResourcesService, MoleculesModule, MongoUtilsService, NestedConditionSigniture, PipesModule, ProgressesOverViewComponent, QuizGradeSheetComponent, QuizHeaderComponent, QuizIntroComponent, QuizLoaderComponent, QuizMultiAnswerQuestionComponent, QuizOneAnswerQuestionComponent, QuizOpenAnswerQuestionComponent, QuizSubmissionComponent, QuizTwoAnswersQuestionComponent, RecursiveTreeComponent, ResourceDataBuilderService, ResourceSubscriptionToResourcePipe, ResourceToResourceSubscriptionPipe, RoundedVerticalMenuComponent, RowActionButtonsComponent, SYSTEM_AUDIO_VISUAL_CONFIGURATION, SYSTEM_IDENTIFIER, SYSTEM_TRACK_TEXT_CHANGES_SERVICE, SYSTEM_USER_SERVICE, SafeHtmlPipe, SafePipe, SliceBreadcrumbsPipe, StringArrayToSignUpFieldArrayPipe, SvgOnHoverDirective, SwitchCellComponent, SystemStylingService, TableModule, TableRowHeight, TextWithIconCell, TimeFormatPipe, ToIntegerPipe, ToastsService, TrackTextChangesComponent, TrackTextChangesNotesComponent, TrackTextChangesService, UploadsManagerService, UserActionDirective, UserIdentifiedEntitiesToBackendModelsPipe, UserProfileImageComponent, UsersProfilePreviewComponent, UtilsService, activeDragPath, additionTagName, anySubFileTypeWildCard, assignedUserSplittedFields, assignmentMetadata, attributes, audioAndVideoPreviewSupportedMimes, audioAndVideoPreviewSupportedSuffixes, audioPreviewSupportedMimes, audioPreviewSupportedSuffixes, buttonsContainerStyle, calendarActiveColorCssVariable, calendarHoverColorCssVariable, calendarLibraryBodyCellSelector, calendarLibrarySelector, checkboxTypes, closedListExample, collectionFormKeys, collectionFormValues, collectionFormattedAttachments, collectionId, collectionModelInfo, collectionSplittedFields, commentTextStyle, datePlaceHolder, dateRangePlaceHolder, dateRangeTimeRangePlaceHolder, dateRangeTimeRangeWithoutSecondsPlaceHolder, dateTimePlaceHolder, dateTimeWithoutSecondsPlaceHolder, dayInMilliSeconds, defaultAuthorizationObject, defaultCloseTime, defaultGrade, defaultOpenTime, defaultPlaceholder, defaultTrackTextChangesStyle, defaultUploadsManagerTitle, defaultUserId, defaultUsers, deleteButtonStyle, deletionTagName, dialogsCloseActionButtons, dialogsDescriptions, dialogsNotes, dialogsSubmitActionButtons, dialogsTitles, dragPath, editButtonStyle, editorContainerElementId, emptyValueFlagForCreationUniqListItem, errorHeadersToSet, femaleAvatarPath, filesSuffixes, formCollectionNameValidator, formStatuses, formatError, formsErrorMessages, freeTextAnswerField, generalKeys, getMediaDefaultAuthorizations, getMongoMethodsDisplayedNamesMap, getPropertyPathsOfPublishAuthorization, getPublishAuthorization, getQuizDefaultAuthorizations, getResourceDefaultAuthorizations, getSignUpFormFieldsByFields, getSignUpMethod, globalErrorHandlingHeader, groupsModelInfo, herumClosedListMultiSelectType, initialMediaSettings, innerUniqListItemKey, inputs, insuranceDialogPageNavigationData, isUniqueIdValidator, keyboardAsciiCodes, keyboardKeys, maleAvatarPath, maxImageHeight, maxImageWidth, minDateError, minuteInMilliseconds, mockedAssignedUserFields, mockedAssignedUserFormattedAttachments, mockedCollectioDeletedFields, mockedCollectioDeletedFieldsRequest, mockedCollectionFields, mockedCollectionFile, mockedNewFileCollectionRequest, mockedNewGroupFields, mockedNewGroupRequest, mockedUpdatedUserFields, mockedUpdatedUserRequest, mockedUserFields, mouseEnter, mouseEnterHandlerKey, mouseLeave, mouseLeaveHandlerKey, openClose, permissionsTemplatesExample, previewImageKey, radioButtonTypes, readynessDisplayName, regexExpressions, requiredErrorMessage, resourceColumnPrefix, resourceFileTypes, resourceFormKeys, resourceIdPlaceholder, resourceKeys, resourceTypes, resourcesFilesSuffixes, routes, secondInMilliseconds, selfIsTeacherExample, setDynamicElementStyle, sideBarSizeButtonId, signUpFormFields, signUpFormFieldsData, signUpFormKeys, sixMonthsInDays, skipToastHeader, speedOptions, startEndDateError, statusCodes, structHierarchyTreeMaxHeight, structId, structModelInfo, svgsStrings, system, systemStylingFactory, tableRowHeights, testEnvironmentConfig, timePattern, timePlaceHolder, timeWithoutSecondsPlaceHolder, timerActiveColorCssVariable, timerHoverColorCssVariable, timerItemSizeColorCssVariable, timestampError, toastContext, toastStates, toastStatuses, toastsKeys, toastsTemplates, toastsTemplatesKeys, tooltipStyle, types, uploadStatuses, uploadsManagerKeys, uploadsProgressMetadataTypes, userFormattedAttachments, userId, userSplittedFields, usersModelInfo, validateIDNumber, validatorsErrorMessages, validatorsNames, videoPreviewSupportedMimes, videoPreviewSupportedSuffixes, viewPermissionLabel };
18683
+ export { AnswerNotesToTextChangesPipe, AtomsModule, AudioConfigurationConstants, AudioPlayerComponent, AudioSliderComponent, AudioVisualizationService, AuthService, BlockedFormComponent, CheckboxCellComponent, ChipsCellComponent, CollectionSubscriptionToCollectionBasePipe, CollectionToCollectionBasePipe, CollegeAudioConfiguration, CollegeLoaderComponent, CommonGraphqlRequestsService, ConditionalFormControlNameDirective, CopyableCellComponent, DbActionRequestsService, DbActionToastService, DbActionsInnerIdManagerService, DeleteRowComponent, DependentsService, DialogsModule, DirectivesModule, DisplayedSubmissionsCounterPipe, EditRowComponent, EllipsisPipe, ErrorMessageDialogComponent, ErrorsHandlerService, ErrorsModule, FetchedMessageDialog, FetchedMessageModule, FetchedMessageService, GlobalErrorHandler, GlobalKeyboardListenerService, GraphQLService, HadrachaAudioConfiguration, HerumActiveLinkComponent, HerumActiveMenuComponent, HerumAgGridFilterComponent, HerumAutocompleteComponent, HerumBreadcrumbsComponent, HerumButtonComponent, HerumCheckboxComponent, HerumChipComponent, HerumCircularProgressBarComponent, HerumClosedListMultiSelectComponent, HerumClosedListSelectComponent, HerumDatePickerComponent, HerumDateTimeInputComponent, HerumDateTimePickerComponent, HerumDateTimePickerSelectComponent, HerumDownloadFileComponent, HerumDropZoneComponent, HerumEllipsisLoaderComponent, HerumExpendablePanelComponent, HerumFilesViewerComponent, HerumFilesViewerDialogComponent, HerumFormControl, HerumHierarchyTreeComponent, HerumHierarchyTreeNodeComponent, HerumHighlightDirective, HerumIconLabelComponent, HerumIndeterminateComponent, HerumInputFieldComponent, HerumListCentralizerComponent, HerumLoaderComponent, HerumLocalLoaderComponent, HerumLogoComponent, HerumMiniTableComponent, HerumMultiProgressBarComponent, HerumMultiSelectComponent, HerumNarrowCollectionMenuItemComponent, HerumNavigatorComponent, HerumNoResultMessageComponent, HerumOptionsListComponent, HerumPaginatorComponent, HerumPanelLinksComponent, HerumPdfViewerComponent, HerumPresentationViewerComponent, HerumProgressBarComponent, HerumQuizComponent, HerumQuizHeaderItemComponent, HerumRadioButtonComponent, HerumRecursiveHierarchyOptionsListComponent, HerumSelectComponent, HerumSharedModule, HerumSharedMongoModule, HerumSliderComponent, HerumSpinnerComponent, HerumStepNavigatorComponent, HerumStepperComponent, HerumStoryViewerComponent, HerumSwitchComponent, HerumTableComponent, HerumTextAreaComponent, HerumTextualVerticalTreeComponent, HerumTimePickerComponent, HerumTimeRangeSelectComponent, HerumTimeSelectComponent, HerumToastsComponent, HerumToggleButtonComponent, HerumToolTipDirective, HerumUploadFileComponent, HerumUploadsManagerComponent, HerumUserProfileComponent, HerumUserProgressComponent, HerumVideoPlayerComponent, HerumVideoRangeBarComponent, HerumVideoSelectComponent, InputCellComponent, InsuranceDialogComponent, KeyPressService, KeyValueListComponent, LabelsWithIconsListComponent, LoaderManagerService, MicroResourcesService, MoleculesModule, MongoUtilsService, NestedConditionSigniture, PipesModule, ProgressesOverViewComponent, QuizGradeSheetComponent, QuizHeaderComponent, QuizIntroComponent, QuizLoaderComponent, QuizMultiAnswerQuestionComponent, QuizOneAnswerQuestionComponent, QuizOpenAnswerQuestionComponent, QuizSubmissionComponent, QuizTwoAnswersQuestionComponent, RecursiveTreeComponent, ResourceDataBuilderService, ResourceSubscriptionToResourcePipe, ResourceToResourceSubscriptionPipe, RoundedVerticalMenuComponent, RowActionButtonsComponent, SYSTEM_AUDIO_VISUAL_CONFIGURATION, SYSTEM_IDENTIFIER, SYSTEM_TRACK_TEXT_CHANGES_SERVICE, SYSTEM_USER_SERVICE, SafeHtmlPipe, SafePipe, SliceBreadcrumbsPipe, StringArrayToSignUpFieldArrayPipe, SvgOnHoverDirective, SwitchCellComponent, SystemStylingService, TableModule, TableRowHeight, TextWithIconCell, TimeFormatPipe, ToIntegerPipe, ToastsService, TrackTextChangesComponent, TrackTextChangesNotesComponent, TrackTextChangesService, UploadsManagerService, UserActionDirective, UserIdentifiedEntitiesToBackendModelsPipe, UserProfileImageComponent, UsersProfilePreviewComponent, UtilsService, activeDragPath, additionTagName, anySubFileTypeWildCard, assignedUserSplittedFields, assignmentMetadata, attributes, audioAndVideoPreviewSupportedMimes, audioAndVideoPreviewSupportedSuffixes, audioPreviewSupportedMimes, audioPreviewSupportedSuffixes, buttonsContainerStyle, calendarActiveColorCssVariable, calendarHoverColorCssVariable, calendarLibraryBodyCellSelector, calendarLibrarySelector, checkboxTypes, closedListExample, collectionFormKeys, collectionFormValues, collectionFormattedAttachments, collectionId, collectionModelInfo, collectionSplittedFields, commentTextStyle, correctAnswerPropertyPath, datePlaceHolder, dateRangePlaceHolder, dateRangeTimeRangePlaceHolder, dateRangeTimeRangeWithoutSecondsPlaceHolder, dateTimePlaceHolder, dateTimeWithoutSecondsPlaceHolder, dayInMilliSeconds, defaultAuthorizationObject, defaultCloseTime, defaultGrade, defaultOpenTime, defaultPlaceholder, defaultTrackTextChangesStyle, defaultUploadsManagerTitle, defaultUserId, defaultUsers, deleteButtonStyle, deletionTagName, dialogsCloseActionButtons, dialogsDescriptions, dialogsNotes, dialogsSubmitActionButtons, dialogsTitles, dragPath, editButtonStyle, editorContainerElementId, emptyValueFlagForCreationUniqListItem, errorHeadersToSet, femaleAvatarPath, filesSuffixes, formCollectionNameValidator, formStatuses, formatError, formsErrorMessages, freeTextAnswerField, generalKeys, getMediaDefaultAuthorizations, getMongoMethodsDisplayedNamesMap, getPropertyPathsOfPublishAuthorization, getPublishAuthorization, getQuizDefaultAuthorizations, getResourceDefaultAuthorizations, getSignUpFormFieldsByFields, getSignUpMethod, globalErrorHandlingHeader, groupsModelInfo, herumClosedListMultiSelectType, initialMediaSettings, innerUniqListItemKey, inputs, insuranceDialogPageNavigationData, isUniqueIdValidator, keyboardAsciiCodes, keyboardKeys, legacyCorrectAnswerPropertyPath, maleAvatarPath, matchingSourceIndexPropertyPath, maxImageHeight, maxImageWidth, minDateError, minuteInMilliseconds, mockedAssignedUserFields, mockedAssignedUserFormattedAttachments, mockedCollectioDeletedFields, mockedCollectioDeletedFieldsRequest, mockedCollectionFields, mockedCollectionFile, mockedNewFileCollectionRequest, mockedNewGroupFields, mockedNewGroupRequest, mockedUpdatedUserFields, mockedUpdatedUserRequest, mockedUserFields, mouseEnter, mouseEnterHandlerKey, mouseLeave, mouseLeaveHandlerKey, normalizeQuizAuthorizationPropertyPath, openClose, permissionsTemplatesExample, previewImageKey, radioButtonTypes, readynessDisplayName, regexExpressions, requiredErrorMessage, resourceColumnPrefix, resourceFileTypes, resourceFormKeys, resourceIdPlaceholder, resourceKeys, resourceTypes, resourcesFilesSuffixes, routes, secondInMilliseconds, selfIsTeacherExample, setDynamicElementStyle, sideBarSizeButtonId, signUpFormFields, signUpFormFieldsData, signUpFormKeys, sixMonthsInDays, skipToastHeader, speedOptions, startEndDateError, statusCodes, structHierarchyTreeMaxHeight, structId, structModelInfo, svgsStrings, system, systemStylingFactory, tableRowHeights, testEnvironmentConfig, timePattern, timePlaceHolder, timeWithoutSecondsPlaceHolder, timerActiveColorCssVariable, timerHoverColorCssVariable, timerItemSizeColorCssVariable, timestampError, toastContext, toastStates, toastStatuses, toastsKeys, toastsTemplates, toastsTemplatesKeys, tooltipStyle, types, uploadStatuses, uploadsManagerKeys, uploadsProgressMetadataTypes, userFormattedAttachments, userId, userSplittedFields, usersModelInfo, validateIDNumber, validatorsErrorMessages, validatorsNames, videoPreviewSupportedMimes, videoPreviewSupportedSuffixes, viewPermissionLabel };
18659
18684
  //# sourceMappingURL=herum-shared.mjs.map