@fctc/sme-widget-ui 3.10.7 → 3.10.8
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/dist/chunk-5Y4EK5OE.mjs +2 -0
- package/dist/chunk-BJCU5X7S.mjs +1 -0
- package/dist/chunk-KVH366MY.mjs +1 -0
- package/dist/chunk-U7MAFS3I.mjs +1 -0
- package/dist/chunk-UMFSRQPI.mjs +44 -0
- package/dist/chunk-YEKQJ4YC.mjs +1 -0
- package/dist/hooks.mjs +1 -249
- package/dist/icons.mjs +1 -1734
- package/dist/index.css +1 -799
- package/dist/index.mjs +1 -34456
- package/dist/types.mjs +1 -13
- package/dist/utils.mjs +1 -7474
- package/dist/widgets.css +1 -799
- package/dist/widgets.mjs +1 -33684
- package/package.json +1 -1
- package/dist/hooks.d.ts +0 -46
- package/dist/hooks.js +0 -277
- package/dist/icons.d.ts +0 -100
- package/dist/icons.js +0 -1802
- package/dist/index.d.ts +0 -20
- package/dist/index.js +0 -34584
- package/dist/types.d.ts +0 -62
- package/dist/types.js +0 -50
- package/dist/utils.d.ts +0 -30
- package/dist/utils.js +0 -7498
- package/dist/widgets.d.ts +0 -490
- package/dist/widgets.js +0 -33748
package/package.json
CHANGED
package/dist/hooks.d.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { RefObject } from 'react';
|
|
2
|
-
|
|
3
|
-
declare const DEFAULT_EVENTS: readonly ["mousedown", "touchstart"];
|
|
4
|
-
type EventType = (typeof DEFAULT_EVENTS)[number];
|
|
5
|
-
interface UseClickOutsideOptions {
|
|
6
|
-
handler: (event?: Event) => void;
|
|
7
|
-
events?: readonly EventType[];
|
|
8
|
-
nodes?: (HTMLDivElement | null)[];
|
|
9
|
-
refs?: any;
|
|
10
|
-
}
|
|
11
|
-
declare const useClickOutside: ({ handler, events, nodes, refs, }: UseClickOutsideOptions) => RefObject<HTMLDivElement | null>;
|
|
12
|
-
|
|
13
|
-
/** Kiểu trả về của hook */
|
|
14
|
-
type FileInfo = {
|
|
15
|
-
name?: string;
|
|
16
|
-
size?: number;
|
|
17
|
-
type?: string;
|
|
18
|
-
extension?: string | null;
|
|
19
|
-
dataUrl?: string | null;
|
|
20
|
-
text?: string | null;
|
|
21
|
-
arrayBuffer?: ArrayBuffer | null;
|
|
22
|
-
image?: {
|
|
23
|
-
width: number;
|
|
24
|
-
height: number;
|
|
25
|
-
} | null;
|
|
26
|
-
video?: {
|
|
27
|
-
width?: number;
|
|
28
|
-
height?: number;
|
|
29
|
-
duration?: number;
|
|
30
|
-
} | null;
|
|
31
|
-
audio?: {
|
|
32
|
-
duration?: number;
|
|
33
|
-
} | null;
|
|
34
|
-
rawBlob?: Blob | null;
|
|
35
|
-
};
|
|
36
|
-
type InputSource = string | File | Blob | null;
|
|
37
|
-
declare function useFileInfo(source: InputSource, options?: {
|
|
38
|
-
readAs?: 'dataUrl' | 'text' | 'arrayBuffer' | 'all';
|
|
39
|
-
}): {
|
|
40
|
-
info: FileInfo | null;
|
|
41
|
-
loading: boolean;
|
|
42
|
-
error: string | null;
|
|
43
|
-
reload: () => void;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
export { useClickOutside, useFileInfo };
|
package/dist/hooks.js
DELETED
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/hooks.ts
|
|
21
|
-
var hooks_exports = {};
|
|
22
|
-
__export(hooks_exports, {
|
|
23
|
-
useClickOutside: () => useClickOutside,
|
|
24
|
-
useFileInfo: () => useFileInfo
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(hooks_exports);
|
|
27
|
-
|
|
28
|
-
// src/hooks/use-click-outside.ts
|
|
29
|
-
var import_react = require("react");
|
|
30
|
-
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
31
|
-
var useClickOutside = ({
|
|
32
|
-
handler,
|
|
33
|
-
events = DEFAULT_EVENTS,
|
|
34
|
-
nodes = [],
|
|
35
|
-
// Default to empty array to avoid undefined errors
|
|
36
|
-
refs
|
|
37
|
-
}) => {
|
|
38
|
-
const ref = (0, import_react.useRef)(null);
|
|
39
|
-
(0, import_react.useEffect)(() => {
|
|
40
|
-
const listener = (event) => {
|
|
41
|
-
const { target } = event;
|
|
42
|
-
if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
if (!(target instanceof HTMLElement)) return;
|
|
46
|
-
const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
|
|
47
|
-
const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
|
|
48
|
-
if (shouldTrigger && !shouldIgnore) {
|
|
49
|
-
handler(event);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
events.forEach((event) => document.addEventListener(event, listener));
|
|
53
|
-
return () => {
|
|
54
|
-
events.forEach((event) => document.removeEventListener(event, listener));
|
|
55
|
-
};
|
|
56
|
-
}, [handler, nodes, events]);
|
|
57
|
-
return ref;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
// src/hooks/use-get-file-infor.ts
|
|
61
|
-
var import_react2 = require("react");
|
|
62
|
-
function getFileName(source, mime) {
|
|
63
|
-
if (source instanceof File) return source.name;
|
|
64
|
-
if (typeof source === "string") {
|
|
65
|
-
if (source.startsWith("data:")) {
|
|
66
|
-
const ext2 = mime?.split("/")[1] || "bin";
|
|
67
|
-
return `file.${ext2}`;
|
|
68
|
-
}
|
|
69
|
-
try {
|
|
70
|
-
const pathname = new URL(source).pathname;
|
|
71
|
-
const filename = decodeURIComponent(pathname.split("/").pop() || "");
|
|
72
|
-
if (filename) return filename;
|
|
73
|
-
} catch {
|
|
74
|
-
}
|
|
75
|
-
return "file.bin";
|
|
76
|
-
}
|
|
77
|
-
const ext = mime?.split("/")[1] || "bin";
|
|
78
|
-
return `file.${ext}`;
|
|
79
|
-
}
|
|
80
|
-
function useFileInfo(source, options) {
|
|
81
|
-
const { readAs = "all" } = options ?? {};
|
|
82
|
-
const [info, setInfo] = (0, import_react2.useState)(null);
|
|
83
|
-
const [loading, setLoading] = (0, import_react2.useState)(false);
|
|
84
|
-
const [error, setError] = (0, import_react2.useState)(null);
|
|
85
|
-
const abortRef = (0, import_react2.useRef)({ aborted: false });
|
|
86
|
-
(0, import_react2.useEffect)(() => {
|
|
87
|
-
abortRef.current.aborted = false;
|
|
88
|
-
if (!source) {
|
|
89
|
-
setInfo(null);
|
|
90
|
-
setLoading(false);
|
|
91
|
-
setError(null);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
let localUrl = null;
|
|
95
|
-
let fr = null;
|
|
96
|
-
let mediaEl = null;
|
|
97
|
-
const makeExtension = (name, type) => {
|
|
98
|
-
if (name) {
|
|
99
|
-
const idx = name.lastIndexOf(".");
|
|
100
|
-
if (idx > -1) return name.slice(idx + 1).toLowerCase();
|
|
101
|
-
}
|
|
102
|
-
if (type) {
|
|
103
|
-
const match = /\/([a-z0-9.+-]+)$/.exec(type);
|
|
104
|
-
return match ? match[1] : null;
|
|
105
|
-
}
|
|
106
|
-
return null;
|
|
107
|
-
};
|
|
108
|
-
const toBlobFromSource = async (src) => {
|
|
109
|
-
if (src instanceof Blob) return src;
|
|
110
|
-
if (typeof src === "string") {
|
|
111
|
-
const s = src.trim();
|
|
112
|
-
if (s.startsWith("data:")) {
|
|
113
|
-
const parts = s.split(",");
|
|
114
|
-
const meta = parts[0];
|
|
115
|
-
const isBase64 = meta.includes(";base64");
|
|
116
|
-
const mimeMatch = meta.match(/data:([^;]+)/);
|
|
117
|
-
const mime = mimeMatch ? mimeMatch[1] : "application/octet-stream";
|
|
118
|
-
const dataPart = parts.slice(1).join(",");
|
|
119
|
-
if (isBase64) {
|
|
120
|
-
const binary = atob(dataPart);
|
|
121
|
-
const len = binary.length;
|
|
122
|
-
const arr = new Uint8Array(len);
|
|
123
|
-
for (let i = 0; i < len; i++) arr[i] = binary.charCodeAt(i);
|
|
124
|
-
return new Blob([arr], { type: mime });
|
|
125
|
-
} else {
|
|
126
|
-
const decoded = decodeURIComponent(dataPart);
|
|
127
|
-
return new Blob([decoded], { type: mime });
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
const resp = await fetch(s);
|
|
131
|
-
if (!resp.ok) throw new Error(`Fetch failed with status ${resp.status}`);
|
|
132
|
-
const blob = await resp.blob();
|
|
133
|
-
return blob;
|
|
134
|
-
}
|
|
135
|
-
throw new Error("Unsupported source type");
|
|
136
|
-
};
|
|
137
|
-
const run = async () => {
|
|
138
|
-
setLoading(true);
|
|
139
|
-
setError(null);
|
|
140
|
-
setInfo(null);
|
|
141
|
-
try {
|
|
142
|
-
const blob = await toBlobFromSource(source);
|
|
143
|
-
if (abortRef.current.aborted) return;
|
|
144
|
-
const fileInfo = {
|
|
145
|
-
rawBlob: blob,
|
|
146
|
-
size: blob.size,
|
|
147
|
-
type: blob.type || "application/octet-stream",
|
|
148
|
-
dataUrl: null,
|
|
149
|
-
text: null,
|
|
150
|
-
arrayBuffer: null,
|
|
151
|
-
image: null,
|
|
152
|
-
video: null,
|
|
153
|
-
audio: null
|
|
154
|
-
};
|
|
155
|
-
if (source instanceof File || source instanceof Blob || typeof source === "string" && !source.startsWith("data:")) {
|
|
156
|
-
fileInfo.name = getFileName(source, fileInfo.type);
|
|
157
|
-
}
|
|
158
|
-
fileInfo.extension = makeExtension(fileInfo.name, fileInfo.type);
|
|
159
|
-
localUrl = URL.createObjectURL(blob);
|
|
160
|
-
const readPromises = [];
|
|
161
|
-
if (readAs === "dataUrl" || readAs === "all") {
|
|
162
|
-
fr = new FileReader();
|
|
163
|
-
const p = new Promise((resolve, reject) => {
|
|
164
|
-
fr.onload = () => {
|
|
165
|
-
if (abortRef.current.aborted) return resolve();
|
|
166
|
-
fileInfo.dataUrl = fr.result;
|
|
167
|
-
resolve();
|
|
168
|
-
};
|
|
169
|
-
fr.onerror = () => reject(fr.error);
|
|
170
|
-
fr.readAsDataURL(blob);
|
|
171
|
-
});
|
|
172
|
-
readPromises.push(p);
|
|
173
|
-
}
|
|
174
|
-
if (readAs === "text" || readAs === "all") {
|
|
175
|
-
const frText = new FileReader();
|
|
176
|
-
const p = new Promise((resolve, reject) => {
|
|
177
|
-
frText.onload = () => {
|
|
178
|
-
if (abortRef.current.aborted) return resolve();
|
|
179
|
-
fileInfo.text = frText.result;
|
|
180
|
-
resolve();
|
|
181
|
-
};
|
|
182
|
-
frText.onerror = () => reject(frText.error);
|
|
183
|
-
frText.readAsText(blob);
|
|
184
|
-
});
|
|
185
|
-
readPromises.push(p);
|
|
186
|
-
}
|
|
187
|
-
if (readAs === "arrayBuffer" || readAs === "all") {
|
|
188
|
-
const frBuf = new FileReader();
|
|
189
|
-
const p = new Promise((resolve, reject) => {
|
|
190
|
-
frBuf.onload = () => {
|
|
191
|
-
if (abortRef.current.aborted) return resolve();
|
|
192
|
-
fileInfo.arrayBuffer = frBuf.result;
|
|
193
|
-
resolve();
|
|
194
|
-
};
|
|
195
|
-
frBuf.onerror = () => reject(frBuf.error);
|
|
196
|
-
frBuf.readAsArrayBuffer(blob);
|
|
197
|
-
});
|
|
198
|
-
readPromises.push(p);
|
|
199
|
-
}
|
|
200
|
-
if (fileInfo?.type?.startsWith("image/")) {
|
|
201
|
-
const p = new Promise((resolve, reject) => {
|
|
202
|
-
const img = new Image();
|
|
203
|
-
img.onload = () => {
|
|
204
|
-
if (abortRef.current.aborted) return resolve();
|
|
205
|
-
fileInfo.image = {
|
|
206
|
-
width: img.naturalWidth,
|
|
207
|
-
height: img.naturalHeight
|
|
208
|
-
};
|
|
209
|
-
resolve();
|
|
210
|
-
};
|
|
211
|
-
img.onerror = () => resolve();
|
|
212
|
-
img.src = localUrl;
|
|
213
|
-
});
|
|
214
|
-
readPromises.push(p);
|
|
215
|
-
}
|
|
216
|
-
if (fileInfo && fileInfo?.type?.startsWith("video/") || fileInfo?.type?.startsWith("audio/")) {
|
|
217
|
-
const p = new Promise((resolve) => {
|
|
218
|
-
const el = document.createElement(
|
|
219
|
-
fileInfo?.type?.startsWith("video/") ? "video" : "audio"
|
|
220
|
-
);
|
|
221
|
-
mediaEl = el;
|
|
222
|
-
mediaEl.preload = "metadata";
|
|
223
|
-
mediaEl.onloadedmetadata = () => {
|
|
224
|
-
if (abortRef.current.aborted) return resolve();
|
|
225
|
-
const duration = isFinite(mediaEl.duration) ? mediaEl.duration : void 0;
|
|
226
|
-
if (fileInfo?.type?.startsWith("video/")) {
|
|
227
|
-
fileInfo.video = {
|
|
228
|
-
width: mediaEl.videoWidth || void 0,
|
|
229
|
-
height: mediaEl.videoHeight || void 0,
|
|
230
|
-
duration
|
|
231
|
-
};
|
|
232
|
-
} else {
|
|
233
|
-
fileInfo.audio = { duration };
|
|
234
|
-
}
|
|
235
|
-
resolve();
|
|
236
|
-
};
|
|
237
|
-
mediaEl.onerror = () => resolve();
|
|
238
|
-
mediaEl.src = localUrl;
|
|
239
|
-
});
|
|
240
|
-
readPromises.push(p);
|
|
241
|
-
}
|
|
242
|
-
await Promise.all(readPromises);
|
|
243
|
-
if (abortRef.current.aborted) return;
|
|
244
|
-
setInfo(fileInfo);
|
|
245
|
-
} catch (err) {
|
|
246
|
-
if (!abortRef.current.aborted) setError(err?.message ?? String(err));
|
|
247
|
-
} finally {
|
|
248
|
-
if (!abortRef.current.aborted) setLoading(false);
|
|
249
|
-
}
|
|
250
|
-
};
|
|
251
|
-
run();
|
|
252
|
-
return () => {
|
|
253
|
-
abortRef.current.aborted = true;
|
|
254
|
-
if (fr && fr.readyState === 1) {
|
|
255
|
-
try {
|
|
256
|
-
fr.abort();
|
|
257
|
-
} catch {
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
if (mediaEl) {
|
|
261
|
-
try {
|
|
262
|
-
mediaEl.src = "";
|
|
263
|
-
mediaEl.load();
|
|
264
|
-
} catch {
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
if (localUrl) URL.revokeObjectURL(localUrl);
|
|
268
|
-
};
|
|
269
|
-
}, [source, readAs]);
|
|
270
|
-
return { info, loading, error, reload: () => {
|
|
271
|
-
} };
|
|
272
|
-
}
|
|
273
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
274
|
-
0 && (module.exports = {
|
|
275
|
-
useClickOutside,
|
|
276
|
-
useFileInfo
|
|
277
|
-
});
|
package/dist/icons.d.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
declare const AddIcon: () => JSX.Element;
|
|
2
|
-
|
|
3
|
-
declare const ArchiveIcon: () => JSX.Element;
|
|
4
|
-
|
|
5
|
-
declare const ArrowDownIcon: ({ className }: {
|
|
6
|
-
className?: string;
|
|
7
|
-
}) => JSX.Element;
|
|
8
|
-
|
|
9
|
-
declare const ArrowRightIcon: () => JSX.Element;
|
|
10
|
-
|
|
11
|
-
declare const AttachIcon: () => JSX.Element;
|
|
12
|
-
|
|
13
|
-
declare const BackIcon: () => JSX.Element;
|
|
14
|
-
|
|
15
|
-
declare const CalendarIcon: () => JSX.Element;
|
|
16
|
-
|
|
17
|
-
declare const CheckIcon: () => JSX.Element;
|
|
18
|
-
|
|
19
|
-
declare const ChevronBottomIcon: ({ className, }: {
|
|
20
|
-
className?: string;
|
|
21
|
-
}) => JSX.Element;
|
|
22
|
-
|
|
23
|
-
declare const CloseIcon: ({ className }: {
|
|
24
|
-
className?: string;
|
|
25
|
-
}) => JSX.Element;
|
|
26
|
-
|
|
27
|
-
declare const CopyIcon: () => JSX.Element;
|
|
28
|
-
|
|
29
|
-
declare const DeleteIcon: () => JSX.Element;
|
|
30
|
-
|
|
31
|
-
declare const DownloadIcon: () => JSX.Element;
|
|
32
|
-
|
|
33
|
-
declare const ExcelIcon: () => JSX.Element;
|
|
34
|
-
|
|
35
|
-
declare const ExportIcon: () => JSX.Element;
|
|
36
|
-
|
|
37
|
-
declare const EyeIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
|
38
|
-
|
|
39
|
-
declare const FilterIcon: ({ className }: {
|
|
40
|
-
className?: string;
|
|
41
|
-
}) => JSX.Element;
|
|
42
|
-
|
|
43
|
-
declare const GroupByIcon: ({ className }: {
|
|
44
|
-
className?: string;
|
|
45
|
-
}) => JSX.Element;
|
|
46
|
-
|
|
47
|
-
declare const KanbanIcon: () => JSX.Element;
|
|
48
|
-
|
|
49
|
-
declare const ListIcon: () => JSX.Element;
|
|
50
|
-
|
|
51
|
-
declare const MoreIcon: () => JSX.Element;
|
|
52
|
-
|
|
53
|
-
declare const PdfIcon: () => JSX.Element;
|
|
54
|
-
|
|
55
|
-
declare const PlayIcon: () => JSX.Element;
|
|
56
|
-
|
|
57
|
-
declare const ResetIcon: () => JSX.Element;
|
|
58
|
-
|
|
59
|
-
declare const SearchIcon: () => JSX.Element;
|
|
60
|
-
|
|
61
|
-
declare const SettingIcon: ({ className }: {
|
|
62
|
-
className?: string;
|
|
63
|
-
}) => JSX.Element;
|
|
64
|
-
|
|
65
|
-
declare const StarIcon: ({ fill, stroke }: {
|
|
66
|
-
fill: string;
|
|
67
|
-
stroke: string;
|
|
68
|
-
}) => JSX.Element;
|
|
69
|
-
|
|
70
|
-
declare const TriangleIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
|
71
|
-
|
|
72
|
-
declare const UnArchiveIcon: () => JSX.Element;
|
|
73
|
-
|
|
74
|
-
declare const VectorIcon: () => JSX.Element;
|
|
75
|
-
|
|
76
|
-
declare const ZipIcon: () => JSX.Element;
|
|
77
|
-
|
|
78
|
-
declare const LoadingIcon: ({ width, height, ...props }: React.SVGProps<SVGSVGElement>) => JSX.Element;
|
|
79
|
-
|
|
80
|
-
declare const PaidIcon: () => JSX.Element;
|
|
81
|
-
|
|
82
|
-
declare const PlaceHolderIcon: () => JSX.Element;
|
|
83
|
-
|
|
84
|
-
declare const GoogleIcon: ({ width, height, ...props }: React.SVGProps<SVGSVGElement>) => JSX.Element;
|
|
85
|
-
|
|
86
|
-
declare const EyeClosedIcon: () => JSX.Element;
|
|
87
|
-
|
|
88
|
-
declare const DeleteIconDanger: () => JSX.Element;
|
|
89
|
-
|
|
90
|
-
declare const ImageIcon: () => JSX.Element;
|
|
91
|
-
|
|
92
|
-
declare const JSONFileIcon: () => JSX.Element;
|
|
93
|
-
|
|
94
|
-
declare const DefaultFileIcon: () => JSX.Element;
|
|
95
|
-
|
|
96
|
-
declare const VideoIcon: () => JSX.Element;
|
|
97
|
-
|
|
98
|
-
declare const FilterColumnIcon: () => JSX.Element;
|
|
99
|
-
|
|
100
|
-
export { AddIcon, ArchiveIcon, ArrowDownIcon, ArrowRightIcon, AttachIcon, BackIcon, CalendarIcon, CheckIcon, ChevronBottomIcon, CloseIcon, CopyIcon, DefaultFileIcon, DeleteIcon, DeleteIconDanger, DownloadIcon, ExcelIcon, ExportIcon, EyeClosedIcon, EyeIcon, FilterColumnIcon, FilterIcon, GoogleIcon, GroupByIcon, ImageIcon, JSONFileIcon, KanbanIcon, ListIcon, LoadingIcon, MoreIcon, PaidIcon, PdfIcon, PlaceHolderIcon, PlayIcon, ResetIcon, SearchIcon, SettingIcon, StarIcon, TriangleIcon, UnArchiveIcon, VectorIcon, VideoIcon, ZipIcon };
|