@emailmaker/filemanager 1.1.84 → 1.1.85-dev.2

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.
@@ -0,0 +1,2044 @@
1
+ import { C as e, H as t, L as n, R as r, S as i, W as a, X as o, Y as s, b as c, j as l, q as u, t as d, x as f } from "./file-manager-hooks-D9OOfpfX.js";
2
+ import { i as p, n as m, o as h, r as g, s as _, t as v } from "./file-manager-useMediaListEngine-B_YxvsBO.js";
3
+ import { t as y } from "./file-manager-urls-C8FU4GJ1.js";
4
+ import b from "react";
5
+ import { Button as x, Checkbox as S, ColorPicker as C, Divider as ee, Form as w, Input as T, InputNumber as E, Modal as te, Space as D, Spin as ne, Typography as re } from "antd";
6
+ import { Fragment as ie, jsx as O, jsxs as k } from "react/jsx-runtime";
7
+ import { LoadingOutlined as ae } from "@ant-design/icons";
8
+ import { Copy04 as oe, FolderPlus as se, Scale01 as ce, SearchMd as le } from "@untitledui/icons";
9
+ var A = {
10
+ "em-filemanager": "em-filemanager",
11
+ emFilemanager: "em-filemanager",
12
+ iconsTab: "iconsTab",
13
+ hasSearch: "hasSearch",
14
+ iconsSearchWrapper: "iconsSearchWrapper",
15
+ iconsSearchForm: "iconsSearchForm",
16
+ iconsSearchFormCenteredContainer: "iconsSearchFormCenteredContainer",
17
+ iconsSearchFormCentered: "iconsSearchFormCentered",
18
+ iconsSearchFormInput: "iconsSearchFormInput",
19
+ iconsSearchFormInputInput: "iconsSearchFormInputInput",
20
+ iconsSearchResults: "iconsSearchResults",
21
+ iconsControlsControls: "iconsControlsControls",
22
+ iconsControls: "iconsControls",
23
+ iconsControlsFamilySlug: "iconsControlsFamilySlug",
24
+ iconsControlElement: "iconsControlElement",
25
+ iconsControlsNumField: "iconsControlsNumField",
26
+ iconsControlsNumLabel: "iconsControlsNumLabel",
27
+ iconsControlsNumInput: "iconsControlsNumInput",
28
+ iconsControlsNumSuffix: "iconsControlsNumSuffix",
29
+ iconsControlsCompact: "iconsControlsCompact",
30
+ iconsControlsInputNumber: "iconsControlsInputNumber",
31
+ iconsControlsDropdownBtn: "iconsControlsDropdownBtn",
32
+ sliderDropdown: "sliderDropdown",
33
+ iconsControlsHeader: "iconsControlsHeader",
34
+ iconsSearchFormSelect: "iconsSearchFormSelect",
35
+ iconsSearchFormStyleItem: "iconsSearchFormStyleItem",
36
+ fadeInSlide: "fadeInSlide",
37
+ iconsSearchDivider: "iconsSearchDivider",
38
+ iconsSearchFormInputIcon: "iconsSearchFormInputIcon",
39
+ iconsGrid: "iconsGrid",
40
+ iconsBottomBar: "iconsBottomBar",
41
+ iconsBottomBarContent: "iconsBottomBarContent",
42
+ iconsGridEmpty: "iconsGridEmpty",
43
+ iconsGridEmptyState: "iconsGridEmptyState",
44
+ resultsContainer: "resultsContainer",
45
+ playButton: "playButton",
46
+ title: "title",
47
+ subtitle: "subtitle",
48
+ iconsGridInfiniteScroll: "iconsGridInfiniteScroll",
49
+ iconsGridLoadingMore: "iconsGridLoadingMore",
50
+ iconsGridGrid: "iconsGridGrid",
51
+ iconsGridVirtualCanvas: "iconsGridVirtualCanvas",
52
+ iconsGridItem: "iconsGridItem",
53
+ iconsGridItemThumbnail: "iconsGridItemThumbnail",
54
+ iconsGridItemSvg: "iconsGridItemSvg",
55
+ iconsGridItemImg: "iconsGridItemImg",
56
+ iconsGridItemName: "iconsGridItemName",
57
+ iconsGridItemSelected: "iconsGridItemSelected",
58
+ iconsGridItemInsertButton: "iconsGridItemInsertButton",
59
+ iconsGridLoading: "iconsGridLoading",
60
+ iconsControlsBackButton: "iconsControlsBackButton",
61
+ iconsGridCheckbox: "iconsGridCheckbox",
62
+ iconsGridShowCheckboxes: "iconsGridShowCheckboxes",
63
+ iconsHeaderContainer: "iconsHeaderContainer",
64
+ iconsHeaderContainerLeft: "iconsHeaderContainerLeft",
65
+ iconsHeaderDivider: "iconsHeaderDivider",
66
+ copyToFolderModalBody: "copyToFolderModalBody",
67
+ copyToFolderModalLoadingOverlay: "copyToFolderModalLoadingOverlay"
68
+ }, ue = ({ query: e, onQueryChange: n, onSubmit: r, hasResults: i = !1, inputRef: a }) => {
69
+ let { t: o } = u(), { options: s } = t(), { config: c } = s, l = e.length > 0 && i;
70
+ return /* @__PURE__ */ k("div", {
71
+ className: A.iconsSearchFormCenteredContainer,
72
+ children: [/* @__PURE__ */ O(w, {
73
+ layout: "inline",
74
+ onFinish: r,
75
+ className: l ? A.iconsSearchResults : A.iconsSearchFormCentered,
76
+ children: /* @__PURE__ */ O(w.Item, {
77
+ className: A.iconsSearchFormInput,
78
+ children: /* @__PURE__ */ O(T, {
79
+ ref: a,
80
+ className: A.iconsSearchFormInputInput,
81
+ allowClear: !0,
82
+ prefix: /* @__PURE__ */ O(le, {
83
+ size: 16,
84
+ strokeWidth: c?.iconStrokeWidth,
85
+ onClick: r
86
+ }),
87
+ placeholder: o("Search icons"),
88
+ value: e,
89
+ onChange: (e) => n(e.target.value),
90
+ onKeyDown: (e) => e.code === "Space" && r(),
91
+ onPressEnter: r,
92
+ spellCheck: "false"
93
+ })
94
+ })
95
+ }), l && /* @__PURE__ */ O("div", {
96
+ className: `ant-divider ${A.iconsSearchDivider}`,
97
+ role: "separator"
98
+ })]
99
+ });
100
+ }, de = (e) => {
101
+ let { t } = u(), { colorHex: n, setColorHex: r, colorHex2: i, setColorHex2: a, colorHex3: o, setColorHex3: s, sizePx: c, setSizePx: l, strokeWidth: d, setStrokeWidth: f, showSecondColor: p, showThirdColor: m } = e;
102
+ return /* @__PURE__ */ O("div", {
103
+ className: A.iconsControls,
104
+ children: /* @__PURE__ */ k("div", {
105
+ className: A.iconsControlsControls,
106
+ children: [
107
+ /* @__PURE__ */ k("div", {
108
+ className: A.iconsControlsNumField,
109
+ children: [/* @__PURE__ */ O(re.Text, {
110
+ type: "secondary",
111
+ className: A.iconsControlsNumLabel,
112
+ children: t("Size")
113
+ }), /* @__PURE__ */ O(E, {
114
+ className: A.iconsControlsNumInput,
115
+ min: 20,
116
+ max: 200,
117
+ step: 1,
118
+ value: c,
119
+ suffix: /* @__PURE__ */ O("span", {
120
+ className: A.iconsControlsNumSuffix,
121
+ children: "px"
122
+ }),
123
+ onChange: (e) => l(typeof e == "number" && !Number.isNaN(e) ? e : 50),
124
+ "aria-label": t("Size")
125
+ })]
126
+ }),
127
+ /* @__PURE__ */ k("div", {
128
+ className: A.iconsControlsNumField,
129
+ children: [/* @__PURE__ */ O(re.Text, {
130
+ type: "secondary",
131
+ className: A.iconsControlsNumLabel,
132
+ children: t("Stroke width")
133
+ }), /* @__PURE__ */ O(E, {
134
+ className: A.iconsControlsNumInput,
135
+ min: .3,
136
+ max: 3,
137
+ step: .1,
138
+ value: typeof d == "number" ? d : 1,
139
+ suffix: /* @__PURE__ */ O("span", {
140
+ className: A.iconsControlsNumSuffix,
141
+ children: "px"
142
+ }),
143
+ onChange: (e) => f(typeof e == "number" && !Number.isNaN(e) ? e : 1),
144
+ "aria-label": t("Stroke width")
145
+ })]
146
+ }),
147
+ /* @__PURE__ */ k(D, {
148
+ size: 8,
149
+ children: [
150
+ /* @__PURE__ */ k("div", {
151
+ className: A.iconsControlElement,
152
+ children: [/* @__PURE__ */ O("span", { children: t("Color1") }), /* @__PURE__ */ O(C, {
153
+ value: n,
154
+ format: "hex",
155
+ disabledAlpha: !0,
156
+ showText: !0,
157
+ onChange: (e, t) => {
158
+ let n = typeof e == "string" ? e : e?.toHexString ? e.toHexString() : t;
159
+ r(n);
160
+ },
161
+ size: "middle"
162
+ })]
163
+ }),
164
+ p && /* @__PURE__ */ k("div", {
165
+ className: A.iconsControlElement,
166
+ children: [/* @__PURE__ */ O("span", { children: t("Color2") }), /* @__PURE__ */ O(C, {
167
+ value: i,
168
+ format: "hex",
169
+ disabledAlpha: !0,
170
+ showText: !0,
171
+ onChange: (e, t) => {
172
+ let n = typeof e == "string" ? e : e?.toHexString ? e.toHexString() : t;
173
+ a(n);
174
+ },
175
+ size: "middle"
176
+ })]
177
+ }),
178
+ m && /* @__PURE__ */ k("div", {
179
+ className: A.iconsControlElement,
180
+ children: [/* @__PURE__ */ O("span", { children: t("Color3") }), /* @__PURE__ */ O(C, {
181
+ value: o,
182
+ format: "hex",
183
+ disabledAlpha: !0,
184
+ showText: !0,
185
+ onChange: (e, t) => {
186
+ let n = typeof e == "string" ? e : e?.toHexString ? e.toHexString() : t;
187
+ s(n);
188
+ },
189
+ size: "middle"
190
+ })]
191
+ })
192
+ ]
193
+ })
194
+ ]
195
+ })
196
+ });
197
+ }, fe = /* @__PURE__ */ O(ae, {
198
+ style: { fontSize: 20 },
199
+ spin: !0
200
+ }), pe = 240, j = 160, me = 56, he = ({ items: e, loading: t, isCollectingResults: n = !1, hasMore: r = !1, hasQuery: i, selectedHash: a, onItemClick: o, onInsert: s, onLoadMore: c, colorVars: l, svgTextMap: f, previewSize: p, selectedHashes: m, onToggleSelect: g }) => {
201
+ let { t: y } = u(), { ThumbsUpIcon: x } = _(), C = !!(m && m.size > 0), ee = b.useRef(null), { positionedItems: w, containerHeight: T, isNearEnd: E, handleViewportChange: te } = v({
202
+ items: e,
203
+ getId: (e) => e.hash,
204
+ getPreviewSrc: () => void 0,
205
+ getAltText: (e) => e.name,
206
+ layoutMode: "grid",
207
+ minColumnWidth: j,
208
+ estimatedItemHeight: (p ?? 50) + me,
209
+ gap: 16,
210
+ prefetchThresholdPx: pe
211
+ }), D = d(te, [e.length, p ?? 50]);
212
+ b.useEffect(() => {
213
+ r || (ee.current = null);
214
+ }, [r, e.length]), b.useEffect(() => {
215
+ if (!t && !n && r && e.length > 0 && E) {
216
+ if (ee.current === e.length) return;
217
+ ee.current = e.length, c?.();
218
+ }
219
+ }, [
220
+ r,
221
+ n,
222
+ E,
223
+ e.length,
224
+ t,
225
+ c
226
+ ]);
227
+ let re = i ? /* @__PURE__ */ O("div", {
228
+ className: A.iconsGridEmptyState,
229
+ children: /* @__PURE__ */ O(h, {})
230
+ }) : /* @__PURE__ */ O("div", {
231
+ className: A.iconsGridEmptyState,
232
+ children: /* @__PURE__ */ k("div", {
233
+ className: A.resultsContainer,
234
+ children: [
235
+ /* @__PURE__ */ O("span", {
236
+ className: A.videoIcon,
237
+ children: /* @__PURE__ */ O(x, {
238
+ className: A.playButton,
239
+ style: {
240
+ width: 48,
241
+ height: 49,
242
+ marginBottom: 10
243
+ }
244
+ })
245
+ }),
246
+ /* @__PURE__ */ O("h1", {
247
+ className: A.title,
248
+ children: y("Thousands of icons")
249
+ }),
250
+ /* @__PURE__ */ O("p", {
251
+ className: A.subtitle,
252
+ children: y("Enter a search query and we'll find the perfect icon for you")
253
+ })
254
+ ]
255
+ })
256
+ });
257
+ return /* @__PURE__ */ k("div", {
258
+ id: "iconsScrollableDiv",
259
+ ref: D,
260
+ className: A.iconsGrid,
261
+ children: [e.length === 0 && !t ? re : /* @__PURE__ */ k(ie, { children: [/* @__PURE__ */ O("div", {
262
+ className: A.iconsGridVirtualCanvas,
263
+ style: { height: T },
264
+ children: w.map(({ row: e, layout: t }) => {
265
+ let n = e.item, r = !!(m && m.has(n.hash) || a === n.hash), i = f[n.hash];
266
+ return /* @__PURE__ */ k("div", {
267
+ style: {
268
+ position: "absolute",
269
+ top: t.top,
270
+ left: t.left,
271
+ width: t.width,
272
+ height: t.height
273
+ },
274
+ className: `${A.iconsGridItem} ${r ? A.iconsGridItemSelected : ""} ${C ? A.iconsGridShowCheckboxes : ""}`,
275
+ onClick: () => o(n),
276
+ children: [
277
+ /* @__PURE__ */ O("div", {
278
+ style: { height: p ?? 50 },
279
+ className: A.iconsGridItemThumbnail,
280
+ children: i ? /* @__PURE__ */ O("div", {
281
+ style: {
282
+ color: l?.colorHex,
283
+ "--em-icon-grad-1": l?.colorHex ?? "#000",
284
+ "--em-icon-grad-2": l?.colorHex2 ?? "#ff007a",
285
+ "--em-icon-color-1": l?.colorHex ?? "#000",
286
+ "--em-icon-color-2": l?.colorHex2 ?? "#ff007a",
287
+ "--em-icon-color-3": l?.colorHex3 ?? "#00C2FF",
288
+ "--em-icon-stroke-1": l?.colorHex ?? "#000",
289
+ "--em-icon-stroke-2": l?.colorHex2 ?? "#ff007a",
290
+ "--em-icon-stroke-3": l?.colorHex3 ?? "#00C2FF",
291
+ "--em-icon-fill-1": l?.colorHex ?? "#000",
292
+ "--em-icon-fill-2": l?.colorHex2 ?? "#ff007a",
293
+ "--em-icon-fill-3": l?.colorHex3 ?? "#00C2FF"
294
+ },
295
+ dangerouslySetInnerHTML: { __html: i },
296
+ className: A.iconsGridItemSvg
297
+ }) : /* @__PURE__ */ O("div", {
298
+ className: A.iconsGridItemImg,
299
+ style: {
300
+ display: "flex",
301
+ alignItems: "center",
302
+ justifyContent: "center"
303
+ },
304
+ children: /* @__PURE__ */ O(ne, {
305
+ indicator: fe,
306
+ size: "small"
307
+ })
308
+ })
309
+ }),
310
+ /* @__PURE__ */ O("div", {
311
+ className: A.iconsGridItemName,
312
+ title: n.name,
313
+ children: n.name
314
+ }),
315
+ g ? /* @__PURE__ */ O("div", {
316
+ onClick: (e) => {
317
+ e.stopPropagation();
318
+ },
319
+ className: A.iconsGridCheckbox,
320
+ children: /* @__PURE__ */ O(S, {
321
+ checked: !!(m && m.has(n.hash)),
322
+ onChange: () => g(n.hash)
323
+ })
324
+ }) : null
325
+ ]
326
+ }, n.hash);
327
+ })
328
+ }), n && /* @__PURE__ */ O("div", {
329
+ className: A.iconsGridLoadingMore,
330
+ children: /* @__PURE__ */ O(ne, { indicator: fe })
331
+ })] }), t && e.length === 0 && /* @__PURE__ */ O("div", {
332
+ className: A.iconsGridLoading,
333
+ children: /* @__PURE__ */ O(ne, { indicator: fe })
334
+ })]
335
+ });
336
+ };
337
+ //#endregion
338
+ //#region packages/file-manager/src/components/ImageIcons/defaultIconStockTranslate.ts
339
+ function ge(e) {
340
+ return /[\u0400-\u04FF]/.test(e);
341
+ }
342
+ function _e(e) {
343
+ let t = e.trim();
344
+ return async (e, n) => {
345
+ let r = e.trim();
346
+ if (!ge(r)) return r;
347
+ try {
348
+ let i = await fetch(t, {
349
+ method: "POST",
350
+ headers: { "Content-Type": "application/json" },
351
+ body: JSON.stringify({
352
+ text: e,
353
+ locale: n.locale
354
+ }),
355
+ credentials: "same-origin"
356
+ });
357
+ if (!i.ok) return r;
358
+ let a = await i.json(), o = a.translatedText ?? a.text ?? r;
359
+ return String(o).trim() || r;
360
+ } catch {
361
+ return r;
362
+ }
363
+ };
364
+ }
365
+ function ve(e) {
366
+ if (!e) return;
367
+ if (e.handleTranslate) return e.handleTranslate;
368
+ let t = e.iconStockTranslateUrl?.trim();
369
+ if (t) return _e(t);
370
+ }
371
+ //#endregion
372
+ //#region node_modules/@iconify/utils/lib/icon/defaults.js
373
+ var M = Object.freeze({
374
+ left: 0,
375
+ top: 0,
376
+ width: 16,
377
+ height: 16
378
+ }), N = Object.freeze({
379
+ rotate: 0,
380
+ vFlip: !1,
381
+ hFlip: !1
382
+ }), P = Object.freeze({
383
+ ...M,
384
+ ...N
385
+ }), ye = Object.freeze({
386
+ ...P,
387
+ body: "",
388
+ hidden: !1
389
+ }), F = Object.freeze({
390
+ width: null,
391
+ height: null
392
+ }), be = Object.freeze({
393
+ ...F,
394
+ ...N
395
+ });
396
+ //#endregion
397
+ //#region node_modules/@iconify/utils/lib/icon/transformations.js
398
+ function I(e, t) {
399
+ let n = {};
400
+ !e.hFlip != !t.hFlip && (n.hFlip = !0), !e.vFlip != !t.vFlip && (n.vFlip = !0);
401
+ let r = ((e.rotate || 0) + (t.rotate || 0)) % 4;
402
+ return r && (n.rotate = r), n;
403
+ }
404
+ //#endregion
405
+ //#region node_modules/@iconify/utils/lib/icon/merge.js
406
+ function L(e, t) {
407
+ let n = I(e, t);
408
+ for (let r in ye) r in N ? r in e && !(r in n) && (n[r] = N[r]) : r in t ? n[r] = t[r] : r in e && (n[r] = e[r]);
409
+ return n;
410
+ }
411
+ //#endregion
412
+ //#region node_modules/@iconify/utils/lib/icon-set/tree.js
413
+ function R(e, t) {
414
+ let n = e.icons, r = e.aliases || Object.create(null), i = Object.create(null);
415
+ function a(e) {
416
+ if (n[e]) return i[e] = [];
417
+ if (!(e in i)) {
418
+ i[e] = null;
419
+ let t = r[e] && r[e].parent, n = t && a(t);
420
+ n && (i[e] = [t].concat(n));
421
+ }
422
+ return i[e];
423
+ }
424
+ return (t || Object.keys(n).concat(Object.keys(r))).forEach(a), i;
425
+ }
426
+ //#endregion
427
+ //#region node_modules/@iconify/utils/lib/icon-set/get-icon.js
428
+ function xe(e, t, n) {
429
+ let r = e.icons, i = e.aliases || Object.create(null), a = {};
430
+ function o(e) {
431
+ a = L(r[e] || i[e], a);
432
+ }
433
+ return o(t), n.forEach(o), L(e, a);
434
+ }
435
+ function z(e, t) {
436
+ if (e.icons[t]) return xe(e, t, []);
437
+ let n = R(e, [t])[t];
438
+ return n ? xe(e, t, n) : null;
439
+ }
440
+ //#endregion
441
+ //#region node_modules/@iconify/utils/lib/svg/size.js
442
+ var Se = /(-?[0-9.]*[0-9]+[0-9.]*)/g, B = /^-?[0-9.]*[0-9]+[0-9.]*$/g;
443
+ function Ce(e, t, n) {
444
+ if (t === 1) return e;
445
+ if (n ||= 100, typeof e == "number") return Math.ceil(e * t * n) / n;
446
+ if (typeof e != "string") return e;
447
+ let r = e.split(Se);
448
+ if (r === null || !r.length) return e;
449
+ let i = [], a = r.shift(), o = B.test(a);
450
+ for (;;) {
451
+ if (o) {
452
+ let e = parseFloat(a);
453
+ isNaN(e) ? i.push(a) : i.push(Math.ceil(e * t * n) / n);
454
+ } else i.push(a);
455
+ if (a = r.shift(), a === void 0) return i.join("");
456
+ o = !o;
457
+ }
458
+ }
459
+ //#endregion
460
+ //#region node_modules/@iconify/utils/lib/svg/defs.js
461
+ function V(e, t = "defs") {
462
+ let n = "", r = e.indexOf("<" + t);
463
+ for (; r >= 0;) {
464
+ let i = e.indexOf(">", r), a = e.indexOf("</" + t);
465
+ if (i === -1 || a === -1) break;
466
+ let o = e.indexOf(">", a);
467
+ if (o === -1) break;
468
+ n += e.slice(i + 1, a).trim(), e = e.slice(0, r).trim() + e.slice(o + 1);
469
+ }
470
+ return {
471
+ defs: n,
472
+ content: e
473
+ };
474
+ }
475
+ function we(e, t) {
476
+ return e ? "<defs>" + e + "</defs>" + t : t;
477
+ }
478
+ function Te(e, t, n) {
479
+ let r = V(e);
480
+ return we(r.defs, t + r.content + n);
481
+ }
482
+ //#endregion
483
+ //#region node_modules/@iconify/utils/lib/svg/build.js
484
+ var Ee = (e) => e === "unset" || e === "undefined" || e === "none";
485
+ function H(e, t) {
486
+ let n = {
487
+ ...P,
488
+ ...e
489
+ }, r = {
490
+ ...be,
491
+ ...t
492
+ }, i = {
493
+ left: n.left,
494
+ top: n.top,
495
+ width: n.width,
496
+ height: n.height
497
+ }, a = n.body;
498
+ [n, r].forEach((e) => {
499
+ let t = [], n = e.hFlip, r = e.vFlip, o = e.rotate;
500
+ n ? r ? o += 2 : (t.push("translate(" + (i.width + i.left).toString() + " " + (0 - i.top).toString() + ")"), t.push("scale(-1 1)"), i.top = i.left = 0) : r && (t.push("translate(" + (0 - i.left).toString() + " " + (i.height + i.top).toString() + ")"), t.push("scale(1 -1)"), i.top = i.left = 0);
501
+ let s;
502
+ switch (o < 0 && (o -= Math.floor(o / 4) * 4), o %= 4, o) {
503
+ case 1:
504
+ s = i.height / 2 + i.top, t.unshift("rotate(90 " + s.toString() + " " + s.toString() + ")");
505
+ break;
506
+ case 2:
507
+ t.unshift("rotate(180 " + (i.width / 2 + i.left).toString() + " " + (i.height / 2 + i.top).toString() + ")");
508
+ break;
509
+ case 3: s = i.width / 2 + i.left, t.unshift("rotate(-90 " + s.toString() + " " + s.toString() + ")");
510
+ }
511
+ o % 2 == 1 && (i.left !== i.top && (s = i.left, i.left = i.top, i.top = s), i.width !== i.height && (s = i.width, i.width = i.height, i.height = s)), t.length && (a = Te(a, "<g transform=\"" + t.join(" ") + "\">", "</g>"));
512
+ });
513
+ let o = r.width, s = r.height, c = i.width, l = i.height, u, d;
514
+ o === null ? (d = s === null ? "1em" : s === "auto" ? l : s, u = Ce(d, c / l)) : (u = o === "auto" ? c : o, d = s === null ? Ce(u, l / c) : s === "auto" ? l : s);
515
+ let f = {}, p = (e, t) => {
516
+ Ee(t) || (f[e] = t.toString());
517
+ };
518
+ p("width", u), p("height", d);
519
+ let m = [
520
+ i.left,
521
+ i.top,
522
+ c,
523
+ l
524
+ ];
525
+ return f.viewBox = m.join(" "), {
526
+ attributes: f,
527
+ viewBox: m,
528
+ body: a
529
+ };
530
+ }
531
+ //#endregion
532
+ //#region node_modules/@iconify/utils/lib/svg/html.js
533
+ function De(e, t) {
534
+ let n = e.indexOf("xlink:") === -1 ? "" : " xmlns:xlink=\"http://www.w3.org/1999/xlink\"";
535
+ for (let e in t) n += " " + e + "=\"" + t[e] + "\"";
536
+ return "<svg xmlns=\"http://www.w3.org/2000/svg\"" + n + ">" + e + "</svg>";
537
+ }
538
+ //#endregion
539
+ //#region packages/file-manager/src/components/ImageIcons/iconSearchRuLexicon.ts
540
+ var U = /* @__PURE__ */ new Set(/* @__PURE__ */ "и.в.во.на.с.со.к.ко.у.о.об.от.до.по.за.из.без.для.при.про.или.the.a.an.and.or.of.to.in.on.for".split(".")), W = {
541
+ дом: ["home", "house"],
542
+ домой: ["home"],
543
+ сердце: ["heart"],
544
+ любовь: ["heart"],
545
+ звезда: ["star"],
546
+ солнце: ["sun"],
547
+ луна: ["moon"],
548
+ облако: ["cloud"],
549
+ дождь: ["rain", "cloud"],
550
+ снег: ["snow"],
551
+ огонь: ["fire", "flame"],
552
+ вода: ["droplet", "water"],
553
+ молния: [
554
+ "bolt",
555
+ "zap",
556
+ "lightning"
557
+ ],
558
+ пользователь: ["user", "person"],
559
+ человек: [
560
+ "user",
561
+ "person",
562
+ "people"
563
+ ],
564
+ люди: ["users", "people"],
565
+ лицо: ["face", "smile"],
566
+ улыбка: ["smile"],
567
+ рука: ["hand"],
568
+ глаз: ["eye"],
569
+ ключ: ["key"],
570
+ замок: ["lock"],
571
+ почта: [
572
+ "mail",
573
+ "email",
574
+ "inbox"
575
+ ],
576
+ письмо: [
577
+ "mail",
578
+ "envelope",
579
+ "email"
580
+ ],
581
+ конверт: ["envelope", "mail"],
582
+ сообщение: ["message", "chat"],
583
+ чат: ["message", "chat"],
584
+ телефон: ["phone"],
585
+ смартфон: ["smartphone", "device"],
586
+ камера: ["camera"],
587
+ фото: ["image", "photo"],
588
+ картинка: ["image", "picture"],
589
+ изображение: ["image", "photo"],
590
+ видео: ["video"],
591
+ музыка: ["music"],
592
+ звук: [
593
+ "volume",
594
+ "speaker",
595
+ "audio"
596
+ ],
597
+ микрофон: ["mic", "microphone"],
598
+ поиск: ["search"],
599
+ лупа: ["search"],
600
+ настройки: [
601
+ "settings",
602
+ "cog",
603
+ "gear"
604
+ ],
605
+ меню: ["menu"],
606
+ закрыть: ["x", "close"],
607
+ удалить: ["trash", "delete"],
608
+ корзина: ["trash"],
609
+ редактировать: ["edit", "pencil"],
610
+ копировать: ["copy"],
611
+ сохранить: ["save"],
612
+ скачать: ["download"],
613
+ загрузить: ["upload"],
614
+ папка: ["folder"],
615
+ файл: ["file", "document"],
616
+ документ: ["file", "document"],
617
+ текст: ["text"],
618
+ календарь: ["calendar"],
619
+ время: ["clock"],
620
+ часы: ["clock", "watch"],
621
+ карта: ["map"],
622
+ глобус: ["globe"],
623
+ мир: [
624
+ "globe",
625
+ "world",
626
+ "earth"
627
+ ],
628
+ адрес: [
629
+ "map-pin",
630
+ "location",
631
+ "pin"
632
+ ],
633
+ метка: [
634
+ "map-pin",
635
+ "marker",
636
+ "pin"
637
+ ],
638
+ стрелка: ["arrow", "chevron"],
639
+ влево: [
640
+ "left",
641
+ "arrow-left",
642
+ "chevron-left"
643
+ ],
644
+ вправо: [
645
+ "right",
646
+ "arrow-right",
647
+ "chevron-right"
648
+ ],
649
+ вверх: [
650
+ "up",
651
+ "arrow-up",
652
+ "chevron-up"
653
+ ],
654
+ вниз: [
655
+ "down",
656
+ "arrow-down",
657
+ "chevron-down"
658
+ ],
659
+ плей: ["play"],
660
+ пауза: ["pause"],
661
+ стоп: ["stop"],
662
+ галочка: ["check"],
663
+ крестик: ["x"],
664
+ плюс: ["plus"],
665
+ минус: ["minus"],
666
+ покупки: [
667
+ "shopping",
668
+ "cart",
669
+ "bag"
670
+ ],
671
+ магазин: ["store", "shop"],
672
+ подарок: ["gift"],
673
+ щит: ["shield"],
674
+ банк: ["bank", "building"],
675
+ картабанковская: ["credit-card", "card"],
676
+ уведомление: ["bell"],
677
+ колокол: ["bell"],
678
+ флаг: ["flag"],
679
+ закладка: ["bookmark"],
680
+ ссылка: ["link"],
681
+ код: ["code", "terminal"],
682
+ терминал: ["terminal"],
683
+ лампочка: ["lightbulb", "light-bulb"],
684
+ идея: ["lightbulb"],
685
+ батарея: ["battery"],
686
+ питание: ["power", "plug"],
687
+ сеть: ["wifi", "network"],
688
+ принтер: ["printer"],
689
+ монитор: ["monitor", "display"],
690
+ компьютер: [
691
+ "computer",
692
+ "laptop",
693
+ "pc"
694
+ ],
695
+ клавиатура: ["keyboard"],
696
+ книга: ["book"],
697
+ график: ["chart", "graph"],
698
+ таблица: ["table", "grid"],
699
+ список: ["list"],
700
+ фильтр: ["filter"],
701
+ тег: ["tag"],
702
+ отправить: ["send"],
703
+ поделиться: ["share"],
704
+ нравится: ["thumbs", "like"],
705
+ скрыть: ["eye-off", "hidden"],
706
+ предупреждение: ["alert", "warning"],
707
+ ошибка: ["x-circle", "alert-circle"],
708
+ успех: ["check-circle"],
709
+ информация: ["info"],
710
+ помощь: ["help"],
711
+ вопрос: ["help", "question"],
712
+ язык: [
713
+ "language",
714
+ "languages",
715
+ "translate"
716
+ ],
717
+ перевод: ["language", "translate"],
718
+ масштаб: ["zoom", "maximize"],
719
+ экран: [
720
+ "monitor",
721
+ "screen",
722
+ "display"
723
+ ],
724
+ цвет: ["palette", "swatch"],
725
+ кисть: ["brush", "paint"],
726
+ карандаш: ["pencil"],
727
+ выравнивание: ["align"],
728
+ центр: ["center"],
729
+ круг: ["circle"],
730
+ квадрат: ["square"],
731
+ вход: ["log-in", "login"],
732
+ выход: ["log-out", "logout"],
733
+ профиль: ["user", "account"],
734
+ команда: ["users", "group"],
735
+ задача: [
736
+ "check",
737
+ "list",
738
+ "todo"
739
+ ],
740
+ цель: ["target"],
741
+ вложение: ["paperclip"],
742
+ архив: ["archive"],
743
+ ножницы: ["scissors"],
744
+ скрепка: ["paperclip"],
745
+ локация: ["map-pin"],
746
+ навигация: ["navigation", "compass"],
747
+ компас: ["compass"],
748
+ самолет: ["plane", "airplane"],
749
+ машина: ["car"],
750
+ мяч: ["ball"],
751
+ мячик: ["ball"],
752
+ поезд: ["train"],
753
+ корабль: ["ship"],
754
+ велосипед: ["bike", "bicycle"],
755
+ кофе: ["coffee"],
756
+ еда: [
757
+ "utensils",
758
+ "cake",
759
+ "pizza"
760
+ ],
761
+ собака: ["dog"],
762
+ кошка: ["cat"],
763
+ птица: ["bird"],
764
+ дерево: ["tree"],
765
+ цветок: ["flower"],
766
+ гора: ["mountain"],
767
+ волны: ["waves"],
768
+ зонт: ["umbrella"],
769
+ работа: ["briefcase"],
770
+ школа: [
771
+ "school",
772
+ "academic",
773
+ "graduation"
774
+ ],
775
+ больница: [
776
+ "cross",
777
+ "heart",
778
+ "medical"
779
+ ],
780
+ ребенок: ["baby"],
781
+ семья: ["home", "users"],
782
+ группа: ["users", "group"],
783
+ мужчина: ["man", "user"],
784
+ женщина: ["woman", "user"],
785
+ кольцо: ["ring"],
786
+ корона: ["crown"],
787
+ медаль: ["medal", "award"],
788
+ кубок: ["trophy"],
789
+ рюкзак: ["backpack"],
790
+ чемодан: ["luggage"],
791
+ кошелек: ["wallet"],
792
+ очки: ["glasses"],
793
+ шляпа: ["hat"],
794
+ рубашка: ["shirt"],
795
+ обувь: ["shoe"],
796
+ здание: ["building"],
797
+ окно: ["window"],
798
+ дверь: ["door"],
799
+ лифт: ["arrow-up-down", "arrows-up-down"],
800
+ парковка: ["parking"],
801
+ топливо: ["fuel"],
802
+ дорога: ["route", "road"],
803
+ мост: ["bridge"],
804
+ река: ["waves"],
805
+ море: ["waves"],
806
+ ночь: ["moon"],
807
+ день: ["sun"],
808
+ таймер: ["timer"],
809
+ будильник: ["alarm"],
810
+ деньги: [
811
+ "banknote",
812
+ "currency",
813
+ "dollar"
814
+ ],
815
+ процент: ["percent"],
816
+ квитанция: ["receipt"],
817
+ счет: ["receipt", "document"],
818
+ договор: ["document", "signature"],
819
+ печать: ["stamp"],
820
+ подпись: ["signature", "pen"],
821
+ суд: ["scale"],
822
+ полиция: ["shield"],
823
+ пожарные: ["fire"],
824
+ скорая: [
825
+ "life",
826
+ "buoy",
827
+ "cross"
828
+ ],
829
+ аптека: ["pill"],
830
+ таблетка: ["pill"],
831
+ здоровье: ["heart", "pulse"],
832
+ рост: ["trending-up", "arrow-up"],
833
+ падение: ["trending-down", "arrow-down"],
834
+ робот: ["bot", "cpu"],
835
+ мозг: ["brain"],
836
+ база: ["database"],
837
+ сервер: ["server"],
838
+ облакоинтернет: ["cloud"],
839
+ заметка: ["note", "sticky"],
840
+ комментарий: ["chat", "bubble"],
841
+ якорь: ["anchor"],
842
+ пароль: ["key", "lock"],
843
+ отпечаток: ["fingerprint"],
844
+ обновить: ["refresh", "sync"],
845
+ синхронизация: ["refresh", "sync"],
846
+ наушники: ["headphones"],
847
+ громкость: ["volume"],
848
+ беззвука: ["volume-x", "mute"],
849
+ повтор: ["repeat"],
850
+ следующий: ["skip-forward", "forward"],
851
+ предыдущий: ["skip-back", "backward"],
852
+ камеравыкл: ["camera-off"],
853
+ микрофонвыкл: ["mic-off"],
854
+ телефонзвонок: ["phone-call"],
855
+ входящие: ["inbox"],
856
+ исходящие: ["send", "outbox"],
857
+ черновик: ["draft", "file"],
858
+ спам: ["ban", "shield"],
859
+ рассылка: ["mail", "send"],
860
+ подписка: ["bell", "rss"],
861
+ отписка: ["bell-off"],
862
+ палитра: ["palette"],
863
+ градиент: ["gradient"],
864
+ слои: ["layers"],
865
+ кроп: ["crop"],
866
+ поворот: ["rotate"],
867
+ гаечный: ["wrench"],
868
+ молоток: ["hammer"],
869
+ баг: ["bug"],
870
+ штрихкод: ["barcode"],
871
+ куаркод: ["qr-code"],
872
+ звезда2: ["sparkles"],
873
+ магия: ["wand", "sparkles"],
874
+ снежинка: ["snowflake"],
875
+ радуга: ["rainbow"],
876
+ лист: ["leaf"],
877
+ ракета: ["rocket"],
878
+ спутник: ["satellite"],
879
+ капля: ["droplet"],
880
+ грузовик: ["truck"],
881
+ автобус: ["bus"],
882
+ такси: ["car", "taxi"],
883
+ торт: ["cake"],
884
+ пицца: ["pizza"],
885
+ яблоко: ["apple"],
886
+ банан: ["banana"],
887
+ рыба: ["fish"],
888
+ вино: ["wine"],
889
+ пиво: ["beer"],
890
+ чашка: ["cup", "mug"],
891
+ рассылка2: ["mail", "megaphone"],
892
+ шаблон: ["layout", "file"],
893
+ воронка: ["filter", "funnel"],
894
+ аналитика: ["chart", "pie"],
895
+ отчет: ["document", "chart"],
896
+ дашборд: ["layout", "grid"],
897
+ поддержка: ["life-buoy", "headset"],
898
+ телеграм: ["telegram", "send"],
899
+ вотсап: ["whatsapp"],
900
+ инстаграм: ["instagram"],
901
+ ютуб: ["youtube"],
902
+ твиттер: ["twitter"],
903
+ фейсбук: ["facebook"],
904
+ гитхаб: ["github", "git"],
905
+ гугл: ["google", "chrome"],
906
+ яндекс: ["search"],
907
+ эпл: ["apple"],
908
+ вк: ["vk"]
909
+ };
910
+ function Oe(e) {
911
+ return /[\u0400-\u04FF]/.test(e);
912
+ }
913
+ function ke(e) {
914
+ return e >= 48 && e <= 57 || e >= 65 && e <= 90 || e >= 97 && e <= 122 || e >= 1040 && e <= 1103 || e === 1025 || e === 1105;
915
+ }
916
+ function Ae(e) {
917
+ let t = 0, n = e.length;
918
+ for (; t < n && !ke(e.charCodeAt(t));) t += 1;
919
+ for (; n > t && !ke(e.charCodeAt(n - 1));) --n;
920
+ return e.slice(t, n);
921
+ }
922
+ function je(e) {
923
+ return e.toLowerCase().trim().split(/[\s,.;/\\|]+/).map(Ae).filter((e) => e.length >= 2 && !U.has(e));
924
+ }
925
+ function Me(e) {
926
+ let t = je(e);
927
+ if (t.length === 0) return [];
928
+ let n = [];
929
+ for (let e of t) if (Oe(e)) {
930
+ let t = W[e];
931
+ t?.length ? n.push([...t]) : n.push([e]);
932
+ } else n.push([e]);
933
+ return n;
934
+ }
935
+ function Ne(e) {
936
+ return {
937
+ direct: e.trim().toLowerCase(),
938
+ groups: Me(e)
939
+ };
940
+ }
941
+ function Pe(e, t, n) {
942
+ return t.length >= 2 && e.includes(t) ? !0 : n.length !== 0 && n.every((t) => t.some((t) => t.length >= 2 && e.includes(t)));
943
+ }
944
+ //#endregion
945
+ //#region packages/file-manager/src/components/ImageIcons/iconSets.ts
946
+ var Fe = ["lucide", "tabler"], G = /* @__PURE__ */ new Map(), K = /* @__PURE__ */ new Map(), q = {};
947
+ function Ie(e) {
948
+ let t = q.baseUrl === e.baseUrl, n = q.path === e.path;
949
+ t && n || (q = e, G.clear(), K.clear());
950
+ }
951
+ function Le(e) {
952
+ let t = q.path || "static/media/icon-sets";
953
+ return y(q.baseUrl || "", `${t}/${e}.json`);
954
+ }
955
+ async function Re(e) {
956
+ try {
957
+ let t = await fetch(Le(e));
958
+ if (!t.ok) throw Error(`HTTP ${t.status}`);
959
+ let n = await t.json();
960
+ return G.set(e, n), n;
961
+ } catch (t) {
962
+ return console.error(`[file-manager] icon set "${e}" is not available at ${Le(e)}`, t), K.delete(e), null;
963
+ }
964
+ }
965
+ function ze(e) {
966
+ let t = G.get(e);
967
+ if (t) return Promise.resolve(t);
968
+ let n = K.get(e) ?? Re(e);
969
+ return K.set(e, n), n;
970
+ }
971
+ async function Be() {
972
+ return (await Promise.all(Fe.map(async (e) => ({
973
+ prefix: e,
974
+ json: await ze(e)
975
+ })))).filter((e) => e.json !== null);
976
+ }
977
+ function J(e) {
978
+ return G.get(e) ?? null;
979
+ }
980
+ //#endregion
981
+ //#region packages/file-manager/src/components/ImageIcons/iconStockSearch.ts
982
+ var Ve = {
983
+ lucide: "Lucide",
984
+ tabler: "Tabler Icons"
985
+ };
986
+ function He(e, t) {
987
+ let n = t, r = e.icons;
988
+ for (let e = 0; e < 24; e += 1) {
989
+ let e = r[n];
990
+ if (e && typeof e.parent == "string") {
991
+ n = e.parent;
992
+ continue;
993
+ }
994
+ break;
995
+ }
996
+ return n;
997
+ }
998
+ function Ue(e, t) {
999
+ let n = e.icons[t];
1000
+ return !!(n && "body" in n && n.hidden);
1001
+ }
1002
+ function We(e) {
1003
+ return e.split("-").map((e) => e.length ? e.charAt(0).toUpperCase() + e.slice(1) : e).join(" ");
1004
+ }
1005
+ function Ge(e, t) {
1006
+ let n = e.prefix || t.toLowerCase(), r = [];
1007
+ for (let i of Object.keys(e.icons)) {
1008
+ let a = e.icons[i];
1009
+ if (a && "body" in a && a.hidden) continue;
1010
+ let o = He(e, i);
1011
+ if (Ue(e, o) || !z(e, i)) continue;
1012
+ let s = `${i} ${i.replace(/-/g, " ")}`.toLowerCase();
1013
+ r.push({
1014
+ prefix: n,
1015
+ slug: i,
1016
+ canonical: o,
1017
+ haystack: s,
1018
+ label: t
1019
+ });
1020
+ }
1021
+ return r;
1022
+ }
1023
+ var Ke = null;
1024
+ async function qe() {
1025
+ return Ke ||= (await Be()).flatMap(({ prefix: e, json: t }) => Ge(t, Ve[e])), Ke;
1026
+ }
1027
+ function Y(e, t, n) {
1028
+ let { haystack: r, slug: i } = e;
1029
+ if (!Pe(r, t, n)) return 0;
1030
+ let a = 10;
1031
+ if (t.length >= 2 && r.includes(t)) i.startsWith(t) ? a += 100 : r.startsWith(t) ? a += 50 : r.split(/\s+/).some((e) => e.startsWith(t)) ? a += 30 : a += 15;
1032
+ else if (n.length > 0) for (let e of n) {
1033
+ let t = e.filter((e) => e.length >= 2 && r.includes(e));
1034
+ if (t.length === 0) continue;
1035
+ let n = Math.max(...t.map((e) => i.startsWith(e) ? 100 : r.startsWith(e) ? 50 : r.split(/\s+/).some((t) => t.startsWith(e)) ? 30 : 15));
1036
+ a += n;
1037
+ }
1038
+ return a;
1039
+ }
1040
+ async function Je(e) {
1041
+ let t = e.trim();
1042
+ if (t.length < 3) return [];
1043
+ let { direct: n, groups: r } = Ne(t), i = /* @__PURE__ */ new Map();
1044
+ for (let e of await qe()) {
1045
+ let t = Y(e, n, r);
1046
+ if (t <= 0) continue;
1047
+ let a = `${e.prefix}:${e.canonical}`, o = i.get(a);
1048
+ (!o || t > o.score) && i.set(a, { score: t });
1049
+ }
1050
+ return Array.from(i.entries()).sort((e, t) => t[1].score - e[1].score || e[0].localeCompare(t[0])).map(([e]) => e);
1051
+ }
1052
+ function Ye(e, t) {
1053
+ if (t.length === 0) return e;
1054
+ let n = new Set(e), r = [...e];
1055
+ for (let e of t) n.has(e) || (n.add(e), r.push(e));
1056
+ return r;
1057
+ }
1058
+ function Xe(e) {
1059
+ let t = e.indexOf(":"), n = t > 0 ? e.slice(0, t) : "", r = t > 0 ? e.slice(t + 1) : e, i = Ve[n] ?? n;
1060
+ return {
1061
+ hash: e,
1062
+ name: We(r),
1063
+ imagePreviewUrl: "",
1064
+ isFree: !0,
1065
+ familySlug: n,
1066
+ familyName: i
1067
+ };
1068
+ }
1069
+ //#endregion
1070
+ //#region packages/file-manager/src/utils/svgParseUtils.ts
1071
+ var X = "path|rect|circle|ellipse|polygon|line|polyline|g";
1072
+ function Ze(e) {
1073
+ let t = e.trim();
1074
+ if (/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(t)) {
1075
+ let e = t.match(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})/);
1076
+ if (e) return "#" + (e[1].length === 3 ? e[1].replace(/(.)/g, "$1$1") : e[1]).toLowerCase();
1077
+ }
1078
+ let n = t.match(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);
1079
+ if (n) return "#" + [
1080
+ 1,
1081
+ 2,
1082
+ 3
1083
+ ].map((e) => parseInt(n[e], 10).toString(16).padStart(2, "0")).join("");
1084
+ let r = t.match(/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*[\d.]+\s*\)/);
1085
+ return r ? "#" + [
1086
+ 1,
1087
+ 2,
1088
+ 3
1089
+ ].map((e) => parseInt(r[e], 10).toString(16).padStart(2, "0")).join("") : {
1090
+ black: "#000000",
1091
+ white: "#ffffff",
1092
+ red: "#ff0000",
1093
+ green: "#008000",
1094
+ blue: "#0000ff"
1095
+ }[t.toLowerCase()] ?? (Z(t) || "#000000");
1096
+ }
1097
+ function Z(e) {
1098
+ let t = e.trim();
1099
+ if (!t || t === "none" || t === "transparent" || /^url\(#/.test(t)) return null;
1100
+ if (/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(t)) {
1101
+ let e = t.match(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})/);
1102
+ return e ? "#" + (e[1].length === 3 ? e[1].replace(/(.)/g, "$1$1") : e[1]).toLowerCase() : null;
1103
+ }
1104
+ if (/^rgb\(/.test(t)) {
1105
+ let e = t.match(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);
1106
+ if (e) return "#" + [
1107
+ 1,
1108
+ 2,
1109
+ 3
1110
+ ].map((t) => parseInt(e[t], 10).toString(16).padStart(2, "0")).join("");
1111
+ }
1112
+ if (/^rgba\(/.test(t)) {
1113
+ let e = t.match(/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*[\d.]+\s*\)/);
1114
+ if (e) return "#" + [
1115
+ 1,
1116
+ 2,
1117
+ 3
1118
+ ].map((t) => parseInt(e[t], 10).toString(16).padStart(2, "0")).join("");
1119
+ }
1120
+ let n = {
1121
+ black: "#000000",
1122
+ white: "#ffffff",
1123
+ red: "#ff0000",
1124
+ green: "#008000",
1125
+ blue: "#0000ff"
1126
+ }, r = t.toLowerCase();
1127
+ return n[r] ? n[r] : (r === "currentcolor" || r === "inherit" || /^[a-zA-Z]+$/.test(t), null);
1128
+ }
1129
+ function Q(e, t) {
1130
+ let n = RegExp(`${t}\\s*:\\s*([^;]+)`, "i"), r = e.match(n);
1131
+ return r ? r[1].trim() : null;
1132
+ }
1133
+ function Qe(e) {
1134
+ let t = [], n = /* @__PURE__ */ new Set();
1135
+ Array.from(e.matchAll(/<stop[^>]*?stop-color\s*=\s*["']([^"']+)["']/gi)).map((e) => e[1]).forEach((e) => {
1136
+ let r = Z(e);
1137
+ r && !n.has(r) && (n.add(r), t.push(e));
1138
+ });
1139
+ let r = RegExp(`<(?:${X})([^>]*)>`, "gi"), i;
1140
+ for (; (i = r.exec(e)) !== null;) {
1141
+ let e = i[1], r = e.match(/fill\s*=\s*["']([^"']*)["']/i);
1142
+ if (r && r[1]) {
1143
+ let e = Z(r[1]);
1144
+ e && !n.has(e) && (n.add(e), t.push(r[1]));
1145
+ }
1146
+ let a = e.match(/stroke\s*=\s*["']([^"']*)["']/i);
1147
+ if (a && a[1]) {
1148
+ let e = Z(a[1]);
1149
+ e && !n.has(e) && (n.add(e), t.push(a[1]));
1150
+ }
1151
+ let o = e.match(/style\s*=\s*["']([^"']*)["']/i);
1152
+ if (o && o[1]) {
1153
+ let e = Q(o[1], "fill");
1154
+ if (e) {
1155
+ let r = Z(e);
1156
+ r && !n.has(r) && (n.add(r), t.push(e));
1157
+ }
1158
+ let r = Q(o[1], "stroke");
1159
+ if (r) {
1160
+ let e = Z(r);
1161
+ e && !n.has(e) && (n.add(e), t.push(r));
1162
+ }
1163
+ }
1164
+ }
1165
+ let a = e.match(/<svg([^>]*)>/i);
1166
+ if (a && a[1]) {
1167
+ let e = a[1];
1168
+ for (let [r, i] of [["fill", /fill\s*=\s*["']([^"']*)["']/i], ["stroke", /stroke\s*=\s*["']([^"']*)["']/i]]) {
1169
+ let r = e.match(i);
1170
+ if (r && r[1]) {
1171
+ let e = Z(r[1]);
1172
+ e && !n.has(e) && (n.add(e), t.push(r[1]));
1173
+ }
1174
+ }
1175
+ let r = e.match(/style\s*=\s*["']([^"']*)["']/i);
1176
+ if (r && r[1]) for (let e of ["fill", "stroke"]) {
1177
+ let i = Q(r[1], e);
1178
+ if (i) {
1179
+ let e = Z(i);
1180
+ e && !n.has(e) && (n.add(e), t.push(i));
1181
+ }
1182
+ }
1183
+ }
1184
+ return t;
1185
+ }
1186
+ function $e(e) {
1187
+ let t = 0, n = RegExp(`<(?:${X})([^>]*)>`, "gi"), r;
1188
+ for (; (r = n.exec(e)) !== null;) {
1189
+ let e = r[1], n = e.match(/fill\s*=\s*["']([^"']*)["']/i), i = e.match(/style\s*=\s*["']([^"']*)["']/i), a = n && n[1] && !/^none$/i.test(n[1]) && !/^url\(#/i.test(n[1]), o = i && Q(i[1], "fill") && !/^none$/i.test(Q(i[1], "fill"));
1190
+ (a || o) && (t += 1);
1191
+ }
1192
+ return t;
1193
+ }
1194
+ function et(e) {
1195
+ let t = 0, n = RegExp(`<(?:${X})([^>]*)>`, "gi"), r;
1196
+ for (; (r = n.exec(e)) !== null;) {
1197
+ let e = r[1], n = e.match(/stroke\s*=\s*["']([^"']*)["']/i), i = e.match(/style\s*=\s*["']([^"']*)["']/i), a = n && n[1] && !/^none$/i.test(n[1]) && !/^url\(#/i.test(n[1]), o = i && Q(i[1], "stroke") && !/^none$/i.test(Q(i[1], "stroke"));
1198
+ (a || o) && (t += 1);
1199
+ }
1200
+ return t;
1201
+ }
1202
+ function tt(e) {
1203
+ return /<linearGradient/i.test(e) || /<radialGradient/i.test(e) || /fill="url\(#|stroke="url\(#/i.test(e);
1204
+ }
1205
+ function nt(e) {
1206
+ let t = e.trim().replace(/(?:px|em|ex|%)\s*$/i, ""), n = parseFloat(t);
1207
+ return Number.isNaN(n) || n <= 0 || n > 10 ? null : Math.round(n * 10) / 10;
1208
+ }
1209
+ function rt(e) {
1210
+ let t = [], n = e.indexOf("</defs>"), r = n >= 0 ? e.slice(n) : e, i = RegExp(`<(?:${X})[^>]*stroke-width\\s*=\\s*["']([^"']+)["']`, "gi"), a;
1211
+ for (; (a = i.exec(r)) !== null;) {
1212
+ let e = nt(a[1]);
1213
+ e != null && t.push(e);
1214
+ }
1215
+ let o = RegExp(`<(?:${X})[^>]*style\\s*=\\s*["'][^"']*stroke-width\\s*:\\s*([^;"]+)[^"']*["']`, "gi");
1216
+ for (; (a = o.exec(r)) !== null;) {
1217
+ let e = nt(a[1]);
1218
+ e != null && t.push(e);
1219
+ }
1220
+ if (t.length === 0) return;
1221
+ t.sort((e, t) => e - t);
1222
+ let s = Math.floor(t.length / 2);
1223
+ return t.length % 2 == 1 ? t[s] : (t[s - 1] + t[s]) / 2;
1224
+ }
1225
+ function it(e) {
1226
+ return {
1227
+ colors: Qe(e),
1228
+ fillsCount: $e(e),
1229
+ strokesCount: et(e),
1230
+ hasGradient: tt(e),
1231
+ strokeWidth: rt(e)
1232
+ };
1233
+ }
1234
+ function at(e) {
1235
+ let t = [], n = /* @__PURE__ */ new Set(), r = 0, i = 0, a = !1, o;
1236
+ for (let s of e) {
1237
+ r += s.fillsCount, i += s.strokesCount, s.hasGradient && (a = !0);
1238
+ for (let e of s.colors) {
1239
+ let r = Z(e);
1240
+ r && !n.has(r) && (n.add(r), t.push(e));
1241
+ }
1242
+ o == null && s.strokeWidth != null && (o = s.strokeWidth);
1243
+ }
1244
+ return {
1245
+ colors: t,
1246
+ fillsCount: r,
1247
+ strokesCount: i,
1248
+ hasGradient: a,
1249
+ strokeWidth: o
1250
+ };
1251
+ }
1252
+ function ot(e) {
1253
+ let t = /* @__PURE__ */ new Map(), n = { v: 1 }, r = (e) => {
1254
+ let r = Z(e);
1255
+ r && !t.has(r) && (t.set(r, n.v), n.v = Math.min(n.v + 1, 3));
1256
+ }, i = e.match(/<svg([^>]*)>/i);
1257
+ if (i?.[1]) {
1258
+ let e = i[1], t = e.match(/fill\s*=\s*["']([^"']*)["']/i), n = e.match(/stroke\s*=\s*["']([^"']*)["']/i);
1259
+ t?.[1] && !/^none$/i.test(t[1]) && !/^url\(#/i.test(t[1]) && r(t[1]), n?.[1] && !/^none$/i.test(n[1]) && !/^url\(#/i.test(n[1]) && r(n[1]);
1260
+ }
1261
+ let a = RegExp(`<(?:${X})([^>]*)>`, "gi"), o;
1262
+ for (; (o = a.exec(e)) !== null;) {
1263
+ let e = o[1], t = e.match(/fill\s*=\s*["']([^"']*)["']/i), n = e.match(/style\s*=\s*["']([^"']*)["']/i)?.[1]?.match(/fill\s*:\s*([^;]+)/i), i = (t?.[1] ?? n?.[1]?.trim())?.trim();
1264
+ i && !/^none$/i.test(i) && !/^url\(#/i.test(i) && r(i);
1265
+ let a = e.match(/stroke\s*=\s*["']([^"']*)["']/i), s = e.match(/style\s*=\s*["']([^"']*)["']/i)?.[1]?.match(/stroke\s*:\s*([^;]+)/i), c = (a?.[1] ?? s?.[1]?.trim())?.trim();
1266
+ c && !/^none$/i.test(c) && !/^url\(#/i.test(c) && r(c);
1267
+ }
1268
+ return t;
1269
+ }
1270
+ function st(e) {
1271
+ let t = [], n = /* @__PURE__ */ new Set(), r = (e) => {
1272
+ let r = Z(e);
1273
+ r && !n.has(r) && (n.add(r), t.push(e));
1274
+ }, i = Array.from(e.matchAll(/<stop[^>]*?stop-color\s*=\s*["']([^"']+)["']/gi)).map((e) => e[1]);
1275
+ if (i.length >= 2) return i.slice(0, 3).forEach((e) => r(e)), t;
1276
+ let a = e.match(/<svg([^>]*)>/i);
1277
+ if (a?.[1]) {
1278
+ let e = a[1], t = e.match(/fill\s*=\s*["']([^"']*)["']/i), n = e.match(/stroke\s*=\s*["']([^"']*)["']/i);
1279
+ t?.[1] && !/^none$/i.test(t[1]) && !/^url\(#/i.test(t[1]) && r(t[1]), n?.[1] && !/^none$/i.test(n[1]) && !/^url\(#/i.test(n[1]) && r(n[1]);
1280
+ }
1281
+ let o = RegExp(`<(?:${X})([^>]*)>`, "gi"), s;
1282
+ for (; (s = o.exec(e)) !== null;) {
1283
+ let e = s[1], t = e.match(/fill\s*=\s*["']([^"']*)["']/i), n = e.match(/style\s*=\s*["']([^"']*)["']/i)?.[1]?.match(/fill\s*:\s*([^;]+)/i), i = (t?.[1] ?? n?.[1]?.trim())?.trim();
1284
+ i && !/^none$/i.test(i) && !/^url\(#/i.test(i) && r(i);
1285
+ let a = e.match(/stroke\s*=\s*["']([^"']*)["']/i), o = e.match(/style\s*=\s*["']([^"']*)["']/i)?.[1]?.match(/stroke\s*:\s*([^;]+)/i), c = (a?.[1] ?? o?.[1]?.trim())?.trim();
1286
+ c && !/^none$/i.test(c) && !/^url\(#/i.test(c) && r(c);
1287
+ }
1288
+ return t.slice(0, 3);
1289
+ }
1290
+ //#endregion
1291
+ //#region packages/file-manager/src/components/ImageIcons/normalizeSvgForCss.ts
1292
+ function ct(e, t) {
1293
+ let n = e, r = /<linearGradient[\s\S]*?<\/linearGradient>/i.test(n) || /<radialGradient[\s\S]*?<\/radialGradient>/i.test(n);
1294
+ if (!(/fill="url\(#/i.test(n) || /stroke="url\(#/i.test(n))) {
1295
+ let e = ot(n), t = (t) => {
1296
+ let n = Z(t), r = n ? e.get(n) : void 0;
1297
+ return r === 1 ? "var(--em-icon-color-1)" : r === 2 ? "var(--em-icon-color-2)" : r === 3 ? "var(--em-icon-color-3)" : "currentColor";
1298
+ };
1299
+ n = n.replace(/<svg([^>]*)>/i, (e, n) => {
1300
+ let r = n, i = n.match(/fill\s*=\s*["']([^"']*)["']/i);
1301
+ i?.[1] && !/^none$/i.test(i[1]) && !/^url\(#/i.test(i[1]) && (r = r.replace(/fill\s*=\s*["'][^"']*["']/i, `fill="${t(i[1])}"`));
1302
+ let a = n.match(/stroke\s*=\s*["']([^"']*)["']/i);
1303
+ return a?.[1] && !/^none$/i.test(a[1]) && !/^url\(#/i.test(a[1]) && (r = r.replace(/stroke\s*=\s*["'][^"']*["']/i, `stroke="${t(a[1])}"`)), `<svg${r}>`;
1304
+ }), n = n.replace(/<(path|rect|circle|ellipse|polygon|line|polyline)([^>]*?)(\/>|>)/gi, (e, n, r, i) => {
1305
+ let a = r, o = r.match(/fill\s*=\s*["']([^"']*)["']/i), s = r.match(/style\s*=\s*["']([^"']*)["']/i), c = s?.[1]?.match(/fill\s*:\s*([^;]+)/i), l = (o?.[1] ?? c?.[1]?.trim())?.trim();
1306
+ if (l && !/^none$/i.test(l) && !/^url\(#/i.test(l)) {
1307
+ let e = t(l);
1308
+ o ? a = a.replace(/fill\s*=\s*["'][^"']*["']/i, `fill="${e}"`) : s?.[1] && (a = a.replace(/style\s*=\s*["']([^"']*)["']/i, (t, n) => "style=\"" + n.replace(/fill\s*:\s*[^;]+/gi, "fill: " + e) + "\""));
1309
+ }
1310
+ let u = r.match(/stroke\s*=\s*["']([^"']*)["']/i), d = r.match(/style\s*=\s*["']([^"']*)["']/i), f = d?.[1]?.match(/stroke\s*:\s*([^;]+)/i), p = (u?.[1] ?? f?.[1]?.trim())?.trim();
1311
+ if (p && !/^none$/i.test(p) && !/^url\(#/i.test(p)) {
1312
+ let e = t(p);
1313
+ u ? a = a.replace(/stroke\s*=\s*["'][^"']*["']/i, `stroke="${e}"`) : d?.[1] && (a = a.replace(/style\s*=\s*["']([^"']*)["']/i, (t, n) => "style=\"" + n.replace(/stroke\s*:\s*[^;]+/gi, "stroke: " + e) + "\""));
1314
+ }
1315
+ return `<${n}${a}${i}`;
1316
+ });
1317
+ }
1318
+ return r && (n = n.replace(/<linearGradient([^>]*?)>([\s\S]*?)<\/linearGradient>/gi, (e, t, n) => {
1319
+ let r = 0;
1320
+ return `<linearGradient${t}>${n.replace(/<stop([^>]*?)>/gi, (e, t) => {
1321
+ let n = r === 0 ? "var(--em-icon-grad-1)" : "var(--em-icon-grad-2)";
1322
+ return r += 1, /stop-color\s*=/.test(t) ? "<stop" + t.replace(/stop-color="[^"]*"/i, "stop-color=\"" + n + "\"") + ">" : "<stop" + t + " stop-color=\"" + n + "\">";
1323
+ })}</linearGradient>`;
1324
+ }), n = n.replace(/<radialGradient([^>]*?)>([\s\S]*?)<\/radialGradient>/gi, (e, t, n) => {
1325
+ let r = 0;
1326
+ return `<radialGradient${t}>${n.replace(/<stop([^>]*?)>/gi, (e, t) => {
1327
+ let n = r === 0 ? "var(--em-icon-grad-1)" : "var(--em-icon-grad-2)";
1328
+ return r += 1, /stop-color\s*=/.test(t) ? "<stop" + t.replace(/stop-color="[^"]*"/i, "stop-color=\"" + n + "\"") + ">" : "<stop" + t + " stop-color=\"" + n + "\">";
1329
+ })}</radialGradient>`;
1330
+ })), typeof t?.strokeWidth == "number" && !Number.isNaN(t.strokeWidth) && (/stroke-width\s*=\s*["'][^"']*["']/i.test(n) && (n = n.replace(/stroke-width\s*=\s*["'][^"']*["']/gi, `stroke-width="${t.strokeWidth}"`)), /stroke-width\s*:/.test(n) && (n = n.replace(/stroke-width\s*:\s*[^;]+/gi, `stroke-width: ${t.strokeWidth}`)), /stroke-width/i.test(n) || (n = n.replace(/<svg/, `<svg stroke-width="${t.strokeWidth}"`))), n = n.replace(/<svg([^>]*)>/i, (e, t) => `<svg${t.replace(/\swidth="[^"]*"/i, "").replace(/\sheight="[^"]*"/i, "")} width="100%" height="100%">`), n;
1331
+ }
1332
+ //#endregion
1333
+ //#region packages/file-manager/src/components/ImageIcons/useIconifyStock.ts
1334
+ var $ = /* @__PURE__ */ new Map();
1335
+ function lt(e) {
1336
+ let t = e.indexOf(":");
1337
+ if (t <= 0) return null;
1338
+ let n = e.slice(0, t), r = e.slice(t + 1);
1339
+ return r ? {
1340
+ prefix: n,
1341
+ slug: r
1342
+ } : null;
1343
+ }
1344
+ function ut(e, t, n) {
1345
+ let r = J(e);
1346
+ if (!r) throw Error(`Unknown icon set prefix: ${e}`);
1347
+ let i = z(r, t);
1348
+ if (!i) throw Error(`Unknown icon: ${e}:${t}`);
1349
+ let a = H(i, {
1350
+ width: n,
1351
+ height: n
1352
+ }), o = De(a.body, a.attributes);
1353
+ return o = o.replace(/<svg([^>]*)>/i, (e, t) => `<svg${t.replace(/\swidth="[^"]*"/i, "").replace(/\sheight="[^"]*"/i, "")} width="100%" height="100%">`), o;
1354
+ }
1355
+ function dt(e) {
1356
+ return {
1357
+ fetchSvgDataUrl: b.useCallback(async (t, n) => {
1358
+ let r = lt(t);
1359
+ if (!r) throw Error(`Invalid icon id (expected prefix:name): ${t}`);
1360
+ let { prefix: i, slug: a } = r, o = n?.size ?? 96, s = [
1361
+ t,
1362
+ e ? "css=1" : "css=0",
1363
+ e ? "" : `c1=${n?.inlineColors?.colorHex ?? ""}|c2=${n?.inlineColors?.colorHex2 ?? ""}|c3=${n?.inlineColors?.colorHex3 ?? ""}`,
1364
+ n?.strokeWidth == null ? "" : `sw=${n.strokeWidth}`,
1365
+ `s=${o}`
1366
+ ].filter(Boolean).join("|"), l = $.get(s);
1367
+ if (l) return l;
1368
+ if (n?.signal?.aborted) throw new DOMException("Aborted", "AbortError");
1369
+ await Be();
1370
+ let u = ut(i, a, o), d = u;
1371
+ e ? d = ct(d, { strokeWidth: n?.strokeWidth }) : n?.inlineColors && (d = c(d, n.inlineColors));
1372
+ let f = `data:image/svg+xml;utf8,${encodeURIComponent(d)}`, p = {
1373
+ text: d,
1374
+ url: f,
1375
+ original: u
1376
+ };
1377
+ return $.set(s, p), p;
1378
+ }, [e]),
1379
+ normalizeSvgForCss: ct
1380
+ };
1381
+ }
1382
+ //#endregion
1383
+ //#region packages/file-manager/src/components/ImageIcons/useIconsCopyToFolder.tsx
1384
+ async function ft(e) {
1385
+ let { hashes: t, items: n, folderId: r, dataProviders: i, getPngDataUrlForItem: c, dataUrlToBlob: l, config: u } = e, d = 0, f = 0;
1386
+ for (let e of t) {
1387
+ let t = n.find((t) => t.hash === e);
1388
+ if (!t) {
1389
+ f += 1;
1390
+ continue;
1391
+ }
1392
+ let p = await c(t);
1393
+ if (!p) {
1394
+ f += 1;
1395
+ continue;
1396
+ }
1397
+ let m = t.name?.trim() || `icon-${e}`, h = o(`${m}.png`, u), g = await a(i, h, r, !1, s(u)), _ = l(p, "image/png"), v = new File([_], g, {
1398
+ type: "image/png",
1399
+ lastModified: Date.now()
1400
+ });
1401
+ try {
1402
+ await i.uploadFile({
1403
+ name: g,
1404
+ size: v.size,
1405
+ type: v.type,
1406
+ folderId: r,
1407
+ data: v,
1408
+ extension: "png"
1409
+ }), d += 1;
1410
+ } catch {
1411
+ f += 1;
1412
+ }
1413
+ }
1414
+ return {
1415
+ successCount: d,
1416
+ failCount: f
1417
+ };
1418
+ }
1419
+ var pt = ({ items: e, selectedHashes: n, getPngDataUrlForItem: i, dataUrlToBlob: a, clearSelection: o }) => {
1420
+ let { t: s } = u(), { options: c, state: d } = t(), f = r(), [p, h] = b.useState(!1), [g] = w.useForm(), [v, y] = b.useState(!1), x = b.useRef(!1), { state: S, actions: { fetchFolders: C, fetchChildFolders: ee, handleModalOk: T } } = l(), { EmptyFolderIcon: E } = _(), { activeFormField: te, setActiveFormField: D, generateMenuItemsFromFolders: ne } = m({
1421
+ folders: Array.isArray(S.folders) ? S.folders : [],
1422
+ selectedFolder: d.selectedFolder,
1423
+ EmptyFolderIcon: E,
1424
+ handleCreateFolderModalOk: T,
1425
+ setIsLoading: y,
1426
+ t: s
1427
+ }), re = b.useCallback(async () => {
1428
+ await C(), h(!0);
1429
+ }, [C]), ie = b.useCallback(async (e) => {
1430
+ e.length > 0 && (g.setFieldsValue({ targetFolder: e[0] }), te !== e[0].toString() && D(""));
1431
+ }, [
1432
+ te,
1433
+ g,
1434
+ D
1435
+ ]), O = b.useCallback(async (t) => {
1436
+ try {
1437
+ let { dataProviders: r } = c;
1438
+ if (!r || !r.uploadFile && !r.uploadFiles) {
1439
+ f.error({
1440
+ id: "FILES_UPLOAD_PROVIDER_NOT_CONFIGURED",
1441
+ message: s("API-endpoint for file upload is not configured"),
1442
+ placement: "bottomRight"
1443
+ });
1444
+ return;
1445
+ }
1446
+ let l = t || d?.selectedFolder || void 0, u = Array.from(n);
1447
+ if (u.length === 0) return;
1448
+ let { successCount: p, failCount: m } = await ft({
1449
+ hashes: u,
1450
+ items: e,
1451
+ folderId: l,
1452
+ dataProviders: {
1453
+ uploadFile: r.uploadFile ?? (async (e) => {
1454
+ if (!r.uploadFiles) throw Error("Upload is not supported by data provider");
1455
+ let t = await r.uploadFiles({
1456
+ folderId: e.folderId,
1457
+ items: [{
1458
+ name: e.name,
1459
+ size: e.size,
1460
+ type: e.type,
1461
+ folderId: e.folderId,
1462
+ data: e.data,
1463
+ extension: e.extension
1464
+ }]
1465
+ }), n = t?.detailed?.[0];
1466
+ if (!t || !t.success || !n || n.success === !1) {
1467
+ let e = n?.error?.message || t?.error?.message || "Upload failed";
1468
+ throw Error(e);
1469
+ }
1470
+ return n.data;
1471
+ }),
1472
+ getFiles: r.getFiles,
1473
+ getFolders: r.getFolders
1474
+ },
1475
+ getPngDataUrlForItem: i,
1476
+ dataUrlToBlob: a,
1477
+ config: c?.config
1478
+ });
1479
+ p > 0 && f.success({
1480
+ id: "FILES_COPY_SUCCESS",
1481
+ message: s("Files copied"),
1482
+ placement: "bottomRight",
1483
+ data: {
1484
+ successCount: p,
1485
+ totalCount: u.length,
1486
+ itemIds: u,
1487
+ folderId: l ?? null
1488
+ }
1489
+ }), m > 0 && f.error({
1490
+ id: "FILES_COPY_ERROR",
1491
+ message: s("При копировании произошли ошибки"),
1492
+ placement: "bottomRight",
1493
+ data: {
1494
+ failCount: m,
1495
+ totalCount: u.length,
1496
+ itemIds: u,
1497
+ folderId: l ?? null
1498
+ }
1499
+ }), o();
1500
+ } catch (e) {
1501
+ console.error(e), f.error({
1502
+ id: "FILES_COPY_ERROR",
1503
+ message: s("При копировании произошли ошибки"),
1504
+ placement: "bottomRight",
1505
+ innerException: e,
1506
+ data: {
1507
+ failCount: Array.from(n).length || 0,
1508
+ totalCount: Array.from(n).length || 0,
1509
+ itemIds: Array.from(n),
1510
+ folderId: d?.selectedFolder ?? null
1511
+ }
1512
+ });
1513
+ }
1514
+ }, [
1515
+ o,
1516
+ a,
1517
+ i,
1518
+ e,
1519
+ f,
1520
+ c,
1521
+ n,
1522
+ d?.selectedFolder,
1523
+ s
1524
+ ]);
1525
+ return {
1526
+ isCopyIconsModalVisible: p,
1527
+ isCopyLoading: v,
1528
+ copyForm: g,
1529
+ openCopyModal: re,
1530
+ closeCopyModal: b.useCallback(() => {
1531
+ v || x.current || (h(!1), D(""), y(!1));
1532
+ }, [v, D]),
1533
+ resetAfterClose: b.useCallback(() => {
1534
+ D(""), y(!1);
1535
+ }, [D]),
1536
+ handleCopyTreeSelect: ie,
1537
+ handleIconsCopyOk: b.useCallback(async (e) => {
1538
+ if (!x.current) {
1539
+ x.current = !0, y(!0);
1540
+ try {
1541
+ await O(e ?? null), h(!1), D("");
1542
+ } finally {
1543
+ x.current = !1, y(!1);
1544
+ }
1545
+ }
1546
+ }, [O, D]),
1547
+ handleCreateFolderAndCopy: b.useCallback(() => {
1548
+ let e = d.selectedFolder ?? "folders";
1549
+ D(e), g.setFieldsValue({
1550
+ folderName: s("New folder"),
1551
+ targetFolder: e
1552
+ });
1553
+ }, [
1554
+ g,
1555
+ d.selectedFolder,
1556
+ D,
1557
+ s
1558
+ ]),
1559
+ fetchChildFolders: ee,
1560
+ generateMenuItemsFromFolders: ne
1561
+ };
1562
+ }, mt = 30, ht = 30, gt = 8;
1563
+ async function _t(e, t, n) {
1564
+ if (e.length === 0) return [];
1565
+ let r = Array(e.length), i = 0, a = Math.max(1, Math.min(t, e.length)), o = async () => {
1566
+ for (;;) {
1567
+ let t = i++;
1568
+ if (t >= e.length) return;
1569
+ r[t] = await n(e[t]);
1570
+ }
1571
+ };
1572
+ return await Promise.all(Array.from({ length: a }, () => o())), r;
1573
+ }
1574
+ var vt = ({ customRequest: r, query: a, setQuery: o, inputRef: s }) => {
1575
+ let { t: l } = u(), d = n(), [m, h] = b.useState(""), _ = a === void 0 ? m : a, v = o === void 0 ? h : o, [y, S] = b.useState(""), [C, E] = b.useState([]), [ae, le] = b.useState(0), [fe, pe] = b.useState(!1), [j, me] = b.useState(!1), [ge, _e] = b.useState(!1), [M, N] = b.useState(null), [P, ye] = b.useState({}), [F, be] = b.useState({}), [I, L] = b.useState("#000000"), [R, xe] = b.useState("#ff007a"), [z, Se] = b.useState("#00C2FF"), [B, Ce] = b.useState(1), [V, we] = b.useState(50), [Te, Ee] = b.useState(!1), { options: H } = t(), De = H.config, U = b.useRef(!1), W = b.useRef(null), Oe = b.useRef(0), ke = b.useRef(null), Ae = b.useRef(null), je = b.useRef(void 0);
1576
+ je.current = ve(H?.config);
1577
+ let Me = b.useRef(H?.config?.locale);
1578
+ Me.current = H?.config?.locale;
1579
+ let Ne = b.useRef(null), Pe = b.useRef(/* @__PURE__ */ new Set()), Fe = b.useRef(null), G = b.useRef(/* @__PURE__ */ new Set()), [K, q] = b.useState(/* @__PURE__ */ new Set()), Le = b.useRef([]), Re = b.useRef(null), { fetchSvgDataUrl: ze, normalizeSvgForCss: Be } = dt(!0), J = b.useMemo(() => {
1580
+ if (C.length === 0) return null;
1581
+ let e = new Set(C.map((e) => e.hash)), t = Object.keys(F).some((t) => e.has(t)) ? F : P, n = C.map((e) => t[e.hash]).filter((e) => !!e);
1582
+ return n.length === 0 ? null : at(n.map((e) => it(e)));
1583
+ }, [
1584
+ C,
1585
+ F,
1586
+ P
1587
+ ]), Ve = !!J?.hasGradient, He = b.useMemo(() => {
1588
+ let t = e("icon-color-2", "i");
1589
+ return C.some((e) => {
1590
+ let n = P[e.hash];
1591
+ return !!n && t.test(n);
1592
+ });
1593
+ }, [C, P]), Ue = b.useMemo(() => {
1594
+ let t = e("icon-color-3", "i");
1595
+ return C.some((e) => {
1596
+ let n = P[e.hash];
1597
+ return !!n && t.test(n);
1598
+ });
1599
+ }, [C, P]), We = b.useMemo(() => J ? Ve || J.colors.length >= 2 && He : !1, [
1600
+ J,
1601
+ Ve,
1602
+ !0,
1603
+ He
1604
+ ]), Ge = b.useMemo(() => J ? J.colors.length >= 3 && Ue : !1, [
1605
+ J,
1606
+ !0,
1607
+ Ue
1608
+ ]);
1609
+ b.useEffect(() => {
1610
+ Ie({
1611
+ baseUrl: De?.baseUrl,
1612
+ path: De?.iconSetsUrl
1613
+ });
1614
+ }, [De?.baseUrl, De?.iconSetsUrl]), b.useEffect(() => (U.current = !0, () => {
1615
+ U.current = !1;
1616
+ try {
1617
+ Ne.current?.abort(), Fe.current?.abort();
1618
+ } catch {}
1619
+ }), []);
1620
+ let Ke = b.useRef(_), qe = b.useCallback(async (e) => {
1621
+ let t = e.override?.query ?? y;
1622
+ if (!t || t.trim().length < 3 || (e.initial ? j : ge || j) || !U.current) return;
1623
+ e.initial ? (Le.current = e.override?.stockIds === void 0 ? await Je(t) : e.override.stockIds, me(!0), E([]), ye({}), be({}), le(0), pe(!1)) : _e(!0);
1624
+ let n = Le.current, r = e.initial ? 0 : ae, i = e.initial ? mt : ht, a = `${t}|${r}|${i}|${e.initial ? "i" : "m"}`;
1625
+ if (!G.current.has(a)) {
1626
+ G.current.add(a);
1627
+ try {
1628
+ let t = n.slice(r, r + i).map(Xe);
1629
+ if (!U.current) return;
1630
+ if (e.initial) {
1631
+ let e = t.filter((e, t, n) => n.findIndex((t) => t.hash === e.hash) === t);
1632
+ E(e);
1633
+ } else E((e) => {
1634
+ let n = new Set(e.map((e) => e.hash)), r = t.filter((e) => !n.has(e.hash));
1635
+ return r.length > 0 ? [...e, ...r] : e;
1636
+ });
1637
+ pe(r + t.length < n.length), le(r + t.length);
1638
+ } catch (e) {
1639
+ if (e?.name === "AbortError") return;
1640
+ console.error(e), d.error(l("Request error"));
1641
+ } finally {
1642
+ U.current && (e.initial ? me(!1) : _e(!1)), G.current.delete(a);
1643
+ }
1644
+ }
1645
+ }, [
1646
+ y,
1647
+ ge,
1648
+ j,
1649
+ ae,
1650
+ l
1651
+ ]);
1652
+ b.useEffect(() => {
1653
+ Ae.current = qe;
1654
+ }, [qe]);
1655
+ let Y = b.useCallback(async (e) => {
1656
+ if (!e || e.trim().length < 3) return;
1657
+ let t = e.trim();
1658
+ if (ke.current === t) return;
1659
+ let n = ++Oe.current, r = e.trim(), i = r;
1660
+ if (je.current) try {
1661
+ i = (await je.current(e, { locale: Me.current }) ?? r).trim() || r;
1662
+ } catch (e) {
1663
+ console.error("IconsTab: translation error", e), i = r;
1664
+ }
1665
+ if (n !== Oe.current) return;
1666
+ Pe.current.clear(), N(null), q(/* @__PURE__ */ new Set()), S(i);
1667
+ let a;
1668
+ je.current && r !== i && (a = Ye(await Je(i), await Je(r))), await Ae.current?.({
1669
+ initial: !0,
1670
+ override: {
1671
+ query: i,
1672
+ stockIds: a
1673
+ }
1674
+ }), ke.current = t;
1675
+ }, []), X = b.useCallback(async () => {
1676
+ !_ || _.trim().length < 3 || (W.current &&= (window.clearTimeout(W.current), null), await Y(_));
1677
+ }, [_, Y]), Z = b.useCallback(() => {
1678
+ Oe.current += 1, Pe.current.clear(), Le.current = [], Re.current = null, S(""), E([]), _e(!1), pe(!1), le(0), ke.current = null, N(null), q(/* @__PURE__ */ new Set()), L("#000000"), xe("#ff007a"), Se("#00C2FF");
1679
+ }, []);
1680
+ b.useEffect(() => {
1681
+ let e = Ke.current;
1682
+ e && e.trim().length >= 3 && Y(e);
1683
+ }, [Y]), b.useEffect(() => {
1684
+ let e = _.trim();
1685
+ if (W.current &&= (window.clearTimeout(W.current), null), e.length < 3) {
1686
+ Z();
1687
+ return;
1688
+ }
1689
+ W.current = window.setTimeout(() => {
1690
+ Y(e);
1691
+ }, 700);
1692
+ }, [
1693
+ _,
1694
+ Z,
1695
+ Y
1696
+ ]);
1697
+ let Q = b.useCallback((e) => {
1698
+ N(e.hash);
1699
+ }, []);
1700
+ b.useEffect(() => {
1701
+ if (C.length === 0) return;
1702
+ let e = C.map((e) => e.hash).filter((e) => !P[e]);
1703
+ if (e = e.filter((e) => !Pe.current.has(e)), e.length === 0) return;
1704
+ let t = !1;
1705
+ Ne.current?.abort();
1706
+ let n = new AbortController();
1707
+ return Ne.current = n, _t(e, gt, (e) => ze(e, {
1708
+ strokeWidth: typeof B == "number" ? B : void 0,
1709
+ size: V,
1710
+ signal: n.signal,
1711
+ inlineColors: void 0
1712
+ }).then((t) => ({
1713
+ h: e,
1714
+ r: t
1715
+ })).catch((t) => (t?.name === "AbortError" || Pe.current.add(e), {
1716
+ h: e,
1717
+ r: null
1718
+ }))).then((e) => {
1719
+ if (t || !U.current) return;
1720
+ let n = {}, r = {};
1721
+ e.forEach((e) => {
1722
+ e && e.h && e.r && (n[e.h] = e.r.text, e.r.original && (r[e.h] = e.r.original));
1723
+ }), Object.keys(n).length > 0 && ye((e) => ({
1724
+ ...e,
1725
+ ...n
1726
+ })), Object.keys(r).length > 0 && be((e) => ({
1727
+ ...e,
1728
+ ...r
1729
+ }));
1730
+ }).catch(() => {}), () => {
1731
+ t = !0, n.abort();
1732
+ };
1733
+ }, [
1734
+ I,
1735
+ R,
1736
+ z,
1737
+ ze,
1738
+ C,
1739
+ V,
1740
+ B,
1741
+ P,
1742
+ !0
1743
+ ]), b.useEffect(() => {
1744
+ if (C.length === 0) return;
1745
+ let e = C.map((e) => e.hash), t = {}, n = !1;
1746
+ e.forEach((e) => {
1747
+ let r = F[e] || P[e];
1748
+ if (!r) return;
1749
+ let i = Be(r, { strokeWidth: typeof B == "number" ? B : void 0 });
1750
+ i && i !== P[e] && (t[e] = i, n = !0);
1751
+ }), n && Object.keys(t).length > 0 && ye((e) => ({
1752
+ ...e,
1753
+ ...t
1754
+ }));
1755
+ }, [
1756
+ C,
1757
+ Be,
1758
+ F,
1759
+ B,
1760
+ P
1761
+ ]), b.useEffect(() => {
1762
+ if (C.length === 0) return;
1763
+ let e = y.trim();
1764
+ if (!e || Re.current === e) return;
1765
+ let t = C.find((e) => F[e.hash]);
1766
+ if (!t) return;
1767
+ let n = F[t.hash];
1768
+ if (!n) return;
1769
+ Re.current = e;
1770
+ let r = st(n), i = (e) => {
1771
+ let t = (e || "").trim().match(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/);
1772
+ return t ? "#" + (t[1].length === 3 ? t[1].replace(/(.)/g, "$1$1") : t[1]).toLowerCase() : Ze(e);
1773
+ };
1774
+ r[0] && L(i(r[0])), r[1] && xe(i(r[1])), r[2] && Se(i(r[2]));
1775
+ }, [
1776
+ y,
1777
+ C,
1778
+ F
1779
+ ]);
1780
+ let Qe = b.useCallback((e) => c(e, {
1781
+ colorHex: I,
1782
+ colorHex2: R,
1783
+ colorHex3: z
1784
+ }), [
1785
+ I,
1786
+ R,
1787
+ z
1788
+ ]), $e = b.useCallback((e) => {
1789
+ q((t) => {
1790
+ let n = new Set(t);
1791
+ return n.has(e) ? n.delete(e) : n.add(e), n;
1792
+ });
1793
+ }, []), et = b.useCallback(() => {
1794
+ q(/* @__PURE__ */ new Set());
1795
+ }, []), tt = b.useMemo(() => {
1796
+ if (K.size === 1) {
1797
+ let [e] = Array.from(K);
1798
+ return C.find((t) => t.hash === e) || null;
1799
+ }
1800
+ return K.size === 0 && M && C.find((e) => e.hash === M) || null;
1801
+ }, [
1802
+ C,
1803
+ M,
1804
+ K
1805
+ ]), nt = b.useCallback((e, t = "image/png") => {
1806
+ try {
1807
+ let n = e.split(",");
1808
+ if (n.length < 2) return new Blob([], { type: t });
1809
+ let r = n[1] || "", i = atob(r), a = Array(i.length);
1810
+ for (let e = 0; e < i.length; e += 1) a[e] = i.charCodeAt(e);
1811
+ let o = new Uint8Array(a);
1812
+ return new Blob([o], { type: t });
1813
+ } catch {
1814
+ return new Blob([], { type: t });
1815
+ }
1816
+ }, []), rt = b.useCallback(async (e, t) => {
1817
+ try {
1818
+ let n = P[e.hash] || F[e.hash];
1819
+ n ||= (await ze(e.hash, {
1820
+ strokeWidth: typeof B == "number" ? B : void 0,
1821
+ size: V,
1822
+ signal: t,
1823
+ inlineColors: void 0
1824
+ })).text;
1825
+ let r = Qe(n), a = f(r, V);
1826
+ return i(r, a.width, a.height);
1827
+ } catch {
1828
+ return null;
1829
+ }
1830
+ }, [
1831
+ Qe,
1832
+ I,
1833
+ R,
1834
+ z,
1835
+ ze,
1836
+ F,
1837
+ V,
1838
+ B,
1839
+ P,
1840
+ !0
1841
+ ]), ot = b.useCallback(async (e) => {
1842
+ try {
1843
+ if (!U.current) return;
1844
+ Ee(!0), Fe.current?.abort();
1845
+ let t = new AbortController();
1846
+ Fe.current = t;
1847
+ let n = await rt(e, t.signal);
1848
+ if (!U.current || !n) return;
1849
+ await Promise.resolve(r(n));
1850
+ } catch (e) {
1851
+ console.error("IconsTab: insert error", e), d.error(l("Request error"));
1852
+ } finally {
1853
+ U.current && Ee(!1);
1854
+ }
1855
+ }, [
1856
+ r,
1857
+ rt,
1858
+ l
1859
+ ]), { isCopyIconsModalVisible: ct, isCopyLoading: $, copyForm: lt, openCopyModal: ut, closeCopyModal: ft, resetAfterClose: vt, handleCopyTreeSelect: yt, handleIconsCopyOk: bt, fetchChildFolders: xt, generateMenuItemsFromFolders: St, handleCreateFolderAndCopy: Ct } = pt({
1860
+ items: C,
1861
+ selectedHashes: K,
1862
+ getPngDataUrlForItem: rt,
1863
+ dataUrlToBlob: nt,
1864
+ clearSelection: et
1865
+ }), wt = !!y.trim() && (C.length > 0 || j), Tt = wt && K.size > 0;
1866
+ return /* @__PURE__ */ k(ie, { children: [/* @__PURE__ */ k("div", {
1867
+ className: `${A.iconsTab} ${y.trim() ? A.hasSearch : ""}`,
1868
+ children: [
1869
+ wt && Tt ? /* @__PURE__ */ k("div", {
1870
+ className: A.iconsHeaderContainer,
1871
+ children: [/* @__PURE__ */ k("div", {
1872
+ className: A.iconsHeaderContainerLeft,
1873
+ children: [/* @__PURE__ */ k(re.Text, {
1874
+ type: "secondary",
1875
+ children: [
1876
+ K.size,
1877
+ " ",
1878
+ l("selected")
1879
+ ]
1880
+ }), /* @__PURE__ */ O(x, {
1881
+ icon: /* @__PURE__ */ O(ce, { size: 16 }),
1882
+ onClick: et,
1883
+ children: l("Deselected")
1884
+ })]
1885
+ }), /* @__PURE__ */ O(D, { children: /* @__PURE__ */ O(x, {
1886
+ icon: /* @__PURE__ */ O(oe, { size: 16 }),
1887
+ onClick: ut,
1888
+ children: l("Copy to folder")
1889
+ }) })]
1890
+ }) : /* @__PURE__ */ O(ue, {
1891
+ query: _,
1892
+ onQueryChange: v,
1893
+ onSubmit: X,
1894
+ hasResults: C.length > 0 || j,
1895
+ inputRef: s
1896
+ }),
1897
+ wt ? /* @__PURE__ */ O(de, {
1898
+ colorHex: I,
1899
+ setColorHex: L,
1900
+ colorHex2: R,
1901
+ setColorHex2: xe,
1902
+ colorHex3: z,
1903
+ setColorHex3: Se,
1904
+ sizePx: V,
1905
+ setSizePx: we,
1906
+ strokeWidth: B,
1907
+ setStrokeWidth: Ce,
1908
+ showSecondColor: We,
1909
+ showThirdColor: Ge
1910
+ }) : null,
1911
+ /* @__PURE__ */ O(he, {
1912
+ items: C,
1913
+ loading: j,
1914
+ isCollectingResults: ge,
1915
+ hasMore: fe,
1916
+ hasQuery: !!y.trim(),
1917
+ selectedHash: M,
1918
+ onItemClick: Q,
1919
+ onInsert: ot,
1920
+ onLoadMore: () => {
1921
+ qe({ initial: !1 }).catch(() => {});
1922
+ },
1923
+ colorVars: {
1924
+ colorHex: I,
1925
+ colorHex2: R,
1926
+ colorHex3: z
1927
+ },
1928
+ svgTextMap: P,
1929
+ previewSize: V,
1930
+ selectedHashes: K,
1931
+ onToggleSelect: $e
1932
+ }),
1933
+ tt ? /* @__PURE__ */ k("div", {
1934
+ className: A.iconsBottomBar,
1935
+ children: [/* @__PURE__ */ O(ee, { className: "zero-divider" }), /* @__PURE__ */ O("div", {
1936
+ className: A.iconsBottomBarContent,
1937
+ children: /* @__PURE__ */ O(D, { children: /* @__PURE__ */ O(x, {
1938
+ size: "large",
1939
+ type: "primary",
1940
+ style: { height: 40 },
1941
+ loading: Te,
1942
+ onClick: () => ot(tt),
1943
+ children: l("Choose")
1944
+ }) })
1945
+ })]
1946
+ }) : null
1947
+ ]
1948
+ }), /* @__PURE__ */ O(te, {
1949
+ title: /* @__PURE__ */ O("div", {
1950
+ className: "modal-title",
1951
+ children: l("Copy to folder")
1952
+ }),
1953
+ open: ct,
1954
+ onCancel: () => {
1955
+ $ || ft();
1956
+ },
1957
+ mask: { closable: !$ },
1958
+ closable: !$,
1959
+ keyboard: !$,
1960
+ centered: !0,
1961
+ getContainer: H.getModalContainer,
1962
+ footer: /* @__PURE__ */ k("div", {
1963
+ className: g.formFooter,
1964
+ children: [/* @__PURE__ */ k(x, {
1965
+ className: g.folderButton,
1966
+ onClick: Ct,
1967
+ loading: $,
1968
+ children: [/* @__PURE__ */ O(se, {
1969
+ size: 18,
1970
+ strokeWidth: H.config?.iconStrokeWidth
1971
+ }), l("Create folder")]
1972
+ }), /* @__PURE__ */ O(x, {
1973
+ type: "primary",
1974
+ className: g.folderButton,
1975
+ onClick: () => {
1976
+ ft();
1977
+ },
1978
+ loading: $,
1979
+ children: l("Done")
1980
+ })]
1981
+ }),
1982
+ afterClose: () => vt(),
1983
+ children: /* @__PURE__ */ k("div", {
1984
+ className: A.copyToFolderModalBody,
1985
+ children: [$ ? /* @__PURE__ */ O("div", {
1986
+ className: A.copyToFolderModalLoadingOverlay,
1987
+ children: /* @__PURE__ */ O(ne, { size: "large" })
1988
+ }) : null, /* @__PURE__ */ O(w, {
1989
+ form: lt,
1990
+ layout: "vertical",
1991
+ initialValues: {
1992
+ targetFolder: "folders",
1993
+ folderName: l("New folder"),
1994
+ is_force_create: !1
1995
+ },
1996
+ children: /* @__PURE__ */ k("div", {
1997
+ className: g.foldersWrapper,
1998
+ children: [
1999
+ /* @__PURE__ */ O(w.Item, {
2000
+ name: "targetFolder",
2001
+ rules: [{
2002
+ required: !0,
2003
+ message: l("Select the destination folder")
2004
+ }],
2005
+ className: g.formItem,
2006
+ children: /* @__PURE__ */ O(p, {
2007
+ onSelect: yt,
2008
+ generateMenuItems: () => St({
2009
+ targetForm: lt,
2010
+ onTreeSelect: yt,
2011
+ onComplete: bt,
2012
+ actionButtonText: l("Copy here")
2013
+ }),
2014
+ fetchChildFolders: xt,
2015
+ disabledFolders: [],
2016
+ mode: "selection",
2017
+ className: "folderSelectionTree",
2018
+ defaultExpandAll: !0
2019
+ })
2020
+ }),
2021
+ /* @__PURE__ */ O(w.Item, {
2022
+ name: "folderName",
2023
+ style: { display: "none" },
2024
+ rules: [{
2025
+ required: !0,
2026
+ validator: (e, t) => typeof t == "string" && t.trim().length === 0 ? Promise.reject(Error(l("Enter the name of the folder"))) : Promise.resolve()
2027
+ }],
2028
+ children: /* @__PURE__ */ O(T, {})
2029
+ }),
2030
+ /* @__PURE__ */ O(w.Item, {
2031
+ name: "is_force_create",
2032
+ style: { display: "none" },
2033
+ children: /* @__PURE__ */ O(T, {})
2034
+ })
2035
+ ]
2036
+ })
2037
+ })]
2038
+ })
2039
+ })] });
2040
+ };
2041
+ //#endregion
2042
+ export { vt as IconsTab, vt as default };
2043
+
2044
+ //# sourceMappingURL=file-manager-IconsTab.js.map