super-utilix 1.0.1 → 1.1.0
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 +510 -41
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{index.d.mts → index.d.cts} +29 -9
- package/dist/index.d.ts +29 -9
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +66 -40
- package/dist/index.mjs +0 -2
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../index.ts","../src/arabic.ts","../src/curdOperation.ts","../src/date.ts","../src/dom.ts","../src/eventHandlers.ts","../src/filter.ts","../src/object.ts","../src/query.ts","../src/search.ts","../src/validationDate.ts"],"sourcesContent":["export * from './src';\n","export const literalOrdinals = (num: number, lang: 'ar' | 'en'): string => {\n if (lang === 'ar') {\n const ones = [\n '',\n 'الأول',\n 'الثاني',\n 'الثالث',\n 'الرابع',\n 'الخامس',\n 'السادس',\n 'السابع',\n 'الثامن',\n 'التاسع',\n ];\n const teens = [\n 'الحادي عشر',\n 'الثاني عشر',\n 'الثالث عشر',\n 'الرابع عشر',\n 'الخامس عشر',\n 'السادس عشر',\n 'السابع عشر',\n 'الثامن عشر',\n 'التاسع عشر',\n ];\n const tens = [\n '',\n 'العاشر',\n 'العشرون',\n 'الثلاثون',\n 'الأربعون',\n 'الخمسون',\n 'الستون',\n 'السبعون',\n 'الثمانون',\n 'التسعون',\n ];\n const hundreds = [\n '',\n 'المائة',\n 'المئتان',\n 'الثلاثمائة',\n 'الأربعمائة',\n 'الخمسمائة',\n 'الستمائة',\n 'السبعمائة',\n 'الثمانمائة',\n 'التسعمائة',\n ];\n\n if (num === 1) return 'الأول';\n\n // Check hundreds first to avoid incorrect matching in tens logic\n const hundredPart = Math.floor(num / 100);\n const remainderPart = num % 100;\n if (hundredPart > 0) {\n if (remainderPart === 0) return hundreds[hundredPart];\n return `${hundreds[hundredPart]} و${literalOrdinals(remainderPart, lang)}`;\n }\n\n if (num >= 2 && num <= 9) return ones[num];\n if (num >= 11 && num <= 19) return teens[num - 11];\n if (num % 10 === 0 && num < 100) return tens[num / 10];\n\n const remainder = num % 10;\n const base = Math.floor(num / 10) * 10;\n\n if (base === 10) return `ال${ones[remainder]} عشر`;\n if (remainder === 1) return `الحادي و${tens[base / 10]}`;\n if (remainder === 2) return `الثاني و${tens[base / 10]}`;\n const result = `${ones[remainder]} و${tens[base / 10]}`;\n\n return result;\n } else {\n const suffixes = ['th', 'st', 'nd', 'rd'];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n }\n};\n","// Create\nexport const handleCreateFront = ({\n items,\n setItems,\n itemData,\n}: {\n items?: any[];\n setItems?: any;\n itemData?: any;\n}) => {\n if (!items || !setItems || !itemData) return;\n const newItem: any = {\n // id: items.length > 0 ? Math.max(...items.map((item) => item.id)) + 1 : 1,\n id: Number(new Date().getTime()),\n ...itemData,\n };\n if (newItem) setItems([...items, newItem]);\n};\n// CreateUnique\nexport const handleCreateFrontUnique = ({\n items,\n setItems,\n itemData,\n uniqueField,\n}: {\n items?: any[];\n setItems?: any;\n itemData?: any;\n uniqueField?: string;\n}) => {\n if (!items || !setItems || !itemData) return;\n\n // Check if the item already exists in the array\n const itemExists = items.some((item) => {\n // If uniqueField is provided and itemData is an object\n if (uniqueField && typeof itemData === 'object' && itemData !== null) {\n return item[uniqueField] === itemData[uniqueField];\n }\n // For primitive types (string, number, boolean, etc.)\n return item === itemData;\n });\n\n // Only add the item if it doesn't already exist\n if (!itemExists) {\n // const newItem = {\n // id: Number(new Date().getTime()),\n // ...(typeof itemData === \"object\" && itemData !== null ? itemData : { value: itemData }),\n // };\n setItems([...items, itemData]);\n }\n};\n\n// Update\nexport const handleUpdateFront = ({\n id,\n items,\n setItems,\n itemData,\n}: {\n id?: number | string;\n items?: any[];\n setItems?: any;\n itemData?: any;\n}) => {\n if (!id || !items || !setItems || !itemData) return;\n setItems(items?.map((item) => (item.id === id ? { ...item, ...itemData } : item)));\n};\n\n// Delete\nexport const handleDeleteFront = ({\n id,\n items,\n setItems,\n}: {\n id?: number | string | null | (number | string | null)[];\n items?: any[];\n setItems?: any;\n}) => {\n if (!id || !items || !setItems) return;\n setItems(\n items?.filter((item: any) => {\n if (typeof item === 'object' && item !== null && !Array.isArray(id)) {\n return item.id !== id;\n } else if (Array.isArray(id)) {\n return !id.includes(item.id ?? item);\n } else {\n return item !== id;\n }\n }),\n );\n};\n","/**\n * Format tokens:\n * - YYYY: 4-digit year\n * - YY: 2-digit year\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 format (00-23)\n * - H: hour 24h format (0-23)\n * - hh: 2-digit hour 12h format (01-12)\n * - h: hour 12h format (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 * - A: AM/PM\n * - a: am/pm\n */\nexport const formatDateWithPattern = (date: Date, format: string): string => {\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n const hours24 = date.getHours();\n const hours12 = hours24 % 12 || 12;\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const ampm = hours24 >= 12 ? 'PM' : 'AM';\n\n const tokens: { [key: string]: string } = {\n YYYY: String(year),\n YY: String(year).slice(-2),\n MM: String(month).padStart(2, '0'),\n M: String(month),\n DD: String(day).padStart(2, '0'),\n D: String(day),\n HH: String(hours24).padStart(2, '0'),\n H: String(hours24),\n hh: String(hours12).padStart(2, '0'),\n h: String(hours12),\n mm: String(minutes).padStart(2, '0'),\n m: String(minutes),\n ss: String(seconds).padStart(2, '0'),\n s: String(seconds),\n A: ampm,\n a: ampm.toLowerCase(),\n };\n\n return format.replace(/YYYY|YY|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|A|a/g, (match) => tokens[match]);\n};\n\nexport const formatDateTime = (\n date: string | Date | null | undefined,\n format: string = 'DD/MM/YYYY, h:mmA',\n) => {\n if (!date) return '';\n const newDate = new Date(date);\n return formatDateWithPattern(newDate, format);\n};\n\nexport const formatDate = (\n date: string | Date | null | undefined,\n format: string = 'DD/MM/YYYY',\n) => {\n if (!date) return '';\n const newDate = new Date(date);\n return formatDateWithPattern(newDate, format);\n};\n\nexport const isNotFutureDate = (date: string) => {\n const val = new Date(date);\n\n const now = new Date();\n now.setDate(now.getDate() + 1);\n now.setHours(0, 0, 0, 0);\n return val < now;\n};\n\nexport function getTime(inputDate: string | Date | null | undefined): string {\n if (!inputDate) return '';\n const date = new Date(inputDate);\n const pad = (num: number) => num.toString().padStart(2, '0');\n const formattedHours = pad(date.getHours());\n const formattedMinutes = pad(date.getMinutes());\n return `${formattedHours}:${formattedMinutes}`;\n}\n\ninterface Age {\n years: number;\n months: number;\n days: number;\n}\n\nexport const calculateDetailedAge = (\n birthDate?: Date | string | null,\n t: ((key: string) => string) | undefined = undefined,\n currentDate: Date | string = new Date(),\n gender?: string,\n): { age: Age; message: string } => {\n const zeroAge = {\n age: {\n years: 0,\n months: 0,\n days: 0,\n },\n message: t?.('no_age') ?? 'No age',\n };\n\n if (birthDate === null || birthDate === undefined) {\n return zeroAge;\n }\n\n const birth: Date =\n birthDate instanceof Date\n ? birthDate\n : isValidISODate(birthDate)\n ? new Date(birthDate)\n : new Date(Number(birthDate));\n\n const current: Date = currentDate instanceof Date ? currentDate : new Date(Number(currentDate));\n\n if (isNaN(birth.getTime()) || isNaN(current.getTime())) {\n return zeroAge;\n }\n\n if (current < birth) {\n return zeroAge;\n }\n\n let years = current.getFullYear() - birth.getFullYear();\n let months = current.getMonth() - birth.getMonth();\n let days = current.getDate() - birth.getDate();\n\n if (days < 0) {\n const lastMonth = new Date(current.getFullYear(), current.getMonth(), 0);\n days += lastMonth.getDate();\n months--;\n }\n\n if (months < 0) {\n years--;\n months += 12;\n }\n\n return {\n age: {\n years,\n months,\n days,\n },\n message: `${years} ${t?.('years') ?? 'years'} - ${months} ${\n t?.('months') ?? 'months'\n } - ${days} ${t?.('days') ?? 'days'} / ${t?.(gender ?? '') ?? gender}`,\n };\n};\n\nexport const birthDateToAge = (birthDate?: Date | string | null) => {\n if (!birthDate) return null;\n const birth = new Date(birthDate);\n const today = new Date();\n\n let years = today.getFullYear() - birth.getFullYear();\n let months = today.getMonth() - birth.getMonth();\n let days = today.getDate() - birth.getDate();\n\n if (days < 0) {\n months--;\n days += new Date(today.getFullYear(), today.getMonth(), 0).getDate();\n }\n if (months < 0) {\n years--;\n months += 12;\n }\n\n return { years, months, days };\n};\n\nexport const ageToBirthDate = (age: { years: number; months: number; days: number }) => {\n const today = new Date();\n const birthYear = today.getFullYear() - age.years;\n const birthMonth = today.getMonth() - age.months;\n const birthDay = today.getDate() - age.days;\n\n const birthDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n birthDate.setFullYear(birthYear);\n birthDate.setMonth(birthMonth);\n birthDate.setDate(birthDay);\n\n return birthDate;\n};\n\nexport const ageToBirthDateChangeSegment = (\n oldAge: { years: number; months: number; days: number } | null,\n age: { years: number; months: number; days: number },\n) => {\n const today = new Date();\n const birthYear =\n oldAge && oldAge.years ? oldAge.years - age.years : today.getFullYear() - age.years;\n const birthMonth =\n oldAge && oldAge.months ? oldAge.months - age.months : today.getMonth() - age.months;\n const birthDay = oldAge && oldAge.days ? oldAge.days - age.days : today.getDate() - age.days;\n\n const birthDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n birthDate.setFullYear(birthYear);\n birthDate.setMonth(birthMonth);\n birthDate.setDate(birthDay);\n\n return birthDate;\n};\n\nexport function convertTimeToTimestamp(timeString: string): number {\n const [daysPart, timePart] = timeString.split(' ');\n const days = parseInt(daysPart.replace(/^0+/, ''), 10);\n const [hours, minutes, seconds] = (timePart || '00:00:00')\n .split(':')\n .map((part) => parseInt(part, 10));\n\n const totalMilliseconds =\n days * 24 * 60 * 60 * 1000 + hours * 60 * 60 * 1000 + minutes * 60 * 1000 + seconds * 1000;\n\n return totalMilliseconds;\n}\n\nexport const calculateAge = (birthDate: string): number => {\n const today = new Date();\n let birth: Date;\n\n if (birthDate.includes('/')) {\n const [day, month, year] = birthDate.split('/').map(Number);\n birth = new Date(year, month - 1, day);\n } else if (!isNaN(Date.parse(birthDate))) {\n birth = new Date(birthDate);\n } else {\n throw new Error('Unsupported date format');\n }\n\n let age = today.getFullYear() - birth.getFullYear();\n const m = today.getMonth() - birth.getMonth();\n\n if (m < 0 || (m === 0 && today.getDate() < birth.getDate())) {\n age--;\n }\n\n return age;\n};\n\nfunction isValidISODate(dateString: string): boolean {\n const date = new Date(dateString);\n return !isNaN(date.getTime()) && date.toISOString() === dateString;\n}\n","export const getTextOnlyFromHtml = (html?: string): string => {\n const parser = new DOMParser();\n const doc = html && parser.parseFromString(html, 'text/html');\n return (doc && doc.body.textContent) ?? '';\n};\n","export const handleKeyDownArabic = (event: any) => {\n const { key, ctrlKey, metaKey } = event;\n // Allow control keys like backspace, delete, arrow keys, etc.\n if (\n key === 'Backspace' ||\n key === 'Delete' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight' ||\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Enter'\n ) {\n return; // Allow these keys without further checking\n }\n // Allow copy, paste, cut, select all (Ctrl/Command + C, V, X, A)\n if ((ctrlKey || metaKey) && (key === 'c' || key === 'v' || key === 'x' || key === 'a')) {\n return;\n }\n // Check if the key matches Arabic characters, numbers, symbols, or whitespace\n if (!/[\\u0600-\\u06FF0-9\\s!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/.test(key)) {\n event.preventDefault();\n }\n};\n\nexport const handleKeyDownEnglish = (event: any) => {\n const { key, ctrlKey, metaKey } = event;\n // Allow control keys like backspace, delete, arrow keys, etc.\n if (\n key === 'Backspace' ||\n key === 'Delete' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight' ||\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Enter'\n ) {\n return; // Allow these keys without further checking\n }\n // Allow copy, paste, cut, select all (Ctrl/Command + C, V, X, A)\n if ((ctrlKey || metaKey) && (key === 'c' || key === 'v' || key === 'x' || key === 'a')) {\n return;\n }\n\n // Check if the key matches English letters, numbers, or symbols\n if (!/[A-Za-z0-9\\s!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/.test(key)) {\n event.preventDefault();\n }\n};\n\nexport const handleKeyDownNumber = (event: any) => {\n const { key, ctrlKey, metaKey } = event;\n\n // Allow keys for navigation, deletion, tab, and enter\n if (\n key === 'Backspace' ||\n key === 'Delete' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight' ||\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Enter'\n ) {\n return;\n }\n\n // Allow copy, paste, cut, select all (Ctrl/Command + C, V, X, A)\n if ((ctrlKey || metaKey) && (key === 'c' || key === 'v' || key === 'x' || key === 'a')) {\n return;\n }\n\n // Prevent non-numeric input\n if (!/[0-9]/.test(key)) {\n event.preventDefault();\n }\n};\n\nexport const handleKeyDownNumberNoCopy = (event: any) => {\n const { key } = event;\n\n // Allow keys for navigation, deletion, tab, and enter\n if (\n key === 'Backspace' ||\n key === 'Delete' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight' ||\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Enter'\n ) {\n return;\n }\n // Prevent non-numeric input\n if (!/[0-9]/.test(key)) {\n event.preventDefault();\n }\n};\n\nexport const handleKeyDownFloatNumber = (event: any) => {\n const { key, ctrlKey, metaKey } = event;\n const input = event.currentTarget;\n\n // Allow keys for navigation, deletion, tab, and enter\n if (\n key === 'Backspace' ||\n key === 'Delete' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight' ||\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Enter'\n ) {\n return;\n }\n\n // Allow copy, paste, cut, select all (Ctrl/Command + C, V, X, A)\n if ((ctrlKey || metaKey) && (key === 'c' || key === 'v' || key === 'x' || key === 'a')) {\n return;\n }\n\n // Allow one decimal point if it doesn't already exist\n if (key === '.' && !input.value.includes('.')) {\n return;\n }\n\n // Prevent non-numeric input (allow numbers and one decimal point)\n if (!/[0-9]/.test(key) && key !== '.') {\n event.preventDefault();\n }\n};\n","export function filterInArray<T>(field: keyof T, values: T[keyof T][], data: T[]): T[] {\n if (values.length === 0) return data;\n return data.filter((item) => values.includes(item[field]));\n}\n\nexport function filterInObjects(\n data: any[] = [],\n query: string[],\n childrenField: string = 'children',\n fieldsToFilter?: string[], // Optional array of fields to filter on\n): any[] {\n if (!data) return [];\n if (!query || query?.length === 0) return data;\n\n // Helper function to check if the specified field or all fields match the query.\n const matchesQuery = (obj: any): boolean => {\n const valuesToFilter = fieldsToFilter\n ? fieldsToFilter.map((field) => obj[field]).filter(Boolean) // Only valid fields\n : Object.values(obj); // Default to all fields\n\n return valuesToFilter.some(\n (value) => typeof value === 'string' && query.some((q) => value.includes(q)),\n );\n };\n\n // Recursive function to filter objects and extract matching ones.\n const filter = (data: any[]): any[] => {\n let results: any[] = [];\n\n data.forEach((item) => {\n // If the current item matches, add it to the results.\n if (matchesQuery(item)) {\n results.push(item);\n }\n\n // Recursively filter the children and add their matches.\n if (item[childrenField]) {\n results = results.concat(filter(item[childrenField]));\n }\n });\n\n return results;\n };\n\n return filter(data);\n}\n","export const capitalizeString = (str: string) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nexport function removeEmptyFields<T extends Record<string, any>>(obj: T): Partial<T> {\n return Object.fromEntries(\n Object.entries(obj).filter(\n ([, value]) => value?.length !== 0 && value !== null && value !== undefined,\n ),\n ) as Partial<T>;\n}\n\ntype WithId = {\n _id?: string;\n [key: string]: any;\n};\n\nexport function removeIdFromObjects<T extends WithId>(objects: T[]): Omit<T, '_id'>[] {\n return objects.map(({ _id, ...rest }) => rest);\n}\n\nexport function removeItemsWithIds(array: any[], idsToRemove: string[]): any[] {\n return array.filter((item) => !item?._id || !idsToRemove.includes(item?._id));\n}\n\nexport function createOptionsArray<T>(data: T[], valueField: keyof T, ...labelFields: (keyof T)[]) {\n return data.map((item) => ({\n value: item[valueField] as string | number,\n label: labelFields.map((field) => item[field]).join(' '),\n }));\n}\n\nexport function filterUsersOption(option: any, inputValue: string) {\n const fullNameLabel = `${option?.label?.props?.children?.[0]?.props?.children}`;\n const emailLabel = option?.label?.props?.children?.[1]?.props?.children;\n\n return (\n fullNameLabel?.toLowerCase()?.includes(inputValue?.toLowerCase()) ||\n emailLabel?.toLowerCase()?.includes(inputValue?.toLowerCase())\n );\n}\n\nexport function removeKeys(obj: any, keys: string[]): any {\n const clonedObj = { ...obj };\n\n for (const key of keys) {\n delete clonedObj[key];\n }\n\n return clonedObj;\n}\n\nexport function getArrayKeys(obj: any) {\n const result = [];\n for (const key in obj) {\n if (Array.isArray(obj[key])) {\n result.push({ [key]: obj[key] });\n }\n }\n return result;\n}\n\nexport function convertObjectToArray(obj: any): any[] {\n if (!obj) return [];\n return Object.entries(obj).map(([key, value]) => ({\n [key]: value,\n }));\n}\n\ntype Permission = {\n [key: string]: string[];\n};\n\nexport function comparePermissionLists(list1: Permission[], list2: Permission[]): boolean {\n if (list1.length !== list2.length) {\n return false;\n }\n\n for (let i = 0; i < list1.length; i++) {\n const keys1 = Object.keys(list1[i]);\n const keys2 = Object.keys(list2[i]);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n if (!keys2.includes(key)) {\n return false;\n }\n\n const values1 = list1[i][key];\n const values2 = list2[i][key];\n\n if (values1.length !== values2.length) {\n return false;\n }\n\n for (const value of values1) {\n if (!values2.includes(value)) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n\nexport function objectToFormData(\n obj: Record<string, any>,\n formData: FormData = new FormData(),\n namespace: string = '',\n): FormData {\n for (const key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n\n const formKey = namespace ? `${namespace}[${key}]` : key;\n\n if (typeof obj[key] === 'object' && !(obj[key] instanceof File)) {\n // If it's an array or object, call the function recursively\n objectToFormData(obj[key], formData, formKey);\n } else {\n // Otherwise append the value\n formData.append(formKey, obj[key]);\n }\n }\n\n return formData;\n}\n\n// Helper functions to replace lodash\nfunction isDate(value: any): value is Date {\n return value instanceof Date;\n}\n\nfunction isObject(value: any): boolean {\n return value !== null && typeof value === 'object';\n}\n\nfunction isArray(value: any): value is any[] {\n return Array.isArray(value);\n}\n\nfunction omit<T extends Record<string, any>>(obj: T, keysToOmit: string[]): Partial<T> {\n const result: any = {};\n for (const key in obj) {\n if (!keysToOmit.includes(key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\nfunction isEqual(value1: any, value2: any): boolean {\n // Check if both are the same reference or both are primitive and equal\n if (value1 === value2) return true;\n\n // Check if either is null or undefined\n if (value1 == null || value2 == null) return false;\n\n // Check if types are different\n if (typeof value1 !== typeof value2) return false;\n\n // Handle Date objects\n if (value1 instanceof Date && value2 instanceof Date) {\n return value1.getTime() === value2.getTime();\n }\n\n // Handle Arrays\n if (Array.isArray(value1) && Array.isArray(value2)) {\n if (value1.length !== value2.length) return false;\n for (let i = 0; i < value1.length; i++) {\n if (!isEqual(value1[i], value2[i])) return false;\n }\n return true;\n }\n\n // Handle Objects\n if (typeof value1 === 'object' && typeof value2 === 'object') {\n const keys1 = Object.keys(value1);\n const keys2 = Object.keys(value2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (!keys2.includes(key)) return false;\n if (!isEqual(value1[key], value2[key])) return false;\n }\n return true;\n }\n\n // For all other cases\n return false;\n}\n\n/**\n * Compares two objects and returns true if they are equivalent.\n * Ignores specified keys if provided.\n *\n * @param {any} original - The original object.\n * @param {any} updated - The updated object to compare with.\n * @param {string[]} [keysToIgnore=[]] - Optional keys to ignore during comparison.\n * @returns {boolean} - True if objects are equivalent, otherwise false.\n */\nexport function compareObjects(original: any, updated: any, keysToIgnore: string[] = []): boolean {\n const normalizedOriginal = omit(original, keysToIgnore);\n const normalizedUpdated = omit(updated, keysToIgnore);\n\n return isEqual(normalizedOriginal, normalizedUpdated);\n}\n\nexport function getChangedFields(original: any, updated: any): any {\n // Safety net\n if (!original && !updated) return {};\n if (!original) return updated ?? {};\n if (!updated) return {};\n\n const changedFields: any = {};\n\n Object.keys(updated).forEach((key) => {\n const originalValue = original?.[key];\n const updatedValue = updated?.[key];\n\n // Case 1: Dates\n if (isDate(updatedValue) && isDate(originalValue)) {\n if (originalValue.getTime() !== updatedValue.getTime()) {\n changedFields[key] = updatedValue;\n }\n return;\n }\n\n // Case 2: One is object, the other is not\n if (isObject(updatedValue) && !isObject(originalValue)) {\n changedFields[key] = updatedValue;\n return;\n }\n\n // Case 3: Nested objects (non-array)\n if (\n isObject(updatedValue) &&\n !isArray(updatedValue) &&\n isObject(originalValue) &&\n !isArray(originalValue)\n ) {\n const nestedChanges = getChangedFields(originalValue, updatedValue);\n if (Object.keys(nestedChanges).length > 0) {\n changedFields[key] = nestedChanges;\n }\n return;\n }\n\n // Case 4: Arrays\n if (isArray(updatedValue) || isArray(originalValue)) {\n if (!isEqual(originalValue, updatedValue)) {\n changedFields[key] = updatedValue;\n }\n return;\n }\n\n // Case 5: Primitive values\n if (!isEqual(originalValue, updatedValue)) {\n changedFields[key] = updatedValue;\n }\n });\n\n return changedFields;\n}\n\nexport function sortObjectByKeys<T extends Record<string, any>>(obj: T): T {\n const sortedEntries = Object.entries(obj).sort((a, b) => {\n return a[0].localeCompare(b[0]);\n });\n\n return Object.fromEntries(sortedEntries) as T;\n}\n\nexport function sortObjectByValues<T extends Record<string, any>>(obj: T): T {\n const sortedEntries = Object.entries(obj).sort((a, b) => {\n if (typeof a[1] === 'number' && typeof b[1] === 'number') {\n return a[1] - b[1];\n }\n return 0;\n });\n\n return Object.fromEntries(sortedEntries) as T;\n}\n\ntype AnyObject = { [key: string]: any };\n\nexport function removeFields(obj: AnyObject, fieldsToRemove: string[]): AnyObject {\n if (Array.isArray(obj)) {\n // Recursively process each item in the array\n return obj.map((item) => removeFields(item, fieldsToRemove));\n } else if (typeof obj === 'object' && obj !== null) {\n const newObj: AnyObject = {};\n\n // Iterate over each key-value pair in the object\n for (const key in obj) {\n if (!fieldsToRemove.includes(key)) {\n // Only add the key if it's not in fieldsToRemove, and process its value recursively\n newObj[key] = removeFields(obj[key], fieldsToRemove);\n }\n }\n\n return newObj;\n }\n\n // Return primitive types (strings, numbers, etc.) as is\n return obj;\n}\n\nexport function removeFieldsTopLevel(\n obj: AnyObject | AnyObject[] | null | undefined,\n fieldsToRemove?: string[],\n): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n if (Array.isArray(obj)) {\n // If it's an array, process each item in the array\n return obj.map((item) => {\n if (typeof item === 'object' && item !== null) {\n return removeFieldsFromObject(item, fieldsToRemove);\n }\n return item; // Return non-object items as is\n });\n } else if (typeof obj === 'object' && obj !== null) {\n // If it's a single object, remove fields at the top level\n return removeFieldsFromObject(obj, fieldsToRemove);\n }\n\n // If it's neither an object nor an array, return it as is\n return obj;\n}\n\n// Helper function to remove fields from a single object at the top level\nexport function removeFieldsFromObject(obj: AnyObject, fieldsToRemove?: string[]): AnyObject {\n const newObj: AnyObject = { ...obj };\n\n // Remove specified fields from the object\n for (const field of fieldsToRemove || []) {\n delete newObj[field];\n }\n\n return newObj;\n}\n\nexport const getLabelByItemsAndId = (\n id?: string | number,\n items?: any[],\n fields: string[] | string = 'name',\n) => {\n if (!items || !id) return undefined;\n const item = items?.find((item) => item.id === id);\n if (item) {\n if (Array.isArray(fields)) {\n return fields.map((field) => item[field]).join(' ');\n }\n return item[fields];\n }\n return '';\n};\n\nexport const getLabelByItemsAndOptions = (id?: string | number | null, items?: any[]) => {\n if (!items || !id) return undefined;\n const item = items?.find((item) => item.value === id || item?.id === id || item?._id === id);\n if (item) {\n return item.label;\n }\n return '';\n};\n","import { removeEmptyFields } from './object';\n\nexport function toQueryString(params?: any): string {\n if (params)\n return Object.entries(removeEmptyFields(params))\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&');\n return '';\n}\n\nexport function pureURLS3(url: string | undefined): string | undefined {\n if (url?.startsWith('http')) {\n return url.split('.com/')[1].split('?')[0];\n }\n return url;\n}\n\nexport const createSearchQuery = (\n params: Record<string, string | number | boolean | undefined | string[] | number[]>,\n) => {\n const query = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n for (const v of value) {\n query.append(key, v.toString());\n }\n } else if (value !== undefined) {\n query.append(key, value.toString());\n }\n }\n\n return query.toString();\n};\n\nexport const serializeFormQuery = (\n params: Record<string, string | number | boolean | undefined | string[] | number[]>,\n) => {\n return Object.entries(params)\n .map(([key, value]) => {\n if (Array.isArray(value)) {\n if (value.length === 0) return '';\n return `${key}=${value.join(',')}`;\n }\n if (value === undefined || value === '') return '';\n return `${key}=${value}`;\n })\n .filter((val) => val !== '')\n .join('&');\n};\n\nexport const arrFromQuery = (query: string | null) =>\n !query || query === null || query === '' ? [] : query.split(',').map((val) => parseInt(val));\n\nexport const uniqueId = (): number => {\n return Date.now() + Math.floor(Math.random() * 10000);\n};\n\nexport const prePareFilters = (searchParams: URLSearchParams) => {\n const filtersParam = searchParams.get('filters');\n if (!filtersParam) return null;\n\n try {\n const decoded = decodeURIComponent(filtersParam);\n const filtersArray = JSON.parse(decoded);\n\n // Convert filter format to backend format if needed\n // The filters come in format: { column, logic, value, fields, operatorGroup }\n // We need to send them as-is to trigger refetch\n return filtersArray;\n } catch (error) {\n console.error('Error parsing filters from URL:', error);\n return null;\n }\n};\n","export const addSearchParam = (\n searchParams: URLSearchParams,\n setSearchParams: any,\n key: string,\n value: string,\n) => {\n const newSearchParams = new URLSearchParams(searchParams);\n newSearchParams.set(key, value);\n setSearchParams(newSearchParams);\n};\n\n/**\n * Recursively searches across all fields of objects and their [`${childrenField}`].\n * @param data - The array of objects to search.\n * @param query - The search query string.\n * @returns An array of objects that match the search query.\n */\nexport function searchInObjectsWithParents(\n data: any[] = [],\n query: string = '',\n childrenField: string = 'children',\n fieldsToSearch?: string[], // Optional: Array of specific fields to search\n): any[] {\n if (!data) return [];\n if (!query) return data;\n\n const lowerQuery = query.trim()?.toLowerCase();\n\n // Helper function to check if the object matches the query within the specified fields.\n const matchesQuery = (obj: any): boolean => {\n const valuesToSearch = fieldsToSearch\n ? fieldsToSearch.map((field) => obj[field]).filter(Boolean) // Filter out invalid fields\n : Object.values(obj); // Default to all values\n\n return valuesToSearch.some(\n (value) => typeof value === 'string' && value?.toLowerCase().includes(lowerQuery),\n );\n };\n\n // Recursive function to search objects and retain matching parents and children.\n const search = (data: any[]): any[] => {\n return data\n .map((item) => {\n const childResults = item[childrenField] ? search(item[childrenField]) : [];\n\n // If the item matches the query or any child matches, include it in the results.\n if (matchesQuery(item) || childResults.length > 0) {\n return {\n ...item,\n [childrenField]: childResults.length > 0 ? childResults : undefined, // Keep only matching children.\n };\n }\n return null; // Exclude non-matching items.\n })\n .filter((item) => item !== null); // Remove null values from the result.\n };\n\n return search(data);\n}\n\nexport function searchInObjects(\n data: any[] = [],\n query: string = '',\n childrenField: string = 'children',\n fieldsToSearch?: string[], // Optional array of fields to search on\n): any[] {\n if (!data) return [];\n if (!query) return data;\n const lowerQuery = query?.trim()?.toLowerCase();\n\n // Helper function to check if the specified field or all fields match the query.\n const matchesQuery = (obj: any): boolean => {\n const valuesToSearch = fieldsToSearch\n ? fieldsToSearch.map((field) => obj[field]).filter(Boolean) // Only valid fields\n : Object.values(obj); // Default to all fields\n\n return valuesToSearch.some(\n (value) => typeof value === 'string' && value?.toLowerCase().includes(lowerQuery),\n );\n };\n\n // Recursive function to search objects and extract matching ones.\n const search = (data: any[]): any[] => {\n let results: any[] = [];\n\n data.forEach((item) => {\n // If the current item matches, add it to the results.\n if (matchesQuery(item)) {\n results.push(item);\n }\n\n // Recursively search the children and add their matches.\n if (item[childrenField]) {\n results = results.concat(search(item[childrenField]));\n }\n });\n\n return results;\n };\n\n return search(data);\n}\n","export const validateDay = (value: string): string => {\n const sanitizedValue = value.replace(/\\D/g, ''); // Remove non-numeric characters\n if (!sanitizedValue) return ''; // Allow empty input\n return Math.min(Math.max(parseInt(sanitizedValue, 10), 1), 31).toString(); // Ensure between 1-31\n};\n\nexport const validateMonth = (value: string): string => {\n const sanitizedValue = value.replace(/\\D/g, '');\n if (!sanitizedValue) return '';\n return Math.min(Math.max(parseInt(sanitizedValue, 10), 1), 12).toString(); // Ensure between 1-12\n};\n\nexport const validateYear = (value: string): string => {\n const sanitizedValue = value.replace(/\\D/g, ''); // Remove non-numeric characters\n if (!sanitizedValue) return '';\n\n // Allow typing until 4 digits are reached\n if (sanitizedValue.length < 4) return sanitizedValue;\n\n // Ensure the year is at least 1900 when it reaches 4 digits\n const year = parseInt(sanitizedValue, 10);\n return year < 1900 ? '1900' : sanitizedValue;\n};\n"],"mappings":"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","names":["index_exports","__export","addSearchParam","ageToBirthDate","ageToBirthDateChangeSegment","arrFromQuery","birthDateToAge","calculateAge","calculateDetailedAge","capitalizeString","compareObjects","comparePermissionLists","convertObjectToArray","convertTimeToTimestamp","createOptionsArray","createSearchQuery","filterInArray","filterInObjects","filterUsersOption","formatDate","formatDateTime","formatDateWithPattern","getArrayKeys","getChangedFields","getLabelByItemsAndId","getLabelByItemsAndOptions","getTextOnlyFromHtml","getTime","handleCreateFront","handleCreateFrontUnique","handleDeleteFront","handleKeyDownArabic","handleKeyDownEnglish","handleKeyDownFloatNumber","handleKeyDownNumber","handleKeyDownNumberNoCopy","handleUpdateFront","isNotFutureDate","literalOrdinals","objectToFormData","prePareFilters","pureURLS3","removeEmptyFields","removeFields","removeFieldsFromObject","removeFieldsTopLevel","removeIdFromObjects","removeItemsWithIds","removeKeys","searchInObjects","searchInObjectsWithParents","serializeFormQuery","sortObjectByKeys","sortObjectByValues","toQueryString","uniqueId","validateDay","validateMonth","validateYear","__toCommonJS","literalOrdinals","num","lang","ones","teens","tens","hundreds","hundredPart","remainderPart","remainder","base","suffixes","v","handleCreateFront","items","setItems","itemData","newItem","__spreadValues","handleCreateFrontUnique","uniqueField","item","handleUpdateFront","id","handleDeleteFront","_a","formatDateWithPattern","date","format","day","month","year","hours24","hours12","minutes","seconds","ampm","tokens","match","formatDateTime","newDate","formatDate","isNotFutureDate","val","now","getTime","inputDate","pad","num","formattedHours","formattedMinutes","calculateDetailedAge","birthDate","currentDate","gender","_a","_b","_c","_d","_e","zeroAge","birth","isValidISODate","current","years","months","days","lastMonth","birthDateToAge","today","ageToBirthDate","age","birthYear","birthMonth","birthDay","ageToBirthDateChangeSegment","oldAge","convertTimeToTimestamp","timeString","daysPart","timePart","hours","part","calculateAge","m","dateString","getTextOnlyFromHtml","html","_a","parser","doc","handleKeyDownArabic","event","key","ctrlKey","metaKey","handleKeyDownEnglish","handleKeyDownNumber","handleKeyDownNumberNoCopy","handleKeyDownFloatNumber","input","filterInArray","field","values","data","item","filterInObjects","query","childrenField","fieldsToFilter","matchesQuery","obj","value","q","filter","results","capitalizeString","str","removeEmptyFields","obj","value","removeIdFromObjects","objects","_a","_b","_id","rest","__objRest","removeItemsWithIds","array","idsToRemove","item","createOptionsArray","data","valueField","labelFields","field","filterUsersOption","option","inputValue","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","fullNameLabel","emailLabel","removeKeys","keys","clonedObj","__spreadValues","key","getArrayKeys","result","convertObjectToArray","comparePermissionLists","list1","list2","i","keys1","keys2","values1","values2","objectToFormData","formData","namespace","formKey","isDate","isObject","isArray","omit","keysToOmit","isEqual","value1","value2","compareObjects","original","updated","keysToIgnore","normalizedOriginal","normalizedUpdated","getChangedFields","changedFields","originalValue","updatedValue","nestedChanges","sortObjectByKeys","sortedEntries","a","b","sortObjectByValues","removeFields","fieldsToRemove","newObj","removeFieldsTopLevel","removeFieldsFromObject","getLabelByItemsAndId","id","items","fields","getLabelByItemsAndOptions","toQueryString","params","removeEmptyFields","value","key","pureURLS3","url","createSearchQuery","query","v","serializeFormQuery","val","arrFromQuery","uniqueId","prePareFilters","searchParams","filtersParam","decoded","error","addSearchParam","searchParams","setSearchParams","key","value","newSearchParams","searchInObjectsWithParents","data","query","childrenField","fieldsToSearch","_a","lowerQuery","matchesQuery","obj","field","search","item","childResults","__spreadProps","__spreadValues","searchInObjects","results","validateDay","value","sanitizedValue","validateMonth","validateYear"]}
|
|
@@ -1,30 +1,50 @@
|
|
|
1
1
|
declare const literalOrdinals: (num: number, lang: "ar" | "en") => string;
|
|
2
2
|
|
|
3
|
-
declare const handleCreateFront: ({ items, setItems, itemData }: {
|
|
3
|
+
declare const handleCreateFront: ({ items, setItems, itemData, }: {
|
|
4
4
|
items?: any[];
|
|
5
5
|
setItems?: any;
|
|
6
6
|
itemData?: any;
|
|
7
7
|
}) => void;
|
|
8
|
-
declare const handleCreateFrontUnique: ({ items, setItems, itemData, uniqueField }: {
|
|
8
|
+
declare const handleCreateFrontUnique: ({ items, setItems, itemData, uniqueField, }: {
|
|
9
9
|
items?: any[];
|
|
10
10
|
setItems?: any;
|
|
11
11
|
itemData?: any;
|
|
12
12
|
uniqueField?: string;
|
|
13
13
|
}) => void;
|
|
14
|
-
declare const handleUpdateFront: ({ id, items, setItems, itemData }: {
|
|
14
|
+
declare const handleUpdateFront: ({ id, items, setItems, itemData, }: {
|
|
15
15
|
id?: number | string;
|
|
16
16
|
items?: any[];
|
|
17
17
|
setItems?: any;
|
|
18
18
|
itemData?: any;
|
|
19
19
|
}) => void;
|
|
20
|
-
declare const handleDeleteFront: ({ id, items, setItems }: {
|
|
20
|
+
declare const handleDeleteFront: ({ id, items, setItems, }: {
|
|
21
21
|
id?: number | string | null | (number | string | null)[];
|
|
22
22
|
items?: any[];
|
|
23
23
|
setItems?: any;
|
|
24
24
|
}) => void;
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Format tokens:
|
|
28
|
+
* - YYYY: 4-digit year
|
|
29
|
+
* - YY: 2-digit year
|
|
30
|
+
* - MM: 2-digit month (01-12)
|
|
31
|
+
* - M: month (1-12)
|
|
32
|
+
* - DD: 2-digit day (01-31)
|
|
33
|
+
* - D: day (1-31)
|
|
34
|
+
* - HH: 2-digit hour 24h format (00-23)
|
|
35
|
+
* - H: hour 24h format (0-23)
|
|
36
|
+
* - hh: 2-digit hour 12h format (01-12)
|
|
37
|
+
* - h: hour 12h format (1-12)
|
|
38
|
+
* - mm: 2-digit minutes (00-59)
|
|
39
|
+
* - m: minutes (0-59)
|
|
40
|
+
* - ss: 2-digit seconds (00-59)
|
|
41
|
+
* - s: seconds (0-59)
|
|
42
|
+
* - A: AM/PM
|
|
43
|
+
* - a: am/pm
|
|
44
|
+
*/
|
|
45
|
+
declare const formatDateWithPattern: (date: Date, format: string) => string;
|
|
46
|
+
declare const formatDateTime: (date: string | Date | null | undefined, format?: string) => string;
|
|
47
|
+
declare const formatDate: (date: string | Date | null | undefined, format?: string) => string;
|
|
28
48
|
declare const isNotFutureDate: (date: string) => boolean;
|
|
29
49
|
declare function getTime(inputDate: string | Date | null | undefined): string;
|
|
30
50
|
interface Age {
|
|
@@ -32,7 +52,7 @@ interface Age {
|
|
|
32
52
|
months: number;
|
|
33
53
|
days: number;
|
|
34
54
|
}
|
|
35
|
-
declare const calculateDetailedAge: (birthDate?: Date | string | null, t?: (key: string) => string, currentDate?: Date | string, gender?: string) => {
|
|
55
|
+
declare const calculateDetailedAge: (birthDate?: Date | string | null, t?: ((key: string) => string) | undefined, currentDate?: Date | string, gender?: string) => {
|
|
36
56
|
age: Age;
|
|
37
57
|
message: string;
|
|
38
58
|
};
|
|
@@ -75,7 +95,7 @@ type WithId = {
|
|
|
75
95
|
_id?: string;
|
|
76
96
|
[key: string]: any;
|
|
77
97
|
};
|
|
78
|
-
declare function removeIdFromObjects<T extends WithId>(objects: T[]): Omit<T,
|
|
98
|
+
declare function removeIdFromObjects<T extends WithId>(objects: T[]): Omit<T, '_id'>[];
|
|
79
99
|
declare function removeItemsWithIds(array: any[], idsToRemove: string[]): any[];
|
|
80
100
|
declare function createOptionsArray<T>(data: T[], valueField: keyof T, ...labelFields: (keyof T)[]): {
|
|
81
101
|
value: string | number;
|
|
@@ -136,4 +156,4 @@ declare const validateDay: (value: string) => string;
|
|
|
136
156
|
declare const validateMonth: (value: string) => string;
|
|
137
157
|
declare const validateYear: (value: string) => string;
|
|
138
158
|
|
|
139
|
-
export { addSearchParam, ageToBirthDate, ageToBirthDateChangeSegment, arrFromQuery, birthDateToAge, calculateAge, calculateDetailedAge, capitalizeString, compareObjects, comparePermissionLists, convertObjectToArray, convertTimeToTimestamp, createOptionsArray, createSearchQuery, filterInArray, filterInObjects, filterUsersOption, formatDate, formatDateTime, getArrayKeys, getChangedFields, getLabelByItemsAndId, getLabelByItemsAndOptions, getTextOnlyFromHtml, getTime, handleCreateFront, handleCreateFrontUnique, handleDeleteFront, handleKeyDownArabic, handleKeyDownEnglish, handleKeyDownFloatNumber, handleKeyDownNumber, handleKeyDownNumberNoCopy, handleUpdateFront, isNotFutureDate, literalOrdinals, objectToFormData, prePareFilters, pureURLS3, removeEmptyFields, removeFields, removeFieldsFromObject, removeFieldsTopLevel, removeIdFromObjects, removeItemsWithIds, removeKeys, searchInObjects, searchInObjectsWithParents, serializeFormQuery, sortObjectByKeys, sortObjectByValues, toQueryString, uniqueId, validateDay, validateMonth, validateYear };
|
|
159
|
+
export { addSearchParam, ageToBirthDate, ageToBirthDateChangeSegment, arrFromQuery, birthDateToAge, calculateAge, calculateDetailedAge, capitalizeString, compareObjects, comparePermissionLists, convertObjectToArray, convertTimeToTimestamp, createOptionsArray, createSearchQuery, filterInArray, filterInObjects, filterUsersOption, formatDate, formatDateTime, formatDateWithPattern, getArrayKeys, getChangedFields, getLabelByItemsAndId, getLabelByItemsAndOptions, getTextOnlyFromHtml, getTime, handleCreateFront, handleCreateFrontUnique, handleDeleteFront, handleKeyDownArabic, handleKeyDownEnglish, handleKeyDownFloatNumber, handleKeyDownNumber, handleKeyDownNumberNoCopy, handleUpdateFront, isNotFutureDate, literalOrdinals, objectToFormData, prePareFilters, pureURLS3, removeEmptyFields, removeFields, removeFieldsFromObject, removeFieldsTopLevel, removeIdFromObjects, removeItemsWithIds, removeKeys, searchInObjects, searchInObjectsWithParents, serializeFormQuery, sortObjectByKeys, sortObjectByValues, toQueryString, uniqueId, validateDay, validateMonth, validateYear };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,30 +1,50 @@
|
|
|
1
1
|
declare const literalOrdinals: (num: number, lang: "ar" | "en") => string;
|
|
2
2
|
|
|
3
|
-
declare const handleCreateFront: ({ items, setItems, itemData }: {
|
|
3
|
+
declare const handleCreateFront: ({ items, setItems, itemData, }: {
|
|
4
4
|
items?: any[];
|
|
5
5
|
setItems?: any;
|
|
6
6
|
itemData?: any;
|
|
7
7
|
}) => void;
|
|
8
|
-
declare const handleCreateFrontUnique: ({ items, setItems, itemData, uniqueField }: {
|
|
8
|
+
declare const handleCreateFrontUnique: ({ items, setItems, itemData, uniqueField, }: {
|
|
9
9
|
items?: any[];
|
|
10
10
|
setItems?: any;
|
|
11
11
|
itemData?: any;
|
|
12
12
|
uniqueField?: string;
|
|
13
13
|
}) => void;
|
|
14
|
-
declare const handleUpdateFront: ({ id, items, setItems, itemData }: {
|
|
14
|
+
declare const handleUpdateFront: ({ id, items, setItems, itemData, }: {
|
|
15
15
|
id?: number | string;
|
|
16
16
|
items?: any[];
|
|
17
17
|
setItems?: any;
|
|
18
18
|
itemData?: any;
|
|
19
19
|
}) => void;
|
|
20
|
-
declare const handleDeleteFront: ({ id, items, setItems }: {
|
|
20
|
+
declare const handleDeleteFront: ({ id, items, setItems, }: {
|
|
21
21
|
id?: number | string | null | (number | string | null)[];
|
|
22
22
|
items?: any[];
|
|
23
23
|
setItems?: any;
|
|
24
24
|
}) => void;
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Format tokens:
|
|
28
|
+
* - YYYY: 4-digit year
|
|
29
|
+
* - YY: 2-digit year
|
|
30
|
+
* - MM: 2-digit month (01-12)
|
|
31
|
+
* - M: month (1-12)
|
|
32
|
+
* - DD: 2-digit day (01-31)
|
|
33
|
+
* - D: day (1-31)
|
|
34
|
+
* - HH: 2-digit hour 24h format (00-23)
|
|
35
|
+
* - H: hour 24h format (0-23)
|
|
36
|
+
* - hh: 2-digit hour 12h format (01-12)
|
|
37
|
+
* - h: hour 12h format (1-12)
|
|
38
|
+
* - mm: 2-digit minutes (00-59)
|
|
39
|
+
* - m: minutes (0-59)
|
|
40
|
+
* - ss: 2-digit seconds (00-59)
|
|
41
|
+
* - s: seconds (0-59)
|
|
42
|
+
* - A: AM/PM
|
|
43
|
+
* - a: am/pm
|
|
44
|
+
*/
|
|
45
|
+
declare const formatDateWithPattern: (date: Date, format: string) => string;
|
|
46
|
+
declare const formatDateTime: (date: string | Date | null | undefined, format?: string) => string;
|
|
47
|
+
declare const formatDate: (date: string | Date | null | undefined, format?: string) => string;
|
|
28
48
|
declare const isNotFutureDate: (date: string) => boolean;
|
|
29
49
|
declare function getTime(inputDate: string | Date | null | undefined): string;
|
|
30
50
|
interface Age {
|
|
@@ -32,7 +52,7 @@ interface Age {
|
|
|
32
52
|
months: number;
|
|
33
53
|
days: number;
|
|
34
54
|
}
|
|
35
|
-
declare const calculateDetailedAge: (birthDate?: Date | string | null, t?: (key: string) => string, currentDate?: Date | string, gender?: string) => {
|
|
55
|
+
declare const calculateDetailedAge: (birthDate?: Date | string | null, t?: ((key: string) => string) | undefined, currentDate?: Date | string, gender?: string) => {
|
|
36
56
|
age: Age;
|
|
37
57
|
message: string;
|
|
38
58
|
};
|
|
@@ -75,7 +95,7 @@ type WithId = {
|
|
|
75
95
|
_id?: string;
|
|
76
96
|
[key: string]: any;
|
|
77
97
|
};
|
|
78
|
-
declare function removeIdFromObjects<T extends WithId>(objects: T[]): Omit<T,
|
|
98
|
+
declare function removeIdFromObjects<T extends WithId>(objects: T[]): Omit<T, '_id'>[];
|
|
79
99
|
declare function removeItemsWithIds(array: any[], idsToRemove: string[]): any[];
|
|
80
100
|
declare function createOptionsArray<T>(data: T[], valueField: keyof T, ...labelFields: (keyof T)[]): {
|
|
81
101
|
value: string | number;
|
|
@@ -136,4 +156,4 @@ declare const validateDay: (value: string) => string;
|
|
|
136
156
|
declare const validateMonth: (value: string) => string;
|
|
137
157
|
declare const validateYear: (value: string) => string;
|
|
138
158
|
|
|
139
|
-
export { addSearchParam, ageToBirthDate, ageToBirthDateChangeSegment, arrFromQuery, birthDateToAge, calculateAge, calculateDetailedAge, capitalizeString, compareObjects, comparePermissionLists, convertObjectToArray, convertTimeToTimestamp, createOptionsArray, createSearchQuery, filterInArray, filterInObjects, filterUsersOption, formatDate, formatDateTime, getArrayKeys, getChangedFields, getLabelByItemsAndId, getLabelByItemsAndOptions, getTextOnlyFromHtml, getTime, handleCreateFront, handleCreateFrontUnique, handleDeleteFront, handleKeyDownArabic, handleKeyDownEnglish, handleKeyDownFloatNumber, handleKeyDownNumber, handleKeyDownNumberNoCopy, handleUpdateFront, isNotFutureDate, literalOrdinals, objectToFormData, prePareFilters, pureURLS3, removeEmptyFields, removeFields, removeFieldsFromObject, removeFieldsTopLevel, removeIdFromObjects, removeItemsWithIds, removeKeys, searchInObjects, searchInObjectsWithParents, serializeFormQuery, sortObjectByKeys, sortObjectByValues, toQueryString, uniqueId, validateDay, validateMonth, validateYear };
|
|
159
|
+
export { addSearchParam, ageToBirthDate, ageToBirthDateChangeSegment, arrFromQuery, birthDateToAge, calculateAge, calculateDetailedAge, capitalizeString, compareObjects, comparePermissionLists, convertObjectToArray, convertTimeToTimestamp, createOptionsArray, createSearchQuery, filterInArray, filterInObjects, filterUsersOption, formatDate, formatDateTime, formatDateWithPattern, getArrayKeys, getChangedFields, getLabelByItemsAndId, getLabelByItemsAndOptions, getTextOnlyFromHtml, getTime, handleCreateFront, handleCreateFrontUnique, handleDeleteFront, handleKeyDownArabic, handleKeyDownEnglish, handleKeyDownFloatNumber, handleKeyDownNumber, handleKeyDownNumberNoCopy, handleUpdateFront, isNotFutureDate, literalOrdinals, objectToFormData, prePareFilters, pureURLS3, removeEmptyFields, removeFields, removeFieldsFromObject, removeFieldsTopLevel, removeIdFromObjects, removeItemsWithIds, removeKeys, searchInObjects, searchInObjectsWithParents, serializeFormQuery, sortObjectByKeys, sortObjectByValues, toQueryString, uniqueId, validateDay, validateMonth, validateYear };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var E=Object.create;var g=Object.defineProperty,L=Object.defineProperties,C=Object.getOwnPropertyDescriptor,U=Object.getOwnPropertyDescriptors,P=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,R=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,M=Object.prototype.propertyIsEnumerable;var F=(t,e,r)=>e in t?g(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,y=(t,e)=>{for(var r in e||(e={}))h.call(e,r)&&F(t,r,e[r]);if(p)for(var r of p(e))M.call(e,r)&&F(t,r,e[r]);return t},j=(t,e)=>L(t,U(e));var $=(t,e)=>{var r={};for(var n in t)h.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&p)for(var n of p(t))e.indexOf(n)<0&&M.call(t,n)&&(r[n]=t[n]);return r};var K=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},S=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of P(e))!h.call(t,o)&&o!==r&&g(t,o,{get:()=>e[o],enumerable:!(n=C(e,o))||n.enumerable});return t};var N=(t,e,r)=>(r=t!=null?E(R(t)):{},S(e||!t||!t.__esModule?g(r,"default",{value:t,enumerable:!0}):r,t)),B=t=>S(g({},"__esModule",{value:!0}),t);var Ke={};K(Ke,{addSearchParam:()=>Ee,ageToBirthDate:()=>V,ageToBirthDateChangeSegment:()=>q,arrFromQuery:()=>Ye,birthDateToAge:()=>X,calculateAge:()=>te,calculateDetailedAge:()=>G,capitalizeString:()=>le,compareObjects:()=>be,comparePermissionLists:()=>De,convertObjectToArray:()=>xe,convertTimeToTimestamp:()=>ee,createOptionsArray:()=>pe,createSearchQuery:()=>$e,filterInArray:()=>ue,filterInObjects:()=>fe,filterUsersOption:()=>he,formatDate:()=>H,formatDateTime:()=>W,getArrayKeys:()=>me,getChangedFields:()=>k,getLabelByItemsAndId:()=>Te,getLabelByItemsAndOptions:()=>Fe,getTextOnlyFromHtml:()=>ne,getTime:()=>Z,handleCreateFront:()=>v,handleCreateFrontUnique:()=>z,handleDeleteFront:()=>_,handleKeyDownArabic:()=>oe,handleKeyDownEnglish:()=>se,handleKeyDownFloatNumber:()=>ce,handleKeyDownNumber:()=>ae,handleKeyDownNumberNoCopy:()=>ie,handleUpdateFront:()=>Q,isNotFutureDate:()=>J,literalOrdinals:()=>Y,objectToFormData:()=>I,prePareFilters:()=>ke,pureURLS3:()=>je,removeEmptyFields:()=>D,removeFields:()=>m,removeFieldsFromObject:()=>x,removeFieldsTopLevel:()=>Oe,removeIdFromObjects:()=>ye,removeItemsWithIds:()=>ge,removeKeys:()=>de,searchInObjects:()=>Ce,searchInObjectsWithParents:()=>Le,serializeFormQuery:()=>Se,sortObjectByKeys:()=>we,sortObjectByValues:()=>Ae,toQueryString:()=>Me,uniqueId:()=>Ie,validateDay:()=>Ue,validateMonth:()=>Pe,validateYear:()=>Re});module.exports=B(Ke);var Y=(t,e)=>{if(e==="ar"){let r=["","\u0627\u0644\u0623\u0648\u0644","\u0627\u0644\u062B\u0627\u0646\u064A","\u0627\u0644\u062B\u0627\u0644\u062B","\u0627\u0644\u0631\u0627\u0628\u0639","\u0627\u0644\u062E\u0627\u0645\u0633","\u0627\u0644\u0633\u0627\u062F\u0633","\u0627\u0644\u0633\u0627\u0628\u0639","\u0627\u0644\u062B\u0627\u0645\u0646","\u0627\u0644\u062A\u0627\u0633\u0639"],n=["\u0627\u0644\u062D\u0627\u062F\u064A \u0639\u0634\u0631","\u0627\u0644\u062B\u0627\u0646\u064A \u0639\u0634\u0631","\u0627\u0644\u062B\u0627\u0644\u062B \u0639\u0634\u0631","\u0627\u0644\u0631\u0627\u0628\u0639 \u0639\u0634\u0631","\u0627\u0644\u062E\u0627\u0645\u0633 \u0639\u0634\u0631","\u0627\u0644\u0633\u0627\u062F\u0633 \u0639\u0634\u0631","\u0627\u0644\u0633\u0627\u0628\u0639 \u0639\u0634\u0631","\u0627\u0644\u062B\u0627\u0645\u0646 \u0639\u0634\u0631","\u0627\u0644\u062A\u0627\u0633\u0639 \u0639\u0634\u0631"],o=["","\u0627\u0644\u0639\u0627\u0634\u0631","\u0627\u0644\u0639\u0634\u0631\u0648\u0646","\u0627\u0644\u062B\u0644\u0627\u062B\u0648\u0646","\u0627\u0644\u0623\u0631\u0628\u0639\u0648\u0646","\u0627\u0644\u062E\u0645\u0633\u0648\u0646","\u0627\u0644\u0633\u062A\u0648\u0646","\u0627\u0644\u0633\u0628\u0639\u0648\u0646","\u0627\u0644\u062B\u0645\u0627\u0646\u0648\u0646","\u0627\u0644\u062A\u0633\u0639\u0648\u0646"],s=["","\u0627\u0644\u0645\u0627\u0626\u0629","\u0627\u0644\u0645\u0626\u062A\u0627\u0646","\u0627\u0644\u062B\u0644\u0627\u062B\u0645\u0627\u0626\u0629","\u0627\u0644\u0623\u0631\u0628\u0639\u0645\u0627\u0626\u0629","\u0627\u0644\u062E\u0645\u0633\u0645\u0627\u0626\u0629","\u0627\u0644\u0633\u062A\u0645\u0627\u0626\u0629","\u0627\u0644\u0633\u0628\u0639\u0645\u0627\u0626\u0629","\u0627\u0644\u062B\u0645\u0627\u0646\u0645\u0627\u0626\u0629","\u0627\u0644\u062A\u0633\u0639\u0645\u0627\u0626\u0629"];if(t===1)return"\u0627\u0644\u0623\u0648\u0644";if(t>=2&&t<=9)return r[t];if(t>=11&&t<=19)return n[t-11];if(t%10===0&&t<100)return o[t/10];let a=t%10,u=Math.floor(t/10)*10;if(u===10)return`\u0627\u0644${r[a]} \u0639\u0634\u0631`;if(a===1)return`\u0627\u0644\u062D\u0627\u062F\u064A ${o[u/10]}`;if(a===2)return`\u0627\u0644\u062B\u0627\u0646\u064A ${o[u/10]}`;let i=`${r[a]} \u0648${o[u/10]}`,f=Math.floor(t/100),c=t%100;return f>0?c===0?s[f]:`${s[f]} \u0648${Y(c,e)}`:i}else{let r=["th","st","nd","rd"],n=t%100;return t+(r[(n-20)%10]||r[n]||r[0])}};var v=({items:t,setItems:e,itemData:r})=>{if(!t||!e||!r)return;let n=y({id:Number(new Date().getTime())},r);n&&e([...t,n])},z=({items:t,setItems:e,itemData:r,uniqueField:n})=>{if(!t||!e||!r)return;t.some(s=>n&&typeof r=="object"&&r!==null?s[n]===r[n]:s===r)||e([...t,r])},Q=({id:t,items:e,setItems:r,itemData:n})=>{!t||!e||!r||!n||r(e==null?void 0:e.map(o=>o.id===t?y(y({},o),n):o))},_=({id:t,items:e,setItems:r})=>{!t||!e||!r||r(e==null?void 0:e.filter(n=>{var o;return typeof n=="object"&&n!==null&&!Array.isArray(t)?n.id!==t:Array.isArray(t)?!t.includes((o=n.id)!=null?o:n):n!==t}))};var d=N(require("dayjs")),W=t=>{if(!t)return"";let e=new Date(t);return(0,d.default)(e).format("DD/MM/YYYY, h:mmA")},H=t=>{if(!t)return"";let e=new Date(t);return(0,d.default)(e).format("DD/MM/YYYY")},J=t=>{let e=new Date(t),r=new Date;return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),e<r};function Z(t){if(!t)return"";let e=new Date(t),r=s=>s.toString().padStart(2,"0"),n=r(e.getHours()),o=r(e.getMinutes());return`${n}:${o}`}var G=(t,e=o=>o,r=new Date,n)=>{let o={age:{years:0,months:0,days:0},message:e("no_age")};if(t==null)return o;let s=t instanceof Date?t:re(t)?new Date(t):new Date(Number(t)),a=r instanceof Date?r:new Date(Number(r));if(isNaN(s.getTime())||isNaN(a.getTime())||a<s)return o;let u=a.getFullYear()-s.getFullYear(),i=a.getMonth()-s.getMonth(),f=a.getDate()-s.getDate();if(f<0){let c=new Date(a.getFullYear(),a.getMonth(),0);f+=c.getDate(),i--}return i<0&&(u--,i+=12),{age:{years:u,months:i,days:f},message:`${u} ${e("years")} - ${i} ${e("months")} - ${f} ${e("days")} / ${e(n!=null?n:"")}`}},X=t=>{if(!t)return null;let e=new Date(t),r=new Date,n=r.getFullYear()-e.getFullYear(),o=r.getMonth()-e.getMonth(),s=r.getDate()-e.getDate();return s<0&&(o--,s+=new Date(r.getFullYear(),r.getMonth(),0).getDate()),o<0&&(n--,o+=12),{years:n,months:o,days:s}},V=t=>{let e=new Date,r=e.getFullYear()-t.years,n=e.getMonth()-t.months,o=e.getDate()-t.days,s=new Date(e.getFullYear(),e.getMonth(),e.getDate());return s.setFullYear(r),s.setMonth(n),s.setDate(o),s},q=(t,e)=>{let r=new Date,n=t&&t.years?t.years-e.years:r.getFullYear()-e.years,o=t&&t.months?t.months-e.months:r.getMonth()-e.months,s=t&&t.days?t.days-e.days:r.getDate()-e.days,a=new Date(r.getFullYear(),r.getMonth(),r.getDate());return a.setFullYear(n),a.setMonth(o),a.setDate(s),a};function ee(t){let[e,r]=t.split(" "),n=parseInt(e.replace(/^0+/,""),10),[o,s,a]=r==null?void 0:r.split(":").map(i=>parseInt(i,10));return n*24*60*60*1e3+o*60*60*1e3+s*60*1e3+a*1e3}var te=t=>{let e=new Date,r;if(t.includes("/")){let[s,a,u]=t.split("/").map(Number);r=new Date(u,a-1,s)}else if(!isNaN(Date.parse(t)))r=new Date(t);else throw new Error("Unsupported date format");let n=e.getFullYear()-r.getFullYear(),o=e.getMonth()-r.getMonth();return(o<0||o===0&&e.getDate()<r.getDate())&&n--,n};function re(t){let e=new Date(t);return!isNaN(e.getTime())&&e.toISOString()===t}var ne=t=>{var n;let e=new DOMParser,r=t&&e.parseFromString(t,"text/html");return(n=r&&r.body.textContent)!=null?n:""};var oe=t=>{let{key:e,ctrlKey:r,metaKey:n}=t;e==="Backspace"||e==="Delete"||e==="ArrowLeft"||e==="ArrowRight"||e==="ArrowUp"||e==="ArrowDown"||e==="Tab"||e==="Enter"||(r||n)&&(e==="c"||e==="v"||e==="x"||e==="a")||/[\u0600-\u06FF0-9\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/.test(e)||t.preventDefault()},se=t=>{let{key:e,ctrlKey:r,metaKey:n}=t;e==="Backspace"||e==="Delete"||e==="ArrowLeft"||e==="ArrowRight"||e==="ArrowUp"||e==="ArrowDown"||e==="Tab"||e==="Enter"||(r||n)&&(e==="c"||e==="v"||e==="x"||e==="a")||/[A-Za-z0-9\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/.test(e)||t.preventDefault()},ae=t=>{let{key:e,ctrlKey:r,metaKey:n}=t;e==="Backspace"||e==="Delete"||e==="ArrowLeft"||e==="ArrowRight"||e==="ArrowUp"||e==="ArrowDown"||e==="Tab"||e==="Enter"||(r||n)&&(e==="c"||e==="v"||e==="x"||e==="a")||/[0-9]/.test(e)||t.preventDefault()},ie=t=>{let{key:e}=t;e==="Backspace"||e==="Delete"||e==="ArrowLeft"||e==="ArrowRight"||e==="ArrowUp"||e==="ArrowDown"||e==="Tab"||e==="Enter"||/[0-9]/.test(e)||t.preventDefault()},ce=t=>{let{key:e,ctrlKey:r,metaKey:n}=t,o=t.currentTarget;e==="Backspace"||e==="Delete"||e==="ArrowLeft"||e==="ArrowRight"||e==="ArrowUp"||e==="ArrowDown"||e==="Tab"||e==="Enter"||(r||n)&&(e==="c"||e==="v"||e==="x"||e==="a")||e==="."&&!o.value.includes(".")||!/[0-9]/.test(e)&&e!=="."&&t.preventDefault()};function ue(t,e,r){return e.length===0?r:r.filter(n=>e.includes(n[t]))}function fe(t=[],e,r="children",n){if(!t)return[];if(!e||(e==null?void 0:e.length)===0)return t;let o=a=>(n?n.map(i=>a[i]).filter(Boolean):Object.values(a)).some(i=>typeof i=="string"&&e.some(f=>i.includes(f))),s=a=>{let u=[];return a.forEach(i=>{o(i)&&u.push(i),i[r]&&(u=u.concat(s(i[r])))}),u};return s(t)}var l=require("lodash");var le=t=>t.charAt(0).toUpperCase()+t.slice(1);function D(t){return Object.fromEntries(Object.entries(t).filter(([,e])=>(e==null?void 0:e.length)!==0&&e!==null&&e!==void 0))}function ye(t){return t.map(n=>{var o=n,{_id:e}=o,r=$(o,["_id"]);return r})}function ge(t,e){return t.filter(r=>!(r!=null&&r._id)||!e.includes(r==null?void 0:r._id))}function pe(t,e,...r){return t.map(n=>({value:n[e],label:r.map(o=>n[o]).join(" ")}))}function he(t,e){var o,s,a,u,i,f,c,b,w,A,O,T;let r=`${(i=(u=(a=(s=(o=t==null?void 0:t.label)==null?void 0:o.props)==null?void 0:s.children)==null?void 0:a[0])==null?void 0:u.props)==null?void 0:i.children}`,n=(A=(w=(b=(c=(f=t==null?void 0:t.label)==null?void 0:f.props)==null?void 0:c.children)==null?void 0:b[1])==null?void 0:w.props)==null?void 0:A.children;return((O=r==null?void 0:r.toLowerCase())==null?void 0:O.includes(e==null?void 0:e.toLowerCase()))||((T=n==null?void 0:n.toLowerCase())==null?void 0:T.includes(e==null?void 0:e.toLowerCase()))}function de(t,e){let r=y({},t);for(let n of e)delete r[n];return r}function me(t){let e=[];for(let r in t)Array.isArray(t[r])&&e.push({[r]:t[r]});return e}function xe(t){return t?Object.entries(t).map(([e,r])=>({[e]:r})):[]}function De(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++){let n=Object.keys(t[r]),o=Object.keys(e[r]);if(n.length!==o.length)return!1;for(let s of n){if(!o.includes(s))return!1;let a=t[r][s],u=e[r][s];if(a.length!==u.length)return!1;for(let i of a)if(!u.includes(i))return!1}}return!0}function I(t,e=new FormData,r=""){for(let n in t){if(!t.hasOwnProperty(n))continue;let o=r?`${r}[${n}]`:n;typeof t[n]=="object"&&!(t[n]instanceof File)?I(t[n],e,o):e.append(o,t[n])}return e}function be(t,e,r=[]){let n=(0,l.omit)(t,r),o=(0,l.omit)(e,r);return(0,l.isEqual)(n,o)}function k(t,e){if(t==null&&e==null)return{};if(t==null)return e!=null?e:{};if(e==null)return{};let r={};return Object.keys(e).forEach(n=>{let o=t==null?void 0:t[n],s=e==null?void 0:e[n];if((0,l.isDate)(s)&&(0,l.isDate)(o)){o.getTime()!==s.getTime()&&(r[n]=s);return}if((0,l.isObject)(s)&&!(0,l.isObject)(o)){r[n]=s;return}if((0,l.isObject)(s)&&!(0,l.isArray)(s)&&(0,l.isObject)(o)&&!(0,l.isArray)(o)){let a=k(o,s);Object.keys(a).length>0&&(r[n]=a);return}if((0,l.isArray)(s)||(0,l.isArray)(o)){(0,l.isEqual)(o,s)||(r[n]=s);return}(0,l.isEqual)(o,s)||(r[n]=s)}),r}function we(t){let e=Object.entries(t).sort((r,n)=>r[0].localeCompare(n[0]));return Object.fromEntries(e)}function Ae(t){let e=Object.entries(t).sort((r,n)=>typeof r[1]=="number"&&typeof n[1]=="number"?r[1]-n[1]:0);return Object.fromEntries(e)}function m(t,e){if(Array.isArray(t))return t.map(r=>m(r,e));if(typeof t=="object"&&t!==null){let r={};for(let n in t)e.includes(n)||(r[n]=m(t[n],e));return r}return t}function Oe(t,e){return t==null?t:Array.isArray(t)?t.map(r=>typeof r=="object"&&r!==null?x(r,e):r):typeof t=="object"&&t!==null?x(t,e):t}function x(t,e){let r=y({},t);for(let n of e||[])delete r[n];return r}var Te=(t,e,r="name")=>{if(!e||!t)return;let n=e==null?void 0:e.find(o=>o.id===t);return n?Array.isArray(r)?r.map(o=>n[o]).join(" "):n[r]:""},Fe=(t,e)=>{if(!e||!t)return;let r=e==null?void 0:e.find(n=>n.value===t||(n==null?void 0:n.id)===t||(n==null?void 0:n._id)===t);return r?r.label:""};function Me(t){return t?Object.entries(D(t)).filter(([,e])=>e!==void 0).map(([e,r])=>`${encodeURIComponent(e)}=${encodeURIComponent(String(r))}`).join("&"):""}function je(t){return t!=null&&t.startsWith("http")?t.split(".com/")[1].split("?")[0]:t}var $e=t=>{let e=new URLSearchParams;for(let[r,n]of Object.entries(t))if(Array.isArray(n))for(let o of n)e.append(r,o.toString());else n!==void 0&&e.append(r,n.toString());return e.toString()},Se=t=>Object.entries(t).map(([e,r])=>Array.isArray(r)?r.length===0?"":`${e}=${r.join(",")}`:r===void 0||r===""?"":`${e}=${r}`).filter(e=>e!=="").join("&"),Ye=t=>!t||t===null||t===""?[]:t.split(",").map(e=>parseInt(e)),Ie=()=>Date.now()+Math.floor(Math.random()*1e4),ke=t=>{let e=t.get("filters");if(!e)return null;try{let r=decodeURIComponent(e);return JSON.parse(r)}catch(r){return console.error("Error parsing filters from URL:",r),null}};var Ee=(t,e,r,n)=>{let o=new URLSearchParams(t);o.set(r,n),e(o)};function Le(t=[],e="",r="children",n){var u;if(!t)return[];if(!e)return t;let o=(u=e.trim())==null?void 0:u.toLowerCase(),s=i=>(n?n.map(c=>i[c]).filter(Boolean):Object.values(i)).some(c=>typeof c=="string"&&(c==null?void 0:c.toLowerCase().includes(o))),a=i=>i.map(f=>{let c=f[r]?a(f[r]):[];return s(f)||c.length>0?j(y({},f),{[r]:c.length>0?c:void 0}):null}).filter(f=>f!==null);return a(t)}function Ce(t=[],e="",r="children",n){var u;if(!t)return[];if(!e)return t;let o=(u=e==null?void 0:e.trim())==null?void 0:u.toLowerCase(),s=i=>(n?n.map(c=>i[c]).filter(Boolean):Object.values(i)).some(c=>typeof c=="string"&&(c==null?void 0:c.toLowerCase().includes(o))),a=i=>{let f=[];return i.forEach(c=>{s(c)&&f.push(c),c[r]&&(f=f.concat(a(c[r])))}),f};return a(t)}var Ue=t=>{let e=t.replace(/\D/g,"");return e?Math.min(Math.max(parseInt(e,10),1),31).toString():""},Pe=t=>{let e=t.replace(/\D/g,"");return e?Math.min(Math.max(parseInt(e,10),1),12).toString():""},Re=t=>{let e=t.replace(/\D/g,"");return e?e.length<4?e:parseInt(e,10)<1900?"1900":e:""};0&&(module.exports={addSearchParam,ageToBirthDate,ageToBirthDateChangeSegment,arrFromQuery,birthDateToAge,calculateAge,calculateDetailedAge,capitalizeString,compareObjects,comparePermissionLists,convertObjectToArray,convertTimeToTimestamp,createOptionsArray,createSearchQuery,filterInArray,filterInObjects,filterUsersOption,formatDate,formatDateTime,getArrayKeys,getChangedFields,getLabelByItemsAndId,getLabelByItemsAndOptions,getTextOnlyFromHtml,getTime,handleCreateFront,handleCreateFrontUnique,handleDeleteFront,handleKeyDownArabic,handleKeyDownEnglish,handleKeyDownFloatNumber,handleKeyDownNumber,handleKeyDownNumberNoCopy,handleUpdateFront,isNotFutureDate,literalOrdinals,objectToFormData,prePareFilters,pureURLS3,removeEmptyFields,removeFields,removeFieldsFromObject,removeFieldsTopLevel,removeIdFromObjects,removeItemsWithIds,removeKeys,searchInObjects,searchInObjectsWithParents,serializeFormQuery,sortObjectByKeys,sortObjectByValues,toQueryString,uniqueId,validateDay,validateMonth,validateYear});
|
|
1
|
+
var I=Object.defineProperty,P=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var D=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var w=(e,t,r)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,l=(e,t)=>{for(var r in t||(t={}))A.call(t,r)&&w(e,r,t[r]);if(D)for(var r of D(t))O.call(t,r)&&w(e,r,t[r]);return e},T=(e,t)=>P(e,L(t));var S=(e,t)=>{var r={};for(var n in e)A.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&D)for(var n of D(e))t.indexOf(n)<0&&O.call(e,n)&&(r[n]=e[n]);return r};var C=(e,t)=>{if(t==="ar"){let r=["","\u0627\u0644\u0623\u0648\u0644","\u0627\u0644\u062B\u0627\u0646\u064A","\u0627\u0644\u062B\u0627\u0644\u062B","\u0627\u0644\u0631\u0627\u0628\u0639","\u0627\u0644\u062E\u0627\u0645\u0633","\u0627\u0644\u0633\u0627\u062F\u0633","\u0627\u0644\u0633\u0627\u0628\u0639","\u0627\u0644\u062B\u0627\u0645\u0646","\u0627\u0644\u062A\u0627\u0633\u0639"],n=["\u0627\u0644\u062D\u0627\u062F\u064A \u0639\u0634\u0631","\u0627\u0644\u062B\u0627\u0646\u064A \u0639\u0634\u0631","\u0627\u0644\u062B\u0627\u0644\u062B \u0639\u0634\u0631","\u0627\u0644\u0631\u0627\u0628\u0639 \u0639\u0634\u0631","\u0627\u0644\u062E\u0627\u0645\u0633 \u0639\u0634\u0631","\u0627\u0644\u0633\u0627\u062F\u0633 \u0639\u0634\u0631","\u0627\u0644\u0633\u0627\u0628\u0639 \u0639\u0634\u0631","\u0627\u0644\u062B\u0627\u0645\u0646 \u0639\u0634\u0631","\u0627\u0644\u062A\u0627\u0633\u0639 \u0639\u0634\u0631"],s=["","\u0627\u0644\u0639\u0627\u0634\u0631","\u0627\u0644\u0639\u0634\u0631\u0648\u0646","\u0627\u0644\u062B\u0644\u0627\u062B\u0648\u0646","\u0627\u0644\u0623\u0631\u0628\u0639\u0648\u0646","\u0627\u0644\u062E\u0645\u0633\u0648\u0646","\u0627\u0644\u0633\u062A\u0648\u0646","\u0627\u0644\u0633\u0628\u0639\u0648\u0646","\u0627\u0644\u062B\u0645\u0627\u0646\u0648\u0646","\u0627\u0644\u062A\u0633\u0639\u0648\u0646"],o=["","\u0627\u0644\u0645\u0627\u0626\u0629","\u0627\u0644\u0645\u0626\u062A\u0627\u0646","\u0627\u0644\u062B\u0644\u0627\u062B\u0645\u0627\u0626\u0629","\u0627\u0644\u0623\u0631\u0628\u0639\u0645\u0627\u0626\u0629","\u0627\u0644\u062E\u0645\u0633\u0645\u0627\u0626\u0629","\u0627\u0644\u0633\u062A\u0645\u0627\u0626\u0629","\u0627\u0644\u0633\u0628\u0639\u0645\u0627\u0626\u0629","\u0627\u0644\u062B\u0645\u0627\u0646\u0645\u0627\u0626\u0629","\u0627\u0644\u062A\u0633\u0639\u0645\u0627\u0626\u0629"];if(e===1)return"\u0627\u0644\u0623\u0648\u0644";let a=Math.floor(e/100),u=e%100;if(a>0)return u===0?o[a]:`${o[a]} \u0648${C(u,t)}`;if(e>=2&&e<=9)return r[e];if(e>=11&&e<=19)return n[e-11];if(e%10===0&&e<100)return s[e/10];let i=e%10,c=Math.floor(e/10)*10;return c===10?`\u0627\u0644${r[i]} \u0639\u0634\u0631`:i===1?`\u0627\u0644\u062D\u0627\u062F\u064A \u0648${s[c/10]}`:i===2?`\u0627\u0644\u062B\u0627\u0646\u064A \u0648${s[c/10]}`:`${r[i]} \u0648${s[c/10]}`}else{let r=["th","st","nd","rd"],n=e%100;return e+(r[(n-20)%10]||r[n]||r[0])}};var B=({items:e,setItems:t,itemData:r})=>{if(!e||!t||!r)return;let n=l({id:Number(new Date().getTime())},r);n&&t([...e,n])},H=({items:e,setItems:t,itemData:r,uniqueField:n})=>{if(!e||!t||!r)return;e.some(o=>n&&typeof r=="object"&&r!==null?o[n]===r[n]:o===r)||t([...e,r])},z=({id:e,items:t,setItems:r,itemData:n})=>{!e||!t||!r||!n||r(t==null?void 0:t.map(s=>s.id===e?l(l({},s),n):s))},Q=({id:e,items:t,setItems:r})=>{!e||!t||!r||r(t==null?void 0:t.filter(n=>{var s;return typeof n=="object"&&n!==null&&!Array.isArray(e)?n.id!==e:Array.isArray(e)?!e.includes((s=n.id)!=null?s:n):n!==e}))};var M=(e,t)=>{let r=e.getDate(),n=e.getMonth()+1,s=e.getFullYear(),o=e.getHours(),a=o%12||12,u=e.getMinutes(),i=e.getSeconds(),c=o>=12?"PM":"AM",f={YYYY:String(s),YY:String(s).slice(-2),MM:String(n).padStart(2,"0"),M:String(n),DD:String(r).padStart(2,"0"),D:String(r),HH:String(o).padStart(2,"0"),H:String(o),hh:String(a).padStart(2,"0"),h:String(a),mm:String(u).padStart(2,"0"),m:String(u),ss:String(i).padStart(2,"0"),s:String(i),A:c,a:c.toLowerCase()};return t.replace(/YYYY|YY|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|A|a/g,y=>f[y])},J=(e,t="DD/MM/YYYY, h:mmA")=>{if(!e)return"";let r=new Date(e);return M(r,t)},Z=(e,t="DD/MM/YYYY")=>{if(!e)return"";let r=new Date(e);return M(r,t)},G=e=>{let t=new Date(e),r=new Date;return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),t<r};function X(e){if(!e)return"";let t=new Date(e),r=o=>o.toString().padStart(2,"0"),n=r(t.getHours()),s=r(t.getMinutes());return`${n}:${s}`}var V=(e,t=void 0,r=new Date,n)=>{var f,y,g,p,h;let s={age:{years:0,months:0,days:0},message:(f=t==null?void 0:t("no_age"))!=null?f:"No age"};if(e==null)return s;let o=e instanceof Date?e:E(e)?new Date(e):new Date(Number(e)),a=r instanceof Date?r:new Date(Number(r));if(isNaN(o.getTime())||isNaN(a.getTime())||a<o)return s;let u=a.getFullYear()-o.getFullYear(),i=a.getMonth()-o.getMonth(),c=a.getDate()-o.getDate();if(c<0){let m=new Date(a.getFullYear(),a.getMonth(),0);c+=m.getDate(),i--}return i<0&&(u--,i+=12),{age:{years:u,months:i,days:c},message:`${u} ${(y=t==null?void 0:t("years"))!=null?y:"years"} - ${i} ${(g=t==null?void 0:t("months"))!=null?g:"months"} - ${c} ${(p=t==null?void 0:t("days"))!=null?p:"days"} / ${(h=t==null?void 0:t(n!=null?n:""))!=null?h:n}`}},v=e=>{if(!e)return null;let t=new Date(e),r=new Date,n=r.getFullYear()-t.getFullYear(),s=r.getMonth()-t.getMonth(),o=r.getDate()-t.getDate();return o<0&&(s--,o+=new Date(r.getFullYear(),r.getMonth(),0).getDate()),s<0&&(n--,s+=12),{years:n,months:s,days:o}},q=e=>{let t=new Date,r=t.getFullYear()-e.years,n=t.getMonth()-e.months,s=t.getDate()-e.days,o=new Date(t.getFullYear(),t.getMonth(),t.getDate());return o.setFullYear(r),o.setMonth(n),o.setDate(s),o},tt=(e,t)=>{let r=new Date,n=e&&e.years?e.years-t.years:r.getFullYear()-t.years,s=e&&e.months?e.months-t.months:r.getMonth()-t.months,o=e&&e.days?e.days-t.days:r.getDate()-t.days,a=new Date(r.getFullYear(),r.getMonth(),r.getDate());return a.setFullYear(n),a.setMonth(s),a.setDate(o),a};function et(e){let[t,r]=e.split(" "),n=parseInt(t.replace(/^0+/,""),10),[s,o,a]=(r||"00:00:00").split(":").map(i=>parseInt(i,10));return n*24*60*60*1e3+s*60*60*1e3+o*60*1e3+a*1e3}var rt=e=>{let t=new Date,r;if(e.includes("/")){let[o,a,u]=e.split("/").map(Number);r=new Date(u,a-1,o)}else if(!isNaN(Date.parse(e)))r=new Date(e);else throw new Error("Unsupported date format");let n=t.getFullYear()-r.getFullYear(),s=t.getMonth()-r.getMonth();return(s<0||s===0&&t.getDate()<r.getDate())&&n--,n};function E(e){let t=new Date(e);return!isNaN(t.getTime())&&t.toISOString()===e}var st=e=>{var n;let t=new DOMParser,r=e&&t.parseFromString(e,"text/html");return(n=r&&r.body.textContent)!=null?n:""};var at=e=>{let{key:t,ctrlKey:r,metaKey:n}=e;t==="Backspace"||t==="Delete"||t==="ArrowLeft"||t==="ArrowRight"||t==="ArrowUp"||t==="ArrowDown"||t==="Tab"||t==="Enter"||(r||n)&&(t==="c"||t==="v"||t==="x"||t==="a")||/[\u0600-\u06FF0-9\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/.test(t)||e.preventDefault()},it=e=>{let{key:t,ctrlKey:r,metaKey:n}=e;t==="Backspace"||t==="Delete"||t==="ArrowLeft"||t==="ArrowRight"||t==="ArrowUp"||t==="ArrowDown"||t==="Tab"||t==="Enter"||(r||n)&&(t==="c"||t==="v"||t==="x"||t==="a")||/[A-Za-z0-9\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/.test(t)||e.preventDefault()},ct=e=>{let{key:t,ctrlKey:r,metaKey:n}=e;t==="Backspace"||t==="Delete"||t==="ArrowLeft"||t==="ArrowRight"||t==="ArrowUp"||t==="ArrowDown"||t==="Tab"||t==="Enter"||(r||n)&&(t==="c"||t==="v"||t==="x"||t==="a")||/[0-9]/.test(t)||e.preventDefault()},ft=e=>{let{key:t}=e;t==="Backspace"||t==="Delete"||t==="ArrowLeft"||t==="ArrowRight"||t==="ArrowUp"||t==="ArrowDown"||t==="Tab"||t==="Enter"||/[0-9]/.test(t)||e.preventDefault()},ut=e=>{let{key:t,ctrlKey:r,metaKey:n}=e,s=e.currentTarget;t==="Backspace"||t==="Delete"||t==="ArrowLeft"||t==="ArrowRight"||t==="ArrowUp"||t==="ArrowDown"||t==="Tab"||t==="Enter"||(r||n)&&(t==="c"||t==="v"||t==="x"||t==="a")||t==="."&&!s.value.includes(".")||!/[0-9]/.test(t)&&t!=="."&&e.preventDefault()};function yt(e,t,r){return t.length===0?r:r.filter(n=>t.includes(n[e]))}function gt(e=[],t,r="children",n){if(!e)return[];if(!t||(t==null?void 0:t.length)===0)return e;let s=a=>(n?n.map(i=>a[i]).filter(Boolean):Object.values(a)).some(i=>typeof i=="string"&&t.some(c=>i.includes(c))),o=a=>{let u=[];return a.forEach(i=>{s(i)&&u.push(i),i[r]&&(u=u.concat(o(i[r])))}),u};return o(e)}var ht=e=>e.charAt(0).toUpperCase()+e.slice(1);function $(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>(t==null?void 0:t.length)!==0&&t!==null&&t!==void 0))}function dt(e){return e.map(n=>{var s=n,{_id:t}=s,r=S(s,["_id"]);return r})}function mt(e,t){return e.filter(r=>!(r!=null&&r._id)||!t.includes(r==null?void 0:r._id))}function Dt(e,t,...r){return e.map(n=>({value:n[t],label:r.map(s=>n[s]).join(" ")}))}function bt(e,t){var s,o,a,u,i,c,f,y,g,p,h,m;let r=`${(i=(u=(a=(o=(s=e==null?void 0:e.label)==null?void 0:s.props)==null?void 0:o.children)==null?void 0:a[0])==null?void 0:u.props)==null?void 0:i.children}`,n=(p=(g=(y=(f=(c=e==null?void 0:e.label)==null?void 0:c.props)==null?void 0:f.children)==null?void 0:y[1])==null?void 0:g.props)==null?void 0:p.children;return((h=r==null?void 0:r.toLowerCase())==null?void 0:h.includes(t==null?void 0:t.toLowerCase()))||((m=n==null?void 0:n.toLowerCase())==null?void 0:m.includes(t==null?void 0:t.toLowerCase()))}function xt(e,t){let r=l({},e);for(let n of t)delete r[n];return r}function wt(e){let t=[];for(let r in e)Array.isArray(e[r])&&t.push({[r]:e[r]});return t}function At(e){return e?Object.entries(e).map(([t,r])=>({[t]:r})):[]}function Ot(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){let n=Object.keys(e[r]),s=Object.keys(t[r]);if(n.length!==s.length)return!1;for(let o of n){if(!s.includes(o))return!1;let a=e[r][o],u=t[r][o];if(a.length!==u.length)return!1;for(let i of a)if(!u.includes(i))return!1}}return!0}function U(e,t=new FormData,r=""){for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let s=r?`${r}[${n}]`:n;typeof e[n]=="object"&&!(e[n]instanceof File)?U(e[n],t,s):t.append(s,e[n])}return t}function F(e){return e instanceof Date}function b(e){return e!==null&&typeof e=="object"}function x(e){return Array.isArray(e)}function Y(e,t){let r={};for(let n in e)t.includes(n)||(r[n]=e[n]);return r}function d(e,t){if(e===t)return!0;if(e==null||t==null||typeof e!=typeof t)return!1;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!d(e[r],t[r]))return!1;return!0}if(typeof e=="object"&&typeof t=="object"){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let s of r)if(!n.includes(s)||!d(e[s],t[s]))return!1;return!0}return!1}function Tt(e,t,r=[]){let n=Y(e,r),s=Y(t,r);return d(n,s)}function R(e,t){if(!e&&!t)return{};if(!e)return t!=null?t:{};if(!t)return{};let r={};return Object.keys(t).forEach(n=>{let s=e==null?void 0:e[n],o=t==null?void 0:t[n];if(F(o)&&F(s)){s.getTime()!==o.getTime()&&(r[n]=o);return}if(b(o)&&!b(s)){r[n]=o;return}if(b(o)&&!x(o)&&b(s)&&!x(s)){let a=R(s,o);Object.keys(a).length>0&&(r[n]=a);return}if(x(o)||x(s)){d(s,o)||(r[n]=o);return}d(s,o)||(r[n]=o)}),r}function St(e){let t=Object.entries(e).sort((r,n)=>r[0].localeCompare(n[0]));return Object.fromEntries(t)}function Mt(e){let t=Object.entries(e).sort((r,n)=>typeof r[1]=="number"&&typeof n[1]=="number"?r[1]-n[1]:0);return Object.fromEntries(t)}function j(e,t){if(Array.isArray(e))return e.map(r=>j(r,t));if(typeof e=="object"&&e!==null){let r={};for(let n in e)t.includes(n)||(r[n]=j(e[n],t));return r}return e}function Ft(e,t){return e==null?e:Array.isArray(e)?e.map(r=>typeof r=="object"&&r!==null?k(r,t):r):typeof e=="object"&&e!==null?k(e,t):e}function k(e,t){let r=l({},e);for(let n of t||[])delete r[n];return r}var Yt=(e,t,r="name")=>{if(!t||!e)return;let n=t==null?void 0:t.find(s=>s.id===e);return n?Array.isArray(r)?r.map(s=>n[s]).join(" "):n[r]:""},jt=(e,t)=>{if(!t||!e)return;let r=t==null?void 0:t.find(n=>n.value===e||(n==null?void 0:n.id)===e||(n==null?void 0:n._id)===e);return r?r.label:""};function Pt(e){return e?Object.entries($(e)).filter(([,t])=>t!==void 0).map(([t,r])=>`${encodeURIComponent(t)}=${encodeURIComponent(String(r))}`).join("&"):""}function Lt(e){return e!=null&&e.startsWith("http")?e.split(".com/")[1].split("?")[0]:e}var Ct=e=>{let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let s of n)t.append(r,s.toString());else n!==void 0&&t.append(r,n.toString());return t.toString()},Et=e=>Object.entries(e).map(([t,r])=>Array.isArray(r)?r.length===0?"":`${t}=${r.join(",")}`:r===void 0||r===""?"":`${t}=${r}`).filter(t=>t!=="").join("&"),Ut=e=>!e||e===null||e===""?[]:e.split(",").map(t=>parseInt(t)),Rt=()=>Date.now()+Math.floor(Math.random()*1e4),Nt=e=>{let t=e.get("filters");if(!t)return null;try{let r=decodeURIComponent(t);return JSON.parse(r)}catch(r){return console.error("Error parsing filters from URL:",r),null}};var Bt=(e,t,r,n)=>{let s=new URLSearchParams(e);s.set(r,n),t(s)};function Ht(e=[],t="",r="children",n){var u;if(!e)return[];if(!t)return e;let s=(u=t.trim())==null?void 0:u.toLowerCase(),o=i=>(n?n.map(f=>i[f]).filter(Boolean):Object.values(i)).some(f=>typeof f=="string"&&(f==null?void 0:f.toLowerCase().includes(s))),a=i=>i.map(c=>{let f=c[r]?a(c[r]):[];return o(c)||f.length>0?T(l({},c),{[r]:f.length>0?f:void 0}):null}).filter(c=>c!==null);return a(e)}function zt(e=[],t="",r="children",n){var u;if(!e)return[];if(!t)return e;let s=(u=t==null?void 0:t.trim())==null?void 0:u.toLowerCase(),o=i=>(n?n.map(f=>i[f]).filter(Boolean):Object.values(i)).some(f=>typeof f=="string"&&(f==null?void 0:f.toLowerCase().includes(s))),a=i=>{let c=[];return i.forEach(f=>{o(f)&&c.push(f),f[r]&&(c=c.concat(a(f[r])))}),c};return a(e)}var Wt=e=>{let t=e.replace(/\D/g,"");return t?Math.min(Math.max(parseInt(t,10),1),31).toString():""},Jt=e=>{let t=e.replace(/\D/g,"");return t?Math.min(Math.max(parseInt(t,10),1),12).toString():""},Zt=e=>{let t=e.replace(/\D/g,"");return t?t.length<4?t:parseInt(t,10)<1900?"1900":t:""};export{Bt as addSearchParam,q as ageToBirthDate,tt as ageToBirthDateChangeSegment,Ut as arrFromQuery,v as birthDateToAge,rt as calculateAge,V as calculateDetailedAge,ht as capitalizeString,Tt as compareObjects,Ot as comparePermissionLists,At as convertObjectToArray,et as convertTimeToTimestamp,Dt as createOptionsArray,Ct as createSearchQuery,yt as filterInArray,gt as filterInObjects,bt as filterUsersOption,Z as formatDate,J as formatDateTime,M as formatDateWithPattern,wt as getArrayKeys,R as getChangedFields,Yt as getLabelByItemsAndId,jt as getLabelByItemsAndOptions,st as getTextOnlyFromHtml,X as getTime,B as handleCreateFront,H as handleCreateFrontUnique,Q as handleDeleteFront,at as handleKeyDownArabic,it as handleKeyDownEnglish,ut as handleKeyDownFloatNumber,ct as handleKeyDownNumber,ft as handleKeyDownNumberNoCopy,z as handleUpdateFront,G as isNotFutureDate,C as literalOrdinals,U as objectToFormData,Nt as prePareFilters,Lt as pureURLS3,$ as removeEmptyFields,j as removeFields,k as removeFieldsFromObject,Ft as removeFieldsTopLevel,dt as removeIdFromObjects,mt as removeItemsWithIds,xt as removeKeys,zt as searchInObjects,Ht as searchInObjectsWithParents,Et as serializeFormQuery,St as sortObjectByKeys,Mt as sortObjectByValues,Pt as toQueryString,Rt as uniqueId,Wt as validateDay,Jt as validateMonth,Zt as validateYear};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|