@ynput/ayon-frontend-shared 0.2.2 → 0.2.3

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 (134) hide show
  1. package/dist/_virtual/index.cjs5.js +5 -3
  2. package/dist/_virtual/index.cjs5.js.map +1 -1
  3. package/dist/_virtual/index.cjs6.js +3 -5
  4. package/dist/_virtual/index.cjs6.js.map +1 -1
  5. package/dist/_virtual/index.es5.js +5 -2
  6. package/dist/_virtual/index.es5.js.map +1 -1
  7. package/dist/_virtual/index.es6.js +2 -5
  8. package/dist/_virtual/index.es6.js.map +1 -1
  9. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.cjs.js +19 -10
  10. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.cjs.js.map +1 -1
  11. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.es.js +21 -12
  12. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.es.js.map +1 -1
  13. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +174 -68
  14. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
  15. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +174 -68
  16. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +1 -1
  17. package/dist/node_modules/@standard-schema/utils/dist/index.cjs.js +23 -0
  18. package/dist/node_modules/@standard-schema/utils/dist/index.cjs.js.map +1 -0
  19. package/dist/node_modules/@standard-schema/utils/dist/index.es.js +23 -0
  20. package/dist/node_modules/@standard-schema/utils/dist/index.es.js.map +1 -0
  21. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  22. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  23. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  24. package/dist/node_modules/remove-accents/index.es.js +1 -1
  25. package/dist/shared/src/api/generated/anatomy.cjs.js +13 -0
  26. package/dist/shared/src/api/generated/anatomy.cjs.js.map +1 -1
  27. package/dist/shared/src/api/generated/anatomy.es.js +13 -0
  28. package/dist/shared/src/api/generated/anatomy.es.js.map +1 -1
  29. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +4 -0
  30. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -0
  32. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  33. package/dist/shared/src/containers/Actions/Actions.cjs.js +10 -6
  34. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  35. package/dist/shared/src/containers/Actions/Actions.es.js +10 -6
  36. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  37. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +5 -3
  38. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  39. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +5 -3
  40. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  41. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js +13 -1
  42. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js.map +1 -1
  43. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js +13 -1
  44. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js.map +1 -1
  45. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +0 -1
  46. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  47. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +0 -1
  48. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  49. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js +3 -0
  50. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js.map +1 -1
  51. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js +3 -0
  52. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js.map +1 -1
  53. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  54. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  55. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +24 -6
  56. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  57. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +24 -6
  58. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  59. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +7 -5
  60. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  61. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +7 -5
  62. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  63. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +8 -0
  64. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  65. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +8 -0
  66. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  67. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  68. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  69. package/dist/types/api/generated/access.d.ts +6 -6
  70. package/dist/types/api/generated/actions.d.ts +6 -6
  71. package/dist/types/api/generated/activityFeed.d.ts +8 -8
  72. package/dist/types/api/generated/addons.d.ts +28 -28
  73. package/dist/types/api/generated/anatomy.d.ts +36 -6
  74. package/dist/types/api/generated/attributes.d.ts +5 -5
  75. package/dist/types/api/generated/authentication.d.ts +5 -5
  76. package/dist/types/api/generated/bundles.d.ts +7 -7
  77. package/dist/types/api/generated/configuration.d.ts +7 -7
  78. package/dist/types/api/generated/desktop.d.ts +12 -12
  79. package/dist/types/api/generated/entityLists.d.ts +12 -12
  80. package/dist/types/api/generated/events.d.ts +8 -8
  81. package/dist/types/api/generated/files.d.ts +7 -7
  82. package/dist/types/api/generated/folders.d.ts +8 -8
  83. package/dist/types/api/generated/graphql.d.ts +25 -25
  84. package/dist/types/api/generated/inbox.d.ts +1 -1
  85. package/dist/types/api/generated/links.d.ts +5 -5
  86. package/dist/types/api/generated/market.d.ts +6 -6
  87. package/dist/types/api/generated/onboarding.d.ts +3 -3
  88. package/dist/types/api/generated/operations.d.ts +3 -3
  89. package/dist/types/api/generated/products.d.ts +5 -5
  90. package/dist/types/api/generated/projectDashboard.d.ts +4 -4
  91. package/dist/types/api/generated/projects.d.ts +27 -27
  92. package/dist/types/api/generated/representations.d.ts +5 -5
  93. package/dist/types/api/generated/reviewables.d.ts +7 -7
  94. package/dist/types/api/generated/services.d.ts +6 -6
  95. package/dist/types/api/generated/system.d.ts +12 -12
  96. package/dist/types/api/generated/tasks.d.ts +8 -8
  97. package/dist/types/api/generated/teams.d.ts +6 -6
  98. package/dist/types/api/generated/thumbnails.d.ts +11 -11
  99. package/dist/types/api/generated/uRIs.d.ts +2 -2
  100. package/dist/types/api/generated/users.d.ts +26 -26
  101. package/dist/types/api/generated/versions.d.ts +6 -6
  102. package/dist/types/api/generated/workfiles.d.ts +6 -6
  103. package/dist/types/api/generated/ynputCloud.d.ts +5 -5
  104. package/dist/types/api/queries/actions/getActions.d.ts +29 -29
  105. package/dist/types/api/queries/activities/getActivities.d.ts +72 -71
  106. package/dist/types/api/queries/activities/getMentions.d.ts +18 -18
  107. package/dist/types/api/queries/activities/updateActivities.d.ts +62 -62
  108. package/dist/types/api/queries/activities/updateReaction.d.ts +10 -10
  109. package/dist/types/api/queries/addons/getAddons.d.ts +67 -67
  110. package/dist/types/api/queries/addons/updateAddons.d.ts +35 -35
  111. package/dist/types/api/queries/attributes/getAttributes.d.ts +23 -23
  112. package/dist/types/api/queries/attributes/updateAttributes.d.ts +12 -12
  113. package/dist/types/api/queries/authentication/getAuthentication.d.ts +15 -15
  114. package/dist/types/api/queries/entities/getEntity.d.ts +73 -73
  115. package/dist/types/api/queries/entities/getEntityPanel.d.ts +44 -44
  116. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  117. package/dist/types/api/queries/entities/updateEntity.d.ts +32 -32
  118. package/dist/types/api/queries/folders/getFolders.d.ts +26 -26
  119. package/dist/types/api/queries/overview/getOverview.d.ts +72 -72
  120. package/dist/types/api/queries/overview/updateOverview.d.ts +5 -5
  121. package/dist/types/api/queries/project/getProject.d.ts +103 -103
  122. package/dist/types/api/queries/review/getReview.d.ts +36 -36
  123. package/dist/types/api/queries/review/updateReview.d.ts +13 -13
  124. package/dist/types/api/queries/system/getSystem.d.ts +39 -39
  125. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +53 -53
  126. package/dist/types/api/queries/users/getUsers.d.ts +110 -110
  127. package/dist/types/api/queries/watchers/getWatchers.d.ts +20 -20
  128. package/dist/types/containers/Actions/Actions.d.ts +5 -1
  129. package/dist/types/containers/ProjectTreeTable/widgets/BooleanWidget.d.ts +1 -2
  130. package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +10 -0
  131. package/dist/types/containers/ProjectTreeTable/widgets/DateWidget.d.ts +2 -3
  132. package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -1
  133. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +1 -1
  134. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
