@revolist/ui 4.0.2-rc → 4.0.3-rc

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 (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +345 -263
  3. package/_chunks/{calendar-CpaUK7w1.js → calendar-xpZ0v3xf.js} +39 -29
  4. package/_chunks/{chart-frame-BC99KjGa.js → chart-frame-Cmc7xU1i.js} +16 -13
  5. package/_chunks/{choice-chips-Cs4D-3nH.js → choice-chips-CHQTUdLs.js} +10 -10
  6. package/_chunks/clock-BOhPNlW3.js +4 -0
  7. package/_chunks/{color-palette-BBMFmUNA.js → color-palette-D8vyPfld.js} +1 -1
  8. package/_chunks/{color-picker-D90Jg-M8.js → color-picker-CudqPYZo.js} +10 -10
  9. package/_chunks/{component-YDcfoOLz.js → component-C_T2VN5u.js} +182 -178
  10. package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BMOOmqx5.js} +0 -4
  11. package/_chunks/control-AHKXD5Eu.js +93 -0
  12. package/_chunks/{control-tooltip-ztgmsG7H.js → control-tooltip-uscKfAnV.js} +15 -15
  13. package/_chunks/{controls-DIum-E66.js → controls-DsNi8V8I.js} +144 -129
  14. package/_chunks/{date-control-BJSzu79z.js → date-control-DrVFX13g.js} +1 -1
  15. package/_chunks/{date-time-BxPJusp9.js → date-time-qIhp5vaX.js} +143 -145
  16. package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
  17. package/_chunks/{dialog.parts-DBqo3Qwb.js → dialog.parts-CKGkC5zP.js} +20 -20
  18. package/_chunks/{duration-87U2EoMS.js → duration-CL68Em0o.js} +16 -15
  19. package/_chunks/{editor-popup-D3JdS8l3.js → editor-popup-WDdtVDNA.js} +5 -5
  20. package/_chunks/field-context-D57PnBbH.js +5 -0
  21. package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount--RTLIqE-.js} +1 -1
  22. package/_chunks/history-controls-B3u3INEK.js +27 -0
  23. package/_chunks/mount-DQ1cpppK.js +257 -0
  24. package/_chunks/native-control-C_yok8_-.js +605 -0
  25. package/_chunks/{number-input-BeIadZuL.js → number-input-BKwA5FnM.js} +2 -2
  26. package/_chunks/{picker-DpP7iQLA.js → picker-h1P5RUgp.js} +2 -2
  27. package/_chunks/popup-CT2uD3go.js +367 -0
  28. package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-DZgmaic0.js} +1 -1
  29. package/_chunks/render-m5eMMwFR.js +83 -0
  30. package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-CSlqAGHw.js} +1 -1
  31. package/_chunks/request-trail-DSlFix6i.js +618 -0
  32. package/_chunks/rich-text-CH7gIqOS.js +636 -0
  33. package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
  34. package/_form.scss +1 -1
  35. package/ai/_chat.scss +195 -0
  36. package/ai/_style.scss +105 -34
  37. package/ai/chat.d.ts +63 -0
  38. package/ai/components.d.ts +19 -3
  39. package/ai/index.d.ts +2 -0
  40. package/ai/index.js +3 -3
  41. package/ai/mount.d.ts +30 -1
  42. package/ai/prompt-history.d.ts +13 -0
  43. package/ai/transcript.d.ts +25 -0
  44. package/ai/translations.d.ts +1 -1
  45. package/angular/angular.js +0 -3
  46. package/assignee/index.js +34 -35
  47. package/buttons/delete-button.d.ts +2 -1
  48. package/buttons/delete-button.js +1 -1
  49. package/buttons/remove-button.js +1 -1
  50. package/buttons/svg-button.d.ts +1 -0
  51. package/buttons/svg-button.js +5 -5
  52. package/calendar/_calendar.scss +7 -2
  53. package/calendar/calendar.js +1 -1
  54. package/calendar/index.js +2 -2
  55. package/choice-chips/index.js +1 -1
  56. package/color-palette/color-palette.js +1 -1
  57. package/color-palette/color-picker.js +2 -2
  58. package/component-catalog.d.ts +16 -5
  59. package/control-attributes.js +7 -7
  60. package/controls.d.ts +8 -6
  61. package/controls.js +3 -3
  62. package/core/editor-popup.js +1 -1
  63. package/date-time/index.js +1 -1
  64. package/date-time/style.scss +4 -4
  65. package/dialog/dialog.dom.js +8 -8
  66. package/dialog/dialog.parts.js +1 -1
  67. package/distribution-chart/area-chart.js +1 -1
  68. package/distribution-chart/bar-chart.d.ts +5 -2
  69. package/distribution-chart/bar-chart.js +7 -3
  70. package/distribution-chart/chart-frame.d.ts +2 -1
  71. package/distribution-chart/line-chart.js +1 -1
  72. package/dropdown/content.d.ts +2 -1
  73. package/dropdown/content.js +1 -142
  74. package/dropdown/control.d.ts +14 -0
  75. package/dropdown/control.js +1 -0
  76. package/dropdown/control.view.d.ts +6 -0
  77. package/dropdown/dropdown.types.d.ts +4 -0
  78. package/dropdown/editor-dropdown.style.scss +37 -9
  79. package/dropdown/index.d.ts +1 -1
  80. package/dropdown/index.js +3 -4
  81. package/dropdown/lookup-field.js +1 -1
  82. package/dropdown/popup.js +1 -141
  83. package/duration/index.js +1 -1
  84. package/duration/style.scss +1 -1
  85. package/editor-actions.js +1 -1
  86. package/field-configurator.js +6 -6
  87. package/fieldset.d.ts +3 -0
  88. package/filter/filters/slider/single.js +1 -1
  89. package/filter-badge.js +1 -1
  90. package/filter-controls.js +7 -7
  91. package/form-controls/field-context.d.ts +5 -0
  92. package/form-controls/index.js +7 -12
  93. package/form-controls/index.view.d.ts +2 -4
  94. package/form-controls/presentation.js +51 -43
  95. package/formatting/index.js +25 -21
  96. package/framework.js +215 -207
  97. package/history-controls.d.ts +14 -0
  98. package/history-controls.js +1 -0
  99. package/masked-input/index.js +1 -1
  100. package/native-control.d.ts +6 -4
  101. package/native-control.js +3 -26
  102. package/native-styles.css +1 -1
  103. package/native.js +31 -30
  104. package/number-input/index.js +1 -1
  105. package/package.json +18 -13
  106. package/pagination.d.ts +3 -0
  107. package/pagination.js +43 -33
  108. package/pdf-viewer/index.js +1 -1
  109. package/pdf-viewer/style.scss +3 -4
  110. package/preact.d.ts +2 -0
  111. package/preact.js +62 -62
  112. package/rating-choice.js +1 -1
  113. package/react-control.d.ts +0 -1
  114. package/react-control.js +2 -2
  115. package/react.d.ts +13 -3
  116. package/react.js +71 -88
  117. package/reorder-list.js +1 -1
  118. package/resource-picker/resource-picker-popup.js +1 -1
  119. package/resource-picker/resource-picker.js +4 -4
  120. package/resource-picker/resource-picker.scss +6 -3
  121. package/rich-text/engine.d.ts +16 -19
  122. package/rich-text/index.d.ts +7 -7
  123. package/rich-text/index.js +1 -1
  124. package/rich-text/model.d.ts +4 -3
  125. package/rich-text/render-model.d.ts +4 -5
  126. package/rich-text/style.scss +3 -12
  127. package/rich-text/toolbar.d.ts +6 -6
  128. package/rich-text/translations.d.ts +3 -15
  129. package/select.d.ts +20 -0
  130. package/select.js +1 -0
  131. package/status-feedback/exit-snapshot.js +4 -4
  132. package/status-feedback/index.js +2 -2
  133. package/status-feedback/popover.js +10 -10
  134. package/status-feedback/render.js +3 -44
  135. package/status-feedback/status-feedback.scss +7 -0
  136. package/status-feedback/types.d.ts +4 -0
  137. package/status-feedback/use-auto-dismiss.d.ts +3 -0
  138. package/styles/_compositions.scss +3 -1
  139. package/styles/_control.scss +12 -4
  140. package/styles/_primitives.scss +9 -8
  141. package/styles.css +1 -1
  142. package/surfaces.js +45 -45
  143. package/svelte/UiComponent.server.js +1 -48
  144. package/svelte/UiComponent.svelte +0 -21
  145. package/svelte.js +33 -68
  146. package/time-grid.js +1 -1
  147. package/timeline-track/component.d.ts +5 -1
  148. package/timeline-track/index.js +71 -54
  149. package/timeline-track/model.d.ts +9 -0
  150. package/timeline-track/model.js +10 -1
  151. package/ui.css +1 -1
  152. package/vue.d.ts +24 -5
  153. package/vue.js +140 -164
  154. package/_chunks/compat.module-DDB2pm9O.js +0 -229
  155. package/_chunks/dropdown-voWqmwAe.js +0 -357
  156. package/_chunks/mount-DZe_6VtR.js +0 -90
  157. package/_chunks/request-trail-IdNiFvKH.js +0 -347
  158. package/_chunks/rich-text-BzI1DyfF.js +0 -477
  159. package/react-native-select.d.ts +0 -6
  160. package/rich-text/syntax.d.ts +0 -2
  161. package/vue-native-select.d.ts +0 -9
