@selectwin/kit 0.1.197 → 0.1.199
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 +1 -1
- package/dist/SelectAccordion.js +54 -0
- package/dist/SelectActionCard.js +45 -0
- package/dist/SelectActionList.js +55 -0
- package/dist/SelectActionMenu.js +33 -0
- package/dist/SelectAddButton.js +22 -0
- package/dist/SelectAddCard.js +32 -0
- package/dist/SelectAlert.js +36 -0
- package/dist/SelectAssistant.js +184 -0
- package/dist/SelectAuthFx.js +626 -0
- package/dist/SelectAvatar.js +34 -0
- package/dist/SelectBackLink.js +22 -0
- package/dist/SelectBadge.js +18 -0
- package/dist/SelectBalanceCard.js +167 -0
- package/dist/SelectBankAccountField.js +71 -0
- package/dist/SelectBankIcon.js +162 -0
- package/dist/SelectBarChart.js +88 -0
- package/dist/SelectBoxPlot.js +127 -0
- package/dist/SelectBrandIcon.js +206 -0
- package/dist/SelectBreadcrumb.js +45 -0
- package/dist/SelectBuilderLayout.js +49 -0
- package/dist/SelectBuilderWorkspace.js +273 -0
- package/dist/SelectBullet.js +59 -0
- package/dist/SelectBump.js +93 -0
- package/dist/SelectButton.js +51 -0
- package/dist/SelectCalendar.js +450 -0
- package/dist/SelectCalendarHeatmap.js +84 -0
- package/dist/SelectCandlestick.js +97 -0
- package/dist/SelectCard.js +52 -0
- package/dist/SelectCardGrid.js +76 -0
- package/dist/SelectCertificatePreview.js +108 -0
- package/dist/SelectChannelPreview.js +124 -0
- package/dist/SelectChartCard.js +50 -0
- package/dist/SelectChartLegend.js +34 -0
- package/dist/SelectChipInput.js +110 -0
- package/dist/SelectChoiceCard.js +113 -0
- package/dist/SelectChord.js +93 -0
- package/dist/SelectCirclePack.js +111 -0
- package/dist/SelectCodeBlock.js +51 -0
- package/dist/SelectCollapsible.js +40 -0
- package/dist/SelectColorField.js +283 -0
- package/dist/SelectColumnChart.js +222 -0
- package/dist/SelectComboChart.js +139 -0
- package/dist/SelectCombobox.js +158 -0
- package/dist/SelectConfirmModal.js +42 -0
- package/dist/SelectConversation.js +97 -0
- package/dist/SelectCopyRow.js +61 -0
- package/dist/SelectCopyableId.js +45 -0
- package/dist/SelectDataTable.js +247 -0
- package/dist/SelectDateField.js +255 -0
- package/dist/SelectDatePicker.js +311 -0
- package/dist/SelectDateRangeField.js +57 -0
- package/dist/SelectDetail.js +49 -0
- package/dist/SelectDisclosureButton.js +23 -0
- package/dist/SelectDivider.js +20 -0
- package/dist/SelectDnsRecords.js +74 -0
- package/dist/SelectDocumentField.js +24 -0
- package/dist/SelectDonut.js +103 -0
- package/dist/SelectDotField.js +134 -0
- package/dist/SelectDumbbell.js +100 -0
- package/dist/SelectFactStrip.js +42 -0
- package/dist/SelectFeeBreakdown.js +88 -0
- package/dist/SelectField.d.ts +24 -6
- package/dist/SelectField.js +196 -0
- package/dist/SelectFieldGrid.js +15 -0
- package/dist/SelectFileDropzone.js +160 -0
- package/dist/SelectFileTile.js +53 -0
- package/dist/SelectFilterBar.js +292 -0
- package/dist/SelectFilterChip.js +32 -0
- package/dist/SelectFlowCanvas.js +282 -0
- package/dist/SelectFormLayout.js +21 -0
- package/dist/SelectFormModal.js +53 -0
- package/dist/SelectFunnel.js +49 -0
- package/dist/SelectGauge.js +74 -0
- package/dist/SelectGaugeBands.js +78 -0
- package/dist/SelectGlobe.js +472 -0
- package/dist/SelectHeatmap.js +76 -0
- package/dist/SelectHexbin.js +59 -0
- package/dist/SelectHorizontalBar.js +100 -0
- package/dist/SelectHtmlFrame.js +30 -0
- package/dist/SelectIcicle.js +87 -0
- package/dist/SelectIcon.js +21 -0
- package/dist/SelectIconButton.js +24 -0
- package/dist/SelectIconPicker.js +79 -0
- package/dist/SelectIconTile.js +17 -0
- package/dist/SelectIdentityFooter.js +30 -0
- package/dist/SelectImageField.js +56 -0
- package/dist/SelectImageGalleryField.js +243 -0
- package/dist/SelectImageUploadField.js +155 -0
- package/dist/SelectImageUrlsField.js +68 -0
- package/dist/SelectImageZoomModal.js +26 -0
- package/dist/SelectInfoTip.js +31 -0
- package/dist/SelectInsight.js +777 -0
- package/dist/SelectJourney.js +68 -0
- package/dist/SelectJsonViewer.js +294 -0
- package/dist/SelectKanban.js +124 -0
- package/dist/SelectKbd.js +15 -0
- package/dist/SelectKeyValueEditor.js +88 -0
- package/dist/SelectKpiBand.js +17 -0
- package/dist/SelectKpiCard.js +54 -0
- package/dist/SelectLauncher.js +58 -0
- package/dist/SelectLayout.js +100 -0
- package/dist/SelectLineChart.js +161 -0
- package/dist/SelectLinkButton.js +18 -0
- package/dist/SelectListCard.js +89 -0
- package/dist/SelectLoader.js +27 -0
- package/dist/SelectLocale.d.ts +2 -0
- package/dist/SelectLocale.js +191 -0
- package/dist/SelectMail.js +811 -0
- package/dist/SelectMailEditor.js +224 -0
- package/dist/SelectMarimekko.js +87 -0
- package/dist/SelectMarkStack.js +30 -0
- package/dist/SelectMediaCell.js +28 -0
- package/dist/SelectMenu.js +110 -0
- package/dist/SelectMiniStats.js +37 -0
- package/dist/SelectModal.js +177 -0
- package/dist/SelectMoney.js +136 -0
- package/dist/SelectMoneyField.js +82 -0
- package/dist/SelectNetwork.js +122 -0
- package/dist/SelectNote.js +26 -0
- package/dist/SelectNumberField.js +87 -0
- package/dist/SelectNumberedList.js +30 -0
- package/dist/SelectOfferPrice.js +48 -0
- package/dist/SelectOfflineModal.js +31 -0
- package/dist/SelectOptionList.js +54 -0
- package/dist/SelectOtpInput.js +64 -0
- package/dist/SelectPage.js +85 -0
- package/dist/SelectPagination.js +82 -0
- package/dist/SelectPanel.js +41 -0
- package/dist/SelectParallel.js +100 -0
- package/dist/SelectPareto.js +134 -0
- package/dist/SelectPasswordStrength.js +82 -0
- package/dist/SelectPaymentBrand.js +213 -0
- package/dist/SelectPaymentCard.js +53 -0
- package/dist/SelectPhoneField.js +139 -0
- package/dist/SelectPips.js +25 -0
- package/dist/SelectPlanCard.js +64 -0
- package/dist/SelectPolarArea.js +82 -0
- package/dist/SelectPopover.js +101 -0
- package/dist/SelectPreviewFrame.js +119 -0
- package/dist/SelectProgressBar.js +54 -0
- package/dist/SelectProgressList.js +58 -0
- package/dist/SelectPyramid.js +116 -0
- package/dist/SelectQrCode.d.ts +12 -0
- package/dist/SelectQrCode.js +51 -0
- package/dist/SelectQuestionStage.js +183 -0
- package/dist/SelectRadar.js +118 -0
- package/dist/SelectRadialBar.js +103 -0
- package/dist/SelectRadioGroup.js +54 -0
- package/dist/SelectRangeBar.js +89 -0
- package/dist/SelectRating.js +58 -0
- package/dist/SelectRatingQuote.js +31 -0
- package/dist/SelectRecordCard.js +144 -0
- package/dist/SelectRegions.js +23 -0
- package/dist/SelectRepeatingFieldArray.js +104 -0
- package/dist/SelectResendButton.js +44 -0
- package/dist/SelectRetryStatus.js +79 -0
- package/dist/SelectRing.js +53 -0
- package/dist/SelectRowActions.js +32 -0
- package/dist/SelectSankey.js +92 -0
- package/dist/SelectScatter.js +79 -0
- package/dist/SelectSearchInput.d.ts +8 -2
- package/dist/SelectSearchInput.js +38 -0
- package/dist/SelectSearchMenu.js +128 -0
- package/dist/SelectSection.js +83 -0
- package/dist/SelectSegmented.js +95 -0
- package/dist/SelectSelect.d.ts +19 -5
- package/dist/SelectSelect.js +84 -0
- package/dist/SelectSetting.js +54 -0
- package/dist/SelectSetupGuide.js +187 -0
- package/dist/SelectShareBar.js +139 -0
- package/dist/SelectSideNav.js +263 -0
- package/dist/SelectSkeleton.js +56 -0
- package/dist/SelectSlope.js +129 -0
- package/dist/SelectSortable.js +31 -0
- package/dist/SelectSparkline.js +66 -0
- package/dist/SelectSplitChain.js +52 -0
- package/dist/SelectSpotlight.js +81 -0
- package/dist/SelectStackedArea.js +117 -0
- package/dist/SelectStatusBadge.js +81 -0
- package/dist/SelectStatusPage.js +62 -0
- package/dist/SelectSteps.js +54 -0
- package/dist/SelectStreamGraph.js +99 -0
- package/dist/SelectSunburst.js +101 -0
- package/dist/SelectSurface.js +41 -0
- package/dist/SelectSwitch.js +24 -0
- package/dist/SelectSwitchField.d.ts +5 -1
- package/dist/SelectSwitchField.js +45 -0
- package/dist/SelectTable.js +243 -0
- package/dist/SelectTabs.js +63 -0
- package/dist/SelectTagSelect.js +144 -0
- package/dist/SelectTaskCard.js +44 -0
- package/dist/SelectText.js +25 -0
- package/dist/SelectTextarea.d.ts +15 -4
- package/dist/SelectTextarea.js +58 -0
- package/dist/SelectThemeSwitcher.js +66 -0
- package/dist/SelectThumbnail.js +41 -0
- package/dist/SelectTicker.js +69 -0
- package/dist/SelectTile.js +62 -0
- package/dist/SelectTileMap.js +268 -0
- package/dist/SelectTimeline.js +76 -0
- package/dist/SelectToast.js +159 -0
- package/dist/SelectToggle.js +80 -0
- package/dist/SelectTogglePanel.js +44 -0
- package/dist/SelectTokenTextarea.js +173 -0
- package/dist/SelectTooltip.js +100 -0
- package/dist/SelectTour.js +210 -0
- package/dist/SelectTree.js +86 -0
- package/dist/SelectTreemap.js +130 -0
- package/dist/SelectUnitInput.js +53 -0
- package/dist/SelectVenn.js +75 -0
- package/dist/SelectViolin.js +95 -0
- package/dist/SelectWaffle.js +56 -0
- package/dist/SelectWaterfall.js +123 -0
- package/dist/SelectWordCloud.js +27 -0
- package/dist/SelectWorkspaceSwitcher.js +40 -0
- package/dist/SelectZoomThumbnail.js +40 -0
- package/dist/chartTip.js +70 -0
- package/dist/chartUtils.js +146 -0
- package/dist/detectSelectTheme.js +8 -0
- package/dist/icons.js +1696 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +213 -32711
- package/dist/internal/dateValue.js +12 -0
- package/dist/internal/document.js +16 -0
- package/dist/internal/flags.js +187 -0
- package/dist/internal/frame.js +17 -0
- package/dist/internal/inert.js +13 -0
- package/dist/internal/layers.d.ts +8 -0
- package/dist/internal/layers.js +35 -0
- package/dist/internal/listChrome.js +150 -0
- package/dist/internal/money.js +16 -0
- package/dist/internal/nativeProps.d.ts +11 -0
- package/dist/internal/nativeProps.js +14 -0
- package/dist/internal/phone.js +52 -0
- package/dist/internal/safeHref.js +17 -0
- package/dist/internal/useFocusTrap.d.ts +7 -1
- package/dist/internal/useFocusTrap.js +40 -0
- package/dist/internal/useMatchMedia.js +18 -0
- package/dist/internal/useSelectReveal.js +76 -0
- package/dist/jsonTree.js +183 -0
- package/dist/positioning.js +22 -0
- package/dist/spacing.js +22 -0
- package/dist/style.css +1 -1
- package/dist/uploadUtils.js +29 -0
- package/dist/worldLand.js +10401 -0
- package/package.json +67 -64
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { SelectButton as e } from "./SelectButton.js";
|
|
2
|
+
import { CloseIcon as t, LinkIcon as n, PlusIcon as r, StarIcon as ee } from "./icons.js";
|
|
3
|
+
import { SelectInfoTip as i } from "./SelectInfoTip.js";
|
|
4
|
+
import { SelectField as a } from "./SelectField.js";
|
|
5
|
+
import { URL_RE as o, hostOf as te, matchesAccept as ne } from "./uploadUtils.js";
|
|
6
|
+
import { forwardRef as s, useEffect as c, useId as re, useRef as l, useState as u } from "react";
|
|
7
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
8
|
+
//#region src/SelectImageGalleryField.tsx
|
|
9
|
+
var p = 0;
|
|
10
|
+
function m(e) {
|
|
11
|
+
return p += 1, {
|
|
12
|
+
key: `file:${p}:${e.name}:${e.size}`,
|
|
13
|
+
file: e
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function h(e) {
|
|
17
|
+
return {
|
|
18
|
+
key: `url:${e}`,
|
|
19
|
+
url: e
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function g(e, t, n) {
|
|
23
|
+
if (t === n || t < 0 || n < 0 || t >= e.length || n >= e.length) return e;
|
|
24
|
+
let r = e.slice();
|
|
25
|
+
return r.splice(n, 0, ...r.splice(t, 1)), r;
|
|
26
|
+
}
|
|
27
|
+
var _ = (e) => {
|
|
28
|
+
var t;
|
|
29
|
+
return Array.from(((t = e.dataTransfer) == null ? void 0 : t.types) ?? []).includes("Files");
|
|
30
|
+
}, v = s(function({ label: s, help: p, items: v, onChange: y, max: b = 10, accept: x = ".jpg,.jpeg,.png,.webp", maxSizeMB: S, hint: C, error: ie, allowUrl: ae = !0, tileSize: oe = 88, addLabel: se = "Adicionar", coverLabel: w = "Capa", disabled: T = !1, className: E, style: D, ...ce }, le) {
|
|
31
|
+
let O = re(), k = l(null), A = l(/* @__PURE__ */ new Map()), j = l(null), [M, N] = u(null), [P, F] = u(null), [I, L] = u(null), [R, z] = u(!1), [ue, B] = u(null), [de, V] = u(!1), [H, U] = u(""), [fe, W] = u(), G = l(/* @__PURE__ */ new Map()), pe = (e) => {
|
|
32
|
+
if (e.url) return e.url;
|
|
33
|
+
if (!e.file) return;
|
|
34
|
+
let t = G.current.get(e.file);
|
|
35
|
+
return !t && typeof URL < "u" && typeof URL.createObjectURL == "function" && (t = URL.createObjectURL(e.file), G.current.set(e.file, t)), t;
|
|
36
|
+
};
|
|
37
|
+
c(() => {
|
|
38
|
+
let e = new Set(v.map((e) => e.file).filter(Boolean));
|
|
39
|
+
for (let [t, n] of G.current) e.has(t) || (URL.revokeObjectURL(n), G.current.delete(t));
|
|
40
|
+
}, [v]), c(() => () => {
|
|
41
|
+
for (let e of G.current.values()) URL.revokeObjectURL(e);
|
|
42
|
+
G.current.clear();
|
|
43
|
+
}, []), c(() => {
|
|
44
|
+
if (!M) return;
|
|
45
|
+
let e = M === "__add" ? j.current : A.current.get(M);
|
|
46
|
+
e == null || e.focus(), N(null);
|
|
47
|
+
}, [M, v]);
|
|
48
|
+
let K = Math.max(0, b - v.length), q = K === 0, J = S == null ? Infinity : S * 1024 * 1024, Y = (e) => {
|
|
49
|
+
if (T || !e.length) return;
|
|
50
|
+
let t = [], n = [];
|
|
51
|
+
for (let r of e) ne(r, x) ? r.size > J ? t.push(`${r.name}: maior que ${S} MB`) : n.push(r) : t.push(`${r.name}: formato não aceito`);
|
|
52
|
+
let r = n.slice(0, K);
|
|
53
|
+
if (n.length > r.length) {
|
|
54
|
+
let e = n.length - r.length;
|
|
55
|
+
t.push(`Limite de ${b} ${b === 1 ? "foto" : "fotos"} — ${e} ${e === 1 ? "ficou" : "ficaram"} de fora`);
|
|
56
|
+
}
|
|
57
|
+
B(t.length ? t.join(" · ") : null), r.length && y([...v, ...r.map(m)]);
|
|
58
|
+
}, X = (e) => {
|
|
59
|
+
let t = v.filter((t, n) => n !== e);
|
|
60
|
+
y(t), B(null);
|
|
61
|
+
let n = t[Math.min(e, t.length - 1)];
|
|
62
|
+
N(n ? n.key : "__add");
|
|
63
|
+
}, Z = (e, t) => {
|
|
64
|
+
var n;
|
|
65
|
+
let r = g(v, e, t);
|
|
66
|
+
r !== v && (y(r), N(((n = v[e]) == null ? void 0 : n.key) ?? null));
|
|
67
|
+
}, me = (e, t) => {
|
|
68
|
+
T || e.target !== e.currentTarget || (e.key === "ArrowLeft" || e.key === "ArrowUp" ? (e.preventDefault(), Z(t, t - 1)) : e.key === "ArrowRight" || e.key === "ArrowDown" ? (e.preventDefault(), Z(t, t + 1)) : (e.key === "Delete" || e.key === "Backspace") && (e.preventDefault(), X(t)));
|
|
69
|
+
}, Q = () => {
|
|
70
|
+
let e = H.trim();
|
|
71
|
+
if (!o.test(e) || !/^https:\/\//i.test(e)) {
|
|
72
|
+
W("Use um link https://…");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (v.some((t) => t.url === e)) {
|
|
76
|
+
W("Essa imagem já está na galeria.");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
y([...v, h(e)]), U(""), W(void 0), V(!1);
|
|
80
|
+
}, he = {
|
|
81
|
+
onDragOver: (e) => {
|
|
82
|
+
T || P || !_(e) || (e.preventDefault(), e.dataTransfer.dropEffect = q ? "none" : "copy", z(!0));
|
|
83
|
+
},
|
|
84
|
+
onDragLeave: (e) => {
|
|
85
|
+
e.currentTarget.contains(e.relatedTarget) || z(!1);
|
|
86
|
+
},
|
|
87
|
+
onDrop: (e) => {
|
|
88
|
+
T || P || !_(e) || (e.preventDefault(), z(!1), Y(Array.from(e.dataTransfer.files)));
|
|
89
|
+
}
|
|
90
|
+
}, $ = ie ?? ue ?? void 0;
|
|
91
|
+
return /* @__PURE__ */ f("div", {
|
|
92
|
+
ref: le,
|
|
93
|
+
...ce,
|
|
94
|
+
className: `select-field select-gallery${T ? " is-disabled" : ""}${E ? " " + E : ""}`,
|
|
95
|
+
style: {
|
|
96
|
+
...D,
|
|
97
|
+
"--select-gallery-tile": `${oe}px`
|
|
98
|
+
},
|
|
99
|
+
children: [
|
|
100
|
+
(s || p) && /* @__PURE__ */ f("div", {
|
|
101
|
+
className: "select-field__labelrow",
|
|
102
|
+
children: [/* @__PURE__ */ f("span", {
|
|
103
|
+
className: "select-field__labelwrap",
|
|
104
|
+
children: [s && /* @__PURE__ */ d("span", {
|
|
105
|
+
className: "select-field__label",
|
|
106
|
+
id: `${O}-label`,
|
|
107
|
+
children: s
|
|
108
|
+
}), p != null && p !== "" && /* @__PURE__ */ d(i, { content: p })]
|
|
109
|
+
}), b > 1 && v.length > 0 && /* @__PURE__ */ f("span", {
|
|
110
|
+
className: "select-field__count",
|
|
111
|
+
children: [
|
|
112
|
+
v.length,
|
|
113
|
+
"/",
|
|
114
|
+
b
|
|
115
|
+
]
|
|
116
|
+
})]
|
|
117
|
+
}),
|
|
118
|
+
/* @__PURE__ */ f("div", {
|
|
119
|
+
className: `select-gallery__grid${R ? " is-over" : ""}`,
|
|
120
|
+
role: "list",
|
|
121
|
+
"aria-labelledby": s ? `${O}-label` : void 0,
|
|
122
|
+
...he,
|
|
123
|
+
children: [v.map((e, n) => {
|
|
124
|
+
var r;
|
|
125
|
+
let i = pe(e), a = n === 0 && w != null, o = ((r = e.file) == null ? void 0 : r.name) ?? (e.url ? te(e.url) : "foto");
|
|
126
|
+
return /* @__PURE__ */ f("div", {
|
|
127
|
+
ref: (t) => {
|
|
128
|
+
t ? A.current.set(e.key, t) : A.current.delete(e.key);
|
|
129
|
+
},
|
|
130
|
+
role: "listitem",
|
|
131
|
+
tabIndex: T ? -1 : 0,
|
|
132
|
+
"aria-label": `Foto ${n + 1} de ${v.length}${a ? ` (${w == null ? void 0 : w.toLowerCase()})` : ""}: ${o}.${v.length > 1 ? " Setas movem a foto." : ""} Delete remove.`,
|
|
133
|
+
className: `select-gallery__tile${P === e.key ? " is-dragging" : ""}${I === n && P && P !== e.key ? " is-target" : ""}`,
|
|
134
|
+
draggable: !T && v.length > 1,
|
|
135
|
+
onKeyDown: (e) => me(e, n),
|
|
136
|
+
onDragStart: (t) => {
|
|
137
|
+
F(e.key), t.dataTransfer.effectAllowed = "move", t.dataTransfer.setData("text/plain", e.key);
|
|
138
|
+
},
|
|
139
|
+
onDragEnd: () => {
|
|
140
|
+
F(null), L(null);
|
|
141
|
+
},
|
|
142
|
+
onDragOver: (e) => {
|
|
143
|
+
P && (e.preventDefault(), e.dataTransfer.dropEffect = "move", I !== n && L(n));
|
|
144
|
+
},
|
|
145
|
+
onDrop: (e) => {
|
|
146
|
+
if (!P) return;
|
|
147
|
+
e.preventDefault(), e.stopPropagation();
|
|
148
|
+
let t = v.findIndex((e) => e.key === P);
|
|
149
|
+
F(null), L(null), t >= 0 && y(g(v, t, n));
|
|
150
|
+
},
|
|
151
|
+
children: [
|
|
152
|
+
i ? /* @__PURE__ */ d("img", {
|
|
153
|
+
className: "select-gallery__img",
|
|
154
|
+
src: i,
|
|
155
|
+
alt: "",
|
|
156
|
+
draggable: !1
|
|
157
|
+
}) : /* @__PURE__ */ d("span", { className: "select-gallery__img select-gallery__img--empty" }),
|
|
158
|
+
a && /* @__PURE__ */ d("span", {
|
|
159
|
+
className: "select-gallery__cover",
|
|
160
|
+
children: w
|
|
161
|
+
}),
|
|
162
|
+
!T && /* @__PURE__ */ f("span", {
|
|
163
|
+
className: "select-gallery__tools",
|
|
164
|
+
children: [w != null && n > 0 && /* @__PURE__ */ d("button", {
|
|
165
|
+
type: "button",
|
|
166
|
+
className: "select-gallery__tool",
|
|
167
|
+
"aria-label": `Tornar ${w.toLowerCase()}`,
|
|
168
|
+
title: `Tornar ${w.toLowerCase()}`,
|
|
169
|
+
onClick: () => Z(n, 0),
|
|
170
|
+
children: /* @__PURE__ */ d(ee, {})
|
|
171
|
+
}), /* @__PURE__ */ d("button", {
|
|
172
|
+
type: "button",
|
|
173
|
+
className: "select-gallery__tool",
|
|
174
|
+
"aria-label": "Remover foto",
|
|
175
|
+
title: "Remover foto",
|
|
176
|
+
onClick: () => X(n),
|
|
177
|
+
children: /* @__PURE__ */ d(t, {})
|
|
178
|
+
})]
|
|
179
|
+
})
|
|
180
|
+
]
|
|
181
|
+
}, e.key);
|
|
182
|
+
}), !q && !T && /* @__PURE__ */ f("button", {
|
|
183
|
+
ref: j,
|
|
184
|
+
type: "button",
|
|
185
|
+
className: `select-gallery__add${R ? " is-over" : ""}`,
|
|
186
|
+
onClick: () => {
|
|
187
|
+
var e;
|
|
188
|
+
return (e = k.current) == null ? void 0 : e.click();
|
|
189
|
+
},
|
|
190
|
+
children: [/* @__PURE__ */ d(r, {}), /* @__PURE__ */ d("span", { children: se })]
|
|
191
|
+
})]
|
|
192
|
+
}),
|
|
193
|
+
/* @__PURE__ */ d("input", {
|
|
194
|
+
ref: k,
|
|
195
|
+
type: "file",
|
|
196
|
+
accept: x,
|
|
197
|
+
multiple: K > 1,
|
|
198
|
+
hidden: !0,
|
|
199
|
+
onChange: (e) => {
|
|
200
|
+
Y(Array.from(e.target.files ?? [])), e.target.value = "";
|
|
201
|
+
}
|
|
202
|
+
}),
|
|
203
|
+
ae && !q && !T && (de ? /* @__PURE__ */ d(a, {
|
|
204
|
+
size: "sm",
|
|
205
|
+
value: H,
|
|
206
|
+
onChange: (e) => {
|
|
207
|
+
U(e), W(void 0);
|
|
208
|
+
},
|
|
209
|
+
placeholder: "https://…",
|
|
210
|
+
type: "url",
|
|
211
|
+
autoFocus: !0,
|
|
212
|
+
error: fe,
|
|
213
|
+
onKeyDown: (e) => {
|
|
214
|
+
e.key === "Enter" ? (e.preventDefault(), Q()) : e.key === "Escape" && (V(!1), U(""), W(void 0));
|
|
215
|
+
},
|
|
216
|
+
trailingAction: /* @__PURE__ */ d(e, {
|
|
217
|
+
variant: "secondary",
|
|
218
|
+
size: "sm",
|
|
219
|
+
inline: !0,
|
|
220
|
+
onClick: Q,
|
|
221
|
+
children: "Adicionar"
|
|
222
|
+
})
|
|
223
|
+
}) : /* @__PURE__ */ f("button", {
|
|
224
|
+
type: "button",
|
|
225
|
+
className: "select-field__action select-field__action--icon select-gallery__urltoggle",
|
|
226
|
+
onClick: () => V(!0),
|
|
227
|
+
children: [/* @__PURE__ */ d(n, {}), "Colar link de imagem"]
|
|
228
|
+
})),
|
|
229
|
+
$ ? /* @__PURE__ */ d("p", {
|
|
230
|
+
className: "select-field__error",
|
|
231
|
+
role: "alert",
|
|
232
|
+
children: $
|
|
233
|
+
}) : C ? /* @__PURE__ */ d("p", {
|
|
234
|
+
className: "select-field__hint",
|
|
235
|
+
children: C
|
|
236
|
+
}) : null
|
|
237
|
+
]
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
//#endregion
|
|
241
|
+
export { v as SelectImageGalleryField, m as galleryItemFromFile, h as galleryItemFromUrl };
|
|
242
|
+
|
|
243
|
+
//# sourceMappingURL=SelectImageGalleryField.js.map
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { SelectButton as e } from "./SelectButton.js";
|
|
2
|
+
import { GlobeIcon as t, UploadIcon as n } from "./icons.js";
|
|
3
|
+
import { SelectField as r } from "./SelectField.js";
|
|
4
|
+
import { SelectAlert as i } from "./SelectAlert.js";
|
|
5
|
+
import { SelectFileTile as a } from "./SelectFileTile.js";
|
|
6
|
+
import { URL_RE as o, extOf as s, hostOf as c, isImageFile as l, matchesAccept as u, prettySize as d } from "./uploadUtils.js";
|
|
7
|
+
import { forwardRef as f, useEffect as p, useMemo as m, useRef as h, useState as g } from "react";
|
|
8
|
+
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
9
|
+
//#region src/SelectImageUploadField.tsx
|
|
10
|
+
var y = f(function({ label: f, mode: y = "multiple", files: b, onFilesChange: x, urls: S, onUrlsChange: C, accept: w = ".jpg,.jpeg,.png,.webp", maxSizeMB: T = 3, maxItems: E = 10, maxFiles: D, uploadHint: O, urlPlaceholder: k, helpText: A, className: j, ...ee }, M) {
|
|
11
|
+
let N = y === "single", P = h(null), [F, I] = g(!1), [L, R] = g(0), [z, B] = g(""), [V, H] = g(null), U = N ? 1 : Math.max(1, E), W = N ? 1 : D ?? U, G = b.length + S.length, K = N ? G === 0 : G < U && b.length < W, q = N ? G === 0 : G < U, J = G > 0, Y = T * 1024 * 1024, X = m(() => b.map((e) => l(e) ? URL.createObjectURL(e) : null), [b]);
|
|
12
|
+
p(() => () => {
|
|
13
|
+
X.forEach((e) => {
|
|
14
|
+
e && URL.revokeObjectURL(e);
|
|
15
|
+
});
|
|
16
|
+
}, [X]);
|
|
17
|
+
let Z = (e) => {
|
|
18
|
+
let t = e.filter((e) => e.size <= Y && u(e, w));
|
|
19
|
+
if (R(e.length - t.length), !t.length) return;
|
|
20
|
+
if (N) {
|
|
21
|
+
C([]), x(t.slice(0, 1));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
let n = Math.min(W - b.length, U - G);
|
|
25
|
+
x([...b, ...t.slice(0, Math.max(0, n))]);
|
|
26
|
+
}, Q = () => {
|
|
27
|
+
let e = z.trim();
|
|
28
|
+
if (e) {
|
|
29
|
+
if (!o.test(e)) {
|
|
30
|
+
H("Insira uma URL válida (https://…).");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (S.includes(e)) {
|
|
34
|
+
H("Essa URL já foi adicionada.");
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
N ? (x([]), C([e])) : C([...S, e].slice(0, U)), B(""), H(null);
|
|
38
|
+
}
|
|
39
|
+
}, te = (e) => {
|
|
40
|
+
e.key === "Enter" && (e.preventDefault(), Q());
|
|
41
|
+
}, ne = (e) => x(b.filter((t, n) => n !== e)), re = (e) => C(S.filter((t, n) => n !== e)), $ = () => {
|
|
42
|
+
var e;
|
|
43
|
+
return (e = P.current) == null ? void 0 : e.click();
|
|
44
|
+
}, ie = {
|
|
45
|
+
onDragOver: (e) => {
|
|
46
|
+
e.preventDefault(), I(!0);
|
|
47
|
+
},
|
|
48
|
+
onDragLeave: () => I(!1),
|
|
49
|
+
onDrop: (e) => {
|
|
50
|
+
e.preventDefault(), I(!1), Z(Array.from(e.dataTransfer.files));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
return /* @__PURE__ */ v("div", {
|
|
54
|
+
ref: M,
|
|
55
|
+
...ee,
|
|
56
|
+
className: `select-field select-imageupload${j ? " " + j : ""}`,
|
|
57
|
+
children: [
|
|
58
|
+
f && /* @__PURE__ */ _("span", {
|
|
59
|
+
className: "select-field__label",
|
|
60
|
+
children: f
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ v("div", {
|
|
63
|
+
className: `select-uploadzone${F ? " is-over" : ""}`,
|
|
64
|
+
...ie,
|
|
65
|
+
children: [
|
|
66
|
+
J ? /* @__PURE__ */ v("div", {
|
|
67
|
+
className: `select-filetile-grid${G === 1 ? " select-filetile-grid--single" : ""}`,
|
|
68
|
+
children: [
|
|
69
|
+
b.map((e, t) => /* @__PURE__ */ _(a, {
|
|
70
|
+
src: X[t] ?? void 0,
|
|
71
|
+
docExt: s(e.name),
|
|
72
|
+
name: e.name,
|
|
73
|
+
sub: d(e.size),
|
|
74
|
+
onRemove: () => ne(t)
|
|
75
|
+
}, `f-${e.name}-${t}`)),
|
|
76
|
+
S.map((e, t) => /* @__PURE__ */ _(a, {
|
|
77
|
+
src: e,
|
|
78
|
+
name: c(e),
|
|
79
|
+
onRemove: () => re(t)
|
|
80
|
+
}, `u-${e}-${t}`)),
|
|
81
|
+
K && /* @__PURE__ */ v("button", {
|
|
82
|
+
type: "button",
|
|
83
|
+
className: "select-dropzone select-dropzone--tile",
|
|
84
|
+
onClick: $,
|
|
85
|
+
children: [/* @__PURE__ */ _(n, {}), /* @__PURE__ */ _("span", { children: "Adicionar" })]
|
|
86
|
+
})
|
|
87
|
+
]
|
|
88
|
+
}) : /* @__PURE__ */ v("button", {
|
|
89
|
+
type: "button",
|
|
90
|
+
className: "select-uploadzone__prompt",
|
|
91
|
+
onClick: $,
|
|
92
|
+
children: [/* @__PURE__ */ _(n, {}), /* @__PURE__ */ _("span", { children: O ?? `Arraste ou selecione um arquivo · até ${T} MB` })]
|
|
93
|
+
}),
|
|
94
|
+
q && /* @__PURE__ */ v("div", {
|
|
95
|
+
className: "select-uploadzone__url",
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ _(t, {}),
|
|
98
|
+
/* @__PURE__ */ _("div", {
|
|
99
|
+
className: "select-uploadzone__urlfield",
|
|
100
|
+
children: /* @__PURE__ */ _(r, {
|
|
101
|
+
size: "sm",
|
|
102
|
+
value: z,
|
|
103
|
+
onChange: (e) => {
|
|
104
|
+
B(e), V && H(null);
|
|
105
|
+
},
|
|
106
|
+
onKeyDown: te,
|
|
107
|
+
type: "url",
|
|
108
|
+
inputMode: "url",
|
|
109
|
+
placeholder: k ?? "ou cole uma URL (https://…)",
|
|
110
|
+
error: V ?? void 0,
|
|
111
|
+
autoComplete: "off"
|
|
112
|
+
})
|
|
113
|
+
}),
|
|
114
|
+
/* @__PURE__ */ _(e, {
|
|
115
|
+
variant: "secondary",
|
|
116
|
+
size: "sm",
|
|
117
|
+
inline: !0,
|
|
118
|
+
onClick: Q,
|
|
119
|
+
disabled: !z.trim(),
|
|
120
|
+
children: "Adicionar"
|
|
121
|
+
})
|
|
122
|
+
]
|
|
123
|
+
}),
|
|
124
|
+
/* @__PURE__ */ _("input", {
|
|
125
|
+
ref: P,
|
|
126
|
+
type: "file",
|
|
127
|
+
accept: w,
|
|
128
|
+
multiple: !N,
|
|
129
|
+
hidden: !0,
|
|
130
|
+
onChange: (e) => {
|
|
131
|
+
Z(Array.from(e.target.files ?? [])), e.target.value = "";
|
|
132
|
+
}
|
|
133
|
+
})
|
|
134
|
+
]
|
|
135
|
+
}),
|
|
136
|
+
L > 0 && /* @__PURE__ */ v(i, {
|
|
137
|
+
tone: "warning",
|
|
138
|
+
children: [
|
|
139
|
+
L,
|
|
140
|
+
" arquivo(s) ignorado(s): tipo não permitido ou acima de ",
|
|
141
|
+
T,
|
|
142
|
+
" MB."
|
|
143
|
+
]
|
|
144
|
+
}),
|
|
145
|
+
A != null && /* @__PURE__ */ _("p", {
|
|
146
|
+
className: "select-field__hint",
|
|
147
|
+
children: A
|
|
148
|
+
})
|
|
149
|
+
]
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
//#endregion
|
|
153
|
+
export { y as SelectImageUploadField };
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=SelectImageUploadField.js.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { SelectField as e } from "./SelectField.js";
|
|
2
|
+
import { SelectFileTile as t } from "./SelectFileTile.js";
|
|
3
|
+
import { URL_RE as n, hostOf as r } from "./uploadUtils.js";
|
|
4
|
+
import { SelectAddButton as i } from "./SelectAddButton.js";
|
|
5
|
+
import { forwardRef as a, useState as o } from "react";
|
|
6
|
+
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
|
+
//#region src/SelectImageUrlsField.tsx
|
|
8
|
+
var u = a(function({ label: a, urls: u, onChange: d, maxUrls: f, placeholder: p, helpText: m, className: h, ...g }, _) {
|
|
9
|
+
let [v, y] = o(""), [b, x] = o(null), S = f != null && u.length >= f, C = () => {
|
|
10
|
+
let e = v.trim();
|
|
11
|
+
if (e) {
|
|
12
|
+
if (!n.test(e)) {
|
|
13
|
+
x("Insira uma URL válida (https://…).");
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (u.includes(e)) {
|
|
17
|
+
x("Essa URL já foi adicionada.");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
d(f == null ? [...u, e] : [...u, e].slice(0, f)), y(""), x(null);
|
|
21
|
+
}
|
|
22
|
+
}, w = (e) => {
|
|
23
|
+
e.key === "Enter" && (e.preventDefault(), C());
|
|
24
|
+
}, T = (e) => d(u.filter((t, n) => n !== e));
|
|
25
|
+
return /* @__PURE__ */ l("div", {
|
|
26
|
+
ref: _,
|
|
27
|
+
...g,
|
|
28
|
+
className: `select-field${h ? " " + h : ""}`,
|
|
29
|
+
children: [
|
|
30
|
+
a && /* @__PURE__ */ c("span", {
|
|
31
|
+
className: "select-field__label",
|
|
32
|
+
children: a
|
|
33
|
+
}),
|
|
34
|
+
u.length > 0 && /* @__PURE__ */ c("div", {
|
|
35
|
+
className: "select-filetile-grid",
|
|
36
|
+
children: u.map((e, n) => /* @__PURE__ */ c(t, {
|
|
37
|
+
src: e,
|
|
38
|
+
name: r(e),
|
|
39
|
+
onRemove: () => T(n)
|
|
40
|
+
}, `${e}-${n}`))
|
|
41
|
+
}),
|
|
42
|
+
!S && /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(e, {
|
|
43
|
+
size: "sm",
|
|
44
|
+
value: v,
|
|
45
|
+
onChange: (e) => {
|
|
46
|
+
y(e), b && x(null);
|
|
47
|
+
},
|
|
48
|
+
onKeyDown: w,
|
|
49
|
+
type: "url",
|
|
50
|
+
inputMode: "url",
|
|
51
|
+
placeholder: p ?? "https://…",
|
|
52
|
+
error: b ?? void 0,
|
|
53
|
+
autoComplete: "off"
|
|
54
|
+
}), /* @__PURE__ */ c(i, {
|
|
55
|
+
onClick: C,
|
|
56
|
+
children: "Adicionar URL"
|
|
57
|
+
})] }),
|
|
58
|
+
m != null && !b && /* @__PURE__ */ c("p", {
|
|
59
|
+
className: "select-field__hint",
|
|
60
|
+
children: m
|
|
61
|
+
})
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//#endregion
|
|
66
|
+
export { u as SelectImageUrlsField };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=SelectImageUrlsField.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import { detectSelectTheme as e } from "./detectSelectTheme.js";
|
|
3
|
+
import { SelectModal as t } from "./SelectModal.js";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
//#region src/SelectImageZoomModal.tsx
|
|
6
|
+
function r({ open: r, onClose: i, src: a, alt: o, title: s }) {
|
|
7
|
+
return /* @__PURE__ */ n(t, {
|
|
8
|
+
open: r,
|
|
9
|
+
onClose: i,
|
|
10
|
+
title: s,
|
|
11
|
+
size: "lg",
|
|
12
|
+
theme: e(),
|
|
13
|
+
children: /* @__PURE__ */ n("div", {
|
|
14
|
+
className: "select-imagezoom",
|
|
15
|
+
children: /* @__PURE__ */ n("img", {
|
|
16
|
+
src: a,
|
|
17
|
+
alt: o ?? s ?? "",
|
|
18
|
+
className: "select-imagezoom__img"
|
|
19
|
+
})
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { r as SelectImageZoomModal };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=SelectImageZoomModal.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import { InfoIcon as e } from "./icons.js";
|
|
3
|
+
import { SelectTooltip as t } from "./SelectTooltip.js";
|
|
4
|
+
import { useSelectMessages as n } from "./SelectLocale.js";
|
|
5
|
+
import { forwardRef as r } from "react";
|
|
6
|
+
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
7
|
+
//#region src/SelectInfoTip.tsx
|
|
8
|
+
var s = r(function({ content: r, title: s, label: c, placement: l = "top", className: u, ...d }, f) {
|
|
9
|
+
let p = n().common.moreInfo, m = c ?? p;
|
|
10
|
+
return /* @__PURE__ */ a(t, {
|
|
11
|
+
placement: l,
|
|
12
|
+
delay: 120,
|
|
13
|
+
openOnClick: !0,
|
|
14
|
+
content: s == null ? r : /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a("span", {
|
|
15
|
+
className: "select-tip__title",
|
|
16
|
+
children: s
|
|
17
|
+
}), r] }),
|
|
18
|
+
children: /* @__PURE__ */ a("button", {
|
|
19
|
+
ref: f,
|
|
20
|
+
type: "button",
|
|
21
|
+
...d,
|
|
22
|
+
className: `select-infotip${u ? " " + u : ""}`,
|
|
23
|
+
"aria-label": m,
|
|
24
|
+
children: /* @__PURE__ */ a(e, {})
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//#endregion
|
|
29
|
+
export { s as SelectInfoTip };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=SelectInfoTip.js.map
|