@milaboratories/uikit 2.11.9 → 2.12.1

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.
@@ -1,12 +1,12 @@
1
1
  import e from "./PlElementListItem.js";
2
2
  import { moveElements as t } from "./utils.js";
3
- import { Fragment as n, computed as r, createBlock as i, createCommentVNode as ee, createElementBlock as a, createElementVNode as te, createSlots as o, defineComponent as s, mergeModels as c, normalizeClass as l, openBlock as u, renderList as d, renderSlot as f, shallowRef as p, unref as m, useModel as h, useSlots as ne, watch as g, withCtx as _ } from "vue";
4
- import { isFunction as v, shallowHash as y } from "@milaboratories/helpers";
5
- import { useSortable as re } from "@vueuse/integrations/useSortable";
3
+ import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as ee, createSlots as s, defineComponent as c, mergeModels as l, normalizeClass as u, openBlock as d, renderList as f, renderSlot as p, shallowRef as m, unref as h, useModel as te, useSlots as ne, watch as re, withCtx as g } from "vue";
4
+ import { isFunction as _, shallowHash as v } from "@milaboratories/helpers";
5
+ import { useSortable as ie } from "@vueuse/integrations/useSortable";
6
6
  //#region src/components/PlElementList/PlElementList.vue?vue&type=script&setup=true&lang.ts
