@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.
Files changed (247) hide show
  1. package/README.md +1 -1
  2. package/dist/SelectAccordion.js +54 -0
  3. package/dist/SelectActionCard.js +45 -0
  4. package/dist/SelectActionList.js +55 -0
  5. package/dist/SelectActionMenu.js +33 -0
  6. package/dist/SelectAddButton.js +22 -0
  7. package/dist/SelectAddCard.js +32 -0
  8. package/dist/SelectAlert.js +36 -0
  9. package/dist/SelectAssistant.js +184 -0
  10. package/dist/SelectAuthFx.js +626 -0
  11. package/dist/SelectAvatar.js +34 -0
  12. package/dist/SelectBackLink.js +22 -0
  13. package/dist/SelectBadge.js +18 -0
  14. package/dist/SelectBalanceCard.js +167 -0
  15. package/dist/SelectBankAccountField.js +71 -0
  16. package/dist/SelectBankIcon.js +162 -0
  17. package/dist/SelectBarChart.js +88 -0
  18. package/dist/SelectBoxPlot.js +127 -0
  19. package/dist/SelectBrandIcon.js +206 -0
  20. package/dist/SelectBreadcrumb.js +45 -0
  21. package/dist/SelectBuilderLayout.js +49 -0
  22. package/dist/SelectBuilderWorkspace.js +273 -0
  23. package/dist/SelectBullet.js +59 -0
  24. package/dist/SelectBump.js +93 -0
  25. package/dist/SelectButton.js +51 -0
  26. package/dist/SelectCalendar.js +450 -0
  27. package/dist/SelectCalendarHeatmap.js +84 -0
  28. package/dist/SelectCandlestick.js +97 -0
  29. package/dist/SelectCard.js +52 -0
  30. package/dist/SelectCardGrid.js +76 -0
  31. package/dist/SelectCertificatePreview.js +108 -0
  32. package/dist/SelectChannelPreview.js +124 -0
  33. package/dist/SelectChartCard.js +50 -0
  34. package/dist/SelectChartLegend.js +34 -0
  35. package/dist/SelectChipInput.js +110 -0
  36. package/dist/SelectChoiceCard.js +113 -0
  37. package/dist/SelectChord.js +93 -0
  38. package/dist/SelectCirclePack.js +111 -0
  39. package/dist/SelectCodeBlock.js +51 -0
  40. package/dist/SelectCollapsible.js +40 -0
  41. package/dist/SelectColorField.js +283 -0
  42. package/dist/SelectColumnChart.js +222 -0
  43. package/dist/SelectComboChart.js +139 -0
  44. package/dist/SelectCombobox.js +158 -0
  45. package/dist/SelectConfirmModal.js +42 -0
  46. package/dist/SelectConversation.js +97 -0
  47. package/dist/SelectCopyRow.js +61 -0
  48. package/dist/SelectCopyableId.js +45 -0
  49. package/dist/SelectDataTable.js +247 -0
  50. package/dist/SelectDateField.js +255 -0
  51. package/dist/SelectDatePicker.js +311 -0
  52. package/dist/SelectDateRangeField.js +57 -0
  53. package/dist/SelectDetail.js +49 -0
  54. package/dist/SelectDisclosureButton.js +23 -0
  55. package/dist/SelectDivider.js +20 -0
  56. package/dist/SelectDnsRecords.js +74 -0
  57. package/dist/SelectDocumentField.js +24 -0
  58. package/dist/SelectDonut.js +103 -0
  59. package/dist/SelectDotField.js +134 -0
  60. package/dist/SelectDumbbell.js +100 -0
  61. package/dist/SelectFactStrip.js +42 -0
  62. package/dist/SelectFeeBreakdown.js +88 -0
  63. package/dist/SelectField.d.ts +24 -6
  64. package/dist/SelectField.js +196 -0
  65. package/dist/SelectFieldGrid.js +15 -0
  66. package/dist/SelectFileDropzone.js +160 -0
  67. package/dist/SelectFileTile.js +53 -0
  68. package/dist/SelectFilterBar.js +292 -0
  69. package/dist/SelectFilterChip.js +32 -0
  70. package/dist/SelectFlowCanvas.js +282 -0
  71. package/dist/SelectFormLayout.js +21 -0
  72. package/dist/SelectFormModal.js +53 -0
  73. package/dist/SelectFunnel.js +49 -0
  74. package/dist/SelectGauge.js +74 -0
  75. package/dist/SelectGaugeBands.js +78 -0
  76. package/dist/SelectGlobe.js +472 -0
  77. package/dist/SelectHeatmap.js +76 -0
  78. package/dist/SelectHexbin.js +59 -0
  79. package/dist/SelectHorizontalBar.js +100 -0
  80. package/dist/SelectHtmlFrame.js +30 -0
  81. package/dist/SelectIcicle.js +87 -0
  82. package/dist/SelectIcon.js +21 -0
  83. package/dist/SelectIconButton.js +24 -0
  84. package/dist/SelectIconPicker.js +79 -0
  85. package/dist/SelectIconTile.js +17 -0
  86. package/dist/SelectIdentityFooter.js +30 -0
  87. package/dist/SelectImageField.js +56 -0
  88. package/dist/SelectImageGalleryField.js +243 -0
  89. package/dist/SelectImageUploadField.js +155 -0
  90. package/dist/SelectImageUrlsField.js +68 -0
  91. package/dist/SelectImageZoomModal.js +26 -0
  92. package/dist/SelectInfoTip.js +31 -0
  93. package/dist/SelectInsight.js +777 -0
  94. package/dist/SelectJourney.js +68 -0
  95. package/dist/SelectJsonViewer.js +294 -0
  96. package/dist/SelectKanban.js +124 -0
  97. package/dist/SelectKbd.js +15 -0
  98. package/dist/SelectKeyValueEditor.js +88 -0
  99. package/dist/SelectKpiBand.js +17 -0
  100. package/dist/SelectKpiCard.js +54 -0
  101. package/dist/SelectLauncher.js +58 -0
  102. package/dist/SelectLayout.js +100 -0
  103. package/dist/SelectLineChart.js +161 -0
  104. package/dist/SelectLinkButton.js +18 -0
  105. package/dist/SelectListCard.js +89 -0
  106. package/dist/SelectLoader.js +27 -0
  107. package/dist/SelectLocale.d.ts +2 -0
  108. package/dist/SelectLocale.js +191 -0
  109. package/dist/SelectMail.js +811 -0
  110. package/dist/SelectMailEditor.js +224 -0
  111. package/dist/SelectMarimekko.js +87 -0
  112. package/dist/SelectMarkStack.js +30 -0
  113. package/dist/SelectMediaCell.js +28 -0
  114. package/dist/SelectMenu.js +110 -0
  115. package/dist/SelectMiniStats.js +37 -0
  116. package/dist/SelectModal.js +177 -0
  117. package/dist/SelectMoney.js +136 -0
  118. package/dist/SelectMoneyField.js +82 -0
  119. package/dist/SelectNetwork.js +122 -0
  120. package/dist/SelectNote.js +26 -0
  121. package/dist/SelectNumberField.js +87 -0
  122. package/dist/SelectNumberedList.js +30 -0
  123. package/dist/SelectOfferPrice.js +48 -0
  124. package/dist/SelectOfflineModal.js +31 -0
  125. package/dist/SelectOptionList.js +54 -0
  126. package/dist/SelectOtpInput.js +64 -0
  127. package/dist/SelectPage.js +85 -0
  128. package/dist/SelectPagination.js +82 -0
  129. package/dist/SelectPanel.js +41 -0
  130. package/dist/SelectParallel.js +100 -0
  131. package/dist/SelectPareto.js +134 -0
  132. package/dist/SelectPasswordStrength.js +82 -0
  133. package/dist/SelectPaymentBrand.js +213 -0
  134. package/dist/SelectPaymentCard.js +53 -0
  135. package/dist/SelectPhoneField.js +139 -0
  136. package/dist/SelectPips.js +25 -0
  137. package/dist/SelectPlanCard.js +64 -0
  138. package/dist/SelectPolarArea.js +82 -0
  139. package/dist/SelectPopover.js +101 -0
  140. package/dist/SelectPreviewFrame.js +119 -0
  141. package/dist/SelectProgressBar.js +54 -0
  142. package/dist/SelectProgressList.js +58 -0
  143. package/dist/SelectPyramid.js +116 -0
  144. package/dist/SelectQrCode.d.ts +12 -0
  145. package/dist/SelectQrCode.js +51 -0
  146. package/dist/SelectQuestionStage.js +183 -0
  147. package/dist/SelectRadar.js +118 -0
  148. package/dist/SelectRadialBar.js +103 -0
  149. package/dist/SelectRadioGroup.js +54 -0
  150. package/dist/SelectRangeBar.js +89 -0
  151. package/dist/SelectRating.js +58 -0
  152. package/dist/SelectRatingQuote.js +31 -0
  153. package/dist/SelectRecordCard.js +144 -0
  154. package/dist/SelectRegions.js +23 -0
  155. package/dist/SelectRepeatingFieldArray.js +104 -0
  156. package/dist/SelectResendButton.js +44 -0
  157. package/dist/SelectRetryStatus.js +79 -0
  158. package/dist/SelectRing.js +53 -0
  159. package/dist/SelectRowActions.js +32 -0
  160. package/dist/SelectSankey.js +92 -0
  161. package/dist/SelectScatter.js +79 -0
  162. package/dist/SelectSearchInput.d.ts +8 -2
  163. package/dist/SelectSearchInput.js +38 -0
  164. package/dist/SelectSearchMenu.js +128 -0
  165. package/dist/SelectSection.js +83 -0
  166. package/dist/SelectSegmented.js +95 -0
  167. package/dist/SelectSelect.d.ts +19 -5
  168. package/dist/SelectSelect.js +84 -0
  169. package/dist/SelectSetting.js +54 -0
  170. package/dist/SelectSetupGuide.js +187 -0
  171. package/dist/SelectShareBar.js +139 -0
  172. package/dist/SelectSideNav.js +263 -0
  173. package/dist/SelectSkeleton.js +56 -0
  174. package/dist/SelectSlope.js +129 -0
  175. package/dist/SelectSortable.js +31 -0
  176. package/dist/SelectSparkline.js +66 -0
  177. package/dist/SelectSplitChain.js +52 -0
  178. package/dist/SelectSpotlight.js +81 -0
  179. package/dist/SelectStackedArea.js +117 -0
  180. package/dist/SelectStatusBadge.js +81 -0
  181. package/dist/SelectStatusPage.js +62 -0
  182. package/dist/SelectSteps.js +54 -0
  183. package/dist/SelectStreamGraph.js +99 -0
  184. package/dist/SelectSunburst.js +101 -0
  185. package/dist/SelectSurface.js +41 -0
  186. package/dist/SelectSwitch.js +24 -0
  187. package/dist/SelectSwitchField.d.ts +5 -1
  188. package/dist/SelectSwitchField.js +45 -0
  189. package/dist/SelectTable.js +243 -0
  190. package/dist/SelectTabs.js +63 -0
  191. package/dist/SelectTagSelect.js +144 -0
  192. package/dist/SelectTaskCard.js +44 -0
  193. package/dist/SelectText.js +25 -0
  194. package/dist/SelectTextarea.d.ts +15 -4
  195. package/dist/SelectTextarea.js +58 -0
  196. package/dist/SelectThemeSwitcher.js +66 -0
  197. package/dist/SelectThumbnail.js +41 -0
  198. package/dist/SelectTicker.js +69 -0
  199. package/dist/SelectTile.js +62 -0
  200. package/dist/SelectTileMap.js +268 -0
  201. package/dist/SelectTimeline.js +76 -0
  202. package/dist/SelectToast.js +159 -0
  203. package/dist/SelectToggle.js +80 -0
  204. package/dist/SelectTogglePanel.js +44 -0
  205. package/dist/SelectTokenTextarea.js +173 -0
  206. package/dist/SelectTooltip.js +100 -0
  207. package/dist/SelectTour.js +210 -0
  208. package/dist/SelectTree.js +86 -0
  209. package/dist/SelectTreemap.js +130 -0
  210. package/dist/SelectUnitInput.js +53 -0
  211. package/dist/SelectVenn.js +75 -0
  212. package/dist/SelectViolin.js +95 -0
  213. package/dist/SelectWaffle.js +56 -0
  214. package/dist/SelectWaterfall.js +123 -0
  215. package/dist/SelectWordCloud.js +27 -0
  216. package/dist/SelectWorkspaceSwitcher.js +40 -0
  217. package/dist/SelectZoomThumbnail.js +40 -0
  218. package/dist/chartTip.js +70 -0
  219. package/dist/chartUtils.js +146 -0
  220. package/dist/detectSelectTheme.js +8 -0
  221. package/dist/icons.js +1696 -0
  222. package/dist/index.d.ts +2 -1
  223. package/dist/index.js +213 -32711
  224. package/dist/internal/dateValue.js +12 -0
  225. package/dist/internal/document.js +16 -0
  226. package/dist/internal/flags.js +187 -0
  227. package/dist/internal/frame.js +17 -0
  228. package/dist/internal/inert.js +13 -0
  229. package/dist/internal/layers.d.ts +8 -0
  230. package/dist/internal/layers.js +35 -0
  231. package/dist/internal/listChrome.js +150 -0
  232. package/dist/internal/money.js +16 -0
  233. package/dist/internal/nativeProps.d.ts +11 -0
  234. package/dist/internal/nativeProps.js +14 -0
  235. package/dist/internal/phone.js +52 -0
  236. package/dist/internal/safeHref.js +17 -0
  237. package/dist/internal/useFocusTrap.d.ts +7 -1
  238. package/dist/internal/useFocusTrap.js +40 -0
  239. package/dist/internal/useMatchMedia.js +18 -0
  240. package/dist/internal/useSelectReveal.js +76 -0
  241. package/dist/jsonTree.js +183 -0
  242. package/dist/positioning.js +22 -0
  243. package/dist/spacing.js +22 -0
  244. package/dist/style.css +1 -1
  245. package/dist/uploadUtils.js +29 -0
  246. package/dist/worldLand.js +10401 -0
  247. 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