@ynput/ayon-frontend-shared 0.3.33 → 0.3.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index.cjs22.js +1 -1
- package/dist/_virtual/index.cjs23.js +1 -1
- package/dist/_virtual/index.cjs24.js +1 -1
- package/dist/_virtual/index.cjs7.js +1 -1
- package/dist/_virtual/index.cjs9.js +1 -1
- package/dist/_virtual/index.es22.js +3 -3
- package/dist/_virtual/index.es23.js +5 -5
- package/dist/_virtual/index.es24.js +5 -5
- package/dist/_virtual/index.es7.js +2 -5
- package/dist/_virtual/index.es7.js.map +1 -1
- package/dist/_virtual/index.es9.js +5 -2
- package/dist/_virtual/index.es9.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +2 -2
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +2 -2
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +97 -98
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js +3 -3
- package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityDate.es.js +37 -35
- package/dist/shared/src/containers/Feed/components/ActivityDate.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityItem.es.js +14 -13
- package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +39 -39
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js +13 -4
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js +17 -8
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +207 -233
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js +7 -10
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js +10 -13
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js +16 -22
- package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +18 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -0
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +8 -8
- package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.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 +67 -64
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +13 -11
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +4 -3
- package/dist/types/api/generated/graphqlLinks.d.ts +2 -1
- package/dist/types/api/queries/activities/getActivities.d.ts +77 -77
- package/dist/types/api/queries/activities/updateActivities.d.ts +4 -4
- package/dist/types/api/queries/entities/getEntity.d.ts +1 -1
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +1 -1
- package/dist/types/api/queries/entities/updateEntity.d.ts +1 -1
- package/dist/types/api/queries/entityLists/getLists.d.ts +1 -1
- package/dist/types/api/queries/overview/getOverview.d.ts +1 -1
- package/dist/types/api/queries/project/getProject.d.ts +1 -1
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -1
- package/dist/types/api/queries/users/getUsers.d.ts +1 -1
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +2 -2
- package/dist/types/containers/Feed/components/ActivityDate.d.ts +2 -1
- package/dist/types/containers/Feed/components/ActivityItem.d.ts +1 -0
- package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +2 -1
- package/dist/types/containers/Feed/components/CommentInput/CommentInput.d.ts +1 -16
- package/dist/types/containers/Feed/components/CommentInput/VersionReviewPill.d.ts +1 -2
- package/dist/types/containers/Feed/components/CommentInput/index.d.ts +2 -0
- package/dist/types/containers/Feed/components/CommentInput/types.d.ts +16 -0
- package/dist/types/containers/Feed/hooks/useCommentMutations.d.ts +1 -1
- package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionReviewPill.es.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/VersionReviewPill.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from
|
|
1
|
+
{"version":3,"file":"VersionReviewPill.es.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/VersionReviewPill.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\n\nimport * as Styled from './CommentInput.styled'\nimport { getFuzzyDate, REFRESH_INTERVAL_MS } from '../ActivityDate'\nimport { Icon } from '@ynput/ayon-react-components'\nimport {\n getIconForFeedback,\n getVerbForFeedback,\n} from '../ActivityVersionReview/ActivityVersionReview'\nimport { FeedActivity } from '@shared/api'\nimport { clsx } from 'clsx'\n\ntype Props = {\n lastOwnVersionReview: FeedActivity\n}\n\nexport const VersionReviewPill = ({ lastOwnVersionReview }: Props) => {\n // used to update the time since last guest review\n const [now, setNow] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => setNow(new Date()), REFRESH_INTERVAL_MS)\n\n return () => clearInterval(interval)\n }, [])\n\n const lastOwnVersionReviewFeedback = useMemo(() => {\n return lastOwnVersionReview?.activityData?.feedback\n }, [lastOwnVersionReview])\n\n const lastOwnVersionReviewDate = useMemo(() => {\n if (!lastOwnVersionReview?.createdAt) return ''\n return getFuzzyDate(new Date(lastOwnVersionReview?.createdAt)).toLowerCase()\n }, [lastOwnVersionReview?.createdAt, now])\n\n return (\n <Styled.LastOwnVersionReview className={clsx(lastOwnVersionReviewFeedback)}>\n <Icon icon={getIconForFeedback(lastOwnVersionReviewFeedback)} />\n You last {getVerbForFeedback(lastOwnVersionReviewFeedback)} {lastOwnVersionReviewDate}{' '}\n {lastOwnVersionReviewDate === 'just now' ? '' : 'ago'}\n </Styled.LastOwnVersionReview>\n )\n}\n"],"names":["VersionReviewPill","lastOwnVersionReview","now","setNow","useState","useEffect","interval","REFRESH_INTERVAL_MS","lastOwnVersionReviewFeedback","useMemo","lastOwnVersionReviewDate","getFuzzyDate","Styled.LastOwnVersionReview","clsx","jsx","Icon","getIconForFeedback","getVerbForFeedback"],"mappings":";;;;;;;AAgBO,MAAMA,IAAoB,CAAC,EAAE,sBAAAC,QAAkC;AAEpE,QAAM,CAACC,GAAKC,CAAM,IAAIC,EAAS,oBAAI,MAAM;AAEzC,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAW,YAAY,MAAMH,sBAAW,KAAA,CAAM,GAAGI,CAAmB;AAE1E,WAAO,MAAM,cAAcD,CAAQ;AAAA,EACrC,GAAG,CAAA,CAAE;AAEL,QAAME,IAA+BC,EAAQ,MACpCR,GAAsB,cAAc,UAC1C,CAACA,CAAoB,CAAC,GAEnBS,IAA2BD,EAAQ,MAClCR,GAAsB,YACpBU,EAAa,IAAI,KAAKV,GAAsB,SAAS,CAAC,EAAE,YAAA,IADlB,IAE5C,CAACA,GAAsB,WAAWC,CAAG,CAAC;AAEzC,gCACGU,GAAA,EAA4B,WAAWC,EAAKL,CAA4B,GACvE,UAAA;AAAA,IAAAM,gBAAAA,EAAAA,IAACC,GAAA,EAAK,MAAMC,EAAmBR,CAA4B,EAAA,CAAG;AAAA,IAAE;AAAA,IACtDS,EAAmBT,CAA4B;AAAA,IAAE;AAAA,IAAEE;AAAA,IAA0B;AAAA,IACtFA,MAA6B,aAAa,KAAK;AAAA,EAAA,GAClD;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var t=(e=>(e.APPROVE="approve",e.REQUEST_CHANGES="request_changes",e))(t||{});const i={"@@@":{id:"task"},"@@":{id:"version"},"@":{id:"user",isCircle:!0}};exports.VersionReviewFeedback=t;exports.mentionTypeOptions=i;
|
|
2
|
+
//# sourceMappingURL=types.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/types.ts"],"sourcesContent":["export enum VersionReviewFeedback {\n APPROVE = 'approve',\n REQUEST_CHANGES = 'request_changes',\n}\n\nexport const mentionTypeOptions = {\n '@@@': {\n id: 'task',\n },\n '@@': {\n id: 'version',\n },\n '@': {\n id: 'user',\n isCircle: true,\n },\n}\n"],"names":["VersionReviewFeedback","mentionTypeOptions"],"mappings":"gFAAO,IAAKA,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,gBAAkB,kBAFRA,IAAAA,GAAA,CAAA,CAAA,EAKL,MAAMC,EAAqB,CAChC,MAAO,CACL,GAAI,MAAA,EAEN,KAAM,CACJ,GAAI,SAAA,EAEN,IAAK,CACH,GAAI,OACJ,SAAU,EAAA,CAEd"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var t = /* @__PURE__ */ ((r) => (r.APPROVE = "approve", r.REQUEST_CHANGES = "request_changes", r))(t || {});
|
|
2
|
+
const e = {
|
|
3
|
+
"@@@": {
|
|
4
|
+
id: "task"
|
|
5
|
+
},
|
|
6
|
+
"@@": {
|
|
7
|
+
id: "version"
|
|
8
|
+
},
|
|
9
|
+
"@": {
|
|
10
|
+
id: "user",
|
|
11
|
+
isCircle: !0
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
t as VersionReviewFeedback,
|
|
16
|
+
e as mentionTypeOptions
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.es.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/types.ts"],"sourcesContent":["export enum VersionReviewFeedback {\n APPROVE = 'approve',\n REQUEST_CHANGES = 'request_changes',\n}\n\nexport const mentionTypeOptions = {\n '@@@': {\n id: 'task',\n },\n '@@': {\n id: 'version',\n },\n '@': {\n id: 'user',\n isCircle: true,\n },\n}\n"],"names":["VersionReviewFeedback","mentionTypeOptions"],"mappings":"AAAO,IAAKA,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,kBAAkB,mBAFRA,IAAAA,KAAA,CAAA,CAAA;AAKL,MAAMC,IAAqB;AAAA,EAChC,OAAO;AAAA,IACL,IAAI;AAAA,EAAA;AAAA,EAEN,MAAM;AAAA,IACJ,IAAI;AAAA,EAAA;AAAA,EAEN,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,UAAU;AAAA,EAAA;AAEd;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCommentMutations.cjs.js","sources":["../../../../../../src/containers/Feed/hooks/useCommentMutations.ts"],"sourcesContent":["import { getEntityId } from '@shared/util'\nimport { formatISO } from 'date-fns'\nimport { toast } from 'react-toastify'\nimport { useFeedContext } from '../context/FeedContext'\nimport { SavedAnnotationMetadata } from '..'\nimport { VersionReviewFeedback } from '../components/CommentInput/CommentInput'\nimport { getVerbForFeedbackBody } from '../components/ActivityVersionReview/ActivityVersionReview'\n\n// Type definitions\ninterface Entity {\n id: string\n subTitle?: string\n}\n\ninterface File {\n id: string\n [key: string]: any\n}\n\nexport interface Activity {\n activityId: string\n entityId: string\n body: string\n files: File[]\n [key: string]: any\n}\n\ninterface CommentPatch {\n body: string\n activityType: string\n activityId: string\n entityId: string\n referenceType: string\n authorName: string\n authorFullName?: string\n createdAt: string\n files: File[]\n activityData: any\n reactions: any[]\n origin: {\n id: string\n type: string\n name?: string\n }\n author: {\n active: boolean\n deleted: boolean\n }\n}\n\ninterface CommentMutationsProps {\n projectName: string\n entityType: string\n entities: Entity[]\n filter: any\n entityListId?: string\n}\n\ninterface CommentPayload {\n entityId: string\n newId: string\n subTitle?: string\n value: string\n files?: File[]\n data?: any\n}\n\n// does the body have a checklist anywhere in it\n// * [ ] or * [x]\nexport const bodyHasChecklist = (body: string): boolean => {\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\nconst useCommentMutations = ({\n projectName,\n entityType,\n entities = [],\n filter,\n entityListId,\n}: CommentMutationsProps) => {\n const {\n createEntityActivity,\n updateActivity,\n deleteActivity,\n isUpdatingActivity,\n userName,\n userFullName,\n activityTypes,\n } = useFeedContext()\n const entityIds = entities.map((entity) => entity.id)\n\n const createPatch = ({\n entityId,\n newId,\n subTitle,\n value,\n files = [],\n data = {},\n }: CommentPayload): CommentPatch => {\n const patch: CommentPatch = {\n body: value,\n activityType: 'comment',\n activityId: newId,\n entityId: entityId,\n referenceType: 'origin',\n authorName: userName,\n authorFullName: userFullName,\n createdAt: formatISO(new Date()),\n files: files,\n reactions: [],\n activityData: data,\n origin: {\n id: '8090c2dafcc811eeaf820242c0a80002',\n type: entityType,\n name: subTitle,\n },\n author: {\n active: true,\n deleted: false,\n },\n }\n\n return patch\n }\n\n const submitComment = async (\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n const fileIds = files.map((file) => file.id)\n\n const commentData = entityListId ? { ...data, entityList: entityListId } : data\n\n const newComment = {\n body: value,\n activityType: 'comment',\n id: newId,\n files: fileIds,\n data: commentData,\n }\n\n // filter out files which are transparent versions of an annotation\n const optimisticFiles = files.filter(\n ({ id }) =>\n !data.annotations?.some(\n (annotation: SavedAnnotationMetadata) => annotation.transparent === id,\n ),\n )\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value, files: optimisticFiles, data })\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityIds, activityTypes }\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newComment,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n })\n\n await Promise.all(promises)\n }\n\n const updateComment = async (\n activity: Activity,\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n const fileIds = files.map((file) => file.id)\n\n const updatedActivity = {\n body: value,\n files: fileIds,\n data,\n }\n\n const patch = {\n ...activity,\n ...updatedActivity,\n files,\n }\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n try {\n await updateActivity({\n projectName,\n data: updatedActivity,\n activityId: activity.activityId,\n entityId: activity.entityId,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n } catch (error: any) {\n console.error(error)\n toast.error(error?.data?.detail)\n // so higher level can detect the error\n throw error\n }\n }\n\n const deleteComment = async (id: string, entityId: string, refs: any[] = []): Promise<void> => {\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n if (!id) return\n\n try {\n await deleteActivity({\n projectName,\n activityId: id,\n entityId,\n filter,\n patch: { activityId: id },\n refs,\n ...argsForCachingMatching,\n })\n } catch (error) {\n // error is handled in the mutation\n }\n }\n\n const submitReview = async (\n feedback: VersionReviewFeedback\n ): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n\n const data = { feedback, entityList: entityListId }\n const newReview = {\n body: getVerbForFeedbackBody(feedback, entityType),\n activityType: 'version.review',\n id: newId,\n data,\n }\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value: '', data })\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newReview,\n patch,\n filter,\n })\n })\n\n await Promise.all(promises)\n }\n\n return {\n submitComment,\n updateComment,\n deleteComment,\n submitReview,\n isSaving: isUpdatingActivity,\n }\n}\n\nexport default useCommentMutations\n"],"names":["useCommentMutations","projectName","entityType","entities","filter","entityListId","createEntityActivity","updateActivity","deleteActivity","isUpdatingActivity","userName","userFullName","activityTypes","useFeedContext","entityIds","entity","createPatch","entityId","newId","subTitle","value","files","data","formatISO","promises","getEntityId","fileIds","file","commentData","newComment","optimisticFiles","id","annotation","patch","activity","updatedActivity","argsForCachingMatching","error","toast","refs","feedback","newReview","getVerbForFeedbackBody"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useCommentMutations.cjs.js","sources":["../../../../../../src/containers/Feed/hooks/useCommentMutations.ts"],"sourcesContent":["import { getEntityId } from '@shared/util'\nimport { formatISO } from 'date-fns'\nimport { toast } from 'react-toastify'\nimport { useFeedContext } from '../context/FeedContext'\nimport { SavedAnnotationMetadata } from '..'\nimport { VersionReviewFeedback } from '../components/CommentInput/types'\nimport { getVerbForFeedbackBody } from '../components/ActivityVersionReview/ActivityVersionReview'\n\n// Type definitions\ninterface Entity {\n id: string\n subTitle?: string\n}\n\ninterface File {\n id: string\n [key: string]: any\n}\n\nexport interface Activity {\n activityId: string\n entityId: string\n body: string\n files: File[]\n [key: string]: any\n}\n\ninterface CommentPatch {\n body: string\n activityType: string\n activityId: string\n entityId: string\n referenceType: string\n authorName: string\n authorFullName?: string\n createdAt: string\n files: File[]\n activityData: any\n reactions: any[]\n origin: {\n id: string\n type: string\n name?: string\n }\n author: {\n active: boolean\n deleted: boolean\n }\n}\n\ninterface CommentMutationsProps {\n projectName: string\n entityType: string\n entities: Entity[]\n filter: any\n entityListId?: string\n}\n\ninterface CommentPayload {\n entityId: string\n newId: string\n subTitle?: string\n value: string\n files?: File[]\n data?: any\n}\n\n// does the body have a checklist anywhere in it\n// * [ ] or * [x]\nexport const bodyHasChecklist = (body: string): boolean => {\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\nconst useCommentMutations = ({\n projectName,\n entityType,\n entities = [],\n filter,\n entityListId,\n}: CommentMutationsProps) => {\n const {\n createEntityActivity,\n updateActivity,\n deleteActivity,\n isUpdatingActivity,\n userName,\n userFullName,\n activityTypes,\n } = useFeedContext()\n const entityIds = entities.map((entity) => entity.id)\n\n const createPatch = ({\n entityId,\n newId,\n subTitle,\n value,\n files = [],\n data = {},\n }: CommentPayload): CommentPatch => {\n const patch: CommentPatch = {\n body: value,\n activityType: 'comment',\n activityId: newId,\n entityId: entityId,\n referenceType: 'origin',\n authorName: userName,\n authorFullName: userFullName,\n createdAt: formatISO(new Date()),\n files: files,\n reactions: [],\n activityData: data,\n origin: {\n id: '8090c2dafcc811eeaf820242c0a80002',\n type: entityType,\n name: subTitle,\n },\n author: {\n active: true,\n deleted: false,\n },\n }\n\n return patch\n }\n\n const submitComment = async (\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n const fileIds = files.map((file) => file.id)\n\n const commentData = entityListId ? { ...data, entityList: entityListId } : data\n\n const newComment = {\n body: value,\n activityType: 'comment',\n id: newId,\n files: fileIds,\n data: commentData,\n }\n\n // filter out files which are transparent versions of an annotation\n const optimisticFiles = files.filter(\n ({ id }) =>\n !data.annotations?.some(\n (annotation: SavedAnnotationMetadata) => annotation.transparent === id,\n ),\n )\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value, files: optimisticFiles, data })\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityIds, activityTypes }\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newComment,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n })\n\n await Promise.all(promises)\n }\n\n const updateComment = async (\n activity: Activity,\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n const fileIds = files.map((file) => file.id)\n\n const updatedActivity = {\n body: value,\n files: fileIds,\n data,\n }\n\n const patch = {\n ...activity,\n ...updatedActivity,\n files,\n }\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n try {\n await updateActivity({\n projectName,\n data: updatedActivity,\n activityId: activity.activityId,\n entityId: activity.entityId,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n } catch (error: any) {\n console.error(error)\n toast.error(error?.data?.detail)\n // so higher level can detect the error\n throw error\n }\n }\n\n const deleteComment = async (id: string, entityId: string, refs: any[] = []): Promise<void> => {\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n if (!id) return\n\n try {\n await deleteActivity({\n projectName,\n activityId: id,\n entityId,\n filter,\n patch: { activityId: id },\n refs,\n ...argsForCachingMatching,\n })\n } catch (error) {\n // error is handled in the mutation\n }\n }\n\n const submitReview = async (feedback: VersionReviewFeedback): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n\n const data = { feedback, entityList: entityListId }\n const newReview = {\n body: getVerbForFeedbackBody(feedback, entityType),\n activityType: 'version.review',\n id: newId,\n data,\n }\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value: '', data })\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newReview,\n patch,\n filter,\n })\n })\n\n await Promise.all(promises)\n }\n\n return {\n submitComment,\n updateComment,\n deleteComment,\n submitReview,\n isSaving: isUpdatingActivity,\n }\n}\n\nexport default useCommentMutations\n"],"names":["useCommentMutations","projectName","entityType","entities","filter","entityListId","createEntityActivity","updateActivity","deleteActivity","isUpdatingActivity","userName","userFullName","activityTypes","useFeedContext","entityIds","entity","createPatch","entityId","newId","subTitle","value","files","data","formatISO","promises","getEntityId","fileIds","file","commentData","newComment","optimisticFiles","id","annotation","patch","activity","updatedActivity","argsForCachingMatching","error","toast","refs","feedback","newReview","getVerbForFeedbackBody"],"mappings":"2SAyEMA,EAAsB,CAAC,CAC3B,YAAAC,EACA,WAAAC,EACA,SAAAC,EAAW,CAAA,EACX,OAAAC,EACA,aAAAC,CACF,IAA6B,CAC3B,KAAM,CACJ,qBAAAC,EACA,eAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,SAAAC,EACA,aAAAC,EACA,cAAAC,CAAA,EACEC,iBAAA,EACEC,EAAYX,EAAS,IAAKY,GAAWA,EAAO,EAAE,EAE9CC,EAAc,CAAC,CACnB,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,MAAAC,EAAQ,CAAA,EACR,KAAAC,EAAO,CAAA,CAAC,KAEoB,CAC1B,KAAMF,EACN,aAAc,UACd,WAAYF,EACZ,SAAAD,EACA,cAAe,SACf,WAAYP,EACZ,eAAgBC,EAChB,UAAWY,EAAAA,UAAU,IAAI,IAAM,EAC/B,MAAAF,EACA,UAAW,CAAA,EACX,aAAcC,EACd,OAAQ,CACN,GAAI,mCACJ,KAAMpB,EACN,KAAMiB,CAAA,EAER,OAAQ,CACN,OAAQ,GACR,QAAS,EAAA,CACX,GAqJJ,MAAO,CACL,cAhJoB,MACpBC,EACAC,EAAgB,CAAA,EAChBC,EAAY,KACM,CAGlB,MAAME,EAAWrB,EAAS,IAAI,CAAC,CAAE,GAAIc,EAAU,SAAAE,KAAe,CAC5D,MAAMD,EAAQO,EAAAA,YAAA,EAERC,EAAUL,EAAM,IAAKM,GAASA,EAAK,EAAE,EAErCC,EAAcvB,EAAe,CAAE,GAAGiB,EAAM,WAAYjB,GAAiBiB,EAErEO,EAAa,CACjB,KAAMT,EACN,aAAc,UACd,GAAIF,EACJ,MAAOQ,EACP,KAAME,CAAA,EAIFE,EAAkBT,EAAM,OAC5B,CAAC,CAAE,GAAAU,CAAA,IACD,CAACT,EAAK,aAAa,KAChBU,GAAwCA,EAAW,cAAgBD,CAAA,CACtE,EAIEE,EAAQjB,EAAY,CAAE,SAAAC,EAAU,MAAAC,EAAO,SAAAC,EAAU,MAAAC,EAAO,MAAOU,EAAiB,KAAAR,EAAM,EAK5F,OAAOhB,EAAqB,CAC1B,YAAAL,EACA,WAAAC,EACA,SAAAe,EACA,KAAMY,EACN,MAAAI,EACA,OAAA7B,EACA,GAT6B,CAAE,UAAAU,EAAW,cAAAF,CAAA,CASvC,CACJ,CACH,CAAC,EAED,MAAM,QAAQ,IAAIY,CAAQ,CAC5B,EAiGE,cA/FoB,MACpBU,EACAd,EACAC,EAAgB,CAAA,EAChBC,EAAY,KACM,CAClB,MAAMI,EAAUL,EAAM,IAAKM,GAASA,EAAK,EAAE,EAErCQ,EAAkB,CACtB,KAAMf,EACN,MAAOM,EACP,KAAAJ,CAAA,EAGIW,EAAQ,CACZ,GAAGC,EACH,GAAGC,EACH,MAAAd,CAAA,EAIIe,EAAyB,CAAE,WAAAlC,EAAY,UAAAY,EAAW,cAAAF,CAAA,EAExD,GAAI,CACF,MAAML,EAAe,CACnB,YAAAN,EACA,KAAMkC,EACN,WAAYD,EAAS,WACrB,SAAUA,EAAS,SACnB,MAAAD,EACA,OAAA7B,EACA,GAAGgC,CAAA,CACJ,CACH,OAASC,EAAY,CACnB,cAAQ,MAAMA,CAAK,EACnBC,EAAAA,MAAM,MAAMD,GAAO,MAAM,MAAM,EAEzBA,CACR,CACF,EAyDE,cAvDoB,MAAON,EAAYd,EAAkBsB,EAAc,CAAA,IAAsB,CAE7F,MAAMH,EAAyB,CAAE,WAAAlC,EAAY,UAAAY,EAAW,cAAAF,CAAA,EAExD,GAAKmB,EAEL,GAAI,CACF,MAAMvB,EAAe,CACnB,YAAAP,EACA,WAAY8B,EACZ,SAAAd,EACA,OAAAb,EACA,MAAO,CAAE,WAAY2B,CAAA,EACrB,KAAAQ,EACA,GAAGH,CAAA,CACJ,CACH,MAAgB,CAEhB,CACF,EAqCE,aAnCmB,MAAOI,GAAmD,CAG7E,MAAMhB,EAAWrB,EAAS,IAAI,CAAC,CAAE,GAAIc,EAAU,SAAAE,KAAe,CAC5D,MAAMD,EAAQO,EAAAA,YAAA,EAGRH,EAAO,CAAE,SAAAkB,EAAU,WAAYnC,CAAA,EAC/BoC,EAAY,CAChB,KAAMC,EAAAA,uBAAuBF,EAAUtC,CAAU,EACjD,aAAc,iBACd,GAAIgB,EACJ,KAAAI,CAAA,EAIIW,EAAQjB,EAAY,CAAE,SAAAC,EAAU,MAAAC,EAAO,SAAAC,EAAU,MAAO,GAAI,KAAAG,EAAM,EAExE,OAAOhB,EAAqB,CAC1B,YAAAL,EACA,WAAAC,EACA,SAAAe,EACA,KAAMwB,EACN,MAAAR,EACA,OAAA7B,CAAA,CACD,CACH,CAAC,EAED,MAAM,QAAQ,IAAIoB,CAAQ,CAC5B,EAOE,SAAUf,CAAA,CAEd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCommentMutations.es.js","sources":["../../../../../../src/containers/Feed/hooks/useCommentMutations.ts"],"sourcesContent":["import { getEntityId } from '@shared/util'\nimport { formatISO } from 'date-fns'\nimport { toast } from 'react-toastify'\nimport { useFeedContext } from '../context/FeedContext'\nimport { SavedAnnotationMetadata } from '..'\nimport { VersionReviewFeedback } from '../components/CommentInput/CommentInput'\nimport { getVerbForFeedbackBody } from '../components/ActivityVersionReview/ActivityVersionReview'\n\n// Type definitions\ninterface Entity {\n id: string\n subTitle?: string\n}\n\ninterface File {\n id: string\n [key: string]: any\n}\n\nexport interface Activity {\n activityId: string\n entityId: string\n body: string\n files: File[]\n [key: string]: any\n}\n\ninterface CommentPatch {\n body: string\n activityType: string\n activityId: string\n entityId: string\n referenceType: string\n authorName: string\n authorFullName?: string\n createdAt: string\n files: File[]\n activityData: any\n reactions: any[]\n origin: {\n id: string\n type: string\n name?: string\n }\n author: {\n active: boolean\n deleted: boolean\n }\n}\n\ninterface CommentMutationsProps {\n projectName: string\n entityType: string\n entities: Entity[]\n filter: any\n entityListId?: string\n}\n\ninterface CommentPayload {\n entityId: string\n newId: string\n subTitle?: string\n value: string\n files?: File[]\n data?: any\n}\n\n// does the body have a checklist anywhere in it\n// * [ ] or * [x]\nexport const bodyHasChecklist = (body: string): boolean => {\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\nconst useCommentMutations = ({\n projectName,\n entityType,\n entities = [],\n filter,\n entityListId,\n}: CommentMutationsProps) => {\n const {\n createEntityActivity,\n updateActivity,\n deleteActivity,\n isUpdatingActivity,\n userName,\n userFullName,\n activityTypes,\n } = useFeedContext()\n const entityIds = entities.map((entity) => entity.id)\n\n const createPatch = ({\n entityId,\n newId,\n subTitle,\n value,\n files = [],\n data = {},\n }: CommentPayload): CommentPatch => {\n const patch: CommentPatch = {\n body: value,\n activityType: 'comment',\n activityId: newId,\n entityId: entityId,\n referenceType: 'origin',\n authorName: userName,\n authorFullName: userFullName,\n createdAt: formatISO(new Date()),\n files: files,\n reactions: [],\n activityData: data,\n origin: {\n id: '8090c2dafcc811eeaf820242c0a80002',\n type: entityType,\n name: subTitle,\n },\n author: {\n active: true,\n deleted: false,\n },\n }\n\n return patch\n }\n\n const submitComment = async (\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n const fileIds = files.map((file) => file.id)\n\n const commentData = entityListId ? { ...data, entityList: entityListId } : data\n\n const newComment = {\n body: value,\n activityType: 'comment',\n id: newId,\n files: fileIds,\n data: commentData,\n }\n\n // filter out files which are transparent versions of an annotation\n const optimisticFiles = files.filter(\n ({ id }) =>\n !data.annotations?.some(\n (annotation: SavedAnnotationMetadata) => annotation.transparent === id,\n ),\n )\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value, files: optimisticFiles, data })\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityIds, activityTypes }\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newComment,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n })\n\n await Promise.all(promises)\n }\n\n const updateComment = async (\n activity: Activity,\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n const fileIds = files.map((file) => file.id)\n\n const updatedActivity = {\n body: value,\n files: fileIds,\n data,\n }\n\n const patch = {\n ...activity,\n ...updatedActivity,\n files,\n }\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n try {\n await updateActivity({\n projectName,\n data: updatedActivity,\n activityId: activity.activityId,\n entityId: activity.entityId,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n } catch (error: any) {\n console.error(error)\n toast.error(error?.data?.detail)\n // so higher level can detect the error\n throw error\n }\n }\n\n const deleteComment = async (id: string, entityId: string, refs: any[] = []): Promise<void> => {\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n if (!id) return\n\n try {\n await deleteActivity({\n projectName,\n activityId: id,\n entityId,\n filter,\n patch: { activityId: id },\n refs,\n ...argsForCachingMatching,\n })\n } catch (error) {\n // error is handled in the mutation\n }\n }\n\n const submitReview = async (\n feedback: VersionReviewFeedback\n ): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n\n const data = { feedback, entityList: entityListId }\n const newReview = {\n body: getVerbForFeedbackBody(feedback, entityType),\n activityType: 'version.review',\n id: newId,\n data,\n }\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value: '', data })\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newReview,\n patch,\n filter,\n })\n })\n\n await Promise.all(promises)\n }\n\n return {\n submitComment,\n updateComment,\n deleteComment,\n submitReview,\n isSaving: isUpdatingActivity,\n }\n}\n\nexport default useCommentMutations\n"],"names":["useCommentMutations","projectName","entityType","entities","filter","entityListId","createEntityActivity","updateActivity","deleteActivity","isUpdatingActivity","userName","userFullName","activityTypes","useFeedContext","entityIds","entity","createPatch","entityId","newId","subTitle","value","files","data","formatISO","promises","getEntityId","fileIds","file","commentData","newComment","optimisticFiles","id","annotation","patch","activity","updatedActivity","argsForCachingMatching","error","toast","refs","feedback","newReview","getVerbForFeedbackBody"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useCommentMutations.es.js","sources":["../../../../../../src/containers/Feed/hooks/useCommentMutations.ts"],"sourcesContent":["import { getEntityId } from '@shared/util'\nimport { formatISO } from 'date-fns'\nimport { toast } from 'react-toastify'\nimport { useFeedContext } from '../context/FeedContext'\nimport { SavedAnnotationMetadata } from '..'\nimport { VersionReviewFeedback } from '../components/CommentInput/types'\nimport { getVerbForFeedbackBody } from '../components/ActivityVersionReview/ActivityVersionReview'\n\n// Type definitions\ninterface Entity {\n id: string\n subTitle?: string\n}\n\ninterface File {\n id: string\n [key: string]: any\n}\n\nexport interface Activity {\n activityId: string\n entityId: string\n body: string\n files: File[]\n [key: string]: any\n}\n\ninterface CommentPatch {\n body: string\n activityType: string\n activityId: string\n entityId: string\n referenceType: string\n authorName: string\n authorFullName?: string\n createdAt: string\n files: File[]\n activityData: any\n reactions: any[]\n origin: {\n id: string\n type: string\n name?: string\n }\n author: {\n active: boolean\n deleted: boolean\n }\n}\n\ninterface CommentMutationsProps {\n projectName: string\n entityType: string\n entities: Entity[]\n filter: any\n entityListId?: string\n}\n\ninterface CommentPayload {\n entityId: string\n newId: string\n subTitle?: string\n value: string\n files?: File[]\n data?: any\n}\n\n// does the body have a checklist anywhere in it\n// * [ ] or * [x]\nexport const bodyHasChecklist = (body: string): boolean => {\n return body.includes('* [ ]') || body.includes('* [x]')\n}\n\nconst useCommentMutations = ({\n projectName,\n entityType,\n entities = [],\n filter,\n entityListId,\n}: CommentMutationsProps) => {\n const {\n createEntityActivity,\n updateActivity,\n deleteActivity,\n isUpdatingActivity,\n userName,\n userFullName,\n activityTypes,\n } = useFeedContext()\n const entityIds = entities.map((entity) => entity.id)\n\n const createPatch = ({\n entityId,\n newId,\n subTitle,\n value,\n files = [],\n data = {},\n }: CommentPayload): CommentPatch => {\n const patch: CommentPatch = {\n body: value,\n activityType: 'comment',\n activityId: newId,\n entityId: entityId,\n referenceType: 'origin',\n authorName: userName,\n authorFullName: userFullName,\n createdAt: formatISO(new Date()),\n files: files,\n reactions: [],\n activityData: data,\n origin: {\n id: '8090c2dafcc811eeaf820242c0a80002',\n type: entityType,\n name: subTitle,\n },\n author: {\n active: true,\n deleted: false,\n },\n }\n\n return patch\n }\n\n const submitComment = async (\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n const fileIds = files.map((file) => file.id)\n\n const commentData = entityListId ? { ...data, entityList: entityListId } : data\n\n const newComment = {\n body: value,\n activityType: 'comment',\n id: newId,\n files: fileIds,\n data: commentData,\n }\n\n // filter out files which are transparent versions of an annotation\n const optimisticFiles = files.filter(\n ({ id }) =>\n !data.annotations?.some(\n (annotation: SavedAnnotationMetadata) => annotation.transparent === id,\n ),\n )\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value, files: optimisticFiles, data })\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityIds, activityTypes }\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newComment,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n })\n\n await Promise.all(promises)\n }\n\n const updateComment = async (\n activity: Activity,\n value: string,\n files: File[] = [],\n data: any = {},\n ): Promise<void> => {\n const fileIds = files.map((file) => file.id)\n\n const updatedActivity = {\n body: value,\n files: fileIds,\n data,\n }\n\n const patch = {\n ...activity,\n ...updatedActivity,\n files,\n }\n\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n try {\n await updateActivity({\n projectName,\n data: updatedActivity,\n activityId: activity.activityId,\n entityId: activity.entityId,\n patch,\n filter,\n ...argsForCachingMatching,\n })\n } catch (error: any) {\n console.error(error)\n toast.error(error?.data?.detail)\n // so higher level can detect the error\n throw error\n }\n }\n\n const deleteComment = async (id: string, entityId: string, refs: any[] = []): Promise<void> => {\n // we only need these args to update the cache of the original query\n const argsForCachingMatching = { entityType, entityIds, activityTypes }\n\n if (!id) return\n\n try {\n await deleteActivity({\n projectName,\n activityId: id,\n entityId,\n filter,\n patch: { activityId: id },\n refs,\n ...argsForCachingMatching,\n })\n } catch (error) {\n // error is handled in the mutation\n }\n }\n\n const submitReview = async (feedback: VersionReviewFeedback): Promise<void> => {\n // map over all the entities and create a new comment for each\n let patchId: string | null = null\n const promises = entities.map(({ id: entityId, subTitle }) => {\n const newId = getEntityId()\n if (!patchId) patchId = newId\n\n const data = { feedback, entityList: entityListId }\n const newReview = {\n body: getVerbForFeedbackBody(feedback, entityType),\n activityType: 'version.review',\n id: newId,\n data,\n }\n\n // create a new patch for optimistic update\n const patch = createPatch({ entityId, newId, subTitle, value: '', data })\n\n return createEntityActivity({\n projectName,\n entityType,\n entityId,\n data: newReview,\n patch,\n filter,\n })\n })\n\n await Promise.all(promises)\n }\n\n return {\n submitComment,\n updateComment,\n deleteComment,\n submitReview,\n isSaving: isUpdatingActivity,\n }\n}\n\nexport default useCommentMutations\n"],"names":["useCommentMutations","projectName","entityType","entities","filter","entityListId","createEntityActivity","updateActivity","deleteActivity","isUpdatingActivity","userName","userFullName","activityTypes","useFeedContext","entityIds","entity","createPatch","entityId","newId","subTitle","value","files","data","formatISO","promises","getEntityId","fileIds","file","commentData","newComment","optimisticFiles","id","annotation","patch","activity","updatedActivity","argsForCachingMatching","error","toast","refs","feedback","newReview","getVerbForFeedbackBody"],"mappings":";;;;;;;AAyEA,MAAMA,IAAsB,CAAC;AAAA,EAC3B,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC,IAAW,CAAA;AAAA,EACX,QAAAC;AAAA,EACA,cAAAC;AACF,MAA6B;AAC3B,QAAM;AAAA,IACJ,sBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,EAAA,IACEC,EAAA,GACEC,IAAYX,EAAS,IAAI,CAACY,MAAWA,EAAO,EAAE,GAE9CC,IAAc,CAAC;AAAA,IACnB,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,OAAAC,IAAQ,CAAA;AAAA,IACR,MAAAC,IAAO,CAAA;AAAA,EAAC,OAEoB;AAAA,IAC1B,MAAMF;AAAA,IACN,cAAc;AAAA,IACd,YAAYF;AAAA,IACZ,UAAAD;AAAA,IACA,eAAe;AAAA,IACf,YAAYP;AAAA,IACZ,gBAAgBC;AAAA,IAChB,WAAWY,EAAU,oBAAI,MAAM;AAAA,IAC/B,OAAAF;AAAA,IACA,WAAW,CAAA;AAAA,IACX,cAAcC;AAAA,IACd,QAAQ;AAAA,MACN,IAAI;AAAA,MACJ,MAAMpB;AAAA,MACN,MAAMiB;AAAA,IAAA;AAAA,IAER,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,EACX;AAqJJ,SAAO;AAAA,IACL,eAhJoB,OACpBC,GACAC,IAAgB,CAAA,GAChBC,IAAY,OACM;AAGlB,YAAME,IAAWrB,EAAS,IAAI,CAAC,EAAE,IAAIc,GAAU,UAAAE,QAAe;AAC5D,cAAMD,IAAQO,EAAA,GAERC,IAAUL,EAAM,IAAI,CAACM,MAASA,EAAK,EAAE,GAErCC,IAAcvB,IAAe,EAAE,GAAGiB,GAAM,YAAYjB,MAAiBiB,GAErEO,IAAa;AAAA,UACjB,MAAMT;AAAA,UACN,cAAc;AAAA,UACd,IAAIF;AAAA,UACJ,OAAOQ;AAAA,UACP,MAAME;AAAA,QAAA,GAIFE,IAAkBT,EAAM;AAAA,UAC5B,CAAC,EAAE,IAAAU,EAAA,MACD,CAACT,EAAK,aAAa;AAAA,YACjB,CAACU,MAAwCA,EAAW,gBAAgBD;AAAA,UAAA;AAAA,QACtE,GAIEE,IAAQjB,EAAY,EAAE,UAAAC,GAAU,OAAAC,GAAO,UAAAC,GAAU,OAAAC,GAAO,OAAOU,GAAiB,MAAAR,GAAM;AAK5F,eAAOhB,EAAqB;AAAA,UAC1B,aAAAL;AAAA,UACA,YAAAC;AAAA,UACA,UAAAe;AAAA,UACA,MAAMY;AAAA,UACN,OAAAI;AAAA,UACA,QAAA7B;AAAA,UACA,GAT6B,EAAE,WAAAU,GAAW,eAAAF,EAAA;AAAA,QASvC,CACJ;AAAA,MACH,CAAC;AAED,YAAM,QAAQ,IAAIY,CAAQ;AAAA,IAC5B;AAAA,IAiGE,eA/FoB,OACpBU,GACAd,GACAC,IAAgB,CAAA,GAChBC,IAAY,OACM;AAClB,YAAMI,IAAUL,EAAM,IAAI,CAACM,MAASA,EAAK,EAAE,GAErCQ,IAAkB;AAAA,QACtB,MAAMf;AAAA,QACN,OAAOM;AAAA,QACP,MAAAJ;AAAA,MAAA,GAGIW,IAAQ;AAAA,QACZ,GAAGC;AAAA,QACH,GAAGC;AAAA,QACH,OAAAd;AAAA,MAAA,GAIIe,IAAyB,EAAE,YAAAlC,GAAY,WAAAY,GAAW,eAAAF,EAAA;AAExD,UAAI;AACF,cAAML,EAAe;AAAA,UACnB,aAAAN;AAAA,UACA,MAAMkC;AAAA,UACN,YAAYD,EAAS;AAAA,UACrB,UAAUA,EAAS;AAAA,UACnB,OAAAD;AAAA,UACA,QAAA7B;AAAA,UACA,GAAGgC;AAAA,QAAA,CACJ;AAAA,MACH,SAASC,GAAY;AACnB,sBAAQ,MAAMA,CAAK,GACnBC,EAAM,MAAMD,GAAO,MAAM,MAAM,GAEzBA;AAAA,MACR;AAAA,IACF;AAAA,IAyDE,eAvDoB,OAAON,GAAYd,GAAkBsB,IAAc,CAAA,MAAsB;AAE7F,YAAMH,IAAyB,EAAE,YAAAlC,GAAY,WAAAY,GAAW,eAAAF,EAAA;AAExD,UAAKmB;AAEL,YAAI;AACF,gBAAMvB,EAAe;AAAA,YACnB,aAAAP;AAAA,YACA,YAAY8B;AAAA,YACZ,UAAAd;AAAA,YACA,QAAAb;AAAA,YACA,OAAO,EAAE,YAAY2B,EAAA;AAAA,YACrB,MAAAQ;AAAA,YACA,GAAGH;AAAA,UAAA,CACJ;AAAA,QACH,QAAgB;AAAA,QAEhB;AAAA,IACF;AAAA,IAqCE,cAnCmB,OAAOI,MAAmD;AAG7E,YAAMhB,IAAWrB,EAAS,IAAI,CAAC,EAAE,IAAIc,GAAU,UAAAE,QAAe;AAC5D,cAAMD,IAAQO,EAAA,GAGRH,IAAO,EAAE,UAAAkB,GAAU,YAAYnC,EAAA,GAC/BoC,IAAY;AAAA,UAChB,MAAMC,EAAuBF,GAAUtC,CAAU;AAAA,UACjD,cAAc;AAAA,UACd,IAAIgB;AAAA,UACJ,MAAAI;AAAA,QAAA,GAIIW,IAAQjB,EAAY,EAAE,UAAAC,GAAU,OAAAC,GAAO,UAAAC,GAAU,OAAO,IAAI,MAAAG,GAAM;AAExE,eAAOhB,EAAqB;AAAA,UAC1B,aAAAL;AAAA,UACA,YAAAC;AAAA,UACA,UAAAe;AAAA,UACA,MAAMwB;AAAA,UACN,OAAAR;AAAA,UACA,QAAA7B;AAAA,QAAA,CACD;AAAA,MACH,CAAC;AAED,YAAM,QAAQ,IAAIoB,CAAQ;AAAA,IAC5B;AAAA,IAOE,UAAUf;AAAA,EAAA;AAEd;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");const v=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/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/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");const s=require("react");function l({projectName:
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");const v=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/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/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");const s=require("react");function l({projectName:o,enabled:n,entityIds:i,activities:u,loadingActivities:a,userName:e}){const r=s.useMemo(()=>u.find(t=>t.activityType==="version.review"&&t.authorName===e),[u,e]),c=!!(i.length===0||!n||a||r),{data:q}=v.useGetActivitiesQuery({projectName:o,entityIds:i,activityTypes:["version.review"],last:1,authors:[e]},{skip:c});return s.useMemo(()=>r??q?.activities.at(-1),[r,q])}exports.useLastVersionReview=l;
|
|
2
2
|
//# sourceMappingURL=useLastVersionReview.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLastVersionReview.cjs.js","sources":["../../../../../../src/containers/Feed/hooks/useLastVersionReview.ts"],"sourcesContent":["import { FeedActivity, useGetActivitiesQuery } from \"@shared/api\"\nimport { useMemo } from \"react\"\n\ntype Args = {\n projectName: string\n enabled: boolean\n entityIds: string[]\n activities: FeedActivity[]\n loadingActivities: boolean\n userName: string\n}\n\nexport function useLastVersionReview({ projectName, enabled, entityIds, activities, loadingActivities, userName }: Args) {\n const existingActivity = useMemo(\n () => activities.find(a => a.activityType === \"version.review\" && a.authorName === userName),\n [activities, userName]\n )\n\n const skip = Boolean(entityIds.length === 0 || !enabled || loadingActivities || existingActivity)\n\n const { data: lastVersionReviewResult } = useGetActivitiesQuery({\n projectName,\n entityIds,\n activityTypes: [\"version.review\"],\n last: 1,\n
|
|
1
|
+
{"version":3,"file":"useLastVersionReview.cjs.js","sources":["../../../../../../src/containers/Feed/hooks/useLastVersionReview.ts"],"sourcesContent":["import { FeedActivity, useGetActivitiesQuery } from \"@shared/api\"\nimport { useMemo } from \"react\"\n\ntype Args = {\n projectName: string\n enabled: boolean\n entityIds: string[]\n activities: FeedActivity[]\n loadingActivities: boolean\n userName: string\n}\n\nexport function useLastVersionReview({ projectName, enabled, entityIds, activities, loadingActivities, userName }: Args) {\n const existingActivity = useMemo(\n () => activities.find(a => a.activityType === \"version.review\" && a.authorName === userName),\n [activities, userName]\n )\n\n const skip = Boolean(entityIds.length === 0 || !enabled || loadingActivities || existingActivity)\n\n const { data: lastVersionReviewResult } = useGetActivitiesQuery({\n projectName,\n entityIds,\n activityTypes: [\"version.review\"],\n last: 1,\n authors: [userName],\n }, { skip })\n\n\n const lastVersionReview = useMemo(() => {\n return existingActivity ?? lastVersionReviewResult?.activities.at(-1)\n }, [existingActivity, lastVersionReviewResult])\n\n return lastVersionReview\n}\n"],"names":["useLastVersionReview","projectName","enabled","entityIds","activities","loadingActivities","userName","existingActivity","useMemo","a","skip","lastVersionReviewResult","useGetActivitiesQuery"],"mappings":"w1KAYO,SAASA,EAAqB,CAAE,YAAAC,EAAa,QAAAC,EAAS,UAAAC,EAAW,WAAAC,EAAY,kBAAAC,EAAmB,SAAAC,GAAkB,CACvH,MAAMC,EAAmBC,EAAAA,QACvB,IAAMJ,EAAW,KAAKK,GAAKA,EAAE,eAAiB,kBAAoBA,EAAE,aAAeH,CAAQ,EAC3F,CAACF,EAAYE,CAAQ,CAAA,EAGjBI,EAAO,GAAQP,EAAU,SAAW,GAAK,CAACD,GAAWG,GAAqBE,GAE1E,CAAE,KAAMI,CAAA,EAA4BC,wBAAsB,CAC9D,YAAAX,EACA,UAAAE,EACA,cAAe,CAAC,gBAAgB,EAChC,KAAM,EACN,QAAS,CAACG,CAAQ,CAAA,EACjB,CAAE,KAAAI,CAAA,CAAM,EAOX,OAJ0BF,EAAAA,QAAQ,IACzBD,GAAoBI,GAAyB,WAAW,GAAG,EAAE,EACnE,CAACJ,EAAkBI,CAAuB,CAAC,CAGhD"}
|
|
@@ -94,18 +94,18 @@ import "../../../api/queries/views/updateViews.es.js";
|
|
|
94
94
|
import "../../../api/queries/watchers/getWatchers.es.js";
|
|
95
95
|
import "../../../api/queries/uris/getUris.es.js";
|
|
96
96
|
import { useMemo as e } from "react";
|
|
97
|
-
function ii({ projectName: s, enabled: n, entityIds:
|
|
98
|
-
const
|
|
99
|
-
() =>
|
|
100
|
-
[
|
|
101
|
-
), a = !!(
|
|
97
|
+
function ii({ projectName: s, enabled: n, entityIds: o, activities: r, loadingActivities: v, userName: t }) {
|
|
98
|
+
const i = e(
|
|
99
|
+
() => r.find((m) => m.activityType === "version.review" && m.authorName === t),
|
|
100
|
+
[r, t]
|
|
101
|
+
), a = !!(o.length === 0 || !n || v || i), { data: p } = c({
|
|
102
102
|
projectName: s,
|
|
103
|
-
entityIds:
|
|
103
|
+
entityIds: o,
|
|
104
104
|
activityTypes: ["version.review"],
|
|
105
105
|
last: 1,
|
|
106
|
-
|
|
106
|
+
authors: [t]
|
|
107
107
|
}, { skip: a });
|
|
108
|
-
return e(() =>
|
|
108
|
+
return e(() => i ?? p?.activities.at(-1), [i, p]);
|
|
109
109
|
}
|
|
110
110
|
export {
|
|
111
111
|
ii as useLastVersionReview
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLastVersionReview.es.js","sources":["../../../../../../src/containers/Feed/hooks/useLastVersionReview.ts"],"sourcesContent":["import { FeedActivity, useGetActivitiesQuery } from \"@shared/api\"\nimport { useMemo } from \"react\"\n\ntype Args = {\n projectName: string\n enabled: boolean\n entityIds: string[]\n activities: FeedActivity[]\n loadingActivities: boolean\n userName: string\n}\n\nexport function useLastVersionReview({ projectName, enabled, entityIds, activities, loadingActivities, userName }: Args) {\n const existingActivity = useMemo(\n () => activities.find(a => a.activityType === \"version.review\" && a.authorName === userName),\n [activities, userName]\n )\n\n const skip = Boolean(entityIds.length === 0 || !enabled || loadingActivities || existingActivity)\n\n const { data: lastVersionReviewResult } = useGetActivitiesQuery({\n projectName,\n entityIds,\n activityTypes: [\"version.review\"],\n last: 1,\n
|
|
1
|
+
{"version":3,"file":"useLastVersionReview.es.js","sources":["../../../../../../src/containers/Feed/hooks/useLastVersionReview.ts"],"sourcesContent":["import { FeedActivity, useGetActivitiesQuery } from \"@shared/api\"\nimport { useMemo } from \"react\"\n\ntype Args = {\n projectName: string\n enabled: boolean\n entityIds: string[]\n activities: FeedActivity[]\n loadingActivities: boolean\n userName: string\n}\n\nexport function useLastVersionReview({ projectName, enabled, entityIds, activities, loadingActivities, userName }: Args) {\n const existingActivity = useMemo(\n () => activities.find(a => a.activityType === \"version.review\" && a.authorName === userName),\n [activities, userName]\n )\n\n const skip = Boolean(entityIds.length === 0 || !enabled || loadingActivities || existingActivity)\n\n const { data: lastVersionReviewResult } = useGetActivitiesQuery({\n projectName,\n entityIds,\n activityTypes: [\"version.review\"],\n last: 1,\n authors: [userName],\n }, { skip })\n\n\n const lastVersionReview = useMemo(() => {\n return existingActivity ?? lastVersionReviewResult?.activities.at(-1)\n }, [existingActivity, lastVersionReviewResult])\n\n return lastVersionReview\n}\n"],"names":["useLastVersionReview","projectName","enabled","entityIds","activities","loadingActivities","userName","existingActivity","useMemo","a","skip","lastVersionReviewResult","useGetActivitiesQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAASA,GAAqB,EAAE,aAAAC,GAAa,SAAAC,GAAS,WAAAC,GAAW,YAAAC,GAAY,mBAAAC,GAAmB,UAAAC,KAAkB;AACvH,QAAMC,IAAmBC;AAAA,IACvB,MAAMJ,EAAW,KAAK,CAAAK,MAAKA,EAAE,iBAAiB,oBAAoBA,EAAE,eAAeH,CAAQ;AAAA,IAC3F,CAACF,GAAYE,CAAQ;AAAA,EAAA,GAGjBI,IAAO,GAAQP,EAAU,WAAW,KAAK,CAACD,KAAWG,KAAqBE,IAE1E,EAAE,MAAMI,EAAA,IAA4BC,EAAsB;AAAA,IAC9D,aAAAX;AAAA,IACA,WAAAE;AAAA,IACA,eAAe,CAAC,gBAAgB;AAAA,IAChC,MAAM;AAAA,IACN,SAAS,CAACG,CAAQ;AAAA,EAAA,GACjB,EAAE,MAAAI,EAAA,CAAM;AAOX,SAJ0BF,EAAQ,MACzBD,KAAoBI,GAAyB,WAAW,GAAG,EAAE,GACnE,CAACJ,GAAkBI,CAAuB,CAAC;AAGhD;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const E=require("./useGetEntityTypeData.cjs.js"),P=require("react");require("@ynput/ayon-react-components");require("../../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");require("react-toastify");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/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/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/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("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const O=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../context/ClipboardContext.cjs.js");require("@tanstack/react-table");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.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("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("rehype-raw");require("../../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../Feed/components/CommentInput/modules/index.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("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.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/FeedbackContextInstance.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("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/FreeTrialLink.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("react-router-dom");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.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/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("../../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../../components/ColumnHeaderMenuUI.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");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/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("@tanstack/react-virtual");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/EnumCellValue.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/MarkdownWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/TableFooterRow.cjs.js");require("../context/ProjectDataContext.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/DetailsPanelMoreMenu/components/ShareDialog.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/ViewsMenu/ViewsMenu.cjs.js");require("../../Views/context/ViewsContextInstance.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../ListTable/ListTableRow.cjs.js");require("../../ListTable/ListTable.styled.cjs.js");require("../components/DeleteConfirmContent.cjs.js");const U=require("../utils/linksToTableData.cjs.js"),D="next-page",f="_ungrouped",I="__",m=e=>e?Array.isArray(e)?e.map(q=>q.toString()):[e.toString()]:[],x=(e,q,s)=>{if(!s)return{value:q,label:q};const i=s.find(t=>t.value===q);return i?{value:i.value,label:i.label||i.value,color:i.color,icon:i.icon,count:i.count,img:e==="assignees"?`/api/users/${i.value}/avatar`:void 0}:{value:q,label:q}},c="_GROUP_",h=e=>`${c}${e}`,S=e=>e.startsWith(c)?e.slice(c.length):null,N=e=>e.startsWith(c),W=(e,q,s=[])=>{const i=e.id.replace("attrib.","");return i==="status"?q?.statuses?.map(t=>t.name)||[]:i==="taskType"?q?.taskTypes?.map(t=>t.name)||[]:i==="folderType"?q?.folderTypes?.map(t=>t.name)||[]:e.id.startsWith("attrib.")?s.find(t=>t.name===i)?.data.enum?.map(t=>t.value.toString())||[]:[]},C=(e,q,s,i,t)=>{const d=t(s,e.taskType);return{id:e.id+I+q,entityId:e.id,entityType:s,parentId:e.folderId,folderId:e.folderId,name:e.name||"",label:e.label||e.name||"",icon:d?.icon||null,color:d?.color||null,status:e.status,assignees:e.assignees,tags:e.tags,img:null,subRows:[],subType:e.taskType||null,attrib:e.attrib,ownAttrib:e.ownAttrib,parents:e.parents||[],folder:e.parents?.[e.parents.length-1]||void 0,createdAt:e.createdAt,updatedAt:e.updatedAt,hasReviewables:e.hasReviewables||!1,links:U.linksToTableData(e.links,s,{folderTypes:i?.folderTypes||[],productTypes:Object.values(i.productTypes)||[],taskTypes:i?.taskTypes||[]}),subtasks:e.subtasks||[]}},$=({entities:e,entityType:q,groups:s=[],attribFields:i,showEmpty:t,groupRowFunc:d})=>{const g=O.useProjectContext(),A=E.useGetEntityTypeData({projectInfo:g}),b=P.useCallback((n,l)=>{const p=d?d(n):C(n,l,q,g,A);return{...p,id:n.id+I+l,subRows:p.subRows||[]}},[d,A,q,g]);return n=>{const l=new Map;for(const o of s){const r=o.value?.toString(),a=h(r),u=x(n.id,r,s);l.set(r,{id:a,name:r,entityType:"group",subRows:[],label:u.label,group:u,links:{}})}const p=c+"."+f,_=()=>{let o=l.get(p);return o||(o={id:p,name:"Ungrouped",entityType:"group",subRows:[],label:"Ungrouped",group:{value:p,label:"Ungrouped"},links:{}},l.set(p,o)),o};for(const[o,r]of e){if(r.entityType!==q)continue;let a=[];if(n.id.startsWith("attrib.")){const u=n.id.split(".")[1];a=m(r.attrib?.[u])}else n.id==="folderType"&&"folder"in r?a=m(r.folder?.folderType):a=m(r[n.id]);a.length===0&&_().subRows?.push(b(r,f));for(const u of a){const v=l.get(u);v?v.subRows?.push(b(r,u)):_().subRows?.push(b(r,f))}if("groups"in r&&Array.isArray(r.groups)){for(const u of r.groups)if(u.hasNextPage&&l.has(u.value)){const R=l.get(u.value);R&&R.subRows?.push({id:`${u.value}-next-page`,name:"Load more tasks...",entityType:D,subRows:[],label:`Next page for ${u.value}`,group:{value:u.value,label:u.value},links:{}})}}}const T=Array.from(l.values()),G=W(n,g,i),y=n.desc?-1:1;T.sort((o,r)=>{if(o.group?.value===p)return 1;if(r.group?.value===p)return-1;if(G.length){const a=G.indexOf(o.group?.value||""),u=G.indexOf(r.group?.value||"");return a!==-1&&u!==-1?(a-u)*y:a!==-1?-1:u!==-1?1:(o.group?.label?.localeCompare(r.group?.label||"")||0)*y}else return(o.group?.label?.localeCompare(r.group?.label||"")||0)*y});const w=T.filter(o=>o.group?.count&&o.group.count>0);return t?T:w}};exports.GROUP_BY_ID=c;exports.NEXT_PAGE_ID=D;exports.ROW_ID_SEPARATOR=I;exports.UNGROUPED_VALUE=f;exports.buildGroupId=h;exports.default=$;exports.isGroupId=N;exports.parseGroupId=S;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const E=require("./useGetEntityTypeData.cjs.js"),P=require("react");require("@ynput/ayon-react-components");require("../../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");require("react-toastify");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/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/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/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("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const U=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../context/ClipboardContext.cjs.js");require("@tanstack/react-table");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.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("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("rehype-raw");require("../../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../Feed/components/CommentInput/modules/index.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("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.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/FeedbackContextInstance.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("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/FreeTrialLink.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("react-router-dom");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.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/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("../../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../../components/ColumnHeaderMenuUI.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");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/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("@tanstack/react-virtual");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/EnumCellValue.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/MarkdownWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/TableFooterRow.cjs.js");require("../context/ProjectDataContext.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/DetailsPanelMoreMenu/components/ShareDialog.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/ViewsMenu/ViewsMenu.cjs.js");require("../../Views/context/ViewsContextInstance.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../ListTable/ListTableRow.cjs.js");require("../../ListTable/ListTable.styled.cjs.js");require("../components/DeleteConfirmContent.cjs.js");const O=require("../utils/linksToTableData.cjs.js"),D="next-page",p="_ungrouped",_="__",I=e=>e?Array.isArray(e)?e.map(q=>q.toString()):[e.toString()]:[],x=(e,q,n)=>{if(!n)return{value:q,label:q};const i=n.find(o=>o.value===q);return i?{value:i.value,label:i.label||i.value,color:i.color,icon:i.icon,count:i.count,img:e==="assignees"?`/api/users/${i.value}/avatar`:void 0}:{value:q,label:q}},c="_GROUP_",A=e=>`${c}${e}`,S=e=>e.startsWith(c)?e.slice(c.length):null,N=e=>e.startsWith(c),W=(e,q,n=[])=>{const i=e.id.replace("attrib.","");return i==="status"?q?.statuses?.map(o=>o.name)||[]:i==="taskType"?q?.taskTypes?.map(o=>o.name)||[]:i==="folderType"?q?.folderTypes?.map(o=>o.name)||[]:e.id.startsWith("attrib.")?n.find(o=>o.name===i)?.data.enum?.map(o=>o.value.toString())||[]:[]},C=(e,q,n,i,o)=>{const d=o(n,e.taskType);return{id:e.id+_+q,entityId:e.id,entityType:n,parentId:e.folderId,folderId:e.folderId,name:e.name||"",label:e.label||e.name||"",icon:d?.icon||null,color:d?.color||null,status:e.status,assignees:e.assignees,tags:e.tags,img:null,subRows:[],subType:e.taskType||null,attrib:e.attrib,ownAttrib:e.ownAttrib,parents:e.parents||[],folder:e.parents?.[e.parents.length-1]||void 0,createdAt:e.createdAt,updatedAt:e.updatedAt,hasReviewables:e.hasReviewables||!1,links:O.linksToTableData(e.links,n,{folderTypes:i?.folderTypes||[],productTypes:Object.values(i.productTypes)||[],taskTypes:i?.taskTypes||[]}),subtasks:e.subtasks||[]}},$=({entities:e,entityType:q,groups:n=[],attribFields:i,showEmpty:o,groupRowFunc:d})=>{const g=U.useProjectContext(),h=E.useGetEntityTypeData({projectInfo:g}),f=P.useCallback((s,l)=>{const b=d?d(s):C(s,l,q,g,h);return{...b,id:s.id+_+l,subRows:b.subRows||[]}},[d,h,q,g]);return s=>{const l=new Map;for(const t of n){const r=t.value?.toString(),a=A(r),u=x(s.id,r,n);l.set(r,{id:a,name:r,entityType:"group",subRows:[],label:u.label,group:u,links:{}})}const b=A(p),T=()=>{let t=l.get(p);return t||(t={id:b,name:"Ungrouped",entityType:"group",subRows:[],label:"Ungrouped",group:{value:p,label:"Ungrouped"},links:{}},l.set(p,t)),t};(s.id==="tags"||s.id==="assignees"||s.id.startsWith("attrib."))&&T();for(const[t,r]of e){if(r.entityType!==q)continue;let a=[];if(s.id.startsWith("attrib.")){const u=s.id.split(".")[1];a=I(r.attrib?.[u])}else s.id==="folderType"&&"folder"in r?a=I(r.folder?.folderType):a=I(r[s.id]);a.length===0&&T().subRows?.push(f(r,p));for(const u of a){const y=l.get(u);y?y.subRows?.push(f(r,u)):T().subRows?.push(f(r,p))}if("groups"in r&&Array.isArray(r.groups)){for(const u of r.groups)if(u.hasNextPage&&l.has(u.value)){const m=l.get(u.value);m&&m.subRows?.push({id:`${u.value}-next-page`,name:"Load more tasks...",entityType:D,subRows:[],label:`Next page for ${u.value}`,group:{value:u.value,label:u.value},links:{}})}}}const v=Array.from(l.values()),G=W(s,g,i),R=s.desc?-1:1;v.sort((t,r)=>{if(t.group?.value===p)return 1;if(r.group?.value===p)return-1;if(G.length){const a=G.indexOf(t.group?.value||""),u=G.indexOf(r.group?.value||"");return a!==-1&&u!==-1?(a-u)*R:a!==-1?-1:u!==-1?1:(t.group?.label?.localeCompare(r.group?.label||"")||0)*R}else return(t.group?.label?.localeCompare(r.group?.label||"")||0)*R});const w=v.filter(t=>(t.group?.count??0)>0||(t.subRows?.length??0)>0||t.group?.value===p);return o?v:w}};exports.GROUP_BY_ID=c;exports.NEXT_PAGE_ID=D;exports.ROW_ID_SEPARATOR=_;exports.UNGROUPED_VALUE=p;exports.buildGroupId=A;exports.default=$;exports.isGroupId=N;exports.parseGroupId=S;
|
|
2
2
|
//# sourceMappingURL=useBuildGroupByTableData.cjs.js.map
|
package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuildGroupByTableData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n folder: task.parents?.[task.parents.length - 1] || undefined,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n hasReviewables: task.hasReviewables || false,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n subtasks: task.subtasks || [],\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else if (groupBy.id === 'folderType' && 'folder' in entity) {\n // folderType is nested under folder for task entities (from TaskPropsFragment)\n groupValues = valueToStringArray(\n (entity as EditorTaskNode & { folder?: { folderType?: string } }).folder?.folderType,\n )\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n const sortDirection = groupBy.desc ? -1 : 1\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should always be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should always be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return (indexA - indexB) * sortDirection\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n } else {\n // for other groupings, sort by the group label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.group?.count && group.group.count > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","f","field","e","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","sortDirection","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useBuildGroupByTableData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n folder: task.parents?.[task.parents.length - 1] || undefined,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n hasReviewables: task.hasReviewables || false,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n subtasks: task.subtasks || [],\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = buildGroupId(UNGROUPED_VALUE)\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(UNGROUPED_VALUE)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: UNGROUPED_VALUE, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(UNGROUPED_VALUE, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n const canHaveUngrouped =\n groupBy.id === 'tags' || groupBy.id === 'assignees' || groupBy.id.startsWith('attrib.')\n if (canHaveUngrouped) getUnGroupedGroup()\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else if (groupBy.id === 'folderType' && 'folder' in entity) {\n // folderType is nested under folder for task entities (from TaskPropsFragment)\n groupValues = valueToStringArray(\n (entity as EditorTaskNode & { folder?: { folderType?: string } }).folder?.folderType,\n )\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n const sortDirection = groupBy.desc ? -1 : 1\n groupsList.sort((a, b) => {\n if (a.group?.value === UNGROUPED_VALUE) return 1 // \"Ungrouped\" should always be last\n if (b.group?.value === UNGROUPED_VALUE) return -1 // \"Ungrouped\" should always be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return (indexA - indexB) * sortDirection\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n } else {\n // for other groupings, sort by the group label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n }\n })\n\n // filter out empty groups — Ungrouped has no server count, keep it reachable\n const nonEmptyGroups = groupsList.filter(\n (group) =>\n (group.group?.count ?? 0) > 0 ||\n (group.subRows?.length ?? 0) > 0 ||\n group.group?.value === UNGROUPED_VALUE,\n )\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","t","f","field","e","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","sortDirection","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
|