@ynput/ayon-frontend-shared 0.7.5 → 0.8.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 (74) hide show
  1. package/dist/DetailsPanel.es.js +471 -469
  2. package/dist/Feed.es.js +1 -1
  3. package/dist/ListTable.es.js +20 -20
  4. package/dist/NewEntity.es.js +7 -7
  5. package/dist/ProjectTreeTable.es.js +2523 -2502
  6. package/dist/ProjectsTable.es.js +5 -5
  7. package/dist/Slicer.es.js +28 -25
  8. package/dist/Views.es.js +150 -151
  9. package/dist/api.es.js +166 -165
  10. package/dist/chunks/Actions.es.js +9 -10
  11. package/dist/chunks/ColumnDropIndicator.es.js +4 -4
  12. package/dist/chunks/ColumnHeaderMenuUI.es.js +4 -5
  13. package/dist/chunks/DeleteEntitiesConfirmDialog.es.js +2 -2
  14. package/dist/chunks/DetailsDialog.es.js +3 -3
  15. package/dist/chunks/EmptyPlaceholder.es.js +7 -7
  16. package/dist/chunks/EntityPath.es.js +38 -39
  17. package/dist/chunks/EntityPickerDialog.es.js +482 -462
  18. package/dist/chunks/EntityTooltip.es.js +18 -19
  19. package/dist/chunks/Feed.es.js +1382 -1355
  20. package/dist/chunks/FilmstripEntityCard.es.js +5201 -0
  21. package/dist/chunks/FilterErrorActions.es.js +3 -4
  22. package/dist/chunks/GroupSettingsFallback.es.js +4 -4
  23. package/dist/chunks/Menu.es.js +242 -240
  24. package/dist/chunks/MetaWidget.es.js +1948 -1875
  25. package/dist/chunks/ProjectFoldersContext.es.js +237 -0
  26. package/dist/chunks/RepresentationsList.es.js +1 -1
  27. package/dist/chunks/ReviewablesSelector.es.js +1260 -1190
  28. package/dist/chunks/SimpleTable.es.js +303 -297
  29. package/dist/chunks/Slicer.es.js +420 -413
  30. package/dist/chunks/TableExportContextInstance.es.js +622 -378
  31. package/dist/chunks/TableSettingsFallback.es.js +3 -4
  32. package/dist/chunks/ThumbnailSimple.es.js +114 -99
  33. package/dist/chunks/ThumbnailUploaderContext.es.js +48 -0
  34. package/dist/chunks/VideoPlayer.es.js +8 -9
  35. package/dist/chunks/Watchers.es.js +929 -872
  36. package/dist/chunks/{ColumnDropIndicator.styled.es.js → addonColumnTags.es.js} +60 -47
  37. package/dist/chunks/expandRelativeDates.es.js +1 -1
  38. package/dist/chunks/getThumbnailUrl.es.js +33 -21
  39. package/dist/chunks/getUris.es.js +1580 -1610
  40. package/dist/chunks/queryFilterToClientFilter.es.js +1 -1
  41. package/dist/chunks/realtimeUpdatesUtils.es.js +15 -15
  42. package/dist/chunks/searchTerms.es.js +773 -696
  43. package/dist/chunks/useAttributeEnums.es.js +22 -22
  44. package/dist/chunks/useDateRangeFilter.es.js +1 -1
  45. package/dist/chunks/useHierarchySelection.es.js +3 -4
  46. package/dist/chunks/useLoadModule.es.js +3 -4
  47. package/dist/components.es.js +1391 -1253
  48. package/dist/context.es.js +645 -668
  49. package/dist/hooks.es.js +193 -171
  50. package/dist/index.es.js +4 -4
  51. package/dist/types/Actions.d.ts +10 -8
  52. package/dist/types/DetailsPanel.d.ts +54 -76
  53. package/dist/types/EntityPickerDialog.d.ts +51 -2
  54. package/dist/types/Feed.d.ts +24 -24
  55. package/dist/types/ListTable.d.ts +33 -27
  56. package/dist/types/NewEntity.d.ts +26 -39
  57. package/dist/types/ProjectTreeTable.d.ts +318 -212
  58. package/dist/types/ProjectsTable.d.ts +6 -6
  59. package/dist/types/RepresentationsList.d.ts +4 -0
  60. package/dist/types/Slicer.d.ts +63 -246
  61. package/dist/types/Views.d.ts +71 -298
  62. package/dist/types/api.d.ts +3164 -2363
  63. package/dist/types/components.d.ts +537 -497
  64. package/dist/types/context.d.ts +293 -572
  65. package/dist/types/hooks.d.ts +76 -47
  66. package/dist/types/index.d.ts +6 -0
  67. package/dist/types/util.d.ts +141 -120
  68. package/dist/util.es.js +71 -68
  69. package/package.json +6 -6
  70. package/dist/chunks/EntityUpdatesContext.es.js +0 -61
  71. package/dist/chunks/PlayableIcon.es.js +0 -5020
  72. package/dist/chunks/ProjectContext.es.js +0 -158
  73. package/dist/chunks/useQueryArgumentChangeLoading.es.js +0 -11
  74. package/dist/chunks/viewUpdateHelper.es.js +0 -153
@@ -105,8 +105,6 @@ export declare type ActivityOperationsResponseModel = {
105
105
  success: boolean;
106
106
  };
107
107
 
108
- export declare const ADDON_COLUMN_PREFIX = "addon__";
109
-
110
108
  /**
111
109
  * Gets the values of every shown addon column for the rows on screen (fetchValues), into the
112
110
  * store the cells read. Wraps the table body.
@@ -171,6 +169,22 @@ declare type AddonMenuItem =
171
169
  danger?: boolean
172
170
  }
173
171
 
172
+ /** The signed-in user, as addons see it: in every slot's context (`user`) and from `useUser`. */
173
+ declare interface AddonUser {
174
+ name: string
175
+ fullName?: string
176
+ email?: string
177
+ /** admins, and service users (the server treats them as admins) */
178
+ isAdmin: boolean
179
+ /** managers and admins */
180
+ isManager: boolean
181
+ isGuest: boolean
182
+ /** a service user: an API key session (services, agents, CI) */
183
+ isService: boolean
184
+ /** developer mode is on */
185
+ isDeveloper: boolean
186
+ }
187
+
174
188
  export declare const allowedGroupByFields: string[];
175
189
 
176
190
  export declare const ALWAYS_VISIBLE_COLUMNS: string[];