@@ -0,0 +1,605 @@
1
+ import { c as e, i as t, r as n, u as r } from "./preact.module-BBM36DnO.js";
2
+ import { c as i, i as a, n as o, o as s, r as c, s as l, t as u } from "./hooks.module-CG3gN83z.js";
3
+ import { t as d } from "./jsxRuntime.module-F6UFnpT-.js";
4
+ import { t as f } from "./field-context-D57PnBbH.js";
5
+ import { r as p, t as m } from "./popup-CT2uD3go.js";
6
+ import { useDropdownService as h } from "../dropdown/dropdown.service.js";
7
+ import { RemoveButton as g } from "../buttons/remove-button.js";
8
+ import { t as _ } from "./chevron-down-GbplLa6s.js";
9
+ import { registerControl as v, renderControl as y } from "../control-presentation.js";
10
+ //#region src/dropdown/remote.ts
11
+ var b = {
12
+ loading: "Loading…",
13
+ empty: "No results found",
14
+ error: "Unable to load options.",
15
+ retry: "Retry",
16
+ loadMore: "Load more",
17
+ unavailable: (e) => `Unavailable (${String(e)})`
18
+ }, x = class {
19
+ source;
20
+ context;
21
+ changed;
22
+ text;
23
+ settings;
24
+ cache = /* @__PURE__ */ new Map();
25
+ ids = [];
26
+ items = [];
27
+ query = "";
28
+ cursor;
29
+ seen = /* @__PURE__ */ new Set();
30
+ searchAbort;
31
+ resolveAbort;
32
+ timer;
33
+ generation = 0;
34
+ resolution = 0;
35
+ disposed = !1;
36
+ loading = !1;
37
+ searchFailed = !1;
38
+ failedCursor;
39
+ resolveFailed = !1;
40
+ opened = !1;
41
+ constructor(e, t, n, r = b, i = {}) {
42
+ this.source = e, this.context = t, this.changed = n, this.text = r, this.settings = i;
43
+ }
44
+ remember(e) {
45
+ for (let t of e) {
46
+ if (typeof t.value != "string" && (typeof t.value != "number" || !Number.isFinite(t.value))) throw TypeError("Remote dropdown values must be finite numeric or string IDs.");
47
+ this.cache.set(t.value, t);
48
+ }
49
+ }
50
+ emit() {
51
+ this.disposed || this.changed({
52
+ items: [...this.items],
53
+ selected: this.ids.map((e) => this.cache.get(e) ?? {
54
+ value: e,
55
+ label: this.text.unavailable(e),
56
+ unresolved: !0
57
+ }),
58
+ loading: this.loading,
59
+ error: this.searchFailed || this.resolveFailed,
60
+ hasMore: this.cursor !== void 0
61
+ });
62
+ }
63
+ setSelected(e, t = []) {
64
+ this.remember(t), this.ids = [...new Set(e)], this.resolveAbort?.abort();
65
+ let n = ++this.resolution, r = this.ids.filter((e) => !this.cache.has(e));
66
+ if (this.resolveFailed = !1, this.emit(), !r.length || this.disposed) return;
67
+ let i = this.resolveAbort = new AbortController();
68
+ Promise.resolve().then(() => this.source.resolve({
69
+ ids: r,
70
+ signal: i.signal,
71
+ context: this.context
72
+ })).then((e) => {
73
+ this.disposed || i.signal.aborted || n !== this.resolution || (this.remember(e), this.emit());
74
+ }).catch(() => {
75
+ this.disposed || i.signal.aborted || n !== this.resolution || (this.resolveFailed = !0, this.emit());
76
+ });
77
+ }
78
+ search(e, t = !1) {
79
+ this.disposed || (this.opened = !0, this.query = e, this.searchAbort?.abort(), clearTimeout(this.timer), ++this.generation, this.items = [], this.cursor = void 0, this.seen.clear(), this.loading = !0, this.searchFailed = !1, this.emit(), t ? this.page(void 0, this.generation) : this.timer = setTimeout(() => void this.page(void 0, this.generation), this.settings.debounceMs ?? 200));
80
+ }
81
+ async page(e, t) {
82
+ if (this.disposed || t !== this.generation || this.seen.has(e)) return;
83
+ this.seen.add(e), this.loading = !0, this.searchFailed = !1, this.emit();
84
+ let n = this.searchAbort = new AbortController();
85
+ try {
86
+ let r = await this.source.search({
87
+ query: this.query,
88
+ cursor: e,
89
+ pageSize: this.settings.pageSize ?? 50,
90
+ signal: n.signal,
91
+ context: this.context
92
+ });
93
+ if (this.disposed || n.signal.aborted || t !== this.generation) return;
94
+ this.remember(r.items);
95
+ let i = new Map(this.items.map((e) => [e.value, e]));
96
+ r.items.forEach((e) => i.set(e.value, e)), this.items = [...i.values()], this.cursor = r.nextCursor ?? void 0, this.seen.has(this.cursor) && (this.cursor = void 0);
97
+ } catch {
98
+ if (this.disposed || n.signal.aborted || t !== this.generation) return;
99
+ this.seen.delete(e), this.failedCursor = e, this.searchFailed = !0;
100
+ } finally {
101
+ !this.disposed && !n.signal.aborted && t === this.generation && (this.loading = !1, this.emit());
102
+ }
103
+ }
104
+ loadMore() {
105
+ !this.loading && !this.searchFailed && this.cursor !== void 0 && this.page(this.cursor, this.generation);
106
+ }
107
+ retry() {
108
+ this.resolveFailed && this.setSelected(this.ids), this.searchFailed && this.opened && this.page(this.failedCursor, this.generation);
109
+ }
110
+ close() {
111
+ this.opened = !1, this.searchAbort?.abort(), clearTimeout(this.timer), ++this.generation, this.loading = !1, this.emit();
112
+ }
113
+ destroy() {
114
+ this.disposed = !0, this.close(), this.resolveAbort?.abort(), ++this.resolution;
115
+ }
116
+ };
117
+ //#endregion
118
+ //#region src/dropdown/remote-hook.ts
119
+ function S(e) {
120
+ let t = o(() => ({
121
+ ...b,
122
+ ...e.remoteText
123
+ }), [e.remoteText]), [n, r] = a({
124
+ items: [],
125
+ selected: [],
126
+ loading: !1,
127
+ error: !1,
128
+ hasMore: !1
129
+ }), s = u(), l = e.value === null || e.value === void 0 ? [] : Array.isArray(e.value) ? e.value : [e.value], d = JSON.stringify(l);
130
+ return c(() => {
131
+ if (!e.dataSource || e.disabled) {
132
+ r({
133
+ items: [],
134
+ selected: [],
135
+ loading: !1,
136
+ error: !1,
137
+ hasMore: !1
138
+ });
139
+ return;
140
+ }
141
+ let n = new x(e.dataSource, e.dataContext, r, t);
142
+ return s.current = n, () => {
143
+ n.destroy(), s.current === n && (s.current = void 0);
144
+ };
145
+ }, [
146
+ e.dataSource,
147
+ e.dataContext,
148
+ e.disabled,
149
+ t
150
+ ]), c(() => {
151
+ s.current?.setSelected(l, e.source);
152
+ }, [
153
+ d,
154
+ e.source,
155
+ e.dataSource,
156
+ e.dataContext,
157
+ e.disabled,
158
+ t
159
+ ]), i(() => {
160
+ e.open ? s.current?.search(e.initialQuery, !0) : s.current?.close();
161
+ }, [
162
+ e.open,
163
+ e.dataSource,
164
+ e.dataContext,
165
+ e.disabled,
166
+ e.initialQuery,
167
+ t
168
+ ]), {
169
+ ...n,
170
+ text: t,
171
+ search: (e) => s.current?.search(e),
172
+ loadMore: () => s.current?.loadMore(),
173
+ retry: () => s.current?.retry()
174
+ };
175
+ }
176
+ //#endregion
177
+ //#region src/dropdown/content.tsx
178
+ function C({ options: e, selectedValues: t, remote: n, value: r, onChange: a, config: o, multiSelect: s, search: c, searchPlaceholder: l, listboxId: f, searchId: p, renderOption: m, renderNoResults: g, onClose: _, onTabNavigation: v, theme: y }) {
179
+ let b = u(null), x = u(null), S = u(null), { searchValue: C, focusedIndex: T, selectedOptions: E, filteredOptions: D, handleSelect: ee, handleKeyDown: O, handleSearchChange: k, setFocusedIndex: A } = h(e, r, a, o, _, n && {
180
+ selected: t ?? [],
181
+ search: n.search
182
+ }), j = T >= 0 && T < D.length && !D[T].disabled ? `${f}-option-${T}` : void 0;
183
+ return i(() => {
184
+ if (!o.autoFocus) return;
185
+ let e = () => {
186
+ c && b.current ? b.current.focus({ preventScroll: !0 }) : x.current?.focus({ preventScroll: !0 });
187
+ }, t = x.current?.ownerDocument.defaultView ?? (typeof window < "u" ? window : void 0);
188
+ if (!t) return;
189
+ e();
190
+ let n = t.setTimeout(e, 0), r = t.requestAnimationFrame(e), i = t.setTimeout(e, 16);
191
+ return () => {
192
+ t.clearTimeout(n), t.cancelAnimationFrame(r), t.clearTimeout(i);
193
+ };
194
+ }, [o.autoFocus, c]), /* @__PURE__ */ d("div", {
195
+ ref: x,
196
+ className: "dropdown-listbox",
197
+ "data-theme": y ?? "default",
198
+ role: "listbox",
199
+ id: f,
200
+ "aria-multiselectable": s,
201
+ "aria-activedescendant": j,
202
+ tabIndex: -1,
203
+ "aria-busy": n?.loading,
204
+ onScrollCapture: (e) => {
205
+ let t = e.target;
206
+ n && t.scrollHeight - t.scrollTop - t.clientHeight < 48 && n.loadMore();
207
+ },
208
+ onKeyUp: (e) => e.stopPropagation(),
209
+ onKeyDown: (e) => {
210
+ if (e.stopPropagation(), e.key === "Escape") e.preventDefault(), e.stopPropagation(), _(!1);
211
+ else if (e.key === "Tab") {
212
+ if (o.nativeTabNavigation && v) {
213
+ v();
214
+ return;
215
+ }
216
+ e.preventDefault(), e.stopPropagation(), o.closeOnTab && _(!0);
217
+ } else (e.key !== " " || e.target !== b.current) && O(e);
218
+ },
219
+ children: [
220
+ c && /* @__PURE__ */ d("div", {
221
+ className: "dropdown-search",
222
+ children: /* @__PURE__ */ d("input", {
223
+ ref: b,
224
+ type: "text",
225
+ id: p,
226
+ className: `dropdown-search-input ${y ? `theme-${y}` : ""}`,
227
+ placeholder: l,
228
+ value: C,
229
+ onChange: k,
230
+ onInput: k,
231
+ "aria-label": o.searchAriaLabel ?? "Search options"
232
+ })
233
+ }),
234
+ n?.loading && /* @__PURE__ */ d("div", {
235
+ role: "status",
236
+ children: n.text.loading
237
+ }),
238
+ n?.error && /* @__PURE__ */ d("div", {
239
+ role: "alert",
240
+ children: [
241
+ n.text.error,
242
+ " ",
243
+ /* @__PURE__ */ d(R, {
244
+ onClick: n.retry,
245
+ children: n.text.retry
246
+ })
247
+ ]
248
+ }),
249
+ /* @__PURE__ */ d(w, {
250
+ options: e,
251
+ filteredOptions: D,
252
+ multiSelect: s,
253
+ focusedIndex: T,
254
+ selectedOptions: E,
255
+ onKeyDown: O,
256
+ onSelect: ee,
257
+ onFocusChange: A,
258
+ renderOption: m,
259
+ renderNoResults: n ? () => n.loading || n.error ? null : n.text.empty : g,
260
+ dropdownListRef: S,
261
+ theme: y,
262
+ optionIdPrefix: f
263
+ }),
264
+ n?.hasMore && /* @__PURE__ */ d(R, {
265
+ disabled: n.loading,
266
+ onClick: n.loadMore,
267
+ children: n.text.loadMore
268
+ })
269
+ ]
270
+ });
271
+ }
272
+ function w({ options: n, filteredOptions: r, multiSelect: i, focusedIndex: a, selectedOptions: o, onKeyDown: c, onSelect: l, onFocusChange: u, renderOption: f, renderNoResults: p, dropdownListRef: m, theme: h, optionIdPrefix: g }) {
273
+ let _ = s((e) => o.some((t) => JSON.stringify(t.value) === JSON.stringify(e.value)), [o]), v = s((t, n) => {
274
+ let r = _(t), o = a === n;
275
+ return /* @__PURE__ */ d("li", {
276
+ id: `${g}-option-${n}`,
277
+ role: "option",
278
+ "data-value": typeof t.value == "string" || typeof t.value == "number" ? String(t.value) : void 0,
279
+ "aria-selected": r,
280
+ "aria-disabled": t.disabled,
281
+ tabIndex: -1,
282
+ className: `dropdown-option ${r ? "selected" : ""} ${o ? "focused" : ""} ${t.disabled ? "disabled" : ""} ${h ? `theme-${h}` : ""}`,
283
+ onClick: () => l(t),
284
+ onMouseEnter: () => {
285
+ t.disabled || u(n);
286
+ },
287
+ children: f ? f(e, t, r) : /* @__PURE__ */ d("div", {
288
+ className: "option-content",
289
+ children: [i && /* @__PURE__ */ d("input", {
290
+ type: "checkbox",
291
+ checked: r,
292
+ readOnly: !0,
293
+ disabled: t.disabled,
294
+ tabIndex: -1,
295
+ "aria-hidden": "true"
296
+ }), /* @__PURE__ */ d("span", { children: t.label })]
297
+ })
298
+ }, `${t.label}-${n}`);
299
+ }, [
300
+ a,
301
+ l,
302
+ _,
303
+ i,
304
+ f,
305
+ u,
306
+ h
307
+ ]);
308
+ return /* @__PURE__ */ d(t, { children: /* @__PURE__ */ d("ul", {
309
+ ref: m,
310
+ className: "dropdown-options",
311
+ role: "presentation",
312
+ tabIndex: -1,
313
+ children: r.length > 0 ? r.map(v) : /* @__PURE__ */ d("li", {
314
+ className: "no-results",
315
+ children: p ? p(e) : /* @__PURE__ */ d("span", { children: "No results found" })
316
+ })
317
+ }) });
318
+ }
319
+ //#endregion
320
+ //#region src/dropdown/index.tsx
321
+ var T = ({ options: t, className: n, renderValue: r }) => /* @__PURE__ */ d("span", {
322
+ className: `selected-value ${n}`,
323
+ children: r ? r(e, t[0]) : t[0].label
324
+ }), E = ({ options: t, removeOption: n, className: r, renderValue: i, disabled: a, removeLabel: o }) => /* @__PURE__ */ d("div", {
325
+ className: `selected-values ${r}`,
326
+ children: t.map((t, r) => /* @__PURE__ */ d("span", {
327
+ className: "selected-tag",
328
+ children: [i ? i(e, t) : t.label, !a && !t.disabled && /* @__PURE__ */ d(g, {
329
+ compact: !0,
330
+ onClick: (e) => {
331
+ e.stopPropagation(), n(t);
332
+ },
333
+ locale: {
334
+ title: o?.(t.label) ?? `Remove ${t.label}`,
335
+ ariaLabel: o?.(t.label) ?? `Remove ${t.label}`
336
+ }
337
+ })]
338
+ }, r))
339
+ }), D = ({ className: e }) => /* @__PURE__ */ d("span", {
340
+ className: `dropdown-arrow ${e}`,
341
+ "aria-hidden": "true",
342
+ dangerouslySetInnerHTML: { __html: _ }
343
+ }), ee = ({ placeholder: e, className: t }) => [/* @__PURE__ */ d("span", {
344
+ className: `placeholder px-2 ${t}`,
345
+ children: e
346
+ }), /* @__PURE__ */ d(D, { className: "mr-2" })];
347
+ function O({ source: t, triggerAttributes: n, dataSource: r, dataContext: s, remoteText: c, value: l, onChange: f, placeholder: p = "Select an option", disabled: h = !1, name: g, id: _, className: v = "", style: y, config: b = {}, renderContent: x, renderOption: w, renderValue: O, renderPlaceholder: k, renderSelectedValue: A, renderNoResults: j, onClose: M, beforeOutsideClose: N, environment: P }) {
348
+ let { search: F = !1, searchPlaceholder: I = "Search...", closeOnClickOutside: L = !0, autoOpen: R = !1, multiSelect: z = !1, portalTarget: te, ariaLabel: ne, ariaLabelledBy: re, ariaDescribedBy: ie, popupClassName: ae, maxHeight: oe } = b, B = u(null), V = te ?? (b.topLayer ? B.current?.closest("revo-grid") : void 0) ?? (typeof document < "u" ? document.body : null), H = o(() => _ || `dropdown-${Math.random().toString(36).substring(2, 9)}`, [_]), U = `${H}-listbox`, se = `${H}-search`, W = `${H}-menu`, [G, K] = a(R && !h), [ce, q] = a(!h && (R || !!b.autoFocus)), J = u(R), Y = b.theme ?? "default";
349
+ i(() => {
350
+ R && !J.current && !h && (q(!0), K(!0)), J.current = R;
351
+ }, [R, h]), i(() => {
352
+ h && G && (K(!1), M?.(!1));
353
+ }, [h, G]);
354
+ let X = S({
355
+ dataSource: r,
356
+ dataContext: s,
357
+ remoteText: c,
358
+ value: l,
359
+ disabled: h,
360
+ source: t,
361
+ open: G,
362
+ initialQuery: b.initialSearch ?? ""
363
+ }), Z = r ? [...new Map([...X.selected, ...X.items].map((e) => [e.value, e])).values()] : t, Q = o(() => {
364
+ if (l === void 0) return [];
365
+ if (z && Array.isArray(l)) return Z.filter((e) => l.some((t) => JSON.stringify(t) === JSON.stringify(e.value)));
366
+ {
367
+ let e = Z.find((e) => JSON.stringify(e.value) === JSON.stringify(l));
368
+ return e ? [e] : [];
369
+ }
370
+ }, [
371
+ l,
372
+ Z,
373
+ z
374
+ ]), le = () => {
375
+ h || K((e) => {
376
+ let t = !e;
377
+ return t && q(!0), t;
378
+ });
379
+ }, $ = (e = !1) => {
380
+ K((t) => (t && M?.(e), !1));
381
+ };
382
+ i(() => {
383
+ if (!G) return;
384
+ let e = B.current;
385
+ if (e) return P?.onOpen?.(e, $);
386
+ }, [G]);
387
+ let ue = (e) => {
388
+ if (!(h || e.disabled)) {
389
+ if (z) {
390
+ let t = Q.some((t) => JSON.stringify(t.value) === JSON.stringify(e.value)), n;
391
+ n = t ? Q.filter((t) => JSON.stringify(t.value) !== JSON.stringify(e.value)) : [...Q, e], f && f(n.map((e) => e.value));
392
+ } else f && f(e.value), $();
393
+ }
394
+ };
395
+ i(() => {
396
+ if (!L || !G) return;
397
+ let e = V?.ownerDocument ?? B.current?.ownerDocument ?? (typeof document < "u" ? document : void 0);
398
+ if (!e) return;
399
+ let t = (t) => {
400
+ let n = e.getElementById(W), r = t.target;
401
+ if (n && r && !n.contains(r) && B.current && !B.current.contains(r)) {
402
+ if (N?.() === !1) {
403
+ t.preventDefault(), t.stopImmediatePropagation();
404
+ return;
405
+ }
406
+ $();
407
+ }
408
+ }, n = !!N;
409
+ return e.addEventListener("pointerdown", t, n), () => {
410
+ e.removeEventListener("pointerdown", t, n);
411
+ };
412
+ }, [
413
+ L,
414
+ G,
415
+ W,
416
+ V,
417
+ N
418
+ ]);
419
+ let de = () => {
420
+ let t = [D({})];
421
+ return A ? A(e, Q, t) : Q.length > 0 ? z ? [/* @__PURE__ */ d(E, {
422
+ options: Q,
423
+ removeOption: ue,
424
+ renderValue: O,
425
+ disabled: h,
426
+ removeLabel: b.removeLabel
427
+ }), /* @__PURE__ */ d(D, { className: "mr-2" })] : [/* @__PURE__ */ d(T, {
428
+ options: Q,
429
+ renderValue: O
430
+ }), /* @__PURE__ */ d(D, { className: "mr-2" })] : k ? k(e, p, t) : /* @__PURE__ */ d(ee, { placeholder: p });
431
+ }, fe = () => /* @__PURE__ */ d(m, {
432
+ onPointerRelease: P?.onPointerRelease,
433
+ topLayer: b.topLayer,
434
+ triggerRef: B,
435
+ portalTarget: V,
436
+ theme: Y,
437
+ dropdownMenuId: W,
438
+ popupClassName: ae,
439
+ maxHeight: oe,
440
+ children: x ? x({
441
+ id: U,
442
+ close: $
443
+ }) : /* @__PURE__ */ d(C, {
444
+ options: r ? X.items : Z,
445
+ selectedValues: r ? X.selected : void 0,
446
+ remote: r ? X : void 0,
447
+ value: l,
448
+ onChange: (e) => {
449
+ h || f?.(e);
450
+ },
451
+ config: {
452
+ ...b,
453
+ autoFocus: b.autoFocus || ce
454
+ },
455
+ multiSelect: z,
456
+ search: !!r || F,
457
+ searchPlaceholder: I,
458
+ listboxId: U,
459
+ searchId: se,
460
+ renderOption: w,
461
+ renderNoResults: j,
462
+ onClose: $,
463
+ onTabNavigation: () => {
464
+ $(), B.current?.focus();
465
+ },
466
+ theme: Y
467
+ })
468
+ });
469
+ return /* @__PURE__ */ d("div", {
470
+ className: `dropdown-container ${v} ${h ? "disabled" : ""}`,
471
+ style: y,
472
+ children: [
473
+ /* @__PURE__ */ d("div", {
474
+ ...n,
475
+ ref: B,
476
+ className: `dropdown-trigger ${G ? "open" : ""}`,
477
+ role: "combobox",
478
+ "data-value": Array.isArray(l) ? JSON.stringify(l) : l == null ? "" : String(l),
479
+ "aria-haspopup": x ? "dialog" : "listbox",
480
+ "aria-expanded": G && !h,
481
+ "aria-disabled": h,
482
+ "aria-owns": U,
483
+ "aria-controls": U,
484
+ "aria-label": ne,
485
+ "aria-labelledby": re,
486
+ "aria-describedby": ie,
487
+ tabIndex: h ? -1 : 0,
488
+ onClick: h ? void 0 : le,
489
+ onKeyDown: (e) => {
490
+ h || e.target !== e.currentTarget || (G && e.key === "Escape" ? (e.preventDefault(), e.stopPropagation(), $()) : !G && (e.key === "Enter" || e.key === " " || e.key === "ArrowDown") && (e.preventDefault(), e.stopPropagation(), le()));
491
+ },
492
+ children: de()
493
+ }),
494
+ G && !h && fe(),
495
+ g && /* @__PURE__ */ d("input", {
496
+ type: "hidden",
497
+ name: g,
498
+ value: JSON.stringify(z ? Q.map((e) => e.value) : Q[0]?.value || "")
499
+ })
500
+ ]
501
+ });
502
+ }
503
+ var k = (e, t) => {
504
+ n(/* @__PURE__ */ d(O, { ...t }), e);
505
+ }, A = (e) => {
506
+ n(null, e);
507
+ };
508
+ //#endregion
509
+ //#region src/select.tsx
510
+ function j(e) {
511
+ return Array.isArray(e) ? e.map(j).join("") : r(e) ? j(e.props.children) : e == null || typeof e == "boolean" ? "" : String(e);
512
+ }
513
+ function M(e, n, i = "", a = !1) {
514
+ if (Array.isArray(e)) return e.flatMap((e) => M(e, n, i, a));
515
+ if (!r(e)) return [];
516
+ let o = e.props;
517
+ if (e.type === t) return M(o.children, n, i, a);
518
+ if (e.type === "optgroup") return M(o.children, n, o.label ?? "", a || !!o.disabled);
519
+ let s = n ? n(o) : o, c = {
520
+ ...s,
521
+ disabled: o.disabled || s.disabled,
522
+ hidden: o.hidden || s.hidden
523
+ }, l = String(c.label ?? j(c.children)).trim();
524
+ return [{
525
+ value: String(c.value ?? l),
526
+ label: i ? `${i}: ${l}` : l,
527
+ disabled: a || !!c.disabled,
528
+ hidden: !!c.hidden,
529
+ selected: !!c.selected
530
+ }];
531
+ }
532
+ function N(e) {
533
+ let { children: n, value: r, defaultValue: i, onValueChange: o, optionPolicy: s, multiple: c, disabled: u, name: p, class: m, className: h, style: g, ..._ } = e, v = l(f), y = v.disabled || !!u, b = M(n, s), [x, S] = a(() => {
534
+ let e = i ?? (c ? b.filter((e) => e.selected).map((e) => e.value) : b.find((e) => e.selected)?.value ?? b[0]?.value ?? "");
535
+ return Array.isArray(e) ? [...e] : String(e);
536
+ }), C = r === void 0 ? x : Array.isArray(r) ? [...r] : String(r), w = Array.isArray(C) ? C : [C], T = b.filter((e) => !e.hidden || w.includes(e.value)), E = `rv-select rv-select-control ${typeof m == "string" ? m : ""} ${h ?? ""}`.replace(/\brv-control\b/g, "").trim();
537
+ return /* @__PURE__ */ d(t, { children: [/* @__PURE__ */ d(O, {
538
+ renderOption: (e, t) => /* @__PURE__ */ d("span", {
539
+ "data-select-option": t.value,
540
+ children: t.label
541
+ }),
542
+ source: T,
543
+ value: C,
544
+ disabled: !!y,
545
+ className: E,
546
+ style: g,
547
+ triggerAttributes: {
548
+ ..._,
549
+ "data-select-value": Array.isArray(C) ? JSON.stringify(C) : C
550
+ },
551
+ config: {
552
+ nativeTabNavigation: !0,
553
+ multiSelect: !!c,
554
+ topLayer: !0,
555
+ ariaLabel: _["aria-label"],
556
+ ariaLabelledBy: _["aria-labelledby"] ?? (_["aria-label"] ? void 0 : v.labelId),
557
+ ariaDescribedBy: _["aria-describedby"] ?? v.hintId
558
+ },
559
+ onChange: (e) => {
560
+ let t = c ? Array.isArray(e) ? e : [e] : String(Array.isArray(e) ? e[0] ?? "" : e);
561
+ r === void 0 && S(t), o?.(t);
562
+ }
563
+ }), p && w.map((e) => /* @__PURE__ */ d("input", {
564
+ type: "hidden",
565
+ name: p,
566
+ value: e,
567
+ disabled: !!y
568
+ }))] });
569
+ }
570
+ //#endregion
571
+ //#region src/fieldset.tsx
572
+ function P(e) {
573
+ let t = l(f), n = t.disabled || !!e.disabled;
574
+ return /* @__PURE__ */ d(f.Provider, {
575
+ value: {
576
+ ...t,
577
+ disabled: n
578
+ },
579
+ children: /* @__PURE__ */ d("fieldset", {
580
+ ...e,
581
+ disabled: n
582
+ })
583
+ });
584
+ }
585
+ //#endregion
586
+ //#region src/native-control.tsx
587
+ function F(t, n, ...r) {
588
+ let { onChange: i, ...a } = n, o = y(e, t, a, ...r);
589
+ return i && !(t === "button" && n.busy) && Object.assign(o.props, { onChange: i }), o;
590
+ }
591
+ var I = v(p((e, t) => F("input", {
592
+ ...e,
593
+ ref: t
594
+ })), "input"), L = v(p(({ children: e, ...t }, n) => F("textarea", {
595
+ ...t,
596
+ ref: n
597
+ }, e)), "textarea"), R = v(p(({ children: e, ...t }, n) => F("button", {
598
+ ...t,
599
+ ref: n
600
+ }, e)), "button"), z = v(p(({ children: e, ...t }, n) => F("summary", {
601
+ ...t,
602
+ ref: n
603
+ }, e)), "summary"), te = v(N, "select");
604
+ //#endregion
605
+ export { L as a, M as c, A as d, w as f, z as i, O as l, I as n, P as o, C as p, te as r, N as s, R as t, k as u };
@@ -1,7 +1,7 @@
1
1
  import { c as e, i as t, t as n } from "./hooks.module-CG3gN83z.js";
