herum-shared 0.1.39 → 0.1.46

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.
@@ -1 +1 @@
1
- {"version":3,"file":"herum-shared-pipes.mjs","sources":["../../../projects/herum-shared/pipes/answer-notes-to-text-changes.pipe.ts","../../../projects/herum-shared/pipes/collection-subscription-to-collection-base.pipe.ts","../../../projects/herum-shared/pipes/collection-to-collection-base.pipe.ts","../../../projects/herum-shared/pipes/displayed-submissions-counter-pipe.ts","../../../projects/herum-shared/pipes/ellipsis.pipe.ts","../../../projects/herum-shared/pipes/safe.pipe.ts","../../../projects/herum-shared/pipes/safe-html.pipe.ts","../../../projects/herum-shared/pipes/resource-subscription-to-resource.pipe.ts","../../../projects/herum-shared/pipes/resource-to-resource-subscription.pipe.ts","../../../projects/herum-shared/pipes/user-identified-entities-to-backend-models.pipe.ts","../../../projects/herum-shared/pipes/sign-up-fields-to-sign-up-field-config.pipe.ts","../../../projects/herum-shared/pipes/to-integer.pipe.ts","../../../projects/herum-shared/pipes/pipes-module.ts","../../../projects/herum-shared/pipes/index.ts","../../../projects/herum-shared/pipes/herum-shared-pipes.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TextChange } from 'herum-types/TrackTextChanges';\r\nimport { AnswerNote } from 'herum-types/User';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'answerNotesToTextChanges'\r\n})\r\nexport class AnswerNotesToTextChangesPipe implements PipeTransform {\r\n\r\n transform(answerNotes: AnswerNote[]): TextChange[] {\r\n return answerNotes?.map(answerNote =>\r\n ({\r\n type: answerNote.type,\r\n creatingUser: answerNote.creatingUser,\r\n id: answerNote.id,\r\n note: answerNote.note,\r\n timeStamp: answerNote.timeStamp,\r\n startOffset: answerNote.startIndex,\r\n endOffset: answerNote.endIndex,\r\n commentText: answerNote.commentText\r\n })\r\n )\r\n .sort((a, b) => new Date(a.startOffset).getTime() - new Date(b.startOffset).getTime());\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CollectionBase } from 'herum-types/Collection';\r\nimport { CollectionSubscription } from 'herum-types/User';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'collectionSubscriptionToCollectionBase'\r\n})\r\nexport class CollectionSubscriptionToCollectionBasePipe implements PipeTransform {\r\n\r\n transform(collectionSubscription: CollectionSubscription, ...args: unknown[]): CollectionBase {\r\n let collectionBase: CollectionBase = {\r\n ...collectionSubscription.collectionPreview,\r\n resources: collectionSubscription.resourceSubscriptions.map(resourceSubscription => resourceSubscription.resourcePreview),\r\n grade: collectionSubscription.grade,\r\n };\r\n\r\n return collectionBase;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Collection, CollectionBase } from 'herum-types/Collection';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'collectionToCollectionBase'\r\n})\r\nexport class CollectionToCollectionBasePipe implements PipeTransform {\r\n\r\n transform(collection: Collection, ...args: unknown[]): CollectionBase {\r\n let collectionBase: CollectionBase = {\r\n ...collection,\r\n resources: collection.resources.map(resource => resource.resourcePreview)\r\n }\r\n\r\n return collectionBase;\r\n }\r\n\r\n transformMulti(collections: Collection[]): CollectionBase[] {\r\n let collectionsBase: CollectionBase[] = collections.map(collection => this.transform(collection))\r\n return collectionsBase;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { QuizData, Resource } from 'herum-types/Resource';\r\n\r\n@Pipe({\r\n name: 'displayedSubmissionsCounter',\r\n standalone: false\r\n})\r\nexport class DisplayedSubmissionsCounterPipe implements PipeTransform {\r\n\r\n transform(resource: Resource, quizData: QuizData, areAnswersBlocked?: boolean): number {\r\n let submissionsCounter = quizData.submissionsCounter;\r\n\r\n if (!resource.quiz.maxSubmissions)\r\n return ++submissionsCounter;\r\n\r\n if (quizData.isSubmitted || areAnswersBlocked)\r\n return submissionsCounter || ++submissionsCounter;\r\n\r\n return submissionsCounter < resource.quiz.maxSubmissions ? ++submissionsCounter : submissionsCounter;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'ellipsis'\r\n})\r\nexport class EllipsisPipe implements PipeTransform {\r\n transform(value: string, element: HTMLElement, numberOfRows: number = 1): string {\r\n if (!value || !element || numberOfRows < 1)\r\n return '';\r\n\r\n if (!element.clientWidth)\r\n return value;\r\n\r\n const style: CSSStyleDeclaration = window.getComputedStyle(element);\r\n const fontSize: number = parseFloat(style.fontSize);\r\n const fontFamily: string = style.fontFamily;\r\n const availableWidth: number = element.clientWidth - this.getElementWidth(fontSize, fontFamily, '...');\r\n\r\n return numberOfRows > 1 ?\r\n this.handleMultiRows(value, fontSize, fontFamily, numberOfRows, element.clientWidth, availableWidth)\r\n :\r\n this.ellipsis(value, fontSize, fontFamily, availableWidth);\r\n }\r\n\r\n private handleMultiRows(value: string, fontSize: number, fontFamily: string, numberOfRows: number, maxRowWidth: number, availableWidth: number) {\r\n const words: string[] = value.split(' ');\r\n let text: string = '';\r\n let rowWidthCounter: number = 0;\r\n let rowsCounter: number = 1\r\n let isLastRow: boolean = false\r\n\r\n for (let index = 0; index < words.length; index++) {\r\n const word = words[index];\r\n const wordWidth = this.getElementWidth(fontSize, fontFamily, word) + this.getElementWidth(fontSize, fontFamily, ' ');\r\n\r\n if ((rowWidthCounter + wordWidth >= maxRowWidth)) {\r\n rowsCounter = rowsCounter + 1;\r\n rowWidthCounter = 0;\r\n }\r\n\r\n isLastRow = rowsCounter === numberOfRows;\r\n\r\n if ((Math.ceil(rowWidthCounter + wordWidth) < maxRowWidth) && !isLastRow) {\r\n rowWidthCounter += wordWidth;\r\n text += words[index] + ' ';\r\n }\r\n\r\n if (isLastRow && index < words.length) {\r\n const leftText = words.slice(index).join(' ');\r\n text += this.ellipsis(leftText, fontSize, fontFamily, availableWidth);\r\n break;\r\n }\r\n }\r\n return text;\r\n }\r\n\r\n private ellipsis(text: string, fontSize: number, fontFamily: string, availableWidth: number): string {\r\n let totalWidth: number = 0;\r\n let newText: string = '';\r\n\r\n for (let index = 0; index < text.length; index++) {\r\n const char = text[index];\r\n const charWidth = this.getElementWidth(fontSize, fontFamily, char);\r\n\r\n totalWidth += charWidth;\r\n\r\n if (Math.ceil(totalWidth) >= availableWidth)\r\n return newText + '...';\r\n\r\n newText += char;\r\n }\r\n\r\n return newText;\r\n }\r\n\r\n private getElementWidth(fontSize: number, fontFamily: string, element: string): number {\r\n const canvas: HTMLCanvasElement = document.createElement('canvas');\r\n const context: CanvasRenderingContext2D = canvas.getContext('2d');\r\n context.font = `${fontSize}px ${fontFamily}`;\r\n const metrics: TextMetrics = context.measureText(element);\r\n\r\n return metrics.width;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'safe'\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(url) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'safeHtml'\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitized: DomSanitizer) { }\r\n\r\n transform(value: any): any {\r\n return this.sanitized.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ModifiedResource } from 'herum-types/Resource';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'resourceSubscriptionToResource'\r\n})\r\nexport class ResourceSubscriptionToResourcePipe implements PipeTransform {\r\n transform(resourceSubscription: any, ...args: unknown[]): ModifiedResource {\r\n let resource: ModifiedResource = {\r\n positionInCollection: resourceSubscription.positionInCollection,\r\n description: resourceSubscription.resourcePreview.description,\r\n title: resourceSubscription.resourcePreview.title,\r\n resourceType: resourceSubscription.resourcePreview.resourceType,\r\n files: resourceSubscription.resourcePreview.files\r\n };\r\n\r\n return resource;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ModifiedResource } from 'herum-types/Resource';\r\nimport { ResourceSubscription } from 'herum-types/User';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'resourceToResourceSubscription'\r\n})\r\nexport class ResourceToResourceSubscriptionPipe implements PipeTransform {\r\n\r\n transform(resource: ModifiedResource, ...args: unknown[]): ResourceSubscription {\r\n let resourceSubscription: ResourceSubscription = {\r\n subscriptionStatus: 0,\r\n positionInCollection: resource.positionInCollection,\r\n resourcePreview: {\r\n ...resource\r\n }\r\n };\r\n\r\n return resourceSubscription;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { signUpFormKeys } from 'herum-shared/constants';\r\nimport { IdentifiedEntity, SectionListItem, DbListItem } from 'herum-types/Shared';\r\nimport { User } from 'herum-types/User';\r\n\r\nconst userFieldsToValueFormatters = {\r\n [signUpFormKeys.sections]: { valueFormatter: (sections: IdentifiedEntity[]) => identifiedEntityToSectionListItem(sections) },\r\n [signUpFormKeys.sagahs]: { valueFormatter: (sagahs: IdentifiedEntity[]) => identifiedEntityToDbListItem(sagahs) },\r\n [signUpFormKeys.subjectAreas]: { valueFormatter: (subjectAreas: IdentifiedEntity[]) => identifiedEntityToDbListItem(subjectAreas) }\r\n};\r\n\r\nfunction identifiedEntityToDbListItem(items: IdentifiedEntity[]): DbListItem<string>[] {\r\n return items.map(item => ({ id: item.id, value: item.name }));\r\n}\r\n\r\nfunction identifiedEntityToSectionListItem(items: IdentifiedEntity[]): SectionListItem[] {\r\n return items.map(item => ({ id: item.id, section: item.name }));\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'userIdentifiedEntitiesToBackendModels'\r\n})\r\nexport class UserIdentifiedEntitiesToBackendModelsPipe implements PipeTransform {\r\n\r\n transform(user: User) {\r\n Object.keys(userFieldsToValueFormatters).forEach(key => {\r\n if (user[key])\r\n user[key] = userFieldsToValueFormatters[key].valueFormatter(user[key]);\r\n });\r\n\r\n return user;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SignUpField } from 'herum-types/Shared';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'stringArrayToSignUpFieldArray'\r\n})\r\nexport class StringArrayToSignUpFieldArrayPipe implements PipeTransform {\r\n\r\n transform(fields: string[] | null | undefined): SignUpField[] {\r\n if (!Array.isArray(fields)) return [];\r\n\r\n return fields.map((field) => ({\r\n field, \r\n showSeparator: false\r\n }));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'toInteger',\r\n standalone: false\r\n})\r\nexport class ToIntegerPipe implements PipeTransform {\r\n\r\n transform(number: number): number {\r\n return Number.isInteger(number) ? number : Number(number.toFixed(0));\r\n }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { SafePipe } from './safe.pipe';\r\nimport { CollectionSubscriptionToCollectionBasePipe } from './collection-subscription-to-collection-base.pipe';\r\nimport { CollectionToCollectionBasePipe } from './collection-to-collection-base.pipe';\r\nimport { SafeHtmlPipe } from './safe-html.pipe';\r\nimport { ResourceSubscriptionToResourcePipe } from './resource-subscription-to-resource.pipe';\r\nimport { ResourceToResourceSubscriptionPipe } from './resource-to-resource-subscription.pipe';\r\nimport { EllipsisPipe } from './ellipsis.pipe';\r\nimport { UserIdentifiedEntitiesToBackendModelsPipe } from './user-identified-entities-to-backend-models.pipe';\r\nimport { AnswerNotesToTextChangesPipe } from './answer-notes-to-text-changes.pipe';\r\nimport { StringArrayToSignUpFieldArrayPipe } from './sign-up-fields-to-sign-up-field-config.pipe';\r\nimport { ToIntegerPipe } from './to-integer.pipe';\r\nimport { DisplayedSubmissionsCounterPipe } from './displayed-submissions-counter-pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ],\r\n exports: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ],\r\n providers: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ]\r\n})\r\nexport class PipesModule { }","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./answer-notes-to-text-changes.pipe\";\nexport * from \"./collection-subscription-to-collection-base.pipe\";\nexport * from \"./collection-to-collection-base.pipe\";\nexport * from \"./displayed-submissions-counter-pipe\";\nexport * from \"./ellipsis.pipe\";\nexport * from \"./pipes-module\";\nexport * from \"./resource-subscription-to-resource.pipe\";\nexport * from \"./resource-to-resource-subscription.pipe\";\nexport * from \"./safe-html.pipe\";\nexport * from \"./safe.pipe\";\nexport * from \"./sign-up-fields-to-sign-up-field-config.pipe\";\nexport * from \"./to-integer.pipe\";\nexport * from \"./user-identified-entities-to-backend-models.pipe\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"herum-shared-pipes.mjs","sources":["../../../projects/herum-shared/pipes/answer-notes-to-text-changes.pipe.ts","../../../projects/herum-shared/pipes/collection-subscription-to-collection-base.pipe.ts","../../../projects/herum-shared/pipes/collection-to-collection-base.pipe.ts","../../../projects/herum-shared/pipes/displayed-submissions-counter-pipe.ts","../../../projects/herum-shared/pipes/ellipsis.pipe.ts","../../../projects/herum-shared/pipes/safe.pipe.ts","../../../projects/herum-shared/pipes/safe-html.pipe.ts","../../../projects/herum-shared/pipes/resource-subscription-to-resource.pipe.ts","../../../projects/herum-shared/pipes/resource-to-resource-subscription.pipe.ts","../../../projects/herum-shared/pipes/user-identified-entities-to-backend-models.pipe.ts","../../../projects/herum-shared/pipes/sign-up-fields-to-sign-up-field-config.pipe.ts","../../../projects/herum-shared/pipes/to-integer.pipe.ts","../../../projects/herum-shared/pipes/pipes-module.ts","../../../projects/herum-shared/pipes/index.ts","../../../projects/herum-shared/pipes/herum-shared-pipes.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TextChange } from 'herum-types/TrackTextChanges';\r\nimport { AnswerNote } from 'herum-types/User';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'answerNotesToTextChanges'\r\n})\r\nexport class AnswerNotesToTextChangesPipe implements PipeTransform {\r\n\r\n transform(answerNotes: AnswerNote[]): TextChange[] {\r\n return answerNotes?.map(answerNote =>\r\n ({\r\n type: answerNote.type,\r\n creatingUser: answerNote.creatingUser,\r\n id: answerNote.id,\r\n note: answerNote.note,\r\n timeStamp: answerNote.timeStamp,\r\n startOffset: answerNote.startIndex,\r\n endOffset: answerNote.endIndex,\r\n commentText: answerNote.commentText\r\n })\r\n )\r\n .sort((a, b) => new Date(a.startOffset).getTime() - new Date(b.startOffset).getTime());\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CollectionBase } from 'herum-types/Collection';\r\nimport { CollectionSubscription } from 'herum-types/User';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'collectionSubscriptionToCollectionBase'\r\n})\r\nexport class CollectionSubscriptionToCollectionBasePipe implements PipeTransform {\r\n\r\n transform(collectionSubscription: CollectionSubscription, ...args: unknown[]): CollectionBase {\r\n let collectionBase: CollectionBase = {\r\n ...collectionSubscription.collectionPreview,\r\n resources: collectionSubscription.resourceSubscriptions.map(resourceSubscription => resourceSubscription.resourcePreview),\r\n grade: collectionSubscription.grade,\r\n };\r\n\r\n return collectionBase;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Collection, CollectionBase } from 'herum-types/Collection';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'collectionToCollectionBase'\r\n})\r\nexport class CollectionToCollectionBasePipe implements PipeTransform {\r\n\r\n transform(collection: Collection, ...args: unknown[]): CollectionBase {\r\n let collectionBase: CollectionBase = {\r\n ...collection,\r\n resources: collection.resources.map(resource => resource.resourcePreview)\r\n }\r\n\r\n return collectionBase;\r\n }\r\n\r\n transformMulti(collections: Collection[]): CollectionBase[] {\r\n let collectionsBase: CollectionBase[] = collections.map(collection => this.transform(collection))\r\n return collectionsBase;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { QuizData, Resource } from 'herum-types/Resource';\r\n\r\n@Pipe({\r\n name: 'displayedSubmissionsCounter',\r\n standalone: false\r\n})\r\nexport class DisplayedSubmissionsCounterPipe implements PipeTransform {\r\n\r\n transform(resource: Resource, quizData: QuizData, areAnswersBlocked?: boolean): number {\r\n let submissionsCounter = quizData.submissionsCounter;\r\n\r\n if (!resource.quiz.maxSubmissions)\r\n return ++submissionsCounter;\r\n\r\n if (quizData.isSubmitted || areAnswersBlocked)\r\n return submissionsCounter || ++submissionsCounter;\r\n\r\n return submissionsCounter < resource.quiz.maxSubmissions ? ++submissionsCounter : submissionsCounter;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'ellipsis'\r\n})\r\nexport class EllipsisPipe implements PipeTransform {\r\n transform(value: string, element: HTMLElement, numberOfRows: number = 1): string {\r\n if (!value || !element || numberOfRows < 1)\r\n return '';\r\n\r\n if (!element.clientWidth)\r\n return value;\r\n\r\n const style: CSSStyleDeclaration = window.getComputedStyle(element);\r\n const fontSize: number = parseFloat(style.fontSize);\r\n const fontFamily: string = style.fontFamily;\r\n const availableWidth: number = element.clientWidth - this.getElementWidth(fontSize, fontFamily, '...');\r\n\r\n return numberOfRows > 1 ?\r\n this.handleMultiRows(value, fontSize, fontFamily, numberOfRows, element.clientWidth, availableWidth)\r\n :\r\n this.ellipsis(value, fontSize, fontFamily, availableWidth);\r\n }\r\n\r\n private handleMultiRows(value: string, fontSize: number, fontFamily: string, numberOfRows: number, maxRowWidth: number, availableWidth: number) {\r\n const words: string[] = value.split(' ');\r\n let text: string = '';\r\n let rowWidthCounter: number = 0;\r\n let rowsCounter: number = 1\r\n let isLastRow: boolean = false\r\n\r\n for (let index = 0; index < words.length; index++) {\r\n const word = words[index];\r\n const wordWidth = this.getElementWidth(fontSize, fontFamily, word) + this.getElementWidth(fontSize, fontFamily, ' ');\r\n\r\n if ((rowWidthCounter + wordWidth >= maxRowWidth)) {\r\n rowsCounter = rowsCounter + 1;\r\n rowWidthCounter = 0;\r\n }\r\n\r\n isLastRow = rowsCounter === numberOfRows;\r\n\r\n if ((Math.ceil(rowWidthCounter + wordWidth) < maxRowWidth) && !isLastRow) {\r\n rowWidthCounter += wordWidth;\r\n text += words[index] + ' ';\r\n }\r\n\r\n if (isLastRow && index < words.length) {\r\n const leftText = words.slice(index).join(' ');\r\n text += this.ellipsis(leftText, fontSize, fontFamily, availableWidth);\r\n break;\r\n }\r\n }\r\n return text;\r\n }\r\n\r\n private ellipsis(text: string, fontSize: number, fontFamily: string, availableWidth: number): string {\r\n let totalWidth: number = 0;\r\n let newText: string = '';\r\n\r\n for (let index = 0; index < text.length; index++) {\r\n const char = text[index];\r\n const charWidth = this.getElementWidth(fontSize, fontFamily, char);\r\n\r\n totalWidth += charWidth;\r\n\r\n if (Math.ceil(totalWidth) >= availableWidth)\r\n return newText + '...';\r\n\r\n newText += char;\r\n }\r\n\r\n return newText;\r\n }\r\n\r\n private getElementWidth(fontSize: number, fontFamily: string, element: string): number {\r\n const canvas: HTMLCanvasElement = document.createElement('canvas');\r\n const context: CanvasRenderingContext2D = canvas.getContext('2d');\r\n context.font = `${fontSize}px ${fontFamily}`;\r\n const metrics: TextMetrics = context.measureText(element);\r\n\r\n return metrics.width;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'safe'\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(url) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'safeHtml'\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitized: DomSanitizer) { }\r\n\r\n transform(value: any): any {\r\n return this.sanitized.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ModifiedResource } from 'herum-types/Resource';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'resourceSubscriptionToResource'\r\n})\r\nexport class ResourceSubscriptionToResourcePipe implements PipeTransform {\r\n transform(resourceSubscription: any, ...args: unknown[]): ModifiedResource {\r\n let resource: ModifiedResource = {\r\n positionInCollection: resourceSubscription.positionInCollection,\r\n description: resourceSubscription.resourcePreview.description,\r\n title: resourceSubscription.resourcePreview.title,\r\n resourceType: resourceSubscription.resourcePreview.resourceType,\r\n files: resourceSubscription.resourcePreview.files\r\n };\r\n\r\n return resource;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ModifiedResource } from 'herum-types/Resource';\r\nimport { ResourceSubscription } from 'herum-types/User';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'resourceToResourceSubscription'\r\n})\r\nexport class ResourceToResourceSubscriptionPipe implements PipeTransform {\r\n\r\n transform(resource: ModifiedResource, ...args: unknown[]): ResourceSubscription {\r\n let resourceSubscription: ResourceSubscription = {\r\n subscriptionStatus: 0,\r\n positionInCollection: resource.positionInCollection,\r\n resourcePreview: {\r\n ...resource\r\n }\r\n };\r\n\r\n return resourceSubscription;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { signUpFormKeys } from 'herum-shared/constants';\r\nimport { IdentifiedEntity, SectionListItem, DbListItem } from 'herum-types/Shared';\r\nimport { User } from 'herum-types/User';\r\n\r\nconst userFieldsToValueFormatters = {\r\n [signUpFormKeys.sections]: { valueFormatter: (sections: IdentifiedEntity[]) => identifiedEntityToSectionListItem(sections) },\r\n [signUpFormKeys.sagahs]: { valueFormatter: (sagahs: IdentifiedEntity[]) => identifiedEntityToDbListItem(sagahs) },\r\n [signUpFormKeys.subjectAreas]: { valueFormatter: (subjectAreas: IdentifiedEntity[]) => identifiedEntityToDbListItem(subjectAreas) }\r\n};\r\n\r\nfunction identifiedEntityToDbListItem(items: IdentifiedEntity[]): DbListItem<string>[] {\r\n return items.map(item => ({ id: item.id, value: item.name }));\r\n}\r\n\r\nfunction identifiedEntityToSectionListItem(items: IdentifiedEntity[]): SectionListItem[] {\r\n return items.map(item => ({ id: item.id, section: item.name }));\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'userIdentifiedEntitiesToBackendModels'\r\n})\r\nexport class UserIdentifiedEntitiesToBackendModelsPipe implements PipeTransform {\r\n\r\n transform(user: User) {\r\n Object.keys(userFieldsToValueFormatters).forEach(key => {\r\n if (user[key])\r\n user[key] = userFieldsToValueFormatters[key].valueFormatter(user[key]);\r\n });\r\n\r\n return user;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SignUpField } from 'herum-types/Shared';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'stringArrayToSignUpFieldArray'\r\n})\r\nexport class StringArrayToSignUpFieldArrayPipe implements PipeTransform {\r\n\r\n transform(fields: string[] | null | undefined): SignUpField[] {\r\n if (!Array.isArray(fields)) return [];\r\n\r\n return fields.map((field) => ({\r\n field, \r\n showSeparator: false\r\n }));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'toInteger',\r\n standalone: false\r\n})\r\nexport class ToIntegerPipe implements PipeTransform {\r\n\r\n transform(number: number): number {\r\n return Number.isInteger(number) ? number : Number(number.toFixed(0));\r\n }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { SafePipe } from './safe.pipe';\r\nimport { CollectionSubscriptionToCollectionBasePipe } from './collection-subscription-to-collection-base.pipe';\r\nimport { CollectionToCollectionBasePipe } from './collection-to-collection-base.pipe';\r\nimport { SafeHtmlPipe } from './safe-html.pipe';\r\nimport { ResourceSubscriptionToResourcePipe } from './resource-subscription-to-resource.pipe';\r\nimport { ResourceToResourceSubscriptionPipe } from './resource-to-resource-subscription.pipe';\r\nimport { EllipsisPipe } from './ellipsis.pipe';\r\nimport { UserIdentifiedEntitiesToBackendModelsPipe } from './user-identified-entities-to-backend-models.pipe';\r\nimport { AnswerNotesToTextChangesPipe } from './answer-notes-to-text-changes.pipe';\r\nimport { StringArrayToSignUpFieldArrayPipe } from './sign-up-fields-to-sign-up-field-config.pipe';\r\nimport { ToIntegerPipe } from './to-integer.pipe';\r\nimport { DisplayedSubmissionsCounterPipe } from './displayed-submissions-counter-pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ],\r\n exports: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ],\r\n providers: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ]\r\n})\r\nexport class PipesModule { }","/**\r\n * @file Automatically generated by barrelsby.\r\n */\r\n\r\nexport * from \"./answer-notes-to-text-changes.pipe\";\r\nexport * from \"./collection-subscription-to-collection-base.pipe\";\r\nexport * from \"./collection-to-collection-base.pipe\";\r\nexport * from \"./displayed-submissions-counter-pipe\";\r\nexport * from \"./ellipsis.pipe\";\r\nexport * from \"./pipes-module\";\r\nexport * from \"./resource-subscription-to-resource.pipe\";\r\nexport * from \"./resource-to-resource-subscription.pipe\";\r\nexport * from \"./safe-html.pipe\";\r\nexport * from \"./safe.pipe\";\r\nexport * from \"./sign-up-fields-to-sign-up-field-config.pipe\";\r\nexport * from \"./to-integer.pipe\";\r\nexport * from \"./user-identified-entities-to-backend-models.pipe\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"herum-shared-services.mjs","sources":["../../../projects/herum-shared/services/graph-ql.service.ts","../../../projects/herum-shared/services/auth.service.ts","../../../projects/herum-shared/services/common-graphql-requests.service.ts","../../../projects/herum-shared/services/db-actions-inner-id-manager.service.ts","../../../projects/herum-shared/services/global-error-handler.ts","../../../projects/herum-shared/services/global-keyboard-listener.service.ts","../../../projects/herum-shared/services/key-press.service.ts","../../../projects/herum-shared/services/loader-manager.service.ts","../../../projects/herum-shared/services/micro-resources.service.ts","../../../projects/herum-shared/services/utils.service.ts","../../../projects/herum-shared/services/resource-data-builder.service.ts","../../../projects/herum-shared/services/system-styling.service.ts","../../../projects/herum-shared/services/toasts.service.ts","../../../projects/herum-shared/services/track-text-changes.service.ts","../../../projects/herum-shared/services/index.ts","../../../projects/herum-shared/services/herum-shared-services.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\nimport { GQLVariable, GraphQLFilter, GraphQlOffsetPaging, GraphQLOrder, GraphQlQuery, GraphQlResult } from 'herum-types/GraphQL';\r\n\r\nimport { regexExpressions } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\nexport const NestedConditionSigniture = \"filters\";\r\n\r\nconst defaultPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage, startCursor, endCursor }\";\r\nconst offsetPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage }\";\r\n\r\nconst DefaultQueryName = \"DefaultQueryName\"\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GraphQLService {\r\n\r\n constructor(private httpClient: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n executeQuery(gqlQuery: GraphQlQuery, isListQuery: boolean = true, isOffsetPagination: boolean = false): Observable<any> {\r\n let variablesObjectForBody: Record<string, string>;\r\n let variablesStringForQuerySignature: string;\r\n\r\n if (gqlQuery.variables) {\r\n variablesObjectForBody = this.generateVariablesObjectForBody(gqlQuery.variables);\r\n variablesStringForQuerySignature = this.generateVariablesStringForQuerySigniture(gqlQuery.variables, gqlQuery.queryName);\r\n }\r\n\r\n const query = this.generateQuery(\r\n gqlQuery.resolverName,\r\n gqlQuery.formatExample,\r\n gqlQuery.filters,\r\n gqlQuery.paging?.first,\r\n gqlQuery.paging?.after,\r\n gqlQuery.offsetPaging,\r\n gqlQuery.variables?.length > 0 ? variablesStringForQuerySignature : '',\r\n gqlQuery.order,\r\n gqlQuery.conditionPaths,\r\n gqlQuery.orderPaths,\r\n gqlQuery.offsetPagingPaths,\r\n isListQuery,\r\n isOffsetPagination,\r\n gqlQuery.useTotalCount\r\n ).replace(regexExpressions.curlyBraces, '');\r\n\r\n return this.httpClient.post<GraphQlResult>(\r\n this.environmentConfig?.graphQLConfiguration.serverBasePath,\r\n { query: query, variables: variablesObjectForBody }, { headers: gqlQuery.headers })\r\n .pipe(shareReplay(1), map(res => {\r\n return res.data ? res.data[gqlQuery.resolverName] : null\r\n }));\r\n }\r\n\r\n getFreeTextCondition(freeText: string, orConditionKeys: string[]) {\r\n let filters = {\r\n and: []\r\n }\r\n\r\n freeText.split(\" \").forEach(substring => {\r\n let orIteration = []\r\n orConditionKeys.forEach(orConditionKey => {\r\n orIteration.push({\r\n [orConditionKey]: { contains: substring }\r\n })\r\n })\r\n\r\n filters.and.push({ or: orIteration });\r\n })\r\n\r\n return filters;\r\n }\r\n\r\n generateFilterStringDynamically(ids: string[], key: string, type: ('String' | 'Number')) {\r\n let filters = [];\r\n let variables: GQLVariable[] = [];\r\n\r\n ids.forEach((id, index) => {\r\n let newFilter = {}\r\n newFilter[key] = {\r\n eq: '$' + key + index\r\n };\r\n filters.push(newFilter);\r\n variables.push({\r\n name: key + index,\r\n value: id,\r\n type\r\n });\r\n });\r\n return { filters, variables };\r\n }\r\n\r\n convertToResolverNameFormat(mongoCollectionName: string) {\r\n return mongoCollectionName.charAt(0).toLowerCase() + mongoCollectionName.slice(1);\r\n }\r\n generateQuery(resolverName: string, formatExample: any, condition?: GraphQLFilter, first?: number, after?: string, offsetPaging?: GraphQlOffsetPaging, variablesStringForQuerySigniture?: string, order?: GraphQLOrder, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?: { [path: string]: GraphQlOffsetPaging }, isListQuery?: boolean, isOffsetPagination?: boolean, useTotalCount?: boolean) {\r\n const conditionString = this.generateConditionString(condition);\r\n const returnFormat = this.getKeysString(formatExample, conditionPaths, orderPaths, offsetPagingPaths);\r\n\r\n let orderString = order ? `order:${this.generateOrderString(order)},` : '';\r\n\r\n let pagingString = '';\r\n\r\n if (isListQuery) {\r\n pagingString = isOffsetPagination\r\n ? (offsetPaging?.skip > -1 || offsetPaging?.take > -1 ? this.generateOffsetPagingString(offsetPaging) : '')\r\n : (first || after ? this.generatePagingString(first, after) : '');\r\n }\r\n\r\n if (after) pagingString += ','\r\n\r\n const resolverParameters = (orderString + pagingString + conditionString) == '' ? '' : '(' + orderString + pagingString + conditionString + ')';\r\n\r\n if (pagingString != '') pagingString += ',';\r\n\r\n const elementsName = isOffsetPagination ? 'items' : 'nodes';\r\n\r\n const query = `query ${variablesStringForQuerySigniture ? variablesStringForQuerySigniture : ''} { \r\n ${resolverName + resolverParameters} { ${isListQuery ? (isOffsetPagination ? offsetPagingDataFormat : defaultPagingDataFormat) + `,${useTotalCount ? 'totalCount ,' : ''} ${elementsName} {` : ''} ${returnFormat} } ${isListQuery ? '}' : ''} }`\r\n return query;\r\n }\r\n\r\n private generateConditionString(condition?: GraphQLFilter, isRecursiveCall: boolean = false): string {\r\n let conditionString = \"\";\r\n\r\n if (!condition || (!condition.and || condition.and?.length == 0) && (!condition.or || condition.or?.length == 0))\r\n return conditionString;\r\n\r\n if (condition) {\r\n conditionString = isRecursiveCall ? \"\" : \"where: {\";\r\n if (condition?.and) {\r\n let andString = \"\"\r\n\r\n condition.and.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n andString += `{${this.generateConditionString(filter, true)}},` :\r\n andString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n andString = andString.slice(0, -1);\r\n conditionString += `and: [${andString}]`;\r\n conditionString += condition.or ? ',' : '';\r\n }\r\n\r\n if (condition?.or) {\r\n let orString = \"\"\r\n\r\n condition.or.forEach(filter => orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`)\r\n condition.or.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n orString += `{${this.generateConditionString(filter, true)}},` :\r\n orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n orString = orString.slice(0, -1);\r\n conditionString += `or: [${orString} ]`;\r\n }\r\n\r\n conditionString += isRecursiveCall ? \"\" : \"}\";\r\n }\r\n\r\n return conditionString;\r\n }\r\n\r\n private generatePagingString(first?: number, after?: string) {\r\n let result = ''\r\n\r\n result += first ? `first:${first},` : '';\r\n result += after ? ` after:\"${after}\"` : '';\r\n\r\n return result;\r\n }\r\n\r\n private generateOffsetPagingString(offsetPaging: GraphQlOffsetPaging) {\r\n const { skip, take } = offsetPaging;\r\n\r\n let result = ''\r\n\r\n result += skip > -1 ? `skip:${skip},` : '';\r\n result += take > -1 ? ` take:${take}, ` : '';\r\n\r\n return result;\r\n }\r\n private getKeysString(obj, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?, parentKey = null, isConditionString = false): string {\r\n let result = '';\r\n\r\n for (const key in obj) {\r\n result += `${key}`;\r\n\r\n if (((conditionPaths && conditionPaths[key]) || (orderPaths && orderPaths[key])) && !isConditionString) {\r\n result += '(';\r\n if (conditionPaths && conditionPaths[key]) result += this.generateConditionString(conditionPaths[key])\r\n if (orderPaths && orderPaths[key]) result += this.getKeysString(orderPaths[key], null, null, null, null, true)\r\n if (offsetPagingPaths && offsetPagingPaths[key]) result += (offsetPagingPaths[key].skip > -1 || offsetPagingPaths[key].take > -1) ? `,${this.generateOffsetPagingString(offsetPagingPaths[key])}` : ''\r\n result += `)`;\r\n }\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '{items';\r\n\r\n if (obj[key]?.length > 0 && !isConditionString && obj[key] !== null && typeof obj[key] !== 'string') {\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key][0], conditionPaths, orderPaths, key, isConditionString)} }`;\r\n }\r\n\r\n else if (typeof obj[key] === 'object' && obj[key] !== null && typeof obj[key] !== 'string')\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, parentKey + '.' + key, isConditionString)} }`;\r\n\r\n else if (typeof obj[key] === 'string' && obj[key] !== null && isConditionString)\r\n result += (obj[key][0] == '$' || obj[key].includes('ASC') || obj[key].includes('DESC')) ? `: ${obj[key]}` : `: \"${obj[key]}\"`;\r\n\r\n else if (typeof obj[key] === 'number' && obj[key] !== null && isConditionString)\r\n result += `: ${JSON.stringify(obj[key])}`;\r\n\r\n else if (typeof obj[key] === 'boolean' && obj[key] !== null && isConditionString)\r\n result += `: ${obj[key]}`;\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '}';\r\n\r\n result += ', ';\r\n }\r\n\r\n return result.slice(0, -2);\r\n }\r\n\r\n private generateVariablesObjectForBody(variables: GQLVariable[]) {\r\n return variables.reduce((acc, obj) => {\r\n acc[obj.name] = obj.value;\r\n return acc;\r\n }, {} as Record<string, string>);\r\n }\r\n\r\n private generateVariablesStringForQuerySigniture(variables: GQLVariable[], queryName: string) {\r\n if (!queryName) queryName = DefaultQueryName;\r\n\r\n let result = (queryName ? queryName : DefaultQueryName) + '(';\r\n\r\n variables.forEach(variable => {\r\n result += \"$\" + variable.name + \":\" + variable.type + \",\";\r\n })\r\n result = result.slice(0, -1) + \")\";\r\n\r\n return result;\r\n }\r\n\r\n generateOrderString<T extends {}>(order: T) {\r\n let orderString = '{';\r\n\r\n Object.keys(order).forEach((key, index, keys) => {\r\n orderString += typeof order[key] === 'object' ?\r\n `${key}:${this.generateOrderString(order[key])}` :\r\n `${key}:${order[key]}`;\r\n\r\n if (index < keys.length - 1)\r\n orderString += ',';\r\n }\r\n );\r\n\r\n return orderString + '}';\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { SignUpFormData, SignInFormData } from 'herum-types/Shared'\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { StorageService } from 'herum-shared/static-services';\r\nimport { Router } from '@angular/router';\r\nimport { selfIsTeacherExample } from 'herum-shared/objectsExample';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { AuthenticationResponse, BackendLoginFormat } from 'herum-types/Auth';\r\nimport { SecurityQuestion } from 'herum-types/User';\r\nimport { toHash } from 'herum-shared/utils';\r\n\r\nconst AuthStorageKey = 'AUTH_SESSION_ID';\r\nconst headers = new HttpHeaders({ 'Content-Type': 'application/json' })\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n sessionId$: BehaviorSubject<string> = new BehaviorSubject('');\r\n isTeacher$: Subject<boolean> = new Subject();\r\n\r\n constructor(private http: HttpClient, private router: Router,\r\n private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n let sessionId = StorageService.getItem(AuthStorageKey);\r\n\r\n if (!sessionId)\r\n return;\r\n\r\n this.sessionId$.next(sessionId);\r\n }\r\n\r\n tryLogin(signInFormData: SignInFormData): Observable<AuthenticationResponse> {\r\n const personalId = signInFormData.personalId;\r\n\r\n let loginFormat: BackendLoginFormat = {\r\n identifier: personalId,\r\n hash: toHash(this.generateStringForAuthenticationHash(personalId, signInFormData.militaryId))\r\n };\r\n\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.tryLogin, loginFormat)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)))\r\n }\r\n\r\n getUserIdentificationQuestions(personalId: string) {\r\n return this.http.get(this.environmentConfig?.environment?.siteServerPath + `/Authentication/SecurityQuestions/${personalId}`);\r\n }\r\n\r\n signUp(signUpData: SignUpFormData): Observable<AuthenticationResponse> {\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.signUp, signUpData)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)));\r\n }\r\n\r\n logout() {\r\n this.clearSession()\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n clearSession() {\r\n StorageService.deleteAll();\r\n this.sessionId$.next('');\r\n }\r\n\r\n isValidSessionId(sessionId: string): Observable<boolean> {\r\n let jSessionId = JSON.stringify(sessionId ?? '');\r\n return this.http.post<boolean>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.isValidSessionId, jSessionId, { headers: headers });\r\n }\r\n\r\n isTeacher(): Observable<boolean> {\r\n let userQuery = {\r\n resolverName: 'self',\r\n formatExample: selfIsTeacherExample,\r\n conditionPaths: { collegeStudyingLessons: { and: [{ lesson: { isDeleted: { eq: false } } }] } }\r\n };\r\n\r\n return this.gql.executeQuery(userQuery, false).pipe(map(user => {\r\n const isTeacher = !(!user.collegeTeacherAssignments || user.collegeTeacherAssignments.length == 0) ||\r\n !(!user.collegeTeachingLessons || user.collegeTeachingLessons.length == 0) ||\r\n !(!user.collegeCheckingLessons || user.collegeCheckingLessons.length == 0) || user.isAdmin == true;\r\n\r\n this.isTeacher$.next(isTeacher);\r\n return isTeacher;\r\n }))\r\n }\r\n\r\n setIdentificationQuestions(password: string, questions: { question: string, answer: string }[]) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/UpdateLoginData', {\r\n password,\r\n securityQuestions: questions.map(question => ({ ...question, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n resetPassword(securityQuestions: SecurityQuestion[], personalId: string, newPassword: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/ResetPassword', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) })),\r\n newPassword: newPassword\r\n })\r\n }\r\n\r\n securityCheck(securityQuestions: SecurityQuestion[], personalId: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/SecurityCheck', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n handleNewSessionId(authenticationResponse: AuthenticationResponse): AuthenticationResponse {\r\n if (authenticationResponse.sessionId?.length > 0)\r\n this.updateSessionId(authenticationResponse.sessionId);\r\n\r\n return authenticationResponse;\r\n }\r\n\r\n private updateSessionId(newValue: string) {\r\n this.sessionId$.next(newValue);\r\n StorageService.setItem(AuthStorageKey, newValue);\r\n }\r\n\r\n private generateStringForAuthenticationHash(personalId: string, militaryId: string) {\r\n return personalId + militaryId;\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { permissionsTemplatesExample, closedListExample } from 'herum-shared/objectsExample';\r\nimport { User } from 'herum-types/User';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { generalKeys } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { Group } from 'herum-types/Group';\r\nimport { GraphQlQuery } from 'herum-types/GraphQL';\r\nimport { ClosedList } from 'herum-types/Shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonGraphqlRequestsService {\r\n\r\n constructor(private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getGroupsByIds(ids: string[], formatExample: Group): Observable<Group[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(ids, 'id', 'String');\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Groups),\r\n formatExample: formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n }\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlGroups => gqlGroups?.nodes));\r\n }\r\n\r\n getClosedLists(names?: string[]): Observable<ClosedList[] | ClosedList> {\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.ClosedLists),\r\n formatExample: closedListExample,\r\n filters: { and: [{ isDeleted: { eq: false } }] },\r\n variables: []\r\n };\r\n\r\n names?.forEach((name, i) => {\r\n if (query.filters.or)\r\n query.filters.or.push({\r\n name: {\r\n eq: '$name' + i\r\n },\r\n });\r\n else\r\n query.filters.or = [{\r\n name: {\r\n eq: '$name' + i\r\n },\r\n }];\r\n\r\n query.variables.push({\r\n name: 'name' + i,\r\n value: name,\r\n type: 'String'\r\n });\r\n });\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResult => gqlResult.nodes));\r\n }\r\n\r\n getUsersByIds(usersIds: string[], formatExample: User): Observable<User[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(usersIds, generalKeys.id, 'String');\r\n\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Users),\r\n formatExample: formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n };\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse?.nodes));\r\n }\r\n\r\n getPermissionsTemplates() {\r\n let query: GraphQlQuery = {\r\n resolverName: 'permissionsTemplates',\r\n formatExample: permissionsTemplatesExample,\r\n }\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse.nodes))\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { generalKeys } from 'herum-shared/constants';\r\n\r\nexport const innerUniqListItemKey = '_id';\r\nexport const emptyValueFlagForCreationUniqListItem = 'null';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DbActionsInnerIdManagerService {\r\n\r\n determineIfInnerIdIsNeeded(value: any[]) {\r\n if (!Array.isArray(value))\r\n return;\r\n\r\n if (value[0][innerUniqListItemKey])\r\n value[0].id = value[0][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ? null : value[0][innerUniqListItemKey];\r\n }\r\n\r\n deleteInnerIdFieldIfExist(itemToAttach: { [key: string]: any }, itemValue: { [key: string]: any }) {\r\n if (itemValue.hasOwnProperty(innerUniqListItemKey)) {\r\n itemToAttach[Object.keys(itemToAttach)[0]][generalKeys.id] =\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ?\r\n null :\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n\r\n delete itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n }\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\nimport { ErrorHandler, Inject, Injectable } from \"@angular/core\";\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from \"herum-shared/environment\";\n\nconst oneSecondInMilliseconds: number = 1000;\n\n@Injectable()\nexport class GlobalErrorHandler implements ErrorHandler {\n\n private lastErrorKey: string = '';\n private lastErrorAt: number = 0;\n\n constructor(private http: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\n\n handleError(error: Error): void {\n const currentKey: string = error?.message;\n const now: number = Date.now();\n\n if (currentKey == this.lastErrorKey && (now - this.lastErrorAt) < oneSecondInMilliseconds) return;\n this.lastErrorAt = now;\n this.lastErrorKey = currentKey;\n\n console.error(error);\n\n this.http.post(this.environmentConfig?.environment?.userAction, {\n system: this.environmentConfig?.environment?.systemIdentifier,\n level: \"Error\",\n application: \"CLIENT ERROR\",\n message: error.message,\n stack: error.stack,\n }).subscribe();\n }\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { GlobalKeyboardEvent } from 'herum-types/Shared';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalKeyboardListenerService {\r\n\r\n globalKeyboardEvents$: Subject<GlobalKeyboardEvent> = new Subject<GlobalKeyboardEvent>();\r\n connection: WebSocket;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n this.initGlobalSocket();\r\n }\r\n\r\n initGlobalSocket() {\r\n if (this.connection) return;\r\n\r\n this.connection = new WebSocket(this.environmentConfig?.environment?.keyboardEventsLocalSocketPath);\r\n this.connection.onmessage = (webSocketMessage) => {\r\n const event: GlobalKeyboardEvent = JSON.parse(webSocketMessage.data);\r\n if (event.state == 'UP')\r\n this.globalKeyboardEvents$.next(event)\r\n }\r\n }\r\n\r\n get globalKeysToChromeKeysNames() {\r\n return {\r\n 'NUMPAD 0': 'Insert',\r\n 'NUMPAD 1': 'End',\r\n 'NUMPAD 2': 'ArrowDown',\r\n 'NUMPAD 3': 'PageDown',\r\n 'NUMPAD 4': 'ArrowLeft',\r\n 'NUMPAD 5': 'Clear',\r\n 'NUMPAD 6': 'ArrowRight',\r\n 'NUMPAD 7': 'Home',\r\n 'NUMPAD 8': '',\r\n 'NUMPAD 9': 'PageUp',\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { attributes } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class KeyPressService {\r\n\r\n shouldPreventMacroKeyPress(event: KeyboardEvent, macroKeysPress: number[]) {\r\n const eventTarget = event.target as HTMLInputElement;\r\n const targetMacroKeys = eventTarget.getAttribute(attributes.preventMacroKeysPressEvent)?.split(\",\").map(Number);\r\n const targetHasPreventMacroKeyPress = targetMacroKeys?.some(targetMacroKey => macroKeysPress.includes(targetMacroKey));\r\n\r\n return targetHasPreventMacroKeyPress || eventTarget.hasAttribute(attributes.contenteditable);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderManagerService {\r\n\r\n loadersIds: string[] = [];\r\n loadingDescription: string = '';\r\n\r\n addLoader(loaderId: string, description?: string) {\r\n this.loadersIds.push(loaderId);\r\n this.loadingDescription = description;\r\n }\r\n\r\n changeDescription(description: string) {\r\n this.loadingDescription = description;\r\n }\r\n\r\n clear() {\r\n this.loadersIds = [];\r\n this.loadingDescription = '';\r\n }\r\n\r\n removeLoaderId(loaderIdToRemove: string) {\r\n let indexToRemove = this.loadersIds.findIndex(loaderId => loaderId == loaderIdToRemove);\r\n\r\n if (indexToRemove != -1)\r\n this.loadersIds.splice(indexToRemove, 1);\r\n }\r\n\r\n get isFullScreenLoading() {\r\n return this.loadersIds.length > 0\r\n };\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { tap } from 'rxjs/operators';\r\nimport {\r\n Lesson, LessonResourceSubscription, LessonStudentSubscription,\r\n BackendMicroResourceAuthorization, MicroResourceAuthorizationBase\r\n} from 'herum-types/Lessons';\r\nimport { MicroResourceAuthorizationType, MicroResourceFrontData, Question, QuizGradeData, Resource } from 'herum-types/Resource';\r\nimport { defaultAuthorizationObject, resourceIdPlaceholder, defaultGrade, getPublishAuthorization } from 'herum-shared/constants';\r\nimport { forkJoin } from 'rxjs';\r\nimport { cloneDeep } from 'lodash';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { ResourcePreview } from 'herum-types/Previews';\r\nimport { UsersLessonPermissionsDalResponse } from 'herum-types/GenericUpdates';\r\nimport { ResourceSubscription, UserQuestionData } from 'herum-types/User';\r\nimport { HadrachaPage } from 'herum-types/HadrachaPage';\r\nimport { QuizStatus } from 'herum-types/Enums';\r\n\r\nexport const freeTextAnswerField: string = 'FreeTextAnswer';\r\nconst gradeField: string = 'Grade';\r\nconst answerNotesField: string = 'AnswerNotes[]';\r\nconst UserQuestionsDataPath: string = 'QuizData.UserQuestionsData';\r\n\r\nexport type studentInnerAuthorizationSubscription = { user?: { id: string }, innerAuthorizations?: BackendMicroResourceAuthorization[] };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MicroResourcesService {\r\n\r\n constructor(private http: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getAssignmentUpdateTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date, closingTime: Date) {\r\n return [{\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n },\r\n {\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n }]\r\n }\r\n\r\n getPublishGradeTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date = new Date(2999, 1, 1), closingTime?: Date) {\r\n return [{\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: `Grade`\r\n }]\r\n }\r\n\r\n updateUserMicroResourceAuthorizationLocally(currentLesson: Lesson, studentId: string, microResourceAuthorizations: MicroResourceAuthorizationBase[], selectedResource: ResourcePreview) {\r\n currentLesson.students.find(student => student.student.id == studentId)\r\n .resourceSubscriptions.find(resourceSubscription => resourceSubscription.resourcePreview.id == selectedResource.id)\r\n .microResourceAuthorizations = microResourceAuthorizations\r\n }\r\n\r\n updateUserMicroResourceVisibility(microResource: MicroResourceFrontData, resource: Resource & LessonResourceSubscription, lesson: Lesson, user: LessonStudentSubscription) {\r\n let propertyPath: string;\r\n propertyPath = this.resolvePropertyPath(microResource.propertyPath, resource.quiz.questions);\r\n\r\n resource.microResourceAuthorizations = resource.microResourceAuthorizations.filter(\r\n microResourceAuthorization => microResourceAuthorization.propertyPath != \"\" &&\r\n microResourceAuthorization.propertyPath != propertyPath);\r\n\r\n resource.microResourceAuthorizations.push({\r\n propertyPath: propertyPath,\r\n collectionItemType: microResource.collectionItemType,\r\n openingTime: microResource.openingTime,\r\n closingTime: microResource.closingTime,\r\n authorizationType: MicroResourceAuthorizationType.view\r\n })\r\n\r\n return this.updateUserMicroResourceAuthorization(user.student.id, lesson, resource as unknown as ResourcePreview, resource.microResourceAuthorizations);\r\n }\r\n\r\n updateUserMicroResourceAuthorization(studentId: string, lesson: Lesson, resource: ResourcePreview, authorizations: MicroResourceAuthorizationBase[]) {\r\n return this.http.post<UsersLessonPermissionsDalResponse>(this.environmentConfig?.environment?.siteServerPath + '/Activity/UpdateAuthorizations',\r\n {\r\n userIds: [studentId],\r\n lessonId: lesson.id,\r\n resourceId: resource.id,\r\n authorizations\r\n }\r\n ).pipe(tap(() => {\r\n this.updateUserMicroResourceAuthorizationLocally(lesson, studentId, authorizations, resource)\r\n }))\r\n }\r\n\r\n resolvePropertyPath(\r\n path: string | ((question: (Question | UserQuestionData)[]) => string),\r\n questions: (Question | UserQuestionData)[]\r\n ) {\r\n return typeof path === 'function' ? path(questions) : path\r\n }\r\n\r\n isTimePass(date: string | number | Date) {\r\n if (!date) return false;\r\n return new Date(date).getTime() < new Date().getTime();\r\n }\r\n\r\n isAuthenticated(microResource: MicroResourceAuthorizationBase) {\r\n return this.isTimePass(microResource.openingTime) && !this.isTimePass(microResource.closingTime);\r\n }\r\n\r\n isQuestionAssignment(resourceSubscription: ResourceSubscription, questionType: string) {\r\n const question = resourceSubscription?.quizData?.userQuestionsData.find(userQuestionData => userQuestionData.questionType === questionType);\r\n\r\n if (!question)\r\n return false;\r\n\r\n return !!resourceSubscription.microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(question.id, freeTextAnswerField));\r\n }\r\n\r\n isQuestionPendingForCheck(resourceSubscription: ResourceSubscription, questionData: UserQuestionData) {\r\n const microResourceAuthorizations = resourceSubscription.microResourceAuthorizations;\r\n const questionId = questionData.id;\r\n\r\n const questionClosingTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, freeTextAnswerField) && microResourceAuthorization.authorizationType === MicroResourceAuthorizationType.update)?.closingTime;\r\n const gradePublishOpeningTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, gradeField))?.openingTime;\r\n\r\n let isQuestionPendingForCheck: boolean = false;\r\n\r\n if (questionClosingTime && questionData.grade === defaultGrade) {\r\n isQuestionPendingForCheck = gradePublishOpeningTime ?\r\n new Date(questionClosingTime).getTime() < new Date().getTime() && new Date().getTime() < new Date(gradePublishOpeningTime).getTime() :\r\n new Date(questionClosingTime).getTime() < new Date().getTime();\r\n }\r\n\r\n return isQuestionPendingForCheck;\r\n }\r\n\r\n buildQuestionPropertyPath(id: string, field: string) {\r\n return `${UserQuestionsDataPath}[${id}].${field}`;\r\n }\r\n\r\n isPublishGradeAuthenticated(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const publishGradeInnerAuthorizations = this.getAuthorization(innerAuthorizations, defaultAuthorizationObject.resourceGrade(), MicroResourceAuthorizationType.view, resource);\r\n return publishGradeInnerAuthorizations ? this.isAuthenticated(publishGradeInnerAuthorizations) : false;\r\n }\r\n\r\n hasFillAuthorizationClosingTimePassed(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const fillAuthorizationPropertyPath = (defaultAuthorizationObject.fill().propertyPath as string).replace(resourceIdPlaceholder, resource.id);\r\n const fillAuthorization = innerAuthorizations?.find(auth => auth.propertyPath == fillAuthorizationPropertyPath && auth.authorizationType == MicroResourceAuthorizationType.fill);\r\n return this.isTimePass(fillAuthorization?.closingTime);\r\n }\r\n\r\n getAuthorization(innerAuthorizations: BackendMicroResourceAuthorization[], defaultAuthorizationObject: BackendMicroResourceAuthorization, microResourceAuthorizationType: MicroResourceAuthorizationType, resource: Resource) {\r\n const authorizationPropertyPath = defaultAuthorizationObject.propertyPath.replace(resourceIdPlaceholder, resource.id);\r\n return innerAuthorizations.find((innerAuthorization: BackendMicroResourceAuthorization) => innerAuthorization.propertyPath === authorizationPropertyPath && innerAuthorization.authorizationType === microResourceAuthorizationType);\r\n }\r\n\r\n createMultiResourceDefaultAuthorizations<T extends studentInnerAuthorizationSubscription>(students: T[], pageId: string, resourcesIdsToDefaultAuthorizations: { [key: string]: BackendMicroResourceAuthorization[] }, authorizations?: BackendMicroResourceAuthorization[]) {\r\n const updates = [];\r\n\r\n let microAuthorizations: BackendMicroResourceAuthorization[] = [];\r\n\r\n if (authorizations) microAuthorizations = authorizations;\r\n else {\r\n Object.entries(resourcesIdsToDefaultAuthorizations).forEach(([resourceId, defaultAuthorizations]) => {\r\n let defaultAuthorizationsCopy: BackendMicroResourceAuthorization[] = cloneDeep(defaultAuthorizations);\r\n\r\n defaultAuthorizationsCopy.forEach(authorization => authorization.propertyPath = authorization.propertyPath.replace(resourceIdPlaceholder, resourceId));\r\n\r\n microAuthorizations.push(...defaultAuthorizationsCopy);\r\n });\r\n }\r\n\r\n const parsedAuthorizations = microAuthorizations.map((authorization) => ({\r\n propertyPath: authorization.propertyPath,\r\n closingTime: authorization.closingTime,\r\n openingTime: authorization.openingTime,\r\n authorizationType: authorization.authorizationType,\r\n lastUpDateTime: new Date(),\r\n collectionItemType: authorization.collectionItemType\r\n }));\r\n\r\n students.forEach(student => {\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: pageId,\r\n authorizations: [...(student.innerAuthorizations || []), ...parsedAuthorizations]\r\n });\r\n });\r\n\r\n return forkJoin(updates.map(request => {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request);\r\n }))\r\n }\r\n\r\n copyResourceStudentsAuthorizations<T extends studentInnerAuthorizationSubscription>(students: T[], pageId: string, authSourceResourceId: string, authTargetResourceId: string, useDefaultGradePermissions: boolean) {\r\n const updates = [];\r\n\r\n students.forEach(student => {\r\n let sourceResourceAuthorizations = student.innerAuthorizations.filter(innerAuthorization => innerAuthorization.propertyPath.includes(authSourceResourceId))\r\n sourceResourceAuthorizations = cloneDeep(sourceResourceAuthorizations);\r\n\r\n let targetResourceAuthorizations: BackendMicroResourceAuthorization[] = sourceResourceAuthorizations.map(authorization => ({\r\n ...authorization,\r\n lastUpDateTime: new Date(),\r\n propertyPath: authorization.propertyPath.replace(authSourceResourceId, authTargetResourceId)\r\n }))\r\n\r\n if (useDefaultGradePermissions) {\r\n let defaultGradePermissions: BackendMicroResourceAuthorization[] = cloneDeep(getPublishAuthorization());\r\n defaultGradePermissions.forEach(authorization => authorization.propertyPath = authorization.propertyPath.replace(resourceIdPlaceholder, authTargetResourceId));\r\n\r\n targetResourceAuthorizations = targetResourceAuthorizations.filter(authorization =>\r\n !defaultGradePermissions.some(defaultGradePermission => defaultGradePermission.propertyPath == authorization.propertyPath));\r\n\r\n targetResourceAuthorizations = [...targetResourceAuthorizations, ...defaultGradePermissions]\r\n }\r\n\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: pageId,\r\n authorizations: [...(student.innerAuthorizations || []), ...(targetResourceAuthorizations || [])]\r\n });\r\n })\r\n\r\n return forkJoin(updates.map(request =>\r\n this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request)))\r\n }\r\n\r\n removeResourceAuthorizations(page: HadrachaPage, resourcesIdsToRemove: string[]) {\r\n const updates = [];\r\n\r\n resourcesIdsToRemove.forEach(resourceIdToRemove => {\r\n page.students.forEach(student => {\r\n let resourceAuthorizationsToKeep = student.innerAuthorizations.filter(innerAuthorization => !(innerAuthorization.propertyPath as string).includes(resourceIdToRemove))\r\n\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: page.id,\r\n authorizations: resourceAuthorizationsToKeep\r\n });\r\n })\r\n })\r\n\r\n return forkJoin(updates.map(request =>\r\n this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request)))\r\n }\r\n\r\n getGradeDisplayText(gradeData: QuizGradeData) {\r\n if (gradeData.gradeStatus === QuizStatus.checked) {\r\n if (gradeData.isBinary) {\r\n if (gradeData.isPassedGrade) return 'עובר';\r\n return 'נכשל'\r\n }\r\n return gradeData.grade.toFixed(0);\r\n }\r\n if (gradeData.gradeStatus === QuizStatus.submittedToCheck) return 'בבדיקה';\r\n\r\n return 'לא הוגש';\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { buildPath } from 'herum-shared/utils';\r\nimport { FileData, ModelInfo } from 'herum-types/Shared';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig, private http: HttpClient) { };\r\n\r\n getModelInfo(model: string): Observable<any> {\r\n return this.http.get<ModelInfo>(`${this.environmentConfig?.environment?.siteServerPath}/${model}/${this.environmentConfig?.mongoUpdates?.Methods?.ModelInfo}`);\r\n }\r\n\r\n getUrlFromFileData(fileData: Partial<FileData>) {\r\n if (!fileData?.key || !fileData?.bucket) return;\r\n\r\n const fileDataKeyWithoutTrailingSlash = fileData.key.endsWith('/') ? fileData.key.slice(0, -1) : fileData.key;\r\n\r\n return buildPath([this.environmentConfig?.environment?.s3ServerPath + fileData.bucket, fileDataKeyWithoutTrailingSlash]);\r\n }\r\n\r\n fetchFiles(fileId: string, resourceType: string, bucket?: string): Promise<Response> {\r\n if (!fileId)\r\n return Promise.reject();\r\n\r\n const bucketPath = bucket ? bucket : this.environmentConfig?.buckets?.[resourceType];\r\n\r\n if (fileId && fileId[0] != '/' && bucketPath[bucketPath.length - 1] != '/') fileId = \"/\" + fileId;\r\n\r\n const path = this.environmentConfig?.environment?.s3ServerPath + bucketPath + fileId;\r\n\r\n return fetch(path);\r\n }\r\n\r\n async initAudioFile(fileId: string, bucketName?: string, signal?: AbortSignal) {\r\n const audioBucketName = bucketName ? (bucketName + \"/\") : this.environmentConfig?.buckets?.Audio;\r\n\r\n return fetch(this.environmentConfig?.environment?.s3ServerPath + audioBucketName + fileId, { signal: signal })\r\n .then(async (response) => {\r\n const arrayBuffer = await response.arrayBuffer();\r\n if (arrayBuffer.byteLength === 0) {\r\n const blob = await response.blob();\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const arrayBuffer = reader.result as ArrayBuffer;\r\n const file = new File([arrayBuffer], fileId, {\r\n type: 'audio/mp3',\r\n });\r\n return file;\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n } else {\r\n const file = new File([arrayBuffer], fileId, {\r\n type: 'audio/mpeg',\r\n });\r\n return file;\r\n }\r\n })\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Resource } from 'herum-types/Resource';\r\nimport { resourcesFilesSuffixes } from 'herum-shared/constants';\r\nimport { UtilsService } from './utils.service';\r\nimport { getVersionPathParameter } from 'herum-shared/utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResourceDataBuilderService {\r\n\r\n constructor(private utilsService: UtilsService) { }\r\n\r\n buildFilePath(resource: Resource) {\r\n return this.utilsService.getUrlFromFileData(resource.resourceFile) + this.getVersionPathParameter(resource);\r\n }\r\n\r\n buildDirectoryPath(resource: Resource) {\r\n return this.utilsService.getUrlFromFileData(resource.resourceFile) + resourcesFilesSuffixes[resource.resourceType] + this.getVersionPathParameter(resource);\r\n }\r\n\r\n private getVersionPathParameter(resource: Resource) {\r\n return getVersionPathParameter(new Date(resource.lastUpdateTime));\r\n }\r\n}","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { system } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SystemStylingService {\r\n private renderer: Renderer2 | null = null\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n private rendererFactory: RendererFactory2) {\r\n this.renderer = this.rendererFactory.createRenderer(null, null)\r\n }\r\n\r\n setHerumStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.addClass(document.body, \"herum-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setCollegeStyling() {\r\n this.setCssVariable(\"--main-header-height\", \"0vh\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"college-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setHadrachaStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"hadracha-colors\");\r\n this.setFavicon(\"/assets/hadracha/general/hadracha-favicon.svg\");\r\n }\r\n\r\n private setCssVariable(name: string, value: string) {\r\n document.documentElement.style.setProperty(name, value);\r\n }\r\n\r\n private setFavicon(path: string) {\r\n const link: HTMLLinkElement = this.document.querySelector(\"link[rel*='icon']\");\r\n link.type = 'image/x-icon';\r\n link.rel = 'icon';\r\n link.href = path;\r\n this.document.head.appendChild(link);\r\n }\r\n}\r\n\r\nexport function systemStylingFactory(systemName: string, systemStylingService: SystemStylingService) {\r\n return () => {\r\n switch (systemName) {\r\n case system.college: systemStylingService.setCollegeStyling(); break;\r\n case system.herum: systemStylingService.setHerumStyling(); break;\r\n case system.hadracha: systemStylingService.setHadrachaStyling(); break;\r\n default:\r\n throw new Error(`Unsupported system:${systemName}`)\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { toastStates, toastStatuses, toastContext, toastsTemplates } from 'herum-shared/constants';\r\nimport { Toast, ToastStatus, ToastTemplate } from 'herum-types/Toast';\r\nimport { StorageService } from 'herum-shared/static-services';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastsService {\r\n\r\n toast$: BehaviorSubject<Toast> = new BehaviorSubject<Toast>(undefined);\r\n toastId: number = 0;\r\n toastsTemplates: { [key: string]: ToastTemplate } = toastsTemplates;\r\n\r\n findErrorMessageByStatusCode(statusCode: string, mongoMethodDisplayedName: string): string {\r\n if (!toastContext.statusCodes[statusCode])\r\n statusCode = 'genericError'\r\n\r\n return toastContext.statusCodes[statusCode](mongoMethodDisplayedName);\r\n }\r\n\r\n showErrorToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.error];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.error);\r\n }\r\n\r\n showSuccessToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.success];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.success);\r\n }\r\n\r\n showInformationToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.information];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.information);\r\n }\r\n\r\n showOnDemandToast(toastContextKey: string, status: ToastStatus, toastStorageKey?: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n if (this.hasToastAlreadyShownAndShouldShowOnce(toastStorageKey))\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][status];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, status);\r\n }\r\n\r\n private hasToastAlreadyShownAndShouldShowOnce(toastStorageKey: string): boolean {\r\n if (!toastStorageKey)\r\n return false;\r\n\r\n if (StorageService.getItem(toastStorageKey))\r\n return true;\r\n\r\n StorageService.setItem(toastStorageKey, toastStorageKey);\r\n return false;\r\n }\r\n\r\n showToast(title: string, content: string, status: ToastStatus) {\r\n this.toast$.next({ title, content, status, id: ++this.toastId, state: toastStates.preEnter });\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { ISystemTrackTextChangesService } from 'herum-types/interfaces';\r\nimport { SYSTEM_TRACK_TEXT_CHANGES_SERVICE } from 'herum-shared/tokens';\r\nimport { TextChangeStyle } from 'herum-types/TrackTextChanges';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TrackTextChangesService {\r\n\r\n constructor(@Inject(SYSTEM_TRACK_TEXT_CHANGES_SERVICE) private systemContextTrackTextChangesService: ISystemTrackTextChangesService) { }\r\n\r\n getStyle(): TextChangeStyle {\r\n return this.systemContextTrackTextChangesService.getStyle();\r\n }\r\n}","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./auth.service\";\nexport * from \"./common-graphql-requests.service\";\nexport * from \"./db-actions-inner-id-manager.service\";\nexport * from \"./global-error-handler\";\nexport * from \"./global-keyboard-listener.service\";\nexport * from \"./graph-ql.service\";\nexport * from \"./key-press.service\";\nexport * from \"./loader-manager.service\";\nexport * from \"./micro-resources.service\";\nexport * from \"./resource-data-builder.service\";\nexport * from \"./system-styling.service\";\nexport * from \"./toasts.service\";\nexport * from \"./track-text-changes.service\";\nexport * from \"./utils.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UtilsService"],"mappings":"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"}
1
+ {"version":3,"file":"herum-shared-services.mjs","sources":["../../../projects/herum-shared/services/graph-ql.service.ts","../../../projects/herum-shared/services/auth.service.ts","../../../projects/herum-shared/services/common-graphql-requests.service.ts","../../../projects/herum-shared/services/db-actions-inner-id-manager.service.ts","../../../projects/herum-shared/services/global-error-handler.ts","../../../projects/herum-shared/services/global-keyboard-listener.service.ts","../../../projects/herum-shared/services/key-press.service.ts","../../../projects/herum-shared/services/loader-manager.service.ts","../../../projects/herum-shared/services/micro-resources.service.ts","../../../projects/herum-shared/services/utils.service.ts","../../../projects/herum-shared/services/resource-data-builder.service.ts","../../../projects/herum-shared/services/system-styling.service.ts","../../../projects/herum-shared/services/toasts.service.ts","../../../projects/herum-shared/services/track-text-changes.service.ts","../../../projects/herum-shared/services/index.ts","../../../projects/herum-shared/services/herum-shared-services.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\nimport { GQLVariable, GraphQLFilter, GraphQlOffsetPaging, GraphQLOrder, GraphQlQuery, GraphQlResult } from 'herum-types/GraphQL';\r\n\r\nimport { regexExpressions } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\nexport const NestedConditionSigniture = \"filters\";\r\n\r\nconst defaultPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage, startCursor, endCursor }\";\r\nconst offsetPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage }\";\r\n\r\nconst DefaultQueryName = \"DefaultQueryName\"\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GraphQLService {\r\n\r\n constructor(private httpClient: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n executeQuery(gqlQuery: GraphQlQuery, isListQuery: boolean = true, isOffsetPagination: boolean = false): Observable<any> {\r\n let variablesObjectForBody: Record<string, string>;\r\n let variablesStringForQuerySignature: string;\r\n\r\n if (gqlQuery.variables) {\r\n variablesObjectForBody = this.generateVariablesObjectForBody(gqlQuery.variables);\r\n variablesStringForQuerySignature = this.generateVariablesStringForQuerySigniture(gqlQuery.variables, gqlQuery.queryName);\r\n }\r\n\r\n const query = this.generateQuery(\r\n gqlQuery.resolverName,\r\n gqlQuery.formatExample,\r\n gqlQuery.filters,\r\n gqlQuery.paging?.first,\r\n gqlQuery.paging?.after,\r\n gqlQuery.offsetPaging,\r\n gqlQuery.variables?.length > 0 ? variablesStringForQuerySignature : '',\r\n gqlQuery.order,\r\n gqlQuery.conditionPaths,\r\n gqlQuery.orderPaths,\r\n gqlQuery.offsetPagingPaths,\r\n isListQuery,\r\n isOffsetPagination,\r\n gqlQuery.useTotalCount\r\n ).replace(regexExpressions.curlyBraces, '');\r\n\r\n return this.httpClient.post<GraphQlResult>(\r\n this.environmentConfig?.graphQLConfiguration.serverBasePath,\r\n { query: query, variables: variablesObjectForBody }, { headers: gqlQuery.headers })\r\n .pipe(shareReplay(1), map(res => {\r\n return res.data ? res.data[gqlQuery.resolverName] : null\r\n }));\r\n }\r\n\r\n getFreeTextCondition(freeText: string, orConditionKeys: string[]) {\r\n let filters = {\r\n and: []\r\n }\r\n\r\n freeText.split(\" \").forEach(substring => {\r\n let orIteration = []\r\n orConditionKeys.forEach(orConditionKey => {\r\n orIteration.push({\r\n [orConditionKey]: { contains: substring }\r\n })\r\n })\r\n\r\n filters.and.push({ or: orIteration });\r\n })\r\n\r\n return filters;\r\n }\r\n\r\n generateFilterStringDynamically(ids: string[], key: string, type: ('String' | 'Number')) {\r\n let filters = [];\r\n let variables: GQLVariable[] = [];\r\n\r\n ids.forEach((id, index) => {\r\n let newFilter = {}\r\n newFilter[key] = {\r\n eq: '$' + key + index\r\n };\r\n filters.push(newFilter);\r\n variables.push({\r\n name: key + index,\r\n value: id,\r\n type\r\n });\r\n });\r\n return { filters, variables };\r\n }\r\n\r\n convertToResolverNameFormat(mongoCollectionName: string) {\r\n return mongoCollectionName.charAt(0).toLowerCase() + mongoCollectionName.slice(1);\r\n }\r\n generateQuery(resolverName: string, formatExample: any, condition?: GraphQLFilter, first?: number, after?: string, offsetPaging?: GraphQlOffsetPaging, variablesStringForQuerySigniture?: string, order?: GraphQLOrder, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?: { [path: string]: GraphQlOffsetPaging }, isListQuery?: boolean, isOffsetPagination?: boolean, useTotalCount?: boolean) {\r\n const conditionString = this.generateConditionString(condition);\r\n const returnFormat = this.getKeysString(formatExample, conditionPaths, orderPaths, offsetPagingPaths);\r\n\r\n let orderString = order ? `order:${this.generateOrderString(order)},` : '';\r\n\r\n let pagingString = '';\r\n\r\n if (isListQuery) {\r\n pagingString = isOffsetPagination\r\n ? (offsetPaging?.skip > -1 || offsetPaging?.take > -1 ? this.generateOffsetPagingString(offsetPaging) : '')\r\n : (first || after ? this.generatePagingString(first, after) : '');\r\n }\r\n\r\n if (after) pagingString += ','\r\n\r\n const resolverParameters = (orderString + pagingString + conditionString) == '' ? '' : '(' + orderString + pagingString + conditionString + ')';\r\n\r\n if (pagingString != '') pagingString += ',';\r\n\r\n const elementsName = isOffsetPagination ? 'items' : 'nodes';\r\n\r\n const query = `query ${variablesStringForQuerySigniture ? variablesStringForQuerySigniture : ''} { \r\n ${resolverName + resolverParameters} { ${isListQuery ? (isOffsetPagination ? offsetPagingDataFormat : defaultPagingDataFormat) + `,${useTotalCount ? 'totalCount ,' : ''} ${elementsName} {` : ''} ${returnFormat} } ${isListQuery ? '}' : ''} }`\r\n return query;\r\n }\r\n\r\n private generateConditionString(condition?: GraphQLFilter, isRecursiveCall: boolean = false): string {\r\n let conditionString = \"\";\r\n\r\n if (!condition || (!condition.and || condition.and?.length == 0) && (!condition.or || condition.or?.length == 0))\r\n return conditionString;\r\n\r\n if (condition) {\r\n conditionString = isRecursiveCall ? \"\" : \"where: {\";\r\n if (condition?.and) {\r\n let andString = \"\"\r\n\r\n condition.and.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n andString += `{${this.generateConditionString(filter, true)}},` :\r\n andString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n andString = andString.slice(0, -1);\r\n conditionString += `and: [${andString}]`;\r\n conditionString += condition.or ? ',' : '';\r\n }\r\n\r\n if (condition?.or) {\r\n let orString = \"\"\r\n\r\n condition.or.forEach(filter => orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`)\r\n condition.or.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n orString += `{${this.generateConditionString(filter, true)}},` :\r\n orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n orString = orString.slice(0, -1);\r\n conditionString += `or: [${orString} ]`;\r\n }\r\n\r\n conditionString += isRecursiveCall ? \"\" : \"}\";\r\n }\r\n\r\n return conditionString;\r\n }\r\n\r\n private generatePagingString(first?: number, after?: string) {\r\n let result = ''\r\n\r\n result += first ? `first:${first},` : '';\r\n result += after ? ` after:\"${after}\"` : '';\r\n\r\n return result;\r\n }\r\n\r\n private generateOffsetPagingString(offsetPaging: GraphQlOffsetPaging) {\r\n const { skip, take } = offsetPaging;\r\n\r\n let result = ''\r\n\r\n result += skip > -1 ? `skip:${skip},` : '';\r\n result += take > -1 ? ` take:${take}, ` : '';\r\n\r\n return result;\r\n }\r\n private getKeysString(obj, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?, parentKey = null, isConditionString = false): string {\r\n let result = '';\r\n\r\n for (const key in obj) {\r\n result += `${key}`;\r\n\r\n if (((conditionPaths && conditionPaths[key]) || (orderPaths && orderPaths[key])) && !isConditionString) {\r\n result += '(';\r\n if (conditionPaths && conditionPaths[key]) result += this.generateConditionString(conditionPaths[key])\r\n if (orderPaths && orderPaths[key]) result += this.getKeysString(orderPaths[key], null, null, null, null, true)\r\n if (offsetPagingPaths && offsetPagingPaths[key]) result += (offsetPagingPaths[key].skip > -1 || offsetPagingPaths[key].take > -1) ? `,${this.generateOffsetPagingString(offsetPagingPaths[key])}` : ''\r\n result += `)`;\r\n }\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '{items';\r\n\r\n if (obj[key]?.length > 0 && !isConditionString && obj[key] !== null && typeof obj[key] !== 'string') {\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key][0], conditionPaths, orderPaths, key, isConditionString)} }`;\r\n }\r\n\r\n else if (typeof obj[key] === 'object' && obj[key] !== null && typeof obj[key] !== 'string')\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, parentKey + '.' + key, isConditionString)} }`;\r\n\r\n else if (typeof obj[key] === 'string' && obj[key] !== null && isConditionString)\r\n result += (obj[key][0] == '$' || obj[key].includes('ASC') || obj[key].includes('DESC')) ? `: ${obj[key]}` : `: \"${obj[key]}\"`;\r\n\r\n else if (typeof obj[key] === 'number' && obj[key] !== null && isConditionString)\r\n result += `: ${JSON.stringify(obj[key])}`;\r\n\r\n else if (typeof obj[key] === 'boolean' && obj[key] !== null && isConditionString)\r\n result += `: ${obj[key]}`;\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '}';\r\n\r\n result += ', ';\r\n }\r\n\r\n return result.slice(0, -2);\r\n }\r\n\r\n private generateVariablesObjectForBody(variables: GQLVariable[]) {\r\n return variables.reduce((acc, obj) => {\r\n acc[obj.name] = obj.value;\r\n return acc;\r\n }, {} as Record<string, string>);\r\n }\r\n\r\n private generateVariablesStringForQuerySigniture(variables: GQLVariable[], queryName: string) {\r\n if (!queryName) queryName = DefaultQueryName;\r\n\r\n let result = (queryName ? queryName : DefaultQueryName) + '(';\r\n\r\n variables.forEach(variable => {\r\n result += \"$\" + variable.name + \":\" + variable.type + \",\";\r\n })\r\n result = result.slice(0, -1) + \")\";\r\n\r\n return result;\r\n }\r\n\r\n generateOrderString<T extends {}>(order: T) {\r\n let orderString = '{';\r\n\r\n Object.keys(order).forEach((key, index, keys) => {\r\n orderString += typeof order[key] === 'object' ?\r\n `${key}:${this.generateOrderString(order[key])}` :\r\n `${key}:${order[key]}`;\r\n\r\n if (index < keys.length - 1)\r\n orderString += ',';\r\n }\r\n );\r\n\r\n return orderString + '}';\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { SignUpFormData, SignInFormData } from 'herum-types/Shared'\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { StorageService } from 'herum-shared/static-services';\r\nimport { Router } from '@angular/router';\r\nimport { selfIsTeacherExample } from 'herum-shared/objectsExample';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { AuthenticationResponse, BackendLoginFormat } from 'herum-types/Auth';\r\nimport { SecurityQuestion } from 'herum-types/User';\r\nimport { toHash } from 'herum-shared/utils';\r\n\r\nconst AuthStorageKey = 'AUTH_SESSION_ID';\r\nconst headers = new HttpHeaders({ 'Content-Type': 'application/json' })\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n sessionId$: BehaviorSubject<string> = new BehaviorSubject('');\r\n isTeacher$: Subject<boolean> = new Subject();\r\n\r\n constructor(private http: HttpClient, private router: Router,\r\n private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n let sessionId = StorageService.getItem(AuthStorageKey);\r\n\r\n if (!sessionId)\r\n return;\r\n\r\n this.sessionId$.next(sessionId);\r\n }\r\n\r\n tryLogin(signInFormData: SignInFormData): Observable<AuthenticationResponse> {\r\n const personalId = signInFormData.personalId;\r\n\r\n let loginFormat: BackendLoginFormat = {\r\n identifier: personalId,\r\n hash: toHash(this.generateStringForAuthenticationHash(personalId, signInFormData.militaryId))\r\n };\r\n\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.tryLogin, loginFormat)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)))\r\n }\r\n\r\n getUserIdentificationQuestions(personalId: string) {\r\n return this.http.get(this.environmentConfig?.environment?.siteServerPath + `/Authentication/SecurityQuestions/${personalId}`);\r\n }\r\n\r\n signUp(signUpData: SignUpFormData): Observable<AuthenticationResponse> {\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.signUp, signUpData)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)));\r\n }\r\n\r\n logout() {\r\n this.clearSession()\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n clearSession() {\r\n StorageService.deleteAll();\r\n this.sessionId$.next('');\r\n }\r\n\r\n isValidSessionId(sessionId: string): Observable<boolean> {\r\n let jSessionId = JSON.stringify(sessionId ?? '');\r\n return this.http.post<boolean>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.isValidSessionId, jSessionId, { headers: headers });\r\n }\r\n\r\n isTeacher(): Observable<boolean> {\r\n let userQuery = {\r\n resolverName: 'self',\r\n formatExample: selfIsTeacherExample,\r\n conditionPaths: { collegeStudyingLessons: { and: [{ lesson: { isDeleted: { eq: false } } }] } }\r\n };\r\n\r\n return this.gql.executeQuery(userQuery, false).pipe(map(user => {\r\n const isTeacher = !(!user.collegeTeacherAssignments || user.collegeTeacherAssignments.length == 0) ||\r\n !(!user.collegeTeachingLessons || user.collegeTeachingLessons.length == 0) ||\r\n !(!user.collegeCheckingLessons || user.collegeCheckingLessons.length == 0) || user.isAdmin == true;\r\n\r\n this.isTeacher$.next(isTeacher);\r\n return isTeacher;\r\n }))\r\n }\r\n\r\n setIdentificationQuestions(password: string, questions: { question: string, answer: string }[]) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/UpdateLoginData', {\r\n password,\r\n securityQuestions: questions.map(question => ({ ...question, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n resetPassword(securityQuestions: SecurityQuestion[], personalId: string, newPassword: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/ResetPassword', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) })),\r\n newPassword: newPassword\r\n })\r\n }\r\n\r\n securityCheck(securityQuestions: SecurityQuestion[], personalId: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/SecurityCheck', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n handleNewSessionId(authenticationResponse: AuthenticationResponse): AuthenticationResponse {\r\n if (authenticationResponse.sessionId?.length > 0)\r\n this.updateSessionId(authenticationResponse.sessionId);\r\n\r\n return authenticationResponse;\r\n }\r\n\r\n private updateSessionId(newValue: string) {\r\n this.sessionId$.next(newValue);\r\n StorageService.setItem(AuthStorageKey, newValue);\r\n }\r\n\r\n private generateStringForAuthenticationHash(personalId: string, militaryId: string) {\r\n return personalId + militaryId;\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { permissionsTemplatesExample, closedListExample } from 'herum-shared/objectsExample';\r\nimport { User } from 'herum-types/User';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { generalKeys } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { Group } from 'herum-types/Group';\r\nimport { GraphQlQuery } from 'herum-types/GraphQL';\r\nimport { ClosedList } from 'herum-types/Shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonGraphqlRequestsService {\r\n\r\n constructor(private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getGroupsByIds(ids: string[], formatExample: Group): Observable<Group[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(ids, 'id', 'String');\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Groups),\r\n formatExample: formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n }\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlGroups => gqlGroups?.nodes));\r\n }\r\n\r\n getClosedLists(names?: string[]): Observable<ClosedList[] | ClosedList> {\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.ClosedLists),\r\n formatExample: closedListExample,\r\n filters: { and: [{ isDeleted: { eq: false } }] },\r\n variables: []\r\n };\r\n\r\n names?.forEach((name, i) => {\r\n if (query.filters.or)\r\n query.filters.or.push({\r\n name: {\r\n eq: '$name' + i\r\n },\r\n });\r\n else\r\n query.filters.or = [{\r\n name: {\r\n eq: '$name' + i\r\n },\r\n }];\r\n\r\n query.variables.push({\r\n name: 'name' + i,\r\n value: name,\r\n type: 'String'\r\n });\r\n });\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResult => gqlResult.nodes));\r\n }\r\n\r\n getUsersByIds(usersIds: string[], formatExample: User): Observable<User[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(usersIds, generalKeys.id, 'String');\r\n\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Users),\r\n formatExample: formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n };\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse?.nodes));\r\n }\r\n\r\n getPermissionsTemplates() {\r\n let query: GraphQlQuery = {\r\n resolverName: 'permissionsTemplates',\r\n formatExample: permissionsTemplatesExample,\r\n }\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse.nodes))\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { generalKeys } from 'herum-shared/constants';\r\n\r\nexport const innerUniqListItemKey = '_id';\r\nexport const emptyValueFlagForCreationUniqListItem = 'null';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DbActionsInnerIdManagerService {\r\n\r\n determineIfInnerIdIsNeeded(value: any[]) {\r\n if (!Array.isArray(value))\r\n return;\r\n\r\n if (value[0][innerUniqListItemKey])\r\n value[0].id = value[0][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ? null : value[0][innerUniqListItemKey];\r\n }\r\n\r\n deleteInnerIdFieldIfExist(itemToAttach: { [key: string]: any }, itemValue: { [key: string]: any }) {\r\n if (itemValue.hasOwnProperty(innerUniqListItemKey)) {\r\n itemToAttach[Object.keys(itemToAttach)[0]][generalKeys.id] =\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ?\r\n null :\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n\r\n delete itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n }\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { ErrorHandler, Inject, Injectable } from \"@angular/core\";\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from \"herum-shared/environment\";\r\n\r\nconst oneSecondInMilliseconds: number = 1000;\r\n\r\n@Injectable()\r\nexport class GlobalErrorHandler implements ErrorHandler {\r\n\r\n private lastErrorKey: string = '';\r\n private lastErrorAt: number = 0;\r\n\r\n constructor(private http: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n handleError(error: Error): void {\r\n const currentKey: string = error?.message;\r\n const now: number = Date.now();\r\n\r\n if (currentKey == this.lastErrorKey && (now - this.lastErrorAt) < oneSecondInMilliseconds) return;\r\n this.lastErrorAt = now;\r\n this.lastErrorKey = currentKey;\r\n\r\n console.error(error);\r\n\r\n this.http.post(this.environmentConfig?.environment?.userAction, {\r\n system: this.environmentConfig?.environment?.systemIdentifier,\r\n level: \"Error\",\r\n application: \"CLIENT ERROR\",\r\n message: error.message,\r\n stack: error.stack,\r\n }).subscribe();\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { GlobalKeyboardEvent } from 'herum-types/Shared';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalKeyboardListenerService {\r\n\r\n globalKeyboardEvents$: Subject<GlobalKeyboardEvent> = new Subject<GlobalKeyboardEvent>();\r\n connection: WebSocket;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n this.initGlobalSocket();\r\n }\r\n\r\n initGlobalSocket() {\r\n if (this.connection) return;\r\n\r\n this.connection = new WebSocket(this.environmentConfig?.environment?.keyboardEventsLocalSocketPath);\r\n this.connection.onmessage = (webSocketMessage) => {\r\n const event: GlobalKeyboardEvent = JSON.parse(webSocketMessage.data);\r\n if (event.state == 'UP')\r\n this.globalKeyboardEvents$.next(event)\r\n }\r\n }\r\n\r\n get globalKeysToChromeKeysNames() {\r\n return {\r\n 'NUMPAD 0': 'Insert',\r\n 'NUMPAD 1': 'End',\r\n 'NUMPAD 2': 'ArrowDown',\r\n 'NUMPAD 3': 'PageDown',\r\n 'NUMPAD 4': 'ArrowLeft',\r\n 'NUMPAD 5': 'Clear',\r\n 'NUMPAD 6': 'ArrowRight',\r\n 'NUMPAD 7': 'Home',\r\n 'NUMPAD 8': '',\r\n 'NUMPAD 9': 'PageUp',\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { attributes } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class KeyPressService {\r\n\r\n shouldPreventMacroKeyPress(event: KeyboardEvent, macroKeysPress: number[]) {\r\n const eventTarget = event.target as HTMLInputElement;\r\n const targetMacroKeys = eventTarget.getAttribute(attributes.preventMacroKeysPressEvent)?.split(\",\").map(Number);\r\n const targetHasPreventMacroKeyPress = targetMacroKeys?.some(targetMacroKey => macroKeysPress.includes(targetMacroKey));\r\n\r\n return targetHasPreventMacroKeyPress || eventTarget.hasAttribute(attributes.contenteditable);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderManagerService {\r\n\r\n loadersIds: string[] = [];\r\n loadingDescription: string = '';\r\n\r\n addLoader(loaderId: string, description?: string) {\r\n this.loadersIds.push(loaderId);\r\n this.loadingDescription = description;\r\n }\r\n\r\n changeDescription(description: string) {\r\n this.loadingDescription = description;\r\n }\r\n\r\n clear() {\r\n this.loadersIds = [];\r\n this.loadingDescription = '';\r\n }\r\n\r\n removeLoaderId(loaderIdToRemove: string) {\r\n let indexToRemove = this.loadersIds.findIndex(loaderId => loaderId == loaderIdToRemove);\r\n\r\n if (indexToRemove != -1)\r\n this.loadersIds.splice(indexToRemove, 1);\r\n }\r\n\r\n get isFullScreenLoading() {\r\n return this.loadersIds.length > 0\r\n };\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { tap } from 'rxjs/operators';\r\nimport {\r\n Lesson, LessonResourceSubscription, LessonStudentSubscription,\r\n BackendMicroResourceAuthorization, MicroResourceAuthorizationBase\r\n} from 'herum-types/Lessons';\r\nimport { MicroResourceAuthorizationType, MicroResourceFrontData, Question, QuizGradeData, Resource } from 'herum-types/Resource';\r\nimport { defaultAuthorizationObject, resourceIdPlaceholder, defaultGrade, getPublishAuthorization } from 'herum-shared/constants';\r\nimport { forkJoin } from 'rxjs';\r\nimport { cloneDeep } from 'lodash';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { ResourcePreview } from 'herum-types/Previews';\r\nimport { UsersLessonPermissionsDalResponse } from 'herum-types/GenericUpdates';\r\nimport { ResourceSubscription, UserQuestionData } from 'herum-types/User';\r\nimport { HadrachaPage } from 'herum-types/HadrachaPage';\r\nimport { QuizStatus } from 'herum-types/Enums';\r\n\r\nexport const freeTextAnswerField: string = 'FreeTextAnswer';\r\nconst gradeField: string = 'Grade';\r\nconst answerNotesField: string = 'AnswerNotes[]';\r\nconst UserQuestionsDataPath: string = 'QuizData.UserQuestionsData';\r\n\r\nexport type studentInnerAuthorizationSubscription = { user?: { id: string }, innerAuthorizations?: BackendMicroResourceAuthorization[] };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MicroResourcesService {\r\n\r\n constructor(private http: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getAssignmentUpdateTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date, closingTime: Date) {\r\n return [{\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n },\r\n {\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n }]\r\n }\r\n\r\n getPublishGradeTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date = new Date(2999, 1, 1), closingTime?: Date) {\r\n return [{\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: `Grade`\r\n }]\r\n }\r\n\r\n updateUserMicroResourceAuthorizationLocally(currentLesson: Lesson, studentId: string, microResourceAuthorizations: MicroResourceAuthorizationBase[], selectedResource: ResourcePreview) {\r\n currentLesson.students.find(student => student.student.id == studentId)\r\n .resourceSubscriptions.find(resourceSubscription => resourceSubscription.resourcePreview.id == selectedResource.id)\r\n .microResourceAuthorizations = microResourceAuthorizations\r\n }\r\n\r\n updateUserMicroResourceVisibility(microResource: MicroResourceFrontData, resource: Resource & LessonResourceSubscription, lesson: Lesson, user: LessonStudentSubscription) {\r\n let propertyPath: string;\r\n propertyPath = this.resolvePropertyPath(microResource.propertyPath, resource.quiz.questions);\r\n\r\n resource.microResourceAuthorizations = resource.microResourceAuthorizations.filter(\r\n microResourceAuthorization => microResourceAuthorization.propertyPath != \"\" &&\r\n microResourceAuthorization.propertyPath != propertyPath);\r\n\r\n resource.microResourceAuthorizations.push({\r\n propertyPath: propertyPath,\r\n collectionItemType: microResource.collectionItemType,\r\n openingTime: microResource.openingTime,\r\n closingTime: microResource.closingTime,\r\n authorizationType: MicroResourceAuthorizationType.view\r\n })\r\n\r\n return this.updateUserMicroResourceAuthorization(user.student.id, lesson, resource as unknown as ResourcePreview, resource.microResourceAuthorizations);\r\n }\r\n\r\n updateUserMicroResourceAuthorization(studentId: string, lesson: Lesson, resource: ResourcePreview, authorizations: MicroResourceAuthorizationBase[]) {\r\n return this.http.post<UsersLessonPermissionsDalResponse>(this.environmentConfig?.environment?.siteServerPath + '/Activity/UpdateAuthorizations',\r\n {\r\n userIds: [studentId],\r\n lessonId: lesson.id,\r\n resourceId: resource.id,\r\n authorizations\r\n }\r\n ).pipe(tap(() => {\r\n this.updateUserMicroResourceAuthorizationLocally(lesson, studentId, authorizations, resource)\r\n }))\r\n }\r\n\r\n resolvePropertyPath(\r\n path: string | ((question: (Question | UserQuestionData)[]) => string),\r\n questions: (Question | UserQuestionData)[]\r\n ) {\r\n return typeof path === 'function' ? path(questions) : path\r\n }\r\n\r\n isTimePass(date: string | number | Date) {\r\n if (!date) return false;\r\n return new Date(date).getTime() < new Date().getTime();\r\n }\r\n\r\n isAuthenticated(microResource: MicroResourceAuthorizationBase) {\r\n return this.isTimePass(microResource.openingTime) && !this.isTimePass(microResource.closingTime);\r\n }\r\n\r\n isQuestionAssignment(resourceSubscription: ResourceSubscription, questionType: string) {\r\n const question = resourceSubscription?.quizData?.userQuestionsData.find(userQuestionData => userQuestionData.questionType === questionType);\r\n\r\n if (!question)\r\n return false;\r\n\r\n return !!resourceSubscription.microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(question.id, freeTextAnswerField));\r\n }\r\n\r\n isQuestionPendingForCheck(resourceSubscription: ResourceSubscription, questionData: UserQuestionData) {\r\n const microResourceAuthorizations = resourceSubscription.microResourceAuthorizations;\r\n const questionId = questionData.id;\r\n\r\n const questionClosingTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, freeTextAnswerField) && microResourceAuthorization.authorizationType === MicroResourceAuthorizationType.update)?.closingTime;\r\n const gradePublishOpeningTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, gradeField))?.openingTime;\r\n\r\n let isQuestionPendingForCheck: boolean = false;\r\n\r\n if (questionClosingTime && questionData.grade === defaultGrade) {\r\n isQuestionPendingForCheck = gradePublishOpeningTime ?\r\n new Date(questionClosingTime).getTime() < new Date().getTime() && new Date().getTime() < new Date(gradePublishOpeningTime).getTime() :\r\n new Date(questionClosingTime).getTime() < new Date().getTime();\r\n }\r\n\r\n return isQuestionPendingForCheck;\r\n }\r\n\r\n buildQuestionPropertyPath(id: string, field: string) {\r\n return `${UserQuestionsDataPath}[${id}].${field}`;\r\n }\r\n\r\n isPublishGradeAuthenticated(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const publishGradeInnerAuthorizations = this.getAuthorization(innerAuthorizations, defaultAuthorizationObject.resourceGrade(), MicroResourceAuthorizationType.view, resource);\r\n return publishGradeInnerAuthorizations ? this.isAuthenticated(publishGradeInnerAuthorizations) : false;\r\n }\r\n\r\n hasFillAuthorizationClosingTimePassed(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const fillAuthorizationPropertyPath = (defaultAuthorizationObject.fill().propertyPath as string).replace(resourceIdPlaceholder, resource.id);\r\n const fillAuthorization = innerAuthorizations?.find(auth => auth.propertyPath == fillAuthorizationPropertyPath && auth.authorizationType == MicroResourceAuthorizationType.fill);\r\n return this.isTimePass(fillAuthorization?.closingTime);\r\n }\r\n\r\n getAuthorization(innerAuthorizations: BackendMicroResourceAuthorization[], defaultAuthorizationObject: BackendMicroResourceAuthorization, microResourceAuthorizationType: MicroResourceAuthorizationType, resource: Resource) {\r\n const authorizationPropertyPath = defaultAuthorizationObject.propertyPath.replace(resourceIdPlaceholder, resource.id);\r\n return innerAuthorizations.find((innerAuthorization: BackendMicroResourceAuthorization) => innerAuthorization.propertyPath === authorizationPropertyPath && innerAuthorization.authorizationType === microResourceAuthorizationType);\r\n }\r\n\r\n createMultiResourceDefaultAuthorizations<T extends studentInnerAuthorizationSubscription>(students: T[], pageId: string, resourcesIdsToDefaultAuthorizations: { [key: string]: BackendMicroResourceAuthorization[] }, authorizations?: BackendMicroResourceAuthorization[]) {\r\n const updates = [];\r\n\r\n let microAuthorizations: BackendMicroResourceAuthorization[] = [];\r\n\r\n if (authorizations) microAuthorizations = authorizations;\r\n else {\r\n Object.entries(resourcesIdsToDefaultAuthorizations).forEach(([resourceId, defaultAuthorizations]) => {\r\n let defaultAuthorizationsCopy: BackendMicroResourceAuthorization[] = cloneDeep(defaultAuthorizations);\r\n\r\n defaultAuthorizationsCopy.forEach(authorization => authorization.propertyPath = authorization.propertyPath.replace(resourceIdPlaceholder, resourceId));\r\n\r\n microAuthorizations.push(...defaultAuthorizationsCopy);\r\n });\r\n }\r\n\r\n const parsedAuthorizations = microAuthorizations.map((authorization) => ({\r\n propertyPath: authorization.propertyPath,\r\n closingTime: authorization.closingTime,\r\n openingTime: authorization.openingTime,\r\n authorizationType: authorization.authorizationType,\r\n lastUpDateTime: new Date(),\r\n collectionItemType: authorization.collectionItemType\r\n }));\r\n\r\n students.forEach(student => {\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: pageId,\r\n authorizations: [...(student.innerAuthorizations || []), ...parsedAuthorizations]\r\n });\r\n });\r\n\r\n return forkJoin(updates.map(request => {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request);\r\n }))\r\n }\r\n\r\n copyResourceStudentsAuthorizations<T extends studentInnerAuthorizationSubscription>(students: T[], pageId: string, authSourceResourceId: string, authTargetResourceId: string, useDefaultGradePermissions: boolean) {\r\n const updates = [];\r\n\r\n students.forEach(student => {\r\n let sourceResourceAuthorizations = student.innerAuthorizations.filter(innerAuthorization => innerAuthorization.propertyPath.includes(authSourceResourceId))\r\n sourceResourceAuthorizations = cloneDeep(sourceResourceAuthorizations);\r\n\r\n let targetResourceAuthorizations: BackendMicroResourceAuthorization[] = sourceResourceAuthorizations.map(authorization => ({\r\n ...authorization,\r\n lastUpDateTime: new Date(),\r\n propertyPath: authorization.propertyPath.replace(authSourceResourceId, authTargetResourceId)\r\n }))\r\n\r\n if (useDefaultGradePermissions) {\r\n let defaultGradePermissions: BackendMicroResourceAuthorization[] = cloneDeep(getPublishAuthorization());\r\n defaultGradePermissions.forEach(authorization => authorization.propertyPath = authorization.propertyPath.replace(resourceIdPlaceholder, authTargetResourceId));\r\n\r\n targetResourceAuthorizations = targetResourceAuthorizations.filter(authorization =>\r\n !defaultGradePermissions.some(defaultGradePermission => defaultGradePermission.propertyPath == authorization.propertyPath));\r\n\r\n targetResourceAuthorizations = [...targetResourceAuthorizations, ...defaultGradePermissions]\r\n }\r\n\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: pageId,\r\n authorizations: [...(student.innerAuthorizations || []), ...(targetResourceAuthorizations || [])]\r\n });\r\n })\r\n\r\n return forkJoin(updates.map(request =>\r\n this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request)))\r\n }\r\n\r\n removeResourceAuthorizations(page: HadrachaPage, resourcesIdsToRemove: string[]) {\r\n const updates = [];\r\n\r\n resourcesIdsToRemove.forEach(resourceIdToRemove => {\r\n page.students.forEach(student => {\r\n let resourceAuthorizationsToKeep = student.innerAuthorizations.filter(innerAuthorization => !(innerAuthorization.propertyPath as string).includes(resourceIdToRemove))\r\n\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: page.id,\r\n authorizations: resourceAuthorizationsToKeep\r\n });\r\n })\r\n })\r\n\r\n return forkJoin(updates.map(request =>\r\n this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request)))\r\n }\r\n\r\n getGradeDisplayText(gradeData: QuizGradeData) {\r\n if (gradeData.gradeStatus === QuizStatus.checked) {\r\n if (gradeData.isBinary) {\r\n if (gradeData.isPassedGrade) return 'עובר';\r\n return 'נכשל'\r\n }\r\n return gradeData.grade.toFixed(0);\r\n }\r\n if (gradeData.gradeStatus === QuizStatus.submittedToCheck) return 'בבדיקה';\r\n\r\n return 'לא הוגש';\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { buildPath } from 'herum-shared/utils';\r\nimport { FileData, ModelInfo } from 'herum-types/Shared';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig, private http: HttpClient) { };\r\n\r\n getModelInfo(model: string): Observable<any> {\r\n return this.http.get<ModelInfo>(`${this.environmentConfig?.environment?.siteServerPath}/${model}/${this.environmentConfig?.mongoUpdates?.Methods?.ModelInfo}`);\r\n }\r\n\r\n getUrlFromFileData(fileData: Partial<FileData>) {\r\n if (!fileData?.key || !fileData?.bucket) return;\r\n\r\n const fileDataKeyWithoutTrailingSlash = fileData.key.endsWith('/') ? fileData.key.slice(0, -1) : fileData.key;\r\n\r\n return buildPath([this.environmentConfig?.environment?.s3ServerPath + fileData.bucket, fileDataKeyWithoutTrailingSlash]);\r\n }\r\n\r\n fetchFiles(fileId: string, resourceType: string, bucket?: string): Promise<Response> {\r\n if (!fileId)\r\n return Promise.reject();\r\n\r\n const bucketPath = bucket ? bucket : this.environmentConfig?.buckets?.[resourceType];\r\n\r\n if (fileId && fileId[0] != '/' && bucketPath[bucketPath.length - 1] != '/') fileId = \"/\" + fileId;\r\n\r\n const path = this.environmentConfig?.environment?.s3ServerPath + bucketPath + fileId;\r\n\r\n return fetch(path);\r\n }\r\n\r\n async initAudioFile(fileId: string, bucketName?: string, signal?: AbortSignal) {\r\n const audioBucketName = bucketName ? (bucketName + \"/\") : this.environmentConfig?.buckets?.Audio;\r\n\r\n return fetch(this.environmentConfig?.environment?.s3ServerPath + audioBucketName + fileId, { signal: signal })\r\n .then(async (response) => {\r\n const arrayBuffer = await response.arrayBuffer();\r\n if (arrayBuffer.byteLength === 0) {\r\n const blob = await response.blob();\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const arrayBuffer = reader.result as ArrayBuffer;\r\n const file = new File([arrayBuffer], fileId, {\r\n type: 'audio/mp3',\r\n });\r\n return file;\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n } else {\r\n const file = new File([arrayBuffer], fileId, {\r\n type: 'audio/mpeg',\r\n });\r\n return file;\r\n }\r\n })\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Resource } from 'herum-types/Resource';\r\nimport { resourcesFilesSuffixes } from 'herum-shared/constants';\r\nimport { UtilsService } from './utils.service';\r\nimport { getVersionPathParameter } from 'herum-shared/utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResourceDataBuilderService {\r\n\r\n constructor(private utilsService: UtilsService) { }\r\n\r\n buildFilePath(resource: Resource) {\r\n return this.utilsService.getUrlFromFileData(resource.resourceFile) + this.getVersionPathParameter(resource);\r\n }\r\n\r\n buildDirectoryPath(resource: Resource) {\r\n return this.utilsService.getUrlFromFileData(resource.resourceFile) + resourcesFilesSuffixes[resource.resourceType] + this.getVersionPathParameter(resource);\r\n }\r\n\r\n private getVersionPathParameter(resource: Resource) {\r\n return getVersionPathParameter(new Date(resource.lastUpdateTime));\r\n }\r\n}","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { system } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SystemStylingService {\r\n private renderer: Renderer2 | null = null\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n private rendererFactory: RendererFactory2) {\r\n this.renderer = this.rendererFactory.createRenderer(null, null)\r\n }\r\n\r\n setHerumStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.addClass(document.body, \"herum-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setCollegeStyling() {\r\n this.setCssVariable(\"--main-header-height\", \"0vh\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"college-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setHadrachaStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"hadracha-colors\");\r\n this.setFavicon(\"/assets/hadracha/general/hadracha-favicon.svg\");\r\n }\r\n\r\n private setCssVariable(name: string, value: string) {\r\n document.documentElement.style.setProperty(name, value);\r\n }\r\n\r\n private setFavicon(path: string) {\r\n const link: HTMLLinkElement = this.document.querySelector(\"link[rel*='icon']\");\r\n link.type = 'image/x-icon';\r\n link.rel = 'icon';\r\n link.href = path;\r\n this.document.head.appendChild(link);\r\n }\r\n}\r\n\r\nexport function systemStylingFactory(systemName: string, systemStylingService: SystemStylingService) {\r\n return () => {\r\n switch (systemName) {\r\n case system.college: systemStylingService.setCollegeStyling(); break;\r\n case system.herum: systemStylingService.setHerumStyling(); break;\r\n case system.hadracha: systemStylingService.setHadrachaStyling(); break;\r\n default:\r\n throw new Error(`Unsupported system:${systemName}`)\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { toastStates, toastStatuses, toastContext, toastsTemplates } from 'herum-shared/constants';\r\nimport { Toast, ToastStatus, ToastTemplate } from 'herum-types/Toast';\r\nimport { StorageService } from 'herum-shared/static-services';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastsService {\r\n\r\n toast$: BehaviorSubject<Toast> = new BehaviorSubject<Toast>(undefined);\r\n toastId: number = 0;\r\n toastsTemplates: { [key: string]: ToastTemplate } = toastsTemplates;\r\n\r\n findErrorMessageByStatusCode(statusCode: string, mongoMethodDisplayedName: string): string {\r\n if (!toastContext.statusCodes[statusCode])\r\n statusCode = 'genericError'\r\n\r\n return toastContext.statusCodes[statusCode](mongoMethodDisplayedName);\r\n }\r\n\r\n showErrorToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.error];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.error);\r\n }\r\n\r\n showSuccessToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.success];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.success);\r\n }\r\n\r\n showInformationToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.information];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.information);\r\n }\r\n\r\n showOnDemandToast(toastContextKey: string, status: ToastStatus, toastStorageKey?: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n if (this.hasToastAlreadyShownAndShouldShowOnce(toastStorageKey))\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][status];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, status);\r\n }\r\n\r\n private hasToastAlreadyShownAndShouldShowOnce(toastStorageKey: string): boolean {\r\n if (!toastStorageKey)\r\n return false;\r\n\r\n if (StorageService.getItem(toastStorageKey))\r\n return true;\r\n\r\n StorageService.setItem(toastStorageKey, toastStorageKey);\r\n return false;\r\n }\r\n\r\n showToast(title: string, content: string, status: ToastStatus) {\r\n this.toast$.next({ title, content, status, id: ++this.toastId, state: toastStates.preEnter });\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { ISystemTrackTextChangesService } from 'herum-types/interfaces';\r\nimport { SYSTEM_TRACK_TEXT_CHANGES_SERVICE } from 'herum-shared/tokens';\r\nimport { TextChangeStyle } from 'herum-types/TrackTextChanges';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TrackTextChangesService {\r\n\r\n constructor(@Inject(SYSTEM_TRACK_TEXT_CHANGES_SERVICE) private systemContextTrackTextChangesService: ISystemTrackTextChangesService) { }\r\n\r\n getStyle(): TextChangeStyle {\r\n return this.systemContextTrackTextChangesService.getStyle();\r\n }\r\n}","/**\r\n * @file Automatically generated by barrelsby.\r\n */\r\n\r\nexport * from \"./auth.service\";\r\nexport * from \"./common-graphql-requests.service\";\r\nexport * from \"./db-actions-inner-id-manager.service\";\r\nexport * from \"./global-error-handler\";\r\nexport * from \"./global-keyboard-listener.service\";\r\nexport * from \"./graph-ql.service\";\r\nexport * from \"./key-press.service\";\r\nexport * from \"./loader-manager.service\";\r\nexport * from \"./micro-resources.service\";\r\nexport * from \"./resource-data-builder.service\";\r\nexport * from \"./system-styling.service\";\r\nexport * from \"./toasts.service\";\r\nexport * from \"./track-text-changes.service\";\r\nexport * from \"./utils.service\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UtilsService"],"mappings":"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"}