@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,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("../../../../../_virtual/jsx-runtime.cjs.js");require("react-toastify");require("lodash");require("uuid");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../util/pubsub.cjs.js");require("clsx");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("react");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const b=require("@ynput/ayon-react-components");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("react-router-dom");require("../context/CellEditingContext.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");require("../utils/columnIds.cjs.js");const m=require("../buildTreeTableColumns.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");const S=require("../context/ProjectTableContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("../context/ClipboardContext.cjs.js");require("@tanstack/react-table");const g=require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../../context/DeleteEntitiesContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../context/ProjectDataContextInstance.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");const C=(u=[])=>{const{sorting:o,updateSorting:n}=g.useColumnSettingsContext(),{attribFields:s,scopes:q}=S.useProjectTableContext(),i=[...m.getSortableColumnOptions(q,u),...s.filter(e=>e.scope?.some(r=>q.includes(r))).map(e=>({id:`attrib_${e.name}`,label:e.data.title||e.name}))],l=e=>i.find(r=>r.id===e)?.label??u.find(r=>r.value===e)?.label??e,t=o.map(e=>({id:e.id,label:l(e.id),sortOrder:!e.desc})),a=new Set(i.map(e=>e.id)),c=[...i,...t.filter(e=>!a.has(e.id)).map(e=>({id:e.id,label:e.label}))],d=e=>{n(e.map(r=>({id:r.id,desc:!r.sortOrder})))};return{id:"sort-by",component:p.jsxRuntimeExports.jsx(b.SettingsSortingDropdown,{title:"Sort by",icon:"sort",value:t,options:c,onChange:d,multiSelect:!1})}};exports.useSortBySettings=C;
|
|
2
2
|
//# sourceMappingURL=useSortBySettings.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSortBySettings.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useSortBySettings.tsx"],"sourcesContent":["import { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getSortableColumnOptions } from '../buildTreeTableColumns'\nimport { SortCardType, SettingsSortingDropdown } from '@ynput/ayon-react-components'\n\ntype SortColumn = { value: string; label: string }\n\nexport const useSortBySettings = (columns: SortColumn[] = []) => {\n const { sorting, updateSorting } = useColumnSettingsContext()\n const { attribFields, scopes } = useProjectTableContext()\n\n const options = [\n ...getSortableColumnOptions(scopes, columns),\n ...attribFields\n .filter((field) => field.scope?.some((s) => scopes.includes(s)))\n .map((field) => ({\n id: `attrib_${field.name}`,\n label: field.data.title || field.name,\n })),\n ]\n\n const labelFor = (id: string) =>\n options.find((o) => o.id === id)?.label ?? columns.find((c) => c.value === id)?.label ?? id\n\n // Mirror the live sorting state so the panel stays in sync with the header\n // sort icons, even for columns that aren't predefined sort options.\n const value: SortCardType[] = sorting.map((s) => ({\n id: s.id,\n label: labelFor(s.id),\n sortOrder: !s.desc,\n }))\n\n // The dropdown can only render a selected value whose option exists, so add\n // any active-but-unlisted sort column to the option list.\n const dropdownOptions = [\n ...options,\n ...value
|
|
1
|
+
{"version":3,"file":"useSortBySettings.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useSortBySettings.tsx"],"sourcesContent":["import { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getSortableColumnOptions } from '../buildTreeTableColumns'\nimport { SortCardType, SettingsSortingDropdown } from '@ynput/ayon-react-components'\n\ntype SortColumn = { value: string; label: string }\n\nexport const useSortBySettings = (columns: SortColumn[] = []) => {\n const { sorting, updateSorting } = useColumnSettingsContext()\n const { attribFields, scopes } = useProjectTableContext()\n\n const options = [\n ...getSortableColumnOptions(scopes, columns),\n ...attribFields\n .filter((field) => field.scope?.some((s) => scopes.includes(s)))\n .map((field) => ({\n id: `attrib_${field.name}`,\n label: field.data.title || field.name,\n })),\n ]\n\n const labelFor = (id: string) =>\n options.find((o) => o.id === id)?.label ?? columns.find((c) => c.value === id)?.label ?? id\n\n // Mirror the live sorting state so the panel stays in sync with the header\n // sort icons, even for columns that aren't predefined sort options.\n const value: SortCardType[] = sorting.map((s) => ({\n id: s.id,\n label: labelFor(s.id),\n sortOrder: !s.desc,\n }))\n\n // The dropdown can only render a selected value whose option exists, so add\n // any active-but-unlisted sort column to the option list.\n const optionIds = new Set(options.map((option) => option.id))\n const dropdownOptions = [\n ...options,\n ...value.filter((v) => !optionIds.has(v.id)).map((v) => ({ id: v.id, label: v.label })),\n ]\n\n const handleChange = (v: SortCardType[]) => {\n updateSorting(v.map((item) => ({ id: item.id, desc: !item.sortOrder })))\n }\n\n return {\n id: 'sort-by',\n component: (\n <SettingsSortingDropdown\n title=\"Sort by\"\n icon=\"sort\"\n value={value}\n options={dropdownOptions}\n onChange={handleChange}\n multiSelect={false}\n />\n ),\n }\n}\n"],"names":["useSortBySettings","columns","sorting","updateSorting","useColumnSettingsContext","attribFields","scopes","useProjectTableContext","options","getSortableColumnOptions","field","s","labelFor","id","o","c","value","optionIds","option","dropdownOptions","v","handleChange","item","jsx","SettingsSortingDropdown"],"mappings":"m/NAMO,MAAMA,EAAoB,CAACC,EAAwB,KAAO,CAC/D,KAAM,CAAE,QAAAC,EAAS,cAAAC,CAAA,EAAkBC,2BAAA,EAC7B,CAAE,aAAAC,EAAc,OAAAC,CAAA,EAAWC,yBAAA,EAE3BC,EAAU,CACd,GAAGC,EAAAA,yBAAyBH,EAAQL,CAAO,EAC3C,GAAGI,EACA,OAAQK,GAAUA,EAAM,OAAO,KAAMC,GAAML,EAAO,SAASK,CAAC,CAAC,CAAC,EAC9D,IAAKD,IAAW,CACf,GAAI,UAAUA,EAAM,IAAI,GACxB,MAAOA,EAAM,KAAK,OAASA,EAAM,IAAA,EACjC,CAAA,EAGAE,EAAYC,GAChBL,EAAQ,KAAMM,GAAMA,EAAE,KAAOD,CAAE,GAAG,OAASZ,EAAQ,KAAMc,GAAMA,EAAE,QAAUF,CAAE,GAAG,OAASA,EAIrFG,EAAwBd,EAAQ,IAAKS,IAAO,CAChD,GAAIA,EAAE,GACN,MAAOC,EAASD,EAAE,EAAE,EACpB,UAAW,CAACA,EAAE,IAAA,EACd,EAIIM,EAAY,IAAI,IAAIT,EAAQ,IAAKU,GAAWA,EAAO,EAAE,CAAC,EACtDC,EAAkB,CACtB,GAAGX,EACH,GAAGQ,EAAM,OAAQI,GAAM,CAACH,EAAU,IAAIG,EAAE,EAAE,CAAC,EAAE,IAAKA,IAAO,CAAE,GAAIA,EAAE,GAAI,MAAOA,EAAE,OAAQ,CAAA,EAGlFC,EAAgBD,GAAsB,CAC1CjB,EAAciB,EAAE,IAAKE,IAAU,CAAE,GAAIA,EAAK,GAAI,KAAM,CAACA,EAAK,SAAA,EAAY,CAAC,CACzE,EAEA,MAAO,CACL,GAAI,UACJ,UACEC,EAAAA,kBAAAA,IAACC,EAAAA,wBAAA,CACC,MAAM,UACN,KAAK,OACL,MAAAR,EACA,QAASG,EACT,SAAUE,EACV,YAAa,EAAA,CAAA,CACf,CAGN"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as
|
|
1
|
+
import { j as b } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
2
|
import "react-toastify";
|
|
3
3
|
import "lodash";
|
|
4
4
|
import "uuid";
|
|
@@ -9,7 +9,7 @@ import "../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.es.js";
|
|
|
9
9
|
import "../../../components/DoneCheckbox/DoneCheckbox.es.js";
|
|
10
10
|
import "react";
|
|
11
11
|
import "../../Feed/components/ActivityReference/ActivityReference.styled.es.js";
|
|
12
|
-
import { SettingsSortingDropdown as
|
|
12
|
+
import { SettingsSortingDropdown as u } from "@ynput/ayon-react-components";
|
|
13
13
|
import "../../Feed/components/ActivityComment/ActivityComment.styled.es.js";
|
|
14
14
|
import "react-router-dom";
|
|
15
15
|
import "../context/CellEditingContext.es.js";
|
|
@@ -17,7 +17,7 @@ import "../../../components/SearchFilter/filterDates.es.js";
|
|
|
17
17
|
import "date-fns";
|
|
18
18
|
import "short-uuid";
|
|
19
19
|
import "../utils/columnIds.es.js";
|
|
20
|
-
import { getSortableColumnOptions as
|
|
20
|
+
import { getSortableColumnOptions as S } from "../buildTreeTableColumns.es.js";
|
|
21
21
|
import "../context/SelectionCellsContext.es.js";
|
|
22
22
|
import "../context/ProjectTableQueriesContext.es.js";
|
|
23
23
|
import { useProjectTableContext as g } from "../context/ProjectTableContext.es.js";
|
|
@@ -120,7 +120,7 @@ import "../../../api/queries/watchers/getWatchers.es.js";
|
|
|
120
120
|
import "../../../api/queries/uris/getUris.es.js";
|
|
121
121
|
import "../context/ClipboardContext.es.js";
|
|
122
122
|
import "@tanstack/react-table";
|
|
123
|
-
import { useColumnSettingsContext as
|
|
123
|
+
import { useColumnSettingsContext as f } from "../context/ColumnSettingsContext.es.js";
|
|
124
124
|
import "../context/SelectedRowsContext.es.js";
|
|
125
125
|
import "../context/DetailsPanelEntityContext.es.js";
|
|
126
126
|
/* empty css */
|
|
@@ -129,39 +129,39 @@ import "../../../context/DeleteEntitiesContext.es.js";
|
|
|
129
129
|
import "../../../context/GlobalContext.es.js";
|
|
130
130
|
import "../context/ProjectDataContextInstance.es.js";
|
|
131
131
|
import "../../../context/ProjectFoldersContextInstance.es.js";
|
|
132
|
-
const
|
|
133
|
-
const { sorting: e, updateSorting: n } =
|
|
134
|
-
...
|
|
135
|
-
...s.filter((t) => t.scope?.some((o) =>
|
|
132
|
+
const Jo = (r = []) => {
|
|
133
|
+
const { sorting: e, updateSorting: n } = f(), { attribFields: s, scopes: p } = g(), i = [
|
|
134
|
+
...S(p, r),
|
|
135
|
+
...s.filter((t) => t.scope?.some((o) => p.includes(o))).map((t) => ({
|
|
136
136
|
id: `attrib_${t.name}`,
|
|
137
137
|
label: t.data.title || t.name
|
|
138
138
|
}))
|
|
139
|
-
], a = (t) =>
|
|
139
|
+
], a = (t) => i.find((o) => o.id === t)?.label ?? r.find((o) => o.value === t)?.label ?? t, m = e.map((t) => ({
|
|
140
140
|
id: t.id,
|
|
141
141
|
label: a(t.id),
|
|
142
142
|
sortOrder: !t.desc
|
|
143
|
-
})), l = [
|
|
144
|
-
...
|
|
145
|
-
...
|
|
146
|
-
],
|
|
143
|
+
})), l = new Set(i.map((t) => t.id)), d = [
|
|
144
|
+
...i,
|
|
145
|
+
...m.filter((t) => !l.has(t.id)).map((t) => ({ id: t.id, label: t.label }))
|
|
146
|
+
], c = (t) => {
|
|
147
147
|
n(t.map((o) => ({ id: o.id, desc: !o.sortOrder })));
|
|
148
148
|
};
|
|
149
149
|
return {
|
|
150
150
|
id: "sort-by",
|
|
151
|
-
component: /* @__PURE__ */
|
|
152
|
-
|
|
151
|
+
component: /* @__PURE__ */ b.jsx(
|
|
152
|
+
u,
|
|
153
153
|
{
|
|
154
154
|
title: "Sort by",
|
|
155
155
|
icon: "sort",
|
|
156
|
-
value:
|
|
157
|
-
options:
|
|
158
|
-
onChange:
|
|
156
|
+
value: m,
|
|
157
|
+
options: d,
|
|
158
|
+
onChange: c,
|
|
159
159
|
multiSelect: !1
|
|
160
160
|
}
|
|
161
161
|
)
|
|
162
162
|
};
|
|
163
163
|
};
|
|
164
164
|
export {
|
|
165
|
-
|
|
165
|
+
Jo as useSortBySettings
|
|
166
166
|
};
|
|
167
167
|
//# sourceMappingURL=useSortBySettings.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSortBySettings.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useSortBySettings.tsx"],"sourcesContent":["import { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getSortableColumnOptions } from '../buildTreeTableColumns'\nimport { SortCardType, SettingsSortingDropdown } from '@ynput/ayon-react-components'\n\ntype SortColumn = { value: string; label: string }\n\nexport const useSortBySettings = (columns: SortColumn[] = []) => {\n const { sorting, updateSorting } = useColumnSettingsContext()\n const { attribFields, scopes } = useProjectTableContext()\n\n const options = [\n ...getSortableColumnOptions(scopes, columns),\n ...attribFields\n .filter((field) => field.scope?.some((s) => scopes.includes(s)))\n .map((field) => ({\n id: `attrib_${field.name}`,\n label: field.data.title || field.name,\n })),\n ]\n\n const labelFor = (id: string) =>\n options.find((o) => o.id === id)?.label ?? columns.find((c) => c.value === id)?.label ?? id\n\n // Mirror the live sorting state so the panel stays in sync with the header\n // sort icons, even for columns that aren't predefined sort options.\n const value: SortCardType[] = sorting.map((s) => ({\n id: s.id,\n label: labelFor(s.id),\n sortOrder: !s.desc,\n }))\n\n // The dropdown can only render a selected value whose option exists, so add\n // any active-but-unlisted sort column to the option list.\n const dropdownOptions = [\n ...options,\n ...value
|
|
1
|
+
{"version":3,"file":"useSortBySettings.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useSortBySettings.tsx"],"sourcesContent":["import { useColumnSettingsContext, useProjectTableContext } from '../context'\nimport { getSortableColumnOptions } from '../buildTreeTableColumns'\nimport { SortCardType, SettingsSortingDropdown } from '@ynput/ayon-react-components'\n\ntype SortColumn = { value: string; label: string }\n\nexport const useSortBySettings = (columns: SortColumn[] = []) => {\n const { sorting, updateSorting } = useColumnSettingsContext()\n const { attribFields, scopes } = useProjectTableContext()\n\n const options = [\n ...getSortableColumnOptions(scopes, columns),\n ...attribFields\n .filter((field) => field.scope?.some((s) => scopes.includes(s)))\n .map((field) => ({\n id: `attrib_${field.name}`,\n label: field.data.title || field.name,\n })),\n ]\n\n const labelFor = (id: string) =>\n options.find((o) => o.id === id)?.label ?? columns.find((c) => c.value === id)?.label ?? id\n\n // Mirror the live sorting state so the panel stays in sync with the header\n // sort icons, even for columns that aren't predefined sort options.\n const value: SortCardType[] = sorting.map((s) => ({\n id: s.id,\n label: labelFor(s.id),\n sortOrder: !s.desc,\n }))\n\n // The dropdown can only render a selected value whose option exists, so add\n // any active-but-unlisted sort column to the option list.\n const optionIds = new Set(options.map((option) => option.id))\n const dropdownOptions = [\n ...options,\n ...value.filter((v) => !optionIds.has(v.id)).map((v) => ({ id: v.id, label: v.label })),\n ]\n\n const handleChange = (v: SortCardType[]) => {\n updateSorting(v.map((item) => ({ id: item.id, desc: !item.sortOrder })))\n }\n\n return {\n id: 'sort-by',\n component: (\n <SettingsSortingDropdown\n title=\"Sort by\"\n icon=\"sort\"\n value={value}\n options={dropdownOptions}\n onChange={handleChange}\n multiSelect={false}\n />\n ),\n }\n}\n"],"names":["useSortBySettings","columns","sorting","updateSorting","useColumnSettingsContext","attribFields","scopes","useProjectTableContext","options","getSortableColumnOptions","field","s","labelFor","id","c","value","optionIds","option","dropdownOptions","v","handleChange","item","jsx","SettingsSortingDropdown"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAMA,KAAoB,CAACC,IAAwB,OAAO;AAC/D,QAAM,EAAE,SAAAC,GAAS,eAAAC,EAAA,IAAkBC,EAAA,GAC7B,EAAE,cAAAC,GAAc,QAAAC,EAAA,IAAWC,EAAA,GAE3BC,IAAU;AAAA,IACd,GAAGC,EAAyBH,GAAQL,CAAO;AAAA,IAC3C,GAAGI,EACA,OAAO,CAACK,MAAUA,EAAM,OAAO,KAAK,CAACC,MAAML,EAAO,SAASK,CAAC,CAAC,CAAC,EAC9D,IAAI,CAACD,OAAW;AAAA,MACf,IAAI,UAAUA,EAAM,IAAI;AAAA,MACxB,OAAOA,EAAM,KAAK,SAASA,EAAM;AAAA,IAAA,EACjC;AAAA,EAAA,GAGAE,IAAW,CAACC,MAChBL,EAAQ,KAAK,CAAC,MAAM,EAAE,OAAOK,CAAE,GAAG,SAASZ,EAAQ,KAAK,CAACa,MAAMA,EAAE,UAAUD,CAAE,GAAG,SAASA,GAIrFE,IAAwBb,EAAQ,IAAI,CAACS,OAAO;AAAA,IAChD,IAAIA,EAAE;AAAA,IACN,OAAOC,EAASD,EAAE,EAAE;AAAA,IACpB,WAAW,CAACA,EAAE;AAAA,EAAA,EACd,GAIIK,IAAY,IAAI,IAAIR,EAAQ,IAAI,CAACS,MAAWA,EAAO,EAAE,CAAC,GACtDC,IAAkB;AAAA,IACtB,GAAGV;AAAA,IACH,GAAGO,EAAM,OAAO,CAACI,MAAM,CAACH,EAAU,IAAIG,EAAE,EAAE,CAAC,EAAE,IAAI,CAACA,OAAO,EAAE,IAAIA,EAAE,IAAI,OAAOA,EAAE,QAAQ;AAAA,EAAA,GAGlFC,IAAe,CAACD,MAAsB;AAC1C,IAAAhB,EAAcgB,EAAE,IAAI,CAACE,OAAU,EAAE,IAAIA,EAAK,IAAI,MAAM,CAACA,EAAK,UAAA,EAAY,CAAC;AAAA,EACzE;AAEA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,WACEC,gBAAAA,EAAAA;AAAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,MAAK;AAAA,QACL,OAAAR;AAAA,QACA,SAASG;AAAA,QACT,UAAUE;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EACf;AAGN;"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../../../_virtual/jsx-runtime.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../../../_virtual/jsx-runtime.cjs.js"),k=require("react"),H=require("styled-components"),J=require("./BooleanWidget.cjs.js"),K=require("./CollapsedWidget.cjs.js"),Q=require("./DateWidget.cjs.js"),X=require("./EnumWidget.cjs.js"),S=require("./TextWidget.cjs.js"),L=require("./LinksWidget.cjs.js"),Z=require("./SubtasksWidget.cjs.js"),ee=require("./CommentsWidget.cjs.js"),te=require("../context/CellEditingContext.cjs.js"),A=require("../utils/cellUtils.cjs.js"),se=require("clsx"),ie=require("../context/SelectionCellsContext.cjs.js"),ne=require("../../../context/ProjectContext.cjs.js"),re=require("./EnumCellValue.cjs.js"),oe=require("./NameWidget.cjs.js"),le=require("../constants.cjs.js");require("@ynput/ayon-react-components");require("../../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");require("../utils/columnIds.cjs.js");require("../buildTreeTableColumns.cjs.js");const ce=require("../utils/restrictedEntity.cjs.js"),ue=H.div`
|
|
2
2
|
position: absolute;
|
|
3
3
|
inset: 0;
|
|
4
|
-
padding:
|
|
4
|
+
padding: ${le.CELL_PADDING_Y}px 8px;
|
|
5
5
|
display: flex;
|
|
6
6
|
align-items: center;
|
|
7
7
|
overflow: hidden;
|
|
8
|
+
container-type: size;
|
|
9
|
+
container-name: cell;
|
|
8
10
|
|
|
9
11
|
&:has(.markdown),
|
|
10
12
|
&:has(.comments-list) {
|
|
@@ -29,5 +31,5 @@
|
|
|
29
31
|
&.entity-widget {
|
|
30
32
|
cursor: pointer;
|
|
31
33
|
}
|
|
32
|
-
`,
|
|
34
|
+
`,de="edit-trigger",ae=({rowId:p,columnId:c,value:s,valueData:m,attributeData:f,options:x=[],isCollapsed:j,isInherited:g,isPlaceholder:D,isReadOnly:u,enableCustomValues:M,isLinksLoading:N,folderId:V,midnightExclusiveFields:_,tooltip:G,onChange:q,entityType:I,pt:a,...W})=>{const R=k.useRef(null),i=f?.type,{projectName:b}=ne.useProjectContext(),{isEditing:P,setEditingCellId:r,getEditingDraft:w,setEditingDraft:y}=te.useCellEditing(),{isCellFocused:v,gridMap:T,selectCell:B,focusCell:F}=ie.useSelectionCellsContext(),o=A.getCellId(p,c),h=_?.includes(c)??!1,E=P(o),O=v(o),Y=()=>{const e=T.rowIdToIndex.get(p);if(e===void 0){r(null);return}const l=T.indexToRowId.get(e+1);if(l){const t=A.getCellId(l,c);B(t,!1,!1),F(t),r(t)}else r(null)},z=(e,l)=>{if(u){r(null);return}l==="Enter"?(Y(),q?.(e,l)):l==="Click"&&e!=s?(r(null),q?.(e,l)):r(null)},U=()=>{r(null);const e=R.current?.closest("td");e&&e.focus()},$=k.useMemo(()=>{const e={onChange:z,onCancelEdit:U,isEditing:E,isReadOnly:u},l=["string","integer","float"];switch(!0){case j:{const d=(i?.includes("list")?x.find(C=>Array.isArray(s)?s.includes(C.value):s===C.value):void 0)?.color;return n.jsxRuntimeExports.jsx(K.CollapsedWidget,{color:d})}case i==="name":return n.jsxRuntimeExports.jsx(oe.NameWidget,{value:s,valueData:m,cellId:o,entityType:I||"",...e});case i==="links":{const t=m,d=L.isLinkEditable(t?.direction||"out",t?.link.linkType||"",t?.entityType||"");return u=!d,n.jsxRuntimeExports.jsx(L.LinksWidget,{value:t,cellId:o,projectName:b,disabled:!d,folderId:V,isLoading:N,...e})}case i==="subtasks":{const t=m;return n.jsxRuntimeExports.jsx(Z.SubtasksWidget,{value:t,cellId:o,projectName:b,disabled:u,...e})}case i==="comments":return n.jsxRuntimeExports.jsx(ee.CommentsWidget,{value:m,...e});case!!x.length:{const t=Array.isArray(s)?s:[s];if(u){const d=x.filter(C=>t.includes(C.value));return t.length&&!d.length?n.jsxRuntimeExports.jsx(S.TextWidget,{value:t.join(", "),isInherited:g,columnId:c,cellId:o,isMarkdown:f?.widget==="markdown",onRequestEdit:r,getDraftValue:w,setDraftValue:y,...e,...a?.text}):n.jsxRuntimeExports.jsx(re.EnumCellValue,{selectedOptions:d,isReadOnly:!0,hasMultipleValues:t.length>1,isMultiSelect:i?.includes("list"),...a?.enum?.pt?.template})}return n.jsxRuntimeExports.jsx(X.EnumWidget,{value:t,options:x,type:i,onOpen:()=>r(o),enableCustomValues:M,...e,...a?.enum})}case l.includes(i):return n.jsxRuntimeExports.jsx(S.TextWidget,{value:s,isInherited:g,columnId:c,cellId:o,isMarkdown:f?.widget==="markdown"||c==="attrib_description"||c==="description",type:i,onRequestEdit:r,getDraftValue:w,setDraftValue:y,...e,...a?.text});case i==="datetime":return n.jsxRuntimeExports.jsx(Q.DateWidget,{value:s||void 0,isInherited:g,isMidnightExclusive:h,...e,...a?.date});case i==="boolean":return n.jsxRuntimeExports.jsx(J.BooleanWidget,{value:s,...e,...a?.boolean});case D:return null;default:return null}},[o,s,i,E,x,j,h]);return n.jsxRuntimeExports.jsx(ue,{...W,className:se(W.className,{inherited:g&&!E,[ce.READ_ONLY]:u,editable:!u}),ref:R,id:o,"data-tooltip":G||(g&&!E&&O?"Inherited":void 0),"data-tooltip-delay":200,children:$})};exports.CellWidget=ae;exports.EDIT_TRIGGER_CLASS=de;
|
|
33
35
|
//# sourceMappingURL=CellWidget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { FC, useMemo, useRef } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\nimport { isLinkEditable, LinksWidget, LinkWidgetData } from './LinksWidget'\nimport { SubtasksWidget, SubtasksWidgetData } from './SubtasksWidget'\nimport { CommentsWidget } from './CommentsWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { EnumCellValue } from './EnumCellValue'\nimport { NameWidget } from '@shared/containers/ProjectTreeTable/widgets/NameWidget'\nimport type { NameWidgetData } from '@shared/components/RenameForm/RenameForm'\nimport { READ_ONLY } from '../utils'\nimport type { AttributeData, EnumItem, EntityComment } from '@shared/api'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n overflow: hidden;\n\n &:has(.markdown),\n &:has(.comments-list) {\n align-items: flex-start;\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n\n &.entity-widget {\n cursor: pointer;\n }\n`\n\n// use this class to trigger the editing mode on a single click\nexport const EDIT_TRIGGER_CLASS = 'edit-trigger'\n\ntype WidgetAttributeData = {\n type: AttributeData['type'] | 'links' | 'name' | 'subtasks' | 'comments'\n widget?: AttributeData['widget']\n}\n\nexport type CellValue = string | number | boolean\nexport type CellValueData = Record<string, any>\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n valueData?: CellValueData | CellValueData[] // extra data for the value\n attributeData?: WidgetAttributeData\n options?: EnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n isLinksLoading?: boolean\n folderId?: string | null\n midnightExclusiveFields?: string[]\n tooltip?: string\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n entityType?: string\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n isReadOnly?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nexport const CellWidget: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n valueData,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n isLinksLoading,\n folderId,\n midnightExclusiveFields,\n tooltip,\n onChange,\n entityType,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { projectName } = useProjectContext()\n const { isEditing, setEditingCellId, getEditingDraft, setEditingDraft } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n const isMidnightExclusive = midnightExclusiveFields?.includes(columnId) ?? false\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) {\n setEditingCellId(null)\n return\n }\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n if (isReadOnly) {\n setEditingCellId(null)\n return\n }\n if (key === 'Enter') {\n // Move to next row first (sets new editing cell), then save value.\n // This prevents the dialog from blinking between rows.\n moveToNextRow()\n onChange?.(newValue, key)\n } else if (key === 'Click' && newValue != value) {\n setEditingCellId(null)\n onChange?.(newValue, key)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n // ensure the browser focus moves back to the parent <td>\n const td = ref.current?.closest('td') as HTMLElement | null\n if (td) td.focus()\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n isReadOnly: isReadOnly,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n case type === 'name': {\n return (\n <NameWidget\n value={value as CellValue}\n valueData={valueData as NameWidgetData}\n cellId={cellId}\n entityType={entityType || ''}\n {...sharedProps}\n />\n )\n }\n\n case type === 'links': {\n const linksValue = valueData as LinkWidgetData | undefined\n\n const isEditable = isLinkEditable(\n linksValue?.direction || 'out',\n linksValue?.link.linkType || '',\n linksValue?.entityType || '',\n )\n\n // overwrite readonly state if the cell is currently being edited\n isReadOnly = !isEditable\n return (\n <LinksWidget\n value={linksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={!isEditable}\n folderId={folderId}\n isLoading={isLinksLoading}\n {...sharedProps}\n />\n )\n }\n\n case type === 'subtasks': {\n const subtasksValue = valueData as SubtasksWidgetData | undefined\n\n return (\n <SubtasksWidget\n value={subtasksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={isReadOnly}\n {...sharedProps}\n />\n )\n }\n\n case type === 'comments': {\n return <CommentsWidget value={valueData as EntityComment[] | undefined} {...sharedProps} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n const selectedOptions = options.filter((option) => enumValue.includes(option.value))\n\n if (enumValue.length && !selectedOptions.length) {\n // value has something but it is not in options, show a placeholder\n return (\n <TextWidget\n value={enumValue.join(', ')}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={attributeData?.widget === 'markdown'}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n }\n\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n isReadOnly\n hasMultipleValues={enumValue.length > 1}\n isMultiSelect={type?.includes('list')}\n {...pt?.enum?.pt?.template}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={\n attributeData?.widget === 'markdown' ||\n // description SHOULD be default markdown, but lets have this here just in case\n columnId === 'attrib_description' ||\n columnId === 'description'\n }\n type={type as TextWidgetType}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n isMidnightExclusive={isMidnightExclusive}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed, isMidnightExclusive])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, {\n inherited: isInherited && !isCurrentCellEditing,\n [READ_ONLY]: isReadOnly,\n editable: !isReadOnly,\n })}\n ref={ref}\n id={cellId}\n data-tooltip={\n tooltip ||\n (isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined)\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n"],"names":["Cell","styled","EDIT_TRIGGER_CLASS","CellWidget","rowId","columnId","value","valueData","attributeData","options","isCollapsed","isInherited","isPlaceholder","isReadOnly","enableCustomValues","isLinksLoading","folderId","midnightExclusiveFields","tooltip","onChange","entityType","pt","props","ref","useRef","type","projectName","useProjectContext","isEditing","setEditingCellId","getEditingDraft","setEditingDraft","useCellEditing","isCellFocused","gridMap","selectCell","focusCell","useSelectionCellsContext","cellId","getCellId","isMidnightExclusive","isCurrentCellEditing","isCurrentCellFocused","moveToNextRow","rowIndex","newRowId","newCellId","handleOnChange","newValue","key","handleCancel","td","widget","useMemo","sharedProps","textTypes","color","option","jsx","CollapsedWidget","NameWidget","linksValue","isEditable","isLinkEditable","LinksWidget","subtasksValue","SubtasksWidget","CommentsWidget","enumValue","selectedOptions","TextWidget","EnumCellValue","EnumWidget","DateWidget","BooleanWidget","clsx","READ_ONLY"],"mappings":"+gCA2BMA,GAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkCPC,GAAqB,eA6CrBC,GAAkC,CAAC,CAC9C,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,UAAAC,EACA,cAAAC,EACA,QAAAC,EAAU,CAAA,EACV,YAAAC,EACA,YAAAC,EACA,cAAAC,EACA,WAAAC,EACA,mBAAAC,EACA,eAAAC,EACA,SAAAC,EACA,wBAAAC,EACA,QAAAC,EACA,SAAAC,EACA,WAAAC,EACA,GAAAC,EACA,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAMC,EAAAA,OAAuB,IAAI,EACjCC,EAAOjB,GAAe,KAEtB,CAAE,YAAAkB,CAAA,EAAgBC,qBAAA,EAClB,CAAE,UAAAC,EAAW,iBAAAC,EAAkB,gBAAAC,EAAiB,gBAAAC,CAAA,EAAoBC,GAAAA,eAAA,EACpE,CAAE,cAAAC,EAAe,QAAAC,EAAS,WAAAC,EAAY,UAAAC,CAAA,EAAcC,GAAAA,yBAAA,EACpDC,EAASC,EAAAA,UAAUnC,EAAOC,CAAQ,EAClCmC,EAAsBvB,GAAyB,SAASZ,CAAQ,GAAK,GAErEoC,EAAuBb,EAAUU,CAAM,EACvCI,EAAuBT,EAAcK,CAAM,EAE3CK,EAAgB,IAAM,CAC1B,MAAMC,EAAWV,EAAQ,aAAa,IAAI9B,CAAK,EAC/C,GAAIwC,IAAa,OAAW,CAC1Bf,EAAiB,IAAI,EACrB,MACF,CACA,MAAMgB,EAAWX,EAAQ,aAAa,IAAIU,EAAW,CAAC,EACtD,GAAIC,EAAU,CACZ,MAAMC,EAAYP,EAAAA,UAAUM,EAAUxC,CAAQ,EAC9C8B,EAAWW,EAAW,GAAO,EAAK,EAClCV,EAAUU,CAAS,EACnBjB,EAAiBiB,CAAS,CAC5B,MACEjB,EAAiB,IAAI,CAEzB,EAEMkB,EAA8C,CAACC,EAAUC,IAAQ,CACrE,GAAIpC,EAAY,CACdgB,EAAiB,IAAI,EACrB,MACF,CACIoB,IAAQ,SAGVN,EAAA,EACAxB,IAAW6B,EAAUC,CAAG,GACfA,IAAQ,SAAWD,GAAY1C,GACxCuB,EAAiB,IAAI,EACrBV,IAAW6B,EAAUC,CAAG,GAExBpB,EAAiB,IAAI,CAEzB,EAEMqB,EAAe,IAAM,CACzBrB,EAAiB,IAAI,EAErB,MAAMsB,EAAK5B,EAAI,SAAS,QAAQ,IAAI,EAChC4B,KAAO,MAAA,CACb,EAEMC,EAASC,EAAAA,QAAQ,IAAM,CAE3B,MAAMC,EAA+B,CACnC,SAAUP,EACV,aAAcG,EACd,UAAWT,EACX,WAAA5B,CAAA,EAGI0C,EAA8B,CAAC,SAAU,UAAW,OAAO,EAGjE,OAAQ,GAAA,CAEN,KAAK7C,EAAa,CAOhB,MAAM8C,GALsB/B,GAAM,SAAS,MAAM,EAC7ChB,EAAQ,KAAMgD,GACZ,MAAM,QAAQnD,CAAK,EAAIA,EAAM,SAASmD,EAAO,KAAK,EAAInD,IAAUmD,EAAO,KAAA,EAEzE,SAC+B,MACnC,OAAOC,wBAACC,EAAAA,iBAAgB,MAAAH,EAAc,CACxC,CACA,KAAK/B,IAAS,OACZ,OACEiC,EAAAA,kBAAAA,IAACE,GAAAA,WAAA,CACC,MAAAtD,EACA,UAAAC,EACA,OAAA+B,EACA,WAAYlB,GAAc,GACzB,GAAGkC,CAAA,CAAA,EAKV,KAAK7B,IAAS,QAAS,CACrB,MAAMoC,EAAatD,EAEbuD,EAAaC,EAAAA,eACjBF,GAAY,WAAa,MACzBA,GAAY,KAAK,UAAY,GAC7BA,GAAY,YAAc,EAAA,EAI5B,OAAAhD,EAAa,CAACiD,EAEZJ,EAAAA,kBAAAA,IAACM,EAAAA,YAAA,CACC,MAAOH,EACP,OAAAvB,EACA,YAAAZ,EACA,SAAU,CAACoC,EACX,SAAA9C,EACA,UAAWD,EACV,GAAGuC,CAAA,CAAA,CAGV,CAEA,KAAK7B,IAAS,WAAY,CACxB,MAAMwC,EAAgB1D,EAEtB,OACEmD,EAAAA,kBAAAA,IAACQ,EAAAA,eAAA,CACC,MAAOD,EACP,OAAA3B,EACA,YAAAZ,EACA,SAAUb,EACT,GAAGyC,CAAA,CAAA,CAGV,CAEA,KAAK7B,IAAS,WACZ,OAAOiC,EAAAA,kBAAAA,IAACS,GAAAA,eAAA,CAAe,MAAO5D,EAA2C,GAAG+C,EAAa,EAG3F,IAAK,CAAC,CAAC7C,EAAQ,OAAQ,CACrB,MAAM2D,EAAY,MAAM,QAAQ9D,CAAK,EAAIA,EAAQ,CAACA,CAAK,EACvD,GAAIO,EAAY,CACd,MAAMwD,EAAkB5D,EAAQ,OAAQgD,GAAWW,EAAU,SAASX,EAAO,KAAK,CAAC,EAEnF,OAAIW,EAAU,QAAU,CAACC,EAAgB,OAGrCX,EAAAA,kBAAAA,IAACY,EAAAA,WAAA,CACC,MAAOF,EAAU,KAAK,IAAI,EAC1B,YAAAzD,EACA,SAAAN,EACA,OAAAiC,EACA,WAAY9B,GAAe,SAAW,WACtC,cAAeqB,EACf,cAAeC,EACf,cAAeC,EACd,GAAGuB,EACH,GAAGjC,GAAI,IAAA,CAAA,EAMZqC,EAAAA,kBAAAA,IAACa,GAAAA,cAAA,CACC,gBAAAF,EACA,WAAU,GACV,kBAAmBD,EAAU,OAAS,EACtC,cAAe3C,GAAM,SAAS,MAAM,EACnC,GAAGJ,GAAI,MAAM,IAAI,QAAA,CAAA,CAGxB,CACA,OACEqC,EAAAA,kBAAAA,IAACc,EAAAA,WAAA,CACC,MAAOJ,EACP,QAAA3D,EACA,KAAAgB,EACA,OAAQ,IAAMI,EAAiBS,CAAM,EACrC,mBAAAxB,EACC,GAAGwC,EACH,GAAGjC,GAAI,IAAA,CAAA,CAGd,CAEA,KAAKkC,EAAU,SAAS9B,CAAsB,EAC5C,OACEiC,EAAAA,kBAAAA,IAACY,EAAAA,WAAA,CACC,MAAAhE,EACA,YAAAK,EACA,SAAAN,EACA,OAAAiC,EACA,WACE9B,GAAe,SAAW,YAE1BH,IAAa,sBACbA,IAAa,cAEf,KAAAoB,EACA,cAAeI,EACf,cAAeC,EACf,cAAeC,EACd,GAAGuB,EACH,GAAGjC,GAAI,IAAA,CAAA,EAId,KAAKI,IAAS,WACZ,OACEiC,EAAAA,kBAAAA,IAACe,EAAAA,WAAA,CACC,MAAOnE,GAA4B,OACnC,YAAAK,EACA,oBAAA6B,EACC,GAAGc,EACH,GAAGjC,GAAI,IAAA,CAAA,EAId,KAAKI,IAAS,UACZ,+BAAQiD,EAAAA,cAAA,CAAc,MAAApE,EAA0B,GAAGgD,EAAc,GAAGjC,GAAI,QAAS,EAEnF,KAAKT,EACH,OAAO,KAET,QASE,OAAO,IAAA,CAEb,EAAG,CAAC0B,EAAQhC,EAAOmB,EAAMgB,EAAsBhC,EAASC,EAAa8B,CAAmB,CAAC,EAEzF,OACEkB,EAAAA,kBAAAA,IAAC1D,GAAA,CACE,GAAGsB,EACJ,UAAWqD,GAAKrD,EAAM,UAAW,CAC/B,UAAWX,GAAe,CAAC8B,EAC3B,CAACmC,GAAAA,SAAS,EAAG/D,EACb,SAAU,CAACA,CAAA,CACZ,EACD,IAAAU,EACA,GAAIe,EACJ,eACEpB,IACCP,GAAe,CAAC8B,GAAwBC,EAAuB,YAAc,QAEhF,qBAAoB,IAEnB,SAAAU,CAAA,CAAA,CAGP"}
|
|
1
|
+
{"version":3,"file":"CellWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { FC, useMemo, useRef } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\nimport { isLinkEditable, LinksWidget, LinkWidgetData } from './LinksWidget'\nimport { SubtasksWidget, SubtasksWidgetData } from './SubtasksWidget'\nimport { CommentsWidget } from './CommentsWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { EnumCellValue } from './EnumCellValue'\nimport { NameWidget } from '@shared/containers/ProjectTreeTable/widgets/NameWidget'\nimport type { NameWidgetData } from '@shared/components/RenameForm/RenameForm'\nimport { READ_ONLY } from '../utils'\nimport type { AttributeData, EnumItem, EntityComment } from '@shared/api'\nimport { CELL_PADDING_Y } from '../constants'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: ${CELL_PADDING_Y}px 8px;\n display: flex;\n align-items: center;\n overflow: hidden;\n container-type: size;\n container-name: cell;\n\n &:has(.markdown),\n &:has(.comments-list) {\n align-items: flex-start;\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n\n &.entity-widget {\n cursor: pointer;\n }\n`\n\n// use this class to trigger the editing mode on a single click\nexport const EDIT_TRIGGER_CLASS = 'edit-trigger'\n\ntype WidgetAttributeData = {\n type: AttributeData['type'] | 'links' | 'name' | 'subtasks' | 'comments'\n widget?: AttributeData['widget']\n}\n\nexport type CellValue = string | number | boolean\nexport type CellValueData = Record<string, any>\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n valueData?: CellValueData | CellValueData[] // extra data for the value\n attributeData?: WidgetAttributeData\n options?: EnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n isLinksLoading?: boolean\n folderId?: string | null\n midnightExclusiveFields?: string[]\n tooltip?: string\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n entityType?: string\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n isReadOnly?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nexport const CellWidget: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n valueData,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n isLinksLoading,\n folderId,\n midnightExclusiveFields,\n tooltip,\n onChange,\n entityType,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { projectName } = useProjectContext()\n const { isEditing, setEditingCellId, getEditingDraft, setEditingDraft } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n const isMidnightExclusive = midnightExclusiveFields?.includes(columnId) ?? false\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) {\n setEditingCellId(null)\n return\n }\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n if (isReadOnly) {\n setEditingCellId(null)\n return\n }\n if (key === 'Enter') {\n // Move to next row first (sets new editing cell), then save value.\n // This prevents the dialog from blinking between rows.\n moveToNextRow()\n onChange?.(newValue, key)\n } else if (key === 'Click' && newValue != value) {\n setEditingCellId(null)\n onChange?.(newValue, key)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n // ensure the browser focus moves back to the parent <td>\n const td = ref.current?.closest('td') as HTMLElement | null\n if (td) td.focus()\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n isReadOnly: isReadOnly,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n case type === 'name': {\n return (\n <NameWidget\n value={value as CellValue}\n valueData={valueData as NameWidgetData}\n cellId={cellId}\n entityType={entityType || ''}\n {...sharedProps}\n />\n )\n }\n\n case type === 'links': {\n const linksValue = valueData as LinkWidgetData | undefined\n\n const isEditable = isLinkEditable(\n linksValue?.direction || 'out',\n linksValue?.link.linkType || '',\n linksValue?.entityType || '',\n )\n\n // overwrite readonly state if the cell is currently being edited\n isReadOnly = !isEditable\n return (\n <LinksWidget\n value={linksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={!isEditable}\n folderId={folderId}\n isLoading={isLinksLoading}\n {...sharedProps}\n />\n )\n }\n\n case type === 'subtasks': {\n const subtasksValue = valueData as SubtasksWidgetData | undefined\n\n return (\n <SubtasksWidget\n value={subtasksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={isReadOnly}\n {...sharedProps}\n />\n )\n }\n\n case type === 'comments': {\n return <CommentsWidget value={valueData as EntityComment[] | undefined} {...sharedProps} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n const selectedOptions = options.filter((option) => enumValue.includes(option.value))\n\n if (enumValue.length && !selectedOptions.length) {\n // value has something but it is not in options, show a placeholder\n return (\n <TextWidget\n value={enumValue.join(', ')}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={attributeData?.widget === 'markdown'}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n }\n\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n isReadOnly\n hasMultipleValues={enumValue.length > 1}\n isMultiSelect={type?.includes('list')}\n {...pt?.enum?.pt?.template}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={\n attributeData?.widget === 'markdown' ||\n // description SHOULD be default markdown, but lets have this here just in case\n columnId === 'attrib_description' ||\n columnId === 'description'\n }\n type={type as TextWidgetType}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n isMidnightExclusive={isMidnightExclusive}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed, isMidnightExclusive])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, {\n inherited: isInherited && !isCurrentCellEditing,\n [READ_ONLY]: isReadOnly,\n editable: !isReadOnly,\n })}\n ref={ref}\n id={cellId}\n data-tooltip={\n tooltip ||\n (isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined)\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n"],"names":["Cell","styled","CELL_PADDING_Y","EDIT_TRIGGER_CLASS","CellWidget","rowId","columnId","value","valueData","attributeData","options","isCollapsed","isInherited","isPlaceholder","isReadOnly","enableCustomValues","isLinksLoading","folderId","midnightExclusiveFields","tooltip","onChange","entityType","pt","props","ref","useRef","type","projectName","useProjectContext","isEditing","setEditingCellId","getEditingDraft","setEditingDraft","useCellEditing","isCellFocused","gridMap","selectCell","focusCell","useSelectionCellsContext","cellId","getCellId","isMidnightExclusive","isCurrentCellEditing","isCurrentCellFocused","moveToNextRow","rowIndex","newRowId","newCellId","handleOnChange","newValue","key","handleCancel","td","widget","useMemo","sharedProps","textTypes","color","option","jsx","CollapsedWidget","NameWidget","linksValue","isEditable","isLinkEditable","LinksWidget","subtasksValue","SubtasksWidget","CommentsWidget","enumValue","selectedOptions","TextWidget","EnumCellValue","EnumWidget","DateWidget","BooleanWidget","clsx","READ_ONLY"],"mappings":"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"}
|