@ynput/ayon-frontend-shared 0.2.31 → 0.2.32

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 (154) hide show
  1. package/dist/_virtual/index.cjs10.js +1 -1
  2. package/dist/_virtual/index.cjs5.js +1 -1
  3. package/dist/_virtual/index.cjs6.js +1 -1
  4. package/dist/_virtual/index.cjs8.js +1 -1
  5. package/dist/_virtual/index.cjs9.js +1 -1
  6. package/dist/_virtual/index.es10.js +5 -5
  7. package/dist/_virtual/index.es5.js +5 -2
  8. package/dist/_virtual/index.es5.js.map +1 -1
  9. package/dist/_virtual/index.es6.js +2 -5
  10. package/dist/_virtual/index.es6.js.map +1 -1
  11. package/dist/_virtual/index.es8.js +3 -3
  12. package/dist/_virtual/index.es9.js +5 -5
  13. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  14. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js.map +1 -1
  15. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  16. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  17. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  18. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  19. package/dist/node_modules/rehype-parse/lib/index.cjs.js.map +1 -1
  20. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  21. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  22. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  23. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  24. package/dist/node_modules/remove-accents/index.es.js +1 -1
  25. package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
  26. package/dist/shared/src/api/generated/access.es.js.map +1 -1
  27. package/dist/shared/src/api/generated/authentication.cjs.js +1 -1
  28. package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
  29. package/dist/shared/src/api/generated/authentication.es.js +9 -6
  30. package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
  31. package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
  32. package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
  33. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  34. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  35. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  36. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  37. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  38. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  39. package/dist/shared/src/api/generated/links.cjs.js +1 -1
  40. package/dist/shared/src/api/generated/links.cjs.js.map +1 -1
  41. package/dist/shared/src/api/generated/links.es.js +13 -5
  42. package/dist/shared/src/api/generated/links.es.js.map +1 -1
  43. package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
  44. package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
  45. package/dist/shared/src/api/generated/operations.cjs.js +1 -1
  46. package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
  47. package/dist/shared/src/api/generated/operations.es.js +16 -0
  48. package/dist/shared/src/api/generated/operations.es.js.map +1 -1
  49. package/dist/shared/src/api/generated/products.cjs.js +1 -1
  50. package/dist/shared/src/api/generated/products.cjs.js.map +1 -1
  51. package/dist/shared/src/api/generated/products.es.js +6 -3
  52. package/dist/shared/src/api/generated/products.es.js.map +1 -1
  53. package/dist/shared/src/api/generated/projects.cjs.js +1 -1
  54. package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/projects.es.js +19 -0
  56. package/dist/shared/src/api/generated/projects.es.js.map +1 -1
  57. package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
  58. package/dist/shared/src/api/generated/system.es.js.map +1 -1
  59. package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
  60. package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
  61. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  62. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  63. package/dist/shared/src/api/generated/versions.cjs.js.map +1 -1
  64. package/dist/shared/src/api/generated/versions.es.js.map +1 -1
  65. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  66. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  67. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  68. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  69. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +15 -10
  70. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  71. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js +60 -0
  72. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js.map +1 -0
  73. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js +332 -0
  74. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js.map +1 -0
  75. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +4 -4
  76. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  77. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +37 -33
  78. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  79. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js +3 -5
  80. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js.map +1 -1
  81. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js +4 -6
  82. package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js.map +1 -1
  83. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +1 -2
  84. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  85. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +0 -1
  86. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  87. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  88. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  89. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +555 -537
  90. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  91. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +0 -1
  92. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  93. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +4 -5
  94. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  95. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  96. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  97. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +92 -91
  98. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  99. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  100. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  103. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +126 -108
  104. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js +2 -0
  106. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js.map +1 -0
  107. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js +9 -0
  108. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js.map +1 -0
  109. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  110. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  111. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +49 -48
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +38 -9
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  115. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +74 -39
  116. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  117. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +24 -15
  118. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  119. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +71 -59
  120. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  121. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +6 -6
  122. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  123. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -12
  124. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  125. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  126. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  127. package/dist/shared/src/util/columnConfigConverter.es.js +35 -33
  128. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  129. package/dist/types/api/generated/access.d.ts +6 -0
  130. package/dist/types/api/generated/authentication.d.ts +6 -0
  131. package/dist/types/api/generated/entityLists.d.ts +7 -7
  132. package/dist/types/api/generated/folders.d.ts +2 -2
  133. package/dist/types/api/generated/graphql.d.ts +3 -1
  134. package/dist/types/api/generated/graphqlLinks.d.ts +21 -15
  135. package/dist/types/api/generated/links.d.ts +4 -0
  136. package/dist/types/api/generated/onboarding.d.ts +3 -0
  137. package/dist/types/api/generated/operations.d.ts +22 -1
  138. package/dist/types/api/generated/products.d.ts +23 -0
  139. package/dist/types/api/generated/projects.d.ts +63 -0
  140. package/dist/types/api/generated/representations.d.ts +1 -0
  141. package/dist/types/api/generated/system.d.ts +9 -2
  142. package/dist/types/api/generated/tasks.d.ts +1 -0
  143. package/dist/types/api/generated/users.d.ts +1 -1
  144. package/dist/types/api/generated/versions.d.ts +1 -0
  145. package/dist/types/api/generated/views.d.ts +50 -9
  146. package/dist/types/api/queries/authentication/getAuthentication.d.ts +1 -0
  147. package/dist/types/api/queries/overview/updateOverview.d.ts +2 -0
  148. package/dist/types/api/queries/project/getProject.d.ts +4 -0
  149. package/dist/types/components/ProjectTableSettings/RowHeightSettings.d.ts +3 -0
  150. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +4 -0
  151. package/dist/types/containers/ProjectTreeTable/hooks/useDynamicRowHeight.d.ts +11 -0
  152. package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +2 -1
  153. package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -1
  154. package/package.json +3 -3
