@libs-ui/utils 0.1.1-1
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 +3 -0
- package/base64.d.ts +5 -0
- package/cache.d.ts +42 -0
- package/color.d.ts +11 -0
- package/communicate-micro.d.ts +16 -0
- package/constants.d.ts +10 -0
- package/crypto-3rd.d.ts +7 -0
- package/crypto.d.ts +8 -0
- package/dangerous-object.d.ts +79 -0
- package/date.d.ts +44 -0
- package/dom.d.ts +52 -0
- package/download.d.ts +3 -0
- package/esm2022/base64.mjs +43 -0
- package/esm2022/cache.mjs +388 -0
- package/esm2022/color.mjs +133 -0
- package/esm2022/communicate-micro.mjs +149 -0
- package/esm2022/constants.mjs +11 -0
- package/esm2022/crypto-3rd.mjs +38 -0
- package/esm2022/crypto.mjs +41 -0
- package/esm2022/dangerous-object.mjs +149 -0
- package/esm2022/date.mjs +191 -0
- package/esm2022/dom.mjs +256 -0
- package/esm2022/download.mjs +41 -0
- package/esm2022/file.mjs +90 -0
- package/esm2022/format-number.mjs +66 -0
- package/esm2022/format-text.mjs +149 -0
- package/esm2022/function-check-embed-frame.mjs +10 -0
- package/esm2022/get-smart-axis-scale.mjs +174 -0
- package/esm2022/helpers.mjs +651 -0
- package/esm2022/http-params.mjs +80 -0
- package/esm2022/index.mjs +30 -0
- package/esm2022/inject-token.mjs +5 -0
- package/esm2022/key-cache.mjs +31 -0
- package/esm2022/key-code.mjs +123 -0
- package/esm2022/language.mjs +70 -0
- package/esm2022/libs-ui-utils.mjs +5 -0
- package/esm2022/pattern.mjs +62 -0
- package/esm2022/random.mjs +42 -0
- package/esm2022/two-way-signal-object.mjs +131 -0
- package/esm2022/uri.mjs +25 -0
- package/esm2022/url-search-params.mjs +99 -0
- package/esm2022/uuid.mjs +18 -0
- package/esm2022/xss-filter.mjs +10 -0
- package/fesm2022/libs-ui-utils.mjs +3234 -0
- package/fesm2022/libs-ui-utils.mjs.map +1 -0
- package/file.d.ts +18 -0
- package/format-number.d.ts +2 -0
- package/format-text.d.ts +11 -0
- package/function-check-embed-frame.d.ts +2 -0
- package/get-smart-axis-scale.d.ts +34 -0
- package/helpers.d.ts +270 -0
- package/http-params.d.ts +37 -0
- package/index.d.ts +29 -0
- package/inject-token.d.ts +4 -0
- package/key-cache.d.ts +1 -0
- package/key-code.d.ts +122 -0
- package/language.d.ts +37 -0
- package/package.json +29 -0
- package/pattern.d.ts +20 -0
- package/random.d.ts +3 -0
- package/two-way-signal-object.d.ts +15 -0
- package/uri.d.ts +5 -0
- package/url-search-params.d.ts +25 -0
- package/uuid.d.ts +1 -0
- package/xss-filter.d.ts +3 -0
package/README.md
ADDED
package/base64.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const base64Encode: (value: string) => string;
|
|
2
|
+
export declare const base64Decode: (value: string) => string;
|
|
3
|
+
export declare const convertBase64ToBlob: (dataBase64: string) => Blob;
|
|
4
|
+
export declare const convertFileToBase64_ObjectUrl: (file: File) => Promise<string | ArrayBuffer>;
|
|
5
|
+
export declare const convertFileToBase64: (file: File) => Promise<string | ArrayBuffer>;
|
package/cache.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TYPE_LANGUAGE_SUPPORT } from '@libs-ui/interfaces-types';
|
|
2
|
+
export declare class UtilsCache {
|
|
3
|
+
static readonly CACHE_EXPIRE_TIME_DEFAULT: number;
|
|
4
|
+
static readonly CACHE_EXPIRE_NONE = -1;
|
|
5
|
+
static readonly idService: string;
|
|
6
|
+
static typeKeyClearLocalStorage: string;
|
|
7
|
+
private static languageKeyCache;
|
|
8
|
+
private static listKeyKeepWhenClearALll;
|
|
9
|
+
private static initdEvent?;
|
|
10
|
+
private static storage;
|
|
11
|
+
private static dbName;
|
|
12
|
+
private static itemIndexByKey;
|
|
13
|
+
private static dbVersion;
|
|
14
|
+
private static db;
|
|
15
|
+
static init(config: {
|
|
16
|
+
indexedDBName?: string;
|
|
17
|
+
languageKeyCache?: string;
|
|
18
|
+
typeKeyClearLocalStorage?: string;
|
|
19
|
+
listKeyKeepWhenClearAll?: Array<string>;
|
|
20
|
+
}): void;
|
|
21
|
+
static setLang(lang: TYPE_LANGUAGE_SUPPORT): void;
|
|
22
|
+
static getLang(): TYPE_LANGUAGE_SUPPORT;
|
|
23
|
+
private static openDB;
|
|
24
|
+
private static getObjectStore;
|
|
25
|
+
private static get LocalStorage();
|
|
26
|
+
private static getLocalStorageFakeOnSafari;
|
|
27
|
+
private static getLocalStorageFake;
|
|
28
|
+
static GetAsync<T = any>(key: string, default_value?: any, isKeyMD5?: boolean): Promise<T>;
|
|
29
|
+
static Get<T = any>(key: string, default_value?: any): T;
|
|
30
|
+
static GetDefaultValueBySpecificKey(key: string, default_value: any): any;
|
|
31
|
+
static SetAsync<T = any>(key: string, value: any, expireTimeBySecond?: number, isKeyMD5?: boolean): Promise<T>;
|
|
32
|
+
static Set(key: string, value: any, expireTimeBySecond?: number): boolean;
|
|
33
|
+
static ClearAsync(key: string, isMD5?: boolean): Promise<void>;
|
|
34
|
+
static Clear(key: string): void;
|
|
35
|
+
static ClearAllAsync(): Promise<void>;
|
|
36
|
+
static ClearAll(): void;
|
|
37
|
+
private static GetDataByKeys;
|
|
38
|
+
private static SetDataByKey;
|
|
39
|
+
static DeleteKeyStartWithAsync(keyCacheStartWith: string, isKeyMD5?: boolean): Promise<unknown>;
|
|
40
|
+
static DeleteKeyStartWith(keyCache: string, isMD5?: boolean): void;
|
|
41
|
+
static DeleteDatabaseIndexDB(dbName?: string): Promise<unknown>;
|
|
42
|
+
}
|
package/color.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface IColorContrastFromOrigin {
|
|
2
|
+
step: number;
|
|
3
|
+
label: string;
|
|
4
|
+
light: string;
|
|
5
|
+
dark: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const colorStepContrastFromOrigin: (color: string, stepNumber: number) => IColorContrastFromOrigin | undefined;
|
|
8
|
+
export declare const colorContrastFromOrigin: (color: string) => Array<IColorContrastFromOrigin>;
|
|
9
|
+
export declare const rgbToHex: (rgb: any) => string;
|
|
10
|
+
export declare const listColorDefine: Array<string>;
|
|
11
|
+
export declare const getColorById: (str: string) => string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
export declare class UtilsCommunicateMicroKeyGlobal {
|
|
3
|
+
static KEY_MESSAGE_MODAL: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class UtilsCommunicateMicro {
|
|
6
|
+
private static initdEvent?;
|
|
7
|
+
private static subs;
|
|
8
|
+
private static allMessageSub;
|
|
9
|
+
static initEvent(currentWindow: Window, onDestroy: Subject<void>): void;
|
|
10
|
+
static PostMessageToParent(data: any): void;
|
|
11
|
+
static PostMessageToChildren(data: any): void;
|
|
12
|
+
static PostMessageToOpener(data: any): void;
|
|
13
|
+
private static convertData;
|
|
14
|
+
static GetMessage(messageType: string | Array<string>): Subject<MessageEvent>;
|
|
15
|
+
private static initSubject;
|
|
16
|
+
}
|
package/constants.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const ERROR_MESSAGE_EMPTY_VALID = "i18n_valid_empty_message";
|
|
2
|
+
export declare const ERROR_MESSAGE_PATTEN_VALID = "i18n_valid_pattern_message";
|
|
3
|
+
export declare const ERROR_MESSAGE_MIN_VALID = "i18n_message_error_input_min_value";
|
|
4
|
+
export declare const ERROR_MESSAGE_MAX_VALID = "i18n_message_error_input_max_value";
|
|
5
|
+
export declare const ERROR_MESSAGE_MIN_LENGTH = "i18n_message_error_input_min_length";
|
|
6
|
+
export declare const ERROR_MESSAGE_MAX_LENGTH = "i18n_message_error_input_max_length";
|
|
7
|
+
export declare const CHARACTER_DATA_EMPTY = "__";
|
|
8
|
+
export declare const DEFAULT_START_PAGE_0 = "defaultStartPage0";
|
|
9
|
+
export declare const COMMUNICATE_MICRO_PREFIX_TYPE = "3RD_INTEGRATE_MICRO_SITE_";
|
|
10
|
+
export declare const COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE = "MICRO_SITES_ALL_MESSAGE";
|
package/crypto-3rd.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Thiết lập key mã hóa
|
|
3
|
+
* @param value key mã hóa, độ dài bằng 24 hoặc 32 ký tự.
|
|
4
|
+
*/
|
|
5
|
+
export declare const setKeyCrypto3rd: (value: string) => void;
|
|
6
|
+
export declare const encrypt3rd: (plainData: string) => string;
|
|
7
|
+
export declare const decrypt3rd: (encryptedData: string) => string;
|
package/crypto.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Thiết lập key mã hóa
|
|
3
|
+
* @param value key mã hóa, độ dài bằng 24 hoặc 32 ký tự.
|
|
4
|
+
*/
|
|
5
|
+
export declare const setKeyCrypto: (value: string) => void;
|
|
6
|
+
export declare const encrypt: (plainData: string) => string;
|
|
7
|
+
export declare const decrypt: (encryptedData: string) => string;
|
|
8
|
+
export declare const md5: (plainData: string) => string;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { HttpParams } from '@angular/common/http';
|
|
2
|
+
import { TemplateRef, ElementRef } from '@angular/core';
|
|
3
|
+
import { Dayjs } from 'dayjs';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
/**
|
|
6
|
+
* Kiểm tra xem đối tượng có phải là browser global object không
|
|
7
|
+
*/
|
|
8
|
+
export declare const isBrowserGlobalObject: (obj: any) => obj is Window | Document | Window | Document | typeof globalThis;
|
|
9
|
+
/**
|
|
10
|
+
* Kiểm tra xem đối tượng có phải là DOM object không
|
|
11
|
+
*/
|
|
12
|
+
export declare const isDOMObject: (obj: any) => obj is HTMLElement | Node | Element;
|
|
13
|
+
/**
|
|
14
|
+
* Kiểm tra xem đối tượng có phải là browser API object không
|
|
15
|
+
*/
|
|
16
|
+
export declare const isBrowserAPIObject: (obj: any) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Kiểm tra constructor name có nằm trong danh sách nguy hiểm không
|
|
19
|
+
*/
|
|
20
|
+
export declare const hasDangerousConstructorName: (obj: any) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Kiểm tra xem đối tượng có phải là DOM object hoặc browser object nguy hiểm không
|
|
23
|
+
* Những đối tượng này có thể gây ra circular reference và maximum call stack
|
|
24
|
+
*/
|
|
25
|
+
export declare const isDangerousObject: (obj: any) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Kiểm tra đối tượng có phải là Angular/Framework object không
|
|
28
|
+
*/
|
|
29
|
+
export declare const isFrameworkObject: <T = any>(obj: any) => obj is TemplateRef<T> | ElementRef<T>;
|
|
30
|
+
/**
|
|
31
|
+
* Kiểm tra đối tượng có phải là File/Blob object không
|
|
32
|
+
*/
|
|
33
|
+
export declare const isFile: (obj: any) => obj is File | Blob;
|
|
34
|
+
/**
|
|
35
|
+
* Kiểm tra đối tượng có phải là Built-in object không
|
|
36
|
+
*/
|
|
37
|
+
export declare const isBuiltInObject: (obj: any) => obj is Date | RegExp | HttpParams;
|
|
38
|
+
/**
|
|
39
|
+
* Kiểm tra đối tượng có phải là RegExp object không
|
|
40
|
+
*/
|
|
41
|
+
export declare const isRegExp: (obj: any) => obj is RegExp;
|
|
42
|
+
/**
|
|
43
|
+
* Kiểm tra đối tượng có phải là Async object không
|
|
44
|
+
*/
|
|
45
|
+
export declare const isAsyncObject: <T = any>(obj: any) => obj is Promise<T> | Observable<T>;
|
|
46
|
+
/**
|
|
47
|
+
* Kiểm tra đối tượng có phải là Special object cần bỏ qua không
|
|
48
|
+
* Bao gồm: Framework objects, File objects, Built-in objects, Async objects
|
|
49
|
+
*/
|
|
50
|
+
export declare const isSpecialObject: (obj: any) => boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Kiểm tra đối tượng có phải là dayjs object không
|
|
53
|
+
*/
|
|
54
|
+
export declare const isDayjsObject: (obj: any) => obj is Dayjs;
|
|
55
|
+
/**
|
|
56
|
+
* Kiểm tra đối tượng có phải là object cần bỏ qua trong quá trình convert không
|
|
57
|
+
*/
|
|
58
|
+
export declare const isSkippableObject: (obj: any) => boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Kiểm tra đối tượng có phải là Map object không
|
|
61
|
+
*/
|
|
62
|
+
export declare const isMap: <T = any>(obj: any) => obj is Map<string, T>;
|
|
63
|
+
/**
|
|
64
|
+
* Kiểm tra đối tượng có phải là Set object không
|
|
65
|
+
*/
|
|
66
|
+
export declare const isSet: <T = any>(obj: any) => obj is Set<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Kiểm tra đối tượng có phải là Array object không
|
|
69
|
+
*/
|
|
70
|
+
export declare const isArray: <T = any>(obj: any) => obj is Array<T>;
|
|
71
|
+
/**
|
|
72
|
+
* Kiểm tra đối tượng có phải là object cần trả về nguyên trạng không
|
|
73
|
+
* Bao gồm: dangerous objects, special objects, dayjs objects
|
|
74
|
+
*/
|
|
75
|
+
export declare const isReturnAsIsObject: (obj: any) => boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Kiểm tra xem đối tượng có an toàn để clone/convert không
|
|
78
|
+
*/
|
|
79
|
+
export declare const isSafeToProcess: (obj: any) => boolean;
|
package/date.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { GetDayjsConfig, GetDayjsReturn, NonNullableDate } from '@libs-ui/interfaces-types';
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
import 'dayjs/locale/en';
|
|
4
|
+
import 'dayjs/locale/vi';
|
|
5
|
+
export declare const setDefaultTimeZone: (localeZone?: string) => void;
|
|
6
|
+
export type TYPE_FUNCTION_FORMAT_DATE = (time: dayjs.ConfigType, formatOutput: string, lang?: string) => string;
|
|
7
|
+
export declare const updateFunctionFormatDate: (functionCustom: TYPE_FUNCTION_FORMAT_DATE) => void;
|
|
8
|
+
/**
|
|
9
|
+
* @description Lấy đối tượng dayjs theo config
|
|
10
|
+
* @param config nếu không có config sẽ trả về đối tượng dayjs là thời gian hiện tại
|
|
11
|
+
* @param config.date thời gian cần lấy
|
|
12
|
+
* @param config.returnDayjsIfConfigDateNotExist true nếu muốn trả về đối tượng dayjs nếu config.date không có
|
|
13
|
+
* @param config.utc true nếu muốn lấy thời gian UTC
|
|
14
|
+
* @param config.formatOfDate định dạng thời gian đang được truyền vào
|
|
15
|
+
*/
|
|
16
|
+
export declare const getDayjs: <C extends GetDayjsConfig | undefined = undefined>(config?: C) => GetDayjsReturn<C>;
|
|
17
|
+
/**
|
|
18
|
+
* @description Kiểm tra xem hai ngày có khác nhau không (khác ngày trong tuần)
|
|
19
|
+
* @param date1 ngày thứ nhất cần so sánh
|
|
20
|
+
* @param date2 ngày thứ hai cần so sánh
|
|
21
|
+
* @returns true nếu hai ngày khác nhau, false nếu giống nhau hoặc không thể so sánh
|
|
22
|
+
*/
|
|
23
|
+
export declare const isDifferenceDay: (date1: NonNullableDate, date2: NonNullableDate) => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* @description Kiểm tra xem hai ngày có khác tháng không
|
|
26
|
+
* @param date1 ngày thứ nhất cần so sánh
|
|
27
|
+
* @param date2 ngày thứ hai cần so sánh
|
|
28
|
+
* @returns true nếu hai ngày khác tháng, false nếu cùng tháng hoặc không thể so sánh
|
|
29
|
+
*/
|
|
30
|
+
export declare const isDifferenceMonth: (date1: NonNullableDate, date2: NonNullableDate) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* @description Kiểm tra xem hai ngày có khác năm không
|
|
33
|
+
* @param date1 ngày thứ nhất cần so sánh
|
|
34
|
+
* @param date2 ngày thứ hai cần so sánh
|
|
35
|
+
* @returns true nếu hai ngày khác năm, false nếu cùng năm hoặc không thể so sánh
|
|
36
|
+
*/
|
|
37
|
+
export declare const isDifferenceYear: (date1: NonNullableDate, date2: NonNullableDate) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* @description Lấy ra chuỗi thời gian hiển thị theo định dạng và ngôn ngữ
|
|
40
|
+
* @param date thời gian cần định dạng
|
|
41
|
+
* @param format định dạng thời gian muốn lấy ra
|
|
42
|
+
* @param lang lấy theo ngôn ngữ
|
|
43
|
+
*/
|
|
44
|
+
export declare const formatDate: (date: dayjs.ConfigType, formatOutput?: string, lang?: string, formatInput?: string) => string;
|
package/dom.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { IBoundingClientRect } from '@libs-ui/interfaces-types';
|
|
2
|
+
import DeviceDetector from 'device-detector-js';
|
|
3
|
+
import Delta from 'quill-delta';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
export declare const getDeviceInfo: () => DeviceDetector.DeviceDetectorResult;
|
|
6
|
+
export declare const getPlatFromBrowser: () => string;
|
|
7
|
+
export declare const getEventNameHandleClick: string;
|
|
8
|
+
export declare const getDocumentByString: (htmlStr: string) => Document;
|
|
9
|
+
export declare const cloneIBoundingClientRect: (rect: IBoundingClientRect) => IBoundingClientRect;
|
|
10
|
+
export declare const setStylesElement: (el: HTMLElement, styles: Record<string, string>) => void;
|
|
11
|
+
export declare const getViewport: (win?: Window) => {
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const setCaretPosition: (element: HTMLTextAreaElement | HTMLInputElement, position: number) => void;
|
|
16
|
+
export declare const checkViewInScreen: (container: HTMLElement, element: HTMLElement, elementScroll?: HTMLElement, maxTopLeft?: {
|
|
17
|
+
top?: number;
|
|
18
|
+
left?: number;
|
|
19
|
+
}) => boolean;
|
|
20
|
+
export declare const checkMouseOverInContainer: (mousePosition: {
|
|
21
|
+
clientX: number;
|
|
22
|
+
clientY: number;
|
|
23
|
+
}, element?: HTMLElement, rect?: DOMRect) => boolean;
|
|
24
|
+
export declare const getDragEventByElement: (config: {
|
|
25
|
+
elementMouseDown: HTMLElement;
|
|
26
|
+
functionMouseDown?: (event: MouseEvent) => void;
|
|
27
|
+
isStartWithMouseDownEvent?: boolean;
|
|
28
|
+
elementMouseMove?: HTMLElement;
|
|
29
|
+
functionMouseMove?: (event: MouseEvent) => void;
|
|
30
|
+
elementMouseUp?: HTMLElement;
|
|
31
|
+
functionMouseUp?: (event: MouseEvent) => void;
|
|
32
|
+
onDestroy: Subject<any>;
|
|
33
|
+
}) => import("rxjs").Observable<MouseEvent>;
|
|
34
|
+
export declare const getHTMLFromQuill: (data: Delta | string, options?: {
|
|
35
|
+
getRootHtml?: boolean;
|
|
36
|
+
replaceNewLineTo?: string;
|
|
37
|
+
replaceTagBRTo?: string;
|
|
38
|
+
replaceBrToDiv?: boolean;
|
|
39
|
+
functionReplaceDelta?: (op: Delta) => void;
|
|
40
|
+
replaceTags?: {
|
|
41
|
+
tag: string;
|
|
42
|
+
replaceTo: string;
|
|
43
|
+
}[];
|
|
44
|
+
}) => Promise<string>;
|
|
45
|
+
export declare const convertHtmlToDivBlocks: (html: string) => string;
|
|
46
|
+
export declare const getDeltaFromHTML: (html: string) => Promise<Delta>;
|
|
47
|
+
export declare const processPasteData: (e: ClipboardEvent, config: {
|
|
48
|
+
element: HTMLElement;
|
|
49
|
+
handlerPasteFile?: (files: FileList) => void;
|
|
50
|
+
callBack?: (positonReturn: "file" | "range" | "content" | "no-content") => void;
|
|
51
|
+
}) => Promise<void>;
|
|
52
|
+
export declare const insertContentWithRange: (content: string, savedRange: Range, element: HTMLElement) => void;
|
package/download.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const downloadFileByUrlUseXmlRequest: (fileUrl: string, filename: string) => void;
|
|
2
|
+
export declare const downloadFileByUrl: (fileUrl: string, filename: string, onlyOpen?: boolean) => Promise<void>;
|
|
3
|
+
export declare const downloadImageFromELement: (imageElement: HTMLImageElement, typeFileDownload?: string, nameFile?: string) => void;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { encodeURI, decodeURI } from './uri';
|
|
2
|
+
export const base64Encode = (value) => {
|
|
3
|
+
return btoa(encodeURI(value));
|
|
4
|
+
};
|
|
5
|
+
export const base64Decode = (value) => {
|
|
6
|
+
return decodeURI(atob(value));
|
|
7
|
+
};
|
|
8
|
+
export const convertBase64ToBlob = (dataBase64) => {
|
|
9
|
+
const BASE64_MARKER = ';base64,';
|
|
10
|
+
if (dataBase64.indexOf(BASE64_MARKER) === -1) {
|
|
11
|
+
const parts = dataBase64.split(',');
|
|
12
|
+
const contentType = parts[0].split(':')[1];
|
|
13
|
+
const raw = parts[1];
|
|
14
|
+
const blob = new Blob([raw], { type: contentType });
|
|
15
|
+
return blob;
|
|
16
|
+
}
|
|
17
|
+
const parts = dataBase64.split(BASE64_MARKER);
|
|
18
|
+
const contentType = parts[0].split(':')[1];
|
|
19
|
+
const raw = window.atob(parts[1]);
|
|
20
|
+
const rawLength = raw.length;
|
|
21
|
+
const uInt8Array = new Uint8Array(rawLength);
|
|
22
|
+
for (let i = 0; i < rawLength; ++i) {
|
|
23
|
+
uInt8Array[i] = raw.charCodeAt(i);
|
|
24
|
+
}
|
|
25
|
+
const blob = new Blob([uInt8Array], { type: contentType });
|
|
26
|
+
return blob;
|
|
27
|
+
};
|
|
28
|
+
export const convertFileToBase64_ObjectUrl = async (file) => {
|
|
29
|
+
if (!file.type.match(/image.*/)) {
|
|
30
|
+
return URL.createObjectURL(file);
|
|
31
|
+
}
|
|
32
|
+
return await convertFileToBase64(file);
|
|
33
|
+
};
|
|
34
|
+
export const convertFileToBase64 = (file) => {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
const reader = new FileReader();
|
|
37
|
+
reader.readAsDataURL(file);
|
|
38
|
+
reader.onload = (event) => {
|
|
39
|
+
resolve(event.target?.result ?? '');
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvYmFzZTY0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQzVDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQzVDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFO0lBQ3hELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztJQUVqQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzdCLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRTNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxFQUFFLElBQVUsRUFBaUMsRUFBRTtJQUMvRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sTUFBTSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQVUsRUFBaUMsRUFBRTtJQUMvRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUVoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbmNvZGVVUkksIGRlY29kZVVSSSB9IGZyb20gJy4vdXJpJztcblxuZXhwb3J0IGNvbnN0IGJhc2U2NEVuY29kZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBidG9hKGVuY29kZVVSSSh2YWx1ZSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGJhc2U2NERlY29kZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBkZWNvZGVVUkkoYXRvYih2YWx1ZSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRCYXNlNjRUb0Jsb2IgPSAoZGF0YUJhc2U2NDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IEJBU0U2NF9NQVJLRVIgPSAnO2Jhc2U2NCwnO1xuXG4gIGlmIChkYXRhQmFzZTY0LmluZGV4T2YoQkFTRTY0X01BUktFUikgPT09IC0xKSB7XG4gICAgY29uc3QgcGFydHMgPSBkYXRhQmFzZTY0LnNwbGl0KCcsJyk7XG4gICAgY29uc3QgY29udGVudFR5cGUgPSBwYXJ0c1swXS5zcGxpdCgnOicpWzFdO1xuICAgIGNvbnN0IHJhdyA9IHBhcnRzWzFdO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmF3XSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcblxuICAgIHJldHVybiBibG9iO1xuICB9XG4gIGNvbnN0IHBhcnRzID0gZGF0YUJhc2U2NC5zcGxpdChCQVNFNjRfTUFSS0VSKTtcbiAgY29uc3QgY29udGVudFR5cGUgPSBwYXJ0c1swXS5zcGxpdCgnOicpWzFdO1xuICBjb25zdCByYXcgPSB3aW5kb3cuYXRvYihwYXJ0c1sxXSk7XG4gIGNvbnN0IHJhd0xlbmd0aCA9IHJhdy5sZW5ndGg7XG4gIGNvbnN0IHVJbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShyYXdMZW5ndGgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3TGVuZ3RoOyArK2kpIHtcbiAgICB1SW50OEFycmF5W2ldID0gcmF3LmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3VJbnQ4QXJyYXldLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuXG4gIHJldHVybiBibG9iO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRGaWxlVG9CYXNlNjRfT2JqZWN0VXJsID0gYXN5bmMgKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZyB8IEFycmF5QnVmZmVyPiA9PiB7XG4gIGlmICghZmlsZS50eXBlLm1hdGNoKC9pbWFnZS4qLykpIHtcbiAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBjb252ZXJ0RmlsZVRvQmFzZTY0KGZpbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRGaWxlVG9CYXNlNjQgPSAoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nIHwgQXJyYXlCdWZmZXI+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQpID0+IHtcbiAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0Py5yZXN1bHQgPz8gJycpO1xuICAgIH07XG4gIH0pO1xufTtcbiJdfQ==
|