@ynput/ayon-frontend-shared 0.4.2 → 0.4.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 (179) hide show
  1. package/dist/ProjectTreeTable.cjs.js +1 -1
  2. package/dist/ProjectTreeTable.es.js +247 -243
  3. package/dist/_virtual/index.cjs22.js +1 -1
  4. package/dist/_virtual/index.cjs23.js +1 -1
  5. package/dist/_virtual/index.cjs24.js +1 -1
  6. package/dist/_virtual/index.cjs4.js +1 -1
  7. package/dist/_virtual/index.cjs5.js +1 -1
  8. package/dist/_virtual/index.cjs6.js +1 -1
  9. package/dist/_virtual/index.cjs8.js +1 -1
  10. package/dist/_virtual/index.es22.js +3 -3
  11. package/dist/_virtual/index.es23.js +5 -5
  12. package/dist/_virtual/index.es24.js +5 -5
  13. package/dist/_virtual/index.es4.js +2 -5
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -2
  18. package/dist/_virtual/index.es8.js +2 -2
  19. package/dist/api.cjs.js +1 -1
  20. package/dist/api.es.js +446 -445
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.es.js +20 -9
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  25. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  26. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  27. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  28. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  29. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  30. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  31. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  32. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  33. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  34. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  35. package/dist/node_modules/remove-accents/index.es.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  37. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  42. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  44. package/dist/shared/src/api/generated/graphql.cjs.js +85 -28
  45. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  46. package/dist/shared/src/api/generated/graphql.es.js +129 -68
  47. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
  51. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  52. package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
  53. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  54. package/dist/shared/src/components/Chips/Chips.es.js +69 -62
  55. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  56. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +32 -12
  59. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  60. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  61. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  62. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +33 -33
  63. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  64. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  65. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  66. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  67. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  68. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
  69. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  70. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  71. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  72. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +32 -31
  73. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  74. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  75. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  76. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  77. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  78. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
  79. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  80. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
  81. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
  82. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
  83. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
  84. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  85. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  86. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +14 -2
  87. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  88. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  89. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  90. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +125 -126
  91. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  92. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
  93. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  94. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
  95. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  96. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  97. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  98. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +200 -178
  99. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  100. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -3
  103. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  104. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
  106. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
  107. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
  108. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  109. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  110. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +19 -19
  111. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +100 -97
  115. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  116. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
  117. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  118. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
  119. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  120. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
  121. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  122. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
  123. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  124. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
  125. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  126. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
  127. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  128. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
  129. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  130. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
  131. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  132. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  133. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -8
  135. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  136. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +20 -4
  137. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +86 -67
  139. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  140. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
  141. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
  142. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
  143. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
  144. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  145. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  146. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +67 -62
  147. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  148. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  149. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  150. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
  151. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  152. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  153. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  154. package/dist/shared/src/context/ProjectContext.es.js +1 -1
  155. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  156. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
  157. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  158. package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
  159. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  160. package/dist/types/api/generated/graphql.d.ts +71 -0
  161. package/dist/types/api/queries/activities/getActivities.d.ts +28 -0
  162. package/dist/types/api/queries/entities/getEntity.d.ts +14 -0
  163. package/dist/types/api/queries/entities/getEntityPanel.d.ts +14 -0
  164. package/dist/types/api/queries/entities/updateEntity.d.ts +14 -0
  165. package/dist/types/api/queries/entityLists/getLists.d.ts +14 -0
  166. package/dist/types/api/queries/overview/getOverview.d.ts +14 -0
  167. package/dist/types/api/queries/project/getProject.d.ts +14 -0
  168. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +14 -0
  169. package/dist/types/api/queries/users/getUsers.d.ts +14 -0
  170. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +28 -0
  171. package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
  172. package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
  173. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -0
  174. package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
  175. package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
  176. package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
  177. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  178. package/dist/types/util/buildHierarchicalTableRows.d.ts +2 -0
  179. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("@ynput/ayon-react-components"),t=require("styled-components"),b=require("clsx"),E=require("../utils/restrictedEntity.cjs.js"),a=require("../types/columnConfig.cjs.js"),R=require("../../../components/EntityIcon/EntityIcon.cjs.js"),C=t(o.Button)`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js"),i=require("@ynput/ayon-react-components"),t=require("styled-components"),E=require("../utils/restrictedEntity.cjs.js"),l=require("../types/columnConfig.cjs.js"),R=require("../../../components/EntityIcon/EntityIcon.cjs.js"),k=require("../constants.cjs.js"),N=t(i.Button)`
2
2
  &.expander {
3
3
  background-color: unset;
4
4
  padding: 2px;
@@ -8,7 +8,7 @@
8
8
  }
9
9
  }
10
10
  cursor: pointer;
11
- `,S=t.div`
11
+ `,C=t.div`
12
12
  position: relative;
13
13
  display: flex;
14
14
  align-items: center;
@@ -16,15 +16,21 @@
16
16
  height: 100%;
17
17
  width: 100%;
18
18
  padding-right: 8px;
19
- `,q=t.div`
19
+ `,S=t.div`
20
20
  width: 100%;
21
21
  height: 32px;
22
22
  overflow: hidden;
23
23
  position: relative;
24
- `,N=t.div`
24
+
25
+ &.stacked {
26
+ height: 100%;
27
+ }
28
+ `,q=t.div`
25
29
  position: absolute;
26
30
  inset: 0;
27
- `,k=t.div`
31
+ display: flex;
32
+ align-items: center;
33
+ `,W=t.div`
28
34
  display: flex;
29
35
  align-items: center;
30
36
  gap: var(--base-gap-large);
@@ -36,6 +42,11 @@
36
42
  max-width: 100%;
37
43
  height: 100%;
38
44
 
