@knime/jsonforms 1.6.9 → 1.7.0

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 (122) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/AnyOfTwinlist-D7gkxtYi.js +22 -0
  3. package/dist/{BaseButton-B6Z2uYGV.js → BaseButton-nH3iSIOK.js} +1 -1
  4. package/dist/{Button-B27OsWa6.js → Button-DnQZFkaO.js} +2 -2
  5. package/dist/{Checkbox-Bl3rvtXe.js → Checkbox-DB9YeQa-.js} +1 -1
  6. package/dist/{CheckboxControl-BAIwtCZF.js → CheckboxControl-hkHWMBsv.js} +2 -2
  7. package/dist/{Checkboxes-Cb1lJdBP.js → Checkboxes-C_qM6Iao.js} +2 -2
  8. package/dist/{CheckboxesControl-CQSzjloD.js → CheckboxesControl-DRNda60A.js} +3 -3
  9. package/dist/{ComboBoxControl-CmY_qMv_.js → ComboBoxControl-Dd0UZdMx.js} +77 -89
  10. package/dist/{DateControl-BL2H5BjS.js → DateControl-BmqofCSf.js} +1 -1
  11. package/dist/{DateTimeControl-BYuJUqBc.js → DateTimeControl-B7uvqC1s.js} +2 -2
  12. package/dist/{DateTimeFormatInput-BagQnUJb.js → DateTimeFormatInput-CsEAVqAA.js} +3 -3
  13. package/dist/{DateTimeFormatPickerControl-DmbGr3EH.js → DateTimeFormatPickerControl-BK80kZf0.js} +2 -2
  14. package/dist/{DateTimeFormatPickerWithTypeControl-CGCdH2_0.js → DateTimeFormatPickerWithTypeControl-CS8APLBp.js} +3 -3
  15. package/dist/{DateTimeInput-Cbw4cu1f.js → DateTimeInput-DP2yHD9r.js} +14 -13
  16. package/dist/{Dropdown-xSUsqbQu.js → Dropdown-D8qp_4wZ.js} +30 -29
  17. package/dist/DropdownControl-B2fs1yBj.js +84 -0
  18. package/dist/{FunctionButton-BjutjqfY.js → FunctionButton-Bo0NcfGh.js} +2 -2
  19. package/dist/{HorizontalLayout-HzwqDGLQ.js → HorizontalLayout-Bg5vYcO1.js} +1 -1
  20. package/dist/{InputField-CWbS01h9.js → InputField-DRLCzzDf.js} +1 -1
  21. package/dist/{IntegerControl-BNz67bUk.js → IntegerControl-HLRox7w7.js} +1 -1
  22. package/dist/{IntervalControl-jM22Q0CQ.js → IntervalControl-D-xUIRW3.js} +4 -4
  23. package/dist/LoadingDropdown-DkxltiwQ.js +40 -0
  24. package/dist/MultimodeTwinlistControl-CV2v4Y5n.js +526 -0
  25. package/dist/{MultiselectListBox-D5smzcVZ.js → MultiselectListBox-BFQxtoyR.js} +1 -1
  26. package/dist/{NameFilter-B9TOgIBA.js → NameFilter-BxfjNVu-.js} +1 -1
  27. package/dist/{NumberControl-YCMcJfZB.js → NumberControl-Df91UAXl.js} +1 -1
  28. package/dist/NumberControlBase.vue_vue_type_script_setup_true_lang-DLqtcp04.js +53 -0
  29. package/dist/{NumberInput-DO8rNjya.js → NumberInput-BLlTeOig.js} +1 -1
  30. package/dist/OneOfDropdown-CLPbmMt7.js +34 -0
  31. package/dist/{RadioControl-DK_i_SC9.js → RadioControl-CDi8WbsE.js} +2 -2
  32. package/dist/{RadioControlBase.vue_vue_type_script_setup_true_lang-B_Dxf3fU.js → RadioControlBase.vue_vue_type_script_setup_true_lang-B6clHvd5.js} +3 -3
  33. package/dist/{RichTextControl-Bp6N-XYM.js → RichTextControl-YMNSyY3O.js} +6 -6
  34. package/dist/{SectionHeading-wDPgvJNi.js → SectionHeading-D8h1zy67.js} +1 -1
  35. package/dist/{SectionLayout-DYLzJvJs.js → SectionLayout-DBiG5Ubc.js} +3 -3
  36. package/dist/{SettingsSubPanel-DTubXv1M.js → SettingsSubPanel--LD_hsgG.js} +2 -2
  37. package/dist/{SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-dAvPWPee.js → SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-BM4d25sK.js} +1024 -1022
  38. package/dist/{SettingsSubPanelLayout-CAtNgx_A.js → SettingsSubPanelLayout-By5U2J68.js} +5 -5
  39. package/dist/{SimpleButtonControl-D2slFPzs.js → SimpleButtonControl-B47jBtrM.js} +6 -6
  40. package/dist/SimpleTwinlistControl-DoRJkKPs.js +22 -0
  41. package/dist/SingleSelectControl-zE9ck9JX.js +58 -0
  42. package/dist/SortListControl-C5DXqqPG.js +372 -0
  43. package/dist/{TextAreaControl-CxNkzjdq.js → TextAreaControl-D2-nyO1m.js} +1 -1
  44. package/dist/{TextControl-j8Bk4RzX.js → TextControl-Ss9_5V2f.js} +1 -1
  45. package/dist/TextControl.vue_vue_type_script_setup_true_lang-DaEoFVBw.js +93 -0
  46. package/dist/{TimeControl-vGEtfCEt.js → TimeControl-CblSq-0a.js} +2 -2
  47. package/dist/TwinlistControlBase-Xe8xQAyG.js +40 -0
  48. package/dist/{TwinlistLoadingInfo-DnhM2U43.js → TwinlistLoadingInfo-BHhpo_7N.js} +12 -11
  49. package/dist/TypedNameFilter-N2eeG2VM.js +25 -0
  50. package/dist/{ValueSwitch-CGXtJV-B.js → ValueSwitch-BI5z5U3F.js} +1 -1
  51. package/dist/{ValueSwitchControl-dHPRa3vB.js → ValueSwitchControl-CixwDXQs.js} +1 -1
  52. package/dist/{VerticalLayout-BUWGeKPt.js → VerticalLayout-B8RzC8Vj.js} +2 -2
  53. package/dist/{VerticalLayoutBase-Tp2IGikj.js → VerticalLayoutBase-Bj_upYbt.js} +1 -1
  54. package/dist/{ZonedDateTimeControl-Ddjugjzp.js → ZonedDateTimeControl-CZdpjJEK.js} +4 -4
  55. package/dist/_baseEach-FP8ISlsz.js +31 -0
  56. package/dist/_baseIteratee-DhaGkQLM.js +518 -0
  57. package/dist/_getTag-DiktJuv_.js +132 -0
  58. package/dist/index-Blg1O3Fz.js +15 -0
  59. package/dist/isArray-WzO_os3q.js +4 -0
  60. package/dist/isObjectLike-BatpeCIi.js +29 -0
  61. package/dist/isSymbol-C3_SC0Qp.js +8 -0
  62. package/dist/knime-jsonforms.css +1 -1
  63. package/dist/knime-jsonforms.js +8 -8
  64. package/dist/{localTimeUtils-DIFjv2_A.js → localTimeUtils-Dp9bEJDh.js} +1 -1
  65. package/dist/{magic-string.es-BbItKD7x.js → magic-string.es-CeNBRh1A.js} +1 -1
  66. package/dist/src/constants/inputFormats.d.ts +2 -2
  67. package/dist/src/higherOrderComponents/control/validation/types.d.ts +7 -1
  68. package/dist/src/renderers/defaultRenderers.d.ts +24 -589
  69. package/dist/src/renderers/dropdownRenderer.d.ts +55 -115
  70. package/dist/src/renderers/fallbackRenderers.d.ts +1 -241
  71. package/dist/src/renderers/nameFilterRenderer.d.ts +1 -1
  72. package/dist/src/renderers/singleSelectRenderer.d.ts +8 -0
  73. package/dist/src/renderers/sortListRenderer.d.ts +0 -8
  74. package/dist/src/renderers/twinlistRenderer.d.ts +1 -1
  75. package/dist/src/renderers/typedNameFilterRenderer.d.ts +1 -0
  76. package/dist/src/types/ChoicesUiSchema.d.ts +7 -12
  77. package/dist/src/types/provided.d.ts +0 -2
  78. package/dist/src/uiComponents/DropdownControl.vue.d.ts +2 -86
  79. package/dist/src/uiComponents/OneOfDropdown.vue.d.ts +2 -13
  80. package/dist/src/uiComponents/SingleSelectControl.vue.d.ts +20 -0
  81. package/dist/src/uiComponents/SortListControl.vue.d.ts +4 -4
  82. package/dist/src/uiComponents/composables/useBuiltinValidations.d.ts +43 -0
  83. package/dist/src/uiComponents/composables/usePossibleValues.d.ts +24 -0
  84. package/dist/src/uiComponents/composables/useProvidedState.d.ts +2 -2
  85. package/dist/src/uiComponents/twinlist/NameFilter.vue.d.ts +1 -1
  86. package/dist/src/uiComponents/twinlist/SimpleTwinlistControl.vue.d.ts +2 -99
  87. package/dist/src/uiComponents/twinlist/TwinlistControlBase.vue.d.ts +36 -0
  88. package/dist/src/uiComponents/twinlist/{ColumnFilter.vue.d.ts → TypedNameFilter.vue.d.ts} +1 -1
  89. package/dist/src/uiComponents/twinlist/useUnknownValuesInTwinlist.d.ts +1 -1
  90. package/dist/src/utils/index.d.ts +0 -2
  91. package/dist/{svgWithTitle-Cgc-TGWi.js → svgWithTitle-B5FsAPop.js} +1 -1
  92. package/dist/testUtils/component.d.ts +4 -0
  93. package/dist/testing.js +80 -63
  94. package/dist/toString-B9O7P854.js +26 -0
  95. package/dist/useBuiltinValidations-8VwUv3RT.js +52 -0
  96. package/dist/usePossibleValues-CrNcBbpN.js +26 -0
  97. package/package.json +3 -3
  98. package/dist/AnyOfTwinlist-C3gbWpq1.js +0 -22
  99. package/dist/ColumnFilter-DOIYetcH.js +0 -24
  100. package/dist/ColumnSelect-B8IH25EN.js +0 -68
  101. package/dist/DropdownControl-DGfi9k8S.js +0 -4
  102. package/dist/DropdownControl.vue_vue_type_script_setup_true_lang-BvodaKZi.js +0 -237
  103. package/dist/NumberControlBase.vue_vue_type_script_setup_true_lang-CPj9t6fL.js +0 -60
  104. package/dist/OneOfDropdown-BoOe32dm.js +0 -35
  105. package/dist/SimpleTwinlistControl-CrLWO2B2.js +0 -50
  106. package/dist/SortListControl-v_nVoQsh.js +0 -366
  107. package/dist/TextControl.vue_vue_type_script_setup_true_lang-qt4UxKcl.js +0 -87
  108. package/dist/TwinlistControl-Dw5uSnOi.js +0 -554
  109. package/dist/_baseAssignValue-BPMLYzDH.js +0 -19
  110. package/dist/_baseEach-B8N_Gx8P.js +0 -31
  111. package/dist/_baseIsEqual-DmkT9Nkc.js +0 -248
  112. package/dist/_baseIteratee-DvBmrhnf.js +0 -104
  113. package/dist/_getTag-DS8v0_uf.js +0 -312
  114. package/dist/getPossibleValuesFromUiSchema-hQj1TCOR.js +0 -39
  115. package/dist/index-hm05O8UX.js +0 -16
  116. package/dist/isSymbol-OFe5xy2f.js +0 -34
  117. package/dist/src/renderers/columnFilterRenderer.d.ts +0 -1
  118. package/dist/src/renderers/columnSelectRenderer.d.ts +0 -265
  119. package/dist/src/uiComponents/ColumnSelect.vue.d.ts +0 -26
  120. package/dist/src/utils/getPossibleValuesFromUiSchema.d.ts +0 -10
  121. package/dist/toString-DkbNkGT4.js +0 -25
  122. /package/dist/src/uiComponents/twinlist/{TwinlistControl.vue.d.ts → MultimodeTwinlistControl.vue.d.ts} +0 -0