+ var SchemaError = class extends Error {
7
+ /**
8
+ * Creates a schema error with useful information.
9
+ *
10
+ * @param issues The schema issues.
11
+ */
12
+ constructor(issues) {
13
+ super(issues[0].message);
14
+ /**
15
+ * The schema issues.
16
+ */
17
+ __publicField(this, "issues");
18
+ this.name = "SchemaError";
19
+ this.issues = issues;
20
+ }
21
+ };
22
+ exports.SchemaError = SchemaError;
23
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../../../node_modules/@standard-schema/utils/dist/index.js"],"sourcesContent":["// src/getDotPath/getDotPath.ts\nfunction getDotPath(issue) {\n if (issue.path?.length) {\n let dotPath = \"\";\n for (const item of issue.path) {\n const key = typeof item === \"object\" ? item.key : item;\n if (typeof key === \"string\" || typeof key === \"number\") {\n if (dotPath) {\n dotPath += `.${key}`;\n } else {\n dotPath += key;\n }\n } else {\n return null;\n }\n }\n return dotPath;\n }\n return null;\n}\n\n// src/SchemaError/SchemaError.ts\nvar SchemaError = class extends Error {\n /**\n * The schema issues.\n */\n issues;\n /**\n * Creates a schema error with useful information.\n *\n * @param issues The schema issues.\n */\n constructor(issues) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n};\nexport {\n SchemaError,\n getDotPath\n};\n"],"names":[],"mappings":";;;;;AAsBG,IAAC,cAAc,cAAc,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUpC,YAAY,QAAQ;AAClB,UAAM,OAAO,CAAC,EAAE,OAAO;AAPzB;AAAA;AAAA;AAAA;AAQE,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAClB;AACA;;","x_google_ignoreList":[0]}
@@ -0,0 +1,23 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ var SchemaError = class extends Error {
5
+ /**
6
+ * Creates a schema error with useful information.
7
+ *
8
+ * @param issues The schema issues.
9
+ */
10
+ constructor(issues) {
11
+ super(issues[0].message);
12
+ /**
13
+ * The schema issues.
14
+ */
15
+ __publicField(this, "issues");
16
+ this.name = "SchemaError";
17
+ this.issues = issues;
18
+ }
19
+ };
20
+ export {
21
+ SchemaError
22
+ };
23
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../../../../node_modules/@standard-schema/utils/dist/index.js"],"sourcesContent":["// src/getDotPath/getDotPath.ts\nfunction getDotPath(issue) {\n if (issue.path?.length) {\n let dotPath = \"\";\n for (const item of issue.path) {\n const key = typeof item === \"object\" ? item.key : item;\n if (typeof key === \"string\" || typeof key === \"number\") {\n if (dotPath) {\n dotPath += `.${key}`;\n } else {\n dotPath += key;\n }\n } else {\n return null;\n }\n }\n return dotPath;\n }\n return null;\n}\n\n// src/SchemaError/SchemaError.ts\nvar SchemaError = class extends Error {\n /**\n * The schema issues.\n */\n issues;\n /**\n * Creates a schema error with useful information.\n *\n * @param issues The schema issues.\n */\n constructor(issues) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n};\nexport {\n SchemaError,\n getDotPath\n};\n"],"names":[],"mappings":";;;AAsBG,IAAC,cAAc,cAAc,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUpC,YAAY,QAAQ;AAClB,UAAM,OAAO,CAAC,EAAE,OAAO;AAPzB;AAAA;AAAA;AAAA;AAQE,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAClB;AACA;","x_google_ignoreList":[0]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const index$1 = require("../../hast-util-to-string/index.cjs.js");
4
- const index$2 = require("../../../_virtual/index.cjs6.js");
4
+ const index$2 = require("../../../_virtual/index.cjs5.js");
5
5
  require("../../refractor/lib/common.cjs.js");
