@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.
- package/dist/_virtual/index.cjs10.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.cjs9.js +1 -1
- package/dist/_virtual/index.es10.js +5 -5
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -5
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/_virtual/index.es8.js +3 -3
- package/dist/_virtual/index.es9.js +5 -5
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js.map +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/access.es.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.cjs.js +1 -1
- package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.es.js +9 -6
- package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
- package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/folders.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
- package/dist/shared/src/api/generated/links.cjs.js +1 -1
- package/dist/shared/src/api/generated/links.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/links.es.js +13 -5
- package/dist/shared/src/api/generated/links.es.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
- package/dist/shared/src/api/generated/operations.cjs.js +1 -1
- package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/operations.es.js +16 -0
- package/dist/shared/src/api/generated/operations.es.js.map +1 -1
- package/dist/shared/src/api/generated/products.cjs.js +1 -1
- package/dist/shared/src/api/generated/products.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/products.es.js +6 -3
- package/dist/shared/src/api/generated/products.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js +19 -0
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/system.es.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
- package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/users.es.js.map +1 -1
- package/dist/shared/src/api/generated/versions.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/versions.es.js.map +1 -1
- package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/views.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +15 -10
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js +60 -0
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js +332 -0
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js.map +1 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +4 -4
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +37 -33
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js +3 -5
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js +4 -6
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js.map +1 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +1 -2
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +0 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +555 -537
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +4 -5
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +92 -91
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +126 -108
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js +9 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +49 -48
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +38 -9
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +74 -39
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +24 -15
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +71 -59
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +6 -6
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -12
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.es.js +35 -33
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/types/api/generated/access.d.ts +6 -0
- package/dist/types/api/generated/authentication.d.ts +6 -0
- package/dist/types/api/generated/entityLists.d.ts +7 -7
- package/dist/types/api/generated/folders.d.ts +2 -2
- package/dist/types/api/generated/graphql.d.ts +3 -1
- package/dist/types/api/generated/graphqlLinks.d.ts +21 -15
- package/dist/types/api/generated/links.d.ts +4 -0
- package/dist/types/api/generated/onboarding.d.ts +3 -0
- package/dist/types/api/generated/operations.d.ts +22 -1
- package/dist/types/api/generated/products.d.ts +23 -0
- package/dist/types/api/generated/projects.d.ts +63 -0
- package/dist/types/api/generated/representations.d.ts +1 -0
- package/dist/types/api/generated/system.d.ts +9 -2
- package/dist/types/api/generated/tasks.d.ts +1 -0
- package/dist/types/api/generated/users.d.ts +1 -1
- package/dist/types/api/generated/versions.d.ts +1 -0
- package/dist/types/api/generated/views.d.ts +50 -9
- package/dist/types/api/queries/authentication/getAuthentication.d.ts +1 -0
- package/dist/types/api/queries/overview/updateOverview.d.ts +2 -0
- package/dist/types/api/queries/project/getProject.d.ts +4 -0
- package/dist/types/components/ProjectTableSettings/RowHeightSettings.d.ts +3 -0
- package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +4 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useDynamicRowHeight.d.ts +11 -0
- package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -1
- 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"),
|
|
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:
|
|
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
|
-
`,
|
|
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
|
-
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
68
|
+
`,X=r.div`
|
|
63
69
|
width: 32px;
|
|
64
|
-
height:
|
|
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
|
-
`,
|
|
87
|
+
`,Y=r(o.Icon)`
|
|
79
88
|
transition: rotate 0.2s;
|
|
80
|
-
`,
|
|
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
|
|
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:
|
|
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
|
-
`,
|
|
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
|
-
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
72
|
+
`, Y = s.div`
|
|
67
73
|
width: 32px;
|
|
68
|
-
height:
|
|
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
|
-
`,
|
|
91
|
+
`, Z = s(o)`
|
|
83
92
|
transition: rotate 0.2s;
|
|
84
|
-
`,
|
|
85
|
-
selectedOptions:
|
|
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:
|
|
101
|
+
isReadOnly: v,
|
|
102
|
+
rowHeight: m,
|
|
93
103
|
className: u,
|
|
94
|
-
pt:
|
|
95
|
-
...
|
|
104
|
+
pt: y,
|
|
105
|
+
...b
|
|
96
106
|
}) => {
|
|
97
107
|
const {
|
|
98
|
-
icon:
|
|
99
|
-
img:
|
|
108
|
+
icon: f = {},
|
|
109
|
+
img: w = {},
|
|
100
110
|
value: N = {},
|
|
101
|
-
expand:
|
|
102
|
-
close:
|
|
103
|
-
} =
|
|
104
|
-
|
|
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
|
-
])
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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:
|
|
115
|
-
className: l({ avatar:
|
|
116
|
-
style:
|
|
117
|
-
"data-tooltip":
|
|
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
|
-
) :
|
|
132
|
+
) : a.icon ? /* @__PURE__ */ r.jsx(
|
|
121
133
|
o,
|
|
122
134
|
{
|
|
123
|
-
icon:
|
|
124
|
-
style: { color:
|
|
125
|
-
className:
|
|
126
|
-
...
|
|
135
|
+
icon: a.icon,
|
|
136
|
+
style: { color: a.color, ...C },
|
|
137
|
+
className: k,
|
|
138
|
+
...R
|
|
127
139
|
}
|
|
128
140
|
) : null,
|
|
129
|
-
(
|
|
130
|
-
|
|
141
|
+
(P || !a.icon) && /* @__PURE__ */ r.jsx(
|
|
142
|
+
U,
|
|
131
143
|
{
|
|
132
144
|
style: {
|
|
133
|
-
color:
|
|
134
|
-
backgroundColor:
|
|
135
|
-
...
|
|
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 },
|
|
138
|
-
"aria-label":
|
|
139
|
-
...
|
|
140
|
-
children:
|
|
149
|
+
className: l({ placeholder: h }, L),
|
|
150
|
+
"aria-label": a.label,
|
|
151
|
+
..._,
|
|
152
|
+
children: a.label
|
|
141
153
|
}
|
|
142
154
|
)
|
|
143
|
-
] },
|
|
144
|
-
!t && !
|
|
145
|
-
|
|
155
|
+
] }, a.value.toString() + z)) }),
|
|
156
|
+
!t && !v && /* @__PURE__ */ r.jsx(
|
|
157
|
+
Y,
|
|
146
158
|
{
|
|
147
|
-
className: l("expand",
|
|
159
|
+
className: l("expand", H, { open: i }, D),
|
|
148
160
|
children: /* @__PURE__ */ r.jsx(
|
|
149
|
-
|
|
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
|
-
...
|
|
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, ...
|
|
175
|
+
style: { marginLeft: "auto", marginRight: 4, ...T },
|
|
164
176
|
"aria-label": "Deselect item",
|
|
165
|
-
className: l("close",
|
|
166
|
-
...
|
|
177
|
+
className: l("close", B),
|
|
178
|
+
...F
|
|
167
179
|
}
|
|
168
180
|
)
|
|
169
181
|
] });
|
|
170
|
-
},
|
|
182
|
+
}, $ = (e = "") => e.startsWith("/") || e.startsWith("./") || e.startsWith("../") || e.startsWith("http://") || e.startsWith("https://"), M = (e) => e.includes("avatar");
|
|
171
183
|
export {
|
|
172
|
-
|
|
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"),
|
|
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:
|
|
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
|
-
`,
|
|
20
|
+
`,g=i(u.PlayableIcon)`
|
|
21
21
|
right: 5px;
|
|
22
22
|
top: 5px;
|
|
23
|
-
`,
|
|
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:
|
|
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
|
|
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:
|
|
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
|
-
`,
|
|
24
|
+
`, b = t(d)`
|
|
25
25
|
right: 5px;
|
|
26
26
|
top: 5px;
|
|
27
|
-
`,
|
|
27
|
+
`, u = ({
|
|
28
28
|
projectName: o,
|
|
29
29
|
entityType: s,
|
|
30
30
|
entityId: n,
|
|
31
|
-
updatedAt:
|
|
31
|
+
updatedAt: e,
|
|
32
32
|
icon: f,
|
|
33
33
|
isPlayable: a,
|
|
34
34
|
id: l,
|
|
35
35
|
...p
|
|
36
36
|
}) => {
|
|
37
|
-
const
|
|
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:
|
|
40
|
-
a && /* @__PURE__ */ i.jsx(
|
|
41
|
-
] },
|
|
42
|
-
}, $ = m(
|
|
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:
|
|
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:
|
|
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
|