@ynput/ayon-frontend-shared 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +247 -243
- package/dist/_virtual/index.cjs22.js +1 -1
- package/dist/_virtual/index.cjs23.js +1 -1
- package/dist/_virtual/index.cjs24.js +1 -1
- package/dist/_virtual/index.cjs4.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.es22.js +3 -3
- package/dist/_virtual/index.es23.js +5 -5
- package/dist/_virtual/index.es24.js +5 -5
- package/dist/_virtual/index.es4.js +2 -5
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +446 -445
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +20 -9
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +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.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/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +85 -28
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +129 -68
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
- package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.es.js +69 -62
- package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +32 -12
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +33 -33
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +32 -31
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js +14 -2
- package/dist/shared/src/containers/ListTable/ListTableCell.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 +125 -126
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
- 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 +200 -178
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -3
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +19 -19
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +100 -97
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -8
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +20 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +86 -67
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +67 -62
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.es.js +1 -1
- package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
- package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +71 -0
- package/dist/types/api/queries/activities/getActivities.d.ts +28 -0
- package/dist/types/api/queries/entities/getEntity.d.ts +14 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +14 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +14 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +14 -0
- package/dist/types/api/queries/overview/getOverview.d.ts +14 -0
- package/dist/types/api/queries/project/getProject.d.ts +14 -0
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +14 -0
- package/dist/types/api/queries/users/getUsers.d.ts +14 -0
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +28 -0
- package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
- package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
- package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
- package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
- package/dist/types/util/buildHierarchicalTableRows.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js"),i=require("@ynput/ayon-react-components"),t=require("styled-components"),E=require("../utils/restrictedEntity.cjs.js"),l=require("../types/columnConfig.cjs.js"),R=require("../../../components/EntityIcon/EntityIcon.cjs.js"),k=require("../constants.cjs.js"),N=t(i.Button)`
|
|
2
2
|
&.expander {
|
|
3
3
|
background-color: unset;
|
|
4
4
|
padding: 2px;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
cursor: pointer;
|
|
11
|
-
`,
|
|
11
|
+
`,C=t.div`
|
|
12
12
|
position: relative;
|
|
13
13
|
display: flex;
|
|
14
14
|
align-items: center;
|
|
@@ -16,15 +16,21 @@
|
|
|
16
16
|
height: 100%;
|
|
17
17
|
width: 100%;
|
|
18
18
|
padding-right: 8px;
|
|
19
|
-
`,
|
|
19
|
+
`,S=t.div`
|
|
20
20
|
width: 100%;
|
|
21
21
|
height: 32px;
|
|
22
22
|
overflow: hidden;
|
|
23
23
|
position: relative;
|
|
24
|
-
|
|
24
|
+
|
|
25
|
+
&.stacked {
|
|
26
|
+
height: 100%;
|
|
27
|
+
}
|
|
28
|
+
`,q=t.div`
|
|
25
29
|
position: absolute;
|
|
26
30
|
inset: 0;
|
|
27
|
-
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
`,W=t.div`
|
|
28
34
|
display: flex;
|
|
29
35
|
align-items: center;
|
|
30
36
|
gap: var(--base-gap-large);
|
|
@@ -36,6 +42,11 @@
|
|
|
36
42
|
max-width: 100%;
|
|
37
43
|
height: 100%;
|
|
38
44
|
|
|
45
|
+
&.stacked {
|
|
46
|
+
height: auto;
|
|
47
|
+
max-height: 100%;
|
|
48
|
+
}
|
|
49
|
+
|
|
39
50
|
/* &:hover {
|
|
40
51
|
&,
|
|
41
52
|
.icon,
|
|
@@ -57,7 +68,7 @@
|
|
|
57
68
|
}
|
|
58
69
|
|
|
59
70
|
.path {
|
|
60
|
-
${
|
|
71
|
+
${i.theme.bodyMedium}
|
|
61
72
|
font-size: 14px;
|
|
62
73
|
margin-bottom: -4px;
|
|
63
74
|
color: var(--md-sys-color-outline);
|
|
@@ -73,7 +84,7 @@
|
|
|
73
84
|
}
|
|
74
85
|
|
|
75
86
|
.label {
|
|
76
|
-
${
|
|
87
|
+
${i.theme.bodyMedium}
|
|
77
88
|
font-size: 14px;
|
|
78
89
|
overflow: hidden;
|
|
79
90
|
white-space: nowrap;
|
|
@@ -82,11 +93,19 @@
|
|
|
82
93
|
min-width: 0;
|
|
83
94
|
}
|
|
84
95
|
|
|
96
|
+
&.stacked .label {
|
|
97
|
+
display: -webkit-box;
|
|
98
|
+
-webkit-box-orient: vertical;
|
|
99
|
+
-webkit-line-clamp: 2;
|
|
100
|
+
white-space: normal;
|
|
101
|
+
word-break: break-word;
|
|
102
|
+
}
|
|
103
|
+
|
|
85
104
|
.divider {
|
|
86
|
-
${
|
|
105
|
+
${i.theme.bodyMedium}
|
|
87
106
|
font-size: 14px;
|
|
88
107
|
color: var(--md-sys-color-outline);
|
|
89
108
|
flex-shrink: 0;
|
|
90
109
|
}
|
|
91
|
-
`,P=({id:
|
|
110
|
+
`,P=({id:c,label:d,name:p,path:n,isExpandable:x,entityType:r,subType:h,isExpanded:m,toggleExpandAll:u,toggleExpanded:g,rowHeight:y=40,columnDisplayConfig:a})=>{const v=E.isEntityRestricted(r),s=y<k.WRAP_MIN_ROW_HEIGHT,o=s?"compact":"stacked",w=l.getDisplayValue(a,"path","compact")??!0,f=l.getDisplayValue(a,"path","full")??!0,b=s?w:f;return e.jsxRuntimeExports.jsxs(C,{className:o,children:[x?e.jsxRuntimeExports.jsx(N,{onClick:j=>{j.altKey?u(c):g()},className:"expander",icon:m?"expand_more":"chevron_right"}):null,e.jsxRuntimeExports.jsx(S,{className:o,children:e.jsxRuntimeExports.jsx(q,{children:e.jsxRuntimeExports.jsxs(W,{className:o,children:[e.jsxRuntimeExports.jsx(R.EntityIcon,{entity:{entityType:r,subType:h||void 0}}),e.jsxRuntimeExports.jsxs(M,{className:o,children:[b&&!v&&e.jsxRuntimeExports.jsxs("span",{className:"path",children:[n,s&&n?"/":""]}),e.jsxRuntimeExports.jsx("span",{className:"label",children:d||p})]})]})})})]})};exports.EntityNameWidget=P;
|
|
92
111
|
//# sourceMappingURL=EntityNameWidget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityNameWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport
|
|
1
|
+
{"version":3,"file":"EntityNameWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { isEntityRestricted } from '../utils/restrictedEntity'\nimport { getDisplayValue, type DisplayConfig, getColumnDisplayConfig } from '../types/columnConfig'\nimport { EntityIcon } from '@shared/components/EntityIcon/EntityIcon'\nimport { WRAP_MIN_ROW_HEIGHT } from '../constants'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 32px;\n overflow: hidden;\n position: relative;\n\n &.stacked {\n height: 100%;\n }\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n &.stacked {\n height: auto;\n max-height: 100%;\n }\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n &.stacked .label {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n white-space: normal;\n word-break: break-word;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n isExpandable?: boolean\n entityType: string\n subType?: string | null\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n columnDisplayConfig?: DisplayConfig\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n isExpandable,\n entityType,\n subType,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n columnDisplayConfig,\n}: EntityNameWidgetProps) => {\n // Check if this is a restricted access entity\n const isRestricted = isEntityRestricted(entityType)\n\n // Determine layout based on row height\n // below the wrap threshold = single line (compact), above = stacked\n const isCompact = rowHeight < WRAP_MIN_ROW_HEIGHT\n const layout = isCompact ? 'compact' : 'stacked'\n\n // Determine if path should be shown based on display configuration\n // Check layout-specific setting first, then general setting\n const showPathCompact = getDisplayValue(columnDisplayConfig, 'path', 'compact') ?? true\n const showPathFull = getDisplayValue(columnDisplayConfig, 'path', 'full') ?? true\n const shouldShowPath = isCompact ? showPathCompact : showPathFull\n\n return (\n <StyledEntityNameWidget className={layout}>\n {isExpandable ? (\n <Expander\n onClick={(e) => {\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : null}\n <StyledContentWrapper className={layout}>\n <StyledContentAbsolute>\n <StyledContent className={layout}>\n <EntityIcon entity={{ entityType, subType: subType || undefined }} />\n <StyledTextContent className={layout}>\n {shouldShowPath && !isRestricted && (\n <span className=\"path\">\n {path}\n {isCompact && path ? '/' : ''}\n </span>\n )}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","isExpandable","entityType","subType","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","columnDisplayConfig","isRestricted","isEntityRestricted","isCompact","WRAP_MIN_ROW_HEIGHT","layout","showPathCompact","getDisplayValue","showPathFull","shouldShowPath","jsxs","jsx","e","EntityIcon"],"mappings":"8YAOMA,EAAWC,EAAOC,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYxBC,EAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUhCG,EAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW9BI,EAAwBJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/BK,EAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BvBM,EAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBhBA,EAAAA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBTC,EAAmB,CAAC,CAC/B,GAAAC,EACA,MAAAC,EACA,KAAAC,EACA,KAAAC,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,eAAAC,EACA,UAAAC,EAAY,GACZ,oBAAAC,CACF,IAA6B,CAE3B,MAAMC,EAAeC,EAAAA,mBAAmBR,CAAU,EAI5CS,EAAYJ,EAAYK,EAAAA,oBACxBC,EAASF,EAAY,UAAY,UAIjCG,EAAkBC,EAAAA,gBAAgBP,EAAqB,OAAQ,SAAS,GAAK,GAC7EQ,EAAeD,EAAAA,gBAAgBP,EAAqB,OAAQ,MAAM,GAAK,GACvES,EAAiBN,EAAYG,EAAkBE,EAErD,OACEE,EAAAA,kBAAAA,KAAC5B,EAAA,CAAuB,UAAWuB,EAChC,SAAA,CAAAZ,EACCkB,EAAAA,kBAAAA,IAAChC,EAAA,CACC,QAAUiC,GAAM,CACVA,EAAE,OAEJf,EAAgBR,CAAE,EAGlBS,EAAA,CAEJ,EACA,UAAU,WACV,KAAMF,EAAa,cAAgB,eAAA,CAAA,EAEnC,KACJe,EAAAA,kBAAAA,IAAC5B,GAAqB,UAAWsB,EAC/B,iCAACrB,EAAA,CACC,SAAA0B,EAAAA,kBAAAA,KAACzB,EAAA,CAAc,UAAWoB,EACxB,SAAA,CAAAM,wBAACE,EAAAA,YAAW,OAAQ,CAAE,WAAAnB,EAAY,QAASC,GAAW,QAAa,EACnEe,EAAAA,kBAAAA,KAACxB,EAAA,CAAkB,UAAWmB,EAC3B,SAAA,CAAAI,GAAkB,CAACR,GAClBS,EAAAA,kBAAAA,KAAC,OAAA,CAAK,UAAU,OACb,SAAA,CAAAlB,EACAW,GAAaX,EAAO,IAAM,EAAA,EAC7B,EAEFmB,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,QAAS,YAASpB,CAAA,CAAK,CAAA,CAAA,CACzC,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,EACF,CAEJ"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { j as e } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { Button as j, theme as
|
|
2
|
+
import { Button as j, theme as r } from "@ynput/ayon-react-components";
|
|
3
3
|
import t from "styled-components";
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { isEntityRestricted as N } from "../utils/restrictedEntity.es.js";
|
|
5
|
+
import { getDisplayValue as l } from "../types/columnConfig.es.js";
|
|
6
|
+
import { EntityIcon as E } from "../../../components/EntityIcon/EntityIcon.es.js";
|
|
7
|
+
import { WRAP_MIN_ROW_HEIGHT as C } from "../constants.es.js";
|
|
8
8
|
const S = t(j)`
|
|
9
9
|
&.expander {
|
|
10
10
|
background-color: unset;
|
|
@@ -15,7 +15,7 @@ const S = t(j)`
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
cursor: pointer;
|
|
18
|
-
`,
|
|
18
|
+
`, R = t.div`
|
|
19
19
|
position: relative;
|
|
20
20
|
display: flex;
|
|
21
21
|
align-items: center;
|
|
@@ -23,15 +23,21 @@ const S = t(j)`
|
|
|
23
23
|
height: 100%;
|
|
24
24
|
width: 100%;
|
|
25
25
|
padding-right: 8px;
|
|
26
|
-
`,
|
|
26
|
+
`, W = t.div`
|
|
27
27
|
width: 100%;
|
|
28
28
|
height: 32px;
|
|
29
29
|
overflow: hidden;
|
|
30
30
|
position: relative;
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
&.stacked {
|
|
33
|
+
height: 100%;
|
|
34
|
+
}
|
|
35
|
+
`, _ = t.div`
|
|
32
36
|
position: absolute;
|
|
33
37
|
inset: 0;
|
|
34
|
-
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
`, M = t.div`
|
|
35
41
|
display: flex;
|
|
36
42
|
align-items: center;
|
|
37
43
|
gap: var(--base-gap-large);
|
|
@@ -43,6 +49,11 @@ const S = t(j)`
|
|
|
43
49
|
max-width: 100%;
|
|
44
50
|
height: 100%;
|
|
45
51
|
|
|
52
|
+
&.stacked {
|
|
53
|
+
height: auto;
|
|
54
|
+
max-height: 100%;
|
|
55
|
+
}
|
|
56
|
+
|
|
46
57
|
/* &:hover {
|
|
47
58
|
&,
|
|
48
59
|
.icon,
|
|
@@ -50,7 +61,7 @@ const S = t(j)`
|
|
|
50
61
|
color: var(--md-sys-color-primary);
|
|
51
62
|
}
|
|
52
63
|
} */
|
|
53
|
-
`,
|
|
64
|
+
`, P = t.div`
|
|
54
65
|
display: flex;
|
|
55
66
|
flex-direction: column;
|
|
56
67
|
align-items: flex-start;
|
|
@@ -64,7 +75,7 @@ const S = t(j)`
|
|
|
64
75
|
}
|
|
65
76
|
|
|
66
77
|
.path {
|
|
67
|
-
${
|
|
78
|
+
${r.bodyMedium}
|
|
68
79
|
font-size: 14px;
|
|
69
80
|
margin-bottom: -4px;
|
|
70
81
|
color: var(--md-sys-color-outline);
|
|
@@ -80,7 +91,7 @@ const S = t(j)`
|
|
|
80
91
|
}
|
|
81
92
|
|
|
82
93
|
.label {
|
|
83
|
-
${
|
|
94
|
+
${r.bodyMedium}
|
|
84
95
|
font-size: 14px;
|
|
85
96
|
overflow: hidden;
|
|
86
97
|
white-space: nowrap;
|
|
@@ -89,51 +100,59 @@ const S = t(j)`
|
|
|
89
100
|
min-width: 0;
|
|
90
101
|
}
|
|
91
102
|
|
|
103
|
+
&.stacked .label {
|
|
104
|
+
display: -webkit-box;
|
|
105
|
+
-webkit-box-orient: vertical;
|
|
106
|
+
-webkit-line-clamp: 2;
|
|
107
|
+
white-space: normal;
|
|
108
|
+
word-break: break-word;
|
|
109
|
+
}
|
|
110
|
+
|
|
92
111
|
.divider {
|
|
93
|
-
${
|
|
112
|
+
${r.bodyMedium}
|
|
94
113
|
font-size: 14px;
|
|
95
114
|
color: var(--md-sys-color-outline);
|
|
96
115
|
flex-shrink: 0;
|
|
97
116
|
}
|
|
98
|
-
`,
|
|
99
|
-
id:
|
|
100
|
-
label:
|
|
101
|
-
name:
|
|
102
|
-
path:
|
|
103
|
-
isExpandable:
|
|
104
|
-
entityType:
|
|
105
|
-
subType:
|
|
106
|
-
isExpanded:
|
|
107
|
-
toggleExpandAll:
|
|
108
|
-
toggleExpanded:
|
|
109
|
-
rowHeight:
|
|
117
|
+
`, F = ({
|
|
118
|
+
id: d,
|
|
119
|
+
label: c,
|
|
120
|
+
name: p,
|
|
121
|
+
path: s,
|
|
122
|
+
isExpandable: m,
|
|
123
|
+
entityType: a,
|
|
124
|
+
subType: h,
|
|
125
|
+
isExpanded: x,
|
|
126
|
+
toggleExpandAll: f,
|
|
127
|
+
toggleExpanded: u,
|
|
128
|
+
rowHeight: v = 40,
|
|
110
129
|
columnDisplayConfig: n
|
|
111
130
|
}) => {
|
|
112
|
-
const
|
|
113
|
-
return /* @__PURE__ */ e.jsxs(
|
|
114
|
-
|
|
131
|
+
const g = N(a), i = v < C, o = i ? "compact" : "stacked", w = l(n, "path", "compact") ?? !0, y = l(n, "path", "full") ?? !0, b = i ? w : y;
|
|
132
|
+
return /* @__PURE__ */ e.jsxs(R, { className: o, children: [
|
|
133
|
+
m ? /* @__PURE__ */ e.jsx(
|
|
115
134
|
S,
|
|
116
135
|
{
|
|
117
|
-
onClick: (
|
|
118
|
-
|
|
136
|
+
onClick: (k) => {
|
|
137
|
+
k.altKey ? f(d) : u();
|
|
119
138
|
},
|
|
120
139
|
className: "expander",
|
|
121
|
-
icon:
|
|
140
|
+
icon: x ? "expand_more" : "chevron_right"
|
|
122
141
|
}
|
|
123
142
|
) : null,
|
|
124
|
-
/* @__PURE__ */ e.jsx(
|
|
125
|
-
/* @__PURE__ */ e.jsx(
|
|
126
|
-
/* @__PURE__ */ e.jsxs(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
143
|
+
/* @__PURE__ */ e.jsx(W, { className: o, children: /* @__PURE__ */ e.jsx(_, { children: /* @__PURE__ */ e.jsxs(M, { className: o, children: [
|
|
144
|
+
/* @__PURE__ */ e.jsx(E, { entity: { entityType: a, subType: h || void 0 } }),
|
|
145
|
+
/* @__PURE__ */ e.jsxs(P, { className: o, children: [
|
|
146
|
+
b && !g && /* @__PURE__ */ e.jsxs("span", { className: "path", children: [
|
|
147
|
+
s,
|
|
148
|
+
i && s ? "/" : ""
|
|
130
149
|
] }),
|
|
131
|
-
/* @__PURE__ */ e.jsx("span", { className: "label", children:
|
|
150
|
+
/* @__PURE__ */ e.jsx("span", { className: "label", children: c || p })
|
|
132
151
|
] })
|
|
133
152
|
] }) }) })
|
|
134
153
|
] });
|
|
135
154
|
};
|
|
136
155
|
export {
|
|
137
|
-
|
|
156
|
+
F as EntityNameWidget
|
|
138
157
|
};
|
|
139
158
|
//# sourceMappingURL=EntityNameWidget.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityNameWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport
|
|
1
|
+
{"version":3,"file":"EntityNameWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { isEntityRestricted } from '../utils/restrictedEntity'\nimport { getDisplayValue, type DisplayConfig, getColumnDisplayConfig } from '../types/columnConfig'\nimport { EntityIcon } from '@shared/components/EntityIcon/EntityIcon'\nimport { WRAP_MIN_ROW_HEIGHT } from '../constants'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 32px;\n overflow: hidden;\n position: relative;\n\n &.stacked {\n height: 100%;\n }\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n &.stacked {\n height: auto;\n max-height: 100%;\n }\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n &.stacked .label {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n white-space: normal;\n word-break: break-word;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n isExpandable?: boolean\n entityType: string\n subType?: string | null\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n columnDisplayConfig?: DisplayConfig\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n isExpandable,\n entityType,\n subType,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n columnDisplayConfig,\n}: EntityNameWidgetProps) => {\n // Check if this is a restricted access entity\n const isRestricted = isEntityRestricted(entityType)\n\n // Determine layout based on row height\n // below the wrap threshold = single line (compact), above = stacked\n const isCompact = rowHeight < WRAP_MIN_ROW_HEIGHT\n const layout = isCompact ? 'compact' : 'stacked'\n\n // Determine if path should be shown based on display configuration\n // Check layout-specific setting first, then general setting\n const showPathCompact = getDisplayValue(columnDisplayConfig, 'path', 'compact') ?? true\n const showPathFull = getDisplayValue(columnDisplayConfig, 'path', 'full') ?? true\n const shouldShowPath = isCompact ? showPathCompact : showPathFull\n\n return (\n <StyledEntityNameWidget className={layout}>\n {isExpandable ? (\n <Expander\n onClick={(e) => {\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : null}\n <StyledContentWrapper className={layout}>\n <StyledContentAbsolute>\n <StyledContent className={layout}>\n <EntityIcon entity={{ entityType, subType: subType || undefined }} />\n <StyledTextContent className={layout}>\n {shouldShowPath && !isRestricted && (\n <span className=\"path\">\n {path}\n {isCompact && path ? '/' : ''}\n </span>\n )}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","isExpandable","entityType","subType","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","columnDisplayConfig","isRestricted","isEntityRestricted","isCompact","WRAP_MIN_ROW_HEIGHT","layout","showPathCompact","getDisplayValue","showPathFull","shouldShowPath","jsxs","jsx","e","EntityIcon"],"mappings":";;;;;;;AAOA,MAAMA,IAAWC,EAAOC,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYxBC,IAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUhCG,IAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAW9BI,IAAwBJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAO/BK,IAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA0BvBM,IAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,GAsBTC,IAAmB,CAAC;AAAA,EAC/B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,qBAAAC;AACF,MAA6B;AAE3B,QAAMC,IAAeC,EAAmBR,CAAU,GAI5CS,IAAYJ,IAAYK,GACxBC,IAASF,IAAY,YAAY,WAIjCG,IAAkBC,EAAgBP,GAAqB,QAAQ,SAAS,KAAK,IAC7EQ,IAAeD,EAAgBP,GAAqB,QAAQ,MAAM,KAAK,IACvES,IAAiBN,IAAYG,IAAkBE;AAErD,SACEE,gBAAAA,EAAAA,KAAC5B,GAAA,EAAuB,WAAWuB,GAChC,UAAA;AAAA,IAAAZ,IACCkB,gBAAAA,EAAAA;AAAAA,MAAChC;AAAA,MAAA;AAAA,QACC,SAAS,CAACiC,MAAM;AACd,UAAIA,EAAE,SAEJf,EAAgBR,CAAE,IAGlBS,EAAA;AAAA,QAEJ;AAAA,QACA,WAAU;AAAA,QACV,MAAMF,IAAa,gBAAgB;AAAA,MAAA;AAAA,IAAA,IAEnC;AAAA,IACJe,gBAAAA,EAAAA,IAAC5B,KAAqB,WAAWsB,GAC/B,gCAACrB,GAAA,EACC,UAAA0B,gBAAAA,EAAAA,KAACzB,GAAA,EAAc,WAAWoB,GACxB,UAAA;AAAA,MAAAM,gBAAAA,MAACE,KAAW,QAAQ,EAAE,YAAAnB,GAAY,SAASC,KAAW,UAAa;AAAA,MACnEe,gBAAAA,EAAAA,KAACxB,GAAA,EAAkB,WAAWmB,GAC3B,UAAA;AAAA,QAAAI,KAAkB,CAACR,KAClBS,gBAAAA,EAAAA,KAAC,QAAA,EAAK,WAAU,QACb,UAAA;AAAA,UAAAlB;AAAA,UACAW,KAAaX,IAAO,MAAM;AAAA,QAAA,GAC7B;AAAA,QAEFmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,SAAS,eAASpB,EAAA,CAAK;AAAA,MAAA,EAAA,CACzC;AAAA,IAAA,EAAA,CACF,GACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../../../_virtual/jsx-runtime.cjs.js"),l=require("@ynput/ayon-react-components"),t=require("clsx"),s=require("styled-components"),M=require("./wrapMode.cjs.js"),z="edit-trigger",c=s.span`
|
|
2
|
+
text-align: left;
|
|
3
|
+
border-radius: var(--border-radius-m);
|
|
4
|
+
padding: 0px 2px;
|
|
5
|
+
white-space: nowrap;
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
text-overflow: ellipsis;
|
|
8
|
+
max-width: 100%;
|
|
9
|
+
|
|
10
|
+
&.placeholder {
|
|
11
|
+
color: var(--md-sys-color-outline);
|
|
12
|
+
}
|
|
13
|
+
`,J=s.div`
|
|
2
14
|
display: flex;
|
|
3
15
|
gap: 1px;
|
|
4
16
|
align-items: center;
|
|
@@ -26,19 +38,46 @@
|
|
|
26
38
|
}
|
|
27
39
|
}
|
|
28
40
|
|
|
29
|
-
/*
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
@container (min-height: 55px) {
|
|
41
|
+
/* wrapped rows sit on a fixed row lattice, so the height clip can only land between rows */
|
|
42
|
+
${M.wrapMode`
|
|
43
|
+
&.multi-select:not(.item) {
|
|
34
44
|
.values {
|
|
45
|
+
--wrap-row-height: 24px;
|
|
46
|
+
--wrap-row-gap: var(--base-gap-small);
|
|
35
47
|
flex-wrap: wrap;
|
|
36
48
|
align-items: flex-start;
|
|
49
|
+
align-content: flex-start;
|
|
50
|
+
row-gap: var(--wrap-row-gap);
|
|
37
51
|
max-height: 100%;
|
|
52
|
+
/* var() inside an unsupported round() computes to none, not to the fallback — gate it */
|
|
53
|
+
@supports (max-height: round(down, 100px, 24px)) {
|
|
54
|
+
max-height: calc(
|
|
55
|
+
round(
|
|
56
|
+
down,
|
|
57
|
+
100cqh + var(--wrap-row-gap),
|
|
58
|
+
calc(var(--wrap-row-height) + var(--wrap-row-gap))
|
|
59
|
+
) - var(--wrap-row-gap)
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.values > * {
|
|
65
|
+
min-height: var(--wrap-row-height);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
${c} {
|
|
69
|
+
white-space: normal;
|
|
70
|
+
word-break: break-word;
|
|
71
|
+
line-height: var(--wrap-row-height);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.has-img ${c} {
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
text-overflow: ellipsis;
|
|
38
77
|
}
|
|
39
78
|
}
|
|
40
|
-
}
|
|
41
|
-
`,
|
|
79
|
+
`}
|
|
80
|
+
`,K=s.div`
|
|
42
81
|
flex: 1;
|
|
43
82
|
display: flex;
|
|
44
83
|
gap: var(--base-gap-small);
|
|
@@ -48,34 +87,23 @@
|
|
|
48
87
|
border-radius: var(--border-radius-m);
|
|
49
88
|
padding: 0px 2px;
|
|
50
89
|
flex-wrap: nowrap;
|
|
51
|
-
`,
|
|
90
|
+
`,Q=s.div`
|
|
52
91
|
display: flex;
|
|
53
92
|
gap: 2px;
|
|
54
93
|
align-items: center;
|
|
55
94
|
|
|
56
95
|
max-width: 100%;
|
|
57
96
|
min-width: 20px;
|
|
58
|
-
`,
|
|
59
|
-
text-align: left;
|
|
60
|
-
border-radius: var(--border-radius-m);
|
|
61
|
-
padding: 0px 2px;
|
|
62
|
-
white-space: nowrap;
|
|
63
|
-
overflow: hidden;
|
|
64
|
-
text-overflow: ellipsis;
|
|
65
|
-
max-width: 100%;
|
|
66
|
-
|
|
67
|
-
&.placeholder {
|
|
68
|
-
color: var(--md-sys-color-outline);
|
|
69
|
-
}
|
|
70
|
-
`,Q=r.img`
|
|
97
|
+
`,U=s.img`
|
|
71
98
|
width: 20px;
|
|
72
99
|
height: 20px;
|
|
73
100
|
object-fit: cover;
|
|
101
|
+
flex-shrink: 0;
|
|
74
102
|
|
|
75
103
|
&.avatar {
|
|
76
104
|
border-radius: 50%;
|
|
77
105
|
}
|
|
78
|
-
`,
|
|
106
|
+
`,X=s.div`
|
|
79
107
|
border-radius: var(--border-radius-m);
|
|
80
108
|
display: flex;
|
|
81
109
|
justify-content: center;
|
|
@@ -90,8 +118,8 @@
|
|
|
90
118
|
&.open {
|
|
91
119
|
background-color: transparent;
|
|
92
120
|
}
|
|
93
|
-
`,
|
|
121
|
+
`,Y=s(l.Icon)`
|
|
94
122
|
transition: rotate 0.2s;
|
|
95
123
|
padding: 2px;
|
|
96
|
-
`,
|
|
124
|
+
`,Z=({selectedOptions:a,placeholder:i,hasMultipleValues:g,isMultiSelect:n,isOpen:d,isItem:o,isSelected:p,isReadOnly:v,iconOnlyColor:w=!1,className:y,pt:b,...f})=>{const{icon:j={},img:R={},value:N={},expand:E={},close:S={}}=b||{},{style:k,className:C,...I}=j,{style:W,className:q,...V}=R,{style:T,className:L,..._}=N,{style:$,className:A,...D}=E,{style:G,className:P,...B}=S,m=a.every(e=>e.icon),F=!g||!m,x=!m&&n&&!o,u=!a.length&&i;return u&&(a=[{label:i,value:""}]),r.jsxRuntimeExports.jsxs(J,{className:t(y,{selected:p,item:o,"multi-select":n}),...f,children:[r.jsxRuntimeExports.jsx(K,{className:"values",children:a.map((e,H)=>r.jsxRuntimeExports.jsxs(Q,{className:t({"has-img":h(e.icon)}),children:[e.icon&&h(e.icon)?r.jsxRuntimeExports.jsx(U,{src:e.icon,className:t({avatar:O(e.icon)},q),style:W,"data-tooltip":e.label,...V}):e.icon?r.jsxRuntimeExports.jsx(l.Icon,{icon:e.icon,style:{color:e.color,...k},className:C,...I}):null,(F||!e.icon)&&r.jsxRuntimeExports.jsx(c,{style:{color:x&&e.color?l.getTextColor(e.color):w&&e.icon?void 0:e.color,backgroundColor:x?e.color||"var(--md-sys-color-surface-container)":"transparent",...T},className:t({placeholder:u},L),"aria-label":e.label,..._,children:e.label})]},e.value.toString()+H))}),!o&&!v&&r.jsxRuntimeExports.jsx(X,{className:t("expand",z,{open:d},A),children:r.jsxRuntimeExports.jsx(Y,{icon:"expand_more",style:{rotate:d?"180deg":"0",...$},"aria-label":"Expand options",...D})}),o&&p&&n&&r.jsxRuntimeExports.jsx(l.Icon,{icon:"close",style:{marginLeft:"auto",marginRight:4,...G},"aria-label":"Deselect item",className:t("close",P),...B})]})},h=(a="")=>a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.startsWith("http://")||a.startsWith("https://"),O=a=>a.includes("avatar");exports.EnumCellValue=Z;
|
|
97
125
|
//# sourceMappingURL=EnumCellValue.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumCellValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import type { EnumItem } from '@shared/api'\nimport { getTextColor, Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\n// Inline the edit trigger class to avoid runtime import and circular dependency with CellWidget\nconst EDIT_TRIGGER_CLASS = 'edit-trigger'\n\nconst StyledWidget = styled.div`\n display: flex;\n gap: 1px;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: visible;\n border-radius: var(--border-radius-m);\n padding: 0 1px;\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\n overflow: hidden;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-hover);\n }\n }\n\n &.selected {\n background-color: var(--md-sys-color-primary-container);\n\n &:hover {\n background-color: var(--md-sys-color-primary-container-hover);\n }\n }\n\n /* when value container is higher than 55px, wrap the contents */\n &:not(.item) {\n container-type: size;\n\n @container (min-height: 55px) {\n .values {\n flex-wrap: wrap;\n align-items: flex-start;\n max-height: 100%;\n }\n }\n }\n`\n\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n align-content: flex-start;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledValue = styled.span`\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n\n &.placeholder {\n color: var(--md-sys-color-outline);\n }\n`\n\nconst StyledImg = styled.img`\n width: 20px;\n height: 20px;\n object-fit: cover;\n\n &.avatar {\n border-radius: 50%;\n }\n`\n\nconst StyledExpandButton = styled.div`\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n padding: 2px;\n`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: EnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n iconOnlyColor?: boolean // When true, only the icon gets colored, not the text label\n pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n iconOnlyColor = false,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\n // Check if all options have icons\n const allOptionsHaveIcon = selectedOptions.every((option) => option.icon)\n\n // Determine if we should show labels based on the requirements\n const showLabels = !hasMultipleValues || !allOptionsHaveIcon\n // Show the colors be backgrounds instead of the text\n const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem\n\n const isPlaceholder = !selectedOptions.length && placeholder\n if (isPlaceholder) {\n selectedOptions = [\n {\n label: placeholder,\n value: '',\n },\n ]\n }\n\n return (\n <StyledWidget className={clsx(className, { selected: isSelected, item: isItem })} {...props}>\n <StyledValuesContainer className=\"values\">\n {selectedOptions.map((option, i) => (\n <StyledValueWrapper key={option.value.toString() + i}>\n {option.icon && checkForImgSrc(option.icon) ? (\n <StyledImg\n src={option.icon}\n className={clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName)}\n style={imgStyle}\n data-tooltip={option.label}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\n ) : null}\n\n {(showLabels || !option.icon) && (\n <StyledValue\n style={{\n color:\n backgroundColor && option.color\n ? getTextColor(option.color)\n : iconOnlyColor && option.icon\n ? undefined\n : option.color,\n backgroundColor: backgroundColor\n ? option.color || 'var(--md-sys-color-surface-container)'\n : 'transparent',\n ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton\n className={clsx('expand', EDIT_TRIGGER_CLASS, { open: isOpen }, expandClassName)}\n >\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\nconst checkForImgSrc = (icon: string | undefined = ''): boolean => {\n return (\n icon.startsWith('/') ||\n icon.startsWith('./') ||\n icon.startsWith('../') ||\n icon.startsWith('http://') ||\n icon.startsWith('https://')\n )\n}\n\nconst checkAvatarImg = (src: string): boolean => src.includes('avatar')\n"],"names":["EDIT_TRIGGER_CLASS","StyledWidget","styled","StyledValuesContainer","StyledValueWrapper","StyledValue","StyledImg","StyledExpandButton","StyledExpandIcon","Icon","EnumCellValue","selectedOptions","placeholder","hasMultipleValues","isMultiSelect","isOpen","isItem","isSelected","isReadOnly","iconOnlyColor","className","pt","props","ptIcon","ptImg","ptValue","ptExpand","ptClose","iconStyle","iconClassName","iconRest","imgStyle","imgClassName","imgRest","valueStyle","valueClassName","valueRest","expandStyle","expandClassName","expandRest","closeStyle","closeClassName","closeRest","allOptionsHaveIcon","option","showLabels","backgroundColor","isPlaceholder","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","getTextColor","icon","src"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnumCellValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import type { EnumItem } from '@shared/api'\nimport { getTextColor, Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\nimport { wrapMode } from './wrapMode'\n// Inline the edit trigger class to avoid runtime import and circular dependency with CellWidget\nconst EDIT_TRIGGER_CLASS = 'edit-trigger'\n\nconst StyledValue = styled.span`\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n\n &.placeholder {\n color: var(--md-sys-color-outline);\n }\n`\n\nconst StyledWidget = styled.div`\n display: flex;\n gap: 1px;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: visible;\n border-radius: var(--border-radius-m);\n padding: 0 1px;\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\n overflow: hidden;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-hover);\n }\n }\n\n &.selected {\n background-color: var(--md-sys-color-primary-container);\n\n &:hover {\n background-color: var(--md-sys-color-primary-container-hover);\n }\n }\n\n /* wrapped rows sit on a fixed row lattice, so the height clip can only land between rows */\n ${wrapMode`\n &.multi-select:not(.item) {\n .values {\n --wrap-row-height: 24px;\n --wrap-row-gap: var(--base-gap-small);\n flex-wrap: wrap;\n align-items: flex-start;\n align-content: flex-start;\n row-gap: var(--wrap-row-gap);\n max-height: 100%;\n /* var() inside an unsupported round() computes to none, not to the fallback — gate it */\n @supports (max-height: round(down, 100px, 24px)) {\n max-height: calc(\n round(\n down,\n 100cqh + var(--wrap-row-gap),\n calc(var(--wrap-row-height) + var(--wrap-row-gap))\n ) - var(--wrap-row-gap)\n );\n }\n }\n\n .values > * {\n min-height: var(--wrap-row-height);\n }\n\n ${StyledValue} {\n white-space: normal;\n word-break: break-word;\n line-height: var(--wrap-row-height);\n }\n\n .has-img ${StyledValue} {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n `}\n`\n\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n align-content: flex-start;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledImg = styled.img`\n width: 20px;\n height: 20px;\n object-fit: cover;\n flex-shrink: 0;\n\n &.avatar {\n border-radius: 50%;\n }\n`\n\nconst StyledExpandButton = styled.div`\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n padding: 2px;\n`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: EnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n iconOnlyColor?: boolean // When true, only the icon gets colored, not the text label\n pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n iconOnlyColor = false,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\n // Check if all options have icons\n const allOptionsHaveIcon = selectedOptions.every((option) => option.icon)\n\n // Determine if we should show labels based on the requirements\n const showLabels = !hasMultipleValues || !allOptionsHaveIcon\n // Show the colors be backgrounds instead of the text\n const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem\n\n const isPlaceholder = !selectedOptions.length && placeholder\n if (isPlaceholder) {\n selectedOptions = [\n {\n label: placeholder,\n value: '',\n },\n ]\n }\n\n return (\n <StyledWidget\n className={clsx(className, {\n selected: isSelected,\n item: isItem,\n 'multi-select': isMultiSelect,\n })}\n {...props}\n >\n <StyledValuesContainer className=\"values\">\n {selectedOptions.map((option, i) => (\n <StyledValueWrapper\n key={option.value.toString() + i}\n className={clsx({ 'has-img': checkForImgSrc(option.icon) })}\n >\n {option.icon && checkForImgSrc(option.icon) ? (\n <StyledImg\n src={option.icon}\n className={clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName)}\n style={imgStyle}\n data-tooltip={option.label}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\n ) : null}\n\n {(showLabels || !option.icon) && (\n <StyledValue\n style={{\n color:\n backgroundColor && option.color\n ? getTextColor(option.color)\n : iconOnlyColor && option.icon\n ? undefined\n : option.color,\n backgroundColor: backgroundColor\n ? option.color || 'var(--md-sys-color-surface-container)'\n : 'transparent',\n ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton\n className={clsx('expand', EDIT_TRIGGER_CLASS, { open: isOpen }, expandClassName)}\n >\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\nconst checkForImgSrc = (icon: string | undefined = ''): boolean => {\n return (\n icon.startsWith('/') ||\n icon.startsWith('./') ||\n icon.startsWith('../') ||\n icon.startsWith('http://') ||\n icon.startsWith('https://')\n )\n}\n\nconst checkAvatarImg = (src: string): boolean => src.includes('avatar')\n"],"names":["EDIT_TRIGGER_CLASS","StyledValue","styled","StyledWidget","wrapMode","StyledValuesContainer","StyledValueWrapper","StyledImg","StyledExpandButton","StyledExpandIcon","Icon","EnumCellValue","selectedOptions","placeholder","hasMultipleValues","isMultiSelect","isOpen","isItem","isSelected","isReadOnly","iconOnlyColor","className","pt","props","ptIcon","ptImg","ptValue","ptExpand","ptClose","iconStyle","iconClassName","iconRest","imgStyle","imgClassName","imgRest","valueStyle","valueClassName","valueRest","expandStyle","expandClassName","expandRest","closeStyle","closeClassName","closeRest","allOptionsHaveIcon","option","showLabels","backgroundColor","isPlaceholder","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","getTextColor","icon","src"],"mappings":"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"}
|