@@ -1,15 +1,17 @@
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 s=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("@ynput/ayon-react-components"),t=require("clsx"),r=require("styled-components"),H="edit-trigger",J=r.div`
2
2
  display: flex;
3
3
  gap: var(--base-gap-small);
4
4
  align-items: center;
5
5
  width: 100%;
6
6
  height: 100%;
7
- overflow: hidden;
7
+ overflow: visible;
8
8
  border-radius: var(--border-radius-m);
9
+ padding: 0 1px;
9
10
 
10
11
  &.item {
11
12
  padding: 4px 2px;
12
13
  border-radius: 0;
14
+ overflow: hidden;
13
15
 
14
16
  &:hover {
15
17
  background-color: var(--md-sys-color-surface-container-hover);
@@ -23,7 +25,7 @@
23
25
  background-color: var(--md-sys-color-primary-container-hover);
24
26
  }
25
27
  }
26
- `,z=r.div`
28
+ `,K=r.div`
27
29
  flex: 1;
28
30
  display: flex;
29
31
  gap: var(--base-gap-small);
@@ -31,27 +33,31 @@
31
33
  overflow: hidden;
32
34
  border-radius: var(--border-radius-m);
33
35
  padding: 0px 2px;
34
- `,J=r.div`
36
+ flex-wrap: nowrap;
37
+
38
+ &.wrap {
39
+ flex-wrap: wrap;
40
+ }
41
+ `,M=r.div`
35
42
  display: flex;
36
43
  gap: var(--base-gap-small);
37
44
  align-items: center;
38
45
 
39
- overflow: hidden;
40
46
  max-width: 100%;
41
47
  min-width: 20px;
42
- `,K=r.span`
43
- overflow: hidden;
44
- white-space: nowrap;
45
- width: 100%;
46
- text-overflow: ellipsis;
48
+ `,Q=r.span`
47
49
  text-align: left;
48
50
  border-radius: var(--border-radius-m);
49
51
  padding: 0px 2px;
52
+ white-space: nowrap;
53
+ overflow: hidden;
54
+ text-overflow: ellipsis;
55
+ max-width: 100%;
50
56
 
51
57
  &.placeholder {
52
58
  color: var(--md-sys-color-outline);
53
59
  }
54
- `,M=r.img`
60
+ `,U=r.img`
55
61
  width: 20px;
56
62
  height: 20px;
57
63
  object-fit: cover;
@@ -59,14 +65,17 @@
59
65
  &.avatar {
60
66
  border-radius: 50%;
61
67
  }
62
- `,Q=r.div`
68
+ `,X=r.div`
63
69
  width: 32px;
64
- height: 32px;
70
+ height: fit-content;
71
+ min-height: 32px;
72
+ aspect-ratio: 1;
65
73
  border-radius: var(--border-radius-m);
66
74
  display: flex;
67
75
  justify-content: center;
68
76
  align-items: center;
69
77
  cursor: pointer;
78
+ flex-shrink: 0;
70
79
 
71
80
  &:hover {
72
81
  background-color: var(--md-sys-color-surface-container-highest-hover);
@@ -75,7 +84,7 @@
75
84
  &.open {
76
85
  background-color: transparent;
77
86
  }
78
- `,U=r(o.Icon)`
87
+ `,Y=r(o.Icon)`
79
88
  transition: rotate 0.2s;
80
- `,X=({selectedOptions:a,placeholder:n,hasMultipleValues:p,isMultiSelect:c,isOpen:i,isItem:l,isSelected:d,isReadOnly:g,className:h,pt:v,...y})=>{const{icon:b={},img:j={},value:f={},expand:R={},close:E={}}=v||{},{style:N,className:S,...w}=b,{style:C,className:k,...I}=j,{style:W,className:V,...q}=f,{style:L,className:T,..._}=R,{style:A,className:D,...G}=E,m=a.every(e=>e.icon),P=!p||!m,u=!m&&c&&!l,x=!a.length&&n;return x&&(a=[{label:n,value:""}]),s.jsxRuntimeExports.jsxs(H,{className:t(h,{selected:d,item:l}),...y,children:[s.jsxRuntimeExports.jsx(z,{children:a.map((e,B)=>s.jsxRuntimeExports.jsxs(J,{children:[e.icon&&Y(e.icon)?s.jsxRuntimeExports.jsx(M,{src:e.icon,className:t({avatar:Z(e.icon)},k),style:C,"data-tooltip":e.label,...I}):e.icon?s.jsxRuntimeExports.jsx(o.Icon,{icon:e.icon,style:{color:e.color,...N},className:S,...w}):null,(P||!e.icon)&&s.jsxRuntimeExports.jsx(K,{style:{color:u?"inherit":e.color,backgroundColor:u?e.color||"var(--md-sys-color-surface-container)":"transparent",...W},className:t({placeholder:x},V),"aria-label":e.label,...q,children:e.label})]},e.value.toString()+B))}),!l&&!g&&s.jsxRuntimeExports.jsx(Q,{className:t("expand",F,{open:i},T),children:s.jsxRuntimeExports.jsx(U,{icon:"expand_more",style:{rotate:i?"180deg":"0",...L},"aria-label":"Expand options",..._})}),l&&d&&c&&s.jsxRuntimeExports.jsx(o.Icon,{icon:"close",style:{marginLeft:"auto",marginRight:4,...A},"aria-label":"Deselect item",className:t("close",D),...G})]})},Y=(a="")=>a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.startsWith("http://")||a.startsWith("https://"),Z=a=>a.includes("avatar");exports.EnumCellValue=X;
89
+ `,Z=({selectedOptions:a,placeholder:n,hasMultipleValues:g,isMultiSelect:c,isOpen:i,isItem:l,isSelected:d,isReadOnly:h,rowHeight:m,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,...L}=w,{style:T,className:_,...A}=R,{style:D,className:G,...P}=E,p=a.every(e=>e.icon),B=!g||!p,x=!p&&c&&!l,u=!a.length&&n;u&&(a=[{label:n,value:""}]);const F=m!==void 0&&m>100;return s.jsxRuntimeExports.jsxs(J,{className:t(v,{selected:d,item:l}),...b,children:[s.jsxRuntimeExports.jsx(K,{className:t({wrap:F}),children:a.map((e,z)=>s.jsxRuntimeExports.jsxs(M,{children:[e.icon&&$(e.icon)?s.jsxRuntimeExports.jsx(U,{src:e.icon,className:t({avatar:O(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,(B||!e.icon)&&s.jsxRuntimeExports.jsx(Q,{style:{color:x?"inherit":e.color,backgroundColor:x?e.color||"var(--md-sys-color-surface-container)":"transparent",...V},className:t({placeholder:u},q),"aria-label":e.label,...L,children:e.label})]},e.value.toString()+z))}),!l&&!h&&s.jsxRuntimeExports.jsx(X,{className:t("expand",H,{open:i},_),children:s.jsxRuntimeExports.jsx(Y,{icon:"expand_more",style:{rotate:i?"180deg":"0",...T},"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})]})},$=(a="")=>a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.startsWith("http://")||a.startsWith("https://"),O=a=>a.includes("avatar");exports.EnumCellValue=Z;
81
90
  //# sourceMappingURL=EnumCellValue.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnumCellValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import { AttributeEnumItem } from '@shared/api'\nimport { 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: var(--base-gap-small);\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\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\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n\n overflow: hidden;\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledValue = styled.span`\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n text-overflow: ellipsis;\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\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 width: 32px;\n height: 32px;\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\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`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: AttributeEnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\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 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>\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: backgroundColor ? 'inherit' : 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","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","icon","src"],"mappings":"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"}
1
+ {"version":3,"file":"EnumCellValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import { AttributeEnumItem } from '@shared/api'\nimport { 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: var(--base-gap-small);\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\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n\n &.wrap {\n flex-wrap: wrap;\n }\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: var(--base-gap-small);\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 width: 32px;\n height: fit-content;\n min-height: 32px;\n aspect-ratio: 1;\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`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: AttributeEnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n rowHeight?: number\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 rowHeight,\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 // Allow wrapping when row height is above 100px\n const allowWrap = rowHeight !== undefined && rowHeight > 100\n\n return (\n <StyledWidget className={clsx(className, { selected: isSelected, item: isItem })} {...props}>\n <StyledValuesContainer className={clsx({ wrap: allowWrap })}>\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: backgroundColor ? 'inherit' : 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","rowHeight","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","allowWrap","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","icon","src"],"mappings":"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"}
@@ -2,18 +2,20 @@ import { j as r } from "../../../../../_virtual/jsx-runtime.es.js";
2
2
  import { Icon as o } from "@ynput/ayon-react-components";
