herum-shared 0.1.49 → 0.1.50

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-tokens.mjs","sources":["../../../projects/herum-shared/tokens/tokens.ts","../../../projects/herum-shared/tokens/index.ts","../../../projects/herum-shared/tokens/herum-shared-tokens.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nimport { ISystemUserService } from \"herum-types/interfaces\";\r\nimport { AudioVisualConfiguration, SystemIdentifier } from 'herum-types/Shared';\r\n\r\nexport const SYSTEM_IDENTIFIER = new InjectionToken<SystemIdentifier>('SystemIdentifier');\r\nexport const SYSTEM_USER_SERVICE = new InjectionToken<ISystemUserService>('SystemUserService');\r\nexport const SYSTEM_TRACK_TEXT_CHANGES_SERVICE = new InjectionToken<ISystemUserService>('SystemTrackTextChangesService');\r\nexport const SYSTEM_AUDIO_VISUAL_CONFIGURATION = new InjectionToken<AudioVisualConfiguration>('SystemAudioVisualConfiguration');","/**\r\n * @file Automatically generated by barrelsby.\r\n */\r\n\r\nexport * from \"./tokens\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAIa,iBAAiB,GAAG,IAAI,cAAc,CAAmB,kBAAkB;MAC3E,mBAAmB,GAAG,IAAI,cAAc,CAAqB,mBAAmB;MAChF,iCAAiC,GAAG,IAAI,cAAc,CAAqB,+BAA+B;MAC1G,iCAAiC,GAAG,IAAI,cAAc,CAA2B,gCAAgC;;ACP9H;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"herum-shared-tokens.mjs","sources":["../../../projects/herum-shared/tokens/tokens.ts","../../../projects/herum-shared/tokens/index.ts","../../../projects/herum-shared/tokens/herum-shared-tokens.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nimport { ISystemUserService } from \"herum-types/interfaces\";\r\nimport { AudioVisualConfiguration, SystemIdentifier } from 'herum-types/Shared';\r\n\r\nexport const SYSTEM_IDENTIFIER = new InjectionToken<SystemIdentifier>('SystemIdentifier');\r\nexport const SYSTEM_USER_SERVICE = new InjectionToken<ISystemUserService>('SystemUserService');\r\nexport const SYSTEM_TRACK_TEXT_CHANGES_SERVICE = new InjectionToken<ISystemUserService>('SystemTrackTextChangesService');\r\nexport const SYSTEM_AUDIO_VISUAL_CONFIGURATION = new InjectionToken<AudioVisualConfiguration>('SystemAudioVisualConfiguration');","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./tokens\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAIa,iBAAiB,GAAG,IAAI,cAAc,CAAmB,kBAAkB;MAC3E,mBAAmB,GAAG,IAAI,cAAc,CAAqB,mBAAmB;MAChF,iCAAiC,GAAG,IAAI,cAAc,CAAqB,+BAA+B;MAC1G,iCAAiC,GAAG,IAAI,cAAc,CAA2B,gCAAgC;;ACP9H;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"herum-shared-utils.mjs","sources":["../../../projects/herum-shared/utils/array.ts","../../../projects/herum-shared/utils/assignment.ts","../../../projects/herum-shared/utils/browser.ts","../../../projects/herum-shared/utils/comparers.ts","../../../projects/herum-shared/utils/date.ts","../../../projects/herum-shared/utils/element.ts","../../../projects/herum-shared/utils/file.ts","../../../projects/herum-shared/utils/hierarchy.ts","../../../projects/herum-shared/utils/number.ts","../../../projects/herum-shared/utils/object.ts","../../../projects/herum-shared/utils/request-helpers.ts","../../../projects/herum-shared/utils/string.ts","../../../projects/herum-shared/utils/style.ts","../../../projects/herum-shared/utils/subscription.ts","../../../projects/herum-shared/utils/index.ts","../../../projects/herum-shared/utils/herum-shared-utils.ts"],"sourcesContent":["import { IdentifiedEntity } from 'herum-types/Shared';\r\n\r\nexport const flatten = <T>(arr: T[][]): T[] => {\r\n if (!arr)\r\n return [];\r\n\r\n return arr.reduce((acc, cur) => acc.concat(cur), []);\r\n};\r\n\r\nexport const findKeyByValue = (array: {}[], value: any) => {\r\n const entry = array.find(object => Object.values(object).includes(value));\r\n return entry ? Object.keys(entry)[0] : undefined;\r\n};\r\n\r\nexport const parseToIdentifiedEntitiesArray = (array: string[]): IdentifiedEntity[] => {\r\n return array.map((name, index) => { return { name, id: index.toString() } });\r\n};","export const getAssignmentStateDisplayName = (state) => {\r\n return state == 0 ? 'שיבוץ זמני' : state == 1 ? 'אכ\"א' : 'אג\"ת';\r\n};","import { regexExpressions } from \"herum-shared/constants\";\r\n\r\nexport const getBrowserVersion = (browserRegexExp: RegExp): number | undefined => {\r\n let browserVersionMatchResult: RegExpMatchArray = navigator.userAgent.match(browserRegexExp);\r\n return browserVersionMatchResult ? parseInt(browserVersionMatchResult[1], 10) : undefined;\r\n};\r\n\r\n\r\nexport const getChromeVersion = () => {\r\n const userAgent = navigator.userAgent;\r\n const match = userAgent.match(regexExpressions.chromeVersionRegex);\r\n if (match)\r\n return match[1];\r\n\r\n return undefined;\r\n};","import { cloneDeep } from \"lodash\";\r\n\r\nexport type ListsDiffs<Item extends { [innerItemProperty: string]: { id: string } } | {}> = { deletedItems: Item[], newItems: Item[], updatedItems: Item[] };\r\n\r\nexport const getDifferencesInObjects = <MainObject, ObjectToCheck>(mainObject: MainObject, comparedObject: ObjectToCheck) => {\r\n let changedFieldsObject: { [key: string]: any[] } = {};\r\n Object.keys(comparedObject).forEach(key => {\r\n if (Array.isArray(comparedObject[key]) && mainObject[key])\r\n changedFieldsObject[key] = mainObject[key].filter(item => !comparedObject[key].map(object => object.id).includes(item.id));\r\n\r\n if (!changedFieldsObject[key]?.length)\r\n delete changedFieldsObject[key];\r\n })\r\n\r\n return changedFieldsObject;\r\n};\r\n\r\nexport const removeCommonObjectsBetweenArrays = <MainItem extends { id: string; }, CheckedItem extends { id: string; }>(mainArray: MainItem[], checkedArray: CheckedItem[]): MainItem[] => {\r\n const clonedMainArray: MainItem[] = cloneDeep(mainArray);\r\n return clonedMainArray.filter(mainItem => !checkedArray.some(comparedItem => comparedItem.id === mainItem.id));\r\n};\r\n\r\nexport const removeCommonItemsInObjectsFields = (mainObject: { [key: string]: any }, secondaryObject: { [key: string]: any }) => {\r\n const mainKeys: string[] = Object.keys(mainObject);\r\n const secondaryKeys: string[] = Object.keys(secondaryObject);\r\n\r\n mainKeys.forEach(mainKey => {\r\n const mainValue = mainObject[mainKey];\r\n\r\n if (Array.isArray(mainValue)) {\r\n const mainItemsIds = mainValue.map(item => item.id);\r\n\r\n secondaryKeys.forEach(secondaryKey => {\r\n const secondaryValue = secondaryObject[secondaryKey];\r\n\r\n if (Array.isArray(secondaryValue)) {\r\n const uniqueItems = secondaryValue.filter(item => !mainItemsIds.includes(item.id));\r\n secondaryObject[secondaryKey] = uniqueItems;\r\n\r\n if (!secondaryObject[secondaryKey].length)\r\n delete secondaryObject[secondaryKey];\r\n }\r\n });\r\n }\r\n });\r\n\r\n return secondaryObject;\r\n};\r\n\r\nexport const getDifferencesInLists = <Item extends { [innerItemProperty: string]: { id: string } } | {}>(sourceList: Item[], editedList: Item[], innerItemProperty: string): ListsDiffs<Item> => {\r\n const newItems = editedList.filter(\r\n newItem => !sourceList.some(sourceItem => sourceItem[innerItemProperty]?.id === newItem[innerItemProperty]?.id)\r\n );\r\n const deletedItems = sourceList.filter(\r\n sourceItem => !editedList.some(newItem => newItem[innerItemProperty]?.id === sourceItem[innerItemProperty]?.id)\r\n );\r\n\r\n const updatedItems = editedList.filter(item => {\r\n const prev = sourceList.find(sourceItem => sourceItem[innerItemProperty]?.id === item[innerItemProperty]?.id);\r\n\r\n return prev && JSON.stringify(prev) !== JSON.stringify(item);\r\n });\r\n\r\n return { deletedItems: deletedItems, newItems: newItems, updatedItems: updatedItems };\r\n};\r\n\r\nexport const removeDuplicatesBetweenArrays = <Item>(mainArray: Item[], otherArray: Item[]): Item[] => {\r\n const getUserId = (u: any) => u?.user?.id ?? u?.id;\r\n const clonedOtherArray: Item[] = Array.isArray(otherArray) ? cloneDeep(otherArray) : [];\r\n const clonedMainArray: Item[] = Array.isArray(mainArray) ? cloneDeep(mainArray) : [];\r\n\r\n const mergedArrays = [...clonedMainArray, ...clonedOtherArray].filter((user, index, arr) => arr.findIndex((u) => getUserId(u) === getUserId(user)) === index);\r\n\r\n return mergedArrays;\r\n};","import { MicroResourceAuthorizationBase } from \"herum-types/Lessons\";\r\n\r\nexport const convertToDate = (dateString: string) => {\r\n const date = new Date(dateString);\r\n\r\n const day = date.getDate();\r\n const month = date.getMonth() + 1;\r\n const year = date.getFullYear();\r\n\r\n if (day == 1 && month == 1 && year == 1) return '(התאריך לא קיים)'\r\n\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\nexport const generateNewTimeStamp = () => {\r\n let date = new Date();\r\n\r\n let year = date.getUTCFullYear();\r\n let month = String(date.getUTCMonth() + 1).padStart(2, '0');\r\n let day = String(date.getUTCDate()).padStart(2, '0');\r\n let hours = String(date.getUTCHours()).padStart(2, '0');\r\n let minutes = String(date.getUTCMinutes()).padStart(2, '0');\r\n let seconds = String(date.getUTCSeconds()).padStart(2, '0');\r\n let milliseconds = String(date.getUTCMilliseconds()).padStart(3, '0');\r\n\r\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}Z`;\r\n};\r\n\r\nexport const updateFullYear = (dateToUpdate: Date, date: Date) => {\r\n const year = date.getFullYear();\r\n const month = date.getMonth();\r\n const day = date.getDate();\r\n dateToUpdate.setFullYear(year, month, day);\r\n\r\n return dateToUpdate;\r\n};\r\n\r\nexport const getMicroResourceTextualTimeString = (microResourceAuthorization: MicroResourceAuthorizationBase): string => {\r\n if (!microResourceAuthorization) return 'לא קיים'\r\n const now = new Date();\r\n let isOpeningTimePass = microResourceAuthorization.openingTime && new Date(microResourceAuthorization.openingTime).getTime() < now.getTime();\r\n let isClosingTimePass = microResourceAuthorization.closingTime && new Date(microResourceAuthorization.closingTime).getTime() < now.getTime();\r\n\r\n if (isClosingTimePass && isOpeningTimePass) return 'סגור';\r\n\r\n let time: Date = new Date(isOpeningTimePass ? microResourceAuthorization.closingTime : microResourceAuthorization.openingTime)\r\n let res: string;\r\n\r\n const diff = Math.abs(time.getTime() - now.getTime());\r\n const seconds = Math.floor(diff / 1000);\r\n const minutes = Math.floor(seconds / 60);\r\n const hours = Math.floor(minutes / 60);\r\n const days = Math.floor(hours / 24);\r\n const weeks = Math.floor(days / 7);\r\n const months = Math.floor(days / 30);\r\n const years = Math.floor(days / 365);\r\n\r\n if (isOpeningTimePass) {\r\n time = new Date(microResourceAuthorization.closingTime)\r\n if (years > 10) return 'פתוח'\r\n\r\n res = \"יסגר בעוד \"\r\n }\r\n else {\r\n time = new Date(microResourceAuthorization.openingTime);\r\n if (isNaN(time.getTime())) return 'סגור';\r\n if (years > 10) return 'סגור'\r\n\r\n res = \"יפתח בעוד \"\r\n }\r\n\r\n if (years != 0)\r\n res += `${years} שנים`;\r\n else if (months != 0)\r\n res += `${months} חודשים`;\r\n else if (weeks != 0)\r\n res += `${weeks} שבועות`;\r\n else if (days != 0)\r\n res += `${days} ימים`;\r\n else if (hours != 0)\r\n res += `${hours} שעות`;\r\n else if (minutes != 0)\r\n res += `${minutes} דקות`;\r\n else if (seconds != 0)\r\n res += `${seconds} שניות`;\r\n else\r\n return res.split(\" \")[0] + ' עכשיו';\r\n return res;\r\n};\r\n\r\nexport const getTimeAsAgo = (time: Date) => {\r\n const diff = new Date().getTime() - time.getTime();\r\n const seconds = Math.floor(diff / 1000);\r\n const minutes = Math.floor(seconds / 60);\r\n const hours = Math.floor(minutes / 60);\r\n const days = Math.floor(hours / 24);\r\n const weeks = Math.floor(days / 7);\r\n const months = Math.floor(days / 30);\r\n const years = Math.floor(days / 365);\r\n\r\n let res = 'לפני ';\r\n if (years != 0)\r\n res += `${years} שנים`;\r\n else if (months != 0)\r\n res += `${months} חודשים`;\r\n else if (weeks != 0)\r\n res += `${weeks} שבועות`;\r\n else if (days != 0)\r\n res += `${days} ימים`;\r\n else if (hours != 0)\r\n res += `${hours} שעות`;\r\n else if (minutes != 0)\r\n res += `${minutes} דקות`;\r\n else if (seconds != 0)\r\n res += `${seconds} שניות`;\r\n else\r\n res = ' עכשיו';\r\n\r\n return res;\r\n};","import { ElementRef, QueryList } from \"@angular/core\";\r\nimport { EntitiesLayoutProperties } from \"herum-types/Shared\";\r\n\r\nconst entityGap: number = 12;\r\n\r\nexport const isTruncatedTitleElement = (element: HTMLElement): boolean => {\r\n const renderedWidth = element.offsetWidth;\r\n const scrollWidth = element.scrollWidth;\r\n\r\n return element.innerText.includes('...') || renderedWidth < scrollWidth || element.scrollHeight > element.offsetHeight;\r\n};\r\n\r\nexport const getEntitiesLayoutProperties = (entitiesWrapperElement: ElementRef, entitiesElement: QueryList<ElementRef>, entities: unknown[], entitiesWrapperHeight?: number): EntitiesLayoutProperties => {\r\n const entitiesWrapper = entitiesWrapperElement.nativeElement;\r\n const entitiesWrapperWidth = entitiesWrapper.clientWidth;\r\n\r\n entitiesWrapperHeight = entitiesWrapperHeight ?? entitiesWrapper.clientHeight;\r\n\r\n const entityWidth = entitiesElement.first.nativeElement.offsetWidth;\r\n const entityHeight = entitiesElement.first.nativeElement.offsetHeight;\r\n\r\n const columns = Math.max(1, Math.floor((entitiesWrapperWidth + entityGap) / (entityWidth + entityGap)));\r\n let rows = Math.max(1, Math.floor((entitiesWrapperHeight + entityGap) / (entityHeight + entityGap)));\r\n\r\n const numberOfElementsInPage = rows * columns;\r\n const totalPages = Math.ceil(entities.length / numberOfElementsInPage);\r\n\r\n return { numberOfElementsInPage, totalPages, columns, rows, entityWidth, entityHeight, entitiesWrapperHeight, entitiesWrapperWidth };\r\n};\r\n\r\nexport const setElementsGridStyle = (entitiesWrapperElement: ElementRef, layoutProperties: EntitiesLayoutProperties) => {\r\n const entitiesWrapper = entitiesWrapperElement.nativeElement;\r\n let { columns, rows, entityWidth, entityHeight, entitiesWrapperWidth, entitiesWrapperHeight } = layoutProperties;\r\n\r\n const columnGap = (entitiesWrapperWidth - columns * entityWidth) / columns - 1;\r\n const rowGap = (entitiesWrapperHeight - rows * entityHeight) / rows - 1;\r\n\r\n let gap = Math.min(columnGap, rowGap);\r\n gap = gap < entityGap ? entityGap : gap;\r\n\r\n entitiesWrapper.style.gridTemplateColumns = `repeat(${columns}, ${entityWidth}px)`;\r\n entitiesWrapper.style.gridTemplateRows = `repeat(${rows}, ${entityHeight}px)`;\r\n entitiesWrapper.style.gridAutoRows = `${entityHeight} px`;\r\n entitiesWrapper.style.gap = `${gap}px`;\r\n};\r\n\r\nexport const setNavFlexLayoutStyle = (entitiesSectionElement: ElementRef, entitiesWrapperElement: ElementRef, showNavButtons: boolean, navButtonsWidth: number) => {\r\n const entitiesWrapper = entitiesWrapperElement.nativeElement;\r\n\r\n entitiesWrapper.style.width = `calc(100% - ${showNavButtons || entitiesWrapper.style.display === 'grid' ? navButtonsWidth : 0}px)`;\r\n\r\n if (entitiesWrapper.style.display !== 'flex') {\r\n entitiesSectionElement.nativeElement.style.alignItems = 'center';\r\n\r\n entitiesWrapper.style.display = 'flex';\r\n entitiesWrapper.style.gap = `${entityGap}px`;\r\n entitiesWrapper.style.justifyContent = 'normal';\r\n }\r\n};\r\n\r\nexport const setNavFlexLayout = (entitiesSectionElement: ElementRef, entitiesWrapperElement: ElementRef, navButtonElement: ElementRef, entitiesElement: QueryList<ElementRef>) => {\r\n const entitiesSectionElementWidth = entitiesSectionElement.nativeElement.clientWidth;\r\n const cardWidth = entitiesElement.first?.nativeElement?.clientWidth;\r\n\r\n const navButtonsWidth = navButtonElement?.nativeElement?.offsetWidth ?? 0;\r\n\r\n const availableWidth = entitiesSectionElementWidth - navButtonsWidth;\r\n const numberOfElementsInPage = Math.max(1, Math.floor((availableWidth + entityGap) / (cardWidth + entityGap)));\r\n\r\n const showNavButtons = entitiesElement?.length - numberOfElementsInPage > 0;\r\n setNavFlexLayoutStyle(entitiesSectionElement, entitiesWrapperElement, showNavButtons, navButtonsWidth);\r\n\r\n return numberOfElementsInPage;\r\n};\r\n","export const getDeserializedFile = async (response: Response, fileName: string, fileType?: string) => {\r\n const blob = await response.blob();\r\n return new File([blob], fileName, { type: fileType ?? blob.type });\r\n};\r\n\r\nexport const downloadFile = (fileName: string, data: File | Blob) => {\r\n const objectUrl = URL.createObjectURL(data);\r\n const anchorElement = document.createElement('a');\r\n anchorElement.href = objectUrl;\r\n anchorElement.download = fileName;\r\n anchorElement.click();\r\n\r\n anchorElement.remove();\r\n URL.revokeObjectURL(objectUrl);\r\n};","import { FullHierarchyPartsPlaces } from \"herum-types/Enums\";\r\n\r\nexport const getHierarchyPartIfExist = (parts: string[], part: FullHierarchyPartsPlaces) => {\r\n return parts.length > part ? parts[part] : '';\r\n};","export const bytesToMegabytes = (bytes: number): number => {\r\n return bytes / (1024 ** 2);\r\n};","import { types } from \"herum-shared/constants\";\r\n\r\nexport const remainJustWantedValueInDictionary = (wantedValue: string, fields: { [key: string]: any }) => {\r\n let object = {};\r\n\r\n Object.entries(fields).forEach(([key, value]) => {\r\n (Array.isArray(value)) ?\r\n object[key] = value.map(item => (typeof item === types.object ? { [wantedValue]: item[wantedValue] } : { [wantedValue]: item }))\r\n :\r\n object[key] = (typeof value === types.object ? { [wantedValue]: value[wantedValue] } : value);\r\n\r\n });\r\n return object;\r\n};\r\n\r\nexport const removeUnwantedProperties = (baseObject: any, wantedProperties: string[]) => {\r\n let unwantedProperties = Object.keys(baseObject).filter(property => !wantedProperties.includes(property))\r\n unwantedProperties.forEach(property => delete baseObject[property])\r\n return baseObject;\r\n};","import { HttpHeaders } from \"@angular/common/http\";\r\nimport { minuteInMilliseconds, uploadsManagerKeys } from \"herum-shared/constants\";\r\nimport { DependentMetadata } from \"herum-types/uploads-manager\";\r\n\r\nconst safetyMarginInMilliseconds: number = 2 * 60 * 1000;\r\n\r\nexport const buildPath = (parts: string[]) => {\r\n return parts.reduce((path, part) => {\r\n return path + '/' + part;\r\n }, '').slice(1);\r\n};\r\n\r\nexport const setHeaders = (headers: HttpHeaders, headersToSet: { key: string, value: any }[], isEncodeURIComponent?: boolean): HttpHeaders => {\r\n headersToSet.forEach(headerToSet => {\r\n headers = headers.set(headerToSet.key, isEncodeURIComponent ? encodeURIComponent((headerToSet.value).toString()) : (headerToSet.value).toString());\r\n });\r\n return headers;\r\n};\r\n\r\nexport const convertDependentMetadataToHeaders = (dependentMetadata: DependentMetadata) => {\r\n if (dependentMetadata)\r\n var { dependentId, commonDependentsId, numberOfObservableArrowFunctions } = dependentMetadata;\r\n\r\n let headers: HttpHeaders = new HttpHeaders();\r\n\r\n if (dependentId) {\r\n headers = setHeaders(headers, [\r\n { key: uploadsManagerKeys.dependentIdHeader, value: dependentId },\r\n { key: uploadsManagerKeys.commonDependentsIdHeader, value: commonDependentsId },\r\n { key: uploadsManagerKeys.numberOfObservableArrowFunctionsHeader, value: numberOfObservableArrowFunctions }\r\n ]);\r\n }\r\n\r\n return headers;\r\n};\r\n\r\nexport const getVersionPathParameter = (lastUpdateTime: Date) => {\r\n if (!lastUpdateTime) return;\r\n return (Date.now() - lastUpdateTime?.getTime() < 10 * minuteInMilliseconds + safetyMarginInMilliseconds) ? `?v=${lastUpdateTime?.toISOString()}` : '';\r\n};","import { regexExpressions } from \"herum-shared/constants\";\r\n\r\nimport jsSHA from 'jssha';\r\n\r\nexport const toHash = (source: string) => {\r\n let shaObj = new jsSHA('SHA-256', 'TEXT');\r\n shaObj.update(source);\r\n let hash = shaObj.getHash('HEX');\r\n\r\n return hash;\r\n};\r\n\r\nexport const toFirstCapitalLetter = (text: string) => {\r\n return text[0].toUpperCase() + text.slice(1);\r\n};\r\n\r\nexport const toFirstLowerCaseLetter = (text: string) => {\r\n if (!text) return;\r\n return text[0].toLocaleLowerCase() + text.slice(1);\r\n};\r\n\r\nexport const camelCaseToPascalCase = (camelCase: string) => {\r\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\r\n};\r\n\r\nexport const capitalizeWord = (word: string): string => {\r\n return word.charAt(0).toUpperCase() + word.slice(1);\r\n};\r\n\r\nexport const replaceInterpolateKeysWithObjectProperties = (string: string, object: Object): string => {\r\n const matches = string.match(regexExpressions.templateInterpolation);\r\n\r\n if (matches)\r\n matches.forEach((match) => { const key = match.slice(2, -2); string = string.replace(match, object[key]) });\r\n\r\n return string;\r\n};","export const convertHeightToPixels = (value: string): number => {\r\n const numberValue: number = parseInt(value, 10);\r\n\r\n if (value.endsWith('vh'))\r\n return numberValue * (window.innerHeight / 100);\r\n else if (value.endsWith('px'))\r\n return numberValue;\r\n\r\n return numberValue;\r\n};\r\n\r\nexport const getDropdownAnimationStates = (\r\n isDropdownOpen: boolean,\r\n dropDownDirection: 'upwards' | 'downwards'\r\n) => {\r\n if (isDropdownOpen)\r\n return dropDownDirection === 'upwards' ? 'openUp' : 'openDown';\r\n\r\n return dropDownDirection === 'upwards' ? 'closeDown' : 'closeUp';\r\n};","import { CollectionSubscription, ResourceSubscription } from 'herum-types/User';\r\n\r\nexport const getSubscriptionWithLastActivityTime = (\r\n subscriptions: CollectionSubscription[] | ResourceSubscription[]\r\n): CollectionSubscription => {\r\n if (!subscriptions?.length)\r\n return null;\r\n\r\n return (subscriptions as CollectionSubscription[])?.reduce((max, subscription) => {\r\n return (new Date(subscription.lastActivityTime) > new Date(max.lastActivityTime)) ? subscription : max;\r\n });\r\n};\r\n\r\nexport const getLastSubscriptionByField = (\r\n subscriptions: CollectionSubscription[] | ResourceSubscription[],\r\n field: string\r\n): CollectionSubscription => {\r\n if (!subscriptions?.length)\r\n return null;\r\n\r\n return (subscriptions as CollectionSubscription[])?.reduce((max, subscription) => {\r\n return (new Date(subscription[field]) > new Date(max[field])) ? subscription : max;\r\n });\r\n};","/**\r\n * @file Automatically generated by barrelsby.\r\n */\r\n\r\nexport * from \"./array\";\r\nexport * from \"./assignment\";\r\nexport * from \"./browser\";\r\nexport * from \"./comparers\";\r\nexport * from \"./date\";\r\nexport * from \"./element\";\r\nexport * from \"./file\";\r\nexport * from \"./hierarchy\";\r\nexport * from \"./number\";\r\nexport * from \"./object\";\r\nexport * from \"./request-helpers\";\r\nexport * from \"./string\";\r\nexport * from \"./style\";\r\nexport * from \"./subscription\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAEO,MAAM,OAAO,GAAG,CAAI,GAAU,KAAS;AAC1C,IAAA,IAAI,CAAC,GAAG;AACJ,QAAA,OAAO,EAAE;IAEb,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACxD;MAEa,cAAc,GAAG,CAAC,KAAW,EAAE,KAAU,KAAI;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzE,IAAA,OAAO,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;AACpD;AAEO,MAAM,8BAA8B,GAAG,CAAC,KAAe,KAAwB;IAClF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI,EAAG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA,CAAC,CAAC,CAAC;AAChF;;AChBO,MAAM,6BAA6B,GAAG,CAAC,KAAK,KAAI;IACrD,OAAO,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM;AACjE;;ACAO,MAAM,iBAAiB,GAAG,CAAC,eAAuB,KAAwB;IAC7E,IAAI,yBAAyB,GAAqB,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC;AAC5F,IAAA,OAAO,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS;AAC7F;AAGO,MAAM,gBAAgB,GAAG,MAAK;AACjC,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS;IACrC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;AAClE,IAAA,IAAI,KAAK;AACL,QAAA,OAAO,KAAK,CAAC,CAAC,CAAC;AAEnB,IAAA,OAAO,SAAS;AACpB;;MCXa,uBAAuB,GAAG,CAA4B,UAAsB,EAAE,cAA6B,KAAI;IACxH,IAAI,mBAAmB,GAA6B,EAAE;IACtD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACtC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;AACrD,YAAA,mBAAmB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAE9H,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM;AACjC,YAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC;AACvC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,mBAAmB;AAC9B;MAEa,gCAAgC,GAAG,CAAwE,SAAqB,EAAE,YAA2B,KAAgB;AACtL,IAAA,MAAM,eAAe,GAAe,SAAS,CAAC,SAAS,CAAC;IACxD,OAAO,eAAe,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClH;MAEa,gCAAgC,GAAG,CAAC,UAAkC,EAAE,eAAuC,KAAI;IAC5H,MAAM,QAAQ,GAAa,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,MAAM,aAAa,GAAa,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;AAE5D,IAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;AACvB,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;AAErC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;AAEnD,YAAA,aAAa,CAAC,OAAO,CAAC,YAAY,IAAG;AACjC,gBAAA,MAAM,cAAc,GAAG,eAAe,CAAC,YAAY,CAAC;AAEpD,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;oBAC/B,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClF,oBAAA,eAAe,CAAC,YAAY,CAAC,GAAG,WAAW;AAE3C,oBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,MAAM;AACrC,wBAAA,OAAO,eAAe,CAAC,YAAY,CAAC;gBAC5C;AACJ,YAAA,CAAC,CAAC;QACN;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,eAAe;AAC1B;AAEO,MAAM,qBAAqB,GAAG,CAAoE,UAAkB,EAAE,UAAkB,EAAE,iBAAyB,KAAsB;AAC5L,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAClH;AACD,IAAA,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAClC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAClH;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,IAAG;QAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;AAE7G,QAAA,OAAO,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAChE,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE;AACzF;MAEa,6BAA6B,GAAG,CAAO,SAAiB,EAAE,UAAkB,KAAY;AACjG,IAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;AAClD,IAAA,MAAM,gBAAgB,GAAW,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE;AACvF,IAAA,MAAM,eAAe,GAAW,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;AAEpF,IAAA,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;AAE7J,IAAA,OAAO,YAAY;AACvB;;ACxEO,MAAM,aAAa,GAAG,CAAC,UAAkB,KAAI;AAChD,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;AAEjC,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AACjC,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;IAE/B,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;AAAE,QAAA,OAAO,kBAAkB;AAElE,IAAA,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,IAAI,EAAE;AACpC;AAEO,MAAM,oBAAoB,GAAG,MAAK;AACrC,IAAA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;AAErB,IAAA,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;AAChC,IAAA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACpD,IAAA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACvD,IAAA,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAA,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAA,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAErE,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,IAAI,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,YAAY,GAAG;AACpF;MAEa,cAAc,GAAG,CAAC,YAAkB,EAAE,IAAU,KAAI;AAC7D,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;IAC1B,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAE1C,IAAA,OAAO,YAAY;AACvB;AAEO,MAAM,iCAAiC,GAAG,CAAC,0BAA0D,KAAY;AACpH,IAAA,IAAI,CAAC,0BAA0B;AAAE,QAAA,OAAO,SAAS;AACjD,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;IACtB,IAAI,iBAAiB,GAAG,0BAA0B,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;IAC5I,IAAI,iBAAiB,GAAG,0BAA0B,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;IAE5I,IAAI,iBAAiB,IAAI,iBAAiB;AAAE,QAAA,OAAO,MAAM;AAEzD,IAAA,IAAI,IAAI,GAAS,IAAI,IAAI,CAAC,iBAAiB,GAAG,0BAA0B,CAAC,WAAW,GAAG,0BAA0B,CAAC,WAAW,CAAC;AAC9H,IAAA,IAAI,GAAW;AAEf,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;IAEpC,IAAI,iBAAiB,EAAE;QACnB,IAAI,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC;QACvD,IAAI,KAAK,GAAG,EAAE;AAAE,YAAA,OAAO,MAAM;QAE7B,GAAG,GAAG,YAAY;IACtB;SACK;QACD,IAAI,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC;AACvD,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAAE,YAAA,OAAO,MAAM;QACxC,IAAI,KAAK,GAAG,EAAE;AAAE,YAAA,OAAO,MAAM;QAE7B,GAAG,GAAG,YAAY;IACtB;IAEA,IAAI,KAAK,IAAI,CAAC;AACV,QAAA,GAAG,IAAI,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO;SACrB,IAAI,MAAM,IAAI,CAAC;AAChB,QAAA,GAAG,IAAI,CAAA,EAAG,MAAM,CAAA,OAAA,CAAS;SACxB,IAAI,KAAK,IAAI,CAAC;AACf,QAAA,GAAG,IAAI,CAAA,EAAG,KAAK,CAAA,OAAA,CAAS;SACvB,IAAI,IAAI,IAAI,CAAC;AACd,QAAA,GAAG,IAAI,CAAA,EAAG,IAAI,CAAA,KAAA,CAAO;SACpB,IAAI,KAAK,IAAI,CAAC;AACf,QAAA,GAAG,IAAI,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO;SACrB,IAAI,OAAO,IAAI,CAAC;AACjB,QAAA,GAAG,IAAI,CAAA,EAAG,OAAO,CAAA,KAAA,CAAO;SACvB,IAAI,OAAO,IAAI,CAAC;AACjB,QAAA,GAAG,IAAI,CAAA,EAAG,OAAO,CAAA,MAAA,CAAQ;;QAEzB,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ;AACvC,IAAA,OAAO,GAAG;AACd;AAEO,MAAM,YAAY,GAAG,CAAC,IAAU,KAAI;AACvC,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;IAEpC,IAAI,GAAG,GAAG,OAAO;IACjB,IAAI,KAAK,IAAI,CAAC;AACV,QAAA,GAAG,IAAI,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO;SACrB,IAAI,MAAM,IAAI,CAAC;AAChB,QAAA,GAAG,IAAI,CAAA,EAAG,MAAM,CAAA,OAAA,CAAS;SACxB,IAAI,KAAK,IAAI,CAAC;AACf,QAAA,GAAG,IAAI,CAAA,EAAG,KAAK,CAAA,OAAA,CAAS;SACvB,IAAI,IAAI,IAAI,CAAC;AACd,QAAA,GAAG,IAAI,CAAA,EAAG,IAAI,CAAA,KAAA,CAAO;SACpB,IAAI,KAAK,IAAI,CAAC;AACf,QAAA,GAAG,IAAI,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO;SACrB,IAAI,OAAO,IAAI,CAAC;AACjB,QAAA,GAAG,IAAI,CAAA,EAAG,OAAO,CAAA,KAAA,CAAO;SACvB,IAAI,OAAO,IAAI,CAAC;AACjB,QAAA,GAAG,IAAI,CAAA,EAAG,OAAO,CAAA,MAAA,CAAQ;;QAEzB,GAAG,GAAG,QAAQ;AAElB,IAAA,OAAO,GAAG;AACd;;ACpHA,MAAM,SAAS,GAAW,EAAE;AAErB,MAAM,uBAAuB,GAAG,CAAC,OAAoB,KAAa;AACrE,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW;AACzC,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;IAEvC,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,aAAa,GAAG,WAAW,IAAI,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;AAC1H;AAEO,MAAM,2BAA2B,GAAG,CAAC,sBAAkC,EAAE,eAAsC,EAAE,QAAmB,EAAE,qBAA8B,KAA8B;AACrM,IAAA,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa;AAC5D,IAAA,MAAM,oBAAoB,GAAG,eAAe,CAAC,WAAW;AAExD,IAAA,qBAAqB,GAAG,qBAAqB,IAAI,eAAe,CAAC,YAAY;IAE7E,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW;IACnE,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY;IAErE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,oBAAoB,GAAG,SAAS,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC;IACvG,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC;AAEpG,IAAA,MAAM,sBAAsB,GAAG,IAAI,GAAG,OAAO;AAC7C,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,sBAAsB,CAAC;AAEtE,IAAA,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE;AACxI;MAEa,oBAAoB,GAAG,CAAC,sBAAkC,EAAE,gBAA0C,KAAI;AACnH,IAAA,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa;AAC5D,IAAA,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAG,gBAAgB;AAEhH,IAAA,MAAM,SAAS,GAAG,CAAC,oBAAoB,GAAG,OAAO,GAAG,WAAW,IAAI,OAAO,GAAG,CAAC;AAC9E,IAAA,MAAM,MAAM,GAAG,CAAC,qBAAqB,GAAG,IAAI,GAAG,YAAY,IAAI,IAAI,GAAG,CAAC;IAEvE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;AACrC,IAAA,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,GAAG;IAEvC,eAAe,CAAC,KAAK,CAAC,mBAAmB,GAAG,UAAU,OAAO,CAAA,EAAA,EAAK,WAAW,CAAA,GAAA,CAAK;IAClF,eAAe,CAAC,KAAK,CAAC,gBAAgB,GAAG,UAAU,IAAI,CAAA,EAAA,EAAK,YAAY,CAAA,GAAA,CAAK;IAC7E,eAAe,CAAC,KAAK,CAAC,YAAY,GAAG,CAAA,EAAG,YAAY,KAAK;IACzD,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,IAAI;AAC1C;AAEO,MAAM,qBAAqB,GAAG,CAAC,sBAAkC,EAAE,sBAAkC,EAAE,cAAuB,EAAE,eAAuB,KAAI;AAC9J,IAAA,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa;IAE5D,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,cAAc,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,GAAG,eAAe,GAAG,CAAC,CAAA,GAAA,CAAK;IAElI,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;QAC1C,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAEhE,QAAA,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QACtC,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,SAAS,IAAI;AAC5C,QAAA,eAAe,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ;IACnD;AACJ;AAEO,MAAM,gBAAgB,GAAG,CAAC,sBAAkC,EAAE,sBAAkC,EAAE,gBAA4B,EAAE,eAAsC,KAAI;AAC7K,IAAA,MAAM,2BAA2B,GAAG,sBAAsB,CAAC,aAAa,CAAC,WAAW;IACpF,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW;IAEnE,MAAM,eAAe,GAAG,gBAAgB,EAAE,aAAa,EAAE,WAAW,IAAI,CAAC;AAEzE,IAAA,MAAM,cAAc,GAAG,2BAA2B,GAAG,eAAe;IACpE,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;IAE9G,MAAM,cAAc,GAAG,eAAe,EAAE,MAAM,GAAG,sBAAsB,GAAG,CAAC;IAC3E,qBAAqB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,EAAE,eAAe,CAAC;AAEtG,IAAA,OAAO,sBAAsB;AACjC;;ACzEO,MAAM,mBAAmB,GAAG,OAAO,QAAkB,EAAE,QAAgB,EAAE,QAAiB,KAAI;AACjG,IAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,IAAA,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACtE;MAEa,YAAY,GAAG,CAAC,QAAgB,EAAE,IAAiB,KAAI;IAChE,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACjD,IAAA,aAAa,CAAC,IAAI,GAAG,SAAS;AAC9B,IAAA,aAAa,CAAC,QAAQ,GAAG,QAAQ;IACjC,aAAa,CAAC,KAAK,EAAE;IAErB,aAAa,CAAC,MAAM,EAAE;AACtB,IAAA,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC;AAClC;;MCZa,uBAAuB,GAAG,CAAC,KAAe,EAAE,IAA8B,KAAI;AACzF,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AAC/C;;ACJO,MAAM,gBAAgB,GAAG,CAAC,KAAa,KAAY;AACtD,IAAA,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9B;;MCAa,iCAAiC,GAAG,CAAC,WAAmB,EAAE,MAA8B,KAAI;IACrG,IAAI,MAAM,GAAG,EAAE;AAEf,IAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC5C,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACjB,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;;AAE/H,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC;AAErG,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACjB;MAEa,wBAAwB,GAAG,CAAC,UAAe,EAAE,gBAA0B,KAAI;IACpF,IAAI,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzG,IAAA,kBAAkB,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnE,IAAA,OAAO,UAAU;AACrB;;ACfA,MAAM,0BAA0B,GAAW,CAAC,GAAG,EAAE,GAAG,IAAI;AAEjD,MAAM,SAAS,GAAG,CAAC,KAAe,KAAI;IACzC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAI;AAC/B,QAAA,OAAO,IAAI,GAAG,GAAG,GAAG,IAAI;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnB;AAEO,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAE,YAA2C,EAAE,oBAA8B,KAAiB;AACzI,IAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;AAC/B,QAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtJ,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,OAAO;AAClB;AAEO,MAAM,iCAAiC,GAAG,CAAC,iBAAoC,KAAI;AACtF,IAAA,IAAI,iBAAiB;QACjB,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,GAAG,iBAAiB;AAEjG,IAAA,IAAI,OAAO,GAAgB,IAAI,WAAW,EAAE;IAE5C,IAAI,WAAW,EAAE;AACb,QAAA,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE;YAC1B,EAAE,GAAG,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE;YACjE,EAAE,GAAG,EAAE,kBAAkB,CAAC,wBAAwB,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAC/E,EAAE,GAAG,EAAE,kBAAkB,CAAC,sCAAsC,EAAE,KAAK,EAAE,gCAAgC;AAC5G,SAAA,CAAC;IACN;AAEA,IAAA,OAAO,OAAO;AAClB;AAEO,MAAM,uBAAuB,GAAG,CAAC,cAAoB,KAAI;AAC5D,IAAA,IAAI,CAAC,cAAc;QAAE;AACrB,IAAA,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,oBAAoB,GAAG,0BAA0B,IAAI,CAAA,GAAA,EAAM,cAAc,EAAE,WAAW,EAAE,CAAA,CAAE,GAAG,EAAE;AACzJ;;ACnCO,MAAM,MAAM,GAAG,CAAC,MAAc,KAAI;IACrC,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC;AACzC,IAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrB,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAEhC,IAAA,OAAO,IAAI;AACf;AAEO,MAAM,oBAAoB,GAAG,CAAC,IAAY,KAAI;AACjD,IAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD;AAEO,MAAM,sBAAsB,GAAG,CAAC,IAAY,KAAI;AACnD,IAAA,IAAI,CAAC,IAAI;QAAE;AACX,IAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD;AAEO,MAAM,qBAAqB,GAAG,CAAC,SAAiB,KAAI;AACvD,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE;AAEO,MAAM,cAAc,GAAG,CAAC,IAAY,KAAY;AACnD,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD;MAEa,0CAA0C,GAAG,CAAC,MAAc,EAAE,MAAc,KAAY;IACjG,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AAEpE,IAAA,IAAI,OAAO;AACP,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI,EAAG,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;AAE/G,IAAA,OAAO,MAAM;AACjB;;ACpCO,MAAM,qBAAqB,GAAG,CAAC,KAAa,KAAY;IAC7D,MAAM,WAAW,GAAW,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;AAE/C,IAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,OAAO,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;AAC5C,SAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3B,QAAA,OAAO,WAAW;AAEpB,IAAA,OAAO,WAAW;AACpB;MAEa,0BAA0B,GAAG,CACxC,cAAuB,EACvB,iBAA0C,KACxC;AACF,IAAA,IAAI,cAAc;QAChB,OAAO,iBAAiB,KAAK,SAAS,GAAG,QAAQ,GAAG,UAAU;IAEhE,OAAO,iBAAiB,KAAK,SAAS,GAAG,WAAW,GAAG,SAAS;AAClE;;ACjBO,MAAM,mCAAmC,GAAG,CACjD,aAAgE,KACtC;IAC1B,IAAI,CAAC,aAAa,EAAE,MAAM;AACxB,QAAA,OAAO,IAAI;IAEb,OAAQ,aAA0C,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,YAAY,KAAI;QAC/E,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,YAAY,GAAG,GAAG;AACxG,IAAA,CAAC,CAAC;AACJ;MAEa,0BAA0B,GAAG,CACxC,aAAgE,EAChE,KAAa,KACa;IAC1B,IAAI,CAAC,aAAa,EAAE,MAAM;AACxB,QAAA,OAAO,IAAI;IAEb,OAAQ,aAA0C,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,YAAY,KAAI;QAC/E,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,YAAY,GAAG,GAAG;AACpF,IAAA,CAAC,CAAC;AACJ;;ACvBA;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"herum-shared-utils.mjs","sources":["../../../projects/herum-shared/utils/array.ts","../../../projects/herum-shared/utils/assignment.ts","../../../projects/herum-shared/utils/browser.ts","../../../projects/herum-shared/utils/comparers.ts","../../../projects/herum-shared/utils/date.ts","../../../projects/herum-shared/utils/element.ts","../../../projects/herum-shared/utils/file.ts","../../../projects/herum-shared/utils/hierarchy.ts","../../../projects/herum-shared/utils/number.ts","../../../projects/herum-shared/utils/object.ts","../../../projects/herum-shared/utils/request-helpers.ts","../../../projects/herum-shared/utils/string.ts","../../../projects/herum-shared/utils/style.ts","../../../projects/herum-shared/utils/subscription.ts","../../../projects/herum-shared/utils/index.ts","../../../projects/herum-shared/utils/herum-shared-utils.ts"],"sourcesContent":["import { IdentifiedEntity } from 'herum-types/Shared';\r\n\r\nexport const flatten = <T>(arr: T[][]): T[] => {\r\n if (!arr)\r\n return [];\r\n\r\n return arr.reduce((acc, cur) => acc.concat(cur), []);\r\n};\r\n\r\nexport const findKeyByValue = (array: {}[], value: any) => {\r\n const entry = array.find(object => Object.values(object).includes(value));\r\n return entry ? Object.keys(entry)[0] : undefined;\r\n};\r\n\r\nexport const parseToIdentifiedEntitiesArray = (array: string[]): IdentifiedEntity[] => {\r\n return array.map((name, index) => { return { name, id: index.toString() } });\r\n};","export const getAssignmentStateDisplayName = (state) => {\r\n return state == 0 ? 'שיבוץ זמני' : state == 1 ? 'אכ\"א' : 'אג\"ת';\r\n};","import { regexExpressions } from \"herum-shared/constants\";\r\n\r\nexport const getBrowserVersion = (browserRegexExp: RegExp): number | undefined => {\r\n let browserVersionMatchResult: RegExpMatchArray = navigator.userAgent.match(browserRegexExp);\r\n return browserVersionMatchResult ? parseInt(browserVersionMatchResult[1], 10) : undefined;\r\n};\r\n\r\n\r\nexport const getChromeVersion = () => {\r\n const userAgent = navigator.userAgent;\r\n const match = userAgent.match(regexExpressions.chromeVersionRegex);\r\n if (match)\r\n return match[1];\r\n\r\n return undefined;\r\n};","import { cloneDeep } from \"lodash\";\r\n\r\nexport type ListsDiffs<Item extends { [innerItemProperty: string]: { id: string } } | {}> = { deletedItems: Item[], newItems: Item[], updatedItems: Item[] };\r\n\r\nexport const getDifferencesInObjects = <MainObject, ObjectToCheck>(mainObject: MainObject, comparedObject: ObjectToCheck) => {\r\n let changedFieldsObject: { [key: string]: any[] } = {};\r\n Object.keys(comparedObject).forEach(key => {\r\n if (Array.isArray(comparedObject[key]) && mainObject[key])\r\n changedFieldsObject[key] = mainObject[key].filter(item => !comparedObject[key].map(object => object.id).includes(item.id));\r\n\r\n if (!changedFieldsObject[key]?.length)\r\n delete changedFieldsObject[key];\r\n })\r\n\r\n return changedFieldsObject;\r\n};\r\n\r\nexport const removeCommonObjectsBetweenArrays = <MainItem extends { id: string; }, CheckedItem extends { id: string; }>(mainArray: MainItem[], checkedArray: CheckedItem[]): MainItem[] => {\r\n const clonedMainArray: MainItem[] = cloneDeep(mainArray);\r\n return clonedMainArray.filter(mainItem => !checkedArray.some(comparedItem => comparedItem.id === mainItem.id));\r\n};\r\n\r\nexport const removeCommonItemsInObjectsFields = (mainObject: { [key: string]: any }, secondaryObject: { [key: string]: any }) => {\r\n const mainKeys: string[] = Object.keys(mainObject);\r\n const secondaryKeys: string[] = Object.keys(secondaryObject);\r\n\r\n mainKeys.forEach(mainKey => {\r\n const mainValue = mainObject[mainKey];\r\n\r\n if (Array.isArray(mainValue)) {\r\n const mainItemsIds = mainValue.map(item => item.id);\r\n\r\n secondaryKeys.forEach(secondaryKey => {\r\n const secondaryValue = secondaryObject[secondaryKey];\r\n\r\n if (Array.isArray(secondaryValue)) {\r\n const uniqueItems = secondaryValue.filter(item => !mainItemsIds.includes(item.id));\r\n secondaryObject[secondaryKey] = uniqueItems;\r\n\r\n if (!secondaryObject[secondaryKey].length)\r\n delete secondaryObject[secondaryKey];\r\n }\r\n });\r\n }\r\n });\r\n\r\n return secondaryObject;\r\n};\r\n\r\nexport const getDifferencesInLists = <Item extends { [innerItemProperty: string]: { id: string } } | {}>(sourceList: Item[], editedList: Item[], innerItemProperty: string): ListsDiffs<Item> => {\r\n const newItems = editedList.filter(\r\n newItem => !sourceList.some(sourceItem => sourceItem[innerItemProperty]?.id === newItem[innerItemProperty]?.id)\r\n );\r\n const deletedItems = sourceList.filter(\r\n sourceItem => !editedList.some(newItem => newItem[innerItemProperty]?.id === sourceItem[innerItemProperty]?.id)\r\n );\r\n\r\n const updatedItems = editedList.filter(item => {\r\n const prev = sourceList.find(sourceItem => sourceItem[innerItemProperty]?.id === item[innerItemProperty]?.id);\r\n\r\n return prev && JSON.stringify(prev) !== JSON.stringify(item);\r\n });\r\n\r\n return { deletedItems: deletedItems, newItems: newItems, updatedItems: updatedItems };\r\n};\r\n\r\nexport const removeDuplicatesBetweenArrays = <Item>(mainArray: Item[], otherArray: Item[]): Item[] => {\r\n const getUserId = (u: any) => u?.user?.id ?? u?.id;\r\n const clonedOtherArray: Item[] = Array.isArray(otherArray) ? cloneDeep(otherArray) : [];\r\n const clonedMainArray: Item[] = Array.isArray(mainArray) ? cloneDeep(mainArray) : [];\r\n\r\n const mergedArrays = [...clonedMainArray, ...clonedOtherArray].filter((user, index, arr) => arr.findIndex((u) => getUserId(u) === getUserId(user)) === index);\r\n\r\n return mergedArrays;\r\n};","import { MicroResourceAuthorizationBase } from \"herum-types/Lessons\";\r\n\r\nexport const convertToDate = (dateString: string) => {\r\n const date = new Date(dateString);\r\n\r\n const day = date.getDate();\r\n const month = date.getMonth() + 1;\r\n const year = date.getFullYear();\r\n\r\n if (day == 1 && month == 1 && year == 1) return '(התאריך לא קיים)'\r\n\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\nexport const generateNewTimeStamp = () => {\r\n let date = new Date();\r\n\r\n let year = date.getUTCFullYear();\r\n let month = String(date.getUTCMonth() + 1).padStart(2, '0');\r\n let day = String(date.getUTCDate()).padStart(2, '0');\r\n let hours = String(date.getUTCHours()).padStart(2, '0');\r\n let minutes = String(date.getUTCMinutes()).padStart(2, '0');\r\n let seconds = String(date.getUTCSeconds()).padStart(2, '0');\r\n let milliseconds = String(date.getUTCMilliseconds()).padStart(3, '0');\r\n\r\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}Z`;\r\n};\r\n\r\nexport const updateFullYear = (dateToUpdate: Date, date: Date) => {\r\n const year = date.getFullYear();\r\n const month = date.getMonth();\r\n const day = date.getDate();\r\n dateToUpdate.setFullYear(year, month, day);\r\n\r\n return dateToUpdate;\r\n};\r\n\r\nexport const getMicroResourceTextualTimeString = (microResourceAuthorization: MicroResourceAuthorizationBase): string => {\r\n if (!microResourceAuthorization) return 'לא קיים'\r\n const now = new Date();\r\n let isOpeningTimePass = microResourceAuthorization.openingTime && new Date(microResourceAuthorization.openingTime).getTime() < now.getTime();\r\n let isClosingTimePass = microResourceAuthorization.closingTime && new Date(microResourceAuthorization.closingTime).getTime() < now.getTime();\r\n\r\n if (isClosingTimePass && isOpeningTimePass) return 'סגור';\r\n\r\n let time: Date = new Date(isOpeningTimePass ? microResourceAuthorization.closingTime : microResourceAuthorization.openingTime)\r\n let res: string;\r\n\r\n const diff = Math.abs(time.getTime() - now.getTime());\r\n const seconds = Math.floor(diff / 1000);\r\n const minutes = Math.floor(seconds / 60);\r\n const hours = Math.floor(minutes / 60);\r\n const days = Math.floor(hours / 24);\r\n const weeks = Math.floor(days / 7);\r\n const months = Math.floor(days / 30);\r\n const years = Math.floor(days / 365);\r\n\r\n if (isOpeningTimePass) {\r\n time = new Date(microResourceAuthorization.closingTime)\r\n if (years > 10) return 'פתוח'\r\n\r\n res = \"יסגר בעוד \"\r\n }\r\n else {\r\n time = new Date(microResourceAuthorization.openingTime);\r\n if (isNaN(time.getTime())) return 'סגור';\r\n if (years > 10) return 'סגור'\r\n\r\n res = \"יפתח בעוד \"\r\n }\r\n\r\n if (years != 0)\r\n res += `${years} שנים`;\r\n else if (months != 0)\r\n res += `${months} חודשים`;\r\n else if (weeks != 0)\r\n res += `${weeks} שבועות`;\r\n else if (days != 0)\r\n res += `${days} ימים`;\r\n else if (hours != 0)\r\n res += `${hours} שעות`;\r\n else if (minutes != 0)\r\n res += `${minutes} דקות`;\r\n else if (seconds != 0)\r\n res += `${seconds} שניות`;\r\n else\r\n return res.split(\" \")[0] + ' עכשיו';\r\n return res;\r\n};\r\n\r\nexport const getTimeAsAgo = (time: Date) => {\r\n const diff = new Date().getTime() - time.getTime();\r\n const seconds = Math.floor(diff / 1000);\r\n const minutes = Math.floor(seconds / 60);\r\n const hours = Math.floor(minutes / 60);\r\n const days = Math.floor(hours / 24);\r\n const weeks = Math.floor(days / 7);\r\n const months = Math.floor(days / 30);\r\n const years = Math.floor(days / 365);\r\n\r\n let res = 'לפני ';\r\n if (years != 0)\r\n res += `${years} שנים`;\r\n else if (months != 0)\r\n res += `${months} חודשים`;\r\n else if (weeks != 0)\r\n res += `${weeks} שבועות`;\r\n else if (days != 0)\r\n res += `${days} ימים`;\r\n else if (hours != 0)\r\n res += `${hours} שעות`;\r\n else if (minutes != 0)\r\n res += `${minutes} דקות`;\r\n else if (seconds != 0)\r\n res += `${seconds} שניות`;\r\n else\r\n res = ' עכשיו';\r\n\r\n return res;\r\n};","import { ElementRef, QueryList } from \"@angular/core\";\r\nimport { EntitiesLayoutProperties } from \"herum-types/Shared\";\r\n\r\nconst entityGap: number = 12;\r\n\r\nexport const isTruncatedTitleElement = (element: HTMLElement): boolean => {\r\n const renderedWidth = element.offsetWidth;\r\n const scrollWidth = element.scrollWidth;\r\n\r\n return element.innerText.includes('...') || renderedWidth < scrollWidth || element.scrollHeight > element.offsetHeight;\r\n};\r\n\r\nexport const getEntitiesLayoutProperties = (entitiesWrapperElement: ElementRef, entitiesElement: QueryList<ElementRef>, entities: unknown[], entitiesWrapperHeight?: number): EntitiesLayoutProperties => {\r\n const entitiesWrapper = entitiesWrapperElement.nativeElement;\r\n const entitiesWrapperWidth = entitiesWrapper.clientWidth;\r\n\r\n entitiesWrapperHeight = entitiesWrapperHeight ?? entitiesWrapper.clientHeight;\r\n\r\n const entityWidth = entitiesElement.first.nativeElement.offsetWidth;\r\n const entityHeight = entitiesElement.first.nativeElement.offsetHeight;\r\n\r\n const columns = Math.max(1, Math.floor((entitiesWrapperWidth + entityGap) / (entityWidth + entityGap)));\r\n let rows = Math.max(1, Math.floor((entitiesWrapperHeight + entityGap) / (entityHeight + entityGap)));\r\n\r\n const numberOfElementsInPage = rows * columns;\r\n const totalPages = Math.ceil(entities.length / numberOfElementsInPage);\r\n\r\n return { numberOfElementsInPage, totalPages, columns, rows, entityWidth, entityHeight, entitiesWrapperHeight, entitiesWrapperWidth };\r\n};\r\n\r\nexport const setElementsGridStyle = (entitiesWrapperElement: ElementRef, layoutProperties: EntitiesLayoutProperties) => {\r\n const entitiesWrapper = entitiesWrapperElement.nativeElement;\r\n let { columns, rows, entityWidth, entityHeight, entitiesWrapperWidth, entitiesWrapperHeight } = layoutProperties;\r\n\r\n const columnGap = (entitiesWrapperWidth - columns * entityWidth) / columns - 1;\r\n const rowGap = (entitiesWrapperHeight - rows * entityHeight) / rows - 1;\r\n\r\n let gap = Math.min(columnGap, rowGap);\r\n gap = gap < entityGap ? entityGap : gap;\r\n\r\n entitiesWrapper.style.gridTemplateColumns = `repeat(${columns}, ${entityWidth}px)`;\r\n entitiesWrapper.style.gridTemplateRows = `repeat(${rows}, ${entityHeight}px)`;\r\n entitiesWrapper.style.gridAutoRows = `${entityHeight} px`;\r\n entitiesWrapper.style.gap = `${gap}px`;\r\n};\r\n\r\nexport const setNavFlexLayoutStyle = (entitiesSectionElement: ElementRef, entitiesWrapperElement: ElementRef, showNavButtons: boolean, navButtonsWidth: number) => {\r\n const entitiesWrapper = entitiesWrapperElement.nativeElement;\r\n\r\n entitiesWrapper.style.width = `calc(100% - ${showNavButtons || entitiesWrapper.style.display === 'grid' ? navButtonsWidth : 0}px)`;\r\n\r\n if (entitiesWrapper.style.display !== 'flex') {\r\n entitiesSectionElement.nativeElement.style.alignItems = 'center';\r\n\r\n entitiesWrapper.style.display = 'flex';\r\n entitiesWrapper.style.gap = `${entityGap}px`;\r\n entitiesWrapper.style.justifyContent = 'normal';\r\n }\r\n};\r\n\r\nexport const setNavFlexLayout = (entitiesSectionElement: ElementRef, entitiesWrapperElement: ElementRef, navButtonElement: ElementRef, entitiesElement: QueryList<ElementRef>) => {\r\n const entitiesSectionElementWidth = entitiesSectionElement.nativeElement.clientWidth;\r\n const cardWidth = entitiesElement.first?.nativeElement?.clientWidth;\r\n\r\n const navButtonsWidth = navButtonElement?.nativeElement?.offsetWidth ?? 0;\r\n\r\n const availableWidth = entitiesSectionElementWidth - navButtonsWidth;\r\n const numberOfElementsInPage = Math.max(1, Math.floor((availableWidth + entityGap) / (cardWidth + entityGap)));\r\n\r\n const showNavButtons = entitiesElement?.length - numberOfElementsInPage > 0;\r\n setNavFlexLayoutStyle(entitiesSectionElement, entitiesWrapperElement, showNavButtons, navButtonsWidth);\r\n\r\n return numberOfElementsInPage;\r\n};\r\n","export const getDeserializedFile = async (response: Response, fileName: string, fileType?: string) => {\r\n const blob = await response.blob();\r\n return new File([blob], fileName, { type: fileType ?? blob.type });\r\n};\r\n\r\nexport const downloadFile = (fileName: string, data: File | Blob) => {\r\n const objectUrl = URL.createObjectURL(data);\r\n const anchorElement = document.createElement('a');\r\n anchorElement.href = objectUrl;\r\n anchorElement.download = fileName;\r\n anchorElement.click();\r\n\r\n anchorElement.remove();\r\n URL.revokeObjectURL(objectUrl);\r\n};","import { FullHierarchyPartsPlaces } from \"herum-types/Enums\";\r\n\r\nexport const getHierarchyPartIfExist = (parts: string[], part: FullHierarchyPartsPlaces) => {\r\n return parts.length > part ? parts[part] : '';\r\n};","export const bytesToMegabytes = (bytes: number): number => {\r\n return bytes / (1024 ** 2);\r\n};","import { types } from \"herum-shared/constants\";\r\n\r\nexport const remainJustWantedValueInDictionary = (wantedValue: string, fields: { [key: string]: any }) => {\r\n let object = {};\r\n\r\n Object.entries(fields).forEach(([key, value]) => {\r\n (Array.isArray(value)) ?\r\n object[key] = value.map(item => (typeof item === types.object ? { [wantedValue]: item[wantedValue] } : { [wantedValue]: item }))\r\n :\r\n object[key] = (typeof value === types.object ? { [wantedValue]: value[wantedValue] } : value);\r\n\r\n });\r\n return object;\r\n};\r\n\r\nexport const removeUnwantedProperties = (baseObject: any, wantedProperties: string[]) => {\r\n let unwantedProperties = Object.keys(baseObject).filter(property => !wantedProperties.includes(property))\r\n unwantedProperties.forEach(property => delete baseObject[property])\r\n return baseObject;\r\n};","import { HttpHeaders } from \"@angular/common/http\";\r\nimport { minuteInMilliseconds, uploadsManagerKeys } from \"herum-shared/constants\";\r\nimport { DependentMetadata } from \"herum-types/uploads-manager\";\r\n\r\nconst safetyMarginInMilliseconds: number = 2 * 60 * 1000;\r\n\r\nexport const buildPath = (parts: string[]) => {\r\n return parts.reduce((path, part) => {\r\n return path + '/' + part;\r\n }, '').slice(1);\r\n};\r\n\r\nexport const setHeaders = (headers: HttpHeaders, headersToSet: { key: string, value: any }[], isEncodeURIComponent?: boolean): HttpHeaders => {\r\n headersToSet.forEach(headerToSet => {\r\n headers = headers.set(headerToSet.key, isEncodeURIComponent ? encodeURIComponent((headerToSet.value).toString()) : (headerToSet.value).toString());\r\n });\r\n return headers;\r\n};\r\n\r\nexport const convertDependentMetadataToHeaders = (dependentMetadata: DependentMetadata) => {\r\n if (dependentMetadata)\r\n var { dependentId, commonDependentsId, numberOfObservableArrowFunctions } = dependentMetadata;\r\n\r\n let headers: HttpHeaders = new HttpHeaders();\r\n\r\n if (dependentId) {\r\n headers = setHeaders(headers, [\r\n { key: uploadsManagerKeys.dependentIdHeader, value: dependentId },\r\n { key: uploadsManagerKeys.commonDependentsIdHeader, value: commonDependentsId },\r\n { key: uploadsManagerKeys.numberOfObservableArrowFunctionsHeader, value: numberOfObservableArrowFunctions }\r\n ]);\r\n }\r\n\r\n return headers;\r\n};\r\n\r\nexport const getVersionPathParameter = (lastUpdateTime: Date) => {\r\n if (!lastUpdateTime) return;\r\n return (Date.now() - lastUpdateTime?.getTime() < 10 * minuteInMilliseconds + safetyMarginInMilliseconds) ? `?v=${lastUpdateTime?.toISOString()}` : '';\r\n};","import { regexExpressions } from \"herum-shared/constants\";\r\n\r\nimport jsSHA from 'jssha';\r\n\r\nexport const toHash = (source: string) => {\r\n let shaObj = new jsSHA('SHA-256', 'TEXT');\r\n shaObj.update(source);\r\n let hash = shaObj.getHash('HEX');\r\n\r\n return hash;\r\n};\r\n\r\nexport const toFirstCapitalLetter = (text: string) => {\r\n return text[0].toUpperCase() + text.slice(1);\r\n};\r\n\r\nexport const toFirstLowerCaseLetter = (text: string) => {\r\n if (!text) return;\r\n return text[0].toLocaleLowerCase() + text.slice(1);\r\n};\r\n\r\nexport const camelCaseToPascalCase = (camelCase: string) => {\r\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\r\n};\r\n\r\nexport const capitalizeWord = (word: string): string => {\r\n return word.charAt(0).toUpperCase() + word.slice(1);\r\n};\r\n\r\nexport const replaceInterpolateKeysWithObjectProperties = (string: string, object: Object): string => {\r\n const matches = string.match(regexExpressions.templateInterpolation);\r\n\r\n if (matches)\r\n matches.forEach((match) => { const key = match.slice(2, -2); string = string.replace(match, object[key]) });\r\n\r\n return string;\r\n};","export const convertHeightToPixels = (value: string): number => {\r\n const numberValue: number = parseInt(value, 10);\r\n\r\n if (value.endsWith('vh'))\r\n return numberValue * (window.innerHeight / 100);\r\n else if (value.endsWith('px'))\r\n return numberValue;\r\n\r\n return numberValue;\r\n};\r\n\r\nexport const getDropdownAnimationStates = (\r\n isDropdownOpen: boolean,\r\n dropDownDirection: 'upwards' | 'downwards'\r\n) => {\r\n if (isDropdownOpen)\r\n return dropDownDirection === 'upwards' ? 'openUp' : 'openDown';\r\n\r\n return dropDownDirection === 'upwards' ? 'closeDown' : 'closeUp';\r\n};","import { CollectionSubscription, ResourceSubscription } from 'herum-types/User';\r\n\r\nexport const getSubscriptionWithLastActivityTime = (\r\n subscriptions: CollectionSubscription[] | ResourceSubscription[]\r\n): CollectionSubscription => {\r\n if (!subscriptions?.length)\r\n return null;\r\n\r\n return (subscriptions as CollectionSubscription[])?.reduce((max, subscription) => {\r\n return (new Date(subscription.lastActivityTime) > new Date(max.lastActivityTime)) ? subscription : max;\r\n });\r\n};\r\n\r\nexport const getLastSubscriptionByField = (\r\n subscriptions: CollectionSubscription[] | ResourceSubscription[],\r\n field: string\r\n): CollectionSubscription => {\r\n if (!subscriptions?.length)\r\n return null;\r\n\r\n return (subscriptions as CollectionSubscription[])?.reduce((max, subscription) => {\r\n return (new Date(subscription[field]) > new Date(max[field])) ? subscription : max;\r\n });\r\n};","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./array\";\nexport * from \"./assignment\";\nexport * from \"./browser\";\nexport * from \"./comparers\";\nexport * from \"./date\";\nexport * from \"./element\";\nexport * from \"./file\";\nexport * from \"./hierarchy\";\nexport * from \"./number\";\nexport * from \"./object\";\nexport * from \"./request-helpers\";\nexport * from \"./string\";\nexport * from \"./style\";\nexport * from \"./subscription\";\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-validators.mjs","sources":["../../../projects/herum-shared/validators/formCollectionNameValidator.ts","../../../projects/herum-shared/validators/idValidator.ts","../../../projects/herum-shared/validators/isUniqueIdValidator.ts","../../../projects/herum-shared/validators/validatorsErrorMessages.ts","../../../projects/herum-shared/validators/index.ts","../../../projects/herum-shared/validators/herum-shared-validators.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function formCollectionNameValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n return control.value?.length >= 35 ?\r\n { formCollectionNameValidator: true } : null;\r\n };\r\n}","import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\r\n\r\nexport function validateIDNumber(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = control.value;\r\n if (Validators.required(control) || !isValidIDNumber(value)) {\r\n return { invalidIDNumber: { value } };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nfunction isValidIDNumber(aId: number | string): boolean {\r\n let id_num: string = aId.toString();\r\n\r\n if (id_num.length !== 9)\r\n return false;\r\n\r\n const id_12_digits: number[] = [1, 2, 1, 2, 1, 2, 1, 2, 1];\r\n\r\n let result: number = 0;\r\n for (let i = 0; i < 9; i++) {\r\n let num: number = parseInt(id_num[i]) * id_12_digits[i];\r\n num = num >= 10 ? Math.floor(num / 10) + (num % 10) : num;\r\n result += num;\r\n }\r\n\r\n return result % 10 === 0;\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { AbstractControl, AsyncValidatorFn } from '@angular/forms';\r\nimport { EMPTY, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nlet initialId: string = '';\r\n\r\nexport function isUniqueIdValidator(path: string, fieldName: string, http: HttpClient, isEditMode: boolean = false): AsyncValidatorFn {\r\n return (control: AbstractControl): Observable<any | null> => {\r\n if (isEditMode && control.pristine) {\r\n if (control.value)\r\n initialId = control.value;\r\n\r\n return of(null);\r\n }\r\n\r\n if (isEditMode && control.value === initialId)\r\n return of(null);\r\n\r\n return http.post(path, { [fieldName]: control.value })\r\n .pipe(\r\n map(() => null),\r\n catchError(error => {\r\n if (error.status === 409) {\r\n control.setErrors({ isUniqueIdValidator: true });\r\n return EMPTY;\r\n }\r\n\r\n return throwError(error);\r\n })\r\n )\r\n }\r\n}","import { validatorsNames, formsErrorMessages } from 'herum-shared/constants';\r\n\r\nexport const requiredErrorMessage = { [validatorsNames.required]: formsErrorMessages.requiredField };\r\n\r\nexport const validatorsErrorMessages: { [key: string]: { [key: string]: string } } = {\r\n militaryId: {\r\n [validatorsNames.isUniqueIdValidator]: formsErrorMessages.militaryIdIsUsed,\r\n [validatorsNames.pattern]: formsErrorMessages.notValidMilitarylId,\r\n ...requiredErrorMessage\r\n },\r\n personalId: {\r\n [validatorsNames.isUniqueIdValidator]: formsErrorMessages.personalIdIsUsed,\r\n [validatorsNames.invalidIDNumber]: formsErrorMessages.notValidPersonalId,\r\n ...requiredErrorMessage\r\n }\r\n}","/**\r\n * @file Automatically generated by barrelsby.\r\n */\r\n\r\nexport * from \"./formCollectionNameValidator\";\r\nexport * from \"./idValidator\";\r\nexport * from \"./isUniqueIdValidator\";\r\nexport * from \"./validatorsErrorMessages\";\r\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-validators.mjs","sources":["../../../projects/herum-shared/validators/formCollectionNameValidator.ts","../../../projects/herum-shared/validators/idValidator.ts","../../../projects/herum-shared/validators/isUniqueIdValidator.ts","../../../projects/herum-shared/validators/validatorsErrorMessages.ts","../../../projects/herum-shared/validators/index.ts","../../../projects/herum-shared/validators/herum-shared-validators.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function formCollectionNameValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n return control.value?.length >= 35 ?\r\n { formCollectionNameValidator: true } : null;\r\n };\r\n}","import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\r\n\r\nexport function validateIDNumber(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = control.value;\r\n if (Validators.required(control) || !isValidIDNumber(value)) {\r\n return { invalidIDNumber: { value } };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nfunction isValidIDNumber(aId: number | string): boolean {\r\n let id_num: string = aId.toString();\r\n\r\n if (id_num.length !== 9)\r\n return false;\r\n\r\n const id_12_digits: number[] = [1, 2, 1, 2, 1, 2, 1, 2, 1];\r\n\r\n let result: number = 0;\r\n for (let i = 0; i < 9; i++) {\r\n let num: number = parseInt(id_num[i]) * id_12_digits[i];\r\n num = num >= 10 ? Math.floor(num / 10) + (num % 10) : num;\r\n result += num;\r\n }\r\n\r\n return result % 10 === 0;\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { AbstractControl, AsyncValidatorFn } from '@angular/forms';\r\nimport { EMPTY, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nlet initialId: string = '';\r\n\r\nexport function isUniqueIdValidator(path: string, fieldName: string, http: HttpClient, isEditMode: boolean = false): AsyncValidatorFn {\r\n return (control: AbstractControl): Observable<any | null> => {\r\n if (isEditMode && control.pristine) {\r\n if (control.value)\r\n initialId = control.value;\r\n\r\n return of(null);\r\n }\r\n\r\n if (isEditMode && control.value === initialId)\r\n return of(null);\r\n\r\n return http.post(path, { [fieldName]: control.value })\r\n .pipe(\r\n map(() => null),\r\n catchError(error => {\r\n if (error.status === 409) {\r\n control.setErrors({ isUniqueIdValidator: true });\r\n return EMPTY;\r\n }\r\n\r\n return throwError(error);\r\n })\r\n )\r\n }\r\n}","import { validatorsNames, formsErrorMessages } from 'herum-shared/constants';\r\n\r\nexport const requiredErrorMessage = { [validatorsNames.required]: formsErrorMessages.requiredField };\r\n\r\nexport const validatorsErrorMessages: { [key: string]: { [key: string]: string } } = {\r\n militaryId: {\r\n [validatorsNames.isUniqueIdValidator]: formsErrorMessages.militaryIdIsUsed,\r\n [validatorsNames.pattern]: formsErrorMessages.notValidMilitarylId,\r\n ...requiredErrorMessage\r\n },\r\n personalId: {\r\n [validatorsNames.isUniqueIdValidator]: formsErrorMessages.personalIdIsUsed,\r\n [validatorsNames.invalidIDNumber]: formsErrorMessages.notValidPersonalId,\r\n ...requiredErrorMessage\r\n }\r\n}","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./formCollectionNameValidator\";\nexport * from \"./idValidator\";\nexport * from \"./isUniqueIdValidator\";\nexport * from \"./validatorsErrorMessages\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -5016,7 +5016,7 @@ class QuizOpenAnswerQuestionComponent {
5016
5016
  areAnswersBlocked;
5017
5017
  isCheckingMode;
5018
5018
  selectedTextChange;
5019
- correctAnswerChange = new EventEmitter();
5019
+ answerChange = new EventEmitter();
5020
5020
  notesChange = new EventEmitter();
5021
5021
  correctAnswerControl = new FormControl('');
5022
5022
  notes;
@@ -5033,7 +5033,7 @@ class QuizOpenAnswerQuestionComponent {
5033
5033
  }
5034
5034
  ngOnInit() {
5035
5035
  this.correctAnswerControl.valueChanges.pipe(takeUntil(this.destroySubject$))
5036
- .subscribe(freeText => this.correctAnswerChange.emit(freeText));
5036
+ .subscribe(freeText => this.answerChange.emit(freeText));
5037
5037
  }
5038
5038
  _notesChange(notes) {
5039
5039
  this.notesChange.emit(notes);
@@ -5043,7 +5043,7 @@ class QuizOpenAnswerQuestionComponent {
5043
5043
  this.destroySubject$.complete();
5044
5044
  }
5045
5045
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizOpenAnswerQuestionComponent, deps: [{ token: i4$1.AnswerNotesToTextChangesPipe }], target: i0.ɵɵFactoryTarget.Component });
5046
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizOpenAnswerQuestionComponent, isStandalone: false, selector: "quiz-open-answer-question", inputs: { previewMode: "previewMode", question: "question", userQuestion: "userQuestion", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", isCheckingMode: "isCheckingMode", selectedTextChange: "selectedTextChange" }, outputs: { correctAnswerChange: "correctAnswerChange", notesChange: "notesChange" }, usesOnChanges: true, ngImport: i0, template: "<span class=\"answer-title\">{{ isCheckingMode ? '\u05EA\u05E9\u05D5\u05D1\u05EA \u05D4\u05D7\u05E0\u05D9\u05DA' : '\u05DB\u05EA\u05D5\u05D1 \u05EA\u05E9\u05D5\u05D1\u05EA\u05DA' }}\r\n <span *ngIf=\"!isCheckingMode && question?.freeAnswerContent?.charactersLimit > 0\">\r\n (\u05E2\u05D3 {{ question?.freeAnswerContent?.charactersLimit }} \u05EA\u05D5\u05D5\u05D9\u05DD)\r\n </span>\r\n</span>\r\n\r\n<herum-text-area *ngIf=\"!areAnswersRevealed && !isCheckingMode\" [disabled]=\"previewMode || areAnswersBlocked\"\r\n [maxLength]=\"question?.freeAnswerContent?.charactersLimit\" [formControl]=\"correctAnswerControl\" heightMode=\"max\">\r\n</herum-text-area>\r\n\r\n<track-text-changes *ngIf=\"isCheckingMode || areAnswersRevealed\"\r\n [isReadOnly]=\"areAnswersRevealed && !isCheckingMode || !isCheckingMode\" [fontSize]=\"14\"\r\n [selectedChange]=\"selectedTextChange\" [showComments]=\"false\" [baseContent]=\"correctAnswerControl.value\"\r\n [changes]=\"notes\" (changesEmitter)=\"_notesChange($event)\">\r\n</track-text-changes>", styles: [".answer-title{font-size:14px;margin-block-end:8px}herum-text-area,track-text-changes{height:100%;width:100%}::ng-deep track-text-changes .editor-container{padding:0}::ng-deep track-text-changes .text-editor{min-height:180px;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HerumTextAreaComponent, selector: "herum-text-area", inputs: ["placeholder", "disabled", "formControlName", "isValid", "isLoading", "errorMsg", "showErrorMsgGap", "id", "preventMacroKeysPressEvent", "heightMode", "fontSize", "inputValue", "maxLength"], outputs: ["inputValueEmitter"] }, { kind: "component", type: TrackTextChangesComponent, selector: "track-text-changes", inputs: ["changes", "selectedChange", "currentUser", "baseContent", "isReadOnly", "fontSize", "showComments", "allowedActions"], outputs: ["changesEmitter"] }] });
5046
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QuizOpenAnswerQuestionComponent, isStandalone: false, selector: "quiz-open-answer-question", inputs: { previewMode: "previewMode", question: "question", userQuestion: "userQuestion", areAnswersRevealed: "areAnswersRevealed", areAnswersBlocked: "areAnswersBlocked", isCheckingMode: "isCheckingMode", selectedTextChange: "selectedTextChange" }, outputs: { answerChange: "answerChange", notesChange: "notesChange" }, usesOnChanges: true, ngImport: i0, template: "<span class=\"answer-title\">{{ isCheckingMode ? '\u05EA\u05E9\u05D5\u05D1\u05EA \u05D4\u05D7\u05E0\u05D9\u05DA' : '\u05DB\u05EA\u05D5\u05D1 \u05EA\u05E9\u05D5\u05D1\u05EA\u05DA' }}\r\n <span *ngIf=\"!isCheckingMode && question?.freeAnswerContent?.charactersLimit > 0\">\r\n (\u05E2\u05D3 {{ question?.freeAnswerContent?.charactersLimit }} \u05EA\u05D5\u05D5\u05D9\u05DD)\r\n </span>\r\n</span>\r\n\r\n<herum-text-area *ngIf=\"!areAnswersRevealed && !isCheckingMode\" [disabled]=\"previewMode || areAnswersBlocked\"\r\n [maxLength]=\"question?.freeAnswerContent?.charactersLimit\" [formControl]=\"correctAnswerControl\" heightMode=\"max\">\r\n</herum-text-area>\r\n\r\n<track-text-changes *ngIf=\"isCheckingMode || areAnswersRevealed\"\r\n [isReadOnly]=\"areAnswersRevealed && !isCheckingMode || !isCheckingMode\" [fontSize]=\"14\"\r\n [selectedChange]=\"selectedTextChange\" [showComments]=\"false\" [baseContent]=\"correctAnswerControl.value\"\r\n [changes]=\"notes\" (changesEmitter)=\"_notesChange($event)\">\r\n</track-text-changes>", styles: [".answer-title{font-size:14px;margin-block-end:8px}herum-text-area,track-text-changes{height:100%;width:100%}::ng-deep track-text-changes .editor-container{padding:0}::ng-deep track-text-changes .text-editor{min-height:180px;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HerumTextAreaComponent, selector: "herum-text-area", inputs: ["placeholder", "disabled", "formControlName", "isValid", "isLoading", "errorMsg", "showErrorMsgGap", "id", "preventMacroKeysPressEvent", "heightMode", "fontSize", "inputValue", "maxLength"], outputs: ["inputValueEmitter"] }, { kind: "component", type: TrackTextChangesComponent, selector: "track-text-changes", inputs: ["changes", "selectedChange", "currentUser", "baseContent", "isReadOnly", "fontSize", "showComments", "allowedActions"], outputs: ["changesEmitter"] }] });
5047
5047
  }
5048
5048
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QuizOpenAnswerQuestionComponent, decorators: [{
5049
5049
  type: Component,
@@ -5062,7 +5062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
5062
5062
  type: Input
5063
5063
  }], selectedTextChange: [{
5064
5064
  type: Input
5065
- }], correctAnswerChange: [{
5065
+ }], answerChange: [{
5066
5066
  type: Output
5067
5067
  }], notesChange: [{
5068
5068
  type: Output
@@ -10748,7 +10748,8 @@ class UtilsService {
10748
10748
  if (!fileData?.key || !fileData?.bucket)
10749
10749
  return;
10750
10750
  const fileDataKeyWithoutTrailingSlash = fileData.key.endsWith('/') ? fileData.key.slice(0, -1) : fileData.key;
10751
- return buildPath([this.environmentConfig?.environment?.s3ServerPath + fileData.bucket, fileDataKeyWithoutTrailingSlash]);
10751
+ const s3ServerPathWithBucketName = this.environmentConfig?.environment?.s3ServerPath.replace(this.environmentConfig?.environment?.bucketPlaceholderKey, fileData.bucket);
10752
+ return buildPath([s3ServerPathWithBucketName, fileDataKeyWithoutTrailingSlash]);
10752
10753
  }
10753
10754
  fetchFiles(fileId, resourceType, bucket) {
10754
10755
  if (!fileId)
@@ -14275,7 +14276,8 @@ const testEnvironmentConfig = {
14275
14276
  userAction: 'http://hadracha-site-server-augustus.apps.ocp4-prep.d8200.mil/api/Activity',
14276
14277
  lessonSocketBackend: "ws://college-site-server.d8200.mil/lesson",
14277
14278
  keyboardEventsLocalSocketPath: 'ws://localhost:3333',
14278
- systemIdentifier: "hadracha"
14279
+ systemIdentifier: "hadracha",
14280
+ bucketPlaceholderKey: ''
14279
14281
  },
14280
14282
  mongoUpdates: {
14281
14283
  CollectionCategories: {