@operato/utils 0.3.4 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/dist/src/context-path.d.ts +6 -0
- package/dist/src/context-path.js +16 -0
- package/dist/src/context-path.js.map +1 -0
- package/dist/src/fullscreen.d.ts +14 -0
- package/dist/src/fullscreen.js +69 -0
- package/dist/src/fullscreen.js.map +1 -0
- package/dist/src/index.d.ts +8 -2
- package/dist/src/index.js +8 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mixins/infinite-scrollable.d.ts +15 -0
- package/dist/src/mixins/infinite-scrollable.js +33 -0
- package/dist/src/mixins/infinite-scrollable.js.map +1 -0
- package/dist/src/os.d.ts +16 -0
- package/dist/src/os.js +26 -0
- package/dist/src/os.js.map +1 -0
- package/dist/src/parse-jwt.d.ts +1 -0
- package/dist/src/parse-jwt.js +17 -0
- package/dist/src/parse-jwt.js.map +1 -0
- package/dist/src/password-pattern.d.ts +11 -0
- package/dist/src/password-pattern.js +26 -0
- package/dist/src/password-pattern.js.map +1 -0
- package/dist/src/swipe-listener.d.ts +10 -0
- package/dist/src/swipe-listener.js +257 -0
- package/dist/src/swipe-listener.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -3
- package/src/context-path.ts +17 -0
- package/src/fullscreen.ts +82 -0
- package/src/index.ts +8 -2
- package/src/mixins/infinite-scrollable.ts +40 -0
- package/src/os.ts +28 -0
- package/src/parse-jwt.ts +21 -0
- package/src/password-pattern.ts +48 -0
- package/src/swipe-listener.ts +290 -0
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,81 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
### [0.3.13](https://github.com/hatiolab/operato/compare/v0.3.12...v0.3.13) (2022-01-15)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @operato/utils
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
### [0.3.12](https://github.com/hatiolab/operato/compare/v0.3.11...v0.3.12) (2022-01-15)
|
15
|
+
|
16
|
+
**Note:** Version bump only for package @operato/utils
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
### [0.3.11](https://github.com/hatiolab/operato/compare/v0.3.10...v0.3.11) (2022-01-15)
|
23
|
+
|
24
|
+
**Note:** Version bump only for package @operato/utils
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
### [0.3.10](https://github.com/hatiolab/operato/compare/v0.3.9...v0.3.10) (2022-01-15)
|
31
|
+
|
32
|
+
|
33
|
+
### :bug: Bug Fix
|
34
|
+
|
35
|
+
* data-grist record-view ([aa71ec5](https://github.com/hatiolab/operato/commit/aa71ec5600f4dbccd05fcbc249445c73a41d2168))
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
### [0.3.9](https://github.com/hatiolab/operato/compare/v0.3.8...v0.3.9) (2022-01-15)
|
40
|
+
|
41
|
+
|
42
|
+
### :bug: Bug Fix
|
43
|
+
|
44
|
+
* move @operato/board/utils to @operato/utils ([06ba865](https://github.com/hatiolab/operato/commit/06ba865ac70bd65166fd20b6d23cc5241d9fca17))
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
### [0.3.8](https://github.com/hatiolab/operato/compare/v0.3.7...v0.3.8) (2022-01-14)
|
49
|
+
|
50
|
+
**Note:** Version bump only for package @operato/utils
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
### [0.3.7](https://github.com/hatiolab/operato/compare/v0.3.6...v0.3.7) (2022-01-09)
|
57
|
+
|
58
|
+
**Note:** Version bump only for package @operato/utils
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
### [0.3.6](https://github.com/hatiolab/operato/compare/v0.3.5...v0.3.6) (2022-01-09)
|
65
|
+
|
66
|
+
**Note:** Version bump only for package @operato/utils
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
### [0.3.5](https://github.com/hatiolab/operato/compare/v0.3.4...v0.3.5) (2022-01-09)
|
73
|
+
|
74
|
+
|
75
|
+
### :rocket: New Features
|
76
|
+
|
77
|
+
* data-grist filter-form support queryFilters property ([e477ede](https://github.com/hatiolab/operato/commit/e477ede184dac7bc6c40d4aab73c2f8156edaef6))
|
78
|
+
|
79
|
+
|
80
|
+
|
6
81
|
### [0.3.4](https://github.com/hatiolab/operato/compare/v0.3.3...v0.3.4) (2022-01-03)
|
7
82
|
|
8
83
|
**Note:** Version bump only for package @operato/utils
|
@@ -0,0 +1,16 @@
|
|
1
|
+
const CONTEXT_PATH_PREFIX = 'domain|business';
|
2
|
+
export function getPathInfo(pathname) {
|
3
|
+
var regexp = new RegExp(`(/(${CONTEXT_PATH_PREFIX})/([^/]+))?(/?.*)`);
|
4
|
+
var matched = pathname.match(regexp);
|
5
|
+
var contextPath = (matched === null || matched === void 0 ? void 0 : matched[1]) || '';
|
6
|
+
var prefix = (matched === null || matched === void 0 ? void 0 : matched[2]) || '';
|
7
|
+
var domain = (matched === null || matched === void 0 ? void 0 : matched[3]) || '';
|
8
|
+
var path = matched === null || matched === void 0 ? void 0 : matched[4];
|
9
|
+
return {
|
10
|
+
contextPath,
|
11
|
+
prefix,
|
12
|
+
domain,
|
13
|
+
path
|
14
|
+
};
|
15
|
+
}
|
16
|
+
//# sourceMappingURL=context-path.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"context-path.js","sourceRoot":"","sources":["../../src/context-path.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AAE7C,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,mBAAmB,mBAAmB,CAAC,CAAA;IACrE,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACpC,IAAI,WAAW,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,KAAI,EAAE,CAAA;IACpC,IAAI,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,KAAI,EAAE,CAAA;IAC/B,IAAI,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,KAAI,EAAE,CAAA;IAC/B,IAAI,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,CAAA;IAEvB,OAAO;QACL,WAAW;QACX,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAA;AACH,CAAC","sourcesContent":["const CONTEXT_PATH_PREFIX = 'domain|business'\n\nexport function getPathInfo(pathname: string) {\n var regexp = new RegExp(`(/(${CONTEXT_PATH_PREFIX})/([^/]+))?(/?.*)`)\n var matched = pathname.match(regexp)\n var contextPath = matched?.[1] || ''\n var prefix = matched?.[2] || ''\n var domain = matched?.[3] || ''\n var path = matched?.[4]\n\n return {\n contextPath,\n prefix,\n domain,\n path\n }\n}\n"]}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/**
|
2
|
+
* 풀스크린 전환 이후와 풀스크린 해제 이후에 호출되는 콜백함수
|
3
|
+
* @callback FullscreenCallback
|
4
|
+
*/
|
5
|
+
export declare type FullscreenCallback = () => void;
|
6
|
+
/**
|
7
|
+
* 엘리먼트를 풀스크린으로 표시되도록 한다.
|
8
|
+
* @param {HTMLElement} element 대상 엘리먼트
|
9
|
+
* @param {FullscreenCallback} afterfull 풀스크린이 된 이후에 호출되는 콜백함수
|
10
|
+
* @param {FullscreenCallback} afterfinish 풀스크린이 해제된 이후에 호출되는 콜백함수
|
11
|
+
*/
|
12
|
+
export declare function fullscreen(element: HTMLElement, afterfull?: FullscreenCallback, afterfinish?: FullscreenCallback): void;
|
13
|
+
export declare function exitfullscreen(): void;
|
14
|
+
export declare function togglefullscreen(element: HTMLElement, afterfull?: FullscreenCallback, afterfinish?: FullscreenCallback): void;
|
@@ -0,0 +1,69 @@
|
|
1
|
+
/**
|
2
|
+
* 엘리먼트를 풀스크린으로 표시되도록 한다.
|
3
|
+
* @param {HTMLElement} element 대상 엘리먼트
|
4
|
+
* @param {FullscreenCallback} afterfull 풀스크린이 된 이후에 호출되는 콜백함수
|
5
|
+
* @param {FullscreenCallback} afterfinish 풀스크린이 해제된 이후에 호출되는 콜백함수
|
6
|
+
*/
|
7
|
+
export function fullscreen(element, afterfull, afterfinish) {
|
8
|
+
var org_width = element.style.width;
|
9
|
+
var org_height = element.style.height;
|
10
|
+
function _fullscreen_callback(e) {
|
11
|
+
if (!document.fullscreenElement &&
|
12
|
+
//@ts-ignore
|
13
|
+
!document.mozFullScreen &&
|
14
|
+
//@ts-ignore
|
15
|
+
!document.webkitIsFullScreen &&
|
16
|
+
//@ts-ignore
|
17
|
+
!document.msFullscreenElement) {
|
18
|
+
;
|
19
|
+
['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event => document.removeEventListener(event, _fullscreen_callback));
|
20
|
+
element.style.width = org_width;
|
21
|
+
element.style.height = org_height;
|
22
|
+
afterfinish && afterfinish();
|
23
|
+
}
|
24
|
+
else {
|
25
|
+
element.style.width = '100%';
|
26
|
+
element.style.height = '100%';
|
27
|
+
afterfull && afterfull();
|
28
|
+
}
|
29
|
+
}
|
30
|
+
;
|
31
|
+
['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event => document.addEventListener(event, _fullscreen_callback));
|
32
|
+
if (element.requestFullscreen)
|
33
|
+
element.requestFullscreen();
|
34
|
+
//@ts-ignore
|
35
|
+
else if (element.webkitRequestFullScreen)
|
36
|
+
element.webkitRequestFullScreen();
|
37
|
+
//@ts-ignore
|
38
|
+
else if (element.mozRequestFullScreen)
|
39
|
+
element.mozRequestFullScreen();
|
40
|
+
//@ts-ignore
|
41
|
+
else if (element.msRequestFullscreen)
|
42
|
+
element.msRequestFullscreen();
|
43
|
+
}
|
44
|
+
export function exitfullscreen() {
|
45
|
+
if (document.exitFullscreen)
|
46
|
+
document.exitFullscreen();
|
47
|
+
//@ts-ignore
|
48
|
+
else if (document.mozCancelFullScreen)
|
49
|
+
document.mozCancelFullScreen();
|
50
|
+
//@ts-ignore
|
51
|
+
else if (document.webkitCancelFullScreen)
|
52
|
+
document.webkitCancelFullScreen();
|
53
|
+
//@ts-ignore
|
54
|
+
else if (document.msExitFullscreen)
|
55
|
+
document.msExitFullscreen();
|
56
|
+
}
|
57
|
+
export function togglefullscreen(element, afterfull, afterfinish) {
|
58
|
+
if (!document.fullscreenElement &&
|
59
|
+
//@ts-ignore
|
60
|
+
!document.mozFullScreen &&
|
61
|
+
//@ts-ignore
|
62
|
+
!document.webkitIsFullScreen &&
|
63
|
+
//@ts-ignore
|
64
|
+
!document.msFullscreenElement)
|
65
|
+
fullscreen(element, afterfull, afterfinish);
|
66
|
+
else
|
67
|
+
exitfullscreen();
|
68
|
+
}
|
69
|
+
//# sourceMappingURL=fullscreen.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"fullscreen.js","sourceRoot":"","sources":["../../src/fullscreen.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAoB,EAAE,SAA8B,EAAE,WAAgC;IAC/G,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;IACnC,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;IAErC,SAAS,oBAAoB,CAAC,CAAQ;QACpC,IACE,CAAC,QAAQ,CAAC,iBAAiB;YAC3B,YAAY;YACZ,CAAC,QAAQ,CAAC,aAAa;YACvB,YAAY;YACZ,CAAC,QAAQ,CAAC,kBAAkB;YAC5B,YAAY;YACZ,CAAC,QAAQ,CAAC,mBAAmB,EAC7B;YACA,CAAC;YAAA,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACpF,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAC1D,CAAA;YAED,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;YAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAA;YAEjC,WAAW,IAAI,WAAW,EAAE,CAAA;SAC7B;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;YAC5B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;YAE7B,SAAS,IAAI,SAAS,EAAE,CAAA;SACzB;IACH,CAAC;IAED,CAAC;IAAA,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACpF,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CACvD,CAAA;IAED,IAAI,OAAO,CAAC,iBAAiB;QAAE,OAAO,CAAC,iBAAiB,EAAE,CAAA;IAC1D,YAAY;SACP,IAAI,OAAO,CAAC,uBAAuB;QAAE,OAAO,CAAC,uBAAuB,EAAE,CAAA;IAC3E,YAAY;SACP,IAAI,OAAO,CAAC,oBAAoB;QAAE,OAAO,CAAC,oBAAoB,EAAE,CAAA;IACrE,YAAY;SACP,IAAI,OAAO,CAAC,mBAAmB;QAAE,OAAO,CAAC,mBAAmB,EAAE,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,QAAQ,CAAC,cAAc;QAAE,QAAQ,CAAC,cAAc,EAAE,CAAA;IACtD,YAAY;SACP,IAAI,QAAQ,CAAC,mBAAmB;QAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAA;IACrE,YAAY;SACP,IAAI,QAAQ,CAAC,sBAAsB;QAAE,QAAQ,CAAC,sBAAsB,EAAE,CAAA;IAC3E,YAAY;SACP,IAAI,QAAQ,CAAC,gBAAgB;QAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAoB,EACpB,SAA8B,EAC9B,WAAgC;IAEhC,IACE,CAAC,QAAQ,CAAC,iBAAiB;QAC3B,YAAY;QACZ,CAAC,QAAQ,CAAC,aAAa;QACvB,YAAY;QACZ,CAAC,QAAQ,CAAC,kBAAkB;QAC5B,YAAY;QACZ,CAAC,QAAQ,CAAC,mBAAmB;QAE7B,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;;QACxC,cAAc,EAAE,CAAA;AACvB,CAAC","sourcesContent":["/**\n * 풀스크린 전환 이후와 풀스크린 해제 이후에 호출되는 콜백함수\n * @callback FullscreenCallback\n */\nexport type FullscreenCallback = () => void\n\n/**\n * 엘리먼트를 풀스크린으로 표시되도록 한다.\n * @param {HTMLElement} element 대상 엘리먼트\n * @param {FullscreenCallback} afterfull 풀스크린이 된 이후에 호출되는 콜백함수\n * @param {FullscreenCallback} afterfinish 풀스크린이 해제된 이후에 호출되는 콜백함수\n */\nexport function fullscreen(element: HTMLElement, afterfull?: FullscreenCallback, afterfinish?: FullscreenCallback) {\n var org_width = element.style.width\n var org_height = element.style.height\n\n function _fullscreen_callback(e: Event) {\n if (\n !document.fullscreenElement &&\n //@ts-ignore\n !document.mozFullScreen &&\n //@ts-ignore\n !document.webkitIsFullScreen &&\n //@ts-ignore\n !document.msFullscreenElement\n ) {\n ;['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event =>\n document.removeEventListener(event, _fullscreen_callback)\n )\n\n element.style.width = org_width\n element.style.height = org_height\n\n afterfinish && afterfinish()\n } else {\n element.style.width = '100%'\n element.style.height = '100%'\n\n afterfull && afterfull()\n }\n }\n\n ;['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event =>\n document.addEventListener(event, _fullscreen_callback)\n )\n\n if (element.requestFullscreen) element.requestFullscreen()\n //@ts-ignore\n else if (element.webkitRequestFullScreen) element.webkitRequestFullScreen()\n //@ts-ignore\n else if (element.mozRequestFullScreen) element.mozRequestFullScreen()\n //@ts-ignore\n else if (element.msRequestFullscreen) element.msRequestFullscreen()\n}\n\nexport function exitfullscreen() {\n if (document.exitFullscreen) document.exitFullscreen()\n //@ts-ignore\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n //@ts-ignore\n else if (document.webkitCancelFullScreen) document.webkitCancelFullScreen()\n //@ts-ignore\n else if (document.msExitFullscreen) document.msExitFullscreen()\n}\n\nexport function togglefullscreen(\n element: HTMLElement,\n afterfull?: FullscreenCallback,\n afterfinish?: FullscreenCallback\n) {\n if (\n !document.fullscreenElement &&\n //@ts-ignore\n !document.mozFullScreen &&\n //@ts-ignore\n !document.webkitIsFullScreen &&\n //@ts-ignore\n !document.msFullscreenElement\n )\n fullscreen(element, afterfull, afterfinish)\n else exitfullscreen()\n}\n"]}
|
package/dist/src/index.d.ts
CHANGED
@@ -1,2 +1,8 @@
|
|
1
|
-
export * from './sleep';
|
2
|
-
export * from './file-drop-helper';
|
1
|
+
export * from './sleep.js';
|
2
|
+
export * from './file-drop-helper.js';
|
3
|
+
export * from './context-path.js';
|
4
|
+
export * from './os.js';
|
5
|
+
export * from './swipe-listener.js';
|
6
|
+
export * from './fullscreen.js';
|
7
|
+
export * from './parse-jwt.js';
|
8
|
+
export * from './password-pattern.js';
|
package/dist/src/index.js
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
-
export * from './sleep';
|
2
|
-
export * from './file-drop-helper';
|
1
|
+
export * from './sleep.js';
|
2
|
+
export * from './file-drop-helper.js';
|
3
|
+
export * from './context-path.js';
|
4
|
+
export * from './os.js';
|
5
|
+
export * from './swipe-listener.js';
|
6
|
+
export * from './fullscreen.js';
|
7
|
+
export * from './parse-jwt.js';
|
8
|
+
export * from './password-pattern.js';
|
3
9
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA","sourcesContent":["export * from './sleep.js'\nexport * from './file-drop-helper.js'\nexport * from './context-path.js'\nexport * from './os.js'\nexport * from './swipe-listener.js'\nexport * from './fullscreen.js'\nexport * from './parse-jwt.js'\nexport * from './password-pattern.js'\n"]}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
declare type Constructor = new (...args: any[]) => {};
|
2
|
+
export default function InfiniteScrollable<TBase extends Constructor>(Base: TBase): {
|
3
|
+
new (...args: any[]): {
|
4
|
+
_infiniteScrollOptions: {
|
5
|
+
threshold: number;
|
6
|
+
limit: number;
|
7
|
+
totalProp: string;
|
8
|
+
pageProp: string;
|
9
|
+
};
|
10
|
+
onScroll: import("lodash").DebouncedFunc<(e: any) => void>;
|
11
|
+
readonly scrollTargetEl: HTMLElement | null;
|
12
|
+
scrollAction(): Promise<void>;
|
13
|
+
};
|
14
|
+
} & TBase;
|
15
|
+
export {};
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import debounce from 'lodash/debounce';
|
2
|
+
export default function InfiniteScrollable(Base) {
|
3
|
+
return class Scrolling extends Base {
|
4
|
+
constructor() {
|
5
|
+
super(...arguments);
|
6
|
+
this._infiniteScrollOptions = {
|
7
|
+
threshold: 20,
|
8
|
+
limit: 30,
|
9
|
+
totalProp: '_total',
|
10
|
+
pageProp: '_page'
|
11
|
+
};
|
12
|
+
this.onScroll = debounce(e => {
|
13
|
+
var el = this.scrollTargetEl;
|
14
|
+
if (!el) {
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
var { threshold = 0, limit, totalProp, pageProp } = this._infiniteScrollOptions;
|
18
|
+
if (this[pageProp] < this[totalProp] / limit &&
|
19
|
+
el.scrollHeight - el.clientHeight <= el.scrollTop + threshold) {
|
20
|
+
this.scrollAction();
|
21
|
+
}
|
22
|
+
}, 300);
|
23
|
+
}
|
24
|
+
get scrollTargetEl() {
|
25
|
+
console.warn('scroll target element is not defined.');
|
26
|
+
return null;
|
27
|
+
}
|
28
|
+
async scrollAction() {
|
29
|
+
console.warn('scroll action not implemented.');
|
30
|
+
}
|
31
|
+
};
|
32
|
+
}
|
33
|
+
//# sourceMappingURL=infinite-scrollable.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"infinite-scrollable.js","sourceRoot":"","sources":["../../../src/mixins/infinite-scrollable.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAA;AAItC,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAA4B,IAAW;IAC/E,OAAO,MAAM,SAAU,SAAQ,IAAI;QAA5B;;YACL,2BAAsB,GAAG;gBACvB,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,EAAE;gBACT,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,OAAO;aAClB,CAAA;YAED,aAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACtB,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAA;gBAC5B,IAAI,CAAC,EAAE,EAAE;oBACP,OAAM;iBACP;gBAED,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAA;gBAE/E,IACG,IAAY,CAAC,QAAQ,CAAC,GAAI,IAAY,CAAC,SAAS,CAAC,GAAG,KAAK;oBAC1D,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,SAAS,GAAG,SAAS,EAC7D;oBACA,IAAI,CAAC,YAAY,EAAE,CAAA;iBACpB;YACH,CAAC,EAAE,GAAG,CAAC,CAAA;QAWT,CAAC;QATC,IAAI,cAAc;YAChB,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;YAErD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,CAAC,YAAY;YAChB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAChD,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["import debounce from 'lodash/debounce'\n\ntype Constructor = new (...args: any[]) => {}\n\nexport default function InfiniteScrollable<TBase extends Constructor>(Base: TBase) {\n return class Scrolling extends Base {\n _infiniteScrollOptions = {\n threshold: 20,\n limit: 30,\n totalProp: '_total',\n pageProp: '_page'\n }\n\n onScroll = debounce(e => {\n var el = this.scrollTargetEl\n if (!el) {\n return\n }\n\n var { threshold = 0, limit, totalProp, pageProp } = this._infiniteScrollOptions\n\n if (\n (this as any)[pageProp] < (this as any)[totalProp] / limit &&\n el.scrollHeight - el.clientHeight <= el.scrollTop + threshold\n ) {\n this.scrollAction()\n }\n }, 300)\n\n get scrollTargetEl(): HTMLElement | null {\n console.warn('scroll target element is not defined.')\n\n return null\n }\n\n async scrollAction() {\n console.warn('scroll action not implemented.')\n }\n }\n}\n"]}
|
package/dist/src/os.d.ts
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
/**
|
2
|
+
* method to tell if platform of running browser is kind of mobile device
|
3
|
+
* @returns {boolean}
|
4
|
+
*/
|
5
|
+
export declare function isMobileDevice(): boolean;
|
6
|
+
/**
|
7
|
+
* method to tell if operating system of running browser is iOS
|
8
|
+
* @returns {boolean}
|
9
|
+
*/
|
10
|
+
export declare function isIOS(): boolean;
|
11
|
+
/**
|
12
|
+
* method to tell if operating system of running browser is MacOS
|
13
|
+
* @returns {boolean}
|
14
|
+
*/
|
15
|
+
export declare function isMacOS(): boolean;
|
16
|
+
export declare function isSafari(): false | RegExpMatchArray | null;
|
package/dist/src/os.js
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
/**
|
2
|
+
* method to tell if platform of running browser is kind of mobile device
|
3
|
+
* @returns {boolean}
|
4
|
+
*/
|
5
|
+
export function isMobileDevice() {
|
6
|
+
return window.matchMedia('(max-width: 767px)').matches;
|
7
|
+
}
|
8
|
+
/**
|
9
|
+
* method to tell if operating system of running browser is iOS
|
10
|
+
* @returns {boolean}
|
11
|
+
*/
|
12
|
+
export function isIOS() {
|
13
|
+
//@ts-ignore
|
14
|
+
return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* method to tell if operating system of running browser is MacOS
|
18
|
+
* @returns {boolean}
|
19
|
+
*/
|
20
|
+
export function isMacOS() {
|
21
|
+
return navigator.userAgent.indexOf('Mac') != -1;
|
22
|
+
}
|
23
|
+
export function isSafari() {
|
24
|
+
return !navigator.userAgent.match(/chrome|chromium|crios/i) && navigator.userAgent.match(/safari/i);
|
25
|
+
}
|
26
|
+
//# sourceMappingURL=os.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"os.js","sourceRoot":"","sources":["../../src/os.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAA;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK;IACnB,YAAY;IACZ,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACrG,CAAC","sourcesContent":["/**\n * method to tell if platform of running browser is kind of mobile device\n * @returns {boolean}\n */\nexport function isMobileDevice() {\n return window.matchMedia('(max-width: 767px)').matches\n}\n\n/**\n * method to tell if operating system of running browser is iOS\n * @returns {boolean}\n */\nexport function isIOS() {\n //@ts-ignore\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream\n}\n\n/**\n * method to tell if operating system of running browser is MacOS\n * @returns {boolean}\n */\nexport function isMacOS() {\n return navigator.userAgent.indexOf('Mac') != -1\n}\n\nexport function isSafari() {\n return !navigator.userAgent.match(/chrome|chromium|crios/i) && navigator.userAgent.match(/safari/i)\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function parseJwt(token: string): any;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
var atob = typeof atob !== 'undefined'
|
2
|
+
? atob
|
3
|
+
: (base64) => {
|
4
|
+
return Buffer.from(base64, 'base64').toString();
|
5
|
+
};
|
6
|
+
export function parseJwt(token) {
|
7
|
+
var base64Url = token.split('.')[1];
|
8
|
+
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
9
|
+
var jsonPayload = decodeURIComponent(atob(base64)
|
10
|
+
.split('')
|
11
|
+
.map(function (c) {
|
12
|
+
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
13
|
+
})
|
14
|
+
.join(''));
|
15
|
+
return JSON.parse(jsonPayload);
|
16
|
+
}
|
17
|
+
//# sourceMappingURL=parse-jwt.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"parse-jwt.js","sourceRoot":"","sources":["../../src/parse-jwt.ts"],"names":[],"mappings":"AAAA,IAAI,IAAI,GACN,OAAO,IAAI,KAAK,WAAW;IACzB,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,CAAC,MAAc,EAAE,EAAE;QACjB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;IACjD,CAAC,CAAA;AAEP,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC5D,IAAI,WAAW,GAAG,kBAAkB,CAClC,IAAI,CAAC,MAAM,CAAC;SACT,KAAK,CAAC,EAAE,CAAC;SACT,GAAG,CAAC,UAAU,CAAS;QACtB,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CACZ,CAAA;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAChC,CAAC","sourcesContent":["var atob: any =\n typeof atob !== 'undefined'\n ? atob\n : (base64: string) => {\n return Buffer.from(base64, 'base64').toString()\n }\n\nexport function parseJwt(token: string): any {\n var base64Url = token.split('.')[1]\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n var jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(function (c: string) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n })\n .join('')\n )\n\n return JSON.parse(jsonPayload)\n}\n"]}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
export declare function generatePasswordPatternRegExp({ lowerCase, upperCase, digit, specialCharacter, allowRepeat, useTightPattern, useLoosePattern, tightCharacterLength, looseCharacterLength }?: {
|
2
|
+
lowerCase?: boolean;
|
3
|
+
upperCase?: boolean;
|
4
|
+
digit?: boolean;
|
5
|
+
specialCharacter?: boolean;
|
6
|
+
allowRepeat?: boolean;
|
7
|
+
useTightPattern?: boolean;
|
8
|
+
useLoosePattern?: boolean;
|
9
|
+
tightCharacterLength?: Number;
|
10
|
+
looseCharacterLength?: Number;
|
11
|
+
}): RegExp;
|
@@ -0,0 +1,26 @@
|
|
1
|
+
export function generatePasswordPatternRegExp({ lowerCase = true, upperCase = true, digit = true, specialCharacter = true, allowRepeat = false, useTightPattern = true, useLoosePattern = false, tightCharacterLength = 8, looseCharacterLength = 15 } = {}) {
|
2
|
+
var tightChecklist = useTightPattern
|
3
|
+
? [
|
4
|
+
lowerCase ? '(?=.*[a-z])' : '',
|
5
|
+
upperCase ? '(?=.*[A-Z])' : '',
|
6
|
+
digit ? '(?=.*\\d)' : '',
|
7
|
+
specialCharacter ? '(?=.*[!@#$%^&*()])' : '',
|
8
|
+
!allowRepeat ? '(?!.*(.)\\1(?=\\1{1,}))' : '',
|
9
|
+
`.{${tightCharacterLength},}` // has a length of 8 and more
|
10
|
+
]
|
11
|
+
: [];
|
12
|
+
var looseChecklist = useLoosePattern
|
13
|
+
? [
|
14
|
+
`.{${looseCharacterLength},}` // has a length of 15 and more
|
15
|
+
]
|
16
|
+
: [];
|
17
|
+
var checkList = [
|
18
|
+
'^',
|
19
|
+
...tightChecklist,
|
20
|
+
tightChecklist.length && looseChecklist.length ? '|' : '',
|
21
|
+
...looseChecklist,
|
22
|
+
'$' //to the end"
|
23
|
+
];
|
24
|
+
return new RegExp(checkList.join(''));
|
25
|
+
}
|
26
|
+
//# sourceMappingURL=password-pattern.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"password-pattern.js","sourceRoot":"","sources":["../../src/password-pattern.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,6BAA6B,CAAC,EAC5C,SAAS,GAAG,IAAI,EAChB,SAAS,GAAG,IAAI,EAChB,KAAK,GAAG,IAAI,EACZ,gBAAgB,GAAG,IAAI,EACvB,WAAW,GAAG,KAAK,EACnB,eAAe,GAAG,IAAI,EACtB,eAAe,GAAG,KAAK,EACvB,oBAAoB,GAAG,CAAC,EACxB,oBAAoB,GAAG,EAAE,KAWvB,EAAE;IACJ,IAAI,cAAc,GAAG,eAAe;QAClC,CAAC,CAAC;YACE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YAC9B,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YAC9B,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YACxB,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;YAC5C,CAAC,WAAW,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE;YAC7C,KAAK,oBAAoB,IAAI,CAAC,6BAA6B;SAC5D;QACH,CAAC,CAAC,EAAE,CAAA;IAEN,IAAI,cAAc,GAAG,eAAe;QAClC,CAAC,CAAC;YACE,KAAK,oBAAoB,IAAI,CAAC,8BAA8B;SAC7D;QACH,CAAC,CAAC,EAAE,CAAA;IAEN,IAAI,SAAS,GAAG;QACd,GAAG;QACH,GAAG,cAAc;QACjB,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACzD,GAAG,cAAc;QACjB,GAAG,CAAC,aAAa;KAClB,CAAA;IAED,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AACvC,CAAC","sourcesContent":["export function generatePasswordPatternRegExp({\n lowerCase = true,\n upperCase = true,\n digit = true,\n specialCharacter = true,\n allowRepeat = false,\n useTightPattern = true,\n useLoosePattern = false,\n tightCharacterLength = 8,\n looseCharacterLength = 15\n}: {\n lowerCase?: boolean\n upperCase?: boolean\n digit?: boolean\n specialCharacter?: boolean\n allowRepeat?: boolean\n useTightPattern?: boolean\n useLoosePattern?: boolean\n tightCharacterLength?: Number\n looseCharacterLength?: Number\n} = {}) {\n var tightChecklist = useTightPattern\n ? [\n lowerCase ? '(?=.*[a-z])' : '', // has at least one lower case character\n upperCase ? '(?=.*[A-Z])' : '', // has at least one upper case character\n digit ? '(?=.*\\\\d)' : '', // has at least one digit\n specialCharacter ? '(?=.*[!@#$%^&*()])' : '', // has at least one special character\n !allowRepeat ? '(?!.*(.)\\\\1(?=\\\\1{1,}))' : '', // has not an repeated character more than twice\n `.{${tightCharacterLength},}` // has a length of 8 and more\n ]\n : []\n\n var looseChecklist = useLoosePattern\n ? [\n `.{${looseCharacterLength},}` // has a length of 15 and more\n ]\n : []\n\n var checkList = [\n '^', // from start\n ...tightChecklist,\n tightChecklist.length && looseChecklist.length ? '|' : '',\n ...looseChecklist,\n '$' //to the end\"\n ]\n\n return new RegExp(checkList.join(''))\n}\n"]}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/**
|
2
|
+
* Starts monitoring swipes on the given element and
|
3
|
+
* emits `swipe` event when a swipe gesture is performed.
|
4
|
+
* @param {DOMElement} element Element on which to listen for swipe gestures.
|
5
|
+
* @param {Object} options Optional: Options.
|
6
|
+
* @return {Object}
|
7
|
+
*/
|
8
|
+
export declare function SwipeListener(element: HTMLElement, options?: any): {
|
9
|
+
off: () => void;
|
10
|
+
} | undefined;
|