@ynput/ayon-frontend-shared 0.2.1 → 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.cjs4.js +4 -4
- package/dist/_virtual/index.cjs5.js +4 -4
- package/dist/_virtual/index.cjs6.js +2 -2
- package/dist/_virtual/index.cjs7.js +2 -2
- package/dist/_virtual/index.es4.js +4 -4
- package/dist/_virtual/index.es5.js +4 -4
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es7.js +2 -2
- package/dist/hooks.cjs.js +2 -0
- package/dist/hooks.cjs.js.map +1 -1
- package/dist/hooks.es.js +2 -0
- package/dist/hooks.es.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/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- 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/components/EntityPath/EntityPath.cjs.js +11 -1
- package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.es.js +12 -2
- package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.cjs.js +10 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.es.js +10 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.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/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +1 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.cjs.js +136 -0
- package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -0
- package/dist/shared/src/hooks/useLoadModules.es.js +136 -0
- package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -0
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +4 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +4 -1
- package/dist/shared/src/hooks/useScopedStatuses.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/components/EntityPath/EntityPath.styled.d.ts +1 -0
- 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/dist/types/containers/RepresentationsList/RepresentationsList.d.ts +1 -1
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useLoadModules.d.ts +28 -0
- 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,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.cjs7.js");
|
|
4
4
|
var hasRequiredParseNumericRange;
|
|
5
5
|
function requireParseNumericRange() {
|
|
6
6
|
if (hasRequiredParseNumericRange) return index.__module.exports;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as parseNumericRange } from "../../_virtual/index.
|
|
1
|
+
import { __module as parseNumericRange } from "../../_virtual/index.es7.js";
|
|
2
2
|
var hasRequiredParseNumericRange;
|
|
3
3
|
function requireParseNumericRange() {
|
|
4
4
|
if (hasRequiredParseNumericRange) return parseNumericRange.exports;
|
|
@@ -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":"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"}
|
|
@@ -27,6 +27,7 @@ const EntityPath = ({
|
|
|
27
27
|
const [dropdownOpen, setDropdownOpen] = React.useState(null);
|
|
28
28
|
const [maxSegments, setMaxSegments] = React.useState(null);
|
|
29
29
|
const [calcMaxWidth, setCalcMaxWidth] = React.useState(false);
|
|
30
|
+
const finalSegmentRef = React.useRef(null);
|
|
30
31
|
React.useLayoutEffect(() => {
|
|
31
32
|
setMaxSegments(null);
|
|
32
33
|
setCalcMaxWidth(true);
|
|
@@ -56,6 +57,15 @@ const EntityPath = ({
|
|
|
56
57
|
setMaxSegments(newMaxSegments);
|
|
57
58
|
setCalcMaxWidth(false);
|
|
58
59
|
}, [containerRef.current, calcMaxWidth]);
|
|
60
|
+
React.useLayoutEffect(() => {
|
|
61
|
+
if (!containerRef.current || !finalSegmentRef.current || !maxSegments) return;
|
|
62
|
+
const container = containerRef.current;
|
|
63
|
+
const maxWidth = getPathMaxWidth(container) ?? Infinity;
|
|
64
|
+
const diff = container.clientWidth - maxWidth;
|
|
65
|
+
if (diff <= 0) return;
|
|
66
|
+
const newWidth = `${finalSegmentRef.current.clientWidth - diff}px`;
|
|
67
|
+
finalSegmentRef.current.style.width = newWidth;
|
|
68
|
+
}, [maxSegments]);
|
|
59
69
|
const segmentsToShow = maxSegments && segments.length > maxSegments ? segments.slice(-maxSegments) : segments;
|
|
60
70
|
const hiddenSegments = maxSegments && segments.length > maxSegments ? segments.slice(0, -maxSegments) : [];
|
|
61
71
|
if (hideProjectName)
|
|
@@ -120,7 +130,7 @@ const EntityPath = ({
|
|
|
120
130
|
segment: versionSegment,
|
|
121
131
|
isOpen: dropdownOpen === "versions",
|
|
122
132
|
children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(EntityPath_styled.Segment, { children: [
|
|
123
|
-
/* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
|
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(EntityPath_styled.FinalSegmentLabel, { ref: finalSegmentRef, className: "label", children: versionSegment.label }),
|
|
124
134
|
/* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.Icon, { icon: "expand_more" })
|
|
125
135
|
] })
|
|
126
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPath.cjs.js","sources":["../../../../../src/components/EntityPath/EntityPath.tsx"],"sourcesContent":["import { FC, Fragment, MouseEvent, useLayoutEffect, useRef, useState } from 'react'\nimport * as Styled from './EntityPath.styled'\nimport clsx from 'clsx'\nimport SegmentProvider from './SegmentProvider'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { DetailsPanelEntityType } from '@shared/api'\n\nconst Slash = () => <span className=\"slash\">/</span>\n\nexport type PathSegment = {\n type: DetailsPanelEntityType | 'product' | 'project'\n label: string\n id: string\n}\n\nconst dropdownStates = ['more', 'versions']\ntype DropdownState = (typeof dropdownStates)[number]\n\ntype DropdownMouseEvent = MouseEvent<HTMLSpanElement>\nconst getDropdownElements = (e: DropdownMouseEvent): [HTMLElement, string] => {\n const target = e.target as HTMLElement\n const dropdownId = target.closest('.dropdown')?.id || ''\n return [target, dropdownId]\n}\n\nexport interface EntityPathProps {\n projectName: string\n hideProjectName: boolean\n segments: PathSegment[]\n isLoading: boolean\n entityType: string\n versions: PathSegment[]\n scope: string\n}\n\nexport const EntityPath: FC<EntityPathProps> = ({\n projectName,\n hideProjectName,\n segments,\n versions = [],\n isLoading,\n entityType,\n scope,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const [dropdownOpen, setDropdownOpen] = useState<null | DropdownState>(null)\n // defaults to whole path\n const [maxSegments, setMaxSegments] = useState<null | number>(null)\n const [calcMaxWidth, setCalcMaxWidth] = useState(false)\n\n useLayoutEffect(() => {\n setMaxSegments(null)\n setCalcMaxWidth(true)\n }, [segments])\n\n useLayoutEffect(() => {\n if (!containerRef.current) {\n setCalcMaxWidth(false)\n return\n }\n // find max width the path can be\n const container = containerRef.current\n const pathWidth = container.clientWidth\n const maxWidth = getPathMaxWidth(container)\n\n if (!maxWidth) return\n\n // we need to reduce the number of segments shown\n // but maybe even then it is still longer than the max width\n // so we need to reduce the number of segments until the total width is less than the max width\n const children = container.children\n let totalWidth = pathWidth\n // number of segments to keep\n const fullCount = container.childElementCount\n let segmentsCount = fullCount\n // while loop that removes segments until the total width is less than the max width\n while (totalWidth > maxWidth && segmentsCount > 0) {\n // remove 2 segments at a time (because of slashes)\n segmentsCount -= 2\n totalWidth = totalUpSegmentsWidth(children, segmentsCount, fullCount)\n }\n\n // count number of \"full\" segments left\n // if something goes wrong, removing 1 (2) is probably enough\n let newMaxSegments =\n Array.from(children)\n .slice(0, segmentsCount)\n .filter(\n (segment) => segment.nodeType === Node.ELEMENT_NODE && segment.className.includes('full'),\n )?.length || 2\n\n // cap at 1\n newMaxSegments = Math.max(newMaxSegments, 1)\n\n setMaxSegments(newMaxSegments)\n setCalcMaxWidth(false)\n }, [containerRef.current, calcMaxWidth])\n\n // Check if there are fewer than or equal to maxSegments segments\n const segmentsToShow =\n maxSegments && segments.length > maxSegments ? segments.slice(-maxSegments) : segments\n const hiddenSegments =\n maxSegments && segments.length > maxSegments ? segments.slice(0, -maxSegments) : []\n\n // if there is no project name, add to hidden segments\n if (hideProjectName)\n hiddenSegments.unshift({ type: 'project', label: projectName, id: projectName })\n\n // if the entityType is a version, separate the version\n let versionSegment\n let finalSegmentsToShow = segmentsToShow\n\n if (entityType === 'version' && segments.length > 0) {\n versionSegment = segments[segments.length - 1]\n finalSegmentsToShow = segmentsToShow.slice(0, -1)\n }\n\n const handleMouseEnter = (e: DropdownMouseEvent) => {\n const [, id] = getDropdownElements(e)\n if (id && !dropdownOpen) setDropdownOpen(id)\n }\n const handleMouseLeave = () => setDropdownOpen(null)\n\n const handleDropdownClick = (e: DropdownMouseEvent) => {\n const [target, id] = getDropdownElements(e)\n\n if (!dropdownStates.includes(id)) return\n const isListItem = !!target.closest('li')\n\n if (isListItem) setDropdownOpen(null)\n else if (dropdownOpen !== id) setDropdownOpen(id)\n }\n\n const segmentProps = { scope, projectName }\n\n return (\n <Styled.Path className={clsx({ loading: isLoading })} id=\"entity-path\" ref={containerRef}>\n {!hideProjectName && <Styled.Segment>{projectName}</Styled.Segment>}\n\n {!!hiddenSegments.length && (\n <>\n {!hideProjectName && <Slash />}\n <Styled.Segment\n className=\"dropdown more\"\n id=\"more\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleDropdownClick}\n >\n ...\n {dropdownOpen === 'more' && (\n <Styled.MoreModal>\n <Styled.MoreList>\n {hiddenSegments.map((segment) => (\n <SegmentProvider {...segmentProps} segment={segment} key={segment.id}>\n <Styled.MoreItem>{segment.label}</Styled.MoreItem>\n </SegmentProvider>\n ))}\n </Styled.MoreList>\n </Styled.MoreModal>\n )}\n </Styled.Segment>\n </>\n )}\n\n {finalSegmentsToShow.map((segment) => (\n <Fragment key={segment.id}>\n <Slash />\n\n <SegmentProvider {...segmentProps} segment={segment} className=\"full\">\n <Styled.Segment>\n <span className=\"label\">{segment.label}</span>\n </Styled.Segment>\n </SegmentProvider>\n </Fragment>\n ))}\n\n {versionSegment && (\n <>\n <Slash />\n <Styled.SegmentWrapper\n className=\"full dropdown\"\n id=\"versions\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleDropdownClick}\n >\n <SegmentProvider\n {...segmentProps}\n segment={versionSegment}\n isOpen={dropdownOpen === 'versions'}\n >\n <Styled.Segment>\n <span className=\"label\">{versionSegment.label}</span>\n <Icon icon=\"expand_more\" />\n </Styled.Segment>\n </SegmentProvider>\n {dropdownOpen === 'versions' && (\n <Styled.MoreModal>\n <Styled.MoreList>\n {versions.map((version) => (\n <SegmentProvider {...segmentProps} segment={version} key={version.id}>\n <Styled.MoreItem>{version.label}</Styled.MoreItem>\n </SegmentProvider>\n ))}\n </Styled.MoreList>\n </Styled.MoreModal>\n )}\n </Styled.SegmentWrapper>\n </>\n )}\n </Styled.Path>\n )\n}\n\nconst getPathMaxWidth = (pathEl: HTMLDivElement) => {\n const toolbar = pathEl.parentElement\n if (!toolbar) return\n // get width of toolbar without padding\n const toolbarStyle = getComputedStyle(toolbar)\n const paddingLeft = parseInt(toolbarStyle.paddingLeft) || 0\n const paddingRight = parseInt(toolbarStyle.paddingRight) || 0\n const gap = parseInt(toolbarStyle.gap) || 0\n const toolbarWidth = toolbar.clientWidth - paddingLeft - paddingRight\n\n // get child elements that are not path\n const children = Array.from(toolbar.children).filter((child) => child.id !== 'entity-path')\n // find total width of children including the gap between them\n const childrenWidth = Array.from(children).reduce(\n (acc, child) => acc + (child as HTMLElement).clientWidth,\n 0,\n )\n\n return toolbarWidth - childrenWidth - gap * (children.length - 1)\n}\n\nconst totalUpSegmentsWidth = (children: HTMLCollection, count: number, full: number) => {\n const skip = full - count\n let total = 0\n for (let i = 0; i < full - skip; i++) {\n const index = i > 1 ? i + skip : i\n const width = (children[index] as Element)?.clientWidth\n if (isNaN(width)) continue\n total += width\n }\n const gap = 4\n const moreWidth = 40\n return total + (gap * count - 1) + moreWidth\n}\n"],"names":["jsx","useRef","useState","useLayoutEffect","jsxs","Styled.Path","Styled.Segment","Fragment","Styled.MoreModal","Styled.MoreList","createElement","Styled.MoreItem","Styled.SegmentWrapper","Icon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntityPath.cjs.js","sources":["../../../../../src/components/EntityPath/EntityPath.tsx"],"sourcesContent":["import { FC, Fragment, MouseEvent, useLayoutEffect, useRef, useState } from 'react'\nimport * as Styled from './EntityPath.styled'\nimport clsx from 'clsx'\nimport SegmentProvider from './SegmentProvider'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { DetailsPanelEntityType } from '@shared/api'\n\nconst Slash = () => <span className=\"slash\">/</span>\n\nexport type PathSegment = {\n type: DetailsPanelEntityType | 'product' | 'project'\n label: string\n id: string\n}\n\nconst dropdownStates = ['more', 'versions']\ntype DropdownState = (typeof dropdownStates)[number]\n\ntype DropdownMouseEvent = MouseEvent<HTMLSpanElement>\nconst getDropdownElements = (e: DropdownMouseEvent): [HTMLElement, string] => {\n const target = e.target as HTMLElement\n const dropdownId = target.closest('.dropdown')?.id || ''\n return [target, dropdownId]\n}\n\nexport interface EntityPathProps {\n projectName: string\n hideProjectName: boolean\n segments: PathSegment[]\n isLoading: boolean\n entityType: string\n versions: PathSegment[]\n scope: string\n}\n\nexport const EntityPath: FC<EntityPathProps> = ({\n projectName,\n hideProjectName,\n segments,\n versions = [],\n isLoading,\n entityType,\n scope,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const [dropdownOpen, setDropdownOpen] = useState<null | DropdownState>(null)\n // defaults to whole path\n const [maxSegments, setMaxSegments] = useState<null | number>(null)\n const [calcMaxWidth, setCalcMaxWidth] = useState(false)\n const finalSegmentRef = useRef<HTMLSpanElement>(null)\n\n useLayoutEffect(() => {\n setMaxSegments(null)\n setCalcMaxWidth(true)\n }, [segments])\n\n useLayoutEffect(() => {\n if (!containerRef.current) {\n setCalcMaxWidth(false)\n return\n }\n // find max width the path can be\n const container = containerRef.current\n const pathWidth = container.clientWidth\n const maxWidth = getPathMaxWidth(container)\n\n if (!maxWidth) return\n\n // we need to reduce the number of segments shown\n // but maybe even then it is still longer than the max width\n // so we need to reduce the number of segments until the total width is less than the max width\n const children = container.children\n let totalWidth = pathWidth\n // number of segments to keep\n const fullCount = container.childElementCount\n let segmentsCount = fullCount\n // while loop that removes segments until the total width is less than the max width\n while (totalWidth > maxWidth && segmentsCount > 0) {\n // remove 2 segments at a time (because of slashes)\n segmentsCount -= 2\n totalWidth = totalUpSegmentsWidth(children, segmentsCount, fullCount)\n }\n\n // count number of \"full\" segments left\n // if something goes wrong, removing 1 (2) is probably enough\n let newMaxSegments =\n Array.from(children)\n .slice(0, segmentsCount)\n .filter(\n (segment) => segment.nodeType === Node.ELEMENT_NODE && segment.className.includes('full'),\n )?.length || 2\n\n // cap at 1\n newMaxSegments = Math.max(newMaxSegments, 1)\n\n setMaxSegments(newMaxSegments)\n setCalcMaxWidth(false)\n }, [containerRef.current, calcMaxWidth])\n\n // Ensure that, even if the collapsed segments still aren't\n // enough to fit the path within the available space,\n // we fit everything in by truncating the last segment's label.\n // This segment is typically the product + version name,\n // which is typically also shown in much larger font below,\n // so there's no reason to always show it in full.\n useLayoutEffect(() => {\n if (!containerRef.current || !finalSegmentRef.current || !maxSegments) return\n const container = containerRef.current\n\n // The amount of truncation is exactly the difference between the container's width\n // and the maximum available width.\n const maxWidth = getPathMaxWidth(container) ?? Infinity\n const diff = container.clientWidth - maxWidth\n if (diff <= 0) return\n\n // Reduce the segment's width by the difference\n const newWidth = `${finalSegmentRef.current.clientWidth - diff}px`\n finalSegmentRef.current.style.width = newWidth\n }, [maxSegments])\n\n // Check if there are fewer than or equal to maxSegments segments\n const segmentsToShow =\n maxSegments && segments.length > maxSegments ? segments.slice(-maxSegments) : segments\n const hiddenSegments =\n maxSegments && segments.length > maxSegments ? segments.slice(0, -maxSegments) : []\n\n // if there is no project name, add to hidden segments\n if (hideProjectName)\n hiddenSegments.unshift({ type: 'project', label: projectName, id: projectName })\n\n // if the entityType is a version, separate the version\n let versionSegment\n let finalSegmentsToShow = segmentsToShow\n\n if (entityType === 'version' && segments.length > 0) {\n versionSegment = segments[segments.length - 1]\n finalSegmentsToShow = segmentsToShow.slice(0, -1)\n }\n\n const handleMouseEnter = (e: DropdownMouseEvent) => {\n const [, id] = getDropdownElements(e)\n if (id && !dropdownOpen) setDropdownOpen(id)\n }\n const handleMouseLeave = () => setDropdownOpen(null)\n\n const handleDropdownClick = (e: DropdownMouseEvent) => {\n const [target, id] = getDropdownElements(e)\n\n if (!dropdownStates.includes(id)) return\n const isListItem = !!target.closest('li')\n\n if (isListItem) setDropdownOpen(null)\n else if (dropdownOpen !== id) setDropdownOpen(id)\n }\n\n const segmentProps = { scope, projectName }\n\n return (\n <Styled.Path className={clsx({ loading: isLoading })} id=\"entity-path\" ref={containerRef}>\n {!hideProjectName && <Styled.Segment>{projectName}</Styled.Segment>}\n\n {!!hiddenSegments.length && (\n <>\n {!hideProjectName && <Slash />}\n <Styled.Segment\n className=\"dropdown more\"\n id=\"more\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleDropdownClick}\n >\n ...\n {dropdownOpen === 'more' && (\n <Styled.MoreModal>\n <Styled.MoreList>\n {hiddenSegments.map((segment) => (\n <SegmentProvider {...segmentProps} segment={segment} key={segment.id}>\n <Styled.MoreItem>{segment.label}</Styled.MoreItem>\n </SegmentProvider>\n ))}\n </Styled.MoreList>\n </Styled.MoreModal>\n )}\n </Styled.Segment>\n </>\n )}\n\n {finalSegmentsToShow.map((segment) => (\n <Fragment key={segment.id}>\n <Slash />\n\n <SegmentProvider {...segmentProps} segment={segment} className=\"full\">\n <Styled.Segment>\n <span className=\"label\">{segment.label}</span>\n </Styled.Segment>\n </SegmentProvider>\n </Fragment>\n ))}\n\n {versionSegment && (\n <>\n <Slash />\n <Styled.SegmentWrapper\n className=\"full dropdown\"\n id=\"versions\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleDropdownClick}\n >\n <SegmentProvider\n {...segmentProps}\n segment={versionSegment}\n isOpen={dropdownOpen === 'versions'}\n >\n <Styled.Segment>\n <Styled.FinalSegmentLabel ref={finalSegmentRef} className=\"label\">\n {versionSegment.label}\n </Styled.FinalSegmentLabel>\n <Icon icon=\"expand_more\" />\n </Styled.Segment>\n </SegmentProvider>\n {dropdownOpen === 'versions' && (\n <Styled.MoreModal>\n <Styled.MoreList>\n {versions.map((version) => (\n <SegmentProvider {...segmentProps} segment={version} key={version.id}>\n <Styled.MoreItem>{version.label}</Styled.MoreItem>\n </SegmentProvider>\n ))}\n </Styled.MoreList>\n </Styled.MoreModal>\n )}\n </Styled.SegmentWrapper>\n </>\n )}\n </Styled.Path>\n )\n}\n\nconst getPathMaxWidth = (pathEl: HTMLDivElement) => {\n const toolbar = pathEl.parentElement\n if (!toolbar) return\n // get width of toolbar without padding\n const toolbarStyle = getComputedStyle(toolbar)\n const paddingLeft = parseInt(toolbarStyle.paddingLeft) || 0\n const paddingRight = parseInt(toolbarStyle.paddingRight) || 0\n const gap = parseInt(toolbarStyle.gap) || 0\n const toolbarWidth = toolbar.clientWidth - paddingLeft - paddingRight\n\n // get child elements that are not path\n const children = Array.from(toolbar.children).filter((child) => child.id !== 'entity-path')\n // find total width of children including the gap between them\n const childrenWidth = Array.from(children).reduce(\n (acc, child) => acc + (child as HTMLElement).clientWidth,\n 0,\n )\n\n return toolbarWidth - childrenWidth - gap * (children.length - 1)\n}\n\nconst totalUpSegmentsWidth = (children: HTMLCollection, count: number, full: number) => {\n const skip = full - count\n let total = 0\n for (let i = 0; i < full - skip; i++) {\n const index = i > 1 ? i + skip : i\n const width = (children[index] as Element)?.clientWidth\n if (isNaN(width)) continue\n total += width\n }\n const gap = 4\n const moreWidth = 40\n return total + (gap * count - 1) + moreWidth\n}\n"],"names":["jsx","useRef","useState","useLayoutEffect","jsxs","Styled.Path","Styled.Segment","Fragment","Styled.MoreModal","Styled.MoreList","createElement","Styled.MoreItem","Styled.SegmentWrapper","Styled.FinalSegmentLabel","Icon"],"mappings":";;;;;;;;AAOA,MAAM,QAAQ,MAAMA,2BAAA,kBAAA,IAAC,QAAK,EAAA,WAAU,SAAQ,UAAC,KAAA;AAQ7C,MAAM,iBAAiB,CAAC,QAAQ,UAAU;AAI1C,MAAM,sBAAsB,CAAC,MAAiD;;AAC5E,QAAM,SAAS,EAAE;AACjB,QAAM,eAAa,YAAO,QAAQ,WAAW,MAA1B,mBAA6B,OAAM;AAC/C,SAAA,CAAC,QAAQ,UAAU;AAC5B;AAYO,MAAM,aAAkC,CAAC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,eAAeC,aAAuB,IAAI;AAChD,QAAM,CAAC,cAAc,eAAe,IAAIC,MAAAA,SAA+B,IAAI;AAE3E,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAwB,IAAI;AAClE,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAS,KAAK;AAChD,QAAA,kBAAkBD,aAAwB,IAAI;AAEpDE,QAAAA,gBAAgB,MAAM;AACpB,mBAAe,IAAI;AACnB,oBAAgB,IAAI;AAAA,EAAA,GACnB,CAAC,QAAQ,CAAC;AAEbA,QAAAA,gBAAgB,MAAM;;AAChB,QAAA,CAAC,aAAa,SAAS;AACzB,sBAAgB,KAAK;AACrB;AAAA,IAAA;AAGF,UAAM,YAAY,aAAa;AAC/B,UAAM,YAAY,UAAU;AACtB,UAAA,WAAW,gBAAgB,SAAS;AAE1C,QAAI,CAAC,SAAU;AAKf,UAAM,WAAW,UAAU;AAC3B,QAAI,aAAa;AAEjB,UAAM,YAAY,UAAU;AAC5B,QAAI,gBAAgB;AAEb,WAAA,aAAa,YAAY,gBAAgB,GAAG;AAEhC,uBAAA;AACJ,mBAAA,qBAAqB,UAAU,eAAe,SAAS;AAAA,IAAA;AAKlE,QAAA,mBACF,WAAM,KAAK,QAAQ,EAChB,MAAM,GAAG,aAAa,EACtB;AAAA,MACC,CAAC,YAAY,QAAQ,aAAa,KAAK,gBAAgB,QAAQ,UAAU,SAAS,MAAM;AAAA,UAH5F,mBAIK,WAAU;AAGA,qBAAA,KAAK,IAAI,gBAAgB,CAAC;AAE3C,mBAAe,cAAc;AAC7B,oBAAgB,KAAK;AAAA,EACpB,GAAA,CAAC,aAAa,SAAS,YAAY,CAAC;AAQvCA,QAAAA,gBAAgB,MAAM;AACpB,QAAI,CAAC,aAAa,WAAW,CAAC,gBAAgB,WAAW,CAAC,YAAa;AACvE,UAAM,YAAY,aAAa;AAIzB,UAAA,WAAW,gBAAgB,SAAS,KAAK;AACzC,UAAA,OAAO,UAAU,cAAc;AACrC,QAAI,QAAQ,EAAG;AAGf,UAAM,WAAW,GAAG,gBAAgB,QAAQ,cAAc,IAAI;AAC9C,oBAAA,QAAQ,MAAM,QAAQ;AAAA,EAAA,GACrC,CAAC,WAAW,CAAC;AAGV,QAAA,iBACJ,eAAe,SAAS,SAAS,cAAc,SAAS,MAAM,CAAC,WAAW,IAAI;AAC1E,QAAA,iBACJ,eAAe,SAAS,SAAS,cAAc,SAAS,MAAM,GAAG,CAAC,WAAW,IAAI,CAAC;AAGhF,MAAA;AACa,mBAAA,QAAQ,EAAE,MAAM,WAAW,OAAO,aAAa,IAAI,aAAa;AAG7E,MAAA;AACJ,MAAI,sBAAsB;AAE1B,MAAI,eAAe,aAAa,SAAS,SAAS,GAAG;AAClC,qBAAA,SAAS,SAAS,SAAS,CAAC;AACvB,0BAAA,eAAe,MAAM,GAAG,EAAE;AAAA,EAAA;AAG5C,QAAA,mBAAmB,CAAC,MAA0B;AAClD,UAAM,GAAG,EAAE,IAAI,oBAAoB,CAAC;AACpC,QAAI,MAAM,CAAC,aAAc,iBAAgB,EAAE;AAAA,EAC7C;AACM,QAAA,mBAAmB,MAAM,gBAAgB,IAAI;AAE7C,QAAA,sBAAsB,CAAC,MAA0B;AACrD,UAAM,CAAC,QAAQ,EAAE,IAAI,oBAAoB,CAAC;AAE1C,QAAI,CAAC,eAAe,SAAS,EAAE,EAAG;AAClC,UAAM,aAAa,CAAC,CAAC,OAAO,QAAQ,IAAI;AAEpC,QAAA,4BAA4B,IAAI;AAAA,aAC3B,iBAAiB,GAAI,iBAAgB,EAAE;AAAA,EAClD;AAEM,QAAA,eAAe,EAAE,OAAO,YAAY;AAE1C,SACGC,2BAAA,kBAAA,KAAAC,kBAAA,MAAA,EAAY,WAAW,KAAK,EAAE,SAAS,UAAW,CAAA,GAAG,IAAG,eAAc,KAAK,cACzE,UAAA;AAAA,IAAA,CAAC,mBAAmBL,2BAAAA,kBAAAA,IAACM,kBAAAA,SAAA,EAAgB,UAAY,YAAA,CAAA;AAAA,IAEjD,CAAC,CAAC,eAAe,UAEbF,2BAAA,kBAAA,KAAAG,WAAA,kBAAA,UAAA,EAAA,UAAA;AAAA,MAAC,CAAA,oEAAoB,OAAM,EAAA;AAAA,MAC5BH,2BAAA,kBAAA;AAAA,QAACE,kBAAO;AAAA,QAAP;AAAA,UACC,WAAU;AAAA,UACV,IAAG;AAAA,UACH,cAAc;AAAA,UACd,cAAc;AAAA,UACd,SAAS;AAAA,UACV,UAAA;AAAA,YAAA;AAAA,YAEE,iBAAiB,UACfN,2BAAAA,kBAAAA,IAAAQ,kBAAAA,WAAA,EACC,UAACR,2BAAA,kBAAA,IAAAS,kBAAA,UAAA,EACE,UAAe,eAAA,IAAI,CAAC,YACnBC,sBAAA,cAAC,iBAAiB,EAAA,GAAG,cAAc,SAAkB,KAAK,QAAQ,MAC/DV,2BAAA,kBAAA,IAAAW,kBAAA,UAAA,EAAiB,UAAQ,QAAA,MAAM,CAAA,CAClC,CACD,EACH,CAAA,EACF,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ,GACF;AAAA,IAGD,oBAAoB,IAAI,CAAC,YACxBP,2BAAAA,kBAAAA,KAACG,MAAAA,UAAA,EACC,UAAA;AAAA,MAAAP,2BAAA,kBAAA,IAAC,OAAM,EAAA;AAAA,uDAEN,iBAAiB,EAAA,GAAG,cAAc,SAAkB,WAAU,QAC7D,UAACA,2BAAAA,kBAAAA,IAAAM,kBAAA,SAAA,EACC,2DAAC,QAAK,EAAA,WAAU,SAAS,UAAQ,QAAA,OAAM,GACzC,EACF,CAAA;AAAA,IAAA,KAPa,QAAQ,EAQvB,CACD;AAAA,IAEA,kBAEGF,2BAAA,kBAAA,KAAAG,uCAAA,EAAA,UAAA;AAAA,MAAAP,2BAAA,kBAAA,IAAC,OAAM,EAAA;AAAA,MACPI,2BAAA,kBAAA;AAAA,QAACQ,kBAAO;AAAA,QAAP;AAAA,UACC,WAAU;AAAA,UACV,IAAG;AAAA,UACH,cAAc;AAAA,UACd,cAAc;AAAA,UACd,SAAS;AAAA,UAET,UAAA;AAAA,YAAAZ,2BAAA,kBAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACE,GAAG;AAAA,gBACJ,SAAS;AAAA,gBACT,QAAQ,iBAAiB;AAAA,gBAEzB,UAAAI,2BAAA,kBAAA,KAACE,2BAAA,EACC,UAAA;AAAA,kBAACN,iDAAAa,kBAAAA,mBAAA,EAAyB,KAAK,iBAAiB,WAAU,SACvD,yBAAe,OAClB;AAAA,kBACAb,2BAAAA,kBAAAA,IAACc,oBAAK,MAAA,EAAA,MAAK,cAAc,CAAA;AAAA,gBAAA,EAC3B,CAAA;AAAA,cAAA;AAAA,YACF;AAAA,YACC,iBAAiB,cACfd,2BAAA,kBAAA,IAAAQ,6BAAA,EACC,UAAAR,2BAAAA,kBAAAA,IAACS,kBAAAA,UAAA,EACE,UAAA,SAAS,IAAI,CAAC,YACZC,sBAAAA,cAAA,iBAAA,EAAiB,GAAG,cAAc,SAAS,SAAS,KAAK,QAAQ,MAC/DV,2BAAA,kBAAA,IAAAW,kBAAA,UAAA,EAAiB,UAAQ,QAAA,MAAM,CAAA,CAClC,CACD,EACH,CAAA,EACF,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ,EACF,CAAA;AAAA,EAAA,GAEJ;AAEJ;AAEA,MAAM,kBAAkB,CAAC,WAA2B;AAClD,QAAM,UAAU,OAAO;AACvB,MAAI,CAAC,QAAS;AAER,QAAA,eAAe,iBAAiB,OAAO;AAC7C,QAAM,cAAc,SAAS,aAAa,WAAW,KAAK;AAC1D,QAAM,eAAe,SAAS,aAAa,YAAY,KAAK;AAC5D,QAAM,MAAM,SAAS,aAAa,GAAG,KAAK;AACpC,QAAA,eAAe,QAAQ,cAAc,cAAc;AAGnD,QAAA,WAAW,MAAM,KAAK,QAAQ,QAAQ,EAAE,OAAO,CAAC,UAAU,MAAM,OAAO,aAAa;AAE1F,QAAM,gBAAgB,MAAM,KAAK,QAAQ,EAAE;AAAA,IACzC,CAAC,KAAK,UAAU,MAAO,MAAsB;AAAA,IAC7C;AAAA,EACF;AAEA,SAAO,eAAe,gBAAgB,OAAO,SAAS,SAAS;AACjE;AAEA,MAAM,uBAAuB,CAAC,UAA0B,OAAe,SAAiB;;AACtF,QAAM,OAAO,OAAO;AACpB,MAAI,QAAQ;AACZ,WAAS,IAAI,GAAG,IAAI,OAAO,MAAM,KAAK;AACpC,UAAM,QAAQ,IAAI,IAAI,IAAI,OAAO;AAC3B,UAAA,SAAS,cAAS,KAAK,MAAd,mBAA6B;AACxC,QAAA,MAAM,KAAK,EAAG;AACT,aAAA;AAAA,EAAA;AAEX,QAAM,MAAM;AACZ,QAAM,YAAY;AACX,SAAA,SAAS,MAAM,QAAQ,KAAK;AACrC;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "../../../../_virtual/jsx-runtime.es.js";
|
|
2
2
|
import { useRef, useState, useLayoutEffect, createElement, Fragment } from "react";
|
|
3
|
-
import { Path, Segment, MoreModal, MoreList, MoreItem, SegmentWrapper } from "./EntityPath.styled.es.js";
|
|
3
|
+
import { Path, Segment, MoreModal, MoreList, MoreItem, SegmentWrapper, FinalSegmentLabel } from "./EntityPath.styled.es.js";
|
|
4
4
|
import clsx from "clsx";
|
|
5
5
|
import SegmentProvider from "./SegmentProvider.es.js";
|
|
6
6
|
import { Icon } from "@ynput/ayon-react-components";
|
|
@@ -25,6 +25,7 @@ const EntityPath = ({
|
|
|
25
25
|
const [dropdownOpen, setDropdownOpen] = useState(null);
|
|
26
26
|
const [maxSegments, setMaxSegments] = useState(null);
|
|
27
27
|
const [calcMaxWidth, setCalcMaxWidth] = useState(false);
|
|
28
|
+
const finalSegmentRef = useRef(null);
|
|
28
29
|
useLayoutEffect(() => {
|
|
29
30
|
setMaxSegments(null);
|
|
30
31
|
setCalcMaxWidth(true);
|
|
@@ -54,6 +55,15 @@ const EntityPath = ({
|
|
|
54
55
|
setMaxSegments(newMaxSegments);
|
|
55
56
|
setCalcMaxWidth(false);
|
|
56
57
|
}, [containerRef.current, calcMaxWidth]);
|
|
58
|
+
useLayoutEffect(() => {
|
|
59
|
+
if (!containerRef.current || !finalSegmentRef.current || !maxSegments) return;
|
|
60
|
+
const container = containerRef.current;
|
|
61
|
+
const maxWidth = getPathMaxWidth(container) ?? Infinity;
|
|
62
|
+
const diff = container.clientWidth - maxWidth;
|
|
63
|
+
if (diff <= 0) return;
|
|
64
|
+
const newWidth = `${finalSegmentRef.current.clientWidth - diff}px`;
|
|
65
|
+
finalSegmentRef.current.style.width = newWidth;
|
|
66
|
+
}, [maxSegments]);
|
|
57
67
|
const segmentsToShow = maxSegments && segments.length > maxSegments ? segments.slice(-maxSegments) : segments;
|
|
58
68
|
const hiddenSegments = maxSegments && segments.length > maxSegments ? segments.slice(0, -maxSegments) : [];
|
|
59
69
|
if (hideProjectName)
|
|
@@ -118,7 +128,7 @@ const EntityPath = ({
|
|
|
118
128
|
segment: versionSegment,
|
|
119
129
|
isOpen: dropdownOpen === "versions",
|
|
120
130
|
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Segment, { children: [
|
|
121
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
131
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FinalSegmentLabel, { ref: finalSegmentRef, className: "label", children: versionSegment.label }),
|
|
122
132
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: "expand_more" })
|
|
123
133
|
] })
|
|
124
134
|
}
|