slimsdk 0.1.55 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/desktop/index.d.ts +13 -12
- package/dist/desktop/index.js +1228 -1967
- package/dist/desktop/index.js.map +1 -1
- package/dist/index-3POan8Vl.d.ts +94 -0
- package/dist/index-B4158M0u.d.ts +21 -0
- package/dist/index-BAQxKstM.d.ts +8 -0
- package/dist/index-BMqjxP9I.d.ts +11 -0
- package/dist/index-CD53Vh6h.d.ts +31 -0
- package/dist/index-CoYHkkyT.d.ts +14 -0
- package/dist/index-D5CUpF9v.d.ts +10 -0
- package/dist/index-DBhzpIiB.d.ts +32 -0
- package/dist/index-DCw_tM-R.d.ts +28 -0
- package/dist/{index-kr8P3eEW.d.ts → index-DWqF-tKY.d.ts} +7 -9
- package/dist/index-DzKPF0ja.d.ts +14 -0
- package/dist/index-jVam7Sxi.d.ts +15 -0
- package/dist/index-uQOR5bdy.d.ts +20 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/mobile/index.d.ts +13 -12
- package/dist/mobile/index.js +299 -808
- package/dist/mobile/index.js.map +1 -1
- package/dist/mod/button/index.d.ts +1 -1
- package/dist/mod/button/index.js +2 -2
- package/dist/mod/button/index.js.map +1 -1
- package/dist/mod/config/index.d.ts +52 -0
- package/dist/mod/{global → config}/index.js +45 -41
- package/dist/mod/config/index.js.map +1 -0
- package/dist/mod/cover/index.d.ts +1 -1
- package/dist/mod/cover/index.js +3 -3
- package/dist/mod/cover/index.js.map +1 -1
- package/dist/mod/dialog/index.d.ts +1 -1
- package/dist/mod/dialog/index.js +13 -13
- package/dist/mod/dialog/index.js.map +1 -1
- package/dist/mod/drawer/index.d.ts +1 -1
- package/dist/mod/drawer/index.js +8 -8
- package/dist/mod/drawer/index.js.map +1 -1
- package/dist/mod/drop/index.d.ts +1 -1
- package/dist/mod/drop/index.js +15 -15
- package/dist/mod/drop/index.js.map +1 -1
- package/dist/mod/hwlink/index.d.ts +2 -2
- package/dist/mod/hwlink/index.js +44 -656
- package/dist/mod/hwlink/index.js.map +1 -1
- package/dist/mod/index.d.ts +7 -7
- package/dist/mod/index.js +61 -59
- package/dist/mod/index.js.map +1 -1
- package/dist/mod/modal/index.d.ts +1 -1
- package/dist/mod/modal/index.js +12 -12
- package/dist/mod/modal/index.js.map +1 -1
- package/dist/mod/tabs/index.d.ts +1 -1
- package/dist/mod/tabs/index.js +8 -6
- package/dist/mod/tabs/index.js.map +1 -1
- package/dist/page/desktop/index.d.ts +3 -3
- package/dist/page/desktop/index.js +228 -801
- package/dist/page/desktop/index.js.map +1 -1
- package/dist/page/index.d.ts +7 -7
- package/dist/page/index.js +12 -12
- package/dist/page/index.js.map +1 -1
- package/dist/page/mobile/index.d.ts +2 -2
- package/dist/page/mobile/index.js +14 -14
- package/dist/page/mobile/index.js.map +1 -1
- package/dist/worker/hubworker.js +1 -1
- package/dist/worker/hubworker.js.map +1 -1
- package/package.json +6 -6
- package/dist/index-B2HHS23A.d.ts +0 -20
- package/dist/index-BQcJsVJ-.d.ts +0 -10
- package/dist/index-Bf_lg-oZ.d.ts +0 -339
- package/dist/index-ChdqOPJq.d.ts +0 -15
- package/dist/index-CzsSwSvp.d.ts +0 -21
- package/dist/index-D3tu8t6p.d.ts +0 -28
- package/dist/index-DQt71MNx.d.ts +0 -31
- package/dist/index-DZdXvqxA.d.ts +0 -10
- package/dist/index-DcvauYN8.d.ts +0 -14
- package/dist/index-Pd7FTiEW.d.ts +0 -32
- package/dist/index-QRbamarh.d.ts +0 -8
- package/dist/mod/global/index.d.ts +0 -57
- package/dist/mod/global/index.js.map +0 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
declare const privacy: () => Promise<string>;
|
|
2
|
+
declare const changelog: (app?: number) => Promise<string>;
|
|
3
|
+
|
|
4
|
+
declare const docs_changelog: typeof changelog;
|
|
5
|
+
declare const docs_privacy: typeof privacy;
|
|
6
|
+
declare namespace docs {
|
|
7
|
+
export { docs_changelog as changelog, docs_privacy as privacy };
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare const authMW: (route: string, ignore?: string[]) => Promise<void>;
|
|
11
|
+
|
|
12
|
+
declare const login: () => void;
|
|
13
|
+
declare const logout: () => void;
|
|
14
|
+
declare const callback: () => void;
|
|
15
|
+
|
|
16
|
+
declare const index$3_authMW: typeof authMW;
|
|
17
|
+
declare const index$3_callback: typeof callback;
|
|
18
|
+
declare const index$3_login: typeof login;
|
|
19
|
+
declare const index$3_logout: typeof logout;
|
|
20
|
+
declare namespace index$3 {
|
|
21
|
+
export { index$3_authMW as authMW, index$3_callback as callback, index$3_login as login, index$3_logout as logout };
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare const getToken: (params: ReqToken) => Promise<ApiRsp>;
|
|
25
|
+
declare const getUserInfo: (token?: string) => Promise<ApiRsp>;
|
|
26
|
+
type ReqToken = {
|
|
27
|
+
grant_type: string;
|
|
28
|
+
client_id: string;
|
|
29
|
+
client_secret?: string;
|
|
30
|
+
username?: string;
|
|
31
|
+
password?: string;
|
|
32
|
+
refresh_token?: string;
|
|
33
|
+
uuid?: string;
|
|
34
|
+
};
|
|
35
|
+
type RspToken = {
|
|
36
|
+
access_token: string;
|
|
37
|
+
token_type: string;
|
|
38
|
+
expires_in: number;
|
|
39
|
+
refresh_token?: string;
|
|
40
|
+
redirect_uri?: string;
|
|
41
|
+
};
|
|
42
|
+
type UserInfo = {
|
|
43
|
+
sub: number;
|
|
44
|
+
name: string;
|
|
45
|
+
utyp: string;
|
|
46
|
+
unit: string;
|
|
47
|
+
unit_id: number;
|
|
48
|
+
role_id: number;
|
|
49
|
+
metadata?: {
|
|
50
|
+
emp_type: string;
|
|
51
|
+
emp_level: string;
|
|
52
|
+
position: string;
|
|
53
|
+
};
|
|
54
|
+
picture?: string;
|
|
55
|
+
updated_at: number;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
type index$2_ReqToken = ReqToken;
|
|
59
|
+
type index$2_RspToken = RspToken;
|
|
60
|
+
type index$2_UserInfo = UserInfo;
|
|
61
|
+
declare const index$2_getToken: typeof getToken;
|
|
62
|
+
declare const index$2_getUserInfo: typeof getUserInfo;
|
|
63
|
+
declare namespace index$2 {
|
|
64
|
+
export { type index$2_ReqToken as ReqToken, type index$2_RspToken as RspToken, type index$2_UserInfo as UserInfo, index$2_getToken as getToken, index$2_getUserInfo as getUserInfo };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
interface ApiRsp {
|
|
68
|
+
status: {
|
|
69
|
+
code: number;
|
|
70
|
+
message: string;
|
|
71
|
+
};
|
|
72
|
+
rows: {
|
|
73
|
+
total: number;
|
|
74
|
+
limit: number;
|
|
75
|
+
offset: number;
|
|
76
|
+
};
|
|
77
|
+
data: unknown;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
type index$1_ApiRsp = ApiRsp;
|
|
81
|
+
declare namespace index$1 {
|
|
82
|
+
export { type index$1_ApiRsp as ApiRsp, index$2 as auth };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
declare const newTask: (worker: new () => Worker) => void;
|
|
86
|
+
declare const checkUpdate: (min?: number) => NodeJS.Timeout;
|
|
87
|
+
|
|
88
|
+
declare const index_checkUpdate: typeof checkUpdate;
|
|
89
|
+
declare const index_newTask: typeof newTask;
|
|
90
|
+
declare namespace index {
|
|
91
|
+
export { index_checkUpdate as checkUpdate, index_newTask as newTask };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { index$3 as a, index as b, docs as d, index$1 as i };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare const confirm: (message: string, params?: {
|
|
2
|
+
color?: string;
|
|
3
|
+
target?: HTMLElement;
|
|
4
|
+
}) => Promise<boolean>;
|
|
5
|
+
declare const alert: (message: string, params?: {
|
|
6
|
+
type?: string;
|
|
7
|
+
target?: HTMLElement;
|
|
8
|
+
}) => Promise<void>;
|
|
9
|
+
declare const toast: (message: string, params?: {
|
|
10
|
+
type?: string;
|
|
11
|
+
target?: HTMLElement;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
|
|
14
|
+
declare const index_alert: typeof alert;
|
|
15
|
+
declare const index_confirm: typeof confirm;
|
|
16
|
+
declare const index_toast: typeof toast;
|
|
17
|
+
declare namespace index {
|
|
18
|
+
export { index_alert as alert, index_confirm as confirm, index_toast as toast };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { alert as a, confirm as c, index as i, toast as t };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const info: () => string;
|
|
2
|
+
type InitParams = {
|
|
3
|
+
svcWorker?: string;
|
|
4
|
+
webNotify?: boolean;
|
|
5
|
+
wakeLock?: boolean;
|
|
6
|
+
btnToTop?: boolean;
|
|
7
|
+
hideTabbar?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const init: (params?: InitParams) => void;
|
|
10
|
+
|
|
11
|
+
export { init as a, info as i };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
type ModalParams = {
|
|
2
|
+
icon: string;
|
|
3
|
+
title: string;
|
|
4
|
+
body: string;
|
|
5
|
+
width?: string;
|
|
6
|
+
button?: {
|
|
7
|
+
save?: boolean;
|
|
8
|
+
cancel?: boolean;
|
|
9
|
+
close?: boolean;
|
|
10
|
+
align?: string;
|
|
11
|
+
};
|
|
12
|
+
target?: HTMLElement;
|
|
13
|
+
};
|
|
14
|
+
declare const create: (params: ModalParams) => HTMLElement;
|
|
15
|
+
declare const close: (modal: HTMLElement) => Promise<void>;
|
|
16
|
+
declare const loading: (modal: HTMLElement) => void;
|
|
17
|
+
declare const ready: (modal: HTMLElement) => void;
|
|
18
|
+
declare const hidden: (modal: HTMLElement) => void;
|
|
19
|
+
declare const visible: (modal: HTMLElement) => void;
|
|
20
|
+
|
|
21
|
+
declare const index_close: typeof close;
|
|
22
|
+
declare const index_create: typeof create;
|
|
23
|
+
declare const index_hidden: typeof hidden;
|
|
24
|
+
declare const index_loading: typeof loading;
|
|
25
|
+
declare const index_ready: typeof ready;
|
|
26
|
+
declare const index_visible: typeof visible;
|
|
27
|
+
declare namespace index {
|
|
28
|
+
export { index_close as close, index_create as create, index_hidden as hidden, index_loading as loading, index_ready as ready, index_visible as visible };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { create as a, close as c, hidden as h, index as i, loading as l, ready as r, visible as v };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const menu: (drop: HTMLElement) => void;
|
|
2
|
+
declare const select: (drop: HTMLElement, icon: string, callBack: (value: string, text: string) => void) => void;
|
|
3
|
+
declare const update: (drop: HTMLElement, icon: string, callBack: (value: string, text: string) => void) => void;
|
|
4
|
+
declare const clear: () => void;
|
|
5
|
+
|
|
6
|
+
declare const index_clear: typeof clear;
|
|
7
|
+
declare const index_menu: typeof menu;
|
|
8
|
+
declare const index_select: typeof select;
|
|
9
|
+
declare const index_update: typeof update;
|
|
10
|
+
declare namespace index {
|
|
11
|
+
export { index_clear as clear, index_menu as menu, index_select as select, index_update as update };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { clear as c, index as i, menu as m, select as s, update as u };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const loading: (cover: HTMLElement, state?: boolean, align?: string, hide?: boolean) => void;
|
|
2
|
+
declare const acdInit: () => void;
|
|
3
|
+
|
|
4
|
+
declare const index_acdInit: typeof acdInit;
|
|
5
|
+
declare const index_loading: typeof loading;
|
|
6
|
+
declare namespace index {
|
|
7
|
+
export { index_acdInit as acdInit, index_loading as loading };
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { acdInit as a, index as i, loading as l };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { error, fullLoad, inform, loading, notFound, ready } from './page/index.js';
|
|
2
|
+
|
|
3
|
+
type PageParams = {
|
|
4
|
+
auth?: boolean;
|
|
5
|
+
size?: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
template?: string;
|
|
9
|
+
button?: {
|
|
10
|
+
side?: boolean;
|
|
11
|
+
tab?: boolean;
|
|
12
|
+
};
|
|
13
|
+
sidebar?: string;
|
|
14
|
+
tabbar?: string;
|
|
15
|
+
actbar?: string;
|
|
16
|
+
uri?: string;
|
|
17
|
+
};
|
|
18
|
+
declare const create: (params: PageParams) => void;
|
|
19
|
+
|
|
20
|
+
type index_PageParams = PageParams;
|
|
21
|
+
declare const index_create: typeof create;
|
|
22
|
+
declare const index_error: typeof error;
|
|
23
|
+
declare const index_fullLoad: typeof fullLoad;
|
|
24
|
+
declare const index_inform: typeof inform;
|
|
25
|
+
declare const index_loading: typeof loading;
|
|
26
|
+
declare const index_notFound: typeof notFound;
|
|
27
|
+
declare const index_ready: typeof ready;
|
|
28
|
+
declare namespace index {
|
|
29
|
+
export { type index_PageParams as PageParams, index_create as create, index_error as error, index_fullLoad as fullLoad, index_inform as inform, index_loading as loading, index_notFound as notFound, index_ready as ready };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { type PageParams as P, create as c, index as i };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { error, fullLoad, inform, loading, notFound, ready } from './page/index.js';
|
|
2
|
+
import { hwLink } from './mod/hwlink/index.js';
|
|
3
|
+
|
|
4
|
+
type PageParams = {
|
|
5
|
+
uri?: string;
|
|
6
|
+
size?: string;
|
|
7
|
+
topbar?: string;
|
|
8
|
+
sidebar?: string;
|
|
9
|
+
template?: string;
|
|
10
|
+
};
|
|
11
|
+
declare const create: (params: PageParams) => boolean;
|
|
12
|
+
declare const clear: () => void;
|
|
13
|
+
|
|
14
|
+
type index_PageParams = PageParams;
|
|
15
|
+
declare const index_clear: typeof clear;
|
|
16
|
+
declare const index_create: typeof create;
|
|
17
|
+
declare const index_error: typeof error;
|
|
18
|
+
declare const index_fullLoad: typeof fullLoad;
|
|
19
|
+
declare const index_hwLink: typeof hwLink;
|
|
20
|
+
declare const index_inform: typeof inform;
|
|
21
|
+
declare const index_loading: typeof loading;
|
|
22
|
+
declare const index_notFound: typeof notFound;
|
|
23
|
+
declare const index_ready: typeof ready;
|
|
24
|
+
declare namespace index {
|
|
25
|
+
export { type index_PageParams as PageParams, index_clear as clear, index_create as create, index_error as error, index_fullLoad as fullLoad, index_hwLink as hwLink, index_inform as inform, index_loading as loading, index_notFound as notFound, index_ready as ready };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { type PageParams as P, create as a, clear as c, index as i };
|
|
@@ -43,16 +43,14 @@ declare const zeroFill: (num: number, opts?: {
|
|
|
43
43
|
declare const numFormat: (num: number, fixed?: number) => string;
|
|
44
44
|
declare const strFormat: (value: string, pattern: string) => string;
|
|
45
45
|
declare const toBase64: (file: File) => Promise<string>;
|
|
46
|
-
type
|
|
46
|
+
type JwtClaims = {
|
|
47
47
|
iss: string;
|
|
48
|
+
aud: string;
|
|
48
49
|
iat: number;
|
|
49
50
|
exp: number;
|
|
50
|
-
|
|
51
|
-
acct: number;
|
|
52
|
-
type: number;
|
|
53
|
-
role: number;
|
|
51
|
+
sub: number;
|
|
54
52
|
};
|
|
55
|
-
declare const jwtParse: (token: string) =>
|
|
53
|
+
declare const jwtParse: (token: string) => JwtClaims | null;
|
|
56
54
|
|
|
57
55
|
type GeoCoords = {
|
|
58
56
|
position: {
|
|
@@ -100,7 +98,7 @@ declare const thbText: typeof ThaiBahtText;
|
|
|
100
98
|
|
|
101
99
|
declare const index_FY_MONTH: typeof FY_MONTH;
|
|
102
100
|
declare const index_FY_MONTH_SHORT: typeof FY_MONTH_SHORT;
|
|
103
|
-
type
|
|
101
|
+
type index_JwtClaims = JwtClaims;
|
|
104
102
|
declare const index_PERIOD_TEXT: typeof PERIOD_TEXT;
|
|
105
103
|
declare const index_THAI_DIGIT: typeof THAI_DIGIT;
|
|
106
104
|
declare const index_TH_MONTH: typeof TH_MONTH;
|
|
@@ -132,7 +130,7 @@ declare const index_toThaiDate: typeof toThaiDate;
|
|
|
132
130
|
declare const index_winPopup: typeof winPopup;
|
|
133
131
|
declare const index_zeroFill: typeof zeroFill;
|
|
134
132
|
declare namespace index {
|
|
135
|
-
export { index_FY_MONTH as FY_MONTH, index_FY_MONTH_SHORT as FY_MONTH_SHORT, type
|
|
133
|
+
export { index_FY_MONTH as FY_MONTH, index_FY_MONTH_SHORT as FY_MONTH_SHORT, type index_JwtClaims as JwtClaims, index_PERIOD_TEXT as PERIOD_TEXT, index_THAI_DIGIT as THAI_DIGIT, index_TH_MONTH as TH_MONTH, index_TH_MONTH_SHORT as TH_MONTH_SHORT, index_ageToBirth as ageToBirth, index_cidCheck as cidCheck, index_cookie as cookie, index_curDate as curDate, index_curMonth as curMonth, index_curTime as curTime, index_curYear as curYear, index_dateDiff as dateDiff, geoLocate as geo, index_getAge as getAge, index_isToday as isToday, index_jwtParse as jwtParse, index_numFormat as numFormat, index_setYear as setYear, index_shiftIndex as shiftIndex, index_strCheck as strCheck, index_strFormat as strFormat, index_thaiDate as thaiDate, index_thaiDigit as thaiDigit, index_thbText as thbText, index_timeDiff as timeDiff, index_timeToStr as timeToStr, index_toBase64 as toBase64, index_toDbDate as toDbDate, index_toThaiDate as toThaiDate, index_winPopup as winPopup, index_zeroFill as zeroFill };
|
|
136
134
|
}
|
|
137
135
|
|
|
138
|
-
export {
|
|
136
|
+
export { toBase64 as A, toDbDate as B, toThaiDate as C, winPopup as D, zeroFill as E, FY_MONTH as F, type JwtClaims as J, PERIOD_TEXT as P, THAI_DIGIT as T, FY_MONTH_SHORT as a, TH_MONTH as b, TH_MONTH_SHORT as c, ageToBirth as d, cidCheck as e, cookie as f, curDate as g, curMonth as h, index as i, curTime as j, curYear as k, dateDiff as l, geoLocate as m, getAge as n, isToday as o, jwtParse as p, numFormat as q, shiftIndex as r, setYear as s, strCheck as t, strFormat as u, thaiDate as v, thaiDigit as w, thbText as x, timeDiff as y, timeToStr as z };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const init: (tabs: HTMLElement, onChange: (index: number, done: () => void) => void) => void;
|
|
2
|
+
declare const loading: (tabs: HTMLElement, index: number) => void;
|
|
3
|
+
declare const ready: (tabs: HTMLElement, index: number) => void;
|
|
4
|
+
declare const setActive: (tbtn: NodeListOf<HTMLButtonElement>, index: number) => void;
|
|
5
|
+
|
|
6
|
+
declare const index_init: typeof init;
|
|
7
|
+
declare const index_loading: typeof loading;
|
|
8
|
+
declare const index_ready: typeof ready;
|
|
9
|
+
declare const index_setActive: typeof setActive;
|
|
10
|
+
declare namespace index {
|
|
11
|
+
export { index_init as init, index_loading as loading, index_ready as ready, index_setActive as setActive };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { init as a, index as i, loading as l, ready as r, setActive as s };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { i as index$1 } from './index-BAQxKstM.js';
|
|
2
|
+
import { i as index$7 } from './index-Dm_WTy_S.js';
|
|
3
|
+
import { i as index$3 } from './index-D5CUpF9v.js';
|
|
4
|
+
import { i as index$2 } from './index-D3N8oo7V.js';
|
|
5
|
+
import { i as index$4 } from './index-B4158M0u.js';
|
|
6
|
+
import { i as index$5 } from './index-uQOR5bdy.js';
|
|
7
|
+
import { i as index$6 } from './index-CoYHkkyT.js';
|
|
8
|
+
import { i as index$8 } from './index-CD53Vh6h.js';
|
|
9
|
+
import { i as index$9 } from './index-DzKPF0ja.js';
|
|
10
|
+
|
|
11
|
+
declare namespace index {
|
|
12
|
+
export { index$1 as button, index$2 as camera, index$3 as cover, index$4 as dialog, index$5 as drawer, index$6 as drop, index$7 as input, index$8 as modal, index$9 as tabs };
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { index as i };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type reqParams = {
|
|
2
|
+
title: string;
|
|
3
|
+
body: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
size?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const create: (params: reqParams) => HTMLElement;
|
|
8
|
+
declare const close: (drawer: HTMLElement) => Promise<void>;
|
|
9
|
+
declare const loading: (drawer: HTMLElement) => void;
|
|
10
|
+
declare const ready: (drawer: HTMLElement) => void;
|
|
11
|
+
|
|
12
|
+
declare const index_close: typeof close;
|
|
13
|
+
declare const index_create: typeof create;
|
|
14
|
+
declare const index_loading: typeof loading;
|
|
15
|
+
declare const index_ready: typeof ready;
|
|
16
|
+
declare namespace index {
|
|
17
|
+
export { index_close as close, index_create as create, index_loading as loading, index_ready as ready };
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { create as a, close as c, index as i, loading as l, ready as r };
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { info } from './
|
|
1
|
+
export { i as info } from './index-BMqjxP9I.js';
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/config/global.ts"],"sourcesContent":["{\n \"name\": \"slimsdk\",\n \"version\": \"0.2.0\",\n \"description\": \"WebApp SDK\",\n \"type\": \"module\",\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./desktop\": \"./dist/desktop/index.js\",\n \"./desktop/\": \"./dist/desktop/\",\n \"./mobile\": \"./dist/mobile/index.js\",\n \"./mobile/\": \"./dist/mobile/\",\n \"./lib\": \"./dist/lib/index.js\",\n \"./worker/\": \"./dist/worker/*.js\",\n \"./page\": \"./dist/page/index.js\",\n \"./page/*\": \"./dist/page/*/index.js\",\n \"./page/*.css\": \"./dist/page/*.css\",\n \"./mod\": \"./dist/mod/index.js\",\n \"./mod/*\": \"./dist/mod/*/index.js\",\n \"./mod/*.css\": \"./dist/mod/*.css\",\n \"./css/\": \"./dist/css/\"\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"tsup && sh ./clean.sh\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.39.1\",\n \"@types/node\": \"^25.2.0\",\n \"eslint\": \"^9.39.2\",\n \"globals\": \"^17.3.0\",\n \"tsup\": \"^8.5.1\",\n \"typescript\": \"^5.9.3\",\n \"typescript-eslint\": \"^8.54.0\"\n },\n \"license\": \"MIT\",\n \"author\": \"hs3lcs@gmail.com\"\n}","/* global */\n/*------------------------------------------------------------*/\nimport { version } from '../../package.json';\nexport const info = () => `sdk ${version}`;\n/*------------------------------------------------------------*/\ntype InitParams = {\n svcWorker?: string,\n webNotify?: boolean,\n wakeLock?: boolean,\n btnToTop?: boolean,\n hideTabbar?: boolean,\n};\nexport const init = (params?: InitParams) => {\n if (params?.svcWorker) svcWorker(params.svcWorker);\n if (params?.webNotify) webNotify();\n if (params?.wakeLock) wakeLock();\n if (params?.btnToTop) btnToTop();\n if (params?.hideTabbar) hideTabbar();\n};\n/*------------------------------------------------------------*/\nconst svcWorker = (worker: string) => {\n if (!('serviceWorker' in navigator)) return;\n navigator.serviceWorker.register(worker, {\n type: 'module'\n }).catch(err => console.warn(err));\n};\n/*------------------------------------------------------------*/\nconst webNotify = () => {\n if (!('Notification' in window)) return;\n Notification.requestPermission()\n .catch(err => console.warn(err));\n};\n/*------------------------------------------------------------*/\nconst wakeLock = () => {\n if (document.hidden) return;\n navigator.wakeLock.request('screen')\n .catch(err => console.warn(err));\n};\n/*------------------------------------------------------------*/\nconst hideTabbar = () => {\n const winHeight = window.innerHeight;\n window.visualViewport?.addEventListener('resize', () => {\n const tabbar = document.querySelector<HTMLElement>('#tabbar');\n if (!tabbar) return;\n if (winHeight != window.innerHeight) {\n tabbar.classList.add('hide');\n } else {\n tabbar.classList.remove('hide');\n }\n });\n};\n/*------------------------------------------------------------*/\nconst app = document.querySelector<HTMLElement>('#app');\nconst btnToTop = () => {\n if (!app) return;\n // create item\n const totop = document.createElement('div');\n totop.id = 'totop';\n totop.innerHTML = /* html */ `\n <button id=\"btn-totop\" class=\"circle purple\" shadow=\"true\"\n title=\"กลับด้านบน\"></button>\n `;\n document.body.appendChild(totop);\n // add event\n totop.querySelector<HTMLButtonElement>('#btn-totop')!.onclick = () => {\n app.scrollTo({ top: 0, behavior: 'smooth' });\n };\n app.addEventListener('scroll', () => {\n if (app.scrollTop > 1000) {\n totop.style.display = 'block';\n if (app.classList.contains('tabbar')) {\n app.style.paddingBottom = '116px';\n } else {\n app.style.paddingBottom = '60px';\n }\n } else {\n totop.style.display = '';\n app.style.paddingBottom = '';\n }\n // tabs mobile shadow\n const tabsMobile = app.querySelector<HTMLElement>('.slim-tabs.mobile .tabs-header');\n if (!tabsMobile) return;\n if (app.scrollTop > 10) {\n tabsMobile.style.boxShadow = `rgba(0, 0, 0, 0.16) 0px 1px 4px`;\n } else {\n tabsMobile.style.boxShadow = '';\n }\n });\n};\n/*------------------------------------------------------------*/"],"mappings":";AAEI,cAAW;;;ACCR,IAAM,OAAO,MAAM,OAAO,OAAO;AAiDxC,IAAM,MAAM,SAAS,cAA2B,MAAM;","names":[]}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { F as FY_MONTH,
|
|
1
|
+
export { F as FY_MONTH, a as FY_MONTH_SHORT, J as JwtClaims, P as PERIOD_TEXT, T as THAI_DIGIT, b as TH_MONTH, c as TH_MONTH_SHORT, d as ageToBirth, e as cidCheck, f as cookie, g as curDate, h as curMonth, j as curTime, k as curYear, l as dateDiff, m as geo, n as getAge, o as isToday, p as jwtParse, q as numFormat, s as setYear, r as shiftIndex, t as strCheck, u as strFormat, v as thaiDate, w as thaiDigit, x as thbText, y as timeDiff, z as timeToStr, A as toBase64, B as toDbDate, C as toThaiDate, D as winPopup, E as zeroFill } from '../index-DWqF-tKY.js';
|
package/dist/lib/index.js
CHANGED
|
@@ -433,7 +433,7 @@ __export(cookie_exports, {
|
|
|
433
433
|
});
|
|
434
434
|
var setItem = (key, val, exp) => {
|
|
435
435
|
const d = /* @__PURE__ */ new Date();
|
|
436
|
-
d.setTime(d.getTime() +
|
|
436
|
+
d.setTime(d.getTime() + 1e3 * exp);
|
|
437
437
|
const expires = "expires=" + d.toUTCString();
|
|
438
438
|
document.cookie = `${key}=${val};${expires};path=/`;
|
|
439
439
|
};
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/dateTime.ts","../../src/lib/utility.ts","../../src/lib/geoLocate.ts","../../src/lib/cookie.ts","../../src/lib/thbText.ts"],"sourcesContent":["/* dateTime */\n/*--------------------------------------------------------------------------------*/\nexport const TH_MONTH: string[] = [\n 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน',\n 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม',\n];\nexport const TH_MONTH_SHORT: string[] = [\n 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.',\n 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.',\n];\nexport const FY_MONTH: string[] = [\n 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม', 'มกราคม', 'กุมภาพันธ์', 'มีนาคม',\n 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน',\n];\nexport const FY_MONTH_SHORT: string[] = [\n 'ต.ค.', 'พ.ย.', 'ธ.ค.', 'ม.ค.', 'ก.พ.', 'มี.ค.',\n 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.',\n];\nexport const PERIOD_TEXT: string[] = ['', 'เวรดึก', 'เวรเช้า', 'เวรบ่าย'];\n// time unix now\nexport const curTime = (): number => new Date().getTime();\n/*--------------------------------------------------------------------------------*/\nexport const curDate = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curMonth = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n return `${yy}-${mm}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curYear = (yearType = ''): number => {\n const dt = new Date();\n const mm = dt.getMonth() + 1;\n if ((yearType == 'fyear' || yearType == 'fy') && mm > 9) {\n return dt.getFullYear() + 1; // ปีงบประมาณ\n }\n return dt.getFullYear(); // ปีปฏิทิน\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeToStr = (unixtime: number, format = ''): string => {\n if (typeof unixtime != 'number') {\n return '';\n }\n const unix = new Date(Number(unixtime));\n const yy = unix.getFullYear();\n const mm = String(unix.getMonth() + 1).padStart(2, '0');\n const dd = String(unix.getDate()).padStart(2, '0');\n const H = String(unix.getHours()).padStart(2, '0');\n const M = String(unix.getMinutes()).padStart(2, '0');\n const S = String(unix.getSeconds()).padStart(2, '0');\n if (format == 'date') {\n return `${yy}-${mm}-${dd}`;\n }\n if (format == 'time') {\n return `${H}:${M}:${S}`;\n }\n return `${yy}-${mm}-${dd} ${H}:${M}:${S}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const shiftIndex = (unixtime = 0) => {\n if (typeof unixtime != 'number') {\n return { num: 0, text: '' };\n }\n const unix = unixtime ? new Date(unixtime) : new Date();\n const H = unix.getHours();\n if (H >= 0 && H < 8) return { num: 1, text: PERIOD_TEXT[1] };\n if (H >= 8 && H < 16) return { num: 2, text: PERIOD_TEXT[2] };\n if (H >= 16) return { num: 3, text: PERIOD_TEXT[3] };\n return { num: 0, text: '' };\n};\n/*--------------------------------------------------------------------------------*/\nexport const setYear = (el: HTMLSelectElement, min = 2020, txt = '') => {\n const dt = new Date();\n let year = dt.getFullYear();\n const month = dt.getMonth() + 1;\n if (month > 6 && month <= 12) {\n year++;\n }\n el.innerHTML = '<option value=\"\">- เลือก -</option>';\n for (let y = min; y <= year; y++) {\n const option = document.createElement('option');\n option.value = `${y}`;\n option.text = `${txt} ${y + 543}`;\n el.appendChild(option);\n }\n};\n/*--------------------------------------------------------------------------------*/\nexport const thaiDate = (date: number | string, format = 0): string => {\n if (typeof date == 'string' && date.indexOf('0000-00-00') >= 0) {\n return '';\n }\n if (typeof date == 'string') {\n date = date.trim();\n date = date.replace(' ', 'T');\n }\n\n const dt = new Date(date);\n if (isNaN(dt.getTime())) return '';\n\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n const H = String(dt.getHours()).padStart(2, '0');\n const M = String(dt.getMinutes()).padStart(2, '0');\n const S = String(dt.getSeconds()).padStart(2, '0');\n\n // 01/01/2500\n if (format == 0) return `${dd}/${mm}/${yy}`;\n // 01/01/2500 00:00\n if (format == 1) return `${dd}/${mm}/${yy} ${H}:${M}`;\n // 01/01/2500 00:00:00\n if (format == 2) return `${dd}/${mm}/${yy} ${H}:${M}:${S}`;\n\n // 01 มกราคม 2500\n if (format == 10) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // 01 ม.ค. 65\n if (format == 11) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n // 01 มกราคม 2500 เวลา 00:00 น.\n if (format == 12) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy} เวลา ${H}:${M} น.`;\n // 01 ม.ค. 65 00:00\n if (format == 13) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)} ${H}:${M}`;\n\n // มกราคม 2500\n if (format == 20) return `${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // ม.ค. 2500\n if (format == 21) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${yy}`;\n // ม.ค. 65\n if (format == 22) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n\n return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const dateDiff = (start: string, stop: string): number => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n const [y1, m1, d1] = start.split('-');\n const [y2, m2, d2] = stop.split('-');\n const date1 = new Date(Number(y1), Number(m1) - 1, Number(d1)).getTime();\n const date2 = new Date(Number(y2), Number(m2) - 1, Number(d2)).getTime();\n return Math.round((date2 - date1) / (1000 * 60 * 60 * 24));\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeDiff = (start: string, stop: string) => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n start = start.replace(' ', 'T');\n stop = stop.replace(' ', 'T');\n const date1 = new Date(start);\n const date2 = new Date(stop);\n let msec = date2.getTime() - date1.getTime();\n\n const hh = Math.floor(msec / 1000 / 60 / 60);\n msec -= hh * 1000 * 60 * 60;\n const mm = Math.floor(msec / 1000 / 60);\n msec -= mm * 1000 * 60;\n const ss = Math.floor(msec / 1000);\n msec -= ss * 1000;\n return { h: hh, m: mm, s: ss };\n};\n/*--------------------------------------------------------------------------------*/\nexport const getAge = (date: string) => {\n if (!date || date.indexOf('0000-00-00') >= 0) {\n return { years: 0, months: 0, days: 0 };\n }\n const now = new Date();\n const nowYear = now.getFullYear();\n const nowMonth = now.getMonth();\n const nowDate = now.getDate();\n\n const [yy, mm, dd] = date.split('-');\n const birth = new Date(Number(yy), Number(mm) - 1, Number(dd));\n const birthYear = birth.getFullYear();\n const birthMonth = birth.getMonth();\n const birthDate = birth.getDate();\n\n let yearAge = nowYear - birthYear;\n let monthAge = 0;\n let dateAge = 0;\n\n if (nowMonth >= birthMonth) {\n monthAge = nowMonth - birthMonth;\n } else {\n yearAge--;\n monthAge = 12 + nowMonth - birthMonth;\n }\n\n if (nowDate >= birthDate) {\n dateAge = nowDate - birthDate;\n } else {\n monthAge--;\n dateAge = 31 + nowDate - birthDate;\n if (monthAge < 0) {\n monthAge = 11;\n yearAge--;\n }\n }\n\n return {\n years: yearAge,\n months: monthAge,\n days: dateAge,\n };\n};\n/*--------------------------------------------------------------------------------*/\nexport const ageToBirth = (year: number, month: number, day: number): string => {\n const y = Number(year);\n const m = Number(month);\n const d = Number(day);\n const dt = new Date(\n new Date().getFullYear() - y,\n new Date().getMonth() - m,\n new Date().getDate() - d,\n );\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`; // 1957-10-10\n};\n/*--------------------------------------------------------------------------------*/\nexport const toDbDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() - 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toThaiDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const isToday = (date: string): boolean => {\n const input = new Date(date);\n const today = new Date();\n if (input.setHours(0, 0, 0, 0) == today.setHours(0, 0, 0, 0)) {\n return true;\n }\n return false;\n};\n/*--------------------------------------------------------------------------------*/\n","/* utility */\nexport const THAI_DIGIT = ['๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙'];\n/*--------------------------------------------------------------------------------*/\nexport const thaiDigit = (input: number | string): string => {\n return input.toString()\n .replace(/\\d/g, (digit: string) => THAI_DIGIT[parseInt(digit)]);\n};\n/*--------------------------------------------------------------------------------*/\nexport const cidCheck = (cid: string): boolean => {\n if (!Number(cid)) return false;\n if (cid.substring(0, 1) == '0') return false;\n if (cid.length !== 13) return false;\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n sum += parseFloat(cid.charAt(i)) * (13 - i);\n }\n return (11 - sum % 11) % 10 === parseFloat(cid.charAt(12));\n};\n/*--------------------------------------------------------------------------------*/\nexport const winPopup = (\n width: number,\n height: number,\n name: string,\n url: string,\n) => {\n const left = (screen.width - width) / 2;\n const top = (screen.height - height) / 2;\n let opt = `width=${width}, height=${height},`;\n opt += `left=${left}, top=${top}`;\n return window.open(url, name, opt);\n};\n/*--------------------------------------------------------------------------------*/\nexport const strCheck = (str: string): string => {\n let out = String(str);\n out = out.replaceAll(\"'\", \"\\\\'\");\n out = out.replaceAll('\"', '\\\\\"');\n out = out.trim();\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const zeroFill = (\n num: number,\n opts?: {\n min?: number;\n max?: number;\n char?: string;\n }\n): string => {\n const n = Number(num);\n const min = opts?.min ? Number(opts.min) : 0;\n const max = opts?.max ? Number(opts.max) : 0;\n const char = opts?.char || opts?.char == '' ? opts.char : '-';\n if (n > 0) {\n return n.toLocaleString(undefined, {\n minimumFractionDigits: min,\n maximumFractionDigits: max,\n });\n } else return char;\n};\n/*--------------------------------------------------------------------------------*/\nexport const numFormat = (num: number, fixed = 0): string => {\n const n = Number(num);\n const f = Number(fixed);\n let out: string = '';\n if (n >= 10 ** 3 && n < 10 ** 6) {\n out = (n / 1000).toFixed(f) + ' K';\n } else if (n >= 10 ** 6) {\n out = (n / 1000000).toFixed(f) + ' M';\n }\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const strFormat = (value: string, pattern: string): string => {\n let i = 0;\n const v = value.toString();\n return pattern.replace(/#/g, () => {\n const out = v[i] ? v[i] : '#';\n i++;\n return out;\n });\n};\n/*--------------------------------------------------------------------------------*/\nexport const toBase64 = (file: File) => new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = err => reject(err);\n});\n/*--------------------------------------------------------------------------------*/\nexport type JwtPack = {\n iss: string;\n iat: number;\n exp: number;\n agcy: number;\n acct: number;\n type: number;\n role: number;\n};\nexport const jwtParse = (token: string): JwtPack | null => {\n try { return JSON.parse(atob(token.split('.')[1])); }\n catch { return null; }\n};\n/*--------------------------------------------------------------------------------*/\n","/* geoLocate */\n/*--------------------------------------------------------------------------------*/\ntype GeoCoords = {\n position: {\n lat: number;\n lng: number;\n };\n accuracy: number;\n heading: number;\n speed: number;\n timestamp: number;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getPosition = (params: {\n accuracy: number;\n timeout: number;\n}) => new Promise<GeoCoords>((resolve, reject) => {\n const timeout = params.timeout ? params.timeout : 10000; // 10 sec\n const acrLimit = params.accuracy ? params.accuracy : 10; // 10 meter\n const buff: GeoCoords[] = [];\n if (navigator.geolocation) {\n // set timeout\n const Tcount = setTimeout(() => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n // return best accuracy\n if (buff.length) {\n buff.sort((a, b) => a.accuracy - b.accuracy);\n resolve(buff[0]);\n }\n else {\n reject('position not found');\n }\n }, timeout);\n // get position\n const watchId = watchPosition((pos) => {\n const lat = pos.coords.latitude;\n const lng = pos.coords.longitude;\n const acr = pos.coords.accuracy;\n const head = pos.coords.heading ? pos.coords.heading : 0;\n const speed = pos.coords.speed ? pos.coords.speed : 0;\n const time = pos.timestamp;\n buff.push({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n // accuracy check\n if (acr <= acrLimit) {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n resolve({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n }\n }, (err) => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n reject(err);\n });\n }\n else reject('not support geolocation');\n});\n/*--------------------------------------------------------------------------------*/\nexport const watchPosition = (\n success: PositionCallback,\n error: PositionErrorCallback\n) => {\n if (navigator.geolocation) {\n return navigator.geolocation.watchPosition(success, error, {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n });\n }\n return 0;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toAddress = async (position: { lat: number; lng: number; }) => {\n const key = 'AIzaSyDsKimgLKSw9DAz_j8Z0HDkLTmyGhxmNiU';\n const latlng = `${position.lat},${position.lng}`;\n let url = `https://maps.googleapis.com/maps/api/geocode/json`;\n url += `?latlng=${latlng}&key=${key}`;\n // fetch\n let address = '';\n await fetch(url).then(response => response.json()).then(resp => {\n const data = resp.results;\n if (data.length) address = data[0].formatted_address;\n });\n return address;\n};\n/*--------------------------------------------------------------------------------*/\n","/* cookie */\n/*--------------------------------------------------------------------------------*/\nexport const setItem = (key: string, val: string, exp: number) => {\n const d = new Date();\n d.setTime(d.getTime() + (exp * 24 * 60 * 60 * 1000));\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = `${key}=${val};${expires};path=/`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getItem = (key: string): string => {\n const pair = document.cookie.split('; ').find(x => x.startsWith(key + '='));\n if (pair) return pair.split('=')[1];\n else return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const removeItem = (key: string) => {\n document.cookie = `${key}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/;`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const clear = () => {\n document.cookie.split(';').forEach(cookie => {\n const eqPos = cookie.indexOf('=');\n const name = eqPos > -1 ? cookie.substring(0, eqPos) : cookie;\n removeItem(name);\n });\n};\n/*--------------------------------------------------------------------------------*/\n","/* thbText */\nconst MAX_POSITION = 6;\nconst UNIT_POSITION = 0;\nconst TEN_POSITION = 1;\n\nconst PRIMARY_UNIT = 'บาท';\nconst SECONDARY_UNIT = 'สตางค์';\nconst WHOLE_NUMBER_TEXT = 'ถ้วน';\nconst NUMBER_TEXTS = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า', 'สิบ'];\nconst UNIT_TEXTS = ['สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'];\n\nconst getIntegerDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[0], 10);\nconst getFractionalDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[1], 10);\nconst hasFractionalDigits = (numberInput: number | undefined) => numberInput !== undefined && numberInput !== 0;\n\nfunction isZeroValue(numberStringInput: string): boolean;\nfunction isZeroValue(numberInput: number): boolean;\nfunction isZeroValue(input: string | number): boolean {\n return parseInt(`${input}`, 10) === 0;\n}\n\nconst isUnitPosition = (position: number) => position == UNIT_POSITION;\nconst isTenPosition = (position: number) => position % MAX_POSITION == TEN_POSITION;\nconst isMillionsPosition = (position: number) => (position >= MAX_POSITION && position % MAX_POSITION == 0);\nconst isLastPosition = (position: number, lengthOfDigits: number) => position + 1 < lengthOfDigits;\n\nconst reverseNumber = (number: number): string => {\n const numberStr = number.toString();\n return numberStr.split('').reverse().join('');\n};\n\nconst getBathUnit = (position: number, number: string) => {\n let unitText = '';\n if (!isUnitPosition(position)) {\n unitText = UNIT_TEXTS[Math.abs(position - 1) % MAX_POSITION];\n }\n if (isZeroValue(number) && !isMillionsPosition(position)) {\n unitText = '';\n }\n return unitText;\n};\n\nconst getBathText = (position: number, number: string, lengthOfDigits: number) => {\n const _number: number = parseInt(number, 10);\n let numberText = NUMBER_TEXTS[_number];\n if (isZeroValue(_number)) {\n return '';\n }\n if (isTenPosition(position) && _number == 1) {\n numberText = '';\n }\n if (isTenPosition(position) && _number == 2) {\n numberText = 'ยี่';\n }\n if (isMillionsPosition(position) && isLastPosition(position, lengthOfDigits) && _number == 1) {\n numberText = 'เอ็ด';\n }\n if (lengthOfDigits > 1 && isUnitPosition(position) && _number == 1) {\n numberText = 'เอ็ด';\n }\n return numberText;\n};\n\nconst convert = (numberInput: number): string => {\n const numberReverse: string = reverseNumber(numberInput);\n let textOutput = '';\n numberReverse.split('').forEach((number: string, i) => {\n textOutput = `${getBathText(i, number, numberReverse.length)}${getBathUnit(i, number)}${textOutput}`;\n });\n return textOutput;\n};\n\nconst parseFloatWithPrecision = (number: string, precision = 2): string => {\n const numberFloatStr = parseFloat(number).toString().split('.');\n const integerUnitStr = numberFloatStr[0];\n const fractionalUnitStr = (numberFloatStr.length == 2) ? numberFloatStr[1].substring(0, precision) : '00';\n return parseFloat(`${integerUnitStr}.${fractionalUnitStr}`).toFixed(precision);\n};\n\nconst convertFullMoney = (numberInput: string) => {\n const numberStr: string = parseFloatWithPrecision(numberInput);\n const integerDigits: number = getIntegerDigits(numberStr);\n const fractionalDigits: number = getFractionalDigits(numberStr);\n const intTextOutput = convert(integerDigits);\n const textOutput = [];\n if (intTextOutput) {\n textOutput.push(`${[intTextOutput, PRIMARY_UNIT].join('')}`);\n }\n if (intTextOutput && !hasFractionalDigits(fractionalDigits)) {\n textOutput.push(WHOLE_NUMBER_TEXT);\n }\n if (hasFractionalDigits(fractionalDigits) && convert(fractionalDigits)) {\n textOutput.push(`${[convert(fractionalDigits), SECONDARY_UNIT].join('')}`);\n }\n return textOutput.join('');\n};\n\nfunction ThaiBahtText(stringNumberInput: string): string;\nfunction ThaiBahtText(numberInput: number): string;\nfunction ThaiBahtText(input: string | number): string {\n if (isNaN(Number(`${input}`))) {\n throw new TypeError('Invalid input. Expected a number or a string representing a number.');\n }\n return convertFullMoney(`${input}`);\n}\n\nexport const thbText = ThaiBahtText;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/dateTime.ts","../../src/lib/utility.ts","../../src/lib/geoLocate.ts","../../src/lib/cookie.ts","../../src/lib/thbText.ts"],"sourcesContent":["/* dateTime */\n/*--------------------------------------------------------------------------------*/\nexport const TH_MONTH: string[] = [\n 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน',\n 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม',\n];\nexport const TH_MONTH_SHORT: string[] = [\n 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.',\n 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.',\n];\nexport const FY_MONTH: string[] = [\n 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม', 'มกราคม', 'กุมภาพันธ์', 'มีนาคม',\n 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน',\n];\nexport const FY_MONTH_SHORT: string[] = [\n 'ต.ค.', 'พ.ย.', 'ธ.ค.', 'ม.ค.', 'ก.พ.', 'มี.ค.',\n 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.',\n];\nexport const PERIOD_TEXT: string[] = ['', 'เวรดึก', 'เวรเช้า', 'เวรบ่าย'];\n// time unix now\nexport const curTime = (): number => new Date().getTime();\n/*--------------------------------------------------------------------------------*/\nexport const curDate = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curMonth = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n return `${yy}-${mm}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curYear = (yearType = ''): number => {\n const dt = new Date();\n const mm = dt.getMonth() + 1;\n if ((yearType == 'fyear' || yearType == 'fy') && mm > 9) {\n return dt.getFullYear() + 1; // ปีงบประมาณ\n }\n return dt.getFullYear(); // ปีปฏิทิน\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeToStr = (unixtime: number, format = ''): string => {\n if (typeof unixtime != 'number') {\n return '';\n }\n const unix = new Date(Number(unixtime));\n const yy = unix.getFullYear();\n const mm = String(unix.getMonth() + 1).padStart(2, '0');\n const dd = String(unix.getDate()).padStart(2, '0');\n const H = String(unix.getHours()).padStart(2, '0');\n const M = String(unix.getMinutes()).padStart(2, '0');\n const S = String(unix.getSeconds()).padStart(2, '0');\n if (format == 'date') {\n return `${yy}-${mm}-${dd}`;\n }\n if (format == 'time') {\n return `${H}:${M}:${S}`;\n }\n return `${yy}-${mm}-${dd} ${H}:${M}:${S}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const shiftIndex = (unixtime = 0) => {\n if (typeof unixtime != 'number') {\n return { num: 0, text: '' };\n }\n const unix = unixtime ? new Date(unixtime) : new Date();\n const H = unix.getHours();\n if (H >= 0 && H < 8) return { num: 1, text: PERIOD_TEXT[1] };\n if (H >= 8 && H < 16) return { num: 2, text: PERIOD_TEXT[2] };\n if (H >= 16) return { num: 3, text: PERIOD_TEXT[3] };\n return { num: 0, text: '' };\n};\n/*--------------------------------------------------------------------------------*/\nexport const setYear = (el: HTMLSelectElement, min = 2020, txt = '') => {\n const dt = new Date();\n let year = dt.getFullYear();\n const month = dt.getMonth() + 1;\n if (month > 6 && month <= 12) {\n year++;\n }\n el.innerHTML = '<option value=\"\">- เลือก -</option>';\n for (let y = min; y <= year; y++) {\n const option = document.createElement('option');\n option.value = `${y}`;\n option.text = `${txt} ${y + 543}`;\n el.appendChild(option);\n }\n};\n/*--------------------------------------------------------------------------------*/\nexport const thaiDate = (date: number | string, format = 0): string => {\n if (typeof date == 'string' && date.indexOf('0000-00-00') >= 0) {\n return '';\n }\n if (typeof date == 'string') {\n date = date.trim();\n date = date.replace(' ', 'T');\n }\n\n const dt = new Date(date);\n if (isNaN(dt.getTime())) return '';\n\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n const H = String(dt.getHours()).padStart(2, '0');\n const M = String(dt.getMinutes()).padStart(2, '0');\n const S = String(dt.getSeconds()).padStart(2, '0');\n\n // 01/01/2500\n if (format == 0) return `${dd}/${mm}/${yy}`;\n // 01/01/2500 00:00\n if (format == 1) return `${dd}/${mm}/${yy} ${H}:${M}`;\n // 01/01/2500 00:00:00\n if (format == 2) return `${dd}/${mm}/${yy} ${H}:${M}:${S}`;\n\n // 01 มกราคม 2500\n if (format == 10) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // 01 ม.ค. 65\n if (format == 11) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n // 01 มกราคม 2500 เวลา 00:00 น.\n if (format == 12) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy} เวลา ${H}:${M} น.`;\n // 01 ม.ค. 65 00:00\n if (format == 13) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)} ${H}:${M}`;\n\n // มกราคม 2500\n if (format == 20) return `${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // ม.ค. 2500\n if (format == 21) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${yy}`;\n // ม.ค. 65\n if (format == 22) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n\n return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const dateDiff = (start: string, stop: string): number => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n const [y1, m1, d1] = start.split('-');\n const [y2, m2, d2] = stop.split('-');\n const date1 = new Date(Number(y1), Number(m1) - 1, Number(d1)).getTime();\n const date2 = new Date(Number(y2), Number(m2) - 1, Number(d2)).getTime();\n return Math.round((date2 - date1) / (1000 * 60 * 60 * 24));\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeDiff = (start: string, stop: string) => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n start = start.replace(' ', 'T');\n stop = stop.replace(' ', 'T');\n const date1 = new Date(start);\n const date2 = new Date(stop);\n let msec = date2.getTime() - date1.getTime();\n\n const hh = Math.floor(msec / 1000 / 60 / 60);\n msec -= hh * 1000 * 60 * 60;\n const mm = Math.floor(msec / 1000 / 60);\n msec -= mm * 1000 * 60;\n const ss = Math.floor(msec / 1000);\n msec -= ss * 1000;\n return { h: hh, m: mm, s: ss };\n};\n/*--------------------------------------------------------------------------------*/\nexport const getAge = (date: string) => {\n if (!date || date.indexOf('0000-00-00') >= 0) {\n return { years: 0, months: 0, days: 0 };\n }\n const now = new Date();\n const nowYear = now.getFullYear();\n const nowMonth = now.getMonth();\n const nowDate = now.getDate();\n\n const [yy, mm, dd] = date.split('-');\n const birth = new Date(Number(yy), Number(mm) - 1, Number(dd));\n const birthYear = birth.getFullYear();\n const birthMonth = birth.getMonth();\n const birthDate = birth.getDate();\n\n let yearAge = nowYear - birthYear;\n let monthAge = 0;\n let dateAge = 0;\n\n if (nowMonth >= birthMonth) {\n monthAge = nowMonth - birthMonth;\n } else {\n yearAge--;\n monthAge = 12 + nowMonth - birthMonth;\n }\n\n if (nowDate >= birthDate) {\n dateAge = nowDate - birthDate;\n } else {\n monthAge--;\n dateAge = 31 + nowDate - birthDate;\n if (monthAge < 0) {\n monthAge = 11;\n yearAge--;\n }\n }\n\n return {\n years: yearAge,\n months: monthAge,\n days: dateAge,\n };\n};\n/*--------------------------------------------------------------------------------*/\nexport const ageToBirth = (year: number, month: number, day: number): string => {\n const y = Number(year);\n const m = Number(month);\n const d = Number(day);\n const dt = new Date(\n new Date().getFullYear() - y,\n new Date().getMonth() - m,\n new Date().getDate() - d,\n );\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`; // 1957-10-10\n};\n/*--------------------------------------------------------------------------------*/\nexport const toDbDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() - 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toThaiDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const isToday = (date: string): boolean => {\n const input = new Date(date);\n const today = new Date();\n if (input.setHours(0, 0, 0, 0) == today.setHours(0, 0, 0, 0)) {\n return true;\n }\n return false;\n};\n/*--------------------------------------------------------------------------------*/\n","/* utility */\nexport const THAI_DIGIT = ['๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙'];\n/*--------------------------------------------------------------------------------*/\nexport const thaiDigit = (input: number | string): string => {\n return input.toString()\n .replace(/\\d/g, (digit: string) => THAI_DIGIT[parseInt(digit)]);\n};\n/*--------------------------------------------------------------------------------*/\nexport const cidCheck = (cid: string): boolean => {\n if (!Number(cid)) return false;\n if (cid.substring(0, 1) == '0') return false;\n if (cid.length !== 13) return false;\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n sum += parseFloat(cid.charAt(i)) * (13 - i);\n }\n return (11 - sum % 11) % 10 === parseFloat(cid.charAt(12));\n};\n/*--------------------------------------------------------------------------------*/\nexport const winPopup = (\n width: number,\n height: number,\n name: string,\n url: string,\n) => {\n const left = (screen.width - width) / 2;\n const top = (screen.height - height) / 2;\n let opt = `width=${width}, height=${height},`;\n opt += `left=${left}, top=${top}`;\n return window.open(url, name, opt);\n};\n/*--------------------------------------------------------------------------------*/\nexport const strCheck = (str: string): string => {\n let out = String(str);\n out = out.replaceAll(\"'\", \"\\\\'\");\n out = out.replaceAll('\"', '\\\\\"');\n out = out.trim();\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const zeroFill = (\n num: number,\n opts?: {\n min?: number;\n max?: number;\n char?: string;\n }\n): string => {\n const n = Number(num);\n const min = opts?.min ? Number(opts.min) : 0;\n const max = opts?.max ? Number(opts.max) : 0;\n const char = opts?.char || opts?.char == '' ? opts.char : '-';\n if (n > 0) {\n return n.toLocaleString(undefined, {\n minimumFractionDigits: min,\n maximumFractionDigits: max,\n });\n } else return char;\n};\n/*--------------------------------------------------------------------------------*/\nexport const numFormat = (num: number, fixed = 0): string => {\n const n = Number(num);\n const f = Number(fixed);\n let out: string = '';\n if (n >= 10 ** 3 && n < 10 ** 6) {\n out = (n / 1000).toFixed(f) + ' K';\n } else if (n >= 10 ** 6) {\n out = (n / 1000000).toFixed(f) + ' M';\n }\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const strFormat = (value: string, pattern: string): string => {\n let i = 0;\n const v = value.toString();\n return pattern.replace(/#/g, () => {\n const out = v[i] ? v[i] : '#';\n i++;\n return out;\n });\n};\n/*--------------------------------------------------------------------------------*/\nexport const toBase64 = (file: File) => new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = err => reject(err);\n});\n/*--------------------------------------------------------------------------------*/\nexport type JwtClaims = {\n iss: string;\n aud: string;\n iat: number;\n exp: number;\n sub: number;\n};\nexport const jwtParse = (token: string): JwtClaims | null => {\n try { return JSON.parse(atob(token.split('.')[1])); }\n catch { return null; }\n};\n/*--------------------------------------------------------------------------------*/\n","/* geoLocate */\n/*--------------------------------------------------------------------------------*/\ntype GeoCoords = {\n position: {\n lat: number;\n lng: number;\n };\n accuracy: number;\n heading: number;\n speed: number;\n timestamp: number;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getPosition = (params: {\n accuracy: number;\n timeout: number;\n}) => new Promise<GeoCoords>((resolve, reject) => {\n const timeout = params.timeout ? params.timeout : 10000; // 10 sec\n const acrLimit = params.accuracy ? params.accuracy : 10; // 10 meter\n const buff: GeoCoords[] = [];\n if (navigator.geolocation) {\n // set timeout\n const Tcount = setTimeout(() => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n // return best accuracy\n if (buff.length) {\n buff.sort((a, b) => a.accuracy - b.accuracy);\n resolve(buff[0]);\n }\n else {\n reject('position not found');\n }\n }, timeout);\n // get position\n const watchId = watchPosition((pos) => {\n const lat = pos.coords.latitude;\n const lng = pos.coords.longitude;\n const acr = pos.coords.accuracy;\n const head = pos.coords.heading ? pos.coords.heading : 0;\n const speed = pos.coords.speed ? pos.coords.speed : 0;\n const time = pos.timestamp;\n buff.push({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n // accuracy check\n if (acr <= acrLimit) {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n resolve({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n }\n }, (err) => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n reject(err);\n });\n }\n else reject('not support geolocation');\n});\n/*--------------------------------------------------------------------------------*/\nexport const watchPosition = (\n success: PositionCallback,\n error: PositionErrorCallback\n) => {\n if (navigator.geolocation) {\n return navigator.geolocation.watchPosition(success, error, {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n });\n }\n return 0;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toAddress = async (position: { lat: number; lng: number; }) => {\n const key = 'AIzaSyDsKimgLKSw9DAz_j8Z0HDkLTmyGhxmNiU';\n const latlng = `${position.lat},${position.lng}`;\n let url = `https://maps.googleapis.com/maps/api/geocode/json`;\n url += `?latlng=${latlng}&key=${key}`;\n // fetch\n let address = '';\n await fetch(url).then(response => response.json()).then(resp => {\n const data = resp.results;\n if (data.length) address = data[0].formatted_address;\n });\n return address;\n};\n/*--------------------------------------------------------------------------------*/\n","/* cookie */\n/*--------------------------------------------------------------------------------*/\nexport const setItem = (key: string, val: string, exp: number) => {\n const d = new Date();\n d.setTime(d.getTime() + (1000 * exp)); // seconds\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = `${key}=${val};${expires};path=/`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getItem = (key: string): string => {\n const pair = document.cookie.split('; ').find(x => x.startsWith(key + '='));\n if (pair) return pair.split('=')[1];\n else return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const removeItem = (key: string) => {\n document.cookie = `${key}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/;`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const clear = () => {\n document.cookie.split(';').forEach(cookie => {\n const eqPos = cookie.indexOf('=');\n const name = eqPos > -1 ? cookie.substring(0, eqPos) : cookie;\n removeItem(name);\n });\n};\n/*--------------------------------------------------------------------------------*/\n","/* thbText */\nconst MAX_POSITION = 6;\nconst UNIT_POSITION = 0;\nconst TEN_POSITION = 1;\n\nconst PRIMARY_UNIT = 'บาท';\nconst SECONDARY_UNIT = 'สตางค์';\nconst WHOLE_NUMBER_TEXT = 'ถ้วน';\nconst NUMBER_TEXTS = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า', 'สิบ'];\nconst UNIT_TEXTS = ['สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'];\n\nconst getIntegerDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[0], 10);\nconst getFractionalDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[1], 10);\nconst hasFractionalDigits = (numberInput: number | undefined) => numberInput !== undefined && numberInput !== 0;\n\nfunction isZeroValue(numberStringInput: string): boolean;\nfunction isZeroValue(numberInput: number): boolean;\nfunction isZeroValue(input: string | number): boolean {\n return parseInt(`${input}`, 10) === 0;\n}\n\nconst isUnitPosition = (position: number) => position == UNIT_POSITION;\nconst isTenPosition = (position: number) => position % MAX_POSITION == TEN_POSITION;\nconst isMillionsPosition = (position: number) => (position >= MAX_POSITION && position % MAX_POSITION == 0);\nconst isLastPosition = (position: number, lengthOfDigits: number) => position + 1 < lengthOfDigits;\n\nconst reverseNumber = (number: number): string => {\n const numberStr = number.toString();\n return numberStr.split('').reverse().join('');\n};\n\nconst getBathUnit = (position: number, number: string) => {\n let unitText = '';\n if (!isUnitPosition(position)) {\n unitText = UNIT_TEXTS[Math.abs(position - 1) % MAX_POSITION];\n }\n if (isZeroValue(number) && !isMillionsPosition(position)) {\n unitText = '';\n }\n return unitText;\n};\n\nconst getBathText = (position: number, number: string, lengthOfDigits: number) => {\n const _number: number = parseInt(number, 10);\n let numberText = NUMBER_TEXTS[_number];\n if (isZeroValue(_number)) {\n return '';\n }\n if (isTenPosition(position) && _number == 1) {\n numberText = '';\n }\n if (isTenPosition(position) && _number == 2) {\n numberText = 'ยี่';\n }\n if (isMillionsPosition(position) && isLastPosition(position, lengthOfDigits) && _number == 1) {\n numberText = 'เอ็ด';\n }\n if (lengthOfDigits > 1 && isUnitPosition(position) && _number == 1) {\n numberText = 'เอ็ด';\n }\n return numberText;\n};\n\nconst convert = (numberInput: number): string => {\n const numberReverse: string = reverseNumber(numberInput);\n let textOutput = '';\n numberReverse.split('').forEach((number: string, i) => {\n textOutput = `${getBathText(i, number, numberReverse.length)}${getBathUnit(i, number)}${textOutput}`;\n });\n return textOutput;\n};\n\nconst parseFloatWithPrecision = (number: string, precision = 2): string => {\n const numberFloatStr = parseFloat(number).toString().split('.');\n const integerUnitStr = numberFloatStr[0];\n const fractionalUnitStr = (numberFloatStr.length == 2) ? numberFloatStr[1].substring(0, precision) : '00';\n return parseFloat(`${integerUnitStr}.${fractionalUnitStr}`).toFixed(precision);\n};\n\nconst convertFullMoney = (numberInput: string) => {\n const numberStr: string = parseFloatWithPrecision(numberInput);\n const integerDigits: number = getIntegerDigits(numberStr);\n const fractionalDigits: number = getFractionalDigits(numberStr);\n const intTextOutput = convert(integerDigits);\n const textOutput = [];\n if (intTextOutput) {\n textOutput.push(`${[intTextOutput, PRIMARY_UNIT].join('')}`);\n }\n if (intTextOutput && !hasFractionalDigits(fractionalDigits)) {\n textOutput.push(WHOLE_NUMBER_TEXT);\n }\n if (hasFractionalDigits(fractionalDigits) && convert(fractionalDigits)) {\n textOutput.push(`${[convert(fractionalDigits), SECONDARY_UNIT].join('')}`);\n }\n return textOutput.join('');\n};\n\nfunction ThaiBahtText(stringNumberInput: string): string;\nfunction ThaiBahtText(numberInput: number): string;\nfunction ThaiBahtText(input: string | number): string {\n if (isNaN(Number(`${input}`))) {\n throw new TypeError('Invalid input. Expected a number or a string representing a number.');\n }\n return convertFullMoney(`${input}`);\n}\n\nexport const thbText = ThaiBahtText;\n"],"mappings":"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","names":[]}
|