ngx-tethys 18.2.11 → 18.2.13
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/CHANGELOG.md +22 -0
- package/esm2022/cascader/cascader.component.mjs +2 -2
- package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +2 -2
- package/esm2022/message/message-container.component.mjs +3 -3
- package/esm2022/notify/notify-container.component.mjs +3 -3
- package/esm2022/select/custom-select/custom-select.component.mjs +2 -2
- package/esm2022/util/date/tiny-date.mjs +5 -9
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-cascader.mjs +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +2 -2
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +2 -2
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +1 -1
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +4 -8
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/table/styles/table.scss +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-util.mjs","sources":["../../../src/util/date/functions.ts","../../../src/util/helpers/helpers.ts","../../../src/util/date/tiny-date.ts","../../../src/util/dom.ts","../../../src/util/immutable.ts","../../../src/util/references.ts","../../../src/util/ng.ts","../../../src/util/logger/logger.ts","../../../src/util/ngx-tethys-util.ts"],"sourcesContent":["import * as dateFns from 'date-fns';\nimport * as dateFnsLocales from 'date-fns/locale';\nimport { ThyLocaleType } from 'ngx-tethys/i18n';\n\nexport const differenceInCalendarDays = dateFns.differenceInCalendarDays;\nexport const differenceInCalendarMonths = dateFns.differenceInCalendarMonths;\nexport const differenceInCalendarYears = dateFns.differenceInCalendarYears;\nexport const differenceInCalendarQuarters = dateFns.differenceInCalendarQuarters;\nexport const differenceInWeeks = dateFns.differenceInWeeks;\nexport const differenceInHours = dateFns.differenceInHours;\nexport const differenceInMinutes = dateFns.differenceInMinutes;\nexport const differenceInSeconds = dateFns.differenceInSeconds;\nexport const differenceInDays = dateFns.differenceInDays;\nexport const differenceInMonths = dateFns.differenceInMonths;\nexport const differenceInYears = dateFns.differenceInYears;\nexport const isSameDay = dateFns.isSameDay;\nexport const isSameHour = dateFns.isSameHour;\nexport const isSameMinute = dateFns.isSameMinute;\nexport const isSameMonth = dateFns.isSameMonth;\nexport const isSameSecond = dateFns.isSameSecond;\nexport const isSameYear = dateFns.isSameYear;\nexport const isSameQuarter = dateFns.isSameQuarter;\nexport const isToday = dateFns.isToday;\nexport const isTomorrow = dateFns.isTomorrow;\nexport const isValid = dateFns.isValid;\nexport const isAfter = dateFns.isAfter;\nexport const setYear = dateFns.setYear;\nexport const startOfMonth = dateFns.startOfMonth;\nexport const startOfWeek = dateFns.startOfWeek;\nexport const addMonths = dateFns.addMonths;\nexport const addYears = dateFns.addYears;\nexport const setDay = dateFns.setDay;\nexport const setDate = dateFns.setDate;\nexport const setMonth = dateFns.setMonth;\nexport const setQuarter = dateFns.setQuarter;\nexport const getUnixTime = dateFns.getUnixTime;\nexport const startOfDay = dateFns.startOfDay;\nexport const endOfDay = dateFns.endOfDay;\nexport const fromUnixTime = dateFns.fromUnixTime;\nexport const isWeekend = dateFns.isWeekend;\nexport const getTime = dateFns.getTime;\nexport const getDay = dateFns.getDay;\nexport const getWeek = dateFns.getWeek;\nexport const getMonth = dateFns.getMonth;\nexport const getYear = dateFns.getYear;\nexport const getDate = dateFns.getDate;\nexport const getHours = dateFns.getHours;\nexport const getMinutes = dateFns.getMinutes;\nexport const getSeconds = dateFns.getSeconds;\nexport const getDaysInMonth = dateFns.getDaysInMonth;\nexport const addSeconds = dateFns.addSeconds;\nexport const addMinutes = dateFns.addMinutes;\nexport const addHours = dateFns.addHours;\nexport const addWeeks = dateFns.addWeeks;\nexport const addQuarters = dateFns.addQuarters;\nexport const startOfQuarter = dateFns.startOfQuarter;\nexport const startOfYear = dateFns.startOfYear;\nexport const startOfMinute = dateFns.startOfMinute;\nexport const startOfHour = dateFns.startOfHour;\nexport const startOfISOWeek = dateFns.startOfISOWeek;\nexport const endOfMinute = dateFns.endOfMinute;\nexport const endOfHour = dateFns.endOfHour;\nexport const endOfWeek = dateFns.endOfWeek;\nexport const endOfMonth = dateFns.endOfMonth;\nexport const endOfQuarter = dateFns.endOfQuarter;\nexport const endOfYear = dateFns.endOfYear;\nexport const endOfISOWeek = dateFns.endOfISOWeek;\nexport const format = dateFns.format;\nexport const getQuarter = dateFns.getQuarter;\nexport const addDays = dateFns.addDays;\nexport const subMilliseconds = dateFns.subMilliseconds;\nexport const subSeconds = dateFns.subSeconds;\nexport const subMinutes = dateFns.subMinutes;\nexport const subHours = dateFns.subHours;\nexport const subDays = dateFns.subDays;\nexport const subBusinessDays = dateFns.subBusinessDays;\nexport const subWeeks = dateFns.subWeeks;\nexport const subMonths = dateFns.subMonths;\nexport const subQuarters = dateFns.subQuarters;\nexport const subYears = dateFns.subYears;\nexport const eachDayOfInterval = dateFns.eachDayOfInterval;\nexport const eachWeekOfInterval = dateFns.eachWeekOfInterval;\nexport const eachMonthOfInterval = dateFns.eachMonthOfInterval;\nexport const eachYearOfInterval = dateFns.eachYearOfInterval;\nexport const eachHourOfInterval = dateFns.eachHourOfInterval;\nexport const setDefaultOptions = dateFns.setDefaultOptions;\nexport const formatDistance = dateFns.formatDistance;\n\nexport const getDateFnsLocale = (locale: string) => {\n switch (locale) {\n case ThyLocaleType.zhHans:\n return dateFnsLocales[`zhCN`];\n case ThyLocaleType.zhHant:\n return dateFnsLocales[`zhTW`];\n case ThyLocaleType.enUs:\n return dateFnsLocales[`enUS`];\n case ThyLocaleType.jaJp:\n return dateFnsLocales[`ja`];\n case ThyLocaleType.deDe:\n return dateFnsLocales[`de`];\n default:\n return dateFnsLocales[`zhCN`];\n }\n};\n","import { _isNumberValue, coerceCssPixelValue as coerceCssPixel } from '@angular/cdk/coercion';\nimport { ElementRef, TemplateRef } from '@angular/core';\n\nexport function isUndefined(value: any): value is undefined {\n return value === undefined;\n}\n\nexport function isNull(value: any): value is null {\n return value === null;\n}\n\nexport function isUndefinedOrNull(value: any): value is undefined | null {\n return isUndefined(value) || isNull(value);\n}\n\nexport function isArray<T = any>(value: any): value is Array<T> {\n return value && baseGetTag(value) === '[object Array]';\n}\n\nexport function isEmpty(value?: any): boolean {\n return !(isArray(value) && value.length > 0);\n}\n\nexport function isString(value?: any): value is string {\n return typeof value == 'string' || (!isArray(value) && isObjectLike(value) && baseGetTag(value) === '[object String]');\n}\n\nfunction isObjectLike(value: any): value is object {\n return value !== null && typeof value === 'object';\n}\n\nfunction baseGetTag(value: any) {\n const objectProto = Object.prototype;\n const hasOwnProperty = objectProto.hasOwnProperty;\n const toString = objectProto.toString;\n const symToStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : undefined;\n\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n if (!(symToStringTag && symToStringTag in Object(value))) {\n return toString.call(value);\n }\n const isOwn = hasOwnProperty.call(value, symToStringTag);\n const tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n } catch (e) {}\n\n const result = toString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && baseGetTag(value) === '[object Number]');\n}\n\nexport function isObject(value: any): value is object {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n const type = typeof value;\n return !!value && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(value: any): value is Function {\n const type = typeof value;\n return !!value && type === 'function';\n}\n\nexport function isDate(value: any): value is Date {\n const type = typeof value;\n return !!value && type === 'object' && !!value.getTime;\n}\n\nexport function coerceArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nexport function get(object: any, path: string, defaultValue?: any): any {\n const paths = path.split('.');\n let result = object[paths.shift()];\n while (result && paths.length) {\n result = result[paths.shift()];\n }\n return result === undefined ? defaultValue : result;\n}\n\nexport function set(object: any, path: string, value: any): void {\n if (object == null) {\n return object;\n }\n const paths = path.split('.');\n let index = -1;\n const length = paths.length;\n const lastIndex = length - 1;\n let nested = object;\n while (nested !== null && ++index < length) {\n const key = paths[index];\n if (isObject(nested)) {\n if (index === lastIndex) {\n nested[key] = value;\n nested = nested[key];\n break;\n } else {\n if (nested[key] == null) {\n nested[key] = {};\n }\n }\n }\n nested = nested[key];\n }\n return object;\n}\n\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && baseGetTag(value) === '[object Boolean]');\n}\n\nexport function isClass(value: any): value is Function {\n return isFunction(value) && /^\\s*class\\s+/.test(value.toString());\n}\n\nexport function htmlElementIsEmpty(element: HTMLElement) {\n if (element && element.childNodes) {\n const nodes = element.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).outerHTML.toString().trim().length !== 0) {\n return false;\n } else if (node.nodeType === Node.TEXT_NODE && node.textContent.toString().trim().length !== 0) {\n return false;\n } else if (node.nodeType !== Node.COMMENT_NODE) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport function hexToRgb(hexValue: string, alpha?: number): string {\n const rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const hex = hexValue.replace(rgx, (m: any, r: any, g: any, b: any) => r + r + g + g + b + b);\n const rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!rgb) return;\n const resultR = parseInt(rgb[1], 16);\n const resultG = parseInt(rgb[2], 16);\n const resultB = parseInt(rgb[3], 16);\n if (!isUndefinedOrNull(alpha)) {\n return `rgba(${resultR}, ${resultG}, ${resultB}, ${alpha})`;\n } else {\n return `rgb(${resultR}, ${resultG}, ${resultB})`;\n }\n}\n\nexport function dateToUnixTimestamp(date: Date | number): number {\n if (isNumber(date)) {\n if (date.toString().length === 10) {\n return date as number;\n } else {\n return parseInt(((date as number) / 1000).toFixed(0), 10);\n }\n } else {\n return parseInt(((date as Date).getTime() / 1000).toFixed(0), 10);\n }\n}\n\nexport function clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function keyBy<T>(array: T[], key: T extends object ? keyof T : never): { [key: string]: T } {\n const result: { [key: string]: T } = {};\n array.forEach(item => {\n const keyValue = item[key];\n (result as any)[keyValue] = item;\n });\n return result;\n}\n\nexport function indexKeyBy<T>(array: T[], key: T extends object ? keyof T : never): { [key: string]: number } {\n const result: { [key: string]: number } = {};\n array.forEach((item, index) => {\n const keyValue = item[key];\n (result as any)[keyValue] = index;\n });\n return result;\n}\n\nfunction upperFirst(string: string): string {\n return string.slice(0, 1).toUpperCase() + string.slice(1);\n}\n\nexport function camelCase(values: string[]): string {\n if (isArray(values)) {\n return values.reduce((result, word, index) => {\n word = word.toLowerCase();\n return result + (index ? upperFirst(word) : word);\n }, '');\n } else {\n return;\n }\n}\n\nexport function generateRandomStr() {\n return Math.random().toString(36).substring(2);\n}\n\nexport function isTemplateRef<C = any>(value: any): value is TemplateRef<C> {\n return value instanceof TemplateRef;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement;\n}\n\nexport function isElementRef(value: any): value is ElementRef {\n return value instanceof ElementRef;\n}\n\n/**\n * fix angular cdk's coerceBooleanProperty will transform 0 to true\n */\nexport function coerceBooleanProperty(value: boolean | string | number): boolean {\n if (value === '' || (value && value !== 'false')) {\n return true;\n } else {\n return false;\n }\n}\n\nexport type FunctionProp<T> = (...args: any[]) => T;\n\n/**\n * @deprecated Please use Angular cdk's coerceNumberProperty instead\n */\nexport function coerceNumberValue(value: number | string): number;\n/**\n * @deprecated Please use Angular cdk's coerceNumberProperty instead\n */\nexport function coerceNumberValue<D>(value: number | string, fallback: D): number | D;\n/**\n * @deprecated Please use Angular cdk's coerceNumberProperty instead\n */\nexport function coerceNumberValue(value: number | string, fallbackValue: number = 0): number {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n\n/**\n * @deprecated Please use Angular cdk's coerceCssPixelValue instead\n */\nexport function coerceCssPixelValue(value: number | string): string {\n value = _isNumberValue(value) ? Number(value) : value;\n return coerceCssPixel(value);\n}\n\nexport function valueFunctionProp<T>(prop: FunctionProp<T>, ...args: any[]): T {\n return typeof prop === 'function' ? prop(...args) : prop;\n}\n\nexport function shallowEqual(objA?: Record<string, any>, objB?: Record<string, any>): boolean {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n for (let idx = 0; idx < keysA.length; idx++) {\n const key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function concatArray<TItem>(items: TItem | TItem[], originalItems: TItem | TItem[] = []): TItem[] {\n let _originalItems: TItem[] = [];\n if (!originalItems) {\n _originalItems = [];\n } else {\n _originalItems = coerceArray(originalItems);\n }\n if (items) {\n if (isArray(items)) {\n return [..._originalItems, ...items];\n } else {\n return [..._originalItems, items];\n }\n } else {\n return _originalItems;\n }\n}\n\nexport function humanizeBytes(bytes: number, noSpace = false, fractionDigits = 1): string {\n if (bytes === 0) {\n return '0 Byte';\n }\n\n const k = 1024;\n const sizes: string[] = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const i: number = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(fractionDigits)) + (noSpace ? '' : ' ') + sizes[i];\n}\n\nexport function isFloat(value: string): boolean {\n if (!value) {\n return false;\n }\n\n return /^[-+]?([0-9]+([.][0-9]*)?|[.][0-9]+)([Ee][-+]?[0-9]+)?$/.test(value);\n}\n\nexport function hasTimeInStringDate(dateString: string): boolean {\n const standardFormat = /\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}\\s+\\d{1,2}:\\d{1,2}/;\n const chineseFormat = /\\d{4}年\\d{1,2}月\\d{1,2}日?\\s+\\d{1,2}[时:]\\d{1,2}[分]?/;\n const reverseEnglishFormat = /\\d{1,2}\\s+[A-Za-z]{3,}\\s+\\d{4}\\s+\\d{1,2}:\\d{1,2}/;\n const englishFormat = /[A-Za-z]{3,}\\s+\\d{1,2},?\\s+\\d{4}\\s+\\d{1,2}:\\d{1,2}/;\n const isoFormat = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/;\n\n return (\n standardFormat.test(dateString) ||\n chineseFormat.test(dateString) ||\n reverseEnglishFormat.test(dateString) ||\n englishFormat.test(dateString) ||\n isoFormat.test(dateString)\n );\n}\n","import { TZDate } from '@date-fns/tz';\nimport { FirstWeekContainsDate, Locale, setHours, setMinutes, setSeconds } from 'date-fns';\nimport { fromZonedTime } from 'date-fns-tz';\nimport { getDefaultLocaleId } from 'ngx-tethys/i18n';\nimport { hasTimeInStringDate } from '../helpers';\nimport {\n addDays,\n addHours,\n addMinutes,\n addMonths,\n addQuarters,\n addSeconds,\n addWeeks,\n addYears,\n differenceInCalendarDays,\n differenceInCalendarMonths,\n differenceInCalendarQuarters,\n differenceInCalendarYears,\n differenceInDays,\n differenceInHours,\n differenceInMinutes,\n differenceInSeconds,\n differenceInWeeks,\n endOfDay,\n endOfISOWeek,\n endOfMonth,\n endOfQuarter,\n endOfWeek,\n endOfYear,\n format,\n fromUnixTime,\n getDateFnsLocale,\n getDaysInMonth,\n getQuarter,\n getUnixTime,\n getWeek,\n isSameDay,\n isSameHour,\n isSameMinute,\n isSameMonth,\n isSameQuarter,\n isSameSecond,\n isSameYear,\n isToday,\n isTomorrow,\n isValid,\n isWeekend,\n setDay,\n setDefaultOptions,\n setMonth,\n setQuarter,\n setYear,\n startOfDay,\n startOfISOWeek,\n startOfMonth,\n startOfQuarter,\n startOfWeek,\n startOfYear,\n subDays,\n subWeeks\n} from './functions';\n\nexport type TinyDateCompareGrain = 'decade' | 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n\nexport type WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type TinyDateType = TinyDate | Date | null;\n\nexport function sortRangeValue(rangeValue: TinyDate[]): TinyDate[] {\n if (Array.isArray(rangeValue)) {\n const [start, end] = rangeValue;\n return start && end && start.isAfterSecond(end) ? [end, start] : [start, end];\n }\n return rangeValue;\n}\n\nexport const DEFAULT_TIMEZONE = 'Asia/Shanghai';\n\nexport class TinyDate implements Record<string, any> {\n nativeDate: Date;\n\n private useTimeZone: string;\n\n private static locale: string = getDefaultLocaleId();\n\n protected static dateFnsLocale: Locale = getDateFnsLocale(TinyDate.locale);\n\n protected static defaultTimeZone: string = DEFAULT_TIMEZONE;\n\n constructor(date?: Date | string | number, zone?: string) {\n setDefaultOptions({ locale: TinyDate.dateFnsLocale });\n this.useTimeZone = zone || TinyDate.defaultTimeZone;\n if (date) {\n if (date instanceof Date) {\n this.nativeDate = TinyDate.utcToZonedTime(date, this.useTimeZone);\n } else if (typeof date === 'string') {\n if (hasTimeInStringDate(date)) {\n // 如果字符串中包含时间,则需要将时间转换为UTC时间再传递给TZDate\n const originTime = new Date(date);\n const zoneTime = TZDate.tz(this.useTimeZone, originTime);\n const utcDate = fromZonedTime(zoneTime, this.useTimeZone).toISOString();\n this.nativeDate = new TZDate(utcDate, this.useTimeZone);\n } else {\n this.nativeDate = new TZDate(date, this.useTimeZone);\n }\n } else if (typeof date === 'number') {\n this.nativeDate = new TZDate(date, this.useTimeZone);\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw new Error(\n `The input date type is not supported expect Date | string | number | { date: number; with_time: 0 | 1}, actual ${JSON.stringify(\n date\n )}`\n );\n }\n } else {\n this.nativeDate = new TZDate(Date.now(), this.useTimeZone);\n }\n }\n\n static setDefaultLocale(locale: string) {\n TinyDate.locale = locale;\n TinyDate.dateFnsLocale = getDateFnsLocale(locale);\n return setDefaultOptions({ locale: TinyDate.dateFnsLocale });\n }\n\n static getDefaultLocale(): { locale: string; dateFnsLocale: Locale } {\n return { locale: TinyDate.locale, dateFnsLocale: TinyDate.dateFnsLocale };\n }\n\n static setDefaultTimeZone(zone: string) {\n TinyDate.defaultTimeZone = zone ?? DEFAULT_TIMEZONE;\n }\n\n static getDefaultTimeZone(): string {\n return TinyDate.defaultTimeZone;\n }\n\n static utcToZonedTime(value: Date | number, timeZone?: string): Date {\n return TZDate.tz(timeZone || TinyDate.defaultTimeZone, value as any);\n }\n\n static createDateInTimeZone(\n year: number,\n month: number,\n day: number,\n hours: number,\n minutes: number,\n seconds: number,\n timeZone?: string\n ): Date {\n return new TZDate(year, month, day, hours, minutes, seconds, timeZone || TinyDate.defaultTimeZone);\n }\n\n static fromUnixTime(unixTime: number, timeZone?: string): TinyDate {\n return new TinyDate(fromUnixTime(unixTime), timeZone || TinyDate.defaultTimeZone);\n }\n\n // get\n getTime(): number {\n return this.nativeDate.getTime();\n }\n\n getDate(): number {\n return this.nativeDate.getDate();\n }\n\n getYear(): number {\n return this.nativeDate.getFullYear();\n }\n\n getQuarter(): number {\n return getQuarter(this.nativeDate);\n }\n\n getMonth(): number {\n return this.nativeDate.getMonth();\n }\n\n getFullYear(): number {\n return this.nativeDate.getFullYear();\n }\n\n getWeek(options: { locale?: Locale; weekStartsOn?: WeekDayIndex } = { weekStartsOn: 1 }): number {\n return getWeek(this.nativeDate, options);\n }\n\n getDay(): number {\n return this.nativeDate.getDay();\n }\n\n getHours(): number {\n return this.nativeDate.getHours();\n }\n\n getMinutes(): number {\n return this.nativeDate.getMinutes();\n }\n\n getSeconds(): number {\n return this.nativeDate.getSeconds();\n }\n\n getMilliseconds(): number {\n return this.nativeDate.getMilliseconds();\n }\n\n getDaysInMonth() {\n return getDaysInMonth(this.nativeDate);\n }\n\n getDaysInQuarter() {\n return differenceInCalendarDays(this.endOfQuarter().addSeconds(1).nativeDate, this.startOfQuarter().nativeDate);\n }\n\n // set\n setDate(amount: number): TinyDate {\n const date = new Date(this.nativeDate);\n date.setDate(amount);\n return new TinyDate(date, this.useTimeZone);\n }\n\n setHms(hour: number, minute: number, second: number): TinyDate {\n const date = new Date(this.nativeDate);\n date.setHours(hour, minute, second);\n return new TinyDate(date, this.useTimeZone);\n }\n\n setYear(year: number): TinyDate {\n return new TinyDate(setYear(this.nativeDate, year), this.useTimeZone);\n }\n\n setMonth(month: number): TinyDate {\n return new TinyDate(setMonth(this.nativeDate, month), this.useTimeZone);\n }\n\n setQuarter(quarter: number): TinyDate {\n return new TinyDate(setQuarter(this.nativeDate, quarter), this.useTimeZone);\n }\n\n setDay(day: number, options?: { weekStartsOn: WeekDayIndex }): TinyDate {\n return new TinyDate(setDay(this.nativeDate, day, options), this.useTimeZone);\n }\n\n setHours(hours: number): TinyDate {\n return new TinyDate(setHours(this.nativeDate, hours), this.useTimeZone);\n }\n\n setMinutes(minutes: number): TinyDate {\n return new TinyDate(setMinutes(this.nativeDate, minutes), this.useTimeZone);\n }\n\n setSeconds(seconds: number): TinyDate {\n return new TinyDate(setSeconds(this.nativeDate, seconds), this.useTimeZone);\n }\n\n // add\n addYears(amount: number): TinyDate {\n return new TinyDate(addYears(this.nativeDate, amount), this.useTimeZone);\n }\n\n addQuarters(amount: number): TinyDate {\n return new TinyDate(addQuarters(this.nativeDate, amount), this.useTimeZone);\n }\n\n addMonths(amount: number): TinyDate {\n return new TinyDate(addMonths(this.nativeDate, amount), this.useTimeZone);\n }\n\n addWeeks(amount: number): TinyDate {\n return new TinyDate(addWeeks(this.nativeDate, amount), this.useTimeZone);\n }\n\n addDays(amount: number): TinyDate {\n return new TinyDate(addDays(this.nativeDate, amount), this.useTimeZone);\n }\n addHours(amount: number): TinyDate {\n return new TinyDate(addHours(this.nativeDate, amount), this.useTimeZone);\n }\n\n addSeconds(amount: number): TinyDate {\n return new TinyDate(addSeconds(this.nativeDate, amount), this.useTimeZone);\n }\n\n addMinutes(amount: number): TinyDate {\n return new TinyDate(addMinutes(this.nativeDate, amount), this.useTimeZone);\n }\n\n // isSame\n\n isSame(date: TinyDateType, grain: TinyDateCompareGrain = 'day'): boolean {\n let fn;\n switch (grain) {\n case 'decade':\n fn = (pre: Date, next: Date) => Math.abs(pre.getFullYear() - next.getFullYear()) < 11;\n break;\n case 'year':\n fn = isSameYear;\n break;\n case 'month':\n fn = isSameMonth;\n break;\n case 'quarter':\n fn = isSameQuarter;\n break;\n case 'day':\n fn = isSameDay;\n break;\n case 'hour':\n fn = isSameHour;\n break;\n case 'minute':\n fn = isSameMinute;\n break;\n case 'second':\n fn = isSameSecond;\n break;\n default:\n fn = isSameDay;\n break;\n }\n return fn(this.nativeDate, this.toNativeDate(date));\n }\n\n isSameYear(date: TinyDateType): boolean {\n return this.isSame(date, 'year');\n }\n\n isSameMonth(date: TinyDateType): boolean {\n return this.isSame(date, 'month');\n }\n\n isSameQuarter(date: TinyDateType): boolean {\n return this.isSame(date, 'quarter');\n }\n\n isSameDay(date: TinyDateType): boolean {\n return this.isSame(date, 'day');\n }\n\n isSameHour(date: TinyDateType): boolean {\n return this.isSame(date, 'hour');\n }\n\n isSameMinute(date: TinyDateType): boolean {\n return this.isSame(date, 'minute');\n }\n\n isSameSecond(date: TinyDateType): boolean {\n return this.isSame(date, 'second');\n }\n\n // isBefore and isAfter\n isBeforeYear(date: TinyDateType): boolean {\n return this.compare(date, 'year');\n }\n\n isBeforeQuarter(date: TinyDate): boolean {\n return this.compare(date, 'quarter');\n }\n\n isBeforeMonth(date: TinyDateType): boolean {\n return this.compare(date, 'month');\n }\n\n isBeforeWeek(date: TinyDateType): boolean {\n return this.compare(date, 'week');\n }\n\n isBeforeDay(date: TinyDateType): boolean {\n return this.compare(date, 'day');\n }\n\n isBeforeHour(date: TinyDateType): boolean {\n return this.compare(date, 'hour');\n }\n\n isBeforeMinute(date: TinyDateType): boolean {\n return this.compare(date, 'minute');\n }\n\n isBeforeSecond(date: TinyDateType): boolean {\n return this.compare(date, 'second');\n }\n\n isAfterYear(date: TinyDateType): boolean {\n return this.compare(date, 'year', false);\n }\n\n isAfterQuarter(date: TinyDate): boolean {\n return this.compare(date, 'quarter', false);\n }\n\n isAfterMonth(date: TinyDateType): boolean {\n return this.compare(date, 'month', false);\n }\n\n isAfterWeek(date: TinyDateType): boolean {\n return this.compare(date, 'week', false);\n }\n\n isAfterDay(date: TinyDateType): boolean {\n return this.compare(date, 'day', false);\n }\n\n isAfterHour(date: TinyDateType): boolean {\n return this.compare(date, 'hour', false);\n }\n\n isAfterMinute(date: TinyDateType): boolean {\n return this.compare(date, 'minute', false);\n }\n\n isAfterSecond(date: TinyDateType): boolean {\n return this.compare(date, 'second', false);\n }\n\n // is\n isWeekend(): boolean {\n return isWeekend(this.nativeDate);\n }\n\n isToday(): boolean {\n return isToday(this.nativeDate);\n }\n\n isTomorrow(): boolean {\n return isTomorrow(this.nativeDate);\n }\n\n isValid(): boolean {\n return isValid(this.nativeDate);\n }\n\n // startOf and endOf\n startOfYear(): TinyDate {\n return new TinyDate(startOfYear(this.nativeDate), this.useTimeZone);\n }\n\n startOfQuarter(): TinyDate {\n return new TinyDate(startOfQuarter(this.nativeDate), this.useTimeZone);\n }\n\n startOfMonth(): TinyDate {\n return new TinyDate(startOfMonth(this.nativeDate), this.useTimeZone);\n }\n\n startOfWeek(options?: { locale?: Locale; weekStartsOn?: WeekDayIndex }): TinyDate {\n return new TinyDate(startOfWeek(this.nativeDate, options), this.useTimeZone);\n }\n\n startOfDay(): TinyDate {\n return new TinyDate(startOfDay(this.nativeDate), this.useTimeZone);\n }\n\n endOfYear(): TinyDate {\n return new TinyDate(endOfYear(this.nativeDate), this.useTimeZone);\n }\n\n endOfQuarter(): TinyDate {\n return new TinyDate(endOfQuarter(this.nativeDate), this.useTimeZone);\n }\n\n endOfMonth(): TinyDate {\n return new TinyDate(endOfMonth(this.nativeDate), this.useTimeZone);\n }\n\n endOfWeek(options?: { locale?: Locale; weekStartsOn?: WeekDayIndex }): TinyDate {\n return new TinyDate(endOfWeek(this.nativeDate, options), this.useTimeZone);\n }\n\n endOfDay(): TinyDate {\n return new TinyDate(endOfDay(this.nativeDate), this.useTimeZone);\n }\n\n // other\n format(\n mat: string,\n options?: {\n locale?: Locale;\n weekStartsOn?: WeekDayIndex;\n firstWeekContainsDate?: FirstWeekContainsDate;\n useAdditionalWeekYearTokens?: boolean;\n useAdditionalDayOfYearTokens?: boolean;\n }\n ) {\n return format(this.nativeDate, mat, options);\n }\n\n calendarStart(options?: { weekStartsOn: WeekDayIndex | undefined }): TinyDate {\n return new TinyDate(startOfWeek(startOfMonth(this.nativeDate), options), this.useTimeZone);\n }\n\n clone(): TinyDate {\n return new TinyDate(new Date(this.nativeDate), this.useTimeZone);\n }\n\n getUnixTime(): number {\n return getUnixTime(this.nativeDate);\n }\n\n compare(date: TinyDateType, grain: TinyDateCompareGrain = 'day', isBefore: boolean = true): boolean {\n if (date === null) {\n return false;\n }\n let fn;\n switch (grain) {\n case 'year':\n fn = differenceInCalendarYears;\n break;\n case 'quarter':\n fn = differenceInCalendarQuarters;\n break;\n case 'month':\n fn = differenceInCalendarMonths;\n break;\n case 'day':\n fn = differenceInCalendarDays;\n break;\n case 'week':\n fn = differenceInWeeks;\n break;\n case 'hour':\n fn = differenceInHours;\n break;\n case 'minute':\n fn = differenceInMinutes;\n break;\n case 'second':\n fn = differenceInSeconds;\n break;\n default:\n fn = differenceInCalendarDays;\n break;\n }\n return isBefore ? fn(this.nativeDate, this.toNativeDate(date)) < 0 : fn(this.nativeDate, this.toNativeDate(date)) > 0;\n }\n\n private toNativeDate(date: any): Date {\n return date instanceof TinyDate ? date.nativeDate : date;\n }\n\n startOfISOWeek(): TinyDate {\n return new TinyDate(startOfISOWeek(this.nativeDate), this.useTimeZone);\n }\n\n endOfISOWeek(): TinyDate {\n return new TinyDate(endOfISOWeek(this.nativeDate), this.useTimeZone);\n }\n\n differenceInDays(date: Date): number {\n return differenceInDays(this.nativeDate, date);\n }\n\n differenceInHours(date: Date): number {\n return differenceInHours(this.nativeDate, date);\n }\n\n subWeeks(amount: number): TinyDate {\n return new TinyDate(subWeeks(this.nativeDate, amount), this.useTimeZone);\n }\n\n subDays(amount: number): TinyDate {\n return new TinyDate(subDays(this.nativeDate, amount), this.useTimeZone);\n }\n}\n","import { ElementRef } from '@angular/core';\nimport * as helpers from './helpers';\n\nconst proto = Element.prototype;\nconst vendor =\n proto.matches ||\n proto['matchesSelector'] ||\n proto['webkitMatchesSelector'] ||\n proto['mozMatchesSelector'] ||\n proto['msMatchesSelector'] ||\n proto['oMatchesSelector'];\n\nexport function fallbackMatches(el: Element | Node, selector: string) {\n const nodes = el.parentNode.querySelectorAll(selector);\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i] === el) {\n return true;\n }\n }\n return false;\n}\n/**\n * Match `el` to `selector`.\n */\nexport function match(el: Element | Node, selector: string) {\n if (vendor) {\n return vendor.call(el, selector);\n }\n return fallbackMatches(el, selector);\n}\n\nexport function isDocument(element: any): element is Document {\n return (\n (typeof element !== 'undefined' && element instanceof Document) || (element.nodeType && element.nodeType === element.DOCUMENT_NODE)\n );\n}\n\nexport function isElement(element: any) {\n return (\n (typeof HTMLElement !== 'undefined' && element instanceof HTMLElement) ||\n (element && element.nodeType && element.nodeType === element.ELEMENT_NODE)\n );\n}\n\nexport function getWindow(elem: any) {\n return elem != null && elem === elem.window ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\nexport function getElementOffset(elem: HTMLElement) {\n let docElem, win, rect, doc;\n\n if (!elem) {\n return;\n }\n // Support: IE<=11+\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!elem.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n rect = elem.getBoundingClientRect();\n\n // Make sure element is not hidden (display: none)\n if (rect.width || rect.height) {\n doc = elem.ownerDocument;\n win = getWindow(doc);\n docElem = doc.documentElement;\n\n return {\n top: rect.top + win.pageYOffset - docElem.clientTop,\n left: rect.left + win.pageXOffset - docElem.clientLeft,\n height: rect.height,\n width: rect.width\n };\n }\n return rect;\n}\n\nexport function getOffset(element: HTMLElement, container: HTMLElement | Window): { left: number; top: number } | null {\n if (!element || !element.getClientRects().length) {\n return null;\n }\n const rect = element.getBoundingClientRect();\n\n if (rect.width || rect.height) {\n if (container === window) {\n const documentElement = element.ownerDocument!.documentElement!;\n return {\n top: rect.top - documentElement.clientTop,\n left: rect.left - documentElement.clientLeft\n };\n }\n const containerRect = (container as HTMLElement).getBoundingClientRect();\n return {\n top: rect.top - containerRect.top,\n left: rect.left - containerRect.left\n };\n }\n\n return rect;\n}\n\nexport function getClientSize(): { width: number; height: number } {\n const width = document.documentElement.clientWidth;\n const height = window.innerHeight || document.documentElement.clientHeight;\n return {\n width,\n height\n };\n}\n\nexport type ElementSelector = HTMLElement | ElementRef | string;\n\nexport function getHTMLElementBySelector(selector: ElementSelector, defaultElementRef: ElementRef): HTMLElement {\n if (!selector) {\n return defaultElementRef.nativeElement;\n } else if (selector === 'body') {\n return document.body;\n } else if (helpers.isString(selector)) {\n return document.querySelector(selector as string);\n } else if (selector instanceof ElementRef) {\n return selector.nativeElement;\n } else {\n return selector as HTMLElement;\n }\n}\n\nexport function isInputOrTextarea(element: HTMLElement) {\n return ['INPUT', 'TEXTAREA'].indexOf(element.nodeName) >= 0;\n}\n\nexport function isWindow(container: Element | Window): container is Window {\n return typeof window !== 'undefined' && container === window;\n}\n\nexport interface SimpleRect {\n top: number;\n left: number;\n width?: number;\n height?: number;\n bottom?: number;\n}\n\nexport function getContainerRect(container: Element | Window): SimpleRect {\n return !isWindow(container)\n ? container.getBoundingClientRect()\n : {\n top: 0,\n left: 0,\n bottom: 0\n };\n}\n\nexport function getStyleAsText(styles?: any): string {\n if (!styles) {\n return '';\n }\n\n return Object.keys(styles)\n .map(key => {\n const val = styles[key];\n return `${key}:${typeof val === 'string' ? val : val + 'px'}`;\n })\n .join(';');\n}\n\nexport function isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n return event.type.startsWith('touch');\n}\n\n/**\n * Assert wrapper element whether only contains icon.\n */\nexport function assertIconOnly(wrapperElement: Element): boolean {\n const listOfNode = Array.from(wrapperElement.childNodes);\n const iconCount = listOfNode.filter(node => ['THY-ICON', 'I'].includes(node.nodeName)).length;\n const noText = listOfNode.every(node => node.nodeName !== '#text');\n const noSpan = listOfNode.every(node => node.nodeName !== 'SPAN');\n const isIconOnly = noSpan && noText && iconCount >= 1;\n return isIconOnly;\n}\n\n/**\n *\n * calc position x,y point\n *\n * CASE (width <= clientWidth && height <= clientHeight):\n *\n * ------------- clientWidth -------------\n * | |\n * | ------ width ------ |\n * | | | |\n * | | | |\n * client height | |\n * Height | | |\n * | | | |\n * | ------------------- |\n * | |\n * | |\n * ---------------------------------------\n * fixedPosition = { x: 0, y: 0 }\n *\n *\n *\n * CASE (width > clientWidth || height > clientHeight):\n *\n * ------------- clientWidth -------------\n * | | |\n * | top |\n * | | |\n * |--left--|--------------- width -----------------\n * | | |\n * client | |\n * Height | |\n * | | |\n * | | |\n * | height |\n * | | |\n * ---------| |\n * | |\n * | |\n * | |\n * ----------------------------------------\n *\n *\n * - left || top > 0\n * left -> 0 || top -> 0\n *\n * - (left + width) < clientWidth || (top + height) < clientHeight\n * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight\n *\n * DEFAULT:\n * - hold position\n *\n */\nexport function getFitContentPosition(params: {\n width: number;\n height: number;\n left: number;\n top: number;\n clientWidth: number;\n clientHeight: number;\n}): { x?: number; y?: number } {\n let fixPos = {};\n\n if (params.width <= params.clientWidth && params.height <= params.clientHeight) {\n fixPos = {\n x: 0,\n y: 0\n };\n }\n\n if (params.width > params.clientWidth || params.height > params.clientHeight) {\n fixPos = {\n x: fitPoint(params.left, params.width, params.clientWidth),\n y: fitPoint(params.top, params.height, params.clientHeight)\n };\n }\n\n return fixPos;\n}\n\nfunction fitPoint(start: number, size: number, clientSize: number): number | null {\n const startAddSize = start + size;\n const offsetStart = (size - clientSize) / 2;\n let distance: number | null = null;\n\n if (size > clientSize) {\n if (start > 0) {\n distance = offsetStart;\n }\n if (start < 0 && startAddSize < clientSize) {\n distance = -offsetStart;\n }\n } else {\n if (start < 0 || startAddSize > clientSize) {\n distance = start < 0 ? offsetStart : -offsetStart;\n }\n }\n\n return distance;\n}\n\nexport function elementMatchClosest(element: HTMLElement, selectors: string | string[]) {\n let matched = false;\n if (element && element.closest) {\n matched = !!helpers.coerceArray(selectors).find(selector => {\n return element.closest(selector);\n });\n }\n return matched;\n}\n","import { Id } from 'ngx-tethys/types';\nimport { coerceArray, isFunction, isUndefinedOrNull } from './helpers';\n\nexport interface EntityAddOptions {\n prepend?: boolean;\n\n afterId?: Id;\n}\n\nexport interface EntityMoveOptions {\n afterId?: Id;\n\n toIndex?: number;\n}\n\nexport interface ProducerOptions {\n idKey?: string;\n}\n\nexport class Producer<TEntity> {\n private idKey = '_id';\n\n private entities: TEntity[];\n\n constructor(entities: TEntity[], options?: ProducerOptions) {\n this.entities = entities || [];\n if (options && options.idKey) {\n this.idKey = options.idKey;\n }\n }\n\n /**\n * Add an entity or entities.\n *\n * @example\n * produce([users]).add(Entity);\n * produce([users]).add([Entity, Entity]);\n * produce([users]).add(Entity, { prepend: true });\n * produce([users]).add(Entity, { afterId: '' });\n */\n add(entity: TEntity | TEntity[], addOptions?: EntityAddOptions): TEntity[] {\n const addEntities = coerceArray(entity);\n if (addEntities.length === 0) {\n return this.entities;\n }\n if (addOptions && (addOptions.afterId || addOptions.prepend)) {\n if (addOptions.afterId) {\n const entities = [...this.entities];\n const index =\n this.entities.findIndex(item => {\n return item[this.idKey] === addOptions.afterId;\n }) + 1;\n entities.splice(index, 0, ...addEntities);\n this.entities = [...entities];\n } else if (addOptions.prepend) {\n this.entities = [...addEntities, ...this.entities];\n }\n } else {\n this.entities = [...this.entities, ...addEntities];\n }\n return this.entities;\n }\n\n /**\n *\n * Update an entity or entities.\n *\n * @example\n * produce([users]).update(3, {\n * name: 'New Name'\n * });\n *\n * produce([users]).update(3, entity => {\n * return {\n * ...entity,\n * name: 'New Name'\n * }\n * });\n *\n * produce([users]).update([1,2,3], {\n * name: 'New Name'\n * });\n */\n update(id: Id | Id[] | null, newStateFn: (entity: Readonly<TEntity>) => Partial<TEntity>): TEntity[];\n update(id: Id | Id[] | null, newState?: Partial<TEntity>): TEntity[];\n update(\n idsOrFn: Id | Id[] | null | Partial<TEntity> | ((entity: Readonly<TEntity>) => boolean),\n newStateOrFn?: ((entity: Readonly<TEntity>) => Partial<TEntity>) | Partial<TEntity>\n ): TEntity[] {\n const ids = coerceArray(idsOrFn);\n\n for (let i = 0; i < this.entities.length; i++) {\n const oldEntity = this.entities[i];\n if (ids.indexOf(oldEntity[this.idKey]) >= 0) {\n const newState = isFunction(newStateOrFn) ? (newStateOrFn as any)(oldEntity) : newStateOrFn;\n this.entities[i] = { ...(oldEntity as any), ...newState };\n }\n }\n return [...this.entities];\n }\n\n /**\n *\n * Remove one or more entities:\n *\n * @example\n * produce([users]).remove(5);\n * produce([users]).remove([1,2,3]);\n * produce([users]).remove(entity => entity.id === 1);\n */\n remove(id: Id | Id[]): TEntity[];\n remove(predicate: (entity: Readonly<TEntity>) => boolean): TEntity[];\n remove(idsOrFn?: Id | Id[] | ((entity: Readonly<TEntity>) => boolean)): TEntity[] {\n if (isFunction(idsOrFn)) {\n this.entities = this.entities.filter(entity => {\n return !(idsOrFn as any)(entity);\n });\n } else {\n const ids = coerceArray(idsOrFn);\n this.entities = this.entities.filter(entity => {\n return ids.indexOf(entity[this.idKey]) === -1;\n });\n }\n return this.entities;\n }\n\n /**\n *\n * Move one or more entities:\n *\n * @example\n * produce([users]).move(5, {afterId: 2});\n * produce([users]).move(5, {toIndex: 0});\n */\n move(id: Id, moveOptions?: EntityMoveOptions): TEntity[] {\n const fromIndex = this.entities.findIndex(item => item[this.idKey] === id);\n let toIndex = 0;\n const newEntities = [...this.entities];\n\n if (!id || fromIndex < 0) {\n return [...this.entities];\n }\n\n if (moveOptions) {\n if (!isUndefinedOrNull(moveOptions.afterId)) {\n toIndex = this.entities.findIndex(item => item[this.idKey] === moveOptions.afterId);\n } else if (moveOptions.toIndex) {\n toIndex = moveOptions.toIndex;\n }\n }\n toIndex = Math.max(0, Math.min(this.entities.length - 1, toIndex));\n if (toIndex === fromIndex) {\n return [...this.entities];\n } else {\n const target = this.entities[fromIndex];\n const delta = toIndex < fromIndex ? -1 : 1;\n\n for (let i = fromIndex; i !== toIndex; i += delta) {\n newEntities[i] = newEntities[i + delta];\n }\n newEntities[toIndex] = target;\n return [...newEntities];\n }\n }\n}\n\nexport function produce<TEntity>(entities: TEntity[], options?: ProducerOptions) {\n return new Producer(entities, options);\n}\n","import { keyBy, indexKeyBy } from './helpers';\n\n// 抽取数据中的Item类型,不是数组直接返回对象的类型\nexport type ArrayInferExtract<T> = T extends Array<infer P> ? P : T;\nexport type ArrayAlwaysExtract<T> = T extends Array<infer P> ? P : never;\n// 抽取 References 中 Object 类型, 如果是数组取数组 Item 类型\nexport type ReferenceObjectExtract<T> = {\n [key in keyof T]: ArrayInferExtract<T[key]> extends object ? ArrayInferExtract<T[key]> : never;\n};\n// 收取 References 中所有的属性 Names,如果ArrayInferExtract不是对象,返回 never\nexport type ReferenceExtractNames<T> = { [key in keyof T]: ArrayInferExtract<T[key]> extends object ? key : never };\nexport type ReferenceArrayExtractNames<T> = { [key in keyof T]: T[key] extends Array<object> ? key : never };\n// 排除 ReferenceExtractNames 抽取 Names 中的 never,只保留是对象的 Names\nexport type ReferenceExtractAllowNames<T> = {\n [key in ReferenceExtractNames<T>[keyof T]]: ReferenceExtractNames<T>[key];\n};\nexport type ReferenceArrayExtractAllowNames<T> = {\n [key in ReferenceArrayExtractNames<T>[keyof T]]: ReferenceExtractNames<T>[key];\n};\n\n/**\n * 根据 ReferenceExtractAllowKeys 抽取出的 Object Keys 组合新的对象\n * @example ReferenceExtractAllowKeys<{\n users: { uid: string; name: string }[];\n info: { id: number; name: string };\n departments: { dept: number }[];\n ids: string[];\n id: string;\n }> => {\n users: \"uid\" | \"name\",\n info: \"id\" | \"name\",\n departments: \"dept\"\n\n }\n */\nexport type ReferenceExtractAllowKeys<T> = {\n [key in keyof ReferenceExtractAllowNames<T>]?: keyof ReferenceObjectExtract<T>[key];\n};\n// 只允许 reference 是 Array 的 Keys\nexport type ReferenceArrayExtractAllowKeys<T> = {\n [key in keyof ReferenceArrayExtractAllowNames<T>]?: keyof ReferenceObjectExtract<T>[key];\n};\n\nfunction getReferenceIdKey<TReferences>(referenceKey: string, idKeys: ReferenceArrayExtractAllowKeys<TReferences>) {\n if (idKeys && idKeys[referenceKey]) {\n return idKeys[referenceKey];\n } else {\n return '_id';\n }\n}\n\n/**\n * Append references to original references\n * @example\n * mergeReferences({departments: [{ _id: '1', name: 'name-1'}]}, {departments: [{ _id: '3', name: 'name-3'}]})\n * mergeReferences({users: [{ uid: '1', name: 'name-1'}]}, {users: [{ uid: '3', name: 'name-3'}]}, { users: \"uid\" })\n * @param originalReferences original references\n * @param references append references\n * @param idKeys references 's id key, default is '_id'\n *\n * @returns TReferences\n */\nexport function mergeReferences<TReferences>(\n originalReferences: TReferences,\n references: Partial<TReferences>,\n idKeys?: ReferenceArrayExtractAllowKeys<TReferences>\n): TReferences {\n for (const key in references) {\n if (references.hasOwnProperty(key)) {\n const reference = references[key];\n const referenceIdKey = getReferenceIdKey<TReferences>(key, idKeys);\n const originalReference = originalReferences[key];\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !originalReference) {\n throw new Error(`original reference must exist when append new reference: ${key}`);\n }\n if (originalReference instanceof Array) {\n // original reference id index map\n const originalReferenceIdIndexMap = indexKeyBy<ReferenceExtractAllowKeys<TReferences>>(\n originalReferences[key] as any,\n referenceIdKey\n );\n // append reference is array\n if (reference instanceof Array) {\n reference.forEach((item: TReferences[Extract<keyof TReferences, string>]) => {\n const itemId = item[referenceIdKey];\n const index = originalReferenceIdIndexMap[itemId];\n if (index >= 0) {\n originalReference[index] = { ...originalReference[index], ...item };\n } else {\n (originalReferences as any)[key] = [...(originalReferences[key] as any), item];\n }\n });\n } else {\n // append reference is not array, support append signal object to array reference\n const itemId = reference[referenceIdKey];\n const index = originalReferenceIdIndexMap[itemId];\n if (itemId >= 0) {\n originalReference[index] = { ...originalReference[index], ...reference };\n } else {\n (originalReferences as any)[key] = [...(originalReferences[key] as any), reference];\n }\n }\n } else {\n originalReferences[key] = { ...originalReferences[key], ...reference };\n }\n }\n }\n\n return originalReferences;\n}\n\n/**\n * Build dictionary for references\n * @param references references\n * @param idKeys references 's id key, default is '_id'\n */\nexport function buildReferencesKeyBy<TReferences>(\n references: Partial<TReferences>,\n idKeys?: Partial<ReferenceArrayExtractAllowKeys<TReferences>>\n) {\n const result: { [key in keyof TReferences]?: { [key: string]: ArrayInferExtract<TReferences[key]> } } = {};\n for (const key in references) {\n if (references.hasOwnProperty(key)) {\n const referenceIdKey = getReferenceIdKey<TReferences>(key, idKeys);\n const reference = references[key];\n if (reference instanceof Array) {\n const originalReferenceIdMap = keyBy<ArrayInferExtract<TReferences>>(reference, referenceIdKey);\n (result as any)[key] = originalReferenceIdMap;\n }\n }\n }\n return result;\n}\n","import { SimpleChanges } from '@angular/core';\n\nexport function hasLaterChange(changes: SimpleChanges): boolean {\n const hasChange = Object.keys(changes).find(key => {\n return changes[key] && !changes[key].isFirstChange();\n });\n return !!hasChange;\n}\n","import { isDevMode } from '@angular/core';\n\nconst record: Record<string, boolean> = {};\n\nlet logWarnDeprecation = true;\n\nexport const PREFIX = '[NGX-TETHYS]:';\n\nfunction notRecorded(...args: any[]): boolean {\n const asRecord = args.reduce((acc, c) => acc + c.toString(), '');\n\n if (record[asRecord]) {\n return false;\n } else {\n record[asRecord] = true;\n return true;\n }\n}\n\nfunction consoleCommonBehavior(consoleFunc: (...args: any) => void, ...args: any[]): void {\n if (isDevMode() && notRecorded(...args)) {\n consoleFunc(...args);\n }\n}\n\n// Warning should only be printed in dev mode and only once.\nexport const warn = (...args: any[]) => consoleCommonBehavior((...arg: any[]) => console.warn(PREFIX, ...arg), ...args);\n\nexport function createWarnDeprecation(prefix: string): (...args: any[]) => void {\n return (...args: any[]) => {\n const stack = new Error().stack;\n return consoleCommonBehavior(\n (...arg: any[]) => {\n if (logWarnDeprecation) {\n console.warn(prefix, 'deprecated:', ...arg, stack);\n }\n },\n ...args\n );\n };\n}\n\nexport const warnDeprecation = createWarnDeprecation(PREFIX);\n\n// Log should only be printed in dev mode.\nexport const log = (...args: any[]) => {\n if (isDevMode()) {\n console.log(PREFIX, ...args);\n }\n};\n\nexport function setWarnDeprecation(enabled: boolean) {\n logWarnDeprecation = enabled;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceCssPixel","helpers.isString","helpers.coerceArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-util.mjs","sources":["../../../src/util/date/functions.ts","../../../src/util/helpers/helpers.ts","../../../src/util/date/tiny-date.ts","../../../src/util/dom.ts","../../../src/util/immutable.ts","../../../src/util/references.ts","../../../src/util/ng.ts","../../../src/util/logger/logger.ts","../../../src/util/ngx-tethys-util.ts"],"sourcesContent":["import * as dateFns from 'date-fns';\nimport * as dateFnsLocales from 'date-fns/locale';\nimport { ThyLocaleType } from 'ngx-tethys/i18n';\n\nexport const differenceInCalendarDays = dateFns.differenceInCalendarDays;\nexport const differenceInCalendarMonths = dateFns.differenceInCalendarMonths;\nexport const differenceInCalendarYears = dateFns.differenceInCalendarYears;\nexport const differenceInCalendarQuarters = dateFns.differenceInCalendarQuarters;\nexport const differenceInWeeks = dateFns.differenceInWeeks;\nexport const differenceInHours = dateFns.differenceInHours;\nexport const differenceInMinutes = dateFns.differenceInMinutes;\nexport const differenceInSeconds = dateFns.differenceInSeconds;\nexport const differenceInDays = dateFns.differenceInDays;\nexport const differenceInMonths = dateFns.differenceInMonths;\nexport const differenceInYears = dateFns.differenceInYears;\nexport const isSameDay = dateFns.isSameDay;\nexport const isSameHour = dateFns.isSameHour;\nexport const isSameMinute = dateFns.isSameMinute;\nexport const isSameMonth = dateFns.isSameMonth;\nexport const isSameSecond = dateFns.isSameSecond;\nexport const isSameYear = dateFns.isSameYear;\nexport const isSameQuarter = dateFns.isSameQuarter;\nexport const isToday = dateFns.isToday;\nexport const isTomorrow = dateFns.isTomorrow;\nexport const isValid = dateFns.isValid;\nexport const isAfter = dateFns.isAfter;\nexport const setYear = dateFns.setYear;\nexport const startOfMonth = dateFns.startOfMonth;\nexport const startOfWeek = dateFns.startOfWeek;\nexport const addMonths = dateFns.addMonths;\nexport const addYears = dateFns.addYears;\nexport const setDay = dateFns.setDay;\nexport const setDate = dateFns.setDate;\nexport const setMonth = dateFns.setMonth;\nexport const setQuarter = dateFns.setQuarter;\nexport const getUnixTime = dateFns.getUnixTime;\nexport const startOfDay = dateFns.startOfDay;\nexport const endOfDay = dateFns.endOfDay;\nexport const fromUnixTime = dateFns.fromUnixTime;\nexport const isWeekend = dateFns.isWeekend;\nexport const getTime = dateFns.getTime;\nexport const getDay = dateFns.getDay;\nexport const getWeek = dateFns.getWeek;\nexport const getMonth = dateFns.getMonth;\nexport const getYear = dateFns.getYear;\nexport const getDate = dateFns.getDate;\nexport const getHours = dateFns.getHours;\nexport const getMinutes = dateFns.getMinutes;\nexport const getSeconds = dateFns.getSeconds;\nexport const getDaysInMonth = dateFns.getDaysInMonth;\nexport const addSeconds = dateFns.addSeconds;\nexport const addMinutes = dateFns.addMinutes;\nexport const addHours = dateFns.addHours;\nexport const addWeeks = dateFns.addWeeks;\nexport const addQuarters = dateFns.addQuarters;\nexport const startOfQuarter = dateFns.startOfQuarter;\nexport const startOfYear = dateFns.startOfYear;\nexport const startOfMinute = dateFns.startOfMinute;\nexport const startOfHour = dateFns.startOfHour;\nexport const startOfISOWeek = dateFns.startOfISOWeek;\nexport const endOfMinute = dateFns.endOfMinute;\nexport const endOfHour = dateFns.endOfHour;\nexport const endOfWeek = dateFns.endOfWeek;\nexport const endOfMonth = dateFns.endOfMonth;\nexport const endOfQuarter = dateFns.endOfQuarter;\nexport const endOfYear = dateFns.endOfYear;\nexport const endOfISOWeek = dateFns.endOfISOWeek;\nexport const format = dateFns.format;\nexport const getQuarter = dateFns.getQuarter;\nexport const addDays = dateFns.addDays;\nexport const subMilliseconds = dateFns.subMilliseconds;\nexport const subSeconds = dateFns.subSeconds;\nexport const subMinutes = dateFns.subMinutes;\nexport const subHours = dateFns.subHours;\nexport const subDays = dateFns.subDays;\nexport const subBusinessDays = dateFns.subBusinessDays;\nexport const subWeeks = dateFns.subWeeks;\nexport const subMonths = dateFns.subMonths;\nexport const subQuarters = dateFns.subQuarters;\nexport const subYears = dateFns.subYears;\nexport const eachDayOfInterval = dateFns.eachDayOfInterval;\nexport const eachWeekOfInterval = dateFns.eachWeekOfInterval;\nexport const eachMonthOfInterval = dateFns.eachMonthOfInterval;\nexport const eachYearOfInterval = dateFns.eachYearOfInterval;\nexport const eachHourOfInterval = dateFns.eachHourOfInterval;\nexport const setDefaultOptions = dateFns.setDefaultOptions;\nexport const formatDistance = dateFns.formatDistance;\n\nexport const getDateFnsLocale = (locale: string) => {\n switch (locale) {\n case ThyLocaleType.zhHans:\n return dateFnsLocales[`zhCN`];\n case ThyLocaleType.zhHant:\n return dateFnsLocales[`zhTW`];\n case ThyLocaleType.enUs:\n return dateFnsLocales[`enUS`];\n case ThyLocaleType.jaJp:\n return dateFnsLocales[`ja`];\n case ThyLocaleType.deDe:\n return dateFnsLocales[`de`];\n default:\n return dateFnsLocales[`zhCN`];\n }\n};\n","import { _isNumberValue, coerceCssPixelValue as coerceCssPixel } from '@angular/cdk/coercion';\nimport { ElementRef, TemplateRef } from '@angular/core';\n\nexport function isUndefined(value: any): value is undefined {\n return value === undefined;\n}\n\nexport function isNull(value: any): value is null {\n return value === null;\n}\n\nexport function isUndefinedOrNull(value: any): value is undefined | null {\n return isUndefined(value) || isNull(value);\n}\n\nexport function isArray<T = any>(value: any): value is Array<T> {\n return value && baseGetTag(value) === '[object Array]';\n}\n\nexport function isEmpty(value?: any): boolean {\n return !(isArray(value) && value.length > 0);\n}\n\nexport function isString(value?: any): value is string {\n return typeof value == 'string' || (!isArray(value) && isObjectLike(value) && baseGetTag(value) === '[object String]');\n}\n\nfunction isObjectLike(value: any): value is object {\n return value !== null && typeof value === 'object';\n}\n\nfunction baseGetTag(value: any) {\n const objectProto = Object.prototype;\n const hasOwnProperty = objectProto.hasOwnProperty;\n const toString = objectProto.toString;\n const symToStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : undefined;\n\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n if (!(symToStringTag && symToStringTag in Object(value))) {\n return toString.call(value);\n }\n const isOwn = hasOwnProperty.call(value, symToStringTag);\n const tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n } catch (e) {}\n\n const result = toString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && baseGetTag(value) === '[object Number]');\n}\n\nexport function isObject(value: any): value is object {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n const type = typeof value;\n return !!value && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(value: any): value is Function {\n const type = typeof value;\n return !!value && type === 'function';\n}\n\nexport function isDate(value: any): value is Date {\n const type = typeof value;\n return !!value && type === 'object' && !!value.getTime;\n}\n\nexport function coerceArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nexport function get(object: any, path: string, defaultValue?: any): any {\n const paths = path.split('.');\n let result = object[paths.shift()];\n while (result && paths.length) {\n result = result[paths.shift()];\n }\n return result === undefined ? defaultValue : result;\n}\n\nexport function set(object: any, path: string, value: any): void {\n if (object == null) {\n return object;\n }\n const paths = path.split('.');\n let index = -1;\n const length = paths.length;\n const lastIndex = length - 1;\n let nested = object;\n while (nested !== null && ++index < length) {\n const key = paths[index];\n if (isObject(nested)) {\n if (index === lastIndex) {\n nested[key] = value;\n nested = nested[key];\n break;\n } else {\n if (nested[key] == null) {\n nested[key] = {};\n }\n }\n }\n nested = nested[key];\n }\n return object;\n}\n\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && baseGetTag(value) === '[object Boolean]');\n}\n\nexport function isClass(value: any): value is Function {\n return isFunction(value) && /^\\s*class\\s+/.test(value.toString());\n}\n\nexport function htmlElementIsEmpty(element: HTMLElement) {\n if (element && element.childNodes) {\n const nodes = element.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).outerHTML.toString().trim().length !== 0) {\n return false;\n } else if (node.nodeType === Node.TEXT_NODE && node.textContent.toString().trim().length !== 0) {\n return false;\n } else if (node.nodeType !== Node.COMMENT_NODE) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport function hexToRgb(hexValue: string, alpha?: number): string {\n const rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const hex = hexValue.replace(rgx, (m: any, r: any, g: any, b: any) => r + r + g + g + b + b);\n const rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!rgb) return;\n const resultR = parseInt(rgb[1], 16);\n const resultG = parseInt(rgb[2], 16);\n const resultB = parseInt(rgb[3], 16);\n if (!isUndefinedOrNull(alpha)) {\n return `rgba(${resultR}, ${resultG}, ${resultB}, ${alpha})`;\n } else {\n return `rgb(${resultR}, ${resultG}, ${resultB})`;\n }\n}\n\nexport function dateToUnixTimestamp(date: Date | number): number {\n if (isNumber(date)) {\n if (date.toString().length === 10) {\n return date as number;\n } else {\n return parseInt(((date as number) / 1000).toFixed(0), 10);\n }\n } else {\n return parseInt(((date as Date).getTime() / 1000).toFixed(0), 10);\n }\n}\n\nexport function clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function keyBy<T>(array: T[], key: T extends object ? keyof T : never): { [key: string]: T } {\n const result: { [key: string]: T } = {};\n array.forEach(item => {\n const keyValue = item[key];\n (result as any)[keyValue] = item;\n });\n return result;\n}\n\nexport function indexKeyBy<T>(array: T[], key: T extends object ? keyof T : never): { [key: string]: number } {\n const result: { [key: string]: number } = {};\n array.forEach((item, index) => {\n const keyValue = item[key];\n (result as any)[keyValue] = index;\n });\n return result;\n}\n\nfunction upperFirst(string: string): string {\n return string.slice(0, 1).toUpperCase() + string.slice(1);\n}\n\nexport function camelCase(values: string[]): string {\n if (isArray(values)) {\n return values.reduce((result, word, index) => {\n word = word.toLowerCase();\n return result + (index ? upperFirst(word) : word);\n }, '');\n } else {\n return;\n }\n}\n\nexport function generateRandomStr() {\n return Math.random().toString(36).substring(2);\n}\n\nexport function isTemplateRef<C = any>(value: any): value is TemplateRef<C> {\n return value instanceof TemplateRef;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement;\n}\n\nexport function isElementRef(value: any): value is ElementRef {\n return value instanceof ElementRef;\n}\n\n/**\n * fix angular cdk's coerceBooleanProperty will transform 0 to true\n */\nexport function coerceBooleanProperty(value: boolean | string | number): boolean {\n if (value === '' || (value && value !== 'false')) {\n return true;\n } else {\n return false;\n }\n}\n\nexport type FunctionProp<T> = (...args: any[]) => T;\n\n/**\n * @deprecated Please use Angular cdk's coerceNumberProperty instead\n */\nexport function coerceNumberValue(value: number | string): number;\n/**\n * @deprecated Please use Angular cdk's coerceNumberProperty instead\n */\nexport function coerceNumberValue<D>(value: number | string, fallback: D): number | D;\n/**\n * @deprecated Please use Angular cdk's coerceNumberProperty instead\n */\nexport function coerceNumberValue(value: number | string, fallbackValue: number = 0): number {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n\n/**\n * @deprecated Please use Angular cdk's coerceCssPixelValue instead\n */\nexport function coerceCssPixelValue(value: number | string): string {\n value = _isNumberValue(value) ? Number(value) : value;\n return coerceCssPixel(value);\n}\n\nexport function valueFunctionProp<T>(prop: FunctionProp<T>, ...args: any[]): T {\n return typeof prop === 'function' ? prop(...args) : prop;\n}\n\nexport function shallowEqual(objA?: Record<string, any>, objB?: Record<string, any>): boolean {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n for (let idx = 0; idx < keysA.length; idx++) {\n const key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function concatArray<TItem>(items: TItem | TItem[], originalItems: TItem | TItem[] = []): TItem[] {\n let _originalItems: TItem[] = [];\n if (!originalItems) {\n _originalItems = [];\n } else {\n _originalItems = coerceArray(originalItems);\n }\n if (items) {\n if (isArray(items)) {\n return [..._originalItems, ...items];\n } else {\n return [..._originalItems, items];\n }\n } else {\n return _originalItems;\n }\n}\n\nexport function humanizeBytes(bytes: number, noSpace = false, fractionDigits = 1): string {\n if (bytes === 0) {\n return '0 Byte';\n }\n\n const k = 1024;\n const sizes: string[] = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const i: number = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(fractionDigits)) + (noSpace ? '' : ' ') + sizes[i];\n}\n\nexport function isFloat(value: string): boolean {\n if (!value) {\n return false;\n }\n\n return /^[-+]?([0-9]+([.][0-9]*)?|[.][0-9]+)([Ee][-+]?[0-9]+)?$/.test(value);\n}\n\nexport function hasTimeInStringDate(dateString: string): boolean {\n const standardFormat = /\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}\\s+\\d{1,2}:\\d{1,2}/;\n const chineseFormat = /\\d{4}年\\d{1,2}月\\d{1,2}日?\\s+\\d{1,2}[时:]\\d{1,2}[分]?/;\n const reverseEnglishFormat = /\\d{1,2}\\s+[A-Za-z]{3,}\\s+\\d{4}\\s+\\d{1,2}:\\d{1,2}/;\n const englishFormat = /[A-Za-z]{3,}\\s+\\d{1,2},?\\s+\\d{4}\\s+\\d{1,2}:\\d{1,2}/;\n const isoFormat = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/;\n\n return (\n standardFormat.test(dateString) ||\n chineseFormat.test(dateString) ||\n reverseEnglishFormat.test(dateString) ||\n englishFormat.test(dateString) ||\n isoFormat.test(dateString)\n );\n}\n","import { TZDate } from '@date-fns/tz';\nimport { FirstWeekContainsDate, Locale, setHours, setMinutes, setSeconds } from 'date-fns';\nimport { fromZonedTime } from 'date-fns-tz';\nimport { getDefaultLocaleId } from 'ngx-tethys/i18n';\nimport { hasTimeInStringDate } from '../helpers';\nimport {\n addDays,\n addHours,\n addMinutes,\n addMonths,\n addQuarters,\n addSeconds,\n addWeeks,\n addYears,\n differenceInCalendarDays,\n differenceInCalendarMonths,\n differenceInCalendarQuarters,\n differenceInCalendarYears,\n differenceInDays,\n differenceInHours,\n differenceInMinutes,\n differenceInSeconds,\n differenceInWeeks,\n endOfDay,\n endOfISOWeek,\n endOfMonth,\n endOfQuarter,\n endOfWeek,\n endOfYear,\n format,\n fromUnixTime,\n getDateFnsLocale,\n getDaysInMonth,\n getQuarter,\n getUnixTime,\n getWeek,\n isSameDay,\n isSameHour,\n isSameMinute,\n isSameMonth,\n isSameQuarter,\n isSameSecond,\n isSameYear,\n isToday,\n isTomorrow,\n isValid,\n isWeekend,\n setDay,\n setDefaultOptions,\n setMonth,\n setQuarter,\n setYear,\n startOfDay,\n startOfISOWeek,\n startOfMonth,\n startOfQuarter,\n startOfWeek,\n startOfYear,\n subDays,\n subWeeks\n} from './functions';\n\nexport type TinyDateCompareGrain = 'decade' | 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n\nexport type WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type TinyDateType = TinyDate | Date | null;\n\nexport function sortRangeValue(rangeValue: TinyDate[]): TinyDate[] {\n if (Array.isArray(rangeValue)) {\n const [start, end] = rangeValue;\n return start && end && start.isAfterSecond(end) ? [end, start] : [start, end];\n }\n return rangeValue;\n}\n\nexport const DEFAULT_TIMEZONE = 'Asia/Shanghai';\n\nexport class TinyDate implements Record<string, any> {\n nativeDate: Date;\n\n private useTimeZone: string;\n\n private static locale: string = getDefaultLocaleId();\n\n protected static dateFnsLocale: Locale = getDateFnsLocale(TinyDate.locale);\n\n protected static defaultTimeZone: string = DEFAULT_TIMEZONE;\n\n constructor(date?: Date | string | number, zone?: string) {\n setDefaultOptions({ locale: TinyDate.dateFnsLocale });\n this.useTimeZone = zone || TinyDate.defaultTimeZone;\n if (date) {\n if (date instanceof Date) {\n this.nativeDate = TinyDate.utcToZonedTime(date, this.useTimeZone);\n } else if (typeof date === 'string') {\n if (hasTimeInStringDate(date)) {\n // If the string contains time, you need to convert the time to UTC time before passing it to TZDate\n const originTime = new Date(date);\n const zoneTime = TZDate.tz(this.useTimeZone, originTime);\n const utcDate = fromZonedTime(zoneTime, this.useTimeZone).toISOString();\n this.nativeDate = new TZDate(utcDate, this.useTimeZone);\n } else {\n this.nativeDate = new TZDate(date, this.useTimeZone);\n }\n } else if (typeof date === 'number') {\n this.nativeDate = new TZDate(date, this.useTimeZone);\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw new Error(\n `The input date type is not supported expect Date | string | number | { date: number; with_time: 0 | 1}, actual ${JSON.stringify(\n date\n )}`\n );\n }\n } else {\n this.nativeDate = new TZDate(Date.now(), this.useTimeZone);\n }\n }\n\n static setDefaultLocale(locale: string) {\n TinyDate.locale = locale;\n TinyDate.dateFnsLocale = getDateFnsLocale(locale);\n return setDefaultOptions({ locale: TinyDate.dateFnsLocale });\n }\n\n static getDefaultLocale(): { locale: string; dateFnsLocale: Locale } {\n return { locale: TinyDate.locale, dateFnsLocale: TinyDate.dateFnsLocale };\n }\n\n static setDefaultTimeZone(zone: string) {\n TinyDate.defaultTimeZone = zone ?? DEFAULT_TIMEZONE;\n }\n\n static getDefaultTimeZone(): string {\n return TinyDate.defaultTimeZone;\n }\n\n static utcToZonedTime(value: Date | number, timeZone?: string): Date {\n return TZDate.tz(timeZone || TinyDate.defaultTimeZone, value as any);\n }\n\n static createDateInTimeZone(\n year: number,\n month: number,\n day: number,\n hours: number,\n minutes: number,\n seconds: number,\n timeZone?: string\n ): Date {\n return new TZDate(year, month, day, hours, minutes, seconds, timeZone || TinyDate.defaultTimeZone);\n }\n\n static fromUnixTime(unixTime: number, timeZone?: string): TinyDate {\n return new TinyDate(fromUnixTime(unixTime), timeZone || TinyDate.defaultTimeZone);\n }\n\n // get\n getTime(): number {\n return this.nativeDate.getTime();\n }\n\n getDate(): number {\n return this.nativeDate.getDate();\n }\n\n getYear(): number {\n return this.nativeDate.getFullYear();\n }\n\n getQuarter(): number {\n return getQuarter(this.nativeDate);\n }\n\n getMonth(): number {\n return this.nativeDate.getMonth();\n }\n\n getFullYear(): number {\n return this.nativeDate.getFullYear();\n }\n\n getWeek(options: { locale?: Locale; weekStartsOn?: WeekDayIndex } = { weekStartsOn: 1 }): number {\n return getWeek(this.nativeDate, options);\n }\n\n getDay(): number {\n return this.nativeDate.getDay();\n }\n\n getHours(): number {\n return this.nativeDate.getHours();\n }\n\n getMinutes(): number {\n return this.nativeDate.getMinutes();\n }\n\n getSeconds(): number {\n return this.nativeDate.getSeconds();\n }\n\n getMilliseconds(): number {\n return this.nativeDate.getMilliseconds();\n }\n\n getDaysInMonth() {\n return getDaysInMonth(this.nativeDate);\n }\n\n getDaysInQuarter() {\n return differenceInCalendarDays(this.endOfQuarter().addSeconds(1).nativeDate, this.startOfQuarter().nativeDate);\n }\n\n // set\n setDate(amount: number): TinyDate {\n return new TinyDate(this.nativeDate.setDate(amount), this.useTimeZone);\n }\n\n setHms(hour: number, minute: number, second: number): TinyDate {\n return new TinyDate(this.nativeDate?.setHours(hour, minute, second), this.useTimeZone);\n }\n\n setYear(year: number): TinyDate {\n return new TinyDate(setYear(this.nativeDate, year), this.useTimeZone);\n }\n\n setMonth(month: number): TinyDate {\n return new TinyDate(setMonth(this.nativeDate, month), this.useTimeZone);\n }\n\n setQuarter(quarter: number): TinyDate {\n return new TinyDate(setQuarter(this.nativeDate, quarter), this.useTimeZone);\n }\n\n setDay(day: number, options?: { weekStartsOn: WeekDayIndex }): TinyDate {\n return new TinyDate(setDay(this.nativeDate, day, options), this.useTimeZone);\n }\n\n setHours(hours: number): TinyDate {\n return new TinyDate(setHours(this.nativeDate, hours), this.useTimeZone);\n }\n\n setMinutes(minutes: number): TinyDate {\n return new TinyDate(setMinutes(this.nativeDate, minutes), this.useTimeZone);\n }\n\n setSeconds(seconds: number): TinyDate {\n return new TinyDate(setSeconds(this.nativeDate, seconds), this.useTimeZone);\n }\n\n // add\n addYears(amount: number): TinyDate {\n return new TinyDate(addYears(this.nativeDate, amount), this.useTimeZone);\n }\n\n addQuarters(amount: number): TinyDate {\n return new TinyDate(addQuarters(this.nativeDate, amount), this.useTimeZone);\n }\n\n addMonths(amount: number): TinyDate {\n return new TinyDate(addMonths(this.nativeDate, amount), this.useTimeZone);\n }\n\n addWeeks(amount: number): TinyDate {\n return new TinyDate(addWeeks(this.nativeDate, amount), this.useTimeZone);\n }\n\n addDays(amount: number): TinyDate {\n return new TinyDate(addDays(this.nativeDate, amount), this.useTimeZone);\n }\n addHours(amount: number): TinyDate {\n return new TinyDate(addHours(this.nativeDate, amount), this.useTimeZone);\n }\n\n addSeconds(amount: number): TinyDate {\n return new TinyDate(addSeconds(this.nativeDate, amount), this.useTimeZone);\n }\n\n addMinutes(amount: number): TinyDate {\n return new TinyDate(addMinutes(this.nativeDate, amount), this.useTimeZone);\n }\n\n // isSame\n\n isSame(date: TinyDateType, grain: TinyDateCompareGrain = 'day'): boolean {\n let fn;\n switch (grain) {\n case 'decade':\n fn = (pre: Date, next: Date) => Math.abs(pre.getFullYear() - next.getFullYear()) < 11;\n break;\n case 'year':\n fn = isSameYear;\n break;\n case 'month':\n fn = isSameMonth;\n break;\n case 'quarter':\n fn = isSameQuarter;\n break;\n case 'day':\n fn = isSameDay;\n break;\n case 'hour':\n fn = isSameHour;\n break;\n case 'minute':\n fn = isSameMinute;\n break;\n case 'second':\n fn = isSameSecond;\n break;\n default:\n fn = isSameDay;\n break;\n }\n return fn(this.nativeDate, this.toNativeDate(date));\n }\n\n isSameYear(date: TinyDateType): boolean {\n return this.isSame(date, 'year');\n }\n\n isSameMonth(date: TinyDateType): boolean {\n return this.isSame(date, 'month');\n }\n\n isSameQuarter(date: TinyDateType): boolean {\n return this.isSame(date, 'quarter');\n }\n\n isSameDay(date: TinyDateType): boolean {\n return this.isSame(date, 'day');\n }\n\n isSameHour(date: TinyDateType): boolean {\n return this.isSame(date, 'hour');\n }\n\n isSameMinute(date: TinyDateType): boolean {\n return this.isSame(date, 'minute');\n }\n\n isSameSecond(date: TinyDateType): boolean {\n return this.isSame(date, 'second');\n }\n\n // isBefore and isAfter\n isBeforeYear(date: TinyDateType): boolean {\n return this.compare(date, 'year');\n }\n\n isBeforeQuarter(date: TinyDate): boolean {\n return this.compare(date, 'quarter');\n }\n\n isBeforeMonth(date: TinyDateType): boolean {\n return this.compare(date, 'month');\n }\n\n isBeforeWeek(date: TinyDateType): boolean {\n return this.compare(date, 'week');\n }\n\n isBeforeDay(date: TinyDateType): boolean {\n return this.compare(date, 'day');\n }\n\n isBeforeHour(date: TinyDateType): boolean {\n return this.compare(date, 'hour');\n }\n\n isBeforeMinute(date: TinyDateType): boolean {\n return this.compare(date, 'minute');\n }\n\n isBeforeSecond(date: TinyDateType): boolean {\n return this.compare(date, 'second');\n }\n\n isAfterYear(date: TinyDateType): boolean {\n return this.compare(date, 'year', false);\n }\n\n isAfterQuarter(date: TinyDate): boolean {\n return this.compare(date, 'quarter', false);\n }\n\n isAfterMonth(date: TinyDateType): boolean {\n return this.compare(date, 'month', false);\n }\n\n isAfterWeek(date: TinyDateType): boolean {\n return this.compare(date, 'week', false);\n }\n\n isAfterDay(date: TinyDateType): boolean {\n return this.compare(date, 'day', false);\n }\n\n isAfterHour(date: TinyDateType): boolean {\n return this.compare(date, 'hour', false);\n }\n\n isAfterMinute(date: TinyDateType): boolean {\n return this.compare(date, 'minute', false);\n }\n\n isAfterSecond(date: TinyDateType): boolean {\n return this.compare(date, 'second', false);\n }\n\n // is\n isWeekend(): boolean {\n return isWeekend(this.nativeDate);\n }\n\n isToday(): boolean {\n return isToday(this.nativeDate);\n }\n\n isTomorrow(): boolean {\n return isTomorrow(this.nativeDate);\n }\n\n isValid(): boolean {\n return isValid(this.nativeDate);\n }\n\n // startOf and endOf\n startOfYear(): TinyDate {\n return new TinyDate(startOfYear(this.nativeDate), this.useTimeZone);\n }\n\n startOfQuarter(): TinyDate {\n return new TinyDate(startOfQuarter(this.nativeDate), this.useTimeZone);\n }\n\n startOfMonth(): TinyDate {\n return new TinyDate(startOfMonth(this.nativeDate), this.useTimeZone);\n }\n\n startOfWeek(options?: { locale?: Locale; weekStartsOn?: WeekDayIndex }): TinyDate {\n return new TinyDate(startOfWeek(this.nativeDate, options), this.useTimeZone);\n }\n\n startOfDay(): TinyDate {\n return new TinyDate(startOfDay(this.nativeDate), this.useTimeZone);\n }\n\n endOfYear(): TinyDate {\n return new TinyDate(endOfYear(this.nativeDate), this.useTimeZone);\n }\n\n endOfQuarter(): TinyDate {\n return new TinyDate(endOfQuarter(this.nativeDate), this.useTimeZone);\n }\n\n endOfMonth(): TinyDate {\n return new TinyDate(endOfMonth(this.nativeDate), this.useTimeZone);\n }\n\n endOfWeek(options?: { locale?: Locale; weekStartsOn?: WeekDayIndex }): TinyDate {\n return new TinyDate(endOfWeek(this.nativeDate, options), this.useTimeZone);\n }\n\n endOfDay(): TinyDate {\n return new TinyDate(endOfDay(this.nativeDate), this.useTimeZone);\n }\n\n // other\n format(\n mat: string,\n options?: {\n locale?: Locale;\n weekStartsOn?: WeekDayIndex;\n firstWeekContainsDate?: FirstWeekContainsDate;\n useAdditionalWeekYearTokens?: boolean;\n useAdditionalDayOfYearTokens?: boolean;\n }\n ) {\n return format(this.nativeDate, mat, options);\n }\n\n calendarStart(options?: { weekStartsOn: WeekDayIndex | undefined }): TinyDate {\n return new TinyDate(startOfWeek(startOfMonth(this.nativeDate), options), this.useTimeZone);\n }\n\n clone(): TinyDate {\n return new TinyDate(this.nativeDate, this.useTimeZone);\n }\n\n getUnixTime(): number {\n return getUnixTime(this.nativeDate);\n }\n\n compare(date: TinyDateType, grain: TinyDateCompareGrain = 'day', isBefore: boolean = true): boolean {\n if (date === null) {\n return false;\n }\n let fn;\n switch (grain) {\n case 'year':\n fn = differenceInCalendarYears;\n break;\n case 'quarter':\n fn = differenceInCalendarQuarters;\n break;\n case 'month':\n fn = differenceInCalendarMonths;\n break;\n case 'day':\n fn = differenceInCalendarDays;\n break;\n case 'week':\n fn = differenceInWeeks;\n break;\n case 'hour':\n fn = differenceInHours;\n break;\n case 'minute':\n fn = differenceInMinutes;\n break;\n case 'second':\n fn = differenceInSeconds;\n break;\n default:\n fn = differenceInCalendarDays;\n break;\n }\n return isBefore ? fn(this.nativeDate, this.toNativeDate(date)) < 0 : fn(this.nativeDate, this.toNativeDate(date)) > 0;\n }\n\n private toNativeDate(date: any): Date {\n return date instanceof TinyDate ? date.nativeDate : date;\n }\n\n startOfISOWeek(): TinyDate {\n return new TinyDate(startOfISOWeek(this.nativeDate), this.useTimeZone);\n }\n\n endOfISOWeek(): TinyDate {\n return new TinyDate(endOfISOWeek(this.nativeDate), this.useTimeZone);\n }\n\n differenceInDays(date: Date): number {\n return differenceInDays(this.nativeDate, date);\n }\n\n differenceInHours(date: Date): number {\n return differenceInHours(this.nativeDate, date);\n }\n\n subWeeks(amount: number): TinyDate {\n return new TinyDate(subWeeks(this.nativeDate, amount), this.useTimeZone);\n }\n\n subDays(amount: number): TinyDate {\n return new TinyDate(subDays(this.nativeDate, amount), this.useTimeZone);\n }\n}\n","import { ElementRef } from '@angular/core';\nimport * as helpers from './helpers';\n\nconst proto = Element.prototype;\nconst vendor =\n proto.matches ||\n proto['matchesSelector'] ||\n proto['webkitMatchesSelector'] ||\n proto['mozMatchesSelector'] ||\n proto['msMatchesSelector'] ||\n proto['oMatchesSelector'];\n\nexport function fallbackMatches(el: Element | Node, selector: string) {\n const nodes = el.parentNode.querySelectorAll(selector);\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i] === el) {\n return true;\n }\n }\n return false;\n}\n/**\n * Match `el` to `selector`.\n */\nexport function match(el: Element | Node, selector: string) {\n if (vendor) {\n return vendor.call(el, selector);\n }\n return fallbackMatches(el, selector);\n}\n\nexport function isDocument(element: any): element is Document {\n return (\n (typeof element !== 'undefined' && element instanceof Document) || (element.nodeType && element.nodeType === element.DOCUMENT_NODE)\n );\n}\n\nexport function isElement(element: any) {\n return (\n (typeof HTMLElement !== 'undefined' && element instanceof HTMLElement) ||\n (element && element.nodeType && element.nodeType === element.ELEMENT_NODE)\n );\n}\n\nexport function getWindow(elem: any) {\n return elem != null && elem === elem.window ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\nexport function getElementOffset(elem: HTMLElement) {\n let docElem, win, rect, doc;\n\n if (!elem) {\n return;\n }\n // Support: IE<=11+\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!elem.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n rect = elem.getBoundingClientRect();\n\n // Make sure element is not hidden (display: none)\n if (rect.width || rect.height) {\n doc = elem.ownerDocument;\n win = getWindow(doc);\n docElem = doc.documentElement;\n\n return {\n top: rect.top + win.pageYOffset - docElem.clientTop,\n left: rect.left + win.pageXOffset - docElem.clientLeft,\n height: rect.height,\n width: rect.width\n };\n }\n return rect;\n}\n\nexport function getOffset(element: HTMLElement, container: HTMLElement | Window): { left: number; top: number } | null {\n if (!element || !element.getClientRects().length) {\n return null;\n }\n const rect = element.getBoundingClientRect();\n\n if (rect.width || rect.height) {\n if (container === window) {\n const documentElement = element.ownerDocument!.documentElement!;\n return {\n top: rect.top - documentElement.clientTop,\n left: rect.left - documentElement.clientLeft\n };\n }\n const containerRect = (container as HTMLElement).getBoundingClientRect();\n return {\n top: rect.top - containerRect.top,\n left: rect.left - containerRect.left\n };\n }\n\n return rect;\n}\n\nexport function getClientSize(): { width: number; height: number } {\n const width = document.documentElement.clientWidth;\n const height = window.innerHeight || document.documentElement.clientHeight;\n return {\n width,\n height\n };\n}\n\nexport type ElementSelector = HTMLElement | ElementRef | string;\n\nexport function getHTMLElementBySelector(selector: ElementSelector, defaultElementRef: ElementRef): HTMLElement {\n if (!selector) {\n return defaultElementRef.nativeElement;\n } else if (selector === 'body') {\n return document.body;\n } else if (helpers.isString(selector)) {\n return document.querySelector(selector as string);\n } else if (selector instanceof ElementRef) {\n return selector.nativeElement;\n } else {\n return selector as HTMLElement;\n }\n}\n\nexport function isInputOrTextarea(element: HTMLElement) {\n return ['INPUT', 'TEXTAREA'].indexOf(element.nodeName) >= 0;\n}\n\nexport function isWindow(container: Element | Window): container is Window {\n return typeof window !== 'undefined' && container === window;\n}\n\nexport interface SimpleRect {\n top: number;\n left: number;\n width?: number;\n height?: number;\n bottom?: number;\n}\n\nexport function getContainerRect(container: Element | Window): SimpleRect {\n return !isWindow(container)\n ? container.getBoundingClientRect()\n : {\n top: 0,\n left: 0,\n bottom: 0\n };\n}\n\nexport function getStyleAsText(styles?: any): string {\n if (!styles) {\n return '';\n }\n\n return Object.keys(styles)\n .map(key => {\n const val = styles[key];\n return `${key}:${typeof val === 'string' ? val : val + 'px'}`;\n })\n .join(';');\n}\n\nexport function isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n return event.type.startsWith('touch');\n}\n\n/**\n * Assert wrapper element whether only contains icon.\n */\nexport function assertIconOnly(wrapperElement: Element): boolean {\n const listOfNode = Array.from(wrapperElement.childNodes);\n const iconCount = listOfNode.filter(node => ['THY-ICON', 'I'].includes(node.nodeName)).length;\n const noText = listOfNode.every(node => node.nodeName !== '#text');\n const noSpan = listOfNode.every(node => node.nodeName !== 'SPAN');\n const isIconOnly = noSpan && noText && iconCount >= 1;\n return isIconOnly;\n}\n\n/**\n *\n * calc position x,y point\n *\n * CASE (width <= clientWidth && height <= clientHeight):\n *\n * ------------- clientWidth -------------\n * | |\n * | ------ width ------ |\n * | | | |\n * | | | |\n * client height | |\n * Height | | |\n * | | | |\n * | ------------------- |\n * | |\n * | |\n * ---------------------------------------\n * fixedPosition = { x: 0, y: 0 }\n *\n *\n *\n * CASE (width > clientWidth || height > clientHeight):\n *\n * ------------- clientWidth -------------\n * | | |\n * | top |\n * | | |\n * |--left--|--------------- width -----------------\n * | | |\n * client | |\n * Height | |\n * | | |\n * | | |\n * | height |\n * | | |\n * ---------| |\n * | |\n * | |\n * | |\n * ----------------------------------------\n *\n *\n * - left || top > 0\n * left -> 0 || top -> 0\n *\n * - (left + width) < clientWidth || (top + height) < clientHeight\n * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight\n *\n * DEFAULT:\n * - hold position\n *\n */\nexport function getFitContentPosition(params: {\n width: number;\n height: number;\n left: number;\n top: number;\n clientWidth: number;\n clientHeight: number;\n}): { x?: number; y?: number } {\n let fixPos = {};\n\n if (params.width <= params.clientWidth && params.height <= params.clientHeight) {\n fixPos = {\n x: 0,\n y: 0\n };\n }\n\n if (params.width > params.clientWidth || params.height > params.clientHeight) {\n fixPos = {\n x: fitPoint(params.left, params.width, params.clientWidth),\n y: fitPoint(params.top, params.height, params.clientHeight)\n };\n }\n\n return fixPos;\n}\n\nfunction fitPoint(start: number, size: number, clientSize: number): number | null {\n const startAddSize = start + size;\n const offsetStart = (size - clientSize) / 2;\n let distance: number | null = null;\n\n if (size > clientSize) {\n if (start > 0) {\n distance = offsetStart;\n }\n if (start < 0 && startAddSize < clientSize) {\n distance = -offsetStart;\n }\n } else {\n if (start < 0 || startAddSize > clientSize) {\n distance = start < 0 ? offsetStart : -offsetStart;\n }\n }\n\n return distance;\n}\n\nexport function elementMatchClosest(element: HTMLElement, selectors: string | string[]) {\n let matched = false;\n if (element && element.closest) {\n matched = !!helpers.coerceArray(selectors).find(selector => {\n return element.closest(selector);\n });\n }\n return matched;\n}\n","import { Id } from 'ngx-tethys/types';\nimport { coerceArray, isFunction, isUndefinedOrNull } from './helpers';\n\nexport interface EntityAddOptions {\n prepend?: boolean;\n\n afterId?: Id;\n}\n\nexport interface EntityMoveOptions {\n afterId?: Id;\n\n toIndex?: number;\n}\n\nexport interface ProducerOptions {\n idKey?: string;\n}\n\nexport class Producer<TEntity> {\n private idKey = '_id';\n\n private entities: TEntity[];\n\n constructor(entities: TEntity[], options?: ProducerOptions) {\n this.entities = entities || [];\n if (options && options.idKey) {\n this.idKey = options.idKey;\n }\n }\n\n /**\n * Add an entity or entities.\n *\n * @example\n * produce([users]).add(Entity);\n * produce([users]).add([Entity, Entity]);\n * produce([users]).add(Entity, { prepend: true });\n * produce([users]).add(Entity, { afterId: '' });\n */\n add(entity: TEntity | TEntity[], addOptions?: EntityAddOptions): TEntity[] {\n const addEntities = coerceArray(entity);\n if (addEntities.length === 0) {\n return this.entities;\n }\n if (addOptions && (addOptions.afterId || addOptions.prepend)) {\n if (addOptions.afterId) {\n const entities = [...this.entities];\n const index =\n this.entities.findIndex(item => {\n return item[this.idKey] === addOptions.afterId;\n }) + 1;\n entities.splice(index, 0, ...addEntities);\n this.entities = [...entities];\n } else if (addOptions.prepend) {\n this.entities = [...addEntities, ...this.entities];\n }\n } else {\n this.entities = [...this.entities, ...addEntities];\n }\n return this.entities;\n }\n\n /**\n *\n * Update an entity or entities.\n *\n * @example\n * produce([users]).update(3, {\n * name: 'New Name'\n * });\n *\n * produce([users]).update(3, entity => {\n * return {\n * ...entity,\n * name: 'New Name'\n * }\n * });\n *\n * produce([users]).update([1,2,3], {\n * name: 'New Name'\n * });\n */\n update(id: Id | Id[] | null, newStateFn: (entity: Readonly<TEntity>) => Partial<TEntity>): TEntity[];\n update(id: Id | Id[] | null, newState?: Partial<TEntity>): TEntity[];\n update(\n idsOrFn: Id | Id[] | null | Partial<TEntity> | ((entity: Readonly<TEntity>) => boolean),\n newStateOrFn?: ((entity: Readonly<TEntity>) => Partial<TEntity>) | Partial<TEntity>\n ): TEntity[] {\n const ids = coerceArray(idsOrFn);\n\n for (let i = 0; i < this.entities.length; i++) {\n const oldEntity = this.entities[i];\n if (ids.indexOf(oldEntity[this.idKey]) >= 0) {\n const newState = isFunction(newStateOrFn) ? (newStateOrFn as any)(oldEntity) : newStateOrFn;\n this.entities[i] = { ...(oldEntity as any), ...newState };\n }\n }\n return [...this.entities];\n }\n\n /**\n *\n * Remove one or more entities:\n *\n * @example\n * produce([users]).remove(5);\n * produce([users]).remove([1,2,3]);\n * produce([users]).remove(entity => entity.id === 1);\n */\n remove(id: Id | Id[]): TEntity[];\n remove(predicate: (entity: Readonly<TEntity>) => boolean): TEntity[];\n remove(idsOrFn?: Id | Id[] | ((entity: Readonly<TEntity>) => boolean)): TEntity[] {\n if (isFunction(idsOrFn)) {\n this.entities = this.entities.filter(entity => {\n return !(idsOrFn as any)(entity);\n });\n } else {\n const ids = coerceArray(idsOrFn);\n this.entities = this.entities.filter(entity => {\n return ids.indexOf(entity[this.idKey]) === -1;\n });\n }\n return this.entities;\n }\n\n /**\n *\n * Move one or more entities:\n *\n * @example\n * produce([users]).move(5, {afterId: 2});\n * produce([users]).move(5, {toIndex: 0});\n */\n move(id: Id, moveOptions?: EntityMoveOptions): TEntity[] {\n const fromIndex = this.entities.findIndex(item => item[this.idKey] === id);\n let toIndex = 0;\n const newEntities = [...this.entities];\n\n if (!id || fromIndex < 0) {\n return [...this.entities];\n }\n\n if (moveOptions) {\n if (!isUndefinedOrNull(moveOptions.afterId)) {\n toIndex = this.entities.findIndex(item => item[this.idKey] === moveOptions.afterId);\n } else if (moveOptions.toIndex) {\n toIndex = moveOptions.toIndex;\n }\n }\n toIndex = Math.max(0, Math.min(this.entities.length - 1, toIndex));\n if (toIndex === fromIndex) {\n return [...this.entities];\n } else {\n const target = this.entities[fromIndex];\n const delta = toIndex < fromIndex ? -1 : 1;\n\n for (let i = fromIndex; i !== toIndex; i += delta) {\n newEntities[i] = newEntities[i + delta];\n }\n newEntities[toIndex] = target;\n return [...newEntities];\n }\n }\n}\n\nexport function produce<TEntity>(entities: TEntity[], options?: ProducerOptions) {\n return new Producer(entities, options);\n}\n","import { keyBy, indexKeyBy } from './helpers';\n\n// 抽取数据中的Item类型,不是数组直接返回对象的类型\nexport type ArrayInferExtract<T> = T extends Array<infer P> ? P : T;\nexport type ArrayAlwaysExtract<T> = T extends Array<infer P> ? P : never;\n// 抽取 References 中 Object 类型, 如果是数组取数组 Item 类型\nexport type ReferenceObjectExtract<T> = {\n [key in keyof T]: ArrayInferExtract<T[key]> extends object ? ArrayInferExtract<T[key]> : never;\n};\n// 收取 References 中所有的属性 Names,如果ArrayInferExtract不是对象,返回 never\nexport type ReferenceExtractNames<T> = { [key in keyof T]: ArrayInferExtract<T[key]> extends object ? key : never };\nexport type ReferenceArrayExtractNames<T> = { [key in keyof T]: T[key] extends Array<object> ? key : never };\n// 排除 ReferenceExtractNames 抽取 Names 中的 never,只保留是对象的 Names\nexport type ReferenceExtractAllowNames<T> = {\n [key in ReferenceExtractNames<T>[keyof T]]: ReferenceExtractNames<T>[key];\n};\nexport type ReferenceArrayExtractAllowNames<T> = {\n [key in ReferenceArrayExtractNames<T>[keyof T]]: ReferenceExtractNames<T>[key];\n};\n\n/**\n * 根据 ReferenceExtractAllowKeys 抽取出的 Object Keys 组合新的对象\n * @example ReferenceExtractAllowKeys<{\n users: { uid: string; name: string }[];\n info: { id: number; name: string };\n departments: { dept: number }[];\n ids: string[];\n id: string;\n }> => {\n users: \"uid\" | \"name\",\n info: \"id\" | \"name\",\n departments: \"dept\"\n\n }\n */\nexport type ReferenceExtractAllowKeys<T> = {\n [key in keyof ReferenceExtractAllowNames<T>]?: keyof ReferenceObjectExtract<T>[key];\n};\n// 只允许 reference 是 Array 的 Keys\nexport type ReferenceArrayExtractAllowKeys<T> = {\n [key in keyof ReferenceArrayExtractAllowNames<T>]?: keyof ReferenceObjectExtract<T>[key];\n};\n\nfunction getReferenceIdKey<TReferences>(referenceKey: string, idKeys: ReferenceArrayExtractAllowKeys<TReferences>) {\n if (idKeys && idKeys[referenceKey]) {\n return idKeys[referenceKey];\n } else {\n return '_id';\n }\n}\n\n/**\n * Append references to original references\n * @example\n * mergeReferences({departments: [{ _id: '1', name: 'name-1'}]}, {departments: [{ _id: '3', name: 'name-3'}]})\n * mergeReferences({users: [{ uid: '1', name: 'name-1'}]}, {users: [{ uid: '3', name: 'name-3'}]}, { users: \"uid\" })\n * @param originalReferences original references\n * @param references append references\n * @param idKeys references 's id key, default is '_id'\n *\n * @returns TReferences\n */\nexport function mergeReferences<TReferences>(\n originalReferences: TReferences,\n references: Partial<TReferences>,\n idKeys?: ReferenceArrayExtractAllowKeys<TReferences>\n): TReferences {\n for (const key in references) {\n if (references.hasOwnProperty(key)) {\n const reference = references[key];\n const referenceIdKey = getReferenceIdKey<TReferences>(key, idKeys);\n const originalReference = originalReferences[key];\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !originalReference) {\n throw new Error(`original reference must exist when append new reference: ${key}`);\n }\n if (originalReference instanceof Array) {\n // original reference id index map\n const originalReferenceIdIndexMap = indexKeyBy<ReferenceExtractAllowKeys<TReferences>>(\n originalReferences[key] as any,\n referenceIdKey\n );\n // append reference is array\n if (reference instanceof Array) {\n reference.forEach((item: TReferences[Extract<keyof TReferences, string>]) => {\n const itemId = item[referenceIdKey];\n const index = originalReferenceIdIndexMap[itemId];\n if (index >= 0) {\n originalReference[index] = { ...originalReference[index], ...item };\n } else {\n (originalReferences as any)[key] = [...(originalReferences[key] as any), item];\n }\n });\n } else {\n // append reference is not array, support append signal object to array reference\n const itemId = reference[referenceIdKey];\n const index = originalReferenceIdIndexMap[itemId];\n if (itemId >= 0) {\n originalReference[index] = { ...originalReference[index], ...reference };\n } else {\n (originalReferences as any)[key] = [...(originalReferences[key] as any), reference];\n }\n }\n } else {\n originalReferences[key] = { ...originalReferences[key], ...reference };\n }\n }\n }\n\n return originalReferences;\n}\n\n/**\n * Build dictionary for references\n * @param references references\n * @param idKeys references 's id key, default is '_id'\n */\nexport function buildReferencesKeyBy<TReferences>(\n references: Partial<TReferences>,\n idKeys?: Partial<ReferenceArrayExtractAllowKeys<TReferences>>\n) {\n const result: { [key in keyof TReferences]?: { [key: string]: ArrayInferExtract<TReferences[key]> } } = {};\n for (const key in references) {\n if (references.hasOwnProperty(key)) {\n const referenceIdKey = getReferenceIdKey<TReferences>(key, idKeys);\n const reference = references[key];\n if (reference instanceof Array) {\n const originalReferenceIdMap = keyBy<ArrayInferExtract<TReferences>>(reference, referenceIdKey);\n (result as any)[key] = originalReferenceIdMap;\n }\n }\n }\n return result;\n}\n","import { SimpleChanges } from '@angular/core';\n\nexport function hasLaterChange(changes: SimpleChanges): boolean {\n const hasChange = Object.keys(changes).find(key => {\n return changes[key] && !changes[key].isFirstChange();\n });\n return !!hasChange;\n}\n","import { isDevMode } from '@angular/core';\n\nconst record: Record<string, boolean> = {};\n\nlet logWarnDeprecation = true;\n\nexport const PREFIX = '[NGX-TETHYS]:';\n\nfunction notRecorded(...args: any[]): boolean {\n const asRecord = args.reduce((acc, c) => acc + c.toString(), '');\n\n if (record[asRecord]) {\n return false;\n } else {\n record[asRecord] = true;\n return true;\n }\n}\n\nfunction consoleCommonBehavior(consoleFunc: (...args: any) => void, ...args: any[]): void {\n if (isDevMode() && notRecorded(...args)) {\n consoleFunc(...args);\n }\n}\n\n// Warning should only be printed in dev mode and only once.\nexport const warn = (...args: any[]) => consoleCommonBehavior((...arg: any[]) => console.warn(PREFIX, ...arg), ...args);\n\nexport function createWarnDeprecation(prefix: string): (...args: any[]) => void {\n return (...args: any[]) => {\n const stack = new Error().stack;\n return consoleCommonBehavior(\n (...arg: any[]) => {\n if (logWarnDeprecation) {\n console.warn(prefix, 'deprecated:', ...arg, stack);\n }\n },\n ...args\n );\n };\n}\n\nexport const warnDeprecation = createWarnDeprecation(PREFIX);\n\n// Log should only be printed in dev mode.\nexport const log = (...args: any[]) => {\n if (isDevMode()) {\n console.log(PREFIX, ...args);\n }\n};\n\nexport function setWarnDeprecation(enabled: boolean) {\n logWarnDeprecation = enabled;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceCssPixel","helpers.isString","helpers.coerceArray"],"mappings":"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"}
|
package/fesm2022/ngx-tethys.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('18.2.
|
|
1
|
+
{"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('18.2.13');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS;;ACF5C;;AAEG;;;;"}
|
package/package.json
CHANGED
package/schematics/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "18.2.
|
|
1
|
+
export declare const VERSION = "18.2.13";
|
package/schematics/version.js
CHANGED
package/table/styles/table.scss
CHANGED
|
@@ -345,12 +345,20 @@
|
|
|
345
345
|
|
|
346
346
|
&-fixed-header {
|
|
347
347
|
thead {
|
|
348
|
-
border: 1px solid variables.$gray-200;
|
|
349
348
|
background-color: variables.$bg-default;
|
|
350
349
|
position: sticky;
|
|
351
350
|
left: 0;
|
|
352
351
|
top: 0;
|
|
353
352
|
z-index: variables.$z-index-6;
|
|
353
|
+
&::after {
|
|
354
|
+
content: '';
|
|
355
|
+
position: absolute;
|
|
356
|
+
left: 0;
|
|
357
|
+
right: 0;
|
|
358
|
+
bottom: 0;
|
|
359
|
+
height: 1px;
|
|
360
|
+
background: variables.$gray-200;
|
|
361
|
+
}
|
|
354
362
|
th {
|
|
355
363
|
border-bottom: 0;
|
|
356
364
|
}
|