@ynput/ayon-frontend-shared 0.6.9 → 0.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 (65) hide show
  1. package/dist/ContextMenu.es.js +44 -27
  2. package/dist/DetailsPanel.es.js +225 -224
  3. package/dist/ListTable.es.js +420 -420
  4. package/dist/NewEntity.es.js +42 -41
  5. package/dist/ProjectTreeTable.es.js +3517 -3378
  6. package/dist/Slicer.es.js +301 -276
  7. package/dist/Views.es.js +366 -352
  8. package/dist/api.es.js +428 -413
  9. package/dist/chunks/Actions.es.js +18 -17
  10. package/dist/chunks/ColumnDropIndicator.es.js +19 -18
  11. package/dist/chunks/ColumnHeaderMenuUI.es.js +2 -2
  12. package/dist/chunks/ContextMenuContextInstance.es.js +4 -3
  13. package/dist/chunks/DeleteEntitiesConfirmDialog.es.js +53 -41
  14. package/dist/chunks/DetailsDialog.es.js +26 -24
  15. package/dist/chunks/EmptyPlaceholder.es.js +3 -3
  16. package/dist/chunks/EmptyPlaceholderFlex.styled.es.js +40 -0
  17. package/dist/chunks/EntityPath.es.js +60 -59
  18. package/dist/chunks/EntityPickerDialog.es.js +88 -83
  19. package/dist/chunks/EntityTooltip.es.js +15 -14
  20. package/dist/chunks/EntityUpdatesContext.es.js +11 -11
  21. package/dist/chunks/Feed.es.js +864 -859
  22. package/dist/chunks/FilterErrorActions.es.js +4 -3
  23. package/dist/chunks/Menu.es.js +633 -289
  24. package/dist/chunks/MenuContext.es.js +1 -1
  25. package/dist/chunks/MetaWidget.es.js +2457 -2196
  26. package/dist/chunks/PlayableIcon.es.js +77 -76
  27. package/dist/chunks/ProjectContext.es.js +6 -6
  28. package/dist/chunks/RepresentationsList.es.js +1 -1
  29. package/dist/chunks/ReviewablesSelector.es.js +625 -609
  30. package/dist/chunks/SimpleForm.es.js +1 -1
  31. package/dist/chunks/SimpleTable.es.js +386 -363
  32. package/dist/chunks/Slicer.es.js +954 -821
  33. package/dist/chunks/{DeleteEntitiesContextInstance.es.js → TableExportContextInstance.es.js} +190 -186
  34. package/dist/chunks/TableSettingsFallback.es.js +4 -3
  35. package/dist/chunks/ThumbnailSimple.es.js +100 -99
  36. package/dist/chunks/VideoPlayer.es.js +1 -1
  37. package/dist/chunks/Watchers.es.js +222 -221
  38. package/dist/chunks/getBundleMode.es.js +1 -1
  39. package/dist/chunks/getEntityTypeIcon.es.js +5 -4
  40. package/dist/chunks/getUris.es.js +3873 -3736
  41. package/dist/chunks/realtimeUpdatesUtils.es.js +91 -82
  42. package/dist/chunks/searchTerms.es.js +621 -499
  43. package/dist/chunks/sortLists.es.js +22 -0
  44. package/dist/chunks/useAttributeEnums.es.js +43 -43
  45. package/dist/chunks/useHierarchySelection.es.js +6 -5
  46. package/dist/chunks/useLoadModule.es.js +24 -23
  47. package/dist/chunks/viewUpdateHelper.es.js +16 -15
  48. package/dist/components.es.js +565 -531
  49. package/dist/context.es.js +529 -503
  50. package/dist/hooks.es.js +13 -13
  51. package/dist/index.es.js +4 -4
  52. package/dist/types/ContextMenu.d.ts +4 -1
  53. package/dist/types/Feed.d.ts +1 -1
  54. package/dist/types/ListTable.d.ts +1 -1
  55. package/dist/types/ProjectTreeTable.d.ts +123 -13
  56. package/dist/types/SimpleTable.d.ts +2 -1
  57. package/dist/types/Slicer.d.ts +26 -1
  58. package/dist/types/Views.d.ts +2 -0
  59. package/dist/types/api.d.ts +2359 -590
  60. package/dist/types/components.d.ts +30 -4
  61. package/dist/types/context.d.ts +94 -2
  62. package/dist/types/util.d.ts +54 -0
  63. package/dist/util.es.js +129 -119
  64. package/package.json +2 -2
  65. package/dist/chunks/MenuItem.es.js +0 -420
@@ -1,44 +1,45 @@
1
- import { C as $e, S as ze, A as Ce, a as Ke, T as je, D as Xe, b as Qe, c as Je, d as Oe, e as Se, f as qe, g as Ze, h as et, M as tt, F as at, i as st, j as ot, k as nt, l as rt } from "./chunks/ReviewablesSelector.es.js";
2
- import { m as cs, n as ds, o as ps, p as fs, q as ms, r as hs, s as gs, E as bs, t as ws, u as ys, v as vs, w as Es, x as ks, G as Cs, y as Os, L as Ss, P as Ts, z as Ds, R as Vs, B as Rs, H as Is, I as As, J as Fs, K as _s, N as Ps, O as xs, Q as Ns, U as Ls, V as Ms, W as Bs, X as Us, Y as Gs, Z as Ws } from "./chunks/ReviewablesSelector.es.js";
3
- import { jsxs as Y, jsx as k } from "react/jsx-runtime";
4
- import { useState as P, useRef as oe, useCallback as ee, useEffect as $, useMemo as me, useContext as lt } from "react";
1
+ import { C as $e, S as ze, A as ke, a as Ke, T as je, D as Xe, b as Je, c as Qe, d as Oe, e as Se, f as qe, g as Ze, h as et, M as tt, F as at, i as st, j as ot, k as nt, l as rt } from "./chunks/ReviewablesSelector.es.js";
2
+ import { m as cs, n as ds, o as ps, p as fs, q as ms, r as hs, s as gs, E as bs, t as ws, u as ys, v as vs, w as Es, x as Cs, G as ks, y as Os, L as Ss, P as Ts, z as Ds, R as Vs, B as Rs, H as Is, I as As, J as xs, K as _s, N as Fs, O as Ps, Q as Ns, U as Ms, V as Ls, W as Bs, X as Us, Y as Gs, Z as Ws } from "./chunks/ReviewablesSelector.es.js";
3
+ import { jsxs as H, jsx as C } from "react/jsx-runtime";
4
+ import { useState as F, useRef as oe, useCallback as ee, useEffect as z, useMemo as me, useContext as lt } from "react";
5
5
  import { matchSorter as Te } from "match-sorter";
6
- import { InputText as it, Icon as le, Section as ut, SEARCH_FILTER_ID as ct } from "@ynput/ayon-react-components";
6
+ import { InputText as it, Icon as ie, Section as ut, SEARCH_FILTER_ID as ct } from "@ynput/ayon-react-components";
7
7
  import ce from "clsx";
8
- import { B as Hs, a as $s, S as zs } from "./chunks/SimpleForm.es.js";
8
+ import { B as Ys, a as $s, S as zs } from "./chunks/SimpleForm.es.js";
9
9
  import { d as dt, P as pt } from "./chunks/MetaWidget.es.js";
10
- import { A as js, i as Xs, D as Qs, E as Js, L as qs, j as Zs, k as eo, l as to, m as ao } from "./chunks/MetaWidget.es.js";
10
+ import { A as js, i as Xs, D as Js, E as Qs, L as qs, j as Zs, k as eo, l as to, m as ao } from "./chunks/MetaWidget.es.js";
11
11
  import { createPortal as ft } from "react-dom";
12
- import { format as re, parseISO as Ne, isValid as Le } from "date-fns";
13
- import { B as De, e as Me, g as we, h as ye } from "./chunks/PlayableIcon.es.js";
14
- import { $ as oo, j as no, k as ro, l as lo, m as io, n as uo, o as co, q as po, A as fo, C as mo, a as ho, r as go, D as bo, s as wo, t as yo, F as vo, I as Eo, u as ko, v as Co, w as Oo, x as So, y as To, M as Do, z as Vo, E as Ro, N as Io, U as Ao, Y as Fo, G as _o, H as Po, J as xo, K as No, d as Lo, f as Mo, L as Bo, O as Uo, P as Go, Q as Wo, R as Yo, S as Ho, T as $o, V as zo, W as Ko, X as jo, p as Xo, Z as Qo } from "./chunks/PlayableIcon.es.js";
15
- import { d as Be, x as mt, a as ht, e as gt } from "./chunks/DeleteEntitiesContextInstance.es.js";
16
- import { f as qo, D as Zo, R as en } from "./chunks/DeleteEntitiesContextInstance.es.js";
12
+ import { format as le, parseISO as Ne, isValid as Me } from "date-fns";
13
+ import { B as De, e as Le, g as we, h as ye } from "./chunks/PlayableIcon.es.js";
14
+ import { $ as oo, j as no, k as ro, l as lo, m as io, n as uo, o as co, q as po, A as fo, C as mo, a as ho, r as go, D as bo, s as wo, t as yo, F as vo, I as Eo, u as Co, v as ko, w as Oo, x as So, y as To, M as Do, z as Vo, E as Ro, N as Io, U as Ao, Y as xo, G as _o, H as Fo, J as Po, K as No, d as Mo, f as Lo, L as Bo, O as Uo, P as Go, Q as Wo, R as Ho, S as Yo, T as $o, V as zo, W as Ko, X as jo, p as Xo, Z as Jo } from "./chunks/PlayableIcon.es.js";
15
+ import { d as Be, x as mt, a as ht, e as gt } from "./chunks/TableExportContextInstance.es.js";
16
+ import { f as qo, D as Zo, R as en } from "./chunks/TableExportContextInstance.es.js";
17
17
  import { p as bt, a as Ve } from "./chunks/DeleteEntitiesConfirmDialog.es.js";
18
18
  import { D as an, b as sn, c as on, d as nn, e as rn, s as ln } from "./chunks/DeleteEntitiesConfirmDialog.es.js";
19
19
  import { D as cn } from "./chunks/DetailsDialog.es.js";
20
20
  import { q as wt, r as yt, n as vt } from "./chunks/Watchers.es.js";
21
21
  import { s as pn, t as fn, v as mn, R as hn, c as gn, b as bn, w as wn, x as yn, W as vn, u as En } from "./chunks/Watchers.es.js";
22
- import { E as Cn, P as On } from "./chunks/EmptyPlaceholder.es.js";
23
- import { E as Tn, b as Dn, c as Vn, d as Rn, a as In, M as An, e as Fn } from "./chunks/Menu.es.js";
24
- import { I as Pn } from "./chunks/InfoMessage.es.js";
25
- import { J as Nn } from "./chunks/JsonViewer.es.js";
26
- import { E as Mn, a as Bn, R as Un, g as Gn } from "./chunks/EntityPath.es.js";
27
- import { E as Yn, a as Hn } from "./chunks/EntityTooltip.es.js";
28
- import { bk as Re, bq as Et, bs as kt } from "./chunks/searchTerms.es.js";
29
- import { bL as Ct, bQ as Ot, cv as St, aK as Tt, aP as Dt, bG as Vt, bn as Rt, dm as It, c8 as At, bO as Ft } from "./chunks/getUris.es.js";
22
+ import { E as kn, P as On } from "./chunks/EmptyPlaceholder.es.js";
23
+ import { E as Tn, a as Dn } from "./chunks/EmptyPlaceholderFlex.styled.es.js";
24
+ import { I as Rn } from "./chunks/InfoMessage.es.js";
25
+ import { J as An } from "./chunks/JsonViewer.es.js";
26
+ import { E as _n, a as Fn, R as Pn, g as Nn } from "./chunks/EntityPath.es.js";
27
+ import { E as Ln, a as Bn } from "./chunks/EntityTooltip.es.js";
28
+ import { bB as Re, bA as Et, bD as Ct } from "./chunks/searchTerms.es.js";
29
+ import { bO as kt, bT as Ot, cA as St, aN as Tt, aS as Dt, bJ as Vt, bq as Rt, ds as It, cd as At, bR as xt } from "./chunks/getUris.es.js";
30
30
  export * from "primereact/confirmdialog";
31
31
  import "@module-federation/enhanced/runtime";
32
32
  import { toast as he } from "react-toastify";
33
33
  import { isEmpty as _t, upperFirst as de } from "lodash";
34
34
  import "uuid";
35
- import { a as Pt } from "./chunks/afterStartup.es.js";
35
+ import { a as Ft } from "./chunks/afterStartup.es.js";
36
36
  import "semver";
37
37
  import "./chunks/ContextMenuContextInstance.es.js";
38
38
  import "react-redux";
39
- import { F as xt } from "./chunks/ColumnDropIndicator.styled.es.js";
40
- import { C as Kn, S as jn, b as Xn, u as Qn } from "./chunks/ColumnDropIndicator.styled.es.js";
41
- import { F as qn } from "./chunks/FilterErrorActions.es.js";
39
+ import { useSearchParams as Pt, useLocation as Nt, useNavigate as Mt, useParams as Lt } from "react-router-dom";
40
+ import { F as Bt } from "./chunks/ColumnDropIndicator.styled.es.js";
41
+ import { C as Wn, S as Hn, b as Yn, u as $n } from "./chunks/ColumnDropIndicator.styled.es.js";
42
+ import { F as Kn } from "./chunks/FilterErrorActions.es.js";
42
43
  import "lexical";
43
44
  import "@lexical/markdown";
44
45
  import "@lexical/code";
@@ -48,24 +49,24 @@ import "@lexical/selection";
48
49
  import "@lexical/utils";
49
50
  import "@lexical/react/LexicalBlockWithAlignableContents";
50
51
  import "@lexical/react/LexicalDecoratorBlockNode";
