@ynput/ayon-frontend-shared 0.8.0 → 0.9.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 (43) hide show
  1. package/dist/DetailsPanel.es.js +2 -2
  2. package/dist/ListTable.es.js +1 -1
  3. package/dist/NewEntity.es.js +5 -3
  4. package/dist/ProjectTreeTable.es.js +4153 -4130
  5. package/dist/ProjectsTable.es.js +5 -4
  6. package/dist/Slicer.es.js +326 -293
  7. package/dist/Views.es.js +724 -714
  8. package/dist/chunks/ColumnDropIndicator.es.js +10 -10
  9. package/dist/chunks/DeleteEntitiesConfirmDialog.es.js +44 -38
  10. package/dist/chunks/EntityPickerDialog.es.js +1 -1
  11. package/dist/chunks/Feed.es.js +41 -39
  12. package/dist/chunks/FilmstripEntityCard.es.js +1 -1
  13. package/dist/chunks/GroupSettingsFallback.es.js +3 -2
  14. package/dist/chunks/MetaWidget.es.js +425 -411
  15. package/dist/chunks/NewEntityContextInstance.es.js +6 -5
  16. package/dist/chunks/ReviewablesSelector.es.js +76 -76
  17. package/dist/chunks/SimpleTable.es.js +151 -149
  18. package/dist/chunks/Slicer.es.js +637 -617
  19. package/dist/chunks/TableExportContextInstance.es.js +141 -136
  20. package/dist/chunks/ThumbnailSimple.es.js +11 -11
  21. package/dist/chunks/Watchers.es.js +46 -46
  22. package/dist/chunks/getUris.es.js +1 -1
  23. package/dist/chunks/searchTerms.es.js +618 -581
  24. package/dist/chunks/useCreateContextMenu.es.js +15 -13
  25. package/dist/components.es.js +1393 -1314
  26. package/dist/context.es.js +1 -1
  27. package/dist/hooks.es.js +2 -2
  28. package/dist/index.es.js +11 -10
  29. package/dist/types/ContextMenu.d.ts +1 -1
  30. package/dist/types/Feed.d.ts +1 -1
  31. package/dist/types/ListTable.d.ts +1 -1
  32. package/dist/types/NewEntity.d.ts +2 -0
  33. package/dist/types/ProjectTreeTable.d.ts +121 -3
  34. package/dist/types/ProjectsTable.d.ts +1 -1
  35. package/dist/types/SimpleTable.d.ts +1 -1
  36. package/dist/types/Slicer.d.ts +7 -1
  37. package/dist/types/Views.d.ts +5 -0
  38. package/dist/types/api.d.ts +1 -0
  39. package/dist/types/components.d.ts +164 -1
  40. package/dist/types/context.d.ts +2 -1
  41. package/dist/types/util.d.ts +21 -0
  42. package/dist/util.es.js +116 -113
  43. package/package.json +2 -2
@@ -260,6 +260,12 @@ declare type AddonMenuItem =
260
260
 
261
261
  export declare const AddonMoreMenu: ({ items, icon, label, tooltip, variant, align, disabled, className, onError, "data-testid": testId, }: HostMoreMenuProps) => JSX_2.Element;
262
262
 
263
+ /**
264
+ * The addons' sections, each in a panel titled like AYON's own. A power feature's section shows
265
+ * only with a Power Pack licence; without one the page shows AYON's preview of it instead.
266
+ */
267
+ export declare const AddonProfileSections: () => JSX_2.Element;
268
+
263
269
  export declare const AddonServices: ({ projectName }: {
264
270
  projectName: string | null;
265
271
  }) => JSX_2.Element;
@@ -280,6 +286,22 @@ declare interface AddonUser {
280
286
  isDeveloper: boolean
281
287
  }
282
288
 
289
+ /** The addons' sections, each in a panel titled like AYON's own. */
290
+ export declare const AddonUserDetailsSections: ({ context }: AddonUserDetailsSectionsProps) => JSX_2.Element;
291
+
292
+ declare interface AddonUserDetailsSectionsProps {
293
+ context: UserDetailsContext;
294
+ }
295
+
296
+ export declare interface AddonUserMenuItems {
297
+ /** first in the menu (`position: 'top'`) */
298
+ topItems: MenuItemType[];
299
+ /** after the menu's own items, above Delete */
300
+ items: MenuItemType[];
301
+ /** loads the items' code: call it when the menu opens */
302
+ prefetch: () => void;
303
+ }
304
+
283
305
  declare type AlignType = 'left' | 'right';
284
306
 