45
+ &.stacked {
46
+ height: auto;
47
+ max-height: 100%;
48
+ }
49
+
39
50
  /* &:hover {
40
51
  &,
41
52
  .icon,
@@ -57,7 +68,7 @@
57
68
  }
58
69
 
59
70
  .path {
60
- ${o.theme.bodyMedium}
71
+ ${i.theme.bodyMedium}
61
72
  font-size: 14px;
62
73
  margin-bottom: -4px;
63
74
  color: var(--md-sys-color-outline);
@@ -73,7 +84,7 @@
73
84
  }
74
85
 
75
86
  .label {
76
- ${o.theme.bodyMedium}
87
+ ${i.theme.bodyMedium}
77
88
  font-size: 14px;
78
89
  overflow: hidden;
79
90
  white-space: nowrap;
@@ -82,11 +93,19 @@
82
93
  min-width: 0;
83
94
  }
84
95
 
96
+ &.stacked .label {
97
+ display: -webkit-box;
98
+ -webkit-box-orient: vertical;
99
+ -webkit-line-clamp: 2;
100
+ white-space: normal;
101
+ word-break: break-word;
102
+ }
103
+
85
104
  .divider {
86
- ${o.theme.bodyMedium}
105
+ ${i.theme.bodyMedium}
87
106
  font-size: 14px;
88
107
  color: var(--md-sys-color-outline);
89
108
  flex-shrink: 0;
90
109
  }
91
- `,P=({id:l,label:c,name:d,path:s,isExpandable:p,entityType:n,subType:x,isExpanded:h,toggleExpandAll:m,toggleExpanded:u,rowHeight:g=40,columnDisplayConfig:r})=>{const v=E.isEntityRestricted(n),i=g<50,y=a.getDisplayValue(r,"path","compact")??!0,f=a.getDisplayValue(r,"path","full")??!0,w=i?y:f;return e.jsxRuntimeExports.jsxs(S,{children:[p?e.jsxRuntimeExports.jsx(C,{onClick:j=>{j.altKey?m(l):u()},className:"expander",icon:h?"expand_more":"chevron_right"}):null,e.jsxRuntimeExports.jsx(q,{children:e.jsxRuntimeExports.jsx(N,{children:e.jsxRuntimeExports.jsxs(k,{children:[e.jsxRuntimeExports.jsx(R.EntityIcon,{entity:{entityType:n,subType:x||void 0}}),e.jsxRuntimeExports.jsxs(M,{className:b({compact:i}),children:[w&&!v&&e.jsxRuntimeExports.jsxs("span",{className:"path",children:[s,i&&s?"/":""]}),e.jsxRuntimeExports.jsx("span",{className:"label",children:c||d})]})]})})})]})};exports.EntityNameWidget=P;
110
+ `,P=({id:c,label:d,name:p,path:n,isExpandable:x,entityType:r,subType:h,isExpanded:m,toggleExpandAll:u,toggleExpanded:g,rowHeight:y=40,columnDisplayConfig:a})=>{const v=E.isEntityRestricted(r),s=y<k.WRAP_MIN_ROW_HEIGHT,o=s?"compact":"stacked",w=l.getDisplayValue(a,"path","compact")??!0,f=l.getDisplayValue(a,"path","full")??!0,b=s?w:f;return e.jsxRuntimeExports.jsxs(C,{className:o,children:[x?e.jsxRuntimeExports.jsx(N,{onClick:j=>{j.altKey?u(c):g()},className:"expander",icon:m?"expand_more":"chevron_right"}):null,e.jsxRuntimeExports.jsx(S,{className:o,children:e.jsxRuntimeExports.jsx(q,{children:e.jsxRuntimeExports.jsxs(W,{className:o,children:[e.jsxRuntimeExports.jsx(R.EntityIcon,{entity:{entityType:r,subType:h||void 0}}),e.jsxRuntimeExports.jsxs(M,{className:o,children:[b&&!v&&e.jsxRuntimeExports.jsxs("span",{className:"path",children:[n,s&&n?"/":""]}),e.jsxRuntimeExports.jsx("span",{className:"label",children:d||p})]})]})})})]})};exports.EntityNameWidget=P;
92
111
  //# sourceMappingURL=EntityNameWidget.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityNameWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\nimport { isEntityRestricted } from '../utils/restrictedEntity'\nimport { getDisplayValue, type DisplayConfig, getColumnDisplayConfig } from '../types/columnConfig'\nimport { EntityIcon } from '@shared/components/EntityIcon/EntityIcon'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 32px;\n overflow: hidden;\n position: relative;\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n isExpandable?: boolean\n entityType: string\n subType?: string | null\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n columnDisplayConfig?: DisplayConfig\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n isExpandable,\n entityType,\n subType,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n columnDisplayConfig,\n}: EntityNameWidgetProps) => {\n // Check if this is a restricted access entity\n const isRestricted = isEntityRestricted(entityType)\n\n // Determine layout based on row height\n // < 50px = single line (compact), >= 50px = stacked\n const isCompact = rowHeight < 50\n\n // Determine if path should be shown based on display configuration\n // Check layout-specific setting first, then general setting\n const showPathCompact = getDisplayValue(columnDisplayConfig, 'path', 'compact') ?? true\n const showPathFull = getDisplayValue(columnDisplayConfig, 'path', 'full') ?? true\n const shouldShowPath = isCompact ? showPathCompact : showPathFull\n\n return (\n <StyledEntityNameWidget>\n {isExpandable ? (\n <Expander\n onClick={(e) => {\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : null}\n <StyledContentWrapper>\n <StyledContentAbsolute>\n <StyledContent>\n <EntityIcon entity={{ entityType, subType: subType || undefined }} />\n <StyledTextContent className={clsx({ compact: isCompact })}>\n {shouldShowPath && !isRestricted && (\n <span className=\"path\">\n {path}\n {isCompact && path ? '/' : ''}\n </span>\n )}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","isExpandable","entityType","subType","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","columnDisplayConfig","isRestricted","isEntityRestricted","isCompact","showPathCompact","getDisplayValue","showPathFull","shouldShowPath","jsx","e","EntityIcon","jsxs","clsx"],"mappings":"+XAOMA,EAAWC,EAAOC,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYxBC,EAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUhCG,EAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAO9BI,EAAwBJ,EAAO;AAAA;AAAA;AAAA,EAK/BK,EAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBvBM,EAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUhBA,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBTC,EAAmB,CAAC,CAC/B,GAAAC,EACA,MAAAC,EACA,KAAAC,EACA,KAAAC,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,eAAAC,EACA,UAAAC,EAAY,GACZ,oBAAAC,CACF,IAA6B,CAE3B,MAAMC,EAAeC,EAAAA,mBAAmBR,CAAU,EAI5CS,EAAYJ,EAAY,GAIxBK,EAAkBC,EAAAA,gBAAgBL,EAAqB,OAAQ,SAAS,GAAK,GAC7EM,EAAeD,EAAAA,gBAAgBL,EAAqB,OAAQ,MAAM,GAAK,GACvEO,EAAiBJ,EAAYC,EAAkBE,EAErD,gCACGxB,EAAA,CACE,SAAA,CAAAW,EACCe,EAAAA,kBAAAA,IAAC7B,EAAA,CACC,QAAU8B,GAAM,CACVA,EAAE,OAEJZ,EAAgBR,CAAE,EAGlBS,EAAA,CAEJ,EACA,UAAU,WACV,KAAMF,EAAa,cAAgB,eAAA,CAAA,EAEnC,KACJY,EAAAA,kBAAAA,IAACzB,EAAA,CACC,SAAAyB,wBAACxB,EAAA,CACC,kCAACC,EAAA,CACC,SAAA,CAAAuB,wBAACE,EAAAA,YAAW,OAAQ,CAAE,WAAAhB,EAAY,QAASC,GAAW,QAAa,EACnEgB,yBAACzB,GAAkB,UAAW0B,EAAK,CAAE,QAAST,EAAW,EACtD,SAAA,CAAAI,GAAkB,CAACN,GAClBU,EAAAA,kBAAAA,KAAC,OAAA,CAAK,UAAU,OACb,SAAA,CAAAnB,EACAW,GAAaX,EAAO,IAAM,EAAA,EAC7B,EAEFgB,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,QAAS,YAASjB,CAAA,CAAK,CAAA,CAAA,CACzC,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,EACF,CAEJ"}
1
+ {"version":3,"file":"EntityNameWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { isEntityRestricted } from '../utils/restrictedEntity'\nimport { getDisplayValue, type DisplayConfig, getColumnDisplayConfig } from '../types/columnConfig'\nimport { EntityIcon } from '@shared/components/EntityIcon/EntityIcon'\nimport { WRAP_MIN_ROW_HEIGHT } from '../constants'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 32px;\n overflow: hidden;\n position: relative;\n\n &.stacked {\n height: 100%;\n }\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n &.stacked {\n height: auto;\n max-height: 100%;\n }\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n &.stacked .label {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n white-space: normal;\n word-break: break-word;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n isExpandable?: boolean\n entityType: string\n subType?: string | null\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n columnDisplayConfig?: DisplayConfig\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n isExpandable,\n entityType,\n subType,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n columnDisplayConfig,\n}: EntityNameWidgetProps) => {\n // Check if this is a restricted access entity\n const isRestricted = isEntityRestricted(entityType)\n\n // Determine layout based on row height\n // below the wrap threshold = single line (compact), above = stacked\n const isCompact = rowHeight < WRAP_MIN_ROW_HEIGHT\n const layout = isCompact ? 'compact' : 'stacked'\n\n // Determine if path should be shown based on display configuration\n // Check layout-specific setting first, then general setting\n const showPathCompact = getDisplayValue(columnDisplayConfig, 'path', 'compact') ?? true\n const showPathFull = getDisplayValue(columnDisplayConfig, 'path', 'full') ?? true\n const shouldShowPath = isCompact ? showPathCompact : showPathFull\n\n return (\n <StyledEntityNameWidget className={layout}>\n {isExpandable ? (\n <Expander\n onClick={(e) => {\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : null}\n <StyledContentWrapper className={layout}>\n <StyledContentAbsolute>\n <StyledContent className={layout}>\n <EntityIcon entity={{ entityType, subType: subType || undefined }} />\n <StyledTextContent className={layout}>\n {shouldShowPath && !isRestricted && (\n <span className=\"path\">\n {path}\n {isCompact && path ? '/' : ''}\n </span>\n )}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","isExpandable","entityType","subType","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","columnDisplayConfig","isRestricted","isEntityRestricted","isCompact","WRAP_MIN_ROW_HEIGHT","layout","showPathCompact","getDisplayValue","showPathFull","shouldShowPath","jsxs","jsx","e","EntityIcon"],"mappings":"8YAOMA,EAAWC,EAAOC,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYxBC,EAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUhCG,EAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW9BI,EAAwBJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/BK,EAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BvBM,EAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBhBA,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBTC,EAAmB,CAAC,CAC/B,GAAAC,EACA,MAAAC,EACA,KAAAC,EACA,KAAAC,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,eAAAC,EACA,UAAAC,EAAY,GACZ,oBAAAC,CACF,IAA6B,CAE3B,MAAMC,EAAeC,EAAAA,mBAAmBR,CAAU,EAI5CS,EAAYJ,EAAYK,EAAAA,oBACxBC,EAASF,EAAY,UAAY,UAIjCG,EAAkBC,EAAAA,gBAAgBP,EAAqB,OAAQ,SAAS,GAAK,GAC7EQ,EAAeD,EAAAA,gBAAgBP,EAAqB,OAAQ,MAAM,GAAK,GACvES,EAAiBN,EAAYG,EAAkBE,EAErD,OACEE,EAAAA,kBAAAA,KAAC5B,EAAA,CAAuB,UAAWuB,EAChC,SAAA,CAAAZ,EACCkB,EAAAA,kBAAAA,IAAChC,EAAA,CACC,QAAUiC,GAAM,CACVA,EAAE,OAEJf,EAAgBR,CAAE,EAGlBS,EAAA,CAEJ,EACA,UAAU,WACV,KAAMF,EAAa,cAAgB,eAAA,CAAA,EAEnC,KACJe,EAAAA,kBAAAA,IAAC5B,GAAqB,UAAWsB,EAC/B,iCAACrB,EAAA,CACC,SAAA0B,EAAAA,kBAAAA,KAACzB,EAAA,CAAc,UAAWoB,EACxB,SAAA,CAAAM,wBAACE,EAAAA,YAAW,OAAQ,CAAE,WAAAnB,EAAY,QAASC,GAAW,QAAa,EACnEe,EAAAA,kBAAAA,KAACxB,EAAA,CAAkB,UAAWmB,EAC3B,SAAA,CAAAI,GAAkB,CAACR,GAClBS,EAAAA,kBAAAA,KAAC,OAAA,CAAK,UAAU,OACb,SAAA,CAAAlB,EACAW,GAAaX,EAAO,IAAM,EAAA,EAC7B,EAEFmB,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,QAAS,YAASpB,CAAA,CAAK,CAAA,CAAA,CACzC,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,EACF,CAEJ"}
@@ -1,10 +1,10 @@
1
1
  import { j as e } from "../../../../../_virtual/jsx-runtime.es.js";
2
- import { Button as j, theme as i } from "@ynput/ayon-react-components";
2
+ import { Button as j, theme as r } from "@ynput/ayon-react-components";
3
3
  import t from "styled-components";
4
- import C from "clsx";
5
- import { isEntityRestricted as E } from "../utils/restrictedEntity.es.js";
6
- import { getDisplayValue as a } from "../types/columnConfig.es.js";
7
- import { EntityIcon as N } from "../../../components/EntityIcon/EntityIcon.es.js";
4
+ import { isEntityRestricted as N } from "../utils/restrictedEntity.es.js";
5
+ import { getDisplayValue as l } from "../types/columnConfig.es.js";
6
+ import { EntityIcon as E } from "../../../components/EntityIcon/EntityIcon.es.js";
7
+ import { WRAP_MIN_ROW_HEIGHT as C } from "../constants.es.js";
8
8
  const S = t(j)`
9
9
  &.expander {
10
10
  background-color: unset;
@@ -15,7 +15,7 @@ const S = t(j)`
15
15
  }
16
16
  }
17
17
  cursor: pointer;
18
- `, k = t.div`
18
+ `, R = t.div`
19
19
  position: relative;
20
20
  display: flex;
21
21
  align-items: center;
@@ -23,15 +23,21 @@ const S = t(j)`
23
23
  height: 100%;
24
24
  width: 100%;
25
25
  padding-right: 8px;
26
- `, z = t.div`
26
+ `, W = t.div`
27
27
  width: 100%;
28
28
  height: 32px;
29
29
  overflow: hidden;
30
30
  position: relative;
31
- `, M = t.div`
31
+
32
+ &.stacked {
33
+ height: 100%;
34
+ }
35
+ `, _ = t.div`
32
36
  position: absolute;
33
37
  inset: 0;
34
- `, P = t.div`
38
+ display: flex;
39
+ align-items: center;
40
+ `, M = t.div`
35
41
  display: flex;
36
42
  align-items: center;
37
43
  gap: var(--base-gap-large);
@@ -43,6 +49,11 @@ const S = t(j)`
43
49
  max-width: 100%;
44
50
  height: 100%;
45
51
 
52
+ &.stacked {
53
+ height: auto;
54
+ max-height: 100%;
55
+ }
56
+
46
57
  /* &:hover {
47
58
  &,
48
59
  .icon,
@@ -50,7 +61,7 @@ const S = t(j)`
50
61
  color: var(--md-sys-color-primary);
51
62
  }
52
63
  } */