6
6
  require("../../refractor/lib/all.cjs.js");
7
7
  const index = require("../node_modules/unist-util-visit/lib/index.cjs.js");
@@ -1,5 +1,5 @@
1
1
  import { toString } from "../../hast-util-to-string/index.es.js";
2
- import n from "../../../_virtual/index.es6.js";
2
+ import n from "../../../_virtual/index.es5.js";
3
3
  import "../../refractor/lib/common.es.js";
4
4
  import "../../refractor/lib/all.es.js";
5
5
  import { visit } from "../node_modules/unist-util-visit/lib/index.es.js";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index = require("../../_virtual/index.cjs5.js");
3
+ const index = require("../../_virtual/index.cjs6.js");
4
4
  var hasRequiredRemoveAccents;
5
5
  function requireRemoveAccents() {
6
6
  if (hasRequiredRemoveAccents) return index.__module.exports;
@@ -1,4 +1,4 @@
1
- import { __module as removeAccents } from "../../_virtual/index.es5.js";
1
+ import { __module as removeAccents } from "../../_virtual/index.es6.js";
2
2
  var hasRequiredRemoveAccents;
3
3
  function requireRemoveAccents() {
4
4
  if (hasRequiredRemoveAccents) return removeAccents.exports;
@@ -30,6 +30,19 @@ const injectedRtkApi = client.api.injectEndpoints({
30
30
  url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
31
31
  method: "POST"
32
32
  })
33
+ }),
34
+ unsetPrimaryPreset: build.mutation({
35
+ query: (queryArg) => ({
36
+ url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
37
+ method: "DELETE"
38
+ })
39
+ }),
40
+ renameAnatomyPreset: build.mutation({
41
+ query: (queryArg) => ({
42
+ url: `/api/anatomy/presets/${queryArg.presetName}/rename`,
43
+ method: "POST",
44
+ body: queryArg.renamePresetModel
45
+ })
33
46
  })
34
47
  }),
35
48
  overrideExisting: false
@@ -1 +1 @@
1
- {"version":3,"file":"anatomy.cjs.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\n"],"names":["api"],"mappings":";;;AACM,MAAA,iBAAiBA,WAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;;"}
1
+ {"version":3,"file":"anatomy.cjs.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n unsetPrimaryPreset: build.mutation<UnsetPrimaryPresetApiResponse, UnsetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'DELETE',\n }),\n }),\n renameAnatomyPreset: build.mutation<RenameAnatomyPresetApiResponse, RenameAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/rename`,\n method: 'POST',\n body: queryArg.renamePresetModel,\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type UnsetPrimaryPresetApiResponse = unknown\nexport type UnsetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type RenameAnatomyPresetApiResponse = unknown\nexport type RenameAnatomyPresetApiArg = {\n presetName: string\n renamePresetModel: RenamePresetModel\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n ftrackId?: string\n ftrackPath?: string\n /** The Shotgrid ID of this entity. */\n shotgridId?: string\n /** The Shotgrid Type of this entity. */\n shotgridType?: string\n inheritableString?: string\n /** Push changes done to this project to Shotgrid. Requires the transmitter service. */\n shotgridPush?: boolean\n tools?: string[]\n applications?: string[]\n sokoId?: string\n booo?: boolean\n sokoPath?: string\n myAdvancedEnum?: 'first' | 'second'\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\nexport type RenamePresetModel = {\n /** The new name of the anatomy preset. */\n name: string\n}\n"],"names":["api"],"mappings":";;;AACM,MAAA,iBAAiBA,WAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,oBAAoB,MAAM,SAAkE;AAAA,MAC1F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;;"}
@@ -28,6 +28,19 @@ const injectedRtkApi = api.injectEndpoints({
28
28
  url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
29
29
  method: "POST"
30
30
  })