@@ -0,0 +1,526 @@
1
+ import { openBlock as f, createElementBlock as k, createElementVNode as H, toRef as P, resolveComponent as y, normalizeClass as W, createBlock as I, withCtx as V, createVNode as g, createCommentVNode as M, mergeProps as B, ref as L, watch as _, defineComponent as G, computed as h, markRaw as J, unref as U } from "vue";
2
+ import { g as x, a as K, m as Q } from "./index-Blg1O3Fz.js";
3
+ import { u as X, a as Y } from "./usePossibleValues-CrNcBbpN.js";
4
+ import { S as Z, a as $, u as ee, T as te } from "./TwinlistLoadingInfo-BHhpo_7N.js";
5
+ import { f as F } from "./useSearch-hpyYQ_6y.js";
6
+ import { C as le } from "./Checkboxes-C_qM6Iao.js";
7
+ import { n as ae, _ as z } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-BM4d25sK.js";
8
+ import { V as ne } from "./ValueSwitch-BI5z5U3F.js";
9
+ const se = {
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ fill: "none",
12
+ stroke: "#000",
13
+ "stroke-linejoin": "round",
14
+ viewBox: "0 0 32 32"
15
+ }, ie = /* @__PURE__ */ H("path", { d: "m13.31 27.81 5.11-3.19v-9.15L28.95 4.19H3.05l10.26 11.28z" }, null, -1), oe = [
16
+ ie
17
+ ];
18
+ function de(e, a) {
19
+ return f(), k("svg", se, [...oe]);
20
+ }
21
+ const ue = { render: de }, re = {
22
+ manual: "Manual",
23
+ wildcard: "Wildcard",
24
+ regex: "Regex",
25
+ type: "Type"
26
+ }, ce = {
27
+ name: "MultiModeTwinlist",
28
+ components: {
29
+ Label: ae,
30
+ FilterIcon: ue,
31
+ SearchInput: Z,
32
+ Checkboxes: le,
33
+ ValueSwitch: ne,
34
+ Twinlist: $
35
+ },
36
+ props: {
37
+ /**
38
+ * initial values
39
+ */
40
+ mode: {
41
+ type: String,
42
+ required: !1,
43
+ default: "manual"
44
+ },
45
+ manualSelection: {
46
+ type: [Object, Array, null],
47
+ default: () => []
48
+ },
49
+ pattern: {
50
+ type: String,
51
+ default: ""
52
+ },
53
+ caseSensitivePattern: {
54
+ default: !1,
55
+ type: Boolean
56
+ },
57
+ inversePattern: {
58
+ default: !1,
59
+ type: Boolean
60
+ },
61
+ withTypes: {
62
+ type: Boolean,
63
+ default: !0
64
+ },
65
+ selectedTypes: {
66
+ type: Array,
67
+ default: () => []
68
+ },
69
+ /**
70
+ * Hiding and disabling
71
+ */
72
+ showMode: {
73
+ default: !0,
74
+ type: Boolean
75
+ },
76
+ // enable search in case of manual selection
77
+ showSearch: {
78
+ default: !0,
79
+ type: Boolean
80
+ },
81
+ disabled: {
82
+ default: !1,
83
+ type: Boolean
84
+ },
85
+ /**
86
+ * Labels
87
+ */
88
+ withModeLabel: {
89
+ default: !1,
90
+ type: Boolean
91
+ },
92
+ modeLabel: {
93
+ type: String,
94
+ required: !1,
95
+ default: "Selection mode"
96
+ },
97
+ withPatternLabel: {
98
+ default: !1,
99
+ type: Boolean
100
+ },
101
+ patternLabel: {
102
+ type: String,
103
+ required: !1,
104
+ default: "Pattern"
105
+ },
106
+ withTypesLabel: {
107
+ default: !1,
108
+ type: Boolean
109
+ },
110
+ typesLabel: {
111
+ type: String,
112
+ required: !1,
113
+ default: "Selected types"
114
+ },
115
+ /**
116
+ * List of possible values. Each item must have an `id` and a `text` property
117
+ * @example
118
+ * [{
119
+ * id: 'pdf',
120
+ * text: 'PDF'
121
+ * }, {
122
+ * id: 'XLS',
123
+ * text: 'Excel',
124
+ * }]
125
+ * For type selection, additionally, an element has to have a property `type` wich itself has properties
126
+ * `id` and `text`, e.g.
127
+ * [{
128
+ * id: 'pdf',
129
+ * text: 'PDF',
130
+ * type: {
131
+ * id: 'StringValue',
132
+ * text: 'String'
133
+ * }]
134
+ */
135
+ possibleValues: {
136
+ type: Array,
137
+ default: () => []
138
+ },
139
+ /**
140
+ * List of possible types which should be selectable but are not necessarily present in the possible values.
141
+ */
142
+ additionalPossibleTypes: {
143
+ type: Array,
144
+ default: () => []
145
+ },
146
+ compact: {
147
+ type: Boolean,
148
+ default: !1
149
+ }
150
+ },
151
+ emits: [
152
+ // Prop updates
153
+ "update:manualSelection",
154
+ "update:pattern",
155
+ "update:selectedTypes",
156
+ "update:mode",
157
+ "update:caseSensitivePattern",
158
+ "update:inversePattern",
159
+ // Non-prop update
160
+ "update:selected"
161
+ ],
162
+ setup(e) {
163
+ const { includedValues: a } = ee(
164
+ P(e, "manualSelection")
165
+ );
166
+ return { manuallySelected: a };
167
+ },
168
+ data() {
169
+ return {
170
+ invalidPossibleValueIds: /* @__PURE__ */ new Set()
171
+ };
172
+ },
173
+ computed: {
174
+ possibleValueIds() {
175
+ return this.possibleValues.map(({ id: e }) => e);
176
+ },
177
+ possibleTypes() {
178
+ const e = this.possibleValues.map(({ type: i }) => i).filter(Boolean), a = e.map((i) => i.id);
179
+ return [...this.additionalPossibleTypes.filter(
180
+ (i) => i && !a.includes(i.id)
181
+ ), ...e].filter((i) => i && i.id !== "").filter(
182
+ // remove duplicates
183
+ (i, s, d) => s === d.findIndex((u) => u.id === i.id && u.text === i.text)
184
+ );
185
+ },
186
+ matchingValueIds() {
187
+ return this.possibleValues.filter((e) => this.itemMatches(e)).map((e) => e.id);
188
+ },
189
+ twinlistModelValue() {
190
+ return this.mode === "manual" ? this.manualSelection : this.matchingValueIds;
191
+ },
192
+ selectedValues() {
193
+ return this.mode === "manual" ? this.manuallySelected : this.matchingValueIds;
194
+ },
195
+ selectionDisabled() {
196
+ return this.disabled || this.mode !== "manual";
197
+ },
198
+ normalizedSearchTerm() {
199
+ return this.mode === "manual" ? null : F[this.mode].normalize(
200
+ this.mode === "type" ? this.selectedTypes : this.pattern,
201
+ this.caseSensitivePattern
202
+ );
203
+ },
204
+ possibleModes() {
205
+ let e = Object.entries(re).map(([a, t]) => ({ id: a, text: t }));
206
+ return this.withTypes || (e = e.filter((a) => a.id !== "type")), e;
207
+ }
208
+ },
209
+ watch: {
210
+ selectedValues: {
211
+ immediate: !0,
212
+ handler(e, a) {
213
+ !a || e === null || (e.length !== a.length || a.some((t, n) => t !== e[n])) && this.$emit("update:selected", this.selectedValues);
214
+ }
215
+ }
216
+ },
217
+ methods: {
218
+ onManualInput(e) {
219
+ this.mode === "manual" && this.$emit("update:manualSelection", e);
220
+ },
221
+ onPatternInput(e) {
222
+ this.$emit("update:pattern", e);
223
+ },
224
+ onTypeInput(e) {
225
+ this.$emit("update:selectedTypes", e, this.possibleTypes);
226
+ },
227
+ onModeChange(e) {
228
+ this.$emit("update:mode", e);
229
+ },
230
+ onToggleCaseSensitivePattern(e) {
231
+ this.$emit("update:caseSensitivePattern", e);
232
+ },
233
+ onToggleInversePattern(e) {
234
+ this.$emit("update:inversePattern", e);
235
+ },
236
+ validate() {
237
+ return this.$refs.twinlist.validate();
238
+ },
239
+ hasSelection() {
240
+ var e;
241
+ return !!((e = this.selectedValues) != null && e.length);
242
+ },
243
+ itemMatches(e) {
244
+ var t;
245
+ return F[this.mode].test(
246
+ this.mode === "type" ? (t = e.type) == null ? void 0 : t.id : e.text,
247
+ this.normalizedSearchTerm,
248
+ this.caseSensitivePattern,
249
+ this.inversePattern
250
+ );
251
+ }
252
+ }
253
+ };
254
+ function pe(e, a, t, n, i, s) {
255
+ const d = y("ValueSwitch"), u = y("Label"), b = y("FilterIcon"), w = y("SearchInput"), v = y("Checkboxes"), p = y("Twinlist");
256
+ return f(), k("div", {
257
+ class: W(["multi-mode-twinlist", { disabled: t.disabled }])
258
+ }, [
259
+ t.showMode ? (f(), I(u, {
260
+ key: 0,
261
+ active: t.withModeLabel,
262
+ text: t.modeLabel,
263
+ class: "label"
264
+ }, {
265
+ default: V(({ labelForId: r }) => [
266
+ g(d, {
267
+ id: r,
268
+ ref: "mode",
269
+ compact: t.compact,
270
+ "model-value": t.mode,
271
+ disabled: t.disabled,
272
+ "possible-values": s.possibleModes,
273
+ "onUpdate:modelValue": s.onModeChange
274
+ }, null, 8, ["id", "compact", "model-value", "disabled", "possible-values", "onUpdate:modelValue"])
275
+ ]),
276
+ _: 1
277
+ }, 8, ["active", "text"])) : M("", !0),
278
+ t.mode === "regex" || t.mode === "wildcard" ? (f(), I(u, {
279
+ key: 1,
280
+ active: t.withPatternLabel,
281
+ text: t.patternLabel,
282
+ class: "label"
283
+ }, {
284
+ default: V(({ labelForId: r }) => [
285
+ g(w, {
286
+ id: r,
287
+ ref: "search",
288
+ "model-value": t.pattern,
289
+ label: t.patternLabel,
290
+ "initial-case-sensitive-search": t.caseSensitivePattern,
291
+ "initial-inverse-search": t.inversePattern,
292
+ placeholder: "Pattern",
293
+ "show-case-sensitive-search-button": "",
294
+ "show-inverse-search-button": "",
295
+ disabled: t.disabled,
296
+ tooltips: {
297
+ inverseSearch: "Move matching to other side"
298
+ },
299
+ compact: t.compact,
300
+ "onUpdate:modelValue": s.onPatternInput,
301
+ onToggleCaseSensitiveSearch: s.onToggleCaseSensitivePattern,
302
+ onToggleInverseSearch: s.onToggleInversePattern
303
+ }, {
304
+ icon: V(() => [
305
+ g(b)
306
+ ]),
307
+ _: 2
308
+ }, 1032, ["id", "model-value", "label", "initial-case-sensitive-search", "initial-inverse-search", "disabled", "compact", "onUpdate:modelValue", "onToggleCaseSensitiveSearch", "onToggleInverseSearch"])
309
+ ]),
310
+ _: 1
311
+ }, 8, ["active", "text"])) : M("", !0),
312
+ t.mode === "type" && s.possibleTypes.length > 0 ? (f(), I(u, {
313
+ key: 2,
314
+ active: t.withTypesLabel,
315
+ text: t.typesLabel,
316
+ class: "label"
317
+ }, {
318
+ default: V(() => [
319
+ g(v, {
320
+ "model-value": t.selectedTypes,
321
+ "possible-values": s.possibleTypes,
322
+ disabled: t.disabled,
323
+ "onUpdate:modelValue": s.onTypeInput
324
+ }, null, 8, ["model-value", "possible-values", "disabled", "onUpdate:modelValue"])
325
+ ]),
326
+ _: 1
327
+ }, 8, ["active", "text"])) : M("", !0),
328
+ g(p, B(e.$attrs, {
329
+ ref: "twinlist",
330
+ disabled: s.selectionDisabled,
331
+ "show-search": t.mode === "manual" && t.showSearch,
332
+ "model-value": s.twinlistModelValue,
333
+ "possible-values": t.possibleValues,
334
+ compact: t.compact,
335
+ "onUpdate:modelValue": s.onManualInput
336
+ }), null, 16, ["disabled", "show-search", "model-value", "possible-values", "compact", "onUpdate:modelValue"])
337
+ ], 2);
338
+ }
339
+ const me = /* @__PURE__ */ z(ce, [["render", pe], ["__scopeId", "data-v-e5a6658e"]]), he = ({
340
+ knownValuesSide: e,
341
+ possibleValueIds: a,
342
+ unknownValuesSide: t
343
+ }) => {
344
+ const n = new Set(e.previous), i = new Set(a), s = (d) => x(d, i);
345
+ t.setNext([
346
+ ...s(t.previous),
347
+ ...x(a, n)
348
+ ]), e.setNext([
349
+ ...s(e.previous),
350
+ ...K(a, n)
351
+ ]);
352
+ }, ve = ({
353
+ data: e,
354
+ possibleValueIds: a
355
+ }) => {
356
+ const t = L({
357
+ selected: null,
358
+ deselected: null
359
+ }), n = L(null), i = (d) => {
360
+ n.value = d;
361
+ }, s = () => {
362
+ if (!n.value || !a.value)
363
+ return;
364
+ let d, u;
365
+ const { manuallyDeselected: b, manuallySelected: w, includeUnknownColumns: v } = n.value, p = {
366
+ previous: b,
367
+ setNext: (S) => {
368
+ d = S;
369
+ }
370
+ }, r = {
371
+ previous: w,
372
+ setNext: (S) => {
373
+ u = S;
374
+ }
375
+ }, T = v ? p : r, C = v ? r : p;
376
+ he({
377
+ possibleValueIds: a.value,
378
+ knownValuesSide: T,
379
+ unknownValuesSide: C
380
+ }), t.value = {
381
+ selected: u,
382
+ deselected: d
383
+ };
384
+ };
385
+ return _(
386
+ () => e.value.manualFilter,
387
+ (d) => {
388
+ Object.is(n.value, d) ? t.value = {
389
+ selected: d.manuallySelected,
390
+ deselected: d.manuallyDeselected
391
+ } : (n.value = d, s());
392
+ },
393
+ { immediate: !0 }
394
+ ), _(() => a.value, s, {
395
+ immediate: !0
396
+ }), { selectedAndDeselected: t, setCurrentManualFilter: i };
397
+ }, ye = /* @__PURE__ */ G({
398
+ __name: "MultimodeTwinlistControl",
399
+ props: {
400
+ control: {},
401
+ handleChange: {},
402
+ changeValue: {},
403
+ disabled: { type: Boolean },
404
+ isValid: { type: Boolean },
405
+ onRegisterValidation: {},
406
+ labelForId: {},
407
+ twinlistSize: { default: 10 },
408
+ twinlistLeftLabel: { default: "Excludes" },
409
+ showUnknownValues: { type: Boolean, default: !1 },
410
+ twinlistRightLabel: { default: "Includes" }
411
+ },
412
+ setup(e) {
413
+ const a = e;
414
+ let t;
415
+ const n = (l) => {
416
+ const o = Q(a.control.data, l);
417
+ a.changeValue(o), t == null || t(o.manualFilter);
418
+ }, i = (l) => {
419
+ n({ selected: l });
420
+ }, s = (l) => {
421
+ if (l !== null)
422
+ if ("includedValues" in l) {
423
+ const { includedValues: o, excludedValues: c, includeUnknownValues: m } = l;
424
+ if (!o || !c)
425
+ return;
426
+ n({
427
+ manualFilter: {
428
+ manuallySelected: o,
429
+ manuallyDeselected: c,
430
+ includeUnknownColumns: m
431
+ }
432
+ });
433
+ } else
434
+ n({ manualFilter: { manuallySelected: l } });
435
+ }, d = (l) => {
436
+ n({ patternFilter: { pattern: l } });
437
+ }, u = (l) => {
438
+ n({ mode: l.toUpperCase() });
439
+ }, b = (l, o) => {
440
+ n({ typeFilter: { selectedTypes: l, typeDisplays: o } });
441
+ }, w = (l) => {
442
+ n({ patternFilter: { isInverted: l } });
443
+ }, v = (l) => {
444
+ n({ patternFilter: { isCaseSensitive: l } });
445
+ }, { possibleValues: p } = X(
446
+ P(a, "control")
447
+ ), r = L([]), { selectedAndDeselected: T, setCurrentManualFilter: C } = ve({
448
+ data: h(() => a.control.data),
449
+ possibleValueIds: h(
450
+ () => {
451
+ var l;
452
+ return ((l = p.value) == null ? void 0 : l.map(({ id: o }) => o)) ?? null;
453
+ }
454
+ )
455
+ });
456
+ t = C;
457
+ const S = h(() => {
458
+ const { selected: l, deselected: o } = T.value;
459
+ return a.showUnknownValues ? {
460
+ includedValues: l,
461
+ excludedValues: o,
462
+ includeUnknownValues: a.control.data.manualFilter.includeUnknownColumns
463
+ } : l;
464
+ }), D = h(
465
+ () => T.value.selected === null ? J(te) : null
466
+ ), N = (l) => typeof l > "u" ? {} : l.reduce(
467
+ (o, { id: c, text: m }) => ({ ...o, [c]: m }),
468
+ {}
469
+ ), A = () => {
470
+ const l = a.control.data.typeFilter;
471
+ if (!l)
472
+ return [];
473
+ const o = l.selectedTypes, c = N(
474
+ l.typeDisplays
475
+ );
476
+ return o.map((m) => ({
477
+ id: m,
478
+ text: c[m] || m
479
+ }));
480
+ };
481
+ r.value = A();
482
+ const R = h(
483
+ () => {
484
+ var l, o;
485
+ return !!((o = (l = p.value) == null ? void 0 : l[0]) != null && o.hasOwnProperty("type"));
486
+ }
487
+ ), { excludedLabel: j, includedLabel: q } = Y(
488
+ P(a, "control")
489
+ ), E = h(() => j ?? a.twinlistLeftLabel), O = h(() => q ?? a.twinlistRightLabel);
490
+ return (l, o) => {
491
+ var c;
492
+ return f(), I(U(me), B(l.$attrs, {
493
+ id: l.labelForId,
494
+ disabled: l.disabled,
495
+ "with-types": R.value,
496
+ "selected-types": (c = l.control.data.typeFilter) == null ? void 0 : c.selectedTypes,
497
+ "additional-possible-types": r.value,
498
+ pattern: l.control.data.patternFilter.pattern,
499
+ mode: l.control.data.mode.toLowerCase(),
500
+ "case-sensitive-pattern": l.control.data.patternFilter.isCaseSensitive,
501
+ "empty-state-component": D.value,
502
+ "inverse-pattern": l.control.data.patternFilter.isInverted,
503
+ "manual-selection": S.value,
504
+ "include-unknown-values": l.control.data.manualFilter.includeUnknownColumns,
505
+ "mode-label": "Selection mode",
506
+ "possible-values": U(p) ?? [],
507
+ size: l.twinlistSize,
508
+ "left-label": E.value,
509
+ "right-label": O.value,
510
+ "is-valid": l.isValid,
511
+ compact: "",
512
+ "show-resize-handle": "",
513
+ "onUpdate:selected": i,
514
+ "onUpdate:manualSelection": s,
515
+ "onUpdate:pattern": d,
516
+ "onUpdate:mode": u,
517
+ "onUpdate:selectedTypes": b,
518
+ "onUpdate:inversePattern": w,
519
+ "onUpdate:caseSensitivePattern": v
520
+ }), null, 16, ["id", "disabled", "with-types", "selected-types", "additional-possible-types", "pattern", "mode", "case-sensitive-pattern", "empty-state-component", "inverse-pattern", "manual-selection", "include-unknown-values", "possible-values", "size", "left-label", "right-label", "is-valid"]);
521
+ };
522
+ }
523
+ }), Ce = /* @__PURE__ */ z(ye, [["__scopeId", "data-v-52473411"]]);
524
+ export {
525
+ Ce as default
526
+ };
@@ -1,6 +1,6 @@
1
1
  import { openBlock as h, createElementBlock as u, mergeProps as x, withModifiers as a, toDisplayString as y, toRef as p, watch as I, resolveComponent as v, normalizeClass as C, normalizeStyle as w, createElementVNode as f, withKeys as d, normalizeProps as V, guardReactiveProps as k, Fragment as H, renderList as B, createBlock as g, resolveDynamicComponent as D, createCommentVNode as b, createVNode as K } from "vue";
