@ynput/ayon-frontend-shared 0.3.10 → 0.3.11
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/api.cjs.js +1 -1
- package/dist/api.es.js +123 -122
- package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js +1 -1
- package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/tasks/updateTasks.es.js +40 -22
- package/dist/shared/src/api/queries/tasks/updateTasks.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 +93 -93
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +226 -226
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +25 -24
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/types/api/queries/entityLists/types.d.ts +1 -0
- package/dist/types/api/queries/tasks/updateTasks.d.ts +7 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateTasks.es.js","sources":["../../../../../../src/api/queries/tasks/updateTasks.ts"],"sourcesContent":["import { SubTaskNode } from '@shared/api'\nimport { api } from '@shared/api/generated/tasks'\nimport { PatchOperation, patchOverviewTasks } from '../overview/updateOverview'\nimport { patchDetailsPanel } from '../entities/patchDetailsPanel'\n\nconst tasksApi = api.injectEndpoints({\n endpoints: (build) => ({\n updateSubtasks: build.mutation<\n void,\n { projectName: string; taskId: string; subtasks: SubTaskNode[] }\n >({\n queryFn: async ({ projectName, taskId, subtasks }, { dispatch }) => {\n try {\n await dispatch(\n api.endpoints.updateTask.initiate({\n projectName,\n taskId,\n taskPatchModel: {\n data: { subtasks },\n },\n }),\n ).unwrap()\n\n return { data: undefined }\n } catch (error: any) {\n return { error: error.data?.detail || 'Failed to update subtasks (unknown error)' }\n }\n },\n async onQueryStarted({ taskId, subtasks }, { dispatch, queryFulfilled, getState }) {\n const state = getState()\n const patches: any[] = []\n\n const patchOperations: PatchOperation[] = [\n {\n entityId: taskId,\n entityType: 'task',\n data: { subtasks },\n },\n ]\n\n // 1. Patch Overview Tasks\n patchOverviewTasks(patchOperations, { state, dispatch }, patches)\n\n // 2. patch details panel\n patchDetailsPanel(patchOperations, { state, dispatch }, patches)\n\n try {\n await queryFulfilled\n } catch (error) {\n console.error('Error updating subtasks:', error)\n patches.forEach((patch) => patch.undo())\n }\n },\n }),\n }),\n})\n\nexport const { useUpdateSubtasksMutation } = tasksApi\n"],"names":["
|
|
1
|
+
{"version":3,"file":"updateTasks.es.js","sources":["../../../../../../src/api/queries/tasks/updateTasks.ts"],"sourcesContent":["import { SubTaskNode } from '@shared/api'\nimport { api } from '@shared/api/generated/tasks'\nimport { PatchOperation, patchOverviewTasks } from '../overview/updateOverview'\nimport { patchDetailsPanel } from '../entities/patchDetailsPanel'\nimport gqlApi from '../entityLists/getLists'\n\n/**\n * Patches list items caches that contain the specified task with updated subtasks\n */\nexport const patchListItemsWithTask = (\n taskId: string,\n subtasks: SubTaskNode[],\n { state, dispatch }: { state: any; dispatch: any },\n patches: any[],\n) => {\n // Find all list item caches that might contain this task\n const tags = [{ type: 'entityListItem', id: taskId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const itemIndex = page.items.findIndex((item) => item.entityId === taskId)\n if (itemIndex !== -1) {\n const item = page.items[itemIndex]\n // Update subtasks in the item's attributes\n if (!item.subtasks) {\n item.subtasks = []\n }\n // @ts-expect-error - we need to update the subtasks array in place to ensure React detects the change\n item.subtasks = subtasks\n }\n }\n }),\n )\n patches.push(patchResult)\n }\n}\n\nconst tasksApi = api.injectEndpoints({\n endpoints: (build) => ({\n updateSubtasks: build.mutation<\n void,\n { projectName: string; taskId: string; subtasks: SubTaskNode[] }\n >({\n queryFn: async ({ projectName, taskId, subtasks }, { dispatch }) => {\n try {\n await dispatch(\n api.endpoints.updateTask.initiate({\n projectName,\n taskId,\n taskPatchModel: {\n data: { subtasks },\n },\n }),\n ).unwrap()\n\n return { data: undefined }\n } catch (error: any) {\n return { error: error.data?.detail || 'Failed to update subtasks (unknown error)' }\n }\n },\n async onQueryStarted({ taskId, subtasks }, { dispatch, queryFulfilled, getState }) {\n const state = getState()\n const patches: any[] = []\n\n const patchOperations: PatchOperation[] = [\n {\n entityId: taskId,\n entityType: 'task',\n data: { subtasks },\n },\n ]\n\n // 1. Patch Overview Tasks\n patchOverviewTasks(patchOperations, { state, dispatch }, patches)\n\n // 2. patch details panel\n patchDetailsPanel(patchOperations, { state, dispatch }, patches)\n\n // 3. patch lists items with the task in it\n patchListItemsWithTask(taskId, subtasks, { state, dispatch }, patches)\n\n try {\n await queryFulfilled\n } catch (error) {\n console.error('Error updating subtasks:', error)\n patches.forEach((patch) => patch.undo())\n }\n },\n }),\n }),\n})\n\nexport const { useUpdateSubtasksMutation } = tasksApi\n"],"names":["patchListItemsWithTask","taskId","subtasks","state","dispatch","patches","tags","infiniteEntries","gqlApi","e","entry","patchResult","draft","page","itemIndex","item","tasksApi","api","build","projectName","error","queryFulfilled","getState","patchOperations","patchOverviewTasks","patchDetailsPanel","patch","useUpdateSubtasksMutation"],"mappings":";;;;AASO,MAAMA,IAAyB,CACpCC,GACAC,GACA,EAAE,OAAAC,GAAO,UAAAC,EAAA,GACTC,MACG;AAEH,QAAMC,IAAO,CAAC,EAAE,MAAM,kBAAkB,IAAIL,GAAQ,GAC9CM,IAAkBC,EAAO,KAC5B,oBAAoBL,GAAOG,CAAI,EAC/B,OAAO,CAACG,MAAMA,EAAE,iBAAiB,sBAAsB;AAE1D,aAAWC,KAASH,GAAiB;AACnC,UAAMI,IAAcP;AAAA,MAClBI,EAAO,KAAK,gBAAgB,wBAAwBE,EAAM,cAAc,CAACE,MAAU;AACjF,mBAAWC,KAAQD,EAAM,OAAO;AAC9B,gBAAME,IAAYD,EAAK,MAAM,UAAU,CAACE,MAASA,EAAK,aAAad,CAAM;AACzE,cAAIa,MAAc,IAAI;AACpB,kBAAMC,IAAOF,EAAK,MAAMC,CAAS;AAEjC,YAAKC,EAAK,aACRA,EAAK,WAAW,CAAA,IAGlBA,EAAK,WAAWb;AAAA,UAClB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IAAA;AAEH,IAAAG,EAAQ,KAAKM,CAAW;AAAA,EAC1B;AACF,GAEMK,IAAWC,EAAI,gBAAgB;AAAA,EACnC,WAAW,CAACC,OAAW;AAAA,IACrB,gBAAgBA,EAAM,SAGpB;AAAA,MACA,SAAS,OAAO,EAAE,aAAAC,GAAa,QAAAlB,GAAQ,UAAAC,EAAA,GAAY,EAAE,UAAAE,QAAe;AAClE,YAAI;AACF,uBAAMA;AAAA,YACJa,EAAI,UAAU,WAAW,SAAS;AAAA,cAChC,aAAAE;AAAA,cACA,QAAAlB;AAAA,cACA,gBAAgB;AAAA,gBACd,MAAM,EAAE,UAAAC,EAAA;AAAA,cAAS;AAAA,YACnB,CACD;AAAA,UAAA,EACD,OAAA,GAEK,EAAE,MAAM,OAAA;AAAA,QACjB,SAASkB,GAAY;AACnB,iBAAO,EAAE,OAAOA,EAAM,MAAM,UAAU,4CAAA;AAAA,QACxC;AAAA,MACF;AAAA,MACA,MAAM,eAAe,EAAE,QAAAnB,GAAQ,UAAAC,EAAA,GAAY,EAAE,UAAAE,GAAU,gBAAAiB,GAAgB,UAAAC,KAAY;AACjF,cAAMnB,IAAQmB,EAAA,GACRjB,IAAiB,CAAA,GAEjBkB,IAAoC;AAAA,UACxC;AAAA,YACE,UAAUtB;AAAA,YACV,YAAY;AAAA,YACZ,MAAM,EAAE,UAAAC,EAAA;AAAA,UAAS;AAAA,QACnB;AAIF,QAAAsB,EAAmBD,GAAiB,EAAE,OAAApB,GAAO,UAAAC,EAAA,GAAYC,CAAO,GAGhEoB,EAAkBF,GAAiB,EAAE,OAAApB,GAAO,UAAAC,EAAA,GAAYC,CAAO,GAG/DL,EAAuBC,GAAQC,GAAU,EAAE,OAAAC,GAAO,UAAAC,EAAA,GAAYC,CAAO;AAErE,YAAI;AACF,gBAAMgB;AAAA,QACR,SAASD,GAAO;AACd,kBAAQ,MAAM,4BAA4BA,CAAK,GAC/Cf,EAAQ,QAAQ,CAACqB,MAAUA,EAAM,MAAM;AAAA,QACzC;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EAAA;AAEL,CAAC,GAEY,EAAE,2BAAAC,MAA8BX;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),N=require("@tanstack/react-table");require("./widgets/CollapsedWidget.cjs.js");require("./widgets/DateWidget.cjs.js");require("./widgets/EnumWidget.cjs.js");require("./widgets/TextWidget.cjs.js");require("./widgets/BooleanWidget.cjs.js");const b=require("./widgets/CellWidget.cjs.js"),J=require("./widgets/EntityNameWidget.cjs.js"),Q=require("./widgets/GroupHeaderWidget.cjs.js"),w=require("./widgets/ThumbnailWidget.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("react");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");const M=require("@ynput/ayon-react-components");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");const p=require("clsx"),ee=require("lodash");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("date-fns");require("../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("react-toastify");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/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/updateActivities.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/cloud/cloud.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/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/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.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/links/getEntityLinks.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/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.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/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.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("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const G=require("../../util/getEntityTypeIcon.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");const j=require("./utils/cellUtils.cjs.js"),O=require("./ProjectTreeTable.styled.cjs.js"),ie=require("./components/SelectionCell.cjs.js"),re=require("./components/RowSelectionHeader.cjs.js"),K=require("./context/SelectionCellsContext.cjs.js"),ne=require("./context/CellEditingContext.cjs.js");require("short-uuid");const D=require("./utils/restrictedEntity.cjs.js");require("./context/ProjectTableQueriesContext.cjs.js");require("./context/ProjectTableContext.cjs.js");require("./context/ClipboardContext.cjs.js");const te=require("./context/ColumnSettingsContext.cjs.js"),h=require("./hooks/useBuildGroupByTableData.cjs.js");require("./context/SelectedRowsContext.cjs.js");require("./context/DetailsPanelEntityContext.cjs.js");require("./context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("./components/GroupSettingsFallback.cjs.js");const ae=require("./widgets/LoadMoreWidget.cjs.js"),le=require("./types/columnConfig.cjs.js");require("./components/HeaderActionButton.cjs.js");require("./components/ColumnHeaderMenu.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../SimpleTable/context/SimpleTableContext.cjs.js");require("../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("../Slicer/components/SlicerSearch.cjs.js");require("../Slicer/context/SlicerContext.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("./widgets/EmptyWidget.cjs.js");require("./widgets/ErrorWidget.cjs.js");const ue=require("./widgets/MetaWidget.cjs.js"),X=u=>["folder","product"].includes(u),x=50,E=u=>(o,c,...q)=>o.original.isLoading!==c.original.isLoading?o.original.isLoading?1:-1:u(o,c,...q),z=(u,o)=>{const c=u.original.path||u.original.name||"",q=o.original.path||o.original.name||"";return c.localeCompare(q)},V=(u,o,c)=>{const q=j.getCellValue(u.original,c),C=j.getCellValue(o.original,c),R=Array.isArray(q)?q.length:q?String(q).length:0,v=Array.isArray(C)?C.length:C?String(C).length:0;return R-v},k=(u,o,c,q)=>{const C=j.getCellValue(u.original,c),R=j.getCellValue(o.original,c);if(q&&q.enum){const v=q.enum.findIndex(S=>S.value===C);return q.enum.findIndex(S=>S.value===R)-v<0?1:-1}else return q?.type==="datetime"?N.sortingFns.datetime(u,o,c):q?.type==="boolean"?(C===!0?1:0)-(R===!0?1:0):N.sortingFns.alphanumeric(u,o,c)},$=(u,o)=>`${u.linkType.charAt(0).toUpperCase()+u.linkType.slice(1)} (${o})`,W=(u,o)=>`${u.name.replaceAll("_","").replaceAll("-","").replaceAll("|","_")}_${o}`,U=(u,o)=>`link_${W(u,o)}`,se=({scopes:u,attribs:o,links:c=[],includeLinks:q=!0,showHierarchy:C,options:R,excluded:v,excludedSorting:P,extraColumns:S,groupBy:H,nameLabel:B="Entity"})=>{const y=[],g=e=>!v?.includes(e),f=e=>!P?.includes(e);g(K.ROW_SELECTION_COLUMN_ID)&&y.push({id:K.ROW_SELECTION_COLUMN_ID,enableResizing:!1,enableSorting:!1,enablePinning:!1,enableHiding:!1,header:()=>s.jsxRuntimeExports.jsx(re,{}),cell:({row:e})=>e.original.entityType==="group"||e.original.metaType?null:s.jsxRuntimeExports.jsx(ie.SelectionCell,{}),size:20}),g("thumbnail")&&y.push({id:"thumbnail",header:"Thumbnail",size:63,minSize:24,enableResizing:!0,enableSorting:!1,cell:({row:e,column:i,table:r})=>{if(e.original.entityType==="group"||e.original.metaType)return null;const n=r.options.meta;if(!n)return null;const a=j.getCellId(e.id,i.id);let t={entityId:e.original.entityId||e.id,entityType:e.original.entityType,updatedAt:e.original.updatedAt};return e.original.thumbnail&&(t=e.original.thumbnail),s.jsxRuntimeExports.jsx(w.ThumbnailWidget,{id:a,entityId:t.entityId,entityType:t.entityType,updatedAt:t.updatedAt,icon:e.original.icon,projectName:n?.projectName,className:p("thumbnail",{loading:e.original.isLoading}),isPlayable:e.original.hasReviewables})}}),g("name")&&y.push({id:"name",accessorKey:"name",header:B,minSize:x,sortingFn:E(z),enableSorting:H?!1:f("name"),enableResizing:!0,enablePinning:!0,enableHiding:!H,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id),l=r.options.meta,{isEditing:d}=ne.useCellEditing(),{rowHeight:T=40}=te.useColumnSettingsContext(),I=j.getCellId(e.id,i.id);if(e.original.metaType)return s.jsxRuntimeExports.jsx(O.TableCellContent,{id:I,className:p("large","readonly",e.original.entityType),style:{paddingLeft:`calc(${e.depth*1}rem + 8px)`,pointerEvents:"none"},tabIndex:0,children:s.jsxRuntimeExports.jsx(ue.MetaWidget,{metaType:e.original.metaType,label:e.original.label})});if(e.original.entityType===h.NEXT_PAGE_ID&&e.original.group)return s.jsxRuntimeExports.jsx(ae,{id:e.original.group.value,onLoadMore:F=>l?.loadMoreRows?.(F)});const _=e.getCanExpand()&&!!e.originalSubRows&&(X(e.original.entityType)||!!e.original.group);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:I,className:p("large",e.original.entityType,{loading:e.original.isLoading,hierarchy:C}),style:{paddingLeft:`calc(${e.depth*1}rem + ${_||!e.getCanExpand()?0:32}px + 8px)`},tabIndex:0,children:[e.original.group?s.jsxRuntimeExports.jsx(Q.GroupHeaderWidget,{id:e.id,label:e.original.group.label,name:e.original.name,icon:e.original.group.icon,img:e.original.group.img,color:e.original.group.color,count:e.original.group.count,isExpanded:e.getIsExpanded(),isEmpty:e.original.group.count===0,toggleExpanded:e.getToggleExpandedHandler()}):s.jsxRuntimeExports.jsx(J.EntityNameWidget,{id:e.id,label:e.original.label,name:e.original.name,path:C?void 0:"/"+e.original.parents?.join("/"),icon:e.original.icon,type:e.original.entityType,isExpandable:_,isExpanded:e.getIsExpanded(),toggleExpandAll:()=>l?.toggleExpandAll?.([e.id]),toggleExpanded:e.getToggleExpandedHandler(),rowHeight:T,columnDisplayConfig:le.getColumnDisplayConfig(l?.columnsConfig,"name")}),d(I)&&s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("name",{loading:e.original.isLoading}),columnId:i.id,value:n,valueData:{name:e.original.name,label:e.original.label,meta:l,entityRowId:a,columnId:i.id,hasVersions:!!e.original.hasVersions},entityType:t,attributeData:{type:"name"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:l?.readOnly?.includes(i.id)})]})}}),g("status")&&y.push({id:"status",accessorKey:"status",minSize:x,header:"Status",sortingFn:E((e,i,r)=>k(e,i,r,{enum:R.status,type:"string"})),sortDescFirst:!0,enableSorting:f("status"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id),l=r.options.meta;return["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("status",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:l?.options?.status.filter(d=>d.scope?.includes(t)),isCollapsed:!!e.original.childOnlyMatch,onChange:d=>l?.updateEntities?.({field:i.id,value:d,type:t,rowId:a},{selection:l?.selection}),isReadOnly:l?.readOnly?.includes(i.id)||D.isEntityRestricted(t),pt:{enum:{pt:{template:{pt:{icon:{style:{fontVariationSettings:"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20"}}}}}}}})}}),g("entityType")&&y.push({id:"entityType",accessorKey:"entityType",header:"Entity Type",minSize:20,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(N.sortingFns.alphanumeric),cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const l=j.getCellId(e.id,i.id);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:l,className:p("entityType",D.READ_ONLY,t,{loading:e.original.isLoading}),tabIndex:0,children:[s.jsxRuntimeExports.jsx(M.Icon,{icon:G.getEntityTypeIcon(t)})," ",ee.upperFirst(n)]})}}),g("subType")&&y.push({id:"subType",accessorKey:"subType",header:u.includes("product")||u.includes("version")?"Product type":"Type",minSize:x,enableSorting:f("subType"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E((e,i,r)=>k(e,i,r,{enum:[...R.folderType,...R.taskType],type:"string"})),cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const l=t==="folder"?"folderType":"taskType",d=r.options.meta,T=t==="folder"&&e.original.hasVersions;return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("subType",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:t==="folder"?d?.options?.folderType:t==="task"?d?.options?.taskType:[],isCollapsed:!!e.original.childOnlyMatch,onChange:I=>d?.updateEntities?.({field:l,value:I,type:t,rowId:e.id},{selection:d?.selection}),isReadOnly:d?.readOnly?.includes(i.id)||d?.readOnly?.includes(l)||T,tooltip:T?"Folder type cannot be edited when versions exist within the folder":void 0})}}),g("assignees")&&y.push({id:"assignees",accessorKey:"assignees",header:"Assignees",minSize:x,enableSorting:f("assignees"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(V),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:l==="folder"?s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:"",isPlaceholder:!0}):s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:a,attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:l,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||D.isEntityRestricted(l),pt:{enum:{multiSelectClose:a?.length===0,search:!0,multipleOverride:!1}}})}}),g("folder")&&y.push({id:"folder",accessorKey:"folder",header:"Folder name",minSize:x,enableSorting:f("folderName"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:a,type:t}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("folder",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},isReadOnly:!0})}}),g("author")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"author",accessorKey:"author",header:"Author",minSize:x,enableSorting:f("author"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(z),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("author",{loading:e.original.isLoading}),columnId:i.id,value:[a],attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isReadOnly:!0,isInherited:l==="product"})}}),g("version")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"version",accessorKey:"version",header:"Version",minSize:x,enableSorting:f("version"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(z),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType)return null;let t=e.original.versionName||r;return e.original.entityType==="product"&&(t=`${e.original.versionName} (${e.original.versionsCount||0} versions)`),s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("version",{loading:e.original.isLoading}),columnId:i.id,value:t,attributeData:{type:"string"},isReadOnly:!0})}}),g("product")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"product",accessorKey:"product",header:"Product name",minSize:x,enableSorting:f("product"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(z),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("product",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"string"},isReadOnly:!0})}}),g("tags")&&y.push({id:"tags",accessorKey:"tags",header:"Tags",minSize:x,enableSorting:f("tags"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(V),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("tags",{loading:e.original.isLoading}),columnId:i.id,value:a,attributeData:{type:"list_of_strings"},options:n?.options?.tag,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:l,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||D.isEntityRestricted(l),enableCustomValues:!0})}}),g("createdAt")&&y.push({id:"createdAt",accessorKey:"createdAt",header:"Created at",minSize:x,enableSorting:f("createdAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(N.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("createdAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}}),g("updatedAt")&&y.push({id:"updatedAt",accessorKey:"updatedAt",header:"Updated at",minSize:x,enableSorting:f("updatedAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(N.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:a}=m(e,i.id);return["group",h.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("updatedAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}}),g("subtasks")&&u.includes("task")&&y.push({id:"subtasks",accessorKey:"subtasks",header:"Subtasks",minSize:x,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:a,id:t,type:l}=m(e,i.id);if(["group",h.NEXT_PAGE_ID].includes(l)||e.original.metaType)return null;j.getCellId(t,i.id);const d={taskId:t,subtasks:a||[]};return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("subtasks",{loading:e.original.isLoading}),columnId:i.id,value:d.subtasks?.map(T=>T.label||T.name)||[],valueData:d,attributeData:{type:"subtasks"},isReadOnly:n?.readOnly?.includes(i.id)})}});const Z=o.filter(e=>{if(e.scope&&!e.scope.some(r=>u.includes(r)))return!1;const i="attrib_"+e.name;return!(!g(i)||e.builtin&&!g("attrib"))}).map(e=>({id:"attrib_"+e.name,accessorKey:"attrib."+e.name,header:e.data.title||e.name,minSize:x,filterFn:"fuzzy",sortingFn:E((r,n,a)=>k(r,n,a,e.data)),enableSorting:f(e.name)&&f("attrib"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:r,column:n,table:a})=>{const t=a.options.meta,l=n.id.replace("attrib_",""),{value:d,id:T,type:I}=m(r,l,"attrib"),_=!r.original.ownAttrib?.includes(l);return["group",h.NEXT_PAGE_ID].includes(I)||r.original.metaType||!e.scope?.includes(I)&&d==null?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:T,className:p("attrib",{loading:r.original.isLoading}),columnId:n.id,value:d,attributeData:{type:e.data.type||"string"},options:e.data.enum||[],isCollapsed:!!r.original.childOnlyMatch,isInherited:_,isReadOnly:e.readOnly||t?.readOnly?.some(L=>L===l||L==="attrib"&&e.builtin),onChange:L=>t?.updateEntities?.({field:l,value:L,type:I,isAttrib:!0,rowId:r.id},{selection:e.data.enum?.length?t?.selection:void 0})})}})),Y=q?c.filter(e=>!(!g(e.linkType)||!g("link")||!u.includes(e.inputType)&&!u.includes(e.outputType))).flatMap(e=>{const i=r=>({id:U(e,r),accessorKey:`links.${W(e,r)}`,header:()=>s.jsxRuntimeExports.jsxs(O.LinkColumnHeader,{children:[$(e,r)," ",s.jsxRuntimeExports.jsx(M.Icon,{icon:G.getEntityTypeIcon(r==="in"?e.inputType:e.outputType)})]}),minSize:x,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:n,column:a})=>{const t=a.id.replace("link_",""),{id:l,value:d}=m(n,t,"links"),T=d?.map(_=>_.label),I={links:d,direction:r,entityId:n.original.entityId||n.original.id,entityType:n.original.entityType,link:{label:e.linkType,linkType:e.name,targetEntityType:r==="in"?e.inputType:e.outputType}};return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:l,className:p("links",{loading:n.original.isLoading}),columnId:a.id,value:T,valueData:I,folderId:n.original.folderId,attributeData:{type:"links"}})}});return[i("in"),i("out")]}):[],A=[...y,...Z,...Y];return S&&S.forEach(({column:e,position:i=-1})=>{i>=0&&i<A.length?A.splice(i,0,e):A.push(e)}),A},m=(u,o,c)=>({value:c?u.original[c]?.[o]:u.original[o],id:u.id,type:u.original.entityType});exports.COLUMN_MIN_SIZE=x;exports.default=se;exports.getLinkColumnId=U;exports.getLinkKey=W;exports.getLinkLabel=$;exports.getValueIdType=m;exports.isEntityExpandable=X;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),N=require("@tanstack/react-table");require("./widgets/CollapsedWidget.cjs.js");require("./widgets/DateWidget.cjs.js");require("./widgets/EnumWidget.cjs.js");require("./widgets/TextWidget.cjs.js");require("./widgets/BooleanWidget.cjs.js");const b=require("./widgets/CellWidget.cjs.js"),J=require("./widgets/EntityNameWidget.cjs.js"),Q=require("./widgets/GroupHeaderWidget.cjs.js"),w=require("./widgets/ThumbnailWidget.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("react");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");const M=require("@ynput/ayon-react-components");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");const p=require("clsx"),ee=require("lodash");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("date-fns");require("../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("react-toastify");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/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/updateActivities.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/cloud/cloud.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/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/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.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/links/getEntityLinks.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/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.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/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.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("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const G=require("../../util/getEntityTypeIcon.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");const j=require("./utils/cellUtils.cjs.js"),O=require("./ProjectTreeTable.styled.cjs.js"),ie=require("./components/SelectionCell.cjs.js"),re=require("./components/RowSelectionHeader.cjs.js"),K=require("./context/SelectionCellsContext.cjs.js"),ne=require("./context/CellEditingContext.cjs.js");require("short-uuid");const D=require("./utils/restrictedEntity.cjs.js");require("./context/ProjectTableQueriesContext.cjs.js");require("./context/ProjectTableContext.cjs.js");require("./context/ClipboardContext.cjs.js");const te=require("./context/ColumnSettingsContext.cjs.js"),x=require("./hooks/useBuildGroupByTableData.cjs.js");require("./context/SelectedRowsContext.cjs.js");require("./context/DetailsPanelEntityContext.cjs.js");require("./context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("./components/GroupSettingsFallback.cjs.js");const ae=require("./widgets/LoadMoreWidget.cjs.js"),le=require("./types/columnConfig.cjs.js");require("./components/HeaderActionButton.cjs.js");require("./components/ColumnHeaderMenu.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../SimpleTable/context/SimpleTableContext.cjs.js");require("../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("../Slicer/components/SlicerSearch.cjs.js");require("../Slicer/context/SlicerContext.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("./widgets/EmptyWidget.cjs.js");require("./widgets/ErrorWidget.cjs.js");const ue=require("./widgets/MetaWidget.cjs.js"),X=u=>["folder","product"].includes(u),f=50,E=u=>(o,c,...q)=>o.original.isLoading!==c.original.isLoading?o.original.isLoading?1:-1:u(o,c,...q),z=(u,o)=>{const c=u.original.path||u.original.name||"",q=o.original.path||o.original.name||"";return c.localeCompare(q)},V=(u,o,c)=>{const q=j.getCellValue(u.original,c),C=j.getCellValue(o.original,c),R=Array.isArray(q)?q.length:q?String(q).length:0,v=Array.isArray(C)?C.length:C?String(C).length:0;return R-v},k=(u,o,c,q)=>{const C=j.getCellValue(u.original,c),R=j.getCellValue(o.original,c);if(q&&q.enum){const v=q.enum.findIndex(S=>S.value===C);return q.enum.findIndex(S=>S.value===R)-v<0?1:-1}else return q?.type==="datetime"?N.sortingFns.datetime(u,o,c):q?.type==="boolean"?(C===!0?1:0)-(R===!0?1:0):N.sortingFns.alphanumeric(u,o,c)},$=(u,o)=>`${u.linkType.charAt(0).toUpperCase()+u.linkType.slice(1)} (${o})`,W=(u,o)=>`${u.name.replaceAll("_","").replaceAll("-","").replaceAll("|","_")}_${o}`,U=(u,o)=>`link_${W(u,o)}`,se=({scopes:u,attribs:o,links:c=[],includeLinks:q=!0,showHierarchy:C,options:R,excluded:v,excludedSorting:P,extraColumns:S,groupBy:H,nameLabel:B="Entity"})=>{const y=[],g=e=>!v?.includes(e),h=e=>!P?.includes(e);g(K.ROW_SELECTION_COLUMN_ID)&&y.push({id:K.ROW_SELECTION_COLUMN_ID,enableResizing:!1,enableSorting:!1,enablePinning:!1,enableHiding:!1,header:()=>s.jsxRuntimeExports.jsx(re,{}),cell:({row:e})=>e.original.entityType==="group"||e.original.metaType?null:s.jsxRuntimeExports.jsx(ie.SelectionCell,{}),size:20}),g("thumbnail")&&y.push({id:"thumbnail",header:"Thumbnail",size:63,minSize:24,enableResizing:!0,enableSorting:!1,cell:({row:e,column:i,table:r})=>{if(e.original.entityType==="group"||e.original.metaType)return null;const n=r.options.meta;if(!n)return null;const l=j.getCellId(e.id,i.id);let t={entityId:e.original.entityId||e.id,entityType:e.original.entityType,updatedAt:e.original.updatedAt};return e.original.thumbnail&&(t=e.original.thumbnail),s.jsxRuntimeExports.jsx(w.ThumbnailWidget,{id:l,entityId:t.entityId,entityType:t.entityType,updatedAt:t.updatedAt,icon:e.original.icon,projectName:n?.projectName,className:p("thumbnail",{loading:e.original.isLoading}),isPlayable:e.original.hasReviewables})}}),g("name")&&y.push({id:"name",accessorKey:"name",header:B,minSize:f,sortingFn:E(z),enableSorting:H?!1:h("name"),enableResizing:!0,enablePinning:!0,enableHiding:!H,cell:({row:e,column:i,table:r})=>{const{value:n,id:l,type:t}=m(e,i.id),a=r.options.meta,{isEditing:d}=ne.useCellEditing(),{rowHeight:T=40}=te.useColumnSettingsContext(),I=j.getCellId(e.id,i.id);if(e.original.metaType)return s.jsxRuntimeExports.jsx(O.TableCellContent,{id:I,className:p("large","readonly",e.original.entityType),style:{paddingLeft:`calc(${e.depth*1}rem + 8px)`,pointerEvents:"none"},tabIndex:0,children:s.jsxRuntimeExports.jsx(ue.MetaWidget,{metaType:e.original.metaType,label:e.original.label})});if(e.original.entityType===x.NEXT_PAGE_ID&&e.original.group)return s.jsxRuntimeExports.jsx(ae,{id:e.original.group.value,onLoadMore:F=>a?.loadMoreRows?.(F)});const _=e.getCanExpand()&&!!e.originalSubRows&&(X(e.original.entityType)||!!e.original.group);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:I,className:p("large",e.original.entityType,{loading:e.original.isLoading,hierarchy:C}),style:{paddingLeft:`calc(${e.depth*1}rem + ${_||!e.getCanExpand()?0:32}px + 8px)`},tabIndex:0,children:[e.original.group?s.jsxRuntimeExports.jsx(Q.GroupHeaderWidget,{id:e.id,label:e.original.group.label,name:e.original.name,icon:e.original.group.icon,img:e.original.group.img,color:e.original.group.color,count:e.original.group.count,isExpanded:e.getIsExpanded(),isEmpty:e.original.group.count===0,toggleExpanded:e.getToggleExpandedHandler()}):s.jsxRuntimeExports.jsx(J.EntityNameWidget,{id:e.id,label:e.original.label,name:e.original.name,path:C?void 0:"/"+e.original.parents?.join("/"),icon:e.original.icon,type:e.original.entityType,isExpandable:_,isExpanded:e.getIsExpanded(),toggleExpandAll:()=>a?.toggleExpandAll?.([e.id]),toggleExpanded:e.getToggleExpandedHandler(),rowHeight:T,columnDisplayConfig:le.getColumnDisplayConfig(a?.columnsConfig,"name")}),d(I)&&s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:l,className:p("name",{loading:e.original.isLoading}),columnId:i.id,value:n,valueData:{name:e.original.name,label:e.original.label,meta:a,entityRowId:l,columnId:i.id,hasVersions:!!e.original.hasVersions},entityType:t,attributeData:{type:"name"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:a?.readOnly?.includes(i.id)})]})}}),g("status")&&y.push({id:"status",accessorKey:"status",minSize:f,header:"Status",sortingFn:E((e,i,r)=>k(e,i,r,{enum:R.status,type:"string"})),sortDescFirst:!0,enableSorting:h("status"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:l,type:t}=m(e,i.id),a=r.options.meta;return["group",x.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:l,className:p("status",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:a?.options?.status.filter(d=>d.scope?.includes(t)),isCollapsed:!!e.original.childOnlyMatch,onChange:d=>a?.updateEntities?.({field:i.id,value:d,type:t,rowId:l},{selection:a?.selection}),isReadOnly:a?.readOnly?.includes(i.id)||D.isEntityRestricted(t),pt:{enum:{pt:{template:{pt:{icon:{style:{fontVariationSettings:"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20"}}}}}}}})}}),g("entityType")&&y.push({id:"entityType",accessorKey:"entityType",header:"Entity Type",minSize:20,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(N.sortingFns.alphanumeric),cell:({row:e,column:i,table:r})=>{const{value:n,id:l,type:t}=m(e,i.id);if(["group",x.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const a=j.getCellId(e.id,i.id);return s.jsxRuntimeExports.jsxs(O.TableCellContent,{id:a,className:p("entityType",D.READ_ONLY,t,{loading:e.original.isLoading}),tabIndex:0,children:[s.jsxRuntimeExports.jsx(M.Icon,{icon:G.getEntityTypeIcon(t)})," ",ee.upperFirst(n)]})}}),g("subType")&&y.push({id:"subType",accessorKey:"subType",header:u.includes("product")||u.includes("version")?"Product type":"Type",minSize:f,enableSorting:h("subType"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E((e,i,r)=>k(e,i,r,{enum:[...R.folderType,...R.taskType],type:"string"})),cell:({row:e,column:i,table:r})=>{const{value:n,id:l,type:t}=m(e,i.id);if(["group",x.NEXT_PAGE_ID].includes(t)||e.original.metaType)return null;const a=t==="folder"?"folderType":"taskType",d=r.options.meta,T=t==="folder"&&e.original.hasVersions;return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:l,className:p("subType",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},options:t==="folder"?d?.options?.folderType:t==="task"?d?.options?.taskType:[],isCollapsed:!!e.original.childOnlyMatch,onChange:I=>d?.updateEntities?.({field:a,value:I,type:t,rowId:e.id},{selection:d?.selection}),isReadOnly:d?.readOnly?.includes(i.id)||d?.readOnly?.includes(a)||T,tooltip:T?"Folder type cannot be edited when versions exist within the folder":void 0})}}),g("assignees")&&y.push({id:"assignees",accessorKey:"assignees",header:"Assignees",minSize:f,enableSorting:h("assignees"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(V),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:l,id:t,type:a}=m(e,i.id);return["group",x.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:a==="folder"?s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:"",isPlaceholder:!0}):s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("assignees",{loading:e.original.isLoading}),columnId:i.id,value:l,attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:a,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||D.isEntityRestricted(a),pt:{enum:{multiSelectClose:l?.length===0,search:!0,multipleOverride:!1}}})}}),g("folder")&&y.push({id:"folder",accessorKey:"folder",header:"Folder name",minSize:f,enableSorting:h("folderName"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const{value:n,id:l,type:t}=m(e,i.id);return["group",x.NEXT_PAGE_ID].includes(t)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:l,className:p("folder",{loading:e.original.isLoading}),columnId:i.id,value:n,attributeData:{type:"string"},isReadOnly:!0})}}),g("author")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"author",accessorKey:"author",header:"Author",minSize:f,enableSorting:h("author"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(z),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:l,id:t,type:a}=m(e,i.id);return["group",x.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("author",{loading:e.original.isLoading}),columnId:i.id,value:[l],attributeData:{type:"list_of_strings"},options:n?.options?.assignee,isReadOnly:!0,isInherited:a==="product"})}}),g("version")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"version",accessorKey:"version",header:"Version",minSize:f,enableSorting:h("version"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(z),cell:({row:e,column:i})=>{const{value:r,id:n,type:l}=m(e,i.id);if(["group",x.NEXT_PAGE_ID].includes(l)||e.original.metaType)return null;let t=e.original.versionName||r;return e.original.entityType==="product"&&(t=`${e.original.versionName} (${e.original.versionsCount||0} versions)`),s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("version",{loading:e.original.isLoading}),columnId:i.id,value:t,attributeData:{type:"string"},isReadOnly:!0})}}),g("product")&&["version","product"].some(e=>u.includes(e))&&y.push({id:"product",accessorKey:"product",header:"Product name",minSize:f,enableSorting:h("product"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(z),cell:({row:e,column:i})=>{const{value:r,id:n,type:l}=m(e,i.id);return["group",x.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("product",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"string"},isReadOnly:!0})}}),g("tags")&&y.push({id:"tags",accessorKey:"tags",header:"Tags",minSize:f,enableSorting:h("tags"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(V),cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:l,id:t,type:a}=m(e,i.id);return["group",x.NEXT_PAGE_ID].includes(a)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("tags",{loading:e.original.isLoading}),columnId:i.id,value:l,attributeData:{type:"list_of_strings"},options:n?.options?.tag,isCollapsed:!!e.original.childOnlyMatch,onChange:d=>n?.updateEntities?.({field:i.id,value:d,type:a,rowId:e.id},{selection:n?.selection}),isReadOnly:n?.readOnly?.includes(i.id)||D.isEntityRestricted(a),enableCustomValues:!0})}}),g("createdAt")&&y.push({id:"createdAt",accessorKey:"createdAt",header:"Created at",minSize:f,enableSorting:h("createdAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(N.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:l}=m(e,i.id);return["group",x.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("createdAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}}),g("updatedAt")&&y.push({id:"updatedAt",accessorKey:"updatedAt",header:"Updated at",minSize:f,enableSorting:h("updatedAt"),enableResizing:!0,enablePinning:!0,enableHiding:!0,sortingFn:E(N.sortingFns.datetime),cell:({row:e,column:i})=>{const{value:r,id:n,type:l}=m(e,i.id);return["group",x.NEXT_PAGE_ID].includes(l)||e.original.metaType?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:n,className:p("updatedAt",{loading:e.original.isLoading}),columnId:i.id,value:r,attributeData:{type:"datetime"},isCollapsed:!!e.original.childOnlyMatch,isReadOnly:!0,pt:{date:{showTime:!0}}})}}),g("subtasks")&&u.includes("task")&&y.push({id:"subtasks",accessorKey:"subtasks",header:"Subtasks",minSize:f,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:e,column:i,table:r})=>{const n=r.options.meta,{value:l,id:t,type:a}=m(e,i.id);if(["group",x.NEXT_PAGE_ID].includes(a)||e.original.metaType)return null;if(a!=="task")return s.jsxRuntimeExports.jsx("div",{className:"readonly"});const d={taskId:x.parseGroupId(e.id)||e.original.entityId||e.original.id,subtasks:l||[]};return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:t,className:p("subtasks",{loading:e.original.isLoading}),columnId:i.id,value:d.subtasks?.map(T=>T.label||T.name)||[],valueData:d,attributeData:{type:"subtasks"},isReadOnly:n?.readOnly?.includes(i.id)})}});const Z=o.filter(e=>{if(e.scope&&!e.scope.some(r=>u.includes(r)))return!1;const i="attrib_"+e.name;return!(!g(i)||e.builtin&&!g("attrib"))}).map(e=>({id:"attrib_"+e.name,accessorKey:"attrib."+e.name,header:e.data.title||e.name,minSize:f,filterFn:"fuzzy",sortingFn:E((r,n,l)=>k(r,n,l,e.data)),enableSorting:h(e.name)&&h("attrib"),enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:r,column:n,table:l})=>{const t=l.options.meta,a=n.id.replace("attrib_",""),{value:d,id:T,type:I}=m(r,a,"attrib"),_=!r.original.ownAttrib?.includes(a);return["group",x.NEXT_PAGE_ID].includes(I)||r.original.metaType||!e.scope?.includes(I)&&d==null?null:s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:T,className:p("attrib",{loading:r.original.isLoading}),columnId:n.id,value:d,attributeData:{type:e.data.type||"string"},options:e.data.enum||[],isCollapsed:!!r.original.childOnlyMatch,isInherited:_,isReadOnly:e.readOnly||t?.readOnly?.some(L=>L===a||L==="attrib"&&e.builtin),onChange:L=>t?.updateEntities?.({field:a,value:L,type:I,isAttrib:!0,rowId:r.id},{selection:e.data.enum?.length?t?.selection:void 0})})}})),Y=q?c.filter(e=>!(!g(e.linkType)||!g("link")||!u.includes(e.inputType)&&!u.includes(e.outputType))).flatMap(e=>{const i=r=>({id:U(e,r),accessorKey:`links.${W(e,r)}`,header:()=>s.jsxRuntimeExports.jsxs(O.LinkColumnHeader,{children:[$(e,r)," ",s.jsxRuntimeExports.jsx(M.Icon,{icon:G.getEntityTypeIcon(r==="in"?e.inputType:e.outputType)})]}),minSize:f,enableSorting:!1,enableResizing:!0,enablePinning:!0,enableHiding:!0,cell:({row:n,column:l})=>{const t=l.id.replace("link_",""),{id:a,value:d}=m(n,t,"links"),T=d?.map(_=>_.label),I={links:d,direction:r,entityId:n.original.entityId||n.original.id,entityType:n.original.entityType,link:{label:e.linkType,linkType:e.name,targetEntityType:r==="in"?e.inputType:e.outputType}};return s.jsxRuntimeExports.jsx(b.CellWidget,{rowId:a,className:p("links",{loading:n.original.isLoading}),columnId:l.id,value:T,valueData:I,folderId:n.original.folderId,attributeData:{type:"links"}})}});return[i("in"),i("out")]}):[],A=[...y,...Z,...Y];return S&&S.forEach(({column:e,position:i=-1})=>{i>=0&&i<A.length?A.splice(i,0,e):A.push(e)}),A},m=(u,o,c)=>({value:c?u.original[c]?.[o]:u.original[o],id:u.id,type:u.original.entityType});exports.COLUMN_MIN_SIZE=f;exports.default=se;exports.getLinkColumnId=U;exports.getLinkKey=W;exports.getLinkLabel=$;exports.getValueIdType=m;exports.isEntityExpandable=X;
|
|
2
2
|
//# sourceMappingURL=buildTreeTableColumns.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTreeTableColumns.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/buildTreeTableColumns.tsx"],"sourcesContent":["import { ColumnDef, FilterFnOption, Row, SortingFn, sortingFns } from '@tanstack/react-table'\nimport { TableRow } from './types/table'\nimport { AttributeData, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport {\n CellWidget,\n MetaWidget,\n EntityNameWidget,\n GroupHeaderWidget,\n ThumbnailWidget,\n} from './widgets'\nimport { getCellId, getCellValue } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { ROW_SELECTION_COLUMN_ID } from './context/SelectionCellsContext'\nimport { TableGroupBy, useCellEditing, useColumnSettingsContext } from './context'\nimport { NEXT_PAGE_ID } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport { LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { SubtasksWidgetData } from './widgets/SubtasksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\nimport { NameWidgetData } from '@shared/components/RenameForm'\nimport { isEntityRestricted, READ_ONLY } from './utils/restrictedEntity'\nimport { getColumnDisplayConfig } from './types/columnConfig'\nimport { upperFirst } from 'lodash'\n\nexport const isEntityExpandable = (entityType: string) => ['folder', 'product'].includes(entityType)\n\nexport const COLUMN_MIN_SIZE = 50\n\n// Wrapper function for sorting that pushes isLoading rows to the bottom\nconst withLoadingStateSort = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n // If row loading states differ, prioritize non-loading rows\n if (rowA.original.isLoading !== rowB.original.isLoading) {\n return rowA.original.isLoading ? 1 : -1\n }\n // Otherwise, use the original sort function\n return sortFn(rowA, rowB, ...args)\n }\n}\n\nconst pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.path || rowA.original.name || ''\n const labelB = rowB.original.path || rowB.original.name || ''\n // sort alphabetically by label\n return labelA.localeCompare(labelB)\n}\n\nconst valueLengthSort: SortingFn<any> = (rowA, rowB, columnId) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n const lengthA = Array.isArray(valueA) ? valueA.length : valueA ? String(valueA).length : 0\n const lengthB = Array.isArray(valueB) ? valueB.length : valueB ? String(valueB).length : 0\n return lengthA - lengthB\n}\n\ntype AttribSortingFn = (rowA: any, rowB: any, columnId: string, attribute?: AttributeData) => number\n// sort by the order of the enum options\nconst attribSort: AttribSortingFn = (rowA, rowB, columnId, attrib) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n // if attrib is defined and has enum options, use them\n if (attrib && attrib.enum) {\n const indexA = attrib.enum.findIndex((o) => o.value === valueA)\n const indexB = attrib.enum.findIndex((o) => o.value === valueB)\n return indexB - indexA < 0 ? 1 : -1\n } else if (attrib?.type === 'datetime') {\n return sortingFns.datetime(rowA, rowB, columnId)\n } else if (attrib?.type === 'boolean') {\n const boolA = valueA === true ? 1 : 0\n const boolB = valueB === true ? 1 : 0\n return boolA - boolB\n } else {\n return sortingFns.alphanumeric(rowA, rowB, columnId)\n }\n}\n\nexport const getLinkLabel = (\n link: Pick<LinkTypeModel, 'linkType'>,\n direction: 'in' | 'out' | string,\n) => `${link.linkType.charAt(0).toUpperCase() + link.linkType.slice(1)} (${direction})`\n\nexport const getLinkKey = (link: Pick<LinkTypeModel, 'name'>, direction: 'in' | 'out' | string) =>\n `${link.name.replaceAll('_', '').replaceAll('-', '').replaceAll('|', '_')}_${direction}`\n\nexport const getLinkColumnId = (\n link: Pick<LinkTypeModel, 'name'>,\n direction: 'in' | 'out' | string,\n) => `link_${getLinkKey(link, direction)}`\n\nexport type DefaultColumns =\n | typeof ROW_SELECTION_COLUMN_ID\n | 'thumbnail'\n | 'name'\n | 'entityType'\n | 'folder'\n | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n | 'createdAt'\n | 'updatedAt'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n scopes: string[]\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n includeLinks?: boolean\n showHierarchy: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n nameLabel?: string\n}\n\nconst buildTreeTableColumns = ({\n scopes,\n attribs,\n links = [],\n includeLinks = true,\n showHierarchy,\n options,\n excluded,\n excludedSorting,\n extraColumns,\n groupBy,\n nameLabel = 'Entity',\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) => !excluded?.includes(id)\n const canSort = (id: DefaultColumns | string) => !excludedSorting?.includes(id)\n\n // Conditionally add static columns\n if (isIncluded(ROW_SELECTION_COLUMN_ID)) {\n staticColumns.push({\n id: ROW_SELECTION_COLUMN_ID,\n enableResizing: false,\n enableSorting: false,\n enablePinning: false,\n enableHiding: false,\n\n header: () => <RowSelectionHeader />,\n cell: ({ row }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: 'Thumbnail',\n size: 63,\n minSize: 24,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n let thumbnail = {\n entityId: row.original.entityId || row.id,\n entityType: row.original.entityType,\n updatedAt: row.original.updatedAt,\n }\n // check for thumbnail override\n if (row.original.thumbnail) {\n thumbnail = row.original.thumbnail\n }\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={thumbnail.entityId}\n entityType={thumbnail.entityType}\n updatedAt={thumbnail.updatedAt}\n icon={row.original.icon}\n projectName={meta?.projectName as string}\n className={clsx('thumbnail', {\n loading: row.original.isLoading,\n })}\n isPlayable={row.original.hasReviewables}\n />\n )\n },\n })\n }\n\n if (isIncluded('name')) {\n staticColumns.push({\n id: 'name',\n accessorKey: 'name',\n header: nameLabel,\n minSize: COLUMN_MIN_SIZE,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: groupBy ? false : canSort('name'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: groupBy ? false : true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n const { isEditing } = useCellEditing()\n const { rowHeight = 40 } = useColumnSettingsContext()\n const cellId = getCellId(row.id, column.id)\n\n if (row.original.metaType) {\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', 'readonly', row.original.entityType)}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + 8px)`,\n pointerEvents: 'none',\n }}\n tabIndex={0}\n >\n <MetaWidget metaType={row.original.metaType} label={row.original.label} />\n </TableCellContent>\n )\n }\n\n if (row.original.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreRows?.(id)}\n />\n )\n }\n\n const isExpandable =\n row.getCanExpand() &&\n !!row.originalSubRows &&\n (isEntityExpandable(row.original.entityType) || !!row.original.group)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', row.original.entityType, {\n loading: row.original.isLoading,\n hierarchy: showHierarchy,\n })}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + ${\n isExpandable || !row.getCanExpand() ? 0 : 32\n }px + 8px)`,\n }}\n tabIndex={0}\n >\n {row.original.group ? (\n <GroupHeaderWidget\n id={row.id}\n label={row.original.group.label}\n name={row.original.name}\n icon={row.original.group.icon}\n img={row.original.group.img}\n color={row.original.group.color}\n count={row.original.group.count}\n isExpanded={row.getIsExpanded()}\n isEmpty={row.original.group.count === 0}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n ) : (\n <EntityNameWidget\n id={row.id}\n label={row.original.label}\n name={row.original.name}\n path={!showHierarchy ? '/' + row.original.parents?.join('/') : undefined}\n icon={row.original.icon}\n type={row.original.entityType}\n isExpandable={isExpandable}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\n rowHeight={rowHeight}\n columnDisplayConfig={getColumnDisplayConfig(meta?.columnsConfig, 'name')}\n />\n )}\n {isEditing(cellId) && (\n <CellWidget\n rowId={id}\n className={clsx('name', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n valueData={\n {\n name: row.original.name,\n label: row.original.label,\n meta,\n entityRowId: id,\n columnId: column.id,\n hasVersions: !!row.original.hasVersions,\n } as NameWidgetData\n }\n entityType={type}\n attributeData={{ type: 'name' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('status')) {\n staticColumns.push({\n id: 'status',\n accessorKey: 'status',\n minSize: COLUMN_MIN_SIZE,\n header: 'Status',\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n sortDescFirst: true,\n enableSorting: canSort('status'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('status', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={meta?.options?.status.filter((s) => s.scope?.includes(type))}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n pt: {\n template: {\n pt: {\n icon: {\n style: {\n fontVariationSettings: \"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20\",\n },\n },\n },\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('entityType')) {\n staticColumns.push({\n id: 'entityType',\n accessorKey: 'entityType',\n header: 'Entity Type',\n minSize: 20,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.alphanumeric),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const cellId = getCellId(row.id, column.id)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('entityType', READ_ONLY, type, { loading: row.original.isLoading })}\n tabIndex={0}\n >\n <Icon icon={getEntityTypeIcon(type)} /> {upperFirst(value)}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: scopes.includes('product') || scopes.includes('version') ? 'Product type' : 'Type',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('subType'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: [...options.folderType, ...options.taskType], type: 'string' }),\n ),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\n const folderHasVersions = type === 'folder' && row.original.hasVersions\n return (\n <CellWidget\n rowId={id}\n className={clsx('subType', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={\n type === 'folder'\n ? meta?.options?.folderType\n : type === 'task'\n ? meta?.options?.taskType\n : []\n }\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: fieldId, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={\n meta?.readOnly?.includes(column.id) ||\n meta?.readOnly?.includes(fieldId) ||\n folderHasVersions\n }\n tooltip={\n folderHasVersions\n ? 'Folder type cannot be edited when versions exist within the folder'\n : undefined\n }\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: 'Assignees',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('assignees'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(valueLengthSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n if (type === 'folder')\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value=\"\"\n isPlaceholder\n />\n )\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n multiSelectClose: value?.length === 0, // close the dropdown on first assignment\n search: true, // enable search at all times\n multipleOverride: false,\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('folder')) {\n staticColumns.push({\n id: 'folder',\n accessorKey: 'folder',\n header: 'Folder name',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('folderName'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('folder', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n // only show authors column for products\n if (isIncluded('author') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'author',\n accessorKey: 'author',\n header: 'Author',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('author'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('author', { loading: row.original.isLoading })}\n columnId={column.id}\n value={[value]}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isReadOnly={true}\n isInherited={type === 'product'} // products do not have authors, we just show the featured version's author\n />\n )\n },\n })\n }\n\n // version column for versions\n if (isIncluded('version') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'version',\n accessorKey: 'version',\n header: 'Version',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('version'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n let versionValue = row.original.versionName || value\n if (row.original.entityType === 'product') {\n // show summary of versions for products\n versionValue = `${row.original.versionName} (${row.original.versionsCount || 0} versions)`\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('version', { loading: row.original.isLoading })}\n columnId={column.id}\n value={versionValue}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n // product name column for versions and products\n if (isIncluded('product') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'product',\n accessorKey: 'product',\n header: 'Product name',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('product'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('product', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n if (isIncluded('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: 'Tags',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('tags'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(valueLengthSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('tags', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.tag}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n if (isIncluded('createdAt')) {\n staticColumns.push({\n id: 'createdAt',\n accessorKey: 'createdAt',\n header: 'Created at',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('createdAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('createdAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('updatedAt')) {\n staticColumns.push({\n id: 'updatedAt',\n accessorKey: 'updatedAt',\n header: 'Updated at',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('updatedAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('updatedAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('subtasks') && scopes.includes('task')) {\n staticColumns.push({\n id: 'subtasks',\n accessorKey: 'subtasks',\n header: 'Subtasks',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n const cellId = getCellId(id, column.id)\n const subtasksData: SubtasksWidgetData = {\n taskId: id,\n subtasks: value || [],\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('subtasks', { loading: row.original.isLoading })}\n columnId={column.id}\n value={subtasksData.subtasks?.map((s: any) => s.label || s.name) || []}\n valueData={subtasksData}\n attributeData={{ type: 'subtasks' }}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\n // filter out attributes that are out of scope\n if (attrib.scope && !attrib.scope.some((s) => scopes.includes(s))) return false\n\n const columnId = 'attrib_' + attrib.name\n // Check if the specific attribute column is excluded\n // or if all built-in attributes are excluded and this is a built-in attribute\n if (!isIncluded(columnId)) return false\n if (attrib.builtin && !isIncluded('attrib')) return false\n return true\n })\n .map((attrib) => {\n const attribColumn: ColumnDef<TableRow> = {\n id: 'attrib_' + attrib.name,\n accessorKey: 'attrib.' + attrib.name,\n header: attrib.data.title || attrib.name,\n minSize: COLUMN_MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort((a, b, c) => attribSort(a, b, c, attrib.data)),\n enableSorting: canSort(attrib.name) && canSort('attrib'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const columnIdParsed = column.id.replace('attrib_', '')\n const { value, id, type } = getValueIdType(row, columnIdParsed, 'attrib')\n const isInherited = !row.original.ownAttrib?.includes(columnIdParsed)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const outOfScopeAndNoValue =\n !attrib.scope?.includes(type as (typeof attrib.scope)[number]) &&\n (value === null || value === undefined)\n\n // if the attribute is not in scope, we should nothing\n if (outOfScopeAndNoValue) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('attrib', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: attrib.data.type || 'string' }}\n options={attrib.data.enum || []}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited}\n isReadOnly={\n // check attrib is not read only\n attrib.readOnly ||\n // check if there is any other reason the cell should be read only\n meta?.readOnly?.some(\n (id) => id === columnIdParsed || (id === 'attrib' && attrib.builtin),\n )\n }\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: columnIdParsed, value, type, isAttrib: true, rowId: row.id },\n { selection: !!attrib.data.enum?.length ? meta?.selection : undefined },\n )\n }\n />\n )\n },\n }\n return attribColumn\n })\n\n const linkColumns: ColumnDef<TableRow>[] = !includeLinks\n ? []\n : links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) return false\n // Check if inputType and outputType are in scopes\n if (!scopes.includes(link.inputType) && !scopes.includes(link.outputType)) return false\n return true\n })\n .flatMap((link) => {\n const createLinkColumn = (direction: 'in' | 'out'): ColumnDef<TableRow> => {\n return {\n id: getLinkColumnId(link, direction),\n accessorKey: `links.${getLinkKey(link, direction)}`,\n header: () => (\n <LinkColumnHeader>\n {getLinkLabel(link, direction)}{' '}\n <Icon\n icon={getEntityTypeIcon(direction === 'in' ? link.inputType : link.outputType)}\n />\n </LinkColumnHeader>\n ),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\n const columnIdParsed = column.id.replace('link_', '')\n\n const { id, value } = getValueIdType(row, columnIdParsed, 'links')\n const cellValue = value?.map((v: any) => v.label)\n const valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: row.original.entityId || row.original.id,\n entityType: row.original.entityType,\n link: {\n label: link.linkType,\n linkType: link.name,\n targetEntityType: direction === 'in' ? link.inputType : link.outputType,\n },\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('links', { loading: row.original.isLoading })}\n columnId={column.id}\n value={cellValue}\n valueData={valueData}\n folderId={row.original.folderId}\n attributeData={{ type: 'links' }}\n />\n )\n },\n }\n }\n\n return [createLinkColumn('in'), createLinkColumn('out')]\n })\n\n const allColumns = [...staticColumns, ...attributeColumns, ...linkColumns]\n\n // Add extra columns if provided\n if (extraColumns) {\n extraColumns.forEach(({ column, position = -1 }) => {\n if (position >= 0 && position < allColumns.length) {\n allColumns.splice(position, 0, column)\n } else {\n allColumns.push(column)\n }\n })\n }\n\n return allColumns\n}\n\nexport default buildTreeTableColumns\n\nexport const getValueIdType = (\n row: Row<TableRow>,\n field: string,\n nestedField?: keyof TableRow,\n): {\n value: any\n id: string\n type: string\n} => ({\n value: nestedField\n ? (row.original[nestedField as keyof TableRow] as any)?.[field]\n : (row.original[field as keyof TableRow] as any),\n id: row.id,\n type: row.original.entityType,\n})\n"],"names":["isEntityExpandable","entityType","COLUMN_MIN_SIZE","withLoadingStateSort","sortFn","rowA","rowB","args","pathSort","labelA","labelB","valueLengthSort","columnId","valueA","getCellValue","valueB","lengthA","lengthB","attribSort","attrib","indexA","o","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","scopes","attribs","links","includeLinks","showHierarchy","options","excluded","excludedSorting","extraColumns","groupBy","nameLabel","staticColumns","isIncluded","id","canSort","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","column","table","meta","cellId","getCellId","thumbnail","ThumbnailWidget","clsx","value","type","getValueIdType","isEditing","useCellEditing","rowHeight","useColumnSettingsContext","TableCellContent","MetaWidget","NEXT_PAGE_ID","LoadMoreWidget","isExpandable","jsxs","GroupHeaderWidget","EntityNameWidget","getColumnDisplayConfig","CellWidget","a","b","c","s","isEntityRestricted","READ_ONLY","Icon","getEntityTypeIcon","upperFirst","fieldId","folderHasVersions","versionValue","subtasksData","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","LinkColumnHeader","cellValue","v","valueData","allColumns","position","field","nestedField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildTreeTableColumns.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/buildTreeTableColumns.tsx"],"sourcesContent":["import { ColumnDef, FilterFnOption, Row, SortingFn, sortingFns } from '@tanstack/react-table'\nimport { TableRow } from './types/table'\nimport { AttributeData, ProjectTableAttribute, BuiltInFieldOptions } from './types'\nimport {\n CellWidget,\n MetaWidget,\n EntityNameWidget,\n GroupHeaderWidget,\n ThumbnailWidget,\n} from './widgets'\nimport { getCellId, getCellValue, parseCellId } from './utils/cellUtils'\nimport { LinkColumnHeader, TableCellContent } from './ProjectTreeTable.styled'\nimport clsx from 'clsx'\nimport { SelectionCell } from './components/SelectionCell'\nimport RowSelectionHeader from './components/RowSelectionHeader'\nimport { ROW_SELECTION_COLUMN_ID } from './context/SelectionCellsContext'\nimport { TableGroupBy, useCellEditing, useColumnSettingsContext } from './context'\nimport { NEXT_PAGE_ID, parseGroupId } from './hooks/useBuildGroupByTableData'\nimport LoadMoreWidget from './widgets/LoadMoreWidget'\nimport { LinkTypeModel } from '@shared/api'\nimport { LinkWidgetData } from './widgets/LinksWidget'\nimport { SubtasksWidgetData } from './widgets/SubtasksWidget'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { getEntityTypeIcon } from '@shared/util'\nimport { NameWidgetData } from '@shared/components/RenameForm'\nimport { isEntityRestricted, READ_ONLY } from './utils/restrictedEntity'\nimport { getColumnDisplayConfig } from './types/columnConfig'\nimport { upperFirst } from 'lodash'\n\nexport const isEntityExpandable = (entityType: string) => ['folder', 'product'].includes(entityType)\n\nexport const COLUMN_MIN_SIZE = 50\n\n// Wrapper function for sorting that pushes isLoading rows to the bottom\nconst withLoadingStateSort = (sortFn: SortingFn<any>): SortingFn<any> => {\n return (rowA, rowB, ...args) => {\n // If row loading states differ, prioritize non-loading rows\n if (rowA.original.isLoading !== rowB.original.isLoading) {\n return rowA.original.isLoading ? 1 : -1\n }\n // Otherwise, use the original sort function\n return sortFn(rowA, rowB, ...args)\n }\n}\n\nconst pathSort: SortingFn<any> = (rowA, rowB) => {\n const labelA = rowA.original.path || rowA.original.name || ''\n const labelB = rowB.original.path || rowB.original.name || ''\n // sort alphabetically by label\n return labelA.localeCompare(labelB)\n}\n\nconst valueLengthSort: SortingFn<any> = (rowA, rowB, columnId) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n const lengthA = Array.isArray(valueA) ? valueA.length : valueA ? String(valueA).length : 0\n const lengthB = Array.isArray(valueB) ? valueB.length : valueB ? String(valueB).length : 0\n return lengthA - lengthB\n}\n\ntype AttribSortingFn = (rowA: any, rowB: any, columnId: string, attribute?: AttributeData) => number\n// sort by the order of the enum options\nconst attribSort: AttribSortingFn = (rowA, rowB, columnId, attrib) => {\n const valueA = getCellValue(rowA.original, columnId)\n const valueB = getCellValue(rowB.original, columnId)\n // if attrib is defined and has enum options, use them\n if (attrib && attrib.enum) {\n const indexA = attrib.enum.findIndex((o) => o.value === valueA)\n const indexB = attrib.enum.findIndex((o) => o.value === valueB)\n return indexB - indexA < 0 ? 1 : -1\n } else if (attrib?.type === 'datetime') {\n return sortingFns.datetime(rowA, rowB, columnId)\n } else if (attrib?.type === 'boolean') {\n const boolA = valueA === true ? 1 : 0\n const boolB = valueB === true ? 1 : 0\n return boolA - boolB\n } else {\n return sortingFns.alphanumeric(rowA, rowB, columnId)\n }\n}\n\nexport const getLinkLabel = (\n link: Pick<LinkTypeModel, 'linkType'>,\n direction: 'in' | 'out' | string,\n) => `${link.linkType.charAt(0).toUpperCase() + link.linkType.slice(1)} (${direction})`\n\nexport const getLinkKey = (link: Pick<LinkTypeModel, 'name'>, direction: 'in' | 'out' | string) =>\n `${link.name.replaceAll('_', '').replaceAll('-', '').replaceAll('|', '_')}_${direction}`\n\nexport const getLinkColumnId = (\n link: Pick<LinkTypeModel, 'name'>,\n direction: 'in' | 'out' | string,\n) => `link_${getLinkKey(link, direction)}`\n\nexport type DefaultColumns =\n | typeof ROW_SELECTION_COLUMN_ID\n | 'thumbnail'\n | 'name'\n | 'entityType'\n | 'folder'\n | 'status'\n | 'subType'\n | 'assignees'\n | 'tags'\n | 'createdAt'\n | 'updatedAt'\n\nexport type TreeTableExtraColumn = { column: ColumnDef<TableRow>; position?: number }\n\nexport type BuildTreeTableColumnsProps = {\n scopes: string[]\n attribs: ProjectTableAttribute[]\n links: LinkTypeModel[]\n includeLinks?: boolean\n showHierarchy: boolean\n options: BuiltInFieldOptions\n excluded?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n groupBy?: TableGroupBy\n nameLabel?: string\n}\n\nconst buildTreeTableColumns = ({\n scopes,\n attribs,\n links = [],\n includeLinks = true,\n showHierarchy,\n options,\n excluded,\n excludedSorting,\n extraColumns,\n groupBy,\n nameLabel = 'Entity',\n}: BuildTreeTableColumnsProps) => {\n const staticColumns: ColumnDef<TableRow>[] = []\n\n // Helper to check if a column should be included\n const isIncluded = (id: DefaultColumns | string) => !excluded?.includes(id)\n const canSort = (id: DefaultColumns | string) => !excludedSorting?.includes(id)\n\n // Conditionally add static columns\n if (isIncluded(ROW_SELECTION_COLUMN_ID)) {\n staticColumns.push({\n id: ROW_SELECTION_COLUMN_ID,\n enableResizing: false,\n enableSorting: false,\n enablePinning: false,\n enableHiding: false,\n\n header: () => <RowSelectionHeader />,\n cell: ({ row }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n return <SelectionCell />\n },\n size: 20,\n })\n }\n\n if (isIncluded('thumbnail')) {\n staticColumns.push({\n id: 'thumbnail',\n header: 'Thumbnail',\n size: 63,\n minSize: 24,\n enableResizing: true,\n enableSorting: false,\n cell: ({ row, column, table }) => {\n if (row.original.entityType === 'group' || row.original.metaType) return null\n const meta = table.options.meta\n if (!meta) return null\n const cellId = getCellId(row.id, column.id)\n let thumbnail = {\n entityId: row.original.entityId || row.id,\n entityType: row.original.entityType,\n updatedAt: row.original.updatedAt,\n }\n // check for thumbnail override\n if (row.original.thumbnail) {\n thumbnail = row.original.thumbnail\n }\n return (\n <ThumbnailWidget\n id={cellId}\n entityId={thumbnail.entityId}\n entityType={thumbnail.entityType}\n updatedAt={thumbnail.updatedAt}\n icon={row.original.icon}\n projectName={meta?.projectName as string}\n className={clsx('thumbnail', {\n loading: row.original.isLoading,\n })}\n isPlayable={row.original.hasReviewables}\n />\n )\n },\n })\n }\n\n if (isIncluded('name')) {\n staticColumns.push({\n id: 'name',\n accessorKey: 'name',\n header: nameLabel,\n minSize: COLUMN_MIN_SIZE,\n sortingFn: withLoadingStateSort(pathSort),\n enableSorting: groupBy ? false : canSort('name'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: groupBy ? false : true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n const { isEditing } = useCellEditing()\n const { rowHeight = 40 } = useColumnSettingsContext()\n const cellId = getCellId(row.id, column.id)\n\n if (row.original.metaType) {\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', 'readonly', row.original.entityType)}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + 8px)`,\n pointerEvents: 'none',\n }}\n tabIndex={0}\n >\n <MetaWidget metaType={row.original.metaType} label={row.original.label} />\n </TableCellContent>\n )\n }\n\n if (row.original.entityType === NEXT_PAGE_ID && row.original.group) {\n return (\n <LoadMoreWidget\n id={row.original.group.value}\n onLoadMore={(id) => meta?.loadMoreRows?.(id)}\n />\n )\n }\n\n const isExpandable =\n row.getCanExpand() &&\n !!row.originalSubRows &&\n (isEntityExpandable(row.original.entityType) || !!row.original.group)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('large', row.original.entityType, {\n loading: row.original.isLoading,\n hierarchy: showHierarchy,\n })}\n style={{\n paddingLeft: `calc(${row.depth * 1}rem + ${\n isExpandable || !row.getCanExpand() ? 0 : 32\n }px + 8px)`,\n }}\n tabIndex={0}\n >\n {row.original.group ? (\n <GroupHeaderWidget\n id={row.id}\n label={row.original.group.label}\n name={row.original.name}\n icon={row.original.group.icon}\n img={row.original.group.img}\n color={row.original.group.color}\n count={row.original.group.count}\n isExpanded={row.getIsExpanded()}\n isEmpty={row.original.group.count === 0}\n toggleExpanded={row.getToggleExpandedHandler()}\n />\n ) : (\n <EntityNameWidget\n id={row.id}\n label={row.original.label}\n name={row.original.name}\n path={!showHierarchy ? '/' + row.original.parents?.join('/') : undefined}\n icon={row.original.icon}\n type={row.original.entityType}\n isExpandable={isExpandable}\n isExpanded={row.getIsExpanded()}\n toggleExpandAll={() => meta?.toggleExpandAll?.([row.id])}\n toggleExpanded={row.getToggleExpandedHandler()}\n rowHeight={rowHeight}\n columnDisplayConfig={getColumnDisplayConfig(meta?.columnsConfig, 'name')}\n />\n )}\n {isEditing(cellId) && (\n <CellWidget\n rowId={id}\n className={clsx('name', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n valueData={\n {\n name: row.original.name,\n label: row.original.label,\n meta,\n entityRowId: id,\n columnId: column.id,\n hasVersions: !!row.original.hasVersions,\n } as NameWidgetData\n }\n entityType={type}\n attributeData={{ type: 'name' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('status')) {\n staticColumns.push({\n id: 'status',\n accessorKey: 'status',\n minSize: COLUMN_MIN_SIZE,\n header: 'Status',\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: options.status, type: 'string' }),\n ),\n sortDescFirst: true,\n enableSorting: canSort('status'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n const meta = table.options.meta\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('status', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={meta?.options?.status.filter((s) => s.scope?.includes(type))}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n pt: {\n template: {\n pt: {\n icon: {\n style: {\n fontVariationSettings: \"'FILL' 1, 'wght' 200, 'GRAD' 200, 'opsz' 20\",\n },\n },\n },\n },\n },\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('entityType')) {\n staticColumns.push({\n id: 'entityType',\n accessorKey: 'entityType',\n header: 'Entity Type',\n minSize: 20,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.alphanumeric),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const cellId = getCellId(row.id, column.id)\n\n return (\n <TableCellContent\n id={cellId}\n className={clsx('entityType', READ_ONLY, type, { loading: row.original.isLoading })}\n tabIndex={0}\n >\n <Icon icon={getEntityTypeIcon(type)} /> {upperFirst(value)}\n </TableCellContent>\n )\n },\n })\n }\n\n if (isIncluded('subType')) {\n staticColumns.push({\n id: 'subType',\n accessorKey: 'subType',\n header: scopes.includes('product') || scopes.includes('version') ? 'Product type' : 'Type',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('subType'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort((a, b, c) =>\n attribSort(a, b, c, { enum: [...options.folderType, ...options.taskType], type: 'string' }),\n ),\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const fieldId = type === 'folder' ? 'folderType' : 'taskType'\n const meta = table.options.meta\n const folderHasVersions = type === 'folder' && row.original.hasVersions\n return (\n <CellWidget\n rowId={id}\n className={clsx('subType', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n options={\n type === 'folder'\n ? meta?.options?.folderType\n : type === 'task'\n ? meta?.options?.taskType\n : []\n }\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: fieldId, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={\n meta?.readOnly?.includes(column.id) ||\n meta?.readOnly?.includes(fieldId) ||\n folderHasVersions\n }\n tooltip={\n folderHasVersions\n ? 'Folder type cannot be edited when versions exist within the folder'\n : undefined\n }\n />\n )\n },\n })\n }\n\n if (isIncluded('assignees')) {\n staticColumns.push({\n id: 'assignees',\n accessorKey: 'assignees',\n header: 'Assignees',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('assignees'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(valueLengthSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n if (type === 'folder')\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value=\"\"\n isPlaceholder\n />\n )\n return (\n <CellWidget\n rowId={id}\n className={clsx('assignees', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n pt={{\n enum: {\n multiSelectClose: value?.length === 0, // close the dropdown on first assignment\n search: true, // enable search at all times\n multipleOverride: false,\n },\n }}\n />\n )\n },\n })\n }\n\n if (isIncluded('folder')) {\n staticColumns.push({\n id: 'folder',\n accessorKey: 'folder',\n header: 'Folder name',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('folderName'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('folder', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n // only show authors column for products\n if (isIncluded('author') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'author',\n accessorKey: 'author',\n header: 'Author',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('author'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('author', { loading: row.original.isLoading })}\n columnId={column.id}\n value={[value]}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.assignee}\n isReadOnly={true}\n isInherited={type === 'product'} // products do not have authors, we just show the featured version's author\n />\n )\n },\n })\n }\n\n // version column for versions\n if (isIncluded('version') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'version',\n accessorKey: 'version',\n header: 'Version',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('version'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n let versionValue = row.original.versionName || value\n if (row.original.entityType === 'product') {\n // show summary of versions for products\n versionValue = `${row.original.versionName} (${row.original.versionsCount || 0} versions)`\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('version', { loading: row.original.isLoading })}\n columnId={column.id}\n value={versionValue}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n // product name column for versions and products\n if (isIncluded('product') && ['version', 'product'].some((s) => scopes.includes(s))) {\n staticColumns.push({\n id: 'product',\n accessorKey: 'product',\n header: 'Product name',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('product'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(pathSort),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('product', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'string' }}\n isReadOnly={true}\n />\n )\n },\n })\n }\n\n if (isIncluded('tags')) {\n staticColumns.push({\n id: 'tags',\n accessorKey: 'tags',\n header: 'Tags',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('tags'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(valueLengthSort),\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('tags', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'list_of_strings' }}\n options={meta?.options?.tag}\n isCollapsed={!!row.original.childOnlyMatch}\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: column.id, value, type, rowId: row.id },\n { selection: meta?.selection },\n )\n }\n isReadOnly={meta?.readOnly?.includes(column.id) || isEntityRestricted(type)}\n enableCustomValues\n />\n )\n },\n })\n }\n\n if (isIncluded('createdAt')) {\n staticColumns.push({\n id: 'createdAt',\n accessorKey: 'createdAt',\n header: 'Created at',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('createdAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('createdAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('updatedAt')) {\n staticColumns.push({\n id: 'updatedAt',\n accessorKey: 'updatedAt',\n header: 'Updated at',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: canSort('updatedAt'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n sortingFn: withLoadingStateSort(sortingFns.datetime),\n cell: ({ row, column }) => {\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n return (\n <CellWidget\n rowId={id}\n className={clsx('updatedAt', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: 'datetime' }}\n isCollapsed={!!row.original.childOnlyMatch}\n isReadOnly={true}\n pt={{ date: { showTime: true } }}\n />\n )\n },\n })\n }\n\n if (isIncluded('subtasks') && scopes.includes('task')) {\n staticColumns.push({\n id: 'subtasks',\n accessorKey: 'subtasks',\n header: 'Subtasks',\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const { value, id, type } = getValueIdType(row, column.id)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n\n // only show for tasks\n if (type !== 'task') return <div className=\"readonly\"></div>\n\n const subtasksData: SubtasksWidgetData = {\n taskId: parseGroupId(row.id) || row.original.entityId || row.original.id,\n subtasks: value || [],\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('subtasks', { loading: row.original.isLoading })}\n columnId={column.id}\n value={subtasksData.subtasks?.map((s: any) => s.label || s.name) || []}\n valueData={subtasksData}\n attributeData={{ type: 'subtasks' }}\n isReadOnly={meta?.readOnly?.includes(column.id)}\n />\n )\n },\n })\n }\n\n const attributeColumns: ColumnDef<TableRow>[] = attribs\n .filter((attrib) => {\n // filter out attributes that are out of scope\n if (attrib.scope && !attrib.scope.some((s) => scopes.includes(s))) return false\n\n const columnId = 'attrib_' + attrib.name\n // Check if the specific attribute column is excluded\n // or if all built-in attributes are excluded and this is a built-in attribute\n if (!isIncluded(columnId)) return false\n if (attrib.builtin && !isIncluded('attrib')) return false\n return true\n })\n .map((attrib) => {\n const attribColumn: ColumnDef<TableRow> = {\n id: 'attrib_' + attrib.name,\n accessorKey: 'attrib.' + attrib.name,\n header: attrib.data.title || attrib.name,\n minSize: COLUMN_MIN_SIZE,\n filterFn: 'fuzzy' as FilterFnOption<TableRow>,\n sortingFn: withLoadingStateSort((a, b, c) => attribSort(a, b, c, attrib.data)),\n enableSorting: canSort(attrib.name) && canSort('attrib'),\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column, table }) => {\n const meta = table.options.meta\n const columnIdParsed = column.id.replace('attrib_', '')\n const { value, id, type } = getValueIdType(row, columnIdParsed, 'attrib')\n const isInherited = !row.original.ownAttrib?.includes(columnIdParsed)\n if (['group', NEXT_PAGE_ID].includes(type) || row.original.metaType) return null\n const outOfScopeAndNoValue =\n !attrib.scope?.includes(type as (typeof attrib.scope)[number]) &&\n (value === null || value === undefined)\n\n // if the attribute is not in scope, we should nothing\n if (outOfScopeAndNoValue) return null\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('attrib', { loading: row.original.isLoading })}\n columnId={column.id}\n value={value}\n attributeData={{ type: attrib.data.type || 'string' }}\n options={attrib.data.enum || []}\n isCollapsed={!!row.original.childOnlyMatch}\n isInherited={isInherited}\n isReadOnly={\n // check attrib is not read only\n attrib.readOnly ||\n // check if there is any other reason the cell should be read only\n meta?.readOnly?.some(\n (id) => id === columnIdParsed || (id === 'attrib' && attrib.builtin),\n )\n }\n onChange={(value) =>\n meta?.updateEntities?.(\n { field: columnIdParsed, value, type, isAttrib: true, rowId: row.id },\n { selection: !!attrib.data.enum?.length ? meta?.selection : undefined },\n )\n }\n />\n )\n },\n }\n return attribColumn\n })\n\n const linkColumns: ColumnDef<TableRow>[] = !includeLinks\n ? []\n : links\n .filter((link) => {\n // Check if the link type is excluded\n if (!isIncluded(link.linkType) || !isIncluded('link')) return false\n // Check if inputType and outputType are in scopes\n if (!scopes.includes(link.inputType) && !scopes.includes(link.outputType)) return false\n return true\n })\n .flatMap((link) => {\n const createLinkColumn = (direction: 'in' | 'out'): ColumnDef<TableRow> => {\n return {\n id: getLinkColumnId(link, direction),\n accessorKey: `links.${getLinkKey(link, direction)}`,\n header: () => (\n <LinkColumnHeader>\n {getLinkLabel(link, direction)}{' '}\n <Icon\n icon={getEntityTypeIcon(direction === 'in' ? link.inputType : link.outputType)}\n />\n </LinkColumnHeader>\n ),\n minSize: COLUMN_MIN_SIZE,\n enableSorting: false,\n enableResizing: true,\n enablePinning: true,\n enableHiding: true,\n cell: ({ row, column }) => {\n const columnIdParsed = column.id.replace('link_', '')\n\n const { id, value } = getValueIdType(row, columnIdParsed, 'links')\n const cellValue = value?.map((v: any) => v.label)\n const valueData: LinkWidgetData = {\n links: value,\n direction: direction,\n entityId: row.original.entityId || row.original.id,\n entityType: row.original.entityType,\n link: {\n label: link.linkType,\n linkType: link.name,\n targetEntityType: direction === 'in' ? link.inputType : link.outputType,\n },\n }\n\n return (\n <CellWidget\n rowId={id}\n className={clsx('links', { loading: row.original.isLoading })}\n columnId={column.id}\n value={cellValue}\n valueData={valueData}\n folderId={row.original.folderId}\n attributeData={{ type: 'links' }}\n />\n )\n },\n }\n }\n\n return [createLinkColumn('in'), createLinkColumn('out')]\n })\n\n const allColumns = [...staticColumns, ...attributeColumns, ...linkColumns]\n\n // Add extra columns if provided\n if (extraColumns) {\n extraColumns.forEach(({ column, position = -1 }) => {\n if (position >= 0 && position < allColumns.length) {\n allColumns.splice(position, 0, column)\n } else {\n allColumns.push(column)\n }\n })\n }\n\n return allColumns\n}\n\nexport default buildTreeTableColumns\n\nexport const getValueIdType = (\n row: Row<TableRow>,\n field: string,\n nestedField?: keyof TableRow,\n): {\n value: any\n id: string\n type: string\n} => ({\n value: nestedField\n ? (row.original[nestedField as keyof TableRow] as any)?.[field]\n : (row.original[field as keyof TableRow] as any),\n id: row.id,\n type: row.original.entityType,\n})\n"],"names":["isEntityExpandable","entityType","COLUMN_MIN_SIZE","withLoadingStateSort","sortFn","rowA","rowB","args","pathSort","labelA","labelB","valueLengthSort","columnId","valueA","getCellValue","valueB","lengthA","lengthB","attribSort","attrib","indexA","o","sortingFns","getLinkLabel","link","direction","getLinkKey","getLinkColumnId","buildTreeTableColumns","scopes","attribs","links","includeLinks","showHierarchy","options","excluded","excludedSorting","extraColumns","groupBy","nameLabel","staticColumns","isIncluded","id","canSort","ROW_SELECTION_COLUMN_ID","jsx","RowSelectionHeader","row","SelectionCell","column","table","meta","cellId","getCellId","thumbnail","ThumbnailWidget","clsx","value","type","getValueIdType","isEditing","useCellEditing","rowHeight","useColumnSettingsContext","TableCellContent","MetaWidget","NEXT_PAGE_ID","LoadMoreWidget","isExpandable","jsxs","GroupHeaderWidget","EntityNameWidget","getColumnDisplayConfig","CellWidget","a","b","c","s","isEntityRestricted","READ_ONLY","Icon","getEntityTypeIcon","upperFirst","fieldId","folderHasVersions","versionValue","subtasksData","parseGroupId","attributeColumns","columnIdParsed","isInherited","linkColumns","createLinkColumn","LinkColumnHeader","cellValue","v","valueData","allColumns","position","field","nestedField"],"mappings":"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"}
|