@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 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,6 @@
1
+ export declare function getPathInfo(pathname: string): {
2
+ contextPath: string;
3
+ prefix: string;
4
+ domain: string;
5
+ path: string | undefined;
6
+ };
@@ -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"]}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,oBAAoB,CAAA","sourcesContent":["export * from './sleep'\nexport * from './file-drop-helper'\n"]}
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"]}
@@ -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;