31
+ }),
32
+ unsetPrimaryPreset: build.mutation({
33
+ query: (queryArg) => ({
34
+ url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
35
+ method: "DELETE"
36
+ })
37
+ }),
38
+ renameAnatomyPreset: build.mutation({
39
+ query: (queryArg) => ({
40
+ url: `/api/anatomy/presets/${queryArg.presetName}/rename`,
41
+ method: "POST",
42
+ body: queryArg.renamePresetModel
43
+ })
31
44
  })
32
45
  }),
33
46
  overrideExisting: false
@@ -1 +1 @@
1
- {"version":3,"file":"anatomy.es.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\n"],"names":[],"mappings":";AACM,MAAA,iBAAiB,IAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;"}
1
+ {"version":3,"file":"anatomy.es.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n unsetPrimaryPreset: build.mutation<UnsetPrimaryPresetApiResponse, UnsetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'DELETE',\n }),\n }),\n renameAnatomyPreset: build.mutation<RenameAnatomyPresetApiResponse, RenameAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/rename`,\n method: 'POST',\n body: queryArg.renamePresetModel,\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type UnsetPrimaryPresetApiResponse = unknown\nexport type UnsetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type RenameAnatomyPresetApiResponse = unknown\nexport type RenameAnatomyPresetApiArg = {\n presetName: string\n renamePresetModel: RenamePresetModel\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n ftrackId?: string\n ftrackPath?: string\n /** The Shotgrid ID of this entity. */\n shotgridId?: string\n /** The Shotgrid Type of this entity. */\n shotgridType?: string\n inheritableString?: string\n /** Push changes done to this project to Shotgrid. Requires the transmitter service. */\n shotgridPush?: boolean\n tools?: string[]\n applications?: string[]\n sokoId?: string\n booo?: boolean\n sokoPath?: string\n myAdvancedEnum?: 'first' | 'second'\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\nexport type RenamePresetModel = {\n /** The new name of the anatomy preset. */\n name: string\n}\n"],"names":[],"mappings":";AACM,MAAA,iBAAiB,IAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,oBAAoB,MAAM,SAAkE;AAAA,MAC1F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;"}
@@ -72,6 +72,7 @@ const transformDetailsPanelQueriesData = ({
72
72
  const task = entity;
73
73
  return {
74
74
  entityType: "task",
75
+ entitySubType: task.taskType,
75
76
  projectName,
76
77
  id: task.id,
77
78
  name: task.name,
@@ -98,6 +99,7 @@ const transformDetailsPanelQueriesData = ({
98
99
  const version = entity;
99
100
  return {
100
101
  entityType: "version",
102
+ entitySubType: void 0,
101
103
  projectName,
102
104
  id: version.id,
103
105
  name: version.name,
@@ -121,6 +123,7 @@ const transformDetailsPanelQueriesData = ({
121
123
  const folder = entity;
122
124
  return {
123
125
  entityType: "folder",
126
+ entitySubType: folder.folderType,
124
127
  projectName,
125
128
  id: folder.id,
126
129
  name: folder.name,
@@ -146,6 +149,7 @@ const transformDetailsPanelQueriesData = ({
146
149
  const representation = entity;
147
150
  return {
148
151
  entityType: "representation",
152
+ entitySubType: void 0,
149
153
  projectName,
150
154
  id: representation.id,
151
155
  name: representation.name,
@@ -1 +1 @@
1
- {"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["parseAttribs"],"mappings":"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"}
1
+ {"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["parseAttribs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAM,0BAA0B,CAAC,QAAQ,WAAW,UAAU,gBAAgB;AAoC9E,MAAM,mCAAmC,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AACF,MAAuD;;AACrD,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,YAAM,OAAO;AACN,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe,KAAK;AAAA,QACpB;AAAA,QACA,IAAI,KAAK;AAAA,QACT,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,QACb,WAAW,KAAK;AAAA,QAChB,WAAW,KAAK;AAAA,QAChB,QAAQA,YAAAA,aAAa,KAAK,SAAS;AAAA,QACnC,gBAAgB,KAAK;AAAA,QACrB,aAAa,KAAK;AAAA,QAClB,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,UACJ,IAAI,KAAK;AAAA,UACT,MAAM,KAAK;AAAA,UACX,OAAO,KAAK;AAAA,UACZ,WAAW,KAAK;AAAA,UAChB,UAAU,KAAK;AAAA,QACjB;AAAA,QACA,SAAS;AAAA,QACT,UAAS,sBAAK,aAAL,mBAAe,UAAf,mBAAuB,OAAvB,mBAA2B;AAAA,MACtC;AAAA,IACF,KAAK;AACH,YAAM,UAAU;AACT,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe;AAAA,QACf;AAAA,QACA,IAAI,QAAQ;AAAA,QACZ,MAAM,QAAQ;AAAA,QACd,OAAO;AAAA,QACP,MAAM,QAAQ;AAAA,QACd,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,QACnB,WAAW,QAAQ;AAAA,QACnB,QAAQA,YAAAA,aAAa,QAAQ,SAAS;AAAA,QACtC,gBAAgB,QAAQ;AAAA,QACxB,aAAa,QAAQ;AAAA,QACrB,SAAQ,aAAQ,YAAR,mBAAiB;AAAA,QACzB,SAAS;AAAA,UACP,KAAI,aAAQ,YAAR,mBAAiB;AAAA,UACrB,OAAM,aAAQ,YAAR,mBAAiB;AAAA,UACvB,cAAa,aAAQ,YAAR,mBAAiB;AAAA,QAChC;AAAA,QACA,mBAAiB,mBAAQ,oBAAR,mBAAyB,UAAzB,mBAAgC,IAAI,CAAC,SAAS,KAAK,UAAS,CAAA;AAAA,MAC/E;AAAA,IACF,KAAK;AACH,YAAM,SAAS;AACR,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe,OAAO;AAAA,QACtB;AAAA,QACA,IAAI,OAAO;AAAA,QACX,MAAM,OAAO;AAAA,QACb,OAAO,OAAO;AAAA,QACd,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO;AAAA,QACf,WAAW,OAAO;AAAA,QAClB,WAAW,OAAO;AAAA,QAClB,QAAQA,YAAAA,aAAa,OAAO,SAAS;AAAA,QACrC,gBAAgB,OAAO;AAAA,QACvB,aAAa,OAAO;AAAA,QACpB,QAAQ;AAAA,UACN,IAAI,OAAO;AAAA,UACX,MAAM,OAAO;AAAA,UACb,OAAO,OAAO;AAAA,UACd,YAAY,OAAO;AAAA,QACrB;AAAA,QACA,SAAS;AAAA,QACT,SAAS;AAAA,QACT,iBAAiB;AAAA,MACnB;AAAA,IACF,KAAK;AACH,YAAM,iBAAiB;AAChB,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe;AAAA,QACf;AAAA,QACA,IAAI,eAAe;AAAA,QACnB,MAAM,eAAe;AAAA,QACrB,OAAO;AAAA,QACP,MAAM,eAAe;AAAA,QACrB,QAAQ,eAAe;AAAA,QACvB,WAAW,eAAe;AAAA,QAC1B,WAAW,eAAe;AAAA,QAC1B,QAAQA,YAAAA,aAAa,eAAe,SAAS;AAAA,QAC7C,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,SAAS,eAAe;AAAA,QACxB,SAAS,eAAe,QAAQ;AAAA,QAChC,MAAM,eAAe,QAAQ,QAAQ;AAAA,QACrC,SAAQ,oBAAe,QAAQ,YAAvB,mBAAgC;AAAA,QACxC,iBAAiB;AAAA,MACnB;AAAA,EAAA;AAEN;;;"}
@@ -70,6 +70,7 @@ const transformDetailsPanelQueriesData = ({
70
70
  const task = entity;
71
71
  return {
72
72
  entityType: "task",
73
+ entitySubType: task.taskType,
73
74
  projectName,
74
75
  id: task.id,
75
76
  name: task.name,
@@ -96,6 +97,7 @@ const transformDetailsPanelQueriesData = ({
96
97
  const version = entity;
97
98
  return {
98
99
  entityType: "version",
100
+ entitySubType: void 0,
99
101
  projectName,
100
102
  id: version.id,
101
103
  name: version.name,
@@ -119,6 +121,7 @@ const transformDetailsPanelQueriesData = ({
119
121
  const folder = entity;
120
122
  return {
121
123
  entityType: "folder",
124
+ entitySubType: folder.folderType,
122
125
  projectName,
123
126
  id: folder.id,
124
127
  name: folder.name,
@@ -144,6 +147,7 @@ const transformDetailsPanelQueriesData = ({
144
147
  const representation = entity;
145
148
  return {
146
149
  entityType: "representation",
150
+ entitySubType: void 0,
147
151
  projectName,
148
152
  id: representation.id,
149
153
  name: representation.name,
@@ -1 +1 @@
1
- {"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -83,7 +83,8 @@ const placeholder = {
83
83
  identifier: "placeholder",
84
84
  label: "Featured action slot",
85
85
  isPlaceholder: true,
86
- icon: { type: "material-symbols", name: "sync" }
86
+ icon: { type: "material-symbols", name: "sync" },
87
+ groupLabel: ""
87
88
  };
88
89
  const Actions = ({
89
90
  entities,
@@ -97,9 +98,12 @@ const Actions = ({
97
98
  const context = React.useMemo(() => {
98
99
  if (!entities.length) return null;
99
100
  if (!entities[0].projectName) return null;
100
- const entitySubtypesLoaded = entities.map((entity) => entity.entitySubType).filter((value, index, self) => self.indexOf(value) === index && value);
101
- const entitySubTypesToUse = entitySubTypes || entitySubtypesLoaded || [];
102
- if (!(entitySubTypesToUse == null ? void 0 : entitySubTypesToUse.length) && entityType !== "version") return null;
101
+ const entitySubtypesLoaded = entities.filter((entity) => entity.entitySubType).map((entity) => entity.entitySubType).filter((value, index, self) => self.indexOf(value) === index && value);
102
+ const entitySubTypesToUse = (entitySubTypes == null ? void 0 : entitySubTypes.length) ? entitySubTypes : entitySubtypesLoaded;
103
+ if (!(entitySubTypesToUse == null ? void 0 : entitySubTypesToUse.length) && entityType !== "version" && entityType !== "representation") {
104
+ console.warn("No entity subtypes found");
105
+ return null;
106
+ }
103
107
  return {
104
108
  projectName: entities[0].projectName,
105
109
  entityType,
@@ -148,7 +152,7 @@ const Actions = ({
148
152
  });
149
153
  const groupOptions = groupedActions[category].map((action) => ({
150
154
  value: action.identifier,
151
- label: action.label,
155
+ label: action.groupLabel ? action.groupLabel + " " + action.label : action.label,
152
156
  icon: action.icon,
153
157
  hasConfig: !!action.configFields
154
158
  }));
@@ -266,7 +270,7 @@ const Actions = ({
266
270
  // @ts-expect-error
267
271
  isPlaceholder: action.isPlaceholder
268
272
  }),
269
- "data-tooltip": action.label,
273
+ "data-tooltip": action.groupLabel ? action.groupLabel + " " + action.label : action.label,
270
274
  disabled: action.isPlaceholder,
271
275
  onClick: (e) => handleExecuteAction(action.identifier, e),
272
276
  children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ActionIcon, { icon: action.icon, isExecuting: executingAction === action.identifier })
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.cjs.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n}\n\ntype ActionsProps = {\n entities: any[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers()\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .map((entity) => entity.entitySubType)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes || entitySubtypesLoaded || []\n\n // all types except version should have subtypes\n if (!entitySubTypesToUse?.length && entityType !== 'version') return null\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredNumber = 2\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredNumber)\n\n // Check if we need to add more actions to reach featuredNumber\n if (tempFeaturedActions.length < featuredNumber) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredNumber) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredNumber; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = [placeholder, placeholder, placeholder]\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n // @ts-expect-error\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.label}\n // @ts-expect-error\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["useActionTriggers","useState","useMemo","useEffect","useGetActionsFromContextQuery","actions","useExecuteActionMutation","toast","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction","ActionsDropdown","ActionConfigDialog","InteractiveActionDialog"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.cjs.js","sources":["../../../../../src/containers/Actions/Actions.tsx"],"sourcesContent":["import * as Styled from './Actions.styled'\nimport { MouseEvent, useState } from 'react'\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport { useMemo, useEffect } from 'react'\nimport { ActionContext, useExecuteActionMutation, useGetActionsFromContextQuery } from '@shared/api'\nimport { ActionsDropdown } from './ActionsDropdown'\nimport ActionIcon from './ActionIcon'\nimport { useActionTriggers } from '@shared/hooks'\nimport { ActionConfigDialog } from './ActionConfigDialog'\nimport { InteractiveActionDialog, InteractiveForm } from './InteractiveActionDialog'\n\nconst placeholder = {\n identifier: 'placeholder',\n label: 'Featured action slot',\n isPlaceholder: true,\n icon: { type: 'material-symbols', name: 'sync' },\n groupLabel: '',\n}\n\ntype ActionsProps = {\n entities: { id: string; projectName: string; entitySubType?: string }[]\n entityType: ActionContext['entityType']\n entitySubTypes?: string[]\n isLoadingEntity: boolean\n}\n\nexport const Actions = ({\n entities,\n entityType,\n entitySubTypes,\n isLoadingEntity,\n}: ActionsProps) => {\n // special triggers the actions can make to perform stuff on the client\n const { handleActionPayload } = useActionTriggers()\n const [actionBeingConfigured, setActionBeingConfigured] = useState<any>(null)\n const [interactiveForm, setInteractiveForm] = useState<any>(null)\n\n const context: ActionContext | null = useMemo(() => {\n if (!entities.length) return null\n if (!entities[0].projectName) return null\n\n // get a list of unique entity subtypes from loaded data\n const entitySubtypesLoaded = entities\n .filter((entity) => entity.entitySubType)\n .map((entity) => entity.entitySubType as string)\n .filter((value, index, self) => self.indexOf(value) === index && value)\n\n // try and use the passed in entitySubTypes, if not use the loaded ones\n const entitySubTypesToUse = entitySubTypes?.length ? entitySubTypes : entitySubtypesLoaded\n\n // all types except version/representation should have subtypes\n if (\n !entitySubTypesToUse?.length &&\n entityType !== 'version' &&\n entityType !== 'representation'\n ) {\n console.warn('No entity subtypes found')\n return null\n }\n\n return {\n projectName: entities[0].projectName,\n entityType: entityType,\n entityIds: entities.map((entity) => entity.id),\n entitySubtypes: entitySubTypesToUse,\n }\n }, [entities, entityType])\n\n useEffect(() => {\n setInteractiveForm(null)\n }, [context])\n\n const { data, isFetching: isFetchingActions } = useGetActionsFromContextQuery(\n { mode: 'simple', actionContext: context as ActionContext },\n { skip: !context },\n )\n\n const actions = data?.actions || []\n\n const categoryOrder = ['application', 'admin', 'workflow']\n // group actions by category\n // sort by hardcoded category, this will changing the future\n const groupedActions = useMemo(() => {\n // Step 1: Group actions by category\n const grouped = actions.reduce((acc: { [key: string]: any[] }, action) => {\n const category = action.category || 'uncategorized'\n if (!acc[category]) {\n acc[category] = []\n }\n acc[category].push(action)\n return acc\n }, {})\n\n // Step 5: Return the ordered groups\n return grouped\n }, [actions])\n\n // get categories that don't have a specific order (not in categoryOrder)\n // then sort them alphabetically\n const unorderedCategories = useMemo(\n () => [\n ...new Set(\n Object.keys(groupedActions)\n .filter((category) => !categoryOrder.includes(category))\n .sort((a, b) => a.localeCompare(b)),\n ),\n ],\n [groupedActions],\n )\n\n const categories = [...categoryOrder, ...unorderedCategories]\n\n // create the options for the dropdown, each category is separated by a divider and a title\n // for the divider we will use a custom dropdown item template\n const dropdownOptions = useMemo(() => {\n const options = []\n\n categories.forEach((category) => {\n if (!groupedActions[category] || !groupedActions[category].length) return\n\n options.push({\n label: category,\n header: true,\n value: category,\n disabled: true,\n })\n\n const groupOptions = groupedActions[category].map((action) => ({\n value: action.identifier,\n label: action.groupLabel ? action.groupLabel + ' ' + action.label : action.label,\n icon: action.icon,\n hasConfig: !!action.configFields,\n }))\n\n options.push(...groupOptions)\n })\n\n // if no actions, add placeholder\n if (!options.length) {\n options.push({\n label: 'No actions available',\n value: 'no-actions',\n disabled: true,\n header: true,\n })\n }\n\n return options\n }, [groupedActions, unorderedCategories, categoryOrder])\n\n const featuredNumber = 2\n\n const featuredActions = useMemo(() => {\n // Filter and sort to get initial featured actions\n let tempFeaturedActions = actions\n .filter((action) => action.featured)\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .slice(0, featuredNumber)\n\n // Check if we need to add more actions to reach featuredNumber\n if (tempFeaturedActions.length < featuredNumber) {\n categories.forEach((category) => {\n if (tempFeaturedActions.length >= featuredNumber) return\n const actions = groupedActions[category]\n if (!actions || !actions.length) return\n\n for (let i = tempFeaturedActions.length; i < featuredNumber; i++) {\n const action = actions[i]\n if (!action) break\n if (!action.icon) continue\n tempFeaturedActions.push(action)\n }\n })\n }\n\n return tempFeaturedActions\n }, [actions, groupedActions, placeholder])\n\n const [executeAction, { isLoading: isLoadingExecution, originalArgs }] =\n useExecuteActionMutation()\n const executingAction = isLoadingExecution && originalArgs?.identifier\n\n const handleExecuteAction = async (\n identifier: string,\n e?: MouseEvent<HTMLElement> | null,\n formData?: InteractiveForm,\n ) => {\n e?.preventDefault()\n const action = actions.find((option) => option.identifier === identifier)\n\n if (!action) {\n toast.error('Action not found')\n console.warn('Action not found', identifier)\n return\n }\n\n const params = {\n addonName: action.addonName as string,\n addonVersion: action.addonVersion as string,\n variant: action.variant,\n identifier: action.identifier,\n }\n\n const actionContext = { ...context }\n if (formData) {\n actionContext.formData = formData\n }\n\n let response = null\n\n try {\n response = await executeAction({ actionContext, ...params }).unwrap()\n } catch (error: any) {\n console.error('Error executing action', error)\n toast.error(error?.data?.detail || 'Error executing action')\n return\n }\n\n try {\n // Toast the message if it is available\n if (response?.message) {\n if (response?.success) {\n toast.success(response.message, { autoClose: 2000 })\n } else {\n toast.error(response.message, { autoClose: 2000 })\n }\n }\n\n // Even if response?.success is false, we still want to handle the payload\n // as it may contain useful information - complex error messages in form,\n // redirect to another page etc. If the action just needs to abort,\n // it raises exception instead of returning a response with success: false\n\n // Use the new hook to handle payload\n if (response?.payload) {\n if (response.type === 'form') {\n // action requests additional information from the user.\n // we show a dialog with the form and when the user submits it we call the action again\n\n // It probably does not make sense to move to the useActionTriggers hook\n // as it need contexts and the dialog\n const intf = {\n identifier,\n // @ts-expect-error\n title: response.payload['title'],\n // @ts-expect-error\n fields: response.payload['fields'],\n // @ts-expect-error\n submitLabel: response.payload['submit_label'],\n // @ts-expect-error\n cancelLabel: response.payload['cancel_label'],\n // @ts-expect-error\n submitIcon: response.payload['submit_icon'],\n // @ts-expect-error\n cancelIcon: response.payload['cancel_icon'],\n }\n setInteractiveForm(intf)\n } else {\n handleActionPayload(response.type as string, response.payload)\n }\n }\n } catch (error) {\n // got response, but failed to process it\n console.warn('Error during action response processing', error)\n toast.error('Error occured during action processing')\n }\n }\n\n const handleConfigureAction = (identifier: string) => {\n const action = actions.find((data) => data.identifier === identifier)\n if (!action) return\n setActionBeingConfigured(action)\n }\n\n const handleSubmitInteractiveForm = async (identifier: string, formData: InteractiveForm) => {\n handleExecuteAction(identifier, null, formData)\n }\n\n const loadingActions = [placeholder, placeholder, placeholder]\n\n const isLoading = isFetchingActions || isLoadingEntity\n const featuredActionsToDisplay = isLoading ? loadingActions : featuredActions\n\n return (\n <Styled.Actions className=\"actions\">\n {featuredActionsToDisplay.map((action, i) => (\n <Styled.FeaturedAction\n key={action.identifier + '-' + i}\n className={clsx('action', {\n loading: isLoading,\n // @ts-expect-error\n isPlaceholder: action.isPlaceholder,\n })}\n data-tooltip={action.groupLabel ? action.groupLabel + ' ' + action.label : action.label}\n // @ts-expect-error\n disabled={action.isPlaceholder}\n onClick={(e) => handleExecuteAction(action.identifier, e)}\n >\n {/* @ts-ignore */}\n <ActionIcon icon={action.icon} isExecuting={executingAction === action.identifier} />\n </Styled.FeaturedAction>\n ))}\n <ActionsDropdown\n options={dropdownOptions}\n isLoading={isLoading}\n onAction={handleExecuteAction}\n onConfig={handleConfigureAction}\n />\n <ActionConfigDialog\n action={actionBeingConfigured}\n // @ts-expect-error\n context={context}\n onClose={() => setActionBeingConfigured(null)}\n />\n <InteractiveActionDialog\n interactiveForm={interactiveForm}\n onClose={() => setInteractiveForm(null)}\n // @ts-expect-error\n onSubmit={handleSubmitInteractiveForm}\n />\n </Styled.Actions>\n )\n}\n"],"names":["useActionTriggers","useState","useMemo","useEffect","useGetActionsFromContextQuery","actions","useExecuteActionMutation","toast","data","jsxs","Styled.Actions","jsx","Styled.FeaturedAction","ActionsDropdown","ActionConfigDialog","InteractiveActionDialog"],"mappings":"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"}
@@ -81,7 +81,8 @@ const placeholder = {
81
81
  identifier: "placeholder",
82
82
  label: "Featured action slot",
83
83
  isPlaceholder: true,
84
- icon: { type: "material-symbols", name: "sync" }
84
+ icon: { type: "material-symbols", name: "sync" },
85
+ groupLabel: ""
85
86
  };
86
87
  const Actions = ({
87
88
  entities,
@@ -95,9 +96,12 @@ const Actions = ({
95
96
  const context = useMemo(() => {
96
97
  if (!entities.length) return null;
97
98
  if (!entities[0].projectName) return null;
98
- const entitySubtypesLoaded = entities.map((entity) => entity.entitySubType).filter((value, index, self) => self.indexOf(value) === index && value);
99
- const entitySubTypesToUse = entitySubTypes || entitySubtypesLoaded || [];
100
- if (!(entitySubTypesToUse == null ? void 0 : entitySubTypesToUse.length) && entityType !== "version") return null;
99
+ const entitySubtypesLoaded = entities.filter((entity) => entity.entitySubType).map((entity) => entity.entitySubType).filter((value, index, self) => self.indexOf(value) === index && value);
100
+ const entitySubTypesToUse = (entitySubTypes == null ? void 0 : entitySubTypes.length) ? entitySubTypes : entitySubtypesLoaded;
101
+ if (!(entitySubTypesToUse == null ? void 0 : entitySubTypesToUse.length) && entityType !== "version" && entityType !== "representation") {
102
+ console.warn("No entity subtypes found");
103
+ return null;
104
+ }
101
105
  return {
102
106
  projectName: entities[0].projectName,
103
107
  entityType,
@@ -146,7 +150,7 @@ const Actions = ({
146
150
  });
147
151
  const groupOptions = groupedActions[category].map((action) => ({
148
152
  value: action.identifier,
149
- label: action.label,
153
+ label: action.groupLabel ? action.groupLabel + " " + action.label : action.label,
150
154
  icon: action.icon,
151
155
  hasConfig: !!action.configFields
152
156
  }));
@@ -264,7 +268,7 @@ const Actions = ({
264
268
  // @ts-expect-error
265
269
  isPlaceholder: action.isPlaceholder
266
270
  }),
267
- "data-tooltip": action.label,
271
+ "data-tooltip": action.groupLabel ? action.groupLabel + " " + action.label : action.label,
268
272
  disabled: action.isPlaceholder,
269
273
  onClick: (e) => handleExecuteAction(action.identifier, e),
270
274
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(ActionIcon, { icon: action.icon, isExecuting: executingAction === action.identifier })