51
- import { m as er, r as tr, a as ar, u as sr } from "./chunks/useDateRangeFilter.es.js";
52
- import { T as nr } from "./chunks/TableSettingsFallback.es.js";
53
- import { a as Nt, b as Lt } from "./chunks/viewUpdateHelper.es.js";
54
- import { useSearchParams as Mt, useLocation as Bt, useNavigate as Ut, useParams as Gt } from "react-router-dom";
55
- import { g as Wt, c as Yt, b as Ht, d as $t } from "./chunks/Slicer.es.js";
56
- import { l as lr } from "./chunks/Slicer.es.js";
52
+ import { m as Xn, r as Jn, a as Qn, u as qn } from "./chunks/useDateRangeFilter.es.js";
53
+ import { T as er } from "./chunks/TableSettingsFallback.es.js";
54
+ import { a as Ut, b as Gt } from "./chunks/viewUpdateHelper.es.js";
55
+ import { h as Wt, c as Ht, b as Yt, e as $t } from "./chunks/Slicer.es.js";
56
+ import { p as ar, q as sr } from "./chunks/Slicer.es.js";
57
57
  import { Splitter as zt, SplitterPanel as Ie } from "primereact/splitter";
58
58
  import { g as se } from "./chunks/getEntityTypeIcon.es.js";
59
- import { g as K } from "./chunks/iconUtils.es.js";
60
- import { C as ur, T as cr } from "./chunks/ThumbnailSimple.es.js";
61
- import { S as pr } from "./chunks/SimpleFormDialog.es.js";
62
- import { T as mr } from "./chunks/EntityPickerDialog.es.js";
59
+ import { g as $ } from "./chunks/iconUtils.es.js";
60
+ import { C as nr, T as rr } from "./chunks/ThumbnailSimple.es.js";
61
+ import { S as ir } from "./chunks/SimpleFormDialog.es.js";
62
+ import { T as cr } from "./chunks/EntityPickerDialog.es.js";
63
63
  import { e as Kt } from "./chunks/extractVersionFromFilename.es.js";
64
- import { b as jt, c as Xt, v as Qt } from "./chunks/versionUploadHelpers.es.js";
65
- import { p as Jt } from "./chunks/parseFilename.es.js";
64
+ import { b as jt, c as Xt, v as Jt } from "./chunks/versionUploadHelpers.es.js";
65
+ import { p as Qt } from "./chunks/parseFilename.es.js";
66
66
  import { V as qt } from "./chunks/VersionUploadContextInstance.es.js";
67
- import { u as gr, a as br } from "./chunks/VersionUploadContextInstance.es.js";
68
- import { C as yr } from "./chunks/ColumnHeaderMenuUI.es.js";
67
+ import { u as pr, a as fr } from "./chunks/VersionUploadContextInstance.es.js";
68
+ import { b as hr, c as gr, a as br, M as wr, d as yr } from "./chunks/Menu.es.js";
69
+ import { C as Er } from "./chunks/ColumnHeaderMenuUI.es.js";
69
70
  const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
70
71
  shareOptions: t,
71
72
  existingAccess: e,
@@ -77,76 +78,76 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
77
78
  pt: h,
78
79
  ...l