7
- var b = /* @__PURE__ */ s({
7
+ var y = /* @__PURE__ */ c({
8
8
  __name: "PlElementList",
9
- props: /* @__PURE__ */ c({
9
+ props: /* @__PURE__ */ l({
10
10
  getItemKey: {
11
11
  type: Function,
12
12
  default: (e) => JSON.stringify(e)
@@ -135,19 +135,19 @@ var b = /* @__PURE__ */ s({
135
135
  items: { required: !0 },
136
136
  itemsModifiers: {}
137
137
  }),
138
- emits: /* @__PURE__ */ c(["itemClick"], ["update:items"]),
139
- setup(s, { emit: c }) {
140
- let b = h(s, "items"), x = s, S = c, C = ne(), w = r(() => x.disableDragging !== !0), T = r(() => b.value.filter(V)), ie = r(() => T.value.length > 0), E = r(() => b.value.filter((e, t) => !V(e, t))), D = r(() => E.value.length > 0), O = p(), k = p(), A = p(), j = (e, t) => `${oe.value}-${x.getItemKey(e, t)}`, M = r(() => T.value.map(j)), ae = r(() => E.value.map(j)), oe = r((e) => {
141
- let t = b.value.map(x.getItemKey);
142
- if (O.value === void 0) return e ?? y(...t);
143
- if (t.length !== O.value.length) return y(...t);
144
- let n = O.value.map(x.getItemKey), r = new Set(n);
145
- for (let e = 0; e < t.length; e++) if (r.has(t[e]) && n[e] !== t[e]) return y(...t);
146
- return e ?? y(...t);
138
+ emits: /* @__PURE__ */ l(["itemClick"], ["update:items"]),
139
+ setup(c, { emit: l }) {
140
+ let y = te(c, "items"), b = c, x = l, S = ne(), C = r(() => b.disableDragging !== !0), w = r(() => y.value.map((e, t) => [t, e]).filter(([e, t]) => V(t, e))), ae = r(() => w.value.length > 0), T = r(() => y.value.map((e, t) => [t, e]).filter(([e, t]) => !V(t, e))), E = r(() => T.value.length > 0), D = m(), O = m(), k = m(), A = (e) => `${oe.value}-${b.getItemKey(e[1], e[0])}`, j = r(() => w.value.map(A)), M = r(() => T.value.map(A)), oe = r((e) => {
141
+ let t = y.value.map(b.getItemKey);
142
+ if (D.value === void 0) return e ?? v(...t);
143
+ if (t.length !== D.value.length) return v(...t);
144
+ let n = D.value.map(b.getItemKey), r = new Set(n);
145
+ for (let e = 0; e < t.length; e++) if (r.has(t[e]) && n[e] !== t[e]) return v(...t);
146
+ return e ?? v(...t);
147
147
  });
148
- N(ie, k, T, () => 0), N(D, A, E, () => T.value.length);
148
+ N(ae, O, w, () => 0), N(E, k, T, () => w.value.length);
149
149
  function N(e, t, n, r) {
150
- let i = re(t, n, {
150
+ let i = ie(t, n, {
151
151
  handle: "[data-draggable=\"true\"]",
152
152
  animation: 150,
153
153
  forceFallback: !0,
@@ -156,119 +156,119 @@ var b = /* @__PURE__ */ s({
156
156
  forceAutoScrollFallback: !0,
157
157
  onUpdate: (e) => {
158
158
  if (e.oldIndex == null || e.newIndex == null) throw Error("Sortable event has no index");
159
- x.onDragEnd?.(e.oldIndex, e.newIndex) !== !1 && P(r() + e.oldIndex, r() + e.newIndex, !0);
159
+ b.onDragEnd?.(e.oldIndex, e.newIndex) !== !1 && P(r() + e.oldIndex, r() + e.newIndex, !0);
160
160
  }
161
161
  });
162
- return g([
162
+ return re([
163
163
  t,
164
- () => x.disableDragging,
164
+ () => b.disableDragging,
165
165
  e
166
166
  ], ([e, t, n]) => {
167
167
  !e || t || !n ? i.stop() : i.start();
168
168
  }, { immediate: !0 }), i;
169
169
  }
170
170
  function P(e, n, r) {
171
- e !== n && (r && (O.value = t(b.value.slice(), e, n)), x.onSort?.(e, n) !== !1 && t(b.value, e, n));
171
+ e !== n && (r && (D.value = t(y.value.slice(), e, n)), b.onSort?.(e, n) !== !1 && (y.value = t(y.value, e, n)));
172
172
  }
173
173
  function F(e, t) {
174
- return x.isActive?.(e, t) ?? !1;
174
+ return b.isActive?.(e, t) ?? !1;
175
175
  }
176
176
  function I(e, t) {
177
- return x.disableDragging === !0 ? !1 : x.isDraggable?.(e, t) ?? !0;
177
+ return b.disableDragging === !0 ? !1 : b.isDraggable?.(e, t) ?? !0;
178
178
  }
179
179
  function L(e, t) {
180
- return x.disableRemoving === !0 ? !1 : x.isRemovable?.(e, t) ?? !0;
180
+ return b.disableRemoving === !0 ? !1 : b.isRemovable?.(e, t) ?? !0;
181
181
  }
182
182
  function R(e, t) {
183
- return x.disableToggling === !0 ? !1 : x.isToggable?.(e, t) ?? (v(x.isToggled) || v(x.onToggle));
183
+ return b.disableToggling === !0 ? !1 : b.isToggable?.(e, t) ?? (_(b.isToggled) || _(b.onToggle));
184
184
  }
185
185
  function z(e, t) {
186
- return x.isToggled?.(e, t) ?? !1;
186
+ return b.isToggled?.(e, t) ?? !1;
187
187
  }
188
188
  function B(e, t) {
189
- return x.disablePinning === !0 ? !1 : x.isPinnable?.(e, t) ?? (v(x.isPinned) || v(x.onPin));
189
+ return b.disablePinning === !0 ? !1 : b.isPinnable?.(e, t) ?? (_(b.isPinned) || _(b.onPin));
190
190
  }
191
191
  function V(e, t) {
192
- return x.isPinned?.(e, t) ?? !1;
192
+ return b.isPinned?.(e, t) ?? !1;
193
193
  }
194
194
  function H(e, t) {
195
- return x.disableExpanding === !0 ? !1 : x.isExpandable?.(e, t) ?? (v(x.isExpanded) || v(x.onExpand));
195
+ return b.disableExpanding === !0 ? !1 : b.isExpandable?.(e, t) ?? (_(b.isExpanded) || _(b.onExpand));
196
196
  }
197
197
  function U(e, t) {
198
- return x.isExpanded?.(e, t) ?? !1;
198
+ return b.isExpanded?.(e, t) ?? !1;
199
199
  }
200
200
  function W(e, t) {
201
- x.onExpand?.(e, t);
201
+ b.onExpand?.(e, t);
202
202
  }
203
203
  function G(e, t) {
204
- x.onToggle?.(e, t);
204
+ b.onToggle?.(e, t);
205
205
  }
206
206
  function K(e, t) {
207
207
  if (t === -1) throw Error("Pinnable item not found");
208
- let n = T.value.includes(e);
209
- x.onPin?.(e, t) !== !1 && P(t, T.value.length + (n ? 0 : -1), !1);
208
+ let n = w.value.findIndex(([e]) => e === t) !== -1;
209
+ b.onPin?.(e, t) !== !1 && P(t, w.value.length + (n ? 0 : -1), !1);
210
210
  }
211
211
  function q(e, t) {
212
- x.onRemove?.(e, t) !== !1 && b.value.splice(t, 1);
212
+ b.onRemove?.(e, t) !== !1 && (y.value = [...y.value.slice(0, t), ...y.value.slice(t + 1)]);
213
213
  }
214
214
  function J(e) {
215
215
  return (t, n) => typeof e == "function" ? e(t, n) : e ?? null;
216
216
  }
217
- let Y = J(x.itemClass), X = J(x.itemClassTitle), Z = J(x.itemClassContent), Q = J(x.itemClassBefore), $ = J(x.itemClassAfter);
218
- return (t, r) => (u(), a("div", { class: l(t.$style.root) }, [te("div", {
217
+ let Y = J(b.itemClass), X = J(b.itemClassTitle), Z = J(b.itemClassContent), Q = J(b.itemClassBefore), $ = J(b.itemClassAfter);
218
+ return (t, r) => (d(), o("div", { class: u(t.$style.root) }, [ee("div", {
219
219
  ref_key: "pinnedContainerRef",
220
- ref: k,
221
- class: l(t.$style.list)
222
- }, [(u(!0), a(n, null, d(T.value, (n, r) => (u(), i(e, {
223
- key: M.value[r],
224
- class: l([t.$style.item, m(Y)(n, r)]),
225
- titleClass: m(X)(n, r),
226
- contentClass: m(Z)(n, r),
227
- beforeClass: m(Q)(n, r),
228
- afterClass: m($)(n, r),
229
- index: r,
230
- item: n,
231
- showDragHandle: w.value,
232
- isActive: F(n, r),
233
- isDraggable: I(n, r),
234
- isRemovable: L(n, r),
235
- isToggable: R(n, r),
236
- isToggled: z(n, r),
237
- isPinnable: B(n, r),
220
+ ref: O,
221
+ class: u(t.$style.list)
222
+ }, [(d(!0), o(n, null, f(w.value, ([n, r], a) => (d(), i(e, {
223
+ key: j.value[a],
224
+ class: u([t.$style.item, h(Y)(r, n)]),
225
+ titleClass: h(X)(r, n),
226
+ contentClass: h(Z)(r, n),
227
+ beforeClass: h(Q)(r, n),
228
+ afterClass: h($)(r, n),
229
+ index: n,
230
+ item: r,
231
+ showDragHandle: C.value,
232
+ isActive: F(r, n),
233
+ isDraggable: I(r, n),
234
+ isRemovable: L(r, n),
235
+ isToggable: R(r, n),
236
+ isToggled: z(r, n),
237
+ isPinnable: B(r, n),
238
238
  isPinned: !0,
239
- isExpandable: H(n, r),
240
- isExpanded: U(n, r),
241
- onClick: (e) => S("itemClick", n),
239
+ isExpandable: H(r, n),
240
+ isExpanded: U(r, n),
241
+ onClick: (e) => x("itemClick", r),
242
242
  onRemove: q,
243
243
  onToggle: G,
244
244
  onPin: K,
245
245
  onExpand: W
246
- }, o({
247
- title: _(({ item: e, index: n }) => [f(t.$slots, "item-title", {
246
+ }, s({
247
+ title: g(({ item: e, index: n }) => [p(t.$slots, "item-title", {
248
248
  index: n,
249
249
  item: e
250
250
  })]),
251
251
  _: 2
252
252
  }, [
253
- C["item-before"] ? {
253
+ S["item-before"] ? {
254
254
  name: "before",
255
- fn: _(({ item: e, index: n }) => [f(t.$slots, "item-before", {
255
+ fn: g(({ item: e, index: n }) => [p(t.$slots, "item-before", {
256
256
  index: n,
257
257
  item: e
258
258
  })]),
259
259
  key: "0"
260
260
  } : void 0,
261
- C["item-content"] ? {
261
+ S["item-content"] ? {
262
262
  name: "content",
263
- fn: _(({ item: e, index: n }) => [f(t.$slots, "item-content", {
263
+ fn: g(({ item: e, index: n }) => [p(t.$slots, "item-content", {
264
264
  index: n,
265
265
  item: e
266
266
  })]),
267
267
  key: "1"
268
268
  } : void 0,
269
- C["item-after"] ? {
269
+ S["item-after"] ? {
270
270
  name: "after",
271
- fn: _(({ item: e, index: n }) => [f(t.$slots, "item-after", {
271
+ fn: g(({ item: e, index: n }) => [p(t.$slots, "item-after", {
272
272
  index: n,
273
273
  item: e
274
274
  })]),
@@ -292,51 +292,51 @@ var b = /* @__PURE__ */ s({
292
292
  "isExpandable",
293
293
  "isExpanded",
294
294
  "onClick"
295
- ]))), 128))], 2), D.value ? (u(), a("div", {
295
+ ]))), 128))], 2), E.value ? (d(), o("div", {
296
296
  key: 0,
297
297
  ref_key: "unpinnedContainerRef",
298
- ref: A,
299
- class: l(t.$style.list)
300
- }, [(u(!0), a(n, null, d(E.value, (n, r) => (u(), i(e, {
301
- key: ae.value[r],
302
- class: l([t.$style.item, m(Y)(n, r)]),
303
- titleClass: m(X)(n, r),
304
- contentClass: m(Z)(n, r),
305
- beforeClass: m(Q)(n, r),
306
- afterClass: m($)(n, r),
307
- index: r + (T.value?.length ?? 0),
308
- item: n,
309
- showDragHandle: w.value,
310
- isActive: F(n, r),
311
- isDraggable: I(n, r),
312
- isRemovable: L(n, r),
313
- isToggable: R(n, r),
314
- isToggled: z(n, r),
315
- isPinnable: B(n, r),
298
+ ref: k,
299
+ class: u(t.$style.list)
300
+ }, [(d(!0), o(n, null, f(T.value, ([n, r], a) => (d(), i(e, {
301
+ key: M.value[a],
302
+ class: u([t.$style.item, h(Y)(r, n)]),
303
+ titleClass: h(X)(r, n),
304
+ contentClass: h(Z)(r, n),
305
+ beforeClass: h(Q)(r, n),
306
+ afterClass: h($)(r, n),
307
+ index: n,
308
+ item: r,
309
+ showDragHandle: C.value,
310
+ isActive: F(r, n),
311
+ isDraggable: I(r, n),
312
+ isRemovable: L(r, n),
313
+ isToggable: R(r, n),
314
+ isToggled: z(r, n),
315
+ isPinnable: B(r, n),
316
316
  isPinned: !1,
317
- isExpandable: H(n, r),
318
- isExpanded: U(n, r),
319
- onClick: (e) => S("itemClick", n),
317
+ isExpandable: H(r, n),
318
+ isExpanded: U(r, n),
319
+ onClick: (e) => x("itemClick", r),
320
320
  onRemove: q,
321
321
  onToggle: G,
322
322
  onPin: K,
323
323
  onExpand: W
324
- }, o({
325
- title: _(({ item: e, index: n }) => [f(t.$slots, "item-title", {
324
+ }, s({
325
+ title: g(({ item: e, index: n }) => [p(t.$slots, "item-title", {
326
326
  index: n,
327
327
  item: e
328
328
  })]),
329
329
  _: 2
330
- }, [C["item-content"] ? {
330
+ }, [S["item-content"] ? {
331
331
  name: "content",
332
- fn: _(({ item: e, index: n }) => [f(t.$slots, "item-content", {
332
+ fn: g(({ item: e, index: n }) => [p(t.$slots, "item-content", {
333
333
  index: n,
334
334
  item: e
335
335
  })]),
336
336
  key: "0"
337
- } : void 0, C["item-after"] ? {
337
+ } : void 0, S["item-after"] ? {
338
338
  name: "after",
339
- fn: _(({ item: e, index: n }) => [f(t.$slots, "item-after", {
339
+ fn: g(({ item: e, index: n }) => [p(t.$slots, "item-after", {
340
340
  index: n,
341
341
  item: e
342
342
  })]),
@@ -359,10 +359,10 @@ var b = /* @__PURE__ */ s({
359
359
  "isExpandable",
360
360
  "isExpanded",
361
361
  "onClick"
362
- ]))), 128))], 2)) : ee("", !0)], 2));
362
+ ]))), 128))], 2)) : a("", !0)], 2));
363
363
  }
364
364
  });
365
365
  //#endregion
366
- export { b as default };
366
+ export { y as default };
367
367
 
368
368
  //# sourceMappingURL=PlElementList.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlElementList.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../../src/components/PlElementList/PlElementList.vue"],"sourcesContent":["<script\n generic=\"T extends unknown = unknown, K extends number | string = number | string\"\n lang=\"ts\"\n setup\n>\nimport { isFunction, shallowHash } from \"@milaboratories/helpers\";\nimport { useSortable } from \"@vueuse/integrations/useSortable\";\nimport { type SortableEvent } from \"sortablejs\";\nimport type { ShallowRef } from \"vue\";\nimport { computed, shallowRef, watch } from \"vue\";\nimport PlElementListItem from \"./PlElementListItem.vue\";\nimport { moveElements } from \"./utils.ts\";\n\nconst itemsRef = defineModel<T[]>(\"items\", { required: true });\n\nconst props = withDefaults(\n defineProps<{\n getItemKey?: (item: T, index: number) => K;\n\n itemClass?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassTitle?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassBefore?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassAfter?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassContent?: string | string[] | ((item: T, index: number) => string | string[]);\n isActive?: (item: T, index: number) => boolean;\n\n disableDragging?: boolean;\n isDraggable?: (item: T, index: number) => boolean;\n onDragEnd?: (oldIndex: number, newIndex: number) => void | boolean;\n onSort?: (oldIndex: number, newIndex: number) => void | boolean;\n\n disableRemoving?: boolean;\n isRemovable?: (item: T, index: number) => boolean;\n onRemove?: (item: T, index: number) => void | boolean;\n\n disableExpanding?: boolean;\n isExpandable?: (item: T, index: number) => boolean;\n isExpanded?: (item: T, index: number) => boolean;\n onExpand?: (item: T, index: number) => unknown;\n\n disableToggling?: boolean;\n isToggable?: (item: T, index: number) => boolean;\n isToggled?: (item: T, index: number) => boolean;\n onToggle?: (item: T, index: number) => unknown;\n\n disablePinning?: boolean;\n isPinnable?: (item: T, index: number) => boolean;\n isPinned?: (item: T, index: number) => boolean;\n onPin?: (item: T, index: number) => void | boolean;\n }>(),\n {\n getItemKey: (item: T) => JSON.stringify(item) as K,\n\n itemClass: undefined,\n itemClassTitle: undefined,\n itemClassContent: undefined,\n itemClassBefore: undefined,\n itemClassAfter: undefined,\n isActive: undefined,\n\n disableDragging: undefined,\n isDraggable: undefined,\n onDragEnd: undefined,\n onSort: undefined,\n\n disableRemoving: undefined,\n isRemovable: undefined,\n onRemove: undefined,\n\n disableExpanding: undefined,\n isExpandable: undefined,\n isExpanded: undefined,\n onExpand: undefined,\n\n disableToggling: undefined,\n isToggable: undefined,\n isToggled: undefined,\n onToggle: undefined,\n\n disablePinning: undefined,\n isPinnable: undefined,\n isPinned: undefined,\n onPin: undefined,\n },\n);\n\nconst emits = defineEmits<{\n (e: \"itemClick\", item: T): void;\n}>();\n\nconst slots = defineSlots<{\n [\"item-title\"]: (props: { item: T; index: number }) => unknown;\n [\"item-content\"]?: (props: { item: T; index: number }) => unknown;\n [\"item-before\"]?: (props: { item: T; index: number }) => unknown;\n [\"item-after\"]?: (props: { item: T; index: number }) => unknown;\n}>();\n\nconst dndSortingEnabled = computed((): boolean => {\n return props.disableDragging !== true;\n});\n\nconst pinnedItemsRef = computed(() => itemsRef.value.filter(isPinnedItem));\nconst hasPinnedItems = computed(() => pinnedItemsRef.value.length > 0);\n\nconst unpinnedItemsRef = computed(() =>\n itemsRef.value.filter((item, index) => !isPinnedItem(item, index)),\n);\nconst hasUnpinnedItems = computed(() => unpinnedItemsRef.value.length > 0);\n\nconst domProjectionItemsRef = shallowRef<undefined | T[]>();\nconst pinnedContainerRef = shallowRef<HTMLElement>();\nconst unpinnedContainerRef = shallowRef<HTMLElement>();\n\n// version fix problem with sync between data and rendered values\nconst getKey = (item: T, index: number) => {\n return `${versionRef.value}-${props.getItemKey(item, index)}`;\n};\nconst pinnedKeysRef = computed(() => pinnedItemsRef.value.map(getKey));\nconst unpinnedKeysRef = computed(() => unpinnedItemsRef.value.map(getKey));\n\n// version fix problem with sync between data and rendered values when items have been changed\nconst versionRef = computed<number>((oldVersion) => {\n const currentKeys = itemsRef.value.map(props.getItemKey);\n\n if (domProjectionItemsRef.value === undefined) return oldVersion ?? shallowHash(...currentKeys);\n if (currentKeys.length !== domProjectionItemsRef.value.length) return shallowHash(...currentKeys);\n\n const domProjectionKeys = domProjectionItemsRef.value.map(props.getItemKey);\n const domProjectionKeysSet = new Set(domProjectionKeys);\n\n for (let i = 0; i < currentKeys.length; i++) {\n const hasInconsistentPosition =\n domProjectionKeysSet.has(currentKeys[i]) && domProjectionKeys[i] !== currentKeys[i];\n\n if (hasInconsistentPosition) {\n return shallowHash(...currentKeys);\n }\n }\n\n return oldVersion ?? shallowHash(...currentKeys);\n});\n\ncreateSortable(hasPinnedItems, pinnedContainerRef, pinnedItemsRef, () => 0);\ncreateSortable(\n hasUnpinnedItems,\n unpinnedContainerRef,\n unpinnedItemsRef,\n () => pinnedItemsRef.value.length,\n);\n\nfunction createSortable(\n toggler: ShallowRef<boolean>,\n elRef: ShallowRef<undefined | HTMLElement>,\n itemsRef: ShallowRef<T[]>,\n getOffset: () => number,\n) {\n const sortable = useSortable(elRef, itemsRef, {\n handle: `[data-draggable=\"true\"]`,\n animation: 150,\n forceFallback: true,\n fallbackOnBody: true,\n scrollSensitivity: 80,\n forceAutoScrollFallback: true,\n onUpdate: (evt: SortableEvent) => {\n if (evt.oldIndex == null || evt.newIndex == null) {\n throw new Error(\"Sortable event has no index\");\n }\n if (props.onDragEnd?.(evt.oldIndex, evt.newIndex) !== false) {\n moveItems(getOffset() + evt.oldIndex, getOffset() + evt.newIndex, true);\n }\n },\n });\n watch(\n [elRef, () => props.disableDragging, toggler],\n ([elRef, disabled, on]) => {\n if (!elRef || disabled || !on) {\n sortable.stop();\n } else {\n sortable.start();\n }\n },\n { immediate: true },\n );\n\n return sortable;\n}\n\nfunction moveItems(oldIndex: number, newIndex: number, afterUpdateDom: boolean) {\n if (oldIndex === newIndex) return;\n\n if (afterUpdateDom) {\n domProjectionItemsRef.value = moveElements(itemsRef.value.slice(), oldIndex, newIndex);\n }\n\n const preventDefault = props.onSort?.(oldIndex, newIndex) === false;\n\n if (!preventDefault) {\n moveElements(itemsRef.value, oldIndex, newIndex);\n }\n}\n\nfunction isActiveItem(item: T, index: number): boolean {\n return props.isActive?.(item, index) ?? false;\n}\n\nfunction isDraggableItem(item: T, index: number): boolean {\n if (props.disableDragging === true) return false;\n return props.isDraggable?.(item, index) ?? true;\n}\n\nfunction isRemovableItem(item: T, index: number): boolean {\n if (props.disableRemoving === true) return false;\n return props.isRemovable?.(item, index) ?? true;\n}\n\nfunction isToggableItem(item: T, index: number): boolean {\n if (props.disableToggling === true) return false;\n return (\n props.isToggable?.(item, index) ?? (isFunction(props.isToggled) || isFunction(props.onToggle))\n );\n}\n\nfunction isToggledItem(item: T, index: number): boolean {\n return props.isToggled?.(item, index) ?? false;\n}\n\nfunction isPinnableItem(item: T, index: number): boolean {\n if (props.disablePinning === true) return false;\n return props.isPinnable?.(item, index) ?? (isFunction(props.isPinned) || isFunction(props.onPin));\n}\n\nfunction isPinnedItem(item: T, index: number): boolean {\n return props.isPinned?.(item, index) ?? false;\n}\n\nfunction isExpandableItem(item: T, index: number): boolean {\n if (props.disableExpanding === true) return false;\n return (\n props.isExpandable?.(item, index) ??\n (isFunction(props.isExpanded) || isFunction(props.onExpand))\n );\n}\n\nfunction isExpandedItem(item: T, index: number): boolean {\n return props.isExpanded?.(item, index) ?? false;\n}\n\nfunction handleExpand(item: T, index: number) {\n props.onExpand?.(item, index);\n}\n\nfunction handleToggle(item: T, index: number) {\n props.onToggle?.(item, index);\n}\n\nfunction handlePin(item: T, index: number) {\n if (index === -1) {\n throw new Error(\"Pinnable item not found\");\n }\n\n const alreadyPinned = pinnedItemsRef.value.includes(item);\n\n if (props.onPin?.(item, index) === false) return;\n\n moveItems(index, pinnedItemsRef.value.length + (alreadyPinned ? 0 : -1), false);\n}\n\nfunction handleRemove(item: T, index: number) {\n if (props.onRemove?.(item, index) === false) return;\n itemsRef.value.splice(index, 1);\n}\n\nfunction getClassFunction(\n propsItemClass: string | string[] | ((item: T, index: number) => string | string[]) | undefined,\n): (item: T, index: number) => null | string | string[] {\n return (item: T, index: number): null | string | string[] => {\n if (typeof propsItemClass === \"function\") {\n return propsItemClass(item, index);\n }\n return propsItemClass ?? null;\n };\n}\nconst getItemClass = getClassFunction(props.itemClass);\nconst getItemClassTitle = getClassFunction(props.itemClassTitle);\nconst getItemClassContent = getClassFunction(props.itemClassContent);\nconst getItemClassBefore = getClassFunction(props.itemClassBefore);\nconst getItemClassAfter = getClassFunction(props.itemClassAfter);\n</script>\n\n<template>\n <div :class=\"$style.root\">\n <div ref=\"pinnedContainerRef\" :class=\"$style.list\">\n <PlElementListItem\n v-for=\"(pinnedItem, pinnedIndex) in pinnedItemsRef\"\n :key=\"pinnedKeysRef[pinnedIndex]\"\n :class=\"[$style.item, getItemClass(pinnedItem, pinnedIndex)]\"\n :titleClass=\"getItemClassTitle(pinnedItem, pinnedIndex)\"\n :contentClass=\"getItemClassContent(pinnedItem, pinnedIndex)\"\n :beforeClass=\"getItemClassBefore(pinnedItem, pinnedIndex)\"\n :afterClass=\"getItemClassAfter(pinnedItem, pinnedIndex)\"\n :index=\"pinnedIndex\"\n :item=\"pinnedItem\"\n :showDragHandle=\"dndSortingEnabled\"\n :isActive=\"isActiveItem(pinnedItem, pinnedIndex)\"\n :isDraggable=\"isDraggableItem(pinnedItem, pinnedIndex)\"\n :isRemovable=\"isRemovableItem(pinnedItem, pinnedIndex)\"\n :isToggable=\"isToggableItem(pinnedItem, pinnedIndex)\"\n :isToggled=\"isToggledItem(pinnedItem, pinnedIndex)\"\n :isPinnable=\"isPinnableItem(pinnedItem, pinnedIndex)\"\n :isPinned=\"true\"\n :isExpandable=\"isExpandableItem(pinnedItem, pinnedIndex)\"\n :isExpanded=\"isExpandedItem(pinnedItem, pinnedIndex)\"\n @click=\"emits('itemClick', pinnedItem)\"\n @remove=\"handleRemove\"\n @toggle=\"handleToggle\"\n @pin=\"handlePin\"\n @expand=\"handleExpand\"\n >\n <template v-if=\"slots['item-before']\" #before=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-before\" />\n </template>\n <template #title=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-title\" />\n </template>\n <template v-if=\"slots['item-content']\" #content=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-content\" />\n </template>\n <template v-if=\"slots['item-after']\" #after=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-after\" />\n </template>\n </PlElementListItem>\n </div>\n <div v-if=\"hasUnpinnedItems\" ref=\"unpinnedContainerRef\" :class=\"$style.list\">\n <PlElementListItem\n v-for=\"(unpinnedItem, unpinnedIndex) in unpinnedItemsRef\"\n :key=\"unpinnedKeysRef[unpinnedIndex]\"\n :class=\"[$style.item, getItemClass(unpinnedItem, unpinnedIndex)]\"\n :titleClass=\"getItemClassTitle(unpinnedItem, unpinnedIndex)\"\n :contentClass=\"getItemClassContent(unpinnedItem, unpinnedIndex)\"\n :beforeClass=\"getItemClassBefore(unpinnedItem, unpinnedIndex)\"\n :afterClass=\"getItemClassAfter(unpinnedItem, unpinnedIndex)\"\n :index=\"unpinnedIndex + (pinnedItemsRef?.length ?? 0)\"\n :item=\"unpinnedItem\"\n :showDragHandle=\"dndSortingEnabled\"\n :isActive=\"isActiveItem(unpinnedItem, unpinnedIndex)\"\n :isDraggable=\"isDraggableItem(unpinnedItem, unpinnedIndex)\"\n :isRemovable=\"isRemovableItem(unpinnedItem, unpinnedIndex)\"\n :isToggable=\"isToggableItem(unpinnedItem, unpinnedIndex)\"\n :isToggled=\"isToggledItem(unpinnedItem, unpinnedIndex)\"\n :isPinnable=\"isPinnableItem(unpinnedItem, unpinnedIndex)\"\n :isPinned=\"false\"\n :isExpandable=\"isExpandableItem(unpinnedItem, unpinnedIndex)\"\n :isExpanded=\"isExpandedItem(unpinnedItem, unpinnedIndex)\"\n @click=\"emits('itemClick', unpinnedItem)\"\n @remove=\"handleRemove\"\n @toggle=\"handleToggle\"\n @pin=\"handlePin\"\n @expand=\"handleExpand\"\n >\n <template #title=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-title\" />\n </template>\n <template v-if=\"slots['item-content']\" #content=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-content\" />\n </template>\n <template v-if=\"slots['item-after']\" #after=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-after\" />\n </template>\n </PlElementListItem>\n </div>\n </div>\n</template>\n\n<style module>\n.root,\n.list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 180px;\n}\n\n.item {\n width: 100%;\n}\n\n:global(.sortable-ghost) {\n visibility: hidden;\n}\n:global(.sortable-drag) {\n opacity: 1;\n}\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"PlElementList.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../../src/components/PlElementList/PlElementList.vue"],"sourcesContent":["<script\n generic=\"T extends unknown = unknown, K extends number | string = number | string\"\n lang=\"ts\"\n setup\n>\nimport { isFunction, shallowHash } from \"@milaboratories/helpers\";\nimport { useSortable } from \"@vueuse/integrations/useSortable\";\nimport { type SortableEvent } from \"sortablejs\";\nimport type { ShallowRef } from \"vue\";\nimport { computed, shallowRef, watch } from \"vue\";\nimport PlElementListItem from \"./PlElementListItem.vue\";\nimport { moveElements } from \"./utils.ts\";\n\ntype ItemEntry = [idx: number, item: T];\n\nconst itemsRef = defineModel<T[]>(\"items\", { required: true });\n\nconst props = withDefaults(\n defineProps<{\n getItemKey?: (item: T, index: number) => K;\n\n itemClass?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassTitle?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassBefore?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassAfter?: string | string[] | ((item: T, index: number) => string | string[]);\n itemClassContent?: string | string[] | ((item: T, index: number) => string | string[]);\n isActive?: (item: T, index: number) => boolean;\n\n disableDragging?: boolean;\n isDraggable?: (item: T, index: number) => boolean;\n onDragEnd?: (oldIndex: number, newIndex: number) => void | boolean;\n onSort?: (oldIndex: number, newIndex: number) => void | boolean;\n\n disableRemoving?: boolean;\n isRemovable?: (item: T, index: number) => boolean;\n onRemove?: (item: T, index: number) => void | boolean;\n\n disableExpanding?: boolean;\n isExpandable?: (item: T, index: number) => boolean;\n isExpanded?: (item: T, index: number) => boolean;\n onExpand?: (item: T, index: number) => unknown;\n\n disableToggling?: boolean;\n isToggable?: (item: T, index: number) => boolean;\n isToggled?: (item: T, index: number) => boolean;\n onToggle?: (item: T, index: number) => unknown;\n\n disablePinning?: boolean;\n isPinnable?: (item: T, index: number) => boolean;\n isPinned?: (item: T, index: number) => boolean;\n onPin?: (item: T, index: number) => void | boolean;\n }>(),\n {\n getItemKey: (item: T) => JSON.stringify(item) as K,\n\n itemClass: undefined,\n itemClassTitle: undefined,\n itemClassContent: undefined,\n itemClassBefore: undefined,\n itemClassAfter: undefined,\n isActive: undefined,\n\n disableDragging: undefined,\n isDraggable: undefined,\n onDragEnd: undefined,\n onSort: undefined,\n\n disableRemoving: undefined,\n isRemovable: undefined,\n onRemove: undefined,\n\n disableExpanding: undefined,\n isExpandable: undefined,\n isExpanded: undefined,\n onExpand: undefined,\n\n disableToggling: undefined,\n isToggable: undefined,\n isToggled: undefined,\n onToggle: undefined,\n\n disablePinning: undefined,\n isPinnable: undefined,\n isPinned: undefined,\n onPin: undefined,\n },\n);\n\nconst emits = defineEmits<{\n (e: \"itemClick\", item: T): void;\n}>();\n\nconst slots = defineSlots<{\n [\"item-title\"]: (props: { item: T; index: number }) => unknown;\n [\"item-content\"]?: (props: { item: T; index: number }) => unknown;\n [\"item-before\"]?: (props: { item: T; index: number }) => unknown;\n [\"item-after\"]?: (props: { item: T; index: number }) => unknown;\n}>();\n\nconst dndSortingEnabled = computed((): boolean => {\n return props.disableDragging !== true;\n});\n\nconst pinnedItemsRef = computed(() =>\n itemsRef.value\n .map((item, index) => [index, item] as ItemEntry)\n .filter(([index, item]) => isPinnedItem(item, index)),\n);\nconst hasPinnedItems = computed(() => pinnedItemsRef.value.length > 0);\n\nconst unpinnedItemsRef = computed(() =>\n itemsRef.value\n .map((item, index) => [index, item] as ItemEntry)\n .filter(([index, item]) => !isPinnedItem(item, index)),\n);\nconst hasUnpinnedItems = computed(() => unpinnedItemsRef.value.length > 0);\n\nconst domProjectionItemsRef = shallowRef<undefined | T[]>();\nconst pinnedContainerRef = shallowRef<HTMLElement>();\nconst unpinnedContainerRef = shallowRef<HTMLElement>();\n\n// version fix problem with sync between data and rendered values\nconst getKey = (entry: ItemEntry) => {\n return `${versionRef.value}-${props.getItemKey(entry[1], entry[0])}`;\n};\nconst pinnedKeysRef = computed(() => pinnedItemsRef.value.map(getKey));\nconst unpinnedKeysRef = computed(() => unpinnedItemsRef.value.map(getKey));\n\n// version fix problem with sync between data and rendered values when items have been changed\nconst versionRef = computed<number>((oldVersion) => {\n const currentKeys = itemsRef.value.map(props.getItemKey);\n\n if (domProjectionItemsRef.value === undefined) return oldVersion ?? shallowHash(...currentKeys);\n if (currentKeys.length !== domProjectionItemsRef.value.length) return shallowHash(...currentKeys);\n\n const domProjectionKeys = domProjectionItemsRef.value.map(props.getItemKey);\n const domProjectionKeysSet = new Set(domProjectionKeys);\n\n for (let i = 0; i < currentKeys.length; i++) {\n const hasInconsistentPosition =\n domProjectionKeysSet.has(currentKeys[i]) && domProjectionKeys[i] !== currentKeys[i];\n\n if (hasInconsistentPosition) {\n return shallowHash(...currentKeys);\n }\n }\n\n return oldVersion ?? shallowHash(...currentKeys);\n});\n\ncreateSortable(hasPinnedItems, pinnedContainerRef, pinnedItemsRef, () => 0);\ncreateSortable(\n hasUnpinnedItems,\n unpinnedContainerRef,\n unpinnedItemsRef,\n () => pinnedItemsRef.value.length,\n);\n\nfunction createSortable(\n toggler: ShallowRef<boolean>,\n elRef: ShallowRef<undefined | HTMLElement>,\n itemsRef: ShallowRef<ItemEntry[]>,\n getOffset: () => number,\n) {\n const sortable = useSortable(elRef, itemsRef, {\n handle: `[data-draggable=\"true\"]`,\n animation: 150,\n forceFallback: true,\n fallbackOnBody: true,\n scrollSensitivity: 80,\n forceAutoScrollFallback: true,\n onUpdate: (evt: SortableEvent) => {\n if (evt.oldIndex == null || evt.newIndex == null) {\n throw new Error(\"Sortable event has no index\");\n }\n if (props.onDragEnd?.(evt.oldIndex, evt.newIndex) !== false) {\n moveItems(getOffset() + evt.oldIndex, getOffset() + evt.newIndex, true);\n }\n },\n });\n watch(\n [elRef, () => props.disableDragging, toggler],\n ([elRef, disabled, on]) => {\n if (!elRef || disabled || !on) {\n sortable.stop();\n } else {\n sortable.start();\n }\n },\n { immediate: true },\n );\n\n return sortable;\n}\n\nfunction moveItems(oldIndex: number, newIndex: number, afterUpdateDom: boolean) {\n if (oldIndex === newIndex) return;\n\n if (afterUpdateDom) {\n domProjectionItemsRef.value = moveElements(itemsRef.value.slice(), oldIndex, newIndex);\n }\n\n const preventDefault = props.onSort?.(oldIndex, newIndex) === false;\n\n if (!preventDefault) {\n itemsRef.value = moveElements(itemsRef.value, oldIndex, newIndex);\n }\n}\n\nfunction isActiveItem(item: T, index: number): boolean {\n return props.isActive?.(item, index) ?? false;\n}\n\nfunction isDraggableItem(item: T, index: number): boolean {\n if (props.disableDragging === true) return false;\n return props.isDraggable?.(item, index) ?? true;\n}\n\nfunction isRemovableItem(item: T, index: number): boolean {\n if (props.disableRemoving === true) return false;\n return props.isRemovable?.(item, index) ?? true;\n}\n\nfunction isToggableItem(item: T, index: number): boolean {\n if (props.disableToggling === true) return false;\n return (\n props.isToggable?.(item, index) ?? (isFunction(props.isToggled) || isFunction(props.onToggle))\n );\n}\n\nfunction isToggledItem(item: T, index: number): boolean {\n return props.isToggled?.(item, index) ?? false;\n}\n\nfunction isPinnableItem(item: T, index: number): boolean {\n if (props.disablePinning === true) return false;\n return props.isPinnable?.(item, index) ?? (isFunction(props.isPinned) || isFunction(props.onPin));\n}\n\nfunction isPinnedItem(item: T, index: number): boolean {\n return props.isPinned?.(item, index) ?? false;\n}\n\nfunction isExpandableItem(item: T, index: number): boolean {\n if (props.disableExpanding === true) return false;\n return (\n props.isExpandable?.(item, index) ??\n (isFunction(props.isExpanded) || isFunction(props.onExpand))\n );\n}\n\nfunction isExpandedItem(item: T, index: number): boolean {\n return props.isExpanded?.(item, index) ?? false;\n}\n\nfunction handleExpand(item: T, index: number) {\n props.onExpand?.(item, index);\n}\n\nfunction handleToggle(item: T, index: number) {\n props.onToggle?.(item, index);\n}\n\nfunction handlePin(item: T, index: number) {\n if (index === -1) {\n throw new Error(\"Pinnable item not found\");\n }\n\n const alreadyPinned =\n pinnedItemsRef.value.findIndex(([originalIndex]) => originalIndex === index) !== -1;\n\n if (props.onPin?.(item, index) === false) return;\n\n moveItems(index, pinnedItemsRef.value.length + (alreadyPinned ? 0 : -1), false);\n}\n\nfunction handleRemove(item: T, index: number) {\n if (props.onRemove?.(item, index) === false) return;\n itemsRef.value = [...itemsRef.value.slice(0, index), ...itemsRef.value.slice(index + 1)];\n}\n\nfunction getClassFunction(\n propsItemClass: string | string[] | ((item: T, index: number) => string | string[]) | undefined,\n): (item: T, index: number) => null | string | string[] {\n return (item: T, index: number): null | string | string[] => {\n if (typeof propsItemClass === \"function\") {\n return propsItemClass(item, index);\n }\n return propsItemClass ?? null;\n };\n}\nconst getItemClass = getClassFunction(props.itemClass);\nconst getItemClassTitle = getClassFunction(props.itemClassTitle);\nconst getItemClassContent = getClassFunction(props.itemClassContent);\nconst getItemClassBefore = getClassFunction(props.itemClassBefore);\nconst getItemClassAfter = getClassFunction(props.itemClassAfter);\n</script>\n\n<template>\n <div :class=\"$style.root\">\n <div ref=\"pinnedContainerRef\" :class=\"$style.list\">\n <PlElementListItem\n v-for=\"([originalIndex, item], pinnedIndex) in pinnedItemsRef\"\n :key=\"pinnedKeysRef[pinnedIndex]\"\n :class=\"[$style.item, getItemClass(item, originalIndex)]\"\n :titleClass=\"getItemClassTitle(item, originalIndex)\"\n :contentClass=\"getItemClassContent(item, originalIndex)\"\n :beforeClass=\"getItemClassBefore(item, originalIndex)\"\n :afterClass=\"getItemClassAfter(item, originalIndex)\"\n :index=\"originalIndex\"\n :item=\"item\"\n :showDragHandle=\"dndSortingEnabled\"\n :isActive=\"isActiveItem(item, originalIndex)\"\n :isDraggable=\"isDraggableItem(item, originalIndex)\"\n :isRemovable=\"isRemovableItem(item, originalIndex)\"\n :isToggable=\"isToggableItem(item, originalIndex)\"\n :isToggled=\"isToggledItem(item, originalIndex)\"\n :isPinnable=\"isPinnableItem(item, originalIndex)\"\n :isPinned=\"true\"\n :isExpandable=\"isExpandableItem(item, originalIndex)\"\n :isExpanded=\"isExpandedItem(item, originalIndex)\"\n @click=\"emits('itemClick', item)\"\n @remove=\"handleRemove\"\n @toggle=\"handleToggle\"\n @pin=\"handlePin\"\n @expand=\"handleExpand\"\n >\n <template v-if=\"slots['item-before']\" #before=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-before\" />\n </template>\n <template #title=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-title\" />\n </template>\n <template v-if=\"slots['item-content']\" #content=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-content\" />\n </template>\n <template v-if=\"slots['item-after']\" #after=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-after\" />\n </template>\n </PlElementListItem>\n </div>\n <div v-if=\"hasUnpinnedItems\" ref=\"unpinnedContainerRef\" :class=\"$style.list\">\n <PlElementListItem\n v-for=\"([originalIndex, item], unpinnedIndex) in unpinnedItemsRef\"\n :key=\"unpinnedKeysRef[unpinnedIndex]\"\n :class=\"[$style.item, getItemClass(item, originalIndex)]\"\n :titleClass=\"getItemClassTitle(item, originalIndex)\"\n :contentClass=\"getItemClassContent(item, originalIndex)\"\n :beforeClass=\"getItemClassBefore(item, originalIndex)\"\n :afterClass=\"getItemClassAfter(item, originalIndex)\"\n :index=\"originalIndex\"\n :item=\"item\"\n :showDragHandle=\"dndSortingEnabled\"\n :isActive=\"isActiveItem(item, originalIndex)\"\n :isDraggable=\"isDraggableItem(item, originalIndex)\"\n :isRemovable=\"isRemovableItem(item, originalIndex)\"\n :isToggable=\"isToggableItem(item, originalIndex)\"\n :isToggled=\"isToggledItem(item, originalIndex)\"\n :isPinnable=\"isPinnableItem(item, originalIndex)\"\n :isPinned=\"false\"\n :isExpandable=\"isExpandableItem(item, originalIndex)\"\n :isExpanded=\"isExpandedItem(item, originalIndex)\"\n @click=\"emits('itemClick', item)\"\n @remove=\"handleRemove\"\n @toggle=\"handleToggle\"\n @pin=\"handlePin\"\n @expand=\"handleExpand\"\n >\n <template #title=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-title\" />\n </template>\n <template v-if=\"slots['item-content']\" #content=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-content\" />\n </template>\n <template v-if=\"slots['item-after']\" #after=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-after\" />\n </template>\n </PlElementListItem>\n </div>\n </div>\n</template>\n\n<style module>\n.root,\n.list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 180px;\n}\n\n.item {\n width: 100%;\n}\n\n:global(.sortable-ghost) {\n visibility: hidden;\n}\n:global(.sortable-drag) {\n opacity: 1;\n}\n</style>\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const moveElements: <T>(array: T[], from: number, to: number) => T[];
1
+ export declare const moveElements: <T>(array: readonly T[], from: number, to: number) => T[];
2
2
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,MAAM,EAAE,IAAI,MAAM,KAAG,CAAC,EAWvE,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,EAAE,MAAM,MAAM,EAAE,IAAI,MAAM,KAAG,CAAC,EAYhF,CAAC"}
@@ -1,10 +1,11 @@
1
1
  //#region src/components/PlElementList/utils.ts
2
2
  var e = (e, t, n) => {
3
- if (n >= 0 && n < e.length) {
4
- let r = e.splice(t, 1)[0];
5
- e.splice(n, 0, r);
6
- } else console.warn(`Invalid move operation: from ${t} to ${n} in array of length ${e.length}`);
7
- return e;
3
+ let r = [...e];
4
+ if (n >= 0 && n < r.length) {
5
+ let [e] = r.splice(t, 1);
6
+ r.splice(n, 0, e);
7
+ } else console.warn(`Invalid move operation: from ${t} to ${n} in array of length ${r.length}`);
8
+ return r;
8
9
  };
9
10
  //#endregion
10
11
  export { e as moveElements };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/PlElementList/utils.ts"],"sourcesContent":["export const moveElements = <T>(array: T[], from: number, to: number): T[] => {\n if (to >= 0 && to < array.length) {\n const element = array.splice(from, 1)[0];\n array.splice(to, 0, element);\n } else {\n console.warn(\n `Invalid move operation: from ${from} to ${to} in array of length ${array.length}`,\n );\n }\n\n return array;\n};\n"],"mappings":";AAAA,IAAa,KAAmB,GAAY,GAAc,MAAoB;AAC5E,KAAI,KAAM,KAAK,IAAK,EAAM,QAAQ;EAChC,IAAM,IAAU,EAAM,OAAO,GAAM,EAAE,CAAC;AACtC,IAAM,OAAO,GAAI,GAAG,EAAQ;OAE5B,SAAQ,KACN,gCAAgC,EAAK,MAAM,EAAG,sBAAsB,EAAM,SAC3E;AAGH,QAAO"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/PlElementList/utils.ts"],"sourcesContent":["export const moveElements = <T>(array: readonly T[], from: number, to: number): T[] => {\n const result = [...array];\n if (to >= 0 && to < result.length) {\n const [element] = result.splice(from, 1);\n result.splice(to, 0, element);\n } else {\n console.warn(\n `Invalid move operation: from ${from} to ${to} in array of length ${result.length}`,\n );\n }\n\n return result;\n};\n"],"mappings":";AAAA,IAAa,KAAmB,GAAqB,GAAc,MAAoB;CACrF,IAAM,IAAS,CAAC,GAAG,EAAM;AACzB,KAAI,KAAM,KAAK,IAAK,EAAO,QAAQ;EACjC,IAAM,CAAC,KAAW,EAAO,OAAO,GAAM,EAAE;AACxC,IAAO,OAAO,GAAI,GAAG,EAAQ;OAE7B,SAAQ,KACN,gCAAgC,EAAK,MAAM,EAAG,sBAAsB,EAAO,SAC5E;AAGH,QAAO"}
@@ -1,7 +1,7 @@
1
1
  //#region src/composition/filters/metadata.ts
2
2
  var e = {
3
3
  equal: {
4
- label: "Col = X (Equal)",
4
+ label: "Equals (=)",
5
5
  form: {
6
6
  column: {
7
7
  label: "Column",
@@ -22,7 +22,7 @@ var e = {
22
22
  supportedFor: r
23
23
  },
24
24
  notEqual: {
25
- label: "Col X (Not Equal)",
25
+ label: "Not Equal To ()",
26
26
  form: {
27
27
  column: {
28
28
  label: "Column",
@@ -43,7 +43,7 @@ var e = {
43
43
  supportedFor: r
44
44
  },
45
45
  lessThan: {
46
- label: "Col < X (Less Than)",
46
+ label: "Below (<)",
47
47
  form: {
48
48
  column: {
49
49
  label: "Column",
@@ -64,7 +64,7 @@ var e = {
64
64
  supportedFor: r
65
65
  },
66
66
  greaterThan: {
67
- label: "Col > X (Greater Than)",
67
+ label: "Above (>)",
68
68
  form: {
69
69
  column: {
70
70
  label: "Column",
@@ -85,7 +85,7 @@ var e = {
85
85
  supportedFor: r
86
86
  },
87
87
  lessThanOrEqual: {
88
- label: "Col X (Less Than or Equal)",
88
+ label: "At Most ()",
89
89
  form: {
90
90
  column: {
91
91
  label: "Column",
@@ -106,7 +106,7 @@ var e = {
106
106
  supportedFor: r
107
107
  },
108
108
  greaterThanOrEqual: {
109
- label: "Col X (Greater Than or Equal)",
109
+ label: "At Least ()",
110
110
  form: {
111
111
  column: {
112
112
  label: "Column",
@@ -294,7 +294,7 @@ var e = {
294
294
  supportedFor: r
295
295
  },
296
296
  patternContainSubsequence: {
297
- label: "Col ~ Seq (Contain Subsequence)",
297
+ label: "Contains (~)",
298
298
  form: {
299
299
  column: {
300
300
  label: "Column",
@@ -315,7 +315,7 @@ var e = {
315
315
  supportedFor: i
316
316
  },
317
317
  patternNotContainSubsequence: {
318
- label: "Col ≁ Seq (Not Contain Subsequence)",
318
+ label: "Does Not Contain (≁)",
319
319
  form: {
320
320
  column: {
321
321
  label: "Column",
@@ -336,7 +336,7 @@ var e = {
336
336
  supportedFor: i
337
337
  },
338
338
  patternEquals: {
339
- label: "Col = Seq (Equals)",
339
+ label: "Equals (=)",
340
340
  form: {
341
341
  column: {
342
342
  label: "Column",
@@ -357,7 +357,7 @@ var e = {
357
357
  supportedFor: i
358
358
  },
359
359
  patternNotEquals: {
360
- label: "Col Seq (Not Equal)",
360
+ label: "Not Equal To ()",
361
361
  form: {
362
362
  column: {
363
363
  label: "Column",
@@ -378,7 +378,7 @@ var e = {
378
378
  supportedFor: i
379
379
  },
380
380
  isNA: {
381
- label: "Is NA",
381
+ label: "Is Empty (NA)",
382
382
  form: {
383
383
  column: {
384
384
  label: "Column",
@@ -394,7 +394,7 @@ var e = {
394
394
  supportedFor: () => !0
395
395
  },
396
396
  isNotNA: {
397
- label: "Is Not NA",
397
+ label: "Is Not Empty (≠ NA)",
398
398
  form: {
399
399
  column: {
400
400
  label: "Column",
@@ -458,7 +458,7 @@ var e = {
458
458
  supportedFor: () => !1
459
459
  },
460
460
  patternMatchesRegularExpression: {
461
- label: "Col ~ X (Matches Regular Expression)",
461
+ label: "Matches Regex (.*)",
462
462
  form: {
463
463
  column: {
464
464
  label: "Column",
@@ -479,7 +479,7 @@ var e = {
479
479
  supportedFor: i
480
480
  },
481
481
  patternFuzzyContainSubsequence: {
482
- label: "Col ~ Seq (Fuzzy Contain Subsequence)",
482
+ label: "Contains Approximately (Fuzzy ~)",
483
483
  form: {
484
484
  column: {
485
485
  label: "Column",
@@ -500,7 +500,7 @@ var e = {
500
500
  supportedFor: i
501
501
  },
502
502
  inSet: {
503
- label: "Col Set (In Set)",
503
+ label: "In List ()",
504
504
  form: {
505
505
  column: {
506
506
  label: "Column",
@@ -521,7 +521,7 @@ var e = {
521
521
  supportedFor: i
522
522
  },
523
523
  notInSet: {
524
- label: "Col Set (Not In Set)",
524
+ label: "Not In List ()",
525
525
  form: {
526
526
  column: {
527
527
  label: "Column",