@rt-tools/utils 0.0.1
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.
- package/README.md +99 -0
- package/fesm2022/rt-tools-utils.mjs +1567 -0
- package/fesm2022/rt-tools-utils.mjs.map +1 -0
- package/package.json +51 -0
- package/types/rt-tools-utils.d.ts +625 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rt-tools-utils.mjs","sources":["../../../projects/utils/src/lib/const/overlay-positions.const.ts","../../../projects/utils/src/lib/const/dash.const.ts","../../../projects/utils/src/lib/directives/icon-outlined.directive.ts","../../../projects/utils/src/lib/functions/date-format.ts","../../../projects/utils/src/lib/functions/date-string-to-date.ts","../../../projects/utils/src/lib/functions/is-date-valid.ts","../../../projects/utils/src/lib/functions/is-equal.ts","../../../projects/utils/src/lib/functions/is-number.ts","../../../projects/utils/src/lib/functions/is-record.ts","../../../projects/utils/src/lib/functions/is-string.ts","../../../projects/utils/src/lib/functions/is-today.ts","../../../projects/utils/src/lib/functions/remove-field-from-obj.ts","../../../projects/utils/src/lib/functions/safe-comparator.ts","../../../projects/utils/src/lib/functions/sorters.ts","../../../projects/utils/src/lib/functions/stringify-http-like-params.ts","../../../projects/utils/src/lib/functions/transform-array-input.ts","../../../projects/utils/src/lib/functions/transform-string-input.ts","../../../projects/utils/src/lib/functions/is-entity-in-array-by-key.ts","../../../projects/utils/src/lib/functions/empty-to-dash.ts","../../../projects/utils/src/lib/functions/is-email.ts","../../../projects/utils/src/lib/functions/is-empty-array.ts","../../../projects/utils/src/lib/functions/is-empty-object.ts","../../../projects/utils/src/lib/functions/is-empty-string.ts","../../../projects/utils/src/lib/functions/is-object.ts","../../../projects/utils/src/lib/functions/is-empty.function.ts","../../../projects/utils/src/lib/functions/debounce.ts","../../../projects/utils/src/lib/functions/has-property-in-chain.ts","../../../projects/utils/src/lib/directives/scroll-to-element.directive.ts","../../../projects/utils/src/lib/directives/hide-tooltip.directive.ts","../../../projects/utils/src/lib/tokens/aside.token.ts","../../../projects/utils/src/lib/tokens/navigator.token.ts","../../../projects/utils/src/lib/services/device-detector.service.ts","../../../projects/utils/src/lib/services/breakpoints.ts","../../../projects/utils/src/lib/services/breakpoints.service.ts","../../../projects/utils/src/lib/directives/navigation.directive.ts","../../../projects/utils/src/lib/directives/tab-query-param.directive.ts","../../../projects/utils/src/lib/directives/scroll.directive.ts","../../../projects/utils/src/lib/directives/escape-key.directive.ts","../../../projects/utils/src/lib/enums/modal-window-size.enum.ts","../../../projects/utils/src/lib/enums/aside-buttons.enum.ts","../../../projects/utils/src/lib/enums/position.enum.ts","../../../projects/utils/src/lib/helpers/type-cast.helper.ts","../../../projects/utils/src/lib/helpers/base.mapper.ts","../../../projects/utils/src/lib/pipes/break-string.pipe.ts","../../../projects/utils/src/lib/pipes/sanitize.pipe.ts","../../../projects/utils/src/lib/pipes/entity-to-string.pipe.ts","../../../projects/utils/src/lib/pipes/empty-to-dash.pipe.ts","../../../projects/utils/src/lib/pipes/equal.pipe.ts","../../../projects/utils/src/lib/pipes/equal-chain.pipe.ts","../../../projects/utils/src/lib/pipes/not-equal.pipe.ts","../../../projects/utils/src/lib/pipes/not-equal-chain.pipe.ts","../../../projects/utils/src/lib/pipes/ternary.pipe.ts","../../../projects/utils/src/lib/validators/comparison.validator.ts","../../../projects/utils/src/lib/validators/arrays-not-empty.validator.ts","../../../projects/utils/src/lib/providers.ts","../../../projects/utils/src/index.ts","../../../projects/utils/src/rt-tools-utils.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const OVERLAY_POSITIONS: Readonly<ConnectedPosition[]> = Object.freeze([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n]);\n","export const DASH: string = '—';\n","import { Directive, HostBinding, input, InputSignalWithTransform } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Directive({\n selector: 'mat-icon[rtIconOutlined]',\n})\nexport class RtIconOutlinedDirective {\n public isOutlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n alias: 'rtIconOutlined',\n transform: (value: BooleanInput) => {\n return Boolean(value);\n },\n });\n\n @HostBinding('style.fontVariationSettings')\n public get fontVariationSettings(): string {\n // eslint-disable-next-line quotes\n return this.isOutlined() ? \"'FILL' 0, 'wght' 700, 'GRAD' 0, 'opsz' 48\" : \"'FILL' 1, 'wght' 700, 'GRAD' 0, 'opsz' 48\";\n }\n}\n","/**\n * Date formatting and parsing utilities (replacement for date-fns)\n *\n * Supported format tokens:\n * - yyyy: 4-digit year (2024)\n * - yy: 2-digit year (24)\n * - MM: 2-digit month (01-12)\n * - M: month (1-12)\n * - dd: 2-digit day (01-31)\n * - d: day (1-31)\n * - HH: 2-digit hour 24h (00-23)\n * - H: hour 24h (0-23)\n * - hh: 2-digit hour 12h (01-12)\n * - h: hour 12h (1-12)\n * - mm: 2-digit minutes (00-59)\n * - m: minutes (0-59)\n * - ss: 2-digit seconds (00-59)\n * - s: seconds (0-59)\n * - SSS: milliseconds (000-999)\n * - a: AM/PM\n * - EEEE: full weekday name (Monday)\n * - EEE: short weekday name (Mon)\n * - MMMM: full month name (January)\n * - MMM: short month name (Jan)\n */\n\nconst WEEKDAYS_SHORT: string[] = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nconst WEEKDAYS_LONG: string[] = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\nconst MONTHS_SHORT: string[] = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst MONTHS_LONG: string[] = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\n/**\n * Escapes special regex characters in a string\n */\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Pads a number with leading zeros\n */\nfunction padStart(value: number, length: number): string {\n return String(value).padStart(length, '0');\n}\n\n/**\n * Checks if a value is a valid Date object\n */\nexport function isDate(value: unknown): value is Date {\n return value instanceof Date && !isNaN(value.getTime());\n}\n\n/**\n * Formats a Date object according to the specified format string\n *\n * @param date - The date to format\n * @param formatStr - The format string (e.g., 'dd.MM.yyyy', 'yyyy-MM-dd HH:mm:ss')\n * @returns Formatted date string\n *\n * @example\n * formatDate(new Date(2024, 0, 15), 'dd.MM.yyyy') // '15.01.2024'\n * formatDate(new Date(2024, 0, 15, 14, 30), 'yyyy-MM-dd HH:mm') // '2024-01-15 14:30'\n */\nexport function formatDate(date: Date, formatStr: string): string {\n if (!isDate(date)) {\n return '';\n }\n\n const year: number = date.getFullYear();\n const month: number = date.getMonth();\n const day: number = date.getDate();\n const hours: number = date.getHours();\n const minutes: number = date.getMinutes();\n const seconds: number = date.getSeconds();\n const milliseconds: number = date.getMilliseconds();\n const dayOfWeek: number = date.getDay();\n\n const hours12: number = hours % 12 || 12;\n const ampm: string = hours < 12 ? 'AM' : 'PM';\n\n // Use placeholders to avoid partial replacements\n const placeholders: Map<string, string> = new Map();\n let placeholderIndex: number = 0;\n\n const createPlaceholder: (value: string) => string = (value: string): string => {\n const placeholder: string = `\\x00${placeholderIndex++}\\x00`;\n placeholders.set(placeholder, value);\n return placeholder;\n };\n\n // Order matters: longer tokens must be replaced first\n // Use exact token matching to prevent partial replacements\n let result: string = formatStr;\n\n // Replace tokens with placeholders (longest first)\n result = result.replace(/yyyy/g, createPlaceholder(String(year)));\n result = result.replace(/yy/g, createPlaceholder(String(year).slice(-2)));\n result = result.replace(/MMMM/g, createPlaceholder(MONTHS_LONG[month]));\n result = result.replace(/MMM/g, createPlaceholder(MONTHS_SHORT[month]));\n result = result.replace(/MM/g, createPlaceholder(padStart(month + 1, 2)));\n result = result.replace(/M/g, createPlaceholder(String(month + 1)));\n result = result.replace(/EEEE/g, createPlaceholder(WEEKDAYS_LONG[dayOfWeek]));\n result = result.replace(/EEE/g, createPlaceholder(WEEKDAYS_SHORT[dayOfWeek]));\n result = result.replace(/dd/g, createPlaceholder(padStart(day, 2)));\n result = result.replace(/d/g, createPlaceholder(String(day)));\n result = result.replace(/HH/g, createPlaceholder(padStart(hours, 2)));\n result = result.replace(/H/g, createPlaceholder(String(hours)));\n result = result.replace(/hh/g, createPlaceholder(padStart(hours12, 2)));\n result = result.replace(/h/g, createPlaceholder(String(hours12)));\n result = result.replace(/mm/g, createPlaceholder(padStart(minutes, 2)));\n result = result.replace(/m/g, createPlaceholder(String(minutes)));\n result = result.replace(/SSS/g, createPlaceholder(padStart(milliseconds, 3)));\n result = result.replace(/ss/g, createPlaceholder(padStart(seconds, 2)));\n result = result.replace(/s/g, createPlaceholder(String(seconds)));\n result = result.replace(/a/g, createPlaceholder(ampm));\n\n // Replace placeholders with actual values\n for (const [placeholder, value] of placeholders) {\n result = result.replace(placeholder, value);\n }\n\n return result;\n}\n\n/**\n * Parses an ISO 8601 date string into a Date object\n *\n * @param dateString - ISO date string (e.g., '2024-01-15', '2024-01-15T14:30:00.000Z')\n * @returns Date object or Invalid Date if parsing fails\n *\n * @example\n * parseISO('2024-01-15') // Date object for Jan 15, 2024\n * parseISO('2024-01-15T14:30:00.000Z') // Date object with time\n */\nexport function parseISO(dateString: string): Date {\n if (!dateString || typeof dateString !== 'string') {\n return new Date(NaN);\n }\n\n const date: Date = new Date(dateString);\n return date;\n}\n\ninterface TokenPattern {\n token: string;\n pattern: string;\n handler: (val: string) => void;\n}\n\ninterface PlaceholderItem {\n placeholder: string;\n pattern: string;\n handler: (val: string) => void;\n}\n\ninterface PositionedHandler {\n placeholder: string;\n handler: (val: string) => void;\n position: number;\n}\n\n/**\n * Parses a date string according to the specified format\n *\n * @param dateString - The date string to parse\n * @param formatStr - The format string describing the input\n * @param referenceDate - Reference date for missing parts (defaults to current date)\n * @returns Date object or Invalid Date if parsing fails\n *\n * @example\n * parseDate('15.01.2024', 'dd.MM.yyyy') // Date object for Jan 15, 2024\n * parseDate('2024/01/15 14:30', 'yyyy/MM/dd HH:mm') // Date with time\n */\nexport function parseDate(dateString: string, formatStr: string, referenceDate: Date = new Date()): Date {\n if (!dateString || typeof dateString !== 'string') {\n return new Date(NaN);\n }\n\n let year: number = referenceDate.getFullYear();\n let month: number = referenceDate.getMonth();\n let day: number = referenceDate.getDate();\n let hours: number = 0;\n let minutes: number = 0;\n let seconds: number = 0;\n let milliseconds: number = 0;\n let isPM: boolean = false;\n let hasAMPM: boolean = false;\n\n const tokenPatterns: TokenPattern[] = [\n {\n token: 'yyyy',\n pattern: '(\\\\d{4})',\n handler: (val: string): void => {\n year = parseInt(val, 10);\n },\n },\n {\n token: 'yy',\n pattern: '(\\\\d{2})',\n handler: (val: string): void => {\n const parsed: number = parseInt(val, 10);\n year = parsed >= 70 ? 1900 + parsed : 2000 + parsed;\n },\n },\n {\n token: 'MMMM',\n pattern: `(${MONTHS_LONG.join('|')})`,\n handler: (val: string): void => {\n month = MONTHS_LONG.findIndex((m: string) => m.toLowerCase() === val.toLowerCase());\n },\n },\n {\n token: 'MMM',\n pattern: `(${MONTHS_SHORT.join('|')})`,\n handler: (val: string): void => {\n month = MONTHS_SHORT.findIndex((m: string) => m.toLowerCase() === val.toLowerCase());\n },\n },\n {\n token: 'MM',\n pattern: '(\\\\d{2})',\n handler: (val: string): void => {\n month = parseInt(val, 10) - 1;\n },\n },\n {\n token: 'M',\n pattern: '(\\\\d{1,2})',\n handler: (val: string): void => {\n month = parseInt(val, 10) - 1;\n },\n },\n {\n token: 'dd',\n pattern: '(\\\\d{2})',\n handler: (val: string): void => {\n day = parseInt(val, 10);\n },\n },\n {\n token: 'd',\n pattern: '(\\\\d{1,2})',\n handler: (val: string): void => {\n day = parseInt(val, 10);\n },\n },\n {\n token: 'HH',\n pattern: '(\\\\d{2})',\n handler: (val: string): void => {\n hours = parseInt(val, 10);\n },\n },\n {\n token: 'H',\n pattern: '(\\\\d{1,2})',\n handler: (val: string): void => {\n hours = parseInt(val, 10);\n },\n },\n {\n token: 'hh',\n pattern: '(\\\\d{2})',\n handler: (val: string): void => {\n hours = parseInt(val, 10);\n },\n },\n {\n token: 'h',\n pattern: '(\\\\d{1,2})',\n handler: (val: string): void => {\n hours = parseInt(val, 10);\n },\n },\n {\n token: 'mm',\n pattern: '(\\\\d{2})',\n handler: (val: string): void => {\n minutes = parseInt(val, 10);\n },\n },\n {\n token: 'm',\n pattern: '(\\\\d{1,2})',\n handler: (val: string): void => {\n minutes = parseInt(val, 10);\n },\n },\n {\n token: 'SSS',\n pattern: '(\\\\d{3})',\n handler: (val: string): void => {\n milliseconds = parseInt(val, 10);\n },\n },\n {\n token: 'ss',\n pattern: '(\\\\d{2})',\n handler: (val: string): void => {\n seconds = parseInt(val, 10);\n },\n },\n {\n token: 's',\n pattern: '(\\\\d{1,2})',\n handler: (val: string): void => {\n seconds = parseInt(val, 10);\n },\n },\n {\n token: 'a',\n pattern: '(AM|PM|am|pm)',\n handler: (val: string): void => {\n hasAMPM = true;\n isPM = val.toUpperCase() === 'PM';\n },\n },\n ];\n\n // Sort by token length (longer first) to avoid partial matches\n const sortedPatterns: TokenPattern[] = [...tokenPatterns].sort((a: TokenPattern, b: TokenPattern) => b.token.length - a.token.length);\n\n // Build regex from format string using placeholders to avoid double-replacement\n // First, replace all tokens in the original format string with placeholders\n let workingFormat: string = formatStr;\n const placeholderList: PlaceholderItem[] = [];\n let placeholderIndex: number = 0;\n\n for (const { token, pattern, handler } of sortedPatterns) {\n if (workingFormat.includes(token)) {\n const placeholder: string = `\\x00${placeholderIndex++}\\x00`;\n workingFormat = workingFormat.split(token).join(placeholder);\n placeholderList.push({ placeholder, pattern, handler });\n }\n }\n\n // Now escape the remaining literal characters\n let regexStr: string = escapeRegExp(workingFormat);\n\n // Replace placeholders with actual regex patterns\n for (const { placeholder, pattern } of placeholderList) {\n regexStr = regexStr.replace(escapeRegExp(placeholder), pattern);\n }\n\n // Sort handlers by their placeholder position in the original working format\n // to match capture group order (left-to-right in the regex)\n const sortedByPosition: PositionedHandler[] = placeholderList\n .map(\n (item: PlaceholderItem): PositionedHandler => ({\n placeholder: item.placeholder,\n handler: item.handler,\n position: escapeRegExp(workingFormat).indexOf(escapeRegExp(item.placeholder)),\n })\n )\n .sort((a: PositionedHandler, b: PositionedHandler) => a.position - b.position);\n\n const handlers: ((val: string) => void)[] = sortedByPosition.map((item: PositionedHandler) => item.handler);\n\n const regex: RegExp = new RegExp(`^${regexStr}$`, 'i');\n const match: RegExpMatchArray | null = dateString.match(regex);\n\n if (!match) {\n return new Date(NaN);\n }\n\n // Apply handlers in order\n for (let i: number = 0; i < handlers.length; i++) {\n if (match[i + 1]) {\n handlers[i](match[i + 1]);\n }\n }\n\n // Apply AM/PM adjustment after all handlers\n if (hasAMPM) {\n if (isPM && hours < 12) {\n hours += 12;\n } else if (!isPM && hours === 12) {\n hours = 0;\n }\n }\n\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n}\n","const MAX_YEAR: number = 3000;\n\nexport function dateStringToDate(date: string | Date): Date {\n if (date instanceof Date) {\n return date;\n }\n\n const firstItem: number = 1;\n const parsedDate: string = (date || '')\n .replace(/^(\\d)/, '0$1')\n .replace(/\\.(\\d)\\./, '.0$1.')\n .replace('..', '.01.')\n .replace(/^\\./, '01.')\n .replace(/(\\d{3})\\./g, (str: string): string => str.slice(firstItem))\n .replace(/(\\d{2}).(\\d{2}).(\\d{4})/, '$2/$1/$3')\n .replace(/00\\//g, '01/');\n\n const dateValue: Date = new Date(parsedDate);\n\n if (dateValue.getFullYear() > MAX_YEAR) {\n return new Date();\n }\n\n return isNaN(dateValue.getTime()) ? new Date() : dateValue;\n}\n","export function isDateValid(date?: Date): boolean {\n return date instanceof Date && Boolean(date.getTime());\n}\n","/**\n * Indicates if the arguments are equal\n *\n * @param f first parameter to compare\n * @param s second parameter to compare\n */\nexport function isEqual<T>(f: T, s: T): boolean {\n const s1: string = JSON.stringify(f).split('').sort().join('');\n const s2: string = JSON.stringify(s).split('').sort().join('');\n return s1 === s2;\n}\n\n/**\n * Indicates if the content of two arrays is identical\n *\n * @param f first array\n * @param s second array\n */\nexport function areArraysEqual<T>(f: T[], s: T[]): boolean {\n if (!Array.isArray(f) || !Array.isArray(s)) {\n return false;\n }\n\n if (f.length !== s.length) {\n return false;\n }\n\n for (let i: number = 0; i < f.length; i++) {\n const valueF: T = f[i];\n const valueS: T = s[i];\n\n if (Array.isArray(valueF) && Array.isArray(valueS)) {\n if (!areArraysEqual(valueF, valueS)) {\n return false;\n }\n }\n\n if (typeof valueF === 'object' && valueF != null && typeof valueS === 'object' && valueS != null) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n if (!areObjectsEqual(valueF, valueS)) {\n return false;\n }\n } else if (valueF !== valueS) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Indicates if the content of two objects is identical\n *\n * @param f first object\n * @param s second object\n */\nexport function areObjectsEqual<T>(f: T, s: T): boolean {\n /** If it's just the same object - no need to compare */\n if (f === s) {\n return true;\n }\n\n if (Array.isArray(f) && Array.isArray(s)) {\n return areArraysEqual(f, s);\n }\n\n /** If one of the objects is null or undefined - no need to compare */\n if (typeof f === 'object' && f != null && typeof s === 'object' && s != null) {\n const keysF: string[] = Object.keys(f);\n const keysS: string[] = Object.keys(s);\n\n if (keysF.length != keysS.length) {\n return false;\n }\n\n for (const key in f) {\n if (!areObjectsEqual(f[key], s[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n/**\n * Checks whether two arrays are equal regardless of the order of their elements.\n * Supports deep comparison of nested arrays and objects.\n *\n * @template T The type of elements in the arrays\n * @param f first array\n * @param s second array\n * @returns True if the arrays contain the same elements in any order, false otherwise\n */\nexport function areArraysEqualUnordered<T>(f: T[], s: T[]): boolean {\n if (!Array.isArray(f) || !Array.isArray(s)) {\n return false;\n }\n\n if (f.length !== s.length) {\n return false;\n }\n\n const used: boolean[] = new Array<boolean>(s.length).fill(false);\n\n for (const valueF of f) {\n let found: boolean = false;\n\n for (let i: number = 0; i < s.length; i++) {\n if (used[i]) {\n continue;\n }\n\n const valueS: T = s[i];\n\n if (Array.isArray(valueF) && Array.isArray(valueS)) {\n if (areArraysEqualUnordered(valueF, valueS)) {\n used[i] = true;\n found = true;\n break;\n }\n } else if (typeof valueF === 'object' && valueF != null && typeof valueS === 'object' && valueS != null) {\n if (areObjectsEqual(valueF, valueS)) {\n used[i] = true;\n found = true;\n break;\n }\n } else if (valueF === valueS) {\n used[i] = true;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n }\n\n return true;\n}\n","export function isNumber<T>(value: T | number | unknown | undefined): value is number {\n return typeof value === 'number';\n}\n","export function isRecord(value: unknown): value is Record<string, unknown> {\n return value?.constructor === Object;\n}\n","export function isString<T>(value: T | null | undefined | unknown): value is string {\n return typeof value === 'string';\n}\n","export function initToday(): Date {\n const today: Date = new Date();\n today.setHours(0, 0, 0, 0);\n\n return today;\n}\n\nexport function isToday(date: Date): boolean {\n const today: Date = initToday();\n\n return date.getDate() === today.getDate() && date.getMonth() === today.getMonth() && date.getFullYear() === today.getFullYear();\n}\n","/** Makes shallow copy of passed object */\nexport function removeFieldFromObject<T extends object, K extends string>(obj: T, key: K): Omit<T, K> {\n const result: T = { ...obj };\n\n if (key in obj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete (result as any)[key];\n }\n\n return result;\n}\n","export type ComparatorType<T> = (aa: T, bb: T) => number;\n\n/**\n * Allow to compare two values by provided comparator\n *\n * @param a - T\n * @param b - T\n * @param comparator - ComparatorType<T>\n */\nexport function safeCompare<T>(a: T, b: T, comparator: ComparatorType<T>): number {\n if (a == null) {\n if (b == null) {\n return 0;\n } else {\n return 1;\n }\n } else {\n if (b == null) {\n return -1;\n } else {\n return comparator(a, b);\n }\n }\n}\n\n/**\n * Allow to safely compare two string values\n *\n * @param a string\n * @param b string\n */\nexport function safeStrCompare(a: string, b: string): number {\n return safeCompare(a, b, () => a.localeCompare(b));\n}\n\n/**\n * Allow to safely compare two number values\n *\n * @param a number\n * @param b number\n */\nexport function safeNumCompare(a: number, b: number): number {\n return safeCompare(a, b, () => a - b);\n}\n\n/**\n * Allow composing comparison chain of several comparators\n * that delegate comparison by the chain to the next comparators if current comparator returns 0\n *\n * @param comparators - Array<() => number>\n */\nexport function safeComparatorPipe(...comparators: Array<() => number>): number {\n let result: number = 0;\n\n for (let i: number = 0, len: number = comparators.length; i < len; i++) {\n result = comparators[i]();\n\n if (result !== 0) {\n break;\n }\n }\n\n return result;\n}\n","export const sortByAlphabet: <T extends object>(a: T, b: T, field: keyof T) => number = <T extends object>(\n a: T,\n b: T,\n field: keyof T\n): number => {\n if (a[field] && typeof a[field] === 'string' && b[field] && typeof b[field] === 'string') {\n if ((a[field] as string).toLowerCase() < (b[field] as string).toLowerCase()) {\n return -1;\n }\n if ((a[field] as string).toLowerCase() > (b[field] as string).toLowerCase()) {\n return 1;\n }\n }\n\n return 0;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const sortByDate: (a: { [field: string]: any }, b: { [field: string]: any }, field: string) => number = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n a: { [field: string]: any },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n b: { [field: string]: any },\n field: string\n) => new Date(a[field]).getTime() - new Date(b[field]).getTime();\n","export function stringifyHttpLikeParams<T extends object>(params: T): { [param: string]: string | string[] } {\n return Object.keys(params).reduce(\n (stringParams: { [param: string]: string | string[] }, key: string) => ({\n ...stringParams,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key]: encodeURI((params as any)[key]),\n }),\n {}\n );\n}\n","export function transformArrayInput<T>(array: unknown): T[] {\n if (Array.isArray(array) && array.length) {\n return array as T[];\n } else {\n return [];\n }\n}\n","import { isString } from './is-string';\n\nexport function transformStringInput(value: unknown): string {\n return isString(value) ? value : '';\n}\n","export function checkIsEntityInArrayByKey<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>>(\n selectedEntities: ENTITY[],\n entity: ENTITY,\n keyExp: KEY\n): boolean {\n return !!selectedEntities.find((selectedEntity: ENTITY) => {\n return (\n Object.prototype.hasOwnProperty.call(selectedEntity, keyExp) &&\n Object.prototype.hasOwnProperty.call(entity, keyExp) &&\n selectedEntity[keyExp] === entity[keyExp]\n );\n });\n}\n","import { isNil } from '@rt-tools/core';\nimport { DASH } from '../const';\n\nexport function emptyToDash<T>(value: T | null | undefined): T | string {\n return isNil(value) || value === '' ? DASH : value;\n}\n","import { FormControl, Validators } from '@angular/forms';\n\n/**\n * Check if the email is valid\n * @param email\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isEmail(email: any): boolean {\n return !Boolean(Validators.email(new FormControl(email)));\n}\n","export function isEmptyArray<T>(value: T[]): boolean {\n return value.length === 0;\n}\n","import { isEmptyArray } from './is-empty-array';\n\nexport function isEmptyObject(value: Record<string, unknown>): boolean {\n return isEmptyArray(Object.keys(value));\n}\n","export function isEmptyString(value: string): boolean {\n return value.length === 0;\n}\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object';\n}\n","import { isNil } from '@rt-tools/core';\nimport { isEmptyArray } from './is-empty-array';\nimport { isEmptyObject } from './is-empty-object';\nimport { isEmptyString } from './is-empty-string';\nimport { isObject } from './is-object';\nimport { isString } from './is-string';\n\nexport function isEmpty(value: unknown): boolean {\n if (isNil(value)) {\n return true;\n }\n\n if (isObject(value)) {\n if (Array.isArray(value)) {\n return isEmptyArray(value);\n }\n\n if (!(value instanceof Date)) {\n return isEmptyObject(value);\n }\n }\n\n if (isString(value)) {\n return isEmptyString(value);\n }\n\n return false;\n}\n","import { Nullable } from '../interfaces';\n\nexport function debounce(timeout: number = 300): MethodDecorator {\n return function (_target: object, _key: string | symbol, descriptor: PropertyDescriptor) {\n const timeoutRefs: WeakMap<object, ReturnType<typeof setTimeout>> = new WeakMap<object, ReturnType<typeof setTimeout>>();\n const { value } = descriptor;\n\n descriptor.value = function (...args: unknown[]): void {\n const timeoutRef: Nullable<ReturnType<typeof setTimeout>> = timeoutRefs.get(this);\n if (timeoutRef !== undefined) {\n clearTimeout(timeoutRef);\n }\n timeoutRefs.set(\n this,\n setTimeout(() => value.apply(this, args), timeout)\n );\n };\n\n return descriptor;\n };\n}\n","import { Nullable } from '../interfaces';\n\nexport enum HAS_OWN_SCOPE_ENUM {\n ANY = 'any',\n OWN = 'own',\n INHERITED = 'inherited',\n}\n\nexport type IHasScopeType = HAS_OWN_SCOPE_ENUM.ANY | HAS_OWN_SCOPE_ENUM.OWN | HAS_OWN_SCOPE_ENUM.INHERITED;\n\n/** Internal: cross-runtime own-property check (uses Object.hasOwn if available, otherwise falls back to hasOwnProperty.call). */\ntype HasOwnFn = (o: object, k: PropertyKey) => boolean;\nconst safetyHasOwn: HasOwnFn = (o: object, k: PropertyKey) => {\n const native: Nullable<HasOwnFn> = (Object as unknown as { hasOwn?: HasOwnFn }).hasOwn;\n return typeof native === 'function' ? native(o, k) : Object.prototype.hasOwnProperty.call(o, k);\n};\n\n/**\n * Safe property existence check with configurable scope.\n *\n * - Returns `false` for `null`/`undefined`.\n * - Boxes primitives (e.g., strings, numbers) so prototype checks work.\n * - Does **not** invoke getters; relies on `in` and an own-check helper.\n * - Uses `Object.hasOwn` when available; **falls back** to\n * `Object.prototype.hasOwnProperty.call` on older runtimes.\n *\n * @param obj {unknown} - Value to check. `null`/`undefined` short-circuit to `false`.\n * @param key {PropertyKey} - Property key (string | number | symbol).\n * @param scope {IHasScopeType} - Check mode: `'any'` (default), `'own'`, or `'inherited'`.\n *\n * @returns `true` if the property exists under the selected scope.\n *\n * @example\n * hasPropertyInChain({ a: 1 }, 'a'); // true (ANY)\n * hasPropertyInChain(Object.create({ a: 1 }), 'a', HAS_OWN_SCOPE_ENUM.INHERITED); // true\n * hasPropertyInChain({ a: 1 }, 'b', HAS_OWN_SCOPE_ENUM.OWN); // false\n */\nexport function hasPropertyInChain(obj: unknown, key: PropertyKey, scope: IHasScopeType = HAS_OWN_SCOPE_ENUM.OWN): boolean {\n if (obj === undefined || obj === null) {\n return false;\n }\n const o: object = Object(obj);\n\n switch (scope) {\n case HAS_OWN_SCOPE_ENUM.OWN:\n return safetyHasOwn(o, key);\n\n case HAS_OWN_SCOPE_ENUM.INHERITED:\n return key in o && !safetyHasOwn(o, key);\n\n default:\n return key in o;\n }\n}\n","import { Directive, effect, input, InputSignal, InputSignalWithTransform } from '@angular/core';\n\nimport { transformArrayInput } from '../functions';\nimport { Nullable } from '../interfaces';\n\n@Directive({\n selector: '[rtScrollToElement]',\n})\nexport class RtScrollToElementDirective {\n public rtScrollToElement: InputSignal<string | number> = input.required<string | number>();\n public elements: InputSignalWithTransform<unknown[], unknown[]> = input.required<unknown[], unknown[]>({\n transform: (value: unknown[]) => transformArrayInput(value),\n });\n\n constructor() {\n effect(() => {\n if (this.elements()?.length && this.rtScrollToElement()) {\n this.#scrollToTarget();\n }\n });\n }\n\n #scrollToTarget(): void {\n const targetId: string | number = this.rtScrollToElement();\n const targetElement: Nullable<HTMLElement> = document.getElementById(targetId.toString());\n targetElement?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n}\n","import { AfterViewInit, booleanAttribute, Directive, effect, inject, input, InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Directive({\n selector: '[rtHideTooltipDirective]',\n})\nexport class RtHideTooltipDirective implements AfterViewInit {\n #matTooltip: MatTooltip = inject(MatTooltip);\n\n /** Current HTMLElement */\n public element: InputSignal<HTMLElement> = input.required<HTMLElement>({\n alias: 'rtHideTooltipDirective',\n });\n /** Indicates is tooltip shown */\n public isTooltipShown: InputSignalWithTransform<boolean, boolean> = input.required<boolean, boolean>({\n transform: booleanAttribute,\n });\n\n /** Set tooltip state by 'isTooltipShown' */\n constructor() {\n effect(() => {\n if (this.isTooltipShown()) {\n this.#setTooltipState();\n } else {\n this.#matTooltip.disabled = true;\n }\n });\n }\n\n public ngAfterViewInit(): void {\n const element: HTMLElement = this.element();\n\n /** Set tooltip state when HTMLElement changed */\n if (element) {\n const observer: MutationObserver = new MutationObserver(() => {\n if (this.isTooltipShown()) {\n this.#setTooltipState();\n }\n });\n\n observer.observe(element, {\n childList: true,\n characterData: true,\n subtree: true,\n });\n\n if (this.isTooltipShown()) {\n this.#setTooltipState();\n }\n }\n }\n\n /** Set tooltip state by container and content width */\n #setTooltipState(): void {\n this.#matTooltip.disabled = this.element()?.offsetWidth === this.element()?.scrollWidth;\n }\n}\n","import { ComponentType, OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nexport type AsidePositions = 'left' | 'right';\n\nexport class AsideRef<DATA, ANSWER> {\n constructor(\n private answer: Subject<ANSWER | null>,\n public overlayRef: OverlayRef,\n public component: ComponentType<unknown>,\n public position: AsidePositions,\n public data: DATA\n ) {}\n\n public close(answer?: ANSWER): void {\n this.answer.next(answer ?? null);\n }\n}\n\nexport const ASIDE_REF: InjectionToken<AsideRef<object, object>> = new InjectionToken<AsideRef<object, object>>('ASIDE_REF');\n\nexport const ddServices: Array<{ provide: string; useValue: unknown }> = [\n { provide: 'ddData', useValue: undefined },\n { provide: 'ddAnswer', useValue: undefined },\n { provide: 'ddOverlay', useValue: undefined },\n];\n","import { DOCUMENT } from '@angular/common';\nimport { InjectionToken, inject } from '@angular/core';\n\nexport const NAVIGATOR: InjectionToken<Navigator> = new InjectionToken<Navigator>('An injection token for global navigator object', {\n factory: (): Navigator => {\n const { defaultView }: Document = inject(DOCUMENT);\n\n if (!defaultView || !defaultView?.navigator) {\n throw new Error('Navigator is not available');\n }\n\n return defaultView.navigator;\n },\n});\n","import { Injectable, inject } from '@angular/core';\n\nimport { Nullable, PlatformService, WINDOW } from '@rt-tools/core';\nimport { NAVIGATOR } from '../tokens';\n\nexport namespace OSTypes {\n export const WINDOWS: string = 'Windows';\n export const MAC_OS: string = 'Mac OS';\n export const LINUX: string = 'Linux';\n export const ANDROID: string = 'Android';\n export const IOS: string = 'iOS';\n export const UNKNOWN: string = 'Unknown';\n}\n\n@Injectable()\nexport class DeviceDetectorService {\n readonly #windowRef: Window = inject(WINDOW);\n readonly #navigatorRef: Navigator = inject(NAVIGATOR);\n readonly #platformService: PlatformService = inject(PlatformService);\n\n public userAgent: Nullable<string> = null;\n\n constructor() {\n if (\n this.#platformService.isPlatformBrowser &&\n typeof this.#windowRef !== 'undefined' &&\n typeof this.#navigatorRef !== 'undefined' &&\n this.#navigatorRef?.userAgent\n ) {\n this.userAgent = this.#navigatorRef.userAgent;\n }\n }\n\n public isMobile(): boolean {\n return this.userAgent ? /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(this.userAgent) : false;\n }\n\n public isTablet(): boolean {\n return this.userAgent ? /iPad|Android|Tablet/i.test(this.userAgent) : false;\n }\n\n public isDesktop(): boolean {\n return !this.isMobile() && !this.isTablet();\n }\n\n public getOS(): string {\n let os: string;\n\n if (this.userAgent && /Windows/i.test(this.userAgent)) {\n os = OSTypes.WINDOWS;\n } else if (this.userAgent && /Macintosh|Mac OS/i.test(this.userAgent)) {\n os = OSTypes.MAC_OS;\n } else if (this.userAgent && /Linux/i.test(this.userAgent)) {\n os = OSTypes.LINUX;\n } else if (this.userAgent && /Android/i.test(this.userAgent)) {\n os = OSTypes.ANDROID;\n } else if (this.userAgent && /iOS/i.test(this.userAgent)) {\n os = OSTypes.IOS;\n } else {\n os = OSTypes.UNKNOWN;\n }\n\n return os;\n }\n}\n","import { IBreakpoints } from './breakpoints.model';\n\nexport class Breakpoints implements IBreakpoints {\n public readonly xl: string = '1920px';\n public readonly lg: string = '1280px';\n public readonly md: string = '960px';\n public readonly sm: string = '720px';\n public readonly xs: string = '600px';\n}\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { Injectable, Signal, inject, WritableSignal, signal, computed, Injector } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\n\nimport { distinctUntilChanged, map, switchMap } from 'rxjs/operators';\n\nimport { Nullable } from '@rt-tools/core';\nimport { Breakpoints } from './breakpoints';\nimport { IBreakpoints } from './breakpoints.model';\n\n/**\n * A service that manages responsive design breakpoints using Angular's `BreakpointObserver`.\n * This service provides signals for different screen sizes and allows dynamic\n * breakpoint management.\n *\n * @Injectable\n */\n@Injectable()\nexport class BreakpointService {\n /**\n * Private instance of BreakpointObserver used to observe screen size changes.\n */\n readonly #breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\n /**\n * Private instance of Injector.\n */\n readonly #injector: Injector = inject(Injector);\n\n /**\n * Instance of a lass containing the breakpoint values for different screen sizes.\n */\n readonly #breakpoints: WritableSignal<IBreakpoints> = signal(new Breakpoints());\n\n readonly #desktopQuery: Signal<string> = computed(() => `(min-width: ${this.#breakpoints().xl})`);\n readonly #smallDesktopQuery: Signal<string> = computed(() => `(min-width: ${this.#breakpoints().lg})`);\n readonly #tabletQuery: Signal<string> = computed(() => `(min-width: ${this.#breakpoints().md})`);\n readonly #smallTabletQuery: Signal<string> = computed(() => `(min-width: ${this.#breakpoints().sm})`);\n readonly #mobileQuery: Signal<string> = computed(() => `(max-width: ${this.decrementOnePixel(this.#breakpoints().xs)})`);\n\n public readonly isDesktop: Signal<Nullable<boolean>> = toSignal<Nullable<boolean>>(\n toObservable(this.#desktopQuery, { injector: this.#injector }).pipe(\n distinctUntilChanged(),\n switchMap((query: string) => this.#breakpointObserver.observe(query)),\n map(({ matches }: BreakpointState) => matches)\n )\n );\n\n public readonly isSmallDesktop: Signal<Nullable<boolean>> = toSignal<Nullable<boolean>>(\n toObservable(this.#smallDesktopQuery, { injector: this.#injector }).pipe(\n distinctUntilChanged(),\n switchMap((query: string) => this.#breakpointObserver.observe(query)),\n map(({ matches }: BreakpointState) => matches)\n )\n );\n\n public readonly isMobile: Signal<Nullable<boolean>> = toSignal<Nullable<boolean>>(\n toObservable(this.#mobileQuery, { injector: this.#injector }).pipe(\n distinctUntilChanged(),\n switchMap((query: string) => this.#breakpointObserver.observe(query)),\n map(({ matches }: BreakpointState) => matches)\n )\n );\n\n public readonly isTablet: Signal<Nullable<boolean>> = toSignal<Nullable<boolean>>(\n toObservable(this.#tabletQuery, { injector: this.#injector }).pipe(\n distinctUntilChanged(),\n switchMap((query: string) => this.#breakpointObserver.observe(query)),\n map(({ matches }: BreakpointState) => !matches)\n )\n );\n\n public readonly isSmallTablet: Signal<Nullable<boolean>> = toSignal<Nullable<boolean>>(\n toObservable(this.#smallTabletQuery, { injector: this.#injector }).pipe(\n distinctUntilChanged(),\n switchMap((query: string) => this.#breakpointObserver.observe(query)),\n map(({ matches }: BreakpointState) => matches)\n )\n );\n\n /**\n * Allows setting custom breakpoints for different screen sizes.\n *\n * @param breakpoints - The custom breakpoints to apply.\n */\n public setBreakpoints(breakpoints: IBreakpoints): void {\n this.#breakpoints.set(breakpoints);\n }\n\n /**\n * Helper function to decrement the pixel value by 1.\n * Used to exclude the exact pixel value in media queries.\n *\n * @usageNotes\n *\n * This function is useful for setting correct media queries.\n * E.g. for mobile devices: media query should be `(max-width: 599px)`,\n * and from `(min-width: 600px)` it should be considered as a tablet.\n *\n * @param value - The pixel value to decrement.\n * @returns The adjusted pixel value as a string.\n */\n public decrementOnePixel(value: string): string {\n return Number(value.split('px')[0]) - 1 + 'px';\n }\n}\n","import { Directive, HostListener, inject, input, InputSignal } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Nullable } from '../interfaces';\nimport { PlatformService } from '../services';\nimport { WINDOW } from '../tokens';\n\n@Directive({\n selector: '[rtNavigationDirective]',\n providers: [PlatformService],\n})\nexport class RtNavigationDirective {\n readonly #router: Router = inject(Router);\n readonly #windowRef: Window = inject(WINDOW);\n readonly #platformService: PlatformService = inject(PlatformService);\n\n public link: InputSignal<Nullable<string>> = input.required({ alias: 'rtNavigationDirective' });\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n if (this.link()) {\n if (this.#platformService.isPlatformBrowser && (event.ctrlKey || event.metaKey)) {\n this.#windowRef.open(this.link() as string);\n } else {\n void this.#router.navigate([this.link()]);\n }\n }\n }\n}\n","import { DestroyRef, Directive, inject, OnInit, Signal, signal, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { filter, map, take } from 'rxjs/operators';\n\n@Directive()\nexport abstract class RtTabQueryParamDirective implements OnInit {\n readonly #router: Router = inject(Router);\n readonly #route: ActivatedRoute = inject(ActivatedRoute);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n readonly #currentTabIndex: WritableSignal<number> = signal(0);\n public readonly currentTabIndex: Signal<number> = this.#currentTabIndex.asReadonly();\n\n public ngOnInit(): void {\n this.#route.queryParamMap\n .pipe(\n filter((params: ParamMap) => params.has('tab')),\n take(1),\n map((params: ParamMap) => Number(params.get('tab'))),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((tabIndex: number) => {\n this.#setTabIndex(tabIndex);\n });\n }\n\n public setQueryTab(index: number): void {\n void this.#router.navigate([], {\n relativeTo: this.#route,\n queryParams: {\n tab: index,\n },\n queryParamsHandling: 'merge',\n });\n this.#setTabIndex(index);\n }\n\n #setTabIndex(index: number): void {\n this.#currentTabIndex.set(index);\n }\n}\n","import { Directive, inject, input, InputSignal, OnDestroy, OnInit, output, OutputEmitterRef } from '@angular/core';\n\nimport { PlatformService } from '../services';\nimport { WINDOW } from '../tokens';\n\n@Directive({\n selector: '[rtScrollDirective]',\n})\nexport class RtScrollDirective implements OnInit, OnDestroy {\n readonly #windowRef: Window = inject(WINDOW);\n readonly #platformService: PlatformService = inject(PlatformService);\n\n public active: InputSignal<boolean> = input<boolean>(true);\n public multiplier: InputSignal<number> = input<number>(0.5);\n\n public readonly scrollAction: OutputEmitterRef<void> = output<void>();\n\n public ngOnInit(): void {\n if (this.#platformService.isPlatformBrowser) {\n this.#windowRef.addEventListener('scroll', this.scroll, true);\n }\n }\n\n public ngOnDestroy(): void {\n this.#windowRef.removeEventListener('scroll', this.scroll, true);\n }\n\n public scroll: EventListener = (event: Event): void => {\n const target: HTMLElement = event.target as HTMLElement;\n\n if (this.active() && target.offsetHeight + target.scrollTop >= target.scrollHeight * this.multiplier()) {\n this.scrollAction.emit();\n }\n };\n}\n","import { Directive, HostListener, output, OutputEmitterRef } from '@angular/core';\n\n@Directive({\n selector: '[rtEscapeKey]',\n})\nexport class RtEscapeKeyDirective {\n public readonly escapeKeyAction: OutputEmitterRef<void> = output<void>();\n\n @HostListener('document:keydown', ['$event'])\n public handleKeyboardEvent(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.escapeKeyAction.emit();\n }\n }\n}\n","export enum MODAL_WINDOW_SIZE_ENUM {\n SM = '25rem',\n MD = '45rem',\n LG = '65rem',\n FULL = '100%',\n}\n\nexport type ModalWindowSizeType =\n | MODAL_WINDOW_SIZE_ENUM.SM\n | MODAL_WINDOW_SIZE_ENUM.MD\n | MODAL_WINDOW_SIZE_ENUM.LG\n | MODAL_WINDOW_SIZE_ENUM.FULL;\n","export enum ASIDE_BUTTONS_ENUM {\n USER_ACTIVE = 'User active',\n USER_INACTIVE = 'User inactive',\n DELETE = 'Delete',\n RESET = 'Reset',\n}\n\nexport type AsideButtonsType =\n | ASIDE_BUTTONS_ENUM.USER_ACTIVE\n | ASIDE_BUTTONS_ENUM.USER_INACTIVE\n | ASIDE_BUTTONS_ENUM.DELETE\n | ASIDE_BUTTONS_ENUM.RESET;\n","export enum POSITION_ENUM {\n LEFT = 'left',\n RIGHT = 'right',\n TOP = 'top',\n BOTTOM = 'bottom',\n START = 'start',\n END = 'end',\n CENTER = 'center',\n}\n","import { isNil } from '@rt-tools/core';\nimport { formatDate, isDate, parseDate, parseISO } from '../functions/date-format';\n\nexport class TypeCastHelper {\n public getAsString(data: unknown, defaultValue: string = ''): string {\n return !isNil(data) && !Number.isNaN(data) ? String(data) : defaultValue;\n }\n\n public getAsNumber(data: unknown, defaultValue?: number): number {\n const result: number = Number(data);\n\n return data === null || Number.isNaN(result) ? (defaultValue ?? NaN) : result;\n }\n\n public getAsBoolean(data: unknown): boolean {\n const stringExceptions: string[] = ['false', '0', 'null'];\n\n if (typeof data === 'string' && stringExceptions.includes(data)) {\n return false;\n }\n\n return Boolean(data);\n }\n\n public getAsNull<T = unknown, R = T>(data: T, handler?: (data: T) => R): T | R | null {\n if (!isNil(data) && !Number.isNaN(data)) {\n return handler ? handler(data) : data;\n }\n\n return null;\n }\n\n // eslint-disable-next-line\n public getAsType(value: unknown, type: NonNullable<unknown>): any {\n if (!!value && !Object.values(type).includes(value)) {\n // eslint-disable-next-line no-console\n console.error(`getAsTyped: the value \"${value}\" was not found in the specified type`);\n return 'unknown';\n }\n\n return value;\n }\n\n public getAsTypedArray<T>(data: unknown[], cb: (item: unknown) => T, showError: boolean = true): T[] {\n if (!Array.isArray(data)) {\n if (showError) {\n // eslint-disable-next-line no-console\n console.error(\n 'getAsTypedArray: Given data must be an array (now it is ' +\n typeof data +\n '). Incorrect data will be defined as array of data (data => [data]).'\n );\n }\n\n data = [data];\n }\n\n if (!data.length) {\n return [];\n }\n\n return data.map(cb);\n }\n\n public getAsDate(date: string | number | Date, asString?: boolean, parseFormatOptions?: string, formatOptions?: string): Date | string {\n formatOptions = formatOptions ?? 'dd.MM.yyyy';\n asString = asString ?? true;\n\n const type: string | number | object = typeof date;\n\n switch (type) {\n case 'number':\n date = new Date(date);\n break;\n\n case 'string':\n date = !!parseFormatOptions ? parseDate(date as string, parseFormatOptions, new Date()) : parseISO(date as string);\n break;\n }\n\n if (!isDate(date)) {\n return '';\n }\n\n return asString ? formatDate(date, formatOptions) : date;\n }\n}\n","import { IBaseMapper } from '../interfaces';\nimport { TypeCastHelper } from './type-cast.helper';\n\nexport abstract class BaseMapper<M> implements IBaseMapper<M> {\n public readonly typeCast: TypeCastHelper = new TypeCastHelper();\n\n // eslint-disable-next-line\n public mapFrom(data: NonNullable<unknown>, ...args: unknown[]): M {\n return { ...data } as M;\n }\n\n public mapFromArray(data: NonNullable<unknown>[], ...args: unknown[]): M[] {\n if (!Array.isArray(data)) {\n // eslint-disable-next-line no-console\n console.error(\n 'mapFromArray: Given data must be an array (now it is ' + typeof data + '). Incorrect data will be defined as empty array.'\n );\n data = [];\n }\n\n return data.map((entry: NonNullable<unknown>) => this.mapFrom(entry, ...args));\n }\n\n // eslint-disable-next-line\n public mapTo(model: M, ...args: unknown[]): unknown {\n return { ...model };\n }\n\n public mapToArray(models: M[], ...args: unknown[]): unknown[] {\n if (!Array.isArray(models)) {\n // eslint-disable-next-line no-console\n console.error(\n 'mapToArray: Given data must be an array (now it is ' + typeof models + '). Incorrect data will be defined as empty array.'\n );\n models = [];\n }\n\n return models.map((model: M) => this.mapTo(model, ...args));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { isNil, Nullable } from '@rt-tools/core';\nimport { DASH } from '../const';\nimport { isString } from '../functions';\n\n@Pipe({\n name: 'breakString',\n})\nexport class BreakStringPipe implements PipeTransform {\n public transform(value: Nullable<string>): string {\n if (isNil(value)) {\n return DASH;\n }\n\n if (value && isString(value)) {\n if (/\\s/.test(value) || /^[A-Z0-9\\s]+$/.test(value) || /\\d/.test(value) || /[^\\w\\s]/.test(value)) {\n return value;\n }\n\n return value.split(/(?=[A-Z])/).join(' ');\n }\n\n return value.toString();\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'sanitize',\n pure: true,\n})\nexport class SanitizePipe implements PipeTransform {\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n\n public transform(value: string): SafeHtml {\n return this.#sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { DASH } from '../const';\nimport { isNumber, isString } from '../functions';\n\n@Pipe({\n name: 'entityToString',\n pure: true,\n})\nexport class EntityToStringPipe implements PipeTransform {\n public transform<T>(value: T): string {\n if (isString(value)) {\n return value;\n }\n\n if (isNumber(value)) {\n return value.toString();\n }\n\n return DASH;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { emptyToDash } from '../functions';\n\n@Pipe({\n name: 'emptyToDash',\n pure: true,\n})\nexport class EmptyToDashPipe implements PipeTransform {\n public transform<T>(value: T | null | undefined): T | string {\n return emptyToDash(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description Use to compare equality to any of items with provided value\n * @example\n *\n * Direct usage\n * ```ts\n * equalPipe.transform(100, 1, 10, 100) // => true\n * ```\n *\n * Template usage\n *\n * ```html\n * <div *ngIf=\"100 | equal:1:10:100\">Visible</div>\n * ```\n */\n@Pipe({\n name: 'equal',\n})\nexport class EqualPipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(value: any, ...compares: any[]): boolean {\n return compares.reduce((equal: boolean, compare: boolean) => equal || value === compare, false);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description Use to access to the deep object state for comparison\n * @example\n * {a: {b: true}} | equalChain:'a':'b':true => true\n */\n@Pipe({\n name: 'equalChain',\n})\nexport class EqualChainPipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(obj: object, ...args: any[]): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const compared: any = args.pop();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Boolean(obj) && args.reduce((inner: any, arg: string) => inner[arg], obj) === compared;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description Use to compare not equality to all items with provided value\n * @example\n *\n * Direct usage\n * ```ts\n * notEqualPipe.transform(100, 1, 10, 100) // => false\n * ```\n *\n * Template usage\n *\n * ```html\n * <div *ngIf=\"100 | notEqual:1:10:100\">Invisible</div>\n * ```\n */\n@Pipe({\n name: 'notEqual',\n})\nexport class NotEqualPipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(value: any, ...compares: any[]): boolean {\n return compares.reduce((notEqual: boolean, compare: boolean) => notEqual && value !== compare, true);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description Use to access to the deep object state for comparison\n * @example\n * {a: {b: true}} | equalChain:'a':'b':false => true\n */\n@Pipe({\n name: 'notEqualChain',\n})\nexport class NotEqualChainPipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(obj: object, ...args: any[]): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const compared: any = args.pop();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Boolean(obj) && args.reduce((inner: any, arg: string) => inner[arg], obj) !== compared;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ternary',\n})\nexport class TernaryPipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(value: any, option1: any, option2: any): any {\n return Boolean(value) ? option1 : option2;\n }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport function checkIsMatchingValues(sample: string): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n return sample && control.value && control.value.localeCompare(sample) === 0 ? null : { notEquivalent: true };\n };\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function arraysNotEmptyValidator(control: AbstractControl): ValidationErrors | null {\n if (control.value instanceof Object) {\n const arrays: unknown[][] = Object.values(control.value);\n const allArraysEmpty: boolean = arrays.every((array: unknown[]) => !array.length);\n return allArraysEmpty ? { allArraysEmpty: true } : null;\n } else if (Array.isArray(control.value)) {\n const array: unknown[] = control.value;\n return !array.length ? { arrayEmpty: true } : null;\n } else {\n return { invalidType: true };\n }\n}\n","import { Provider } from '@angular/core';\n\nimport { PlatformService } from '@rt-tools/core';\nimport { BreakpointService } from './services';\n\n/**\n * Returns a set of dependency injection providers for utility services.\n *\n * @usageNotes\n *\n * This function provides utility services that are commonly used across\n * an Angular application. Specifically, it provides the `BreakpointService`\n * for managing responsive design breakpoints and the `PlatformService` for\n * detecting the platform on which the application is running (e.g., browser or server).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideRtUtils()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nexport function provideRtUtils(): Provider[] {\n return [BreakpointService, PlatformService];\n}\n","// constants\nexport * from './lib/const';\n\n// directives\nexport * from './lib/directives';\n\n// enums\nexport * from './lib/enums';\n\n// functions\nexport * from './lib/functions';\n\n// helpers\nexport * from './lib/helpers';\n\n// interfaces\nexport * from './lib/interfaces';\n\n// pipes\nexport * from './lib/pipes';\n\n// services\nexport * from './lib/services';\n\n// tokens\nexport * from './lib/tokens';\n\n// validators\nexport * from './lib/validators';\n\n// providers\nexport * from './lib/providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rt-tools/utils",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Utility functions, pipes, directives, validators and services for Angular applications",
|
|
5
|
+
"author": "RT Team",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/nickmdf/rt-tools.git",
|
|
10
|
+
"directory": "projects/utils"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/nickmdf/rt-tools/tree/main/projects/utils",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/nickmdf/rt-tools/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"angular",
|
|
18
|
+
"utils",
|
|
19
|
+
"pipes",
|
|
20
|
+
"directives",
|
|
21
|
+
"validators",
|
|
22
|
+
"services"
|
|
23
|
+
],
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@rt-tools/core": "^0.0.1",
|
|
26
|
+
"tslib": "^2.3.0"
|
|
27
|
+
},
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"@rt-tools/core": "^0.0.1",
|
|
30
|
+
"@angular/common": "^21.0.0",
|
|
31
|
+
"@angular/core": "^21.0.0",
|
|
32
|
+
"@angular/forms": "^21.0.0",
|
|
33
|
+
"@angular/cdk": "^21.0.0",
|
|
34
|
+
"@angular/platform-browser": "^21.0.0",
|
|
35
|
+
"rxjs": "^7.8.0"
|
|
36
|
+
},
|
|
37
|
+
"sideEffects": false,
|
|
38
|
+
"main": "src/index.ts",
|
|
39
|
+
"types": "src/index.ts",
|
|
40
|
+
"module": "fesm2022/rt-tools-utils.mjs",
|
|
41
|
+
"typings": "types/rt-tools-utils.d.ts",
|
|
42
|
+
"exports": {
|
|
43
|
+
"./package.json": {
|
|
44
|
+
"default": "./package.json"
|
|
45
|
+
},
|
|
46
|
+
".": {
|
|
47
|
+
"types": "./types/rt-tools-utils.d.ts",
|
|
48
|
+
"default": "./fesm2022/rt-tools-utils.mjs"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|