53
- `, R = t.div`
64
+ `, P = t.div`
54
65
  display: flex;
55
66
  flex-direction: column;
56
67
  align-items: flex-start;
@@ -64,7 +75,7 @@ const S = t(j)`
64
75
  }
65
76
 
66
77
  .path {
67
- ${i.bodyMedium}
78
+ ${r.bodyMedium}
68
79
  font-size: 14px;
69
80
  margin-bottom: -4px;
70
81
  color: var(--md-sys-color-outline);
@@ -80,7 +91,7 @@ const S = t(j)`
80
91
  }
81
92
 
82
93
  .label {
83
- ${i.bodyMedium}
94
+ ${r.bodyMedium}
84
95
  font-size: 14px;
85
96
  overflow: hidden;
86
97
  white-space: nowrap;
@@ -89,51 +100,59 @@ const S = t(j)`
89
100
  min-width: 0;
90
101
  }
91
102
 
103
+ &.stacked .label {
104
+ display: -webkit-box;
105
+ -webkit-box-orient: vertical;
106
+ -webkit-line-clamp: 2;
107
+ white-space: normal;
108
+ word-break: break-word;
109
+ }
110
+
92
111
  .divider {
93
- ${i.bodyMedium}
112
+ ${r.bodyMedium}
94
113
  font-size: 14px;
95
114
  color: var(--md-sys-color-outline);
96
115
  flex-shrink: 0;
97
116
  }
98
- `, K = ({
99
- id: l,
100
- label: d,
101
- name: c,
102
- path: r,
103
- isExpandable: p,
104
- entityType: s,
105
- subType: m,
106
- isExpanded: h,
107
- toggleExpandAll: x,
108
- toggleExpanded: f,
109
- rowHeight: u = 40,
117
+ `, F = ({
118
+ id: d,
119
+ label: c,
120
+ name: p,
121
+ path: s,
122
+ isExpandable: m,
123
+ entityType: a,
124
+ subType: h,
125
+ isExpanded: x,
126
+ toggleExpandAll: f,
127
+ toggleExpanded: u,
128
+ rowHeight: v = 40,
110
129
  columnDisplayConfig: n
111
130
  }) => {
112
- const v = E(s), o = u < 50, g = a(n, "path", "compact") ?? !0, w = a(n, "path", "full") ?? !0, y = o ? g : w;
113
- return /* @__PURE__ */ e.jsxs(k, { children: [
114
- p ? /* @__PURE__ */ e.jsx(
131
+ const g = N(a), i = v < C, o = i ? "compact" : "stacked", w = l(n, "path", "compact") ?? !0, y = l(n, "path", "full") ?? !0, b = i ? w : y;
132
+ return /* @__PURE__ */ e.jsxs(R, { className: o, children: [
133
+ m ? /* @__PURE__ */ e.jsx(
115
134
  S,
116
135
  {
117
- onClick: (b) => {
118
- b.altKey ? x(l) : f();
136
+ onClick: (k) => {
137
+ k.altKey ? f(d) : u();
119
138
  },
120
139
  className: "expander",
121
- icon: h ? "expand_more" : "chevron_right"
140
+ icon: x ? "expand_more" : "chevron_right"
122
141
  }
123
142
  ) : null,
124
- /* @__PURE__ */ e.jsx(z, { children: /* @__PURE__ */ e.jsx(M, { children: /* @__PURE__ */ e.jsxs(P, { children: [
125
- /* @__PURE__ */ e.jsx(N, { entity: { entityType: s, subType: m || void 0 } }),
126
- /* @__PURE__ */ e.jsxs(R, { className: C({ compact: o }), children: [
127
- y && !v && /* @__PURE__ */ e.jsxs("span", { className: "path", children: [
128
- r,
129
- o && r ? "/" : ""
143
+ /* @__PURE__ */ e.jsx(W, { className: o, children: /* @__PURE__ */ e.jsx(_, { children: /* @__PURE__ */ e.jsxs(M, { className: o, children: [
144
+ /* @__PURE__ */ e.jsx(E, { entity: { entityType: a, subType: h || void 0 } }),
145
+ /* @__PURE__ */ e.jsxs(P, { className: o, children: [
146
+ b && !g && /* @__PURE__ */ e.jsxs("span", { className: "path", children: [
147
+ s,
148
+ i && s ? "/" : ""
130
149
  ] }),
131
- /* @__PURE__ */ e.jsx("span", { className: "label", children: d || c })
150
+ /* @__PURE__ */ e.jsx("span", { className: "label", children: c || p })
132
151
  ] })
133
152
  ] }) }) })
134
153
  ] });
135
154
  };
136
155
  export {
137
- K as EntityNameWidget
156
+ F as EntityNameWidget
138
157
  };
139
158
  //# sourceMappingURL=EntityNameWidget.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityNameWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\nimport { isEntityRestricted } from '../utils/restrictedEntity'\nimport { getDisplayValue, type DisplayConfig, getColumnDisplayConfig } from '../types/columnConfig'\nimport { EntityIcon } from '@shared/components/EntityIcon/EntityIcon'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 32px;\n overflow: hidden;\n position: relative;\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n isExpandable?: boolean\n entityType: string\n subType?: string | null\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n columnDisplayConfig?: DisplayConfig\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n isExpandable,\n entityType,\n subType,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n columnDisplayConfig,\n}: EntityNameWidgetProps) => {\n // Check if this is a restricted access entity\n const isRestricted = isEntityRestricted(entityType)\n\n // Determine layout based on row height\n // < 50px = single line (compact), >= 50px = stacked\n const isCompact = rowHeight < 50\n\n // Determine if path should be shown based on display configuration\n // Check layout-specific setting first, then general setting\n const showPathCompact = getDisplayValue(columnDisplayConfig, 'path', 'compact') ?? true\n const showPathFull = getDisplayValue(columnDisplayConfig, 'path', 'full') ?? true\n const shouldShowPath = isCompact ? showPathCompact : showPathFull\n\n return (\n <StyledEntityNameWidget>\n {isExpandable ? (\n <Expander\n onClick={(e) => {\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : null}\n <StyledContentWrapper>\n <StyledContentAbsolute>\n <StyledContent>\n <EntityIcon entity={{ entityType, subType: subType || undefined }} />\n <StyledTextContent className={clsx({ compact: isCompact })}>\n {shouldShowPath && !isRestricted && (\n <span className=\"path\">\n {path}\n {isCompact && path ? '/' : ''}\n </span>\n )}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","isExpandable","entityType","subType","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","columnDisplayConfig","isRestricted","isEntityRestricted","isCompact","showPathCompact","getDisplayValue","showPathFull","shouldShowPath","jsx","e","EntityIcon","jsxs","clsx"],"mappings":";;;;;;;AAOA,MAAMA,IAAWC,EAAOC,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYxBC,IAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUhCG,IAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAO9BI,IAAwBJ,EAAO;AAAA;AAAA;AAAA,GAK/BK,IAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBvBM,IAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,GAsBTC,IAAmB,CAAC;AAAA,EAC/B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,qBAAAC;AACF,MAA6B;AAE3B,QAAMC,IAAeC,EAAmBR,CAAU,GAI5CS,IAAYJ,IAAY,IAIxBK,IAAkBC,EAAgBL,GAAqB,QAAQ,SAAS,KAAK,IAC7EM,IAAeD,EAAgBL,GAAqB,QAAQ,MAAM,KAAK,IACvEO,IAAiBJ,IAAYC,IAAkBE;AAErD,gCACGxB,GAAA,EACE,UAAA;AAAA,IAAAW,IACCe,gBAAAA,EAAAA;AAAAA,MAAC7B;AAAA,MAAA;AAAA,QACC,SAAS,CAAC8B,MAAM;AACd,UAAIA,EAAE,SAEJZ,EAAgBR,CAAE,IAGlBS,EAAA;AAAA,QAEJ;AAAA,QACA,WAAU;AAAA,QACV,MAAMF,IAAa,gBAAgB;AAAA,MAAA;AAAA,IAAA,IAEnC;AAAA,IACJY,gBAAAA,EAAAA,IAACzB,GAAA,EACC,UAAAyB,gBAAAA,MAACxB,GAAA,EACC,iCAACC,GAAA,EACC,UAAA;AAAA,MAAAuB,gBAAAA,MAACE,KAAW,QAAQ,EAAE,YAAAhB,GAAY,SAASC,KAAW,UAAa;AAAA,MACnEgB,gBAAAA,OAACzB,KAAkB,WAAW0B,EAAK,EAAE,SAAST,GAAW,GACtD,UAAA;AAAA,QAAAI,KAAkB,CAACN,KAClBU,gBAAAA,EAAAA,KAAC,QAAA,EAAK,WAAU,QACb,UAAA;AAAA,UAAAnB;AAAA,UACAW,KAAaX,IAAO,MAAM;AAAA,QAAA,GAC7B;AAAA,QAEFgB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,SAAS,eAASjB,EAAA,CAAK;AAAA,MAAA,EAAA,CACzC;AAAA,IAAA,EAAA,CACF,GACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"EntityNameWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { isEntityRestricted } from '../utils/restrictedEntity'\nimport { getDisplayValue, type DisplayConfig, getColumnDisplayConfig } from '../types/columnConfig'\nimport { EntityIcon } from '@shared/components/EntityIcon/EntityIcon'\nimport { WRAP_MIN_ROW_HEIGHT } from '../constants'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 32px;\n overflow: hidden;\n position: relative;\n\n &.stacked {\n height: 100%;\n }\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n &.stacked {\n height: auto;\n max-height: 100%;\n }\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n &.stacked .label {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n white-space: normal;\n word-break: break-word;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n isExpandable?: boolean\n entityType: string\n subType?: string | null\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n columnDisplayConfig?: DisplayConfig\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n isExpandable,\n entityType,\n subType,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n columnDisplayConfig,\n}: EntityNameWidgetProps) => {\n // Check if this is a restricted access entity\n const isRestricted = isEntityRestricted(entityType)\n\n // Determine layout based on row height\n // below the wrap threshold = single line (compact), above = stacked\n const isCompact = rowHeight < WRAP_MIN_ROW_HEIGHT\n const layout = isCompact ? 'compact' : 'stacked'\n\n // Determine if path should be shown based on display configuration\n // Check layout-specific setting first, then general setting\n const showPathCompact = getDisplayValue(columnDisplayConfig, 'path', 'compact') ?? true\n const showPathFull = getDisplayValue(columnDisplayConfig, 'path', 'full') ?? true\n const shouldShowPath = isCompact ? showPathCompact : showPathFull\n\n return (\n <StyledEntityNameWidget className={layout}>\n {isExpandable ? (\n <Expander\n onClick={(e) => {\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : null}\n <StyledContentWrapper className={layout}>\n <StyledContentAbsolute>\n <StyledContent className={layout}>\n <EntityIcon entity={{ entityType, subType: subType || undefined }} />\n <StyledTextContent className={layout}>\n {shouldShowPath && !isRestricted && (\n <span className=\"path\">\n {path}\n {isCompact && path ? '/' : ''}\n </span>\n )}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","isExpandable","entityType","subType","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","columnDisplayConfig","isRestricted","isEntityRestricted","isCompact","WRAP_MIN_ROW_HEIGHT","layout","showPathCompact","getDisplayValue","showPathFull","shouldShowPath","jsxs","jsx","e","EntityIcon"],"mappings":";;;;;;;AAOA,MAAMA,IAAWC,EAAOC,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYxBC,IAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUhCG,IAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAW9BI,IAAwBJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAO/BK,IAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA0BvBM,IAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,GAsBTC,IAAmB,CAAC;AAAA,EAC/B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,qBAAAC;AACF,MAA6B;AAE3B,QAAMC,IAAeC,EAAmBR,CAAU,GAI5CS,IAAYJ,IAAYK,GACxBC,IAASF,IAAY,YAAY,WAIjCG,IAAkBC,EAAgBP,GAAqB,QAAQ,SAAS,KAAK,IAC7EQ,IAAeD,EAAgBP,GAAqB,QAAQ,MAAM,KAAK,IACvES,IAAiBN,IAAYG,IAAkBE;AAErD,SACEE,gBAAAA,EAAAA,KAAC5B,GAAA,EAAuB,WAAWuB,GAChC,UAAA;AAAA,IAAAZ,IACCkB,gBAAAA,EAAAA;AAAAA,MAAChC;AAAA,MAAA;AAAA,QACC,SAAS,CAACiC,MAAM;AACd,UAAIA,EAAE,SAEJf,EAAgBR,CAAE,IAGlBS,EAAA;AAAA,QAEJ;AAAA,QACA,WAAU;AAAA,QACV,MAAMF,IAAa,gBAAgB;AAAA,MAAA;AAAA,IAAA,IAEnC;AAAA,IACJe,gBAAAA,EAAAA,IAAC5B,KAAqB,WAAWsB,GAC/B,gCAACrB,GAAA,EACC,UAAA0B,gBAAAA,EAAAA,KAACzB,GAAA,EAAc,WAAWoB,GACxB,UAAA;AAAA,MAAAM,gBAAAA,MAACE,KAAW,QAAQ,EAAE,YAAAnB,GAAY,SAASC,KAAW,UAAa;AAAA,MACnEe,gBAAAA,EAAAA,KAACxB,GAAA,EAAkB,WAAWmB,GAC3B,UAAA;AAAA,QAAAI,KAAkB,CAACR,KAClBS,gBAAAA,EAAAA,KAAC,QAAA,EAAK,WAAU,QACb,UAAA;AAAA,UAAAlB;AAAA,UACAW,KAAaX,IAAO,MAAM;AAAA,QAAA,GAC7B;AAAA,QAEFmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,SAAS,eAASpB,EAAA,CAAK;AAAA,MAAA,EAAA,CACzC;AAAA,IAAA,EAAA,CACF,GACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,4 +1,16 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("@ynput/ayon-react-components"),t=require("clsx"),r=require("styled-components"),F="edit-trigger",H=r.div`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../../../_virtual/jsx-runtime.cjs.js"),l=require("@ynput/ayon-react-components"),t=require("clsx"),s=require("styled-components"),M=require("./wrapMode.cjs.js"),z="edit-trigger",c=s.span`
2
+ text-align: left;
3
+ border-radius: var(--border-radius-m);
4
+ padding: 0px 2px;
5
+ white-space: nowrap;
6
+ overflow: hidden;
7
+ text-overflow: ellipsis;
8
+ max-width: 100%;
9
+
10
+ &.placeholder {
11
+ color: var(--md-sys-color-outline);
12
+ }
13
+ `,J=s.div`
2
14
  display: flex;
3
15
  gap: 1px;
4
16
  align-items: center;
@@ -26,19 +38,46 @@
26
38
  }
27
39
  }
28
40
 
29
- /* when value container is higher than 55px, wrap the contents */
30
- &:not(.item) {
31
- container-type: size;
32
-
33
- @container (min-height: 55px) {
41
+ /* wrapped rows sit on a fixed row lattice, so the height clip can only land between rows */
42
+ ${M.wrapMode`
43
+ &.multi-select:not(.item) {
34
44
  .values {
45
+ --wrap-row-height: 24px;
46
+ --wrap-row-gap: var(--base-gap-small);
35
47
  flex-wrap: wrap;
36
48
  align-items: flex-start;
49
+ align-content: flex-start;
50
+ row-gap: var(--wrap-row-gap);
37
51
  max-height: 100%;
52
+ /* var() inside an unsupported round() computes to none, not to the fallback — gate it */
53
+ @supports (max-height: round(down, 100px, 24px)) {
54
+ max-height: calc(
55
+ round(
56
+ down,
57
+ 100cqh + var(--wrap-row-gap),
58
+ calc(var(--wrap-row-height) + var(--wrap-row-gap))
59
+ ) - var(--wrap-row-gap)
60
+ );
61
+ }
62
+ }
63
+
64
+ .values > * {
65
+ min-height: var(--wrap-row-height);
66
+ }
67
+
68
+ ${c} {
69
+ white-space: normal;
70
+ word-break: break-word;
71
+ line-height: var(--wrap-row-height);
72
+ }
73
+
74
+ .has-img ${c} {
75
+ white-space: nowrap;
76
+ text-overflow: ellipsis;
38
77
  }
39
78
  }
40
- }
41
- `,J=r.div`
79
+ `}
80
+ `,K=s.div`
42
81
  flex: 1;
43
82
  display: flex;
44
83
  gap: var(--base-gap-small);
@@ -48,34 +87,23 @@
48
87
  border-radius: var(--border-radius-m);
49
88
  padding: 0px 2px;
50
89
  flex-wrap: nowrap;
51
- `,K=r.div`
90
+ `,Q=s.div`
52
91
  display: flex;
53
92
  gap: 2px;
54
93
  align-items: center;
55
94
 
56
95
  max-width: 100%;
57
96
  min-width: 20px;
58
- `,M=r.span`
59
- text-align: left;
60
- border-radius: var(--border-radius-m);
61
- padding: 0px 2px;
62
- white-space: nowrap;
63
- overflow: hidden;
64
- text-overflow: ellipsis;
65
- max-width: 100%;
66
-
67
- &.placeholder {
68
- color: var(--md-sys-color-outline);
69
- }
70
- `,Q=r.img`
97
+ `,U=s.img`
71
98
  width: 20px;
72
99
  height: 20px;
73
100
  object-fit: cover;
101
+ flex-shrink: 0;
74
102
 
75
103
  &.avatar {
76
104
  border-radius: 50%;
77
105
  }
78
- `,U=r.div`
106
+ `,X=s.div`
79
107
  border-radius: var(--border-radius-m);
80
108
  display: flex;
81
109
  justify-content: center;
@@ -90,8 +118,8 @@
90
118
  &.open {
91
119
  background-color: transparent;
92
120
  }
93
- `,X=r(o.Icon)`
121
+ `,Y=s(l.Icon)`
94
122
  transition: rotate 0.2s;
95
123
  padding: 2px;
96
- `,Y=({selectedOptions:a,placeholder:n,hasMultipleValues:p,isMultiSelect:c,isOpen:i,isItem:l,isSelected:d,isReadOnly:g,iconOnlyColor:h=!1,className:v,pt:y,...b})=>{const{icon:f={},img:j={},value:w={},expand:R={},close:E={}}=y||{},{style:N,className:S,...C}=f,{style:k,className:I,...W}=j,{style:V,className:q,...T}=w,{style:L,className:_,...A}=R,{style:D,className:G,...P}=E,x=a.every(e=>e.icon),z=!p||!x,m=!x&&c&&!l,u=!a.length&&n;return u&&(a=[{label:n,value:""}]),s.jsxRuntimeExports.jsxs(H,{className:t(v,{selected:d,item:l}),...b,children:[s.jsxRuntimeExports.jsx(J,{className:"values",children:a.map((e,B)=>s.jsxRuntimeExports.jsxs(K,{children:[e.icon&&Z(e.icon)?s.jsxRuntimeExports.jsx(Q,{src:e.icon,className:t({avatar:$(e.icon)},I),style:k,"data-tooltip":e.label,...W}):e.icon?s.jsxRuntimeExports.jsx(o.Icon,{icon:e.icon,style:{color:e.color,...N},className:S,...C}):null,(z||!e.icon)&&s.jsxRuntimeExports.jsx(M,{style:{color:m&&e.color?o.getTextColor(e.color):h&&e.icon?void 0:e.color,backgroundColor:m?e.color||"var(--md-sys-color-surface-container)":"transparent",...V},className:t({placeholder:u},q),"aria-label":e.label,...T,children:e.label})]},e.value.toString()+B))}),!l&&!g&&s.jsxRuntimeExports.jsx(U,{className:t("expand",F,{open:i},_),children:s.jsxRuntimeExports.jsx(X,{icon:"expand_more",style:{rotate:i?"180deg":"0",...L},"aria-label":"Expand options",...A})}),l&&d&&c&&s.jsxRuntimeExports.jsx(o.Icon,{icon:"close",style:{marginLeft:"auto",marginRight:4,...D},"aria-label":"Deselect item",className:t("close",G),...P})]})},Z=(a="")=>a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.startsWith("http://")||a.startsWith("https://"),$=a=>a.includes("avatar");exports.EnumCellValue=Y;
124
+ `,Z=({selectedOptions:a,placeholder:i,hasMultipleValues:g,isMultiSelect:n,isOpen:d,isItem:o,isSelected:p,isReadOnly:v,iconOnlyColor:w=!1,className:y,pt:b,...f})=>{const{icon:j={},img:R={},value:N={},expand:E={},close:S={}}=b||{},{style:k,className:C,...I}=j,{style:W,className:q,...V}=R,{style:T,className:L,..._}=N,{style:$,className:A,...D}=E,{style:G,className:P,...B}=S,m=a.every(e=>e.icon),F=!g||!m,x=!m&&n&&!o,u=!a.length&&i;return u&&(a=[{label:i,value:""}]),r.jsxRuntimeExports.jsxs(J,{className:t(y,{selected:p,item:o,"multi-select":n}),...f,children:[r.jsxRuntimeExports.jsx(K,{className:"values",children:a.map((e,H)=>r.jsxRuntimeExports.jsxs(Q,{className:t({"has-img":h(e.icon)}),children:[e.icon&&h(e.icon)?r.jsxRuntimeExports.jsx(U,{src:e.icon,className:t({avatar:O(e.icon)},q),style:W,"data-tooltip":e.label,...V}):e.icon?r.jsxRuntimeExports.jsx(l.Icon,{icon:e.icon,style:{color:e.color,...k},className:C,...I}):null,(F||!e.icon)&&r.jsxRuntimeExports.jsx(c,{style:{color:x&&e.color?l.getTextColor(e.color):w&&e.icon?void 0:e.color,backgroundColor:x?e.color||"var(--md-sys-color-surface-container)":"transparent",...T},className:t({placeholder:u},L),"aria-label":e.label,..._,children:e.label})]},e.value.toString()+H))}),!o&&!v&&r.jsxRuntimeExports.jsx(X,{className:t("expand",z,{open:d},A),children:r.jsxRuntimeExports.jsx(Y,{icon:"expand_more",style:{rotate:d?"180deg":"0",...$},"aria-label":"Expand options",...D})}),o&&p&&n&&r.jsxRuntimeExports.jsx(l.Icon,{icon:"close",style:{marginLeft:"auto",marginRight:4,...G},"aria-label":"Deselect item",className:t("close",P),...B})]})},h=(a="")=>a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.startsWith("http://")||a.startsWith("https://"),O=a=>a.includes("avatar");exports.EnumCellValue=Z;
97
125
  //# sourceMappingURL=EnumCellValue.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnumCellValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import type { EnumItem } from '@shared/api'\nimport { getTextColor, Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\n// Inline the edit trigger class to avoid runtime import and circular dependency with CellWidget\nconst EDIT_TRIGGER_CLASS = 'edit-trigger'\n\nconst StyledWidget = styled.div`\n display: flex;\n gap: 1px;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: visible;\n border-radius: var(--border-radius-m);\n padding: 0 1px;\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\n overflow: hidden;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-hover);\n }\n }\n\n &.selected {\n background-color: var(--md-sys-color-primary-container);\n\n &:hover {\n background-color: var(--md-sys-color-primary-container-hover);\n }\n }\n\n /* when value container is higher than 55px, wrap the contents */\n &:not(.item) {\n container-type: size;\n\n @container (min-height: 55px) {\n .values {\n flex-wrap: wrap;\n align-items: flex-start;\n max-height: 100%;\n }\n }\n }\n`\n\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n align-content: flex-start;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledValue = styled.span`\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n\n &.placeholder {\n color: var(--md-sys-color-outline);\n }\n`\n\nconst StyledImg = styled.img`\n width: 20px;\n height: 20px;\n object-fit: cover;\n\n &.avatar {\n border-radius: 50%;\n }\n`\n\nconst StyledExpandButton = styled.div`\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n padding: 2px;\n`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: EnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n iconOnlyColor?: boolean // When true, only the icon gets colored, not the text label\n pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n iconOnlyColor = false,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\n // Check if all options have icons\n const allOptionsHaveIcon = selectedOptions.every((option) => option.icon)\n\n // Determine if we should show labels based on the requirements\n const showLabels = !hasMultipleValues || !allOptionsHaveIcon\n // Show the colors be backgrounds instead of the text\n const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem\n\n const isPlaceholder = !selectedOptions.length && placeholder\n if (isPlaceholder) {\n selectedOptions = [\n {\n label: placeholder,\n value: '',\n },\n ]\n }\n\n return (\n <StyledWidget className={clsx(className, { selected: isSelected, item: isItem })} {...props}>\n <StyledValuesContainer className=\"values\">\n {selectedOptions.map((option, i) => (\n <StyledValueWrapper key={option.value.toString() + i}>\n {option.icon && checkForImgSrc(option.icon) ? (\n <StyledImg\n src={option.icon}\n className={clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName)}\n style={imgStyle}\n data-tooltip={option.label}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\n ) : null}\n\n {(showLabels || !option.icon) && (\n <StyledValue\n style={{\n color:\n backgroundColor && option.color\n ? getTextColor(option.color)\n : iconOnlyColor && option.icon\n ? undefined\n : option.color,\n backgroundColor: backgroundColor\n ? option.color || 'var(--md-sys-color-surface-container)'\n : 'transparent',\n ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton\n className={clsx('expand', EDIT_TRIGGER_CLASS, { open: isOpen }, expandClassName)}\n >\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\nconst checkForImgSrc = (icon: string | undefined = ''): boolean => {\n return (\n icon.startsWith('/') ||\n icon.startsWith('./') ||\n icon.startsWith('../') ||\n icon.startsWith('http://') ||\n icon.startsWith('https://')\n )\n}\n\nconst checkAvatarImg = (src: string): boolean => src.includes('avatar')\n"],"names":["EDIT_TRIGGER_CLASS","StyledWidget","styled","StyledValuesContainer","StyledValueWrapper","StyledValue","StyledImg","StyledExpandButton","StyledExpandIcon","Icon","EnumCellValue","selectedOptions","placeholder","hasMultipleValues","isMultiSelect","isOpen","isItem","isSelected","isReadOnly","iconOnlyColor","className","pt","props","ptIcon","ptImg","ptValue","ptExpand","ptClose","iconStyle","iconClassName","iconRest","imgStyle","imgClassName","imgRest","valueStyle","valueClassName","valueRest","expandStyle","expandClassName","expandRest","closeStyle","closeClassName","closeRest","allOptionsHaveIcon","option","showLabels","backgroundColor","isPlaceholder","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","getTextColor","icon","src"],"mappings":"yOAKMA,EAAqB,eAErBC,EAAeC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0CtBC,EAAwBD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY/BE,EAAqBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS5BG,EAAcH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcrBI,EAAYJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUnBK,EAAqBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiB5BM,EAAmBN,EAAOO,MAAI;AAAA;AAAA;AAAA,EAwBvBC,EAAgB,CAAC,CAC5B,gBAAAC,EACA,YAAAC,EACA,kBAAAC,EACA,cAAAC,EACA,OAAAC,EACA,OAAAC,EACA,WAAAC,EACA,WAAAC,EACA,cAAAC,EAAgB,GAChB,UAAAC,EACA,GAAAC,EACA,GAAGC,CACL,IAAyB,CAEvB,KAAM,CACJ,KAAMC,EAAS,CAAA,EACf,IAAKC,EAAQ,CAAA,EACb,MAAOC,EAAU,CAAA,EACjB,OAAQC,EAAW,CAAA,EACnB,MAAOC,EAAU,CAAA,CAAC,EAChBN,GAAM,CAAA,EAEJ,CAAE,MAAOO,EAAW,UAAWC,EAAe,GAAGC,GAAaP,EAC9D,CAAE,MAAOQ,EAAU,UAAWC,EAAc,GAAGC,GAAYT,EAC3D,CAAE,MAAOU,EAAY,UAAWC,EAAgB,GAAGC,GAAcX,EACjE,CAAE,MAAOY,EAAa,UAAWC,EAAiB,GAAGC,GAAeb,EACpE,CAAE,MAAOc,EAAY,UAAWC,EAAgB,GAAGC,GAAcf,EAGjEgB,EAAqBhC,EAAgB,MAAOiC,GAAWA,EAAO,IAAI,EAGlEC,EAAa,CAAChC,GAAqB,CAAC8B,EAEpCG,EAAkB,CAACH,GAAsB7B,GAAiB,CAACE,EAE3D+B,EAAgB,CAACpC,EAAgB,QAAUC,EACjD,OAAImC,IACFpC,EAAkB,CAChB,CACE,MAAOC,EACP,MAAO,EAAA,CACT,GAKFoC,EAAAA,kBAAAA,KAAC/C,EAAA,CAAa,UAAWgD,EAAK7B,EAAW,CAAE,SAAUH,EAAY,KAAMD,CAAA,CAAQ,EAAI,GAAGM,EACpF,SAAA,CAAA4B,EAAAA,kBAAAA,IAAC/C,EAAA,CAAsB,UAAU,SAC9B,SAAAQ,EAAgB,IAAI,CAACiC,EAAQO,IAC5BH,EAAAA,kBAAAA,KAAC5C,EAAA,CACE,SAAA,CAAAwC,EAAO,MAAQQ,EAAeR,EAAO,IAAI,EACxCM,EAAAA,kBAAAA,IAAC5C,EAAA,CACC,IAAKsC,EAAO,KACZ,UAAWK,EAAK,CAAE,OAAQI,EAAeT,EAAO,IAAI,CAAA,EAAKZ,CAAY,EACrE,MAAOD,EACP,eAAca,EAAO,MACpB,GAAGX,CAAA,CAAA,EAEJW,EAAO,KACTM,EAAAA,kBAAAA,IAACzC,EAAAA,KAAA,CACC,KAAMmC,EAAO,KACb,MAAO,CAAE,MAAOA,EAAO,MAAO,GAAGhB,CAAA,EACjC,UAAWC,EACV,GAAGC,CAAA,CAAA,EAEJ,MAEFe,GAAc,CAACD,EAAO,OACtBM,EAAAA,kBAAAA,IAAC7C,EAAA,CACC,MAAO,CACL,MACEyC,GAAmBF,EAAO,MACtBU,EAAAA,aAAaV,EAAO,KAAK,EACzBzB,GAAiByB,EAAO,KACxB,OACAA,EAAO,MACb,gBAAiBE,EACbF,EAAO,OAAS,wCAChB,cACJ,GAAGV,CAAA,EAEL,UAAWe,EAAK,CAAE,YAAaF,CAAA,EAAiBZ,CAAc,EAC9D,aAAYS,EAAO,MAClB,GAAGR,EAEH,SAAAQ,EAAO,KAAA,CAAA,CACV,CAAA,EArCqBA,EAAO,MAAM,SAAA,EAAaO,CAuCnD,CACD,EACH,EACC,CAACnC,GAAU,CAACE,GACXgC,EAAAA,kBAAAA,IAAC3C,EAAA,CACC,UAAW0C,EAAK,SAAUjD,EAAoB,CAAE,KAAMe,CAAA,EAAUuB,CAAe,EAE/E,SAAAY,EAAAA,kBAAAA,IAAC1C,EAAA,CACC,KAAK,cACL,MAAO,CAAE,OAAQO,EAAS,SAAW,IAAK,GAAGsB,CAAA,EAC7C,aAAW,iBACV,GAAGE,CAAA,CAAA,CACN,CAAA,EAGHvB,GAAUC,GAAcH,GACvBoC,EAAAA,kBAAAA,IAACzC,EAAAA,KAAA,CACC,KAAK,QACL,MAAO,CAAE,WAAY,OAAQ,YAAa,EAAG,GAAG+B,CAAA,EAChD,aAAW,gBACX,UAAWS,EAAK,QAASR,CAAc,EACtC,GAAGC,CAAA,CAAA,CACN,EAEJ,CAEJ,EAGMU,EAAiB,CAACG,EAA2B,KAE/CA,EAAK,WAAW,GAAG,GACnBA,EAAK,WAAW,IAAI,GACpBA,EAAK,WAAW,KAAK,GACrBA,EAAK,WAAW,SAAS,GACzBA,EAAK,WAAW,UAAU,EAIxBF,EAAkBG,GAAyBA,EAAI,SAAS,QAAQ"}
1
+ {"version":3,"file":"EnumCellValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import type { EnumItem } from '@shared/api'\nimport { getTextColor, Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\nimport { wrapMode } from './wrapMode'\n// Inline the edit trigger class to avoid runtime import and circular dependency with CellWidget\nconst EDIT_TRIGGER_CLASS = 'edit-trigger'\n\nconst StyledValue = styled.span`\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n\n &.placeholder {\n color: var(--md-sys-color-outline);\n }\n`\n\nconst StyledWidget = styled.div`\n display: flex;\n gap: 1px;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: visible;\n border-radius: var(--border-radius-m);\n padding: 0 1px;\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\n overflow: hidden;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-hover);\n }\n }\n\n &.selected {\n background-color: var(--md-sys-color-primary-container);\n\n &:hover {\n background-color: var(--md-sys-color-primary-container-hover);\n }\n }\n\n /* wrapped rows sit on a fixed row lattice, so the height clip can only land between rows */\n ${wrapMode`\n &.multi-select:not(.item) {\n .values {\n --wrap-row-height: 24px;\n --wrap-row-gap: var(--base-gap-small);\n flex-wrap: wrap;\n align-items: flex-start;\n align-content: flex-start;\n row-gap: var(--wrap-row-gap);\n max-height: 100%;\n /* var() inside an unsupported round() computes to none, not to the fallback — gate it */\n @supports (max-height: round(down, 100px, 24px)) {\n max-height: calc(\n round(\n down,\n 100cqh + var(--wrap-row-gap),\n calc(var(--wrap-row-height) + var(--wrap-row-gap))\n ) - var(--wrap-row-gap)\n );\n }\n }\n\n .values > * {\n min-height: var(--wrap-row-height);\n }\n\n ${StyledValue} {\n white-space: normal;\n word-break: break-word;\n line-height: var(--wrap-row-height);\n }\n\n .has-img ${StyledValue} {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n `}\n`\n\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n align-content: flex-start;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledImg = styled.img`\n width: 20px;\n height: 20px;\n object-fit: cover;\n flex-shrink: 0;\n\n &.avatar {\n border-radius: 50%;\n }\n`\n\nconst StyledExpandButton = styled.div`\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n padding: 2px;\n`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: EnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n iconOnlyColor?: boolean // When true, only the icon gets colored, not the text label\n pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n iconOnlyColor = false,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\n // Check if all options have icons\n const allOptionsHaveIcon = selectedOptions.every((option) => option.icon)\n\n // Determine if we should show labels based on the requirements\n const showLabels = !hasMultipleValues || !allOptionsHaveIcon\n // Show the colors be backgrounds instead of the text\n const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem\n\n const isPlaceholder = !selectedOptions.length && placeholder\n if (isPlaceholder) {\n selectedOptions = [\n {\n label: placeholder,\n value: '',\n },\n ]\n }\n\n return (\n <StyledWidget\n className={clsx(className, {\n selected: isSelected,\n item: isItem,\n 'multi-select': isMultiSelect,\n })}\n {...props}\n >\n <StyledValuesContainer className=\"values\">\n {selectedOptions.map((option, i) => (\n <StyledValueWrapper\n key={option.value.toString() + i}\n className={clsx({ 'has-img': checkForImgSrc(option.icon) })}\n >\n {option.icon && checkForImgSrc(option.icon) ? (\n <StyledImg\n src={option.icon}\n className={clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName)}\n style={imgStyle}\n data-tooltip={option.label}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\n ) : null}\n\n {(showLabels || !option.icon) && (\n <StyledValue\n style={{\n color:\n backgroundColor && option.color\n ? getTextColor(option.color)\n : iconOnlyColor && option.icon\n ? undefined\n : option.color,\n backgroundColor: backgroundColor\n ? option.color || 'var(--md-sys-color-surface-container)'\n : 'transparent',\n ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton\n className={clsx('expand', EDIT_TRIGGER_CLASS, { open: isOpen }, expandClassName)}\n >\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\nconst checkForImgSrc = (icon: string | undefined = ''): boolean => {\n return (\n icon.startsWith('/') ||\n icon.startsWith('./') ||\n icon.startsWith('../') ||\n icon.startsWith('http://') ||\n icon.startsWith('https://')\n )\n}\n\nconst checkAvatarImg = (src: string): boolean => src.includes('avatar')\n"],"names":["EDIT_TRIGGER_CLASS","StyledValue","styled","StyledWidget","wrapMode","StyledValuesContainer","StyledValueWrapper","StyledImg","StyledExpandButton","StyledExpandIcon","Icon","EnumCellValue","selectedOptions","placeholder","hasMultipleValues","isMultiSelect","isOpen","isItem","isSelected","isReadOnly","iconOnlyColor","className","pt","props","ptIcon","ptImg","ptValue","ptExpand","ptClose","iconStyle","iconClassName","iconRest","imgStyle","imgClassName","imgRest","valueStyle","valueClassName","valueRest","expandStyle","expandClassName","expandRest","closeStyle","closeClassName","closeRest","allOptionsHaveIcon","option","showLabels","backgroundColor","isPlaceholder","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","getTextColor","icon","src"],"mappings":"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"}