@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.
Files changed (170) hide show
  1. package/dist/_virtual/index.cjs4.js +4 -4
  2. package/dist/_virtual/index.cjs5.js +4 -4
  3. package/dist/_virtual/index.cjs6.js +2 -2
  4. package/dist/_virtual/index.cjs7.js +2 -2
  5. package/dist/_virtual/index.es4.js +4 -4
  6. package/dist/_virtual/index.es5.js +4 -4
  7. package/dist/_virtual/index.es6.js +2 -2
  8. package/dist/_virtual/index.es7.js +2 -2
  9. package/dist/hooks.cjs.js +2 -0
  10. package/dist/hooks.cjs.js.map +1 -1
  11. package/dist/hooks.es.js +2 -0
  12. package/dist/hooks.es.js.map +1 -1
  13. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.cjs.js +19 -10
  14. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.cjs.js.map +1 -1
  15. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.es.js +21 -12
  16. package/dist/node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.es.js.map +1 -1
  17. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +174 -68
  18. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
  19. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +174 -68
  20. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +1 -1
  21. package/dist/node_modules/@standard-schema/utils/dist/index.cjs.js +23 -0
  22. package/dist/node_modules/@standard-schema/utils/dist/index.cjs.js.map +1 -0
  23. package/dist/node_modules/@standard-schema/utils/dist/index.es.js +23 -0
  24. package/dist/node_modules/@standard-schema/utils/dist/index.es.js.map +1 -0
  25. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  26. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  27. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  28. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  29. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  30. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  31. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  32. package/dist/node_modules/remove-accents/index.es.js +1 -1
  33. package/dist/shared/src/api/generated/anatomy.cjs.js +13 -0
  34. package/dist/shared/src/api/generated/anatomy.cjs.js.map +1 -1
  35. package/dist/shared/src/api/generated/anatomy.es.js +13 -0
  36. package/dist/shared/src/api/generated/anatomy.es.js.map +1 -1
  37. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +4 -0
  38. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -0
  40. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  41. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js +11 -1
  42. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
  43. package/dist/shared/src/components/EntityPath/EntityPath.es.js +12 -2
  44. package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
  45. package/dist/shared/src/components/EntityPath/EntityPath.styled.cjs.js +10 -1
  46. package/dist/shared/src/components/EntityPath/EntityPath.styled.cjs.js.map +1 -1
  47. package/dist/shared/src/components/EntityPath/EntityPath.styled.es.js +10 -1
  48. package/dist/shared/src/components/EntityPath/EntityPath.styled.es.js.map +1 -1
  49. package/dist/shared/src/containers/Actions/Actions.cjs.js +10 -6
  50. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  51. package/dist/shared/src/containers/Actions/Actions.es.js +10 -6
  52. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  53. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +5 -3
  54. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  55. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +5 -3
  56. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  57. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js +13 -1
  58. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js.map +1 -1
  59. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js +13 -1
  60. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js.map +1 -1
  61. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +0 -1
  62. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  63. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +0 -1
  64. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  65. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js +3 -0
  66. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js.map +1 -1
  67. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js +3 -0
  68. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js.map +1 -1
  69. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  70. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  71. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +24 -6
  72. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  73. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +24 -6
  74. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  75. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +7 -5
  76. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  77. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +7 -5
  78. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  79. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +8 -0
  80. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  81. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +8 -0
  82. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  83. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  84. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  85. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -2
  86. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  87. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +1 -2
  88. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  89. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  90. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  91. package/dist/shared/src/context/RemoteModulesContext.es.js +1 -1
  92. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  93. package/dist/shared/src/hooks/useLoadModules.cjs.js +136 -0
  94. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -0
  95. package/dist/shared/src/hooks/useLoadModules.es.js +136 -0
  96. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -0
  97. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +4 -1
  98. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  99. package/dist/shared/src/hooks/useScopedStatuses.es.js +4 -1
  100. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  101. package/dist/types/api/generated/access.d.ts +6 -6
  102. package/dist/types/api/generated/actions.d.ts +6 -6
  103. package/dist/types/api/generated/activityFeed.d.ts +8 -8
  104. package/dist/types/api/generated/addons.d.ts +28 -28
  105. package/dist/types/api/generated/anatomy.d.ts +36 -6
  106. package/dist/types/api/generated/attributes.d.ts +5 -5
  107. package/dist/types/api/generated/authentication.d.ts +5 -5
  108. package/dist/types/api/generated/bundles.d.ts +7 -7
  109. package/dist/types/api/generated/configuration.d.ts +7 -7
  110. package/dist/types/api/generated/desktop.d.ts +12 -12
  111. package/dist/types/api/generated/entityLists.d.ts +12 -12
  112. package/dist/types/api/generated/events.d.ts +8 -8
  113. package/dist/types/api/generated/files.d.ts +7 -7
  114. package/dist/types/api/generated/folders.d.ts +8 -8
  115. package/dist/types/api/generated/graphql.d.ts +25 -25
  116. package/dist/types/api/generated/inbox.d.ts +1 -1
  117. package/dist/types/api/generated/links.d.ts +5 -5
  118. package/dist/types/api/generated/market.d.ts +6 -6
  119. package/dist/types/api/generated/onboarding.d.ts +3 -3
  120. package/dist/types/api/generated/operations.d.ts +3 -3
  121. package/dist/types/api/generated/products.d.ts +5 -5
  122. package/dist/types/api/generated/projectDashboard.d.ts +4 -4
  123. package/dist/types/api/generated/projects.d.ts +27 -27
  124. package/dist/types/api/generated/representations.d.ts +5 -5
  125. package/dist/types/api/generated/reviewables.d.ts +7 -7
  126. package/dist/types/api/generated/services.d.ts +6 -6
  127. package/dist/types/api/generated/system.d.ts +12 -12
  128. package/dist/types/api/generated/tasks.d.ts +8 -8
  129. package/dist/types/api/generated/teams.d.ts +6 -6
  130. package/dist/types/api/generated/thumbnails.d.ts +11 -11
  131. package/dist/types/api/generated/uRIs.d.ts +2 -2
  132. package/dist/types/api/generated/users.d.ts +26 -26
  133. package/dist/types/api/generated/versions.d.ts +6 -6
  134. package/dist/types/api/generated/workfiles.d.ts +6 -6
  135. package/dist/types/api/generated/ynputCloud.d.ts +5 -5
  136. package/dist/types/api/queries/actions/getActions.d.ts +29 -29
  137. package/dist/types/api/queries/activities/getActivities.d.ts +72 -71
  138. package/dist/types/api/queries/activities/getMentions.d.ts +18 -18
  139. package/dist/types/api/queries/activities/updateActivities.d.ts +62 -62
  140. package/dist/types/api/queries/activities/updateReaction.d.ts +10 -10
  141. package/dist/types/api/queries/addons/getAddons.d.ts +67 -67
  142. package/dist/types/api/queries/addons/updateAddons.d.ts +35 -35
  143. package/dist/types/api/queries/attributes/getAttributes.d.ts +23 -23
  144. package/dist/types/api/queries/attributes/updateAttributes.d.ts +12 -12
  145. package/dist/types/api/queries/authentication/getAuthentication.d.ts +15 -15
  146. package/dist/types/api/queries/entities/getEntity.d.ts +73 -73
  147. package/dist/types/api/queries/entities/getEntityPanel.d.ts +44 -44
  148. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  149. package/dist/types/api/queries/entities/updateEntity.d.ts +32 -32
  150. package/dist/types/api/queries/folders/getFolders.d.ts +26 -26
  151. package/dist/types/api/queries/overview/getOverview.d.ts +72 -72
  152. package/dist/types/api/queries/overview/updateOverview.d.ts +5 -5
  153. package/dist/types/api/queries/project/getProject.d.ts +103 -103
  154. package/dist/types/api/queries/review/getReview.d.ts +36 -36
  155. package/dist/types/api/queries/review/updateReview.d.ts +13 -13
  156. package/dist/types/api/queries/system/getSystem.d.ts +39 -39
  157. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +53 -53
  158. package/dist/types/api/queries/users/getUsers.d.ts +110 -110
  159. package/dist/types/api/queries/watchers/getWatchers.d.ts +20 -20
  160. package/dist/types/components/EntityPath/EntityPath.styled.d.ts +1 -0
  161. package/dist/types/containers/Actions/Actions.d.ts +5 -1
  162. package/dist/types/containers/ProjectTreeTable/widgets/BooleanWidget.d.ts +1 -2
  163. package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +10 -0
  164. package/dist/types/containers/ProjectTreeTable/widgets/DateWidget.d.ts +2 -3
  165. package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -1
  166. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +1 -1
  167. package/dist/types/containers/RepresentationsList/RepresentationsList.d.ts +1 -1
  168. package/dist/types/hooks/index.d.ts +1 -0
  169. package/dist/types/hooks/useLoadModules.d.ts +28 -0
  170. 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.cjs5.js");
