mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-23 22:17:40 +08:00
perf(all): minify better by using arrow functions (#18730)
This commit is contained in:
@ -3,16 +3,16 @@
|
||||
* Defaults to the current date if
|
||||
* no date given
|
||||
*/
|
||||
export function getDateValue(date: DatetimeData, format: string): number {
|
||||
export const getDateValue = (date: DatetimeData, format: string): number => {
|
||||
const getValue = getValueFromFormat(date, format);
|
||||
|
||||
if (getValue !== undefined) { return getValue; }
|
||||
|
||||
const defaultDate = parseDate(new Date().toISOString());
|
||||
return getValueFromFormat((defaultDate as DatetimeData), format);
|
||||
}
|
||||
};
|
||||
|
||||
export function renderDatetime(template: string, value: DatetimeData | undefined, locale: LocaleData): string | undefined {
|
||||
export const renderDatetime = (template: string, value: DatetimeData | undefined, locale: LocaleData): string | undefined => {
|
||||
if (value === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
@ -43,9 +43,9 @@ export function renderDatetime(template: string, value: DatetimeData | undefined
|
||||
}
|
||||
|
||||
return template;
|
||||
}
|
||||
};
|
||||
|
||||
export function renderTextFormat(format: string, value: any, date: DatetimeData | undefined, locale: LocaleData): string | undefined {
|
||||
export const renderTextFormat = (format: string, value: any, date: DatetimeData | undefined, locale: LocaleData): string | undefined => {
|
||||
if ((format === FORMAT_DDDD || format === FORMAT_DDD)) {
|
||||
try {
|
||||
value = (new Date(date!.year!, date!.month! - 1, date!.day)).getDay();
|
||||
@ -80,8 +80,8 @@ export function renderTextFormat(format: string, value: any, date: DatetimeData
|
||||
}
|
||||
|
||||
if (format === FORMAT_YY || format === FORMAT_MM ||
|
||||
format === FORMAT_DD || format === FORMAT_HH ||
|
||||
format === FORMAT_mm || format === FORMAT_ss) {
|
||||
format === FORMAT_DD || format === FORMAT_HH ||
|
||||
format === FORMAT_mm || format === FORMAT_ss) {
|
||||
return twoDigit(value);
|
||||
}
|
||||
|
||||
@ -110,9 +110,9 @@ export function renderTextFormat(format: string, value: any, date: DatetimeData
|
||||
}
|
||||
|
||||
return value.toString();
|
||||
}
|
||||
};
|
||||
|
||||
export function dateValueRange(format: string, min: DatetimeData, max: DatetimeData): any[] {
|
||||
export const dateValueRange = (format: string, min: DatetimeData, max: DatetimeData): any[] => {
|
||||
const opts: any[] = [];
|
||||
|
||||
if (format === FORMAT_YYYY || format === FORMAT_YY) {
|
||||
@ -126,8 +126,8 @@ export function dateValueRange(format: string, min: DatetimeData, max: DatetimeD
|
||||
}
|
||||
|
||||
} else if (format === FORMAT_MMMM || format === FORMAT_MMM ||
|
||||
format === FORMAT_MM || format === FORMAT_M ||
|
||||
format === FORMAT_hh || format === FORMAT_h) {
|
||||
format === FORMAT_MM || format === FORMAT_M ||
|
||||
format === FORMAT_hh || format === FORMAT_h) {
|
||||
|
||||
// month or 12-hour
|
||||
for (let i = 1; i < 13; i++) {
|
||||
@ -135,7 +135,7 @@ export function dateValueRange(format: string, min: DatetimeData, max: DatetimeD
|
||||
}
|
||||
|
||||
} else if (format === FORMAT_DDDD || format === FORMAT_DDD ||
|
||||
format === FORMAT_DD || format === FORMAT_D) {
|
||||
format === FORMAT_DD || format === FORMAT_D) {
|
||||
// day
|
||||
for (let i = 1; i < 32; i++) {
|
||||
opts.push(i);
|
||||
@ -165,28 +165,28 @@ export function dateValueRange(format: string, min: DatetimeData, max: DatetimeD
|
||||
}
|
||||
|
||||
return opts;
|
||||
}
|
||||
};
|
||||
|
||||
export function dateSortValue(year: number | undefined, month: number | undefined, day: number | undefined, hour = 0, minute = 0): number {
|
||||
export const dateSortValue = (year: number | undefined, month: number | undefined, day: number | undefined, hour = 0, minute = 0): number => {
|
||||
return parseInt(`1${fourDigit(year)}${twoDigit(month)}${twoDigit(day)}${twoDigit(hour)}${twoDigit(minute)}`, 10);
|
||||
}
|
||||
};
|
||||
|
||||
export function dateDataSortValue(data: DatetimeData): number {
|
||||
export const dateDataSortValue = (data: DatetimeData): number => {
|
||||
return dateSortValue(data.year, data.month, data.day, data.hour, data.minute);
|
||||
}
|
||||
};
|
||||
|
||||
export function daysInMonth(month: number, year: number): number {
|
||||
export const daysInMonth = (month: number, year: number): number => {
|
||||
return (month === 4 || month === 6 || month === 9 || month === 11) ? 30 : (month === 2) ? isLeapYear(year) ? 29 : 28 : 31;
|
||||
}
|
||||
};
|
||||
|
||||
export function isLeapYear(year: number): boolean {
|
||||
export const isLeapYear = (year: number): boolean => {
|
||||
return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
|
||||
}
|
||||
};
|
||||
|
||||
const ISO_8601_REGEXP = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/;
|
||||
const TIME_REGEXP = /^((\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/;
|
||||
|
||||
export function parseDate(val: string | undefined | null): DatetimeData | undefined {
|
||||
export const parseDate = (val: string | undefined | null): DatetimeData | undefined => {
|
||||
// manually parse IS0 cuz Date.parse cannot be trusted
|
||||
// ISO 8601 format: 1994-12-15T13:47:20Z
|
||||
let parse: any[] | null = null;
|
||||
@ -239,7 +239,7 @@ export function parseDate(val: string | undefined | null): DatetimeData | undefi
|
||||
millisecond: parse[7],
|
||||
tzOffset,
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts a valid UTC datetime string
|
||||
@ -286,7 +286,7 @@ export const getLocalDateTime = (dateString: any = ''): Date => {
|
||||
);
|
||||
};
|
||||
|
||||
export function updateDate(existingData: DatetimeData, newData: any): boolean {
|
||||
export const updateDate = (existingData: DatetimeData, newData: any): boolean => {
|
||||
|
||||
if (!newData || typeof newData === 'string') {
|
||||
const localDateTime = getLocalDateTime(newData);
|
||||
@ -338,9 +338,9 @@ export function updateDate(existingData: DatetimeData, newData: any): boolean {
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
export function parseTemplate(template: string): string[] {
|
||||
export const parseTemplate = (template: string): string[] => {
|
||||
const formats: string[] = [];
|
||||
|
||||
template = template.replace(/[^\w\s]/gi, ' ');
|
||||
@ -358,7 +358,7 @@ export function parseTemplate(template: string): string[] {
|
||||
if (word === FORMAT_A || word === FORMAT_a) {
|
||||
// this format is an am/pm format, so it's an "a" or "A"
|
||||
if ((formats.indexOf(FORMAT_h) < 0 && formats.indexOf(FORMAT_hh) < 0) ||
|
||||
VALID_AMPM_PREFIX.indexOf(words[i - 1]) === -1) {
|
||||
VALID_AMPM_PREFIX.indexOf(words[i - 1]) === -1) {
|
||||
// template does not already have a 12-hour format
|
||||
// or this am/pm format doesn't have a hour, minute, or second format immediately before it
|
||||
// so do not treat this word "a" or "A" as the am/pm format
|
||||
@ -371,9 +371,9 @@ export function parseTemplate(template: string): string[] {
|
||||
});
|
||||
|
||||
return formats;
|
||||
}
|
||||
};
|
||||
|
||||
export function getValueFromFormat(date: DatetimeData, format: string) {
|
||||
export const getValueFromFormat = (date: DatetimeData, format: string) => {
|
||||
if (format === FORMAT_A || format === FORMAT_a) {
|
||||
return (date.hour! < 12 ? 'am' : 'pm');
|
||||
}
|
||||
@ -381,18 +381,18 @@ export function getValueFromFormat(date: DatetimeData, format: string) {
|
||||
return (date.hour! > 12 ? date.hour! - 12 : date.hour);
|
||||
}
|
||||
return (date as any)[convertFormatToKey(format)!];
|
||||
}
|
||||
};
|
||||
|
||||
export function convertFormatToKey(format: string): string | undefined {
|
||||
export const convertFormatToKey = (format: string): string | undefined => {
|
||||
for (const k in FORMAT_KEYS) {
|
||||
if (FORMAT_KEYS[k].f === format) {
|
||||
return FORMAT_KEYS[k].k;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
|
||||
export function convertDataToISO(data: DatetimeData): string {
|
||||
export const convertDataToISO = (data: DatetimeData): string => {
|
||||
// https://www.w3.org/TR/NOTE-datetime
|
||||
let rtn = '';
|
||||
if (data.year !== undefined) {
|
||||
@ -445,13 +445,13 @@ export function convertDataToISO(data: DatetimeData): string {
|
||||
}
|
||||
|
||||
return rtn;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Use to convert a string of comma separated strings or
|
||||
* an array of strings, and clean up any user input
|
||||
*/
|
||||
export function convertToArrayOfStrings(input: string | string[] | undefined | null, type: string): string[] | undefined {
|
||||
export const convertToArrayOfStrings = (input: string | string[] | undefined | null, type: string): string[] | undefined => {
|
||||
if (input == null) {
|
||||
return undefined;
|
||||
}
|
||||
@ -473,13 +473,13 @@ export function convertToArrayOfStrings(input: string | string[] | undefined | n
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Use to convert a string of comma separated numbers or
|
||||
* an array of numbers, and clean up any user input
|
||||
*/
|
||||
export function convertToArrayOfNumbers(input: any[] | string | number, type: string): number[] {
|
||||
export const convertToArrayOfNumbers = (input: any[] | string | number, type: string): number[] => {
|
||||
if (typeof input === 'string') {
|
||||
// convert the string to an array of strings
|
||||
// auto remove any whitespace and [] characters
|
||||
@ -501,19 +501,19 @@ export function convertToArrayOfNumbers(input: any[] | string | number, type: st
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
};
|
||||
|
||||
function twoDigit(val: number | undefined): string {
|
||||
const twoDigit = (val: number | undefined): string => {
|
||||
return ('0' + (val !== undefined ? Math.abs(val) : '0')).slice(-2);
|
||||
}
|
||||
};
|
||||
|
||||
function threeDigit(val: number | undefined): string {
|
||||
const threeDigit = (val: number | undefined): string => {
|
||||
return ('00' + (val !== undefined ? Math.abs(val) : '0')).slice(-3);
|
||||
}
|
||||
};
|
||||
|
||||
function fourDigit(val: number | undefined): string {
|
||||
const fourDigit = (val: number | undefined): string => {
|
||||
return ('000' + (val !== undefined ? Math.abs(val) : '0')).slice(-4);
|
||||
}
|
||||
};
|
||||
|
||||
export interface DatetimeData {
|
||||
year?: number;
|
||||
|
Reference in New Issue
Block a user