2
2
  import { b as N } from "./index-Bf0xDq3g.js";
3
- import { _ as S } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-dAvPWPee.js";
3
+ import { _ as S } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-BM4d25sK.js";
4
4
  const A = (e, t) => {
5
5
  let i, n = 0;
6
6
  return (...r) => {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as n, openBlock as o, createBlock as t, mergeProps as a } from "vue";
2
- import l from "./TwinlistControl-Dw5uSnOi.js";
2
+ import l from "./MultimodeTwinlistControl-CV2v4Y5n.js";
3
3
  const u = /* @__PURE__ */ n({
4
4
  __name: "NameFilter",
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o, openBlock as n, createBlock as t, mergeProps as r } from "vue";
2
- import { _ as a } from "./NumberControlBase.vue_vue_type_script_setup_true_lang-CPj9t6fL.js";
2
+ import { _ as a } from "./NumberControlBase.vue_vue_type_script_setup_true_lang-DLqtcp04.js";
3
3
  const s = /* @__PURE__ */ o({
4
4
  __name: "NumberControl",
5
5
  props: {
@@ -0,0 +1,53 @@
1
+ import { defineComponent as v, computed as r, openBlock as V, createBlock as E, unref as f } from "vue";
2
+ import { u as y } from "./useBuiltinValidations-8VwUv3RT.js";
3
+ import { N as b } from "./NumberInput-BLlTeOig.js";
4
+ const g = 1, h = 0.1, _ = /* @__PURE__ */ v({
5
+ __name: "NumberControlBase",
6
+ props: {
7
+ control: {},
8
+ handleChange: { type: Function },
9
+ changeValue: { type: Function },
10
+ disabled: { type: Boolean },
11
+ isValid: { type: Boolean },
12
+ onRegisterValidation: { type: Function },
13
+ labelForId: {},
14
+ type: {}
15
+ },
16
+ setup(d) {
17
+ const o = d, s = o.type === "integer" ? g : h, i = ({ min: e, isExclusive: n }) => (a) => isNaN(a) || (n ? a > e : a >= e), u = ({ max: e, isExclusive: n }) => (a) => isNaN(a) || (n ? a < e : a <= e), c = y(
18
+ {
19
+ min: i,
20
+ max: u
21
+ },
22
+ o
23
+ ), t = r(() => c.value.min), l = r(() => c.value.max), p = () => {
24
+ const e = o.control.data;
25
+ if (t.value && !i(t.value)(e)) {
26
+ const { min: n, isExclusive: a } = t.value;
27
+ a ? o.changeValue(n + s) : o.changeValue(n);
28
+ } else if (l.value && !u(l.value)(e)) {
29
+ const { max: n, isExclusive: a } = l.value;
30
+ a ? o.changeValue(n - s) : o.changeValue(n);
31
+ }
32
+ };
33
+ return (e, n) => {
34
+ var a, m;
35
+ return V(), E(f(b), {
36
+ id: e.labelForId,
37
+ class: "number-input",
38
+ disabled: e.disabled,
39
+ "model-value": e.control.data,
40
+ type: e.type,
41
+ min: (a = t.value) == null ? void 0 : a.min,
42
+ max: (m = l.value) == null ? void 0 : m.max,
43
+ "is-valid": e.isValid,
44
+ compact: "",
45
+ "onUpdate:modelValue": e.changeValue,
46
+ onFocusout: p
47
+ }, null, 8, ["id", "disabled", "model-value", "type", "min", "max", "is-valid", "onUpdate:modelValue"]);
48
+ };
49
+ }
50
+ });
51
+ export {
52
+ _
53
+ };
@@ -1,7 +1,7 @@
1
1
  import { A as p } from "./arrow-dropdown-DjUxzjqC.js";
2
2
  /* empty css */
3
3
  import { resolveComponent as h, openBlock as o, createElementBlock as d, normalizeClass as l, createElementVNode as n, createCommentVNode as f, withModifiers as r, createVNode as m } from "vue";
4
- import { _ as V } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-dAvPWPee.js";
4
+ import { _ as V } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-BM4d25sK.js";
5
5
  const c = 200, g = 50, v = 0.1, E = 1, I = {
6
6
  name: "NumberInput",
7
7
  components: {
@@ -0,0 +1,34 @@
1
+ import { defineComponent as i, computed as u, openBlock as c, createBlock as m, unref as s } from "vue";
2
+ import { o as b } from "./index-Blg1O3Fz.js";
3
+ import { D as f } from "./Dropdown-D8qp_4wZ.js";
4
+ const F = /* @__PURE__ */ i({
5
+ __name: "OneOfDropdown",
6
+ props: {
7
+ control: {},
8
+ handleChange: { type: Function },
9
+ changeValue: { type: Function },
10
+ disabled: { type: Boolean },
11
+ isValid: { type: Boolean },
12
+ onRegisterValidation: { type: Function },
13
+ labelForId: {}
14
+ },
15
+ setup(p) {
16
+ var l, n;
17
+ const e = p, r = ((n = (l = e.control.schema) == null ? void 0 : l.oneOf) == null ? void 0 : n.map(b)) ?? [], a = u({
18
+ get: () => e.control.data ?? "",
19
+ set: e.changeValue
20
+ });
21
+ return (o, t) => (c(), m(s(f), {
22
+ id: o.labelForId,
23
+ modelValue: a.value,
24
+ "onUpdate:modelValue": t[0] || (t[0] = (d) => a.value = d),
25
+ "possible-values": s(r),
26
+ ariaLabel: o.control.label,
27
+ disabled: o.disabled,
28
+ compact: ""
29
+ }, null, 8, ["id", "modelValue", "possible-values", "ariaLabel", "disabled"]));
30
+ }
31
+ });
32
+ export {
33
+ F as default
34
+ };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as e, openBlock as n, createBlock as t, mergeProps as a } from "vue";
2
- import { _ as r } from "./RadioControlBase.vue_vue_type_script_setup_true_lang-B_Dxf3fU.js";
3
- import { _ as p } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-dAvPWPee.js";
2
+ import { _ as r } from "./RadioControlBase.vue_vue_type_script_setup_true_lang-B6clHvd5.js";
3
+ import { _ as p } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-BM4d25sK.js";
4
4
  const i = /* @__PURE__ */ e({
5
5
  __name: "RadioControl",
6
6
  props: {
@@ -1,7 +1,7 @@
1
1
  import { resolveComponent as c, openBlock as m, createBlock as p, normalizeClass as b, defineComponent as f, computed as s, ref as v, onMounted as B, resolveDynamicComponent as y, createCommentVNode as V } from "vue";
2
- import { o as h } from "./index-hm05O8UX.js";
3
- import { B as _, V as g } from "./ValueSwitch-CGXtJV-B.js";
4
- import { _ as C } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-dAvPWPee.js";
2
+ import { o as h } from "./index-Blg1O3Fz.js";
3
+ import { B as _, V as g } from "./ValueSwitch-BI5z5U3F.js";
4
+ import { _ as C } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-BM4d25sK.js";
5
5
  const R = {
6
6
  name: "RadioButtons",
7
7
  components: {
@@ -2,16 +2,16 @@ import { defineComponent as be, ref as ee, computed as we, onMounted as An, watc
2
2
  import { a as Dd, c as Rd } from "./popper-CRR--9mA.js";
3
3
  import { i as Ua, g as qa } from "./navigator-DWmzYl-A.js";
4
4
  import { C as Ld } from "./close-h7XT0ja0.js";
5
- import { F as ao } from "./FunctionButton-BjutjqfY.js";
6
- import { _ as Xe, o as Qo } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-dAvPWPee.js";
7
- import { B as qi } from "./Button-B27OsWa6.js";
8
- import { I as Zo } from "./InputField-CWbS01h9.js";
5
+ import { F as ao } from "./FunctionButton-Bo0NcfGh.js";
6
+ import { _ as Xe, n as Qo } from "./SettingsSubPanel.vue_vue_type_style_index_0_scoped_67b92e23_lang-BM4d25sK.js";
7
+ import { B as qi } from "./Button-DnQZFkaO.js";
8
+ import { I as Zo } from "./InputField-DRLCzzDf.js";
9
9
  import { u as Ja, f as Ga, s as Ya, a as Xa } from "./floating-ui.vue-B-MrqKCT.js";
10
10
  import { o as Pd } from "./index-Bf0xDq3g.js";
11
11
  import { N as Bd } from "./arrow-next-Qa8PNb04.js";
12
12
  import { u as Fd } from "./useDropdownNavigation-D6ZenVxz.js";
13
- import { C as $d } from "./Checkbox-Bl3rvtXe.js";
14
- import { t as zd } from "./toString-DkbNkGT4.js";
13
+ import { C as $d } from "./Checkbox-DB9YeQa-.js";
14
+ import { t as zd } from "./toString-B9O7P854.js";
15
15
  const Hd = (n, e) => (n % e + e) % e;
16
16
  /*!
17
17
  * tabbable 6.2.0