@@ -183,7 +197,9 @@ declare type Anatomy = {
183
197
  /** Path templates configuration */
184
198
  templates?: Templates;
185
199
  /** Attributes configuration */
186
- attributes?: ProjectAttribModel;
200
+ attributes?: {
201
+ [key: string]: any;
202
+ };
187
203
  /** Folder types configuration */
188
204
  folder_types?: FolderType[];
189
205
  /** Task types configuration */
@@ -205,7 +221,9 @@ declare type Anatomy_2 = {
205
221
  /** Path templates configuration */
206
222
  templates?: Templates_2;
207
223
  /** Attributes configuration */
208
- attributes?: ProjectAttribModel_2;
224
+ attributes?: {
225
+ [key: string]: any;
226
+ };
209
227
  /** Folder types configuration */
210
228
  folder_types?: FolderType_4[];
211
229
  /** Task types configuration */
@@ -223,76 +241,96 @@ export declare const appliesToPage: (contribution: {
223
241
  pages?: ProjectTablePage[];
224
242
  }, page: ProjectTablePage) => boolean;
225
243
 
244
+ /** Context of a service. */
245
+ declare interface AppServiceContext {
246
+ /** the project whose page is open, else `null` */
247
+ projectName: string | null
248
+ }
249
+
250
+ /** Description of an `app.service` contribution. */
251
+ declare interface AppServiceMeta {
252
+ /** unique among the addon's services */
253
+ id: string
254
+ }
255
+
226
256
  declare type AttributeData = {
227
257
  /** Type of attribute value */
228
258
  type?: 'string' | 'integer' | 'float' | 'boolean' | 'datetime' | 'list_of_strings' | 'list_of_integers' | 'list_of_any' | 'list_of_submodels' | 'dict';
229
259
  /** Nice, human readable title of the attribute */
230
- title?: string;
231
- description?: string;
260
+ title?: string | null;
261
+ description?: string | null;
232
262
  /** Example value of the field. */
233
263
  example?: any;
234
264
  /** Default value for the attribute. Do not set for list types. */
235
265
  default?: any;
236
- gt?: number | number;
237
- ge?: number | number;
238
- lt?: number | number;
239
- le?: number | number;
240
- minLength?: number;
241
- maxLength?: number;
266
+ gt?: number | number | null;
267
+ ge?: number | number | null;
268
+ lt?: number | number | null;
269
+ le?: number | number | null;
270
+ minLength?: number | null;
271
+ maxLength?: number | null;
242
272
  /** Minimum number of items in list type. */
243
- minItems?: number;
273
+ minItems?: number | null;
244
274
  /** Only for list types. Maximum number of items in the list. */
245
- maxItems?: number;
275
+ maxItems?: number | null;
246
276
  /** Only for string types. The value must match this regex. */
247
- regex?: string;
277
+ regex?: string | null;
248
278
  /** List of enum items used for displaying select widgets */
249
- enum?: EnumItem[];
279
+ enum?: EnumItem[] | null;
250
280
  /** Name of the function that provides enum values dynamically. */
251
- enumResolver?: string;
281
+ enumResolver?: string | null;
252
282
  /** Settings passed to the enum resolver function. */
253
- enumResolverSettings?: object;
283
+ enumResolverSettings?: {
284
+ [key: string]: any;
285
+ } | null;
254
286
  /** Inherit the attribute value from the parent entity. */
255
287
  inherit?: boolean;
256
288
  /** Specific widget style this field should use. */
257
- widget?: string;
289
+ widget?: string | null;
258
290
  /** Any additional config specific for the widget style.(Date formats, precision etc.) */
259
- widgetSettings?: object;
291
+ widgetSettings?: {
292
+ [key: string]: any;
293
+ } | null;
260
294
  };
261
295
 
262
296
  declare type AttributeData_2 = {
263
297
  /** Type of attribute value */
264
298
  type?: 'string' | 'integer' | 'float' | 'boolean' | 'datetime' | 'list_of_strings' | 'list_of_integers' | 'list_of_any' | 'list_of_submodels' | 'dict';
265
299
  /** Nice, human readable title of the attribute */
266
- title?: string;
267
- description?: string;
300
+ title?: string | null;
301
+ description?: string | null;
268
302
  /** Example value of the field. */
269
303
  example?: any;
270
304
  /** Default value for the attribute. Do not set for list types. */
271
305
  default?: any;
272
- gt?: number | number;
273
- ge?: number | number;
274
- lt?: number | number;
275
- le?: number | number;
276
- minLength?: number;
277
- maxLength?: number;
306
+ gt?: number | number | null;
307
+ ge?: number | number | null;
308
+ lt?: number | number | null;
309
+ le?: number | number | null;
310
+ minLength?: number | null;
311
+ maxLength?: number | null;
278
312
  /** Minimum number of items in list type. */
279
- minItems?: number;
313
+ minItems?: number | null;
280
314
  /** Only for list types. Maximum number of items in the list. */
281
- maxItems?: number;
315
+ maxItems?: number | null;
282
316
  /** Only for string types. The value must match this regex. */
283
- regex?: string;
317
+ regex?: string | null;
284
318
  /** List of enum items used for displaying select widgets */
285
- enum?: EnumItem_3[];
319
+ enum?: EnumItem_3[] | null;
286
320
  /** Name of the function that provides enum values dynamically. */
287
- enumResolver?: string;
321
+ enumResolver?: string | null;
288
322
  /** Settings passed to the enum resolver function. */
289
- enumResolverSettings?: object;
323
+ enumResolverSettings?: {
324
+ [key: string]: any;
325
+ } | null;
290
326
  /** Inherit the attribute value from the parent entity. */
291
327
  inherit?: boolean;
292
328
  /** Specific widget style this field should use. */
293
- widget?: string;
329
+ widget?: string | null;
294
330
  /** Any additional config specific for the widget style.(Date formats, precision etc.) */
295
- widgetSettings?: object;
331
+ widgetSettings?: {
332
+ [key: string]: any;
333
+ } | null;
296
334
  };
297
335
 
298
336
  declare interface AttributeField {
@@ -326,6 +364,8 @@ export declare interface BaseEntityData {
326
364
  tags?: string[];
327
365
  createdAt?: string;
328
366
  updatedAt?: string;
367
+ createdBy?: string | null;
368
+ updatedBy?: string | null;
329
369
  thumbnailHash?: string;
330
370
  attrib?: Record<string, any>;
331
371
  ownAttrib?: string[];
@@ -425,8 +465,20 @@ declare interface ButtonPieces<S extends SlotName> {
425
465
  dialog?: Loader<ComponentType<SlotProps<S> & DialogScope>>
426
466
  /** the items of a menu the host opens under the button, like the header's help menu */
427
467
  menu?: Loader<MenuPiece<S>>
428
- /** the addon's own component instead of the host's button: a dropdown, a toggle, anything */
429
- component?: Loader<ComponentType<SlotProps<S>>>
468
+ /**
469
+ * the content of a popover the host opens under the button, like the header's menus: the host
470
+ * positions it and closes it on a click outside or Escape (an Escape or click inside a menu or
471
+ * dialog opened from the popover closes only that). It gets `close`
472
+ */
473
+ popover?: Loader<ComponentType<SlotProps<S> & PopoverScope>>
474
+ /**
475
+ * the addon's own component instead of the host's button: a dropdown, a toggle, anything. With
476
+ * `popover`, it is the popover's button (its icon, a badge, a tooltip of its own) and gets
477
+ * `popoverOpen` and `togglePopover`
478
+ */
479
+ component?:
480
+ | Loader<ComponentType<SlotProps<S>>>
481
+ | Loader<ComponentType<SlotProps<S> & PopoverButtonScope>>
430
482
  }
431
483
 
432
484
  /** Context of a button's code (`run`, `dialog`, `menu`, `component`) besides the slot's own. */
@@ -796,7 +848,7 @@ export declare const DEFAULT_ROW_SCOPE: RowScope;
796
848
 
797
849
  export declare const DEFAULT_SUMMARY_FORMAT: SummaryFormat;
798
850
 
799
- export declare type DefaultColumns = typeof ROW_SELECTION_COLUMN_ID | 'thumbnail' | 'name' | 'entityType' | typeof ENTITY_COLUMN_IDS.folder | 'status' | 'subType' | 'assignees' | 'tags' | 'createdAt' | 'updatedAt' | 'comments' | typeof LISTS_COLUMN_ID | typeof REVIEW_SESSIONS_COLUMN_ID;
851
+ export declare type DefaultColumns = typeof ROW_SELECTION_COLUMN_ID | 'thumbnail' | 'name' | 'entityType' | typeof ENTITY_COLUMN_IDS.folder | 'status' | 'subType' | 'assignees' | 'tags' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy' | 'comments' | typeof LISTS_COLUMN_ID | typeof REVIEW_SESSIONS_COLUMN_ID;
800
852
 
801
853
  declare type DefaultMenuItem = 'copy-paste' | 'show-details' | 'rename' | 'expand-collapse' | 'inherit' | 'delete' | 'export' | 'create-folder' | 'create-task' | 'open-viewer';
802
854
 
@@ -842,11 +894,7 @@ export declare interface DetailsPanelEntityProviderProps {
842
894
  }
843
895
 
844
896
  /** Context of a details panel menu item. */
845
- declare interface DetailsPanelMenuItemContext extends ProjectNameScope {
846
- entityType: string
847
- /** the entities the panel shows */
848
- selectedEntities: EntityRef[]
849
- }
897
+ declare interface DetailsPanelMenuItemContext extends ProjectNameScope, EntityScope_2 {}
850
898
 
851
899
  /** Description of a `detailsPanel.menuItem` contribution. */
852
900
  declare interface DetailsPanelMenuItemMeta extends MenuItemMeta {
@@ -937,6 +985,8 @@ declare interface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivEleme
937
985
  }
938
986
 
939
987
  export declare type EditorProductNode = {
988
+ createdBy?: string | null;
989
+ updatedBy?: string | null;
940
990
  id: string;
941
991
  entityId: string;
942
992
  entityType: 'product';
@@ -957,7 +1007,9 @@ export declare type EditorProductNode = {
957
1007
  hasVersions?: boolean;
958
1008
  };
959
1009
 
960
- export declare type EditorTaskNode = Omit<TaskNode, 'links' | 'data'> & {
1010
+ export declare type EditorTaskNode = Omit<TaskNode, 'links' | 'data' | 'createdBy' | 'updatedBy'> & {
1011
+ createdBy?: string | null;
1012
+ updatedBy?: string | null;
961
1013
  attrib: Record<string, any>;
962
1014
  entityId: string;
963
1015
  entityType: 'task';
@@ -971,6 +1023,8 @@ export declare type EditorTaskNode = Omit<TaskNode, 'links' | 'data'> & {
971
1023
  };
972
1024
 
973
1025
  export declare type EditorVersionNode = {
1026
+ createdBy?: string | null;
1027
+ updatedBy?: string | null;
974
1028
  id: string;
975
1029
  entityId: string;
976
1030
  entityType: 'version';
@@ -1150,7 +1204,9 @@ export declare type EntityScope = 'primary' | EntityType;
1150
1204
 
1151
1205
  /** Slots about one or more entities of one type. */
1152
1206
  declare interface EntityScope_2 {
1207
+ /** the type of every entity in `entities` */
1153
1208
  entityType: string
1209
+ /** the entities the slot is about, e.g. the ones the details panel shows */
1154
1210
  entities: EntityRef[]
1155
1211
  }
1156
1212
 
@@ -1190,46 +1246,61 @@ export declare const EnumCellValue: ({ selectedOptions, placeholder, hasMultiple
1190
1246
  declare type EnumItem = {
1191
1247
  value: string | number | number | boolean;
1192
1248
  label: string;
1193
- description?: string;
1194
- fulltext?: string[];
1195
- group?: string;
1249
+ description?: string | null;
1250
+ fulltext?: string[] | null;
1251
+ group?: string | null;
1196
1252
  /** Icon name (material symbol) or IconModel object */
1197
- icon?: string | IconModel;
1198
- color?: string;
1199
- shortName?: string;
1253
+ icon?: string | IconModel | null;
1254
+ color?: string | null;
1255
+ shortName?: string | null;
1200
1256
  /** Enum item is visible, but not selectable */
1201
1257
  disabled?: boolean;
1202
1258
  /** Message to show when the option is disabled */
1203
- disabledMessage?: string;
1204
- /** Enum item is not offered for selection, but resolves when already used */
1259
+ disabledMessage?: string | null;
1260
+ /** Enum item is not visible in the dropdown */
1205
1261
  hidden?: boolean;
1262
+ /** Extra badge labels to display next to the item */
1263
+ badges?: string[] | null;
1206
1264
  };
1207
1265
 
1208
1266
  declare type EnumItem_2 = {
1209
1267
  value: string | number | number | boolean;
1210
1268
  label: string;
1211
- description?: string;
1212
- fulltext?: string[];
1213
- group?: string;
1269
+ description?: string | null;
1270
+ fulltext?: string[] | null;
1271
+ group?: string | null;
1214
1272
  /** Icon name (material symbol) or IconModel object */
1215
- icon?: string | IconModel_2;
1216
- color?: string;
1217
- shortName?: string;
1273
+ icon?: string | IconModel_2 | null;
1274
+ color?: string | null;
1275
+ shortName?: string | null;
1218
1276
  /** Enum item is visible, but not selectable */
1219
1277
  disabled?: boolean;
1220
1278
  /** Message to show when the option is disabled */
1221
- disabledMessage?: string;
1279
+ disabledMessage?: string | null;
1280
+ /** Enum item is not visible in the dropdown */
1281
+ hidden?: boolean;
1282
+ /** Extra badge labels to display next to the item */
1283
+ badges?: string[] | null;
1222
1284
  };
1223
1285
 
1224
1286
  declare type EnumItem_3 = {
1225
1287
  value: string | number | number | boolean;
1226
1288
  label: string;
1227
- description?: string;
1228
- fulltext?: string[];
1229
- group?: string;
1289
+ description?: string | null;
1290
+ fulltext?: string[] | null;
1291
+ group?: string | null;
1230
1292
  /** Icon name (material symbol) or IconModel object */
1231
- icon?: string | IconModel_3;
1232
- color?: string;
1293
+ icon?: string | IconModel_3 | null;
1294
+ color?: string | null;
1295
+ shortName?: string | null;
1296
+ /** Enum item is visible, but not selectable */
1297
+ disabled?: boolean;
1298
+ /** Message to show when the option is disabled */
1299
+ disabledMessage?: string | null;
1300
+ /** Enum item is not visible in the dropdown */
1301
+ hidden?: boolean;
1302
+ /** Extra badge labels to display next to the item */
1303
+ badges?: string[] | null;
1233
1304
  };
1234
1305
 
1235
1306
  declare interface EnumOption extends EnumItem {
@@ -1421,6 +1492,8 @@ export declare type FolderListItem = {
1421
1492
  ownAttrib?: string[];
1422
1493
  updatedAt: string;
1423
1494
  createdAt: string;
1495
+ createdBy?: string | null;
1496
+ updatedBy?: string | null;
1424
1497
  thumbnailHash?: string;
1425
1498
  hasReviewables?: boolean;
1426
1499
  hasVersions?: boolean;
@@ -1430,22 +1503,28 @@ export declare type FolderListItem = {
1430
1503
  declare type FolderListItem_2 = {
1431
1504
  id: string;
1432
1505
  path: string;
1433
- parentId?: string;
1506
+ parentId?: string | null;
1434
1507
  parents: string[];
1435
1508
  name: string;
1436
- label?: string;
1509
+ label?: string | null;
1437
1510
  folderType: string;
1438
1511
  hasTasks?: boolean;
1439
1512
  hasChildren?: boolean;
1440
1513
  hasReviewables?: boolean;
1441
1514
  thumbnailHash: string;
1442
- taskNames?: string[];
1443
- tags?: string[];
1515
+ taskNames?: string[] | null;
1516
+ tags?: string[] | null;
1444
1517
  status: string;
1445
- attrib?: object;
1446
- ownAttrib?: string[];
1518
+ attrib?: {
1519
+ [key: string]: any;
1520
+ } | null;
1521
+ active?: boolean;
1522
+ visible?: boolean;
1523
+ ownAttrib?: string[] | null;
1447
1524
  createdAt: string;
1448
1525
  updatedAt: string;
1526
+ createdBy?: string | null;
1527
+ updatedBy?: string | null;
1449
1528
  };
1450
1529
 
1451
1530
  declare type FolderListModel = {
@@ -1457,7 +1536,7 @@ export declare type FolderNodeMap = Map<string, MatchingFolder>;
1457
1536
 
1458
1537
  declare type FolderType = {
1459
1538
  name: string;
1460
- original_name?: string;
1539
+ original_name?: string | null;
1461
1540
  shortName?: string;
1462
1541
  color?: string;
1463
1542
  icon?: string;
@@ -1465,7 +1544,7 @@ declare type FolderType = {
1465
1544
 
1466
1545
  declare type FolderType_2 = {
1467
1546
  name: string;
1468
- original_name?: string;
1547
+ original_name?: string | null;
1469
1548
  shortName?: string;
1470
1549
  color?: string;
1471
1550
  icon?: string;
@@ -1481,7 +1560,7 @@ declare type FolderType_3 = {
1481
1560
 
1482
1561
  declare type FolderType_4 = {
1483
1562
  name: string;
1484
- original_name?: string;
1563
+ original_name?: string | null;
1485
1564
  shortName?: string;
1486
1565
  color?: string;
1487
1566
  icon?: string;
@@ -1489,7 +1568,7 @@ declare type FolderType_4 = {
1489
1568
 
1490
1569
  declare type FolderType_5 = {
1491
1570
  name: string;
1492
- original_name?: string;
1571
+ original_name?: string | null;
1493
1572
  shortName?: string;
1494
1573
  color?: string;
1495
1574
  icon?: string;
@@ -1789,6 +1868,8 @@ declare type GetTasksByParentQuery = {
1789
1868
  taskType: string;
1790
1869
  updatedAt: unknown;
1791
1870
  createdAt: unknown;
1871
+ createdBy: string | null;
1872
+ updatedBy: string | null;
1792
1873
  thumbnailHash: string;
1793
1874
  active: boolean;
1794
1875
  assignees: Array<string>;
@@ -2134,31 +2215,31 @@ declare type IconAnatomy = Pick<Anatomy_2, 'folder_types' | 'task_types' | 'prod
2134
2215
  declare type IconModel = {
2135
2216
  type?: 'material-symbols' | 'url';
2136
2217
  /** The name of the icon (for type material-symbols) */
2137
- name?: string;
2218
+ name?: string | null;
2138
2219
  /** The color of the icon (for type material-symbols) */
2139
- color?: string;
2220
+ color?: string | null;
2140
2221
  /** The URL of the icon (for type url) */
2141
- url?: string;
2222
+ url?: string | null;
2142
2223
  };
2143
2224
 
2144
2225
  declare type IconModel_2 = {
2145
2226
  type?: 'material-symbols' | 'url';
2146
2227
  /** The name of the icon (for type material-symbols) */
2147
- name?: string;
2228
+ name?: string | null;
2148
2229
  /** The color of the icon (for type material-symbols) */
2149
- color?: string;
2230
+ color?: string | null;
2150
2231
  /** The URL of the icon (for type url) */
2151
- url?: string;
2232
+ url?: string | null;
2152
2233
  };
2153
2234
 
2154
2235
  declare type IconModel_3 = {
2155
2236
  type?: 'material-symbols' | 'url';
2156
2237
  /** The name of the icon (for type material-symbols) */
2157
- name?: string;
2238
+ name?: string | null;
2158
2239
  /** The color of the icon (for type material-symbols) */
2159
- color?: string;
2240
+ color?: string | null;
2160
2241
  /** The URL of the icon (for type url) */
2161
- url?: string;
2242
+ url?: string | null;
2162
2243
  };
2163
2244
 
2164
2245
  declare interface InheritedDependent {
@@ -2269,7 +2350,7 @@ declare type LinkType = {
2269
2350
  link_type: string;
2270
2351
  input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile';
2271
2352
  output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile';
2272
- color?: string;
2353
+ color?: string | null;
2273
2354
  style?: 'solid' | 'dashed';
2274
2355
  };
2275
2356
 
@@ -2277,7 +2358,7 @@ declare type LinkType_2 = {
2277
2358
  link_type: string;
2278
2359
  input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile';
2279
2360
  output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile';
2280
- color?: string;
2361
+ color?: string | null;
2281
2362
  style?: 'solid' | 'dashed';
2282
2363
  };
2283
2364
 
@@ -2291,7 +2372,9 @@ declare type LinkTypeModel = {
2291
2372
  /** Output entity type */
2292
2373
  outputType: string;
2293
2374
  /** Additional link type data */
2294
- data?: Record<string, any>;
2375
+ data?: {
2376
+ [key: string]: any;
2377
+ };
2295
2378
  };
2296
2379
 
2297
2380
  declare type LinkTypeModel_2 = {
@@ -2304,7 +2387,9 @@ declare type LinkTypeModel_2 = {
2304
2387
  /** Output entity type */
2305
2388
  outputType: string;
2306
2389
  /** Additional link type data */
2307
- data?: object;
2390
+ data?: {
2391
+ [key: string]: any;
2392
+ };
2308
2393
  };
2309
2394
 
2310
2395
  export declare type LinkValue = LinkEntity[];
@@ -2399,6 +2484,8 @@ export declare interface MarkdownWidgetProps extends WidgetBaseProps {
2399
2484
  }
2400
2485
 
2401
2486
  export declare type MatchingFolder = FolderListItem & {
2487
+ createdBy?: string | null;
2488
+ updatedBy?: string | null;
2402
2489
  childOnlyMatch?: boolean;
2403
2490
  entityId: string;
2404
2491
  entityType: 'folder';
@@ -2489,10 +2576,12 @@ declare type OperationModel_2 = {
2489
2576
  id?: string;
2490
2577
  type: 'create' | 'update' | 'delete';
2491
2578
  entityType: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile';
2492
- entityId?: string;
2493
- data?: Record<string, any>;
2579
+ entityId?: string | null;
2580
+ data?: {
2581
+ [key: string]: any;
2582
+ } | null;
2494
2583
  force?: boolean;
2495
- asUser?: string;
2584
+ asUser?: string | null;
2496
2585
  };
2497
2586
 
2498
2587
  export declare type OperationResponseModel = {
@@ -2679,6 +2768,23 @@ export declare type PatchOperation = Pick<OperationModel, 'entityId' | 'entityTy
2679
2768
  type?: OperationModel['type'];
2680
2769
  };
2681
2770
 
2771
+ /**
2772
+ * What a `component` gets besides the slot context when it draws the button of a `popover`. The
2773
+ * host anchors the popover on the component's box.
2774
+ */
2775
+ declare interface PopoverButtonScope {
2776
+ /** the popover is open: show the button as active (`aria-expanded`) */
2777
+ popoverOpen: boolean
2778
+ /** opens or closes the popover: the button's `onClick` */
2779
+ togglePopover: () => void
2780
+ }
2781
+
2782
+ /** What a `popover` piece gets besides the slot context. */
2783
+ declare interface PopoverScope {
2784
+ /** closes the popover */
2785
+ close: () => void
2786
+ }
2787
+
2682
2788
  declare type PowerpackContextType = {
2683
2789
  selectedPowerPack: PowerpackFeature | null;
2684
2790
  selectedAddon: AddonDialogSelection | null;
@@ -2757,78 +2863,9 @@ declare type ProductType_2 = {
2757
2863
 
2758
2864
  declare type ProductTypeListItem = {
2759
2865
  name: string;
2760
- baseType?: string;
2761
- color?: string;
2762
- icon?: string;
2763
- };
2764
-
2765
- declare type ProjectAttribModel = {
2766
- priority?: 'urgent' | 'high' | 'normal' | 'low';
2767
- /** Frame rate */
2768
- fps?: number;
2769
- /** Horizontal resolution */
2770
- resolutionWidth?: number;
2771
- /** Vertical resolution */
2772
- resolutionHeight?: number;
2773
- pixelAspect?: number;
2774
- clipIn?: number;
2775
- clipOut?: number;
2776
- frameStart?: number;
2777
- frameEnd?: number;
2778
- handleStart?: number;
2779
- handleEnd?: number;
2780
- /** Date and time when the project or task or asset was started */
2781
- startDate?: string;
2782
- /** Deadline date and time */
2783
- endDate?: string;
2784
- /** Textual description of the entity */
2785
- description?: string;
2786
- };
2787
-
2788
- declare type ProjectAttribModel2 = {
2789
- priority?: 'urgent' | 'high' | 'normal' | 'low';
2790
- /** Frame rate */
2791
- fps?: number;
2792
- /** Horizontal resolution */
2793
- resolutionWidth?: number;
2794
- /** Vertical resolution */
2795
- resolutionHeight?: number;
2796
- pixelAspect?: number;
2797
- clipIn?: number;
2798
- clipOut?: number;
2799
- frameStart?: number;
2800
- frameEnd?: number;
2801
- handleStart?: number;
2802
- handleEnd?: number;
2803
- /** Date and time when the project or task or asset was started */
2804
- startDate?: string;
2805
- /** Deadline date and time */
2806
- endDate?: string;
2807
- /** Textual description of the entity */
2808
- description?: string;
2809
- };
2810
-
2811
- declare type ProjectAttribModel_2 = {
2812
- priority?: 'urgent' | 'high' | 'normal' | 'low';
2813
- /** Frame rate */
2814
- fps?: number;
2815
- /** Horizontal resolution */
2816
- resolutionWidth?: number;
2817
- /** Vertical resolution */
2818
- resolutionHeight?: number;
2819
- pixelAspect?: number;
2820
- clipIn?: number;
2821
- clipOut?: number;
2822
- frameStart?: number;
2823
- frameEnd?: number;
2824
- handleStart?: number;
2825
- handleEnd?: number;
2826
- /** Date and time when the project or task or asset was started */
2827
- startDate?: string;
2828
- /** Deadline date and time */
2829
- endDate?: string;
2830
- /** Textual description of the entity */
2831
- description?: string;
2866
+ baseType?: string | null;
2867
+ color?: string | null;
2868
+ icon?: string | null;
2832
2869
  };
2833
2870
 
2834
2871
  declare interface ProjectContextValue extends ProjectModelWithProducts {
@@ -2889,6 +2926,7 @@ declare interface ProjectFolders {
2889
2926
  }
2890
2927
 
2891
2928
  declare interface ProjectFoldersContextValue {
2929
+ projectName: string;
2892
2930
  folders: FolderListItem_2[];
2893
2931
  getFolderById: (id: string) => FolderListItem_2 | undefined;
2894
2932
  findNonInheritedValues: (folderId: string | undefined, attribNames: string[], projectAttrib?: Record<string, any>) => Record<string, any>;
@@ -2943,22 +2981,30 @@ declare interface ProjectListMenuItemContext {
2943
2981
  }
2944
2982
 
2945
2983
  declare type ProjectModel = {
2946
- /** Name is an unique id of the {entity_name} */
2984
+ /** Unique name of the project */
2947
2985
  name: string;
2948
2986
  code: string;
2949
- label?: string;
2987
+ label?: string | null;
2950
2988
  library?: boolean;
2951
2989
  folderTypes?: FolderType_2[];
2952
2990
  taskTypes?: TaskType_2[];
2953
2991
  linkTypes?: LinkTypeModel_2[];
2954
2992
  statuses?: Status_2[];
2955
2993
  tags?: Tag_2[];
2956
- config?: object;
2957
- skeleton?: boolean;
2958
- attrib?: ProjectAttribModel2;
2959
- data?: object;
2960
- /** Whether the project is active */
2994
+ config?: {
2995
+ [key: string]: any;
2996
+ };
2997
+ skeleton?: boolean | null;
2998
+ /** Attribute values of the entity */
2999
+ attrib?: {
3000
+ [key: string]: any;
3001
+ };
3002
+ data?: {
3003
+ [key: string]: any;
3004
+ };
3005
+ /** Whether the entity is active */
2961
3006
  active?: boolean;
3007
+ /** List of attributes explicitly set on the entity itself (not inherited) */
2962
3008
  ownAttrib?: string[];
2963
3009
  /** Time of creation */
2964
3010
  createdAt?: string;
@@ -3041,6 +3087,15 @@ export declare interface ProjectOverviewProviderProps {
3041
3087
  modules: ProjectTableModulesType;
3042
3088
  }
3043
3089
 
3090
+ /** Description of a `project.page` contribution: a page, and what the host adds around it. */
3091
+ declare interface ProjectPageMeta extends PageMeta {
3092
+ /**
3093
+ * Shows AYON's details panel next to the page, for the page to open with `openDetails`. The page
3094
+ * is in a splitter while the panel is there; it only shows when the page opens it.
3095
+ */
3096
+ detailsPanel?: boolean
3097
+ }
3098
+
3044
3099
  /** Slots that are about one project, with the project itself. */
3045
3100
  declare interface ProjectScope extends ProjectNameScope {
3046
3101
  /** the project; `undefined` while it loads */
@@ -3200,6 +3255,8 @@ export declare interface ProjectTableProviderProps {
3200
3255
  versionId?: string;
3201
3256
  }, config?: {
3202
3257
  quickView?: boolean;
3258
+ goToPosition?: number;
3259
+ reviewableId?: string;
3203
3260
  }) => void;
3204
3261
  onResetView?: () => void;
3205
3262
  hiddenListIds?: string[];
@@ -3330,9 +3387,9 @@ declare type QueryCondition_3 = {
3330
3387
  /** Path to the key separated by slashes */
3331
3388
  key: string;
3332
3389
  /** Value to compare against */
3333
- value?: string | number | number | boolean | string[] | number[] | number[];
3334
- /** Comparison operator */
3335
- operator?: 'eq' | 'like' | 'notlike' | 'lt' | 'gt' | 'lte' | 'gte' | 'ne' | 'isnull' | 'notnull' | 'in' | 'notin' | 'includes' | 'excludes' | 'includesall' | 'excludesall' | 'includesany' | 'excludesany';
3390
+ value?: string | number | number | boolean | string[] | number[] | number[] | null;
3391
+ /** Comparison operator. like and notlike perform case-insensitive substring matching. One surrounding pair of % is treated as a substring wrapper; %, _ and backslashes within it are literal. */
3392
+ operator?: 'eq' | 'like' | 'notlike' | 're' | 'lt' | 'gt' | 'lte' | 'gte' | 'ne' | 'isnull' | 'notnull' | 'in' | 'notin' | 'includes' | 'excludes' | 'includesall' | 'excludesall' | 'includesany' | 'excludesany';
3336
3393
  };
3337
3394
 
3338
3395
  export declare type QueryFilter = {
@@ -3611,6 +3668,8 @@ declare interface SlicerMenuItemContext extends ProjectNameScope {
3611
3668
  sliceType: string
3612
3669
  /** the rows it acts on: the selected ones, or the right-clicked one */
3613
3670
  selected: SlicerRowRef[]
3671
+ /** `hierarchy`: the folders and tasks of `selected`; empty for the other slice types */
3672
+ entities: EntityRef[]
3614
3673
  menu: MenuKind
3615
3674
  }
3616
3675
 
@@ -3647,9 +3706,12 @@ declare interface SlicerSelection {
3647
3706
  selection: string[]
3648
3707
  }
3649
3708
 
3650
- /** What the code of a contribution to slot `S` gets: `{ slot: S, ...context }`. */
3709
+ /**
3710
+ * What the code of a contribution to slot `S` gets: `{ slot: S, user, ...context }`. The host
3711
+ * passes the slot's own context; `ContributionView` and `runContribution` add `slot` and `user`.
3712
+ */
3651
3713
  declare type SlotContext<S extends SlotName> = S extends SlotName
3652
- ? { slot: S } & SlotMap[S]['context']
3714
+ ? { slot: S } & UserScope & SlotMap[S]['context']
3653
3715
  : never
3654
3716
 
3655
3717
  /**
@@ -3664,7 +3726,7 @@ declare interface SlotMap {
3664
3726
  */
3665
3727
  'project.page': {
3666
3728
  version: 1
3667
- meta: PageMeta
3729
+ meta: ProjectPageMeta
3668
3730
  context: ProjectScope & SlicerScope & ProjectFoldersScope & ViewsScope
3669
3731
  pieces: { component: Loader<ComponentType<SlotProps<'project.page'>>> }
3670
3732
  }
@@ -3680,8 +3742,9 @@ declare interface SlotMap {
3680
3742
  }
3681
3743
  /**
3682
3744
  * A button in the main header, drawn by the host like its own buttons. What a click does is the
3683
- * addon's: navigate (`to`), run code (`run`), open a dialog (`dialog`) or a menu (`menu`); or the
3684
- * addon draws the item itself (`component`, loaded with the header). Set exactly one.
3745
+ * addon's: navigate (`to`), run code (`run`), open a dialog (`dialog`), a menu (`menu`) or a
3746
+ * popover (`popover`); or the addon draws the item itself (`component`, loaded with the header).
3747
+ * Set exactly one, except that `component` may draw the button of a `popover`.
3685
3748
  */
3686
3749
  'header.item': {
3687
3750
  version: 1
@@ -3742,8 +3805,9 @@ declare interface SlotMap {
3742
3805
  /**
3743
3806
  * A button in the project tables' toolbar, before Customize (Overview, Products, Lists), drawn
3744
3807
  * by the host like the toolbar's own. What a click does is the addon's: navigate (`to`), run code
3745
- * (`run`), open a dialog (`dialog`) or a menu (`menu`); or the addon draws the item itself
3746
- * (`component`, loaded with the toolbar). Set exactly one.
3808
+ * (`run`), open a dialog (`dialog`), a menu (`menu`) or a popover (`popover`); or the addon draws
3809
+ * the item itself (`component`, loaded with the toolbar). Set exactly one, except that
3810
+ * `component` may draw the button of a `popover`.
3747
3811
  */
3748
3812
  'projectTable.toolbarItem': {
3749
3813
  version: 1
@@ -3766,7 +3830,9 @@ declare interface SlotMap {
3766
3830
  * settings from the description; `cell` and `fetchValues` load with the table. The host draws
3767
3831
  * the cell box (padding, selection, focus), so `cell` renders only its content; selecting, the
3768
3832
  * right-click menu and Copy (the cell's `value` as text) work as in other columns. Not sortable,
3769
- * and pasting into it changes nothing.
3833
+ * and pasting into it changes nothing. When the values depend on data your mutations change, list
3834
+ * its cache tags in `providesTags` and the column refreshes itself when they are invalidated:
3835
+ * `tableColumn({ id, label, cell, fetchValues, providesTags: [{ type: 'myaddonLog', id: 'LIST' }] })`.
3770
3836
  */
3771
3837
  tableColumn: {
3772
3838
  version: 1
@@ -3790,6 +3856,19 @@ declare interface SlotMap {
3790
3856
  context: TableShortcutContext
3791
3857
  pieces: TableShortcutPieces
3792
3858
  }
3859
+ /**
3860
+ * Code with no UI that runs while AYON is open, whatever the page: keeping a state, listening to
3861
+ * websocket events, registering a store listener. `component` loads at startup and is mounted
3862
+ * once for the whole app, under AYON's providers (store, router, contexts), so it can use hooks;
3863
+ * it renders nothing (`return null`). Clean up in its effects. A crash unmounts it and shows a
3864
+ * toast; the rest of AYON keeps working.
3865
+ */
3866
+ 'app.service': {
3867
+ version: 1
3868
+ meta: AppServiceMeta
3869
+ context: AppServiceContext
3870
+ pieces: { component: Loader<ComponentType<SlotProps<'app.service'>>> }
3871
+ }
3793
3872
  }
3794
3873
 
3795
3874
  /** The name of a slot, e.g. `'project.page'`. */
@@ -3830,24 +3909,24 @@ declare type StagingDirectory_2 = {
3830
3909
 
3831
3910
  declare type Status = {
3832
3911
  name: string;
3833
- original_name?: string;
3912
+ original_name?: string | null;
3834
3913
  shortName?: string;
3835
3914
  state?: 'not_started' | 'in_progress' | 'done' | 'blocked';
3836
3915
  icon?: string;
3837
3916
  color?: string;
3838
3917
  /** Limit the status to specific entity types. */
3839
- scope?: string[];
3918
+ scope?: string[] | null;
3840
3919
  };
3841
3920
 
3842
3921
  declare type Status_2 = {
3843
3922
  name: string;
3844
- original_name?: string;
3923
+ original_name?: string | null;
3845
3924
  shortName?: string;
3846
3925
  state?: 'not_started' | 'in_progress' | 'done' | 'blocked';
3847
3926
  icon?: string;
3848
3927
  color?: string;
3849
3928
  /** Limit the status to specific entity types. */
3850
- scope?: string[];
3929
+ scope?: string[] | null;
3851
3930
  };
3852
3931
 
3853
3932
  declare type Status_3 = {
@@ -3863,24 +3942,24 @@ declare type Status_3 = {
3863
3942
 
3864
3943
  declare type Status_4 = {
3865
3944
  name: string;
3866
- original_name?: string;
3945
+ original_name?: string | null;
3867
3946
  shortName?: string;
3868
3947
  state?: 'not_started' | 'in_progress' | 'done' | 'blocked';
3869
3948
  icon?: string;
3870
3949
  color?: string;
3871
3950
  /** Limit the status to specific entity types. */
3872
- scope?: string[];
3951
+ scope?: string[] | null;
3873
3952
  };
3874
3953
 
3875
3954
  declare type Status_5 = {
3876
3955
  name: string;
3877
- original_name?: string;
3956
+ original_name?: string | null;
3878
3957
  shortName?: string;
3879
3958
  state?: 'not_started' | 'in_progress' | 'done' | 'blocked';
3880
3959
  icon?: string;
3881
3960
  color?: string;
3882
3961
  /** Limit the status to specific entity types. */
3883
- scope?: string[];
3962
+ scope?: string[] | null;
3884
3963
  };
3885
3964
 
3886
3965
  /** Context of a studio page. */
@@ -3977,6 +4056,8 @@ export declare type SummaryFormat = 'count' | 'percent' | 'both' | 'none';
3977
4056
 
3978
4057
  export declare type SummaryKind = 'main' | 'number' | 'boolean' | 'text' | 'enum' | 'assignee' | 'blank';
3979
4058
 
4059
+ export declare const SYSTEM_READ_ONLY_COLUMNS: string[];
4060
+
3980
4061
  export declare const TABLE_CONTAINER_ATTR = "data-column-dnd-container";
3981
4062
 
3982
4063
  export declare const TableCellContext: Context<TableCellContextValue>;
@@ -4013,7 +4094,8 @@ export declare type TableCellContextValue = {
4013
4094
  * Gets a column's values, by entity id; each cell gets its own as `value`. AYON calls it with
4014
4095
  * the rows that come on screen and that it has no value for yet, in batches once scrolling
4015
4096
  * pauses, and keeps what it returns: scrolling back costs nothing. A row whose entity changes
4016
- * (here or by someone else) is asked for again; `refreshTableColumn(id)` asks again for all.
4097
+ * (here or by someone else) is asked for again; for anything else the values depend on, list its
4098
+ * cache tags in the column's `providesTags`, or call `refreshTableColumn(id)` to ask again for all.
4017
4099
  * When it throws, those cells show the error and are tried again when they next come on
4018
4100
  * screen. Fetch through AYON's store (`dispatch(api.endpoints.x.initiate(...))`) to share its
4019
4101
  * cache.
@@ -4048,8 +4130,23 @@ declare interface TableColumnMeta {
4048
4130
  * `false` for the menu's top level
4049
4131
  */
4050
4132
  menu?: string | false
4133
+ /**
4134
+ * cache tags of AYON's api that the values depend on: when one is invalidated (by your
4135
+ * mutations or AYON's), the values are fetched again as with `refreshTableColumn`. Needs
4136
+ * `fetchValues`. Names as you register them (`enhanceEndpoints({ addTagTypes })`, prefixed with
4137
+ * your addon name) or AYON's own. A plain name follows invalidations of the whole type only: to
4138
+ * follow `{ type, id }`, such as a list tag, give that tag
4139
+ */
4140
+ providesTags?: TableColumnTag[]
4051
4141
  }
4052
4142
 
4143
+ /**
4144
+ * A cache tag a `tableColumn` depends on (`providesTags`), as in RTK Query: a tag type, or a type
4145
+ * and id. Invalidating `'x'` refreshes columns that list `'x'` or `{ type: 'x', id }`;
4146
+ * invalidating `{ type: 'x', id: 'LIST' }` refreshes only columns that list that tag.
4147
+ */
4148
+ declare type TableColumnTag = string | { type: string; id?: string | number }
4149
+
4053
4150
  export declare interface TableGroupBy {
4054
4151
  desc: boolean;
4055
4152
  id: string;
@@ -4103,6 +4200,11 @@ declare interface TableShortcutContext {
4103
4200
  projectName: string | null
4104
4201
  /** the rows it acts on: the selected ones when the key was pressed in one of them, else its row */
4105
4202
  rows: TableRowRef[]
4203
+ /**
4204
+ * the entities of `rows` in the project tables (list items resolve to their entity); empty in
4205
+ * the panels' tables, whose rows are not all entities: read `rows` there
4206
+ */
4207
+ entities: EntityRef[]
4106
4208
  /** where the key was pressed: the row's id, and the column's in the project tables */
4107
4209
  focused: { rowId: string; columnId?: string }
4108
4210
  /** project tables: the selected cells, by row (entity) and column id; empty elsewhere */
@@ -4148,13 +4250,13 @@ export declare type TableUser = {
4148
4250
 
4149
4251
  declare type Tag = {
4150
4252
  name: string;
4151
- original_name?: string;
4253
+ original_name?: string | null;
4152
4254
  color?: string;
4153
4255
  };
4154
4256
 
4155
4257
  declare type Tag_2 = {
4156
4258
  name: string;
4157
- original_name?: string;
4259
+ original_name?: string | null;
4158
4260
  color?: string;
4159
4261
  };
4160
4262
 
@@ -4166,13 +4268,13 @@ declare type Tag_3 = {
4166
4268
 
4167
4269
  declare type Tag_4 = {
4168
4270
  name: string;
4169
- original_name?: string;
4271
+ original_name?: string | null;
4170
4272
  color?: string;
4171
4273
  };
4172
4274
 
4173
4275
  declare type Tag_5 = {
4174
4276
  name: string;
4175
- original_name?: string;
4277
+ original_name?: string | null;
4176
4278
  color?: string;
4177
4279
  };
4178
4280
 
@@ -4208,9 +4310,9 @@ export declare type TasksByFolderMap = Map<string, string[]>;
4208
4310
 
4209
4311
  declare type TasksFoldersQuery = {
4210
4312
  /** Filter object used to resolve the tasks */
4211
- filter?: QueryFilter_3;
4313
+ filter?: QueryFilter_3 | null;
4212
4314
  /** 'fulltext' search used to resolve the tasks */
4213
- search?: string;
4315
+ search?: string | null;
4214
4316
  };
4215
4317
 
4216
4318
  export declare type TaskStatsArgs = {
@@ -4224,7 +4326,7 @@ export declare type TaskStatsArgs = {
4224
4326
 
4225
4327
  declare type TaskType = {
4226
4328
  name: string;
4227
- original_name?: string;
4329
+ original_name?: string | null;
4228
4330
  shortName?: string;
4229
4331
  color?: string;
4230
4332
  icon?: string;
@@ -4232,7 +4334,7 @@ declare type TaskType = {
4232
4334
 
4233
4335
  declare type TaskType_2 = {
4234
4336
  name: string;
4235
- original_name?: string;
4337
+ original_name?: string | null;
4236
4338
  shortName?: string;
4237
4339
  color?: string;
4238
4340
  icon?: string;
@@ -4248,7 +4350,7 @@ declare type TaskType_3 = {
4248
4350
 
4249
4351
  declare type TaskType_4 = {
4250
4352
  name: string;
4251
- original_name?: string;
4353
+ original_name?: string | null;
4252
4354
  shortName?: string;
4253
4355
  color?: string;
4254
4356
  icon?: string;
@@ -4256,7 +4358,7 @@ declare type TaskType_4 = {
4256
4358
 
4257
4359
  declare type TaskType_5 = {
4258
4360
  name: string;
4259
- original_name?: string;
4361
+ original_name?: string | null;
4260
4362
  shortName?: string;
4261
4363
  color?: string;
4262
4364
  icon?: string;
@@ -4575,21 +4677,20 @@ declare type User = {
4575
4677
  hidden?: boolean;
4576
4678
  };
4577
4679
 
4578
- declare type UserAttribModel = {
4579
- fullName?: string;
4580
- email?: string;
4581
- avatarUrl?: string;
4582
- developerMode?: boolean;
4583
- };
4584
-
4585
4680
  declare type UserModel = {
4586
- /** Name is an unique id of the {entity_name} */
4681
+ /** Unique name of the user */
4587
4682
  name: string;
4588
- uiExposureLevel?: number;
4589
- attrib?: UserAttribModel;
4590
- data?: Record<string, any>;
4591
- /** Whether the user is active */
4683
+ uiExposureLevel?: number | null;
4684
+ /** Attribute values of the entity */
4685
+ attrib?: {
4686
+ [key: string]: any;
4687
+ };
4688
+ data?: {
4689
+ [key: string]: any;
4690
+ };
4691
+ /** Whether the entity is active */
4592
4692
  active?: boolean;
4693
+ /** List of attributes explicitly set on the entity itself (not inherited) */
4593
4694
  ownAttrib?: string[];
4594
4695
  /** Time of creation */
4595
4696
  createdAt?: string;
@@ -4597,6 +4698,11 @@ declare type UserModel = {
4597
4698
  updatedAt?: string;
4598
4699
  };
4599
4700
 
4701
+ /** Every slot: the signed-in user. The host adds it; AYON renders addons only once signed in. */
4702
+ declare interface UserScope {
4703
+ user: AddonUser
4704
+ }
4705
+
4600
4706
  export declare const useScopedAttributeFields: <T extends AttributeField>({ attribFields, allowedScopes, }: UseScopedAttributeFieldsProps<T>) => T[];
4601
4707
 
4602
4708
  declare interface UseScopedAttributeFieldsProps<T extends AttributeField> {