3
+ const index = require("../../../_virtual/index.cjs4.js");
4
4
  /**
5
5
  * @name match-sorter
6
6
  * @license MIT license.
@@ -1,4 +1,4 @@
1
- import removeAccents from "../../../_virtual/index.es5.js";
1
+ import removeAccents from "../../../_virtual/index.es4.js";
2
2
  /**
3
3
  * @name match-sorter
4
4
  * @license MIT license.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index = require("../../_virtual/index.cjs6.js");
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.es6.js";
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.cjs4.js");
4
+ const index$2 = require("../../../_virtual/index.cjs5.js");
5
5
  require("../../refractor/lib/common.cjs.js");
6
6
  require("../../refractor/lib/all.cjs.js");
7
7
  const index = require("../node_modules/unist-util-visit/lib/index.cjs.js");
@@ -1,5 +1,5 @@
1
1
  import { toString } from "../../hast-util-to-string/index.es.js";
2
- import n from "../../../_virtual/index.es4.js";
2
+ import n from "../../../_virtual/index.es5.js";
3
3
  import "../../refractor/lib/common.es.js";
4
4
  import "../../refractor/lib/all.es.js";
5
5
  import { visit } from "../node_modules/unist-util-visit/lib/index.es.js";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index = require("../../_virtual/index.cjs7.js");
3
+ const index = require("../../_virtual/index.cjs6.js");
4
4
  var hasRequiredRemoveAccents;
5
5
  function requireRemoveAccents() {
6
6
  if (hasRequiredRemoveAccents) return index.__module.exports;
@@ -1,4 +1,4 @@
1
- import { __module as removeAccents } from "../../_virtual/index.es7.js";
1
+ import { __module as removeAccents } from "../../_virtual/index.es6.js";
2
2
  var hasRequiredRemoveAccents;
3
3
  function requireRemoveAccents() {
4
4
  if (hasRequiredRemoveAccents) return removeAccents.exports;
@@ -30,6 +30,19 @@ const injectedRtkApi = client.api.injectEndpoints({
30
30
  url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
31
31
  method: "POST"
32
32
  })
33
+ }),
34
+ unsetPrimaryPreset: build.mutation({
35
+ query: (queryArg) => ({
36
+ url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
37
+ method: "DELETE"
38
+ })
39
+ }),
40
+ renameAnatomyPreset: build.mutation({
41
+ query: (queryArg) => ({
42
+ url: `/api/anatomy/presets/${queryArg.presetName}/rename`,
43
+ method: "POST",
44
+ body: queryArg.renamePresetModel
45
+ })
33
46
  })
34
47
  }),
35
48
  overrideExisting: false
@@ -1 +1 @@
1
- {"version":3,"file":"anatomy.cjs.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\n"],"names":["api"],"mappings":";;;AACM,MAAA,iBAAiBA,WAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;;"}
1
+ {"version":3,"file":"anatomy.cjs.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n unsetPrimaryPreset: build.mutation<UnsetPrimaryPresetApiResponse, UnsetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'DELETE',\n }),\n }),\n renameAnatomyPreset: build.mutation<RenameAnatomyPresetApiResponse, RenameAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/rename`,\n method: 'POST',\n body: queryArg.renamePresetModel,\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type UnsetPrimaryPresetApiResponse = unknown\nexport type UnsetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type RenameAnatomyPresetApiResponse = unknown\nexport type RenameAnatomyPresetApiArg = {\n presetName: string\n renamePresetModel: RenamePresetModel\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n ftrackId?: string\n ftrackPath?: string\n /** The Shotgrid ID of this entity. */\n shotgridId?: string\n /** The Shotgrid Type of this entity. */\n shotgridType?: string\n inheritableString?: string\n /** Push changes done to this project to Shotgrid. Requires the transmitter service. */\n shotgridPush?: boolean\n tools?: string[]\n applications?: string[]\n sokoId?: string\n booo?: boolean\n sokoPath?: string\n myAdvancedEnum?: 'first' | 'second'\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\nexport type RenamePresetModel = {\n /** The new name of the anatomy preset. */\n name: string\n}\n"],"names":["api"],"mappings":";;;AACM,MAAA,iBAAiBA,WAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,oBAAoB,MAAM,SAAkE;AAAA,MAC1F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;;"}
@@ -28,6 +28,19 @@ const injectedRtkApi = api.injectEndpoints({
28
28
  url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
29
29
  method: "POST"
30
30
  })
