@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.
- package/dist/_virtual/index.cjs5.js +5 -3
- package/dist/_virtual/index.cjs5.js.map +1 -1
- package/dist/_virtual/index.cjs6.js +3 -5
- package/dist/_virtual/index.cjs6.js.map +1 -1
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -5
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.cjs.js +19 -10
- package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.cjs.js.map +1 -1
- package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.es.js +21 -12
- package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.es.js.map +1 -1
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +174 -68
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +174 -68
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +1 -1
- package/dist/node_modules/@standard-schema/utils/dist/index.cjs.js +23 -0
- package/dist/node_modules/@standard-schema/utils/dist/index.cjs.js.map +1 -0
- package/dist/node_modules/@standard-schema/utils/dist/index.es.js +23 -0
- package/dist/node_modules/@standard-schema/utils/dist/index.es.js.map +1 -0
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/src/api/generated/anatomy.cjs.js +13 -0
- package/dist/shared/src/api/generated/anatomy.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/anatomy.es.js +13 -0
- package/dist/shared/src/api/generated/anatomy.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +4 -0
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -0
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +10 -6
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +10 -6
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +5 -3
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +5 -3
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js +13 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js +13 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js +3 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js +3 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +24 -6
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +24 -6
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +7 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +7 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +8 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +8 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
- package/dist/types/api/generated/access.d.ts +6 -6
- package/dist/types/api/generated/actions.d.ts +6 -6
- package/dist/types/api/generated/activityFeed.d.ts +8 -8
- package/dist/types/api/generated/addons.d.ts +28 -28
- package/dist/types/api/generated/anatomy.d.ts +36 -6
- package/dist/types/api/generated/attributes.d.ts +5 -5
- package/dist/types/api/generated/authentication.d.ts +5 -5
- package/dist/types/api/generated/bundles.d.ts +7 -7
- package/dist/types/api/generated/configuration.d.ts +7 -7
- package/dist/types/api/generated/desktop.d.ts +12 -12
- package/dist/types/api/generated/entityLists.d.ts +12 -12
- package/dist/types/api/generated/events.d.ts +8 -8
- package/dist/types/api/generated/files.d.ts +7 -7
- package/dist/types/api/generated/folders.d.ts +8 -8
- package/dist/types/api/generated/graphql.d.ts +25 -25
- package/dist/types/api/generated/inbox.d.ts +1 -1
- package/dist/types/api/generated/links.d.ts +5 -5
- package/dist/types/api/generated/market.d.ts +6 -6
- package/dist/types/api/generated/onboarding.d.ts +3 -3
- package/dist/types/api/generated/operations.d.ts +3 -3
- package/dist/types/api/generated/products.d.ts +5 -5
- package/dist/types/api/generated/projectDashboard.d.ts +4 -4
- package/dist/types/api/generated/projects.d.ts +27 -27
- package/dist/types/api/generated/representations.d.ts +5 -5
- package/dist/types/api/generated/reviewables.d.ts +7 -7
- package/dist/types/api/generated/services.d.ts +6 -6
- package/dist/types/api/generated/system.d.ts +12 -12
- package/dist/types/api/generated/tasks.d.ts +8 -8
- package/dist/types/api/generated/teams.d.ts +6 -6
- package/dist/types/api/generated/thumbnails.d.ts +11 -11
- package/dist/types/api/generated/uRIs.d.ts +2 -2
- package/dist/types/api/generated/users.d.ts +26 -26
- package/dist/types/api/generated/versions.d.ts +6 -6
- package/dist/types/api/generated/workfiles.d.ts +6 -6
- package/dist/types/api/generated/ynputCloud.d.ts +5 -5
- package/dist/types/api/queries/actions/getActions.d.ts +29 -29
- package/dist/types/api/queries/activities/getActivities.d.ts +72 -71
- package/dist/types/api/queries/activities/getMentions.d.ts +18 -18
- package/dist/types/api/queries/activities/updateActivities.d.ts +62 -62
- package/dist/types/api/queries/activities/updateReaction.d.ts +10 -10
- package/dist/types/api/queries/addons/getAddons.d.ts +67 -67
- package/dist/types/api/queries/addons/updateAddons.d.ts +35 -35
- package/dist/types/api/queries/attributes/getAttributes.d.ts +23 -23
- package/dist/types/api/queries/attributes/updateAttributes.d.ts +12 -12
- package/dist/types/api/queries/authentication/getAuthentication.d.ts +15 -15
- package/dist/types/api/queries/entities/getEntity.d.ts +73 -73
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +44 -44
- package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +32 -32
- package/dist/types/api/queries/folders/getFolders.d.ts +26 -26
- package/dist/types/api/queries/overview/getOverview.d.ts +72 -72
- package/dist/types/api/queries/overview/updateOverview.d.ts +5 -5
- package/dist/types/api/queries/project/getProject.d.ts +103 -103
- package/dist/types/api/queries/review/getReview.d.ts +36 -36
- package/dist/types/api/queries/review/updateReview.d.ts +13 -13
- package/dist/types/api/queries/system/getSystem.d.ts +39 -39
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +53 -53
- package/dist/types/api/queries/users/getUsers.d.ts +110 -110
- package/dist/types/api/queries/watchers/getWatchers.d.ts +20 -20
- package/dist/types/containers/Actions/Actions.d.ts +5 -1
- package/dist/types/containers/ProjectTreeTable/widgets/BooleanWidget.d.ts +1 -2
- package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +10 -0
- package/dist/types/containers/ProjectTreeTable/widgets/DateWidget.d.ts +2 -3
- package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +1 -1
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAM,0BAA0B,CAAC,QAAQ,WAAW,UAAU,gBAAgB;
|
|
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":"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"}
|
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAM,0BAA0B,CAAC,QAAQ,WAAW,UAAU,gBAAgB;
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,QAAQ,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,QAAQ,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,QAAQ,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,QAAQ,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;"}
|
|
@@ -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
|
|
102
|
-
if (!(entitySubTypesToUse == null ? void 0 : entitySubTypesToUse.length) && entityType !== "version")
|
|
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
|
|
100
|
-
if (!(entitySubTypesToUse == null ? void 0 : entitySubTypesToUse.length) && entityType !== "version")
|
|
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 })
|