285
307
  declare type Anatomy = {
@@ -2180,6 +2202,13 @@ declare interface HostMoreMenuProps extends MoreMenuProps {
2180
2202
  onError: (error: unknown) => void
2181
2203
  }
2182
2204
 
2205
+ /** What the host's `useContextMenu` returns: the opener, with where to report a failing item. */
2206
+ declare type HostOpenContextMenu = (
2207
+ event: MouseEvent_2,
2208
+ items: AddonMenuItem[],
2209
+ onError: (error: unknown) => void,
2210
+ ) => void
2211
+
2183
2212
  declare type IconInputPt = Partial<React.ComponentProps<typeof Styled.IconSelect>>;
2184
2213
 
2185
2214
  declare type IconModel = {
@@ -2930,7 +2959,7 @@ declare type PowerpackDialogType = {
2930
2959
  icon?: string;
2931
2960
  };
2932
2961
 
2933
- declare type PowerpackFeature = 'slicer' | 'annotations' | 'releases' | 'advancedFilters' | 'listAttributes' | 'listFolders' | 'listAccess' | 'groupAttributes' | 'sharedViews' | 'commentCategories' | 'projectFolders' | 'columnSummaries' | 'listValues' | 'entityLinks' | 'tableExport';
2962
+ declare type PowerpackFeature = 'slicer' | 'annotations' | 'releases' | 'advancedFilters' | 'listAttributes' | 'listFolders' | 'listAccess' | 'groupAttributes' | 'sharedViews' | 'commentCategories' | 'projectFolders' | 'columnSummaries' | 'listValues' | 'entityLinks' | 'tableExport' | 'personalApiKeys';
2934
2963
 
2935
2964
  declare interface Processing extends ReviewableProcessingStatus {
2936
2965
  progress?: number;
@@ -2973,6 +3002,24 @@ declare type ProductTypeListItem = {
2973
3002
  icon?: string | null;
2974
3003
  };
2975
3004
 
3005
+ /** Context of a profile section: nothing besides `user`, the signed-in user it is about. */
3006
+ declare type ProfileSectionContext = Record<never, never>
3007
+
3008
+ /** Description of a `profile.section` contribution. */
3009
+ declare interface ProfileSectionMeta {
3010
+ /** unique among the addon's sections */
3011
+ id: string
3012
+ /** the section's title, above its content */
3013
+ title: string
3014
+ /** order among addon sections, lowest first */
3015
+ order?: number
3016
+ /**
3017
+ * a Power Pack feature: shown only with a Power Pack licence. Without one, AYON shows its own
3018
+ * preview of the feature where it has one. `false` by default
3019
+ */
3020
+ powerFeature?: boolean
3021
+ }
3022
+
2976
3023
  declare interface ProjectContextValue extends ProjectModelWithProducts {
2977
3024
  projectName: string;
2978
3025
  isLoading: boolean;
@@ -3664,6 +3711,9 @@ declare type ShortcutKeyEvent = Pick<KeyboardEvent, 'key' | 'code' | 'ctrlKey' |
3664
3711
  */
3665
3712
  declare type ShortcutTable = ProjectTablePage | 'slicer' | 'projects' | 'listsPanel' | 'versionsPanel'
3666
3713
 
3714
+ /** A contribution with this `selection` shows for `count` selected users. */
3715
+ export declare const showsForSelection: (selection: UserSelection | undefined, count: number) => boolean;
3716
+
3667
3717
  declare interface SidebarConfig {
3668
3718
  width?: string;
3669
3719
  minWidth?: string;
@@ -3948,6 +3998,38 @@ declare interface SlotMap {
3948
3998
  context: TableShortcutContext
3949
3999
  pieces: TableShortcutPieces
3950
4000
  }
4001
+ /**
4002
+ * A section in the user details panel (Settings → Users), below AYON's own forms, for the
4003
+ * selected users. The section shows from the description, titled like AYON's; `component`
4004
+ * loads when it is first shown. Saving is the section's own: AYON's Save button doesn't see it.
4005
+ */
4006
+ 'userDetails.section': {
4007
+ version: 1
4008
+ meta: UserDetailsSectionMeta
4009
+ context: UserDetailsContext
4010
+ pieces: { component: Loader<ComponentType<SlotProps<'userDetails.section'>>> }
4011
+ }
4012
+ /**
4013
+ * An item in the user details panel's "more" menu (Settings → Users), for the selected users.
4014
+ * It shows from the description; `run` loads when the menu opens and is called on click.
4015
+ */
4016
+ 'userDetails.menuItem': {
4017
+ version: 1
4018
+ meta: UserDetailsMenuItemMeta
4019
+ context: UserDetailsContext
4020
+ pieces: { run: Loader<RunPiece<'userDetails.menuItem'>> }
4021
+ }
4022
+ /**
4023
+ * A section on the signed-in user's profile page (Account → Profile), below AYON's own forms.
4024
+ * The section shows from the description, titled like AYON's; `component` loads when it is first
4025
+ * shown. Saving is the section's own: AYON's "Save profile" button doesn't see it.
4026
+ */
4027
+ 'profile.section': {
4028
+ version: 1
4029
+ meta: ProfileSectionMeta
4030
+ context: ProfileSectionContext
4031
+ pieces: { component: Loader<ComponentType<SlotProps<'profile.section'>>> }
4032
+ }
3951
4033
  /**
3952
4034
  * Code with no UI that runs while AYON is open, whatever the page: keeping a state, listening to
3953
4035
  * websocket events, registering a store listener. `component` loads at startup and is mounted
@@ -4474,6 +4556,8 @@ export declare type ToolbarLayout = (ToolbarItem | '|')[];
4474
4556
 
4475
4557
  declare type TopicUpdateType = 'created' | 'label_changed' | 'renamed' | 'type_changed' | 'status_changed' | 'tags_changed' | 'attrib_changed' | 'deleted';
4476
4558
 
4559
+ export declare const toUserRef: (user: UserDetailsSource) => UserRef;
4560
+
4477
4561
  declare type UpdateEntitiesArgs = {
4478
4562
  operations: UpdateEntityOperation[];
4479
4563
  entityType: EntityType_2;
@@ -4531,6 +4615,8 @@ export declare const UploadVersionDialog: FC<UploadVersionDialogProps>;
4531
4615
  declare interface UploadVersionDialogProps {
4532
4616
  }
4533
4617
 
4618
+ export declare const useAddonContextMenu: () => HostOpenContextMenu;
4619
+
4534
4620
  /**
4535
4621
  * The sections addons contribute to this page's Customize panel (projectTable.customizeSection
4536
4622
  * slot, @ynput/ayon-addon), for ProjectTableSettings' `settings`. The entries show from the
@@ -4546,6 +4632,9 @@ export declare const useAddonTableShortcuts: (table: ShortcutTable | undefined)
4546
4632
  dialog: OpenAddonShortcutDialog | null;
4547
4633
  };
4548
4634
 
4635
+ /** The addons' items for the user details "more" menu. */
4636
+ export declare const useAddonUserMenuItems: (context: UserDetailsContext) => AddonUserMenuItems;
4637
+
4549
4638
  export declare const useBuildFilterOptions: ({ filterTypes: globalFilterTypes, projectNames, scope, scopes: customScopes, data, config, power, }: BuildFilterOptions) => {
4550
4639
  options: Option_2[];
4551
4640
  groupOptions: SearchFilterGroupOption[];
@@ -4615,6 +4704,49 @@ export declare const useProjectPageSlotContext: (projectName: string) => SlotMap
4615
4704
 
4616
4705
  export declare const USER_KEY_PREFIX = "user:";
4617
4706
 
4707
+ /** Context of a user details section or menu item. */
4708
+ declare interface UserDetailsContext extends UsersScope {
4709
+ /**
4710
+ * the signed-in user can't change these users (a manager and an admin among them): show,
4711
+ * don't edit
4712
+ */
4713
+ readOnly: boolean
4714
+ }
4715
+
4716
+ /** Description of a `userDetails.menuItem` contribution. */
4717
+ declare interface UserDetailsMenuItemMeta extends MenuItemMeta {
4718
+ /** `single`: only when one user is selected; `multi` (default): for one or more */
4719
+ selection?: UserSelection
4720
+ }
4721
+
4722
+ /** Description of a `userDetails.section` contribution. */
4723
+ declare interface UserDetailsSectionMeta {
4724
+ /** unique among the addon's sections */
4725
+ id: string
4726
+ /** the section's title, above its content */
4727
+ title: string
4728
+ /** order among addon sections, lowest first */
4729
+ order?: number
4730
+ /** `single`: only when one user is selected; `multi` (default): for one or more */
4731
+ selection?: UserSelection
4732
+ /** also shown for service users, whose panel has no forms; `false` by default */
4733
+ serviceUsers?: boolean
4734
+ }
4735
+
4736
+ /** A user as AYON's users queries have it. */
4737
+ export declare interface UserDetailsSource {
4738
+ name: string;
4739
+ active?: boolean;
4740
+ isAdmin?: boolean;
4741
+ isManager?: boolean;
4742
+ isGuest?: boolean;
4743
+ isService?: boolean;
4744
+ attrib?: {
4745
+ fullName?: string | null;
4746
+ email?: string | null;
4747
+ } | null;
4748
+ }
4749
+
4618
4750
  export declare const useReviewablesUpload: ({ projectName, versionId, taskId, folderId, productId, dispatch, onUpload, onProgress, }: UseReviewablesUploadProps) => UploadHandlers;
4619
4751
 
4620
4752
  export declare interface UseReviewablesUploadProps {
@@ -4660,11 +4792,38 @@ declare type UserModel = {
4660
4792
  updatedAt?: string;
4661
4793
  };
4662
4794
 
4795
+ /**
4796
+ * A user a slot is about, e.g. one selected in Settings → Users. Not the signed-in user: that is
4797
+ * `user` in every slot.
4798
+ */
4799
+ declare interface UserRef {
4800
+ name: string
4801
+ fullName?: string
4802
+ email?: string
4803
+ /** the account is active (not disabled) */
4804
+ active: boolean
4805
+ isAdmin: boolean
4806
+ /** managers and admins */
4807
+ isManager: boolean
4808
+ isGuest: boolean
4809
+ /** a service user (API key) */
4810
+ isService: boolean
4811
+ }
4812
+
4663
4813
  /** Every slot: the signed-in user. The host adds it; AYON renders addons only once signed in. */
4664
4814
  declare interface UserScope {
4665
4815
  user: AddonUser
4666
4816
  }
4667
4817
 
4818
+ /** Which selections a user details contribution shows for. */
4819
+ declare type UserSelection = 'single' | 'multi'
4820
+
4821
+ /** Slots about one or more users. */
4822
+ declare interface UsersScope {
4823
+ /** the users the slot is about, e.g. the ones selected in Settings → Users */
4824
+ users: UserRef[]
4825
+ }
4826
+
4668
4827
  declare type UserSuggestionItem = {
4669
4828
  /** The date and time when the suggested entity was created */
4670
4829
  createdAt?: string | null;
@@ -4859,6 +5018,9 @@ declare const useUpdateSubtasksMutation: <R extends Record<string, any> = ({
4859
5018
  reset: () => void;
4860
5019
  }];
4861
5020
 
5021
+ /** The context of the user details slots for the selected users. */
5022
+ export declare const useUserDetailsSlotContext: (users: UserDetailsSource[], readOnly: boolean) => UserDetailsContext;
5023
+
4862
5024
  export declare const useVersionUploadContext: () => VersionUploadContextType;
4863
5025
 
4864
5026
  declare type UseViewMutations = {
@@ -5029,6 +5191,7 @@ declare interface ViewsContextValue {
5029
5191
  onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
5030
5192
  onLoadBaseView: (isStudioScope: boolean) => Promise<void>;
5031
5193
  resetWorkingView: () => Promise<void>;
5194
+ updateControlledSettings?: (updated: ViewSettings) => void;
5032
5195
  api: typeof viewsQueries;
5033
5196
  dispatch: any;
5034
5197
  }
@@ -949,7 +949,7 @@ export declare type PowerpackDialogType = {
949
949
  icon?: string;
950
950
  };
951
951
 
952
- export declare type PowerpackFeature = 'slicer' | 'annotations' | 'releases' | 'advancedFilters' | 'listAttributes' | 'listFolders' | 'listAccess' | 'groupAttributes' | 'sharedViews' | 'commentCategories' | 'projectFolders' | 'columnSummaries' | 'listValues' | 'entityLinks' | 'tableExport';
952
+ export declare type PowerpackFeature = 'slicer' | 'annotations' | 'releases' | 'advancedFilters' | 'listAttributes' | 'listFolders' | 'listAccess' | 'groupAttributes' | 'sharedViews' | 'commentCategories' | 'projectFolders' | 'columnSummaries' | 'listValues' | 'entityLinks' | 'tableExport' | 'personalApiKeys';
953
953
 
954
954
  export declare const powerpackFeatureOrder: PowerpackFeature[];
955
955
 
@@ -2173,6 +2173,7 @@ declare interface ViewsContextValue {
2173
2173
  onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
2174
2174
  onLoadBaseView: (isStudioScope: boolean) => Promise<void>;
2175
2175
  resetWorkingView: () => Promise<void>;
2176
+ updateControlledSettings?: (updated: ViewSettings) => void;
2176
2177
  api: typeof viewsQueries;
2177
2178
  dispatch: any;
2178
2179
  }
@@ -685,6 +685,10 @@ export declare const getProjectThumbnailUrl: (projectName: string, thumbnailHash
685
685
 
686
686
  export declare const getRequestErrorString: (error: unknown) => string;
687
687
 
688
+ export declare const getSearchMatchedFolderIds: (folders: SearchableFolder[], query: string) => string[] | null;
689
+
690
+ export declare const getSearchMatchedRowIds: (rows: SearchableRow[], query: string) => string[] | null;
691
+
688
692
  export declare const getSelectableAssignees: <T extends {
689
693
  name: string;
690
694
  hidden?: boolean;
@@ -1043,6 +1047,21 @@ export declare const sanitizeProductName: (name: string) => string;
1043
1047
 
1044
1048
  declare type ScopeEntityType = 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile' | 'project' | 'user';
1045
1049
 
1050
+ declare interface SearchableFolder {
1051
+ id: string;
1052
+ parentId?: string | null;
1053
+ name: string;
1054
+ label?: string | null;
1055
+ }
1056
+
1057
+ declare interface SearchableRow {
1058
+ id: string;
1059
+ name?: string | null;
1060
+ label?: string | null;
1061
+ parents?: string[];
1062
+ subRows?: SearchableRow[];
1063
+ }
1064
+
1046
1065
  export declare const searchQueryToFilter: <C>(query: string, toCondition: (term: string) => C) => {
1047
1066
  operator: "or";
1048
1067
  conditions: {
@@ -1204,6 +1223,8 @@ export declare type ThumbnailUpdater = (messages: ThumbnailUpdateMessage[]) => v
1204
1223
 
1205
1224
  export declare const toDropdownErrorText: (text?: string) => string | undefined;
1206
1225
 
1226
+ export declare const toSlicerSearchHaystack: (label: string | undefined, name: string | undefined, parents?: string[]) => string;
1227
+
1207
1228
  export declare const URL_PARAM_ID = "uri";
1208
1229
 
1209
1230
  export declare const useActiveEntities: () => ActiveEntity[];
package/dist/util.es.js CHANGED
@@ -1,32 +1,32 @@
1
- import { K as F, g as P, a as R } from "./chunks/platform.es.js";
1
+ import { K as F, g as R, a as P } from "./chunks/platform.es.js";
2
2
  import { c as g } from "./chunks/confirmDelete.es.js";
3
3
  import { a as L } from "./chunks/confirmDelete.es.js";
4
- import { e as U, g as D, a as M } from "./chunks/getEntityTypeIcon.es.js";
5
- import { g as k, r as N } from "./chunks/replaceRoot.es.js";
6
- import { A as O, c as B, e as H, g as V, a as z, s as K, u as Y, b as Q } from "./chunks/activeEntities.es.js";
4
+ import { e as C, g as U, a as D } from "./chunks/getEntityTypeIcon.es.js";
5
+ import { g as k, r as w } from "./chunks/replaceRoot.es.js";
6
+ import { A as O, c as H, e as B, g as V, a as z, s as K, u as Y, b as Q } from "./chunks/activeEntities.es.js";
7
7
  import { c as j } from "./chunks/copyToClipboard.es.js";
8
8
  import { g as q, h as G } from "./chunks/humanizeFieldName.es.js";
9
9
  import { c as X, a as Z, g as ee, b as ae, d as te, p as re, e as se } from "./chunks/iconUtils.es.js";
10
10
  import { bt as u } from "./chunks/searchTerms.es.js";
11
- import { bu as ie, bv as ne, bw as le, bx as ce, bq as me, by as pe, bs as de, bz as ge, bA as ue, bB as Ee, bp as Te, bC as fe, bD as be, bE as he, br as Se, bF as xe, bG as ye, bH as Ie, bI as Ae, bJ as Fe } from "./chunks/searchTerms.es.js";
12
- import { M as Re, a as _e, b as Le, c as Ce, d as Ue, e as De, f as Me, g as ve, h as ke, i as Ne, j as we, p as Oe, s as Be, k as He, v as Ve, w as ze } from "./chunks/realtimeUpdatesUtils.es.js";
13
- import { e as Ye } from "./chunks/extractVersionFromFilename.es.js";
14
- import { c as $e, a as je, b as Je, g as qe, h as Ge, s as We, v as Xe, d as Ze, e as ea } from "./chunks/versionUploadHelpers.es.js";
15
- import { c as ta, a as ra } from "./chunks/columnConfigConverter.es.js";
16
- import { D as oa, L as ia, l as na, r as la, s as ca } from "./chunks/sortLists.es.js";
17
- import { p as pa } from "./chunks/pluralize.es.js";
18
- import { b as ga, a as ua, h as Ea, p as Ta, r as fa } from "./chunks/colorUtils.es.js";
19
- import { g as ha } from "./chunks/getGroupByDataType.es.js";
20
- import { U as xa, b as ya, c as Ia, g as Aa, a as Fa, d as Pa, p as Ra, u as _a } from "./chunks/getBundleMode.es.js";
21
- import { b as Ca, s as Ua } from "./chunks/buildHierarchicalTableRows.es.js";
22
- import { g as Ma } from "./chunks/getProjectDisplayName.es.js";
23
- import { F as ka, a as Na, g as wa, b as Oa, c as Ba } from "./chunks/getThumbnailUrl.es.js";
24
- import { p as Va } from "./chunks/parseFilename.es.js";
25
- import { i as Ka } from "./chunks/isHTMLElement.es.js";
26
- import { S as Qa, a as $a } from "./chunks/afterStartup.es.js";
11
+ import { bu as ie, bv as ne, bw as le, bx as ce, bq as me, by as de, bs as pe, bz as ge, bA as ue, bB as be, bC as Ee, bD as Te, bp as fe, bE as he, bF as Se, bG as ye, br as xe, bH as Ie, bI as Ae, bJ as Fe, bK as Re, bL as Pe, bM as _e } from "./chunks/searchTerms.es.js";
12
+ import { M as Me, a as Ce, b as Ue, c as De, d as ve, e as ke, f as we, g as Ne, h as Oe, i as He, j as Be, p as Ve, s as ze, k as Ke, v as Ye, w as Qe } from "./chunks/realtimeUpdatesUtils.es.js";
13
+ import { e as je } from "./chunks/extractVersionFromFilename.es.js";
14
+ import { c as qe, a as Ge, b as We, g as Xe, h as Ze, s as ea, v as aa, d as ta, e as ra } from "./chunks/versionUploadHelpers.es.js";
15
+ import { c as oa, a as ia } from "./chunks/columnConfigConverter.es.js";
16
+ import { D as la, L as ca, l as ma, r as da, s as pa } from "./chunks/sortLists.es.js";
17
+ import { p as ua } from "./chunks/pluralize.es.js";
18
+ import { b as Ea, a as Ta, h as fa, p as ha, r as Sa } from "./chunks/colorUtils.es.js";
19
+ import { g as xa } from "./chunks/getGroupByDataType.es.js";
20
+ import { U as Aa, b as Fa, c as Ra, g as Pa, a as _a, d as La, p as Ma, u as Ca } from "./chunks/getBundleMode.es.js";
21
+ import { b as Da, s as va } from "./chunks/buildHierarchicalTableRows.es.js";
22
+ import { g as wa } from "./chunks/getProjectDisplayName.es.js";
23
+ import { F as Oa, a as Ha, g as Ba, b as Va, c as za } from "./chunks/getThumbnailUrl.es.js";
24
+ import { p as Ya } from "./chunks/parseFilename.es.js";
25
+ import { i as $a } from "./chunks/isHTMLElement.es.js";
26
+ import { S as Ja, a as qa } from "./chunks/afterStartup.es.js";
27
27
  import l from "axios";
28
- import { ConfirmDialog as Ja } from "primereact/confirmdialog";
29
- const b = (e) => {
28
+ import { ConfirmDialog as Wa } from "primereact/confirmdialog";
29
+ const f = (e) => {
30
30
  const t = /* @__PURE__ */ new Map(), s = [];
31
31
  for (const a of e)
32
32
  t.set(a.id, { ...a, children: [] });
@@ -43,7 +43,7 @@ const b = (e) => {
43
43
  itemTypeName: o,
44
44
  messageDetail: c
45
45
  }) => {
46
- const n = Array.isArray(e) ? e : [e], i = n.map((r) => t?.find((d) => d.id === r)).filter(Boolean), m = i.length === 1 ? i[0]?.label || "Folder" : i.length > 1 ? `${i.length} folders` : "Folder", p = `Only the folder(s) will be deleted. ${o} inside the folder will remain.`;
46
+ const n = Array.isArray(e) ? e : [e], i = n.map((r) => t?.find((p) => p.id === r)).filter(Boolean), m = i.length === 1 ? i[0]?.label || "Folder" : i.length > 1 ? `${i.length} folders` : "Folder", d = `Only the folder(s) will be deleted. ${o} inside the folder will remain.`;
47
47
  g({
48
48
  accept: async () => {
49
49
  try {
@@ -53,7 +53,7 @@ const b = (e) => {
53
53
  }
54
54
  },
55
55
  label: m,
56
- message: c || p
56
+ message: c || d
57
57
  });
58
58
  }, S = {
59
59
  "@@@": {
@@ -66,125 +66,128 @@ const b = (e) => {
66
66
  id: "user",
67
67
  isCircle: !0
68
68
  }
69
- }, x = (e) => {
69
+ }, y = (e) => {
70
70
  localStorage.setItem("accessToken", e), l.defaults.headers.common.Authorization = `Bearer ${e}`, document.cookie = `accessToken=${e}; path=/; max-age=86400`;
71
- }, y = () => {
71
+ }, x = () => {
72
72
  localStorage.removeItem("accessToken"), delete l.defaults.headers.common.Authorization, document.cookie = "accessToken=; path=/; max-age=0";
73
73
  };
74
74
  export {
75
75
  O as ACTIVE_ENTITIES_PRIORITY,
76
- Ja as ConfirmDialog,
77
- oa as DEFAULT_LISTS_SORT,
76
+ Wa as ConfirmDialog,
77
+ la as DEFAULT_LISTS_SORT,
78
78
  ie as ENUM_CONTEXT_PARAMS,
79
- ka as FILMSTRIP_ENTITY_TYPES,
79
+ Oa as FILMSTRIP_ENTITY_TYPES,
80
80
  F as KeyMode,
81
- ia as LISTS_SORT_OPTIONS,
82
- Re as MAX_SORT_KEYS,
81
+ ca as LISTS_SORT_OPTIONS,
82
+ Me as MAX_SORT_KEYS,
83
83
  ne as PubSub,
84
- _e as REALTIME_REST_CALL_LIMIT,
85
- Le as REALTIME_REST_JITTER,
86
- Ce as REALTIME_TASK_SUPPORTED_VALUE_FIELDS,
87
- Ue as REALTIME_UPDATE_DEBOUNCE,
88
- Qa as STARTUP_DELAY,
89
- xa as URL_PARAM_ID,
90
- $a as afterStartup,
91
- ga as blendCategoryColor,
92
- ua as blendColors,
93
- ya as buildEntityUri,
94
- b as buildFolderHierarchy,
95
- Ca as buildHierarchicalTableRows,
96
- De as buildSortArgs,
84
+ Ce as REALTIME_REST_CALL_LIMIT,
85
+ Ue as REALTIME_REST_JITTER,
86
+ De as REALTIME_TASK_SUPPORTED_VALUE_FIELDS,
87
+ ve as REALTIME_UPDATE_DEBOUNCE,
88
+ Ja as STARTUP_DELAY,
89
+ Aa as URL_PARAM_ID,
90
+ qa as afterStartup,
91
+ Ea as blendCategoryColor,
92
+ Ta as blendColors,
93
+ Fa as buildEntityUri,
94
+ f as buildFolderHierarchy,
95
+ Da as buildHierarchicalTableRows,
96
+ ke as buildSortArgs,
97
97
  X as checkLabel,
98
98
  Z as checkName,
99
- y as clearAccessToken,
100
- B as clearActiveEntities,
99
+ x as clearAccessToken,
100
+ H as clearActiveEntities,
101
101
  g as confirmDelete,
102
102
  L as confirmDeleteDialog,
103
- Ia as consumeUriHandoff,
104
- ta as convertColumnConfigToTanstackStates,
105
- ra as convertTanstackStatesToColumnConfig,
103
+ Ra as consumeUriHandoff,
104
+ oa as convertColumnConfigToTanstackStates,
105
+ ia as convertTanstackStatesToColumnConfig,
106
106
  j as copyToClipboard,
107
- $e as createProductAndVersion,
108
- je as createProductHelper,
109
- Me as createRealtimeBatcher,
110
- Je as createVersionHelper,
111
- U as entityTypesWithIcons,
112
- H as extractEntityHierarchyFromParents,
113
- Ye as extractVersionFromFilename,
107
+ qe as createProductAndVersion,
108
+ Ge as createProductHelper,
109
+ we as createRealtimeBatcher,
110
+ We as createVersionHelper,
111
+ C as entityTypesWithIcons,
112
+ B as extractEntityHierarchyFromParents,
113
+ je as extractVersionFromFilename,
114
114
  le as filterBySearchQuery,
115
115
  V as getActiveEntities,
116
116
  ee as getAttributeIcon,
117
- Aa as getBundleModeFromUser,
118
- P as getCurrentPlatform,
117
+ Pa as getBundleModeFromUser,
118
+ R as getCurrentPlatform,
119
119
  ae as getEntityColor,
120
- Na as getEntityFilmstripUrl,
120
+ Ha as getEntityFilmstripUrl,
121
121
  te as getEntityIcon,
122
- ve as getEntityId,
123
- Fa as getEntityStateFromUri,
124
- wa as getEntityThumbnailUrl,
125
- D as getEntityTypeIcon,
122
+ Ne as getEntityId,
123
+ _a as getEntityStateFromUri,
124
+ Ba as getEntityThumbnailUrl,
125
+ U as getEntityTypeIcon,
126
126
  ce as getEnumContextParams,
127
127
  me as getEnumErrorText,
128
- pe as getEnumItemIcon,
128
+ de as getEnumItemIcon,
129
129
  u as getErrorMessage,
130
- Oa as getFileFilmstripUrl,
131
- ke as getForwardSortBy,
132
- ha as getGroupByDataType,
133
- M as getListIcon,
130
+ Va as getFileFilmstripUrl,
131
+ Oe as getForwardSortBy,
132
+ xa as getGroupByDataType,
133
+ D as getListIcon,
134
134
  q as getMixedState,
135
- qe as getNextVersionNumber,
136
- R as getPlatformShortcutKey,
137
- Ne as getPrimarySortKey,
135
+ Xe as getNextVersionNumber,
136
+ P as getPlatformShortcutKey,
137
+ He as getPrimarySortKey,
138
138
  z as getPriorityOptions,
139
- Ma as getProjectDisplayName,
140
- Ba as getProjectThumbnailUrl,
141
- de as getRequestErrorString,
142
- ge as getSelectableAssignees,
143
- ue as getSelectableEnumItems,
144
- Pa as getSettingsStateFromUri,
145
- we as getSupportedEntityPatch,
139
+ wa as getProjectDisplayName,
140
+ za as getProjectThumbnailUrl,
141
+ pe as getRequestErrorString,
142
+ ge as getSearchMatchedFolderIds,
143
+ ue as getSearchMatchedRowIds,
144
+ be as getSelectableAssignees,
145
+ Ee as getSelectableEnumItems,
146
+ La as getSettingsStateFromUri,
147
+ Be as getSupportedEntityPatch,
146
148
  k as groupResult,
147
149
  h as handleDeleteFolders,
148
- Ge as handleUploadError,
149
- Ee as hasEnumOptions,
150
- Te as hasEnumResolver,
151
- Ea as hexToRgb,
150
+ Ze as handleUploadError,
151
+ Te as hasEnumOptions,
152
+ fe as hasEnumResolver,
153
+ fa as hexToRgb,
152
154
  G as humanizeField,
153
- fe as isEnumContextParam,
154
- be as isEnumIconImage,
155
- Ka as isHTMLElement,
156
- na as labelCollator,
157
- he as matchSearchQuery,
155
+ he as isEnumContextParam,
156
+ Se as isEnumIconImage,
157
+ $a as isHTMLElement,
158
+ ma as labelCollator,
159
+ ye as matchSearchQuery,
158
160
  S as mentionTypeOptions,
159
- Se as normalizeEnumItems,
161
+ xe as normalizeEnumItems,
160
162
  re as parseAndFormatName,
161
- Ta as parseColor,
162
- Va as parseFilename,
163
+ ha as parseColor,
164
+ Ya as parseFilename,
163
165
  se as parseHtmlToPlainTextWithLinks,
164
- xe as parseSearchQuery,
165
- Ra as parseUri,
166
- Oe as parseViewSorting,
167
- ye as pastedListToSearch,
168
- pa as pluralize,
169
- N as replaceRoot,
170
- la as resolveListsSort,
171
- fa as rgbToHex,
172
- We as sanitizeProductName,
173
- Ie as searchQueryToFilter,
174
- Be as serializeViewSorting,
166
+ Ie as parseSearchQuery,
167
+ Ma as parseUri,
168
+ Ve as parseViewSorting,
169
+ Ae as pastedListToSearch,
170
+ ua as pluralize,
171
+ w as replaceRoot,
172
+ da as resolveListsSort,
173
+ Sa as rgbToHex,
174
+ ea as sanitizeProductName,
175
+ Fe as searchQueryToFilter,
176
+ ze as serializeViewSorting,
175
177
  K as setActiveEntities,
176
- Ua as shouldBlockShortcuts,
177
- Ae as sortKeysDeep,
178
- ca as sortLists,
179
- x as storeAccessToken,
180
- He as subscribeToThumbnailUpdates,
181
- Fe as toDropdownErrorText,
178
+ va as shouldBlockShortcuts,
179
+ Re as sortKeysDeep,
180
+ pa as sortLists,
181
+ y as storeAccessToken,
182
+ Ke as subscribeToThumbnailUpdates,
183
+ Pe as toDropdownErrorText,
184
+ _e as toSlicerSearchHaystack,
182
185
  Y as useActiveEntities,
183
186
  Q as useRegisterActiveEntities,
184
- _a as useStagingModeState,
185
- Ve as validateEntityId,
186
- Xe as validateFormData,
187
- Ze as validateProductName,
188
- ea as validateVersion,
189
- ze as waitForRealtimeJitter
187
+ Ca as useStagingModeState,
188
+ Ye as validateEntityId,
189
+ aa as validateFormData,
190
+ ta as validateProductName,
191
+ ra as validateVersion,
192
+ Qe as waitForRealtimeJitter
190
193
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ynput/ayon-frontend-shared",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Shared React components for AYON frontend",
5
5
  "repository": {
6
6
  "type": "git",
@@ -104,7 +104,7 @@
104
104
  "@reduxjs/toolkit": "2.11.2",
105
105
  "@rtk-query/graphql-request-base-query": "2.3.2",
106
106
  "@tanstack/react-table": "8.21.3",
107
- "@ynput/ayon-addon": "0.3.0",
107
+ "@ynput/ayon-addon": "0.5.0",
108
108
  "@ynput/ayon-react-components": "^1.25.1",
109
109
  "graphql-request": "7.4.0",
110
110
  "react": "18.3.1",