@rivtn/noseur 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2 -0
- package/dist/esm/Template.d.ts +7 -0
- package/dist/esm/Template.js +13 -0
- package/dist/esm/compose/Composed.css +437 -0
- package/dist/esm/compose/exotic/ColorPicker.d.ts +41 -0
- package/dist/esm/compose/exotic/ColorPicker.js +85 -0
- package/dist/esm/compose/exotic/ColorSlider.d.ts +30 -0
- package/dist/esm/compose/exotic/ColorSlider.js +99 -0
- package/dist/esm/compose/form/ComposedPassword.d.ts +25 -0
- package/dist/esm/compose/form/ComposedPassword.js +103 -0
- package/dist/esm/compose/form/DateTimeInput.d.ts +28 -0
- package/dist/esm/compose/form/DateTimeInput.js +154 -0
- package/dist/esm/compose/form/DateTimePicker.d.ts +341 -0
- package/dist/esm/compose/form/DateTimePicker.js +1265 -0
- package/dist/esm/compose/form/FormControl.d.ts +33 -0
- package/dist/esm/compose/form/FormControl.js +163 -0
- package/dist/esm/compose/form/FormGroup.d.ts +14 -0
- package/dist/esm/compose/form/FormGroup.js +58 -0
- package/dist/esm/compose/overlay/Alert.d.ts +56 -0
- package/dist/esm/compose/overlay/Alert.js +267 -0
- package/dist/esm/constants/Alignment.d.ts +17 -0
- package/dist/esm/constants/Alignment.js +18 -0
- package/dist/esm/constants/Direction.d.ts +26 -0
- package/dist/esm/constants/Direction.js +22 -0
- package/dist/esm/constants/Orientation.d.ts +8 -0
- package/dist/esm/constants/Orientation.js +9 -0
- package/dist/esm/constants/Scheme.d.ts +39 -0
- package/dist/esm/constants/Scheme.js +43 -0
- package/dist/esm/constants/Transition.d.ts +81 -0
- package/dist/esm/constants/Transition.js +85 -0
- package/dist/esm/constants/Types.d.ts +74 -0
- package/dist/esm/constants/Types.js +14 -0
- package/dist/esm/core/ComponentBaseProps.d.ts +53 -0
- package/dist/esm/core/ComponentBaseProps.js +33 -0
- package/dist/esm/core/noseur.css +2390 -0
- package/dist/esm/data/Column.d.ts +235 -0
- package/dist/esm/data/Column.js +98 -0
- package/dist/esm/data/Data.css +213 -0
- package/dist/esm/data/Data.d.ts +98 -0
- package/dist/esm/data/Data.js +142 -0
- package/dist/esm/data/List.d.ts +14 -0
- package/dist/esm/data/List.js +117 -0
- package/dist/esm/data/Table.d.ts +22 -0
- package/dist/esm/data/Table.js +236 -0
- package/dist/esm/form/Button.d.ts +35 -0
- package/dist/esm/form/Button.js +131 -0
- package/dist/esm/form/Calendar.d.ts +20 -0
- package/dist/esm/form/Calendar.js +46 -0
- package/dist/esm/form/Checkbox.d.ts +20 -0
- package/dist/esm/form/Checkbox.js +155 -0
- package/dist/esm/form/ColorMap.d.ts +22 -0
- package/dist/esm/form/ColorMap.js +43 -0
- package/dist/esm/form/ColorPalette.d.ts +28 -0
- package/dist/esm/form/ColorPalette.js +87 -0
- package/dist/esm/form/Dropdown.d.ts +78 -0
- package/dist/esm/form/Dropdown.js +360 -0
- package/dist/esm/form/FileInput.d.ts +134 -0
- package/dist/esm/form/FileInput.js +523 -0
- package/dist/esm/form/Form.css +467 -0
- package/dist/esm/form/Input.d.ts +45 -0
- package/dist/esm/form/Input.js +186 -0
- package/dist/esm/form/RadioButton.d.ts +21 -0
- package/dist/esm/form/RadioButton.js +178 -0
- package/dist/esm/form/Slider.d.ts +21 -0
- package/dist/esm/form/Slider.js +163 -0
- package/dist/esm/hooks/useSearchParams.d.ts +15 -0
- package/dist/esm/hooks/useSearchParams.js +50 -0
- package/dist/esm/hooks/useSubscription.d.ts +9 -0
- package/dist/esm/hooks/useSubscription.js +26 -0
- package/dist/esm/index.d.ts +60 -0
- package/dist/esm/index.js +73 -0
- package/dist/esm/layout/GridView.d.ts +23 -0
- package/dist/esm/layout/GridView.js +34 -0
- package/dist/esm/layout/Layout.css +5 -0
- package/dist/esm/misc/Misc.css +164 -0
- package/dist/esm/misc/ProgressBar.d.ts +22 -0
- package/dist/esm/misc/ProgressBar.js +86 -0
- package/dist/esm/overlay/Dialog.d.ts +46 -0
- package/dist/esm/overlay/Dialog.js +290 -0
- package/dist/esm/overlay/Message.d.ts +35 -0
- package/dist/esm/overlay/Message.js +187 -0
- package/dist/esm/overlay/Overlay.css +382 -0
- package/dist/esm/overlay/Popover.d.ts +30 -0
- package/dist/esm/overlay/Popover.js +245 -0
- package/dist/esm/overlay/Portal.d.ts +11 -0
- package/dist/esm/overlay/Portal.js +29 -0
- package/dist/esm/overlay/Toast.d.ts +49 -0
- package/dist/esm/overlay/Toast.js +341 -0
- package/dist/esm/panel/Accordion.d.ts +26 -0
- package/dist/esm/panel/Accordion.js +127 -0
- package/dist/esm/panel/Panel.css +317 -0
- package/dist/esm/panel/Panel.d.ts +43 -0
- package/dist/esm/panel/Panel.js +125 -0
- package/dist/esm/panel/ScrollPanel.d.ts +27 -0
- package/dist/esm/panel/ScrollPanel.js +43 -0
- package/dist/esm/panel/TabPane.d.ts +82 -0
- package/dist/esm/panel/TabPane.js +237 -0
- package/dist/esm/presentation/Chart.d.ts +49 -0
- package/dist/esm/presentation/Chart.js +62 -0
- package/dist/esm/presentation/Paginator.d.ts +90 -0
- package/dist/esm/presentation/Paginator.js +331 -0
- package/dist/esm/presentation/Presentation.css +23 -0
- package/dist/esm/sensor/DragSensor.d.ts +50 -0
- package/dist/esm/sensor/DragSensor.js +156 -0
- package/dist/esm/sensor/ViewportSensor.d.ts +18 -0
- package/dist/esm/sensor/ViewportSensor.js +85 -0
- package/dist/esm/utils/BoolHelper.d.ts +13 -0
- package/dist/esm/utils/BoolHelper.js +105 -0
- package/dist/esm/utils/Classname.d.ts +9 -0
- package/dist/esm/utils/Classname.js +20 -0
- package/dist/esm/utils/ColorHelper.d.ts +127 -0
- package/dist/esm/utils/ColorHelper.js +198 -0
- package/dist/esm/utils/DOMUtils.d.ts +142 -0
- package/dist/esm/utils/DOMUtils.js +759 -0
- package/dist/esm/utils/DateHelper.d.ts +115 -0
- package/dist/esm/utils/DateHelper.js +338 -0
- package/dist/esm/utils/Debugger.d.ts +12 -0
- package/dist/esm/utils/Debugger.js +30 -0
- package/dist/esm/utils/FileHelper.d.ts +8 -0
- package/dist/esm/utils/FileHelper.js +65 -0
- package/dist/esm/utils/FunctionStackManager.d.ts +13 -0
- package/dist/esm/utils/FunctionStackManager.js +59 -0
- package/dist/esm/utils/InputHelper.d.ts +37 -0
- package/dist/esm/utils/InputHelper.js +70 -0
- package/dist/esm/utils/MicroBuilder.d.ts +24 -0
- package/dist/esm/utils/MicroBuilder.js +61 -0
- package/dist/esm/utils/ObjectHelper.d.ts +51 -0
- package/dist/esm/utils/ObjectHelper.js +334 -0
- package/dist/esm/utils/StringHelper.d.ts +10 -0
- package/dist/esm/utils/StringHelper.js +54 -0
- package/dist/esm/utils/Subscriber.d.ts +14 -0
- package/dist/esm/utils/Subscriber.js +27 -0
- package/dist/esm/utils/Timer.d.ts +32 -0
- package/dist/esm/utils/Timer.js +68 -0
- package/dist/esm/utils/TypeChecker.d.ts +12 -0
- package/dist/esm/utils/TypeChecker.js +38 -0
- package/package.json +63 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { NoseurObject } from "../constants/Types";
|
|
2
|
+
export interface Time {
|
|
3
|
+
ms: number;
|
|
4
|
+
hours: number;
|
|
5
|
+
minutes: number;
|
|
6
|
+
seconds: number;
|
|
7
|
+
timezone: string;
|
|
8
|
+
meridian: "AM" | "PM";
|
|
9
|
+
timezoneOffset: number;
|
|
10
|
+
}
|
|
11
|
+
export declare enum Weekday {
|
|
12
|
+
SUNDAY = "SUNDAY",
|
|
13
|
+
MONDAY = "MONDAY",
|
|
14
|
+
TUESDAY = "TUESDAY",
|
|
15
|
+
WEDNESDAY = "WEDNESDAY",
|
|
16
|
+
THURSDAY = "THURSDAY",
|
|
17
|
+
FRIDAY = "FRIDAY",
|
|
18
|
+
SATURDAY = "SATURDAY"
|
|
19
|
+
}
|
|
20
|
+
export declare enum Month {
|
|
21
|
+
JANUARY = 0,
|
|
22
|
+
FEBRUARY = 1,
|
|
23
|
+
MARCH = 2,
|
|
24
|
+
APRIL = 3,
|
|
25
|
+
MAY = 4,
|
|
26
|
+
JUNE = 5,
|
|
27
|
+
JULY = 6,
|
|
28
|
+
AUGUST = 7,
|
|
29
|
+
SEPTEMBER = 8,
|
|
30
|
+
OCTOBER = 9,
|
|
31
|
+
NOVEMBER = 10,
|
|
32
|
+
DECEMBER = 11
|
|
33
|
+
}
|
|
34
|
+
export interface FormatedDate {
|
|
35
|
+
date: Date;
|
|
36
|
+
day: number;
|
|
37
|
+
year: number;
|
|
38
|
+
month: number;
|
|
39
|
+
hours: number;
|
|
40
|
+
minutes: number;
|
|
41
|
+
seconds: number;
|
|
42
|
+
weekDay: string;
|
|
43
|
+
longYear: string;
|
|
44
|
+
monthName: string;
|
|
45
|
+
formatted: string;
|
|
46
|
+
disabled: boolean;
|
|
47
|
+
meridian: "AM" | "PM";
|
|
48
|
+
hourFormat: "12" | "24";
|
|
49
|
+
isNotInMonth: boolean;
|
|
50
|
+
}
|
|
51
|
+
export declare const DateHelper: {
|
|
52
|
+
WEEKDAYS_MAP: {
|
|
53
|
+
[key: string]: number;
|
|
54
|
+
};
|
|
55
|
+
now(): Date;
|
|
56
|
+
clone(_date: Date): Date;
|
|
57
|
+
addYears(_date: Date, value: number): Date;
|
|
58
|
+
addMonths(_date: Date, value: number): Date;
|
|
59
|
+
addDays(_date: Date, value: number): Date;
|
|
60
|
+
addHours(_date: Date, value: number): Date;
|
|
61
|
+
addMinutes(_date: Date, value: number): Date;
|
|
62
|
+
addSeconds(_date: Date, value: number): Date;
|
|
63
|
+
addTime(_date: Date, hours: number, minutes: number, seconds: number, ms?: number): Date;
|
|
64
|
+
withEndOfDayTime(_date: Date): Date;
|
|
65
|
+
withTime(_date: Date, _timeDate?: Date): Date;
|
|
66
|
+
withoutTime(_date: Date): Date;
|
|
67
|
+
daysInMonth(yearOrDate: number | Date, month?: number): number;
|
|
68
|
+
isInArrayOfDates(array: Date[], value: Date, withoutTime?: boolean): boolean;
|
|
69
|
+
areInArrayOfDates(array: (Date | undefined)[], values: Date[], withoutTime?: boolean): boolean;
|
|
70
|
+
anyInArrayOfDates(array: Date[], values: Date[], withoutTime?: boolean): boolean;
|
|
71
|
+
getTime(date: Date): Time;
|
|
72
|
+
formatDateToObject(originalDate: Date, formatMap: NoseurObject<Intl.DateTimeFormatOptions>, locale?: string, hourFormat?: "12" | "24", comparisonDate?: Date): FormatedDate;
|
|
73
|
+
isToday(date: Date): boolean;
|
|
74
|
+
isPast(date: Date): boolean;
|
|
75
|
+
isFuture(date: Date): boolean;
|
|
76
|
+
isNow(date: Date): boolean;
|
|
77
|
+
dateEquals(dates: Date[]): boolean;
|
|
78
|
+
dateIsInRange(_fromDate: Date, _toDate: Date, date: Date): boolean;
|
|
79
|
+
translateWeekday(weekday: string, locale?: string, option?: Intl.DateTimeFormatOptions): string;
|
|
80
|
+
getAllDaysInMonth(year: number, month: number, count?: number, reverse?: boolean): Date[];
|
|
81
|
+
getMilliSecondsBetweenDates(date1: Date, date2: Date): number;
|
|
82
|
+
getSecondsBetweenDates(date1: Date, date2: Date): number;
|
|
83
|
+
getMinutesBetweenDates(date1: Date, date2: Date): number;
|
|
84
|
+
getHoursBetweenDates(date1: Date, date2: Date): number;
|
|
85
|
+
getDaysBetweenDates(date1: Date, date2: Date): number;
|
|
86
|
+
getWeeksBetweenDates(date1: Date, date2: Date): number;
|
|
87
|
+
getMonthsBetweenDates(date1: Date, date2: Date): number;
|
|
88
|
+
getYearsBetweenDates(date1: Date, date2: Date): number;
|
|
89
|
+
getStartOfDay(date?: Date): Date;
|
|
90
|
+
getEndOfDay(date?: Date): Date;
|
|
91
|
+
getFirstDayInMonth(date?: Date): Date;
|
|
92
|
+
getLastDayInMonth(date?: Date): Date;
|
|
93
|
+
getStartOfMonth(date?: Date): Date;
|
|
94
|
+
getEndOfMonth(date?: Date): Date;
|
|
95
|
+
getFirstDayInYear(date?: Date): Date;
|
|
96
|
+
getLastDayInYear(date?: Date): Date;
|
|
97
|
+
getStartOfYear(date?: Date): Date;
|
|
98
|
+
getEndOfYear(date?: Date): Date;
|
|
99
|
+
getTomorrow(date?: Date): Date;
|
|
100
|
+
formatDuration(startDate: Date, endDate: Date, config?: {
|
|
101
|
+
showMaxIntervalOnly?: boolean;
|
|
102
|
+
separator?: string;
|
|
103
|
+
language?: {
|
|
104
|
+
days: string;
|
|
105
|
+
hrs: string;
|
|
106
|
+
mins: string;
|
|
107
|
+
sec: string;
|
|
108
|
+
};
|
|
109
|
+
}): string;
|
|
110
|
+
getNextWeekDay(weekDay: Weekday, date?: Date): Date;
|
|
111
|
+
getLastWeekdayOfMonth(weekDay: Weekday, date?: Date): Date;
|
|
112
|
+
getNextTwoWeekDayFrom(fromDate: Date, weekDay: Weekday, date?: Date): Date;
|
|
113
|
+
getNextQuarterStart(date?: Date): Date;
|
|
114
|
+
getNextQuarterEnd(date?: Date): Date;
|
|
115
|
+
};
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { BoolHelper } from "./BoolHelper";
|
|
2
|
+
export var Weekday;
|
|
3
|
+
(function (Weekday) {
|
|
4
|
+
Weekday["SUNDAY"] = "SUNDAY";
|
|
5
|
+
Weekday["MONDAY"] = "MONDAY";
|
|
6
|
+
Weekday["TUESDAY"] = "TUESDAY";
|
|
7
|
+
Weekday["WEDNESDAY"] = "WEDNESDAY";
|
|
8
|
+
Weekday["THURSDAY"] = "THURSDAY";
|
|
9
|
+
Weekday["FRIDAY"] = "FRIDAY";
|
|
10
|
+
Weekday["SATURDAY"] = "SATURDAY";
|
|
11
|
+
})(Weekday || (Weekday = {}));
|
|
12
|
+
export var Month;
|
|
13
|
+
(function (Month) {
|
|
14
|
+
Month[Month["JANUARY"] = 0] = "JANUARY";
|
|
15
|
+
Month[Month["FEBRUARY"] = 1] = "FEBRUARY";
|
|
16
|
+
Month[Month["MARCH"] = 2] = "MARCH";
|
|
17
|
+
Month[Month["APRIL"] = 3] = "APRIL";
|
|
18
|
+
Month[Month["MAY"] = 4] = "MAY";
|
|
19
|
+
Month[Month["JUNE"] = 5] = "JUNE";
|
|
20
|
+
Month[Month["JULY"] = 6] = "JULY";
|
|
21
|
+
Month[Month["AUGUST"] = 7] = "AUGUST";
|
|
22
|
+
Month[Month["SEPTEMBER"] = 8] = "SEPTEMBER";
|
|
23
|
+
Month[Month["OCTOBER"] = 9] = "OCTOBER";
|
|
24
|
+
Month[Month["NOVEMBER"] = 10] = "NOVEMBER";
|
|
25
|
+
Month[Month["DECEMBER"] = 11] = "DECEMBER";
|
|
26
|
+
})(Month || (Month = {}));
|
|
27
|
+
export const DateHelper = {
|
|
28
|
+
WEEKDAYS_MAP: Object.values(Weekday).reduce((acc, weekday, index) => {
|
|
29
|
+
acc[weekday] = index;
|
|
30
|
+
return acc;
|
|
31
|
+
}, {}),
|
|
32
|
+
now() {
|
|
33
|
+
return new Date();
|
|
34
|
+
},
|
|
35
|
+
clone(_date) {
|
|
36
|
+
return new Date(_date.getTime());
|
|
37
|
+
},
|
|
38
|
+
addYears(_date, value) {
|
|
39
|
+
const date = new Date(_date.getTime());
|
|
40
|
+
date.setFullYear(date.getFullYear() + value);
|
|
41
|
+
return date;
|
|
42
|
+
},
|
|
43
|
+
addMonths(_date, value) {
|
|
44
|
+
const date = new Date(_date.getTime());
|
|
45
|
+
date.setMonth(date.getMonth() + value);
|
|
46
|
+
return date;
|
|
47
|
+
},
|
|
48
|
+
addDays(_date, value) {
|
|
49
|
+
const date = new Date(_date.getTime());
|
|
50
|
+
date.setDate(date.getDate() + value);
|
|
51
|
+
return date;
|
|
52
|
+
},
|
|
53
|
+
addHours(_date, value) {
|
|
54
|
+
const date = new Date(_date.getTime());
|
|
55
|
+
date.setHours(date.getHours() + value);
|
|
56
|
+
return date;
|
|
57
|
+
},
|
|
58
|
+
addMinutes(_date, value) {
|
|
59
|
+
const date = new Date(_date.getTime());
|
|
60
|
+
date.setMinutes(date.getMinutes() + value);
|
|
61
|
+
return date;
|
|
62
|
+
},
|
|
63
|
+
addSeconds(_date, value) {
|
|
64
|
+
const date = new Date(_date.getTime());
|
|
65
|
+
date.setSeconds(date.getSeconds() + value);
|
|
66
|
+
return date;
|
|
67
|
+
},
|
|
68
|
+
addTime(_date, hours, minutes, seconds, ms = 0) {
|
|
69
|
+
const date = new Date(_date.getTime());
|
|
70
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours, minutes, seconds, ms);
|
|
71
|
+
},
|
|
72
|
+
withEndOfDayTime(_date) {
|
|
73
|
+
const date = new Date(_date.getTime());
|
|
74
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 58, 59);
|
|
75
|
+
},
|
|
76
|
+
withTime(_date, _timeDate) {
|
|
77
|
+
const date = new Date(_date.getTime());
|
|
78
|
+
const timeDate = _timeDate ?? new Date();
|
|
79
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), timeDate.getHours(), timeDate.getMinutes(), timeDate.getSeconds(), timeDate.getMilliseconds());
|
|
80
|
+
},
|
|
81
|
+
withoutTime(_date) {
|
|
82
|
+
const date = new Date(_date.getTime());
|
|
83
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
84
|
+
},
|
|
85
|
+
daysInMonth(yearOrDate, month = 0) {
|
|
86
|
+
if (typeof yearOrDate === "number") {
|
|
87
|
+
return new Date(yearOrDate, month + 1, 0).getDate();
|
|
88
|
+
}
|
|
89
|
+
return new Date(yearOrDate.getFullYear(), yearOrDate.getMonth() + 1, 0).getDate();
|
|
90
|
+
},
|
|
91
|
+
isInArrayOfDates(array, value, withoutTime = true) {
|
|
92
|
+
let rightOperand = withoutTime ? DateHelper.withoutTime(value) : value;
|
|
93
|
+
return !!array.find(item => {
|
|
94
|
+
let leftOperand = withoutTime ? DateHelper.withoutTime(item) : item;
|
|
95
|
+
return leftOperand.getTime() == rightOperand.getTime();
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
areInArrayOfDates(array, values, withoutTime = true) {
|
|
99
|
+
let presentCount = 0;
|
|
100
|
+
let rightOperands = withoutTime ? values.map(value => DateHelper.withoutTime(value)) : values;
|
|
101
|
+
array.forEach(item => {
|
|
102
|
+
if (!item)
|
|
103
|
+
return;
|
|
104
|
+
let leftOperand = withoutTime ? DateHelper.withoutTime(item) : item;
|
|
105
|
+
for (const rightOperand of rightOperands) {
|
|
106
|
+
if (leftOperand.getTime() === rightOperand.getTime())
|
|
107
|
+
presentCount++;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
return presentCount >= values.length;
|
|
111
|
+
},
|
|
112
|
+
anyInArrayOfDates(array, values, withoutTime = true) {
|
|
113
|
+
let rightOperands = withoutTime ? values.map(value => DateHelper.withoutTime(value)) : values;
|
|
114
|
+
return !!array.find(item => {
|
|
115
|
+
let leftOperand = withoutTime ? DateHelper.withoutTime(item) : item;
|
|
116
|
+
return DateHelper.isInArrayOfDates(rightOperands, leftOperand);
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
getTime(date) {
|
|
120
|
+
return {
|
|
121
|
+
hours: date.getHours(),
|
|
122
|
+
ms: date.getMilliseconds(),
|
|
123
|
+
minutes: date.getMinutes(),
|
|
124
|
+
seconds: date.getSeconds(),
|
|
125
|
+
timezoneOffset: date.getTimezoneOffset(),
|
|
126
|
+
meridian: date.getHours() >= 12 ? "PM" : "AM",
|
|
127
|
+
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
formatDateToObject(originalDate, formatMap, locale = "default", hourFormat = "24", comparisonDate = new Date()) {
|
|
131
|
+
const formattedDate = {};
|
|
132
|
+
const date = new Date(originalDate.valueOf());
|
|
133
|
+
let hours = date.getHours();
|
|
134
|
+
const meridian = hours >= 12 ? 'PM' : 'AM';
|
|
135
|
+
if (hourFormat === "12" && hours >= 12) {
|
|
136
|
+
hours = hours % 12;
|
|
137
|
+
hours = hours ? hours : 12;
|
|
138
|
+
}
|
|
139
|
+
formattedDate["date"] = date;
|
|
140
|
+
formattedDate["meridian"] = meridian;
|
|
141
|
+
formattedDate["day"] = date.getDate();
|
|
142
|
+
formattedDate["hourFormat"] = hourFormat;
|
|
143
|
+
formattedDate["month"] = date.getMonth();
|
|
144
|
+
formattedDate["year"] = date.getFullYear();
|
|
145
|
+
formattedDate["hours"] = ('' + hours).padStart(2, '0');
|
|
146
|
+
formattedDate["minutes"] = ('' + date.getMinutes()).padStart(2, '0');
|
|
147
|
+
formattedDate["seconds"] = ('' + date.getSeconds()).padStart(2, '0');
|
|
148
|
+
formattedDate["isNotInMonth"] = !(date.getMonth() === comparisonDate.getMonth() && date.getFullYear() === comparisonDate.getFullYear());
|
|
149
|
+
Object.keys(formatMap).forEach(key => {
|
|
150
|
+
formattedDate[key] = date.toLocaleString(locale, formatMap[key]);
|
|
151
|
+
});
|
|
152
|
+
formattedDate;
|
|
153
|
+
return formattedDate;
|
|
154
|
+
},
|
|
155
|
+
isToday(date) {
|
|
156
|
+
let todaysDate = new Date();
|
|
157
|
+
return todaysDate.getDate() === date.getDate() && todaysDate.getMonth() === date.getMonth() && todaysDate.getFullYear() === date.getFullYear();
|
|
158
|
+
},
|
|
159
|
+
isPast(date) {
|
|
160
|
+
return (new Date()).getTime() > date.getTime();
|
|
161
|
+
},
|
|
162
|
+
isFuture(date) {
|
|
163
|
+
return !DateHelper.isPast(date);
|
|
164
|
+
},
|
|
165
|
+
isNow(date) {
|
|
166
|
+
return new Date().getTime() === date.getTime();
|
|
167
|
+
},
|
|
168
|
+
dateEquals(dates) {
|
|
169
|
+
return !dates.length || BoolHelper.allEquals((o) => o.getTime() === dates[0].getTime(), ...dates);
|
|
170
|
+
},
|
|
171
|
+
dateIsInRange(_fromDate, _toDate, date) {
|
|
172
|
+
let fromDate = new Date(_fromDate.getTime()), toDate = new Date(_toDate.getTime());
|
|
173
|
+
if (_fromDate > _toDate) {
|
|
174
|
+
toDate = new Date(_fromDate.getTime());
|
|
175
|
+
fromDate = new Date(_toDate.getTime());
|
|
176
|
+
}
|
|
177
|
+
return date > fromDate && date < toDate;
|
|
178
|
+
},
|
|
179
|
+
translateWeekday(weekday, locale = "en", option = { weekday: 'short' }) {
|
|
180
|
+
const weekdayIndex = Object.keys(Weekday).indexOf(weekday);
|
|
181
|
+
if (weekdayIndex < 0)
|
|
182
|
+
throw new Error(`Unknown weekday "${weekday}"`);
|
|
183
|
+
return new Date(2001, 0, weekdayIndex).toLocaleDateString(locale, option);
|
|
184
|
+
},
|
|
185
|
+
getAllDaysInMonth(year, month, count, reverse) {
|
|
186
|
+
const daysInMonth = DateHelper.daysInMonth(year, month);
|
|
187
|
+
const negator = reverse ? -daysInMonth : 1;
|
|
188
|
+
const days = Array.from({ length: count ? count : daysInMonth }, (_, i) => new Date(year, month, Math.abs(i + negator)));
|
|
189
|
+
return reverse ? days.reverse() : days;
|
|
190
|
+
},
|
|
191
|
+
getMilliSecondsBetweenDates(date1, date2) {
|
|
192
|
+
return Math.abs(date2.getTime() - date1.getTime());
|
|
193
|
+
},
|
|
194
|
+
getSecondsBetweenDates(date1, date2) {
|
|
195
|
+
return DateHelper.getMilliSecondsBetweenDates(date1, date2);
|
|
196
|
+
},
|
|
197
|
+
getMinutesBetweenDates(date1, date2) {
|
|
198
|
+
return Math.round(DateHelper.getMilliSecondsBetweenDates(date1, date2) / (1000 * 60));
|
|
199
|
+
},
|
|
200
|
+
getHoursBetweenDates(date1, date2) {
|
|
201
|
+
return Math.round(DateHelper.getMilliSecondsBetweenDates(date1, date2) / (1000 * 60 * 60));
|
|
202
|
+
},
|
|
203
|
+
getDaysBetweenDates(date1, date2) {
|
|
204
|
+
return Math.round(DateHelper.getMilliSecondsBetweenDates(date1, date2) / (1000 * 60 * 60 * 24));
|
|
205
|
+
},
|
|
206
|
+
getWeeksBetweenDates(date1, date2) {
|
|
207
|
+
return Math.round(DateHelper.getMilliSecondsBetweenDates(date1, date2) / (1000 * 60 * 60 * 24 * 7));
|
|
208
|
+
},
|
|
209
|
+
getMonthsBetweenDates(date1, date2) {
|
|
210
|
+
const diffYears = date2.getFullYear() - date1.getFullYear();
|
|
211
|
+
return Math.abs((diffYears * 12) + (date2.getMonth() - date1.getMonth()));
|
|
212
|
+
},
|
|
213
|
+
getYearsBetweenDates(date1, date2) {
|
|
214
|
+
return date2.getFullYear() - date1.getFullYear();
|
|
215
|
+
},
|
|
216
|
+
getStartOfDay(date = new Date()) {
|
|
217
|
+
const newDate = DateHelper.clone(date);
|
|
218
|
+
newDate.setUTCHours(0, 0, 0, 0);
|
|
219
|
+
return newDate;
|
|
220
|
+
},
|
|
221
|
+
getEndOfDay(date = new Date()) {
|
|
222
|
+
const newDate = DateHelper.clone(date);
|
|
223
|
+
newDate.setUTCHours(23, 59, 59, 999);
|
|
224
|
+
return newDate;
|
|
225
|
+
},
|
|
226
|
+
getFirstDayInMonth(date = new Date()) {
|
|
227
|
+
return new Date(date.getFullYear(), date.getMonth(), 1);
|
|
228
|
+
},
|
|
229
|
+
getLastDayInMonth(date = new Date()) {
|
|
230
|
+
return new Date(date.getFullYear(), date.getMonth() + 1, 0);
|
|
231
|
+
},
|
|
232
|
+
getStartOfMonth(date = new Date()) {
|
|
233
|
+
return DateHelper.getFirstDayInMonth(date);
|
|
234
|
+
},
|
|
235
|
+
getEndOfMonth(date = new Date()) {
|
|
236
|
+
return DateHelper.getLastDayInMonth(date);
|
|
237
|
+
},
|
|
238
|
+
getFirstDayInYear(date = new Date()) {
|
|
239
|
+
return new Date(date.getFullYear(), 0, 1);
|
|
240
|
+
},
|
|
241
|
+
getLastDayInYear(date = new Date()) {
|
|
242
|
+
return new Date(date.getFullYear(), 11, 31);
|
|
243
|
+
},
|
|
244
|
+
getStartOfYear(date = new Date()) {
|
|
245
|
+
return DateHelper.getFirstDayInYear(date);
|
|
246
|
+
},
|
|
247
|
+
getEndOfYear(date = new Date()) {
|
|
248
|
+
return DateHelper.getLastDayInYear(date);
|
|
249
|
+
},
|
|
250
|
+
getTomorrow(date = new Date()) {
|
|
251
|
+
const tomorrowMidnight = DateHelper.clone(date);
|
|
252
|
+
tomorrowMidnight.setDate(tomorrowMidnight.getDate() + 1);
|
|
253
|
+
tomorrowMidnight.setHours(0, 0, 0, 0);
|
|
254
|
+
return tomorrowMidnight;
|
|
255
|
+
},
|
|
256
|
+
formatDuration(startDate, endDate, config = {}) {
|
|
257
|
+
if (!config.language)
|
|
258
|
+
config.language = {
|
|
259
|
+
sec: "sec",
|
|
260
|
+
hrs: "hrs",
|
|
261
|
+
mins: "mins",
|
|
262
|
+
days: "days",
|
|
263
|
+
};
|
|
264
|
+
let diffInSeconds = Math.abs(Math.floor((endDate.getTime() - startDate.getTime()) / 1000));
|
|
265
|
+
if (diffInSeconds === 0)
|
|
266
|
+
return "0sec";
|
|
267
|
+
const days = Math.floor(diffInSeconds / 86400);
|
|
268
|
+
diffInSeconds %= 86400;
|
|
269
|
+
const hours = Math.floor(diffInSeconds / 3600);
|
|
270
|
+
diffInSeconds %= 3600;
|
|
271
|
+
const minutes = Math.floor(diffInSeconds / 60);
|
|
272
|
+
const seconds = diffInSeconds % 60;
|
|
273
|
+
const parts = [];
|
|
274
|
+
if (days > 0)
|
|
275
|
+
parts.push(`${days}${config.language.days}`);
|
|
276
|
+
if ((parts.length === 0 || !config.showMaxIntervalOnly) && hours > 0)
|
|
277
|
+
parts.push(`${hours}${config.language.hrs}`);
|
|
278
|
+
if ((parts.length === 0 || !config.showMaxIntervalOnly) && minutes > 0)
|
|
279
|
+
parts.push(`${minutes}${config.language.mins}`);
|
|
280
|
+
if ((parts.length === 0 || !config.showMaxIntervalOnly) && seconds > 0)
|
|
281
|
+
parts.push(`${seconds}${config.language.sec}`);
|
|
282
|
+
return parts.join(config.separator ?? " ");
|
|
283
|
+
},
|
|
284
|
+
getNextWeekDay(weekDay, date = new Date()) {
|
|
285
|
+
const targetDayIndex = DateHelper.WEEKDAYS_MAP[weekDay];
|
|
286
|
+
const resultDate = DateHelper.clone(date);
|
|
287
|
+
const currentDayIndex = resultDate.getDay();
|
|
288
|
+
let dayDiff = targetDayIndex - currentDayIndex;
|
|
289
|
+
if (dayDiff <= 0) {
|
|
290
|
+
dayDiff += 7;
|
|
291
|
+
}
|
|
292
|
+
resultDate.setDate(resultDate.getDate() + dayDiff);
|
|
293
|
+
return resultDate;
|
|
294
|
+
},
|
|
295
|
+
getLastWeekdayOfMonth(weekDay, date = new Date()) {
|
|
296
|
+
const targetDayIndex = DateHelper.WEEKDAYS_MAP[weekDay];
|
|
297
|
+
const resultDate = DateHelper.clone(date);
|
|
298
|
+
const currentDayIndex = resultDate.getDay();
|
|
299
|
+
let dayDiff = targetDayIndex - currentDayIndex;
|
|
300
|
+
if (dayDiff <= 0) {
|
|
301
|
+
dayDiff += 7;
|
|
302
|
+
}
|
|
303
|
+
resultDate.setDate(resultDate.getDate() + dayDiff);
|
|
304
|
+
return resultDate;
|
|
305
|
+
},
|
|
306
|
+
getNextTwoWeekDayFrom(fromDate, weekDay, date = new Date()) {
|
|
307
|
+
const targetDayIndex = DateHelper.WEEKDAYS_MAP[weekDay];
|
|
308
|
+
let anchorDate = DateHelper.clone(fromDate);
|
|
309
|
+
let startDayIndex = anchorDate.getDay();
|
|
310
|
+
let daysToFirstTarget = (targetDayIndex - startDayIndex + 7) % 7;
|
|
311
|
+
anchorDate.setDate(anchorDate.getDate() + daysToFirstTarget);
|
|
312
|
+
const msPerDay = 24 * 60 * 60 * 1000;
|
|
313
|
+
const daysSinceAnchor = (date - anchorDate) / msPerDay;
|
|
314
|
+
let intervalsPassed = 0;
|
|
315
|
+
if (daysSinceAnchor > 0) {
|
|
316
|
+
intervalsPassed = Math.ceil(daysSinceAnchor / 14);
|
|
317
|
+
}
|
|
318
|
+
const resultDate = new Date(anchorDate);
|
|
319
|
+
resultDate.setDate(anchorDate.getDate() + (intervalsPassed * 14));
|
|
320
|
+
return resultDate;
|
|
321
|
+
},
|
|
322
|
+
getNextQuarterStart(date = new Date()) {
|
|
323
|
+
const result = DateHelper.clone(date);
|
|
324
|
+
const currentMonth = result.getMonth();
|
|
325
|
+
const nextQuarterMonth = (Math.floor(currentMonth / 3) + 1) * 3;
|
|
326
|
+
result.setMonth(nextQuarterMonth, 1);
|
|
327
|
+
result.setHours(0, 0, 0, 0);
|
|
328
|
+
return result;
|
|
329
|
+
},
|
|
330
|
+
getNextQuarterEnd(date = new Date()) {
|
|
331
|
+
const result = DateHelper.clone(date);
|
|
332
|
+
const currentMonth = result.getMonth();
|
|
333
|
+
const nextQuarterStartMonth = (Math.floor(currentMonth / 3) + 1) * 3;
|
|
334
|
+
result.setMonth(nextQuarterStartMonth + 3, 0);
|
|
335
|
+
result.setHours(23, 59, 59, 999);
|
|
336
|
+
return result;
|
|
337
|
+
},
|
|
338
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class Debugger {
|
|
2
|
+
private static _NAMESPACE;
|
|
3
|
+
private static _SECURE_FIELD_PLACEHOLDER;
|
|
4
|
+
private static _ENABLED_DEBUGGING;
|
|
5
|
+
private static _SECURE_FIELDS;
|
|
6
|
+
static setNamespace: (namespace: string) => string;
|
|
7
|
+
static registerSecureFields: (fields: string[]) => void;
|
|
8
|
+
static log: (...args: any) => false | void;
|
|
9
|
+
static warn: (...args: any) => false | void;
|
|
10
|
+
static error: (...args: any) => false | void;
|
|
11
|
+
private static sanitize;
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { TypeChecker } from "./TypeChecker";
|
|
2
|
+
import { ObjectHelper } from "./ObjectHelper";
|
|
3
|
+
export class Debugger {
|
|
4
|
+
static _NAMESPACE = "NOSEUR.DEBUGGER";
|
|
5
|
+
static _SECURE_FIELD_PLACEHOLDER = "<REDACTED>";
|
|
6
|
+
static _ENABLED_DEBUGGING = (sessionStorage.getItem("NOSEUR.DEBUGGER.ENABLE") ?? localStorage.getItem("NOSEUR.DEBUGGER.ENABLE")) === "true";
|
|
7
|
+
static _SECURE_FIELDS = [
|
|
8
|
+
"access_token",
|
|
9
|
+
"session_token",
|
|
10
|
+
];
|
|
11
|
+
static setNamespace = (namespace) => Debugger._NAMESPACE = namespace;
|
|
12
|
+
static registerSecureFields = (fields) => fields.forEach((field) => Debugger._SECURE_FIELDS.push(field));
|
|
13
|
+
static log = (...args) => Debugger._ENABLED_DEBUGGING && console.log(Debugger._NAMESPACE, ...Debugger.sanitize(...args));
|
|
14
|
+
static warn = (...args) => Debugger._ENABLED_DEBUGGING && console.warn(Debugger._NAMESPACE, ...Debugger.sanitize(...args));
|
|
15
|
+
static error = (...args) => Debugger._ENABLED_DEBUGGING && console.error(Debugger._NAMESPACE, ...Debugger.sanitize(...args));
|
|
16
|
+
static sanitize = (...args) => {
|
|
17
|
+
for (let index = 0; index < args.length; index++) {
|
|
18
|
+
if (!TypeChecker.isArray(args[index]) && TypeChecker.isObject(args[index])) {
|
|
19
|
+
args[index] = ObjectHelper.cloneObject(args[index]);
|
|
20
|
+
Object.keys(args[index]).forEach((key) => {
|
|
21
|
+
if (Debugger._SECURE_FIELDS.includes(key)) {
|
|
22
|
+
args[index][key] = Debugger._SECURE_FIELD_PLACEHOLDER;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return args;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FileInputPreviewType } from "../form/FileInput";
|
|
2
|
+
export declare const FileHelper: {
|
|
3
|
+
fileListToFileArray(fileList: FileList | null): File[];
|
|
4
|
+
humanFileSize(bytes: number, si?: boolean, dp?: number): string;
|
|
5
|
+
fileToText: (file: File) => Promise<string>;
|
|
6
|
+
fileToBase64: (file: File) => Promise<unknown>;
|
|
7
|
+
detectPreviewTypeFromUrl: (url: string) => FileInputPreviewType.PDF | FileInputPreviewType.AUTO | FileInputPreviewType.HTML | FileInputPreviewType.IMAGE | FileInputPreviewType.VIDEO | FileInputPreviewType.AUDIO;
|
|
8
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { FileInputPreviewType } from "../form/FileInput";
|
|
2
|
+
import { BoolHelper } from "./BoolHelper";
|
|
3
|
+
export const FileHelper = {
|
|
4
|
+
fileListToFileArray(fileList) {
|
|
5
|
+
const files = [];
|
|
6
|
+
if (!fileList)
|
|
7
|
+
return files;
|
|
8
|
+
for (let index = 0; index < fileList.length; index++) {
|
|
9
|
+
files.push(fileList.item(index));
|
|
10
|
+
}
|
|
11
|
+
return files;
|
|
12
|
+
},
|
|
13
|
+
// https://stackoverflow.com/questions/10420352/converting-file-size-in-bytes-to-human-readable-string/10420404
|
|
14
|
+
humanFileSize(bytes, si = false, dp = 1) {
|
|
15
|
+
const thresh = si ? 1000 : 1024;
|
|
16
|
+
if (Math.abs(bytes) < thresh) {
|
|
17
|
+
return bytes + ' B';
|
|
18
|
+
}
|
|
19
|
+
const units = si
|
|
20
|
+
? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
|
|
21
|
+
: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
|
|
22
|
+
let u = -1;
|
|
23
|
+
const r = 10 ** dp;
|
|
24
|
+
do {
|
|
25
|
+
bytes /= thresh;
|
|
26
|
+
++u;
|
|
27
|
+
} while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);
|
|
28
|
+
return bytes.toFixed(dp) + ' ' + units[u];
|
|
29
|
+
},
|
|
30
|
+
fileToText: async (file) => {
|
|
31
|
+
return await file.text();
|
|
32
|
+
},
|
|
33
|
+
fileToBase64: (file) => {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
const reader = new FileReader();
|
|
36
|
+
reader.readAsDataURL(file);
|
|
37
|
+
reader.onloadend = () => {
|
|
38
|
+
const base64data = reader.result;
|
|
39
|
+
if (!base64data) {
|
|
40
|
+
reject(new Error("Failed to convert File to Base64"));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
resolve(base64data.substring(base64data.indexOf(',') + 1));
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
detectPreviewTypeFromUrl: (url) => {
|
|
48
|
+
if (BoolHelper.anyEquals((e) => url.includes(e.toLowerCase()), ".pdf")) {
|
|
49
|
+
return FileInputPreviewType.PDF;
|
|
50
|
+
}
|
|
51
|
+
else if (BoolHelper.anyEquals((e) => url.includes(e.toLowerCase()), ".mp3", ".wav")) {
|
|
52
|
+
return FileInputPreviewType.AUDIO;
|
|
53
|
+
}
|
|
54
|
+
else if (BoolHelper.anyEquals((e) => url.includes(e.toLowerCase()), ".html", ".text")) {
|
|
55
|
+
return FileInputPreviewType.HTML;
|
|
56
|
+
}
|
|
57
|
+
else if (BoolHelper.anyEquals((e) => url.includes(e.toLowerCase()), ".mp4", ".mpeg", ".mov")) {
|
|
58
|
+
return FileInputPreviewType.VIDEO;
|
|
59
|
+
}
|
|
60
|
+
else if (BoolHelper.anyEquals((e) => url.includes(e.toLowerCase()), ".png", ".jpg", ".gif", ".jpeg", ".webp")) {
|
|
61
|
+
return FileInputPreviewType.IMAGE;
|
|
62
|
+
}
|
|
63
|
+
return FileInputPreviewType.AUTO;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NoseurObject } from "../constants/Types";
|
|
2
|
+
export declare class FunctionStackManager {
|
|
3
|
+
push: Function;
|
|
4
|
+
popSmoke: Function;
|
|
5
|
+
stack: NoseurObject<Function[]>;
|
|
6
|
+
constructor();
|
|
7
|
+
register(key: string, ...funsies: Function[]): void;
|
|
8
|
+
unRegister(key: string, ...funsies: Function[]): void;
|
|
9
|
+
pop(key: string): Function | undefined;
|
|
10
|
+
popAll(key: string): Function[];
|
|
11
|
+
invokeAll(key: string, ...params: any[]): void;
|
|
12
|
+
invokeAllAndClear(key: string, ...params: any[]): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export class FunctionStackManager {
|
|
2
|
+
push;
|
|
3
|
+
popSmoke;
|
|
4
|
+
stack = {};
|
|
5
|
+
constructor() {
|
|
6
|
+
this.push = this.register.bind(this);
|
|
7
|
+
this.popSmoke = this.invokeAllAndClear.bind(this);
|
|
8
|
+
}
|
|
9
|
+
register(key, ...funsies) {
|
|
10
|
+
if (!this.stack || !key || !funsies)
|
|
11
|
+
return;
|
|
12
|
+
if (!(key in this.stack))
|
|
13
|
+
this.stack[key] = [];
|
|
14
|
+
this.stack[key].push(...funsies);
|
|
15
|
+
}
|
|
16
|
+
unRegister(key, ...funsies) {
|
|
17
|
+
if (!this.stack || !key || !funsies)
|
|
18
|
+
return;
|
|
19
|
+
if (!(key in this.stack))
|
|
20
|
+
this.stack[key] = [];
|
|
21
|
+
for (const funsy of funsies) {
|
|
22
|
+
const index = this.stack[key].indexOf(funsy);
|
|
23
|
+
if (index > -1)
|
|
24
|
+
this.stack[key].splice(index, 1);
|
|
25
|
+
}
|
|
26
|
+
;
|
|
27
|
+
}
|
|
28
|
+
pop(key) {
|
|
29
|
+
if (!this.stack || !key)
|
|
30
|
+
return;
|
|
31
|
+
if (!(key in this.stack) || !this.stack[key].length)
|
|
32
|
+
return;
|
|
33
|
+
return this.stack[key][this.stack[key].length - 1];
|
|
34
|
+
}
|
|
35
|
+
popAll(key) {
|
|
36
|
+
if (!this.stack || !key)
|
|
37
|
+
return [];
|
|
38
|
+
if (!(key in this.stack) || !this.stack[key].length)
|
|
39
|
+
return [];
|
|
40
|
+
const funsies = this.stack[key];
|
|
41
|
+
delete this.stack[key];
|
|
42
|
+
return funsies;
|
|
43
|
+
}
|
|
44
|
+
invokeAll(key, ...params) {
|
|
45
|
+
if (!this.stack || !key)
|
|
46
|
+
return;
|
|
47
|
+
if (!(key in this.stack))
|
|
48
|
+
return;
|
|
49
|
+
this.stack[key].forEach(funsy => funsy(...params));
|
|
50
|
+
}
|
|
51
|
+
invokeAllAndClear(key, ...params) {
|
|
52
|
+
if (!this.stack || !key)
|
|
53
|
+
return;
|
|
54
|
+
if (!(key in this.stack))
|
|
55
|
+
return;
|
|
56
|
+
this.stack[key].forEach(funsy => funsy(...params));
|
|
57
|
+
delete this.stack[key];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare class InputFilter {
|
|
2
|
+
static INT: RegExp;
|
|
3
|
+
static HEX: RegExp;
|
|
4
|
+
static ALPHA: RegExp;
|
|
5
|
+
static NUMBER: RegExp;
|
|
6
|
+
static MONEY: RegExp;
|
|
7
|
+
static ALPHANUM: RegExp;
|
|
8
|
+
static POSITIVE_INT: RegExp;
|
|
9
|
+
static POSITIVE_NUMBER: RegExp;
|
|
10
|
+
static EMAIL: RegExp;
|
|
11
|
+
}
|
|
12
|
+
export declare enum InputSpecialKey {
|
|
13
|
+
ESC = 27,
|
|
14
|
+
TAB = 9,
|
|
15
|
+
RETURN = 13,
|
|
16
|
+
BACKSPACE = 8,
|
|
17
|
+
DELETE = 46
|
|
18
|
+
}
|
|
19
|
+
type InputEventAlias = {
|
|
20
|
+
which?: any;
|
|
21
|
+
altKey?: any;
|
|
22
|
+
ctrlKey?: any;
|
|
23
|
+
keyCode?: any;
|
|
24
|
+
shiftKey?: any;
|
|
25
|
+
charCode?: any;
|
|
26
|
+
preventDefault?: any;
|
|
27
|
+
};
|
|
28
|
+
export declare const InputHelper: {
|
|
29
|
+
isNavKeyPress(event: InputEventAlias): boolean;
|
|
30
|
+
isSpecialKey(event: InputEventAlias): any;
|
|
31
|
+
getKey(event: any): any;
|
|
32
|
+
getCharCode(event: InputEventAlias): any;
|
|
33
|
+
validateEventValue(regex: RegExp, event: React.SyntheticEvent, value: string): boolean;
|
|
34
|
+
validateEventKeyInput(regex: RegExp, event: InputEventAlias): boolean | undefined;
|
|
35
|
+
validate(value: string, filter: RegExp): boolean;
|
|
36
|
+
};
|
|
37
|
+
export {};
|