2
2
  import { t as r } from "./jsxRuntime.module-F6UFnpT-.js";
3
- import { Input as i } from "../native-control.js";
4
- import { n as a } from "./controls-DIum-E66.js";
3
+ import { n as i } from "./native-control-C_yok8_-.js";
4
+ import { n as a } from "./controls-DsNi8V8I.js";
5
5
  import { createControlId as o } from "../core/control-id.js";
6
6
  import { EditorActions as s } from "../editor-actions.js";
7
7
  //#region src/number-input/model.ts
@@ -1,11 +1,11 @@
1
1
  import { i as e } from "./preact.module-BBM36DnO.js";
2
2
  import { i as t } from "./hooks.module-CG3gN83z.js";
3
3
  import { t as n } from "./jsxRuntime.module-F6UFnpT-.js";
4
- import { ButtonControl as r } from "../native-control.js";
4
+ import { t as r } from "./native-control-C_yok8_-.js";
5
5
  import { DEFAULT_CALENDAR_TRANSLATIONS as i } from "../calendar/translations.js";
6
6
  import { n as a } from "./iso-B0YHBK7m.js";
7
7
  import { f as o, h as s, m as c, o as l, p as u } from "./model-mPO2tG2f.js";
8
- import { t as d } from "./calendar-CpaUK7w1.js";
8
+ import { t as d } from "./calendar-xpZ0v3xf.js";
9
9
  //#region src/calendar/picker.tsx
10
10
  function f(f) {
11
11
  let { selected: p, onSelectionChange: ee, presets: m, mode: h = "single", min: g = 0, max: _ = Infinity, required: v = !1, excludeDisabled: y = !1, month: b, defaultMonth: x, onMonthChange: S, ...C } = f, w = typeof p == "string" ? p : Array.isArray(p) ? p[0] : p?.from, [T, E] = t(x ?? w ?? f.referenceDate ?? s()), [D, O] = t(w ?? T), [k, A] = t(), [j, M] = t(), N = (e) => {