79
80
  }) => {
80
- const [f, n] = P(""), [E, y] = P(!1), [T, m] = P(-1), A = oe(null), R = t.filter((D) => !e.includes(D.value)).toSorted((D, b) => {
81
- const v = (p) => p.value === "__everyone__" ? 0 : p.value.startsWith("__") ? 1 : p.value.startsWith("team:") ? 2 : p.value.startsWith("group:") ? 3 : p.value.startsWith("user:") ? 4 : 5, S = v(D), r = v(b);
81
+ const [m, n] = F(""), [E, v] = F(!1), [T, f] = F(-1), A = oe(null), R = t.filter((D) => !e.includes(D.value)).toSorted((D, b) => {
82
+ const w = (p) => p.value === "__everyone__" ? 0 : p.value.startsWith("__") ? 1 : p.value.startsWith("team:") ? 2 : p.value.startsWith("group:") ? 3 : p.value.startsWith("user:") ? 4 : 5, S = w(D), r = w(b);
82
83
  return S !== r ? S - r : D.label.localeCompare(b.label);
83
- }), g = (f ? Te(R, f, {
84
+ }), g = (m ? Te(R, m, {
84
85
  keys: ["name", "label", "value"],
85
86
  threshold: Te.rankings.CONTAINS
86
- }) : R).slice(0, Ae), V = Zt.test(f) && !t.some((D) => D.name === f) && a === "external", I = () => {
87
- y(!0), m(-1);
88
- }, L = () => {
87
+ }) : R).slice(0, Ae), V = Zt.test(m) && !t.some((D) => D.name === m) && a === "external", I = () => {
88
+ v(!0), f(-1);
89
+ }, M = () => {
89
90
  setTimeout(() => {
90
- y(!1), m(-1);
91
+ v(!1), f(-1);
91
92
  }, 200);
92
93
  }, N = (D) => {
93
- n(D.target.value), m(-1), y(!0);
94
- }, M = (D) => {
94
+ n(D.target.value), f(-1), v(!0);
95
+ }, L = (D) => {
95
96
  if (!E || g.length === 0) {
96
- D.key === "Enter" && g.length > 0 && (D.preventDefault(), H(g[0]));
97
+ D.key === "Enter" && g.length > 0 && (D.preventDefault(), Y(g[0]));
97
98
  return;
98
99
  }
99
100
  switch (D.key) {
100
101
  case "ArrowDown":
101
- D.preventDefault(), m((b) => b < g.length - 1 ? b + 1 : b);
102
+ D.preventDefault(), f((b) => b < g.length - 1 ? b + 1 : b);
102
103
  break;
103
104
  case "ArrowUp":
104
- D.preventDefault(), m((b) => b > 0 ? b - 1 : -1);
105
+ D.preventDefault(), f((b) => b > 0 ? b - 1 : -1);
105
106
  break;
106
107
  case "Enter":
107
- D.preventDefault(), T >= 0 && T < g.length ? H(g[T]) : g.length > 0 && H(g[0]);
108
+ D.preventDefault(), T >= 0 && T < g.length ? Y(g[T]) : g.length > 0 && Y(g[0]);
108
109
  break;
109
110
  case "Escape":
110
- y(!1), m(-1), A.current?.blur(), D.stopPropagation();
111
+ v(!1), f(-1), A.current?.blur(), D.stopPropagation();
111
112
  break;
112
113
  }
113
- }, H = (D) => {
114
- s(D, 10), n(""), y(!1), m(-1), A.current?.focus();
115
- }, z = () => {
114
+ }, Y = (D) => {
115
+ s(D, 10), n(""), v(!1), f(-1), A.current?.focus();
116
+ }, K = () => {
116
117
  s(
117
118
  {
118
- name: f,
119
- label: f,
120
- value: f,
119
+ name: m,
120
+ label: m,
121
+ value: m,
121
122
  shareType: "guest"
122
123
  },
123
124
  10
124
- ), n(""), y(!1), m(-1), A.current?.focus();
125
+ ), n(""), v(!1), f(-1), A.current?.focus();
125
126
  };
126
- return /* @__PURE__ */ Y($e, { ...l, children: [
127
- /* @__PURE__ */ k(
127
+ return /* @__PURE__ */ H($e, { ...l, children: [
128
+ /* @__PURE__ */ C(
128
129
  it,
129
130
  {
130
131
  ref: A,
131
- value: f,
132
+ value: m,
132
133
  placeholder: u,
133
134
  disabled: o,
134
135
  onFocus: I,
135
136
  onClick: I,
136
- onBlur: L,
137
+ onBlur: M,
137
138
  onChange: N,
138
- onKeyDown: M,
139
+ onKeyDown: L,
139
140
  style: { width: "100%" }
140
141
  }
141
142
  ),
142
- E && (g.length > 0 || V) && /* @__PURE__ */ Y(
143
+ E && (g.length > 0 || V) && /* @__PURE__ */ H(
143
144
  ze,
144
145
  {
145
146
  ...h?.list,
146
147
  className: ce(h?.list?.className, { "no-owner": !i }),
147
148
  children: [
148
- g.map((D, b) => /* @__PURE__ */ k(
149
- Ce,
149
+ g.map((D, b) => /* @__PURE__ */ C(
150
+ ke,
150
151
  {
151
152
  name: D.name,
152
153
  label: D.label,
@@ -156,46 +157,46 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
156
157
  "data-index": b,
157
158
  className: b === T ? "highlighted" : "",
158
159
  style: { cursor: "pointer" },
159
- onClick: () => H(D),
160
- onMouseEnter: () => m(b),
160
+ onClick: () => Y(D),
161
+ onMouseEnter: () => f(b),
161
162
  isCompact: !0,
162
163
  isSearchResult: !0
163
164
  },
164
165
  D.value
165
166
  )),
166
- V && /* @__PURE__ */ k(
167
- Ce,
167
+ V && /* @__PURE__ */ C(
168
+ ke,
168
169
  {
169
- name: f,
170
- label: f,
170
+ name: m,
171
+ label: m,
171
172
  shareType: "guest",
172
173
  isOwner: !1,
173
174
  isMe: !1,
174
175
  "data-index": g.length,
175
176
  className: g.length === T ? "highlighted" : "",
176
177
  style: { cursor: "pointer" },
177
- onClick: z,
178
- onMouseEnter: () => m(g.length),
178
+ onClick: K,
179
+ onMouseEnter: () => f(g.length),
179
180
  isCompact: !0,
180
181
  isSearchResult: !0
181
182
  }
182
183
  ),
183
- g.length === Ae && /* @__PURE__ */ k("li", { className: "tip", children: "More than 500 results, please refine your search..." })
184
+ g.length === Ae && /* @__PURE__ */ C("li", { className: "tip", children: "More than 500 results, please refine your search..." })
184
185
  ]
185
186
  }
186
187
  )
187
188
  ] });
188
- }, Qa = {
189
+ }, Ja = {
189
190
  0: "No access",
190
191
  10: "Viewer",
191
192
  20: "Editor",
192
193
  30: "Admin"
193
- }, Fe = (t) => {
194
+ }, xe = (t) => {
194
195
  if (!t) return "";
195
196
  try {
196
197
  const e = Ne(t);
197
- if (Le(e))
198
- return Me(e, "yyyy-MM-dd");
198
+ if (Me(e))
199
+ return Le(e, "yyyy-MM-dd");
199
200
  } catch {
200
201
  return "";
201
202
  }
@@ -204,8 +205,8 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
204
205
  if (!t) return null;
205
206
  try {
206
207
  const i = Ne(t);
207
- if (Le(i))
208
- return Me(i, e);
208
+ if (Me(i))
209
+ return Le(i, e);
209
210
  } catch {
210
211
  return null;
211
212
  }
@@ -220,7 +221,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
220
221
  return null;
221
222
  }
222
223
  return null;
223
- }, Ja = ({
224
+ }, Qa = ({
224
225
  value: t,
225
226
  onChange: e,
226
227
  emptyTrigger: i,
@@ -230,77 +231,77 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
230
231
  className: s,
231
232
  displayFormat: h = "MMM d",
232
233
  minDate: l,
233
- maxDate: f,
234
+ maxDate: m,
234
235
  pt: n
235
236
  }) => {
236
- const [E, y] = P(!1), [T, m] = P(""), [A, R] = P(""), g = oe(null), V = oe(null), I = oe(null), L = oe(null), N = t.startDate || t.endDate, M = ee(() => {
237
- const w = ae(T), x = ae(A);
238
- (w !== t.startDate || x !== t.endDate) && e({ startDate: w, endDate: x }), y(!1);
237
+ const [E, v] = F(!1), [T, f] = F(""), [A, R] = F(""), g = oe(null), V = oe(null), I = oe(null), M = oe(null), N = t.startDate || t.endDate, L = ee(() => {
238
+ const y = ae(T), P = ae(A);
239
+ (y !== t.startDate || P !== t.endDate) && e({ startDate: y, endDate: P }), v(!1);
239
240
  }, [T, A, t.startDate, t.endDate, e]);
240
- $(() => {
241
- E && (m(Fe(t.startDate)), R(Fe(t.endDate)), !t.startDate && !t.endDate && setTimeout(() => {
241
+ z(() => {
242
+ E && (f(xe(t.startDate)), R(xe(t.endDate)), !t.startDate && !t.endDate && setTimeout(() => {
242
243
  try {
243
244
  I.current?.showPicker();
244
245
  } catch {
245
246
  }
246
247
  }, 100));
247
- }, [E, t.startDate, t.endDate]), $(() => {
248
+ }, [E, t.startDate, t.endDate]), z(() => {
248
249
  if (!E) return;
249
- const w = (x) => {
250
- const B = x.target;
251
- g.current && !g.current.contains(B) && V.current && !V.current.contains(B) && M();
250
+ const y = (P) => {
251
+ const B = P.target;
252
+ g.current && !g.current.contains(B) && V.current && !V.current.contains(B) && L();
252
253
  };
253
- return document.addEventListener("mousedown", w), () => document.removeEventListener("mousedown", w);
254
- }, [E, M]), $(() => {
254
+ return document.addEventListener("mousedown", y), () => document.removeEventListener("mousedown", y);
255
+ }, [E, L]), z(() => {
255
256
  if (!E) return;
256
- const w = (x) => {
257
- x.key === "Escape" && (x.stopPropagation(), M());
257
+ const y = (P) => {
258
+ P.key === "Escape" && (P.stopPropagation(), L());
258
259
  };
259
- return document.addEventListener("keydown", w), () => document.removeEventListener("keydown", w);
260
- }, [E, M]);
261
- const H = (w) => {
262
- const x = w.target.value;
263
- m(x);
264
- const B = ae(x), G = ae(A);
265
- if (B && G) {
266
- const j = new Date(B), te = new Date(G);
267
- j > te && R(x);
260
+ return document.addEventListener("keydown", y), () => document.removeEventListener("keydown", y);
261
+ }, [E, L]);
262
+ const Y = (y) => {
263
+ const P = y.target.value;
264
+ f(P);
265
+ const B = ae(P), W = ae(A);
266
+ if (B && W) {
267
+ const j = new Date(B), te = new Date(W);
268
+ j > te && R(P);
268
269
  }
269
270
  B && setTimeout(() => {
270
271
  try {
271
- L.current?.showPicker();
272
+ M.current?.showPicker();
272
273
  } catch {
273
274
  }
274
275
  }, 100);
275
- }, z = (w) => {
276
- const x = w.target.value;
277
- R(x);
278
- const B = ae(x), G = ae(T);
279
- let j = G, te = B;
280
- if (B && G) {
281
- const q = new Date(G);
282
- new Date(B) < q && (m(x), j = B);
276
+ }, K = (y) => {
277
+ const P = y.target.value;
278
+ R(P);
279
+ const B = ae(P), W = ae(T);
280
+ let j = W, te = B;
281
+ if (B && W) {
282
+ const q = new Date(W);
283
+ new Date(B) < q && (f(P), j = B);
283
284
  }
284
285
  e({ startDate: j, endDate: te });
285
286
  }, D = () => {
286
- m(""), R(""), e({ startDate: null, endDate: null }), y(!1);
287
- }, b = (w) => {
288
- w.stopPropagation(), a || (E ? M() : y(!0));
289
- }, v = E ? ae(T) : t.startDate, S = E ? ae(A) : t.endDate, r = _e(v, h), p = _e(S, h), c = r && p ? `${r} - ${p}` : r || p || "", d = () => {
287
+ f(""), R(""), e({ startDate: null, endDate: null }), v(!1);
288
+ }, b = (y) => {
289
+ y.stopPropagation(), a || (E ? L() : v(!0));
290
+ }, w = E ? ae(T) : t.startDate, S = E ? ae(A) : t.endDate, r = _e(w, h), p = _e(S, h), c = r && p ? `${r} - ${p}` : r || p || "", d = () => {
290
291
  if (!g.current) return { top: 0, left: 0 };
291
- const w = g.current.getBoundingClientRect();
292
+ const y = g.current.getBoundingClientRect();
292
293
  return {
293
- top: w.bottom + 4,
294
- left: o === "left" ? w.left : w.right
294
+ top: y.bottom + 4,
295
+ left: o === "left" ? y.left : y.right
295
296
  };
296
- }, C = () => N ? u ? u(t, c) : /* @__PURE__ */ k("span", { className: ce("date-value", n?.valueDisplay?.className), ...n?.valueDisplay, children: c }) : i || /* @__PURE__ */ k(Ze, { icon: "calendar_add_on" }), F = d();
297
- return /* @__PURE__ */ Y(
297
+ }, k = () => N ? u ? u(t, c) : /* @__PURE__ */ C("span", { className: ce("date-value", n?.valueDisplay?.className), ...n?.valueDisplay, children: c }) : i || /* @__PURE__ */ C(Ze, { icon: "calendar_add_on" }), x = d();
298
+ return /* @__PURE__ */ H(
298
299
  Ke,
299
300
  {
300
301
  ...n?.root,
301
302
  className: ce(De, s, n?.root?.className),
302
303
  children: [
303
- /* @__PURE__ */ k(
304
+ /* @__PURE__ */ C(
304
305
  je,
305
306
  {
306
307
  ref: g,
@@ -309,52 +310,52 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
309
310
  type: "button",
310
311
  ...n?.trigger,
311
312
  className: ce(N ? "has-value" : "empty", n?.trigger?.className),
312
- children: C()
313
+ children: k()
313
314
  }
314
315
  ),
315
316
  E && ft(
316
- /* @__PURE__ */ k(
317
+ /* @__PURE__ */ C(
317
318
  Xe,
318
319
  {
319
320
  ref: V,
320
321
  style: {
321
- top: F.top,
322
- left: o === "left" ? F.left : "auto",
323
- right: o === "right" ? window.innerWidth - F.left : "auto",
322
+ top: x.top,
323
+ left: o === "left" ? x.left : "auto",
324
+ right: o === "right" ? window.innerWidth - x.left : "auto",
324
325
  ...n?.dropdown?.style
325
326
  },
326
- onMouseDown: (w) => w.stopPropagation(),
327
+ onMouseDown: (y) => y.stopPropagation(),
327
328
  ...n?.dropdown,
328
329
  className: ce(De, o, n?.dropdown?.className),
329
- children: /* @__PURE__ */ Y(Qe, { className: n?.content?.className, ...n?.content, children: [
330
- /* @__PURE__ */ k(
331
- Je,
330
+ children: /* @__PURE__ */ H(Je, { className: n?.content?.className, ...n?.content, children: [
331
+ /* @__PURE__ */ C(
332
+ Qe,
332
333
  {
333
334
  icon: "close",
334
335
  variant: "text",
335
- onClick: M,
336
+ onClick: L,
336
337
  ...n?.closeButton
337
338
  }
338
339
  ),
339
- /* @__PURE__ */ Y(
340
+ /* @__PURE__ */ H(
340
341
  Oe,
341
342
  {
342
343
  className: n?.startDate?.field?.className,
343
344
  ...n?.startDate?.field,
344
345
  children: [
345
- /* @__PURE__ */ k("label", { ...n?.startDate?.label, children: "Start date" }),
346
- /* @__PURE__ */ k(
346
+ /* @__PURE__ */ C("label", { ...n?.startDate?.label, children: "Start date" }),
347
+ /* @__PURE__ */ C(
347
348
  Se,
348
349
  {
349
350
  ref: I,
350
351
  type: "date",
351
352
  value: T,
352
- onChange: H,
353
- max: f ? re(f, "yyyy-MM-dd") : void 0,
354
- min: l ? re(l, "yyyy-MM-dd") : void 0,
355
- onClick: (w) => {
353
+ onChange: Y,
354
+ max: m ? le(m, "yyyy-MM-dd") : void 0,
355
+ min: l ? le(l, "yyyy-MM-dd") : void 0,
356
+ onClick: (y) => {
356
357
  try {
357
- w.currentTarget.showPicker();
358
+ y.currentTarget.showPicker();
358
359
  } catch {
359
360
  }
360
361
  },
@@ -364,20 +365,20 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
364
365
  ]
365
366
  }
366
367
  ),
367
- /* @__PURE__ */ Y(Oe, { className: n?.endDate?.field?.className, ...n?.endDate?.field, children: [
368
- /* @__PURE__ */ k("label", { ...n?.endDate?.label, children: "End date" }),
369
- /* @__PURE__ */ k(
368
+ /* @__PURE__ */ H(Oe, { className: n?.endDate?.field?.className, ...n?.endDate?.field, children: [
369
+ /* @__PURE__ */ C("label", { ...n?.endDate?.label, children: "End date" }),
370
+ /* @__PURE__ */ C(
370
371
  Se,
371
372
  {
372
- ref: L,
373
+ ref: M,
373
374
  type: "date",
374
375
  value: A,
375
- onChange: z,
376
- max: f ? re(f, "yyyy-MM-dd") : void 0,
377
- min: T || (l ? re(l, "yyyy-MM-dd") : void 0),
378
- onClick: (w) => {
376
+ onChange: K,
377
+ max: m ? le(m, "yyyy-MM-dd") : void 0,
378
+ min: T || (l ? le(l, "yyyy-MM-dd") : void 0),
379
+ onClick: (y) => {
379
380
  try {
380
- w.currentTarget.showPicker();
381
+ y.currentTarget.showPicker();
381
382
  } catch {
382
383
  }
383
384
  },
@@ -385,7 +386,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
385
386
  }
386
387
  )
387
388
  ] }),
388
- N && /* @__PURE__ */ k(qe, { onClick: D, variant: "text", ...n?.clearButton, children: "Clear dates" })
389
+ N && /* @__PURE__ */ C(qe, { onClick: D, variant: "text", ...n?.clearButton, children: "Clear dates" })
389
390
  ] })
390
391
  }
391
392
  ),
@@ -404,44 +405,44 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
404
405
  onVersionCreated: i,
405
406
  dispatch: u
406
407
  }) => {
407
- const [o, a] = P(""), [s, h] = P(""), [l, f] = P(null), [n, E] = P(null), [y, T] = P(!1), [m, A] = P([]), [R, g] = P(ne), [V, I] = P(!1), [L, N] = P(""), [M, H] = P(null), [z, D] = P(null), [b, v] = P(void 0), [S, r] = P(void 0), p = oe(!1), c = oe(null), { data: d = [], isLoading: C } = Ct(
408
+ const [o, a] = F(""), [s, h] = F(""), [l, m] = F(null), [n, E] = F(null), [v, T] = F(!1), [f, A] = F([]), [R, g] = F(ne), [V, I] = F(!1), [M, N] = F(""), [L, Y] = F(null), [K, D] = F(null), [b, w] = F(void 0), [S, r] = F(void 0), p = oe(!1), c = oe(null), { data: d = [], isLoading: k } = kt(
408
409
  { projectName: e, folderId: o },
409
- { skip: !o || !y || !!s }
410
- ), F = me(() => {
410
+ { skip: !o || !v || !!s }
411
+ ), x = me(() => {
411
412
  if (!(s || !R.name || d.length === 0))
412
413
  return d.find((O) => O.name === R.name);
413
- }, [s, R.name, d]), w = s || F?.id || "", { currentData: x } = Ot(
414
+ }, [s, R.name, d]), y = s || x?.id || "", { currentData: P } = Ot(
414
415
  {
415
416
  projectName: e,
416
417
  productId: s
417
418
  },
418
- { skip: !s || !y || b != null }
419
+ { skip: !s || !v || b != null }
419
420
  ), { data: B } = St(
420
421
  { projectName: e, versionId: S },
421
- { skip: !S || !y || l !== null }
422
- ), G = l ?? B?.taskId ?? "", j = !!(S && l === null && !B), te = ee(
423
- ({ productId: O, folderId: _, taskId: U, linkedTask: Z, latestVersionNumber: ie, latestVersionId: Ye }) => {
424
- h(O || ""), a(_ || ""), f(U || null), E(Z || null), v(ie), r(Ye), g((He) => ({
425
- ...He,
426
- ...ie != null ? { version: ie + 1 } : {}
422
+ { skip: !S || !v || l !== null }
423
+ ), W = l ?? B?.taskId ?? "", j = !!(S && l === null && !B), te = ee(
424
+ ({ productId: O, folderId: _, taskId: U, linkedTask: Z, latestVersionNumber: ue, latestVersionId: He }) => {
425
+ h(O || ""), a(_ || ""), m(U || null), E(Z || null), w(ue), r(He), g((Ye) => ({
426
+ ...Ye,
427
+ ...ue != null ? { version: ue + 1 } : {}
427
428
  })), T(!0);
428
429
  },
429
430
  []
430
431
  ), q = ee(() => {
431
- m.forEach((O) => {
432
+ f.forEach((O) => {
432
433
  O.preview && URL.revokeObjectURL(O.preview);
433
- }), A([]), g(ne), H(null), D(null), N(""), I(!1), T(!1), h(""), a(""), f(null), E(null), p.current = !1, v(void 0), r(void 0);
434
- }, [m]), [be] = Tt(), [pe] = Dt(), X = ee(
434
+ }), A([]), g(ne), Y(null), D(null), N(""), I(!1), T(!1), h(""), a(""), m(null), E(null), p.current = !1, w(void 0), r(void 0);
435
+ }, [f]), [be] = Tt(), [pe] = Dt(), X = ee(
435
436
  async (O) => {
436
437
  try {
437
- if (w) {
438
+ if (y) {
438
439
  const _ = await jt(pe, e, {
439
- productId: w,
440
+ productId: y,
440
441
  version: O.version,
441
- taskId: G || void 0
442
+ taskId: W || void 0
442
443
  });
443
- return i(w, _.id), he.success("Created new version"), {
444
- productId: w,
444
+ return i(y, _.id), he.success("Created new version"), {
445
+ productId: y,
445
446
  versionId: _.id
446
447
  };
447
448
  } else {
@@ -457,7 +458,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
457
458
  },
458
459
  {
459
460
  version: O.version,
460
- taskId: G || void 0
461
+ taskId: W || void 0
461
462
  }
462
463
  );
463
464
  return i(_.id, U.id), he.success("Created new version"), {
@@ -469,21 +470,21 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
469
470
  throw console.error("Error uploading version:", _), _.message || _;
470
471
  }
471
472
  },
472
- [q, w, o, G, e]
473
+ [q, y, o, W, e]
473
474
  ), fe = ee(
474
475
  (O) => {
475
- if (w) return;
476
+ if (y) return;
476
477
  const _ = O[0];
477
478
  if (_) {
478
- const U = Jt(_.name), Z = Kt(U);
479
- Z && Z !== R.version && g((ie) => ({
480
- ...ie,
479
+ const U = Qt(_.name), Z = Kt(U);
480
+ Z && Z !== R.version && g((ue) => ({
481
+ ...ue,
481
482
  version: Z
482
483
  }));
483
484
  }
484
485
  },
485
- [w, R.version]
486
- ), Q = x?.version ?? b ?? F?.latestVersion?.version, J = ee((O, _) => {
486
+ [y, R.version]
487
+ ), J = P?.version ?? b ?? x?.latestVersion?.version, Q = ee((O, _) => {
487
488
  g((U) => ({
488
489
  ...U,
489
490
  [O]: _
@@ -492,24 +493,24 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
492
493
  async (O) => {
493
494
  try {
494
495
  I(!0), N("");
495
- const _ = Qt(O, Q, !w);
496
+ const _ = Jt(O, J, !y);
496
497
  if (!_.isValid)
497
498
  throw _.error;
498
499
  const U = await X(O);
499
- o && (c.current = { folderId: o, productName: O.name }), U?.productId && H(U.productId), U?.versionId && D(U.versionId), m.length < 1 && (I(!1), q());
500
+ o && (c.current = { folderId: o, productName: O.name }), U?.productId && Y(U.productId), U?.versionId && D(U.versionId), f.length < 1 && (I(!1), q());
500
501
  } catch (_) {
501
502
  N(_), I(!1);
502
503
  }
503
504
  },
504
- [X, m.length, q, Q, w]
505
+ [X, f.length, q, J, y]
505
506
  );
506
- $(() => {
507
- if (!(!y || b != null))
508
- return g(x ? (O) => ({ ...O, version: x.version + 1 }) : ne), () => {
507
+ z(() => {
508
+ if (!(!v || b != null))
509
+ return g(P ? (O) => ({ ...O, version: P.version + 1 }) : ne), () => {
509
510
  g(ne);
510
511
  };
511
- }, [y, x, b]), $(() => {
512
- if (!y || s || d.length === 0 || R.name !== ne.name) return;
512
+ }, [v, P, b]), z(() => {
513
+ if (!v || s || d.length === 0 || R.name !== ne.name) return;
513
514
  const O = c.current;
514
515
  if (O && O.folderId === o && d.some((Z) => Z.name === O.productName)) {
515
516
  g((Z) => ({ ...Z, name: O.productName }));
@@ -517,43 +518,43 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
517
518
  }
518
519
  const _ = d[d.length - 1];
519
520
  _ && g((U) => ({ ...U, name: _.name }));
520
- }, [y, s, d]), $(() => {
521
- if (!(!y || s))
522
- if (F) {
521
+ }, [v, s, d]), z(() => {
522
+ if (!(!v || s))
523
+ if (x) {
523
524
  g((_) => ({
524
525
  ..._,
525
- productType: F.productType,
526
- ...F.latestVersion && {
527
- version: F.latestVersion.version + 1
526
+ productType: x.productType,
527
+ ...x.latestVersion && {
528
+ version: x.latestVersion.version + 1
528
529
  }
529
530
  }));
530
- const O = F.latestVersion?.task;
531
- O && (l === null || p.current) ? (f(O.id), E({
531
+ const O = x.latestVersion?.task;
532
+ O && (l === null || p.current) ? (m(O.id), E({
532
533
  id: O.id,
533
534
  name: O.name,
534
535
  label: O.label,
535
536
  taskType: O.taskType
536
- }), p.current = !0) : !O && p.current && (f(null), E(null), p.current = !1);
537
+ }), p.current = !0) : !O && p.current && (m(null), E(null), p.current = !1);
537
538
  } else
538
- g((O) => ({ ...O, version: ne.version })), (l === null || p.current) && (f(null), E(null), p.current = !1);
539
- }, [y, s, F]);
540
- const ke = ee((O) => {
541
- f(O), p.current = !1;
539
+ g((O) => ({ ...O, version: ne.version })), (l === null || p.current) && (m(null), E(null), p.current = !1);
540
+ }, [v, s, x]);
541
+ const Ce = ee((O) => {
542
+ m(O), p.current = !1;
542
543
  }, []), We = me(
543
544
  () => ({
544
545
  productId: s,
545
546
  setProductId: h,
546
547
  folderId: o,
547
- taskId: G,
548
+ taskId: W,
548
549
  linkedTask: n,
549
550
  isLoadingTask: j,
550
- setTaskId: ke,
551
+ setTaskId: Ce,
551
552
  setLinkedTask: E,
552
553
  setFolderId: a,
553
- isOpen: y,
554
+ isOpen: v,
554
555
  projectName: e,
555
- latestVersion: Q,
556
- pendingFiles: m,
556
+ latestVersion: J,
557
+ pendingFiles: f,
557
558
  setPendingFiles: A,
558
559
  onOpenVersionUpload: te,
559
560
  onCloseVersionUpload: q,
@@ -562,30 +563,30 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
562
563
  form: R,
563
564
  setForm: g,
564
565
  isSubmitting: V,
565
- error: L,
566
- createdProductId: M,
567
- createdVersionId: z,
568
- handleFormChange: J,
566
+ error: M,
567
+ createdProductId: L,
568
+ createdVersionId: K,
569
+ handleFormChange: Q,
569
570
  handleFormSubmit: Ee,
570
571
  folderProducts: d,
571
- isFolderProductsLoading: C,
572
- matchedProduct: F,
572
+ isFolderProductsLoading: k,
573
+ matchedProduct: x,
573
574
  dispatch: u
574
575
  }),
575
576
  [
576
577
  o,
577
578
  a,
578
579
  s,
579
- G,
580
+ W,
580
581
  n,
581
582
  j,
582
- ke,
583
+ Ce,
583
584
  E,
584
585
  h,
585
- y,
586
+ v,
586
587
  e,
587
- Q,
588
- m,
588
+ J,
589
+ f,
589
590
  A,
590
591
  te,
591
592
  q,
@@ -593,36 +594,36 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
593
594
  fe,
594
595
  R,
595
596
  V,
596
- L,
597
597
  M,
598
- z,
599
- J,
598
+ L,
599
+ K,
600
+ Q,
600
601
  Ee,
601
602
  d,
602
- C,
603
- F,
603
+ k,
604
+ x,
604
605
  u
605
606
  ]
606
607
  );
607
- return /* @__PURE__ */ k(qt.Provider, { value: We, children: t });
608
+ return /* @__PURE__ */ C(qt.Provider, { value: We, children: t });
608
609
  }, Za = ({ children: t }) => {
609
- const [e, i] = P(!1), { siteInfo: u, user: o, cloudInfo: a } = Be(), { data: s, isLoading: h } = Vt(
610
+ const [e, i] = F(!1), { siteInfo: u, user: o, cloudInfo: a } = Be(), { data: s, isLoading: h } = Vt(
610
611
  {},
611
612
  {
612
613
  skip: !o?.name || !a?.connected
613
614
  }
614
615
  ), l = () => {
615
- e || (Pt(() => {
616
+ e || (Ft(() => {
616
617
  if (document.getElementById("featurebase-sdk")) return;
617
618
  const c = document.createElement("script");
618
619
  c.src = "https://do.featurebase.app/js/sdk.js", c.id = "featurebase-sdk", c.async = !0, document.body.appendChild(c);
619
620
  }), i(!0));
620
- }, f = () => {
621
+ }, m = () => {
621
622
  const c = window;
622
623
  typeof c.Featurebase != "function" && (c.Featurebase = function() {
623
624
  (c.Featurebase.q = c.Featurebase.q || []).push(arguments);
624
625
  });
625
- }, n = u?.version?.split("+")[0] || "unknown", E = u?.version?.split("+")[1] || "unknown", y = () => {
626
+ }, n = u?.version?.split("+")[0] || "unknown", E = u?.version?.split("+")[1] || "unknown", v = () => {
626
627
  if (!o?.name || !s?.available) return;
627
628
  const c = {
628
629
  ...s.data,
@@ -633,10 +634,10 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
633
634
  instanceId: a?.instanceId
634
635
  }
635
636
  };
636
- console.log(c), window.Featurebase("identify", c, (C) => {
637
- C ? console.error(C) : console.log("Featurebase identify completed");
637
+ console.log(c), window.Featurebase("identify", c, (k) => {
638
+ k ? console.error(k) : console.log("Featurebase identify completed");
638
639
  });
639
- }, [T, m] = P(!1), [A, R] = P(0), g = () => {
640
+ }, [T, f] = F(!1), [A, R] = F(0), g = () => {
640
641
  const c = window;
641
642
  if (typeof c.Featurebase == "function") {
642
643
  if (console.log("Initializing Featurebase messenger widget"), !s?.available)
@@ -648,8 +649,8 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
648
649
  ...s?.data
649
650
  },
650
651
  (d) => {
651
- d ? console.error(d) : (console.log("Featurebase messenger completed"), m(!0), c.Featurebase("onUnreadCountChange", function(C) {
652
- R(C);
652
+ d ? console.error(d) : (console.log("Featurebase messenger completed"), f(!0), c.Featurebase("onUnreadCountChange", function(k) {
653
+ R(k);
653
654
  }));
654
655
  }
655
656
  );
@@ -657,8 +658,8 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
657
658
  }, V = () => {
658
659
  const c = [];
659
660
  if (o?.data?.isAdmin) {
660
- const C = ["Server", "Addon", "Pipeline"];
661
- c.push(...C);
661
+ const k = ["Server", "Addon", "Pipeline"];
662
+ c.push(...k);
662
663
  } else u?.disableChangelog || c.push("Highlights");
663
664
  const d = window;
664
665
  return typeof d.Featurebase == "function" && d.Featurebase("init_changelog_widget", {
@@ -687,7 +688,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
687
688
  d && console.error("Error initializing feedback widget:", d);
688
689
  }
689
690
  ), !1;
690
- }, L = () => {
691
+ }, M = () => {
691
692
  const c = window;
692
693
  return typeof c.Featurebase == "function" && c.Featurebase(
693
694
  "initialize_portal_widget",
@@ -715,23 +716,23 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
715
716
  }
716
717
  ), !1;
717
718
  };
718
- $(() => {
719
- o?.name && u && (u.disableFeedback || e || (l(), f(), V(), I(), L()));
719
+ z(() => {
720
+ o?.name && u && (u.disableFeedback || e || (l(), m(), V(), I(), M()));
720
721
  }, [o?.name, e, u]);
721
- const [M, H] = P(!1);
722
- $(() => {
723
- !o?.name || !a || !s || !e || M || (y(), N(), H(!0));
722
+ const [L, Y] = F(!1);
723
+ z(() => {
724
+ !o?.name || !a || !s || !e || L || (v(), N(), Y(!0));
724
725
  }, [
725
726
  o?.name,
726
727
  a?.instanceId,
727
728
  s?.available,
728
729
  e,
729
730
  window.location.pathname,
730
- M
731
- ]), $(() => {
731
+ L
732
+ ]), z(() => {
732
733
  h || !e || g();
733
734
  }, [s, h, e]);
734
- const z = () => {
735
+ const K = () => {
735
736
  window.postMessage({
736
737
  target: "FeaturebaseWidget",
737
738
  data: {
@@ -748,61 +749,61 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
748
749
  ...d && { articleId: d }
749
750
  }
750
751
  });
751
- }, [b, v] = P(!1), S = document.getElementById("fb-messenger-root"), r = (c) => S instanceof HTMLElement && (S.style.display = c ? "block" : "none");
752
- $(() => {
752
+ }, [b, w] = F(!1), S = document.getElementById("fb-messenger-root"), r = (c) => S instanceof HTMLElement && (S.style.display = c ? "block" : "none");
753
+ z(() => {
753
754
  !e || !T || r(b);
754
- }, [e, T, b]), $(() => {
755
+ }, [e, T, b]), z(() => {
755
756
  if (!e || !T) return;
756
757
  const c = window;
757
758
  typeof c.Featurebase == "function" && c.Featurebase("onHide", function() {
758
- v(!1);
759
+ w(!1);
759
760
  });
760
761
  }, [e, T]);
761
762
  const p = (c = "Home", d) => {
762
- const C = window;
763
- if (typeof C.Featurebase != "function") {
763
+ const k = window;
764
+ if (typeof k.Featurebase != "function") {
764
765
  window.alert("Featurebase SDK is not loaded yet. Please try again later."), console.warn("Featurebase SDK is not loaded yet.");
765
766
  return;
766
767
  }
767
768
  if (b) {
768
- C.Featurebase("hide"), v(!1);
769
+ k.Featurebase("hide"), w(!1);
769
770
  return;
770
771
  }
771
- switch (v(!0), c) {
772
+ switch (w(!0), c) {
772
773
  case "Home":
773
- C.Featurebase("show");
774
+ k.Featurebase("show");
774
775
  break;
775
776
  case "Messages":
776
- C.Featurebase("show", "messages");
777
+ k.Featurebase("show", "messages");
777
778
  break;
778
779
  case "Changelog":
779
- C.Featurebase("show", "changelog");
780
+ k.Featurebase("show", "changelog");
780
781
  break;
781
782
  case "Help":
782
- C.Featurebase("show", "help");
783
+ k.Featurebase("show", "help");
783
784
  break;
784
785
  case "ShowArticle":
785
- d ? C.Featurebase("showArticle", d) : C.Featurebase("show", "help");
786
+ d ? k.Featurebase("showArticle", d) : k.Featurebase("show", "help");
786
787
  break;
787
788
  case "NewMessage":
788
- C.Featurebase("showNewMessage", d);
789
+ k.Featurebase("showNewMessage", d);
789
790
  break;
790
791
  default:
791
- C.Featurebase("show");
792
+ k.Featurebase("show");
792
793
  break;
793
794
  }
794
795
  };
795
- return /* @__PURE__ */ k(
796
- xt.Provider,
796
+ return /* @__PURE__ */ C(
797
+ Bt.Provider,
797
798
  {
798
799
  value: {
799
800
  openSupport: p,
800
- openFeedback: z,
801
+ openFeedback: K,
801
802
  openPortal: D,
802
803
  messengerLoaded: T,
803
804
  unreadCount: A,
804
805
  messengerVisibility: b,
805
- setMessengerVisibility: v,
806
+ setMessengerVisibility: w,
806
807
  loaded: e
807
808
  },
808
809
  children: t
@@ -814,14 +815,14 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
814
815
  isLoading: i,
815
816
  attributes: u = []
816
817
  }) => {
817
- const [o, a] = P({
818
+ const [o, a] = F({
818
819
  label: "",
819
820
  tags: [],
820
821
  active: !1
821
- }), s = (e?.accessLevel || 0) >= 30, { tags: h } = mt(), { data: l = [] } = Rt(), f = me(
822
- () => l.filter((m) => m.scope?.includes("list")).map((m) => ({
823
- name: m.name,
824
- data: m.data
822
+ }), s = (e?.accessLevel || 0) >= 30, { tags: h } = mt(), { data: l = [] } = Rt(), m = me(
823
+ () => l.filter((f) => f.scope?.includes("list")).map((f) => ({
824
+ name: f.name,
825
+ data: f.data
825
826
  })),
826
827
  [l]
827
828
  ), n = me(
@@ -832,21 +833,21 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
832
833
  data: {
833
834
  type: "list_of_strings",
834
835
  title: "Tags",
835
- enum: h?.map((m) => ({ value: m.name, label: m.name, color: m.color })),
836
+ enum: h?.map((f) => ({ value: f.name, label: f.name, color: f.color })),
836
837
  enableCustomValues: !0,
837
838
  enableSearch: !0
838
839
  }
839
840
  },
840
- ...f,
841
+ ...m,
841
842
  { name: "active", data: { type: "boolean", title: "Active" } },
842
843
  ...u
843
844
  ],
844
- [h, f, u]
845
+ [h, m, u]
845
846
  );
846
- $(() => {
847
+ z(() => {
847
848
  if (e) {
848
- const m = e.attrib || {}, R = [...f, ...u].reduce((g, { name: V }) => {
849
- const I = m[V];
849
+ const f = e.attrib || {}, R = [...m, ...u].reduce((g, { name: V }) => {
850
+ const I = f[V];
850
851
  return g[V] = I || "", g;
851
852
  }, {});
852
853
  a({
@@ -856,26 +857,26 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
856
857
  ...R
857
858
  });
858
859
  }
859
- }, [e, JSON.stringify(u), JSON.stringify(f)]);
860
- const [E] = It(), y = (m) => u.some((A) => A.name === m) || f.some((A) => A.name === m), T = ee(
861
- async (m, A) => {
860
+ }, [e, JSON.stringify(u), JSON.stringify(m)]);
861
+ const [E] = It(), v = (f) => u.some((A) => A.name === f) || m.some((A) => A.name === f), T = ee(
862
+ async (f, A) => {
862
863
  if (!e?.id) return console.warn("No list ID provided");
863
864
  let R;
864
- if (y(m)) {
865
+ if (v(f)) {
865
866
  const g = e.attrib || {};
866
- A === "" && m === "category" ? R = {
867
+ A === "" && f === "category" ? R = {
867
868
  attrib: {
868
869
  ...g,
869
- [m]: null
870
+ [f]: null
870
871
  }
871
872
  } : R = {
872
873
  attrib: {
873
874
  ...g,
874
- [m]: A
875
+ [f]: A
875
876
  }
876
- }, a((V) => ({ ...V, [m]: A }));
877
+ }, a((V) => ({ ...V, [f]: A }));
877
878
  } else {
878
- const g = { [m]: A };
879
+ const g = { [f]: A };
879
880
  R = g, a((V) => ({ ...V, ...g }));
880
881
  }
881
882
  try {
@@ -888,9 +889,9 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
888
889
  console.error(g), he.error("Failed to update list attribute: ", g.attrib.detail);
889
890
  }
890
891
  },
891
- [e?.id, e?.attrib, t, E, f, u]
892
+ [e?.id, e?.attrib, t, E, m, u]
892
893
  );
893
- return /* @__PURE__ */ k(
894
+ return /* @__PURE__ */ C(
894
895
  wt,
895
896
  {
896
897
  enableEditing: s,
@@ -913,9 +914,9 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
913
914
  "List type": t?.entityListType,
914
915
  "Items count": t?.data?.count ?? t?.items?.length,
915
916
  Owner: t?.owner,
916
- "Created at": t?.createdAt && re(new Date(t?.createdAt), "PPpp"),
917
+ "Created at": t?.createdAt && le(new Date(t?.createdAt), "PPpp"),
917
918
  "Created by": t?.createdBy,
918
- "Updated at": t?.updatedAt && re(new Date(t?.updatedAt), "PPpp"),
919
+ "Updated at": t?.updatedAt && le(new Date(t?.updatedAt), "PPpp"),
919
920
  "Last updated by": t?.updatedBy,
920
921
  ...i
921
922
  }, o = Object.keys(u).map((a) => ({
@@ -923,7 +924,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
923
924
  data: { type: "string" },
924
925
  hidden: !1
925
926
  }));
926
- return /* @__PURE__ */ k(yt, { form: u, fields: o, isLoading: !!e });
927
+ return /* @__PURE__ */ C(yt, { form: u, fields: o, isLoading: !!e });
927
928
  }, as = ({
928
929
  label: t,
929
930
  description: e,
@@ -931,8 +932,8 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
931
932
  isCloseable: u = !0,
932
933
  addon: o
933
934
  }) => {
934
- const [a, s] = P(!1), { setPowerpackDialog: h, selectedPowerPack: l, powerpackDialog: f, addonDialog: n } = ht(), E = !!o || !!n, y = t ?? f?.label ?? n?.label, T = e ?? f?.description ?? (n ? n.features[n.selectedFeature ?? ""]?.description ?? Object.values(n.features)[0]?.description : void 0), m = o?.icon ?? (n ? n.icon : "bolt");
935
- if (!f && !n && (!t || !e)) return null;
935
+ const [a, s] = F(!1), { setPowerpackDialog: h, selectedPowerPack: l, powerpackDialog: m, addonDialog: n } = ht(), E = !!o || !!n, v = t ?? m?.label ?? n?.label, T = e ?? m?.description ?? (n ? n.features[n.selectedFeature ?? ""]?.description ?? Object.values(n.features)[0]?.description : void 0), f = o?.icon ?? (n ? n.icon : "bolt");
936
+ if (!m && !n && (!t || !e)) return null;
936
937
  const R = (() => {
937
938
  if (i)
938
939
  return Object.entries(i);
@@ -941,10 +942,10 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
941
942
  (I) => [I, n.features[I]]
942
943
  );
943
944
  if (n.selectedFeature) {
944
- const I = V.findIndex(([L]) => L === n.selectedFeature);
945
+ const I = V.findIndex(([M]) => M === n.selectedFeature);
945
946
  if (I > 0) {
946
- const [L] = V.splice(I, 1);
947
- V.unshift(L);
947
+ const [M] = V.splice(I, 1);
948
+ V.unshift(M);
948
949
  }
949
950
  }
950
951
  return V;
@@ -952,11 +953,11 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
952
953
  return Object.entries(bt).sort(([V], [I]) => {
953
954
  if (V === l) return -1;
954
955
  if (I === l) return 1;
955
- const L = Ve.indexOf(V), N = Ve.indexOf(I);
956
- return L > -1 && N > -1 ? L - N : L > -1 ? -1 : N > -1 ? 1 : 0;
956
+ const M = Ve.indexOf(V), N = Ve.indexOf(I);
957
+ return M > -1 && N > -1 ? M - N : M > -1 ? -1 : N > -1 ? 1 : 0;
957
958
  });
958
959
  })();
959
- return /* @__PURE__ */ Y(
960
+ return /* @__PURE__ */ H(
960
961
  et,
961
962
  {
962
963
  isOpen: !0,
@@ -967,36 +968,36 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
967
968
  hideCancelButton: !u,
968
969
  hideBackdrop: !u,
969
970
  children: [
970
- /* @__PURE__ */ Y(tt, { children: [
971
- /* @__PURE__ */ Y("h1", { children: [
972
- /* @__PURE__ */ k(le, { icon: m }),
973
- y
971
+ /* @__PURE__ */ H(tt, { children: [
972
+ /* @__PURE__ */ H("h1", { children: [
973
+ /* @__PURE__ */ C(ie, { icon: f }),
974
+ v
974
975
  ] }),
975
- /* @__PURE__ */ k("h2", { children: T })
976
+ /* @__PURE__ */ C("h2", { children: T })
976
977
  ] }),
977
- /* @__PURE__ */ Y(at, { children: [
978
- E ? /* @__PURE__ */ Y("h3", { children: [
978
+ /* @__PURE__ */ H(at, { children: [
979
+ E ? /* @__PURE__ */ H("h3", { children: [
979
980
  "Unlock all ",
980
- /* @__PURE__ */ k("span", { className: "green", children: "Premium Addons" }),
981
+ /* @__PURE__ */ C("span", { className: "green", children: "Premium Addons" }),
981
982
  " with an AYON Studio subscription."
982
- ] }) : /* @__PURE__ */ Y("h3", { children: [
983
+ ] }) : /* @__PURE__ */ H("h3", { children: [
983
984
  "Unlock all ",
984
- /* @__PURE__ */ k(le, { icon: "bolt" }),
985
+ /* @__PURE__ */ C(ie, { icon: "bolt" }),
985
986
  " ",
986
- /* @__PURE__ */ k("span", { className: "green", children: "Power Features" }),
987
+ /* @__PURE__ */ C("span", { className: "green", children: "Power Features" }),
987
988
  " with an AYON subscription."
988
989
  ] }),
989
- /* @__PURE__ */ k("ul", { children: R.slice(0, a ? void 0 : 5).map(([V, I]) => /* @__PURE__ */ Y("li", { children: [
990
- /* @__PURE__ */ k(le, { icon: I.icon ?? "check" }),
991
- /* @__PURE__ */ k("span", { children: I.bullet })
990
+ /* @__PURE__ */ C("ul", { children: R.slice(0, a ? void 0 : 5).map(([V, I]) => /* @__PURE__ */ H("li", { children: [
991
+ /* @__PURE__ */ C(ie, { icon: I.icon ?? "check" }),
992
+ /* @__PURE__ */ C("span", { children: I.bullet })
992
993
  ] }, V)) }),
993
- !a && R.length > 5 && /* @__PURE__ */ k(st, { onClick: () => s(!0), children: "Show all" })
994
+ !a && R.length > 5 && /* @__PURE__ */ C(st, { onClick: () => s(!0), children: "Show all" })
994
995
  ] }),
995
- /* @__PURE__ */ k(ot, { addon: o?.name, children: /* @__PURE__ */ k(nt, {}) })
996
+ /* @__PURE__ */ C(ot, { addon: o?.name, children: /* @__PURE__ */ C(nt, {}) })
996
997
  ]
997
998
  }
998
999
  );
999
- }, Pe = ({
1000
+ }, Fe = ({
1000
1001
  Component: t,
1001
1002
  projectName: e,
1002
1003
  state: i,
@@ -1006,18 +1007,18 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1006
1007
  onGoToFrame: s,
1007
1008
  onOpenViewer: h,
1008
1009
  onUpdateEntity: l,
1009
- ...f
1010
+ ...m
1010
1011
  }) => {
1011
- const n = gt(), { onCreateView: E, getLatestSettings: y, markCacheDirty: T } = Nt();
1012
- return /* @__PURE__ */ k(
1012
+ const n = gt(), { onCreateView: E, getLatestSettings: v, markCacheDirty: T } = Ut();
1013
+ return /* @__PURE__ */ C(
1013
1014
  t,
1014
1015
  {
1015
- router: { useParams: Gt, useNavigate: Ut, useLocation: Bt, useSearchParams: Mt },
1016
+ router: { useParams: Lt, useNavigate: Mt, useLocation: Nt, useSearchParams: Pt },
1016
1017
  projectName: e,
1017
1018
  views: {
1018
1019
  ...n,
1019
1020
  settings: n.viewSettings,
1020
- updateViewSettings: (...m) => Lt(...m, n, E, y, T)
1021
+ updateViewSettings: (...f) => Gt(...f, n, E, v, T)
1021
1022
  },
1022
1023
  context: {},
1023
1024
  state: i,
@@ -1028,21 +1029,21 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1028
1029
  onOpenViewer: h,
1029
1030
  onUpdateEntity: l,
1030
1031
  toast: he,
1031
- ...f
1032
+ ...m
1032
1033
  }
1033
1034
  );
1034
1035
  }, ea = ({ children: t, fields: e }) => {
1035
1036
  const i = Wt.filter((u) => e.includes(u.value));
1036
- return /* @__PURE__ */ k("main", { style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ Y(
1037
+ return /* @__PURE__ */ C("main", { style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ H(
1037
1038
  zt,
1038
1039
  {
1039
1040
  layout: "horizontal",
1040
1041
  style: { width: "100%", height: "100%" },
1041
- stateKey: Yt,
1042
+ stateKey: Ht,
1042
1043
  stateStorage: "local",
1043
1044
  children: [
1044
- /* @__PURE__ */ k(Ie, { ...Ht, children: /* @__PURE__ */ k(ut, { wrap: !0, children: /* @__PURE__ */ k($t, { sliceFields: i, pinnedSliceType: "hierarchy" }) }) }),
1045
- /* @__PURE__ */ k(Ie, { size: 80, children: t })
1045
+ /* @__PURE__ */ C(Ie, { ...Yt, children: /* @__PURE__ */ C(ut, { wrap: !0, children: /* @__PURE__ */ C($t, { sliceFields: i, pinnedSliceType: "hierarchy" }) }) }),
1046
+ /* @__PURE__ */ C(Ie, { size: 80, children: t })
1046
1047
  ]
1047
1048
  }
1048
1049
  ) });
@@ -1054,7 +1055,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1054
1055
  addonProps: o,
1055
1056
  ...a
1056
1057
  }) => {
1057
- let s = /* @__PURE__ */ k(Pe, { Component: t, projectName: e, ...a });
1058
+ let s = /* @__PURE__ */ C(Fe, { Component: t, projectName: e, ...a });
1058
1059
  if (i && e) {
1059
1060
  let h = null;
1060
1061
  try {
@@ -1062,8 +1063,8 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1062
1063
  } catch {
1063
1064
  console.log("Slicer context not available for this addon page");
1064
1065
  }
1065
- s = /* @__PURE__ */ k(ea, { fields: i.fields, children: /* @__PURE__ */ k(
1066
- Pe,
1066
+ s = /* @__PURE__ */ C(ea, { fields: i.fields, children: /* @__PURE__ */ C(
1067
+ Fe,
1067
1068
  {
1068
1069
  Component: t,
1069
1070
  projectName: e,
@@ -1076,6 +1077,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1076
1077
  return s;
1077
1078
  }, ta = /* @__PURE__ */ new Set([
1078
1079
  "name",
1080
+ "extension",
1079
1081
  "status",
1080
1082
  "tags",
1081
1083
  "assignees",
@@ -1098,20 +1100,20 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1098
1100
  config: a,
1099
1101
  power: s
1100
1102
  }) => {
1101
- const h = vt(), l = o.productTypes || [], f = o.productBaseTypes || [];
1103
+ const h = vt(), l = o.productTypes || [], m = o.productBaseTypes || [];
1102
1104
  let n = [];
1103
- const E = /* @__PURE__ */ new Map(), y = u || (i ? Array.isArray(i) ? i : [i] : []).map((v) => ({
1104
- scope: v,
1105
+ const E = /* @__PURE__ */ new Map(), v = u || (i ? Array.isArray(i) ? i : [i] : []).map((w) => ({
1106
+ scope: w,
1105
1107
  filterTypes: t
1106
- })), T = y.length > 1, m = new Set(
1107
- Array.from(new Set(y.flatMap(({ filterTypes: b }) => b))).filter(
1108
- (b) => y.filter(({ filterTypes: v }) => v.includes(b)).length > 1
1108
+ })), T = v.length > 1, f = new Set(
1109
+ Array.from(new Set(v.flatMap(({ filterTypes: b }) => b))).filter(
1110
+ (b) => v.filter(({ filterTypes: w }) => w.includes(b)).length > 1
1109
1111
  )
1110
- ), A = y.some(
1111
- (b) => ["entitySubType", "status"].some((v) => b.filterTypes.includes(v))
1112
- ), R = y.some(
1112
+ ), A = v.some(
1113
+ (b) => ["entitySubType", "status"].some((w) => b.filterTypes.includes(w))
1114
+ ), R = v.some(
1113
1115
  (b) => ["assignees", "users", "author"].some(
1114
- (v) => b.filterTypes.includes(v)
1116
+ (w) => b.filterTypes.includes(w)
1115
1117
  )
1116
1118
  ), { data: g = {} } = At(
1117
1119
  {
@@ -1120,77 +1122,77 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1120
1122
  {
1121
1123
  skip: !e?.length || !A
1122
1124
  }
1123
- ), { data: V = [] } = Ft(
1125
+ ), { data: V = [] } = xt(
1124
1126
  { projects: e },
1125
1127
  {
1126
1128
  skip: !e?.length || !R
1127
1129
  }
1128
- ), { attributes: I } = Be(), L = lt(pt), N = L?.attribFields?.length ? L.attribFields : I, M = /* @__PURE__ */ new Map();
1129
- y.forEach(({ scope: b, filterTypes: v }) => {
1130
- v.includes("attributes") && N.filter((S) => S.scope?.includes(b)).forEach((S) => {
1131
- M.set(
1130
+ ), { attributes: I } = Be(), M = lt(pt), N = M?.attribFields?.length ? M.attribFields : I, L = /* @__PURE__ */ new Map();
1131
+ v.forEach(({ scope: b, filterTypes: w }) => {
1132
+ w.includes("attributes") && N.filter((S) => S.scope?.includes(b)).forEach((S) => {
1133
+ L.set(
1132
1134
  S.name,
1133
- (M.get(S.name) || 0) + 1
1135
+ (L.get(S.name) || 0) + 1
1134
1136
  );
1135
1137
  });
1136
- }), y.forEach(({ scope: b, filterTypes: v }) => {
1138
+ }), v.forEach(({ scope: b, filterTypes: w }) => {
1137
1139
  const S = T ? b : void 0;
1138
- if (v.includes("taskType") && b !== "user") {
1139
- const r = W(
1140
+ if (w.includes("taskType") && b !== "user") {
1141
+ const r = G(
1140
1142
  "taskType",
1141
1143
  {
1142
1144
  ...a,
1143
1145
  enableOperatorChange: !1
1144
1146
  },
1145
1147
  S,
1146
- m.has("taskType")
1148
+ f.has("taskType")
1147
1149
  );
1148
1150
  if (r) {
1149
1151
  let p = ve({ projectsInfo: g, productTypes: l }, "task");
1150
1152
  r.values?.push(...p), n.push(r);
1151
1153
  }
1152
1154
  }
1153
- if (v.includes("folderType") && b !== "user") {
1154
- const r = W(
1155
+ if (w.includes("folderType") && b !== "user") {
1156
+ const r = G(
1155
1157
  "folderType",
1156
1158
  {
1157
1159
  ...a,
1158
1160
  enableOperatorChange: !1
1159
1161
  },
1160
1162
  S,
1161
- m.has("folderType")
1163
+ f.has("folderType")
1162
1164
  );
1163
1165
  if (r) {
1164
1166
  let p = ve({ projectsInfo: g, productTypes: l }, "folder");
1165
1167
  r.values?.push(...p), n.push(r);
1166
1168
  }
1167
1169
  }
1168
- if (v.includes("productType") && b !== "user") {
1169
- const r = W(
1170
+ if (w.includes("productType") && b !== "user") {
1171
+ const r = G(
1170
1172
  "productType",
1171
1173
  {
1172
1174
  ...a,
1173
1175
  enableOperatorChange: !1
1174
1176
  },
1175
1177
  S,
1176
- m.has("productType")
1178
+ f.has("productType")
1177
1179
  );
1178
1180
  if (r) {
1179
1181
  let p = ve({ projectsInfo: g, productTypes: l }, "product");
1180
1182
  r.values?.push(...p), n.push(r);
1181
1183
  }
1182
1184
  }
1183
- if (v.includes("productBaseType") && b !== "user") {
1184
- const r = W(
1185
+ if (w.includes("productBaseType") && b !== "user") {
1186
+ const r = G(
1185
1187
  "productBaseType",
1186
1188
  {
1187
1189
  ...a,
1188
1190
  enableOperatorChange: !1
1189
1191
  },
1190
1192
  S,
1191
- m.has("productBaseType")
1193
+ f.has("productBaseType")
1192
1194
  );
1193
- r && (f.forEach(({ icon: p, name: c }) => {
1195
+ r && (m.forEach(({ icon: p, name: c }) => {
1194
1196
  r.values?.some((d) => d.id === c) || r.values?.push({
1195
1197
  id: c,
1196
1198
  label: c,
@@ -1204,12 +1206,12 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1204
1206
  });
1205
1207
  }), n.push(r));
1206
1208
  }
1207
- if (v.includes("productName") && b === "product") {
1208
- const r = W(
1209
+ if (w.includes("productName") && b === "product") {
1210
+ const r = G(
1209
1211
  "productName",
1210
1212
  a,
1211
1213
  S,
1212
- m.has("productName")
1214
+ f.has("productName")
1213
1215
  );
1214
1216
  r && (o.productNames?.forEach((p) => {
1215
1217
  r.values?.some((c) => c.id === p) || r.values?.push({
@@ -1218,16 +1220,16 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1218
1220
  });
1219
1221
  }), n.push(r));
1220
1222
  }
1221
- if (v.includes("status")) {
1222
- const r = W(
1223
+ if (w.includes("status")) {
1224
+ const r = G(
1223
1225
  "status",
1224
1226
  { ...a, enableOperatorChange: !1 },
1225
1227
  S,
1226
- m.has("status")
1228
+ f.has("status")
1227
1229
  );
1228
1230
  r && (Object.values(g).forEach((p) => {
1229
1231
  (p?.statuses || []).filter((d) => d.scope?.includes(b)).forEach((d) => {
1230
- r.values?.some((C) => C.id === d.name) || r.values?.push({
1232
+ r.values?.some((k) => k.id === d.name) || r.values?.push({
1231
1233
  id: d.name,
1232
1234
  label: d.name,
1233
1235
  icon: d.icon,
@@ -1236,12 +1238,12 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1236
1238
  });
1237
1239
  }), n.push(r));
1238
1240
  }
1239
- if (v.includes("assignees")) {
1240
- const r = W(
1241
+ if (w.includes("assignees")) {
1242
+ const r = G(
1241
1243
  "assignees",
1242
1244
  a,
1243
1245
  S,
1244
- m.has("assignees")
1246
+ f.has("assignees")
1245
1247
  );
1246
1248
  r && (V.forEach((p) => {
1247
1249
  r.values?.some((c) => c.id === p.name) || r.values?.push({
@@ -1251,16 +1253,16 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1251
1253
  icon: null
1252
1254
  });
1253
1255
  }), r.values?.sort((p, c) => {
1254
- const d = o.assignees?.filter((F) => F === p.id).length || 0;
1255
- return (o.assignees?.filter((F) => F === c.id).length || 0) - d;
1256
+ const d = o.assignees?.filter((x) => x === p.id).length || 0;
1257
+ return (o.assignees?.filter((x) => x === c.id).length || 0) - d;
1256
1258
  }), n.push(r));
1257
1259
  }
1258
- if (v.includes("author")) {
1259
- const r = W(
1260
+ if (w.includes("author")) {
1261
+ const r = G(
1260
1262
  "author",
1261
1263
  a,
1262
1264
  S,
1263
- m.has("author")
1265
+ f.has("author")
1264
1266
  );
1265
1267
  r && (V.forEach((p) => {
1266
1268
  r.values?.some((c) => c.id === p.name) || r.values?.push({
@@ -1271,41 +1273,41 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1271
1273
  });
1272
1274
  }), n.push(r));
1273
1275
  }
1274
- if (v.includes("tags")) {
1275
- const r = W("tags", a, S, m.has("tags"));
1276
+ if (w.includes("tags")) {
1277
+ const r = G("tags", a, S, f.has("tags"));
1276
1278
  if (r) {
1277
1279
  const p = /* @__PURE__ */ new Map();
1278
- Object.values(g).forEach((C) => {
1279
- C?.tags && C.tags.forEach((F) => {
1280
- p.has(F.name) || p.set(F.name, F);
1280
+ Object.values(g).forEach((k) => {
1281
+ k?.tags && k.tags.forEach((x) => {
1282
+ p.has(x.name) || p.set(x.name, x);
1281
1283
  });
1282
1284
  });
1283
1285
  const c = /* @__PURE__ */ new Map();
1284
- o.tags?.forEach((C) => {
1285
- const F = c.get(C);
1286
- if (F) {
1287
- F.count++;
1286
+ o.tags?.forEach((k) => {
1287
+ const x = c.get(k);
1288
+ if (x) {
1289
+ x.count++;
1288
1290
  return;
1289
1291
  } else {
1290
- const w = p.get(C);
1291
- c.set(C, {
1292
- id: C,
1292
+ const y = p.get(k);
1293
+ c.set(k, {
1294
+ id: k,
1293
1295
  type: "string",
1294
- label: C,
1296
+ label: k,
1295
1297
  values: [],
1296
- color: w?.color || null,
1298
+ color: y?.color || null,
1297
1299
  count: 1
1298
1300
  });
1299
1301
  }
1300
1302
  });
1301
1303
  const d = Array.from(c.values()).sort(
1302
- (C, F) => F.count - C.count
1304
+ (k, x) => x.count - k.count
1303
1305
  );
1304
1306
  r.values?.push(...d), n.push(r);
1305
1307
  }
1306
1308
  }
1307
- if (v.includes("version")) {
1308
- const r = W("version", a, S);
1309
+ if (w.includes("version")) {
1310
+ const r = G("version", a, S);
1309
1311
  r && (rt.forEach((c) => {
1310
1312
  r.values?.push({
1311
1313
  id: c.value,
@@ -1314,16 +1316,25 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1314
1316
  });
1315
1317
  }), n.push(r));
1316
1318
  }
1317
- if (v.includes("name")) {
1318
- const r = W("name", a, S, m.has("name"));
1319
+ if (w.includes("name")) {
1320
+ const r = G("name", a, S, f.has("name"));
1319
1321
  r && n.push(r);
1320
1322
  }
1321
- if (v.includes("hasReviewables")) {
1322
- const r = W(
1323
+ if (w.includes("extension") && b === "representation") {
1324
+ const r = G(
1325
+ "extension",
1326
+ a,
1327
+ S,
1328
+ f.has("extension")
1329
+ );
1330
+ r && n.push(r);
1331
+ }
1332
+ if (w.includes("hasReviewables")) {
1333
+ const r = G(
1323
1334
  "hasReviewables",
1324
1335
  a,
1325
1336
  S,
1326
- m.has("hasReviewables")
1337
+ f.has("hasReviewables")
1327
1338
  );
1328
1339
  if (r) {
1329
1340
  const p = [
@@ -1341,47 +1352,49 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1341
1352
  r.values?.push(...p), n.push(r);
1342
1353
  }
1343
1354
  }
1344
- if (v.includes("createdAt")) {
1345
- const r = W(
1355
+ if (w.includes("createdAt")) {
1356
+ const r = G(
1346
1357
  "createdAt",
1347
1358
  a,
1348
1359
  S,
1349
- m.has("createdAt")
1360
+ f.has("createdAt")
1350
1361
  );
1351
1362
  r && (r.values?.push(we), r.values?.push(
1352
1363
  ...ye().map((p) => ({
1353
1364
  ...p,
1354
- contentAfter: s ? void 0 : /* @__PURE__ */ k(le, { icon: "bolt" })
1365
+ contentAfter: s ? void 0 : /* @__PURE__ */ C(ie, { icon: "bolt" })
1355
1366
  }))
1356
1367
  ), n.push(r));
1357
1368
  }
1358
- if (v.includes("updatedAt")) {
1359
- const r = W(
1369
+ if (w.includes("updatedAt")) {
1370
+ const r = G(
1360
1371
  "updatedAt",
1361
1372
  a,
1362
1373
  S,
1363
- m.has("updatedAt")
1374
+ f.has("updatedAt")
1364
1375
  );
1365
1376
  r && (r.values?.push(we), r.values?.push(
1366
1377
  ...ye().map((p) => ({
1367
1378
  ...p,
1368
- contentAfter: s ? void 0 : /* @__PURE__ */ k(le, { icon: "bolt" })
1379
+ contentAfter: s ? void 0 : /* @__PURE__ */ C(ie, { icon: "bolt" })
1369
1380
  }))
1370
1381
  ), n.push(r));
1371
1382
  }
1372
- if (v.includes("attributes")) {
1383
+ if (w.includes("attributes")) {
1373
1384
  const r = N.filter(
1374
- (d) => d.scope?.includes(b)
1385
+ (d) => d.scope?.includes(b) && // replaced by the dedicated extension option: publishing never sets this
1386
+ // attribute on representations, so filtering on it matches nothing
1387
+ !(w.includes("extension") && d.name === "extension")
1375
1388
  ), p = _t(o.attributes) ? r : r.filter(
1376
1389
  (d) => o.attributes && o.attributes[d.name]
1377
1390
  );
1378
1391
  (a?.enableRelativeValues ? p : p.filter((d) => d.data.type !== "datetime")).forEach((d) => {
1379
- const C = o.attributes && o.attributes[d.name], F = d.data.enum, w = d.data.type, x = [
1392
+ const k = o.attributes && o.attributes[d.name], x = d.data.enum, y = d.data.type, P = [
1380
1393
  "list_of_strings",
1381
1394
  "list_of_integers",
1382
1395
  "list_of_any",
1383
1396
  "list_of_submodels"
1384
- ].includes(w || ""), B = w === "datetime", G = w === "string", j = w === "integer" || w === "float", te = x ? a?.enableOperatorChange : !1, q = d.data.default !== void 0 && d.data.default !== null && d.data.inherit !== !1, pe = (x || B || G || j) && !q ? a?.enableRelativeValues : !1, X = aa(
1397
+ ].includes(y || ""), B = y === "datetime", W = y === "string", j = y === "integer" || y === "float", te = P ? a?.enableOperatorChange : !1, q = d.data.default !== void 0 && d.data.default !== null && d.data.inherit !== !1, pe = (P || B || W || j) && !q ? a?.enableRelativeValues : !1, X = aa(
1385
1398
  d,
1386
1399
  {
1387
1400
  ...a,
@@ -1390,14 +1403,14 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1390
1403
  enableRelativeValues: pe
1391
1404
  },
1392
1405
  S,
1393
- (M.get(d.name) || 0) > 1
1406
+ (L.get(d.name) || 0) > 1
1394
1407
  );
1395
1408
  if (d.data.enumResolver) {
1396
- const J = d.data;
1397
- X.loadValuesKey = e?.[0], X.loadValues = async () => xe(
1398
- C,
1399
- await h(J, e?.[0]),
1400
- w
1409
+ const Q = d.data;
1410
+ X.loadValuesKey = e?.[0], X.loadValues = async () => Pe(
1411
+ k,
1412
+ await h(Q, e?.[0]),
1413
+ y
1401
1414
  );
1402
1415
  }
1403
1416
  const fe = [
@@ -1406,13 +1419,13 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1406
1419
  "float",
1407
1420
  "list_of_strings",
1408
1421
  "list_of_integers"
1409
- ], Q = [];
1410
- if (fe.includes(w)) {
1411
- const J = xe(C, F, w);
1412
- Q.push(...J);
1422
+ ], J = [];
1423
+ if (fe.includes(y)) {
1424
+ const Q = Pe(k, x, y);
1425
+ J.push(...Q);
1413
1426
  }
1414
- if (w === "boolean") {
1415
- const J = [
1427
+ if (y === "boolean") {
1428
+ const Q = [
1416
1429
  {
1417
1430
  id: "true",
1418
1431
  label: "Yes",
@@ -1424,33 +1437,33 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1424
1437
  values: []
1425
1438
  }
1426
1439
  ];
1427
- Q.push(...J);
1440
+ J.push(...Q);
1428
1441
  }
1429
- B && (Q.push(we), Q.push(
1430
- ...ye().map((J) => ({
1431
- ...J,
1432
- contentAfter: s ? void 0 : /* @__PURE__ */ k(le, { icon: "bolt" })
1442
+ B && (J.push(we), J.push(
1443
+ ...ye().map((Q) => ({
1444
+ ...Q,
1445
+ contentAfter: s ? void 0 : /* @__PURE__ */ C(ie, { icon: "bolt" })
1433
1446
  }))
1434
- )), X.values?.push(...Q), E.set(X.id, d.name), n.push(X);
1447
+ )), X.values?.push(...J), E.set(X.id, d.name), n.push(X);
1435
1448
  });
1436
1449
  }
1437
1450
  });
1438
- const H = n.reduce((b, v) => {
1439
- if (!v.group) return b;
1440
- const S = typeof v.group == "string" ? void 0 : v.group, r = S?.name || v.group, p = y.some(({ scope: c }) => c === r);
1451
+ const Y = n.reduce((b, w) => {
1452
+ if (!w.group) return b;
1453
+ const S = typeof w.group == "string" ? void 0 : w.group, r = S?.name || w.group, p = v.some(({ scope: c }) => c === r);
1441
1454
  return b.some((c) => c.name === r) || b.push({
1442
1455
  name: r,
1443
- label: p ? de(r) : S?.label || v.label,
1444
- icon: p ? se(r) : S?.icon || v.icon,
1445
- color: S?.color || v.color
1456
+ label: p ? de(r) : S?.label || w.label,
1457
+ icon: p ? se(r) : S?.icon || w.icon,
1458
+ color: S?.color || w.color
1446
1459
  }), b;
1447
- }, []), z = sa(n, E, N), D = oa(
1448
- H,
1449
- z,
1460
+ }, []), K = sa(n, E, N), D = oa(
1461
+ Y,
1462
+ K,
1450
1463
  E,
1451
1464
  N
1452
1465
  );
1453
- return { options: z, groupOptions: D };
1466
+ return { options: K, groupOptions: D };
1454
1467
  }, ve = ({
1455
1468
  projectsInfo: t,
1456
1469
  productTypes: e
@@ -1507,7 +1520,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1507
1520
  const { prefixes: o, keys: a } = i || {};
1508
1521
  let s = t;
1509
1522
  return a && e in a ? s = `${a[e]}` : o && e in o && (s = `${o[e]}${t}`), u && (s = `${u}_${s}`), s;
1510
- }, W = (t, e, i, u = !1) => {
1523
+ }, G = (t, e, i, u = !1) => {
1511
1524
  const o = (l) => Ue(l, t, e, i);
1512
1525
  let a = null;
1513
1526
  switch (t) {
@@ -1516,7 +1529,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1516
1529
  id: o("taskType"),
1517
1530
  type: "string",
1518
1531
  label: "Task Type",
1519
- icon: K("task"),
1532
+ icon: $("task"),
1520
1533
  inverted: !1,
1521
1534
  operator: "OR",
1522
1535
  values: [],
@@ -1532,7 +1545,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1532
1545
  id: o("folderType"),
1533
1546
  type: "string",
1534
1547
  label: "Folder Type",
1535
- icon: K("folder"),
1548
+ icon: $("folder"),
1536
1549
  inverted: !1,
1537
1550
  operator: "OR",
1538
1551
  values: [],
@@ -1548,7 +1561,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1548
1561
  id: o("productType"),
1549
1562
  type: "string",
1550
1563
  label: "Product Type",
1551
- icon: K("product"),
1564
+ icon: $("product"),
1552
1565
  inverted: !1,
1553
1566
  operator: "OR",
1554
1567
  values: [],
@@ -1564,7 +1577,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1564
1577
  id: o("productBaseType"),
1565
1578
  type: "string",
1566
1579
  label: "Product Base Type",
1567
- icon: K("product"),
1580
+ icon: $("product"),
1568
1581
  inverted: !1,
1569
1582
  operator: "OR",
1570
1583
  values: [],
@@ -1580,7 +1593,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1580
1593
  id: o("productNames"),
1581
1594
  type: "string",
1582
1595
  label: "Product Name",
1583
- icon: K("productName", "string"),
1596
+ icon: $("productName", "string"),
1584
1597
  inverted: !1,
1585
1598
  operator: "OR",
1586
1599
  values: [],
@@ -1596,7 +1609,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1596
1609
  id: o("status"),
1597
1610
  type: "string",
1598
1611
  label: "Status",
1599
- icon: K("status"),
1612
+ icon: $("status"),
1600
1613
  inverted: !1,
1601
1614
  operator: "OR",
1602
1615
  values: [],
@@ -1612,7 +1625,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1612
1625
  id: o("assignees"),
1613
1626
  type: "list_of_strings",
1614
1627
  label: "Assignee",
1615
- icon: K("assignees"),
1628
+ icon: $("assignees"),
1616
1629
  inverted: !1,
1617
1630
  operator: "OR",
1618
1631
  values: [],
@@ -1628,7 +1641,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1628
1641
  id: o("author"),
1629
1642
  type: "string",
1630
1643
  label: "Author",
1631
- icon: K("author"),
1644
+ icon: $("author"),
1632
1645
  inverted: !1,
1633
1646
  operator: "OR",
1634
1647
  values: [],
@@ -1644,7 +1657,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1644
1657
  id: o("tags"),
1645
1658
  type: "list_of_strings",
1646
1659
  label: "Tags",
1647
- icon: K("tags"),
1660
+ icon: $("tags"),
1648
1661
  inverted: !1,
1649
1662
  operator: "OR",
1650
1663
  values: [],
@@ -1688,6 +1701,22 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1688
1701
  operatorChangeable: !1
1689
1702
  };
1690
1703
  break;
1704
+ case "extension":
1705
+ a = {
1706
+ id: o("extension"),
1707
+ type: "string",
1708
+ label: "File Extension",
1709
+ icon: $("extension", "string"),
1710
+ inverted: !1,
1711
+ operator: "OR",
1712
+ values: [],
1713
+ allowsCustomValues: !0,
1714
+ allowHasValue: !1,
1715
+ allowNoValue: !1,
1716
+ allowExcludes: !1,
1717
+ operatorChangeable: !1
1718
+ };
1719
+ break;
1691
1720
  case "hasReviewables":
1692
1721
  a = {
1693
1722
  id: o("hasReviewables"),
@@ -1754,7 +1783,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1754
1783
  const o = t.data.title || t.name, a = u || i ? {
1755
1784
  name: i || t.name,
1756
1785
  label: i ? de(i) : o,
1757
- icon: i ? se(i) : K(t.name, t.data.type, Re(t.data))
1786
+ icon: i ? se(i) : $(t.name, t.data.type, Re(t.data))
1758
1787
  } : void 0;
1759
1788
  return {
1760
1789
  id: Ue(t.name, "attributes", e, i),
@@ -1768,19 +1797,19 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1768
1797
  allowNoValue: e.enableRelativeValues,
1769
1798
  allowExcludes: e?.enableExcludes,
1770
1799
  operatorChangeable: e?.enableOperatorChange,
1771
- icon: K(t.name, t.data.type, Re(t.data)),
1800
+ icon: $(t.name, t.data.type, Re(t.data)),
1772
1801
  group: a,
1773
1802
  tooltip: i ? `${de(i)} ${o}` : void 0,
1774
1803
  value: i ? { icon: se(i) } : void 0,
1775
1804
  singleSelect: ["boolean", "datetime"].includes(t.data.type || "")
1776
1805
  };
1777
- }, xe = (t, e, i) => {
1806
+ }, Pe = (t, e, i) => {
1778
1807
  const u = [], o = [];
1779
1808
  if (e) {
1780
1809
  const a = (t || []).flatMap((s) => Array.isArray(s) ? s : [s]);
1781
1810
  Et(e, a).forEach(
1782
1811
  (s) => {
1783
- const h = s.icon, l = kt(h);
1812
+ const h = s.icon, l = Ct(h);
1784
1813
  u.push({
1785
1814
  id: s.value.toString(),
1786
1815
  type: i,
@@ -1811,9 +1840,9 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1811
1840
  }
1812
1841
  const h = s.trim().toLowerCase().replace(/[^a-z0-9\s]/g, "").replace(/\s+/g, "-");
1813
1842
  if (u?.find((n) => n.id === h)) return;
1814
- const f = o.find((n) => n.id === h);
1815
- if (f) {
1816
- f.count++;
1843
+ const m = o.find((n) => n.id === h);
1844
+ if (m) {
1845
+ m.count++;
1817
1846
  return;
1818
1847
  } else
1819
1848
  o.push({
@@ -1840,10 +1869,10 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1840
1869
  u
1841
1870
  );
1842
1871
  }), Ge = (t, e, i, u, o) => {
1843
- const a = new Map(o.map((f, n) => [f.name, n])), s = (f) => {
1872
+ const a = new Map(o.map((m, n) => [m.name, n])), s = (m) => {
1844
1873
  let n = 0;
1845
1874
  for (const E of ta) {
1846
- if (f === E || f.endsWith(`_${E}`)) return n;
1875
+ if (m === E || m.endsWith(`_${E}`)) return n;
1847
1876
  n++;
1848
1877
  }
1849
1878
  return Number.MAX_SAFE_INTEGER;
@@ -1856,32 +1885,34 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1856
1885
  task: { conditions: [], operator: t?.operator || "and" },
1857
1886
  user: { conditions: [], operator: t?.operator || "and" },
1858
1887
  version: { conditions: [], operator: t?.operator || "and" },
1888
+ representation: { conditions: [], operator: t?.operator || "and" },
1859
1889
  unscoped: { conditions: [], operator: t?.operator || "and" }
1860
1890
  };
1861
1891
  if (!t?.conditions || t?.conditions.length === 0)
1862
1892
  return o;
1863
1893
  const a = (l) => {
1864
- const f = e.find((n) => l.startsWith(`${n}_`));
1865
- if (f) {
1866
- const n = l.substring(`${f}_`.length);
1867
- return { scope: f, cleanId: n };
1894
+ const m = e.find((n) => l.startsWith(`${n}_`));
1895
+ if (m) {
1896
+ const n = l.substring(`${m}_`.length);
1897
+ return { scope: m, cleanId: n };
1868
1898
  } else if (i?.fallbackScope)
1869
1899
  return { scope: i.fallbackScope, cleanId: l };
1870
1900
  return { scope: null, cleanId: l };
1871
1901
  }, s = (l) => {
1872
- const f = {
1902
+ const m = {
1873
1903
  folder: [],
1874
1904
  product: [],
1875
1905
  task: [],
1876
1906
  user: [],
1877
1907
  version: [],
1908
+ representation: [],
1878
1909
  unscoped: []
1879
1910
  };
1880
1911
  if ("conditions" in l && !("key" in l)) {
1881
1912
  const n = (l.conditions || []).map((E) => s(E));
1882
- Object.keys(f).forEach((E) => {
1883
- const y = E, T = n.flatMap((m) => m[y]);
1884
- T.length > 0 && (T.length === 1 && !l.operator ? f[y].push(T[0]) : f[y].push({
1913
+ Object.keys(m).forEach((E) => {
1914
+ const v = E, T = n.flatMap((f) => f[v]);
1915
+ T.length > 0 && (T.length === 1 && !l.operator ? m[v].push(T[0]) : m[v].push({
1885
1916
  conditions: T,
1886
1917
  operator: l.operator
1887
1918
  }));
@@ -1889,19 +1920,19 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1889
1920
  } else if ("key" in l) {
1890
1921
  const { scope: n, cleanId: E } = a(l.key);
1891
1922
  if (n)
1892
- f[n].push({ ...l, key: E });
1923
+ m[n].push({ ...l, key: E });
1893
1924
  else {
1894
- const y = u?.[l.key];
1895
- y ? f[y].push(l) : l.key === ct || l.key === "name" || l.key?.endsWith("_name") ? e.forEach((T) => {
1896
- f[T].push(l);
1897
- }) : f.unscoped.push(l);
1925
+ const v = u?.[l.key];
1926
+ v ? m[v].push(l) : l.key === ct || l.key === "name" || l.key?.endsWith("_name") ? e.forEach((T) => {
1927
+ m[T].push(l);
1928
+ }) : m.unscoped.push(l);
1898
1929
  }
1899
1930
  }
1900
- return f;
1931
+ return m;
1901
1932
  }, h = (t.conditions || []).map((l) => s(l));
1902
1933
  return Object.keys(o).forEach((l) => {
1903
- const f = l;
1904
- o[f].conditions = h.flatMap((n) => n[f]);
1934
+ const m = l;
1935
+ o[m].conditions = h.flatMap((n) => n[m]);
1905
1936
  }), o;
1906
1937
  }, rs = (t, e, i) => {
1907
1938
  const u = {
@@ -1910,6 +1941,7 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1910
1941
  task: [],
1911
1942
  user: [],
1912
1943
  version: [],
1944
+ representation: [],
1913
1945
  unscoped: []
1914
1946
  };
1915
1947
  if (!t || t.length === 0)
@@ -1932,11 +1964,11 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1932
1964
  l ? u[l].push(s) : u.unscoped.push(s);
1933
1965
  }
1934
1966
  }), u;
1935
- }, ue = ["status", "tags", "attributes", "createdAt", "updatedAt"], na = {
1936
- folder: [...ue, "name", "folderType"],
1937
- task: [...ue, "name", "taskType", "folderType", "assignees"],
1967
+ }, re = ["status", "tags", "attributes", "createdAt", "updatedAt"], na = {
1968
+ folder: [...re, "name", "folderType"],
1969
+ task: [...re, "name", "taskType", "folderType", "assignees"],
1938
1970
  version: [
1939
- ...ue,
1971
+ ...re,
1940
1972
  "version",
1941
1973
  "productName",
1942
1974
  "productType",
@@ -1946,8 +1978,9 @@ const Ae = 500, Zt = /^[^\s@]+@[^\s@]+\.[^\s@]+$/, Xa = ({
1946
1978
  "taskType",
1947
1979
  "folderType"
1948
1980
  ],
1949
- product: [...ue, "productName", "productBaseType"],
1950
- user: [...ue]
1981
+ product: [...re, "productName", "productBaseType"],
1982
+ representation: [...re, "name", "extension"],
1983
+ user: [...re]
1951
1984
  }, ls = (t, e) => t.map((i) => ({
1952
1985
  scope: i,
1953
1986
  filterTypes: na[i].filter((u) => !e?.[i]?.includes(u))
@@ -1961,87 +1994,87 @@ export {
1961
1994
  uo as $isMentionNode,
1962
1995
  co as $isYouTubeNode,
1963
1996
  po as $setMarkdown,
1964
- Qa as ACCESS_LEVEL_LABELS,
1997
+ Ja as ACCESS_LEVEL_LABELS,
1965
1998
  fo as ACTIVITY_LINK_LABEL,
1966
1999
  Xa as AccessSearchInput,
1967
- Ce as AccessUser,
2000
+ ke as AccessUser,
1968
2001
  cs as AddColumnButton,
1969
2002
  js as AddNewLinks,
1970
2003
  ds as AddonLoadingScreen,
1971
2004
  ps as AttributeEditor,
1972
2005
  De as BLOCK_DIALOG_CLOSE_CLASS,
1973
- Hs as Badge,
2006
+ Ys as Badge,
1974
2007
  $s as BadgeWrapper,
1975
2008
  mo as CUSTOM_RANGE_ICON,
1976
2009
  ho as CUSTOM_RANGE_ID,
1977
2010
  go as CellEditingDialog,
1978
2011
  Xs as Chips,
1979
- yr as ColumnHeaderMenuUI,
1980
- Kn as ColumnMenuButton,
2012
+ Er as ColumnHeaderMenuUI,
2013
+ Wn as ColumnMenuButton,
1981
2014
  fs as ColumnsSettings,
1982
2015
  ms as ColumnsSettingsWithContext,
1983
- ur as CustomDateRangeDialog,
2016
+ nr as CustomDateRangeDialog,
1984
2017
  hs as CustomizeButton,
1985
2018
  gs as DEFAULT_FEATURED_ORDER,
1986
2019
  bo as DEFAULT_TOOLBAR,
1987
2020
  qo as DELETE_CONFIRM_THRESHOLD,
1988
2021
  an as DELETE_TYPE_ORDER,
1989
2022
  wo as DESCRIPTION_TOOLBAR,
1990
- Ja as DateRangePicker,
2023
+ Qa as DateRangePicker,
1991
2024
  Zo as DeleteConfirmContent,
1992
2025
  sn as DeleteEntitiesConfirmDialog,
1993
- Qs as DescriptionSection,
2026
+ Js as DescriptionSection,
1994
2027
  cn as DetailsDialog,
1995
2028
  wt as DetailsPanelAttributesEditor,
1996
2029
  pn as DetailsPanelDetails,
1997
2030
  yt as DetailsSection,
1998
2031
  yo as DoneCheckbox,
1999
- Yn as ENTITY_TOOLTIP_TYPES,
2032
+ Ln as ENTITY_TOOLTIP_TYPES,
2000
2033
  bs as EVERYONE_GROUP_KEY,
2001
2034
  ws as EVERY_GUESTS_KEY,
2002
2035
  ys as EarlyPreview,
2003
- Cn as EmptyPlaceholder,
2036
+ kn as EmptyPlaceholder,
2004
2037
  Tn as EmptyPlaceholderFlex,
2005
2038
  Dn as EmptyPlaceholderFlexWrapper,
2006
- Js as EntityIcon,
2007
- Mn as EntityPanelUploader,
2008
- Bn as EntityPath,
2009
- Hn as EntityTooltip,
2039
+ Qs as EntityIcon,
2040
+ _n as EntityPanelUploader,
2041
+ Fn as EntityPath,
2042
+ Bn as EntityTooltip,
2010
2043
  vs as EnumEditor,
2011
2044
  Es as EnumEditorItem,
2012
2045
  rt as FEATURED_VERSION_TYPES,
2013
2046
  na as FILTER_TYPES_BY_SCOPE,
2014
2047
  vo as FLOATING_TOOLBAR,
2015
- ks as FeaturedVersionOrder,
2016
- xt as FeedbackContext,
2048
+ Cs as FeaturedVersionOrder,
2049
+ Bt as FeedbackContext,
2017
2050
  Za as FeedbackProvider,
2018
2051
  fn as FieldLabel,
2019
2052
  mn as FileThumbnail,
2020
- qn as FilterErrorActions,
2053
+ Kn as FilterErrorActions,
2021
2054
  ot as FreeTrialLink,
2022
- Cs as GROUP_KEY_PREFIX,
2055
+ ks as GROUP_KEY_PREFIX,
2023
2056
  Os as GUEST_KEY_PREFIX,
2024
2057
  Eo as INSERT_MENTION_TRIGGER_COMMAND,
2025
- Pn as InfoMessage,
2026
- Nn as JsonViewer,
2058
+ Rn as InfoMessage,
2059
+ An as JsonViewer,
2027
2060
  Ss as LegacyBadge,
2028
2061
  qs as LinkManagerItem,
2029
2062
  Zs as LinksManager,
2030
2063
  es as ListAttributeForm,
2031
2064
  ts as ListMetaData,
2032
- ko as MARKDOWN_TRANSFORMERS,
2033
- Co as MENTION,
2065
+ Co as MARKDOWN_TRANSFORMERS,
2066
+ ko as MENTION,
2034
2067
  Oo as MENTION_REF_TYPES,
2035
2068
  So as MENTION_TRIGGER_BY_TYPE,
2036
- Vn as MENU_PORTAL_CONTENT_ID,
2037
- Rn as MENU_PORTAL_DIALOG_ID,
2069
+ hr as MENU_PORTAL_CONTENT_ID,
2070
+ gr as MENU_PORTAL_DIALOG_ID,
2038
2071
  To as MarkdownEditor,
2039
2072
  Do as MediaBlock,
2040
2073
  Vo as MediaNode,
2041
2074
  Ro as MentionNode,
2042
- In as Menu,
2043
- An as MenuContainer,
2044
- Fn as MenuList,
2075
+ br as Menu,
2076
+ wr as MenuContainer,
2077
+ yr as MenuList,
2045
2078
  Io as NO_DATE,
2046
2079
  On as Placeholder,
2047
2080
  Ts as PowerpackButton,
@@ -2049,80 +2082,81 @@ export {
2049
2082
  ss as ProjectPageRemote,
2050
2083
  Ds as ProjectTableSettings,
2051
2084
  en as RefreshToast,
2052
- Pe as RemotePageWrapper,
2085
+ Fe as RemotePageWrapper,
2053
2086
  Vs as RequiredAddonVersion,
2054
2087
  hn as ReviewableCard,
2055
2088
  gn as ReviewableProgressCard,
2056
2089
  bn as ReviewableUpload,
2057
- Un as ReviewablesList,
2090
+ Pn as ReviewablesList,
2058
2091
  Rs as ReviewablesSelector,
2059
2092
  Is as SettingOption,
2060
2093
  As as SettingSwitch,
2061
- Fs as SettingsPanel,
2094
+ xs as SettingsPanel,
2062
2095
  _s as SettingsPanelItemTemplate,
2063
- Ps as ShareOptionIcon,
2096
+ Fs as ShareOptionIcon,
2064
2097
  zs as SimpleForm,
2065
- pr as SimpleFormDialog,
2066
- xs as SizeSlider,
2098
+ ir as SimpleFormDialog,
2099
+ Ps as SizeSlider,
2067
2100
  Ns as SplitterStyles,
2068
2101
  wn as StackedThumbnails,
2069
- Ls as StyledLink,
2102
+ Ms as StyledLink,
2070
2103
  eo as SubtasksManagerWrapper,
2071
- jn as SupportBubble,
2072
- lr as SyncButton,
2073
- Ms as TEAM_KEY_PREFIX,
2104
+ Hn as SupportBubble,
2105
+ ar as SyncButton,
2106
+ Ls as TEAM_KEY_PREFIX,
2074
2107
  Bs as TableGridSwitch,
2075
- mr as TableSearch,
2076
- nr as TableSettingsFallback,
2108
+ cr as TableSearch,
2109
+ er as TableSettingsFallback,
2077
2110
  yn as Thumbnail,
2078
- cr as ThumbnailSimple,
2111
+ rr as ThumbnailSimple,
2079
2112
  Us as USER_KEY_PREFIX,
2080
2113
  Gs as UploadVersionDialog,
2081
2114
  Ao as UserImage,
2082
2115
  qt as VersionUploadContext,
2083
2116
  qa as VersionUploadProvider,
2084
2117
  vn as Watchers,
2085
- Fo as YouTubeEmbed,
2118
+ xo as YouTubeEmbed,
2086
2119
  _o as YouTubeNode,
2087
2120
  on as buildChildrenDetails,
2088
2121
  nn as buildEntityLabel,
2089
2122
  rn as buildExpectedCounts,
2090
2123
  ls as buildScopes,
2091
- Po as createFeedMentionSource,
2124
+ sr as buildSortMenuItem,
2125
+ Fo as createFeedMentionSource,
2092
2126
  we as customRangeOption,
2093
- xo as dateOptions,
2127
+ Po as dateOptions,
2094
2128
  No as datePresetOptions,
2095
- Lo as detectRelativeDatePattern,
2096
- Mo as filterDateFunctions,
2129
+ Mo as detectRelativeDatePattern,
2130
+ Lo as filterDateFunctions,
2097
2131
  Bo as generateDateOptions,
2098
2132
  ye as generateDatePresetOptions,
2099
- Gn as getGroupedReviewables,
2133
+ Nn as getGroupedReviewables,
2100
2134
  Uo as getInlineMediaFileIds,
2101
2135
  Go as getLinkLabel,
2102
2136
  Wo as getMediaKind,
2103
- Yo as getMentionTrigger,
2104
- Ho as getProjectFileId,
2137
+ Ho as getMentionTrigger,
2138
+ Yo as getProjectFileId,
2105
2139
  $o as getSourceLink,
2106
2140
  Ws as getUiTypeLabel,
2107
2141
  to as groupLinksByEntity,
2108
2142
  zo as isMediaFile,
2109
- er as markdownToPlainText,
2143
+ Xn as markdownToPlainText,
2110
2144
  Ko as normalizeLegacyMarkdown,
2111
2145
  jo as parseActivityLink,
2112
- Jt as parseFilename,
2146
+ Qt as parseFilename,
2113
2147
  Xo as parseYouTubeUrl,
2114
- tr as renderMediaParagraph,
2115
- ar as renderYouTubeParagraph,
2148
+ Jn as renderMediaParagraph,
2149
+ Qn as renderYouTubeParagraph,
2116
2150
  rs as splitClientFiltersByScope,
2117
2151
  ns as splitFiltersByScope,
2118
2152
  ln as sumExpectedCounts,
2119
- Qo as toggleBlockFormat,
2153
+ Jo as toggleBlockFormat,
2120
2154
  os as useBuildFilterOptions,
2121
- sr as useDateRangeFilter,
2122
- Xn as useFeedback,
2123
- Qn as useFeedbackSafe,
2124
- gr as useOptionalVersionUploadContext,
2155
+ qn as useDateRangeFilter,
2156
+ Yn as useFeedback,
2157
+ $n as useFeedbackSafe,
2158
+ pr as useOptionalVersionUploadContext,
2125
2159
  En as useReviewablesUpload,
2126
2160
  ao as useUpdateLinks,
2127
- br as useVersionUploadContext
2161
+ fr as useVersionUploadContext
2128
2162
  };