31
+ }),
32
+ unsetPrimaryPreset: build.mutation({
33
+ query: (queryArg) => ({
34
+ url: `/api/anatomy/presets/${queryArg.presetName}/primary`,
35
+ method: "DELETE"
36
+ })
37
+ }),
38
+ renameAnatomyPreset: build.mutation({
39
+ query: (queryArg) => ({
40
+ url: `/api/anatomy/presets/${queryArg.presetName}/rename`,
41
+ method: "POST",
42
+ body: queryArg.renamePresetModel
43
+ })
31
44
  })
32
45
  }),
33
46
  overrideExisting: false
@@ -1 +1 @@
1
- {"version":3,"file":"anatomy.es.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\n"],"names":[],"mappings":";AACM,MAAA,iBAAiB,IAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;"}
1
+ {"version":3,"file":"anatomy.es.js","sources":["../../../../../src/api/generated/anatomy.ts"],"sourcesContent":["import { api } from '@shared/api/base'\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n getAnatomySchema: build.query<GetAnatomySchemaApiResponse, GetAnatomySchemaApiArg>({\n query: () => ({ url: `/api/anatomy/schema` }),\n }),\n getAnatomyPresets: build.query<GetAnatomyPresetsApiResponse, GetAnatomyPresetsApiArg>({\n query: () => ({ url: `/api/anatomy/presets` }),\n }),\n getAnatomyPreset: build.query<GetAnatomyPresetApiResponse, GetAnatomyPresetApiArg>({\n query: (queryArg) => ({ url: `/api/anatomy/presets/${queryArg.presetName}` }),\n }),\n updateAnatomyPreset: build.mutation<UpdateAnatomyPresetApiResponse, UpdateAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'PUT',\n body: queryArg.anatomy,\n }),\n }),\n deleteAnatomyPreset: build.mutation<DeleteAnatomyPresetApiResponse, DeleteAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}`,\n method: 'DELETE',\n }),\n }),\n setPrimaryPreset: build.mutation<SetPrimaryPresetApiResponse, SetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'POST',\n }),\n }),\n unsetPrimaryPreset: build.mutation<UnsetPrimaryPresetApiResponse, UnsetPrimaryPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/primary`,\n method: 'DELETE',\n }),\n }),\n renameAnatomyPreset: build.mutation<RenameAnatomyPresetApiResponse, RenameAnatomyPresetApiArg>({\n query: (queryArg) => ({\n url: `/api/anatomy/presets/${queryArg.presetName}/rename`,\n method: 'POST',\n body: queryArg.renamePresetModel,\n }),\n }),\n }),\n overrideExisting: false,\n})\nexport { injectedRtkApi as api }\nexport type GetAnatomySchemaApiResponse = /** status 200 Successful Response */ object\nexport type GetAnatomySchemaApiArg = void\nexport type GetAnatomyPresetsApiResponse =\n /** status 200 Successful Response */ AnatomyPresetListModel\nexport type GetAnatomyPresetsApiArg = void\nexport type GetAnatomyPresetApiResponse = /** status 200 Successful Response */ Anatomy\nexport type GetAnatomyPresetApiArg = {\n presetName: string\n}\nexport type UpdateAnatomyPresetApiResponse = unknown\nexport type UpdateAnatomyPresetApiArg = {\n presetName: string\n anatomy: Anatomy\n}\nexport type DeleteAnatomyPresetApiResponse = unknown\nexport type DeleteAnatomyPresetApiArg = {\n presetName: string\n}\nexport type SetPrimaryPresetApiResponse = unknown\nexport type SetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type UnsetPrimaryPresetApiResponse = unknown\nexport type UnsetPrimaryPresetApiArg = {\n presetName: string\n}\nexport type RenameAnatomyPresetApiResponse = unknown\nexport type RenameAnatomyPresetApiArg = {\n presetName: string\n renamePresetModel: RenamePresetModel\n}\nexport type AnatomyPresetListItem = {\n name: string\n primary: boolean\n version: string\n}\nexport type AnatomyPresetListModel = {\n /** Anatomy model version currently used in Ayon */\n version: string\n presets?: AnatomyPresetListItem[]\n}\nexport type Root = {\n name: string\n windows?: string\n linux?: string\n darwin?: string\n}\nexport type WorkTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type PublishTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type HeroTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type DeliveryTemplate = {\n name: string\n directory: string\n file: string\n}\nexport type StagingDirectory = {\n name: string\n directory?: string\n}\nexport type CustomTemplate = {\n name: string\n value?: string\n}\nexport type Templates = {\n version_padding?: number\n version?: string\n frame_padding?: number\n frame?: string\n work?: WorkTemplate[]\n publish?: PublishTemplate[]\n hero?: HeroTemplate[]\n delivery?: DeliveryTemplate[]\n staging?: StagingDirectory[]\n others?: CustomTemplate[]\n}\nexport type ProjectAttribModel = {\n priority?: 'urgent' | 'high' | 'normal' | 'low'\n /** Frame rate */\n fps?: number\n /** Horizontal resolution */\n resolutionWidth?: number\n /** Vertical resolution */\n resolutionHeight?: number\n pixelAspect?: number\n clipIn?: number\n clipOut?: number\n frameStart?: number\n frameEnd?: number\n handleStart?: number\n handleEnd?: number\n /** Date and time when the project or task or asset was started */\n startDate?: string\n /** Deadline date and time */\n endDate?: string\n /** Textual description of the entity */\n description?: string\n ftrackId?: string\n ftrackPath?: string\n /** The Shotgrid ID of this entity. */\n shotgridId?: string\n /** The Shotgrid Type of this entity. */\n shotgridType?: string\n inheritableString?: string\n /** Push changes done to this project to Shotgrid. Requires the transmitter service. */\n shotgridPush?: boolean\n tools?: string[]\n applications?: string[]\n sokoId?: string\n booo?: boolean\n sokoPath?: string\n myAdvancedEnum?: 'first' | 'second'\n}\nexport type FolderType = {\n name: string\n original_name?: string\n shortName?: string\n icon?: string\n}\nexport type TaskType = {\n name: string\n original_name?: string\n shortName?: string\n color?: string\n icon?: string\n}\nexport type LinkType = {\n link_type: string\n input_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n output_type: 'folder' | 'product' | 'version' | 'representation' | 'task' | 'workfile'\n color?: string\n style?: 'solid' | 'dashed'\n}\nexport type Status = {\n name: string\n original_name?: string\n shortName?: string\n state?: 'not_started' | 'in_progress' | 'done' | 'blocked'\n icon?: string\n color?: string\n /** Limit the status to specific entity types. */\n scope?: string[]\n}\nexport type Tag = {\n name: string\n original_name?: string\n color?: string\n}\nexport type Anatomy = {\n /** Setup root paths for the project */\n roots?: Root[]\n /** Path templates configuration */\n templates?: Templates\n /** Attributes configuration */\n attributes?: ProjectAttribModel\n /** Folder types configuration */\n folder_types?: FolderType[]\n /** Task types configuration */\n task_types?: TaskType[]\n /** Link types configuration */\n link_types?: LinkType[]\n /** Statuses configuration */\n statuses?: Status[]\n /** Tags configuration */\n tags?: Tag[]\n}\nexport type ValidationError = {\n loc: (string | number)[]\n msg: string\n type: string\n}\nexport type HttpValidationError = {\n detail?: ValidationError[]\n}\nexport type RenamePresetModel = {\n /** The new name of the anatomy preset. */\n name: string\n}\n"],"names":[],"mappings":";AACM,MAAA,iBAAiB,IAAI,gBAAgB;AAAA,EACzC,WAAW,CAAC,WAAW;AAAA,IACrB,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,OAAO,EAAE,KAAK,sBAAsB;AAAA,IAAA,CAC5C;AAAA,IACD,mBAAmB,MAAM,MAA6D;AAAA,MACpF,OAAO,OAAO,EAAE,KAAK,uBAAuB;AAAA,IAAA,CAC7C;AAAA,IACD,kBAAkB,MAAM,MAA2D;AAAA,MACjF,OAAO,CAAC,cAAc,EAAE,KAAK,wBAAwB,SAAS,UAAU,GAAG;AAAA,IAAA,CAC5E;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,kBAAkB,MAAM,SAA8D;AAAA,MACpF,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,oBAAoB,MAAM,SAAkE;AAAA,MAC1F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,MACV;AAAA,IAAA,CACD;AAAA,IACD,qBAAqB,MAAM,SAAoE;AAAA,MAC7F,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,wBAAwB,SAAS,UAAU;AAAA,QAChD,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MACjB;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;"}
@@ -72,6 +72,7 @@ const transformDetailsPanelQueriesData = ({
72
72
  const task = entity;
73
73
  return {
74
74
  entityType: "task",
75
+ entitySubType: task.taskType,
75
76
  projectName,
76
77
  id: task.id,
77
78
  name: task.name,
@@ -98,6 +99,7 @@ const transformDetailsPanelQueriesData = ({
98
99
  const version = entity;
99
100
  return {
100
101
  entityType: "version",
102
+ entitySubType: void 0,
101
103
  projectName,
102
104
  id: version.id,
103
105
  name: version.name,
@@ -121,6 +123,7 @@ const transformDetailsPanelQueriesData = ({
121
123
  const folder = entity;
122
124
  return {
123
125
  entityType: "folder",
126
+ entitySubType: folder.folderType,
124
127
  projectName,
125
128
  id: folder.id,
126
129
  name: folder.name,
@@ -146,6 +149,7 @@ const transformDetailsPanelQueriesData = ({
146
149
  const representation = entity;
147
150
  return {
148
151
  entityType: "representation",
152
+ entitySubType: void 0,
149
153
  projectName,
150
154
  id: representation.id,
151
155
  name: representation.name,
@@ -1 +1 @@
1
- {"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["parseAttribs"],"mappings":"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"}
1
+ {"version":3,"file":"transformDetailsPanelData.cjs.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":["parseAttribs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAM,0BAA0B,CAAC,QAAQ,WAAW,UAAU,gBAAgB;AAoC9E,MAAM,mCAAmC,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AACF,MAAuD;;AACrD,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,YAAM,OAAO;AACN,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe,KAAK;AAAA,QACpB;AAAA,QACA,IAAI,KAAK;AAAA,QACT,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,QACb,WAAW,KAAK;AAAA,QAChB,WAAW,KAAK;AAAA,QAChB,QAAQA,YAAAA,aAAa,KAAK,SAAS;AAAA,QACnC,gBAAgB,KAAK;AAAA,QACrB,aAAa,KAAK;AAAA,QAClB,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,UACJ,IAAI,KAAK;AAAA,UACT,MAAM,KAAK;AAAA,UACX,OAAO,KAAK;AAAA,UACZ,WAAW,KAAK;AAAA,UAChB,UAAU,KAAK;AAAA,QACjB;AAAA,QACA,SAAS;AAAA,QACT,UAAS,sBAAK,aAAL,mBAAe,UAAf,mBAAuB,OAAvB,mBAA2B;AAAA,MACtC;AAAA,IACF,KAAK;AACH,YAAM,UAAU;AACT,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe;AAAA,QACf;AAAA,QACA,IAAI,QAAQ;AAAA,QACZ,MAAM,QAAQ;AAAA,QACd,OAAO;AAAA,QACP,MAAM,QAAQ;AAAA,QACd,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,QACnB,WAAW,QAAQ;AAAA,QACnB,QAAQA,YAAAA,aAAa,QAAQ,SAAS;AAAA,QACtC,gBAAgB,QAAQ;AAAA,QACxB,aAAa,QAAQ;AAAA,QACrB,SAAQ,aAAQ,YAAR,mBAAiB;AAAA,QACzB,SAAS;AAAA,UACP,KAAI,aAAQ,YAAR,mBAAiB;AAAA,UACrB,OAAM,aAAQ,YAAR,mBAAiB;AAAA,UACvB,cAAa,aAAQ,YAAR,mBAAiB;AAAA,QAChC;AAAA,QACA,mBAAiB,mBAAQ,oBAAR,mBAAyB,UAAzB,mBAAgC,IAAI,CAAC,SAAS,KAAK,UAAS,CAAA;AAAA,MAC/E;AAAA,IACF,KAAK;AACH,YAAM,SAAS;AACR,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe,OAAO;AAAA,QACtB;AAAA,QACA,IAAI,OAAO;AAAA,QACX,MAAM,OAAO;AAAA,QACb,OAAO,OAAO;AAAA,QACd,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO;AAAA,QACf,WAAW,OAAO;AAAA,QAClB,WAAW,OAAO;AAAA,QAClB,QAAQA,YAAAA,aAAa,OAAO,SAAS;AAAA,QACrC,gBAAgB,OAAO;AAAA,QACvB,aAAa,OAAO;AAAA,QACpB,QAAQ;AAAA,UACN,IAAI,OAAO;AAAA,UACX,MAAM,OAAO;AAAA,UACb,OAAO,OAAO;AAAA,UACd,YAAY,OAAO;AAAA,QACrB;AAAA,QACA,SAAS;AAAA,QACT,SAAS;AAAA,QACT,iBAAiB;AAAA,MACnB;AAAA,IACF,KAAK;AACH,YAAM,iBAAiB;AAChB,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,eAAe;AAAA,QACf;AAAA,QACA,IAAI,eAAe;AAAA,QACnB,MAAM,eAAe;AAAA,QACrB,OAAO;AAAA,QACP,MAAM,eAAe;AAAA,QACrB,QAAQ,eAAe;AAAA,QACvB,WAAW,eAAe;AAAA,QAC1B,WAAW,eAAe;AAAA,QAC1B,QAAQA,YAAAA,aAAa,eAAe,SAAS;AAAA,QAC7C,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,SAAS,eAAe;AAAA,QACxB,SAAS,eAAe,QAAQ;AAAA,QAChC,MAAM,eAAe,QAAQ,QAAQ;AAAA,QACrC,SAAQ,oBAAe,QAAQ,YAAvB,mBAAgC;AAAA,QACxC,iBAAiB;AAAA,MACnB;AAAA,EAAA;AAEN;;;"}
@@ -70,6 +70,7 @@ const transformDetailsPanelQueriesData = ({
70
70
  const task = entity;
71
71
  return {
72
72
  entityType: "task",
73
+ entitySubType: task.taskType,
73
74
  projectName,
74
75
  id: task.id,
75
76
  name: task.name,
@@ -96,6 +97,7 @@ const transformDetailsPanelQueriesData = ({
96
97
  const version = entity;
97
98
  return {
98
99
  entityType: "version",
100
+ entitySubType: void 0,
99
101
  projectName,
100
102
  id: version.id,
101
103
  name: version.name,
@@ -119,6 +121,7 @@ const transformDetailsPanelQueriesData = ({
119
121
  const folder = entity;
120
122
  return {
121
123
  entityType: "folder",
124
+ entitySubType: folder.folderType,
122
125
  projectName,
123
126
  id: folder.id,
124
127
  name: folder.name,
@@ -144,6 +147,7 @@ const transformDetailsPanelQueriesData = ({
144
147
  const representation = entity;
145
148
  return {
146
149
  entityType: "representation",
150
+ entitySubType: void 0,
147
151
  projectName,
148
152
  id: representation.id,
149
153
  name: representation.name,
@@ -1 +1 @@
1
- {"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformDetailsPanelData.es.js","sources":["../../../../../../src/api/queries/entities/transformDetailsPanelData.ts"],"sourcesContent":["import {\n DetailsPanelFolderFragmentFragment,\n DetailsPanelProductFragmentFragment,\n DetailsPanelRepresentationFragmentFragment,\n DetailsPanelTaskFragmentFragment,\n DetailsPanelVersionFragmentFragment,\n GetDetailsPanelFolderQuery,\n GetDetailsPanelRepresentationQuery,\n GetDetailsPanelTaskQuery,\n GetDetailsPanelVersionQuery,\n} from '@shared/api/generated'\nimport { parseAttribs } from '@shared/api'\n\ntype DetailsPanelTask = NonNullable<GetDetailsPanelTaskQuery['project']['task']>\ntype DetailsPanelRepresentation = NonNullable<\n GetDetailsPanelRepresentationQuery['project']['representation']\n>\ntype DetailsPanelVersion = NonNullable<GetDetailsPanelVersionQuery['project']['version']>\ntype DetailsPanelFolder = NonNullable<GetDetailsPanelFolderQuery['project']['folder']>\n\nexport const detailsPanelEntityTypes = ['task', 'version', 'folder', 'representation'] as const\nexport type DetailsPanelEntityType = (typeof detailsPanelEntityTypes)[number]\n\ntype TransformEntityDataArgs = {\n entity: DetailsPanelRepresentation | DetailsPanelTask | DetailsPanelVersion | DetailsPanelFolder\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\ntype NullableString = string | null | undefined\n\n// return type\nexport type DetailsPanelEntityData = {\n id: string\n name: string\n label: NullableString\n tags: string[]\n status: string\n updatedAt: string\n createdAt: string\n attrib: Record<string, string | number>\n hasReviewables?: boolean\n thumbnailId?: string | null | undefined\n // extra metadata\n entityType: string\n entitySubType?: string\n projectName: string\n // type specific\n task?: DetailsPanelTaskFragmentFragment\n folder?: DetailsPanelFolderFragmentFragment\n product?: DetailsPanelProductFragmentFragment\n version?: DetailsPanelVersionFragmentFragment\n representations?: DetailsPanelRepresentationFragmentFragment[]\n}\n\n// takes the data from different entity types and returns a single data model\nexport const transformDetailsPanelQueriesData = ({\n entity,\n entityType,\n projectName,\n}: TransformEntityDataArgs): DetailsPanelEntityData => {\n switch (entityType) {\n case 'task':\n const task = entity as DetailsPanelTask\n return {\n entityType: 'task',\n entitySubType: task.taskType,\n projectName: projectName,\n id: task.id,\n name: task.name,\n label: task.label,\n tags: task.tags,\n status: task.status,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n attrib: parseAttribs(task.allAttrib),\n hasReviewables: task.hasReviewables,\n thumbnailId: task.thumbnailId,\n folder: task.folder,\n task: {\n id: task.id,\n name: task.name,\n label: task.label,\n assignees: task.assignees,\n taskType: task.taskType,\n },\n product: undefined,\n version: task.versions?.edges?.[0]?.node,\n }\n case 'version':\n const version = entity as DetailsPanelVersion\n return {\n entityType: 'version',\n entitySubType: undefined,\n projectName: projectName,\n id: version.id,\n name: version.name,\n label: undefined,\n tags: version.tags,\n status: version.status,\n updatedAt: version.updatedAt,\n createdAt: version.createdAt,\n attrib: parseAttribs(version.allAttrib),\n hasReviewables: version.hasReviewables,\n thumbnailId: version.thumbnailId,\n folder: version.product?.folder,\n product: {\n id: version.product?.id,\n name: version.product?.name,\n productType: version.product?.productType,\n },\n representations: version.representations?.edges?.map((edge) => edge.node) || [],\n }\n case 'folder':\n const folder = entity as DetailsPanelFolder\n return {\n entityType: 'folder',\n entitySubType: folder.folderType,\n projectName: projectName,\n id: folder.id,\n name: folder.name,\n label: folder.label,\n tags: folder.tags,\n status: folder.status,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n attrib: parseAttribs(folder.allAttrib),\n hasReviewables: folder.hasReviewables,\n thumbnailId: folder.thumbnailId,\n folder: {\n id: folder.id,\n name: folder.name,\n label: folder.label,\n folderType: folder.folderType,\n },\n product: undefined,\n version: undefined,\n representations: undefined,\n }\n case 'representation':\n const representation = entity as DetailsPanelRepresentation\n return {\n entityType: 'representation',\n entitySubType: undefined,\n projectName: projectName,\n id: representation.id,\n name: representation.name,\n label: undefined,\n tags: representation.tags,\n status: representation.status,\n updatedAt: representation.updatedAt,\n createdAt: representation.createdAt,\n attrib: parseAttribs(representation.allAttrib),\n hasReviewables: undefined,\n thumbnailId: undefined,\n version: representation.version,\n product: representation.version.product,\n task: representation.version.task || undefined,\n folder: representation.version.product?.folder,\n representations: undefined,\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -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("span", { className: "label", children: versionSegment.label }),
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":";;;;;;;;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;AAEtDC,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;AAGjC,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,kBAAAN,2BAAA,kBAAA,IAAC,QAAK,EAAA,WAAU,SAAS,UAAA,eAAe,OAAM;AAAA,kBAC9CA,2BAAAA,kBAAAA,IAACa,oBAAK,MAAA,EAAA,MAAK,cAAc,CAAA;AAAA,gBAAA,EAC3B,CAAA;AAAA,cAAA;AAAA,YACF;AAAA,YACC,iBAAiB,cACfb,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
+ {"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":"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"}
@@ -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("span", { className: "label", children: versionSegment.label }),
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
  }