3
3
  import l from "clsx";
4
4
  import s from "styled-components";
5
- const P = "edit-trigger", q = s.div`
5
+ const H = "edit-trigger", J = s.div`
6
6
  display: flex;
7
7
  gap: var(--base-gap-small);
8
8
  align-items: center;
9
9
  width: 100%;
10
10
  height: 100%;
11
- overflow: hidden;
11
+ overflow: visible;
12
12
  border-radius: var(--border-radius-m);
13
+ padding: 0 1px;
13
14
 
14
15
  &.item {
15
16
  padding: 4px 2px;
16
17
  border-radius: 0;
18
+ overflow: hidden;
17
19
 
18
20
  &:hover {
19
21
  background-color: var(--md-sys-color-surface-container-hover);
@@ -27,7 +29,7 @@ const P = "edit-trigger", q = s.div`
27
29
  background-color: var(--md-sys-color-primary-container-hover);
28
30
  }
29
31
  }
30
- `, z = s.div`
32
+ `, K = s.div`
31
33
  flex: 1;
32
34
  display: flex;
33
35
  gap: var(--base-gap-small);
@@ -35,27 +37,31 @@ const P = "edit-trigger", q = s.div`
35
37
  overflow: hidden;
36
38
  border-radius: var(--border-radius-m);
37
39
  padding: 0px 2px;
38
- `, J = s.div`
40
+ flex-wrap: nowrap;
41
+
42
+ &.wrap {
43
+ flex-wrap: wrap;
44
+ }
45
+ `, Q = s.div`
39
46
  display: flex;
40
47
  gap: var(--base-gap-small);
41
48
  align-items: center;
42
49
 
43
- overflow: hidden;
44
50
  max-width: 100%;
45
51
  min-width: 20px;
46
- `, K = s.span`
47
- overflow: hidden;
48
- white-space: nowrap;
49
- width: 100%;
50
- text-overflow: ellipsis;
52
+ `, U = s.span`
51
53
  text-align: left;
52
54
  border-radius: var(--border-radius-m);
53
55
  padding: 0px 2px;
56
+ white-space: nowrap;
57
+ overflow: hidden;
58
+ text-overflow: ellipsis;
59
+ max-width: 100%;
54
60
 
55
61
  &.placeholder {
56
62
  color: var(--md-sys-color-outline);
57
63
  }
58
- `, Q = s.img`
64
+ `, X = s.img`
59
65
  width: 20px;
60
66
  height: 20px;
61
67
  object-fit: cover;
@@ -63,14 +69,17 @@ const P = "edit-trigger", q = s.div`
63
69
  &.avatar {
64
70
  border-radius: 50%;
65
71
  }
66
- `, U = s.div`
72
+ `, Y = s.div`
67
73
  width: 32px;
68
- height: 32px;
74
+ height: fit-content;
75
+ min-height: 32px;
76
+ aspect-ratio: 1;
69
77
  border-radius: var(--border-radius-m);
70
78
  display: flex;
71
79
  justify-content: center;
72
80
  align-items: center;
73
81
  cursor: pointer;
82
+ flex-shrink: 0;
74
83
 
75
84
  &:hover {
76
85
  background-color: var(--md-sys-color-surface-container-highest-hover);
@@ -79,79 +88,82 @@ const P = "edit-trigger", q = s.div`
79
88
  &.open {
80
89
  background-color: transparent;
81
90
  }
82
- `, X = s(o)`
91
+ `, Z = s(o)`
83
92
  transition: rotate 0.2s;
84
- `, ae = ({
85
- selectedOptions: a,
93
+ `, sa = ({
94
+ selectedOptions: e,
86
95
  placeholder: c,
87
96
  hasMultipleValues: g,
88
97
  isMultiSelect: n,
89
98
  isOpen: i,
90
99
  isItem: t,
91
100
  isSelected: d,
92
- isReadOnly: x,
101
+ isReadOnly: v,
102
+ rowHeight: m,
93
103
  className: u,
94
- pt: v,
95
- ...y
104
+ pt: y,
105
+ ...b
96
106
  }) => {
97
107
  const {
98
- icon: b = {},
99
- img: f = {},
108
+ icon: f = {},
109
+ img: w = {},
100
110
  value: N = {},
101
- expand: w = {},
102
- close: S = {}
103
- } = v || {}, { style: j, className: C, ...k } = b, { style: R, className: E, ...I } = f, { style: W, className: V, ...L } = N, { style: _, className: A, ...D } = w, { style: G, className: T, ...B } = S, m = a.every((e) => e.icon), F = !g || !m, p = !m && n && !t, h = !a.length && c;
104
- return h && (a = [
111
+ expand: S = {},
112
+ close: j = {}
113
+ } = y || {}, { style: C, className: k, ...R } = f, { style: E, className: W, ...I } = w, { style: V, className: L, ..._ } = N, { style: A, className: D, ...G } = S, { style: T, className: B, ...F } = j, p = e.every((a) => a.icon), P = !g || !p, x = !p && n && !t, h = !e.length && c;
114
+ h && (e = [
105
115
  {
106
116
  label: c,
107
117
  value: ""
108
118
  }
109
- ]), /* @__PURE__ */ r.jsxs(q, { className: l(u, { selected: d, item: t }), ...y, children: [
110
- /* @__PURE__ */ r.jsx(z, { children: a.map((e, H) => /* @__PURE__ */ r.jsxs(J, { children: [
111
- e.icon && Y(e.icon) ? /* @__PURE__ */ r.jsx(
112
- Q,
119
+ ]);
120
+ const q = m !== void 0 && m > 100;
121
+ return /* @__PURE__ */ r.jsxs(J, { className: l(u, { selected: d, item: t }), ...b, children: [
122
+ /* @__PURE__ */ r.jsx(K, { className: l({ wrap: q }), children: e.map((a, z) => /* @__PURE__ */ r.jsxs(Q, { children: [
123
+ a.icon && $(a.icon) ? /* @__PURE__ */ r.jsx(
124
+ X,
113
125
  {
114
- src: e.icon,
115
- className: l({ avatar: Z(e.icon) }, E),
116
- style: R,
117
- "data-tooltip": e.label,
126
+ src: a.icon,
127
+ className: l({ avatar: M(a.icon) }, W),
128
+ style: E,
129
+ "data-tooltip": a.label,
118
130
  ...I
119
131
  }
120
- ) : e.icon ? /* @__PURE__ */ r.jsx(
132
+ ) : a.icon ? /* @__PURE__ */ r.jsx(
121
133
  o,
122
134
  {
123
- icon: e.icon,
124
- style: { color: e.color, ...j },
125
- className: C,
126
- ...k
135
+ icon: a.icon,
136
+ style: { color: a.color, ...C },
137
+ className: k,
138
+ ...R
127
139
  }
128
140
  ) : null,
129
- (F || !e.icon) && /* @__PURE__ */ r.jsx(
130
- K,
141
+ (P || !a.icon) && /* @__PURE__ */ r.jsx(
142
+ U,
131
143
  {
132
144
  style: {
133
- color: p ? "inherit" : e.color,
134
- backgroundColor: p ? e.color || "var(--md-sys-color-surface-container)" : "transparent",
135
- ...W
145
+ color: x ? "inherit" : a.color,
146
+ backgroundColor: x ? a.color || "var(--md-sys-color-surface-container)" : "transparent",
147
+ ...V
136
148
  },
137
- className: l({ placeholder: h }, V),
138
- "aria-label": e.label,
139
- ...L,
140
- children: e.label
149
+ className: l({ placeholder: h }, L),
150
+ "aria-label": a.label,
151
+ ..._,
152
+ children: a.label
141
153
  }
142
154
  )
143
- ] }, e.value.toString() + H)) }),
144
- !t && !x && /* @__PURE__ */ r.jsx(
145
- U,
155
+ ] }, a.value.toString() + z)) }),
156
+ !t && !v && /* @__PURE__ */ r.jsx(
157
+ Y,
146
158
  {
147
- className: l("expand", P, { open: i }, A),
159
+ className: l("expand", H, { open: i }, D),
148
160
  children: /* @__PURE__ */ r.jsx(
149
- X,
161
+ Z,
150
162
  {
151
163
  icon: "expand_more",
152
- style: { rotate: i ? "180deg" : "0", ..._ },
164
+ style: { rotate: i ? "180deg" : "0", ...A },
153
165
  "aria-label": "Expand options",
154
- ...D
166
+ ...G
155
167
  }
156
168
  )
157
169
  }
@@ -160,15 +172,15 @@ const P = "edit-trigger", q = s.div`
160
172
  o,
161
173
  {
162
174
  icon: "close",
163
- style: { marginLeft: "auto", marginRight: 4, ...G },
175
+ style: { marginLeft: "auto", marginRight: 4, ...T },
164
176
  "aria-label": "Deselect item",
165
- className: l("close", T),
166
- ...B
177
+ className: l("close", B),
178
+ ...F
167
179
  }
168
180
  )
169
181
  ] });
170
- }, Y = (a = "") => a.startsWith("/") || a.startsWith("./") || a.startsWith("../") || a.startsWith("http://") || a.startsWith("https://"), Z = (a) => a.includes("avatar");
182
+ }, $ = (e = "") => e.startsWith("/") || e.startsWith("./") || e.startsWith("../") || e.startsWith("http://") || e.startsWith("https://"), M = (e) => e.includes("avatar");
171
183
  export {
172
- ae as EnumCellValue
184
+ sa as EnumCellValue
173
185
  };
174
186
  //# sourceMappingURL=EnumCellValue.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnumCellValue.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import { AttributeEnumItem } from '@shared/api'\nimport { 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: var(--base-gap-small);\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\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\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n\n overflow: hidden;\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledValue = styled.span`\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n text-overflow: ellipsis;\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\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 width: 32px;\n height: 32px;\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\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`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: AttributeEnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\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 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>\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: backgroundColor ? 'inherit' : 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","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","icon","src"],"mappings":"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"}
1
+ {"version":3,"file":"EnumCellValue.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import { AttributeEnumItem } from '@shared/api'\nimport { 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: var(--base-gap-small);\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\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n\n &.wrap {\n flex-wrap: wrap;\n }\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: var(--base-gap-small);\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 width: 32px;\n height: fit-content;\n min-height: 32px;\n aspect-ratio: 1;\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`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: AttributeEnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n rowHeight?: number\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 rowHeight,\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 // Allow wrapping when row height is above 100px\n const allowWrap = rowHeight !== undefined && rowHeight > 100\n\n return (\n <StyledWidget className={clsx(className, { selected: isSelected, item: isItem })} {...props}>\n <StyledValuesContainer className={clsx({ wrap: allowWrap })}>\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: backgroundColor ? 'inherit' : 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","rowHeight","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","allowWrap","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","icon","src"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../../_virtual/jsx-runtime.cjs.js"),d=require("../../../components/PlayableIcon/PlayableIcon.cjs.js"),x=require("react"),i=require("styled-components"),p=i.div`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../../_virtual/jsx-runtime.cjs.js"),u=require("../../../components/PlayableIcon/PlayableIcon.cjs.js"),x=require("react"),i=require("styled-components"),p=i.div`
2
2
  position: absolute;
3
3
  inset: 0;
4
4
  padding: 4px;
5
+ display: flex;
5
6
  `,h=i.div`
6
7
  position: relative;
7
8
  max-height: 100%;
8
- height: auto;
9
+ height: 100%;
9
10
  width: 100%;
10
- aspect-ratio: 1.77;
11
+ //aspect-ratio: 1.77;
11
12
 
12
- border-radius: 2px;
13
13
  overflow: hidden;
14
14
  `,m=i.img`
15
15
  position: relative;
@@ -17,8 +17,8 @@
17
17
  height: 100%;
18
18
  object-fit: contain;
19
19
  z-index: 20;
20
- `,b=i(d.PlayableIcon)`
20
+ `,g=i(u.PlayableIcon)`
21
21
  right: 5px;
22
22
  top: 5px;
23
- `,g=({projectName:e,entityType:s,entityId:n,updatedAt:o,icon:v,isPlayable:a,id:c,...l})=>{const u=e&&s&&n&&o,r=e&&`/api/projects/${e}/${s}s/${n}/thumbnail?updatedAt=${o}`;return t.jsxRuntimeExports.jsxs(p,{className:"thumbnail-widget",id:c,children:[t.jsxRuntimeExports.jsx(h,{...l,children:u&&t.jsxRuntimeExports.jsx(m,{src:r})}),a&&t.jsxRuntimeExports.jsx(b,{})]},r)},j=x.memo(g);exports.ThumbnailWidget=j;
23
+ `,b=({projectName:e,entityType:s,entityId:n,updatedAt:o,icon:v,isPlayable:a,id:l,...c})=>{const d=e&&s&&n&&o,r=e&&`/api/projects/${e}/${s}s/${n}/thumbnail?updatedAt=${o}`;return t.jsxRuntimeExports.jsxs(p,{className:"thumbnail-widget",id:l,children:[t.jsxRuntimeExports.jsx(h,{...c,children:d&&t.jsxRuntimeExports.jsx(m,{src:r})}),a&&t.jsxRuntimeExports.jsx(g,{})]},r)},j=x.memo(b);exports.ThumbnailWidget=j;
24
24
  //# sourceMappingURL=ThumbnailWidget.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbnailWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: auto;\n width: 100%;\n aspect-ratio: 1.77;\n\n border-radius: 2px;\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n z-index: 20;\n`\n\nconst StyledPlayableIcon = styled(PlayableIcon)`\n right: 5px;\n top: 5px;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n isPlayable?: boolean\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n isPlayable,\n id,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url} id={id}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n {isPlayable && <StyledPlayableIcon />}\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["Wrapper","styled","Inner","Image","StyledPlayableIcon","PlayableIcon","ThumbnailWidgetWrapper","projectName","entityType","entityId","updatedAt","icon","isPlayable","id","props","valid","url","jsxs","jsx","ThumbnailWidget","memo"],"mappings":"kQAKMA,EAAUC,EAAO;AAAA;AAAA;AAAA;AAAA,EAMjBC,EAAQD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWfE,EAAQF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQfG,EAAqBH,EAAOI,cAAY;AAAA;AAAA;AAAA,EAcxCC,EAAmD,CAAC,CACxD,YAAAC,EACA,WAAAC,EACA,SAAAC,EACA,UAAAC,EACA,KAAAC,EACA,WAAAC,EACA,GAAAC,EACA,GAAGC,CACL,IAAM,CACE,MAAAC,EAAQR,GAAeC,GAAcC,GAAYC,EACjDM,EACJT,GACA,iBAAiBA,CAAW,IAAIC,CAAU,KAAKC,CAAQ,wBAAwBC,CAAS,GAE1F,OACGO,EAAAA,kBAAAA,KAAAjB,EAAA,CAAQ,UAAU,mBAA6B,GAAAa,EAC9C,SAAA,CAACK,EAAAA,kBAAAA,IAAAhB,EAAA,CAAO,GAAGY,EAAQ,SAAAC,2BAAUZ,EAAM,CAAA,IAAKa,EAAK,CAAG,CAAA,EAC/CJ,2BAAeR,EAAmB,CAAA,CAAA,CAAA,CAAA,EAFMY,CAG3C,CAEJ,EAEaG,EAAkBC,OAAKd,CAAsB"}
1
+ {"version":3,"file":"ThumbnailWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n display: flex;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: 100%;\n width: 100%;\n //aspect-ratio: 1.77;\n\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n z-index: 20;\n`\n\nconst StyledPlayableIcon = styled(PlayableIcon)`\n right: 5px;\n top: 5px;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n isPlayable?: boolean\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n isPlayable,\n id,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url} id={id}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n {isPlayable && <StyledPlayableIcon />}\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["Wrapper","styled","Inner","Image","StyledPlayableIcon","PlayableIcon","ThumbnailWidgetWrapper","projectName","entityType","entityId","updatedAt","icon","isPlayable","id","props","valid","url","jsxs","jsx","ThumbnailWidget","memo"],"mappings":"kQAKMA,EAAUC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjBC,EAAQD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUfE,EAAQF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQfG,EAAqBH,EAAOI,cAAY;AAAA;AAAA;AAAA,EAcxCC,EAAmD,CAAC,CACxD,YAAAC,EACA,WAAAC,EACA,SAAAC,EACA,UAAAC,EACA,KAAAC,EACA,WAAAC,EACA,GAAAC,EACA,GAAGC,CACL,IAAM,CACE,MAAAC,EAAQR,GAAeC,GAAcC,GAAYC,EACjDM,EACJT,GACA,iBAAiBA,CAAW,IAAIC,CAAU,KAAKC,CAAQ,wBAAwBC,CAAS,GAE1F,OACGO,EAAAA,kBAAAA,KAAAjB,EAAA,CAAQ,UAAU,mBAA6B,GAAAa,EAC9C,SAAA,CAACK,EAAAA,kBAAAA,IAAAhB,EAAA,CAAO,GAAGY,EAAQ,SAAAC,2BAAUZ,EAAM,CAAA,IAAKa,EAAK,CAAG,CAAA,EAC/CJ,2BAAeR,EAAmB,CAAA,CAAA,CAAA,CAAA,EAFMY,CAG3C,CAEJ,EAEaG,EAAkBC,OAAKd,CAAsB"}
@@ -1,19 +1,19 @@
1
1
  import { j as i } from "../../../../../_virtual/jsx-runtime.es.js";
2
- import { PlayableIcon as c } from "../../../components/PlayableIcon/PlayableIcon.es.js";
2
+ import { PlayableIcon as d } from "../../../components/PlayableIcon/PlayableIcon.es.js";
3
3
  import { memo as m } from "react";
4
4
  import t from "styled-components";
5
5
  const h = t.div`
6
6
  position: absolute;
7
7
  inset: 0;
8
8
  padding: 4px;
9
+ display: flex;
9
10
  `, x = t.div`
10
11
  position: relative;
11
12
  max-height: 100%;
12
- height: auto;
13
+ height: 100%;
13
14
  width: 100%;
14
- aspect-ratio: 1.77;
15
+ //aspect-ratio: 1.77;
15
16
 
16
- border-radius: 2px;
17
17
  overflow: hidden;
18
18
  `, g = t.img`
19
19
  position: relative;
@@ -21,25 +21,25 @@ const h = t.div`
21
21
  height: 100%;
22
22
  object-fit: contain;
23
23
  z-index: 20;
24
- `, u = t(c)`
24
+ `, b = t(d)`
25
25
  right: 5px;
26
26
  top: 5px;
27
- `, b = ({
27
+ `, u = ({
28
28
  projectName: o,
29
29
  entityType: s,
30
30
  entityId: n,
31
- updatedAt: r,
31
+ updatedAt: e,
32
32
  icon: f,
33
33
  isPlayable: a,
34
34
  id: l,
35
35
  ...p
36
36
  }) => {
37
- const d = o && s && n && r, e = o && `/api/projects/${o}/${s}s/${n}/thumbnail?updatedAt=${r}`;
37
+ const c = o && s && n && e, r = o && `/api/projects/${o}/${s}s/${n}/thumbnail?updatedAt=${e}`;
38
38
  return /* @__PURE__ */ i.jsxs(h, { className: "thumbnail-widget", id: l, children: [
39
- /* @__PURE__ */ i.jsx(x, { ...p, children: d && /* @__PURE__ */ i.jsx(g, { src: e }) }),
40
- a && /* @__PURE__ */ i.jsx(u, {})
41
- ] }, e);
42
- }, $ = m(b);
39
+ /* @__PURE__ */ i.jsx(x, { ...p, children: c && /* @__PURE__ */ i.jsx(g, { src: r }) }),
40
+ a && /* @__PURE__ */ i.jsx(b, {})
41
+ ] }, r);
42
+ }, $ = m(u);
43
43
  export {
44
44
  $ as ThumbnailWidget
45
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbnailWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: auto;\n width: 100%;\n aspect-ratio: 1.77;\n\n border-radius: 2px;\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n z-index: 20;\n`\n\nconst StyledPlayableIcon = styled(PlayableIcon)`\n right: 5px;\n top: 5px;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n isPlayable?: boolean\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n isPlayable,\n id,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url} id={id}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n {isPlayable && <StyledPlayableIcon />}\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["Wrapper","styled","Inner","Image","StyledPlayableIcon","PlayableIcon","ThumbnailWidgetWrapper","projectName","entityType","entityId","updatedAt","icon","isPlayable","id","props","valid","url","jsxs","jsx","ThumbnailWidget","memo"],"mappings":";;;;AAKA,MAAMA,IAAUC,EAAO;AAAA;AAAA;AAAA;AAAA,GAMjBC,IAAQD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWfE,IAAQF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQfG,IAAqBH,EAAOI,CAAY;AAAA;AAAA;AAAA,GAcxCC,IAAmD,CAAC;AAAA,EACxD,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,IAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACE,QAAAC,IAAQR,KAAeC,KAAcC,KAAYC,GACjDM,IACJT,KACA,iBAAiBA,CAAW,IAAIC,CAAU,KAAKC,CAAQ,wBAAwBC,CAAS;AAE1F,SACGO,gBAAAA,EAAAA,KAAAjB,GAAA,EAAQ,WAAU,oBAA6B,IAAAa,GAC9C,UAAA;AAAA,IAACK,gBAAAA,EAAAA,IAAAhB,GAAA,EAAO,GAAGY,GAAQ,UAAAC,2BAAUZ,GAAM,EAAA,KAAKa,GAAK,EAAG,CAAA;AAAA,IAC/CJ,2BAAeR,GAAmB,CAAA,CAAA;AAAA,EAAA,EAAA,GAFMY,CAG3C;AAEJ,GAEaG,IAAkBC,EAAKd,CAAsB;"}
1
+ {"version":3,"file":"ThumbnailWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n display: flex;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: 100%;\n width: 100%;\n //aspect-ratio: 1.77;\n\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n z-index: 20;\n`\n\nconst StyledPlayableIcon = styled(PlayableIcon)`\n right: 5px;\n top: 5px;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n isPlayable?: boolean\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n isPlayable,\n id,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url} id={id}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n {isPlayable && <StyledPlayableIcon />}\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["Wrapper","styled","Inner","Image","StyledPlayableIcon","PlayableIcon","ThumbnailWidgetWrapper","projectName","entityType","entityId","updatedAt","icon","isPlayable","id","props","valid","url","jsxs","jsx","ThumbnailWidget","memo"],"mappings":";;;;AAKA,MAAMA,IAAUC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOjBC,IAAQD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUfE,IAAQF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQfG,IAAqBH,EAAOI,CAAY;AAAA;AAAA;AAAA,GAcxCC,IAAmD,CAAC;AAAA,EACxD,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,IAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACE,QAAAC,IAAQR,KAAeC,KAAcC,KAAYC,GACjDM,IACJT,KACA,iBAAiBA,CAAW,IAAIC,CAAU,KAAKC,CAAQ,wBAAwBC,CAAS;AAE1F,SACGO,gBAAAA,EAAAA,KAAAjB,GAAA,EAAQ,WAAU,oBAA6B,IAAAa,GAC9C,UAAA;AAAA,IAACK,gBAAAA,EAAAA,IAAAhB,GAAA,EAAO,GAAGY,GAAQ,UAAAC,2BAAUZ,GAAM,EAAA,KAAKa,GAAK,EAAG,CAAA;AAAA,IAC/CJ,2BAAeR,GAAmB,CAAA,CAAA;AAAA,EAAA,EAAA,GAFMY,CAG3C;AAEJ,GAEaG,IAAkBC,EAAKd,CAAsB;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function S(n){const{columns:r=[],groupBy:s,showEmptyGroups:e,sortBy:t,sortDesc:i}=n||{},c={},o={left:[],right:[]},f=[],a={};return r.forEach(d=>{var l;const{name:g,visible:m,pinned:v,width:h}=d;c[g]=m!==!1,f.push(g),v&&((l=o.left)==null||l.push(g)),h!==void 0&&(a[g]=h)}),{columnVisibility:c,columnPinning:o,columnOrder:f,columnSizing:a,sorting:t?[{id:t,desc:i||!1}]:[],groupBy:s?{id:s,desc:!1}:void 0,groupByConfig:{showEmpty:e||!1}}}function B(n,r,s){const e=[...n],t=r.filter(i=>!n.includes(i)&&s.has(i));return[...e,...t]}function C(n,r,s,e){var i,c;const t=new Set;return Object.keys(n).forEach(o=>t.add(o)),Object.keys(r).forEach(o=>t.add(o)),(i=s.left)==null||i.forEach(o=>t.add(o)),(c=s.right)==null||c.forEach(o=>t.add(o)),e==null||e.forEach(o=>t.add(o)),t}function E(n,r,s,e){var o,f;const t={name:n};r.hasOwnProperty(n)&&(t.visible=r[n]);const i=(o=s.left)==null?void 0:o.includes(n),c=(f=s.right)==null?void 0:f.includes(n);return(i||c)&&(t.pinned=!0),e[n]!==void 0&&(t.width=e[n]),t}function w(n,r){const{columnVisibility:s,columnPinning:e,columnOrder:t,columnSizing:i,sorting:c,groupBy:o,groupByConfig:f}=n,a=C(s,i,e,r||[]),u={columns:B(t,r||[],a).map(d=>E(d,s,e,i))};if(o?u.groupBy=o.id:u.groupBy=void 0,(f==null?void 0:f.showEmpty)!==void 0&&(u.showEmptyGroups=f.showEmpty),c)if(c.length>0){const d=c[0];u.sortBy=d.id,u.sortDesc=d.desc}else u.sortBy=void 0,u.sortDesc=void 0;return u}exports.convertColumnConfigToTanstackStates=S;exports.convertTanstackStatesToColumnConfig=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function S(n){const{columns:r=[],groupBy:i,showEmptyGroups:s,sortBy:t,sortDesc:e,rowHeight:c}=n||{},o={},f={left:[],right:[]},a=[],g={};return r.forEach(u=>{var p;const{name:h,visible:m,pinned:w,width:l}=u;o[h]=m!==!1,a.push(h),w&&((p=f.left)==null||p.push(h)),l!==void 0&&(g[h]=l)}),{columnVisibility:o,columnPinning:f,columnOrder:a,columnSizing:g,sorting:t?[{id:t,desc:e||!1}]:[],groupBy:i?{id:i,desc:!1}:void 0,groupByConfig:{showEmpty:s||!1},rowHeight:c??34}}function B(n,r,i){const s=[...n],t=r.filter(e=>!n.includes(e)&&i.has(e));return[...s,...t]}function C(n,r,i,s){var e,c;const t=new Set;return Object.keys(n).forEach(o=>t.add(o)),Object.keys(r).forEach(o=>t.add(o)),(e=i.left)==null||e.forEach(o=>t.add(o)),(c=i.right)==null||c.forEach(o=>t.add(o)),s==null||s.forEach(o=>t.add(o)),t}function E(n,r,i,s){var o,f;const t={name:n};r.hasOwnProperty(n)&&(t.visible=r[n]);const e=(o=i.left)==null?void 0:o.includes(n),c=(f=i.right)==null?void 0:f.includes(n);return(e||c)&&(t.pinned=!0),s[n]!==void 0&&(t.width=s[n]),t}function T(n,r){const{columnVisibility:i,columnPinning:s,columnOrder:t,columnSizing:e,sorting:c,groupBy:o,groupByConfig:f,rowHeight:a}=n,g=C(i,e,s,r||[]),d={columns:B(t,r||[],g).map(u=>E(u,i,s,e))};if(o?d.groupBy=o.id:d.groupBy=void 0,(f==null?void 0:f.showEmpty)!==void 0&&(d.showEmptyGroups=f.showEmpty),c)if(c.length>0){const u=c[0];d.sortBy=u.id,d.sortDesc=u.desc}else d.sortBy=void 0,d.sortDesc=void 0;return a!==void 0&&(d.rowHeight=a),d}exports.convertColumnConfigToTanstackStates=S;exports.convertTanstackStatesToColumnConfig=T;
2
2
  //# sourceMappingURL=columnConfigConverter.cjs.js.map